diff options
author | Brad Pitcher <bradpitcher@gmail.com> | 2019-04-10 08:21:55 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-10 08:21:55 -0700 |
commit | f2af5192e68d756380556f8420caff2d5095ae97 (patch) | |
tree | 66b79c10506df9fafb64e7a68792ee9913ddf005 /core/src/main | |
parent | 3019c4a9be26239b193537264fbfaca3f8221a1e (diff) | |
parent | d8a010ad487d186afedc85f61a8726813b72a82e (diff) | |
download | AntennaPod-f2af5192e68d756380556f8420caff2d5095ae97.zip |
Merge branch 'develop' into fix-2359
Diffstat (limited to 'core/src/main')
236 files changed, 5311 insertions, 3817 deletions
diff --git a/core/src/main/java/android/support/v4/app/SafeJobIntentService.java b/core/src/main/java/android/support/v4/app/SafeJobIntentService.java new file mode 100644 index 000000000..c07c409ee --- /dev/null +++ b/core/src/main/java/android/support/v4/app/SafeJobIntentService.java @@ -0,0 +1,118 @@ +package android.support.v4.app; + +import android.app.job.JobParameters; +import android.app.job.JobServiceEngine; +import android.app.job.JobWorkItem; +import android.content.Intent; +import android.os.Build; +import android.os.IBinder; +import android.support.annotation.RequiresApi; +import android.util.Log; + + +public abstract class SafeJobIntentService extends JobIntentService { + + @Override + public void onCreate() { + super.onCreate(); + if (Build.VERSION.SDK_INT >= 26) { + mJobImpl = new SafeJobServiceEngineImpl(this); + } + } + + /** + * Implementation of a safe JobServiceEngine for interaction with JobIntentService. + */ + @RequiresApi(26) + static final class SafeJobServiceEngineImpl extends JobServiceEngine + implements JobIntentService.CompatJobEngine { + static final String TAG = "JobServiceEngineImpl"; + + static final boolean DEBUG = false; + + final JobIntentService mService; + final Object mLock = new Object(); + JobParameters mParams; + + final class WrapperWorkItem implements JobIntentService.GenericWorkItem { + final JobWorkItem mJobWork; + + WrapperWorkItem(JobWorkItem jobWork) { + mJobWork = jobWork; + } + + @Override + public Intent getIntent() { + return mJobWork.getIntent(); + } + + @Override + public void complete() { + synchronized (mLock) { + if (mParams != null) { + try { + mParams.completeWork(mJobWork); + } catch (SecurityException e) { + Log.e(TAG, Log.getStackTraceString(e)); + } + } + } + } + } + + SafeJobServiceEngineImpl(JobIntentService service) { + super(service); + mService = service; + } + + @Override + public IBinder compatGetBinder() { + return getBinder(); + } + + @Override + public boolean onStartJob(JobParameters params) { + if (DEBUG) Log.d(TAG, "onStartJob: " + params); + mParams = params; + // We can now start dequeuing work! + mService.ensureProcessorRunningLocked(false); + return true; + } + + @Override + public boolean onStopJob(JobParameters params) { + if (DEBUG) Log.d(TAG, "onStartJob: " + params); + boolean result = mService.doStopCurrentWork(); + synchronized (mLock) { + // Once we return, the job is stopped, so its JobParameters are no + // longer valid and we should not be doing anything with them. + mParams = null; + } + return result; + } + + /** + * Dequeue some work. + */ + @Override + public JobIntentService.GenericWorkItem dequeueWork() { + JobWorkItem work = null; + synchronized (mLock) { + if (mParams == null) { + return null; + } + try { + work = mParams.dequeueWork(); + } catch (SecurityException e) { + Log.e(TAG, Log.getStackTraceString(e)); + } + } + if (work != null) { + work.getIntent().setExtrasClassLoader(mService.getClassLoader()); + return new WrapperWorkItem(work); + } else { + return null; + } + } + } +} diff --git a/core/src/main/java/de/danoeh/antennapod/core/UpdateManager.java b/core/src/main/java/de/danoeh/antennapod/core/UpdateManager.java index 96e3a77be..1b4cbc0ea 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/UpdateManager.java +++ b/core/src/main/java/de/danoeh/antennapod/core/UpdateManager.java @@ -10,21 +10,15 @@ import android.util.Log; import org.antennapod.audio.MediaPlayer; -import java.io.File; -import java.util.List; - -import de.danoeh.antennapod.core.feed.Feed; -import de.danoeh.antennapod.core.feed.FeedImage; -import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.preferences.UserPreferences; -import de.danoeh.antennapod.core.storage.DBReader; -import de.danoeh.antennapod.core.storage.DBWriter; /* * This class's job is do perform maintenance tasks whenever the app has been updated */ class UpdateManager { + private UpdateManager(){} + private static final String TAG = UpdateManager.class.getSimpleName(); private static final String PREF_NAME = "app_version"; @@ -64,32 +58,22 @@ class UpdateManager { } private static void onUpgrade(final int oldVersionCode, final int newVersionCode) { - if(oldVersionCode < 1030099) { - // delete the now obsolete image cache - // from now on, Glide will handle caching images - new Thread() { - public void run() { - List<Feed> feeds = DBReader.getFeedList(); - for (Feed podcast : feeds) { - List<FeedItem> episodes = DBReader.getFeedItemList(podcast); - for (FeedItem episode : episodes) { - FeedImage image = episode.getImage(); - if (image != null && image.isDownloaded() && image.getFile_url() != null) { - File imageFile = new File(image.getFile_url()); - if (imageFile.exists()) { - imageFile.delete(); - } - image.setFile_url(null); // calls setDownloaded(false) - DBWriter.setFeedImage(image); - } - } - } - } - }.start(); - } - if(oldVersionCode < 1050004) { + if (oldVersionCode < 1050004) { if(MediaPlayer.isPrestoLibraryInstalled(context) && Build.VERSION.SDK_INT >= 16) { - UserPreferences.enableSonic(true); + UserPreferences.enableSonic(); + } + } + + if (oldVersionCode < 1070196) { + // migrate episode cleanup value (unit changed from days to hours) + int oldValueInDays = UserPreferences.getEpisodeCleanupValue(); + if (oldValueInDays > 0) { + UserPreferences.setEpisodeCleanupValue(oldValueInDays * 24); + } // else 0 or special negative values, no change needed + } + if (oldVersionCode < 1070197) { + if (prefs.getBoolean("prefMobileUpdate", false)) { + prefs.edit().putString(UserPreferences.PREF_MOBILE_UPDATE, "everything").apply(); } } } diff --git a/core/src/main/java/de/danoeh/antennapod/core/asynctask/DBTaskLoader.java b/core/src/main/java/de/danoeh/antennapod/core/asynctask/DBTaskLoader.java deleted file mode 100644 index 1b4aafeaa..000000000 --- a/core/src/main/java/de/danoeh/antennapod/core/asynctask/DBTaskLoader.java +++ /dev/null @@ -1,29 +0,0 @@ -package de.danoeh.antennapod.core.asynctask; - -import android.content.Context; -import android.support.v4.content.AsyncTaskLoader; - -/** - * Subclass of AsyncTaskLoader that is made for loading data with one of the DB*-classes. - * This class will provide a useful default implementation that would otherwise always be necessary when interacting - * with the DB*-classes with an AsyncTaskLoader. - */ -abstract class DBTaskLoader<D> extends AsyncTaskLoader<D> { - - public DBTaskLoader(Context context) { - super(context); - } - - @Override - protected void onStopLoading() { - super.onStopLoading(); - cancelLoad(); - } - - @Override - protected void onStartLoading() { - super.onStartLoading(); - // according to https://code.google.com/p/android/issues/detail?id=14944, this has to be called manually - forceLoad(); - } -} diff --git a/core/src/main/java/de/danoeh/antennapod/core/asynctask/FeedRemover.java b/core/src/main/java/de/danoeh/antennapod/core/asynctask/FeedRemover.java index 1e0c07b01..4504b2e7f 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/asynctask/FeedRemover.java +++ b/core/src/main/java/de/danoeh/antennapod/core/asynctask/FeedRemover.java @@ -2,7 +2,6 @@ package de.danoeh.antennapod.core.asynctask; import android.app.ProgressDialog; import android.content.Context; -import android.content.Intent; import android.os.AsyncTask; import java.util.concurrent.ExecutionException; @@ -11,6 +10,7 @@ import de.danoeh.antennapod.core.R; import de.danoeh.antennapod.core.feed.Feed; import de.danoeh.antennapod.core.service.playback.PlaybackService; import de.danoeh.antennapod.core.storage.DBWriter; +import de.danoeh.antennapod.core.util.IntentUtils; /** Removes a feed in the background. */ public class FeedRemover extends AsyncTask<Void, Void, Void> { @@ -41,7 +41,7 @@ public class FeedRemover extends AsyncTask<Void, Void, Void> { dialog.dismiss(); } if(skipOnCompletion) { - context.sendBroadcast(new Intent(PlaybackService.ACTION_SKIP_CURRENT_EPISODE)); + IntentUtils.sendLocalBroadcast(context, PlaybackService.ACTION_SKIP_CURRENT_EPISODE); } } diff --git a/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrClickWorker.java b/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrClickWorker.java index f4c99011a..318e404c8 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrClickWorker.java +++ b/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrClickWorker.java @@ -10,7 +10,6 @@ import android.support.v4.app.NotificationCompat; import android.util.Log; import android.widget.Toast; -import de.danoeh.antennapod.core.util.gui.NotificationUtils; import org.shredzone.flattr4j.exception.FlattrException; import java.util.LinkedList; @@ -27,6 +26,7 @@ import de.danoeh.antennapod.core.storage.DBWriter; import de.danoeh.antennapod.core.util.NetworkUtils; import de.danoeh.antennapod.core.util.flattr.FlattrThing; import de.danoeh.antennapod.core.util.flattr.FlattrUtils; +import de.danoeh.antennapod.core.util.gui.NotificationUtils; /** * Performs a click action in a background thread. diff --git a/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrStatusFetcher.java b/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrStatusFetcher.java index 420a60469..6d9ab2bd3 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrStatusFetcher.java +++ b/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrStatusFetcher.java @@ -19,11 +19,9 @@ import de.danoeh.antennapod.core.util.flattr.FlattrUtils; public class FlattrStatusFetcher extends Thread { private static final String TAG = "FlattrStatusFetcher"; - private final Context context; public FlattrStatusFetcher(Context context) { super(); - this.context = context; } @Override diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java b/core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java index 78df74ee7..3395653f3 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java +++ b/core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java @@ -44,7 +44,7 @@ public class Feed extends FeedFile implements FlattrThing, ImageResource { * Name of the author */ private String author; - private FeedImage image; + private String imageUrl; private List<FeedItem> items; /** @@ -96,7 +96,7 @@ public class Feed extends FeedFile implements FlattrThing, ImageResource { * This constructor is used for restoring a feed from the database. */ public Feed(long id, String lastUpdate, String title, String customTitle, String link, String description, String paymentLink, - String author, String language, String type, String feedIdentifier, FeedImage image, String fileUrl, + String author, String language, String type, String feedIdentifier, String imageUrl, String fileUrl, String downloadUrl, boolean downloaded, FlattrStatus status, boolean paged, String nextPageLink, String filter, boolean lastUpdateFailed) { super(fileUrl, downloadUrl, downloaded); @@ -111,7 +111,7 @@ public class Feed extends FeedFile implements FlattrThing, ImageResource { this.language = language; this.type = type; this.feedIdentifier = feedIdentifier; - this.image = image; + this.imageUrl = imageUrl; this.flattrStatus = status; this.paged = paged; this.nextPageLink = nextPageLink; @@ -128,9 +128,9 @@ public class Feed extends FeedFile implements FlattrThing, ImageResource { * This constructor is used for test purposes and uses a default flattr status object. */ public Feed(long id, String lastUpdate, String title, String link, String description, String paymentLink, - String author, String language, String type, String feedIdentifier, FeedImage image, String fileUrl, + String author, String language, String type, String feedIdentifier, String imageUrl, String fileUrl, String downloadUrl, boolean downloaded) { - this(id, lastUpdate, title, null, link, description, paymentLink, author, language, type, feedIdentifier, image, + this(id, lastUpdate, title, null, link, description, paymentLink, author, language, type, feedIdentifier, imageUrl, fileUrl, downloadUrl, downloaded, new FlattrStatus(), false, null, null, false); } @@ -191,6 +191,7 @@ public class Feed extends FeedFile implements FlattrThing, ImageResource { int indexNextPageLink = cursor.getColumnIndex(PodDBAdapter.KEY_NEXT_PAGE_LINK); int indexHide = cursor.getColumnIndex(PodDBAdapter.KEY_HIDE); int indexLastUpdateFailed = cursor.getColumnIndex(PodDBAdapter.KEY_LAST_UPDATE_FAILED); + int indexImageUrl = cursor.getColumnIndex(PodDBAdapter.KEY_IMAGE_URL); Feed feed = new Feed( cursor.getLong(indexId), @@ -204,7 +205,7 @@ public class Feed extends FeedFile implements FlattrThing, ImageResource { cursor.getString(indexLanguage), cursor.getString(indexType), cursor.getString(indexFeedIdentifier), - null, + cursor.getString(indexImageUrl), cursor.getString(indexFileUrl), cursor.getString(indexDownloadUrl), cursor.getInt(indexDownloaded) > 0, @@ -266,8 +267,8 @@ public class Feed extends FeedFile implements FlattrThing, ImageResource { public void updateFromOther(Feed other) { // don't update feed's download_url, we do that manually if redirected // see AntennapodHttpClient - if (other.image != null) { - this.image = other.image; + if (other.imageUrl != null) { + this.imageUrl = other.imageUrl; } if (other.feedTitle != null) { feedTitle = other.feedTitle; @@ -305,8 +306,8 @@ public class Feed extends FeedFile implements FlattrThing, ImageResource { if (super.compareWithOther(other)) { return true; } - if (other.image != null) { - if (image == null || !TextUtils.equals(image.download_url, other.image.download_url)) { + if (other.imageUrl != null) { + if (imageUrl == null || !TextUtils.equals(imageUrl, other.imageUrl)) { return true; } } @@ -411,12 +412,12 @@ public class Feed extends FeedFile implements FlattrThing, ImageResource { this.description = description; } - public FeedImage getImage() { - return image; + public String getImageUrl() { + return imageUrl; } - public void setImage(FeedImage image) { - this.image = image; + public void setImageUrl(String imageUrl) { + this.imageUrl = imageUrl; } public List<FeedItem> getItems() { @@ -505,11 +506,7 @@ public class Feed extends FeedFile implements FlattrThing, ImageResource { @Override public String getImageLocation() { - if (image != null) { - return image.getImageLocation(); - } else { - return null; - } + return imageUrl; } public int getPageNr() { diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedComponent.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedComponent.java index a3f91b1c9..2610d253f 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedComponent.java +++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedComponent.java @@ -50,7 +50,7 @@ public abstract class FeedComponent { @Override public boolean equals(Object o) { if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; + if (o == null || !(o instanceof FeedComponent)) return false; FeedComponent that = (FeedComponent) o; @@ -62,4 +62,4 @@ public abstract class FeedComponent { public int hashCode() { return (int) (id ^ (id >>> 32)); } -}
\ No newline at end of file +} diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedImage.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedImage.java deleted file mode 100644 index 45bd2ad31..000000000 --- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedImage.java +++ /dev/null @@ -1,92 +0,0 @@ -package de.danoeh.antennapod.core.feed; - -import android.database.Cursor; - -import java.io.File; - -import de.danoeh.antennapod.core.asynctask.ImageResource; -import de.danoeh.antennapod.core.storage.PodDBAdapter; - - -public class FeedImage extends FeedFile implements ImageResource { - public static final int FEEDFILETYPE_FEEDIMAGE = 1; - - private String title; - private FeedComponent owner; - - public FeedImage(FeedComponent owner, String download_url, String title) { - super(null, download_url, false); - this.download_url = download_url; - this.title = title; - this.owner = owner; - } - - public FeedImage(long id, String title, String file_url, - String download_url, boolean downloaded) { - super(file_url, download_url, downloaded); - this.id = id; - this.title = title; - } - - public FeedImage() { - super(); - } - - public static FeedImage fromCursor(Cursor cursor) { - int indexId = cursor.getColumnIndex(PodDBAdapter.KEY_ID); - int indexTitle = cursor.getColumnIndex(PodDBAdapter.KEY_TITLE); - int indexFileUrl = cursor.getColumnIndex(PodDBAdapter.KEY_FILE_URL); - int indexDownloadUrl = cursor.getColumnIndex(PodDBAdapter.KEY_DOWNLOAD_URL); - int indexDownloaded = cursor.getColumnIndex(PodDBAdapter.KEY_DOWNLOADED); - - return new FeedImage( - cursor.getLong(indexId), - cursor.getString(indexTitle), - cursor.getString(indexFileUrl), - cursor.getString(indexDownloadUrl), - cursor.getInt(indexDownloaded) > 0 - ); - } - - - @Override - public String getHumanReadableIdentifier() { - if (owner != null && owner.getHumanReadableIdentifier() != null) { - return owner.getHumanReadableIdentifier(); - } else { - return download_url; - } - } - - @Override - public int getTypeAsInt() { - return FEEDFILETYPE_FEEDIMAGE; - } - - public String getTitle() { - return title; - } - - public void setTitle(String title) { - this.title = title; - } - - public FeedComponent getOwner() { - return owner; - } - - public void setOwner(FeedComponent owner) { - this.owner = owner; - } - - @Override - public String getImageLocation() { - if (file_url != null && downloaded) { - return new File(file_url).getAbsolutePath(); - } else if(download_url != null) { - return download_url; - } else { - return null; - } - } -} diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java index 87298d4c3..0f0343f25 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java +++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java @@ -2,8 +2,8 @@ package de.danoeh.antennapod.core.feed; import android.database.Cursor; import android.support.annotation.Nullable; - import android.text.TextUtils; + import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; @@ -75,7 +75,7 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, Flattr * in the database. The 'hasChapters' attribute should be used to check if this item has any chapters. * */ private List<Chapter> chapters; - private FeedImage image; + private String imageUrl; /* * 0: auto download disabled @@ -100,7 +100,7 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, Flattr * This constructor is used by DBReader. * */ public FeedItem(long id, String title, String link, Date pubDate, String paymentLink, long feedId, - FlattrStatus flattrStatus, boolean hasChapters, FeedImage image, int state, + FlattrStatus flattrStatus, boolean hasChapters, String imageUrl, int state, String itemIdentifier, long autoDownload) { this.id = id; this.title = title; @@ -110,7 +110,7 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, Flattr this.feedId = feedId; this.flattrStatus = flattrStatus; this.hasChapters = hasChapters; - this.image = image; + this.imageUrl = imageUrl; this.state = state; this.itemIdentifier = itemIdentifier; this.autoDownload = autoDownload; @@ -158,6 +158,7 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, Flattr int indexRead = cursor.getColumnIndex(PodDBAdapter.KEY_READ); int indexItemIdentifier = cursor.getColumnIndex(PodDBAdapter.KEY_ITEM_IDENTIFIER); int indexAutoDownload = cursor.getColumnIndex(PodDBAdapter.KEY_AUTO_DOWNLOAD); + int indexImageUrl = cursor.getColumnIndex(PodDBAdapter.KEY_IMAGE_URL); long id = cursor.getInt(indexId); String title = cursor.getString(indexTitle); @@ -170,15 +171,16 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, Flattr int state = cursor.getInt(indexRead); String itemIdentifier = cursor.getString(indexItemIdentifier); long autoDownload = cursor.getLong(indexAutoDownload); + String imageUrl = cursor.getString(indexImageUrl); return new FeedItem(id, title, link, pubDate, paymentLink, feedId, flattrStatus, - hasChapters, null, state, itemIdentifier, autoDownload); + hasChapters, imageUrl, state, itemIdentifier, autoDownload); } public void updateFromOther(FeedItem other) { super.updateFromOther(other); - if (other.image != null) { - this.image = other.image; + if (other.imageUrl != null) { + this.imageUrl = other.imageUrl; } if (other.title != null) { title = other.title; @@ -192,7 +194,7 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, Flattr if (other.link != null) { link = other.link; } - if (other.pubDate != null && other.pubDate != pubDate) { + if (other.pubDate != null && other.pubDate.equals(pubDate)) { pubDate = other.pubDate; } if (other.media != null) { @@ -212,9 +214,6 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, Flattr chapters = other.chapters; } } - if (image == null) { - image = other.image; - } } /** @@ -389,8 +388,8 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, Flattr public String getImageLocation() { if(media != null && media.hasEmbeddedPicture()) { return media.getImageLocation(); - } else if (image != null) { - return image.getImageLocation(); + } else if (imageUrl != null) { + return imageUrl; } else if (feed != null) { return feed.getImageLocation(); } else { @@ -426,29 +425,12 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, Flattr * Returns the image of this item or the image of the feed if this item does * not have its own image. */ - public FeedImage getImage() { - return (hasItemImage()) ? image : feed.getImage(); - } - - public void setImage(FeedImage image) { - this.image = image; - if (image != null) { - image.setOwner(this); - } - } - - /** - * Returns true if this FeedItem has its own image, false otherwise. - */ - public boolean hasItemImage() { - return image != null; + public String getImageUrl() { + return (imageUrl != null) ? imageUrl : feed.getImageUrl(); } - /** - * Returns true if this FeedItem has its own image and the image has been downloaded. - */ - public boolean hasItemImageDownloaded() { - return image != null && image.isDownloaded(); + public void setImageUrl(String imageUrl) { + this.imageUrl = imageUrl; } @Override diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItemFilter.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItemFilter.java index 200153876..719383d23 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItemFilter.java +++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItemFilter.java @@ -8,6 +8,8 @@ import java.util.List; import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.util.LongList; +import static de.danoeh.antennapod.core.feed.FeedItem.TAG_FAVORITE; + public class FeedItemFilter { private final String[] mProperties; @@ -19,6 +21,7 @@ public class FeedItemFilter { private boolean showDownloaded = false; private boolean showNotDownloaded = false; private boolean showHasMedia = false; + private boolean showIsFavorite = false; public FeedItemFilter(String properties) { this(TextUtils.split(properties, ",")); @@ -53,6 +56,9 @@ public class FeedItemFilter { case "has_media": showHasMedia = true; break; + case "is_favorite": + showIsFavorite = true; + break; } } } @@ -88,6 +94,8 @@ public class FeedItemFilter { if (showHasMedia && !item.hasMedia()) continue; + if (showIsFavorite && !item.isTagged(TAG_FAVORITE)) continue; + // If the item reaches here, it meets all criteria result.add(item); } diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java index a22422596..f3a43e2d0 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java +++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java @@ -19,6 +19,7 @@ import de.danoeh.antennapod.core.gpoddernet.model.GpodnetEpisodeAction; import de.danoeh.antennapod.core.preferences.GpodnetPreferences; import de.danoeh.antennapod.core.preferences.PlaybackPreferences; import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.core.service.playback.PlaybackService; import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.DBTasks; import de.danoeh.antennapod.core.storage.DBWriter; @@ -218,7 +219,7 @@ public class FeedMedia extends FeedFile implements Playable { * currently being played and the current player status is playing. */ public boolean isCurrentlyPlaying() { - return isPlaying() && + return isPlaying() && PlaybackService.isRunning && ((PlaybackPreferences.getCurrentPlayerStatus() == PlaybackPreferences.PLAYER_STATUS_PLAYING)); } @@ -531,8 +532,8 @@ public class FeedMedia extends FeedFile implements Playable { UserPreferences.isAutoFlattr() && item.getPaymentLink() != null && item.getFlattrStatus().getUnflattred() && - (completed && autoFlattrThreshold <= 1.0f || - played_duration >= autoFlattrThreshold * duration)) { + ((completed && autoFlattrThreshold <= 1.0f) || + (played_duration >= autoFlattrThreshold * duration))) { DBTasks.flattrItemIfLoggedIn(context, item); } } @@ -593,7 +594,7 @@ public class FeedMedia extends FeedFile implements Playable { @Override public void setDownloaded(boolean downloaded) { super.setDownloaded(downloaded); - if(item != null && downloaded) { + if(item != null && downloaded && item.isNew()) { item.setPlayed(false); } } @@ -625,6 +626,9 @@ public class FeedMedia extends FeedFile implements Playable { @Override public boolean equals(Object o) { + if (o == null) { + return false; + } if (FeedMediaFlavorHelper.instanceOfRemoteMedia(o)) { return o.equals(this); } diff --git a/core/src/main/java/de/danoeh/antennapod/core/glide/ApGlideModule.java b/core/src/main/java/de/danoeh/antennapod/core/glide/ApGlideModule.java index 835dee735..552c1b691 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/glide/ApGlideModule.java +++ b/core/src/main/java/de/danoeh/antennapod/core/glide/ApGlideModule.java @@ -2,31 +2,35 @@ package de.danoeh.antennapod.core.glide; import android.content.Context; +import android.support.annotation.NonNull; import com.bumptech.glide.Glide; import com.bumptech.glide.GlideBuilder; +import com.bumptech.glide.Registry; +import com.bumptech.glide.annotation.GlideModule; import com.bumptech.glide.load.DecodeFormat; import com.bumptech.glide.load.engine.cache.InternalCacheDiskCacheFactory; -import com.bumptech.glide.module.GlideModule; +import com.bumptech.glide.module.AppGlideModule; import java.io.InputStream; +import com.bumptech.glide.request.RequestOptions; import de.danoeh.antennapod.core.preferences.UserPreferences; /** * {@see com.bumptech.glide.integration.okhttp.OkHttpGlideModule} */ -public class ApGlideModule implements GlideModule { +@GlideModule +public class ApGlideModule extends AppGlideModule { @Override - public void applyOptions(Context context, GlideBuilder builder) { - builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888); + public void applyOptions(@NonNull Context context, @NonNull GlideBuilder builder) { + builder.setDefaultRequestOptions(new RequestOptions().format(DecodeFormat.PREFER_ARGB_8888)); builder.setDiskCache(new InternalCacheDiskCacheFactory(context, UserPreferences.getImageCacheSize())); } @Override - public void registerComponents(Context context, Glide glide) { - glide.register(String.class, InputStream.class, new ApOkHttpUrlLoader.Factory()); + public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) { + registry.replace(String.class, InputStream.class, new ApOkHttpUrlLoader.Factory()); } - } diff --git a/core/src/main/java/de/danoeh/antennapod/core/glide/ApGlideSettings.java b/core/src/main/java/de/danoeh/antennapod/core/glide/ApGlideSettings.java index fc1acd0e1..d0061af99 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/glide/ApGlideSettings.java +++ b/core/src/main/java/de/danoeh/antennapod/core/glide/ApGlideSettings.java @@ -6,6 +6,7 @@ import com.bumptech.glide.load.engine.DiskCacheStrategy; * The settings that AntennaPod will use for various Glide options */ public class ApGlideSettings { + private ApGlideSettings(){} public static final DiskCacheStrategy AP_DISK_CACHE_STRATEGY = DiskCacheStrategy.ALL; } diff --git a/core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java b/core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java index 3e4f06a12..2e742e979 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java +++ b/core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java @@ -1,12 +1,12 @@ package de.danoeh.antennapod.core.glide; -import android.content.Context; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import android.text.TextUtils; import android.util.Log; import com.bumptech.glide.integration.okhttp3.OkHttpStreamFetcher; -import com.bumptech.glide.load.data.DataFetcher; -import com.bumptech.glide.load.model.GenericLoaderFactory; +import com.bumptech.glide.load.Options; import com.bumptech.glide.load.model.GlideUrl; import com.bumptech.glide.load.model.ModelLoader; import com.bumptech.glide.load.model.ModelLoaderFactory; @@ -15,14 +15,14 @@ import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; +import com.bumptech.glide.load.model.MultiModelLoaderFactory; +import com.bumptech.glide.signature.ObjectKey; import de.danoeh.antennapod.core.service.download.AntennapodHttpClient; import de.danoeh.antennapod.core.service.download.HttpDownloader; import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.util.NetworkUtils; -import okhttp3.Interceptor; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.Response; +import okhttp3.*; +import okhttp3.internal.http.RealResponseBody; /** * @see com.bumptech.glide.integration.okhttp3.OkHttpUrlLoader @@ -56,19 +56,20 @@ class ApOkHttpUrlLoader implements ModelLoader<String, InputStream> { /** * Constructor for a new Factory that runs requests using a static singleton client. */ - public Factory() { + Factory() { this(getInternalClient()); } /** * Constructor for a new Factory that runs requests using given client. */ - public Factory(OkHttpClient client) { + Factory(OkHttpClient client) { this.client = client; } + @NonNull @Override - public ModelLoader<String, InputStream> build(Context context, GenericLoaderFactory factories) { + public ModelLoader<String, InputStream> build(@NonNull MultiModelLoaderFactory multiFactory) { return new ApOkHttpUrlLoader(client); } @@ -84,28 +85,40 @@ class ApOkHttpUrlLoader implements ModelLoader<String, InputStream> { this.client = client; } + @Nullable @Override - public DataFetcher<InputStream> getResourceFetcher(String model, int width, int height) { - Log.d(TAG, "getResourceFetcher() called with: " + "model = [" + model + "], width = [" + public LoadData<InputStream> buildLoadData(@NonNull String model, int width, int height, @NonNull Options options) { + Log.d(TAG, "buildLoadData() called with: " + "model = [" + model + "], width = [" + width + "], height = [" + height + "]"); if(TextUtils.isEmpty(model)) { return null; } else if(model.startsWith("/")) { - return new AudioCoverFetcher(model); + return new LoadData<>(new ObjectKey(model), new AudioCoverFetcher(model)); } else { GlideUrl url = new GlideUrl(model); - return new OkHttpStreamFetcher(client, url); + return new LoadData<>(new ObjectKey(model), new OkHttpStreamFetcher(client, url)); } } + @Override + public boolean handles(@NonNull String s) { + return true; + } + private static class NetworkAllowanceInterceptor implements Interceptor { @Override public Response intercept(Chain chain) throws IOException { - if (NetworkUtils.isDownloadAllowed()) { + if (NetworkUtils.isImageAllowed()) { return chain.proceed(chain.request()); } else { - return null; + return new Response.Builder() + .protocol(Protocol.HTTP_2) + .code(420) + .message("Policy Not Fulfilled") + .body(ResponseBody.create(null, new byte[0])) + .request(chain.request()) + .build(); } } diff --git a/core/src/main/java/de/danoeh/antennapod/core/glide/AudioCoverFetcher.java b/core/src/main/java/de/danoeh/antennapod/core/glide/AudioCoverFetcher.java index 8159a1b3e..479846655 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/glide/AudioCoverFetcher.java +++ b/core/src/main/java/de/danoeh/antennapod/core/glide/AudioCoverFetcher.java @@ -2,7 +2,9 @@ package de.danoeh.antennapod.core.glide; import android.media.MediaMetadataRetriever; +import android.support.annotation.NonNull; import com.bumptech.glide.Priority; +import com.bumptech.glide.load.DataSource; import com.bumptech.glide.load.data.DataFetcher; import java.io.ByteArrayInputStream; @@ -20,22 +22,20 @@ class AudioCoverFetcher implements DataFetcher<InputStream> { this.path = path; } - @Override public String getId() { - return path; - } - - @Override public InputStream loadData(Priority priority) throws Exception { + @Override + public void loadData(@NonNull Priority priority, @NonNull DataCallback<? super InputStream> callback) { MediaMetadataRetriever retriever = new MediaMetadataRetriever(); try { retriever.setDataSource(path); byte[] picture = retriever.getEmbeddedPicture(); if (picture != null) { - return new ByteArrayInputStream(picture); + callback.onDataReady(new ByteArrayInputStream(picture)); + return; } } finally { retriever.release(); } - throw new IOException("Loading embedded cover did not work"); + callback.onLoadFailed(new IOException("Loading embedded cover did not work")); } @Override public void cleanup() { @@ -44,4 +44,16 @@ class AudioCoverFetcher implements DataFetcher<InputStream> { @Override public void cancel() { // cannot cancel } + + @NonNull + @Override + public Class<InputStream> getDataClass() { + return InputStream.class; + } + + @NonNull + @Override + public DataSource getDataSource() { + return DataSource.LOCAL; + } } diff --git a/core/src/main/java/de/danoeh/antennapod/core/glide/FastBlurTransformation.java b/core/src/main/java/de/danoeh/antennapod/core/glide/FastBlurTransformation.java index ee58c2f39..a740782d6 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/glide/FastBlurTransformation.java +++ b/core/src/main/java/de/danoeh/antennapod/core/glide/FastBlurTransformation.java @@ -1,13 +1,15 @@ package de.danoeh.antennapod.core.glide; -import android.content.Context; import android.graphics.Bitmap; import android.media.ThumbnailUtils; +import android.support.annotation.NonNull; import android.util.Log; import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; import com.bumptech.glide.load.resource.bitmap.BitmapTransformation; +import java.security.MessageDigest; + public class FastBlurTransformation extends BitmapTransformation { private static final String TAG = FastBlurTransformation.class.getSimpleName(); @@ -15,8 +17,8 @@ public class FastBlurTransformation extends BitmapTransformation { private static final int STACK_BLUR_RADIUS = 1; private static final int BLUR_IMAGE_WIDTH = 150; - public FastBlurTransformation(Context context) { - super(context); + public FastBlurTransformation() { + super(); } @Override @@ -33,11 +35,6 @@ public class FastBlurTransformation extends BitmapTransformation { return result; } - @Override - public String getId() { - return "FastBlurTransformation[width=" + BLUR_IMAGE_WIDTH + "px,radius=" + STACK_BLUR_RADIUS +"]"; - } - private static Bitmap fastBlur(Bitmap bitmap, int radius) { // Stack Blur v1.0 from @@ -264,4 +261,8 @@ public class FastBlurTransformation extends BitmapTransformation { return bitmap; } + @Override + public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) { + messageDigest.update(TAG.getBytes()); + } }
\ No newline at end of file diff --git a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/GpodnetService.java b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/GpodnetService.java index 3af5e9080..2588cfdee 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/GpodnetService.java +++ b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/GpodnetService.java @@ -14,6 +14,7 @@ import java.net.MalformedURLException; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; +import java.nio.charset.Charset; import java.util.ArrayList; import java.util.Collection; import java.util.LinkedList; @@ -587,7 +588,7 @@ public class GpodnetService { String result = null; ResponseBody body = null; try { - String credential = Credentials.basic(username, password); + String credential = Credentials.basic(username, password, Charset.forName("UTF-8")); Request authRequest = request.newBuilder().header("Authorization", credential).build(); Response response = httpClient.newCall(authRequest).execute(); checkStatusCode(response); diff --git a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetEpisodeAction.java b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetEpisodeAction.java index b76988fd8..330cde525 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetEpisodeAction.java +++ b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetEpisodeAction.java @@ -169,7 +169,7 @@ public class GpodnetEpisodeAction { @Override public boolean equals(Object o) { if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; + if (o == null || !(o instanceof GpodnetEpisodeAction)) return false; GpodnetEpisodeAction that = (GpodnetEpisodeAction) o; diff --git a/core/src/main/java/de/danoeh/antennapod/core/preferences/GpodnetPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/preferences/GpodnetPreferences.java index b51b8d996..5b17dd338 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/preferences/GpodnetPreferences.java +++ b/core/src/main/java/de/danoeh/antennapod/core/preferences/GpodnetPreferences.java @@ -24,6 +24,8 @@ import de.danoeh.antennapod.core.service.GpodnetSyncService; */ public class GpodnetPreferences { + private GpodnetPreferences(){} + private static final String TAG = "GpodnetPreferences"; private static final String PREF_NAME = "gpodder.net"; diff --git a/core/src/main/java/de/danoeh/antennapod/core/preferences/SleepTimerPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/preferences/SleepTimerPreferences.java index b7ed890f5..0f3a9fcb3 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/preferences/SleepTimerPreferences.java +++ b/core/src/main/java/de/danoeh/antennapod/core/preferences/SleepTimerPreferences.java @@ -23,7 +23,6 @@ public class SleepTimerPreferences { private static final String DEFAULT_VALUE = "15"; private static final int DEFAULT_TIME_UNIT = 1; - private static Context context; private static SharedPreferences prefs; /** diff --git a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java index 44b2fa2b2..805f0c1b6 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java +++ b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java @@ -8,14 +8,7 @@ import android.support.annotation.NonNull; import android.support.v4.app.NotificationCompat; import android.text.TextUtils; import android.util.Log; -import de.danoeh.antennapod.core.R; -import de.danoeh.antennapod.core.service.download.ProxyConfig; -import de.danoeh.antennapod.core.storage.APCleanupAlgorithm; -import de.danoeh.antennapod.core.storage.APNullCleanupAlgorithm; -import de.danoeh.antennapod.core.storage.APQueueCleanupAlgorithm; -import de.danoeh.antennapod.core.storage.EpisodeCleanupAlgorithm; -import de.danoeh.antennapod.core.util.Converter; -import de.danoeh.antennapod.core.util.download.AutoUpdateManager; + import org.json.JSONArray; import org.json.JSONException; @@ -27,6 +20,15 @@ import java.util.Arrays; import java.util.List; import java.util.concurrent.TimeUnit; +import de.danoeh.antennapod.core.R; +import de.danoeh.antennapod.core.service.download.ProxyConfig; +import de.danoeh.antennapod.core.storage.APCleanupAlgorithm; +import de.danoeh.antennapod.core.storage.APNullCleanupAlgorithm; +import de.danoeh.antennapod.core.storage.APQueueCleanupAlgorithm; +import de.danoeh.antennapod.core.storage.EpisodeCleanupAlgorithm; +import de.danoeh.antennapod.core.util.Converter; +import de.danoeh.antennapod.core.util.download.AutoUpdateManager; + /** * Provides access to preferences set by the user in the settings screen. A * private instance of this class must first be instantiated via @@ -34,6 +36,7 @@ import java.util.concurrent.TimeUnit; * when called. */ public class UserPreferences { + private UserPreferences(){} private static final String IMPORT_DIR = "import/"; @@ -44,11 +47,13 @@ public class UserPreferences { public static final String PREF_HIDDEN_DRAWER_ITEMS = "prefHiddenDrawerItems"; private static final String PREF_DRAWER_FEED_ORDER = "prefDrawerFeedOrder"; private static final String PREF_DRAWER_FEED_COUNTER = "prefDrawerFeedIndicator"; - private static final String PREF_EXPANDED_NOTIFICATION = "prefExpandNotify"; + public static final String PREF_EXPANDED_NOTIFICATION = "prefExpandNotify"; private static final String PREF_PERSISTENT_NOTIFICATION = "prefPersistNotify"; public static final String PREF_COMPACT_NOTIFICATION_BUTTONS = "prefCompactNotificationButtons"; public static final String PREF_LOCKSCREEN_BACKGROUND = "prefLockscreenBackground"; private static final String PREF_SHOW_DOWNLOAD_REPORT = "prefShowDownloadReport"; + public static final String PREF_BACK_BUTTON_BEHAVIOR = "prefBackButtonBehavior"; + private static final String PREF_BACK_BUTTON_GO_TO_PAGE = "prefBackButtonGoToPage"; // Queue private static final String PREF_QUEUE_ADD_TO_FRONT = "prefQueueAddToFront"; @@ -72,7 +77,7 @@ public class UserPreferences { // Network private static final String PREF_ENQUEUE_DOWNLOADED = "prefEnqueueDownloaded"; public static final String PREF_UPDATE_INTERVAL = "prefAutoUpdateIntervall"; - private static final String PREF_MOBILE_UPDATE = "prefMobileUpdate"; + public static final String PREF_MOBILE_UPDATE = "prefMobileUpdateAllowed"; public static final String PREF_EPISODE_CLEANUP = "prefEpisodeCleanup"; public static final String PREF_PARALLEL_DOWNLOADS = "prefParallelDownloads"; public static final String PREF_EPISODE_CACHE_SIZE = "prefEpisodeCacheSize"; @@ -95,9 +100,13 @@ public class UserPreferences { // Other private static final String PREF_DATA_FOLDER = "prefDataFolder"; public static final String PREF_IMAGE_CACHE_SIZE = "prefImageCacheSize"; + public static final String PREF_DELETE_REMOVES_FROM_QUEUE = "prefDeleteRemovesFromQueue"; // Mediaplayer + public static final String PREF_MEDIA_PLAYER = "prefMediaPlayer"; + public static final String PREF_MEDIA_PLAYER_EXOPLAYER = "exoplayer"; private static final String PREF_PLAYBACK_SPEED = "prefPlaybackSpeed"; + public static final String PREF_PLAYBACK_SKIP_SILENCE = "prefSkipSilence"; private static final String PREF_FAST_FORWARD_SECS = "prefFastForwardSecs"; private static final String PREF_REWIND_SECS = "prefRewindSecs"; private static final String PREF_QUEUE_LOCKED = "prefQueueLocked"; @@ -107,9 +116,7 @@ public class UserPreferences { private static final String PREF_RIGHT_VOLUME = "prefRightVolume"; // Experimental - public static final String PREF_SONIC = "prefSonic"; private static final String PREF_STEREO_TO_MONO = "PrefStereoToMono"; - public static final String PREF_NORMALIZER = "prefNormalizer"; public static final String PREF_CAST_ENABLED = "prefCast"; //Used for enabling Chromecast support public static final int EPISODE_CLEANUP_QUEUE = -1; public static final int EPISODE_CLEANUP_NULL = -2; @@ -122,7 +129,6 @@ public class UserPreferences { private static final int EPISODE_CACHE_SIZE_UNLIMITED = -1; public static final int FEED_ORDER_COUNTER = 0; public static final int FEED_ORDER_ALPHABETICAL = 1; - public static final int FEED_ORDER_LAST_UPDATE = 2; public static final int FEED_ORDER_MOST_PLAYED = 3; public static final int FEED_COUNTER_SHOW_NEW_UNPLAYED_SUM = 0; public static final int FEED_COUNTER_SHOW_NEW = 1; @@ -161,6 +167,8 @@ public class UserPreferences { int theme = getTheme(); if (theme == R.style.Theme_AntennaPod_Dark) { return R.style.Theme_AntennaPod_Dark_NoTitle; + } else if (theme == R.style.Theme_AntennaPod_TrueBlack) { + return R.style.Theme_AntennaPod_TrueBlack_NoTitle; } else { return R.style.Theme_AntennaPod_Light_NoTitle; } @@ -304,6 +312,10 @@ public class UserPreferences { return Integer.parseInt(prefs.getString(PREF_SMART_MARK_AS_PLAYED_SECS, "30")); } + public static boolean shouldDeleteRemoveFromQueue() { + return prefs.getBoolean(PREF_DELETE_REMOVES_FROM_QUEUE, false); + } + public static boolean isAutoFlattr() { return prefs.getBoolean(PREF_AUTO_FLATTR, false); } @@ -312,6 +324,10 @@ public class UserPreferences { return prefs.getString(PREF_PLAYBACK_SPEED, "1.00"); } + public static boolean isSkipSilence() { + return prefs.getBoolean(PREF_PLAYBACK_SKIP_SILENCE, false); + } + public static String[] getPlaybackSpeedArray() { return readPlaybackSpeedArray(prefs.getString(PREF_PLAYBACK_SPEED_ARRAY, null)); } @@ -364,8 +380,16 @@ public class UserPreferences { } } + public static String getMobileUpdatesEnabled() { + return prefs.getString(PREF_MOBILE_UPDATE, "images"); + } + public static boolean isAllowMobileUpdate() { - return prefs.getBoolean(PREF_MOBILE_UPDATE, false); + return getMobileUpdatesEnabled().equals("everything"); + } + + public static boolean isAllowMobileImages() { + return isAllowMobileUpdate() || getMobileUpdatesEnabled().equals("images"); } public static int getParallelDownloads() { @@ -498,6 +522,12 @@ public class UserPreferences { .apply(); } + public static void setSkipSilence(boolean skipSilence) { + prefs.edit() + .putBoolean(PREF_PLAYBACK_SKIP_SILENCE, skipSilence) + .apply(); + } + public static void setPlaybackSpeedArray(String[] speeds) { JSONArray jsonArray = new JSONArray(); for (String speed : speeds) { @@ -597,6 +627,8 @@ public class UserPreferences { return R.style.Theme_AntennaPod_Light; case 1: return R.style.Theme_AntennaPod_Dark; + case 2: + return R.style.Theme_AntennaPod_TrueBlack; default: return R.style.Theme_AntennaPod_Light; } @@ -636,13 +668,15 @@ public class UserPreferences { } public static boolean useSonic() { - return prefs.getBoolean(PREF_SONIC, false); + return prefs.getString(PREF_MEDIA_PLAYER, "sonic").equals("sonic"); } - public static void enableSonic(boolean enable) { - prefs.edit() - .putBoolean(PREF_SONIC, enable) - .apply(); + public static boolean useExoplayer() { + return prefs.getString(PREF_MEDIA_PLAYER, "sonic").equals(PREF_MEDIA_PLAYER_EXOPLAYER); + } + + public static void enableSonic() { + prefs.edit().putString(PREF_MEDIA_PLAYER, "sonic").apply(); } public static boolean stereoToMono() { @@ -665,7 +699,7 @@ public class UserPreferences { } public static EpisodeCleanupAlgorithm getEpisodeCleanupAlgorithm() { - int cleanupValue = Integer.parseInt(prefs.getString(PREF_EPISODE_CLEANUP, "-1")); + int cleanupValue = getEpisodeCleanupValue(); if (cleanupValue == EPISODE_CLEANUP_QUEUE) { return new APQueueCleanupAlgorithm(); } else if (cleanupValue == EPISODE_CLEANUP_NULL) { @@ -675,6 +709,16 @@ public class UserPreferences { } } + public static int getEpisodeCleanupValue() { + return Integer.parseInt(prefs.getString(PREF_EPISODE_CLEANUP, "-1")); + } + + public static void setEpisodeCleanupValue(int episodeCleanupValue) { + prefs.edit() + .putString(PREF_EPISODE_CLEANUP, Integer.toString(episodeCleanupValue)) + .apply(); + } + /** * Return the folder where the app stores all of its data. This method will * return the standard data folder if none has been set by the user. @@ -802,4 +846,29 @@ public class UserPreferences { public enum VideoBackgroundBehavior { STOP, PICTURE_IN_PICTURE, CONTINUE_PLAYING } + + public enum BackButtonBehavior { + DEFAULT, OPEN_DRAWER, DOUBLE_TAP, SHOW_PROMPT, GO_TO_PAGE + } + + public static BackButtonBehavior getBackButtonBehavior() { + switch (prefs.getString(PREF_BACK_BUTTON_BEHAVIOR, "default")) { + case "default": return BackButtonBehavior.DEFAULT; + case "drawer": return BackButtonBehavior.OPEN_DRAWER; + case "doubletap": return BackButtonBehavior.DOUBLE_TAP; + case "prompt": return BackButtonBehavior.SHOW_PROMPT; + case "page": return BackButtonBehavior.GO_TO_PAGE; + default: return BackButtonBehavior.DEFAULT; + } + } + + public static String getBackButtonGoToPage() { + return prefs.getString(PREF_BACK_BUTTON_GO_TO_PAGE, "QueueFragment"); + } + + public static void setBackButtonGoToPage(String tag) { + prefs.edit() + .putString(PREF_BACK_BUTTON_GO_TO_PAGE, tag) + .apply(); + } } diff --git a/core/src/main/java/de/danoeh/antennapod/core/receiver/PlayerWidget.java b/core/src/main/java/de/danoeh/antennapod/core/receiver/PlayerWidget.java index edc2ea3e0..7663cdbe4 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/receiver/PlayerWidget.java +++ b/core/src/main/java/de/danoeh/antennapod/core/receiver/PlayerWidget.java @@ -6,10 +6,11 @@ import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.util.Log; -import de.danoeh.antennapod.core.service.PlayerWidgetJobService; import java.util.Arrays; +import de.danoeh.antennapod.core.service.PlayerWidgetJobService; + public class PlayerWidget extends AppWidgetProvider { private static final String TAG = "PlayerWidget"; diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/FeedUpdateJobService.java b/core/src/main/java/de/danoeh/antennapod/core/service/FeedUpdateJobService.java index 55a8d6b86..7d80d4e7c 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/FeedUpdateJobService.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/FeedUpdateJobService.java @@ -5,6 +5,7 @@ import android.app.job.JobService; import android.os.Build; import android.support.annotation.RequiresApi; import android.util.Log; + import de.danoeh.antennapod.core.ClientConfig; import de.danoeh.antennapod.core.preferences.UserPreferences; import de.danoeh.antennapod.core.util.FeedUpdateUtils; diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java b/core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java index de040603d..5584991ca 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java @@ -6,8 +6,8 @@ import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.support.annotation.NonNull; -import android.support.v4.app.JobIntentService; import android.support.v4.app.NotificationCompat; +import android.support.v4.app.SafeJobIntentService; import android.support.v4.util.ArrayMap; import android.util.Log; import android.util.Pair; @@ -44,7 +44,8 @@ import de.danoeh.antennapod.core.util.gui.NotificationUtils; * Synchronizes local subscriptions with gpodder.net service. The service should be started with ACTION_SYNC as an action argument. * This class also provides static methods for starting the GpodnetSyncService. */ -public class GpodnetSyncService extends JobIntentService { +public class GpodnetSyncService extends SafeJobIntentService { + private static final String TAG = "GpodnetSyncService"; private static final long WAIT_INTERVAL = 5000L; @@ -61,8 +62,10 @@ public class GpodnetSyncService extends JobIntentService { private static boolean syncSubscriptions = false; private static boolean syncActions = false; + private static final int JOB_ID = -17000; + private static void enqueueWork(Context context, Intent intent) { - enqueueWork(context, GpodnetSyncService.class, 0, intent); + enqueueWork(context, GpodnetSyncService.class, JOB_ID, intent); } @Override diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/PlayerWidgetJobService.java b/core/src/main/java/de/danoeh/antennapod/core/service/PlayerWidgetJobService.java index 4948912ca..dbf80cf37 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/PlayerWidgetJobService.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/PlayerWidgetJobService.java @@ -10,7 +10,7 @@ import android.graphics.Bitmap; import android.os.Build; import android.os.IBinder; import android.support.annotation.NonNull; -import android.support.v4.app.JobIntentService; +import android.support.v4.app.SafeJobIntentService; import android.util.Log; import android.view.KeyEvent; import android.view.View; @@ -21,23 +21,26 @@ import com.bumptech.glide.Glide; import de.danoeh.antennapod.core.R; import de.danoeh.antennapod.core.glide.ApGlideSettings; import de.danoeh.antennapod.core.receiver.MediaButtonReceiver; +import de.danoeh.antennapod.core.receiver.PlayerWidget; import de.danoeh.antennapod.core.service.playback.PlaybackService; import de.danoeh.antennapod.core.service.playback.PlayerStatus; import de.danoeh.antennapod.core.util.Converter; import de.danoeh.antennapod.core.util.playback.Playable; -import de.danoeh.antennapod.core.receiver.PlayerWidget; /** * Updates the state of the player widget */ -public class PlayerWidgetJobService extends JobIntentService { +public class PlayerWidgetJobService extends SafeJobIntentService { + private static final String TAG = "PlayerWidgetJobService"; private PlaybackService playbackService; private final Object waitForService = new Object(); + private static final int JOB_ID = -17001; + public static void updateWidget(Context context) { - enqueueWork(context, PlayerWidgetJobService.class, 0, new Intent(context, PlayerWidgetJobService.class)); + enqueueWork(context, PlayerWidgetJobService.class, JOB_ID, new Intent(context, PlayerWidgetJobService.class)); } @Override @@ -46,8 +49,8 @@ public class PlayerWidgetJobService extends JobIntentService { return; } - if (PlaybackService.isRunning && playbackService == null) { - synchronized (waitForService) { + synchronized (waitForService) { + if (PlaybackService.isRunning && playbackService == null) { bindService(new Intent(this, PlaybackService.class), mConnection, 0); while (playbackService == null) { try { diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java index 57d099dfc..97007a214 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java @@ -40,6 +40,9 @@ import okhttp3.internal.http.StatusLine; * Provides access to a HttpClient singleton. */ public class AntennapodHttpClient { + + private AntennapodHttpClient(){} + private static final String TAG = "AntennapodHttpClient"; private static final int CONNECTION_TIMEOUT = 30000; diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadRequest.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadRequest.java index 9a64bebf7..48234c387 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadRequest.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadRequest.java @@ -124,7 +124,7 @@ public class DownloadRequest implements Parcelable { @Override public boolean equals(Object o) { if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; + if (o == null || !(o instanceof DownloadRequest)) return false; DownloadRequest that = (DownloadRequest) o; @@ -211,10 +211,6 @@ public class DownloadRequest implements Parcelable { this.size = size; } - public int getStatusMsg() { - return statusMsg; - } - public void setStatusMsg(int statusMsg) { this.statusMsg = statusMsg; } diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java index 9c2266622..ae1e9de86 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java @@ -13,14 +13,12 @@ import android.os.Build; import android.os.Handler; import android.os.IBinder; import android.support.annotation.NonNull; -import android.support.annotation.VisibleForTesting; import android.support.v4.app.NotificationCompat; import android.text.TextUtils; import android.util.Log; import android.util.Pair; import android.webkit.URLUtil; -import de.danoeh.antennapod.core.util.gui.NotificationUtils; import org.apache.commons.io.FileUtils; import org.xml.sax.SAXException; @@ -30,10 +28,8 @@ import java.net.HttpURLConnection; import java.util.ArrayList; import java.util.Collections; import java.util.Date; -import java.util.HashSet; import java.util.LinkedList; import java.util.List; -import java.util.Set; import java.util.concurrent.BlockingQueue; import java.util.concurrent.Callable; import java.util.concurrent.CompletionService; @@ -55,7 +51,6 @@ import de.danoeh.antennapod.core.R; import de.danoeh.antennapod.core.event.DownloadEvent; import de.danoeh.antennapod.core.event.FeedItemEvent; import de.danoeh.antennapod.core.feed.Feed; -import de.danoeh.antennapod.core.feed.FeedImage; import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.feed.FeedMedia; import de.danoeh.antennapod.core.feed.FeedPreferences; @@ -75,6 +70,7 @@ import de.danoeh.antennapod.core.syndication.handler.UnsupportedFeedtypeExceptio import de.danoeh.antennapod.core.util.ChapterUtils; import de.danoeh.antennapod.core.util.DownloadError; import de.danoeh.antennapod.core.util.InvalidFeedException; +import de.danoeh.antennapod.core.util.gui.NotificationUtils; import de.greenrobot.event.EventBus; /** @@ -117,11 +113,6 @@ public class DownloadService extends Service { private CompletionService<Downloader> downloadExecutor; private FeedSyncThread feedSyncThread; - /** - * Number of threads of downloadExecutor. - */ - private static final int NUM_PARALLEL_DOWNLOADS = 6; - private DownloadRequester requester; @@ -489,9 +480,7 @@ public class DownloadService extends Service { if (status.isSuccessful()) { successfulDownloads++; } else if (!status.isCancelled()) { - if (status.getFeedfileType() != FeedImage.FEEDFILETYPE_FEEDIMAGE) { - createReport = true; - } + createReport = true; failedDownloads++; } } @@ -688,10 +677,6 @@ public class DownloadService extends Service { Log.d(TAG, "Bundling " + results.size() + " feeds"); - for (Pair<DownloadRequest, FeedHandlerResult> result : results) { - removeDuplicateImages(result.second.feed); // duplicate images have to removed because the DownloadRequester does not accept two downloads with the same download URL yet. - } - // Save information of feed in DB if (dbUpdateFuture != null) { try { @@ -866,22 +851,6 @@ public class DownloadService extends Service { return true; } - /** - * Delete files that aren't needed anymore - */ - private void cleanup(Feed feed) { - if (feed.getFile_url() != null) { - if (new File(feed.getFile_url()).delete()) { - Log.d(TAG, "Successfully deleted cache file."); - } else { - Log.e(TAG, "Failed to delete cache file."); - } - feed.setFile_url(null); - } else { - Log.d(TAG, "Didn't delete cache file: File url is not set."); - } - } - public void shutdown() { isActive = false; if (isCollectingRequests) { @@ -1101,26 +1070,6 @@ public class DownloadService extends Service { } } - /** - * Checks if the FeedItems of this feed have images that point to the same URL. If two FeedItems - * have an image that points to the same URL, the reference of the second item is removed, so - * that every image reference is unique. - */ - @VisibleForTesting - static void removeDuplicateImages(Feed feed) { - Set<String> known = new HashSet<>(); - for (FeedItem item : feed.getItems()) { - String url = item.hasItemImage() ? item.getImage().getDownload_url() : null; - if (url != null) { - if (known.contains(url)) { - item.setImage(null); - } else { - known.add(url); - } - } - } - } - private static String compileNotificationString(List<Downloader> downloads) { List<String> lines = new ArrayList<>(downloads.size()); for (Downloader downloader : downloads) { diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/Downloader.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/Downloader.java index 445210d3a..38b93eab8 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/download/Downloader.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/Downloader.java @@ -2,6 +2,7 @@ package de.danoeh.antennapod.core.service.download; import android.content.Context; import android.net.wifi.WifiManager; +import android.support.annotation.NonNull; import java.util.concurrent.Callable; @@ -18,10 +19,12 @@ public abstract class Downloader implements Callable<Downloader> { volatile boolean cancelled; + @NonNull final DownloadRequest request; + @NonNull final DownloadStatus result; - Downloader(DownloadRequest request) { + Downloader(@NonNull DownloadRequest request) { super(); this.request = request; this.request.setStatusMsg(R.string.download_pending); @@ -54,10 +57,12 @@ public abstract class Downloader implements Callable<Downloader> { return this; } + @NonNull public DownloadRequest getDownloadRequest() { return request; } + @NonNull public DownloadStatus getResult() { return result; } diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloaderCallback.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloaderCallback.java deleted file mode 100644 index b0829f084..000000000 --- a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloaderCallback.java +++ /dev/null @@ -1,10 +0,0 @@ -package de.danoeh.antennapod.core.service.download; - -/** - * Callback used by the Downloader-classes to notify the requester that the - * download has completed. - */ -public interface DownloaderCallback { - - void onDownloadCompleted(Downloader downloader); -} diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java index 7ab0931d6..c27cefc10 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java @@ -1,5 +1,6 @@ package de.danoeh.antennapod.core.service.download; +import android.support.annotation.NonNull; import android.text.TextUtils; import android.util.Log; @@ -20,7 +21,6 @@ import java.util.Date; import de.danoeh.antennapod.core.ClientConfig; import de.danoeh.antennapod.core.R; -import de.danoeh.antennapod.core.feed.FeedImage; import de.danoeh.antennapod.core.feed.FeedMedia; import de.danoeh.antennapod.core.util.DateUtils; import de.danoeh.antennapod.core.util.DownloadError; @@ -39,7 +39,7 @@ public class HttpDownloader extends Downloader { private static final int BUFFER_SIZE = 8 * 1024; - public HttpDownloader(DownloadRequest request) { + public HttpDownloader(@NonNull DownloadRequest request) { super(request); } @@ -50,13 +50,8 @@ public class HttpDownloader extends Downloader { if (request.isDeleteOnFailure() && fileExists) { Log.w(TAG, "File already exists"); - if (request.getFeedfileType() != FeedImage.FEEDFILETYPE_FEEDIMAGE) { - onFail(DownloadError.ERROR_FILE_EXISTS, null); - return; - } else { - onSuccess(); - return; - } + onSuccess(); + return; } OkHttpClient.Builder httpClientBuilder = AntennapodHttpClient.newBuilder(); @@ -310,7 +305,7 @@ public class HttpDownloader extends Downloader { String encoded = ByteString.of(bytes).base64(); return "Basic " + encoded; } catch (UnsupportedEncodingException e) { - throw new AssertionError(); + throw new AssertionError(e); } } diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayerWrapper.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayerWrapper.java new file mode 100644 index 000000000..281bd064b --- /dev/null +++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayerWrapper.java @@ -0,0 +1,249 @@ +package de.danoeh.antennapod.core.service.playback; + +import android.content.Context; +import android.net.Uri; +import android.view.SurfaceHolder; + +import com.google.android.exoplayer2.C; +import com.google.android.exoplayer2.DefaultLoadControl; +import com.google.android.exoplayer2.DefaultRenderersFactory; +import com.google.android.exoplayer2.ExoPlaybackException; +import com.google.android.exoplayer2.ExoPlayerFactory; +import com.google.android.exoplayer2.PlaybackParameters; +import com.google.android.exoplayer2.Player; +import com.google.android.exoplayer2.SeekParameters; +import com.google.android.exoplayer2.SimpleExoPlayer; +import com.google.android.exoplayer2.Timeline; +import com.google.android.exoplayer2.audio.AudioAttributes; +import com.google.android.exoplayer2.source.ExtractorMediaSource; +import com.google.android.exoplayer2.source.MediaSource; +import com.google.android.exoplayer2.source.TrackGroupArray; +import com.google.android.exoplayer2.trackselection.DefaultTrackSelector; +import com.google.android.exoplayer2.trackselection.TrackSelectionArray; +import com.google.android.exoplayer2.upstream.DataSource; +import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory; +import com.google.android.exoplayer2.util.Util; + +import org.antennapod.audio.MediaPlayer; +import de.danoeh.antennapod.core.util.playback.IPlayer; + + +public class ExoPlayerWrapper implements IPlayer { + private final Context mContext; + private SimpleExoPlayer mExoPlayer; + private MediaSource mediaSource; + private MediaPlayer.OnSeekCompleteListener audioSeekCompleteListener; + private MediaPlayer.OnCompletionListener audioCompletionListener; + private MediaPlayer.OnErrorListener audioErrorListener; + + ExoPlayerWrapper(Context context) { + mContext = context; + mExoPlayer = createPlayer(); + } + + private SimpleExoPlayer createPlayer() { + SimpleExoPlayer p = ExoPlayerFactory.newSimpleInstance(mContext, new DefaultRenderersFactory(mContext), + new DefaultTrackSelector(), new DefaultLoadControl()); + p.setSeekParameters(SeekParameters.PREVIOUS_SYNC); + p.addListener(new Player.EventListener() { + @Override + public void onTimelineChanged(Timeline timeline, Object manifest, int reason) { + + } + + @Override + public void onTracksChanged(TrackGroupArray trackGroups, TrackSelectionArray trackSelections) { + + } + + @Override + public void onLoadingChanged(boolean isLoading) { + + } + + @Override + public void onPlayerStateChanged(boolean playWhenReady, int playbackState) { + if (playbackState == Player.STATE_ENDED) { + audioCompletionListener.onCompletion(null); + } + } + + @Override + public void onRepeatModeChanged(int repeatMode) { + + } + + @Override + public void onShuffleModeEnabledChanged(boolean shuffleModeEnabled) { + + } + + @Override + public void onPlayerError(ExoPlaybackException error) { + if (audioErrorListener != null) { + audioErrorListener.onError(null, 0, 0); + } + } + + @Override + public void onPositionDiscontinuity(int reason) { + + } + + @Override + public void onPlaybackParametersChanged(PlaybackParameters playbackParameters) { + + } + + @Override + public void onSeekProcessed() { + audioSeekCompleteListener.onSeekComplete(null); + } + }); + return p; + } + + @Override + public boolean canSetSpeed() { + return true; + } + + @Override + public boolean canDownmix() { + return false; + } + + @Override + public int getCurrentPosition() { + return (int) mExoPlayer.getCurrentPosition(); + } + + @Override + public float getCurrentSpeedMultiplier() { + return mExoPlayer.getPlaybackParameters().speed; + } + + @Override + public int getDuration() { + if (mExoPlayer.getDuration() == C.TIME_UNSET) { + return PlaybackServiceMediaPlayer.INVALID_TIME; + } + return (int) mExoPlayer.getDuration(); + } + + @Override + public boolean isPlaying() { + return mExoPlayer.getPlayWhenReady(); + } + + @Override + public void pause() { + mExoPlayer.setPlayWhenReady(false); + } + + @Override + public void prepare() throws IllegalStateException { + mExoPlayer.prepare(mediaSource); + } + + @Override + public void release() { + if (mExoPlayer != null) { + mExoPlayer.release(); + } + audioSeekCompleteListener = null; + audioCompletionListener = null; + audioErrorListener = null; + } + + @Override + public void reset() { + mExoPlayer.release(); + mExoPlayer = createPlayer(); + } + + @Override + public void seekTo(int i) throws IllegalStateException { + mExoPlayer.seekTo(i); + } + + @Override + public void setAudioStreamType(int i) { + AudioAttributes a = mExoPlayer.getAudioAttributes(); + AudioAttributes.Builder b = new AudioAttributes.Builder(); + b.setContentType(i); + b.setFlags(a.flags); + b.setUsage(a.usage); + mExoPlayer.setAudioAttributes(b.build()); + } + + @Override + public void setDataSource(String s) throws IllegalArgumentException, IllegalStateException { + DataSource.Factory dataSourceFactory = + new DefaultDataSourceFactory(mContext, Util.getUserAgent(mContext, mContext.getPackageName()), null); + ExtractorMediaSource.Factory f = new ExtractorMediaSource.Factory(dataSourceFactory); + mediaSource = f.createMediaSource(Uri.parse(s)); + } + + @Override + public void setDisplay(SurfaceHolder sh) { + mExoPlayer.setVideoSurfaceHolder(sh); + } + + @Override + public void setPlaybackParams(float speed, boolean skipSilence) { + PlaybackParameters params = mExoPlayer.getPlaybackParameters(); + mExoPlayer.setPlaybackParameters(new PlaybackParameters(speed, params.pitch, skipSilence)); + } + + @Override + public void setDownmix(boolean b) { + + } + + @Override + public void setVolume(float v, float v1) { + mExoPlayer.setVolume(v); + } + + @Override + public void setWakeMode(Context context, int i) { + + } + + @Override + public void start() { + mExoPlayer.setPlayWhenReady(true); + } + + @Override + public void stop() { + mExoPlayer.stop(); + } + + void setOnCompletionListener(MediaPlayer.OnCompletionListener audioCompletionListener) { + this.audioCompletionListener = audioCompletionListener; + } + + void setOnSeekCompleteListener(MediaPlayer.OnSeekCompleteListener audioSeekCompleteListener) { + this.audioSeekCompleteListener = audioSeekCompleteListener; + } + + void setOnErrorListener(MediaPlayer.OnErrorListener audioErrorListener) { + this.audioErrorListener = audioErrorListener; + } + + int getVideoWidth() { + if (mExoPlayer.getVideoFormat() == null) { + return 0; + } + return mExoPlayer.getVideoFormat().width; + } + + int getVideoHeight() { + if (mExoPlayer.getVideoFormat() == null) { + return 0; + } + return mExoPlayer.getVideoFormat().height; + } +} diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java index 0e64f484f..9274b9a49 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java @@ -1,7 +1,10 @@ package de.danoeh.antennapod.core.service.playback; import android.content.Context; +import android.media.AudioAttributes; +import android.media.AudioFocusRequest; import android.media.AudioManager; +import android.os.Build; import android.os.PowerManager; import android.support.annotation.NonNull; import android.telephony.TelephonyManager; @@ -202,9 +205,26 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer { private void resumeSync() { if (playerStatus == PlayerStatus.PAUSED || playerStatus == PlayerStatus.PREPARED) { - int focusGained = audioManager.requestAudioFocus( - audioFocusChangeListener, AudioManager.STREAM_MUSIC, - AudioManager.AUDIOFOCUS_GAIN); + int focusGained; + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + AudioAttributes audioAttributes = new AudioAttributes.Builder() + .setUsage(AudioAttributes.USAGE_MEDIA) + .setContentType(AudioAttributes.CONTENT_TYPE_SPEECH) + .build(); + AudioFocusRequest audioFocusRequest = new AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN) + .setAudioAttributes(audioAttributes) + .setOnAudioFocusChangeListener(audioFocusChangeListener) + .setAcceptsDelayedFocusGain(true) + .setWillPauseWhenDucked(true) + .build(); + focusGained = audioManager.requestAudioFocus(audioFocusRequest); + } else { + focusGained = audioManager.requestAudioFocus( + audioFocusChangeListener, AudioManager.STREAM_MUSIC, + AudioManager.AUDIOFOCUS_GAIN); + } + if (focusGained == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) { Log.d(TAG, "Audiofocus successfully requested"); Log.d(TAG, "Resuming/Starting playback"); @@ -216,7 +236,7 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer { Log.e(TAG, Log.getStackTraceString(e)); UserPreferences.setPlaybackSpeed(String.valueOf(speed)); } - setSpeed(speed); + setPlaybackParams(speed, UserPreferences.isSkipSilence()); setVolume(UserPreferences.getLeftVolume(), UserPreferences.getRightVolume()); if (playerStatus == PlayerStatus.PREPARED && media.getPosition() > 0) { @@ -259,7 +279,13 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer { setPlayerStatus(PlayerStatus.PAUSED, media, getPosition()); if (abandonFocus) { - audioManager.abandonAudioFocus(audioFocusChangeListener); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + AudioFocusRequest.Builder builder = new AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN) + .setOnAudioFocusChangeListener(audioFocusChangeListener); + audioManager.abandonAudioFocusRequest(builder.build()); + } else { + audioManager.abandonAudioFocus(audioFocusChangeListener); + } pausedBecauseOfTransientAudiofocusLoss = false; } if (stream && reinit) { @@ -313,7 +339,10 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer { Log.d(TAG, "Resource prepared"); - if (mediaType == MediaType.VIDEO) { + if (mediaType == MediaType.VIDEO && mediaPlayer instanceof ExoPlayerWrapper) { + ExoPlayerWrapper vp = (ExoPlayerWrapper) mediaPlayer; + videoSize = new Pair<>(vp.getVideoWidth(), vp.getVideoHeight()); + } else if(mediaType == MediaType.VIDEO && mediaPlayer instanceof VideoPlayer) { VideoPlayer vp = (VideoPlayer) mediaPlayer; videoSize = new Pair<>(vp.getVideoWidth(), vp.getVideoHeight()); } @@ -447,7 +476,8 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer { || playerStatus == PlayerStatus.PAUSED || playerStatus == PlayerStatus.PREPARED) { retVal = mediaPlayer.getDuration(); - } else if (media != null && media.getDuration() > 0) { + } + if (retVal <= 0 && media != null && media.getDuration() > 0) { retVal = media.getDuration(); } @@ -507,14 +537,14 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer { * Sets the playback speed. * This method is executed on the caller's thread. */ - private void setSpeedSync(float speed) { + private void setSpeedSyncAndSkipSilence(float speed, boolean skipSilence) { playerLock.lock(); if (media != null && media.getMediaType() == MediaType.AUDIO) { if (mediaPlayer.canSetSpeed()) { - mediaPlayer.setPlaybackSpeed(speed); Log.d(TAG, "Playback speed was set to " + speed); callback.playbackSpeedChanged(speed); } + mediaPlayer.setPlaybackParams(speed, skipSilence); } playerLock.unlock(); } @@ -524,8 +554,8 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer { * This method is executed on an internal executor service. */ @Override - public void setSpeed(final float speed) { - executor.submit(() -> setSpeedSync(speed)); + public void setPlaybackParams(final float speed, final boolean skipSilence) { + executor.submit(() -> setSpeedSyncAndSkipSilence(speed, skipSilence)); } /** @@ -610,13 +640,29 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer { executor.shutdown(); if (mediaPlayer != null) { try { - mediaPlayer.stop(); + removeMediaPlayerErrorListener(); + if (mediaPlayer.isPlaying()) { + mediaPlayer.stop(); + } } catch (Exception ignore) { } mediaPlayer.release(); } releaseWifiLockIfNecessary(); } + private void removeMediaPlayerErrorListener() { + if (mediaPlayer instanceof VideoPlayer) { + VideoPlayer vp = (VideoPlayer) mediaPlayer; + vp.setOnErrorListener((mp, what, extra) -> true); + } else if (mediaPlayer instanceof AudioPlayer) { + AudioPlayer ap = (AudioPlayer) mediaPlayer; + ap.setOnErrorListener((mediaPlayer, i, i1) -> true); + } else if (mediaPlayer instanceof ExoPlayerWrapper) { + ExoPlayerWrapper ap = (ExoPlayerWrapper) mediaPlayer; + ap.setOnErrorListener((mediaPlayer, i, i1) -> true); + } + } + /** * Releases internally used resources. This method should only be called when the object is not used anymore. * This method is executed on an internal executor service. @@ -669,6 +715,10 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer { Pair<Integer, Integer> res; if (mediaPlayer == null || playerStatus == PlayerStatus.ERROR || mediaType != MediaType.VIDEO) { res = null; + } else if (mediaPlayer instanceof ExoPlayerWrapper) { + ExoPlayerWrapper vp = (ExoPlayerWrapper) mediaPlayer; + videoSize = new Pair<>(vp.getVideoWidth(), vp.getVideoHeight()); + res = videoSize; } else { VideoPlayer vp = (VideoPlayer) mediaPlayer; videoSize = new Pair<>(vp.getVideoWidth(), vp.getVideoHeight()); @@ -698,15 +748,19 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer { if (mediaPlayer != null) { mediaPlayer.release(); } - if(media == null) { + if (media == null) { mediaPlayer = null; return; } - if (media.getMediaType() == MediaType.VIDEO) { + + if (UserPreferences.useExoplayer()) { + mediaPlayer = new ExoPlayerWrapper(context); + } else if (media.getMediaType() == MediaType.VIDEO) { mediaPlayer = new VideoPlayer(); } else { mediaPlayer = new AudioPlayer(context); } + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mediaPlayer.setWakeMode(context, PowerManager.PARTIAL_WAKE_LOCK); setMediaPlayerListeners(mediaPlayer); @@ -787,7 +841,14 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer { if (mediaPlayer != null) { mediaPlayer.reset(); } - audioManager.abandonAudioFocus(audioFocusChangeListener); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + AudioFocusRequest.Builder builder = new AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN) + .setOnAudioFocusChangeListener(audioFocusChangeListener); + audioManager.abandonAudioFocusRequest(builder.build()); + } else { + audioManager.abandonAudioFocus(audioFocusChangeListener); + } final Playable currentMedia = media; Playable nextMedia = null; @@ -883,6 +944,11 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer { ap.setOnBufferingUpdateListener(audioBufferingUpdateListener); ap.setOnInfoListener(audioInfoListener); ap.setOnSpeedAdjustmentAvailableChangedListener(audioSetSpeedAbilityListener); + } else if (mp instanceof ExoPlayerWrapper) { + ExoPlayerWrapper ap = (ExoPlayerWrapper) mp; + ap.setOnCompletionListener(audioCompletionListener); + ap.setOnSeekCompleteListener(audioSeekCompleteListener); + ap.setOnErrorListener(audioErrorListener); } else { Log.w(TAG, "Unknown media player: " + mp); } @@ -925,7 +991,7 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer { private final MediaPlayer.OnErrorListener audioErrorListener = (mp, what, extra) -> { - if(mp.canFallback()) { + if(mp != null && mp.canFallback()) { mp.fallback(); return true; } else { diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java index be6cb346d..7fe93a162 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java @@ -24,13 +24,14 @@ import android.os.Vibrator; import android.preference.PreferenceManager; import android.support.annotation.NonNull; import android.support.annotation.StringRes; +import android.support.v4.app.NotificationCompat; +import android.support.v4.content.ContextCompat; import android.support.v4.media.MediaBrowserCompat; import android.support.v4.media.MediaBrowserServiceCompat; import android.support.v4.media.MediaDescriptionCompat; import android.support.v4.media.MediaMetadataCompat; import android.support.v4.media.session.MediaSessionCompat; import android.support.v4.media.session.PlaybackStateCompat; -import android.support.v4.app.NotificationCompat; import android.text.TextUtils; import android.util.Log; import android.util.Pair; @@ -39,6 +40,7 @@ import android.view.SurfaceHolder; import android.widget.Toast; import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.target.Target; import java.util.ArrayList; @@ -65,14 +67,20 @@ import de.danoeh.antennapod.core.storage.DBTasks; import de.danoeh.antennapod.core.storage.DBWriter; import de.danoeh.antennapod.core.storage.FeedSearcher; import de.danoeh.antennapod.core.util.IntList; -import de.danoeh.antennapod.core.util.gui.NotificationUtils; +import de.danoeh.antennapod.core.util.IntentUtils; import de.danoeh.antennapod.core.util.QueueAccess; +import de.danoeh.antennapod.core.util.gui.NotificationUtils; import de.danoeh.antennapod.core.util.playback.ExternalMedia; import de.danoeh.antennapod.core.util.playback.Playable; import de.greenrobot.event.EventBus; /** * Controls the MediaPlayer that plays a FeedMedia-file + * + * Callers should connect to the service with either: + * - .bindService() + * - ContextCompat.startForegroundService(), optionally with arguments, such as media to be played, in intent extras + * */ public class PlaybackService extends MediaBrowserServiceCompat { /** @@ -191,10 +199,6 @@ public class PlaybackService extends MediaBrowserServiceCompat { */ public static boolean isRunning = false; /** - * Is true if service has received a valid start command. - */ - public static boolean started = false; - /** * Is true if the service was running, but paused due to headphone disconnect */ private static boolean transientPause = false; @@ -310,15 +314,9 @@ public class PlaybackService extends MediaBrowserServiceCompat { } flavorHelper.initializeMediaPlayer(PlaybackService.this); - mediaSession.setActive(true); - NotificationCompat.Builder notificationBuilder = createBasicNotification(); - startForeground(NOTIFICATION_ID, notificationBuilder.build()); EventBus.getDefault().post(new ServiceEvent(ServiceEvent.Action.SERVICE_STARTED)); - - - setupNotification(Playable.PlayableUtils.createInstanceFromPreferences(getApplicationContext())); } private NotificationCompat.Builder createBasicNotification() { @@ -343,8 +341,8 @@ public class PlaybackService extends MediaBrowserServiceCompat { public void onDestroy() { super.onDestroy(); Log.d(TAG, "Service is about to be destroyed"); + stopForeground(true); isRunning = false; - started = false; currentMediaType = MediaType.UNKNOWN; PreferenceManager.getDefaultSharedPreferences(this) @@ -365,7 +363,7 @@ public class PlaybackService extends MediaBrowserServiceCompat { mediaPlayer.shutdown(); taskManager.shutdown(); } - + @Override public BrowserRoot onGetRoot(@NonNull String clientPackageName, int clientUid, Bundle rootHints) { Log.d(TAG, "OnGetRoot: clientPackageName=" + clientPackageName + @@ -459,33 +457,32 @@ public class PlaybackService extends MediaBrowserServiceCompat { final boolean castDisconnect = intent.getBooleanExtra(EXTRA_CAST_DISCONNECT, false); Playable playable = intent.getParcelableExtra(EXTRA_PLAYABLE); if (keycode == -1 && playable == null && !castDisconnect) { - Log.e(TAG, "PlaybackService was started with no arguments"); - stopSelf(); + // Typical cases when the service was started with no argument + // - when it is first bound, and then moved to startedState, as in <code>serviceManager.moveServiceToStartedState()</code> + // - callers (e.g., Controller) explicitly + Log.d(TAG, "PlaybackService was started with no arguments."); return Service.START_NOT_STICKY; } - if ((flags & Service.START_FLAG_REDELIVERY) != 0) { - Log.d(TAG, "onStartCommand is a redelivered intent, calling stopForeground now."); - stopForeground(true); - } else { - - if (keycode != -1) { - Log.d(TAG, "Received media button event"); - handleKeycode(keycode, true); - } else if (!flavorHelper.castDisconnect(castDisconnect) && playable != null) { - started = true; - boolean stream = intent.getBooleanExtra(EXTRA_SHOULD_STREAM, - true); - boolean startWhenPrepared = intent.getBooleanExtra(EXTRA_START_WHEN_PREPARED, false); - boolean prepareImmediately = intent.getBooleanExtra(EXTRA_PREPARE_IMMEDIATELY, false); - sendNotificationBroadcast(NOTIFICATION_TYPE_RELOAD, 0); - //If the user asks to play External Media, the casting session, if on, should end. - flavorHelper.castDisconnect(playable instanceof ExternalMedia); - if (playable instanceof FeedMedia) { - playable = DBReader.getFeedMedia(((FeedMedia) playable).getId()); - } - mediaPlayer.playMediaObject(playable, stream, startWhenPrepared, prepareImmediately); + if (keycode != -1) { + Log.d(TAG, "Received media button event"); + boolean handled = handleKeycode(keycode, true); + if (!handled) { + // Just silently ignores unsupported keycode. Whether the service will + // continue to run is solely dependent on whether it is playing some media. + return Service.START_NOT_STICKY; + } + } else if (!flavorHelper.castDisconnect(castDisconnect) && playable != null) { + boolean stream = intent.getBooleanExtra(EXTRA_SHOULD_STREAM, true); + boolean startWhenPrepared = intent.getBooleanExtra(EXTRA_START_WHEN_PREPARED, false); + boolean prepareImmediately = intent.getBooleanExtra(EXTRA_PREPARE_IMMEDIATELY, false); + sendNotificationBroadcast(NOTIFICATION_TYPE_RELOAD, 0); + //If the user asks to play External Media, the casting session, if on, should end. + flavorHelper.castDisconnect(playable instanceof ExternalMedia); + if (playable instanceof FeedMedia) { + playable = DBReader.getFeedMedia(((FeedMedia) playable).getId()); } + mediaPlayer.playMediaObject(playable, stream, startWhenPrepared, prepareImmediately); } return Service.START_NOT_STICKY; @@ -559,12 +556,23 @@ public class PlaybackService extends MediaBrowserServiceCompat { mediaPlayer.seekDelta(-UserPreferences.getRewindSecs() * 1000); return true; case KeyEvent.KEYCODE_MEDIA_STOP: + // The logic gives UI illusion of stop by removing notification + // In the UI within AntennaPod, including widgets, it is seen as PAUSE, e.g., + // users can still user on-screen widget to resume playing. if (status == PlayerStatus.PLAYING) { + // Implementation note: Use of a state in serviceManager to tell it to + // show stop state UI (i.e., stopForeground(true)) is a bit awkward. + // + // More intuitive API would be for mediaPlayer.pause() returns a Future that + // returns after pause, including the related async notification work completes. + // However, it has its own complication, that mediaPlayer.pause() does not + // really know when all the related work completes, as they are buried into + // (asynchronous) callbacks. + serviceManager.treatNextPauseAsStopOnUI(); mediaPlayer.pause(true, true); - started = false; + } else { + serviceManager.showUIForStopState(); } - - stopForeground(true); // gets rid of persistent notification return true; default: Log.d(TAG, "Unhandled key code: " + keycode); @@ -580,7 +588,6 @@ public class PlaybackService extends MediaBrowserServiceCompat { Playable playable = Playable.PlayableUtils.createInstanceFromPreferences(getApplicationContext()); if (playable != null) { mediaPlayer.playMediaObject(playable, false, true, true); - started = true; PlaybackService.this.updateMediaSessionMetadata(playable); } } @@ -594,19 +601,10 @@ public class PlaybackService extends MediaBrowserServiceCompat { mediaPlayer.setVideoSurface(sh); } - /** - * Called when the surface holder of the mediaplayer has to be changed. - */ - private void resetVideoSurface() { - taskManager.cancelPositionSaver(); - mediaPlayer.resetVideoSurface(); - } - public void notifyVideoSurfaceAbandoned() { + Log.v(TAG, "notifyVideoSurfaceAbandoned()"); mediaPlayer.pause(true, false); mediaPlayer.resetVideoSurface(); - setupNotification(getPlayable()); - stopForeground(!UserPreferences.isPersistNotify()); } private final PlaybackServiceTaskManager.PSTMCallback taskManagerCallback = new PlaybackServiceTaskManager.PSTMCallback() { @@ -652,7 +650,12 @@ public class PlaybackService extends MediaBrowserServiceCompat { private final PlaybackServiceMediaPlayer.PSMPCallback mediaPlayerCallback = new PlaybackServiceMediaPlayer.PSMPCallback() { @Override public void statusChanged(PlaybackServiceMediaPlayer.PSMPInfo newInfo) { - currentMediaType = mediaPlayer.getCurrentMediaType(); + if (mediaPlayer != null) { + currentMediaType = mediaPlayer.getCurrentMediaType(); + } else { + currentMediaType = MediaType.UNKNOWN; + } + updateMediaSession(newInfo.playerStatus); switch (newInfo.playerStatus) { case INITIALIZED: @@ -664,27 +667,15 @@ public class PlaybackService extends MediaBrowserServiceCompat { break; case PAUSED: - if ((UserPreferences.isPersistNotify() || isCasting) && - android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { - // do not remove notification on pause based on user pref and whether android version supports expanded notifications - // Change [Play] button to [Pause] - setupNotification(newInfo); - } else if (!UserPreferences.isPersistNotify() && !isCasting) { - // remove notification on pause - stopForeground(true); - } writePlayerStatusPlaybackPreferences(); break; case STOPPED: - //setCurrentlyPlayingMedia(PlaybackPreferences.NO_MEDIA_PLAYING); - //stopSelf(); + //writePlaybackPreferencesNoMediaPlaying(); break; case PLAYING: writePlayerStatusPlaybackPreferences(); - setupNotification(newInfo); - started = true; // set sleep timer if auto-enabled if (newInfo.oldPlayerStatus != null && newInfo.oldPlayerStatus != PlayerStatus.SEEKING && SleepTimerPreferences.autoEnable() && !sleepTimerActive()) { @@ -699,9 +690,7 @@ public class PlaybackService extends MediaBrowserServiceCompat { } - Intent statusUpdate = new Intent(ACTION_PLAYER_STATUS_CHANGED); - // statusUpdate.putExtra(EXTRA_NEW_PLAYER_STATUS, newInfo.playerStatus.ordinal()); - sendBroadcast(statusUpdate); + IntentUtils.sendLocalBroadcast(getApplicationContext(), ACTION_PLAYER_STATUS_CHANGED); PlayerWidgetJobService.updateWidget(getBaseContext()); bluetoothNotifyChange(newInfo, AVRCP_ACTION_PLAYER_STATUS_CHANGED); bluetoothNotifyChange(newInfo, AVRCP_ACTION_META_CHANGED); @@ -709,7 +698,7 @@ public class PlaybackService extends MediaBrowserServiceCompat { @Override public void shouldStop() { - stopSelf(); + serviceManager.stopService(); } @Override @@ -758,7 +747,6 @@ public class PlaybackService extends MediaBrowserServiceCompat { } sendNotificationBroadcast(NOTIFICATION_TYPE_ERROR, what); writePlaybackPreferencesNoMediaPlaying(); - stopSelf(); return true; } @@ -842,9 +830,6 @@ public class PlaybackService extends MediaBrowserServiceCompat { if (stopPlaying) { taskManager.cancelPositionSaver(); writePlaybackPreferencesNoMediaPlaying(); - if (!isCasting) { - stopForeground(true); - } } if (mediaType == null) { sendNotificationBroadcast(NOTIFICATION_TYPE_PLAYBACK_END, 0); @@ -913,7 +898,7 @@ public class PlaybackService extends MediaBrowserServiceCompat { final List<FeedItem> queue = taskManager.getQueue(); if (QueueAccess.ItemListAccess(queue).contains(item.getId())) { // don't know if it actually matters to not autodownload when smart mark as played is triggered - DBWriter.removeQueueItem(PlaybackService.this, item, ended); + DBWriter.removeQueueItem(PlaybackService.this, ended, item); } } catch (InterruptedException e) { e.printStackTrace(); @@ -1042,17 +1027,11 @@ public class PlaybackService extends MediaBrowserServiceCompat { editor.commit(); } - /** - * Send ACTION_PLAYER_STATUS_CHANGED without changing the status attribute. - */ - private void postStatusUpdateIntent() { - sendBroadcast(new Intent(ACTION_PLAYER_STATUS_CHANGED)); - } - private void sendNotificationBroadcast(int type, int code) { Intent intent = new Intent(ACTION_PLAYER_NOTIFICATION); intent.putExtra(EXTRA_NOTIFICATION_TYPE, type); intent.putExtra(EXTRA_NOTIFICATION_CODE, code); + intent.setPackage(getPackageName()); sendBroadcast(intent); } @@ -1064,6 +1043,7 @@ public class PlaybackService extends MediaBrowserServiceCompat { private void updateMediaSession(final PlayerStatus playerStatus) { PlaybackStateCompat.Builder sessionState = new PlaybackStateCompat.Builder(); + @PlaybackStateCompat.State int state; if (playerStatus != null) { switch (playerStatus) { @@ -1098,7 +1078,7 @@ public class PlaybackService extends MediaBrowserServiceCompat { } else { state = PlaybackStateCompat.STATE_NONE; } - sessionState.setState(state, mediaPlayer.getPosition(), mediaPlayer.getPlaybackSpeed()); + sessionState.setState(state, getCurrentPosition(), getCurrentPlaybackSpeed()); long capabilities = PlaybackStateCompat.ACTION_PLAY_PAUSE | PlaybackStateCompat.ACTION_REWIND | PlaybackStateCompat.ACTION_FAST_FORWARD @@ -1127,7 +1107,9 @@ public class PlaybackService extends MediaBrowserServiceCompat { flavorHelper.mediaSessionSetExtraForWear(mediaSession); - mediaSession.setPlaybackState(sessionState.build()); + final PlaybackStateCompat sessionStateBuilt = sessionState.build(); + mediaSession.setPlaybackState(sessionStateBuilt); + serviceManager.onPlaybackStateChange(sessionStateBuilt); } private static boolean useSkipToPreviousForRewindInLockscreen() { @@ -1167,10 +1149,10 @@ public class PlaybackService extends MediaBrowserServiceCompat { builder.putString(MediaMetadataCompat.METADATA_KEY_ART_URI, imageLocation); try { Bitmap art = Glide.with(this) - .load(imageLocation) .asBitmap() - .diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY) - .into(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL) + .load(imageLocation) + .apply(RequestOptions.diskCacheStrategyOf(ApGlideSettings.AP_DISK_CACHE_STRATEGY)) + .submit(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL) .get(); builder.putBitmap(MediaMetadataCompat.METADATA_KEY_ART, art); } catch (Throwable tr) { @@ -1181,7 +1163,7 @@ public class PlaybackService extends MediaBrowserServiceCompat { builder.putString(MediaMetadataCompat.METADATA_KEY_DISPLAY_ICON_URI, imageLocation); } } - if (!Thread.currentThread().isInterrupted() && started) { + if (!Thread.currentThread().isInterrupted() && isStarted()) { mediaSession.setSessionActivity(PendingIntent.getActivity(this, 0, PlaybackService.getPlayerActivityIntent(this), PendingIntent.FLAG_UPDATE_CURRENT)); @@ -1204,49 +1186,55 @@ public class PlaybackService extends MediaBrowserServiceCompat { */ private Thread notificationSetupThread; - /** - * Prepares notification and starts the service in the foreground. - */ - private void setupNotification(final PlaybackServiceMediaPlayer.PSMPInfo info) { - setupNotification(info.playable); - } - - private synchronized void setupNotification(final Playable playable) { + private synchronized void setupNotification(final Playable playable, boolean treatPauseAsStop) { if (notificationSetupThread != null) { notificationSetupThread.interrupt(); } + if (playable == null) { + Log.d(TAG, "setupNotification: playable is null"); + if (!isStarted()) { + serviceManager.stopService(); + } + return; + } Runnable notificationSetupTask = new Runnable() { Bitmap icon = null; @Override public void run() { - Log.d(TAG, "Starting background work"); - if (playable != null) { - int iconSize = getResources().getDimensionPixelSize( - android.R.dimen.notification_large_icon_width); - try { - icon = Glide.with(PlaybackService.this) - .load(playable.getImageLocation()) - .asBitmap() - .diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY) - .centerCrop() - .into(iconSize, iconSize) - .get(); - } catch (Throwable tr) { - Log.e(TAG, "Error loading the media icon for the notification", tr); + Log.d(TAG, "notificationSetupTask: Starting background work"); + + if (mediaPlayer == null) { + Log.d(TAG, "notificationSetupTask: mediaPlayer is null"); + if (!isStarted()) { + serviceManager.stopService(); } + return; + } + + int iconSize = getResources().getDimensionPixelSize( + android.R.dimen.notification_large_icon_width); + try { + icon = Glide.with(PlaybackService.this) + .asBitmap() + .load(playable.getImageLocation()) + .apply(RequestOptions.diskCacheStrategyOf(ApGlideSettings.AP_DISK_CACHE_STRATEGY)) + .apply(new RequestOptions().centerCrop()) + .submit(iconSize, iconSize) + .get(); + } catch (Throwable tr) { + Log.e(TAG, "Error loading the media icon for the notification", tr); } + if (icon == null) { icon = BitmapFactory.decodeResource(getApplicationContext().getResources(), ClientConfig.playbackServiceCallbacks.getNotificationIconResource(getApplicationContext())); } - if (mediaPlayer == null) { - return; - } PlayerStatus playerStatus = mediaPlayer.getPlayerStatus(); + Log.v(TAG, "notificationSetupTask: playerStatus=" + playerStatus); - if (!Thread.currentThread().isInterrupted() && started && playable != null) { + if (!Thread.currentThread().isInterrupted() && isStarted()) { String contentText = playable.getEpisodeTitle(); String contentTitle = playable.getFeedTitle(); Notification notification; @@ -1338,15 +1326,33 @@ public class PlaybackService extends MediaBrowserServiceCompat { playerStatus == PlayerStatus.PREPARING || playerStatus == PlayerStatus.SEEKING || isCasting) { + Log.v(TAG, "notificationSetupTask: make service foreground"); startForeground(NOTIFICATION_ID, notification); + } else if (playerStatus == PlayerStatus.PAUSED) { + if (treatPauseAsStop) { + stopForeground(true); + } else if ((UserPreferences.isPersistNotify() || isCasting) && + android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { + // do not remove notification on pause based on user pref and whether android version supports expanded notifications + // Change [Play] button to [Pause] + leaveNotificationAsBackground(notification); + } else if (!UserPreferences.isPersistNotify() && !isCasting) { + // remove notification on pause + stopForeground(true); + } } else { - stopForeground(false); - NotificationManager mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); - mNotificationManager.notify(NOTIFICATION_ID, notification); + leaveNotificationAsBackground(notification); } Log.d(TAG, "Notification set up"); } } + + private void leaveNotificationAsBackground(@NonNull Notification notification) { + stopForeground(false); + NotificationManager mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); + mNotificationManager.notify(NOTIFICATION_ID, notification); + } + }; notificationSetupThread = new Thread(notificationSetupTask); notificationSetupThread.start(); @@ -1541,7 +1547,7 @@ public class PlaybackService extends MediaBrowserServiceCompat { @Override public void onReceive(Context context, Intent intent) { if (TextUtils.equals(intent.getAction(), ACTION_SHUTDOWN_PLAYBACK_SERVICE)) { - stopSelf(); + serviceManager.stopService(); } } @@ -1618,7 +1624,11 @@ public class PlaybackService extends MediaBrowserServiceCompat { } public void setSpeed(float speed) { - mediaPlayer.setSpeed(speed); + mediaPlayer.setPlaybackParams(speed, UserPreferences.isSkipSilence()); + } + + public void skipSilence(boolean skipSilence) { + mediaPlayer.setPlaybackParams(getCurrentPlaybackSpeed(), skipSilence); } public void setVolume(float leftVolume, float rightVolume) { @@ -1626,6 +1636,9 @@ public class PlaybackService extends MediaBrowserServiceCompat { } public float getCurrentPlaybackSpeed() { + if(mediaPlayer == null) { + return 1.0f; + } return mediaPlayer.getPlaybackSpeed(); } @@ -1667,6 +1680,9 @@ public class PlaybackService extends MediaBrowserServiceCompat { * an invalid state. */ public int getDuration() { + if (mediaPlayer == null) { + return INVALID_TIME; + } return mediaPlayer.getDuration(); } @@ -1675,6 +1691,9 @@ public class PlaybackService extends MediaBrowserServiceCompat { * is in an invalid state. */ public int getCurrentPosition() { + if (mediaPlayer == null) { + return INVALID_TIME; + } return mediaPlayer.getPosition(); } @@ -1783,7 +1802,7 @@ public class PlaybackService extends MediaBrowserServiceCompat { public boolean onMediaButtonEvent(final Intent mediaButton) { Log.d(TAG, "onMediaButtonEvent(" + mediaButton + ")"); if (mediaButton != null) { - KeyEvent keyEvent = (KeyEvent) mediaButton.getParcelableExtra(Intent.EXTRA_KEY_EVENT); + KeyEvent keyEvent = mediaButton.getParcelableExtra(Intent.EXTRA_KEY_EVENT); if (keyEvent != null && keyEvent.getAction() == KeyEvent.ACTION_DOWN && keyEvent.getRepeatCount() == 0) { @@ -1826,8 +1845,6 @@ public class PlaybackService extends MediaBrowserServiceCompat { void saveCurrentPosition(boolean fromMediaPlayer, Playable playable, int position); - void setupNotification(boolean connected, PlaybackServiceMediaPlayer.PSMPInfo info); - MediaSessionCompat getMediaSession(); Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter); @@ -1867,24 +1884,6 @@ public class PlaybackService extends MediaBrowserServiceCompat { } @Override - public void setupNotification(boolean connected, PlaybackServiceMediaPlayer.PSMPInfo info) { - if (connected) { - PlaybackService.this.setupNotification(info); - } else { - PlayerStatus status = info.playerStatus; - if ((status == PlayerStatus.PLAYING || - status == PlayerStatus.SEEKING || - status == PlayerStatus.PREPARING || - UserPreferences.isPersistNotify()) && - android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { - PlaybackService.this.setupNotification(info); - } else if (!UserPreferences.isPersistNotify()) { - PlaybackService.this.stopForeground(true); - } - } - } - - @Override public MediaSessionCompat getMediaSession() { return PlaybackService.this.mediaSession; } @@ -1899,4 +1898,116 @@ public class PlaybackService extends MediaBrowserServiceCompat { PlaybackService.this.unregisterReceiver(receiver); } }; + + private boolean isStarted() { + return serviceManager.serviceInStartedState; + } + + /** + * The helper that manages PlaybackService's foreground service life cycle and the associated + * notification control. + * + * The logic is adapted from a sample app from The Android Open Source Project. + * See https://github.com/googlesamples/android-MediaBrowserService/blob/6cf01be9ef82ca2dd653f03e2a4af0b075cc0021/Application/src/main/java/com/example/android/mediasession/service/MusicService.java#L211 + * + */ + private class ServiceManager { + private boolean serviceInStartedState; + private boolean toTreatNextPauseAsStopOnUI = false; + + /** + * + * Entry point method for callers. Upon PlaybackState changes, + * the manager start/stop the PlaybackService as well as relevant notification + */ + void onPlaybackStateChange(PlaybackStateCompat state) { + // Report the state to the MediaSession. + + Log.v(TAG, "onPlaybackStateChange(" + (state != null ? state.getState() : "null") + ")"); + try { + // Manage the started state of this service. + switch (state.getState()) { + case PlaybackStateCompat.STATE_CONNECTING: + // move the service to started, aka, making it foreground + // upon STATE_CONNECTING, i.e., in preparing to play a media. + // This is done so that in case the preparation takes a long time, e.g., + // streaming over a slow network, + // the service won't be killed by the system prematurely. + moveServiceToStartedState(state); + break; + case PlaybackStateCompat.STATE_PLAYING: + moveServiceToStartedState(state); + break; + case PlaybackStateCompat.STATE_PAUSED: + updateNotificationForPause(state); + break; + case PlaybackStateCompat.STATE_STOPPED: + moveServiceOutOfStartedState(state); + break; + case PlaybackStateCompat.STATE_ERROR: + moveServiceOutOfStartedState(state); + break; + } + } finally { + if (toTreatNextPauseAsStopOnUI) { + Log.v(TAG, "onPlaybackStateChange() - toTreatNextPauseAsStopOnUI enabled. The actual state (should be PAUSED, aka 2): " + state.getState()); + toTreatNextPauseAsStopOnUI = false; + } + } + } + + /** + * Tell service manager that on the next state change, if the state is STATE_PAUSED, + * give UI treatment as if it is stopped. + * + * @see #handleKeycode(int, boolean) the use case + */ + public void treatNextPauseAsStopOnUI() { + this.toTreatNextPauseAsStopOnUI = true; + } + + public void showUIForStopState() { + Log.v(TAG, "serviceManager.showUIForStopState()"); + stopForeground(true); // gets rid of persistent notification, to give the UI illusion of STOP + } + + public void stopService() { + stopForeground(true); + stopSelf(); + serviceInStartedState = false; + } + + private void moveServiceToStartedState(PlaybackStateCompat state) { + if (!serviceInStartedState) { + ContextCompat.startForegroundService( + PlaybackService.this, + new Intent(PlaybackService.this, PlaybackService.class)); + serviceInStartedState = true; + } + + doSetupNotification(); + } + + private void updateNotificationForPause(PlaybackStateCompat state) { + doSetupNotification(); + } + + private void moveServiceOutOfStartedState(PlaybackStateCompat state) { + stopService(); + } + + private void doSetupNotification() { + if (mediaPlayer != null && mediaPlayer.getPlayable() != null) { + // it updates notification and set foreground status + // based on player status (similar to PlaybackState) + setupNotification(mediaPlayer.getPlayable(), toTreatNextPauseAsStopOnUI); + } else { + // should not happen unless there are bugs. + Log.e(TAG, "doSetupNotification() - unexpectedly there is no playable. No notification setup done. mediaPlayer." + mediaPlayer); + } + } + } + + private final ServiceManager serviceManager = new ServiceManager(); + } diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceMediaPlayer.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceMediaPlayer.java index a2481b801..b8198fa63 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceMediaPlayer.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceMediaPlayer.java @@ -148,10 +148,12 @@ public abstract class PlaybackServiceMediaPlayer { public abstract boolean canSetSpeed(); /** - * Sets the playback speed. + * Sets the playback parameters. + * - Speed + * - SkipSilence (ExoPlayer only) * This method is executed on an internal executor service. */ - public abstract void setSpeed(float speed); + public abstract void setPlaybackParams(final float speed, final boolean skipSilence); /** * Returns the current playback speed. If the playback speed could not be retrieved, 1 is returned. diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlayerStatus.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlayerStatus.java index 8a222d7ec..4f2ae34f8 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlayerStatus.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlayerStatus.java @@ -12,7 +12,7 @@ public enum PlayerStatus { INITIALIZING(9), // playback service is loading the Playable's metadata INITIALIZED(10); // playback service was started, data source of media player was set. - private int statusValue; + private final int statusValue; private static final PlayerStatus[] fromOrdinalLookup; static { diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/APCleanupAlgorithm.java b/core/src/main/java/de/danoeh/antennapod/core/storage/APCleanupAlgorithm.java index e94874453..c63ac4416 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/APCleanupAlgorithm.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/APCleanupAlgorithm.java @@ -2,6 +2,7 @@ package de.danoeh.antennapod.core.storage; import android.content.Context; import android.support.annotation.NonNull; +import android.support.annotation.VisibleForTesting; import android.util.Log; import java.util.ArrayList; @@ -20,11 +21,12 @@ import de.danoeh.antennapod.core.feed.FeedMedia; public class APCleanupAlgorithm extends EpisodeCleanupAlgorithm { private static final String TAG = "APCleanupAlgorithm"; - /** the number of days after playback to wait before an item is eligible to be cleaned up */ - private final int numberOfDaysAfterPlayback; + /** the number of days after playback to wait before an item is eligible to be cleaned up. + Fractional for number of hours, e.g., 0.5 = 12 hours, 0.0416 = 1 hour. */ + private final int numberOfHoursAfterPlayback; - public APCleanupAlgorithm(int numberOfDaysAfterPlayback) { - this.numberOfDaysAfterPlayback = numberOfDaysAfterPlayback; + public APCleanupAlgorithm(int numberOfHoursAfterPlayback) { + this.numberOfHoursAfterPlayback = numberOfHoursAfterPlayback; } /** @@ -77,13 +79,17 @@ public class APCleanupAlgorithm extends EpisodeCleanupAlgorithm { return counter; } + @VisibleForTesting + Date calcMostRecentDateForDeletion(@NonNull Date currentDate) { + return minusHours(currentDate, numberOfHoursAfterPlayback); + } + @NonNull private List<FeedItem> getCandidates() { List<FeedItem> candidates = new ArrayList<>(); List<FeedItem> downloadedItems = DBReader.getDownloadedItems(); - Calendar cal = Calendar.getInstance(); - cal.add(Calendar.DAY_OF_MONTH, -1 * numberOfDaysAfterPlayback); - Date mostRecentDateForDeletion = cal.getTime(); + + Date mostRecentDateForDeletion = calcMostRecentDateForDeletion(new Date()); for (FeedItem item : downloadedItems) { if (item.hasMedia() && item.getMedia().isDownloaded() @@ -108,5 +114,16 @@ public class APCleanupAlgorithm extends EpisodeCleanupAlgorithm { return getNumEpisodesToCleanup(0); } - public int getNumberOfDaysAfterPlayback() { return numberOfDaysAfterPlayback; } + @VisibleForTesting + public int getNumberOfHoursAfterPlayback() { return numberOfHoursAfterPlayback; } + + private static Date minusHours(Date baseDate, int numberOfHours) { + Calendar cal = Calendar.getInstance(); + cal.setTime(baseDate); + + cal.add(Calendar.HOUR_OF_DAY, -1 * numberOfHours); + + return cal.getTime(); + } + } diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java index fa87cc216..1b579f99a 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java @@ -1,7 +1,10 @@ package de.danoeh.antennapod.core.storage; import android.database.Cursor; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import android.support.v4.util.ArrayMap; +import android.text.TextUtils; import android.util.Log; import java.util.ArrayList; @@ -13,7 +16,6 @@ import java.util.Map; import de.danoeh.antennapod.core.feed.Chapter; import de.danoeh.antennapod.core.feed.Feed; -import de.danoeh.antennapod.core.feed.FeedImage; import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.feed.FeedMedia; import de.danoeh.antennapod.core.feed.FeedPreferences; @@ -57,6 +59,7 @@ public final class DBReader { * of the returned list does NOT have its list of FeedItems yet. The FeedItem-list * can be loaded separately with {@link #getFeedItemList(Feed)}. */ + @NonNull public static List<Feed> getFeedList() { Log.d(TAG, "Extracting Feedlist"); @@ -69,13 +72,14 @@ public final class DBReader { } } + @NonNull private static List<Feed> getFeedList(PodDBAdapter adapter) { Cursor cursor = null; try { cursor = adapter.getAllFeedsCursor(); List<Feed> feeds = new ArrayList<>(cursor.getCount()); while (cursor.moveToNext()) { - Feed feed = extractFeedFromCursorRow(adapter, cursor); + Feed feed = extractFeedFromCursorRow(cursor); feeds.add(feed); } return feeds; @@ -198,28 +202,19 @@ public final class DBReader { } } + @NonNull private static List<FeedItem> extractItemlistFromCursor(PodDBAdapter adapter, Cursor cursor) { List<FeedItem> result = new ArrayList<>(cursor.getCount()); - LongList imageIds = new LongList(cursor.getCount()); LongList itemIds = new LongList(cursor.getCount()); if (cursor.moveToFirst()) { do { - int indexImage = cursor.getColumnIndex(PodDBAdapter.KEY_IMAGE); - long imageId = cursor.getLong(indexImage); - imageIds.add(imageId); - FeedItem item = FeedItem.fromCursor(cursor); result.add(item); itemIds.add(item.getId()); } while (cursor.moveToNext()); - Map<Long, FeedImage> images = getFeedImages(adapter, imageIds.toArray()); Map<Long, FeedMedia> medias = getFeedMedia(adapter, itemIds); - for (int i = 0; i < result.size(); i++) { - FeedItem item = result.get(i); - long imageId = imageIds.get(i); - FeedImage image = images.get(imageId); - item.setImage(image); + for (FeedItem item : result) { FeedMedia media = medias.get(item.getId()); item.setMedia(media); if (media != null) { @@ -253,28 +248,14 @@ public final class DBReader { return result; } - private static Feed extractFeedFromCursorRow(PodDBAdapter adapter, Cursor cursor) { - final FeedImage image; - int indexImage = cursor.getColumnIndex(PodDBAdapter.KEY_IMAGE); - long imageId = cursor.getLong(indexImage); - if (imageId != 0) { - image = getFeedImage(adapter, imageId); - } else { - image = null; - } - + private static Feed extractFeedFromCursorRow(Cursor cursor) { Feed feed = Feed.fromCursor(cursor); - if (image != null) { - feed.setImage(image); - image.setOwner(feed); - } - FeedPreferences preferences = FeedPreferences.fromCursor(cursor); feed.setPreferences(preferences); - return feed; } + @NonNull static List<FeedItem> getQueue(PodDBAdapter adapter) { Log.d(TAG, "getQueue()"); Cursor cursor = null; @@ -331,6 +312,7 @@ public final class DBReader { * @return A list of FeedItems sorted by the same order as the queue. The caller can wrap the returned * list in a {@link de.danoeh.antennapod.core.util.QueueAccess} object for easier access to the queue's properties. */ + @NonNull public static List<FeedItem> getQueue() { Log.d(TAG, "getQueue() called"); @@ -348,6 +330,7 @@ public final class DBReader { * * @return A list of FeedItems whose episdoe has been downloaded. */ + @NonNull public static List<FeedItem> getDownloadedItems() { Log.d(TAG, "getDownloadedItems() called"); @@ -438,6 +421,7 @@ public final class DBReader { * * @param limit The maximum number of episodes that should be loaded. */ + @NonNull public static List<FeedItem> getRecentlyPublishedEpisodes(int limit) { Log.d(TAG, "getRecentlyPublishedEpisodes() called with: " + "limit = [" + limit + "]"); @@ -464,6 +448,7 @@ public final class DBReader { * @return The playback history. The FeedItems are sorted by their media's playbackCompletionDate in descending order. * The size of the returned list is limited by {@link #PLAYBACK_HISTORY_SIZE}. */ + @NonNull public static List<FeedItem> getPlaybackHistory() { Log.d(TAG, "getPlaybackHistory() called"); @@ -599,13 +584,14 @@ public final class DBReader { } } + @Nullable static Feed getFeed(final long feedId, PodDBAdapter adapter) { Feed feed = null; Cursor cursor = null; try { cursor = adapter.getFeedCursor(feedId); if (cursor.moveToNext()) { - feed = extractFeedFromCursorRow(adapter, cursor); + feed = extractFeedFromCursorRow(cursor); feed.setItems(getFeedItemList(feed)); } else { Log.e(TAG, "getFeed could not find feed with id " + feedId); @@ -618,6 +604,7 @@ public final class DBReader { } } + @Nullable private static FeedItem getFeedItem(final long itemId, PodDBAdapter adapter) { Log.d(TAG, "Loading feeditem with id " + itemId); @@ -651,6 +638,7 @@ public final class DBReader { * @return The FeedItem or null if the FeedItem could not be found. All FeedComponent-attributes * as well as chapter marks of the FeedItem will also be loaded from the database. */ + @Nullable public static FeedItem getFeedItem(final long itemId) { Log.d(TAG, "getFeedItem() called with: " + "itemId = [" + itemId + "]"); @@ -663,6 +651,7 @@ public final class DBReader { } } + @Nullable private static FeedItem getFeedItem(final String podcastUrl, final String episodeUrl, PodDBAdapter adapter) { Log.d(TAG, "Loading feeditem with podcast url " + podcastUrl + " and episode url " + episodeUrl); Cursor cursor = null; @@ -714,7 +703,7 @@ public final class DBReader { if (cursor.moveToFirst()) { String username = cursor.getString(0); String password = cursor.getString(1); - if (username != null && password != null) { + if (!TextUtils.isEmpty(username) && password != null) { credentials = username + ":" + password; } else { credentials = ""; @@ -839,62 +828,6 @@ public final class DBReader { } /** - * Searches the DB for a FeedImage of the given id. - * - * @param imageId The id of the object - * @return The found object - */ - public static FeedImage getFeedImage(final long imageId) { - Log.d(TAG, "getFeedImage() called with: " + "imageId = [" + imageId + "]"); - PodDBAdapter adapter = PodDBAdapter.getInstance(); - adapter.open(); - try { - return getFeedImage(adapter, imageId); - } finally { - adapter.close(); - } - } - - /** - * Searches the DB for a FeedImage of the given id. - * - * @param imageId The id of the object - * @return The found object - */ - private static FeedImage getFeedImage(PodDBAdapter adapter, final long imageId) { - return getFeedImages(adapter, imageId).get(imageId); - } - - /** - * Searches the DB for a FeedImage of the given id. - * - * @param imageIds The ids of the images - * @return Map that associates the id of an image with the image itself - */ - private static Map<Long, FeedImage> getFeedImages(PodDBAdapter adapter, final long... imageIds) { - String[] ids = new String[imageIds.length]; - for (int i = 0, len = imageIds.length; i < len; i++) { - ids[i] = String.valueOf(imageIds[i]); - } - Cursor cursor = adapter.getImageCursor(ids); - int imageCount = cursor.getCount(); - if (imageCount == 0) { - cursor.close(); - return Collections.emptyMap(); - } - Map<Long, FeedImage> result = new ArrayMap<>(imageCount); - try { - while (cursor.moveToNext()) { - FeedImage image = FeedImage.fromCursor(cursor); - result.put(image.getId(), image); - } - } finally { - cursor.close(); - } - return result; - } - - /** * Searches the DB for a FeedMedia of the given id. * * @param mediaId The id of the object @@ -938,6 +871,7 @@ public final class DBReader { * countAll calculation time * @return The StatisticsInfo object */ + @NonNull public static StatisticsData getStatistics(boolean sortByCountAll) { PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); @@ -961,10 +895,6 @@ public final class DBReader { continue; } - // played duration used to be reset when the item is added to the playback history - if (media.getPlaybackCompletionDate() != null) { - feedPlayedTime += media.getDuration() / 1000; - } feedPlayedTime += media.getPlayedDuration() / 1000; if (item.isPlayed()) { @@ -1088,7 +1018,7 @@ public final class DBReader { Cursor feedCursor = adapter.getFeedsInFlattrQueueCursor(); if (feedCursor.moveToFirst()) { do { - result.add(extractFeedFromCursorRow(adapter, feedCursor)); + result.add(extractFeedFromCursorRow(feedCursor)); } while (feedCursor.moveToNext()); } feedCursor.close(); @@ -1108,6 +1038,7 @@ public final class DBReader { * the list of subscriptions, the number of items in the queue and the number of unread * items. */ + @NonNull public static NavDrawerData getNavDrawerData() { Log.d(TAG, "getNavDrawerData() called with: " + ""); PodDBAdapter adapter = PodDBAdapter.getInstance(); diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java index da500fd3e..dab8e19b5 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java @@ -1,11 +1,9 @@ package de.danoeh.antennapod.core.storage; import android.content.Context; -import android.content.Intent; import android.content.SharedPreferences; import android.database.Cursor; import android.support.annotation.Nullable; -import android.support.v4.content.ContextCompat; import android.util.Log; import java.util.ArrayList; @@ -19,7 +17,6 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.concurrent.FutureTask; -import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import de.danoeh.antennapod.core.ClientConfig; @@ -30,12 +27,11 @@ import de.danoeh.antennapod.core.feed.Feed; import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.feed.FeedMedia; import de.danoeh.antennapod.core.feed.FeedPreferences; -import de.danoeh.antennapod.core.preferences.UserPreferences; import de.danoeh.antennapod.core.service.GpodnetSyncService; import de.danoeh.antennapod.core.service.download.DownloadStatus; import de.danoeh.antennapod.core.service.playback.PlaybackService; -import de.danoeh.antennapod.core.util.Converter; import de.danoeh.antennapod.core.util.DownloadError; +import de.danoeh.antennapod.core.util.IntentUtils; import de.danoeh.antennapod.core.util.LongList; import de.danoeh.antennapod.core.util.comparator.FeedItemPubdateComparator; import de.danoeh.antennapod.core.util.exception.MediaFileNotFoundException; @@ -142,8 +138,7 @@ public final class DBTasks { } catch (MediaFileNotFoundException e) { e.printStackTrace(); if (media.isPlaying()) { - context.sendBroadcast(new Intent( - PlaybackService.ACTION_SHUTDOWN_PLAYBACK_SERVICE)); + IntentUtils.sendLocalBroadcast(context, PlaybackService.ACTION_SHUTDOWN_PLAYBACK_SERVICE); } notifyMissingFeedMediaFile(context, media); } @@ -198,8 +193,10 @@ public final class DBTasks { if (ClientConfig.gpodnetCallbacks.gpodnetEnabled()) { GpodnetSyncService.sendSyncIntent(context); } - Log.d(TAG, "refreshAllFeeds autodownload"); - autodownloadUndownloadedItems(context); + // Note: automatic download of episodes will be done but not here. + // Instead it is done after all feeds have been refreshed (asynchronously), + // in DownloadService.onDestroy() + // See Issue #2577 for the details of the rationale if (callback != null) { callback.run(); @@ -207,6 +204,11 @@ public final class DBTasks { }).start(); } + public static long getLastRefreshAllFeedsTimeMillis(final Context context) { + SharedPreferences prefs = context.getSharedPreferences(DBTasks.PREF_NAME, MODE_PRIVATE); + return prefs.getLong(DBTasks.PREF_LAST_REFRESH, 0); + } + /** * @param context * @param feedList the list of feeds to refresh @@ -237,27 +239,6 @@ public final class DBTasks { } /** - * Downloads all pages of the given feed. - * - * @param context Used for requesting the download. - * @param feed The Feed object. - */ - public static void refreshCompleteFeed(final Context context, final Feed feed) { - try { - refreshFeed(context, feed, true, false); - } catch (DownloadRequestException e) { - e.printStackTrace(); - DBWriter.addDownloadStatus( - new DownloadStatus(feed, feed - .getHumanReadableIdentifier(), - DownloadError.ERROR_REQUEST_ERROR, false, e - .getMessage() - ) - ); - } - } - - /** * Downloads all pages of the given feed even if feed has not been modified since last refresh * * @param context Used for requesting the download. @@ -338,31 +319,6 @@ public final class DBTasks { DownloadRequester.getInstance().downloadFeed(context, f, loadAllPages, force); } - /* - * Checks if the app should refresh all feeds, i.e. if the last auto refresh failed. - * - * The feeds are only refreshed if an update interval or time of day is set and the last - * (successful) refresh was before the last interval or more than a day ago, respectively. - */ - public static void checkShouldRefreshFeeds(Context context) { - long interval = 0; - if(UserPreferences.getUpdateInterval() > 0) { - interval = UserPreferences.getUpdateInterval(); - } else if(UserPreferences.getUpdateTimeOfDay().length > 0){ - interval = TimeUnit.DAYS.toMillis(1); - } - if(interval == 0) { // auto refresh is disabled - return; - } - SharedPreferences prefs = context.getSharedPreferences(PREF_NAME, MODE_PRIVATE); - long lastRefresh = prefs.getLong(PREF_LAST_REFRESH, 0); - Log.d(TAG, "last refresh: " + Converter.getDurationStringLocalized(context, - System.currentTimeMillis() - lastRefresh) + " ago"); - if(lastRefresh <= System.currentTimeMillis() - interval) { - DBTasks.refreshAllFeeds(context, null); - } - } - /** * Notifies the database about a missing FeedMedia file. This method will correct the FeedMedia object's values in the * DB and send a FeedUpdateBroadcast. @@ -378,27 +334,6 @@ public final class DBTasks { } /** - * Request the download of all objects in the queue. from a separate Thread. - * - * @param context Used for requesting the download an accessing the database. - */ - public static void downloadAllItemsInQueue(final Context context) { - new Thread() { - public void run() { - List<FeedItem> queue = DBReader.getQueue(); - if (!queue.isEmpty()) { - try { - downloadFeedItems(context, - queue.toArray(new FeedItem[queue.size()])); - } catch (DownloadRequestException e) { - e.printStackTrace(); - } - } - } - }.start(); - } - - /** * Requests the download of a list of FeedItem objects. * * @param context Used for requesting the download and accessing the DB. @@ -817,10 +752,8 @@ public final class DBTasks { */ abstract static class QueryTask<T> implements Callable<T> { private T result; - private final Context context; public QueryTask(Context context) { - this.context = context; } @Override diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBUpgrader.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBUpgrader.java new file mode 100644 index 000000000..0beb765e7 --- /dev/null +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBUpgrader.java @@ -0,0 +1,293 @@ +package de.danoeh.antennapod.core.storage; + +import android.content.ContentValues; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.media.MediaMetadataRetriever; +import android.util.Log; + +import de.danoeh.antennapod.core.feed.FeedItem; + +class DBUpgrader { + /** + * Upgrades the given database to a new schema version + */ + static void upgrade(final SQLiteDatabase db, final int oldVersion, final int newVersion) { + if (oldVersion <= 1) { + db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS + " ADD COLUMN " + + PodDBAdapter.KEY_TYPE + " TEXT"); + } + if (oldVersion <= 2) { + db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_SIMPLECHAPTERS + + " ADD COLUMN " + PodDBAdapter.KEY_LINK + " TEXT"); + } + if (oldVersion <= 3) { + db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_ITEMS + + " ADD COLUMN " + PodDBAdapter.KEY_ITEM_IDENTIFIER + " TEXT"); + } + if (oldVersion <= 4) { + db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS + " ADD COLUMN " + + PodDBAdapter.KEY_FEED_IDENTIFIER + " TEXT"); + } + if (oldVersion <= 5) { + db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_DOWNLOAD_LOG + + " ADD COLUMN " + PodDBAdapter.KEY_REASON_DETAILED + " TEXT"); + db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_DOWNLOAD_LOG + + " ADD COLUMN " + PodDBAdapter.KEY_DOWNLOADSTATUS_TITLE + " TEXT"); + } + if (oldVersion <= 6) { + db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_SIMPLECHAPTERS + + " ADD COLUMN " + PodDBAdapter.KEY_CHAPTER_TYPE + " INTEGER"); + } + if (oldVersion <= 7) { + db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_MEDIA + + " ADD COLUMN " + PodDBAdapter.KEY_PLAYBACK_COMPLETION_DATE + + " INTEGER"); + } + if (oldVersion <= 8) { + final int KEY_ID_POSITION = 0; + final int KEY_MEDIA_POSITION = 1; + + // Add feeditem column to feedmedia table + db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_MEDIA + + " ADD COLUMN " + PodDBAdapter.KEY_FEEDITEM + + " INTEGER"); + Cursor feeditemCursor = db.query(PodDBAdapter.TABLE_NAME_FEED_ITEMS, + new String[]{PodDBAdapter.KEY_ID, PodDBAdapter.KEY_MEDIA}, "? > 0", + new String[]{PodDBAdapter.KEY_MEDIA}, null, null, null); + if (feeditemCursor.moveToFirst()) { + db.beginTransaction(); + ContentValues contentValues = new ContentValues(); + do { + long mediaId = feeditemCursor.getLong(KEY_MEDIA_POSITION); + contentValues.put(PodDBAdapter.KEY_FEEDITEM, feeditemCursor.getLong(KEY_ID_POSITION)); + db.update(PodDBAdapter.TABLE_NAME_FEED_MEDIA, contentValues, PodDBAdapter.KEY_ID + "=?", new String[]{String.valueOf(mediaId)}); + contentValues.clear(); + } while (feeditemCursor.moveToNext()); + db.setTransactionSuccessful(); + db.endTransaction(); + } + feeditemCursor.close(); + } + if (oldVersion <= 9) { + db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS + + " ADD COLUMN " + PodDBAdapter.KEY_AUTO_DOWNLOAD + + " INTEGER DEFAULT 1"); + } + if (oldVersion <= 10) { + db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS + + " ADD COLUMN " + PodDBAdapter.KEY_FLATTR_STATUS + + " INTEGER"); + db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_ITEMS + + " ADD COLUMN " + PodDBAdapter.KEY_FLATTR_STATUS + + " INTEGER"); + db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_MEDIA + + " ADD COLUMN " + PodDBAdapter.KEY_PLAYED_DURATION + + " INTEGER"); + } + if (oldVersion <= 11) { + db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS + + " ADD COLUMN " + PodDBAdapter.KEY_USERNAME + + " TEXT"); + db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS + + " ADD COLUMN " + PodDBAdapter.KEY_PASSWORD + + " TEXT"); + db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_ITEMS + + " ADD COLUMN " + PodDBAdapter.KEY_IMAGE + + " INTEGER"); + } + if (oldVersion <= 12) { + db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS + + " ADD COLUMN " + PodDBAdapter.KEY_IS_PAGED + " INTEGER DEFAULT 0"); + db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS + + " ADD COLUMN " + PodDBAdapter.KEY_NEXT_PAGE_LINK + " TEXT"); + } + if (oldVersion <= 13) { + // remove duplicate rows in "Chapters" table that were created because of a bug. + db.execSQL(String.format("DELETE FROM %s WHERE %s NOT IN " + + "(SELECT MIN(%s) as %s FROM %s GROUP BY %s,%s,%s,%s,%s)", + PodDBAdapter.TABLE_NAME_SIMPLECHAPTERS, + PodDBAdapter.KEY_ID, + PodDBAdapter.KEY_ID, + PodDBAdapter.KEY_ID, + PodDBAdapter.TABLE_NAME_SIMPLECHAPTERS, + PodDBAdapter.KEY_TITLE, + PodDBAdapter.KEY_START, + PodDBAdapter.KEY_FEEDITEM, + PodDBAdapter.KEY_LINK, + PodDBAdapter.KEY_CHAPTER_TYPE)); + } + if (oldVersion <= 14) { + db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_ITEMS + + " ADD COLUMN " + PodDBAdapter.KEY_AUTO_DOWNLOAD + " INTEGER"); + db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEED_ITEMS + + " SET " + PodDBAdapter.KEY_AUTO_DOWNLOAD + " = " + + "(SELECT " + PodDBAdapter.KEY_AUTO_DOWNLOAD + + " FROM " + PodDBAdapter.TABLE_NAME_FEEDS + + " WHERE " + PodDBAdapter.TABLE_NAME_FEEDS + "." + PodDBAdapter.KEY_ID + + " = " + PodDBAdapter.TABLE_NAME_FEED_ITEMS + "." + PodDBAdapter.KEY_FEED + ")"); + + db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS + + " ADD COLUMN " + PodDBAdapter.KEY_HIDE + " TEXT"); + + db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS + + " ADD COLUMN " + PodDBAdapter.KEY_LAST_UPDATE_FAILED + " INTEGER DEFAULT 0"); + + // create indexes + db.execSQL(PodDBAdapter.CREATE_INDEX_FEEDITEMS_FEED); + db.execSQL(PodDBAdapter.CREATE_INDEX_FEEDMEDIA_FEEDITEM); + db.execSQL(PodDBAdapter.CREATE_INDEX_QUEUE_FEEDITEM); + db.execSQL(PodDBAdapter.CREATE_INDEX_SIMPLECHAPTERS_FEEDITEM); + } + if (oldVersion <= 15) { + db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_MEDIA + + " ADD COLUMN " + PodDBAdapter.KEY_HAS_EMBEDDED_PICTURE + " INTEGER DEFAULT -1"); + db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEED_MEDIA + + " SET " + PodDBAdapter.KEY_HAS_EMBEDDED_PICTURE + "=0" + + " WHERE " + PodDBAdapter.KEY_DOWNLOADED + "=0"); + Cursor c = db.rawQuery("SELECT " + PodDBAdapter.KEY_FILE_URL + + " FROM " + PodDBAdapter.TABLE_NAME_FEED_MEDIA + + " WHERE " + PodDBAdapter.KEY_DOWNLOADED + "=1 " + + " AND " + PodDBAdapter.KEY_HAS_EMBEDDED_PICTURE + "=-1", null); + if (c.moveToFirst()) { + MediaMetadataRetriever mmr = new MediaMetadataRetriever(); + do { + String fileUrl = c.getString(0); + try { + mmr.setDataSource(fileUrl); + byte[] image = mmr.getEmbeddedPicture(); + if (image != null) { + db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEED_MEDIA + + " SET " + PodDBAdapter.KEY_HAS_EMBEDDED_PICTURE + "=1" + + " WHERE " + PodDBAdapter.KEY_FILE_URL + "='" + fileUrl + "'"); + } else { + db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEED_MEDIA + + " SET " + PodDBAdapter.KEY_HAS_EMBEDDED_PICTURE + "=0" + + " WHERE " + PodDBAdapter.KEY_FILE_URL + "='" + fileUrl + "'"); + } + } catch (Exception e) { + e.printStackTrace(); + } + } while (c.moveToNext()); + } + c.close(); + } + if (oldVersion <= 16) { + String selectNew = "SELECT " + PodDBAdapter.TABLE_NAME_FEED_ITEMS + "." + PodDBAdapter.KEY_ID + + " FROM " + PodDBAdapter.TABLE_NAME_FEED_ITEMS + + " INNER JOIN " + PodDBAdapter.TABLE_NAME_FEED_MEDIA + " ON " + + PodDBAdapter.TABLE_NAME_FEED_ITEMS + "." + PodDBAdapter.KEY_ID + "=" + + PodDBAdapter.TABLE_NAME_FEED_MEDIA + "." + PodDBAdapter.KEY_FEEDITEM + + " LEFT OUTER JOIN " + PodDBAdapter.TABLE_NAME_QUEUE + " ON " + + PodDBAdapter.TABLE_NAME_FEED_ITEMS + "." + PodDBAdapter.KEY_ID + "=" + + PodDBAdapter.TABLE_NAME_QUEUE + "." + PodDBAdapter.KEY_FEEDITEM + + " WHERE " + + PodDBAdapter.TABLE_NAME_FEED_ITEMS + "." + PodDBAdapter.KEY_READ + " = 0 AND " // unplayed + + PodDBAdapter.TABLE_NAME_FEED_MEDIA + "." + PodDBAdapter.KEY_DOWNLOADED + " = 0 AND " // undownloaded + + PodDBAdapter.TABLE_NAME_FEED_MEDIA + "." + PodDBAdapter.KEY_POSITION + " = 0 AND " // not partially played + + PodDBAdapter.TABLE_NAME_QUEUE + "." + PodDBAdapter.KEY_ID + " IS NULL"; // not in queue + String sql = "UPDATE " + PodDBAdapter.TABLE_NAME_FEED_ITEMS + + " SET " + PodDBAdapter.KEY_READ + "=" + FeedItem.NEW + + " WHERE " + PodDBAdapter.KEY_ID + " IN (" + selectNew + ")"; + Log.d("Migration", "SQL: " + sql); + db.execSQL(sql); + } + if (oldVersion <= 17) { + db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS + + " ADD COLUMN " + PodDBAdapter.KEY_AUTO_DELETE_ACTION + " INTEGER DEFAULT 0"); + } + if (oldVersion < 1030005) { + db.execSQL("UPDATE FeedItems SET auto_download=0 WHERE " + + "(read=1 OR id IN (SELECT feeditem FROM FeedMedia WHERE position>0 OR downloaded=1)) " + + "AND id NOT IN (SELECT feeditem FROM Queue)"); + } + if (oldVersion < 1040001) { + db.execSQL(PodDBAdapter.CREATE_TABLE_FAVORITES); + } + if (oldVersion < 1040002) { + db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_MEDIA + + " ADD COLUMN " + PodDBAdapter.KEY_LAST_PLAYED_TIME + " INTEGER DEFAULT 0"); + } + if (oldVersion < 1040013) { + db.execSQL(PodDBAdapter.CREATE_INDEX_FEEDITEMS_PUBDATE); + db.execSQL(PodDBAdapter.CREATE_INDEX_FEEDITEMS_READ); + } + if (oldVersion < 1050003) { + // Migrates feed list filter data + + db.beginTransaction(); + + // Change to intermediate values to avoid overwriting in the following find/replace + db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEEDS + "\n" + + "SET " + PodDBAdapter.KEY_HIDE + " = replace(" + PodDBAdapter.KEY_HIDE + ", 'unplayed', 'noplay')"); + db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEEDS + "\n" + + "SET " + PodDBAdapter.KEY_HIDE + " = replace(" + PodDBAdapter.KEY_HIDE + ", 'not_queued', 'noqueue')"); + db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEEDS + "\n" + + "SET " + PodDBAdapter.KEY_HIDE + " = replace(" + PodDBAdapter.KEY_HIDE + ", 'not_downloaded', 'nodl')"); + + // Replace played, queued, and downloaded with their opposites + db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEEDS + "\n" + + "SET " + PodDBAdapter.KEY_HIDE + " = replace(" + PodDBAdapter.KEY_HIDE + ", 'played', 'unplayed')"); + db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEEDS + "\n" + + "SET " + PodDBAdapter.KEY_HIDE + " = replace(" + PodDBAdapter.KEY_HIDE + ", 'queued', 'not_queued')"); + db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEEDS + "\n" + + "SET " + PodDBAdapter.KEY_HIDE + " = replace(" + PodDBAdapter.KEY_HIDE + ", 'downloaded', 'not_downloaded')"); + + // Now replace intermediates for unplayed, not queued, etc. with their opposites + db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEEDS + "\n" + + "SET " + PodDBAdapter.KEY_HIDE + " = replace(" + PodDBAdapter.KEY_HIDE + ", 'noplay', 'played')"); + db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEEDS + "\n" + + "SET " + PodDBAdapter.KEY_HIDE + " = replace(" + PodDBAdapter.KEY_HIDE + ", 'noqueue', 'queued')"); + db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEEDS + "\n" + + "SET " + PodDBAdapter.KEY_HIDE + " = replace(" + PodDBAdapter.KEY_HIDE + ", 'nodl', 'downloaded')"); + + // Paused doesn't have an opposite, so unplayed is the next best option + db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEEDS + "\n" + + "SET " + PodDBAdapter.KEY_HIDE + " = replace(" + PodDBAdapter.KEY_HIDE + ", 'paused', 'unplayed')"); + + db.setTransactionSuccessful(); + db.endTransaction(); + + // and now get ready for autodownload filters + db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS + + " ADD COLUMN " + PodDBAdapter.KEY_INCLUDE_FILTER + " TEXT DEFAULT ''"); + + db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS + + " ADD COLUMN " + PodDBAdapter.KEY_EXCLUDE_FILTER + " TEXT DEFAULT ''"); + + // and now auto refresh + db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS + + " ADD COLUMN " + PodDBAdapter.KEY_KEEP_UPDATED + " INTEGER DEFAULT 1"); + } + if (oldVersion < 1050004) { + // prevent old timestamps to be misinterpreted as ETags + db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEEDS + + " SET " + PodDBAdapter.KEY_LASTUPDATE + "=NULL"); + } + if (oldVersion < 1060200) { + db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS + + " ADD COLUMN " + PodDBAdapter.KEY_CUSTOM_TITLE + " TEXT"); + } + if (oldVersion < 1060596) { + db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS + + " ADD COLUMN " + PodDBAdapter.KEY_IMAGE_URL + " TEXT"); + db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_ITEMS + + " ADD COLUMN " + PodDBAdapter.KEY_IMAGE_URL + " TEXT"); + + db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEED_ITEMS + " SET " + PodDBAdapter.KEY_IMAGE_URL + " = (" + + " SELECT " + PodDBAdapter.KEY_DOWNLOAD_URL + + " FROM " + PodDBAdapter.TABLE_NAME_FEED_IMAGES + + " WHERE " + PodDBAdapter.TABLE_NAME_FEED_IMAGES + "." + PodDBAdapter.KEY_ID + + " = " + PodDBAdapter.TABLE_NAME_FEED_ITEMS + "." + PodDBAdapter.KEY_IMAGE + ")"); + + db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEEDS + " SET " + PodDBAdapter.KEY_IMAGE_URL + " = (" + + " SELECT " + PodDBAdapter.KEY_DOWNLOAD_URL + + " FROM " + PodDBAdapter.TABLE_NAME_FEED_IMAGES + + " WHERE " + PodDBAdapter.TABLE_NAME_FEED_IMAGES + "." + PodDBAdapter.KEY_ID + + " = " + PodDBAdapter.TABLE_NAME_FEEDS + "." + PodDBAdapter.KEY_IMAGE + ")"); + + db.execSQL("DROP TABLE " + PodDBAdapter.TABLE_NAME_FEED_IMAGES); + } + } + +} diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java index 8cdf82e15..f7226729a 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java @@ -5,6 +5,7 @@ import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.preference.PreferenceManager; +import android.support.annotation.NonNull; import android.util.Log; import org.shredzone.flattr4j.model.Flattr; @@ -32,7 +33,6 @@ import de.danoeh.antennapod.core.event.QueueEvent; import de.danoeh.antennapod.core.feed.EventDistributor; import de.danoeh.antennapod.core.feed.Feed; import de.danoeh.antennapod.core.feed.FeedEvent; -import de.danoeh.antennapod.core.feed.FeedImage; import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.feed.FeedMedia; import de.danoeh.antennapod.core.feed.FeedPreferences; @@ -42,6 +42,7 @@ import de.danoeh.antennapod.core.preferences.PlaybackPreferences; import de.danoeh.antennapod.core.preferences.UserPreferences; import de.danoeh.antennapod.core.service.download.DownloadStatus; import de.danoeh.antennapod.core.service.playback.PlaybackService; +import de.danoeh.antennapod.core.util.IntentUtils; import de.danoeh.antennapod.core.util.LongList; import de.danoeh.antennapod.core.util.Permutor; import de.danoeh.antennapod.core.util.flattr.FlattrStatus; @@ -80,65 +81,72 @@ public class DBWriter { * @param context A context that is used for opening a database connection. * @param mediaId ID of the FeedMedia object whose downloaded file should be deleted. */ - public static Future<?> deleteFeedMediaOfItem(final Context context, + public static Future<?> deleteFeedMediaOfItem(@NonNull final Context context, final long mediaId) { return dbExec.submit(() -> { final FeedMedia media = DBReader.getFeedMedia(mediaId); if (media != null) { - Log.i(TAG, String.format("Requested to delete FeedMedia [id=%d, title=%s, downloaded=%s", - media.getId(), media.getEpisodeTitle(), String.valueOf(media.isDownloaded()))); - if (media.isDownloaded()) { - // delete downloaded media file - File mediaFile = new File(media.getFile_url()); - if (mediaFile.exists() && !mediaFile.delete()) { - MessageEvent evt = new MessageEvent(context.getString(R.string.delete_failed)); - EventBus.getDefault().post(evt); - return; - } - media.setDownloaded(false); - media.setFile_url(null); - media.setHasEmbeddedPicture(false); - PodDBAdapter adapter = PodDBAdapter.getInstance(); - adapter.open(); - adapter.setMedia(media); - adapter.close(); - - // If media is currently being played, change playback - // type to 'stream' and shutdown playback service - SharedPreferences prefs = PreferenceManager - .getDefaultSharedPreferences(context); - if (PlaybackPreferences.getCurrentlyPlayingMedia() == FeedMedia.PLAYABLE_TYPE_FEEDMEDIA) { - if (media.getId() == PlaybackPreferences - .getCurrentlyPlayingFeedMediaId()) { - SharedPreferences.Editor editor = prefs.edit(); - editor.putBoolean( - PlaybackPreferences.PREF_CURRENT_EPISODE_IS_STREAM, - true); - editor.commit(); - } - if (PlaybackPreferences - .getCurrentlyPlayingFeedMediaId() == media - .getId()) { - context.sendBroadcast(new Intent( - PlaybackService.ACTION_SHUTDOWN_PLAYBACK_SERVICE)); - } - } - // Gpodder: queue delete action for synchronization - if(GpodnetPreferences.loggedIn()) { - FeedItem item = media.getItem(); - GpodnetEpisodeAction action = new GpodnetEpisodeAction.Builder(item, GpodnetEpisodeAction.Action.DELETE) - .currentDeviceId() - .currentTimestamp() - .build(); - GpodnetPreferences.enqueueEpisodeAction(action); - } + boolean result = deleteFeedMediaSynchronous(context, media); + + if (result && UserPreferences.shouldDeleteRemoveFromQueue()) { + DBWriter.removeQueueItemSynchronous(context, false, media.getItem().getId()); } - EventBus.getDefault().post(FeedItemEvent.deletedMedia(Collections.singletonList(media.getItem()))); - EventDistributor.getInstance().sendUnreadItemsUpdateBroadcast(); } }); } + private static boolean deleteFeedMediaSynchronous(@NonNull Context context, @NonNull FeedMedia media) { + Log.i(TAG, String.format("Requested to delete FeedMedia [id=%d, title=%s, downloaded=%s", + media.getId(), media.getEpisodeTitle(), String.valueOf(media.isDownloaded()))); + if (media.isDownloaded()) { + // delete downloaded media file + File mediaFile = new File(media.getFile_url()); + if (mediaFile.exists() && !mediaFile.delete()) { + MessageEvent evt = new MessageEvent(context.getString(R.string.delete_failed)); + EventBus.getDefault().post(evt); + return false; + } + media.setDownloaded(false); + media.setFile_url(null); + media.setHasEmbeddedPicture(false); + PodDBAdapter adapter = PodDBAdapter.getInstance(); + adapter.open(); + adapter.setMedia(media); + adapter.close(); + + // If media is currently being played, change playback + // type to 'stream' and shutdown playback service + SharedPreferences prefs = PreferenceManager + .getDefaultSharedPreferences(context); + if (PlaybackPreferences.getCurrentlyPlayingMedia() == FeedMedia.PLAYABLE_TYPE_FEEDMEDIA) { + if (media.getId() == PlaybackPreferences + .getCurrentlyPlayingFeedMediaId()) { + SharedPreferences.Editor editor = prefs.edit(); + editor.putBoolean( + PlaybackPreferences.PREF_CURRENT_EPISODE_IS_STREAM, + true); + editor.commit(); + } + if (PlaybackPreferences.getCurrentlyPlayingFeedMediaId() == media.getId()) { + IntentUtils.sendLocalBroadcast(context, PlaybackService.ACTION_SHUTDOWN_PLAYBACK_SERVICE); + } + } + // Gpodder: queue delete action for synchronization + if(GpodnetPreferences.loggedIn()) { + FeedItem item = media.getItem(); + GpodnetEpisodeAction action = new GpodnetEpisodeAction.Builder(item, GpodnetEpisodeAction.Action.DELETE) + .currentDeviceId() + .currentTimestamp() + .build(); + GpodnetPreferences.enqueueEpisodeAction(action); + } + } + EventBus.getDefault().post(FeedItemEvent.deletedMedia(Collections.singletonList(media.getItem()))); + EventDistributor.getInstance().sendUnreadItemsUpdateBroadcast(); + + return true; + } + /** * Deletes a Feed and all downloaded files of its components like images and downloaded episodes. * @@ -157,8 +165,7 @@ public class DBWriter { if (PlaybackPreferences.getCurrentlyPlayingMedia() == FeedMedia.PLAYABLE_TYPE_FEEDMEDIA && PlaybackPreferences.getLastPlayedFeedId() == feed .getId()) { - context.sendBroadcast(new Intent( - PlaybackService.ACTION_SHUTDOWN_PLAYBACK_SERVICE)); + IntentUtils.sendLocalBroadcast(context, PlaybackService.ACTION_SHUTDOWN_PLAYBACK_SERVICE); SharedPreferences.Editor editor = prefs.edit(); editor.putLong( PlaybackPreferences.PREF_CURRENTLY_PLAYING_FEED_ID, @@ -166,17 +173,6 @@ public class DBWriter { editor.commit(); } - // delete image file - if (feed.getImage() != null) { - if (feed.getImage().isDownloaded() - && feed.getImage().getFile_url() != null) { - File imageFile = new File(feed.getImage() - .getFile_url()); - imageFile.delete(); - } else if (requester.isDownloadingFile(feed.getImage())) { - requester.cancelDownload(context, feed.getImage()); - } - } // delete stored media files and mark them as read List<FeedItem> queue = DBReader.getQueue(); List<FeedItem> removed = new ArrayList<>(); @@ -200,16 +196,6 @@ public class DBWriter { && requester.isDownloadingFile(item.getMedia())) { requester.cancelDownload(context, item.getMedia()); } - - if (item.hasItemImage()) { - FeedImage image = item.getImage(); - if (image.isDownloaded() && image.getFile_url() != null) { - File imgFile = new File(image.getFile_url()); - imgFile.delete(); - } else if (requester.isDownloadingFile(image)) { - requester.cancelDownload(context, item.getImage()); - } - } } PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); @@ -437,38 +423,68 @@ public class DBWriter { /** * Removes a FeedItem object from the queue. - * - * @param context A context that is used for opening a database connection. - * @param item FeedItem that should be removed. + * @param context A context that is used for opening a database connection. * @param performAutoDownload true if an auto-download process should be started after the operation. + * @param item FeedItem that should be removed. */ public static Future<?> removeQueueItem(final Context context, - final FeedItem item, final boolean performAutoDownload) { - return dbExec.submit(() -> { - final PodDBAdapter adapter = PodDBAdapter.getInstance(); - adapter.open(); - final List<FeedItem> queue = DBReader.getQueue(adapter); + final boolean performAutoDownload, final FeedItem item) { + return dbExec.submit(() -> removeQueueItemSynchronous(context, performAutoDownload, item.getId())); + } - if (queue != null) { - int position = queue.indexOf(item); + public static Future<?> removeQueueItem(final Context context, final boolean performAutoDownload, + final long... itemIds) { + return dbExec.submit(() -> removeQueueItemSynchronous(context, performAutoDownload, itemIds)); + } + + private static void removeQueueItemSynchronous(final Context context, + final boolean performAutoDownload, + final long... itemIds) { + if (itemIds.length < 1) { + return; + } + final PodDBAdapter adapter = PodDBAdapter.getInstance(); + adapter.open(); + final List<FeedItem> queue = DBReader.getQueue(adapter); + + if (queue != null) { + boolean queueModified = false; + List<QueueEvent> events = new ArrayList<>(); + List<FeedItem> updatedItems = new ArrayList<>(); + for (long itemId : itemIds) { + int position = indexInItemList(queue, itemId); if (position >= 0) { + final FeedItem item = DBReader.getFeedItem(itemId); + if (item == null) { + Log.e(TAG, "removeQueueItem - item in queue but somehow cannot be loaded." + + " Item ignored. It should never happen. id:" + itemId); + continue; + } queue.remove(position); - adapter.setQueue(queue); item.removeTag(FeedItem.TAG_QUEUE); - EventBus.getDefault().post(QueueEvent.removed(item)); - EventBus.getDefault().post(FeedItemEvent.updated(item)); + events.add(QueueEvent.removed(item)); + updatedItems.add(item); + queueModified = true; } else { - Log.w(TAG, "Queue was not modified by call to removeQueueItem"); + Log.v(TAG, "removeQueueItem - item not in queue:" + itemId); } - } else { - Log.e(TAG, "removeQueueItem: Could not load queue"); } - adapter.close(); - if (performAutoDownload) { - DBTasks.autodownloadUndownloadedItems(context); + if (queueModified) { + adapter.setQueue(queue); + for (QueueEvent event : events) { + EventBus.getDefault().post(event); + } + EventBus.getDefault().post(FeedItemEvent.updated(updatedItems)); + } else { + Log.w(TAG, "Queue was not modified by call to removeQueueItem"); } - }); - + } else { + Log.e(TAG, "removeQueueItem: Could not load queue"); + } + adapter.close(); + if (performAutoDownload) { + DBTasks.autodownloadUndownloadedItems(context); + } } public static Future<?> addFavoriteItem(final FeedItem item) { @@ -482,22 +498,6 @@ public class DBWriter { }); } - public static Future<?> addFavoriteItemById(final long itemId) { - return dbExec.submit(() -> { - final FeedItem item = DBReader.getFeedItem(itemId); - if (item == null) { - Log.d(TAG, "Can't find item for itemId " + itemId); - return; - } - final PodDBAdapter adapter = PodDBAdapter.getInstance().open(); - adapter.addFavoriteItem(item); - adapter.close(); - item.addTag(FeedItem.TAG_FAVORITE); - EventBus.getDefault().post(FavoritesEvent.added(item)); - EventBus.getDefault().post(FeedItemEvent.updated(item)); - }); - } - public static Future<?> removeFavoriteItem(final FeedItem item) { return dbExec.submit(() -> { final PodDBAdapter adapter = PodDBAdapter.getInstance().open(); @@ -633,11 +633,13 @@ public class DBWriter { * FeedItem.NEW, FeedItem.UNPLAYED * @param resetMediaPosition true if this method should also reset the position of the FeedItem's FeedMedia object. */ + @NonNull public static Future<?> markItemPlayed(FeedItem item, int played, boolean resetMediaPosition) { long mediaId = (item.hasMedia()) ? item.getMedia().getId() : 0; return markItemPlayed(item.getId(), played, mediaId, resetMediaPosition); } + @NonNull private static Future<?> markItemPlayed(final long itemId, final int played, final long mediaId, @@ -786,21 +788,6 @@ public class DBWriter { } /** - * Saves a FeedImage object in the database. This method will save all attributes of the FeedImage object. The - * contents of FeedComponent-attributes (e.g. the FeedImages's 'feed'-attribute) will not be saved. - * - * @param image The FeedImage object. - */ - public static Future<?> setFeedImage(final FeedImage image) { - return dbExec.submit(() -> { - PodDBAdapter adapter = PodDBAdapter.getInstance(); - adapter.open(); - adapter.setImage(image); - adapter.close(); - }); - } - - /** * Updates download URL of a feed */ public static Future<?> updateFeedDownloadURL(final String original, final String updated) { @@ -829,12 +816,17 @@ public class DBWriter { } private static boolean itemListContains(List<FeedItem> items, long itemId) { - for (FeedItem item : items) { + return indexInItemList(items, itemId) >= 0; + } + + private static int indexInItemList(List<FeedItem> items, long itemId) { + for (int i = 0; i < items.size(); i ++) { + FeedItem item = items.get(i); if (item.getId() == itemId) { - return true; + return i; } } - return false; + return -1; } /** diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java index 7d4b737db..892a4675a 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java @@ -23,6 +23,7 @@ import de.danoeh.antennapod.core.preferences.UserPreferences; import de.danoeh.antennapod.core.service.download.DownloadRequest; import de.danoeh.antennapod.core.service.download.DownloadService; import de.danoeh.antennapod.core.util.FileNameGenerator; +import de.danoeh.antennapod.core.util.IntentUtils; import de.danoeh.antennapod.core.util.URLChecker; @@ -242,6 +243,7 @@ public class DownloadRequester { Log.d(TAG, "Cancelling download with url " + downloadUrl); Intent cancelIntent = new Intent(DownloadService.ACTION_CANCEL_DOWNLOAD); cancelIntent.putExtra(DownloadService.EXTRA_DOWNLOAD_URL, downloadUrl); + cancelIntent.setPackage(context.getPackageName()); context.sendBroadcast(cancelIntent); } @@ -250,8 +252,7 @@ public class DownloadRequester { */ public synchronized void cancelAllDownloads(Context context) { Log.d(TAG, "Cancelling all running downloads"); - context.sendBroadcast(new Intent( - DownloadService.ACTION_CANCEL_ALL_DOWNLOADS)); + IntentUtils.sendLocalBroadcast(context, DownloadService.ACTION_CANCEL_ALL_DOWNLOADS); } /** diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/FeedSearcher.java b/core/src/main/java/de/danoeh/antennapod/core/storage/FeedSearcher.java index aa5706ad0..4093c41a5 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/FeedSearcher.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/FeedSearcher.java @@ -1,6 +1,7 @@ package de.danoeh.antennapod.core.storage; import android.content.Context; +import android.support.annotation.NonNull; import java.util.ArrayList; import java.util.Collections; @@ -19,6 +20,8 @@ import de.danoeh.antennapod.core.util.comparator.SearchResultValueComparator; * Performs search on Feeds and FeedItems */ public class FeedSearcher { + private FeedSearcher(){} + private static final String TAG = "FeedSearcher"; @@ -33,6 +36,7 @@ public class FeedSearcher { * @param selectedFeed feed to search, 0 to search through all feeds * @return list of episodes containing the query */ + @NonNull public static List<SearchResult> performSearch(final Context context, final String query, final long selectedFeed) { final int values[] = {2, 1, 0, 0, 0, 0}; @@ -43,7 +47,7 @@ public class FeedSearcher { context.getString(R.string.found_in_authors_label), context.getString(R.string.found_in_feeds_label)}; - List<SearchResult> result = new ArrayList<>(); + final List<SearchResult> result = new ArrayList<>(); List<FutureTask<List<FeedItem>>> tasks = new ArrayList<>(); tasks.add(DBTasks.searchFeedItemTitle(context, selectedFeed, query)); diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java b/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java index e82252310..1daa43025 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java @@ -1,5 +1,6 @@ package de.danoeh.antennapod.core.storage; +import android.annotation.SuppressLint; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; @@ -12,9 +13,14 @@ import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; import android.media.MediaMetadataRetriever; +import android.os.Build; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import android.text.TextUtils; import android.util.Log; +import org.apache.commons.io.FileUtils; + import java.io.File; import java.io.IOException; import java.util.Arrays; @@ -26,8 +32,6 @@ import de.danoeh.antennapod.core.R; import de.danoeh.antennapod.core.event.ProgressEvent; import de.danoeh.antennapod.core.feed.Chapter; import de.danoeh.antennapod.core.feed.Feed; -import de.danoeh.antennapod.core.feed.FeedComponent; -import de.danoeh.antennapod.core.feed.FeedImage; import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.feed.FeedMedia; import de.danoeh.antennapod.core.feed.FeedPreferences; @@ -36,7 +40,6 @@ import de.danoeh.antennapod.core.service.download.DownloadStatus; import de.danoeh.antennapod.core.util.LongIntMap; import de.danoeh.antennapod.core.util.flattr.FlattrStatus; import de.greenrobot.event.EventBus; -import org.apache.commons.io.FileUtils; // TODO Remove media column from feeditem table @@ -74,8 +77,9 @@ public class PodDBAdapter { public static final String KEY_SIZE = "filesize"; public static final String KEY_MIME_TYPE = "mime_type"; public static final String KEY_IMAGE = "image"; + public static final String KEY_IMAGE_URL = "image_url"; public static final String KEY_FEED = "feed"; - private static final String KEY_MEDIA = "media"; + public static final String KEY_MEDIA = "media"; public static final String KEY_DOWNLOADED = "downloaded"; public static final String KEY_LASTUPDATE = "last_update"; public static final String KEY_FEEDFILE = "feedfile"; @@ -114,14 +118,14 @@ public class PodDBAdapter { public static final String KEY_EXCLUDE_FILTER = "exclude_filter"; // Table names - private static final String TABLE_NAME_FEEDS = "Feeds"; - private static final String TABLE_NAME_FEED_ITEMS = "FeedItems"; - private static final String TABLE_NAME_FEED_IMAGES = "FeedImages"; - private static final String TABLE_NAME_FEED_MEDIA = "FeedMedia"; - private static final String TABLE_NAME_DOWNLOAD_LOG = "DownloadLog"; - private static final String TABLE_NAME_QUEUE = "Queue"; - private static final String TABLE_NAME_SIMPLECHAPTERS = "SimpleChapters"; - private static final String TABLE_NAME_FAVORITES = "Favorites"; + static final String TABLE_NAME_FEEDS = "Feeds"; + static final String TABLE_NAME_FEED_ITEMS = "FeedItems"; + static final String TABLE_NAME_FEED_IMAGES = "FeedImages"; + static final String TABLE_NAME_FEED_MEDIA = "FeedMedia"; + static final String TABLE_NAME_DOWNLOAD_LOG = "DownloadLog"; + static final String TABLE_NAME_QUEUE = "Queue"; + static final String TABLE_NAME_SIMPLECHAPTERS = "SimpleChapters"; + static final String TABLE_NAME_FAVORITES = "Favorites"; // SQL Statements for creating new tables private static final String TABLE_PRIMARY_KEY = KEY_ID @@ -133,7 +137,7 @@ public class PodDBAdapter { + KEY_DOWNLOADED + " INTEGER," + KEY_LINK + " TEXT," + KEY_DESCRIPTION + " TEXT," + KEY_PAYMENT_LINK + " TEXT," + KEY_LASTUPDATE + " TEXT," + KEY_LANGUAGE + " TEXT," + KEY_AUTHOR - + " TEXT," + KEY_IMAGE + " INTEGER," + KEY_TYPE + " TEXT," + + " TEXT," + KEY_IMAGE_URL + " TEXT," + KEY_TYPE + " TEXT," + KEY_FEED_IDENTIFIER + " TEXT," + KEY_AUTO_DOWNLOAD + " INTEGER DEFAULT 1," + KEY_FLATTR_STATUS + " INTEGER," + KEY_USERNAME + " TEXT," @@ -155,14 +159,9 @@ public class PodDBAdapter { + KEY_MEDIA + " INTEGER," + KEY_FEED + " INTEGER," + KEY_HAS_CHAPTERS + " INTEGER," + KEY_ITEM_IDENTIFIER + " TEXT," + KEY_FLATTR_STATUS + " INTEGER," - + KEY_IMAGE + " INTEGER," + + KEY_IMAGE_URL + " TEXT," + KEY_AUTO_DOWNLOAD + " INTEGER)"; - private static final String CREATE_TABLE_FEED_IMAGES = "CREATE TABLE " - + TABLE_NAME_FEED_IMAGES + " (" + TABLE_PRIMARY_KEY + KEY_TITLE - + " TEXT," + KEY_FILE_URL + " TEXT," + KEY_DOWNLOAD_URL + " TEXT," - + KEY_DOWNLOADED + " INTEGER)"; - private static final String CREATE_TABLE_FEED_MEDIA = "CREATE TABLE " + TABLE_NAME_FEED_MEDIA + " (" + TABLE_PRIMARY_KEY + KEY_DURATION + " INTEGER," + KEY_FILE_URL + " TEXT," + KEY_DOWNLOAD_URL @@ -191,36 +190,31 @@ public class PodDBAdapter { + KEY_LINK + " TEXT," + KEY_CHAPTER_TYPE + " INTEGER)"; // SQL Statements for creating indexes - private static final String CREATE_INDEX_FEEDITEMS_FEED = "CREATE INDEX " + static final String CREATE_INDEX_FEEDITEMS_FEED = "CREATE INDEX " + TABLE_NAME_FEED_ITEMS + "_" + KEY_FEED + " ON " + TABLE_NAME_FEED_ITEMS + " (" + KEY_FEED + ")"; - private static final String CREATE_INDEX_FEEDITEMS_IMAGE = "CREATE INDEX " - + TABLE_NAME_FEED_ITEMS + "_" + KEY_IMAGE + " ON " + TABLE_NAME_FEED_ITEMS + " (" - + KEY_IMAGE + ")"; - - private static final String CREATE_INDEX_FEEDITEMS_PUBDATE = "CREATE INDEX IF NOT EXISTS " + static final String CREATE_INDEX_FEEDITEMS_PUBDATE = "CREATE INDEX IF NOT EXISTS " + TABLE_NAME_FEED_ITEMS + "_" + KEY_PUBDATE + " ON " + TABLE_NAME_FEED_ITEMS + " (" + KEY_PUBDATE + ")"; - private static final String CREATE_INDEX_FEEDITEMS_READ = "CREATE INDEX IF NOT EXISTS " + static final String CREATE_INDEX_FEEDITEMS_READ = "CREATE INDEX IF NOT EXISTS " + TABLE_NAME_FEED_ITEMS + "_" + KEY_READ + " ON " + TABLE_NAME_FEED_ITEMS + " (" + KEY_READ + ")"; - - private static final String CREATE_INDEX_QUEUE_FEEDITEM = "CREATE INDEX " + static final String CREATE_INDEX_QUEUE_FEEDITEM = "CREATE INDEX " + TABLE_NAME_QUEUE + "_" + KEY_FEEDITEM + " ON " + TABLE_NAME_QUEUE + " (" + KEY_FEEDITEM + ")"; - private static final String CREATE_INDEX_FEEDMEDIA_FEEDITEM = "CREATE INDEX " + static final String CREATE_INDEX_FEEDMEDIA_FEEDITEM = "CREATE INDEX " + TABLE_NAME_FEED_MEDIA + "_" + KEY_FEEDITEM + " ON " + TABLE_NAME_FEED_MEDIA + " (" + KEY_FEEDITEM + ")"; - private static final String CREATE_INDEX_SIMPLECHAPTERS_FEEDITEM = "CREATE INDEX " + static final String CREATE_INDEX_SIMPLECHAPTERS_FEEDITEM = "CREATE INDEX " + TABLE_NAME_SIMPLECHAPTERS + "_" + KEY_FEEDITEM + " ON " + TABLE_NAME_SIMPLECHAPTERS + " (" + KEY_FEEDITEM + ")"; - private static final String CREATE_TABLE_FAVORITES = "CREATE TABLE " + static final String CREATE_TABLE_FAVORITES = "CREATE TABLE " + TABLE_NAME_FAVORITES + "(" + KEY_ID + " INTEGER PRIMARY KEY," + KEY_FEEDITEM + " INTEGER," + KEY_FEED + " INTEGER)"; @@ -240,7 +234,7 @@ public class PodDBAdapter { TABLE_NAME_FEEDS + "." + KEY_LASTUPDATE, TABLE_NAME_FEEDS + "." + KEY_LANGUAGE, TABLE_NAME_FEEDS + "." + KEY_AUTHOR, - TABLE_NAME_FEEDS + "." + KEY_IMAGE, + TABLE_NAME_FEEDS + "." + KEY_IMAGE_URL, TABLE_NAME_FEEDS + "." + KEY_TYPE, TABLE_NAME_FEEDS + "." + KEY_FEED_IDENTIFIER, TABLE_NAME_FEEDS + "." + KEY_AUTO_DOWNLOAD, @@ -273,7 +267,7 @@ public class PodDBAdapter { TABLE_NAME_FEED_ITEMS + "." + KEY_HAS_CHAPTERS, TABLE_NAME_FEED_ITEMS + "." + KEY_ITEM_IDENTIFIER, TABLE_NAME_FEED_ITEMS + "." + KEY_FLATTR_STATUS, - TABLE_NAME_FEED_ITEMS + "." + KEY_IMAGE, + TABLE_NAME_FEED_ITEMS + "." + KEY_IMAGE_URL, TABLE_NAME_FEED_ITEMS + "." + KEY_AUTO_DOWNLOAD }; @@ -283,7 +277,6 @@ public class PodDBAdapter { private static final String[] ALL_TABLES = { TABLE_NAME_FEEDS, TABLE_NAME_FEED_ITEMS, - TABLE_NAME_FEED_IMAGES, TABLE_NAME_FEED_MEDIA, TABLE_NAME_DOWNLOAD_LOG, TABLE_NAME_QUEUE, @@ -310,7 +303,6 @@ public class PodDBAdapter { private static Context context; private static volatile SQLiteDatabase db; - private static int counter = 0; public static void init(Context context) { PodDBAdapter.context = context.getApplicationContext(); @@ -330,20 +322,20 @@ public class PodDBAdapter { } public synchronized PodDBAdapter open() { - counter++; - Log.v(TAG, "Opening DB #" + counter); - if (db == null || !db.isOpen() || db.isReadOnly()) { db = openDb(); } return this; } + @SuppressLint("NewApi") private SQLiteDatabase openDb() { SQLiteDatabase newDb; try { newDb = SingletonHolder.dbHelper.getWritableDatabase(); - newDb.enableWriteAheadLogging(); + if (Build.VERSION.SDK_INT >= 16) { + newDb.disableWriteAheadLogging(); + } } catch (SQLException ex) { Log.e(TAG, Log.getStackTraceString(ex)); newDb = SingletonHolder.dbHelper.getReadableDatabase(); @@ -352,14 +344,7 @@ public class PodDBAdapter { } public synchronized void close() { - counter--; - Log.v(TAG, "Closing DB #" + counter); - - if (counter == 0) { - Log.v(TAG, "Closing DB, really"); - db.close(); - db = null; - } + // do nothing } public static boolean deleteDatabase() { @@ -388,12 +373,7 @@ public class PodDBAdapter { values.put(KEY_PAYMENT_LINK, feed.getPaymentLink()); values.put(KEY_AUTHOR, feed.getAuthor()); values.put(KEY_LANGUAGE, feed.getLanguage()); - if (feed.getImage() != null) { - if (feed.getImage().getId() == 0) { - setImage(feed.getImage()); - } - values.put(KEY_IMAGE, feed.getImage().getId()); - } + values.put(KEY_IMAGE_URL, feed.getImageUrl()); values.put(KEY_FILE_URL, feed.getFile_url()); values.put(KEY_DOWNLOAD_URL, feed.getDownload_url()); @@ -450,54 +430,7 @@ public class PodDBAdapter { } /** - * Inserts or updates an image entry - * - * @return the id of the entry - */ - public long setImage(FeedImage image) { - boolean startedTransaction = false; - - try { - if (!db.inTransaction()) { - db.beginTransactionNonExclusive(); - startedTransaction = true; - } - - ContentValues values = new ContentValues(); - values.put(KEY_TITLE, image.getTitle()); - values.put(KEY_DOWNLOAD_URL, image.getDownload_url()); - values.put(KEY_DOWNLOADED, image.isDownloaded()); - values.put(KEY_FILE_URL, image.getFile_url()); - if (image.getId() == 0) { - image.setId(db.insert(TABLE_NAME_FEED_IMAGES, null, values)); - } else { - db.update(TABLE_NAME_FEED_IMAGES, values, KEY_ID + "=?", - new String[]{String.valueOf(image.getId())}); - } - - final FeedComponent owner = image.getOwner(); - if (owner != null && owner.getId() != 0) { - values.clear(); - values.put(KEY_IMAGE, image.getId()); - if (owner instanceof Feed) { - db.update(TABLE_NAME_FEEDS, values, KEY_ID + "=?", new String[]{String.valueOf(image.getOwner().getId())}); - } - } - if (startedTransaction) { - db.setTransactionSuccessful(); - } - } catch (SQLException e) { - Log.e(TAG, Log.getStackTraceString(e)); - } finally { - if (startedTransaction) { - db.endTransaction(); - } - } - return image.getId(); - } - - /** - * Inserts or updates an image entry + * Inserts or updates a media entry * * @return the id of the entry */ @@ -608,31 +541,6 @@ public class PodDBAdapter { } /** - * Counts feeds and feed items in the flattr queue - */ - public int getFlattrQueueSize() { - int res = 0; - Cursor c = db.rawQuery(String.format("SELECT count(*) FROM %s WHERE %s=%s", - TABLE_NAME_FEEDS, KEY_FLATTR_STATUS, String.valueOf(FlattrStatus.STATUS_QUEUE)), null); - if (c.moveToFirst()) { - res = c.getInt(0); - c.close(); - } else { - Log.e(TAG, "Unable to determine size of flattr queue: Could not count number of feeds"); - } - c = db.rawQuery(String.format("SELECT count(*) FROM %s WHERE %s=%s", - TABLE_NAME_FEED_ITEMS, KEY_FLATTR_STATUS, String.valueOf(FlattrStatus.STATUS_QUEUE)), null); - if (c.moveToFirst()) { - res += c.getInt(0); - c.close(); - } else { - Log.e(TAG, "Unable to determine size of flattr queue: Could not count number of feed items"); - } - - return res; - } - - /** * Updates the download URL of a Feed. */ public void setFeedDownloadUrl(String original, String updated) { @@ -759,12 +667,7 @@ public class PodDBAdapter { values.put(KEY_ITEM_IDENTIFIER, item.getItemIdentifier()); values.put(KEY_FLATTR_STATUS, item.getFlattrStatus().toLong()); values.put(KEY_AUTO_DOWNLOAD, item.getAutoDownload()); - if (item.hasItemImage()) { - if (item.getImage().getId() == 0) { - setImage(item.getImage()); - } - values.put(KEY_IMAGE, item.getImage().getId()); - } + values.put(KEY_IMAGE_URL, item.getImageUrl()); if (item.getId() == 0) { item.setId(db.insert(TABLE_NAME_FEED_ITEMS, null, values)); @@ -944,17 +847,6 @@ public class PodDBAdapter { return count > 0; } - public long getDownloadLogSize() { - final String query = String.format("SELECT COUNT(%s) FROM %s", KEY_ID, TABLE_NAME_DOWNLOAD_LOG); - Cursor result = db.rawQuery(query, null); - long count = 0; - if (result.moveToFirst()) { - count = result.getLong(0); - } - result.close(); - return count; - } - public void setQueue(List<FeedItem> queue) { ContentValues values = new ContentValues(); try { @@ -993,11 +885,6 @@ public class PodDBAdapter { new String[]{String.valueOf(item.getId())}); } - private void removeFeedImage(FeedImage image) { - db.delete(TABLE_NAME_FEED_IMAGES, KEY_ID + "=?", - new String[]{String.valueOf(image.getId())}); - } - /** * Remove a FeedItem and its FeedMedia entry. */ @@ -1008,9 +895,6 @@ public class PodDBAdapter { if (item.hasChapters() || item.getChapters() != null) { removeChaptersOfItem(item); } - if (item.hasItemImage()) { - removeFeedImage(item.getImage()); - } db.delete(TABLE_NAME_FEED_ITEMS, KEY_ID + "=?", new String[]{String.valueOf(item.getId())}); } @@ -1021,9 +905,6 @@ public class PodDBAdapter { public void removeFeed(Feed feed) { try { db.beginTransactionNonExclusive(); - if (feed.getImage() != null) { - removeFeedImage(feed.getImage()); - } if (feed.getItems() != null) { for (FeedItem item : feed.getItems()) { removeFeedItem(item); @@ -1094,18 +975,6 @@ public class PodDBAdapter { } /** - * Returns a cursor for a DB query in the FeedMedia table for a given ID. - * - * @param item The item you want to get the FeedMedia from - * @return The cursor of the query - */ - public final Cursor getFeedMediaOfItemCursor(final FeedItem item) { - return db.query(TABLE_NAME_FEED_MEDIA, null, KEY_ID + "=?", - new String[]{String.valueOf(item.getMedia().getId())}, null, - null, null); - } - - /** * Returns a cursor for a DB query in the FeedImages table for given IDs. * * @param imageIds IDs of the images @@ -1363,17 +1232,12 @@ public class PodDBAdapter { public Cursor getImageAuthenticationCursor(final String imageUrl) { String downloadUrl = DatabaseUtils.sqlEscapeString(imageUrl); final String query = "" - + "SELECT " + KEY_USERNAME + "," + KEY_PASSWORD + " FROM " + TABLE_NAME_FEED_IMAGES + + "SELECT " + KEY_USERNAME + "," + KEY_PASSWORD + " FROM " + TABLE_NAME_FEED_ITEMS + " INNER JOIN " + TABLE_NAME_FEEDS - + " ON " + TABLE_NAME_FEED_IMAGES + "." + KEY_ID + "=" + TABLE_NAME_FEEDS + "." + KEY_IMAGE - + " WHERE " + TABLE_NAME_FEED_IMAGES + "." + KEY_DOWNLOAD_URL + "=" + downloadUrl - + " UNION SELECT " + KEY_USERNAME + "," + KEY_PASSWORD - + " FROM " + TABLE_NAME_FEED_IMAGES - + " INNER JOIN " + TABLE_NAME_FEED_ITEMS - + " ON " + TABLE_NAME_FEED_IMAGES + "." + KEY_ID + "=" + TABLE_NAME_FEED_ITEMS + "." + KEY_IMAGE - + " INNER JOIN " + TABLE_NAME_FEEDS - + " ON " + TABLE_NAME_FEED_ITEMS + "." + KEY_FEED + "=" + TABLE_NAME_FEEDS + "." + KEY_ID - + " WHERE " + TABLE_NAME_FEED_IMAGES + "." + KEY_DOWNLOAD_URL + "=" + downloadUrl; + + " ON " + TABLE_NAME_FEED_ITEMS + "." + KEY_FEED + " = " + TABLE_NAME_FEEDS + "." + KEY_ID + + " WHERE " + TABLE_NAME_FEED_ITEMS + "." + KEY_IMAGE_URL + "=" + downloadUrl + + " UNION SELECT " + KEY_USERNAME + "," + KEY_PASSWORD + " FROM " + TABLE_NAME_FEEDS + + " WHERE " + TABLE_NAME_FEEDS + "." + KEY_IMAGE_URL + "=" + downloadUrl; return db.rawQuery(query, null); } @@ -1389,9 +1253,15 @@ public class PodDBAdapter { } public final int getNumberOfNewItems() { - final String query = "SELECT COUNT(" + KEY_ID + ")" - + " FROM " + TABLE_NAME_FEED_ITEMS - + " WHERE " + KEY_READ + "=" + FeedItem.NEW; + Object[] args = new String[]{ + TABLE_NAME_FEED_ITEMS + "." + KEY_ID, + TABLE_NAME_FEED_ITEMS, + TABLE_NAME_FEEDS, + TABLE_NAME_FEED_ITEMS + "." + KEY_FEED + "=" + TABLE_NAME_FEEDS + "." + KEY_ID, + TABLE_NAME_FEED_ITEMS + "." + KEY_READ + "=" + FeedItem.NEW + + " AND " + TABLE_NAME_FEEDS + "." + KEY_KEEP_UPDATED + " > 0" + }; + final String query = String.format("SELECT COUNT(%s) FROM %s INNER JOIN %s ON %s WHERE %s", args); Cursor c = db.rawQuery(query, null); int result = 0; if (c.moveToFirst()) { @@ -1672,7 +1542,7 @@ public class PodDBAdapter { */ private static class PodDBHelper extends SQLiteOpenHelper { - private static final int VERSION = 1060200; + private static final int VERSION = 1060596; private final Context context; @@ -1693,7 +1563,6 @@ public class PodDBAdapter { public void onCreate(final SQLiteDatabase db) { db.execSQL(CREATE_TABLE_FEEDS); db.execSQL(CREATE_TABLE_FEED_ITEMS); - db.execSQL(CREATE_TABLE_FEED_IMAGES); db.execSQL(CREATE_TABLE_FEED_MEDIA); db.execSQL(CREATE_TABLE_DOWNLOAD_LOG); db.execSQL(CREATE_TABLE_QUEUE); @@ -1701,7 +1570,6 @@ public class PodDBAdapter { db.execSQL(CREATE_TABLE_FAVORITES); db.execSQL(CREATE_INDEX_FEEDITEMS_FEED); - db.execSQL(CREATE_INDEX_FEEDITEMS_IMAGE); db.execSQL(CREATE_INDEX_FEEDITEMS_PUBDATE); db.execSQL(CREATE_INDEX_FEEDITEMS_READ); db.execSQL(CREATE_INDEX_FEEDMEDIA_FEEDITEM); @@ -1716,263 +1584,7 @@ public class PodDBAdapter { EventBus.getDefault().post(ProgressEvent.start(context.getString(R.string.progress_upgrading_database))); Log.w("DBAdapter", "Upgrading from version " + oldVersion + " to " + newVersion + "."); - if (oldVersion <= 1) { - db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS + " ADD COLUMN " - + KEY_TYPE + " TEXT"); - } - if (oldVersion <= 2) { - db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_SIMPLECHAPTERS - + " ADD COLUMN " + KEY_LINK + " TEXT"); - } - if (oldVersion <= 3) { - db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_ITEMS - + " ADD COLUMN " + KEY_ITEM_IDENTIFIER + " TEXT"); - } - if (oldVersion <= 4) { - db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS + " ADD COLUMN " - + KEY_FEED_IDENTIFIER + " TEXT"); - } - if (oldVersion <= 5) { - db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_DOWNLOAD_LOG - + " ADD COLUMN " + KEY_REASON_DETAILED + " TEXT"); - db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_DOWNLOAD_LOG - + " ADD COLUMN " + KEY_DOWNLOADSTATUS_TITLE + " TEXT"); - } - if (oldVersion <= 6) { - db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_SIMPLECHAPTERS - + " ADD COLUMN " + KEY_CHAPTER_TYPE + " INTEGER"); - } - if (oldVersion <= 7) { - db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_MEDIA - + " ADD COLUMN " + KEY_PLAYBACK_COMPLETION_DATE - + " INTEGER"); - } - if (oldVersion <= 8) { - final int KEY_ID_POSITION = 0; - final int KEY_MEDIA_POSITION = 1; - - // Add feeditem column to feedmedia table - db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_MEDIA - + " ADD COLUMN " + KEY_FEEDITEM - + " INTEGER"); - Cursor feeditemCursor = db.query(PodDBAdapter.TABLE_NAME_FEED_ITEMS, - new String[]{KEY_ID, KEY_MEDIA}, "? > 0", - new String[]{KEY_MEDIA}, null, null, null); - if (feeditemCursor.moveToFirst()) { - db.beginTransaction(); - ContentValues contentValues = new ContentValues(); - do { - long mediaId = feeditemCursor.getLong(KEY_MEDIA_POSITION); - contentValues.put(KEY_FEEDITEM, feeditemCursor.getLong(KEY_ID_POSITION)); - db.update(PodDBAdapter.TABLE_NAME_FEED_MEDIA, contentValues, KEY_ID + "=?", new String[]{String.valueOf(mediaId)}); - contentValues.clear(); - } while (feeditemCursor.moveToNext()); - db.setTransactionSuccessful(); - db.endTransaction(); - } - feeditemCursor.close(); - } - if (oldVersion <= 9) { - db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS - + " ADD COLUMN " + KEY_AUTO_DOWNLOAD - + " INTEGER DEFAULT 1"); - } - if (oldVersion <= 10) { - db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS - + " ADD COLUMN " + KEY_FLATTR_STATUS - + " INTEGER"); - db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_ITEMS - + " ADD COLUMN " + KEY_FLATTR_STATUS - + " INTEGER"); - db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_MEDIA - + " ADD COLUMN " + KEY_PLAYED_DURATION - + " INTEGER"); - } - if (oldVersion <= 11) { - db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS - + " ADD COLUMN " + KEY_USERNAME - + " TEXT"); - db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS - + " ADD COLUMN " + KEY_PASSWORD - + " TEXT"); - db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_ITEMS - + " ADD COLUMN " + KEY_IMAGE - + " INTEGER"); - } - if (oldVersion <= 12) { - db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS - + " ADD COLUMN " + KEY_IS_PAGED + " INTEGER DEFAULT 0"); - db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS - + " ADD COLUMN " + KEY_NEXT_PAGE_LINK + " TEXT"); - } - if (oldVersion <= 13) { - // remove duplicate rows in "Chapters" table that were created because of a bug. - db.execSQL(String.format("DELETE FROM %s WHERE %s NOT IN " + - "(SELECT MIN(%s) as %s FROM %s GROUP BY %s,%s,%s,%s,%s)", - PodDBAdapter.TABLE_NAME_SIMPLECHAPTERS, - KEY_ID, - KEY_ID, - KEY_ID, - PodDBAdapter.TABLE_NAME_SIMPLECHAPTERS, - KEY_TITLE, - KEY_START, - KEY_FEEDITEM, - KEY_LINK, - KEY_CHAPTER_TYPE)); - } - if (oldVersion <= 14) { - db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_ITEMS - + " ADD COLUMN " + KEY_AUTO_DOWNLOAD + " INTEGER"); - db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEED_ITEMS - + " SET " + KEY_AUTO_DOWNLOAD + " = " - + "(SELECT " + KEY_AUTO_DOWNLOAD - + " FROM " + PodDBAdapter.TABLE_NAME_FEEDS - + " WHERE " + PodDBAdapter.TABLE_NAME_FEEDS + "." + KEY_ID - + " = " + PodDBAdapter.TABLE_NAME_FEED_ITEMS + "." + KEY_FEED + ")"); - - db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS - + " ADD COLUMN " + KEY_HIDE + " TEXT"); - - db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS - + " ADD COLUMN " + KEY_LAST_UPDATE_FAILED + " INTEGER DEFAULT 0"); - - // create indexes - db.execSQL(PodDBAdapter.CREATE_INDEX_FEEDITEMS_FEED); - db.execSQL(PodDBAdapter.CREATE_INDEX_FEEDITEMS_IMAGE); - db.execSQL(PodDBAdapter.CREATE_INDEX_FEEDMEDIA_FEEDITEM); - db.execSQL(PodDBAdapter.CREATE_INDEX_QUEUE_FEEDITEM); - db.execSQL(PodDBAdapter.CREATE_INDEX_SIMPLECHAPTERS_FEEDITEM); - } - if (oldVersion <= 15) { - db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_MEDIA - + " ADD COLUMN " + KEY_HAS_EMBEDDED_PICTURE + " INTEGER DEFAULT -1"); - db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEED_MEDIA - + " SET " + KEY_HAS_EMBEDDED_PICTURE + "=0" - + " WHERE " + KEY_DOWNLOADED + "=0"); - Cursor c = db.rawQuery("SELECT " + KEY_FILE_URL - + " FROM " + PodDBAdapter.TABLE_NAME_FEED_MEDIA - + " WHERE " + KEY_DOWNLOADED + "=1 " - + " AND " + KEY_HAS_EMBEDDED_PICTURE + "=-1", null); - if (c.moveToFirst()) { - MediaMetadataRetriever mmr = new MediaMetadataRetriever(); - do { - String fileUrl = c.getString(0); - try { - mmr.setDataSource(fileUrl); - byte[] image = mmr.getEmbeddedPicture(); - if (image != null) { - db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEED_MEDIA - + " SET " + KEY_HAS_EMBEDDED_PICTURE + "=1" - + " WHERE " + KEY_FILE_URL + "='" + fileUrl + "'"); - } else { - db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEED_MEDIA - + " SET " + KEY_HAS_EMBEDDED_PICTURE + "=0" - + " WHERE " + KEY_FILE_URL + "='" + fileUrl + "'"); - } - } catch (Exception e) { - e.printStackTrace(); - } - } while (c.moveToNext()); - } - c.close(); - } - if (oldVersion <= 16) { - String selectNew = "SELECT " + PodDBAdapter.TABLE_NAME_FEED_ITEMS + "." + KEY_ID - + " FROM " + PodDBAdapter.TABLE_NAME_FEED_ITEMS - + " INNER JOIN " + PodDBAdapter.TABLE_NAME_FEED_MEDIA + " ON " - + PodDBAdapter.TABLE_NAME_FEED_ITEMS + "." + KEY_ID + "=" - + PodDBAdapter.TABLE_NAME_FEED_MEDIA + "." + KEY_FEEDITEM - + " LEFT OUTER JOIN " + PodDBAdapter.TABLE_NAME_QUEUE + " ON " - + PodDBAdapter.TABLE_NAME_FEED_ITEMS + "." + KEY_ID + "=" - + PodDBAdapter.TABLE_NAME_QUEUE + "." + KEY_FEEDITEM - + " WHERE " - + PodDBAdapter.TABLE_NAME_FEED_ITEMS + "." + KEY_READ + " = 0 AND " // unplayed - + PodDBAdapter.TABLE_NAME_FEED_MEDIA + "." + KEY_DOWNLOADED + " = 0 AND " // undownloaded - + PodDBAdapter.TABLE_NAME_FEED_MEDIA + "." + KEY_POSITION + " = 0 AND " // not partially played - + PodDBAdapter.TABLE_NAME_QUEUE + "." + KEY_ID + " IS NULL"; // not in queue - String sql = "UPDATE " + PodDBAdapter.TABLE_NAME_FEED_ITEMS - + " SET " + KEY_READ + "=" + FeedItem.NEW - + " WHERE " + KEY_ID + " IN (" + selectNew + ")"; - Log.d("Migration", "SQL: " + sql); - db.execSQL(sql); - } - if (oldVersion <= 17) { - db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS - + " ADD COLUMN " + PodDBAdapter.KEY_AUTO_DELETE_ACTION + " INTEGER DEFAULT 0"); - } - if (oldVersion < 1030005) { - db.execSQL("UPDATE FeedItems SET auto_download=0 WHERE " + - "(read=1 OR id IN (SELECT feeditem FROM FeedMedia WHERE position>0 OR downloaded=1)) " + - "AND id NOT IN (SELECT feeditem FROM Queue)"); - } - if (oldVersion < 1040001) { - db.execSQL(CREATE_TABLE_FAVORITES); - } - if (oldVersion < 1040002) { - db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEED_MEDIA - + " ADD COLUMN " + PodDBAdapter.KEY_LAST_PLAYED_TIME + " INTEGER DEFAULT 0"); - } - if (oldVersion < 1040013) { - db.execSQL(PodDBAdapter.CREATE_INDEX_FEEDITEMS_PUBDATE); - db.execSQL(PodDBAdapter.CREATE_INDEX_FEEDITEMS_READ); - } - if (oldVersion < 1050003) { - // Migrates feed list filter data - - db.beginTransaction(); - - // Change to intermediate values to avoid overwriting in the following find/replace - db.execSQL("UPDATE " + TABLE_NAME_FEEDS + "\n" + - "SET " + KEY_HIDE + " = replace(" + KEY_HIDE + ", 'unplayed', 'noplay')"); - db.execSQL("UPDATE " + TABLE_NAME_FEEDS + "\n" + - "SET " + KEY_HIDE + " = replace(" + KEY_HIDE + ", 'not_queued', 'noqueue')"); - db.execSQL("UPDATE " + TABLE_NAME_FEEDS + "\n" + - "SET " + KEY_HIDE + " = replace(" + KEY_HIDE + ", 'not_downloaded', 'nodl')"); - - // Replace played, queued, and downloaded with their opposites - db.execSQL("UPDATE " + TABLE_NAME_FEEDS + "\n" + - "SET " + KEY_HIDE + " = replace(" + KEY_HIDE + ", 'played', 'unplayed')"); - db.execSQL("UPDATE " + TABLE_NAME_FEEDS + "\n" + - "SET " + KEY_HIDE + " = replace(" + KEY_HIDE + ", 'queued', 'not_queued')"); - db.execSQL("UPDATE " + TABLE_NAME_FEEDS + "\n" + - "SET " + KEY_HIDE + " = replace(" + KEY_HIDE + ", 'downloaded', 'not_downloaded')"); - - // Now replace intermediates for unplayed, not queued, etc. with their opposites - db.execSQL("UPDATE " + TABLE_NAME_FEEDS + "\n" + - "SET " + KEY_HIDE + " = replace(" + KEY_HIDE + ", 'noplay', 'played')"); - db.execSQL("UPDATE " + TABLE_NAME_FEEDS + "\n" + - "SET " + KEY_HIDE + " = replace(" + KEY_HIDE + ", 'noqueue', 'queued')"); - db.execSQL("UPDATE " + TABLE_NAME_FEEDS + "\n" + - "SET " + KEY_HIDE + " = replace(" + KEY_HIDE + ", 'nodl', 'downloaded')"); - - // Paused doesn't have an opposite, so unplayed is the next best option - db.execSQL("UPDATE " + TABLE_NAME_FEEDS + "\n" + - "SET " + KEY_HIDE + " = replace(" + KEY_HIDE + ", 'paused', 'unplayed')"); - - db.setTransactionSuccessful(); - db.endTransaction(); - - // and now get ready for autodownload filters - db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS - + " ADD COLUMN " + PodDBAdapter.KEY_INCLUDE_FILTER + " TEXT DEFAULT ''"); - - db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS - + " ADD COLUMN " + PodDBAdapter.KEY_EXCLUDE_FILTER + " TEXT DEFAULT ''"); - - // and now auto refresh - db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS - + " ADD COLUMN " + PodDBAdapter.KEY_KEEP_UPDATED + " INTEGER DEFAULT 1"); - } - if (oldVersion < 1050004) { - // prevent old timestamps to be misinterpreted as ETags - db.execSQL("UPDATE " + PodDBAdapter.TABLE_NAME_FEEDS - + " SET " + PodDBAdapter.KEY_LASTUPDATE + "=NULL"); - } - if (oldVersion < 1060200) { - db.execSQL("ALTER TABLE " + PodDBAdapter.TABLE_NAME_FEEDS - + " ADD COLUMN " + PodDBAdapter.KEY_CUSTOM_TITLE + " TEXT"); - } - + DBUpgrader.upgrade(db, oldVersion, newVersion); EventBus.getDefault().post(ProgressEvent.end()); } } diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/TypeGetter.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/TypeGetter.java index ee0a71f30..b4c77e58d 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/TypeGetter.java +++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/TypeGetter.java @@ -54,18 +54,19 @@ public class TypeGetter { return Type.ATOM; case RSS_ROOT: String strVersion = xpp.getAttributeValue(null, "version"); - if (strVersion != null) { - if (strVersion.equals("2.0")) { - feed.setType(Feed.TYPE_RSS2); - Log.d(TAG, "Recognized type RSS 2.0"); - return Type.RSS20; - } else if (strVersion.equals("0.91") - || strVersion.equals("0.92")) { - Log.d(TAG, "Recognized type RSS 0.91/0.92"); - return Type.RSS091; - } + if (strVersion == null) { + feed.setType(Feed.TYPE_RSS2); + Log.d(TAG, "Assuming type RSS 2.0"); + return Type.RSS20; + } else if (strVersion.equals("2.0")) { + feed.setType(Feed.TYPE_RSS2); + Log.d(TAG, "Recognized type RSS 2.0"); + return Type.RSS20; + } else if (strVersion.equals("0.91") || strVersion.equals("0.92")) { + Log.d(TAG, "Recognized type RSS 0.91/0.92"); + return Type.RSS091; } - throw new UnsupportedFeedtypeException(Type.INVALID); + throw new UnsupportedFeedtypeException("Unsupported rss version"); default: Log.d(TAG, "Type is invalid"); throw new UnsupportedFeedtypeException(Type.INVALID, tag); diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/UnsupportedFeedtypeException.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/UnsupportedFeedtypeException.java index 606f93faf..fd7d0a4e1 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/UnsupportedFeedtypeException.java +++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/UnsupportedFeedtypeException.java @@ -5,7 +5,8 @@ import de.danoeh.antennapod.core.syndication.handler.TypeGetter.Type; public class UnsupportedFeedtypeException extends Exception { private static final long serialVersionUID = 9105878964928170669L; private final TypeGetter.Type type; - private String rootElement; + private String rootElement; + private String message = null; public UnsupportedFeedtypeException(Type type) { super(); @@ -17,6 +18,11 @@ public class UnsupportedFeedtypeException extends Exception { this.rootElement = rootElement; } + public UnsupportedFeedtypeException(String message) { + this.message = message; + type = Type.INVALID; + } + public TypeGetter.Type getType() { return type; } @@ -27,7 +33,9 @@ public class UnsupportedFeedtypeException extends Exception { @Override public String getMessage() { - if (type == TypeGetter.Type.INVALID) { + if (message != null) { + return message; + } else if (type == TypeGetter.Type.INVALID) { return "Invalid type"; } else { return "Type " + type + " not supported"; diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSITunes.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSITunes.java index 670e99fce..b3b8a40ce 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSITunes.java +++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSITunes.java @@ -7,7 +7,6 @@ import org.xml.sax.Attributes; import java.util.concurrent.TimeUnit; -import de.danoeh.antennapod.core.feed.FeedImage; import de.danoeh.antennapod.core.syndication.handler.HandlerState; public class NSITunes extends Namespace { @@ -16,7 +15,6 @@ public class NSITunes extends Namespace { public static final String NSURI = "http://www.itunes.com/dtds/podcast-1.0.dtd"; private static final String IMAGE = "image"; - private static final String IMAGE_TITLE = "image"; private static final String IMAGE_HREF = "href"; private static final String AUTHOR = "author"; @@ -29,21 +27,15 @@ public class NSITunes extends Namespace { public SyndElement handleElementStart(String localName, HandlerState state, Attributes attributes) { if (IMAGE.equals(localName)) { - FeedImage image = new FeedImage(); - image.setTitle(IMAGE_TITLE); - image.setDownload_url(attributes.getValue(IMAGE_HREF)); + String url = attributes.getValue(IMAGE_HREF); if (state.getCurrentItem() != null) { - // this is an items image - image.setTitle(state.getCurrentItem().getTitle() + IMAGE_TITLE); - image.setOwner(state.getCurrentItem()); - state.getCurrentItem().setImage(image); + state.getCurrentItem().setImageUrl(url); } else { // this is the feed image // prefer to all other images - if (!TextUtils.isEmpty(image.getDownload_url())) { - image.setOwner(state.getFeed()); - state.getFeed().setImage(image); + if (!TextUtils.isEmpty(url)) { + state.getFeed().setImageUrl(url); } } } @@ -55,6 +47,9 @@ public class NSITunes extends Namespace { if(state.getContentBuf() == null) { return; } + SyndElement secondElement = state.getSecondTag(); + String second = secondElement.getName(); + if (AUTHOR.equals(localName)) { if (state.getFeed() != null) { String author = state.getContentBuf().toString(); @@ -103,10 +98,9 @@ public class NSITunes extends Namespace { } if (state.getCurrentItem() != null && (TextUtils.isEmpty(state.getCurrentItem().getDescription()) || - state.getCurrentItem().getDescription().length() * 1.25 < summary.length()) - ) { + state.getCurrentItem().getDescription().length() * 1.25 < summary.length())) { state.getCurrentItem().setDescription(summary); - } else if (state.getFeed() != null) { + } else if (NSRSS20.CHANNEL.equals(second) && state.getFeed() != null) { state.getFeed().setDescription(summary); } } diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSMedia.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSMedia.java index f2cfc2e57..638383223 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSMedia.java +++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSMedia.java @@ -7,7 +7,6 @@ import org.xml.sax.Attributes; import java.util.concurrent.TimeUnit; -import de.danoeh.antennapod.core.feed.FeedImage; import de.danoeh.antennapod.core.feed.FeedMedia; import de.danoeh.antennapod.core.syndication.handler.HandlerState; import de.danoeh.antennapod.core.syndication.namespace.atom.AtomText; @@ -94,25 +93,16 @@ public class NSMedia extends Namespace { } state.getCurrentItem().setMedia(media); } else if (state.getCurrentItem() != null && url != null && validTypeImage) { - FeedImage image = new FeedImage(); - image.setDownload_url(url); - image.setOwner(state.getCurrentItem()); - - state.getCurrentItem().setImage(image); + state.getCurrentItem().setImageUrl(url); } } else if (IMAGE.equals(localName)) { String url = attributes.getValue(IMAGE_URL); if (url != null) { - FeedImage image = new FeedImage(); - image.setDownload_url(url); - if (state.getCurrentItem() != null) { - image.setOwner(state.getCurrentItem()); - state.getCurrentItem().setImage(image); + state.getCurrentItem().setImageUrl(url); } else { - if (state.getFeed().getImage() == null) { - image.setOwner(state.getFeed()); - state.getFeed().setImage(image); + if (state.getFeed().getImageUrl() == null) { + state.getFeed().setImageUrl(url); } } } diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSRSS20.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSRSS20.java index 3d752df76..e391af1b2 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSRSS20.java +++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSRSS20.java @@ -5,8 +5,6 @@ import android.util.Log; import org.xml.sax.Attributes; -import de.danoeh.antennapod.core.feed.Feed; -import de.danoeh.antennapod.core.feed.FeedImage; import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.feed.FeedMedia; import de.danoeh.antennapod.core.syndication.handler.HandlerState; @@ -23,9 +21,6 @@ public class NSRSS20 extends Namespace { private static final String TAG = "NSRSS20"; - private static final String NSTAG = "rss"; - private static final String NSURI = ""; - public static final String CHANNEL = "channel"; public static final String ITEM = "item"; private static final String GUID = "guid"; @@ -77,17 +72,6 @@ public class NSRSS20 extends Namespace { state.getCurrentItem().setMedia(media); } - } else if (IMAGE.equals(localName)) { - if (state.getTagstack().size() >= 1) { - String parent = state.getTagstack().peek().getName(); - if (CHANNEL.equals(parent)) { - Feed feed = state.getFeed(); - if(feed != null && feed.getImage() == null) { - feed.setImage(new FeedImage()); - feed.getImage().setOwner(state.getFeed()); - } - } - } } return new SyndElement(localName, this); } @@ -134,11 +118,6 @@ public class NSRSS20 extends Namespace { state.getCurrentItem().setTitle(title); } else if (CHANNEL.equals(second) && state.getFeed() != null) { state.getFeed().setTitle(title); - } else if (IMAGE.equals(second) && CHANNEL.equals(third)) { - if(state.getFeed() != null && state.getFeed().getImage() != null && - state.getFeed().getImage().getTitle() == null) { - state.getFeed().getImage().setTitle(title); - } } } else if (LINK.equals(top)) { if (CHANNEL.equals(second) && state.getFeed() != null) { @@ -150,9 +129,8 @@ public class NSRSS20 extends Namespace { state.getCurrentItem().setPubDate(DateUtils.parse(content)); } else if (URL.equals(top) && IMAGE.equals(second) && CHANNEL.equals(third)) { // prefer itunes:image - if(state.getFeed() != null && state.getFeed().getImage() != null && - state.getFeed().getImage().getDownload_url() == null) { - state.getFeed().getImage().setDownload_url(content); + if (state.getFeed() != null) { + state.getFeed().setImageUrl(content); } } else if (DESCR.equals(localName)) { if (CHANNEL.equals(second) && state.getFeed() != null) { diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/Namespace.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/Namespace.java index 1836bbec1..e5fbdb9bb 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/Namespace.java +++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/Namespace.java @@ -15,7 +15,6 @@ public abstract class Namespace { public abstract SyndElement handleElementStart(String localName, HandlerState state, Attributes attributes); /** Called by a Feedhandler when in endElement and it detects a namespace element - * @return true if namespace handled the element, false if it ignored it * */ public abstract void handleElementEnd(String localName, HandlerState state); diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/NSAtom.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/NSAtom.java index 1fe388d9d..83957456a 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/NSAtom.java +++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/NSAtom.java @@ -5,7 +5,6 @@ import android.util.Log; import org.xml.sax.Attributes; -import de.danoeh.antennapod.core.feed.FeedImage; import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.feed.FeedMedia; import de.danoeh.antennapod.core.syndication.handler.HandlerState; @@ -48,8 +47,6 @@ public class NSAtom extends Namespace { private static final String LINK_REL_ARCHIVES = "archives"; private static final String LINK_REL_ENCLOSURE = "enclosure"; private static final String LINK_REL_PAYMENT = "payment"; - private static final String LINK_REL_RELATED = "related"; - private static final String LINK_REL_SELF = "self"; private static final String LINK_REL_NEXT = "next"; // type-values private static final String LINK_TYPE_ATOM = "application/atom+xml"; @@ -210,10 +207,10 @@ public class NSAtom extends Namespace { state.getCurrentItem().setPubDate(DateUtils.parse(content)); } else if (PUBLISHED.equals(top) && ENTRY.equals(second) && state.getCurrentItem() != null) { state.getCurrentItem().setPubDate(DateUtils.parse(content)); - } else if (IMAGE_LOGO.equals(top) && state.getFeed() != null && state.getFeed().getImage() == null) { - state.getFeed().setImage(new FeedImage(state.getFeed(), content, null)); + } else if (IMAGE_LOGO.equals(top) && state.getFeed() != null && state.getFeed().getImageUrl() == null) { + state.getFeed().setImageUrl(content); } else if (IMAGE_ICON.equals(top) && state.getFeed() != null) { - state.getFeed().setImage(new FeedImage(state.getFeed(), content, null)); + state.getFeed().setImageUrl(content); } else if (AUTHOR_NAME.equals(top) && AUTHOR.equals(second) && state.getFeed() != null && state.getCurrentItem() == null) { String currentName = state.getFeed().getAuthor(); diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/Consumer.java b/core/src/main/java/de/danoeh/antennapod/core/util/Consumer.java new file mode 100644 index 000000000..13a87af0d --- /dev/null +++ b/core/src/main/java/de/danoeh/antennapod/core/util/Consumer.java @@ -0,0 +1,5 @@ +package de.danoeh.antennapod.core.util; + +public interface Consumer<T> { + void accept(T t); +} diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/Converter.java b/core/src/main/java/de/danoeh/antennapod/core/util/Converter.java index b513fbe99..6ecca941a 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/Converter.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/Converter.java @@ -28,7 +28,6 @@ public final class Converter { /** Determines the length of the number for best readability.*/ private static final int NUM_LENGTH = 1024; - private static final int DAYS_MIL = 86400000; private static final int HOURS_MIL = 3600000; private static final int MINUTES_MIL = 60000; private static final int SECONDS_MIL = 1000; @@ -75,13 +74,14 @@ public final class Converter { return String.format(Locale.getDefault(), "%02d:%02d:%02d", h, m, s); } - /** Converts milliseconds to a string containing hours and minutes */ - public static String getDurationStringShort(int duration) { - int h = duration / HOURS_MIL; - int rest = duration - h * HOURS_MIL; - int m = rest / MINUTES_MIL; - - return String.format(Locale.getDefault(), "%02d:%02d", h, m); + /** Converts milliseconds to a string containing hours and minutes or minutes and seconds*/ + public static String getDurationStringShort(int duration, boolean durationIsInHours) { + int firstPartBase = durationIsInHours ? HOURS_MIL : MINUTES_MIL; + int firstPart = duration / firstPartBase; + int leftoverFromFirstPart = duration - firstPart * firstPartBase; + int secondPart = leftoverFromFirstPart / (durationIsInHours ? MINUTES_MIL : SECONDS_MIL); + + return String.format(Locale.getDefault(), "%02d:%02d", firstPart, secondPart); } /** Converts long duration string (HH:MM:SS) to milliseconds. */ @@ -95,14 +95,20 @@ public final class Converter { Integer.parseInt(parts[2]) * 1000; } - /** Converts short duration string (HH:MM) to milliseconds. */ - public static int durationStringShortToMs(String input) { + /** + * Converts short duration string (XX:YY) to milliseconds. If durationIsInHours is true then the + * format is HH:MM, otherwise it's MM:SS. + * */ + public static int durationStringShortToMs(String input, boolean durationIsInHours) { String[] parts = input.split(":"); if (parts.length != 2) { return 0; } - return Integer.parseInt(parts[0]) * 3600 * 1000 + - Integer.parseInt(parts[1]) * 1000 * 60; + + int modifier = durationIsInHours ? 60 : 1; + + return Integer.parseInt(parts[0]) * 60 * 1000 * modifier+ + Integer.parseInt(parts[1]) * 1000 * modifier; } /** Converts milliseconds to a localized string containing hours and minutes */ @@ -131,6 +137,7 @@ public final class Converter { return String.format(Locale.getDefault(), "%.1f ", hours) + context.getString(R.string.time_hours); } + /** * Converts the volume as read as the progress from a SeekBar scaled to 100 and as saved in * UserPreferences to the format taken by setVolume methods. diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/DateUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/DateUtils.java index 5056ea274..5141e3a78 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/DateUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/DateUtils.java @@ -17,7 +17,9 @@ import java.util.TimeZone; */ public class DateUtils { - private static final String TAG = "DateUtils"; + private DateUtils(){} + + private static final String TAG = "DateUtils"; private static final TimeZone defaultTimezone = TimeZone.getTimeZone("GMT"); @@ -85,7 +87,8 @@ public class DateUtils { "yyyy-MM-dd'T'HH:mm:ss'Z'", "yyyy-MM-dd'T'HH:mm:ss.SSSZ", "yyyy-MM-ddZ", - "yyyy-MM-dd" + "yyyy-MM-dd", + "EEE d MMM yyyy HH:mm:ss 'GMT'Z (z)" }; SimpleDateFormat parser = new SimpleDateFormat("", Locale.US); @@ -134,7 +137,7 @@ public class DateUtils { if (parts.length >= 2) { result += Integer.parseInt(parts[idx]) * 60000L; idx++; - result += (Float.parseFloat(parts[idx])) * 1000L; + result += (long) (Float.parseFloat(parts[idx]) * 1000L); } return result; } diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/EpisodeFilter.java b/core/src/main/java/de/danoeh/antennapod/core/util/EpisodeFilter.java deleted file mode 100644 index fb1b0dc8f..000000000 --- a/core/src/main/java/de/danoeh/antennapod/core/util/EpisodeFilter.java +++ /dev/null @@ -1,50 +0,0 @@ -package de.danoeh.antennapod.core.util; - -import java.util.ArrayList; -import java.util.List; - -import de.danoeh.antennapod.core.feed.FeedItem; - -class EpisodeFilter { - - private EpisodeFilter() { - - } - - /** Return a copy of the itemlist without items which have no media. */ - public static ArrayList<FeedItem> getEpisodeList(List<FeedItem> items) { - ArrayList<FeedItem> episodes = new ArrayList<>(items); - for (FeedItem item : items) { - if (item.getMedia() == null) { - episodes.remove(item); - } - } - return episodes; - } - - public static int countItemsWithEpisodes(List<FeedItem> items) { - int count = 0; - for (FeedItem item : items) { - if (item.getMedia() != null) { - count++; - } - } - return count; - } - - public static FeedItem accessEpisodeByIndex(List<FeedItem> items, - int position) { - int count = 0; - for (FeedItem item : items) { - - if (item.getMedia() != null) { - if (count == position) { - return item; - } else { - count++; - } - } - } - return null; - } -} diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/FeedItemUtil.java b/core/src/main/java/de/danoeh/antennapod/core/util/FeedItemUtil.java index 76a6549ae..826c06822 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/FeedItemUtil.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/FeedItemUtil.java @@ -5,6 +5,7 @@ import java.util.List; import de.danoeh.antennapod.core.feed.FeedItem; public class FeedItemUtil { + private FeedItemUtil(){} public static int indexOfItemWithDownloadUrl(List<FeedItem> items, String downloadUrl) { if(items == null) { diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/FeedUpdateUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/FeedUpdateUtils.java index 24e0da9ed..afaf13390 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/FeedUpdateUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/FeedUpdateUtils.java @@ -2,20 +2,30 @@ package de.danoeh.antennapod.core.util; import android.content.Context; import android.util.Log; + +import org.awaitility.core.ConditionTimeoutException; + +import java.util.concurrent.TimeUnit; + import de.danoeh.antennapod.core.storage.DBTasks; +import static org.awaitility.Awaitility.with; + public class FeedUpdateUtils { private static final String TAG = "FeedUpdateUtils"; - private FeedUpdateUtils() { - - } + private FeedUpdateUtils() {} public static void startAutoUpdate(Context context, Runnable callback) { - if (NetworkUtils.networkAvailable() && NetworkUtils.isDownloadAllowed()) { + try { + with().pollInterval(1, TimeUnit.SECONDS) + .await() + .atMost(10, TimeUnit.SECONDS) + .until(() -> NetworkUtils.networkAvailable() && NetworkUtils.isDownloadAllowed()); DBTasks.refreshAllFeeds(context, null, callback); - } else { + } catch (ConditionTimeoutException ignore) { Log.d(TAG, "Blocking automatic update: no wifi available / no mobile updates allowed"); } } + } diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/Function.java b/core/src/main/java/de/danoeh/antennapod/core/util/Function.java new file mode 100644 index 000000000..c4f4ad68a --- /dev/null +++ b/core/src/main/java/de/danoeh/antennapod/core/util/Function.java @@ -0,0 +1,7 @@ +package de.danoeh.antennapod.core.util; + +import io.reactivex.annotations.NonNull; + +public interface Function<T, R> { + R apply(@NonNull T t); +} diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/IntentUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/IntentUtils.java index 1571b71c2..e81ab47ed 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/IntentUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/IntentUtils.java @@ -8,6 +8,7 @@ import android.content.pm.ResolveInfo; import java.util.List; public class IntentUtils { + private IntentUtils(){} /* * Checks if there is at least one exported activity that can be performed for the intent @@ -23,4 +24,8 @@ public class IntentUtils { return false; } + public static void sendLocalBroadcast(Context context, String action) { + context.sendBroadcast(new Intent(action).setPackage(context.getPackageName())); + } + } diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/LangUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/LangUtils.java index 7ec7f84c4..90e0b0981 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/LangUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/LangUtils.java @@ -5,6 +5,9 @@ import android.support.v4.util.ArrayMap; import java.nio.charset.Charset; public class LangUtils { + + private LangUtils(){} + public static final Charset UTF_8 = Charset.forName("UTF-8"); private static final ArrayMap<String, String> languages; diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java index cbda583fa..9bdd375ce 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java @@ -18,15 +18,16 @@ import de.danoeh.antennapod.core.feed.FeedMedia; import de.danoeh.antennapod.core.preferences.UserPreferences; import de.danoeh.antennapod.core.service.download.AntennapodHttpClient; import de.danoeh.antennapod.core.storage.DBWriter; +import io.reactivex.Single; +import io.reactivex.SingleOnSubscribe; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.schedulers.Schedulers; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; -import rx.Observable; -import rx.Subscriber; -import rx.android.schedulers.AndroidSchedulers; -import rx.schedulers.Schedulers; public class NetworkUtils { + private NetworkUtils(){} private static final String TAG = NetworkUtils.class.getSimpleName(); @@ -89,9 +90,13 @@ public class NetworkUtils { return info != null && info.isConnected(); } - public static boolean isDownloadAllowed() { - return UserPreferences.isAllowMobileUpdate() || !NetworkUtils.isNetworkMetered(); - } + public static boolean isDownloadAllowed() { + return UserPreferences.isAllowMobileUpdate() || !NetworkUtils.isNetworkMetered(); + } + + public static boolean isImageAllowed() { + return UserPreferences.isAllowMobileImages() || !NetworkUtils.isNetworkMetered(); + } private static boolean isNetworkMetered() { ConnectivityManager connManager = (ConnectivityManager) context @@ -111,11 +116,10 @@ public class NetworkUtils { return null; } - public static Observable<Long> getFeedMediaSizeObservable(FeedMedia media) { - return Observable.create((Observable.OnSubscribe<Long>) subscriber -> { + public static Single<Long> getFeedMediaSizeObservable(FeedMedia media) { + return Single.create((SingleOnSubscribe<Long>) emitter -> { if (!NetworkUtils.isDownloadAllowed()) { - subscriber.onNext(0L); - subscriber.onCompleted(); + emitter.onSuccess(0L); return; } long size = Integer.MIN_VALUE; @@ -129,8 +133,7 @@ public class NetworkUtils { String url = media.getDownload_url(); if(TextUtils.isEmpty(url)) { - subscriber.onNext(0L); - subscriber.onCompleted(); + emitter.onSuccess(0L); return; } @@ -150,8 +153,7 @@ public class NetworkUtils { } } } catch (IOException e) { - subscriber.onNext(0L); - subscriber.onCompleted(); + emitter.onSuccess(0L); Log.e(TAG, Log.getStackTraceString(e)); return; // better luck next time } @@ -163,11 +165,10 @@ public class NetworkUtils { } else { media.setSize(size); } - subscriber.onNext(size); - subscriber.onCompleted(); + emitter.onSuccess(size); DBWriter.setFeedMedia(media); }) - .subscribeOn(Schedulers.newThread()) + .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); } diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/Optional.java b/core/src/main/java/de/danoeh/antennapod/core/util/Optional.java new file mode 100644 index 000000000..0fe11ec53 --- /dev/null +++ b/core/src/main/java/de/danoeh/antennapod/core/util/Optional.java @@ -0,0 +1,213 @@ +/* + * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package de.danoeh.antennapod.core.util; + +import java.util.NoSuchElementException; +import java.util.Objects; + +// AntennaPod's stripped-down version of Java/Android platform's java.util.Optional +// so that it can be used on lower API level (API level 14) + +// Android-changed: removed ValueBased paragraph. +/** + * A container object which may or may not contain a non-null value. + * If a value is present, {@code isPresent()} will return {@code true} and + * {@code get()} will return the value. + * + * <p>Additional methods that depend on the presence or absence of a contained + * value are provided, such as {@link #orElse(java.lang.Object) orElse()} + * (return a default value if value not present) and + * {@link #ifPresent(java.util.function.Consumer) ifPresent()} (execute a block + * of code if the value is present). + * + * @since 1.8 + */ +public final class Optional<T> { + /** + * Common instance for {@code empty()}. + */ + private static final Optional<?> EMPTY = new Optional<>(); + + /** + * If non-null, the value; if null, indicates no value is present + */ + private final T value; + + /** + * Constructs an empty instance. + * + * @implNote Generally only one empty instance, {@link Optional#EMPTY}, + * should exist per VM. + */ + private Optional() { + this.value = null; + } + + /** + * Returns an empty {@code Optional} instance. No value is present for this + * Optional. + * + * @apiNote Though it may be tempting to do so, avoid testing if an object + * is empty by comparing with {@code ==} against instances returned by + * {@code Option.empty()}. There is no guarantee that it is a singleton. + * Instead, use {@link #isPresent()}. + * + * @param <T> Type of the non-existent value + * @return an empty {@code Optional} + */ + public static<T> Optional<T> empty() { + @SuppressWarnings("unchecked") + Optional<T> t = (Optional<T>) EMPTY; + return t; + } + + /** + * Constructs an instance with the value present. + * + * @param value the non-null value to be present + * @throws NullPointerException if value is null + */ + private Optional(T value) { + this.value = Objects.requireNonNull(value); + } + + /** + * Returns an {@code Optional} with the specified present non-null value. + * + * @param <T> the class of the value + * @param value the value to be present, which must be non-null + * @return an {@code Optional} with the value present + * @throws NullPointerException if value is null + */ + public static <T> Optional<T> of(T value) { + return new Optional<>(value); + } + + /** + * Returns an {@code Optional} describing the specified value, if non-null, + * otherwise returns an empty {@code Optional}. + * + * @param <T> the class of the value + * @param value the possibly-null value to describe + * @return an {@code Optional} with a present value if the specified value + * is non-null, otherwise an empty {@code Optional} + */ + public static <T> Optional<T> ofNullable(T value) { + return value == null ? empty() : of(value); + } + + /** + * If a value is present in this {@code Optional}, returns the value, + * otherwise throws {@code NoSuchElementException}. + * + * @return the non-null value held by this {@code Optional} + * @throws NoSuchElementException if there is no value present + * + * @see Optional#isPresent() + */ + public T get() { + if (value == null) { + throw new NoSuchElementException("No value present"); + } + return value; + } + + /** + * Return {@code true} if there is a value present, otherwise {@code false}. + * + * @return {@code true} if there is a value present, otherwise {@code false} + */ + public boolean isPresent() { + return value != null; + } + + + /** + * Return the value if present, otherwise return {@code other}. + * + * @param other the value to be returned if there is no value present, may + * be null + * @return the value, if present, otherwise {@code other} + */ + public T orElse(T other) { + return value != null ? value : other; + } + + /** + * Indicates whether some other object is "equal to" this Optional. The + * other object is considered equal if: + * <ul> + * <li>it is also an {@code Optional} and; + * <li>both instances have no value present or; + * <li>the present values are "equal to" each other via {@code equals()}. + * </ul> + * + * @param obj an object to be tested for equality + * @return {code true} if the other object is "equal to" this object + * otherwise {@code false} + */ + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + + if (!(obj instanceof Optional)) { + return false; + } + + Optional<?> other = (Optional<?>) obj; + return (value == other.value) || (value != null && value.equals(other.value)); + } + + /** + * Returns the hash code value of the present value, if any, or 0 (zero) if + * no value is present. + * + * @return hash code value of the present value or 0 if no value is present + */ + @Override + public int hashCode() { + return value != null ? value.hashCode() : 0; + } + + /** + * Returns a non-empty string representation of this Optional suitable for + * debugging. The exact presentation format is unspecified and may vary + * between implementations and versions. + * + * @implSpec If a value is present the result must include its string + * representation in the result. Empty and present Optionals must be + * unambiguously differentiable. + * + * @return the string representation of this instance + */ + @Override + public String toString() { + return value != null + ? String.format("Optional[%s]", value) + : "Optional.empty"; + } +} diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/QueueAccess.java b/core/src/main/java/de/danoeh/antennapod/core/util/QueueAccess.java index 7377b202d..9408be348 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/QueueAccess.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/QueueAccess.java @@ -58,19 +58,4 @@ public abstract class QueueAccess { }; } - public static QueueAccess NotInQueueAccess() { - return new QueueAccess() { - @Override - public boolean contains(long id) { - return false; - } - - @Override - public boolean remove(long id) { - return false; - } - }; - - } - } diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/RewindAfterPauseUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/RewindAfterPauseUtils.java index ee306a401..d1818aeef 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/RewindAfterPauseUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/RewindAfterPauseUtils.java @@ -9,6 +9,7 @@ import java.util.concurrent.TimeUnit; * Media file should be "rewinded" x seconds after user resumes the playback. */ public class RewindAfterPauseUtils { + private RewindAfterPauseUtils(){} public static final long ELAPSED_TIME_FOR_SHORT_REWIND = TimeUnit.MINUTES.toMillis(1); public static final long ELAPSED_TIME_FOR_MEDIUM_REWIND = TimeUnit.HOURS.toMillis(1); diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/StorageUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/StorageUtils.java index 1ef81bf64..3a6bf5755 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/StorageUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/StorageUtils.java @@ -14,6 +14,8 @@ import de.danoeh.antennapod.core.preferences.UserPreferences; * Utility functions for handling storage errors */ public class StorageUtils { + private StorageUtils(){} + private static final String TAG = "StorageUtils"; public static boolean storageAvailable() { diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/ThemeUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/ThemeUtils.java index f67367643..14f091249 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/ThemeUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/ThemeUtils.java @@ -1,17 +1,25 @@ package de.danoeh.antennapod.core.util; +import android.content.Context; +import android.support.annotation.AttrRes; +import android.support.annotation.ColorInt; import android.util.Log; +import android.util.TypedValue; import de.danoeh.antennapod.core.R; import de.danoeh.antennapod.core.preferences.UserPreferences; public class ThemeUtils { + private ThemeUtils(){} + private static final String TAG = "ThemeUtils"; public static int getSelectionBackgroundColor() { int theme = UserPreferences.getTheme(); if (theme == R.style.Theme_AntennaPod_Dark) { return R.color.selection_background_color_dark; + } else if (theme == R.style.Theme_AntennaPod_TrueBlack){ + return R.color.selection_background_color_trueblack; } else if (theme == R.style.Theme_AntennaPod_Light) { return R.color.selection_background_color_light; } else { @@ -20,4 +28,10 @@ public class ThemeUtils { return R.color.selection_background_color_light; } } + + public static @ColorInt int getColorFromAttr(Context context, @AttrRes int attr) { + TypedValue typedValue = new TypedValue(); + context.getTheme().resolveAttribute(attr, typedValue, true); + return typedValue.data; + } } diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/URLChecker.java b/core/src/main/java/de/danoeh/antennapod/core/util/URLChecker.java index 40faa1dd2..ffc6a6e28 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/URLChecker.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/URLChecker.java @@ -1,6 +1,7 @@ package de.danoeh.antennapod.core.util; import android.net.Uri; +import android.support.annotation.NonNull; import android.util.Log; import de.danoeh.antennapod.core.BuildConfig; @@ -29,7 +30,7 @@ public final class URLChecker { * @param url The url which is going to be prepared * @return The prepared url */ - public static String prepareURL(String url) { + public static String prepareURL(@NonNull String url) { url = url.trim(); if (url.startsWith("feed://")) { if (BuildConfig.DEBUG) Log.d(TAG, "Replacing feed:// with http://"); diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/download/AutoUpdateManager.java b/core/src/main/java/de/danoeh/antennapod/core/util/download/AutoUpdateManager.java index ad723c685..1629f4aaf 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/download/AutoUpdateManager.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/download/AutoUpdateManager.java @@ -11,12 +11,17 @@ import android.os.Build; import android.os.SystemClock; import android.support.annotation.RequiresApi; import android.util.Log; -import de.danoeh.antennapod.core.receiver.FeedUpdateReceiver; -import de.danoeh.antennapod.core.service.FeedUpdateJobService; import java.util.Calendar; import java.util.concurrent.TimeUnit; +import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.core.receiver.FeedUpdateReceiver; +import de.danoeh.antennapod.core.service.FeedUpdateJobService; +import de.danoeh.antennapod.core.storage.DBTasks; +import de.danoeh.antennapod.core.util.Converter; +import de.danoeh.antennapod.core.util.FeedUpdateUtils; + public class AutoUpdateManager { private static final int JOB_ID_FEED_UPDATE = 42; private static final String TAG = "AutoUpdateManager"; @@ -152,4 +157,29 @@ public class AutoUpdateManager { updateIntent); Log.d(TAG, "Changed alarm to new time of day " + alarm.get(Calendar.HOUR_OF_DAY) + ":" + alarm.get(Calendar.MINUTE)); } + + /* + * Checks if the app should refresh all feeds, i.e. if the last auto refresh failed. + * + * The feeds are only refreshed if an update interval or time of day is set and the last + * (successful) refresh was before the last interval or more than a day ago, respectively. + * + */ + public static void checkShouldRefreshFeeds(Context context) { + long interval = 0; + if(UserPreferences.getUpdateInterval() > 0) { + interval = UserPreferences.getUpdateInterval(); + } else if(UserPreferences.getUpdateTimeOfDay().length > 0){ + interval = TimeUnit.DAYS.toMillis(1); + } + if(interval == 0) { // auto refresh is disabled + return; + } + long lastRefresh = DBTasks.getLastRefreshAllFeedsTimeMillis(context); + Log.d(TAG, "last refresh: " + Converter.getDurationStringLocalized(context, + System.currentTimeMillis() - lastRefresh) + " ago"); + if(lastRefresh <= System.currentTimeMillis() - interval) { + FeedUpdateUtils.startAutoUpdate(context, null); + } + } } diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/exception/MediaFileNotFoundException.java b/core/src/main/java/de/danoeh/antennapod/core/util/exception/MediaFileNotFoundException.java index ecb641dad..3000e2fa4 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/exception/MediaFileNotFoundException.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/exception/MediaFileNotFoundException.java @@ -12,11 +12,6 @@ public class MediaFileNotFoundException extends Exception { this.media = media; } - public MediaFileNotFoundException(FeedMedia media) { - super(); - this.media = media; - } - public FeedMedia getMedia() { return media; } diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrServiceCreator.java b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrServiceCreator.java index 45cb56988..d4d5843d2 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrServiceCreator.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrServiceCreator.java @@ -11,7 +11,9 @@ import de.danoeh.antennapod.core.BuildConfig; /** Ensures that only one instance of the FlattrService class exists at a time */ class FlattrServiceCreator { - private static final String TAG = "FlattrServiceCreator"; + private FlattrServiceCreator(){} + + public static final String TAG = "FlattrServiceCreator"; private static volatile FlattrService flattrService; diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrUtils.java index 313d1c2f2..919fc82f2 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrUtils.java @@ -1,8 +1,6 @@ package de.danoeh.antennapod.core.util.flattr; import android.content.Context; -import android.content.DialogInterface; -import android.content.DialogInterface.OnClickListener; import android.content.Intent; import android.content.SharedPreferences; import android.net.Uri; @@ -36,6 +34,8 @@ import de.danoeh.antennapod.core.storage.DBWriter; */ public class FlattrUtils { + private FlattrUtils(){} + private static final String TAG = "FlattrUtils"; private static final String HOST_NAME = "de.danoeh.antennapod"; diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/gui/MoreContentListFooterUtil.java b/core/src/main/java/de/danoeh/antennapod/core/util/gui/MoreContentListFooterUtil.java index 386f46724..6e5c3e84b 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/gui/MoreContentListFooterUtil.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/gui/MoreContentListFooterUtil.java @@ -27,8 +27,8 @@ public class MoreContentListFooterUtil { } public void setLoadingState(boolean newState) { - final ImageView imageView = (ImageView) root.findViewById(R.id.imgExpand); - final ProgressBar progressBar = (ProgressBar) root.findViewById(R.id.progBar); + final ImageView imageView = root.findViewById(R.id.imgExpand); + final ProgressBar progressBar = root.findViewById(R.id.progBar); if (newState) { imageView.setVisibility(View.GONE); progressBar.setVisibility(View.VISIBLE); diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/gui/NotificationUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/gui/NotificationUtils.java index 1c42364ea..52a43aab2 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/gui/NotificationUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/gui/NotificationUtils.java @@ -6,6 +6,7 @@ import android.app.NotificationManager; import android.content.Context; import android.os.Build; import android.support.annotation.RequiresApi; + import de.danoeh.antennapod.core.R; public class NotificationUtils { @@ -41,6 +42,7 @@ public class NotificationUtils { NotificationChannel mChannel = new NotificationChannel(CHANNEL_ID_DOWNLOADING, c.getString(R.string.notification_channel_downloading), NotificationManager.IMPORTANCE_LOW); mChannel.setDescription(c.getString(R.string.notification_channel_downloading_description)); + mChannel.setShowBadge(false); return mChannel; } @@ -49,6 +51,7 @@ public class NotificationUtils { NotificationChannel mChannel = new NotificationChannel(CHANNEL_ID_PLAYING, c.getString(R.string.notification_channel_playing), NotificationManager.IMPORTANCE_LOW); mChannel.setDescription(c.getString(R.string.notification_channel_playing_description)); + mChannel.setShowBadge(false); return mChannel; } diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/AudioPlayer.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/AudioPlayer.java index 846733882..2b3f38841 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/AudioPlayer.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/AudioPlayer.java @@ -21,18 +21,12 @@ public class AudioPlayer extends MediaPlayer implements IPlayer { private final SharedPreferences.OnSharedPreferenceChangeListener sonicListener = (sharedPreferences, key) -> { - if (key.equals(UserPreferences.PREF_SONIC)) { + if (key.equals(UserPreferences.PREF_MEDIA_PLAYER)) { checkMpi(); } }; @Override - public void setScreenOnWhilePlaying(boolean screenOn) { - Log.e(TAG, "Setting screen on while playing not supported in Audio Player"); - throw new UnsupportedOperationException("Setting screen on while playing not supported in Audio Player"); - } - - @Override public void setDisplay(SurfaceHolder sh) { if (sh != null) { Log.e(TAG, "Setting display not supported in Audio Player"); @@ -40,10 +34,13 @@ public class AudioPlayer extends MediaPlayer implements IPlayer { } } - @Override - public void setVideoScalingMode(int mode) { - throw new UnsupportedOperationException("Setting scaling mode is not supported in Audio Player"); - } + @Override + public void setPlaybackParams(float speed, boolean skipSilence) { + if(canSetSpeed()) { + setPlaybackSpeed(speed); + } + //Default player does not support silence skipping + } @Override protected boolean useSonic() { diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/IPlayer.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/IPlayer.java index aba395ec1..c2b768ea8 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/IPlayer.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/IPlayer.java @@ -6,13 +6,11 @@ import android.view.SurfaceHolder; import java.io.IOException; public interface IPlayer { - boolean canSetPitch(); boolean canSetSpeed(); boolean canDownmix(); - float getCurrentPitchStepsAdjustment(); int getCurrentPosition(); @@ -20,20 +18,12 @@ public interface IPlayer { int getDuration(); - float getMaxSpeedMultiplier(); - - float getMinSpeedMultiplier(); - - boolean isLooping(); - boolean isPlaying(); void pause(); void prepare() throws IllegalStateException, IOException; - void prepareAsync(); - void release(); void reset(); @@ -42,22 +32,12 @@ public interface IPlayer { void setAudioStreamType(int streamtype); - void setScreenOnWhilePlaying(boolean screenOn); - void setDataSource(String path) throws IllegalStateException, IOException, IllegalArgumentException, SecurityException; void setDisplay(SurfaceHolder sh); - void setEnableSpeedAdjustment(boolean enableSpeedAdjustment); - - void setLooping(boolean looping); - - void setPitchStepsAdjustment(float pitchSteps); - - void setPlaybackPitch(float f); - - void setPlaybackSpeed(float f); + void setPlaybackParams(float speed, boolean skipSilence); void setDownmix(boolean enable); @@ -67,7 +47,5 @@ public interface IPlayer { void stop(); - void setVideoScalingMode(int mode); - void setWakeMode(Context context, int mode); } diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/MediaPlayerError.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/MediaPlayerError.java index a576dd497..b04c02075 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/MediaPlayerError.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/MediaPlayerError.java @@ -7,6 +7,7 @@ import de.danoeh.antennapod.core.R; /** Utility class for MediaPlayer errors. */ public class MediaPlayerError { + private MediaPlayerError(){} /** Get a human-readable string for a specific error code. */ public static String getErrorString(Context context, int code) { diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/Playable.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/Playable.java index ff7f5b79d..da9b96430 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/Playable.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/Playable.java @@ -176,6 +176,8 @@ public interface Playable extends Parcelable, * Provides utility methods for Playable objects. */ class PlayableUtils { + private PlayableUtils(){} + private static final String TAG = "PlayableUtils"; /** diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java index a3f02d5cc..6498b9ff1 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java @@ -7,15 +7,11 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.ServiceConnection; -import android.content.SharedPreferences; import android.content.res.TypedArray; import android.media.MediaPlayer; import android.os.Build; import android.os.IBinder; -import android.preference.PreferenceManager; import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.content.ContextCompat; import android.text.TextUtils; import android.util.Log; import android.util.Pair; @@ -24,10 +20,8 @@ import android.widget.ImageButton; import android.widget.SeekBar; import android.widget.TextView; -import java.util.concurrent.RejectedExecutionHandler; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.ScheduledThreadPoolExecutor; -import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import de.danoeh.antennapod.core.R; @@ -41,11 +35,14 @@ import de.danoeh.antennapod.core.service.playback.PlaybackServiceMediaPlayer; import de.danoeh.antennapod.core.service.playback.PlayerStatus; import de.danoeh.antennapod.core.storage.DBTasks; import de.danoeh.antennapod.core.util.Converter; +import de.danoeh.antennapod.core.util.Optional; import de.danoeh.antennapod.core.util.playback.Playable.PlayableUtils; -import rx.Observable; -import rx.Subscription; -import rx.android.schedulers.AndroidSchedulers; -import rx.schedulers.Schedulers; +import io.reactivex.Maybe; +import io.reactivex.MaybeOnSubscribe; +import io.reactivex.Observable; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; +import io.reactivex.schedulers.Schedulers; /** * Communicates with the playback service. GUI classes should use this class to @@ -73,7 +70,8 @@ public abstract class PlaybackController { private boolean released = false; private boolean initialized = false; - private Subscription serviceBinder; + private Disposable serviceBinder; + private Disposable mediaLoader; /** * True if controller should reinit playback service if 'pause' button is @@ -106,6 +104,7 @@ public abstract class PlaybackController { } private synchronized void initServiceRunning() { + Log.v(TAG, "initServiceRunning()"); if (initialized) { return; } @@ -148,7 +147,7 @@ public abstract class PlaybackController { } if(serviceBinder != null) { - serviceBinder.unsubscribe(); + serviceBinder.dispose(); } try { activity.unbindService(mConnection); @@ -183,27 +182,20 @@ public abstract class PlaybackController { private void bindToService() { Log.d(TAG, "Trying to connect to service"); if (serviceBinder != null) { - serviceBinder.unsubscribe(); + serviceBinder.dispose(); } serviceBinder = Observable.fromCallable(this::getPlayLastPlayedMediaIntent) - .subscribeOn(Schedulers.newThread()) + .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe(intent -> { + .subscribe(optionalIntent -> { boolean bound = false; - if (!PlaybackService.started) { - if (intent != null) { - Log.d(TAG, "Calling start service"); - ContextCompat.startForegroundService(activity, intent); - bound = activity.bindService(intent, mConnection, 0); - } else { - status = PlayerStatus.STOPPED; - setupGUI(); - handleStatus(); - } + if (optionalIntent.isPresent()) { + Log.d(TAG, "Calling bind service"); + bound = activity.bindService(optionalIntent.get(), mConnection, 0); } else { - Log.d(TAG, "PlaybackService is running, trying to connect without start command."); - bound = activity.bindService(new Intent(activity, PlaybackService.class), - mConnection, 0); + status = PlayerStatus.STOPPED; + setupGUI(); + handleStatus(); } Log.d(TAG, "Result for service binding: " + bound); }, error -> Log.e(TAG, Log.getStackTraceString(error))); @@ -213,24 +205,26 @@ public abstract class PlaybackController { * Returns an intent that starts the PlaybackService and plays the last * played media or null if no last played media could be found. */ - @Nullable private Intent getPlayLastPlayedMediaIntent() { + @NonNull + private Optional<Intent> getPlayLastPlayedMediaIntent() { Log.d(TAG, "Trying to restore last played media"); Playable media = PlayableUtils.createInstanceFromPreferences(activity); if (media == null) { Log.d(TAG, "No last played media found"); - return null; + return Optional.empty(); } + boolean fileExists = media.localFileAvailable(); boolean lastIsStream = PlaybackPreferences.getCurrentEpisodeIsStream(); if (!fileExists && !lastIsStream && media instanceof FeedMedia) { DBTasks.notifyMissingFeedMediaFile(activity, (FeedMedia) media); } - return new PlaybackServiceStarter(activity, media) + return Optional.of(new PlaybackServiceStarter(activity, media) .startWhenPrepared(false) .shouldStream(lastIsStream || !fileExists) - .getIntent(); + .getIntent()); } @@ -413,8 +407,8 @@ public abstract class PlaybackController { pauseResource = res.getResourceId(1, R.drawable.ic_pause_grey600_36dp); res.recycle(); } else { - playResource = R.drawable.ic_av_play_circle_outline_80dp; - pauseResource = R.drawable.ic_av_pause_circle_outline_80dp; + playResource = R.drawable.ic_av_play_white_80dp; + pauseResource = R.drawable.ic_av_pause_white_80dp; } Log.d(TAG, "status: " + status.toString()); @@ -588,7 +582,8 @@ public abstract class PlaybackController { .startWhenPrepared(true) .streamIfLastWasStream() .start(); - Log.w(TAG, "Play/Pause button was pressed, but playbackservice was null!"); + Log.d(TAG, "Play/Pause button was pressed, but playbackservice was null - " + + "it is likely to have been released by Android system. Restarting it."); return; } switch (status) { @@ -699,7 +694,7 @@ public abstract class PlaybackController { return org.antennapod.audio.MediaPlayer.isPrestoLibraryInstalled(activity.getApplicationContext()) || UserPreferences.useSonic() || Build.VERSION.SDK_INT >= 23 - || playbackService != null && playbackService.canSetSpeed(); + || (playbackService != null && playbackService.canSetSpeed()); } public void setPlaybackSpeed(float speed) { @@ -707,6 +702,11 @@ public abstract class PlaybackController { playbackService.setSpeed(speed); } } + public void setSkipSilence(boolean skipSilence) { + if (playbackService != null) { + playbackService.skipSilence(skipSilence); + } + } public void setVolume(float leftVolume, float rightVolume) { if (playbackService != null) { @@ -760,6 +760,7 @@ public abstract class PlaybackController { } public void notifyVideoSurfaceAbandoned() { + Log.v(TAG, "notifyVideoSurfaceAbandoned() - hasPlaybackService=" + (playbackService != null)); if (playbackService != null) { playbackService.notifyVideoSurfaceAbandoned(); } @@ -780,18 +781,28 @@ public abstract class PlaybackController { } private void initServiceNotRunning() { - if (getMedia() == null) { - return; - } - if (getMedia().getMediaType() == MediaType.AUDIO) { - TypedArray res = activity.obtainStyledAttributes(new int[]{ - de.danoeh.antennapod.core.R.attr.av_play_big}); - getPlayButton().setImageResource( - res.getResourceId(0, de.danoeh.antennapod.core.R.drawable.ic_play_arrow_grey600_36dp)); - res.recycle(); - } else { - getPlayButton().setImageResource(R.drawable.ic_av_play_circle_outline_80dp); - } + Log.v(TAG, "initServiceNotRunning()"); + mediaLoader = Maybe.create((MaybeOnSubscribe<Playable>) emitter -> { + Playable media = getMedia(); + if (media != null) { + emitter.onSuccess(media); + } else { + emitter.onComplete(); + } + }) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(media -> { + if (media.getMediaType() == MediaType.AUDIO) { + TypedArray res = activity.obtainStyledAttributes(new int[]{ + de.danoeh.antennapod.core.R.attr.av_play_big}); + getPlayButton().setImageResource( + res.getResourceId(0, de.danoeh.antennapod.core.R.drawable.ic_play_arrow_grey600_36dp)); + res.recycle(); + } else { + getPlayButton().setImageResource(R.drawable.ic_av_play_white_80dp); + } + }, error -> Log.e(TAG, Log.getStackTraceString(error))); } /** @@ -799,7 +810,7 @@ public abstract class PlaybackController { */ public class MediaPositionObserver implements Runnable { - public static final int WAITING_INTERVALL = 1000; + static final int WAITING_INTERVALL = 1000; @Override public void run() { diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackServiceStarter.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackServiceStarter.java index 3ba553d12..64cf61457 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackServiceStarter.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackServiceStarter.java @@ -2,12 +2,15 @@ package de.danoeh.antennapod.core.util.playback; import android.content.Context; import android.content.Intent; -import android.media.MediaPlayer; import android.support.v4.content.ContextCompat; +import android.util.Log; + import de.danoeh.antennapod.core.preferences.PlaybackPreferences; import de.danoeh.antennapod.core.service.playback.PlaybackService; public class PlaybackServiceStarter { + private static final String TAG = "PlaybackServiceStarter"; + private final Context context; private final Playable media; private boolean startWhenPrepared = false; @@ -64,6 +67,10 @@ public class PlaybackServiceStarter { launchIntent.putExtra(PlaybackService.EXTRA_SHOULD_STREAM, shouldStream); launchIntent.putExtra(PlaybackService.EXTRA_PREPARE_IMMEDIATELY, prepareImmediately); + if (media == null) { + Log.e(TAG, "getIntent() - media is unexpectedly null. intent:" + launchIntent); + } + return launchIntent; } diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/Timeline.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/Timeline.java index 34cfe6d05..75229b9cf 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/Timeline.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/Timeline.java @@ -7,6 +7,7 @@ import android.support.annotation.ColorInt; import android.support.annotation.NonNull; import android.text.TextUtils; import android.util.Log; +import android.util.Pair; import android.util.TypedValue; import org.jsoup.Jsoup; @@ -14,6 +15,7 @@ import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; +import java.util.ArrayList; import java.util.Locale; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -68,7 +70,7 @@ public class Timeline { private static final Pattern TIMECODE_LINK_REGEX = Pattern.compile("antennapod://timecode/((\\d+))"); private static final String TIMECODE_LINK = "<a class=\"timecode\" href=\"antennapod://timecode/%d\">%s</a>"; - private static final Pattern TIMECODE_REGEX = Pattern.compile("\\b(?:(?:(([0-9][0-9])):))?(([0-9][0-9])):(([0-9][0-9]))\\b"); + private static final Pattern TIMECODE_REGEX = Pattern.compile("\\b((\\d+):)?(\\d+):(\\d{2})\\b"); private static final Pattern LINE_BREAK_REGEX = Pattern.compile("<br */?>"); @@ -81,6 +83,7 @@ public class Timeline { * @param addTimecodes True if this method should add timecode links * @return The processed HTML string. */ + @NonNull public String processShownotes(final boolean addTimecodes) { final Playable playable = (shownotesProvider instanceof Playable) ? (Playable) shownotesProvider : null; @@ -90,8 +93,8 @@ public class Timeline { try { shownotes = shownotesProvider.loadShownotes().call(); } catch (Exception e) { - e.printStackTrace(); - return null; + Log.e(TAG, "processShownotes() - encounters exceptions unexpectedly in load, treat as if no shownotes.", e); + shownotes = ""; } if (TextUtils.isEmpty(shownotes)) { @@ -127,35 +130,12 @@ public class Timeline { // apply timecode links if (addTimecodes) { - Elements elementsWithTimeCodes = document.body().getElementsMatchingOwnText(TIMECODE_REGEX); - Log.d(TAG, "Recognized " + elementsWithTimeCodes.size() + " timecodes"); - for (Element element : elementsWithTimeCodes) { - Matcher matcherLong = TIMECODE_REGEX.matcher(element.html()); - StringBuffer buffer = new StringBuffer(); - while (matcherLong.find()) { - String h = matcherLong.group(1); - String group = matcherLong.group(0); - int time = (h != null) ? Converter.durationStringLongToMs(group) : - Converter.durationStringShortToMs(group); - - String rep; - if (playable == null || playable.getDuration() > time) { - rep = String.format(Locale.getDefault(), TIMECODE_LINK, time, group); - } else { - rep = group; - } - matcherLong.appendReplacement(buffer, rep); - } - matcherLong.appendTail(buffer); - - element.html(buffer.toString()); - } + addTimecodes(document, playable); } return document.toString(); } - /** * Returns true if the given link is a timecode link. */ @@ -186,4 +166,69 @@ public class Timeline { public void setShownotesProvider(@NonNull ShownotesProvider shownotesProvider) { this.shownotesProvider = shownotesProvider; } + + private void addTimecodes(Document document, final Playable playable) { + Elements elementsWithTimeCodes = document.body().getElementsMatchingOwnText(TIMECODE_REGEX); + Log.d(TAG, "Recognized " + elementsWithTimeCodes.size() + " timecodes"); + + if (elementsWithTimeCodes.size() == 0) { + // No elements with timecodes + return; + } + + int playableDuration = playable == null ? Integer.MAX_VALUE : playable.getDuration(); + boolean useHourFormat = true; + + if (playableDuration != Integer.MAX_VALUE) { + + // We need to decide if we are going to treat short timecodes as HH:MM or MM:SS. To do + // so we will parse all the short timecodes and see if they fit in the duration. If one + // does not we will use MM:SS, otherwise all will be parsed as HH:MM. + for (Element element : elementsWithTimeCodes) { + Matcher matcherForElement = TIMECODE_REGEX.matcher(element.html()); + while (matcherForElement.find()) { + + // We only want short timecodes right now. + if (matcherForElement.group(1) == null) { + int time = Converter.durationStringShortToMs(matcherForElement.group(0), true); + + // If the parsed timecode is greater then the duration then we know we need to + // use the minute format so we are done. + if (time > playableDuration) { + useHourFormat = false; + break; + } + } + } + + if (!useHourFormat) { + break; + } + } + } + + for (Element element : elementsWithTimeCodes) { + + Matcher matcherForElement = TIMECODE_REGEX.matcher(element.html()); + StringBuffer buffer = new StringBuffer(); + + while (matcherForElement.find()) { + String group = matcherForElement.group(0); + + int time = matcherForElement.group(1) != null + ? Converter.durationStringLongToMs(group) + : Converter.durationStringShortToMs(group, useHourFormat); + + String replacementText = group; + if (time < playableDuration) { + replacementText = String.format(Locale.getDefault(), TIMECODE_LINK, time, group); + } + + matcherForElement.appendReplacement(buffer, replacementText); + } + + matcherForElement.appendTail(buffer); + element.html(buffer.toString()); + } + } } diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/VideoPlayer.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/VideoPlayer.java index 368379509..f3c1c4f59 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/VideoPlayer.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/VideoPlayer.java @@ -7,11 +7,6 @@ public class VideoPlayer extends MediaPlayer implements IPlayer { private static final String TAG = "VideoPlayer"; @Override - public boolean canSetPitch() { - return false; - } - - @Override public boolean canSetSpeed() { return false; } @@ -22,47 +17,13 @@ public class VideoPlayer extends MediaPlayer implements IPlayer { } @Override - public float getCurrentPitchStepsAdjustment() { - return 1; - } - - @Override public float getCurrentSpeedMultiplier() { return 1; } @Override - public float getMaxSpeedMultiplier() { - return 1; - } - - @Override - public float getMinSpeedMultiplier() { - return 1; - } - - @Override - public void setEnableSpeedAdjustment(boolean enableSpeedAdjustment) throws UnsupportedOperationException { - Log.e(TAG, "Setting enable speed adjustment unsupported in video player"); - throw new UnsupportedOperationException("Setting enable speed adjustment unsupported in video player"); - } - - @Override - public void setPitchStepsAdjustment(float pitchSteps) { - Log.e(TAG, "Setting pitch steps adjustment unsupported in video player"); - throw new UnsupportedOperationException("Setting pitch steps adjustment unsupported in video player"); - } - - @Override - public void setPlaybackPitch(float f) { - Log.e(TAG, "Setting playback pitch unsupported in video player"); - throw new UnsupportedOperationException("Setting playback pitch unsupported in video player"); - } - - @Override - public void setPlaybackSpeed(float f) { - Log.e(TAG, "Setting playback speed unsupported in video player"); - throw new UnsupportedOperationException("Setting playback speed unsupported in video player"); + public void setPlaybackParams(float speed, boolean skipSilence) { + //Ignore this for non ExoPlayer implementations } @Override diff --git a/core/src/main/res/drawable-hdpi/ic_av_fast_forward_80dp.png b/core/src/main/res/drawable-hdpi/ic_av_fast_forward_80dp.png Binary files differdeleted file mode 100755 index 43783fbce..000000000 --- a/core/src/main/res/drawable-hdpi/ic_av_fast_forward_80dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-hdpi/ic_av_pause_circle_outline_80dp.png b/core/src/main/res/drawable-hdpi/ic_av_pause_circle_outline_80dp.png Binary files differdeleted file mode 100644 index 115f7ebef..000000000 --- a/core/src/main/res/drawable-hdpi/ic_av_pause_circle_outline_80dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-hdpi/ic_av_play_circle_outline_80dp.png b/core/src/main/res/drawable-hdpi/ic_av_play_circle_outline_80dp.png Binary files differdeleted file mode 100644 index 392c87bd2..000000000 --- a/core/src/main/res/drawable-hdpi/ic_av_play_circle_outline_80dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-hdpi/ic_av_rewind_80dp.png b/core/src/main/res/drawable-hdpi/ic_av_rewind_80dp.png Binary files differdeleted file mode 100755 index 41052af65..000000000 --- a/core/src/main/res/drawable-hdpi/ic_av_rewind_80dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-hdpi/ic_baseline_question_answer_white_24dp.png b/core/src/main/res/drawable-hdpi/ic_baseline_question_answer_white_24dp.png Binary files differnew file mode 100755 index 000000000..67924a5a2 --- /dev/null +++ b/core/src/main/res/drawable-hdpi/ic_baseline_question_answer_white_24dp.png diff --git a/core/src/main/res/drawable-hdpi/ic_bug_grey600_24dp.png b/core/src/main/res/drawable-hdpi/ic_bug_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..daadfb35f --- /dev/null +++ b/core/src/main/res/drawable-hdpi/ic_bug_grey600_24dp.png diff --git a/core/src/main/res/drawable-hdpi/ic_bug_white_24dp.png b/core/src/main/res/drawable-hdpi/ic_bug_white_24dp.png Binary files differnew file mode 100644 index 000000000..549f67bf4 --- /dev/null +++ b/core/src/main/res/drawable-hdpi/ic_bug_white_24dp.png diff --git a/core/src/main/res/drawable-hdpi/ic_cellphone_text_grey600_24dp.png b/core/src/main/res/drawable-hdpi/ic_cellphone_text_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..71ccc26ea --- /dev/null +++ b/core/src/main/res/drawable-hdpi/ic_cellphone_text_grey600_24dp.png diff --git a/core/src/main/res/drawable-hdpi/ic_cellphone_text_white_24dp.png b/core/src/main/res/drawable-hdpi/ic_cellphone_text_white_24dp.png Binary files differnew file mode 100644 index 000000000..70e52c60b --- /dev/null +++ b/core/src/main/res/drawable-hdpi/ic_cellphone_text_white_24dp.png diff --git a/core/src/main/res/drawable-hdpi/ic_check_box_grey600_24dp.png b/core/src/main/res/drawable-hdpi/ic_check_box_grey600_24dp.png Binary files differdeleted file mode 100644 index 187a426a8..000000000 --- a/core/src/main/res/drawable-hdpi/ic_check_box_grey600_24dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-hdpi/ic_check_box_outline_blank_grey600_24dp.png b/core/src/main/res/drawable-hdpi/ic_check_box_outline_blank_grey600_24dp.png Binary files differdeleted file mode 100644 index 076773bca..000000000 --- a/core/src/main/res/drawable-hdpi/ic_check_box_outline_blank_grey600_24dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-hdpi/ic_check_box_outline_blank_white_24dp.png b/core/src/main/res/drawable-hdpi/ic_check_box_outline_blank_white_24dp.png Binary files differdeleted file mode 100644 index ecaf0d5be..000000000 --- a/core/src/main/res/drawable-hdpi/ic_check_box_outline_blank_white_24dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-hdpi/ic_check_box_white_24dp.png b/core/src/main/res/drawable-hdpi/ic_check_box_white_24dp.png Binary files differdeleted file mode 100644 index 5ce64cc5f..000000000 --- a/core/src/main/res/drawable-hdpi/ic_check_box_white_24dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-hdpi/ic_format_list_bulleted_grey600_24dp.png b/core/src/main/res/drawable-hdpi/ic_format_list_bulleted_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..3668c9a00 --- /dev/null +++ b/core/src/main/res/drawable-hdpi/ic_format_list_bulleted_grey600_24dp.png diff --git a/core/src/main/res/drawable-hdpi/ic_format_list_bulleted_white_24dp.png b/core/src/main/res/drawable-hdpi/ic_format_list_bulleted_white_24dp.png Binary files differnew file mode 100644 index 000000000..a1a2c5b68 --- /dev/null +++ b/core/src/main/res/drawable-hdpi/ic_format_list_bulleted_white_24dp.png diff --git a/core/src/main/res/drawable-hdpi/ic_forum_grey600_24dp.png b/core/src/main/res/drawable-hdpi/ic_forum_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..da5398d15 --- /dev/null +++ b/core/src/main/res/drawable-hdpi/ic_forum_grey600_24dp.png diff --git a/core/src/main/res/drawable-hdpi/ic_indeterminate_check_box_grey600_24dp.png b/core/src/main/res/drawable-hdpi/ic_indeterminate_check_box_grey600_24dp.png Binary files differdeleted file mode 100644 index e56fbf224..000000000 --- a/core/src/main/res/drawable-hdpi/ic_indeterminate_check_box_grey600_24dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-hdpi/ic_indeterminate_check_box_white_24dp.png b/core/src/main/res/drawable-hdpi/ic_indeterminate_check_box_white_24dp.png Binary files differdeleted file mode 100644 index dccf44930..000000000 --- a/core/src/main/res/drawable-hdpi/ic_indeterminate_check_box_white_24dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-mdpi/ic_av_fast_forward_80dp.png b/core/src/main/res/drawable-mdpi/ic_av_fast_forward_80dp.png Binary files differdeleted file mode 100755 index 0bf060d89..000000000 --- a/core/src/main/res/drawable-mdpi/ic_av_fast_forward_80dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-mdpi/ic_av_pause_circle_outline_80dp.png b/core/src/main/res/drawable-mdpi/ic_av_pause_circle_outline_80dp.png Binary files differdeleted file mode 100644 index 1e71c271f..000000000 --- a/core/src/main/res/drawable-mdpi/ic_av_pause_circle_outline_80dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-mdpi/ic_av_play_circle_outline_80dp.png b/core/src/main/res/drawable-mdpi/ic_av_play_circle_outline_80dp.png Binary files differdeleted file mode 100644 index d305f0c69..000000000 --- a/core/src/main/res/drawable-mdpi/ic_av_play_circle_outline_80dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-mdpi/ic_av_rewind_80dp.png b/core/src/main/res/drawable-mdpi/ic_av_rewind_80dp.png Binary files differdeleted file mode 100755 index 99ac9f3c9..000000000 --- a/core/src/main/res/drawable-mdpi/ic_av_rewind_80dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-mdpi/ic_baseline_question_answer_white_24dp.png b/core/src/main/res/drawable-mdpi/ic_baseline_question_answer_white_24dp.png Binary files differnew file mode 100755 index 000000000..e87df752e --- /dev/null +++ b/core/src/main/res/drawable-mdpi/ic_baseline_question_answer_white_24dp.png diff --git a/core/src/main/res/drawable-mdpi/ic_bug_grey600_24dp.png b/core/src/main/res/drawable-mdpi/ic_bug_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..4b372a4e3 --- /dev/null +++ b/core/src/main/res/drawable-mdpi/ic_bug_grey600_24dp.png diff --git a/core/src/main/res/drawable-mdpi/ic_bug_white_24dp.png b/core/src/main/res/drawable-mdpi/ic_bug_white_24dp.png Binary files differnew file mode 100644 index 000000000..9d7603552 --- /dev/null +++ b/core/src/main/res/drawable-mdpi/ic_bug_white_24dp.png diff --git a/core/src/main/res/drawable-mdpi/ic_cellphone_text_grey600_24dp.png b/core/src/main/res/drawable-mdpi/ic_cellphone_text_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..c26da2ce2 --- /dev/null +++ b/core/src/main/res/drawable-mdpi/ic_cellphone_text_grey600_24dp.png diff --git a/core/src/main/res/drawable-mdpi/ic_cellphone_text_white_24dp.png b/core/src/main/res/drawable-mdpi/ic_cellphone_text_white_24dp.png Binary files differnew file mode 100644 index 000000000..8569a642d --- /dev/null +++ b/core/src/main/res/drawable-mdpi/ic_cellphone_text_white_24dp.png diff --git a/core/src/main/res/drawable-mdpi/ic_check_box_grey600_24dp.png b/core/src/main/res/drawable-mdpi/ic_check_box_grey600_24dp.png Binary files differdeleted file mode 100644 index d5bdfa433..000000000 --- a/core/src/main/res/drawable-mdpi/ic_check_box_grey600_24dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-mdpi/ic_check_box_outline_blank_grey600_24dp.png b/core/src/main/res/drawable-mdpi/ic_check_box_outline_blank_grey600_24dp.png Binary files differdeleted file mode 100644 index aefe5b6c1..000000000 --- a/core/src/main/res/drawable-mdpi/ic_check_box_outline_blank_grey600_24dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-mdpi/ic_check_box_outline_blank_white_24dp.png b/core/src/main/res/drawable-mdpi/ic_check_box_outline_blank_white_24dp.png Binary files differdeleted file mode 100644 index a3a588c64..000000000 --- a/core/src/main/res/drawable-mdpi/ic_check_box_outline_blank_white_24dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-mdpi/ic_check_box_white_24dp.png b/core/src/main/res/drawable-mdpi/ic_check_box_white_24dp.png Binary files differdeleted file mode 100644 index dc94cdbf4..000000000 --- a/core/src/main/res/drawable-mdpi/ic_check_box_white_24dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-mdpi/ic_format_list_bulleted_grey600_24dp.png b/core/src/main/res/drawable-mdpi/ic_format_list_bulleted_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..726eae499 --- /dev/null +++ b/core/src/main/res/drawable-mdpi/ic_format_list_bulleted_grey600_24dp.png diff --git a/core/src/main/res/drawable-mdpi/ic_format_list_bulleted_white_24dp.png b/core/src/main/res/drawable-mdpi/ic_format_list_bulleted_white_24dp.png Binary files differnew file mode 100644 index 000000000..0cc401dff --- /dev/null +++ b/core/src/main/res/drawable-mdpi/ic_format_list_bulleted_white_24dp.png diff --git a/core/src/main/res/drawable-mdpi/ic_forum_grey600_24dp.png b/core/src/main/res/drawable-mdpi/ic_forum_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..d3bcfe7b6 --- /dev/null +++ b/core/src/main/res/drawable-mdpi/ic_forum_grey600_24dp.png diff --git a/core/src/main/res/drawable-mdpi/ic_indeterminate_check_box_grey600_24dp.png b/core/src/main/res/drawable-mdpi/ic_indeterminate_check_box_grey600_24dp.png Binary files differdeleted file mode 100644 index 0e6ce58e3..000000000 --- a/core/src/main/res/drawable-mdpi/ic_indeterminate_check_box_grey600_24dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-mdpi/ic_indeterminate_check_box_white_24dp.png b/core/src/main/res/drawable-mdpi/ic_indeterminate_check_box_white_24dp.png Binary files differdeleted file mode 100644 index c496b4648..000000000 --- a/core/src/main/res/drawable-mdpi/ic_indeterminate_check_box_white_24dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-v21/overlay_button_circle_background.xml b/core/src/main/res/drawable-v21/overlay_button_circle_background.xml deleted file mode 100644 index c121690df..000000000 --- a/core/src/main/res/drawable-v21/overlay_button_circle_background.xml +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> - -<shape xmlns:android="http://schemas.android.com/apk/res/android" - android:shape="rectangle"> - <gradient - android:type="radial" - android:gradientRadius="37.5%p" - android:startColor="#000000" - android:endColor="@android:color/transparent"/> -</shape>
\ No newline at end of file diff --git a/core/src/main/res/drawable-xhdpi/ic_av_fast_forward_80dp.png b/core/src/main/res/drawable-xhdpi/ic_av_fast_forward_80dp.png Binary files differdeleted file mode 100755 index 270dc9bf8..000000000 --- a/core/src/main/res/drawable-xhdpi/ic_av_fast_forward_80dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-xhdpi/ic_av_pause_circle_outline_80dp.png b/core/src/main/res/drawable-xhdpi/ic_av_pause_circle_outline_80dp.png Binary files differdeleted file mode 100644 index 2e0b8ff6f..000000000 --- a/core/src/main/res/drawable-xhdpi/ic_av_pause_circle_outline_80dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-xhdpi/ic_av_play_circle_outline_80dp.png b/core/src/main/res/drawable-xhdpi/ic_av_play_circle_outline_80dp.png Binary files differdeleted file mode 100644 index 990ae524a..000000000 --- a/core/src/main/res/drawable-xhdpi/ic_av_play_circle_outline_80dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-xhdpi/ic_av_rewind_80dp.png b/core/src/main/res/drawable-xhdpi/ic_av_rewind_80dp.png Binary files differdeleted file mode 100755 index d94a40811..000000000 --- a/core/src/main/res/drawable-xhdpi/ic_av_rewind_80dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-xhdpi/ic_baseline_question_answer_white_24dp.png b/core/src/main/res/drawable-xhdpi/ic_baseline_question_answer_white_24dp.png Binary files differnew file mode 100755 index 000000000..731f89c83 --- /dev/null +++ b/core/src/main/res/drawable-xhdpi/ic_baseline_question_answer_white_24dp.png diff --git a/core/src/main/res/drawable-xhdpi/ic_bug_grey600_24dp.png b/core/src/main/res/drawable-xhdpi/ic_bug_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..49e5deaa9 --- /dev/null +++ b/core/src/main/res/drawable-xhdpi/ic_bug_grey600_24dp.png diff --git a/core/src/main/res/drawable-xhdpi/ic_bug_white_24dp.png b/core/src/main/res/drawable-xhdpi/ic_bug_white_24dp.png Binary files differnew file mode 100644 index 000000000..7416bde03 --- /dev/null +++ b/core/src/main/res/drawable-xhdpi/ic_bug_white_24dp.png diff --git a/core/src/main/res/drawable-xhdpi/ic_cellphone_text_grey600_24dp.png b/core/src/main/res/drawable-xhdpi/ic_cellphone_text_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..fc8219fa9 --- /dev/null +++ b/core/src/main/res/drawable-xhdpi/ic_cellphone_text_grey600_24dp.png diff --git a/core/src/main/res/drawable-xhdpi/ic_cellphone_text_white_24dp.png b/core/src/main/res/drawable-xhdpi/ic_cellphone_text_white_24dp.png Binary files differnew file mode 100644 index 000000000..9468fa9a9 --- /dev/null +++ b/core/src/main/res/drawable-xhdpi/ic_cellphone_text_white_24dp.png diff --git a/core/src/main/res/drawable-xhdpi/ic_check_box_grey600_24dp.png b/core/src/main/res/drawable-xhdpi/ic_check_box_grey600_24dp.png Binary files differdeleted file mode 100644 index e46ab71b4..000000000 --- a/core/src/main/res/drawable-xhdpi/ic_check_box_grey600_24dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-xhdpi/ic_check_box_outline_blank_grey600_24dp.png b/core/src/main/res/drawable-xhdpi/ic_check_box_outline_blank_grey600_24dp.png Binary files differdeleted file mode 100644 index bb15a903a..000000000 --- a/core/src/main/res/drawable-xhdpi/ic_check_box_outline_blank_grey600_24dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-xhdpi/ic_check_box_outline_blank_white_24dp.png b/core/src/main/res/drawable-xhdpi/ic_check_box_outline_blank_white_24dp.png Binary files differdeleted file mode 100644 index 336682497..000000000 --- a/core/src/main/res/drawable-xhdpi/ic_check_box_outline_blank_white_24dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-xhdpi/ic_check_box_white_24dp.png b/core/src/main/res/drawable-xhdpi/ic_check_box_white_24dp.png Binary files differdeleted file mode 100644 index cdb4a3181..000000000 --- a/core/src/main/res/drawable-xhdpi/ic_check_box_white_24dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-xhdpi/ic_format_list_bulleted_grey600_24dp.png b/core/src/main/res/drawable-xhdpi/ic_format_list_bulleted_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..322adb6e0 --- /dev/null +++ b/core/src/main/res/drawable-xhdpi/ic_format_list_bulleted_grey600_24dp.png diff --git a/core/src/main/res/drawable-xhdpi/ic_format_list_bulleted_white_24dp.png b/core/src/main/res/drawable-xhdpi/ic_format_list_bulleted_white_24dp.png Binary files differnew file mode 100644 index 000000000..c25860017 --- /dev/null +++ b/core/src/main/res/drawable-xhdpi/ic_format_list_bulleted_white_24dp.png diff --git a/core/src/main/res/drawable-xhdpi/ic_forum_grey600_24dp.png b/core/src/main/res/drawable-xhdpi/ic_forum_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..ac6876140 --- /dev/null +++ b/core/src/main/res/drawable-xhdpi/ic_forum_grey600_24dp.png diff --git a/core/src/main/res/drawable-xhdpi/ic_indeterminate_check_box_grey600_24dp.png b/core/src/main/res/drawable-xhdpi/ic_indeterminate_check_box_grey600_24dp.png Binary files differdeleted file mode 100644 index 3b0d3aa1a..000000000 --- a/core/src/main/res/drawable-xhdpi/ic_indeterminate_check_box_grey600_24dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-xhdpi/ic_indeterminate_check_box_white_24dp.png b/core/src/main/res/drawable-xhdpi/ic_indeterminate_check_box_white_24dp.png Binary files differdeleted file mode 100644 index 57e478e9f..000000000 --- a/core/src/main/res/drawable-xhdpi/ic_indeterminate_check_box_white_24dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-xxhdpi/ic_av_fast_forward_80dp.png b/core/src/main/res/drawable-xxhdpi/ic_av_fast_forward_80dp.png Binary files differdeleted file mode 100755 index 3b55c5d55..000000000 --- a/core/src/main/res/drawable-xxhdpi/ic_av_fast_forward_80dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-xxhdpi/ic_av_pause_circle_outline_80dp.png b/core/src/main/res/drawable-xxhdpi/ic_av_pause_circle_outline_80dp.png Binary files differdeleted file mode 100644 index 76cc4db32..000000000 --- a/core/src/main/res/drawable-xxhdpi/ic_av_pause_circle_outline_80dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-xxhdpi/ic_av_play_circle_outline_80dp.png b/core/src/main/res/drawable-xxhdpi/ic_av_play_circle_outline_80dp.png Binary files differdeleted file mode 100644 index eebf0110c..000000000 --- a/core/src/main/res/drawable-xxhdpi/ic_av_play_circle_outline_80dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-xxhdpi/ic_av_rewind_80dp.png b/core/src/main/res/drawable-xxhdpi/ic_av_rewind_80dp.png Binary files differdeleted file mode 100755 index 38a5fc264..000000000 --- a/core/src/main/res/drawable-xxhdpi/ic_av_rewind_80dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-xxhdpi/ic_baseline_question_answer_white_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_baseline_question_answer_white_24dp.png Binary files differnew file mode 100755 index 000000000..255b82707 --- /dev/null +++ b/core/src/main/res/drawable-xxhdpi/ic_baseline_question_answer_white_24dp.png diff --git a/core/src/main/res/drawable-xxhdpi/ic_bug_grey600_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_bug_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..7bbf31c6b --- /dev/null +++ b/core/src/main/res/drawable-xxhdpi/ic_bug_grey600_24dp.png diff --git a/core/src/main/res/drawable-xxhdpi/ic_bug_white_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_bug_white_24dp.png Binary files differnew file mode 100644 index 000000000..fe2c2bee3 --- /dev/null +++ b/core/src/main/res/drawable-xxhdpi/ic_bug_white_24dp.png diff --git a/core/src/main/res/drawable-xxhdpi/ic_cellphone_text_grey600_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_cellphone_text_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..82a453f05 --- /dev/null +++ b/core/src/main/res/drawable-xxhdpi/ic_cellphone_text_grey600_24dp.png diff --git a/core/src/main/res/drawable-xxhdpi/ic_cellphone_text_white_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_cellphone_text_white_24dp.png Binary files differnew file mode 100644 index 000000000..d1f990a65 --- /dev/null +++ b/core/src/main/res/drawable-xxhdpi/ic_cellphone_text_white_24dp.png diff --git a/core/src/main/res/drawable-xxhdpi/ic_check_box_grey600_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_check_box_grey600_24dp.png Binary files differdeleted file mode 100644 index 7093f28d5..000000000 --- a/core/src/main/res/drawable-xxhdpi/ic_check_box_grey600_24dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-xxhdpi/ic_check_box_outline_blank_grey600_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_check_box_outline_blank_grey600_24dp.png Binary files differdeleted file mode 100644 index 050e6cd6c..000000000 --- a/core/src/main/res/drawable-xxhdpi/ic_check_box_outline_blank_grey600_24dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-xxhdpi/ic_check_box_outline_blank_white_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_check_box_outline_blank_white_24dp.png Binary files differdeleted file mode 100644 index 56d380575..000000000 --- a/core/src/main/res/drawable-xxhdpi/ic_check_box_outline_blank_white_24dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-xxhdpi/ic_check_box_white_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_check_box_white_24dp.png Binary files differdeleted file mode 100644 index ba9af5265..000000000 --- a/core/src/main/res/drawable-xxhdpi/ic_check_box_white_24dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-xxhdpi/ic_format_list_bulleted_grey600_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_format_list_bulleted_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..87f8073ea --- /dev/null +++ b/core/src/main/res/drawable-xxhdpi/ic_format_list_bulleted_grey600_24dp.png diff --git a/core/src/main/res/drawable-xxhdpi/ic_format_list_bulleted_white_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_format_list_bulleted_white_24dp.png Binary files differnew file mode 100644 index 000000000..da3433c61 --- /dev/null +++ b/core/src/main/res/drawable-xxhdpi/ic_format_list_bulleted_white_24dp.png diff --git a/core/src/main/res/drawable-xxhdpi/ic_forum_grey600_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_forum_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..7a3204693 --- /dev/null +++ b/core/src/main/res/drawable-xxhdpi/ic_forum_grey600_24dp.png diff --git a/core/src/main/res/drawable-xxhdpi/ic_indeterminate_check_box_grey600_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_indeterminate_check_box_grey600_24dp.png Binary files differdeleted file mode 100644 index 2e7d39a5a..000000000 --- a/core/src/main/res/drawable-xxhdpi/ic_indeterminate_check_box_grey600_24dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-xxhdpi/ic_indeterminate_check_box_white_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_indeterminate_check_box_white_24dp.png Binary files differdeleted file mode 100644 index ec4981f5c..000000000 --- a/core/src/main/res/drawable-xxhdpi/ic_indeterminate_check_box_white_24dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-xxxhdpi/ic_av_fast_forward_80dp.png b/core/src/main/res/drawable-xxxhdpi/ic_av_fast_forward_80dp.png Binary files differdeleted file mode 100755 index 1c915d9dd..000000000 --- a/core/src/main/res/drawable-xxxhdpi/ic_av_fast_forward_80dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-xxxhdpi/ic_av_rewind_80dp.png b/core/src/main/res/drawable-xxxhdpi/ic_av_rewind_80dp.png Binary files differdeleted file mode 100755 index 190bb0f4c..000000000 --- a/core/src/main/res/drawable-xxxhdpi/ic_av_rewind_80dp.png +++ /dev/null diff --git a/core/src/main/res/drawable-xxxhdpi/ic_baseline_question_answer_white_24db.png b/core/src/main/res/drawable-xxxhdpi/ic_baseline_question_answer_white_24db.png Binary files differnew file mode 100755 index 000000000..0d697e0f9 --- /dev/null +++ b/core/src/main/res/drawable-xxxhdpi/ic_baseline_question_answer_white_24db.png diff --git a/core/src/main/res/drawable-xxxhdpi/ic_bug_grey600_24dp.png b/core/src/main/res/drawable-xxxhdpi/ic_bug_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..b612b2aa9 --- /dev/null +++ b/core/src/main/res/drawable-xxxhdpi/ic_bug_grey600_24dp.png diff --git a/core/src/main/res/drawable-xxxhdpi/ic_bug_white_24dp.png b/core/src/main/res/drawable-xxxhdpi/ic_bug_white_24dp.png Binary files differnew file mode 100644 index 000000000..32a3f5511 --- /dev/null +++ b/core/src/main/res/drawable-xxxhdpi/ic_bug_white_24dp.png diff --git a/core/src/main/res/drawable-xxxhdpi/ic_cellphone_text_grey600_24dp.png b/core/src/main/res/drawable-xxxhdpi/ic_cellphone_text_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..829b15396 --- /dev/null +++ b/core/src/main/res/drawable-xxxhdpi/ic_cellphone_text_grey600_24dp.png diff --git a/core/src/main/res/drawable-xxxhdpi/ic_cellphone_text_white_24dp.png b/core/src/main/res/drawable-xxxhdpi/ic_cellphone_text_white_24dp.png Binary files differnew file mode 100644 index 000000000..baa783a92 --- /dev/null +++ b/core/src/main/res/drawable-xxxhdpi/ic_cellphone_text_white_24dp.png diff --git a/core/src/main/res/drawable-xxxhdpi/ic_format_list_bulleted_grey600_24dp.png b/core/src/main/res/drawable-xxxhdpi/ic_format_list_bulleted_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..c56590fe0 --- /dev/null +++ b/core/src/main/res/drawable-xxxhdpi/ic_format_list_bulleted_grey600_24dp.png diff --git a/core/src/main/res/drawable-xxxhdpi/ic_format_list_bulleted_white_24dp.png b/core/src/main/res/drawable-xxxhdpi/ic_format_list_bulleted_white_24dp.png Binary files differnew file mode 100644 index 000000000..5deea3286 --- /dev/null +++ b/core/src/main/res/drawable-xxxhdpi/ic_format_list_bulleted_white_24dp.png diff --git a/core/src/main/res/drawable-xxxhdpi/ic_forum_grey600_24dp.png b/core/src/main/res/drawable-xxxhdpi/ic_forum_grey600_24dp.png Binary files differnew file mode 100644 index 000000000..0ae33696b --- /dev/null +++ b/core/src/main/res/drawable-xxxhdpi/ic_forum_grey600_24dp.png diff --git a/core/src/main/res/drawable/ic_av_fast_forward_white_80dp.xml b/core/src/main/res/drawable/ic_av_fast_forward_white_80dp.xml new file mode 100644 index 000000000..a60145f1d --- /dev/null +++ b/core/src/main/res/drawable/ic_av_fast_forward_white_80dp.xml @@ -0,0 +1,10 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:height="80dp" + android:width="80dp" + android:viewportHeight="24.0" + android:viewportWidth="24.0"> + <path android:pathData="M4,18l8.5,-6L4,6v12zM13,6v12l8.5,-6L13,6z" + android:fillColor="#FFFFFFFF" + android:strokeColor="#505050" + android:strokeWidth="0.75"/> +</vector> diff --git a/core/src/main/res/drawable/ic_av_fast_rewind_white_80dp.xml b/core/src/main/res/drawable/ic_av_fast_rewind_white_80dp.xml new file mode 100644 index 000000000..4609e0c3e --- /dev/null +++ b/core/src/main/res/drawable/ic_av_fast_rewind_white_80dp.xml @@ -0,0 +1,10 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:viewportHeight="24.0" + android:viewportWidth="24.0" + android:width="80dp" + android:height="80dp"> + <path android:pathData="M11,18L11,6l-8.5,6 8.5,6zM11.5,12l8.5,6L20,6l-8.5,6z" + android:fillColor="#FFFFFFFF" + android:strokeColor="#505050" + android:strokeWidth="0.75"/> +</vector> diff --git a/core/src/main/res/drawable/ic_av_pause_white_80dp.xml b/core/src/main/res/drawable/ic_av_pause_white_80dp.xml new file mode 100644 index 000000000..ad8847cb7 --- /dev/null +++ b/core/src/main/res/drawable/ic_av_pause_white_80dp.xml @@ -0,0 +1,10 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:height="80dp" + android:width="80dp" + android:viewportHeight="24.0" + android:viewportWidth="24.0"> + <path android:pathData="M6,19h4L10,5L6,5v14zM14,5v14h4L18,5h-4z" + android:fillColor="#FFFFFFFF" + android:strokeColor="#505050" + android:strokeWidth="0.75"/> +</vector> diff --git a/core/src/main/res/drawable/ic_av_play_white_80dp.xml b/core/src/main/res/drawable/ic_av_play_white_80dp.xml new file mode 100644 index 000000000..9f9dbb1b1 --- /dev/null +++ b/core/src/main/res/drawable/ic_av_play_white_80dp.xml @@ -0,0 +1,10 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:height="80dp" + android:width="80dp" + android:viewportHeight="24.0" + android:viewportWidth="24.0"> + <path android:pathData="M8,5v14l11,-7z" + android:fillColor="#FFFFFFFF" + android:strokeColor="#505050" + android:strokeWidth="0.75"/> +</vector> diff --git a/core/src/main/res/drawable/ic_fab_edit.xml b/core/src/main/res/drawable/ic_fab_edit.xml new file mode 100644 index 000000000..cb2e394b0 --- /dev/null +++ b/core/src/main/res/drawable/ic_fab_edit.xml @@ -0,0 +1,5 @@ +<vector android:height="24dp" + android:viewportHeight="24.0" android:viewportWidth="24.0" + android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="#FFFFFFFF" android:pathData="M3,17.25V21h3.75L17.81,9.94l-3.75,-3.75L3,17.25zM20.71,7.04c0.39,-0.39 0.39,-1.02 0,-1.41l-2.34,-2.34c-0.39,-0.39 -1.02,-0.39 -1.41,0l-1.83,1.83 3.75,3.75 1.83,-1.83z"/> +</vector> diff --git a/core/src/main/res/drawable/ic_remove_grey600.xml b/core/src/main/res/drawable/ic_remove_grey600.xml new file mode 100644 index 000000000..5a6b2af6b --- /dev/null +++ b/core/src/main/res/drawable/ic_remove_grey600.xml @@ -0,0 +1,5 @@ +<vector android:height="24dp" + android:viewportHeight="24.0" android:viewportWidth="24.0" + android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="#FF757575" android:pathData="M19,13H5v-2h14v2z"/> +</vector> diff --git a/core/src/main/res/drawable/ic_remove_white.xml b/core/src/main/res/drawable/ic_remove_white.xml new file mode 100644 index 000000000..d812091fb --- /dev/null +++ b/core/src/main/res/drawable/ic_remove_white.xml @@ -0,0 +1,5 @@ +<vector android:height="24dp" + android:viewportHeight="24.0" android:viewportWidth="24.0" + android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="#FFFFFFFF" android:pathData="M19,13H5v-2h14v2z"/> +</vector> diff --git a/core/src/main/res/drawable/ic_select_all_grey600.xml b/core/src/main/res/drawable/ic_select_all_grey600.xml new file mode 100644 index 000000000..96e9a2de5 --- /dev/null +++ b/core/src/main/res/drawable/ic_select_all_grey600.xml @@ -0,0 +1,9 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + <path + android:fillColor="#FF757575" + android:pathData="M3,5h2L5,3c-1.1,0 -2,0.9 -2,2zM3,13h2v-2L3,11v2zM7,21h2v-2L7,19v2zM3,9h2L5,7L3,7v2zM13,3h-2v2h2L13,3zM19,3v2h2c0,-1.1 -0.9,-2 -2,-2zM5,21v-2L3,19c0,1.1 0.9,2 2,2zM3,17h2v-2L3,15v2zM9,3L7,3v2h2L9,3zM11,21h2v-2h-2v2zM19,13h2v-2h-2v2zM19,21c1.1,0 2,-0.9 2,-2h-2v2zM19,9h2L21,7h-2v2zM19,17h2v-2h-2v2zM15,21h2v-2h-2v2zM15,5h2L17,3h-2v2zM7,17h10L17,7L7,7v10zM9,9h6v6L9,15L9,9z"/> +</vector> diff --git a/core/src/main/res/drawable/ic_select_all_white.xml b/core/src/main/res/drawable/ic_select_all_white.xml new file mode 100644 index 000000000..0fc49c923 --- /dev/null +++ b/core/src/main/res/drawable/ic_select_all_white.xml @@ -0,0 +1,9 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + <path + android:fillColor="#FFFFFFFF" + android:pathData="M3,5h2L5,3c-1.1,0 -2,0.9 -2,2zM3,13h2v-2L3,11v2zM7,21h2v-2L7,19v2zM3,9h2L5,7L3,7v2zM13,3h-2v2h2L13,3zM19,3v2h2c0,-1.1 -0.9,-2 -2,-2zM5,21v-2L3,19c0,1.1 0.9,2 2,2zM3,17h2v-2L3,15v2zM9,3L7,3v2h2L9,3zM11,21h2v-2h-2v2zM19,13h2v-2h-2v2zM19,21c1.1,0 2,-0.9 2,-2h-2v2zM19,9h2L21,7h-2v2zM19,17h2v-2h-2v2zM15,21h2v-2h-2v2zM15,5h2L17,3h-2v2zM7,17h10L17,7L7,7v10zM9,9h6v6L9,15L9,9z"/> +</vector> diff --git a/core/src/main/res/drawable/ic_select_none_grey600.xml b/core/src/main/res/drawable/ic_select_none_grey600.xml new file mode 100644 index 000000000..8057f73ca --- /dev/null +++ b/core/src/main/res/drawable/ic_select_none_grey600.xml @@ -0,0 +1,11 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + <path + android:fillColor="#FF757575" + android:pathData="m3,5l2,0l0,-2c-1.1,0 -2,0.9 -2,2zm0,8l2,0l0,-2l-2,0l0,2zm4,8l2,0l0,-2l-2,0l0,2zm-4,-12l2,0l0,-2l-2,0l0,2zm10,-6l-2,0l0,2l2,0l0,-2zm6,0l0,2l2,0c0,-1.1 -0.9,-2 -2,-2zm-14,18l0,-2l-2,0c0,1.1 0.9,2 2,2zm-2,-4l2,0l0,-2l-2,0l0,2zm6,-14l-2,0l0,2l2,0l0,-2zm2,18l2,0l0,-2l-2,0l0,2zm8,-8l2,0l0,-2l-2,0l0,2zm0,8c1.1,0 2,-0.9 2,-2l-2,0l0,2zm0,-12l2,0l0,-2l-2,0l0,2zm0,8l2,0l0,-2l-2,0l0,2zm-4,4l2,0l0,-2l-2,0l0,2zm0,-16l2,0l0,-2l-2,0l0,2z"/> + <path android:fillColor="#FF757575" + android:pathData="M17,8.41L15.59,7 12,10.59 8.41,7 7,8.41 10.59,12 7,15.59 8.41,17 12,13.41 15.59,17 17,15.59 13.41,12z"/> +</vector> diff --git a/core/src/main/res/drawable/ic_select_none_white.xml b/core/src/main/res/drawable/ic_select_none_white.xml new file mode 100644 index 000000000..3e1f6b884 --- /dev/null +++ b/core/src/main/res/drawable/ic_select_none_white.xml @@ -0,0 +1,11 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + <path + android:fillColor="#FFFFFFFF" + android:pathData="m3,5l2,0l0,-2c-1.1,0 -2,0.9 -2,2zm0,8l2,0l0,-2l-2,0l0,2zm4,8l2,0l0,-2l-2,0l0,2zm-4,-12l2,0l0,-2l-2,0l0,2zm10,-6l-2,0l0,2l2,0l0,-2zm6,0l0,2l2,0c0,-1.1 -0.9,-2 -2,-2zm-14,18l0,-2l-2,0c0,1.1 0.9,2 2,2zm-2,-4l2,0l0,-2l-2,0l0,2zm6,-14l-2,0l0,2l2,0l0,-2zm2,18l2,0l0,-2l-2,0l0,2zm8,-8l2,0l0,-2l-2,0l0,2zm0,8c1.1,0 2,-0.9 2,-2l-2,0l0,2zm0,-12l2,0l0,-2l-2,0l0,2zm0,8l2,0l0,-2l-2,0l0,2zm-4,4l2,0l0,-2l-2,0l0,2zm0,-16l2,0l0,-2l-2,0l0,2z"/> + <path android:fillColor="#FFFFFFFF" + android:pathData="M17,8.41L15.59,7 12,10.59 8.41,7 7,8.41 10.59,12 7,15.59 8.41,17 12,13.41 15.59,17 17,15.59 13.41,12z"/> +</vector> diff --git a/core/src/main/res/drawable/overlay_button_circle_background.xml b/core/src/main/res/drawable/overlay_button_circle_background.xml deleted file mode 100644 index 90c51472c..000000000 --- a/core/src/main/res/drawable/overlay_button_circle_background.xml +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> - -<shape xmlns:android="http://schemas.android.com/apk/res/android" - android:shape="rectangle"> - <gradient - android:type="radial" - android:gradientRadius="60" - android:startColor="#000000" - android:endColor="@android:color/transparent"/> -</shape>
\ No newline at end of file diff --git a/core/src/main/res/drawable/overlay_drawable_dark_trueblack.xml b/core/src/main/res/drawable/overlay_drawable_dark_trueblack.xml new file mode 100644 index 000000000..5f58e8421 --- /dev/null +++ b/core/src/main/res/drawable/overlay_drawable_dark_trueblack.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8"?> +<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > + + <item> + <shape android:shape="rectangle" > + <solid android:color="#45B3E1" /> + </shape> + </item> + <item android:top="1dp"> + <shape android:shape="rectangle" > + <solid android:color="@color/black" /> + </shape> + </item> + +</layer-list>
\ No newline at end of file diff --git a/core/src/main/res/drawable/progress_bar_horizontal_trueblack.xml b/core/src/main/res/drawable/progress_bar_horizontal_trueblack.xml new file mode 100644 index 000000000..604bb2655 --- /dev/null +++ b/core/src/main/res/drawable/progress_bar_horizontal_trueblack.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8"?> +<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:id="@android:id/background"> + <shape> + <solid android:color="#000000"/> + </shape> + </item> + <item android:id="@android:id/progress"> + <clip> + <shape> + <solid android:color="@color/holo_blue_dark"/> + </shape> + </clip> + </item> +</layer-list> diff --git a/core/src/main/res/values-ar/strings.xml b/core/src/main/res/values-ar/strings.xml index fe932e959..5c29b5119 100644 --- a/core/src/main/res/values-ar/strings.xml +++ b/core/src/main/res/values-ar/strings.xml @@ -1,16 +1,34 @@ <?xml version='1.0' encoding='UTF-8'?> <resources xmlns:tools="http://schemas.android.com/tools"> <!--Activitiy and fragment titles--> + <string name="feed_update_receiver_name">ŲŖŲŲÆŁŲ« Ų§ŁŲŖŲ³Ų¬ŁŁ</string> + <string name="feeds_label">Ł
ŲŗŲ°ŁŲ§ŲŖ</string> + <string name="statistics_label">Ų„ŲŲµŲ§Ų¦ŁŲ§ŲŖ</string> + <string name="add_feed_label">Ų„Ų¶Ų§ŁŲ© ŲØŁŲÆŁŲ§Ų³ŲŖ</string> + <string name="episodes_label">ŲŁŁŲ§ŲŖ</string> <string name="all_episodes_short_label">Ų§ŁŁŁ</string> + <string name="new_episodes_label">Ų¬ŲÆŁŲÆ</string> <string name="favorite_episodes_label">Ų§ŁŁ
ŁŲ¶ŁŲ§ŲŖ</string> <string name="new_label">Ų¬ŲÆŁŲÆ</string> - <string name="settings_label">Ų§Ų¹ŲÆŲ§ŲÆŲ§ŲŖ</string> + <string name="settings_label">Ų„Ų¹ŲÆŲ§ŲÆŲ§ŲŖ</string> <string name="downloads_label">ŲŖŁŲ²ŁŁ</string> <string name="downloads_running_label">Ų¬Ų§Ų±Ł Ų§ŁŲŖŲ“ŲŗŁŁ</string> <string name="downloads_completed_label">Ų§ŁŲŖŁ
Ł</string> <string name="downloads_log_label">Ų³Ų¬Ł</string> + <string name="subscriptions_label">ŲŖŲ³Ų¬ŁŁŲ§ŲŖ</string> + <string name="subscriptions_list_label">ŁŲ§Ų¦ŲŲ© Ų§ŁŲŖŲ³Ų¬ŁŁŲ§ŲŖ</string> <string name="cancel_download_label">Ų§ŁŲŗŲ§Ų” Ų§ŁŲŖŁŲ²ŁŁ</string> + <string name="playback_history_label">Ų£Ų±Ų“ŁŁ Ų§ŁŲŖŲ“ŲŗŁŁ</string> + <string name="gpodnet_main_label">gpodder.net</string> + <string name="gpodnet_summary">ŲŖŲ²Ų§Ł
Ł Ł
Ų¹ Ų£Ų¬ŁŲ²Ų© Ų£Ų®Ų±Ł</string> + <string name="gpodnet_auth_label">ŲŖŲ³Ų¬ŁŁ Ų§ŁŲÆŲ®ŁŁ ŁŁ
ŁŁŲ¹ gpodder</string> + <string name="free_space_label"> %1$s Ł
Ų¬Ų§ŁŲ§</string> + <string name="episode_cache_full_title">Ų°Ų§ŁŲ±Ų© ŲŖŲ®Ų²ŁŁ Ų§ŁŲŁŁŲ§ŲŖ Ł
Ł
ŲŖŁŲ¦Ų©</string> + <string name="episode_cache_full_message">ŁŁŲÆ ŲŖŁ
ŲŖŲ¬Ų§ŁŲ² Ų§ŁŲŲÆ Ų§ŁŲ£ŁŲµŁ ŁŲŖŲ®Ų²ŁŁ Ų§ŁŲŁŁŲ§ŲŖ. Ų§ŁŁ
Ų±Ų¬Ł Ų§ŁŲ±ŁŲ¹ Ł
Ł ŁŁŁ
Ų© Ų§ŁŲŖŲ®Ų²ŁŁ ŁŁ ŁŲ§Ų¦Ł
Ų© Ų§ŁŲ„Ų¹ŲÆŲ§ŲÆŲ§ŲŖ.</string> + <string name="synchronizing">Ų§ŁŁ
Ų²Ų§Ł
ŁŲ©...</string> <!--Statistics fragment--> + <string name="total_time_listened_to_podcasts">Ł
Ų¬Ł
ŁŲ¹ ŁŁŲŖ ŲŖŲ“ŲŗŁŁ Ų§ŁŲØŁŲÆŁŲ§Ų³ŲŖŲ§ŲŖ:</string> + <string name="statistics_mode">ŁŁ
Ų· Ų§ŁŲ„ŲŲµŲ§Ų¦ŁŲ§ŲŖ</string> <!--Main activity--> <string name="drawer_open">ŁŲ§Ų¦Ł
Ų© Ų§ŁŁŲŖŲ</string> <string name="drawer_close">ŁŲ§Ų¦Ł
Ų© Ų§ŁŲ§ŲŗŁŲ§Ł</string> @@ -26,11 +44,13 @@ <string name="copied_url_msg">ŲŖŁ
ŁŲ³Ų® Ų§ŁŲ±Ų§ŲØŲ· ŁŁŲŲ§ŁŲøŲ©</string> <string name="go_to_position_label">Ų§Ų°ŁŲØ ŁŁŲ°Ų§ Ų§ŁŁ
ŁŁŲ¹</string> <!--Playback history--> + <string name="clear_history_label">Ł
Ų³Ų Ų§ŁŲ£Ų±Ų“ŁŁ</string> <!--Other--> <string name="confirm_label">ŲŖŲ£ŁŁŲÆ</string> <string name="cancel_label">Ų§ŁŲŗŲ§Ų”</string> <string name="yes">ŁŲ¹Ł
</string> <string name="no">ŁŲ§</string> + <string name="reset">Ų„Ų¹Ų§ŲÆŲ© Ų§ŁŲŖŲ¹ŁŁŁ</string> <string name="author_label">Ų§ŁŁ
Ų¤ŁŁ</string> <string name="language_label">ŁŲŗŲ©</string> <string name="url_label">Ų¹ŁŁŲ§Ł Ų§ŁŁ
ŁŁŲ¹</string> @@ -60,7 +80,6 @@ <string name="show_info_label">Ų§ŲøŁŲ§Ų± Ų§ŁŁ
Ų¹ŁŁŁ
Ų§ŲŖ</string> <string name="share_label">Ł
Ų“Ų§Ų±ŁŲ©</string> <string name="share_link_label">Ł
Ų“Ų§Ų±ŁŲ© Ų§ŁŲ±Ų§ŲØŲ·</string> - <string name="episode_actions">ŲŖŲ·ŲØŁŁ Ų§ŁŲ§Ų¬Ų±Ų§Ų”</string> <string name="hide_unplayed_episodes_label">ŁŁ
ŁŲŖŁ
ŲŖŲ“ŲŗŁŁŁ</string> <string name="hide_paused_episodes_label">Ų§ŁŁŲ§Ł Ł
Ų¤ŁŲŖ</string> <string name="hide_downloaded_episodes_label">ŲŖŁ
Ų§ŁŲŖŁŲ²ŁŁ</string> @@ -105,24 +124,73 @@ <!--Auto-Flattr dialog--> <!--Search--> <!--OPML import and export--> + <string name="opml_import_error_no_file">ŁŁ
ŁŲŖŁ
Ų§Ų®ŲŖŁŲ§Ų± Ų£Ł Ł
ŁŁ</string> + <string name="select_all_label">Ų§Ų®ŲŖŲ± Ų§ŁŁŁ</string> + <string name="deselect_all_label">Ų£ŁŲŗ Ų§Ų®ŲŖŁŲ§Ų± Ų§ŁŁŁ</string> + <string name="select_options_label">Ų§Ų®ŲŖŲ±...</string> + <string name="choose_file_from_filesystem">Ų¹ŲØŲ± Ł
ŁŁ ŁŲøŲ§Ł
ŲÆŲ§Ų®ŁŁ </string> + <string name="choose_file_from_external_application">Ų„Ų³ŲŖŲ®ŲÆŲ§Ł
ŲŖŲ·ŲØŁŁ Ų®Ų§Ų±Ų¬Ł</string> + <string name="opml_export_label">ŲŖŲµŲÆŁŲ± ŲØŲµŁŲŗŲ© OPML</string> + <string name="html_export_label">ŲŖŲµŲÆŁŲ± ŲØŲµŁŲŗŲ© HTML</string> + <string name="exporting_label">Ų¬Ų§Ų± Ų§ŁŲŖŲµŲÆŁŲ± ...</string> + <string name="export_error_label">ŲŲÆŲ« Ų®Ų·Ų£ Ų£Ų«ŁŲ§Ų” Ų§ŁŲŖŲµŲÆŁŲ±</string> + <string name="export_success_title">ŲŖŁ
Ų§ŁŲŖŲµŲÆŁŲ± ŲØŁŲ¬Ų§Ų</string> <!--Sleep timer--> + <string name="enter_time_here_label">Ų£ŲÆŲ®Ł Ų§ŁŲŖŁŁŁŲŖ</string> + <string name="timer_vibration_label">ŲŖŲ“ŲŗŁŁ Ų§ŁŁŲ²Ų§Ų²</string> + <string name="time_seconds">Ų«ŁŲ§ŁŁ</string> + <string name="time_minutes">ŲÆŁŲ§Ų¦Ł</string> + <string name="time_hours">Ų³Ų§Ų¹Ų§ŲŖ</string> <!--gpodder.net--> + <string name="gpodnet_taglist_header">Ų§ŁŁŲ¦Ų§ŲŖ</string> + <string name="gpodnet_toplist_header">Ų£ŁŁŁ Ų§ŁŲØŁŲÆŁŲ§Ų³ŲŖŲ§ŲŖ</string> + <string name="gpodnet_suggestions_header">Ų„ŁŲŖŲ±Ų§ŲŲ§ŲŖ</string> + <string name="gpodnetauth_login_title">ŲŖŲ³Ų¬ŁŁ Ų§ŁŲÆŲ®ŁŁ</string> + <string name="gpodnetauth_login_butLabel">ŲŖŲ³Ų¬ŁŁ Ų§ŁŲÆŲ®ŁŁ</string> + <string name="username_label">Ų„Ų³Ł
Ų§ŁŁ
Ų³ŲŖŲ®ŲÆŁ
</string> + <string name="password_label">ŁŁŁ
Ų© Ų§ŁŁ
Ų±ŁŲ±</string> + <string name="gpodnetauth_device_title">Ų§Ų®ŲŖŁŲ§Ų± Ų§ŁŲ£Ų¬ŁŲ²Ų©:</string> + <string name="gpodnetauth_device_butCreateNewDevice">Ų£ŲÆŲ®Ł Ų¬ŁŲ§Ų²Ų§ Ų¬ŲÆŁŲÆŲ§</string> + <string name="gpodnetauth_device_chooseExistingDevice">Ų§Ų®ŲŖŲ± Ų¬ŁŲ§Ų²Ų§ Ł
Ł Ų§ŁŁŲ§Ų¦Ł
Ų©: </string> + <string name="gpodnetauth_device_butChoose">Ų„Ų®ŲŖŲ±</string> + <string name="gpodnetauth_finish_title">ŁŁŲÆ ŲŖŁ
ŲŖŲ³Ų¬ŁŁ Ų§ŁŲÆŲ®ŁŁ ŲØŁŲ¬Ų§Ų!</string> + <string name="gpodnetauth_finish_butgomainscreen">Ų„Ų°ŁŲØ Ų„ŁŁ Ų§ŁŲµŁŲŲ© Ų§ŁŲ±Ų¦ŁŲ³ŁŲ©</string> + <string name="gpodnetsync_auth_error_descr">Ų®Ų·Ų£ ŁŁ Ų„Ų³Ł
Ų§ŁŁ
Ų³ŲŖŲ®ŲÆŁ
Ų£Ł ŁŁŁ
Ų© Ų§ŁŁ
Ų±ŁŲ±</string> + <string name="gpodnetsync_pref_report_successful">ŲŖŁ
ŲØŁŲ¬Ų§Ų</string> <!--Directory chooser--> + <string name="selected_folder_label">Ų„Ų®ŲŖŁŲ§Ų± Ų§ŁŁ
Ų³ŲŖŁŲÆ:</string> + <string name="create_folder_label">Ų£ŁŲ“Ų£ Ł
Ų³ŲŖŁŲÆŲ§ Ų¬ŲÆŁŲÆŲ§</string> + <string name="choose_data_directory">Ų„Ų®ŲŖŁŲ§Ų± Ł
Ų³ŲŖŁŲÆ Ų§ŁŲØŁŲ§ŁŲ§ŲŖ</string> <!--Online feed view--> + <string name="downloading_label">ŲŖŲŁ
ŁŁ ...</string> <!--Content descriptions for image buttons--> + <string name="media_type_audio_label">ŲµŁŲŖ</string> + <string name="media_type_video_label">ŁŁŲÆŁŁ</string> + <string name="load_next_page_label">ŲŖŲŁ
ŁŁ Ų§ŁŲµŁŲŲ© Ų§ŁŲŖŲ§ŁŁŲ©</string> <!--Feed information screen--> + <string name="authentication_label">ŲŖŲ³Ų¬ŁŁ Ų§ŁŲÆŲ®ŁŁ</string> <!--Progress information--> <!--AntennaPodSP--> <!--Episodes apply actions--> <string name="all_label">Ų§ŁŁŁ</string> + <string name="selected_all_label">Ų„Ų®ŲŖŁŲ§Ų± ŁŁ Ų§ŁŲŁŁŲ§ŲŖ</string> <string name="unplayed_label">ŁŁ
ŁŲŖŁ
ŲŖŲ“ŲŗŁŁŁ</string> <string name="downloaded_label">ŲŖŁ
Ų§ŁŲŖŁŲ²ŁŁ</string> <string name="not_downloaded_label">ŁŁ
ŁŲŖŁ
Ų§ŁŲŖŁŲ²ŁŁ</string> <!--Sort--> <!--Rating dialog--> <!--Audio controls--> + <string name="volume">Ł
Ų³ŲŖŁŁ Ų§ŁŲµŁŲŖ</string> <!--proxy settings--> + <string name="proxy_type_label">Ų§ŁŁŁŲ¹</string> <!--Database import/export--> + <string name="label_import">Ų§Ų³ŲŖŁŲ±Ų§ŲÆ</string> + <string name="label_export">ŲŖŲµŲÆŁŲ±</string> + <string name="export_ok">ŲŖŁ
Ų§ŁŲŖŲµŲÆŁŲ± ŲØŁŲ¬Ų§Ų</string> <!--Casting--> <!--<string name="cast_failed_to_connect">Could not connect to the device</string>--> + <!--Notification channels--> + <string name="notification_channel_downloading">ŲŖŲŁ
ŁŁ</string> + <string name="notification_channel_playing">ŁŲ“ŲŗŁ ŲŲ§ŁŁŲ§</string> + <string name="notification_channel_error">Ų§ŁŲ£Ų®Ų·Ų§Ų”</string> </resources> diff --git a/core/src/main/res/values-az/strings.xml b/core/src/main/res/values-az/strings.xml index c27aa54d2..92bfb7f44 100644 --- a/core/src/main/res/values-az/strings.xml +++ b/core/src/main/res/values-az/strings.xml @@ -165,7 +165,6 @@ <string name="deselect_all_label">SeƧimi lÉÄv et</string> <string name="opml_export_label">OPML ixraƧı</string> <string name="export_error_label">Ä°xracın xÉtası</string> - <string name="opml_export_success_sum">OPML fayl:\u0020 yazılıb</string> <!--Sleep timer--> <string name="set_sleeptimer_label">Yuxu taymerini qoy</string> <string name="disable_sleeptimer_label">Yuxu taymerini keƧir</string> @@ -200,4 +199,5 @@ <!--Database import/export--> <!--Casting--> <!--<string name="cast_failed_to_connect">Could not connect to the device</string>--> + <!--Notification channels--> </resources> diff --git a/core/src/main/res/values-b+ast/strings.xml b/core/src/main/res/values-b+ast/strings.xml index 5113a895e..421896086 100644 --- a/core/src/main/res/values-b+ast/strings.xml +++ b/core/src/main/res/values-b+ast/strings.xml @@ -109,7 +109,6 @@ <string name="feed_remover_msg">Desaniciando fees</string> <string name="load_complete_feed">CompletĆ³se\'l refrescu\'l feed</string> <string name="hide_episodes_title">Anubrir episodios</string> - <string name="episode_actions">Aplicar aiciones</string> <string name="hide_unplayed_episodes_label">Ensin reproducir</string> <string name="hide_paused_episodes_label">PosĆ³se</string> <string name="hide_played_episodes_label">ReprodĆŗxose</string> @@ -243,7 +242,6 @@ <!--Preferences--> <string name="storage_pref">Almacenamientu</string> <string name="project_pref">Proyeutu</string> - <string name="services_label">Servicios</string> <string name="flattr_label">Flattr</string> <string name="pref_episode_cleanup_title">Llimpieza d\'episodios</string> <string name="pref_pauseOnDisconnect_sum">Posa la reproducciĆ³n al desconeutase los auriculares o Bluetooth</string> @@ -378,4 +376,5 @@ <!--Database import/export--> <!--Casting--> <!--<string name="cast_failed_to_connect">Could not connect to the device</string>--> + <!--Notification channels--> </resources> diff --git a/core/src/main/res/values-bg/strings.xml b/core/src/main/res/values-bg/strings.xml index 286c9a3eb..19dc2a971 100644 --- a/core/src/main/res/values-bg/strings.xml +++ b/core/src/main/res/values-bg/strings.xml @@ -30,6 +30,7 @@ <string name="drawer_feed_counter_downloaded">ŠŃŠ¾Š¹ ŠøŠ·ŃŠµŠ³Š»ŠµŠ½Šø ŠµŠæŠøŠ·Š¾Š“Šø</string> <string name="drawer_feed_counter_none">ŠŠøŠŗŠ°ŠŗŠ²Šø</string> <!--Webview actions--> + <string name="open_in_browser_label">ŠŃŠ²Š¾ŃŠø Š² Š±ŃŠ°ŃŠ·ŃŃŠ°</string> <string name="copy_url_label">ŠŠ¾ŠæŠøŃŠ°Š¹ URL Š°Š“ŃŠµŃ</string> <string name="share_url_label">Š”ŠæŠ¾Š“ŠµŠ»Šø URL Š°Š“ŃŠµŃ</string> <string name="copied_url_msg">ŠŠ“ŃŠµŃŃŃ Šµ ŠŗŠ¾ŠæŠøŃŠ°Š½</string> @@ -40,6 +41,7 @@ <string name="cancel_label">ŠŃŠŗŠ°Š·</string> <string name="yes">ŠŠ°</string> <string name="no">ŠŠµ</string> + <string name="reset">ŠŃŠ»ŠøŃŠ°Š½Šµ</string> <string name="author_label">ŠŠ²ŃŠ¾Ń</string> <string name="language_label">ŠŠ·ŠøŠŗ</string> <string name="url_label">URL</string> @@ -47,7 +49,9 @@ <string name="cover_label">Š”Š½ŠøŠ¼ŠŗŠ°</string> <string name="error_label">ŠŃŠµŃŠŗŠ°</string> <string name="error_msg_prefix">ŠŃŠ·Š½ŠøŠŗŠ½Š° Š³ŃŠµŃŠŗŠ°:</string> + <string name="refresh_label">ŠŠ±Š½Š¾Š²Šø</string> <string name="external_storage_error_msg">ŠŃŠ¼Š° Š½Š°Š»ŠøŃŠ½Š° Š²ŃŠ½ŃŠ½Š° ŠæŠ°Š¼ŠµŃ. Š£Š²ŠµŃŠµŃŠµ ŃŠµ, ŃŠµ Š²ŃŠ½ŃŠ½Š°ŃŠ° ŠæŠ°Š¼ŠµŃ Šµ Š¼Š¾Š½ŃŠøŃŠ°Š½Š°, Š·Š° Š“Š° Š¼Š¾Š¶Šµ ŠæŃŠøŠ»Š¾Š¶ŠµŠ½ŠøŠµŃŠ¾ Š“Š° ŃŠ°Š±Š¾ŃŠø ŠæŃŠ°Š²ŠøŠ»Š½Š¾.</string> + <string name="chapter_duration">ŠŃŠµŠ¼ŠµŃŃŠ°ŠµŠ½Šµ: %1$s</string> <string name="description_label">ŠŠæŠøŃŠ°Š½ŠøŠµ</string> <string name="most_recent_prefix">ŠŠ°Š¹-Š½Š¾Š² ŠµŠæŠøŠ·Š¾Š“:\u0020</string> <string name="size_prefix">Š Š°Š·Š¼ŠµŃ:\u0020</string> @@ -60,6 +64,7 @@ <string name="etxtFeedurlHint">www.primer.com/emisiq</string> <string name="txtvfeedurl_label">ŠŠ¾Š±Š°Š²ŃŠ½Šµ Š½Š° ŠæŠ¾Š“ŠŗŠ°ŃŃ ŠæŠ¾ URL Š°Š“ŃŠµŃ</string> <string name="podcastdirectories_label">ŠŠ°Š¼ŠøŃŠ°Š½Šµ Š½Š° ŠæŠ¾Š“ŠŗŠ°ŃŃ Š² Š“ŠøŃŠµŠŗŃŠ¾ŃŠøŃ</string> + <string name="podcastdirectories_descr">ŠŠ¾Š¶ŠµŃŠµ Š“Š° ŃŃŃŃŠøŃŠµ Š½Š¾Š²Šø ŠæŠ¾Š“ŠŗŠ°ŃŃŠø Š² iTunes ŠøŠ»Šø fyyd, ŠøŠ»Šø Š“Š° ŠæŃŠµŠ³Š»ŠµŠ“Š°ŃŠµ gpodder.net ŃŠæŠ¾ŃŠµŠ“ ŠøŠ¼Šµ, ŠŗŠ°ŃŠµŠ³Š¾ŃŠøŃ Šø ŠæŠ¾ŠæŃŠ»ŃŃŠ½Š¾ŃŃ.</string> <!--Actions on feeds--> <string name="mark_all_read_label">ŠŠ°ŃŠŗŠøŃŠ°Š¹ Š²ŃŠøŃŠŗŠø ŠŗŠ°ŃŠ¾ ŃŠ»ŃŃŠ°Š½Šø</string> <string name="mark_all_read_msg">ŠŃŠøŃŠŗŠø ŠµŠæŠøŠ·Š¾Š“Šø ŃŠ° Š¼Š°ŃŠŗŠøŃŠ°Š½Šø ŠŗŠ°ŃŠ¾ ŃŠ»ŃŃŠ°Š½Šø</string> @@ -79,6 +84,8 @@ <string name="share_item_url_label">Š”ŠæŠ¾Š“ŠµŠ»Šø URL Š°Š“ŃŠµŃ Š½Š° ŠµŠæŠøŠ·Š¾Š“Š°</string> <string name="share_item_url_with_position_label">Š”ŠæŠ¾Š“ŠµŠ»Šø URL Š°Š“ŃŠµŃ Š½Š° ŠµŠæŠøŠ·Š¾Š“Š° Ń ŠæŠ¾Š·ŠøŃŠøŃ</string> <string name="feed_remover_msg">ŠŃŠµŠ¼Š°Ń
Š²Š°Š½Šµ Š½Š° ŠµŠ¼ŠøŃŠøŃŃŠ°</string> + <string name="hide_downloaded_episodes_label">ŠŠ·ŃŠµŠ³Š»ŠµŠ½Šø</string> + <string name="hide_not_downloaded_episodes_label">ŠŠµŠøŠ·ŃŠµŠ³Š»ŠµŠ½Šø</string> <!--actions on feeditems--> <string name="stream_label">Š”ŃŃŠøŠ¹Š¼</string> <string name="marked_as_seen_label">ŠŠ°ŃŠŗŠøŃŠ°Š½ ŠŗŠ°ŃŠ¾ ŠæŃŠµŠ³Š»ŠµŠ“Š°Š½</string> @@ -111,7 +118,6 @@ <string name="other_pref">ŠŃŃŠ³Šø</string> <string name="about_pref">ŠŃŠ½Š¾ŃŠ½Š¾</string> <string name="queue_label">ŠŠæŠ°ŃŠŗŠ°</string> - <string name="services_label">Š£ŃŠ»ŃŠ³Šø</string> <string name="flattr_label">Flattr</string> <string name="pref_episode_cleanup_title">ŠŠ¾ŃŠøŃŃŠ²Š°Š½Šµ Š½Š° ŠµŠæŠøŠ·Š¾Š“ŠøŃŠµ</string> <string name="pref_episode_cleanup_summary">ŠŠæŠøŠ·Š¾Š“ŠøŃŠµ, ŠŗŠ¾ŠøŃŠ¾ Š½Šµ ŃŠ° Š² Š¾ŠæŠ°ŃŠŗŠ°ŃŠ° Šø Š½Šµ ŃŠ° Š² Š»ŃŠ±ŠøŠ¼Šø, Š¾ŃŠ³Š¾Š²Š°ŃŃŃ Š½Š° ŃŃŠ»Š¾Š²ŠøŃŃŠ° Š·Š° ŠæŃŠµŠ¼Š°Ń
Š²Š°Š½Šµ, Š°ŠŗŠ¾ Š°Š²ŃŠ¾Š¼Š°ŃŠøŃŠ½Š¾ŃŠ¾ ŠøŠ·ŃŠµŠ³Š»ŃŠ½Šµ ŃŠµ Š½ŃŠ¶Š“Š°Šµ Š¾Ń Š¼ŃŃŃŠ¾ Š·Š° Š½Š¾Š²Šø ŠµŠæŠøŠ·Š¾Š“Šø</string> @@ -175,6 +181,7 @@ <string name="crash_report_sum">ŠŠ·ŠæŃŠ°ŃŠµŃŠµ Š½Š°Š¹-Š½Š¾Š²ŠøŃ Š“Š¾ŠŗŠ»Š°Š“ Š·Š° ŃŃŠøŠ² ŃŃŠµŠ· ŠøŠ¼ŠµŠ¹Š»</string> <string name="send_email">ŠŠ·ŠæŃŠ°ŃŠ°Š½Šµ Š½Š° ŠøŠ¼ŠµŠ¹Š»</string> <string name="experimental_pref">ŠŠŗŃŠæŠµŃŠøŠ¼ŠµŠ½ŃŠ°Š»Š½Šø</string> + <string name="pref_current_value">Š¢ŠµŠŗŃŃŠ° ŃŃŠ¾Š¹Š½Š¾ŃŃ: %1$s</string> <string name="pref_proxy_title">ŠŃŠ¾ŠŗŃŠø</string> <string name="pref_faq">Š§ŠµŃŃŠ¾ Š·Š°Š“Š°Š²Š°Š½Šø Š²ŃŠæŃŠ¾ŃŠø</string> <string name="pref_known_issues">ŠŠ·Š²ŠµŃŃŠ½Šø ŠæŃŠ¾Š±Š»ŠµŠ¼Šø</string> @@ -193,10 +200,9 @@ <string name="html_export_label">HTML ŠµŠŗŃŠæŠ¾ŃŃŠøŃŠ°Š½Šµ</string> <string name="exporting_label">ŠŠŗŃŠæŠ¾ŃŃŠøŃŠ°Š½Šµ...</string> <string name="export_error_label">ŠŃŠµŃŠŗŠ° ŠæŃŠø ŠµŠŗŃŠæŠ¾ŃŃŠøŃŠ°Š½Šµ</string> - <string name="opml_export_success_title">Š£ŃŠæŠµŃŠ½Š¾ OPML ŠµŠŗŃŠæŠ¾ŃŃŠøŃŠ°Š½Šµ.</string> - <string name="opml_export_success_sum">.opml ŃŠ°Š¹Š»ŃŃ Š±ŠµŃŠµ Š·Š°ŠæŠøŃŠ°Š½ Š²:\u0020</string> <string name="opml_import_ask_read_permission">ŠŠµŠ¾Š±Ń
Š¾Š“ŠøŠ¼ Šµ Š“Š¾ŃŃŃŠæ Š“Š¾ Š²ŃŠ½ŃŠ½Š°ŃŠ° ŠæŠ°Š¼ŠµŃ Š·Š° ŠæŃŠ¾ŃŠøŃŠ°Š½Šµ Š½Š° OPML ŃŠ°Š¹Š»Š°</string> <!--Sleep timer--> + <string name="timer_vibration_label">ŠŠøŠ±ŃŠ°ŃŠøŃ</string> <string name="time_seconds">ŃŠµŠŗŃŠ½Š“Šø</string> <string name="time_minutes">Š¼ŠøŠ½ŃŃŠø</string> <string name="time_hours">ŃŠ°ŃŠ°</string> @@ -216,6 +222,7 @@ <string name="gpodnet_taglist_header">ŠŠŠ¢ŠŠŠŠ ŠŠ</string> <string name="gpodnet_toplist_header">Š¢ŠŠ ŠŠŠŠŠŠ”Š¢Š</string> <string name="gpodnet_suggestions_header">ŠŠ ŠŠŠŠŠŠŠŠŠÆ</string> + <string name="gpodnet_search_hint">Š¢ŃŃŃŠµŠ½Šµ Š² gpodder.net</string> <string name="gpodnetauth_login_title">ŠŃ
Š¾Š“</string> <string name="gpodnetauth_login_butLabel">ŠŃ
Š¾Š“</string> <string name="username_label">ŠŠ¾ŃŃŠµŠ±ŠøŃŠµŠ»ŃŠŗŠ¾ ŠøŠ¼Šµ</string> @@ -229,11 +236,21 @@ <!--Progress information--> <!--AntennaPodSP--> <string name="filter">Š¤ŠøŠ»ŃŃŃ</string> + <string name="search_fyyd_label">Š¢ŃŃŃŠµŠ½Šµ Š²ŃŠ² fyyd</string> <!--Episodes apply actions--> <!--Sort--> <!--Rating dialog--> <!--Audio controls--> <!--proxy settings--> + <string name="proxy_type_label">Š¢ŠøŠæ</string> + <string name="host_label">Š„Š¾ŃŃ</string> + <string name="port_label">ŠŠ¾ŃŃ</string> + <string name="proxy_test_label">Š¢ŠµŃŃ</string> + <string name="proxy_test_successful">Š¢ŠµŃŃŃŃ Šµ ŃŃŠæŠµŃŠµŠ½</string> + <string name="proxy_test_failed">Š¢ŠµŃŃŃŃ Šµ Š½ŠµŃŃŠæŠµŃŠµŠ½</string> + <string name="proxy_port_invalid_error">ŠŠ¾ŃŃŃŃ Š½Šµ Šµ Š²Š°Š»ŠøŠ“ŠµŠ½</string> + <!--Database import/export--> <!--Casting--> <!--<string name="cast_failed_to_connect">Could not connect to the device</string>--> + <!--Notification channels--> </resources> diff --git a/core/src/main/res/values-ca-rES/strings.xml b/core/src/main/res/values-ca-rES/strings.xml index fe20ff5da..d9f216268 100644 --- a/core/src/main/res/values-ca-rES/strings.xml +++ b/core/src/main/res/values-ca-rES/strings.xml @@ -58,4 +58,5 @@ <!--Database import/export--> <!--Casting--> <!--<string name="cast_failed_to_connect">Could not connect to the device</string>--> + <!--Notification channels--> </resources> diff --git a/core/src/main/res/values-ca/strings.xml b/core/src/main/res/values-ca/strings.xml index 86fac02a5..ecf51f704 100644 --- a/core/src/main/res/values-ca/strings.xml +++ b/core/src/main/res/values-ca/strings.xml @@ -1,12 +1,14 @@ <?xml version='1.0' encoding='UTF-8'?> <resources xmlns:tools="http://schemas.android.com/tools"> <!--Activitiy and fragment titles--> + <string name="feed_update_receiver_name">Actualitzar subscripcions</string> <string name="feeds_label">Canals</string> <string name="statistics_label">EstadĆstiques</string> <string name="add_feed_label">Afegeix podcast</string> <string name="episodes_label">Episodis</string> <string name="all_episodes_short_label">Tot</string> - <string name="favorite_episodes_label">Favorits</string> + <string name="new_episodes_label">Nou</string> + <string name="favorite_episodes_label">Preferits</string> <string name="new_label">Nous</string> <string name="settings_label">ConfiguraciĆ³</string> <string name="downloads_label">Baixades</string> @@ -15,13 +17,15 @@ <string name="downloads_log_label">Registre</string> <string name="subscriptions_label">Subscripcions</string> <string name="subscriptions_list_label">Llista de subscripcions</string> - <string name="cancel_download_label">CancelĀ·la la baixada</string> + <string name="cancel_download_label">CancelĀ·la\nBaixada</string> <string name="playback_history_label">Historial de reproducciĆ³</string> <string name="gpodnet_main_label">gpodder.net</string> + <string name="gpodnet_summary">Sincronitzar amb altres dispositius</string> <string name="gpodnet_auth_label">Inici de sessiĆ³ a gpodder.net</string> <string name="free_space_label">%1$s lliure</string> - <string name="episode_cache_full_title">CachĆ© d\'episodi completa</string> - <string name="episode_cache_full_message">S\'ha arribat al lĆmit de la cachĆ©. Pots incrementar la capacitat de la cachĆ© a les Opcions</string> + <string name="episode_cache_full_title">La memĆ²ria cau d\'episodis Ć©s plena</string> + <string name="episode_cache_full_message">S\'ha arribat al lĆmit de la memĆ²ria cau d\'episodis. Pots incrementar-ne la capacitat a la configuraciĆ³.</string> + <string name="synchronizing">Sincronitzant...</string> <!--Statistics fragment--> <string name="total_time_listened_to_podcasts">Temps total de podcasts reproduĆÆts</string> <string name="statistics_details_dialog">%1$d de %2$depisodis comenƧats.\n\nReproduĆÆts %3$s de %4$s.</string> @@ -33,7 +37,7 @@ <string name="drawer_open">Obre menĆŗ</string> <string name="drawer_close">Tanca menĆŗ</string> <string name="drawer_preferences">Calaix de preferĆØncies</string> - <string name="drawer_feed_order_unplayed_episodes">Ordre per durada</string> + <string name="drawer_feed_order_unplayed_episodes">Ordre per comptador</string> <string name="drawer_feed_order_alphabetical">Ordre alfabĆØtic</string> <string name="drawer_feed_order_last_update">Ordre per data de publicaciĆ³</string> <string name="drawer_feed_order_most_played">Ordre per nĆŗmero d\'episodis reproduĆÆts</string> @@ -56,13 +60,14 @@ <string name="yes">SĆ</string> <string name="no">No</string> <string name="reset">Reiniciar</string> - <string name="author_label">Autor</string> + <string name="author_label">Autor/s</string> <string name="language_label">Llengua</string> <string name="url_label">AdreƧa web</string> <string name="podcast_settings_label">ConfiguraciĆ³</string> <string name="cover_label">Imatge</string> <string name="error_label">Error</string> <string name="error_msg_prefix">S\'ha produĆÆt un error:</string> + <string name="needs_storage_permission">Calen permisos d\'emmagatzematge per a aquesta operaciĆ³</string> <string name="refresh_label">Actualitza</string> <string name="external_storage_error_msg">L\'emmagatzemament extern no estĆ disponible. Assegureu-vos que estĆ muntat per quĆØ l\'aplicaciĆ³ funcioni correctament.</string> <string name="chapters_label">CapĆtols</string> @@ -82,7 +87,7 @@ <string name="auto_download_apply_to_items_title">Aplica als episodis previs</string> <string name="auto_download_apply_to_items_message">El nou ajustament de <i>baixada automĆ tica</i> s\'aplicarĆ als nous episodis.\nVols que tambĆ© sigui aplicat als episodis publicats prĆØviament?</string> <string name="auto_delete_label">Esborra episodi automĆ ticament</string> - <string name="parallel_downloads_suffix">\u0020baixades paralĀ·leles</string> + <string name="parallel_downloads_suffix">\u0020baixades en paralĀ·lel</string> <string name="feed_auto_download_global">Valor predeterminat global</string> <string name="feed_auto_download_always">Sempre</string> <string name="feed_auto_download_never">Mai</string> @@ -105,25 +110,28 @@ <string name="mark_all_read_label">Marca-ho tot com a llegit</string> <string name="mark_all_read_msg">S\'han marcat tots els episodis com a llegits</string> <string name="mark_all_read_confirmation_msg">Si us plau confirma que vols marcar tots els episodis com reproduits.</string> - <string name="mark_all_read_feed_confirmation_msg">Si us plau confirma que vols marcar tots els episodis d\'aquest canal com reproduits.</string> + <string name="mark_all_read_feed_confirmation_msg">Si us plau, confirmeu que voleu marcar tots els episodis d\'aquest podcast com a reproduĆÆts.</string> <string name="mark_all_seen_label">Marca tot com a llegit</string> - <string name="mark_all_seen_msg">S\'han marcat tots els episodis com a vistos</string> + <string name="mark_all_seen_msg">Marcar tots episodis com a visualitzats</string> <string name="mark_all_seen_confirmation_msg">Si us plau confirma que vols marcar tots els episodis com vistos.</string> <string name="show_info_label">Mostra informaciĆ³</string> - <string name="rename_feed_label">Renombra podcast</string> - <string name="remove_feed_label">Esborra podcast</string> - <string name="share_label">Compartir...</string> - <string name="share_link_label">Comparteix l\'enllaƧ</string> - <string name="share_file_label">Comparteix un fitxer</string> - <string name="share_link_with_position_label">Comparteix enllaƧ amb posiciĆ³</string> - <string name="share_feed_url_label">Comparteix adreƧa del canal</string> - <string name="share_item_url_label">Comparteix adreƧa del fitxer del canal</string> - <string name="share_item_url_with_position_label">Comparteix adreƧa del fitxer del canal amb posiciĆ³</string> - <string name="feed_delete_confirmation_msg">Confirmeu que voleu suprimir el canal \"%1$s\" i TOTS els episodis que n\'heu descarregat.</string> - <string name="feed_remover_msg">S\'estĆ esborrant el canal</string> - <string name="load_complete_feed">S\'ha actualitzat el canal</string> + <string name="show_feed_settings_label">Mostrar configuraciĆ³ del podcast</string> + <string name="feed_info_label">InformaciĆ³ del podcast</string> + <string name="feed_settings_label">ConfiguraciĆ³ del podcast</string> + <string name="rename_feed_label">Canvia el nom al podcast</string> + <string name="remove_feed_label">Suprimeix podcast</string> + <string name="share_label">Comparteix...</string> + <string name="share_link_label">Comparteix l\'adreƧa de l\'episodi</string> + <string name="share_link_with_position_label">Comparteix l\'adreƧa de l\'episodi i la posiciĆ³</string> + <string name="share_file_label">Comparteix el fitxer</string> + <string name="share_feed_url_label">Comparteix l\'adreƧa del canal</string> + <string name="share_item_url_label">Comparteix l\'adreƧa del fitxer multimĆØdia</string> + <string name="share_item_url_with_position_label">Comparteix l\'adreƧa del fitxer multimĆØdia i la posiciĆ³</string> + <string name="feed_delete_confirmation_msg">Si us plau, confirmeu que voleu eliminar el podcast \"%1$s\" i tots els seus episodis (fins i tot els ja baixats).</string> + <string name="feed_remover_msg">Eliminant podcast</string> + <string name="load_complete_feed">Refrescar tot el podcast</string> <string name="hide_episodes_title">Amaga Episodis</string> - <string name="episode_actions">Aplica accions</string> + <string name="batch_edit">Editar lot</string> <string name="hide_unplayed_episodes_label">Per reproduir</string> <string name="hide_paused_episodes_label">Pausat</string> <string name="hide_played_episodes_label">Reproduit</string> @@ -132,6 +140,7 @@ <string name="hide_downloaded_episodes_label">Baixat</string> <string name="hide_not_downloaded_episodes_label">No baixat</string> <string name="hide_has_media_label">ContĆ© medis</string> + <string name="hide_is_favorite_label">Ćs preferint</string> <string name="filtered_label">Filtrat</string> <string name="refresh_failed_msg">{fa-exclamation-circle} Darrera actualitzaciĆ³ fallida</string> <string name="open_podcast">Obrir podcast</string> @@ -144,7 +153,8 @@ <string name="remove_label">Suprimeix</string> <string name="delete_label">Esborrar</string> <string name="delete_failed">No s\'ha pogut esborrar el fitxer. Reiniciar el dispositiu pot ajudar.</string> - <string name="remove_episode_lable">Esborra episodi</string> + <string name="remove_episode_lable">Suprimeix episodi</string> + <string name="mark_as_seen_label">Marcar com a visualitzat</string> <string name="marked_as_seen_label">Marcat com a vist</string> <string name="mark_read_label">Marca com a llegit</string> <string name="marked_as_read_label">Marcats com llegits</string> @@ -152,22 +162,24 @@ <string name="add_to_queue_label">Afegeix a la cua</string> <string name="added_to_queue_label">Afegit a la cua</string> <string name="remove_from_queue_label">Suprimeix de la cua</string> - <string name="add_to_favorite_label">Afegit a Favorits</string> - <string name="added_to_favorites">Afegit a favorits</string> - <string name="remove_from_favorite_label">Suprimeix de Favorits</string> - <string name="removed_from_favorites">Tret de favorits</string> + <string name="add_to_favorite_label">Afegit a preferits</string> + <string name="added_to_favorites">Afegit a preferits</string> + <string name="remove_from_favorite_label">Suprimeix de preferits</string> + <string name="removed_from_favorites">S\'ha suprimit de preferits</string> <string name="visit_website_label">Visita el lloc web</string> <string name="support_label">Comparteix amb Flattr</string> <string name="skip_episode_label">Omet l\'episodi</string> <string name="activate_auto_download">Activa baixades automĆ tiques</string> <string name="deactivate_auto_download">Desactiva les baixades automĆ tiques</string> <string name="reset_position">Restablir posiciĆ³ de reproducciĆ³</string> - <string name="removed_item">Element eliminat</string> + <string name="removed_item">S\'ha suprimit l\'element</string> <!--Download messages and labels--> <string name="download_successful">ha funcionat</string> <string name="download_failed">ha fallat</string> <string name="download_pending">Baixada pendent</string> <string name="download_running">Baixada en procĆ©s</string> + <string name="download_error_details">Detalls</string> + <string name="download_error_details_message">%1$s \n\nURL del fitxer:\n%2$s</string> <string name="download_error_device_not_found">No s\'ha trobat cap dispositiu d\'emmagatzemament</string> <string name="download_error_insufficient_space">No hi ha prou espai</string> <string name="download_error_file_error">Error de fitxer</string> @@ -218,6 +230,7 @@ <string name="playback_error_unknown">Error desconegut</string> <string name="no_media_playing_label">No s\'estĆ reproduint res</string> <string name="player_buffering_msg">S\'estĆ carregant</string> + <string name="player_go_to_picture_in_picture">Mode Picture-in-picture</string> <string name="playbackservice_notification_title">Podcast en reproducciĆ³</string> <string name="unknown_media_key">AntennaPod - Control desconegut: %1$d</string> <!--Queue operations--> @@ -234,7 +247,9 @@ <string name="date">Data</string> <string name="duration">Durada</string> <string name="episode_title">TĆtol de l\'episodi</string> - <string name="feed_title">TĆtol del feed</string> + <string name="feed_title">TĆtol del podcast</string> + <string name="random">Aleatori</string> + <string name="smart_shuffle">Mescla intelĀ·ligent</string> <string name="ascending">Ascendent</string> <string name="descending">Descendent</string> <string name="clear_queue_confirmation_msg">Si us plau, confirma que vols suprimir tots els episodis de la cua</string> @@ -272,7 +287,7 @@ <string name="enable_sonic">Activa Sonic</string> <!--Empty list labels--> <string name="no_items_label">No hi ha elements a la llista.</string> - <string name="no_feeds_label">No us heu subscrit a cap canal.</string> + <string name="no_feeds_label">Encara no us heu subscrit a cap podcast.</string> <string name="no_chapters_label">Aquest episodi no tĆ© capĆtols</string> <string name="no_shownotes_label">Aquest episodi no tĆ© notes.</string> <!--Preferences--> @@ -281,15 +296,23 @@ <string name="other_pref">Altres</string> <string name="about_pref">Quant a</string> <string name="queue_label">Cua</string> - <string name="services_label">Serveis</string> + <string name="integrations_label">Integracions</string> <string name="flattr_label">Flattr</string> + <string name="flattr_summary">Servei de micropagaments</string> + <string name="automation">AutomatitzaciĆ³</string> + <string name="download_pref_details">Detalls</string> + <string name="import_export_pref">Importa/Exporta</string> + <string name="appearance">AparenƧa</string> + <string name="external_elements">Elements externs</string> + <string name="interruptions">Interrupcions</string> + <string name="buttons">Botons de control de reproducciĆ³</string> + <string name="media_player">Reproductor multimĆØdia</string> <string name="pref_episode_cleanup_title">Neteja l\'episodi</string> - <string name="pref_episode_cleanup_summary">Els episodis que no es troben a la cua i no sĆ³n favorits haurien de ser candidats a ser esborrats si l\'Auto DescĆ rrega necessita espai per a nous episodis</string> + <string name="pref_episode_cleanup_summary">Els episodis que no es troben a la cua i no sĆ³n preferits seran candidats a ser suprimits si l\'Auto DescĆ rrega necessita espai per a nous episodis</string> <string name="pref_pauseOnDisconnect_sum">Pausa la reproducciĆ³ en desconnectar els auriculars o el bluetooth</string> <string name="pref_unpauseOnHeadsetReconnect_sum">Continua la reproducciĆ³ en connectar novament els auriculars</string> <string name="pref_unpauseOnBluetoothReconnect_sum">Continua la reproducciĆ³ en connectar novament el bluetooth</string> <string name="pref_hardwareForwardButtonSkips_title">Endavant per saltar</string> - <string name="pref_hardwareForwardButtonSkips_sum">En prĆ©mer el botĆ³ fĆsic d\'Endavant, passar al segĆ¼ent episodi en comptes d\'avanƧar a la reproducciĆ³</string> <string name="pref_hardwarePreviousButtonRestarts_title">Endarrere per reiniciar</string> <string name="pref_hardwarePreviousButtonRestarts_sum">En prĆ©mer un botĆ³ fĆsic, reinicieu l\'episodi actual en lloc de rebobinar-lo</string> <string name="pref_followQueue_sum">Salta al segĆ¼ent element de la cua en acabar la reproducciĆ³</string> @@ -299,8 +322,8 @@ <string name="pref_smart_mark_as_played_title">Marca intelĀ·ligent com a reproduĆÆt</string> <string name="pref_skip_keeps_episodes_sum">Mantenir episodis quan sĆ³n passats de llarg</string> <string name="pref_skip_keeps_episodes_title">Mantenir els episodis passats de llarg</string> - <string name="pref_favorite_keeps_episodes_sum">Conserva els episodis marcats com a favorits.</string> - <string name="pref_favorite_keeps_episodes_title">Conserva els episodis favorits.</string> + <string name="pref_favorite_keeps_episodes_sum">Conserva els episodis marcats com a preferits.</string> + <string name="pref_favorite_keeps_episodes_title">Conserva els episodis preferits.</string> <string name="playback_pref">ReproducciĆ³</string> <string name="network_pref">Xarxa</string> <string name="pref_autoUpdateIntervallOrTime_title">Actualitza interval o horari del dia</string> @@ -338,7 +361,7 @@ <string name="pref_nav_drawer_feed_order_title">Estableix l\'ordre de les subscripcions</string> <string name="pref_nav_drawer_feed_order_sum">Canvia l\'ordre de les subscripcions</string> <string name="pref_nav_drawer_feed_counter_title">Estableix el comptador de les subscripcions</string> - <string name="pref_nav_drawer_feed_counter_sum">Canvia la informaciĆ³ mostrada pel comptador de les subscripcions</string> + <string name="pref_nav_drawer_feed_counter_sum">Canvia la informaciĆ³ mostrada pel comptador de les subscripcions. TambĆ© afecta l\'ordre de les subscripcions si a l\'opciĆ³ \'Ordre de les subscripcions\' s\'ha indicat \'Comptador\'.</string> <string name="pref_set_theme_sum">Canvieu l\'aparenƧa d\'AntennaPod.</string> <string name="pref_automatic_download_title">Baixada automĆ tica</string> <string name="pref_automatic_download_sum">Configureu la baixada automĆ tica d\'episodis.</string> @@ -349,9 +372,10 @@ <string name="pref_automatic_download_on_battery_title">Baixa mentre no es carrega</string> <string name="pref_automatic_download_on_battery_sum">Permet les baixades automĆ tiques mentre la bateria no es carrega</string> <string name="pref_parallel_downloads_title">Baixades paralĀ·leles</string> - <string name="pref_episode_cache_title">MemĆ²ria d\'episodis</string> + <string name="pref_episode_cache_title">MemĆ²ria cau d\'episodis</string> <string name="pref_theme_title_light">Clar</string> <string name="pref_theme_title_dark">Fosc</string> + <string name="pref_theme_title_trueblack">Negra (per AMOLED)</string> <string name="pref_episode_cache_unlimited">Sense lĆmits</string> <string name="pref_update_interval_hours_plural">hores</string> <string name="pref_update_interval_hours_singular">hora</string> @@ -380,8 +404,6 @@ <string name="pref_rewind_sum">Personalitza el nombre de segons del salt endarrere quan es prem el botĆ³ de Rebobinat</string> <string name="pref_gpodnet_sethostname_title">Definex nom del servidor</string> <string name="pref_gpodnet_sethostname_use_default_host">Utilitza el servidor per defecte</string> - <string name="pref_expandNotify_title">Amplia la notificaciĆ³</string> - <string name="pref_expandNotify_sum">Amplia sempre les notificacions per mostrar els botons de reproducciĆ³.</string> <string name="pref_persistNotify_title">Botons de reproducciĆ³ persistents</string> <string name="pref_persistNotify_sum">MantĆ© els controls a l\'Ć rea de notificacions i pantalla de bloqueig quan la reproducciĆ³ estigui aturada</string> <string name="pref_compact_notification_buttons_title">Estableix els botons del bloqueig de pantalla</string> @@ -402,8 +424,7 @@ <string name="crash_report_sum">Envia l\'Ćŗltim informe de tancament abrupte per e-mail</string> <string name="send_email">Envia e-mail</string> <string name="experimental_pref">Experimental</string> - <string name="pref_sonic_title">Reproductor Sonic Media Player</string> - <string name="pref_sonic_message">Fes servir el reproductor Sonic Media Player integrat en comptes del reproductor natiu d\'Android i Prestissimo</string> + <string name="pref_media_player_message">Seleccioneu el reproductor multimĆØdia per a reproduir fitxers</string> <string name="pref_current_value">Valor actual: %1$s</string> <string name="pref_proxy_title">Servidor intermediari</string> <string name="pref_proxy_sum">Estableix un servidor intermediari</string> @@ -415,6 +436,11 @@ <string name="pref_cast_message_free_flavor">Chromecast requereix de llibreries propietĆ ries de terceres parts que estan inhabilitades en aquesta versiĆ³ d\'AntennaPod</string> <string name="pref_enqueue_downloaded_title">Afegeix les baixades a la cua</string> <string name="pref_enqueue_downloaded_summary">Afegeix els episodis descarregats a la cua</string> + <string name="media_player_builtin">Reproductor Android estĆ ndard</string> + <string name="pref_videoBehavior_title">En sortir d\'un vĆdeo</string> + <string name="pref_videoBehavior_sum">Comportament a l\'abandonar la reproducciĆ³ d\'un vĆdeo</string> + <string name="stop_playback">Atura reproducciĆ³</string> + <string name="continue_playback">Continuar reproducciĆ³ d\'audio</string> <!--Auto-Flattr dialog--> <string name="auto_flattr_enable">Activa la comparticiĆ³ automĆ tica per Flattr</string> <string name="auto_flattr_after_percent">Comparteix per Flattr l\'episodi en haver-ne reproduĆÆt el %d per cent</string> @@ -424,8 +450,8 @@ <string name="search_hint">Cerca episodis</string> <string name="found_in_shownotes_label">Troba a les notes dels canals</string> <string name="found_in_chapters_label">Trobat als capĆtols</string> - <string name="found_in_authors_label">Troba als autors</string> - <string name="found_in_feeds_label">Troba als canals</string> + <string name="found_in_authors_label">Trobat a autor/s</string> + <string name="found_in_feeds_label">Trobat a un podcast</string> <string name="search_status_no_results">No s\'ha trobat cap resultat</string> <string name="search_label">Cerca</string> <string name="found_in_title_label">Trobat al tĆtol</string> @@ -451,8 +477,8 @@ <string name="html_export_label">Exporta HTML</string> <string name="exporting_label">Exportant...</string> <string name="export_error_label">Error d\'exportaciĆ³</string> - <string name="opml_export_success_title">S\'ha exportat l\'OPML correctament.</string> - <string name="opml_export_success_sum">El fitxer OPML s\'ha escrit a:\u0020</string> + <string name="export_success_title">ExportaciĆ³ correcta</string> + <string name="export_success_sum">S\'ha exportat el fitxer a:\n\n%1$s</string> <string name="opml_import_ask_read_permission">Per llegir arxius OPML Ć©s necessari accĆ©s a la memĆ²ria externa</string> <!--Sleep timer--> <string name="set_sleeptimer_label">Defineix un temporitzador</string> @@ -625,7 +651,7 @@ <string name="label_import">Importa</string> <string name="label_export">Exporta</string> <string name="import_select_file">Tria un fitxer per a importar</string> - <string name="export_ok">S\'ha exportat amb ĆØxit. S\'ha escrit la base de dades a la targeta SD.</string> + <string name="export_ok">ExportaciĆ³ correcta.</string> <string name="import_ok">S\'ha importat amb ĆØxit.\n\nPremeu D\'acord per a reiniciar l\'AntennaPod.</string> <!--Casting--> <string name="cast_media_route_menu_title">Reproduir a...</string> @@ -643,4 +669,13 @@ <string name="cast_failed_seek">No s\'ha pogut cercar la nova posiciĆ³ al dispositiu de difusiĆ³</string> <string name="cast_failed_receiver_player_error">El reproductor receptor ha trobat un error greu</string> <string name="cast_failed_media_error_skipping">Error en la reproducciĆ³. Saltant...</string> + <!--Notification channels--> + <string name="notification_channel_user_action">AcciĆ³ necessĆ ria</string> + <string name="notification_channel_user_action_description">Mostrar si es requereix la vostra acciĆ³, per exemple si heu d\'entrar una contrasenya.</string> + <string name="notification_channel_downloading">Baixant</string> + <string name="notification_channel_downloading_description">Mostrar durant baixades.</string> + <string name="notification_channel_playing">ReproducciĆ³ actual</string> + <string name="notification_channel_playing_description">Permet controlar la reproducciĆ³. Aquesta Ć©s la notificaciĆ³ principal que veureu durant la reproducciĆ³ d\'un podcast.</string> + <string name="notification_channel_error">Errors</string> + <string name="notification_channel_error_description">Mostrar si quelcom va malament, per exemple si una baixada o sincronitzaciĆ³ fallen.</string> </resources> diff --git a/core/src/main/res/values-cs-rCZ/strings.xml b/core/src/main/res/values-cs-rCZ/strings.xml index f7b1156de..1d9868b2c 100644 --- a/core/src/main/res/values-cs-rCZ/strings.xml +++ b/core/src/main/res/values-cs-rCZ/strings.xml @@ -1,11 +1,13 @@ <?xml version='1.0' encoding='UTF-8'?> <resources xmlns:tools="http://schemas.android.com/tools"> <!--Activitiy and fragment titles--> + <string name="feed_update_receiver_name">Aktualizovat sbĆrky</string> <string name="feeds_label">KanĆ”ly</string> <string name="statistics_label">Statistiky</string> <string name="add_feed_label">PÅidat podcast</string> <string name="episodes_label">Epizody</string> <string name="all_episodes_short_label">VÅ”e</string> + <string name="new_episodes_label">NovĆ½</string> <string name="favorite_episodes_label">OblĆbenĆ©</string> <string name="new_label">NovĆ½</string> <string name="settings_label">NastavenĆ</string> @@ -18,10 +20,12 @@ <string name="cancel_download_label">ZruÅ”it stahovĆ”nĆ</string> <string name="playback_history_label">Historie pÅehrĆ”vĆ”nĆ</string> <string name="gpodnet_main_label">gpodder.net</string> + <string name="gpodnet_summary">Synchronizovat s ostatnĆmi pÅĆstroji</string> <string name="gpodnet_auth_label">Login pro gpodder.net</string> <string name="free_space_label">%1$s volnĆ©</string> <string name="episode_cache_full_title">OdklĆ”dacĆ prostor pro epizody je plnĆ½</string> <string name="episode_cache_full_message">DoÅ”lo k zaplnÄnĆ limitu odklĆ”dacĆho prostoru pro epizody. MÅÆžete navĆ½Å”it vyhrazenĆ½ prostor v NastavenĆ.</string> + <string name="synchronizing">Synchronizace...</string> <!--Statistics fragment--> <string name="total_time_listened_to_podcasts">CelkovĆ½ Äas poslechnutĆ½ch podcastÅÆ:</string> <string name="statistics_details_dialog">%1$d z %2$d zapoÄatĆ½ch epizod.\n\nPÅehranĆ½ch %3$s z %4$s.</string> @@ -52,7 +56,7 @@ <string name="no">Ne </string> <string name="reset">Reset</string> - <string name="author_label">Autor</string> + <string name="author_label">PÅispÄvatel(Ć©)</string> <string name="language_label">Jazyk</string> <string name="url_label">URL</string> <string name="podcast_settings_label">NastavenĆ</string> @@ -88,6 +92,7 @@ <plurals name="episode_cleanup_days_after_listening"> <item quantity="one">1 den po dokonÄenĆ</item> <item quantity="few">%d dny po dokonÄenĆ</item> + <item quantity="many">%d dnÅÆ po dokonÄenĆ</item> <item quantity="other">%d dnÅÆ po dokonÄenĆ</item> </plurals> <!--'Add Feed' Activity labels--> @@ -101,23 +106,12 @@ <string name="mark_all_read_label">OznaÄit vÅ”e jako poslechnutĆ©</string> <string name="mark_all_read_msg">VÅ”echny epizody oznaÄeny jako poslechnutĆ©</string> <string name="mark_all_read_confirmation_msg">PotvrÄte prosĆm, že chcete oznaÄit vÅ”echny vybranĆ© epizody jako poslechnutĆ©.</string> - <string name="mark_all_read_feed_confirmation_msg">PotvrÄte prosĆm, že chcete oznaÄit vÅ”echny epizody z tohoto zdroje jako poslechnutĆ©.</string> <string name="mark_all_seen_label">OznaÄit vÅ”e jako zobrazenĆ©</string> - <string name="mark_all_seen_msg">OznaÄit vÅ”echny epizody jako shlĆ©dnutĆ©</string> <string name="mark_all_seen_confirmation_msg">PotvrÄte prosĆm, že chcete oznaÄit vÅ”echny epizody jako shlĆ©dnutĆ©.</string> <string name="show_info_label">Informace o zdroji</string> - <string name="rename_feed_label">PÅejmenovat podcast</string> - <string name="remove_feed_label">Odstranit podcast</string> <string name="share_label">SdĆlet</string> - <string name="share_link_label">SdĆlet odkaz</string> - <string name="share_link_with_position_label">SdĆlet odkaz s pozicĆ</string> <string name="share_feed_url_label">SdĆlet URL kanĆ”lu</string> - <string name="share_item_url_label">SdĆlet URL souboru epizody</string> - <string name="share_item_url_with_position_label">SdĆlet URL souboru epizody s pozicĆ</string> - <string name="feed_remover_msg">Odstranit kanĆ”l</string> - <string name="load_complete_feed">Obnovit kompletnĆ kanĆ”l</string> <string name="hide_episodes_title">SkrĆ½t epizody</string> - <string name="episode_actions">ProvĆ©st akce</string> <string name="hide_unplayed_episodes_label">NeposlechnutĆ©</string> <string name="hide_paused_episodes_label">PozastavenĆ©</string> <string name="hide_played_episodes_label">PoslechnutĆ©</string> @@ -185,6 +179,7 @@ <plurals name="downloads_left"> <item quantity="one">%d ÄekajĆcĆ na staženĆ</item> <item quantity="few">%d ÄekajĆcĆ na staženĆ</item> + <item quantity="many">%d ÄekajĆcĆch na staženĆ</item> <item quantity="other">%d ÄekajĆcĆch na staženĆ</item> </plurals> <string name="downloads_processing">ProbĆhĆ” stahovĆ”nĆ</string> @@ -228,7 +223,6 @@ <string name="date">Datum</string> <string name="duration">DĆ©lka</string> <string name="episode_title">NĆ”zev epizody</string> - <string name="feed_title">NĆ”zev kanĆ”lu</string> <string name="ascending">VzestupnÄ</string> <string name="descending">SestupnÄ</string> <string name="clear_queue_confirmation_msg">PotvrÄte prosĆm, že chcete vyÄistit tuto frontu a VÅ ECHNY v nĆ obsaženĆ© epizody</string> @@ -266,7 +260,6 @@ <string name="enable_sonic">Povolit Sonic</string> <!--Empty list labels--> <string name="no_items_label">Å½Ć”dnĆ© položky v seznamu.</string> - <string name="no_feeds_label">ZatĆm nebyly pÅidĆ”ny Å¾Ć”dnĆ© kanĆ”ly.</string> <string name="no_chapters_label">Tato epizoda nemĆ” Å¾Ć”dnĆ© kapitoly.</string> <string name="no_shownotes_label">Tato epizoda neobsahuje Å¾Ć”dnĆ© poznĆ”mky.</string> <!--Preferences--> @@ -275,14 +268,12 @@ <string name="other_pref">OstatnĆ</string> <string name="about_pref">O aplikaci</string> <string name="queue_label">Fronta</string> - <string name="services_label">Služby</string> <string name="flattr_label">Flattr</string> <string name="pref_episode_cleanup_title">VyÄistit epizody</string> <string name="pref_episode_cleanup_summary">Epizody, kterĆ© nejsou ve frontÄ a nejsou oznaÄeny za oblĆbenĆ© by mÄlo bĆ½t možnĆ© smazat, pokud bude funkce automatickĆ©ho stahovĆ”nĆ potÅebovat mĆsto pro novĆ© epizody</string> <string name="pref_pauseOnDisconnect_sum">PÅi odpojenĆ sluchĆ”tek nebo bluetooth pÅipojenĆ pozastavit pÅehrĆ”vĆ”nĆ.</string> <string name="pref_unpauseOnHeadsetReconnect_sum">PokraÄovat v pÅehrĆ”vĆ”nĆ po pÅipojenĆ sluchĆ”tek</string> <string name="pref_unpauseOnBluetoothReconnect_sum">PokraÄovat v pÅehrĆ”vĆ”nĆ po pÅipojenĆ bluetooth</string> - <string name="pref_hardwareForwardButtonSkips_sum">Po stlaÄenĆ hardwarovĆ©ho tlaÄĆtka pro posun vpÅed mĆsto pÅetoÄenĆ vpÅed pÅeskoÄit na dalÅ”Ć epizodu</string> <string name="pref_hardwarePreviousButtonRestarts_title">TlaÄĆtko zpÄt restartuje</string> <string name="pref_hardwarePreviousButtonRestarts_sum">Po stlaÄenĆ hardwarovĆ©ho tlaÄĆtka pro posun zpÄt mĆsto pÅetoÄenĆ vpÅed restartovat pÅehrĆ”vĆ”nĆ aktuĆ”lnĆ epizody</string> <string name="pref_followQueue_sum">Po pÅehrĆ”nĆ položky z fronty pÅejĆt automaticky na dalÅ”Ć</string> @@ -328,7 +319,6 @@ <string name="pref_nav_drawer_feed_order_title">Nastavit poÅadĆ sbĆrek</string> <string name="pref_nav_drawer_feed_order_sum">Upravit poÅadĆ vaÅ”ich sbĆrek</string> <string name="pref_nav_drawer_feed_counter_title">Nastavit poÄĆtadlo sbĆrek</string> - <string name="pref_nav_drawer_feed_counter_sum">Upravit informaci zobrazovanou poÄĆtadlem sbĆrek</string> <string name="pref_set_theme_sum">ZmÄnit vzhled AntennaPod.</string> <string name="pref_automatic_download_title">AutomatickĆ© stahovĆ”nĆ</string> <string name="pref_automatic_download_sum">NastavenĆ automatickĆ©ho stahovĆ”nĆ epizod.</string> @@ -364,8 +354,6 @@ <string name="pref_playback_speed_sum">PÅizpÅÆsobenĆ rychlosti je dostupnĆ© pro pÅehrĆ”vĆ”nĆ zvuku rÅÆznĆ½mi rychlostmi</string> <string name="pref_gpodnet_sethostname_title">Nastavit hostname</string> <string name="pref_gpodnet_sethostname_use_default_host">PoužĆt pÅednastavenĆ©ho hosta</string> - <string name="pref_expandNotify_title">RozÅ”ĆÅenĆ© upozornÄnĆ</string> - <string name="pref_expandNotify_sum">Vždy zobrazovat tlaÄĆtka pro pÅehrĆ”vĆ”nĆ v upozornÄnĆ.</string> <string name="pref_persistNotify_title">PevnĆ© ovlĆ”dĆ”nĆ pÅehrĆ”vĆ”nĆ</string> <string name="pref_persistNotify_sum">Zachovat upozornÄnĆ a ovlĆ”dĆ”nĆ na obrazovce uzamÄenĆ i pÅi pozastavenĆ©m pÅehrĆ”vĆ”nĆ.</string> <string name="pref_compact_notification_buttons_title">NastavenĆ tlaÄĆtek uzamÄenĆ© obrazovky</string> @@ -386,7 +374,6 @@ <string name="crash_report_sum">OdesĆlat hlĆ”Å”enĆ o poslednĆm pĆ”du aplikace emailem</string> <string name="send_email">Poslat email</string> <string name="experimental_pref">ExperimentĆ”lnĆ</string> - <string name="pref_sonic_message">PoužĆt pÅipojenĆ½ sonic media player jako nĆ”hradu za vĆ½chozĆ pÅehrĆ”vaÄ mĆ©diĆ pro Android a Prestissimo</string> <string name="pref_current_value">AktuĆ”lnĆ hodnota: %1$s</string> <string name="pref_proxy_title">Proxy</string> <string name="pref_proxy_sum">Nastavit sĆÅ„ovou proxy</string> @@ -430,8 +417,6 @@ <string name="html_export_label">HTML export</string> <string name="exporting_label">Export</string> <string name="export_error_label">Chyba exportu</string> - <string name="opml_export_success_title">OPML export byl ĆŗspÄÅ”nĆ½.</string> - <string name="opml_export_success_sum">OPML soubor byl zapsĆ”n do:\u0020</string> <string name="opml_import_ask_read_permission">Pro pÅeÄtenĆ OPML souboru je vyžadovĆ”n pÅĆstup k externĆmu ĆŗložiÅ”ti</string> <!--Sleep timer--> <string name="set_sleeptimer_label">Nastavit ÄasovaÄ vypnutĆ</string> @@ -449,16 +434,19 @@ <plurals name="time_seconds_quantified"> <item quantity="one">1 sekunda</item> <item quantity="few">%d sekundy</item> + <item quantity="many">%d sekund</item> <item quantity="other">%d sekund</item> </plurals> <plurals name="time_minutes_quantified"> <item quantity="one">1 minuta</item> <item quantity="few">%d minuty</item> + <item quantity="many">%d minut</item> <item quantity="other">%d minut</item> </plurals> <plurals name="time_hours_quantified"> <item quantity="one">1 hodina</item> <item quantity="few">%d hodiny</item> + <item quantity="many">%d hodin</item> <item quantity="other">%d hodin</item> </plurals> <string name="auto_enable_label">Automaticky zapnout</string> @@ -618,4 +606,5 @@ <string name="cast_failed_seek">Selhal posun na novou pozici na vysĆlaÄi</string> <string name="cast_failed_receiver_player_error">PÅijĆmaÄ zaznamenal zĆ”važnou chybu</string> <string name="cast_failed_media_error_skipping">Chyba pÅehrĆ”vĆ”nĆ mĆ©diĆ. PÅeskakuji...</string> + <!--Notification channels--> </resources> diff --git a/core/src/main/res/values-da/strings.xml b/core/src/main/res/values-da/strings.xml index 6364ef099..a094cdacf 100644 --- a/core/src/main/res/values-da/strings.xml +++ b/core/src/main/res/values-da/strings.xml @@ -56,7 +56,6 @@ <string name="yes">Ja</string> <string name="no">Nej</string> <string name="reset">Nulstil</string> - <string name="author_label">Forfatter</string> <string name="language_label">Sprog</string> <string name="url_label">Webadresse</string> <string name="podcast_settings_label">Indstillinger </string> @@ -105,25 +104,13 @@ <string name="mark_all_read_label">Marker alle som afspillet</string> <string name="mark_all_read_msg">Marker alle udsendelser som afspillet</string> <string name="mark_all_read_confirmation_msg">BekrƦft venligst at du Ćønsker at markere alle udsendelser som vƦrende afspillet.</string> - <string name="mark_all_read_feed_confirmation_msg">BekrƦft venligst at du Ćønsker at markere alle udsendelser i denne feed som vƦrende afspillet.</string> <string name="mark_all_seen_label">Marker alle som set</string> - <string name="mark_all_seen_msg">Markerede alle udsendelser som set</string> <string name="mark_all_seen_confirmation_msg">BekrƦft venligst at du Ćønsker at markere alle udsendelser som set.</string> <string name="show_info_label">Vis information</string> - <string name="rename_feed_label">OmdĆøb podcast</string> - <string name="remove_feed_label">Fjern podcast</string> <string name="share_label">Delā¦</string> - <string name="share_link_label">Del link</string> <string name="share_file_label">Del fil</string> - <string name="share_link_with_position_label">Del link med position</string> <string name="share_feed_url_label">Del webadresse for feedet</string> - <string name="share_item_url_label">Del webadresse for udsendelsen</string> - <string name="share_item_url_with_position_label">Del webadresse for udsendelsen med position</string> - <string name="feed_delete_confirmation_msg">BekrƦft venligst at du Ćønsker at slette feedet \"%1$s\" og ALLE overfĆørte udsendelser i dette feed.</string> - <string name="feed_remover_msg">Fjerner feed</string> - <string name="load_complete_feed">Opdater hele feedet</string> <string name="hide_episodes_title">Skjul udsendelser</string> - <string name="episode_actions">Anvend handlinger</string> <string name="hide_unplayed_episodes_label">Uafspillede</string> <string name="hide_paused_episodes_label">Sat pĆ„ pause</string> <string name="hide_played_episodes_label">Afspillede</string> @@ -234,7 +221,6 @@ <string name="date">Dato</string> <string name="duration">Varighed</string> <string name="episode_title">Titel pĆ„ udsendelse</string> - <string name="feed_title">Titel pĆ„ feed</string> <string name="ascending">Stigende</string> <string name="descending">Faldende</string> <string name="clear_queue_confirmation_msg">BekrƦft venligst at du vil rydde ALLE udsendelser fra kĆøen</string> @@ -272,7 +258,6 @@ <string name="enable_sonic">SlĆ„ Sonic til</string> <!--Empty list labels--> <string name="no_items_label">Der er ingen elementer i denne liste.</string> - <string name="no_feeds_label">Du har endnu ikke abonneret pĆ„ nogen feeds.</string> <string name="no_chapters_label">Denne udsendelse har ingen kapitler.</string> <string name="no_shownotes_label">Denne udsendelse har ingen beskrivelse.</string> <!--Preferences--> @@ -281,7 +266,6 @@ <string name="other_pref">Andre</string> <string name="about_pref">Om</string> <string name="queue_label">KĆø</string> - <string name="services_label">Tjenester</string> <string name="flattr_label">Flattr</string> <string name="pref_episode_cleanup_title">Oprydning i udsendelser</string> <string name="pref_episode_cleanup_summary">Tillad at udsendelser, som ikke er i kĆøen og som ikke er markeret som foretrukne, kan fjernes, hvis Automatisk overfĆørsel har brug for plads til nye udsendelser</string> @@ -289,7 +273,6 @@ <string name="pref_unpauseOnHeadsetReconnect_sum">Genoptag afspilning nĆ„r hovedtelefonerne tilsluttes igen</string> <string name="pref_unpauseOnBluetoothReconnect_sum">Genoptag afspilning nĆ„r bluetooth forbinder igen</string> <string name="pref_hardwareForwardButtonSkips_title">Fremadknap springer over</string> - <string name="pref_hardwareForwardButtonSkips_sum">NĆ„r der trykkes pĆ„ en fysisk fremadknap, skal der springes til den nƦste udsendelse i stedet for at spoles fremad.</string> <string name="pref_hardwarePreviousButtonRestarts_title">Tilbageknap genstarter</string> <string name="pref_hardwarePreviousButtonRestarts_sum">NĆ„r der trykkes pĆ„ en fysisk tilbageknap, skal den aktuelle udsendelse afspilles forfra i stedet for at der spoles tilbage.</string> <string name="pref_followQueue_sum">Spring til nƦste element i kĆøen nĆ„r afspilningen er fƦrdig</string> @@ -338,7 +321,6 @@ <string name="pref_nav_drawer_feed_order_title">VƦlg abonnementsorden</string> <string name="pref_nav_drawer_feed_order_sum">Ćndr rƦkkefĆølgen af dine abonnementer</string> <string name="pref_nav_drawer_feed_counter_title">Indstil abonnementstƦller</string> - <string name="pref_nav_drawer_feed_counter_sum">VƦlg den information, som abonnementstƦlleren viser</string> <string name="pref_set_theme_sum">Ćndr AntennaPods udseende.</string> <string name="pref_automatic_download_title">Automatisk overfĆørsel</string> <string name="pref_automatic_download_sum">Konfigurer automatisk overfĆørsel af udsendelser</string> @@ -380,8 +362,6 @@ <string name="pref_rewind_sum">Indstil antallet af sekunder, der skal springes tilbage, nĆ„r der trykkes pĆ„ tilbagespolingsknappen</string> <string name="pref_gpodnet_sethostname_title">Indstil vƦrtsnavn</string> <string name="pref_gpodnet_sethostname_use_default_host">Brug standard vƦrt</string> - <string name="pref_expandNotify_title">Udvidelse af notifikation</string> - <string name="pref_expandNotify_sum">Udvid altid notifikationen for at vise afspilningsknapper.</string> <string name="pref_persistNotify_title">Vedholdende afspilningsknapper</string> <string name="pref_persistNotify_sum">Behold notifikation og knapper pĆ„ lĆ„seskƦrmen, nĆ„r afspilningen sƦttes pĆ„ pause.</string> <string name="pref_compact_notification_buttons_title">Indstil knapper pĆ„ lĆ„seskƦrm</string> @@ -402,8 +382,6 @@ <string name="crash_report_sum">Send den seneste nedbrudsrapport via e-mail</string> <string name="send_email">Send e-mail</string> <string name="experimental_pref">Eksperimentelt</string> - <string name="pref_sonic_title">Sonic-medieafspiller</string> - <string name="pref_sonic_message">Brug indbygget Sonic-medieafspiller i stedet for Androids indbyggede medieafspiller og Prestissimo</string> <string name="pref_current_value">NuvƦrende vƦrdi: %1$s</string> <string name="pref_proxy_title">Proxy</string> <string name="pref_proxy_sum">Indstil en netvƦrksproxy</string> @@ -424,8 +402,6 @@ <string name="search_hint">SĆøg efter udsendelser</string> <string name="found_in_shownotes_label">Fundet i beskrivelse</string> <string name="found_in_chapters_label">Fundet i kapitler</string> - <string name="found_in_authors_label">Fundet i forfattere</string> - <string name="found_in_feeds_label">Fundet i feeds</string> <string name="search_status_no_results">Fandt ingen resultater</string> <string name="search_label">SĆøg</string> <string name="found_in_title_label">Fundet i titel</string> @@ -451,8 +427,6 @@ <string name="html_export_label">HTML-eksport</string> <string name="exporting_label">Eksportererā¦</string> <string name="export_error_label">Eksportfejl</string> - <string name="opml_export_success_title">OPML-eksport lykkedes.</string> - <string name="opml_export_success_sum">.opml-filen blev skrevet til:\u0020</string> <string name="opml_import_ask_read_permission">Adgang til eksternt lager er pĆ„krƦvet for at lƦse OPML-filen</string> <!--Sleep timer--> <string name="set_sleeptimer_label">Indstil sĆøvntimer</string> @@ -637,4 +611,5 @@ <string name="cast_failed_seek">Det lykkedes ikke at sĆøge til den nye position pĆ„ cast-enheden</string> <string name="cast_failed_receiver_player_error">Modtagerafspilleren er stĆødt pĆ„ en alvorlig fejl</string> <string name="cast_failed_media_error_skipping">Fejl ved afspilning af medie. Springer overā¦</string> + <!--Notification channels--> </resources> diff --git a/core/src/main/res/values-de/strings.xml b/core/src/main/res/values-de/strings.xml index c1faf9b5b..3c736f1b0 100644 --- a/core/src/main/res/values-de/strings.xml +++ b/core/src/main/res/values-de/strings.xml @@ -1,11 +1,13 @@ <?xml version='1.0' encoding='UTF-8'?> <resources xmlns:tools="http://schemas.android.com/tools"> <!--Activitiy and fragment titles--> + <string name="feed_update_receiver_name">Abonnements aktualisieren</string> <string name="feeds_label">Feeds</string> <string name="statistics_label">Statistiken</string> <string name="add_feed_label">Podcast hinzufĆ¼gen</string> <string name="episodes_label">Episoden</string> <string name="all_episodes_short_label">Alle</string> + <string name="new_episodes_label">Neu</string> <string name="favorite_episodes_label">Favoriten</string> <string name="new_label">Neu</string> <string name="settings_label">Einstellungen</string> @@ -18,10 +20,12 @@ <string name="cancel_download_label">Download abbrechen</string> <string name="playback_history_label">Zuletzt gespielt</string> <string name="gpodnet_main_label">gpodder.net</string> + <string name="gpodnet_summary">Mit anderen GerƤten synchronisieren</string> <string name="gpodnet_auth_label">gpodder.net Anmeldung</string> <string name="free_space_label">%1$s frei</string> <string name="episode_cache_full_title">Episodenspeicher voll</string> <string name="episode_cache_full_message">Der Episodenspeicher ist voll. Du kannst die GrƶĆe des Episodenspeichers in den Einstellungen erhƶhen.</string> + <string name="synchronizing">Synchronisiere...</string> <!--Statistics fragment--> <string name="total_time_listened_to_podcasts">Gesamtzeit gespielter Podcasts:</string> <string name="statistics_details_dialog">%1$d von %2$d Episoden gestartet.\n\n%3$s von %4$s Episoden gespielt.</string> @@ -56,15 +60,16 @@ <string name="yes">Ja</string> <string name="no">Nein</string> <string name="reset">Reset</string> - <string name="author_label">Autor</string> + <string name="author_label">Autor(en)</string> <string name="language_label">Sprache</string> <string name="url_label">URL</string> <string name="podcast_settings_label">Einstellungen</string> <string name="cover_label">Bild</string> <string name="error_label">Fehler</string> <string name="error_msg_prefix">Ein Fehler ist aufgetreten:</string> + <string name="needs_storage_permission">FĆ¼r diese Funktion wird die Speicher-Berechtigung benƶtigt</string> <string name="refresh_label">Aktualisieren</string> - <string name="external_storage_error_msg">Der externe Speicher ist nicht verfĆ¼gbar. Bitte stelle sicher, dass das externe Speichermedium eingelegt ist, damit die Anwendung funktioniert.</string> + <string name="external_storage_error_msg">Der externe Speicher ist nicht verfĆ¼gbar. Bitte stelle sicher, dass das externe Speichermedium eingelegt ist, damit die App funktioniert.</string> <string name="chapters_label">Kapitel</string> <string name="chapter_duration">Dauer: %1$s</string> <string name="shownotes_label">Shownotizen</string> @@ -110,20 +115,23 @@ <string name="mark_all_seen_msg">Alle Episoden als gesehen markiert</string> <string name="mark_all_seen_confirmation_msg">Bitte bestƤtige, dass alle Episoden als gesehen markiert werden sollen.</string> <string name="show_info_label">Informationen anzeigen</string> - <string name="rename_feed_label">Podcast umbenennen</string> + <string name="show_feed_settings_label">Zeige Feed-Einstellungen</string> + <string name="feed_info_label">Feed-Informationen</string> + <string name="feed_settings_label">Feed-Einstellungen</string> + <string name="rename_feed_label">Feed umbenennen</string> <string name="remove_feed_label">Podcast entfernen</string> <string name="share_label">Teilenā¦</string> - <string name="share_link_label">Teile Link</string> - <string name="share_file_label">Teile Datei</string> + <string name="share_link_label">Episoden URL Teilen</string> <string name="share_link_with_position_label">Teile Link mit Zeitmarke</string> + <string name="share_file_label">Teile Datei</string> <string name="share_feed_url_label">Teile URL des Podcasts</string> - <string name="share_item_url_label">Teile URL der Episode</string> - <string name="share_item_url_with_position_label">Teile URL der Episode mit Zeitmarke</string> - <string name="feed_delete_confirmation_msg">Bitte bestƤtige, dass du den Feed \"%1$s\" und ALLE heruntergeladenen Episoden lƶschen mƶchtest.</string> - <string name="feed_remover_msg">Entferne Feed</string> + <string name="share_item_url_label">Teile URL der Episodendatei</string> + <string name="share_item_url_with_position_label">Teile URL der Episodendatei mit Zeitmarke</string> + <string name="feed_delete_confirmation_msg">Bitte bestƤtige, dass du den Podcast \"%1$s\" und ALLE heruntergeladenen Episoden dieses Feeds entfernen mƶchtest.</string> + <string name="feed_remover_msg">Entferne Podcast</string> <string name="load_complete_feed">Kompletten Feed aktualisieren</string> <string name="hide_episodes_title">Episoden verbergen</string> - <string name="episode_actions">Aktionen anwenden</string> + <string name="batch_edit">Stapelbearbeitung</string> <string name="hide_unplayed_episodes_label">Ungespielt</string> <string name="hide_paused_episodes_label">Pausiert</string> <string name="hide_played_episodes_label">Gespielt</string> @@ -132,6 +140,7 @@ <string name="hide_downloaded_episodes_label">Heruntergeladen</string> <string name="hide_not_downloaded_episodes_label">Nicht heruntergeladen</string> <string name="hide_has_media_label">Hat Medien</string> + <string name="hide_is_favorite_label">Favorit</string> <string name="filtered_label">Gefiltert</string> <string name="refresh_failed_msg">{fa-exclamation-circle} Aktualisierung fehlgeschlagen</string> <string name="open_podcast">Podcast ƶffnen</string> @@ -145,6 +154,7 @@ <string name="delete_label">Lƶschen</string> <string name="delete_failed">Die Datei kann nicht gelƶscht werden. Eventuell hilft es, das GerƤt neu zu starten.</string> <string name="remove_episode_lable">Episode entfernen</string> + <string name="mark_as_seen_label">Als gelesen markieren</string> <string name="marked_as_seen_label">Als gesehen markiert</string> <string name="mark_read_label">Als gespielt markieren</string> <string name="marked_as_read_label">Als gespielt markiert</string> @@ -168,6 +178,8 @@ <string name="download_failed">fehlgeschlagen</string> <string name="download_pending">Download anstehend</string> <string name="download_running">Download lƤuft</string> + <string name="download_error_details">Details</string> + <string name="download_error_details_message">%1$s \n\nDatei-URL:\n%2$s</string> <string name="download_error_device_not_found">Speichermedium nicht gefunden</string> <string name="download_error_insufficient_space">Zu wenig Speicherplatz</string> <string name="download_error_file_error">Dateifehler</string> @@ -218,6 +230,7 @@ <string name="playback_error_unknown">Unbekannter Fehler</string> <string name="no_media_playing_label">Keine Medienwiedergabe</string> <string name="player_buffering_msg">Puffert</string> + <string name="player_go_to_picture_in_picture">Bild-in-Bild-Modus</string> <string name="playbackservice_notification_title">Spiele Podcast ab</string> <string name="unknown_media_key">AntennaPod - Unbekannte Medientaste: %1$d</string> <!--Queue operations--> @@ -234,7 +247,9 @@ <string name="date">Datum</string> <string name="duration">Dauer</string> <string name="episode_title">Episodentitel</string> - <string name="feed_title">Podcastname</string> + <string name="feed_title">Feedname</string> + <string name="random">ZufƤllig</string> + <string name="smart_shuffle">Schlaues Mischen</string> <string name="ascending">Aufsteigend</string> <string name="descending">Absteigend</string> <string name="clear_queue_confirmation_msg">Bitte bestƤtige, dass ALLE Episoden aus der Abspielliste entfernt werden sollen</string> @@ -281,15 +296,23 @@ <string name="other_pref">Anderes</string> <string name="about_pref">Ćber</string> <string name="queue_label">Abspielliste</string> - <string name="services_label">Dienste</string> + <string name="integrations_label">Einbindungen</string> <string name="flattr_label">Flattr</string> + <string name="flattr_summary">Micropayment-Dienst</string> + <string name="automation">Automatisierung</string> + <string name="download_pref_details">Details</string> + <string name="import_export_pref">Import/Export</string> + <string name="appearance">Erscheinungsbild</string> + <string name="external_elements">Externe Elemente</string> + <string name="interruptions">Unterbrechungen</string> + <string name="buttons">Buttons zur Steuerung der Wiedergabe</string> + <string name="media_player">Medienabspieler</string> <string name="pref_episode_cleanup_title">Automatisches Lƶschen</string> <string name="pref_episode_cleanup_summary">Episoden, die weder in der Abspielliste noch Favoriten sind, kƶnnen gelƶscht werden, wenn beim automatischen Herunterladen Speicherplatz fĆ¼r neue Episoden gebraucht wird</string> <string name="pref_pauseOnDisconnect_sum">Wiedergabe pausieren, wenn Kopfhƶrer ausgesteckt oder Bluetooth getrennt wird</string> <string name="pref_unpauseOnHeadsetReconnect_sum">Wiedergabe fortsetzen, wenn Kopfhƶrer wieder eingesteckt werden</string> <string name="pref_unpauseOnBluetoothReconnect_sum">Wiedergabe fortsetzen, wenn Bluetooth wieder verbunden ist</string> <string name="pref_hardwareForwardButtonSkips_title">\"NƤchster\"-Taste springt zur nƤchsten Episode</string> - <string name="pref_hardwareForwardButtonSkips_sum">Zur nƤchsten Episode springen, wenn die \"NƤchster\"-Taste gedrĆ¼ckt wird (statt vorzuspulen)</string> <string name="pref_hardwarePreviousButtonRestarts_title">Vorheriger-Taste startet neu</string> <string name="pref_hardwarePreviousButtonRestarts_sum">Die Wiedergabe der aktuellen Episode neu starten, wenn die \"Vorheriger\"-Taste gedrĆ¼ckt wird (statt zurĆ¼ckzuspulen)</string> <string name="pref_followQueue_sum">Springe zur nƤchsten Episode in der Abspielliste, wenn die Wiedergabe endet</string> @@ -338,7 +361,7 @@ <string name="pref_nav_drawer_feed_order_title">Reihenfolge der Abonnements einstellen</string> <string name="pref_nav_drawer_feed_order_sum">Ćndere die Reihenfolge deiner Abonnements</string> <string name="pref_nav_drawer_feed_counter_title">Abonnement-ZƤhler einstellen</string> - <string name="pref_nav_drawer_feed_counter_sum">Ćndere, welche Information der Abonnement-ZƤhler anzeigt</string> + <string name="pref_nav_drawer_feed_counter_sum">Ćndere die durch den AbonnementszƤhler angezeigten Informationen. Betrifft auch die Sortierung der Abonnements wenn \"Reihenfolge der Abonnements\" auf \"ZƤhler\" gesetzt ist.</string> <string name="pref_set_theme_sum">Ćndere das Aussehen von AntennaPod.</string> <string name="pref_automatic_download_title">Automatisches Herunterladen</string> <string name="pref_automatic_download_sum">Konfiguriere das automatische Herunterladen von Episoden.</string> @@ -352,6 +375,7 @@ <string name="pref_episode_cache_title">Episodenspeicher</string> <string name="pref_theme_title_light">Hell</string> <string name="pref_theme_title_dark">Dunkel</string> + <string name="pref_theme_title_trueblack">Schwarz (fĆ¼r AMOLED)</string> <string name="pref_episode_cache_unlimited">Unbegrenzt</string> <string name="pref_update_interval_hours_plural">Stunden</string> <string name="pref_update_interval_hours_singular">Stunde</string> @@ -380,8 +404,6 @@ <string name="pref_rewind_sum">Passe an, wie viele Sekunden zurĆ¼ckgespult wird, wenn die entsprechende Hardware-Taste gedrĆ¼ckt wird</string> <string name="pref_gpodnet_sethostname_title">Hostname Ƥndern</string> <string name="pref_gpodnet_sethostname_use_default_host">Standard-Host verwenden</string> - <string name="pref_expandNotify_title">Benachrichtigung erweitern</string> - <string name="pref_expandNotify_sum">Erweiterte Wiedergabebenachrichtigung mit Abspiel-, Pause- und Stop-Knƶpfen anzeigen.</string> <string name="pref_persistNotify_title">Persistente Wiedergabesteuerung</string> <string name="pref_persistNotify_sum">Zeige Wiedergabebedienelemente in der Benachrichtigung und im Lockscreen an, wƤhrend die Wiedergabe pausiert ist.</string> <string name="pref_compact_notification_buttons_title">Lockscreen-Wiedergabetasten festlegen</string> @@ -402,8 +424,7 @@ <string name="crash_report_sum">Sende den aktuellen Absturzbericht per E-Mail</string> <string name="send_email">E-Mail senden</string> <string name="experimental_pref">Experimentell</string> - <string name="pref_sonic_title">Sonic Media Player</string> - <string name="pref_sonic_message">Benutze den integrierten Sonic Mediaplayer als Ersatz fĆ¼r Androids eigenen Mediaplayer und Prestissimo</string> + <string name="pref_media_player_message">WƤhle, welcher Medienabspieler benutzt werden soll, um Dateien abzuspielen</string> <string name="pref_current_value">Aktueller Wert: %1$s</string> <string name="pref_proxy_title">Proxy</string> <string name="pref_proxy_sum">Richte einen Netzwerk-Proxy ein</string> @@ -415,6 +436,11 @@ <string name="pref_cast_message_free_flavor">Chromecast benƶtigt proprietƤre Bibliotheken von Drittanbietern, die in dieser Version von AntennaPod deaktiviert sind</string> <string name="pref_enqueue_downloaded_title">Downloads einreihen</string> <string name="pref_enqueue_downloaded_summary">FĆ¼ge heruntergeladene Episoden zur Abspielliste hinzu</string> + <string name="media_player_builtin">Androids eingebauter Abspieler</string> + <string name="pref_videoBehavior_title">Beim Beenden des Videos</string> + <string name="pref_videoBehavior_sum">Verhalten beim Verlassen der Video-Wiedergabe</string> + <string name="stop_playback">Wiedergabe anhalten</string> + <string name="continue_playback">Audiowiedergabe fortsetzen</string> <!--Auto-Flattr dialog--> <string name="auto_flattr_enable">Automatisches Flattrn aktivieren</string> <string name="auto_flattr_after_percent">Flattr eine Episode, sobald %d Prozent gespielt worden sind</string> @@ -424,8 +450,8 @@ <string name="search_hint">Suche nach Episoden</string> <string name="found_in_shownotes_label">In Shownotizen gefunden</string> <string name="found_in_chapters_label">In Kapiteln gefunden</string> - <string name="found_in_authors_label">In Autoren gefunden</string> - <string name="found_in_feeds_label">In Feeds gefunden</string> + <string name="found_in_authors_label">Gefunden in Autor(en)</string> + <string name="found_in_feeds_label">Gefunden in Podcast</string> <string name="search_status_no_results">Keine Ergebnisse gefunden</string> <string name="search_label">Suchen</string> <string name="found_in_title_label">In Titel gefunden</string> @@ -451,8 +477,8 @@ <string name="html_export_label">HTML Export</string> <string name="exporting_label">Exportiereā¦</string> <string name="export_error_label">Exportfehler</string> - <string name="opml_export_success_title">OPML Export erfolgreich</string> - <string name="opml_export_success_sum">Die OPML Datei wurde unter dem folgenden Pfad gespeichert:\u0020</string> + <string name="export_success_title">Export erfolgreich</string> + <string name="export_success_sum">Die exportierte Datei wurde geschrieben nach:\n\n%1$s</string> <string name="opml_import_ask_read_permission">Zugriff auf externen Speicher wird benƶtigt, um die OPML Datei zu lesen</string> <!--Sleep timer--> <string name="set_sleeptimer_label">Timer einstellen</string> @@ -625,7 +651,7 @@ <string name="label_import">Import</string> <string name="label_export">Export</string> <string name="import_select_file">Zu importierende Datei auswƤhlen</string> - <string name="export_ok">Export erfolgreich. Die Datenbank wurde auf die SD-Karte geschrieben.</string> + <string name="export_ok">Export erfolgreich.</string> <string name="import_ok">Import erfolgreich.\n\nBitte OK drĆ¼cken, um AntennaPod neuzustarten</string> <!--Casting--> <string name="cast_media_route_menu_title">Abspielen auf...</string> @@ -643,4 +669,13 @@ <string name="cast_failed_seek">Spulen zur neuen Position fehlgeschlagen</string> <string name="cast_failed_receiver_player_error">Es wurde ein schwerer Fehler beim EmpfangsgerƤt festgestellt</string> <string name="cast_failed_media_error_skipping">Fehler bei Wiedergabe. Ćberspringe...</string> + <!--Notification channels--> + <string name="notification_channel_user_action">Handlung notwendig</string> + <string name="notification_channel_user_action_description">Wird gezeigt, wenn deine Handlung notwendig ist, zum Beispiel wenn du ein Passwort eingeben musst.</string> + <string name="notification_channel_downloading">LƤdt herunter</string> + <string name="notification_channel_downloading_description">Wird gezeigt beim Herunterladen.</string> + <string name="notification_channel_playing">Jetzt spielt</string> + <string name="notification_channel_playing_description">Erlaubt es, die Wiedergabe zu steuern. Dies ist die Hauptbenachrichtigung, die du siehst, wƤhrend ein Podcast abgespielt wird.</string> + <string name="notification_channel_error">Fehler</string> + <string name="notification_channel_error_description">Wird gezeigt, wenn etwas schief gegangen ist, etwa wenn das Herunterladen oder die gpodder-Synchronisierung fehlschlƤgt.</string> </resources> diff --git a/core/src/main/res/values-el/strings.xml b/core/src/main/res/values-el/strings.xml index 152e73426..f72115bb2 100644 --- a/core/src/main/res/values-el/strings.xml +++ b/core/src/main/res/values-el/strings.xml @@ -1,16 +1,18 @@ <?xml version='1.0' encoding='UTF-8'?> <resources xmlns:tools="http://schemas.android.com/tools"> <!--Activitiy and fragment titles--> + <string name="feed_update_receiver_name">ĪĪ½Ī±Ī½ĪĻĻĪ· Ī£Ļ
Ī½Ī“ĻĪæĪ¼ĻĪ½</string> <string name="feeds_label">Ī”ĪæĪĻ</string> <string name="statistics_label">Ī£ĻĪ±ĻĪ¹ĻĻĪ¹ĪŗĪ¬</string> <string name="add_feed_label">Ī ĻĪæĻĪøĪ®ĪŗĪ· Podcast</string> <string name="episodes_label">ĪĻĪµĪ¹ĻĻĪ“Ī¹Ī±</string> <string name="all_episodes_short_label">ĪĪ»Ī±</string> + <string name="new_episodes_label">ĪĪĪ±</string> <string name="favorite_episodes_label">ĪĪ³Ī±ĻĪ·Ī¼ĪĪ½Ī±</string> <string name="new_label">ĪĪĪ±</string> <string name="settings_label">Ī”Ļ
ĪøĪ¼ĪÆĻĪµĪ¹Ļ</string> <string name="downloads_label">ĪĪ®ĻĪµĪ¹Ļ</string> - <string name="downloads_running_label">ĪĪŗĻĪĪ»ĪµĻĪ·</string> + <string name="downloads_running_label">ĪĪŗĻĪĪ»ĪµĪÆĻĪ±Ī¹</string> <string name="downloads_completed_label">ĪĪ»ĪæĪŗĪ»Ī·ĻĻĪøĪ·ĪŗĪµ</string> <string name="downloads_log_label">ĪĪÆĻĪæĪ“ĪæĻ</string> <string name="subscriptions_label">Ī£Ļ
Ī½Ī“ĻĪæĪ¼ĪĻ</string> @@ -18,55 +20,71 @@ <string name="cancel_download_label">ĪĪŗĻĻĻĻĪ·\nĪĪ®ĻĪ·Ļ</string> <string name="playback_history_label">ĪĻĻĪæĻĪ¹ĪŗĻ ĪĪ½Ī±ĻĪ±ĻĪ±Ī³ĻĪ³Ī®Ļ</string> <string name="gpodnet_main_label">gpodder.net</string> + <string name="gpodnet_summary">Ī£Ļ
Ī³ĻĻĪæĪ½Ī¹ĻĪ¼ĻĻ Ī¼Īµ Ī¬Ī»Ī»ĪµĻ ĻĻ
ĻĪŗĪµĻ
ĪĻ</string> <string name="gpodnet_auth_label">gpodder.net Ī£ĻĪ½Ī“ĪµĻĪ·</string> + <string name="synchronizing">ĪĪŗĻĪµĪ»ĪµĪÆĻĪ±Ī¹ ĻĻ
Ī³ĻĻĪæĪ½Ī¹ĻĪ¼ĻĻ</string> <!--Statistics fragment--> + <string name="total_time_listened_to_podcasts">Ī£Ļ
Ī½ĪæĪ»Ī¹ĪŗĻĻ ĻĻĻĪ½ĪæĻ ĪµĪŗĻĪµĪ»ĪµĻĪ¼ĪĪ½ĻĪ½ podcasts:</string> <!--Main activity--> <string name="drawer_open">ĪĪ½ĪæĪ¹Ī³Ī¼Ī± Ī¼ĪµĪ½ĪæĻ</string> <string name="drawer_close">ĪĪ»ĪµĪÆĻĪ¹Ī¼Īæ Ī¼ĪµĪ½ĪæĻ</string> <string name="drawer_feed_order_alphabetical">Ī¤Ī±Ī¾Ī¹Ī½ĻĪ¼Ī·ĻĪ· Ī±Ī»ĻĪ±Ī²Ī·ĻĪ¹ĪŗĪ¬</string> <string name="drawer_feed_order_last_update">Ī¤Ī±Ī¾Ī¹Ī½ĻĪ¼Ī·ĻĪ· ĪŗĪ±ĻĪ¬ Ī·Ī¼ĪµĻĪæĪ¼Ī·Ī½ĪÆĪ± Ī“Ī·Ī¼ĪæĻĪÆĪµĻ
ĻĪ·Ļ</string> + <string name="drawer_feed_order_most_played">Ī¤Ī±Ī¾Ī¹Ī½ĻĪ¼Ī·ĻĪ· ĪŗĪ±ĻĪ¬ Ī±ĻĪ¹ĪøĪ¼Ļ ĪµĪŗĻĪµĪ»ĪµĻĪ¼ĪĪ½ĻĪ½ ĪµĻĪµĪ¹ĻĪæĪ“ĪÆĻĪ½</string> + <string name="drawer_feed_counter_new_unplayed">ĪĻĪ¹ĪøĪ¼ĻĻ Ī½ĪĻĪ½ ĪµĻĪµĪ¹ĻĪæĪ“ĪÆĻĪ½ ĪŗĪ±Ī¹ Ī±ĻĪ¹ĪøĪ¼ĻĻ Ī¼Ī· ĪµĪŗĻĪµĪ»ĪµĻĪ¼ĪĪ½ĻĪ½ ĪµĻĪµĪ¹ĻĪæĪ“ĪÆĻĪ½</string> <string name="drawer_feed_counter_new">ĪĻĪ¹ĪøĪ¼ĻĻ Ī½ĪĻĪ½ ĪµĻĪµĪ¹ĻĪæĪ“ĪÆĻĪ½</string> + <string name="drawer_feed_counter_unplayed">ĪĻĪ¹ĪøĪ¼ĻĻ Ī¼Ī· ĪµĪŗĻĪµĪ»ĪµĻĪ¼ĪĪ½ĻĪ½ ĪµĻĪµĪ¹ĻĪæĪ“ĪÆĻĪ½</string> + <string name="drawer_feed_counter_downloaded">ĪĻĪ¹ĪøĪ¼ĻĻ Ī»Ī·ĻĪøĪĪ½ĻĻĪ½ ĪµĻĪµĪ¹ĻĪæĪ“ĪÆĻĪ½</string> + <string name="drawer_feed_counter_none">ĪĪµĪ½Ļ</string> <!--Webview actions--> <string name="open_in_browser_label">ĪĪ½ĪæĪ¹Ī³Ī¼Ī± ĻĻĪæĪ½ Ī ĪµĻĪ¹Ī·Ī³Ī·ĻĪ®</string> <string name="copy_url_label">ĪĪ½ĻĪ¹Ī³ĻĪ±ĻĪ® Ī“Ī¹ĪµĻĪøĻ
Ī½ĻĪ·Ļ URL</string> - <string name="share_url_label">ĪĪæĪ¹ĻĪ±ĻĪ¼Ī± URL</string> + <string name="share_url_label">ĪĪæĪÆĻĪ±ĻĪ¼Ī± URL</string> <string name="copied_url_msg">ĪĪ½ĻĪ¹Ī³ĻĪ±ĻĪ® URL ĻĻĪæ Ī ĻĻĻĪµĪ¹ĻĪæ</string> + <string name="go_to_position_label">ĪĪµĻĪ¬Ī²Ī±ĻĪ· ĻĪµ Ī±Ļ
ĻĪ® ĻĪ· ĪøĪĻĪ·</string> <!--Playback history--> <string name="clear_history_label">ĪĪŗĪŗĪ±ĪøĪ¬ĻĪ¹ĻĪ· ĪĻĻĪæĻĪ¹ĪŗĪæĻ</string> <!--Other--> <string name="confirm_label">ĪĻĪ¹Ī²ĪµĪ²Ī±ĪÆĻĻĪ·</string> <string name="cancel_label">ĪĪŗĻĻĻĻĪ·</string> - <string name="author_label">ĪĪ·Ī¼Ī¹ĪæĻ
ĻĪ³ĪæĻ</string> - <string name="language_label">ĪĪ»ĻĻĻĪ±</string> - <string name="podcast_settings_label">Ī”Ļ
ĪøĪ¼Ī¹ĻĪµĪ¹Ļ</string> - <string name="cover_label">ĪĪ¹ĪŗĪæĪ½Ī±</string> - <string name="error_label">Ī£ĻĪ±Ī»Ī¼Ī±</string> + <string name="yes">ĪĪ±Ī¹</string> + <string name="no">ĪĻĪ¹</string> + <string name="language_label">ĪĪ»ĻĻĻĪ±</string> + <string name="url_label">URL</string> + <string name="podcast_settings_label">Ī”Ļ
ĪøĪ¼ĪÆĻĪµĪ¹Ļ</string> + <string name="cover_label">ĪĪ¹ĪŗĻĪ½Ī±</string> + <string name="error_label">Ī£ĻĪ¬Ī»Ī¼Ī±</string> <string name="error_msg_prefix">Ī Ī±ĻĪæĻ
ĻĪ¹Ī¬ĻĻĪ·ĪŗĪµ ĪĪ½Ī± ĻĻĪ¬Ī»Ī¼Ī±:</string> <string name="refresh_label">ĪĪ½Ī±Ī½ĪĻĻĪ·</string> <string name="external_storage_error_msg">ĪĪ±Ī¼ĪÆĪ± ĪµĪ¾ĻĻĪµĻĪ¹ĪŗĪ® Ī±ĻĪæĪøĪ®ĪŗĪµĻ
ĻĪ· ĪµĪÆĪ½Ī±Ī¹ Ī“Ī¹Ī±ĪøĪĻĪ¹Ī¼Ī·. Ī Ī±ĻĪ±ĪŗĪ±Ī»Ļ Ī²ĪµĪ²Ī±Ī¹ĻĪøĪµĪÆĻĪµ ĻĻĪ¹ Ī· ĪµĪ¾ĻĻĪµĻĪ¹ĪŗĪ® Ī±ĻĪæĪøĪ®ĪŗĪµĻ
ĻĪ· ĪĻĪµĪ¹ ĻĪæĻĪæĪøĪµĻĪ·ĪøĪµĪÆ ĪĻĻĪ¹ ĻĻĻĪµ Ī· ĪµĻĪ±ĻĪ¼ĪæĪ³Ī® Ī½Ī± Ī¼ĻĪæĻĪµĪÆ Ī½Ī± Ī»ĪµĪ¹ĻĪæĻ
ĻĪ³Ī®ĻĪµĪ¹ ĻĻĻĻĪ¬.</string> <string name="chapters_label">ĪĪµĻĪ¬Ī»Ī±Ī¹Ī±</string> + <string name="chapter_duration">ĪĪ¹Ī¬ĻĪŗĪµĪ¹Ī±: %1$s</string> <string name="shownotes_label">ĪĪ¼ĻĪ¬Ī½Ī¹ĻĪ· Ī£Ī·Ī¼ĪµĪ¹ĻĻĪµĻĪ½</string> <string name="description_label">Ī ĪµĻĪ¹Ī³ĻĪ±ĻĪ®</string> - <string name="episodes_suffix">\u0020ĪµĻĪµĪ¹ĻĪæĪ“Ī¹Ī±</string> + <string name="most_recent_prefix">Ī Ī¹Īæ ĻĻĻĻĻĪ±ĻĪæ ĪµĻĪµĪ¹ĻĻĪ“Ī¹Īæ:\u0020</string> + <string name="episodes_suffix">\u0020ĪµĻĪµĪ¹ĻĻĪ“Ī¹Ī±</string> <string name="length_prefix">ĪĪ®ĪŗĪæĻ:\u0020</string> <string name="size_prefix">ĪĪĪ³ĪµĪøĪæĻ:\u0020</string> <string name="processing_label">ĪĻĪµĪ¾ĪµĻĪ³Ī±ĻĪÆĪ±</string> - <string name="save_username_password_label">ĪĻĪæĪøĪ®ĪŗĪµĻ
ĻĪ· ĻĪæĻ
ĻĪ½ĪæĪ¼Ī±ĻĪæĻ ĻĻĪ®ĻĻĪ· ĪŗĪ±Ī¹ ĻĪæĻ
ĪŗĻĪ“Ī¹ĪŗĻĻ
ĻĻĻĻĪ²Ī±ĻĪ·Ļ</string> + <string name="save_username_password_label">ĪĻĪæĪøĪ®ĪŗĪµĻ
ĻĪ· ĻĪæĻ
ĪæĪ½ĻĪ¼Ī±ĻĪæĻ ĻĻĪ®ĻĻĪ· ĪŗĪ±Ī¹ ĻĪæĻ
ĪŗĻĪ“Ī¹ĪŗĪæĻ ĻĻĻĻĪ²Ī±ĻĪ·Ļ</string> <string name="close_label">ĪĪ»ĪµĪÆĻĪ¹Ī¼Īæ</string> - <string name="retry_label">ĪĻĪ±Ī½Ī¬Ī»Ī·ĻĪ·</string> + <string name="retry_label">ĪĻĪ±Ī½Ī±ĻĻĪæĻĻĪ¬ĪøĪµĪ¹Ī±</string> <string name="auto_download_label">Ī£Ļ
Ī¼ĻĪµĻĪÆĪ»Ī·ĻĪ· ĻĻĪ·Ī½ Ī±Ļ
ĻĻĪ¼Ī±ĻĪ· Ī»Ī®ĻĪ·</string> + <string name="auto_download_apply_to_items_title">ĪĻĪ±ĻĪ¼ĪæĪ³Ī® ĻĪµ ĻĻĪæĪ·Ī³ĪæĻĪ¼ĪµĪ½Ī± ĪµĻĪµĪ¹ĻĻĪ“Ī¹Ī±</string> + <string name="auto_delete_label">ĪĻ
ĻĻĪ¼Ī±ĻĪ· Ī“Ī¹Ī±Ī³ĻĪ±ĻĪ® ĪµĻĪµĪ¹ĻĪæĪ“ĪÆĪæĻ
</string> <string name="parallel_downloads_suffix">\u0020ĻĪ±ĻĪ¬Ī»Ī»Ī·Ī»ĪµĻ Ī»Ī®ĻĪµĪ¹Ļ</string> <string name="feed_auto_download_always">Ī Ī¬Ī½ĻĪ±</string> <string name="feed_auto_download_never">Ī ĪæĻĪ</string> + <string name="send_label">ĪĻĪæĻĻĪæĪ»Ī®...</string> <string name="episode_cleanup_never">Ī ĪæĻĪ</string> <!--'Add Feed' Activity labels--> <string name="feedurl_label">URL ĻĪ·Ļ Ī”ĪæĪ®Ļ</string> <string name="etxtFeedurlHint">www.example.com/feed</string> <string name="txtvfeedurl_label">Ī ĻĪæĻĪøĪ®ĪŗĪ· Podcast Ī¼Īµ ĻĪ· Ī“Ī¹ĪµĻĪøĻ
Ī½ĻĪ· URL</string> + <string name="podcastdirectories_label">ĪĻĻĪµĻĪ· Podcast ĻĻĪæ Ī¦Ī¬ĪŗĪµĪ»Īæ</string> <string name="browse_gpoddernet_label">Ī ĪµĻĪ¹Ī®Ī³Ī·ĻĪ· ĻĻĪæ gpodder.net</string> <!--Actions on feeds--> <string name="show_info_label">ĪĪ¼ĻĪ¬Ī½Ī¹ĻĪ· ĻĪ»Ī·ĻĪæĻĪæĻĪ¹ĻĪ½</string> - <string name="remove_feed_label">ĪĪ±ĻĪ¬ĻĪ³Ī·ĻĪ· Podcast</string> <string name="hide_episodes_title">ĪĻĻĪŗĻĻ
ĻĪ· ĪĻĪµĪ¹ĻĪæĪ“ĪÆĻĪ½</string> <string name="hide_downloaded_episodes_label">ĪĪ¹Ī»Ī·Ī¼Ī¼ĪĪ½Ī±</string> <string name="refresh_failed_msg">{fa-exclamation-circle} Ī Ī¤ĪµĪ»ĪµĻ
ĻĪ±ĪÆĪ± ĪĪ½Ī±Ī½ĪĻĻĪ· ĪĻĪĻĻ
ĻĪµ</string> @@ -175,12 +193,10 @@ <string name="set_playback_speed_label">Ī¤Ī±ĻĻĻĪ·ĻĪµĻ Ī±Ī½Ī±ĻĪ±ĻĪ±Ī³ĻĪ³Ī®Ļ</string> <!--Empty list labels--> <string name="no_items_label">ĪĪµĪ½ Ļ
ĻĪ¬ĻĻĪæĻ
Ī½ ĻĻĪæĪ¹ĻĪµĪÆĪ± ĻĪµ Ī±Ļ
ĻĪ® ĻĪ· Ī»ĪÆĻĻĪ±.</string> - <string name="no_feeds_label">ĪĪµĪ½ ĪĻĪµĻĪµ ĪµĪ³Ī³ĻĪ±ĻĪµĪÆ ĻĪµ ĪæĻĪæĪ¹ĪµĻĪ“Ī®ĻĪæĻĪµ ĻĻĪæĻĪæĪ“ĪæĻĪÆĪµĻ Ī±ĪŗĻĪ¼Ī±</string> <!--Preferences--> <string name="other_pref">ĪĪ»Ī»Ī±</string> <string name="about_pref">Ī£ĻĪµĻĪ¹ĪŗĪ¬ Ī¼Īµ</string> <string name="queue_label">Ī£ĪµĪ¹ĻĪ¬ Ī±Ī½Ī±Ī¼ĪæĪ½Ī®Ļ</string> - <string name="services_label">Ī„ĻĪ·ĻĪµĻĪÆĪµĻ</string> <string name="flattr_label">Flattr</string> <string name="pref_unpauseOnHeadsetReconnect_sum">Ī£Ļ
Ī½ĪĻĪ¹ĻĪ· ĻĪ·Ļ Ī±Ī½Ī±ĻĪ±ĻĪ±Ī³ĻĪ³Ī®Ļ, ĻĻĪ±Ī½ ĻĪ± Ī±ĪŗĪæĻ
ĻĻĪ¹ĪŗĪ¬ ĪµĻĪ±Ī½Ī±ĻĻ
Ī½Ī“ĪĪæĪ½ĻĪ±Ī¹</string> <string name="pref_followQueue_sum">ĪĪµĻĪ¬Ī²Ī±ĻĪ· ĻĻĪæ ĪµĻĻĪ¼ĪµĪ½Īæ ĻĻĪæĪ¹ĻĪµĪÆĪæ ĻĪµĪ¹ĻĪ¬Ļ Ī±Ī½Ī±Ī¼ĪæĪ½Ī®Ļ ĻĻĪ±Ī½ Ī· Ī±Ī½Ī±ĻĪ±ĻĪ±Ī³ĻĪ³Ī® ĪæĪ»ĪæĪŗĪ»Ī·ĻĻĪøĪµĪÆ</string> @@ -223,8 +239,6 @@ <string name="pref_playback_speed_sum">Ī ĻĪæĻĪ±ĻĪ¼ĻĻĻĪµ ĻĪ¹Ļ Ī“Ī¹Ī±ĪøĪĻĪ¹Ī¼ĪµĻ ĻĪ±ĻĻĻĪ·ĻĪµĻ Ī³Ī¹Ī± Ī±Ī½Ī±ĻĪ±ĻĪ±Ī³ĻĪ³Ī® Ī®ĻĪæĻ
Ī¼ĪµĻĪ±Ī²Ī»Ī·ĻĪ®Ļ ĻĪ±ĻĻĻĪ·ĻĪ±Ļ</string> <string name="pref_gpodnet_sethostname_title">ĪĻĪ¹ĻĪ¼ĻĻ ĪŗĪµĪ½ĻĻĪ¹ĪŗĪæĻ Ļ
ĻĪæĪ»ĪæĪ³Ī¹ĻĻĪ®</string> <string name="pref_gpodnet_sethostname_use_default_host">Ī§ĻĪ®ĻĪ· ĻĻĪæĪµĻĪ¹Ī»ĪµĪ³Ī¼ĪĪ½Ī·Ļ Ļ
ĻĪæĪ“ĪæĻĪ®Ļ</string> - <string name="pref_expandNotify_title">ĪĪ½Ī¬ĻĻĻ
Ī¾Ī· ĪŗĪæĪ¹Ī½ĪæĻĪæĪÆĪ·ĻĪ·Ļ</string> - <string name="pref_expandNotify_sum">Ī Ī¬Ī½ĻĪ± ĪµĻĪĪŗĻĪ±ĻĪ· ĻĪ·Ļ ĪµĪ¹Ī“ĪæĻĪæĪÆĪ·ĻĪ·Ļ Ī³Ī¹Ī± ĪµĪ¼ĻĪ±Ī½Ī¹ĻĪ· ĪŗĪæĻ
Ī¼ĻĪ¹ĻĪ½ Ī±Ī½Ī±ĻĪ±ĻĪ±Ī³ĻĪ³Ī®Ļ.</string> <string name="pref_persistNotify_sum">ĪĪ¹Ī±ĻĪ·ĻĪ·ĻĪ· ĻĻĪ½ ĪµĪ»ĪĪ³ĻĻĪ½ ĪŗĪæĪ¹Ī½ĪæĻĪæĪÆĪ·ĻĪ·Ļ ĪŗĪ±Ī¹ lockscreen ĻĻĪ±Ī½ Ī³ĪÆĪ½ĪµĻĪ±Ī¹ ĻĪ±ĻĻĪ· ĻĪ·Ļ Ī±Ī½Ī±ĻĪ±ĻĪ±Ī³ĻĪ³Ī®Ļ.</string> <string name="pref_expand_notify_unsupport_toast">ĪĪŗĪ“ĻĻĪµĪ¹Ļ ĻĪæĻ
Android ĻĻĪ¹Ī½ Ī±ĻĻ ĻĪæ 4.1 Ī“ĪµĪ½ Ļ
ĻĪæĻĻĪ·ĻĪÆĪ¶ĪæĻ
Ī½ ĪµĪŗĻĪµĻĪ±Ī¼ĪĪ½ĪµĻ ĪŗĪæĪ¹Ī½ĪæĻĪæĪ¹Ī®ĻĪµĪ¹Ļ.</string> <string name="pref_queueAddToFront_sum">Ī ĻĪæĻĪøĪ®ĪŗĪ· Ī½ĪĻĪ½ ĪµĻĪµĪ¹ĻĪæĪ“ĪÆĻĪ½ ĻĻĪæ Ī¼ĻĻĪæĻĻĪ¹Ī½Ļ Ī¼ĪĻĪæĻ ĻĪ·Ļ ĪæĻ
ĻĪ¬Ļ.</string> @@ -255,8 +269,6 @@ <string name="choose_file_from_external_application">Ī§ĻĪ·ĻĪ¹Ī¼ĪæĻĪæĪ¹Ī®ĻĻĪµ ĪµĪ¾ĻĻĪµĻĪ¹ĪŗĪ® ĪµĻĪ±ĻĪ¼ĪæĪ³Ī®</string> <string name="opml_export_label">OPML ĪµĪ¾Ī±Ī³ĻĪ³Ī®</string> <string name="export_error_label">Ī£ĻĪ¬Ī»Ī¼Ī± ĪŗĪ±ĻĪ¬ ĻĪ·Ī½ ĪµĪ¾Ī±Ī³ĻĪ³Ī®</string> - <string name="opml_export_success_title">Ī ĪĪ¾Ī±Ī³ĻĪ³Ī® OPML ĪµĪÆĪ½Ī±Ī¹ ĪµĻĪ¹ĻĻ
ĻĪ®Ļ</string> - <string name="opml_export_success_sum">Ī¤Īæ Ī±ĻĻĪµĪÆĪæ .opml ĻĻ
Ī½ĻĪ¬ĻĪøĪ·ĪŗĪµ Ī³Ī¹Ī±:\u0020</string> <!--Sleep timer--> <string name="set_sleeptimer_label">Ī”ĻĪøĪ¼Ī¹ĻĪ· ĻĪæĻ
ĻĻĪæĪ½ĪæĪ“Ī¹Ī±ĪŗĻĻĻĪ· ĻĻĪ½ĪæĻ
</string> <string name="disable_sleeptimer_label">ĪĻĪµĪ½ĪµĻĪ³ĪæĻĪæĪÆĪ·ĻĪ· ĻĻĪæĪ½ĪæĪ“Ī¹Ī±ĪŗĻĻĻĪ· ĻĻĪ½ĪæĻ
</string> @@ -341,4 +353,7 @@ <!--Database import/export--> <!--Casting--> <!--<string name="cast_failed_to_connect">Could not connect to the device</string>--> + <!--Notification channels--> + <string name="notification_channel_downloading">ĪĪ®ĻĪ·</string> + <string name="notification_channel_error">Ī£ĻĪ¬Ī»Ī¼Ī±ĻĪ±</string> </resources> diff --git a/core/src/main/res/values-es-rES/strings.xml b/core/src/main/res/values-es-rES/strings.xml index 8aa30231b..024989498 100644 --- a/core/src/main/res/values-es-rES/strings.xml +++ b/core/src/main/res/values-es-rES/strings.xml @@ -193,7 +193,6 @@ <string name="deselect_all_label">Deseleccionar todo</string> <string name="opml_export_label">Exportar a OPML</string> <string name="export_error_label">Error en la exportaciĆ³n</string> - <string name="opml_export_success_sum">El archivo OPML se ha escrito en:\u0020</string> <!--Sleep timer--> <string name="set_sleeptimer_label">Establecer un temporizador</string> <string name="disable_sleeptimer_label">Desactivar el temporizador</string> @@ -229,4 +228,5 @@ <!--Database import/export--> <!--Casting--> <!--<string name="cast_failed_to_connect">Could not connect to the device</string>--> + <!--Notification channels--> </resources> diff --git a/core/src/main/res/values-es/strings.xml b/core/src/main/res/values-es/strings.xml index 7c6341a06..73eabec89 100644 --- a/core/src/main/res/values-es/strings.xml +++ b/core/src/main/res/values-es/strings.xml @@ -1,11 +1,13 @@ <?xml version='1.0' encoding='UTF-8'?> <resources xmlns:tools="http://schemas.android.com/tools"> <!--Activitiy and fragment titles--> + <string name="feed_update_receiver_name">Actualizar suscripciones</string> <string name="feeds_label">Canales</string> <string name="statistics_label">EstadĆsticas</string> - <string name="add_feed_label">AƱadir podcast</string> + <string name="add_feed_label">AƱadir pĆ³dcast</string> <string name="episodes_label">Episodios</string> <string name="all_episodes_short_label">Todos</string> + <string name="new_episodes_label">Nuevos</string> <string name="favorite_episodes_label">Favoritos</string> <string name="new_label">Nuevos</string> <string name="settings_label">Ajustes</string> @@ -13,41 +15,43 @@ <string name="downloads_running_label">En curso</string> <string name="downloads_completed_label">Completadas</string> <string name="downloads_log_label">Registro</string> - <string name="subscriptions_label">Subscripciones</string> - <string name="subscriptions_list_label">Lista de subscripciones</string> + <string name="subscriptions_label">Suscripciones</string> + <string name="subscriptions_list_label">Lista de suscripciones</string> <string name="cancel_download_label">Cancelar\ndescarga</string> <string name="playback_history_label">Historial de reproducciones</string> <string name="gpodnet_main_label">gpodder.net</string> + <string name="gpodnet_summary">Sincronizar con otros dispositivos</string> <string name="gpodnet_auth_label">Iniciar sesiĆ³n en gpodder.net</string> <string name="free_space_label">%1$s libre</string> - <string name="episode_cache_full_title">CachĆ© de episodios completa</string> - <string name="episode_cache_full_message">Se ha alcanzado el lĆmite de cachĆ© de episodios. Puedes aumentar el tamaƱo de la cachĆ© en las Opciones.</string> + <string name="episode_cache_full_title">Almacenamiento de episodios completo</string> + <string name="episode_cache_full_message">Se ha alcanzado el lĆmite de almacenamiento de episodios. Puedes aumentar el tamaƱo en opciones.</string> + <string name="synchronizing">Sincronizandoā¦</string> <!--Statistics fragment--> - <string name="total_time_listened_to_podcasts">Tiempo total reproducido:</string> - <string name="statistics_details_dialog">Empezados %1$d episodios de %2$d.\n\nReproducidos %3$s de %4$s.</string> + <string name="total_time_listened_to_podcasts">Tiempo total de reproducciĆ³n de pĆ³dcast:</string> + <string name="statistics_details_dialog">%1$d episodios iniciados de %2$d.\n\nReproducidos %3$s de %4$s.</string> <string name="statistics_mode">Modo de estadĆsticas</string> <string name="statistics_mode_normal">Calcula la duraciĆ³n real reproducida. Reproducir dos veces cuenta doble, y marcar como leĆdo no cuenta como reproducido</string> - <string name="statistics_mode_count_all">Resumir todos los podcasts marcados como reproducidos</string> + <string name="statistics_mode_count_all">Suma de todos los pĆ³dcast marcados como reproducidos</string> <string name="statistics_speed_not_counted">Aviso: La velocidad de reproducciĆ³n nunca se tiene en cuenta.</string> <!--Main activity--> <string name="drawer_open">Abrir menĆŗ</string> <string name="drawer_close">Cerrar menĆŗ</string> <string name="drawer_preferences">Preferencias del cajĆ³n</string> - <string name="drawer_feed_order_unplayed_episodes">Ordenar por cuenta</string> + <string name="drawer_feed_order_unplayed_episodes">Ordenar por contador</string> <string name="drawer_feed_order_alphabetical">Ordenar alfabĆ©ticamente</string> <string name="drawer_feed_order_last_update">Ordenar por fecha de publicaciĆ³n</string> <string name="drawer_feed_order_most_played">Ordenar por nĆŗmero de episodios reproducidos</string> - <string name="drawer_feed_counter_new_unplayed">Cantidad de episodios nuevos y no escuchados</string> - <string name="drawer_feed_counter_new">Cantidad de episodios nuevos</string> - <string name="drawer_feed_counter_unplayed">Cantidad de episodios no escuchados</string> - <string name="drawer_feed_counter_downloaded">Cantidad de episodios descargados</string> + <string name="drawer_feed_counter_new_unplayed">NĆŗmero de episodios nuevos y no reproducidos</string> + <string name="drawer_feed_counter_new">NĆŗmero de episodios nuevos</string> + <string name="drawer_feed_counter_unplayed">NĆŗmero de episodios no reproducidos</string> + <string name="drawer_feed_counter_downloaded">NĆŗmero de episodios descargados</string> <string name="drawer_feed_counter_none">Ninguno</string> <!--Webview actions--> <string name="open_in_browser_label">Abrir en el navegador</string> <string name="copy_url_label">Copiar URL</string> <string name="share_url_label">Compartir URL</string> - <string name="copied_url_msg">URL copiado en el portapapeles</string> - <string name="go_to_position_label">Ir a esta posiciĆ³n</string> + <string name="copied_url_msg">URL copiada al portapapeles</string> + <string name="go_to_position_label">Ir a esa posiciĆ³n</string> <!--Playback history--> <string name="clear_history_label">Vaciar el historial</string> <!--Other--> @@ -55,14 +59,15 @@ <string name="cancel_label">Cancelar</string> <string name="yes">SĆ</string> <string name="no">No</string> - <string name="reset">Resetear</string> - <string name="author_label">Autor</string> + <string name="reset">Restablecer</string> + <string name="author_label">Autor(es)</string> <string name="language_label">Idioma</string> <string name="url_label">URL</string> <string name="podcast_settings_label">Ajustes</string> <string name="cover_label">Imagen</string> <string name="error_label">Error</string> <string name="error_msg_prefix">Se produjo un error:</string> + <string name="needs_storage_permission">Se necesitan permisos de almacenamiento para esta operaciĆ³n</string> <string name="refresh_label">Actualizar</string> <string name="external_storage_error_msg">No se encuentra un almacenamiento externo. AsegĆŗrese de que su almacenamiento externo estĆ© montado para que la aplicaciĆ³n funcione correctamente.</string> <string name="chapters_label">CapĆtulos</string> @@ -80,15 +85,15 @@ <string name="retry_label">Reintentar</string> <string name="auto_download_label">Incluir en descargas automĆ”ticas</string> <string name="auto_download_apply_to_items_title">Aplicar a episodios anteriores</string> - <string name="auto_download_apply_to_items_message">La nueva opciĆ³n <i>Auto Descarga</i> se aplicarĆ” automĆ”ticamente a episodios nuevos.\nĀæTambiĆ©n desea aplicarlo a episodios anteriores?</string> - <string name="auto_delete_label">Borrar Episodio AutomĆ”ticamente</string> + <string name="auto_download_apply_to_items_message">La nueva opciĆ³n <i>descarga automĆ”tica</i> se aplicarĆ” automĆ”ticamente a episodios nuevos.\nĀæTambiĆ©n desea aplicarlo a episodios anteriores?</string> + <string name="auto_delete_label">Borrar episodio automĆ”ticamente</string> <string name="parallel_downloads_suffix">\u0020descargas paralelas</string> <string name="feed_auto_download_global">Global por defecto</string> <string name="feed_auto_download_always">Siempre</string> <string name="feed_auto_download_never">Nunca</string> <string name="send_label">Enviarā¦</string> <string name="episode_cleanup_never">Nunca</string> - <string name="episode_cleanup_queue_removal">Cuando no estĆ© en cola</string> + <string name="episode_cleanup_queue_removal">Cuando no estĆ© en la cola</string> <string name="episode_cleanup_after_listening">DespuĆ©s de acabar</string> <plurals name="episode_cleanup_days_after_listening"> <item quantity="one">1 dĆa despuĆ©s de acabar</item> @@ -97,77 +102,84 @@ <!--'Add Feed' Activity labels--> <string name="feedurl_label">URL del canal</string> <string name="etxtFeedurlHint">www.ejemplo.com/feed</string> - <string name="txtvfeedurl_label">AƱadir podcast por URL</string> - <string name="podcastdirectories_label">Buscar podcast en directorio</string> - <string name="podcastdirectories_descr">Para podcasts nuevos, puedes buscar en iTunes o fyyd, o explorar gpodder.net por nombre, categorĆa o popularidad.</string> - <string name="browse_gpoddernet_label">Explorar gpodder.net</string> + <string name="txtvfeedurl_label">AƱadir pĆ³dcast por URL</string> + <string name="podcastdirectories_label">Buscar pĆ³dcast en el directorio</string> + <string name="podcastdirectories_descr">Para nuevos pĆ³dcast, puedes buscar en iTunes o fyyd, o explorar en gpodder.net por nombre, categorĆa o popularidad.</string> + <string name="browse_gpoddernet_label">Explorar en gpodder.net</string> <!--Actions on feeds--> - <string name="mark_all_read_label">Marcar todos como escuchado</string> - <string name="mark_all_read_msg">Se marcaron todos los episodios como escuchados</string> - <string name="mark_all_read_confirmation_msg">Confirme que quiere marcar todos los episodios como escuchados.</string> - <string name="mark_all_read_feed_confirmation_msg">Confirme que quiere marcar todos los episodios de este canal como escuchados.</string> + <string name="mark_all_read_label">Marcar todos como reproducidos</string> + <string name="mark_all_read_msg">Marcados todos los episodios como reproducidos</string> + <string name="mark_all_read_confirmation_msg">Confirme que quiere marcar todos los episodios como reproducidos.</string> + <string name="mark_all_read_feed_confirmation_msg">Confirme que quiere marcar todos los episodios de este pĆ³dcast como reproducidos.</string> <string name="mark_all_seen_label">Marcar todos como vistos</string> - <string name="mark_all_seen_msg">Marcar todos los episodios como vistos</string> - <string name="mark_all_seen_confirmation_msg">Por favor confirma que quieres marcar todos los episodios como vistos.</string> + <string name="mark_all_seen_msg">Marcados todos los episodios como vistos</string> + <string name="mark_all_seen_confirmation_msg">Confirme que quiere marcar todos los episodios como vistos.</string> <string name="show_info_label">InformaciĆ³n del programa</string> - <string name="rename_feed_label">Renombrar Podcast</string> - <string name="remove_feed_label">Eliminar podcast</string> + <string name="show_feed_settings_label">Mostrar ajustes del pĆ³dcast</string> + <string name="feed_info_label">InformaciĆ³n del pĆ³dcast</string> + <string name="feed_settings_label">Ajustes del pĆ³dcast</string> + <string name="rename_feed_label">Renombrar el pĆ³dcast</string> + <string name="remove_feed_label">Eliminar el pĆ³dcast</string> <string name="share_label">Compartirā¦</string> - <string name="share_link_label">Compartir el enlace de la web</string> - <string name="share_file_label">Compartir archivo</string> - <string name="share_link_with_position_label">Compartir enlace con posiciĆ³n</string> + <string name="share_link_label">Compartir URL del episodio</string> + <string name="share_link_with_position_label">Compartir URL del episodio con posiciĆ³n</string> + <string name="share_file_label">Compartir el archivo</string> <string name="share_feed_url_label">Compartir URL del canal</string> - <string name="share_item_url_label">Compartir URL del archivo del episodio</string> - <string name="share_item_url_with_position_label">Compartir URL del episodio con posiciĆ³n</string> - <string name="feed_delete_confirmation_msg">Por favor, confirma que quieres borrar el feed \"%1$s\" y TODOS los episodios descargados de dicho feed.</string> - <string name="feed_remover_msg">Quitando el canal</string> - <string name="load_complete_feed">Actualizar el canal completo</string> + <string name="share_item_url_label">Compartir URL del archivo</string> + <string name="share_item_url_with_position_label">Compartir URL del archivo con posiciĆ³n</string> + <string name="feed_delete_confirmation_msg">Confirme que quiere borrar el pĆ³dcast \"%1$s\" y TODOS los episodios (incluidos los descargados).</string> + <string name="feed_remover_msg">Eliminando el pĆ³dcast</string> + <string name="load_complete_feed">Actualizar el pĆ³dcast completo</string> <string name="hide_episodes_title">Ocultar episodios</string> - <string name="episode_actions">Aplicar acciones</string> - <string name="hide_unplayed_episodes_label">No escuchados</string> + <string name="batch_edit">EdiciĆ³n por lotes</string> + <string name="hide_unplayed_episodes_label">No reproducidos</string> <string name="hide_paused_episodes_label">Pausados</string> - <string name="hide_played_episodes_label">Escuchados</string> + <string name="hide_played_episodes_label">Reproducidos</string> <string name="hide_queued_episodes_label">En cola</string> <string name="hide_not_queued_episodes_label">No en cola</string> <string name="hide_downloaded_episodes_label">Descargados</string> <string name="hide_not_downloaded_episodes_label">No descargados</string> <string name="hide_has_media_label">Tiene multimedia</string> + <string name="hide_is_favorite_label">Es favorito</string> <string name="filtered_label">Filtrados</string> <string name="refresh_failed_msg">{fa-exclamation-circle} Error en Ćŗltima actualizaciĆ³n</string> - <string name="open_podcast">Abrir Podcast</string> + <string name="open_podcast">Abrir pĆ³dcast</string> <!--actions on feeditems--> <string name="download_label">Descargar</string> <string name="play_label">Reproducir</string> <string name="pause_label">Pausar</string> <string name="stop_label">Detener</string> - <string name="stream_label">Transmitir</string> - <string name="remove_label">Quitar</string> + <string name="stream_label">Escuchar en directo</string> + <string name="remove_label">Eliminar</string> <string name="delete_label">Borrar</string> <string name="delete_failed">No se puede borrar el fichero. Reiniciar el dispositivo podrĆa ayudar.</string> - <string name="remove_episode_lable">Quitar episodio</string> - <string name="marked_as_seen_label">Marcar como visto</string> - <string name="mark_read_label">Marcar como escuchado</string> - <string name="marked_as_read_label">Marcado como escuchado</string> - <string name="mark_unread_label">Marcar como no escuchado</string> + <string name="remove_episode_lable">Eliminar episodio</string> + <string name="mark_as_seen_label">Marcar como visto</string> + <string name="marked_as_seen_label">Marcado como visto</string> + <string name="mark_read_label">Marcar como reproducido</string> + <string name="marked_as_read_label">Marcado como reproducido</string> + <string name="mark_unread_label">Marcar como no reproducido</string> <string name="add_to_queue_label">AƱadir a la cola</string> <string name="added_to_queue_label">AƱadido a la cola</string> - <string name="remove_from_queue_label">Quitar de la cola</string> - <string name="add_to_favorite_label">AƱadir a Favoritos</string> - <string name="added_to_favorites">AƱadido a Favoritos</string> - <string name="remove_from_favorite_label">Eliminar de Favoritos</string> - <string name="removed_from_favorites">Quitado de Favoritos</string> + <string name="remove_from_queue_label">Eliminar de la cola</string> + <string name="add_to_favorite_label">AƱadir a favoritos</string> + <string name="added_to_favorites">AƱadido a favoritos</string> + <string name="remove_from_favorite_label">Eliminar de favoritos</string> + <string name="removed_from_favorites">Eliminado de favoritos</string> <string name="visit_website_label">Visitar el sitio web</string> <string name="support_label">AƱadir a Flattr</string> <string name="skip_episode_label">Omitir episodio</string> <string name="activate_auto_download">Activar descarga automĆ”tica</string> <string name="deactivate_auto_download">Desactivar descarga automĆ”tica</string> - <string name="reset_position">Resetear posiciĆ³n de reproducciĆ³n</string> + <string name="reset_position">Restablecer la posiciĆ³n de reproducciĆ³n</string> <string name="removed_item">Elemento elminado</string> <!--Download messages and labels--> - <string name="download_successful">exitoso</string> - <string name="download_failed">fallido</string> + <string name="download_successful">exitosa</string> + <string name="download_failed">fallida</string> <string name="download_pending">Descarga pendiente</string> <string name="download_running">Descarga en curso</string> + <string name="download_error_details">Detalles</string> + <string name="download_error_details_message">%1$s \n\nURL de archivo:\n%2$s</string> <string name="download_error_device_not_found">No se ha encontrado un dispositivo de almacenamiento</string> <string name="download_error_insufficient_space">Espacio insuficiente</string> <string name="download_error_file_error">Error de archivo</string> @@ -182,9 +194,9 @@ <string name="download_error_forbidden">Prohibido</string> <string name="cancel_all_downloads_label">Cancelar todas las descargas</string> <string name="download_canceled_msg">Descarga cancelada</string> - <string name="download_canceled_autodownload_enabled_msg">Descarga cancelada\nSe desactivĆ³ <i>Descarga automĆ”tica</i> en este elemento</string> + <string name="download_canceled_autodownload_enabled_msg">Descarga cancelada\nSe desactivĆ³ la <i>descarga automĆ”tica</i> en este elemento</string> <string name="download_report_title">Descargas completadas con error(es)</string> - <string name="download_report_content_title">Informe de descarga</string> + <string name="download_report_content_title">Informe de descargas</string> <string name="download_error_malformed_url">URL con formato incorrecto</string> <string name="download_error_io_error">Error de E/S</string> <string name="download_error_request_error">Error de solicitud</string> @@ -194,22 +206,22 @@ <item quantity="other">Quedan %d descargas</item> </plurals> <string name="downloads_processing">Procesando descargas</string> - <string name="download_notification_title">Descargando datos del podcast</string> + <string name="download_notification_title">Descargando datos del pĆ³dcast</string> <string name="download_report_content">%1$d descargas exitosas, %2$d fallidas</string> <string name="download_log_title_unknown">TĆtulo desconocido</string> <string name="download_type_feed">Canal</string> - <string name="download_type_media">Archivo de medios</string> + <string name="download_type_media">Archivo multimedia</string> <string name="download_type_image">Imagen</string> <string name="download_request_error_dialog_message_prefix">Ha ocurrido un error al intentar descargar el archivo:\u0020</string> - <string name="authentication_notification_title">Se necesita autenticaciĆ³n</string> - <string name="authentication_notification_msg">Para acceder al recurso solicitado debe proporcionar un usuario y contraseƱa</string> + <string name="authentication_notification_title">AutenticaciĆ³n requerida</string> + <string name="authentication_notification_msg">El recurso solicitado requiere un usuario y contraseƱa</string> <string name="confirm_mobile_download_dialog_title">Confirmar descarga por red mĆ³vil</string> - <string name="confirm_mobile_download_dialog_message_not_in_queue">Se desactivaron las descargas por red de datos mĆ³viles en la configuraciĆ³n.\n\nPuede elegir entre aƱadir el episodio a la cola o permitir las descargas temporalmente.\n\n<small>Se recordarĆ” la elecciĆ³n por 10 minutos.</small></string> - <string name="confirm_mobile_download_dialog_message">Se desactivaron las descargas por red de datos mĆ³viles en la configuraciĆ³n.\n\nĀæQuiere permitir las descargas temporalmente?\n\n<small>Se recordarĆ” la elecciĆ³n por 10 minutos.</small></string> + <string name="confirm_mobile_download_dialog_message_not_in_queue">Se desactivaron las descargas por red de datos mĆ³viles en la configuraciĆ³n.\n\nPuede elegir entre aƱadir el episodio a la cola o permitir las descargas temporalmente.\n\n<small>Se recordarĆ” su elecciĆ³n durante 10 minutos.</small></string> + <string name="confirm_mobile_download_dialog_message">Se desactivaron las descargas por red de datos mĆ³viles en la configuraciĆ³n.\n\nĀæQuiere permitir las descargas temporalmente?\n\n<small>Se recordarĆ” su elecciĆ³n durante 10 minutos.</small></string> <string name="confirm_mobile_download_dialog_only_add_to_queue">AƱadir a la cola</string> <string name="confirm_mobile_download_dialog_enable_temporarily">Permitir temporalmente</string> <!--Mediaplayer messages--> - <string name="player_error_msg">Error</string> + <string name="player_error_msg">Ā”Error!</string> <string name="player_stopped_msg">No hay medios en reproducciĆ³n</string> <string name="player_preparing_msg">Preparando</string> <string name="player_ready_msg">Listo</string> @@ -218,7 +230,8 @@ <string name="playback_error_unknown">Error desconocido</string> <string name="no_media_playing_label">No hay medios en reproducciĆ³n</string> <string name="player_buffering_msg">Almacenando</string> - <string name="playbackservice_notification_title">Reproduciendo el podcast</string> + <string name="player_go_to_picture_in_picture">Modo picture-in-picture</string> + <string name="playbackservice_notification_title">Reproduciendo el pĆ³dcast</string> <string name="unknown_media_key">AntennaPod - Tecla multimedia desconocida: %1$d</string> <!--Queue operations--> <string name="lock_queue">Bloquear cola</string> @@ -227,108 +240,118 @@ <string name="queue_unlocked">Cola desbloqueada</string> <string name="clear_queue_label">Vaciar la cola</string> <string name="undo">Deshacer</string> - <string name="removed_from_queue">Se quitĆ³ el elemento</string> + <string name="removed_from_queue">Elemento eliminado</string> <string name="move_to_top_label">Mover al principio</string> <string name="move_to_bottom_label">Mover al final</string> <string name="sort">Ordenar</string> <string name="date">Fecha</string> <string name="duration">DuraciĆ³n</string> <string name="episode_title">TĆtulo del episodio</string> - <string name="feed_title">TĆtulo del feed</string> + <string name="feed_title">TĆtulo del pĆ³dcast</string> + <string name="random">Aleatorio</string> + <string name="smart_shuffle">ReproducciĆ³n inteligente</string> <string name="ascending">Ascendente</string> <string name="descending">Descendente</string> <string name="clear_queue_confirmation_msg">Confirme que quiere borrar TODOS los episodios de la cola</string> <!--Flattr--> <string name="flattr_auth_label">Identificarse en Flattr</string> - <string name="flattr_auth_explanation">Pulse el botĆ³n inferior para comenzar la autenticaciĆ³n. Su navegador abrirĆ” la pantalla de identificaciĆ³n de Flattr y le preguntarĆ” si quiere conceder permiso a AntennaPod para valorar cosas. Tras concederlo, volverĆ” a esta pantalla automĆ”ticamente.</string> + <string name="flattr_auth_explanation">Pulse el botĆ³n inferior para iniciar el proceso de autenticaciĆ³n. Su navegador abrirĆ” la pantalla de inicio de sesiĆ³n en Flattr y le preguntarĆ” si quiere conceder permiso a AntennaPod para valorar. Tras concederlo, volverĆ” a esta pantalla automĆ”ticamente.</string> <string name="authenticate_label">Autenticarse</string> - <string name="return_home_label">Volver a la pantalla principal</string> - <string name="flattr_auth_success">AutentificaciĆ³n exitosa. Ya puede valorar cosas en Flattr desde la aplicaciĆ³n.</string> - <string name="no_flattr_token_title">No se ha encontrado un token de Flattr</string> + <string name="return_home_label">Volver al inicio</string> + <string name="flattr_auth_success">AutenticaciĆ³n exitosa. Ya puede valorar en Flattr desde la aplicaciĆ³n.</string> + <string name="no_flattr_token_title">No se ha encontrado el token de Flattr</string> <string name="no_flattr_token_notification_msg">Parece que su cuenta de Flattr no estĆ” conectada con AntennaPod. Toque aquĆ para autenticarse.</string> - <string name="no_flattr_token_msg">Su cuenta de Flattr no estĆ” conectada con AntennaPod. Puede conectarla o puede visitar la pĆ”gina web de cada cosa para valorarla desde allĆ.</string> + <string name="no_flattr_token_msg">Su cuenta de Flattr no estĆ” conectada con AntennaPod. Puede conectarla con AntennaPod para valorar dentro de la aplicaciĆ³n o puede visitar la pĆ”gina web de Flattr para valorar desde allĆ.</string> <string name="authenticate_now_label">Autenticarse</string> <string name="action_forbidden_title">AcciĆ³n prohibida</string> - <string name="action_forbidden_msg">AntennaPod no tiene permiso para realizar esta acciĆ³n. La razĆ³n puede ser que se haya revocado el token de acceso de AntennaPod para su cuenta. Puede re-autenticarse o visitar la pĆ”gina web de la cosa.</string> + <string name="action_forbidden_msg">AntennaPod no tiene permiso para realizar esta acciĆ³n. La razĆ³n puede ser que se haya revocado el token de acceso de AntennaPod en su cuenta. Puede reautenticarse o visitar la pĆ”gina web.</string> <string name="access_revoked_title">Acceso revocado</string> - <string name="access_revoked_info">Ha revocado el token de acceso de AntennaPod a su cuenta. Para completar el proceso debe eliminar esta aplicaciĆ³n de la lista de aplicaciones aprobadas, en los ajustes de Flattr.</string> + <string name="access_revoked_info">Ha revocado el token de acceso de AntennaPod a su cuenta. Para completar el proceso debe eliminar esta aplicaciĆ³n de la lista de aplicaciones aprobadas en los ajustes de la web de Flattr.</string> <!--Flattr--> - <string name="flattr_click_success">Ha hecho Flattr en un elemento.</string> - <string name="flattr_click_success_count">Ha hecho Flattr en %d elementos.</string> - <string name="flattr_click_success_queue">Flattr: %s.</string> - <string name="flattr_click_failure_count">No se pudo hacer Flattr en %d elementos.</string> - <string name="flattr_click_failure">No se hizo Flattr: %s.</string> - <string name="flattr_click_enqueued">Se harĆ” Flattr de esta cosa mĆ”s tarde</string> - <string name="flattring_thing">Haciendo Flattr de %s</string> - <string name="flattring_label">AntennaPod haciendo Flattr</string> - <string name="flattrd_label">AntennaPod hizo Flattr</string> - <string name="flattrd_failed_label">AntennaPod Flattr fallĆ³</string> - <string name="flattr_retrieving_status">Obteniendo lista de Flattr</string> + <string name="flattr_click_success">Ha valorado con Flattr un elemento.</string> + <string name="flattr_click_success_count">Ha valorado con Flattr %d elementos.</string> + <string name="flattr_click_success_queue">valorado con Flattr: %s.</string> + <string name="flattr_click_failure_count">No se pudieron valorar con Flattr %d elementos.</string> + <string name="flattr_click_failure">No se ha valorado con Flattr: %s.</string> + <string name="flattr_click_enqueued">Se valorarĆ” con Flattr mĆ”s tarde</string> + <string name="flattring_thing">Valorando con Flattr a %s</string> + <string name="flattring_label">AntennaPod estĆ” valorando con Flattr</string> + <string name="flattrd_label">AntennaPod ha valorado con Flattr</string> + <string name="flattrd_failed_label">AntennaPod fallĆ³ al valorar con Flattr</string> + <string name="flattr_retrieving_status">Obteniendo lista de valoraciones con Flattr</string> <!--Variable Speed--> <string name="download_plugin_label">Descargar complemento</string> <string name="no_playback_plugin_title">Complemento no instalado</string> - <string name="no_playback_plugin_or_sonic_msg">Para que funciona la velocidad de reproducciĆ³n variable, recomendamos habilitar el reproductor Sonic Media [Android 4.1+].\n\nPor otro lado, puedes descargar el plugin de terceros <i>Prestissimo</i> de la Play Store.\nCualquier problema con Prestissimo no es reponsabilidad de AntennaPod y no deberĆa ser reportado al propietario del plugin.</string> + <string name="no_playback_plugin_or_sonic_msg">Para que funcione la velocidad de reproducciĆ³n variable, recomendamos habilitar el reproductor Sonic [Android 4.1+].\n\nTambiĆ©n puede descargar el plugin <i>Prestissimo</i> de la Play Store.\nNingĆŗn problema con Prestissimo es reponsabilidad de AntennaPod y deberĆa ser reportado al propietario del plugin.</string> <string name="set_playback_speed_label">Velocidades de reproducciĆ³n</string> <string name="enable_sonic">Activar Sonic</string> <!--Empty list labels--> <string name="no_items_label">Esta lista no tiene elementos.</string> - <string name="no_feeds_label">No se ha suscrito a ningĆŗn canal.</string> + <string name="no_feeds_label">No se ha suscrito a ningĆŗn pĆ³dcast.</string> <string name="no_chapters_label">Este episodio no tiene capĆtulos.</string> - <string name="no_shownotes_label">Este episodio no tiene anotaciones.</string> + <string name="no_shownotes_label">Este episodio no tiene notas del programa.</string> <!--Preferences--> <string name="storage_pref">Almacenamiento</string> <string name="project_pref">Proyecto</string> <string name="other_pref">Otros</string> <string name="about_pref">Acerca de</string> <string name="queue_label">Cola</string> - <string name="services_label">Servicios</string> + <string name="integrations_label">Integraciones</string> <string name="flattr_label">Flattr</string> + <string name="flattr_summary">Servicio de micropagos</string> + <string name="automation">AutomatizaciĆ³n</string> + <string name="download_pref_details">Detalles</string> + <string name="import_export_pref">Importar/Exportar</string> + <string name="appearance">Apariencia</string> + <string name="external_elements">Elementos externos</string> + <string name="interruptions">Interrupciones</string> + <string name="buttons">Botones de control</string> + <string name="media_player">Reproductor multimedia</string> <string name="pref_episode_cleanup_title">Limpieza de episodios</string> - <string name="pref_episode_cleanup_summary">Los episodios que no estĆ©n en la cola ni en Favoritos pueden eliminarse si Descarga automĆ”tica necesita espacio para episodios nuevos</string> + <string name="pref_episode_cleanup_summary">Los episodios que no estĆ©n en la cola ni en favoritos pueden eliminarse si la descarga automĆ”tica necesita espacio para nuevos episodios</string> <string name="pref_pauseOnDisconnect_sum">Pausar la reproducciĆ³n al desconectar los auriculares o el bluetooth</string> - <string name="pref_unpauseOnHeadsetReconnect_sum">Reanudar reproducciĆ³n cuando se reconecten los auriculares</string> - <string name="pref_unpauseOnBluetoothReconnect_sum">Reanudar reproducciĆ³n cuando se reconecte el bluetooth</string> - <string name="pref_hardwareForwardButtonSkips_title">Saltar episodio con botĆ³n avance</string> - <string name="pref_hardwareForwardButtonSkips_sum">Al pulsar el botĆ³n fĆsico de avanzar se saltarĆ” al siguiente episodio en lugar de sĆ³lo avanzar</string> - <string name="pref_hardwarePreviousButtonRestarts_title">BotĆ³n anterior reinicia</string> - <string name="pref_hardwarePreviousButtonRestarts_sum">Al pulsar el botĆ³n fĆsico de retroceder se comenzarĆ” el episodio de nuevo, en lugar de rebobinar</string> + <string name="pref_unpauseOnHeadsetReconnect_sum">Reanudar la reproducciĆ³n cuando se reconecten los auriculares</string> + <string name="pref_unpauseOnBluetoothReconnect_sum">Reanudar la reproducciĆ³n cuando se reconecte el bluetooth</string> + <string name="pref_hardwareForwardButtonSkips_title">BotĆ³n avance: Saltar</string> + <string name="pref_hardwarePreviousButtonRestarts_title">BotĆ³n retroceso: Reiniciar</string> + <string name="pref_hardwarePreviousButtonRestarts_sum">Al pulsar el botĆ³n fĆsico de retroceso se comenzarĆ” el episodio de nuevo en lugar de retroceder</string> <string name="pref_followQueue_sum">Saltar al siguiente elemento de la cola al acabar la reproducciĆ³n</string> - <string name="pref_auto_delete_sum">Borrar episodio cuando finalice la reproducciĆ³n</string> + <string name="pref_auto_delete_sum">Borrar el episodio cuando finalice la reproducciĆ³n</string> <string name="pref_auto_delete_title">Eliminar automĆ”ticamente</string> - <string name="pref_smart_mark_as_played_sum">Marcar episodios como escuchados incluso si todavĆa quedan unos segundos por escuchar</string> - <string name="pref_smart_mark_as_played_title">Marcar como terminado inteligente</string> - <string name="pref_skip_keeps_episodes_sum">Conservar episodios al saltarlos</string> + <string name="pref_smart_mark_as_played_sum">Marca los episodios como reproducidos incluso si todavĆa quedan unos segundos por escuchar</string> + <string name="pref_smart_mark_as_played_title">Marcado inteligente como reproducido</string> + <string name="pref_skip_keeps_episodes_sum">Conservar los episodios cuando son saltados</string> <string name="pref_skip_keeps_episodes_title">Conservar episodios saltados</string> <string name="pref_favorite_keeps_episodes_sum">Conservar los episodios cuando se marcan como favoritos</string> - <string name="pref_favorite_keeps_episodes_title">Conservar los episodios favoritos</string> + <string name="pref_favorite_keeps_episodes_title">Conservar episodios favoritos</string> <string name="playback_pref">ReproducciĆ³n</string> <string name="network_pref">Red</string> <string name="pref_autoUpdateIntervallOrTime_title">Intervalo de actualizaciĆ³n u hora del dĆa</string> - <string name="pref_autoUpdateIntervallOrTime_sum">Especificar el intervalo o la hora del dĆa en que se actualizarĆ”n automĆ”ticamente los canales</string> - <string name="pref_autoUpdateIntervallOrTime_message">Se puede ajustar un <i>intervalo</i> como \"cada 2 horas\", especificar una <i>hora del dĆa</i> como \"7:00 AM\" o <i>deshabilitar</i> las actualizaciones automĆ”ticas.\n\n<small>Nota: Las horas de actualizaciĆ³n no son exactas. Puede haber un ligero retraso.</small></string> + <string name="pref_autoUpdateIntervallOrTime_sum">Especifique un intervalo o una hora especĆfica del dĆa para actualizar automĆ”ticamente los canales</string> + <string name="pref_autoUpdateIntervallOrTime_message">Se puede ajustar un <i>intervalo</i> como \"cada 2 horas\", especificar una <i>hora del dĆa</i> como las \"7:00 AM\" o <i>deshabilitar</i> las actualizaciones automĆ”ticas.\n\n<small>Nota: Las horas de actualizaciĆ³n no son exactas. Puede haber un ligero retraso.</small></string> <string name="pref_autoUpdateIntervallOrTime_Disable">Deshabilitar</string> <string name="pref_autoUpdateIntervallOrTime_Interval">Ajustar intervalo</string> <string name="pref_autoUpdateIntervallOrTime_TimeOfDay">Ajustar hora del dĆa</string> <string name="pref_autoUpdateIntervallOrTime_every">todos los %1$s</string> <string name="pref_autoUpdateIntervallOrTime_at">a las %1$s</string> - <string name="pref_downloadMediaOnWifiOnly_sum">Solo descargar los contenidos por WiFi</string> + <string name="pref_downloadMediaOnWifiOnly_sum">Descargar los contenidos solo por wifi</string> <string name="pref_followQueue_title">ReproducciĆ³n continua</string> - <string name="pref_downloadMediaOnWifiOnly_title">Descarga de contenidos por WiFi</string> - <string name="pref_pauseOnHeadsetDisconnect_title">DesconexiĆ³n de los cascos</string> - <string name="pref_unpauseOnHeadsetReconnect_title">Reconectar auriculares</string> - <string name="pref_unpauseOnBluetoothReconnect_title">Reconectar Bluetooth</string> + <string name="pref_downloadMediaOnWifiOnly_title">Descarga de contenidos por wifi</string> + <string name="pref_pauseOnHeadsetDisconnect_title">Desconectar sin los auriculares</string> + <string name="pref_unpauseOnHeadsetReconnect_title">Reconectar con los auriculares</string> + <string name="pref_unpauseOnBluetoothReconnect_title">Reconectar con Bluetooth</string> <string name="pref_mobileUpdate_title">Actualizaciones por red mĆ³vil</string> - <string name="pref_mobileUpdate_sum">Permitir actualizaciones por red de datos mĆ³vil</string> + <string name="pref_mobileUpdate_sum">Permitir actualizaciones por la red de datos mĆ³vil</string> <string name="refreshing_label">Actualizando</string> <string name="flattr_settings_label">Ajustes de Flattr</string> - <string name="pref_flattr_auth_title">IdentificaciĆ³n en Flattr</string> + <string name="pref_flattr_auth_title">Identificarse en Flattr</string> <string name="pref_flattr_auth_sum">IdentifĆquese en Flattr para valorar cosas directamente desde la aplicaciĆ³n</string> - <string name="pref_flattr_this_app_title">Valorar esta aplicaciĆ³n en Flattr</string> + <string name="pref_flattr_this_app_title">Valorar en Flattr esta aplicaciĆ³n</string> <string name="pref_flattr_this_app_sum">Apoye el desarrollo de AntennaPod valorĆ”ndola en Flattr. Ā”Gracias!</string> - <string name="pref_revokeAccess_title">Revocar el acceso</string> - <string name="pref_revokeAccess_sum">Rescindir el permiso de acceso de esta aplicaciĆ³n a su cuenta de Flattr.</string> - <string name="pref_auto_flattr_title">Uso de Flattr automĆ”tico</string> - <string name="pref_auto_flattr_sum">Configurar flattr automĆ”tico</string> + <string name="pref_revokeAccess_title">Revocar acceso</string> + <string name="pref_revokeAccess_sum">Revocar el acceso de esta aplicaciĆ³n en su cuenta de Flattr.</string> + <string name="pref_auto_flattr_title">Flattr automĆ”tico</string> + <string name="pref_auto_flattr_sum">Configurar Flattr automĆ”tico</string> <string name="user_interface_label">Interfaz de usuario</string> <string name="pref_set_theme_title">Elegir un tema</string> <string name="pref_nav_drawer_title">Personalizar el cajĆ³n de navegaciĆ³n</string> @@ -338,131 +361,134 @@ <string name="pref_nav_drawer_feed_order_title">Ajustar orden de suscripciĆ³n</string> <string name="pref_nav_drawer_feed_order_sum">Cambiar el orden de las suscripciones</string> <string name="pref_nav_drawer_feed_counter_title">Ajustar contador de suscripciĆ³n</string> - <string name="pref_nav_drawer_feed_counter_sum">Cambiar la informaciĆ³n mostrada en el contador de suscripciĆ³n</string> + <string name="pref_nav_drawer_feed_counter_sum">Cambiar la informaciĆ³n mostrada en el contador de las suscripciones. TambiĆ©n afecta al orden de las suscripciones si el \'orden de la suscripciĆ³n\' estĆ” en modo \'Contador\'.</string> <string name="pref_set_theme_sum">Cambiar la apariencia de AntennaPod.</string> <string name="pref_automatic_download_title">Descarga automĆ”tica</string> <string name="pref_automatic_download_sum">Configurar la descarga automĆ”tica de episodios.</string> - <string name="pref_autodl_wifi_filter_title">Activar el filtro WiFi</string> - <string name="pref_autodl_wifi_filter_sum">Permitir la descarga automĆ”tica sĆ³lo para las redes WiFi marcadas.</string> + <string name="pref_autodl_wifi_filter_title">Activar el filtro wifi</string> + <string name="pref_autodl_wifi_filter_sum">Permitir la descarga automĆ”tica sĆ³lo desde las redes wifi seleccionadas.</string> <string name="pref_autodl_allow_on_mobile_title">Descargar bajo conexiĆ³n mĆ³vil</string> - <string name="pref_autodl_allow_on_mobile_sum">Permite descarga automĆ”tica sobre la red de Internet del mĆ³vil.</string> + <string name="pref_autodl_allow_on_mobile_sum">Permitir la descarga automĆ”tica a travĆ©s de la conexiĆ³n de datos mĆ³viles.</string> <string name="pref_automatic_download_on_battery_title">Descargar cuando no se estĆ” cargando</string> - <string name="pref_automatic_download_on_battery_sum">Permitir la descarga automĆ”tica cuando la baterĆa no estĆ” cargando</string> + <string name="pref_automatic_download_on_battery_sum">Permitir la descarga automĆ”tica cuando la baterĆa no se estĆ© cargando</string> <string name="pref_parallel_downloads_title">Descargas paralelas</string> - <string name="pref_episode_cache_title">CachĆ© de episodios</string> + <string name="pref_episode_cache_title">Almacenamiento de episodios</string> <string name="pref_theme_title_light">Claro</string> <string name="pref_theme_title_dark">Oscuro</string> + <string name="pref_theme_title_trueblack">Negro (para AMOLED)</string> <string name="pref_episode_cache_unlimited">Ilimitado</string> <string name="pref_update_interval_hours_plural">horas</string> <string name="pref_update_interval_hours_singular">hora</string> <string name="pref_update_interval_hours_manual">Manual</string> <string name="pref_gpodnet_authenticate_title">Iniciar sesiĆ³n</string> - <string name="pref_gpodnet_authenticate_sum">Inicie sesiĆ³n con su cuenta de gpodder.net para sincronizar sus suscripciones.</string> + <string name="pref_gpodnet_authenticate_sum">Iniciar sesiĆ³n en su cuenta de gpodder.net para sincronizar sus suscripciones.</string> <string name="pref_gpodnet_logout_title">Cerrar sesiĆ³n</string> - <string name="pref_gpodnet_logout_toast">Ha cerrado la sesiĆ³n correctamente.</string> - <string name="pref_gpodnet_setlogin_information_title">Cambiar informaciĆ³n de acceso</string> + <string name="pref_gpodnet_logout_toast">Ha cerrado la sesiĆ³n correctamente</string> + <string name="pref_gpodnet_setlogin_information_title">Cambiar informaciĆ³n de inicio de sesiĆ³n</string> <string name="pref_gpodnet_setlogin_information_sum">Modificar datos de inicio de sesiĆ³n en gpodder.net.</string> <string name="pref_gpodnet_sync_changes_title">Sincronizar cambios ahora</string> - <string name="pref_gpodnet_sync_changes_sum">Sincronizar cambios del estado de subscripciĆ³n y episodio con gpodder.net.</string> - <string name="pref_gpodnet_full_sync_title">SincronizaciĆ³n completa ahora</string> - <string name="pref_gpodnet_full_sync_sum">Sincronizar el estado de todas las suscripciones y estados de episodio con gpodder.net.</string> + <string name="pref_gpodnet_sync_changes_sum">Sincronizar cambios de suscripciĆ³n y episodios con gpodder.net.</string> + <string name="pref_gpodnet_full_sync_title">SincronizaciĆ³n completa</string> + <string name="pref_gpodnet_full_sync_sum">Sincronizar todas las suscripciones y episodios con gpodder.net.</string> <string name="pref_gpodnet_sync_sum_last_sync_line">Ćltimo intento de sincronizaciĆ³n: %1$s (%2$s)</string> - <string name="pref_gpodnet_sync_started">ComenzĆ³ sincronizaciĆ³n</string> - <string name="pref_gpodnet_full_sync_started">ComenzĆ³ sincronizaciĆ³n completa</string> - <string name="pref_gpodnet_login_status"><![CDATA[Autenticado como <i>%1$s</i> con dispositivo <i>%2$s</i>]]></string> - <string name="pref_gpodnet_notifications_title">Mostrar notificaciones de errores de sincronizaciĆ³n</string> - <string name="pref_gpodnet_notifications_sum">Este ajuste no afecta a errores de autenticaciĆ³n.</string> + <string name="pref_gpodnet_sync_started">SincronizaciĆ³n iniciada</string> + <string name="pref_gpodnet_full_sync_started">SincronizaciĆ³n completa iniciada</string> + <string name="pref_gpodnet_login_status"><![CDATA[Identificado como <i>%1$s</i> con dispositivo <i>%2$s</i>]]></string> + <string name="pref_gpodnet_notifications_title">Mostrar errores de sincronizaciĆ³n</string> + <string name="pref_gpodnet_notifications_sum">Este ajuste no afecta a los errores de autenticaciĆ³n.</string> <string name="pref_playback_speed_title">Velocidades de reproducciĆ³n</string> - <string name="pref_playback_speed_sum">Personalice las velocidades disponibles para la reproducciĆ³n de audio a velocidad variable</string> + <string name="pref_playback_speed_sum">Personalice las velocidades disponibles en la reproducciĆ³n de audio a velocidad variable</string> <string name="pref_fast_forward">Intervalo de avance</string> - <string name="pref_fast_forward_sum">Personaliza el nĆŗmero de segundos a avanzar cuando se pulsa el botĆ³n de avance rĆ”pido</string> + <string name="pref_fast_forward_sum">Personalice el nĆŗmero de segundos que avanzarĆ” cuando se pulsa el botĆ³n de avance</string> <string name="pref_rewind">Intervalo de retroceso</string> - <string name="pref_rewind_sum">Personaliza el nĆŗmero de segundos a retroceder cuando se pulsa el botĆ³n de retroceder</string> - <string name="pref_gpodnet_sethostname_title">Definir nombre de equipo</string> - <string name="pref_gpodnet_sethostname_use_default_host">Usar nombre de equipo por defecto</string> - <string name="pref_expandNotify_title">Expandir NotificaciĆ³n</string> - <string name="pref_expandNotify_sum">Expandir siempre la notificaciĆ³n para mostrar los botones de reproducciĆ³n</string> + <string name="pref_rewind_sum">Personalice el nĆŗmero de segundos que retrocederĆ” cuando se pulsa el botĆ³n de retrocedeso</string> + <string name="pref_gpodnet_sethostname_title">Establecer nombre del dispositivo</string> + <string name="pref_gpodnet_sethostname_use_default_host">Usar el nombre por defecto</string> <string name="pref_persistNotify_title">Controles de reproducciĆ³n persistentes</string> - <string name="pref_persistNotify_sum">Mantener la notificaciĆ³n y controles en pantalla de bloqueo cuando se pausa.</string> - <string name="pref_compact_notification_buttons_title">Configurar botones de la pantalla de bloqueo</string> - <string name="pref_compact_notification_buttons_sum">Cambiar los botones de la pantalla de bloqueo. El botĆ³n play/pausa siempre estĆ” incluido.</string> - <string name="pref_compact_notification_buttons_dialog_title">Seleccionar un mĆ”ximo de %1$d elementos</string> + <string name="pref_persistNotify_sum">Mantener las notificaciones y los controles en pantalla de bloqueo cuando se pausa la reproducciĆ³n.</string> + <string name="pref_compact_notification_buttons_title">Configurar botones en la pantalla de bloqueo</string> + <string name="pref_compact_notification_buttons_sum">Cambiar los botones en la pantalla de bloqueo. El botĆ³n reproducir/pausar siempre estĆ” incluido.</string> + <string name="pref_compact_notification_buttons_dialog_title">Seleccionar mĆ”ximo %1$d elementos</string> <string name="pref_compact_notification_buttons_dialog_error">SĆ³lo puedes seleccionar un mĆ”ximo de %1$d elementos.</string> <string name="pref_lockscreen_background_title">Establecer fondo de pantalla de bloqueo</string> - <string name="pref_lockscreen_background_sum">Establecer el fondo de pantalla de bloqueo desde la imagen del episodio. Como efecto lateral, esto tambiĆ©n mostrarĆ” la imagen en aplicaciones de terceros.</string> + <string name="pref_lockscreen_background_sum">Establecer el fondo de pantalla de bloqueo desde la imagen del episodio. Como efecto secundario, esto tambiĆ©n mostrarĆ”n las imagen de aplicaciones de terceros.</string> <string name="pref_showDownloadReport_title">Mostrar informe de descarga</string> <string name="pref_showDownloadReport_sum">Si la descarga falla, generar un informe con los detalles del fallo</string> <string name="pref_expand_notify_unsupport_toast">Las versiones de Android anteriores a la 4.1 no soportan notificaciones expandidas</string> <string name="pref_queueAddToFront_sum">Agregar nuevos episodios al principio de la cola.</string> <string name="pref_queueAddToFront_title">Poner al principio de la cola.</string> <string name="pref_smart_mark_as_played_disabled">Deshabilitado</string> - <string name="pref_image_cache_size_title">TamaƱo de la cachĆ© de imĆ”genes</string> - <string name="pref_image_cache_size_sum">TamaƱo de la cachĆ© en disco para imĆ”genes.</string> - <string name="crash_report_title">Informe de fallo</string> - <string name="crash_report_sum">Enviar el Ćŗltimo informe de fallo por e-mail</string> - <string name="send_email">Enviar e-mail</string> + <string name="pref_image_cache_size_title">TamaƱo del almacenamiento de imĆ”genes</string> + <string name="pref_image_cache_size_sum">TamaƱo del almacenamiento de imĆ”genes en disco.</string> + <string name="crash_report_title">Informe de fallos</string> + <string name="crash_report_sum">Enviar el Ćŗltimo informe de fallo por correo electrĆ³nico</string> + <string name="send_email">Enviar correo electrĆ³nico</string> <string name="experimental_pref">Experimental</string> - <string name="pref_sonic_title">Sonic media player</string> - <string name="pref_sonic_message">Usar el reproductor Sonic Media incorporado en lugar del reproductor multimedia de Android y Prestissimo</string> + <string name="pref_media_player_message">Seleccione quĆ© reproductor multimedia usar para reproducir archivos</string> <string name="pref_current_value">Valor actual: %1$s</string> <string name="pref_proxy_title">Proxy</string> <string name="pref_proxy_sum">Configurar proxy de red</string> <string name="pref_faq">Preguntas frecuentes</string> <string name="pref_known_issues">Problemas conocidos</string> - <string name="pref_no_browser_found">No se ha encontrado navegador web.</string> + <string name="pref_no_browser_found">No se ha encontrado un navegador web.</string> <string name="pref_cast_title">Soporte para Chromecast</string> <string name="pref_cast_message_play_flavor">Habilitar soporte para reproducciĆ³n remota en dispositivos Cast (como Chromecast, altavoces o Android TV)</string> <string name="pref_cast_message_free_flavor">Chromecast requiere librerĆas propietarias de terceros que estĆ”n deshabilitadas en esta versiĆ³n de AntennaPod</string> - <string name="pref_enqueue_downloaded_title">Poner descargados en cola</string> + <string name="pref_enqueue_downloaded_title">Agregar descargados a la cola</string> <string name="pref_enqueue_downloaded_summary">Agregar episodios descargados a la cola</string> + <string name="media_player_builtin">Reproductor Android integrado</string> + <string name="pref_videoBehavior_title">Al salir del vĆdeo</string> + <string name="pref_videoBehavior_sum">Comportamiento al salir de la reproducciĆ³n de video</string> + <string name="stop_playback">Parar reproducciĆ³n</string> + <string name="continue_playback">Continuar la reproducciĆ³n de audio</string> <!--Auto-Flattr dialog--> <string name="auto_flattr_enable">Habilitar Flattr automĆ”tico</string> - <string name="auto_flattr_after_percent">Hacer Flattr del episodio en cuanto se haya reproducido el %d por ciento</string> - <string name="auto_flattr_ater_beginning">Hacer Flattr del episodio al comenzar la reproducciĆ³n</string> - <string name="auto_flattr_ater_end">Hacer Flattr del episodio al terminar la reproducciĆ³n</string> + <string name="auto_flattr_after_percent">Valorar con Flattr el episodio cuando se haya reproducido el %d por ciento</string> + <string name="auto_flattr_ater_beginning">Valorar con Flattr el episodio al comenzar la reproducciĆ³n</string> + <string name="auto_flattr_ater_end">Valorar con Flattr el episodio al terminar la reproducciĆ³n</string> <!--Search--> <string name="search_hint">Buscar episodios</string> - <string name="found_in_shownotes_label">Encontrado en las notas del show</string> + <string name="found_in_shownotes_label">Encontrado en las notas del programa</string> <string name="found_in_chapters_label">Encontrado en los capĆtulos</string> - <string name="found_in_authors_label">Encontrado en los autores</string> - <string name="found_in_feeds_label">Encontrado en los feeds</string> + <string name="found_in_authors_label">Encontrado en autor(es)</string> + <string name="found_in_feeds_label">Encontrado en pĆ³dcast</string> <string name="search_status_no_results">No se han encontrado resultados</string> <string name="search_label">Buscar</string> <string name="found_in_title_label">Encontrado en el tĆtulo</string> - <string name="no_results_for_query">No se han encontrado resultados para \"%1$s\"</string> + <string name="no_results_for_query">No se han encontrado resultados de \"%1$s\"</string> <!--OPML import and export--> - <string name="opml_import_txtv_button_lable">Los archivos OPML le permiten migrar sus podcasts de una aplicaciĆ³n a otra.</string> + <string name="opml_import_txtv_button_lable">Los archivos OPML le permiten migrar sus pĆ³dcast de una aplicaciĆ³n a otra.</string> <string name="opml_import_option">OpciĆ³n %1$d</string> <string name="opml_import_explanation_1">Elegir un una ruta del sistema de ficheros local.</string> - <string name="opml_import_explanation_2">Usar una aplicaciĆ³n externa tipo Dropbox, Google Drive or su gestor de ficheros favorito para abrir un archivo OPML.</string> - <string name="opml_import_explanation_3">Muchas aplicaciones como Google Mail, Dropbox, Google Drive y la mayorĆa de gestores de ficheros pueden <i>abrir</i> archivos OPML <i>con</i> AntennaPod.</string> + <string name="opml_import_explanation_2">Usar una aplicaciĆ³n externa tipo Dropbox, Google Drive o su gestor de ficheros favorito para abrir un archivo OPML.</string> + <string name="opml_import_explanation_3">Muchas aplicaciones como Google Mail, Dropbox, Google Drive y la mayorĆa de gestores de ficheros pueden <i>abrir</i> archivos OPML <i>de</i> AntennaPod.</string> <string name="start_import_label">Comenzar la importaciĆ³n</string> - <string name="opml_import_label">ImportaciĆ³n de OPML</string> + <string name="opml_import_label">Importar de OPML</string> <string name="opml_directory_error">Ā”ERROR!</string> <string name="reading_opml_label">Leyendo el archivo OPML</string> - <string name="opml_reader_error">Error al leer el documento OPML</string> + <string name="opml_reader_error">Error al leer el documento OPML:</string> <string name="opml_import_error_no_file">Ā”Debes seleccionar un archivo!</string> <string name="select_all_label">Seleccionar todo</string> <string name="deselect_all_label">Deseleccionar todo</string> <string name="select_options_label">Seleccionarā¦</string> <string name="choose_file_from_filesystem">Desde el sistema de ficheros local</string> - <string name="choose_file_from_external_application">Usar aplicaciĆ³n externa</string> + <string name="choose_file_from_external_application">Usar una aplicaciĆ³n externa</string> <string name="opml_export_label">Exportar a OPML</string> <string name="html_export_label">Exportar a HTML</string> <string name="exporting_label">Exportandoā¦</string> <string name="export_error_label">Error en la exportaciĆ³n</string> - <string name="opml_export_success_title">ExportaciĆ³n a OPML exitosa</string> - <string name="opml_export_success_sum">El archivo OPML se ha escrito en:\u0020</string> - <string name="opml_import_ask_read_permission">Es necesario el acceso al almacenamiento externo para leer archivos OPML</string> + <string name="export_success_title">ExportaciĆ³n exitosa</string> + <string name="export_success_sum">El archivo exportado fue guardado en:\n\n%1$s</string> + <string name="opml_import_ask_read_permission">Necesita acceso al almacenamiento externo para leer archivos OPML</string> <!--Sleep timer--> <string name="set_sleeptimer_label">Establecer un temporizador</string> <string name="disable_sleeptimer_label">Desactivar el temporizador</string> <string name="enter_time_here_label">Introducir hora</string> <string name="sleep_timer_label">Temporizador</string> <string name="time_left_label">Tiempo restante:\u0020</string> - <string name="time_dialog_invalid_input">Entrada no vĆ”lida, el tiempo debe ser un entero</string> - <string name="timer_about_to_expire_label"><b>Cuando el temporizador vaya a expirara:</b></string> - <string name="shake_to_reset_label">Agitar para reiniciar temporizador</string> + <string name="time_dialog_invalid_input">Entrada no vĆ”lida, el tiempo debe ser un nĆŗmero entero</string> + <string name="timer_about_to_expire_label"><b>Cuando el temporizador vaya a expirar:</b></string> + <string name="shake_to_reset_label">Agitar para reiniciar el temporizador</string> <string name="timer_vibration_label">Vibrar</string> <string name="time_seconds">segundos</string> <string name="time_minutes">minutos</string> @@ -479,22 +505,22 @@ <item quantity="one">1 hora</item> <item quantity="other">%d horas</item> </plurals> - <string name="auto_enable_label">Auto-habilitar</string> - <string name="sleep_timer_enabled_label">Temporizador de sueƱo habilitado</string> - <string name="sleep_timer_disabled_label">Temporizador de sueƱo deshabilitado</string> + <string name="auto_enable_label">Autohabilitar</string> + <string name="sleep_timer_enabled_label">Temporizador habilitado</string> + <string name="sleep_timer_disabled_label">Temporizador deshabilitado</string> <!--gpodder.net--> <string name="gpodnet_taglist_header">CATEGORĆAS</string> - <string name="gpodnet_toplist_header">MEJORES PODCASTS</string> + <string name="gpodnet_toplist_header">MEJORES PĆDCAST</string> <string name="gpodnet_suggestions_header">SUGERENCIAS</string> <string name="gpodnet_search_hint">Buscar en gpodder.net</string> <string name="gpodnetauth_login_title">Iniciar sesiĆ³n</string> - <string name="gpodnetauth_login_descr">Bienvenido al proceso de autenticaciĆ³n de gpodder.net. Primero, escriba sus datos de inicio de sesiĆ³n:</string> + <string name="gpodnetauth_login_descr">Bienvenidoinicio de sesiĆ³n de gpodder.net. Primero, escriba sus datos de inicio de sesiĆ³n:</string> <string name="gpodnetauth_login_butLabel">Iniciar sesiĆ³n</string> - <string name="gpodnetauth_login_register">Si no tienes una cuenta aĆŗn, puedes crearla en:\nhttps://gpodder.net/register/</string> - <string name="username_label">Nombre de usuario</string> + <string name="gpodnetauth_login_register">Si aĆŗn no tienes una cuenta, puedes crearla en:\nhttps://gpodder.net/register/</string> + <string name="username_label">Usuario</string> <string name="password_label">ContraseƱa</string> <string name="gpodnetauth_device_title">SelecciĆ³n del dispositivo</string> - <string name="gpodnetauth_device_descr">Cree un nuevo dispositivo para usar con su cuenta de gpodder.net o elija uno existente:</string> + <string name="gpodnetauth_device_descr">Cree un nuevo dispositivo para usar en su cuenta de gpodder.net o elija uno existente:</string> <string name="gpodnetauth_device_deviceID">Id. de dispositivo:\u0020</string> <string name="gpodnetauth_device_caption">DescripciĆ³n</string> <string name="gpodnetauth_device_butCreateNewDevice">Crear dispositivo nuevo</string> @@ -507,7 +533,7 @@ <string name="gpodnetauth_finish_descr">Ā”Enhorabuena! Su cuenta de gpodder.net estĆ” ahora asociada con su dispositivo. A partir de ahora AntennaPod sincronizarĆ” automĆ”ticamente las suscripciones de su dispositivo con su cuenta de gpodder.net.</string> <string name="gpodnetauth_finish_butsyncnow">Comenzar sincronizaciĆ³n ahora</string> <string name="gpodnetauth_finish_butgomainscreen">Ir a la pantalla principal</string> - <string name="gpodnetsync_auth_error_title">Error de autenticaciĆ³n de gpodder.net</string> + <string name="gpodnetsync_auth_error_title">Error de autenticaciĆ³n en gpodder.net</string> <string name="gpodnetsync_auth_error_descr">Usuario o contraseƱa incorrectos</string> <string name="gpodnetsync_error_title">Error de sincronizaciĆ³n de gpodder.net</string> <string name="gpodnetsync_error_descr">OcurriĆ³ un error de sincronizaciĆ³n:\u0020</string> @@ -518,10 +544,10 @@ <string name="create_folder_label">Crear carpeta</string> <string name="choose_data_directory">Elegir carpeta de datos</string> <string name="choose_data_directory_message">Por favor elige la raĆz de la carpeta de datos. AntennaPod crearĆ” los subdirectorios apropiados.</string> - <string name="choose_data_directory_permission_rationale">Se necesita acceso a almacenamiento externo para cambiar la carpeta de datos</string> - <string name="create_folder_msg">ĀæCrear carpeta con nombre Ā«%1$sĀ»?</string> + <string name="choose_data_directory_permission_rationale">Necesita acceso al almacenamiento externo para cambiar la carpeta de datos</string> + <string name="create_folder_msg">ĀæCrear carpeta con nombre \"%1$s\"?</string> <string name="create_folder_success">Carpeta creada</string> - <string name="create_folder_error_no_write_access">No se puede escribir a esta carpeta</string> + <string name="create_folder_error_no_write_access">No se puede escribir en esta carpeta</string> <string name="create_folder_error_already_exists">Ya existe la carpeta</string> <string name="create_folder_error">No se ha podido crear la carpeta</string> <string name="folder_does_not_exist_error">\"%1$s\" no existe</string> @@ -532,7 +558,7 @@ <string name="set_to_default_folder">Elegir carpeta predeterminada</string> <string name="pref_pausePlaybackForFocusLoss_sum">Pausar la reproducciĆ³n en lugar de bajar el volumen cuando otra aplicaciĆ³n reproduzca sonidos</string> <string name="pref_pausePlaybackForFocusLoss_title">Pausar durante las interrupciones</string> - <string name="pref_resumeAfterCall_sum">Reanudar reproducciĆ³n tras una llamada</string> + <string name="pref_resumeAfterCall_sum">Reanudar la reproducciĆ³n tras una llamada</string> <string name="pref_resumeAfterCall_title">Reanudar tras una llamada</string> <string name="pref_restart_required">Es necesario reiniciar AntennaPod para aplicar los cambios.</string> <!--Online feed view--> @@ -540,8 +566,8 @@ <string name="subscribed_label">Suscrito</string> <string name="downloading_label">Descargandoā¦</string> <!--Content descriptions for image buttons--> - <string name="rewind_label">Rebobinar</string> - <string name="fast_forward_label">Avance rĆ”pido</string> + <string name="rewind_label">Retroceso</string> + <string name="fast_forward_label">Avance</string> <string name="media_type_audio_label">Audio</string> <string name="media_type_video_label">VĆdeo</string> <string name="navigate_upwards_label">Navegar hacia arriba</string> @@ -551,40 +577,40 @@ <string name="load_next_page_label">Cargar la pĆ”gina siguiente</string> <!--Feed information screen--> <string name="authentication_label">AutenticaciĆ³n</string> - <string name="authentication_descr">Cambiar nombre y contraseƱa de este podcast y sus episodios</string> - <string name="auto_download_settings_label">Opciones de Auto Descarga</string> - <string name="episode_filters_label">Filtro de Episodios</string> - <string name="episode_filters_description">Listado de tĆ©rminos para decidir si un episodio debe ser incluĆdo o excluĆdo al auto descargar</string> + <string name="authentication_descr">Cambiar nombre y contraseƱa de este pĆ³dcast y sus episodios</string> + <string name="auto_download_settings_label">Opciones de descarga automĆ”tica</string> + <string name="episode_filters_label">Filtro de episodios</string> + <string name="episode_filters_description">Lista de tĆ©rminos usados para decidir si un episodio debe ser incluĆdo o excluĆdo de la descarga automĆ”tica</string> <string name="episode_filters_include">Incluir</string> <string name="episode_filters_exclude">Excluir</string> - <string name="episode_filters_hint">Palabras sueltas \n\"MĆŗltiples palabras\"</string> + <string name="episode_filters_hint">Palabras sueltas \n\"mĆŗltiples palabras\"</string> <string name="keep_updated">Mantener actualizado</string> <!--Progress information--> <string name="progress_upgrading_database">Actualizando la base de datos</string> <!--AntennaPodSP--> - <string name="sp_apps_importing_feeds_msg">Importando subscripciones de aplicaciones de uso especĆfico...</string> + <string name="sp_apps_importing_feeds_msg">Importando suscripciones de aplicaciones de uso especĆficoā¦</string> <string name="search_itunes_label">Buscar en iTunes</string> <string name="filter">Filtro</string> - <string name="search_fyyd_label">Buscar fyyd</string> + <string name="search_fyyd_label">Buscar en fyyd</string> <!--Episodes apply actions--> - <string name="all_label">Todo</string> - <string name="selected_all_label">Seleccionados todos los episodios</string> + <string name="all_label">Todos</string> + <string name="selected_all_label">Todos los episodios seleccionados</string> <string name="none_label">Ninguno</string> - <string name="deselected_all_label">Deseleccionados todos los episodios</string> - <string name="played_label">Reproducido</string> - <string name="selected_played_label">Seleccionados episodios reproducidos</string> + <string name="deselected_all_label">NingĆŗn episodio seleccionado</string> + <string name="played_label">Reproducidos</string> + <string name="selected_played_label">Episodios reproducidos seleccionados</string> <string name="unplayed_label">No reproducidos</string> - <string name="selected_unplayed_label">Seleccionados episodios no reproducidos</string> - <string name="downloaded_label">Descargado</string> - <string name="selected_downloaded_label">Seleccionados episodios descargados</string> + <string name="selected_unplayed_label">Episodios no reproducidos seleccionados</string> + <string name="downloaded_label">Descargados</string> + <string name="selected_downloaded_label">Episodios descargados seleccionados</string> <string name="not_downloaded_label">No descargado</string> - <string name="selected_not_downloaded_label">Seleccionados episodios no descargados</string> + <string name="selected_not_downloaded_label">Episodios no descargados seleccionados</string> <string name="queued_label">En cola</string> - <string name="selected_queued_label">Seleccionados episodios en cola</string> - <string name="not_queued_label">No en cola</string> - <string name="selected_not_queued_label">Seleccionados episodios no en cola</string> + <string name="selected_queued_label">Episodios en cola seleccionados</string> + <string name="not_queued_label">No estĆ”n en cola</string> + <string name="selected_not_queued_label">Episodios que no estĆ”n en cola seleccionados</string> <string name="has_media">Tiene multimedia</string> - <string name="selected_has_media_label">Seleccionar episodios con multimedia</string> + <string name="selected_has_media_label">Episodios con multimedia seleccionados</string> <!--Sort--> <string name="sort_title_a_z">TĆtulo (A \u2192 Z)</string> <string name="sort_title_z_a">TĆtulo (Z \u2192 A)</string> @@ -594,9 +620,9 @@ <string name="sort_duration_long_short">DuraciĆ³n (Largo \u2192 Corto)</string> <!--Rating dialog--> <string name="rating_title">ĀæTe gusta AntennaPod?</string> - <string name="rating_message">EstarĆamos muy agradecidos si nos dedicas un tiempo para puntuar AntennaPod</string> + <string name="rating_message">EstarĆamos muy agradecidos si nos dedicas un poco de tiempo para valorar AntennaPod.</string> <string name="rating_never_label">DĆ©jame en paz</string> - <string name="rating_later_label">RecuĆ©rdamelo despuĆ©s</string> + <string name="rating_later_label">RecuĆ©rdamelo mĆ”s tarde</string> <string name="rating_now_label">Ā”Venga, hagĆ”moslo!</string> <!--Audio controls--> <string name="audio_controls">Controles de audio</string> @@ -605,42 +631,51 @@ <string name="left_short">I</string> <string name="right_short">D</string> <string name="audio_effects">Efectos de audio</string> - <string name="stereo_to_mono">Downmix: De estereo a mono</string> - <string name="sonic_only">SĆ³lo Sonic</string> + <string name="stereo_to_mono">Mezclar: de estĆ©reo a mono</string> + <string name="sonic_only">Solo Sonic</string> <!--proxy settings--> <string name="proxy_type_label">Tipo</string> <string name="host_label">Host</string> <string name="port_label">Puerto</string> <string name="optional_hint">(Opcional)</string> - <string name="proxy_test_label">Probar</string> - <string name="proxy_checking">Comprobando...</string> + <string name="proxy_test_label">Test</string> + <string name="proxy_checking">Comprobandoā¦</string> <string name="proxy_test_successful">Test correcto</string> <string name="proxy_test_failed">Test fallido</string> <string name="proxy_host_empty_error">El host no puede estar en blanco</string> - <string name="proxy_host_invalid_error">El host no es una IP ni un host vĆ”lido</string> - <string name="proxy_port_invalid_error">Puerto invĆ”lido</string> + <string name="proxy_host_invalid_error">El host no es una direcciĆ³n IP o dominio vĆ”lido</string> + <string name="proxy_port_invalid_error">Puerto no vĆ”lido</string> <!--Database import/export--> <string name="import_export">Importar/Exportar base de datos</string> - <string name="import_export_warning">Esta funciĆ³n experimental se puede usar para transferir tus suscripciones y episodios reproducidos a otro dispositivo.\n\nLas base de datos exportadas solo se pueden importar cuando se usa la misma versiĆ³n de AntennaPod. En otro caso, esta funciĆ³n podrĆa provocar comportamiento inesperado.\n\nDespuĆ©s de importar, los episodios podrĆan mostrarse como descargados cuando no lo estĆ”n. Reproduce estos episodios para que AntennaPod lo detecte.</string> + <string name="import_export_warning">Esta funciĆ³n experimental se puede usar para transferir sus suscripciones y episodios reproducidos a otro dispositivo.\n\nLas bases de datos exportadas solo se pueden importar cuando se usa la misma versiĆ³n de AntennaPod. En otro caso, esta funciĆ³n podrĆa provocar un comportamiento inesperado.\n\nDespuĆ©s de la importaciĆ³n, los episodios podrĆan mostrarse como descargados cuando no lo estĆ”n. Presione el botĆ³n de reproducciĆ³n de los episodios para que AntennaPod lo detecte.</string> <string name="label_import">Importar</string> <string name="label_export">Exportar</string> - <string name="import_select_file">Seleccionar firchero a importar</string> - <string name="export_ok">ExportaciĆ³n exitosa. La base de datos se guardĆ³ en la tarjeta SD.</string> - <string name="import_ok">ImportaciĆ³n exitosa.\n\nPor favor, pulse OK para reiniciar AntennaPod</string> + <string name="import_select_file">Seleccionar archivo a importar</string> + <string name="export_ok">ExportaciĆ³n exitosa.</string> + <string name="import_ok">ImportaciĆ³n exitosa.\n\nPulse OK para reiniciar AntennaPod</string> <!--Casting--> - <string name="cast_media_route_menu_title">Reproducir en...</string> - <string name="cast_disconnect_label">Desconectar la sesiĆ³n Cast</string> - <string name="cast_not_castable">El medio seleccionado no es compatible con el dispositivo Cast</string> - <string name="cast_failed_to_play">Fallo al iniciar la reproducciĆ³n del medio</string> - <string name="cast_failed_to_stop">Fallo al detener la reproducciĆ³n del medio</string> - <string name="cast_failed_to_pause">Fallo al pausar la reproducciĆ³n del medio</string> + <string name="cast_media_route_menu_title">Reproducir enā¦</string> + <string name="cast_disconnect_label">Desconectar la sesiĆ³n de cast</string> + <string name="cast_not_castable">El medio seleccionado no es compatible con el dispositivo de cast</string> + <string name="cast_failed_to_play">Error al iniciar la reproducciĆ³n del medio</string> + <string name="cast_failed_to_stop">Error al detener la reproducciĆ³n del medio</string> + <string name="cast_failed_to_pause">Error al pausar la reproducciĆ³n del medio</string> <!--<string name="cast_failed_to_connect">Could not connect to the device</string>--> - <string name="cast_failed_setting_volume">Fallo al ajustar el volumen</string> - <string name="cast_failed_no_connection">No hay conexiĆ³n con el dispositivo Cast</string> - <string name="cast_failed_no_connection_trans">Se ha perdido la conexiĆ³n con el dispositivo Cast. La aplicaciĆ³n estĆ” intentando reconectar. Por favor, espera unos segundos e intenta de nuevo.</string> - <string name="cast_failed_perform_action">Fallo en la acciĆ³n</string> - <string name="cast_failed_status_request">Fallo al sincronizar con el dispositivo Cast</string> - <string name="cast_failed_seek">Fallo al cambiar de posiciĆ³n en el dispositivo Cast</string> + <string name="cast_failed_setting_volume">Error al ajustar el volumen</string> + <string name="cast_failed_no_connection">No hay ninguna conexiĆ³n con el dispositivo de cast</string> + <string name="cast_failed_no_connection_trans">Se ha perdido la conexiĆ³n con dispositivo de cast. La aplicaciĆ³n estĆ” intentando restablecer la conexiĆ³n. Espere unos segundos y vuelva a intentarlo.</string> + <string name="cast_failed_perform_action">Error al realizar la acciĆ³n</string> + <string name="cast_failed_status_request">Error al sincronizar con el dispositivo de cast</string> + <string name="cast_failed_seek">Error al buscar la nueva posiciĆ³n en el dispositivo de cast</string> <string name="cast_failed_receiver_player_error">El reproductor ha encontrado un error grave</string> - <string name="cast_failed_media_error_skipping">Error reproduciendo medio. Saltando...</string> + <string name="cast_failed_media_error_skipping">Error reproduciendo medio. Saltandoā¦</string> + <!--Notification channels--> + <string name="notification_channel_user_action">AcciĆ³n necesaria</string> + <string name="notification_channel_user_action_description">Se muestra si su acciĆ³n es necesaria, por ejemplo, si necesita introducir una contraseƱa.</string> + <string name="notification_channel_downloading">Descargando</string> + <string name="notification_channel_downloading_description">Se muestra mientras se estĆ” descargando.</string> + <string name="notification_channel_playing">Reproduciendo</string> + <string name="notification_channel_playing_description">Permite controlar la reproducciĆ³n. Es la notificaciĆ³n principal que se ve mientras se reproduce un pĆ³dcast.</string> + <string name="notification_channel_error">Errores</string> + <string name="notification_channel_error_description">Muestra si algo saliĆ³ mal, por ejemplo, si falla la descarga o la sincronizaciĆ³n de gpodder</string> </resources> diff --git a/core/src/main/res/values-et/strings.xml b/core/src/main/res/values-et/strings.xml index d7afdf834..9d5673751 100644 --- a/core/src/main/res/values-et/strings.xml +++ b/core/src/main/res/values-et/strings.xml @@ -48,7 +48,6 @@ <string name="yes">Jah</string> <string name="no">Ei</string> <string name="reset">Nulli</string> - <string name="author_label">Autor</string> <string name="language_label">Keel</string> <string name="url_label">URL</string> <string name="podcast_settings_label">Seaded</string> @@ -93,18 +92,11 @@ <string name="mark_all_read_label">MƤrgi kuulatuks</string> <string name="mark_all_read_msg">MƤrgi kƵik saated esitatuks</string> <string name="mark_all_seen_label">MƤrgi kƵik nƤhtuks</string> - <string name="mark_all_seen_msg">MƤrgi kƵik saated nƤhtuks</string> <string name="show_info_label">NƤita infot</string> - <string name="rename_feed_label">Nimeta taskuhƤƤling Ć¼mber</string> - <string name="remove_feed_label">Eemalda taskuhƤƤling</string> <string name="share_label">Jaga...</string> - <string name="share_link_label">Jaga linki</string> - <string name="share_link_with_position_label">Jaga linki koos asukohaga</string> + <string name="share_file_label">Jaga faili</string> <string name="share_feed_url_label">Jaga uudisvoo URL-i</string> - <string name="feed_remover_msg">Uudisvoo eemaldamine</string> - <string name="load_complete_feed">VƤrskenda kogu uudisvoogu</string> <string name="hide_episodes_title">Peida saated</string> - <string name="episode_actions">Rakenda tegevused</string> <string name="hide_unplayed_episodes_label">Esitamata</string> <string name="hide_paused_episodes_label">Peatatud</string> <string name="hide_played_episodes_label">Esitatud</string> @@ -147,6 +139,7 @@ <string name="download_failed">ebaƵnnestus</string> <string name="download_pending">Ootel allalaadimine</string> <string name="download_running">Allalaadimine on kƤimas</string> + <string name="download_error_details">Ćksikasjad</string> <string name="download_error_device_not_found">Salvestuskohta ei leitud</string> <string name="download_error_insufficient_space">Pole piisavalt ruumi</string> <string name="download_error_file_error">Faili viga</string> @@ -207,7 +200,6 @@ <string name="date">KuupƤeva jƤrgi</string> <string name="duration">Kestuse jƤrgi</string> <string name="episode_title">Saate pealkiri</string> - <string name="feed_title">Uudisvoo pealkiri</string> <string name="ascending">Kasvavalt</string> <string name="descending">Kahanevalt</string> <!--Flattr--> @@ -224,7 +216,6 @@ <string name="enable_sonic">Luba Sonicu kasutamine</string> <!--Empty list labels--> <string name="no_items_label">Selles nimekirjas pole midagi.</string> - <string name="no_feeds_label">Sa pole veel Ć¼htegi uusidvoogi tellinud.</string> <string name="no_chapters_label">Saatel pole peatĆ¼kke.</string> <string name="no_shownotes_label">Sellel saatel pole mingeid mƤrkusi.</string> <!--Preferences--> @@ -233,7 +224,6 @@ <string name="other_pref">Muud</string> <string name="about_pref">Info</string> <string name="queue_label">JƤrjekord</string> - <string name="services_label">Teenused</string> <string name="flattr_label">Flattr</string> <string name="pref_episode_cleanup_title">Saadete kustutamien</string> <string name="pref_followQueue_sum">Kui saade lƵpeb, siis esita kohe jƤrgmine jƤrjekorras olev saade.</string> @@ -241,6 +231,7 @@ <string name="pref_auto_delete_title">Automaatne kustutamine</string> <string name="pref_skip_keeps_episodes_sum">Hoia saated alles, kui need jƤetakse vahele</string> <string name="pref_skip_keeps_episodes_title">Hoia vahelejƤetud osad alles</string> + <string name="pref_favorite_keeps_episodes_title">SƤilita lemmikosad</string> <string name="playback_pref">Esitamine</string> <string name="network_pref">VƵrk</string> <string name="pref_autoUpdateIntervallOrTime_title">Uuendamise intervall vƵi kellaaeg</string> @@ -293,8 +284,6 @@ <string name="pref_playback_speed_title">Esitamise kiirused</string> <string name="pref_gpodnet_sethostname_title">MƤƤra hostinimi</string> <string name="pref_gpodnet_sethostname_use_default_host">Kasuta vaikimisi hosti</string> - <string name="pref_expandNotify_title">Teavituste laiendamine</string> - <string name="pref_expandNotify_sum">NƤita alati teavitustes pleieri nuppe.</string> <string name="pref_persistNotify_title">PĆ¼sivad taasesitamise nupud</string> <string name="pref_compact_notification_buttons_title">MƤƤra lukustutekraani nupud</string> <string name="pref_lockscreen_background_title">MƤƤra lukustusekraani taustapilt</string> @@ -342,8 +331,6 @@ <string name="html_export_label">HTML eksport</string> <string name="exporting_label">Eksportimine...</string> <string name="export_error_label">Viga eksportimisel</string> - <string name="opml_export_success_title">OPML eksport oli edukas.</string> - <string name="opml_export_success_sum">.opml fail kirjutati kausta:\u0020</string> <!--Sleep timer--> <string name="set_sleeptimer_label">MƤƤra unetaimer</string> <string name="disable_sleeptimer_label">Keela unetaimer</string> @@ -368,6 +355,9 @@ <item quantity="one">1 tund</item> <item quantity="other">%d tundi</item> </plurals> + <string name="auto_enable_label">Automaatne kustutamine</string> + <string name="sleep_timer_enabled_label">Unetaimer on sisse lĆ¼litatud</string> + <string name="sleep_timer_disabled_label">Unetaimer on vƤlja lĆ¼litatud</string> <!--gpodder.net--> <string name="gpodnet_taglist_header">KATEGOORIAD</string> <string name="gpodnet_toplist_header">POPIMAD TASKUHĆĆLINGUD</string> @@ -385,6 +375,7 @@ <string name="gpodnetauth_device_chooseExistingDevice">Vali olemasolev seade:</string> <string name="gpodnetauth_device_errorEmpty">Seadme ID ei tohi olla tĆ¼hi</string> <string name="gpodnetauth_device_errorAlreadyUsed">Seadme ID on juba kasutuses</string> + <string name="gpodnetauth_device_caption_errorEmpty">Pealkiri ei tohi olla tĆ¼hi</string> <string name="gpodnetauth_device_butChoose">Vali</string> <string name="gpodnetauth_finish_title">Sisse logitud!</string> <string name="gpodnetauth_finish_butsyncnow">Alusta kohe sĆ¼nkroonimist</string> @@ -490,9 +481,17 @@ <string name="proxy_test_successful">Kontroll oli edukas</string> <string name="proxy_test_failed">Kontroll ebaƵnnestus</string> <string name="proxy_host_empty_error">Hostinimi ei saa olla tĆ¼hi</string> + <string name="proxy_host_invalid_error">Se pole korrektne IP aadress vƵi domeen</string> <string name="proxy_port_invalid_error">Port pole korrektne</string> <!--Database import/export--> + <string name="import_export">Andmebaasi importimine/eksportimine</string> + <string name="label_import">Impordi</string> + <string name="label_export">Ekspordi</string> + <string name="import_select_file">Vali fail, mida importida</string> + <string name="export_ok">Eksportimine on sooritatud.</string> <!--Casting--> <string name="cast_media_route_menu_title">Esita...</string> <!--<string name="cast_failed_to_connect">Could not connect to the device</string>--> + <string name="cast_failed_media_error_skipping">TƵrge meedia esitamisel. JƤtame vahele...</string> + <!--Notification channels--> </resources> diff --git a/core/src/main/res/values-fa/strings.xml b/core/src/main/res/values-fa/strings.xml index fb8bb5e7c..dc6e7cb2e 100644 --- a/core/src/main/res/values-fa/strings.xml +++ b/core/src/main/res/values-fa/strings.xml @@ -1,15 +1,17 @@ <?xml version='1.0' encoding='UTF-8'?> <resources xmlns:tools="http://schemas.android.com/tools"> <!--Activitiy and fragment titles--> + <string name="feed_update_receiver_name">ŲØŁāŲ±ŁŲ² Ų±Ų³Ų§ŁŪ Ų§Ų“ŲŖŲ±Ų§Ś©āŁŲ§</string> <string name="feeds_label">Ų®ŁŲ±Ų§Ś©</string> <string name="statistics_label">Ų¢Ł
Ų§Ų±</string> <string name="add_feed_label">Ų§Ų¶Ų§ŁŁ Ś©Ų±ŲÆŁ Ł¾Ų§ŲÆŚ©Ų³ŲŖ</string> - <string name="episodes_label">ŁŲ³Ł
ŲŖ ŁŲ§</string> + <string name="episodes_label">ŁŲ³Ł
ŲŖāŁŲ§</string> <string name="all_episodes_short_label">ŁŁ
Ł</string> + <string name="new_episodes_label">Ų¬ŲÆŪŲÆ</string> <string name="favorite_episodes_label">Ų¹ŁŲ§ŁŁ Ł
ŁŲÆŪ ŁŲ§</string> <string name="new_label">Ų¬ŲÆŪŲÆ</string> <string name="settings_label">ŲŖŁŲøŪŁ
Ų§ŲŖ</string> - <string name="downloads_label">ŲÆŲ§ŁŁŁŲÆŁŲ§</string> + <string name="downloads_label">ŲØŲ§Ų±ŚÆŪŲ±ŪāŁŲ§</string> <string name="downloads_running_label">ŲÆŲ± ŲŲ§Ł Ų§Ų¬Ų±Ų§</string> <string name="downloads_completed_label">ŲŖŚ©Ł
ŪŁ Ų“ŲÆŁ</string> <string name="downloads_log_label">log</string> @@ -18,10 +20,12 @@ <string name="cancel_download_label">ŲØŲ§Ų±ŚÆŪŲ±Ū n\ ŁŲŗŁ</string> <string name="playback_history_label">ŲŖŲ§Ų±ŪŲ®ŚŁ Ł¾Ų®Ų“</string> <string name="gpodnet_main_label">gpodder.net</string> + <string name="gpodnet_summary">ŁŁ
āŚÆŲ§Ł
āŲ³Ų§Ų²Ū ŲØŲ§ ŲÆŪŚÆŲ± ŲÆŲ³ŲŖŚÆŲ§ŁāŁŲ§</string> <string name="gpodnet_auth_label">gpodder.net Login</string> <string name="free_space_label">%1$s free </string> <string name="episode_cache_full_title">ŲøŲ±ŁŪŲŖ ŲŲ§ŁŲøŁ Ł¾ŁŁŲ§Ł ŲŖŚ©Ł
ŪŁ Ų“ŲÆŁ Ų§Ų³ŲŖ</string> <string name="episode_cache_full_message">ŲŲÆ Ł
Ų¬Ų§Ų² ŲŖŚ©Ł
ŪŁ Ų“ŲÆŁ Ų§Ų³ŲŖ . Ų“Ł
Ų§ Ł
Ū ŲŖŁŲ§ŁŪŲÆ Ų§ŁŲÆŲ§Ų²Ł ŲŲ§ŁŲøŁ Ł¾ŁŁŲ§Ł Ų±Ų§ ŲÆŲ± ŲŖŁŲøŪŁ
Ų§ŲŖ Ų§ŁŲ²Ų§ŪŲ“ ŲÆŁŪŲÆ.</string> + <string name="synchronizing">ŲÆŲ± ŲŲ§Ł ŁŁ
āŚÆŲ§Ł
āŲ³Ų§Ų²Ū</string> <!--Statistics fragment--> <string name="total_time_listened_to_podcasts">Ł
Ų¬Ł
ŁŲ¹ Ų²Ł
Ų§Ł Ł¾Ų®Ų“ Ł¾Ų§ŲÆŚ©Ų³ŲŖ ŁŲ§:</string> <string name="statistics_mode">ŲŲ§ŁŲŖ Ų¢Ł
Ų§Ų±</string> @@ -35,11 +39,11 @@ <string name="drawer_feed_order_unplayed_episodes">Ł
Ų±ŲŖŲØ Ų³Ų§Ų²Ū ŲØŲ± Ų§Ų³Ų§Ų³ Ų“Ł
Ų§Ų±ŁŲÆŁ</string> <string name="drawer_feed_order_alphabetical">Ł
Ų±ŲŖŲØ Ų³Ų§Ų²Ū ŲØŲ± Ų§Ų³Ų§Ų³ ŲŲ±ŁŁ Ų§ŁŁŲØŲ§</string> <string name="drawer_feed_order_last_update">Ł
Ų±ŲŖŲØ Ų³Ų§Ų²Ū ŲØŲ± Ų§Ų³Ų§Ų³ ŲŖŲ§Ų±ŪŲ® Ų§ŁŲŖŲ“Ų§Ų±</string> - <string name="drawer_feed_order_most_played">Ł
Ų±ŲŖŲØ Ų³Ų§Ų²Ū ŲØŲ± Ų§Ų³Ų§Ų³ ŲŖŲ¹ŲÆŲ§ŲÆ ŁŲ³Ł
ŲŖ Ł¾Ų®Ų“ Ų“ŲÆŁ</string> - <string name="drawer_feed_counter_new_unplayed">ŲŖŲ¹ŲÆŲ§ŲÆ ŁŲ³Ł
ŲŖ ŁŲ§Ū Ų¬ŲÆŪŲÆ Ł Ł¾Ų®Ų“ ŁŲ“ŲÆŁ</string> - <string name="drawer_feed_counter_new">ŲŖŲ¹ŲÆŲ§ŲÆ ŁŲ³Ł
ŲŖ ŁŲ§Ū Ų¬ŲÆŪŲÆ</string> - <string name="drawer_feed_counter_unplayed">ŲŖŲ¹ŲÆŲ§ŲÆ ŁŲ³Ł
ŲŖ ŁŲ§Ū Ł¾Ų®Ų“ ŁŲ“ŲÆŁ</string> - <string name="drawer_feed_counter_downloaded">ŲŖŲ¹ŲÆŲ§ŲÆ ŁŲ³Ł
ŲŖ ŁŲ§Ū ŲÆŲ§ŁŁŁŲÆ Ų“ŲÆŁ</string> + <string name="drawer_feed_order_most_played">Ł
Ų±ŲŖŲØāŲ³Ų§Ų²Ū ŲØŲ± Ų§Ų³Ų§Ų³ ŲŖŲ¹ŲÆŲ§ŲÆ ŁŲ³Ł
ŲŖ Ł¾Ų®Ų“ Ų“ŲÆŁ</string> + <string name="drawer_feed_counter_new_unplayed">ŲŖŲ¹ŲÆŲ§ŲÆ ŁŲ³Ł
ŲŖāŁŲ§Ū Ų¬ŲÆŪŲÆ Ł Ł¾Ų®Ų“ ŁŲ“ŲÆŁ</string> + <string name="drawer_feed_counter_new">ŲŖŲ¹ŲÆŲ§ŲÆ ŁŲ³Ł
ŲŖāŁŲ§Ū Ų¬ŲÆŪŲÆ</string> + <string name="drawer_feed_counter_unplayed">ŲŖŲ¹ŲÆŲ§ŲÆ ŁŲ³Ł
ŲŖāŁŲ§Ū Ł¾Ų®Ų“ ŁŲ“ŲÆŁ</string> + <string name="drawer_feed_counter_downloaded">ŲŖŲ¹ŲÆŲ§ŲÆ ŁŲ³Ł
ŲŖāŁŲ§Ū ŲØŲ§Ų±ŚÆŪŲ±Ū Ų“ŲÆŁ</string> <string name="drawer_feed_counter_none">ŁŪŚ ŪŚ©</string> <!--Webview actions--> <string name="open_in_browser_label">ŲØŲ§Ų² Ś©Ų±ŲÆŁ ŲÆŲ± Ł
Ų±ŁŲ± ŚÆŲ±</string> @@ -55,7 +59,7 @@ <string name="yes">ŲØŁŁ</string> <string name="no">Ų®ŪŲ±</string> <string name="reset">ŲØŲ§Ų²ŁŲ“Ų§ŁŪ</string> - <string name="author_label">ŁŁŪŲ³ŁŲÆŁ</string> + <string name="author_label">Ł
Ų¤ŁŁ(ŁŲ§)</string> <string name="language_label">Ų²ŲØŲ§Ł</string> <string name="url_label">URL</string> <string name="podcast_settings_label">ŲŖŁŲøŪŁ
Ų§ŲŖ</string> @@ -69,7 +73,7 @@ <string name="shownotes_label">Shownotes</string> <string name="description_label">Ų“Ų±Ų</string> <string name="most_recent_prefix">Ų¢Ų®Ų±ŪŁ ŁŲ³Ł
ŲŖ: \u0020</string> - <string name="episodes_suffix">\u0020ŁŲ³Ł
ŲŖ ŁŲ§</string> + <string name="episodes_suffix">\u0020ŁŲ³Ł
ŲŖ</string> <string name="length_prefix">Ų·ŁŁ:\u0020</string> <string name="size_prefix">ŲŲ¬Ł
:\u0020</string> <string name="processing_label">ŲÆŲ± ŲŲ§Ł Ł¾Ų±ŲÆŲ§Ų²Ų“</string> @@ -78,10 +82,10 @@ <string name="close_label">ŲØŲ³ŲŖŁ</string> <string name="retry_label">ŲŖŁŲ§Ų“ Ł
Ų¬ŲÆŲÆ</string> <string name="auto_download_label">Ų“Ų§Ł
Ł ŲÆŲ± ŲÆŲ±ŪŲ§ŁŲŖ Ų®ŁŲÆŚ©Ų§Ų± Ų§Ų³ŲŖ</string> - <string name="auto_download_apply_to_items_title">Ų§Ų¹Ł
Ų§Ł ŲØŁ ŁŲ³Ł
ŲŖ ŁŲ§Ū ŁŲØŁŪ</string> - <string name="auto_download_apply_to_items_message">ŲŖŁŲøŪŁ
Ų§ŲŖ Ų¬ŲÆŪŲÆ<i>ŲÆŲ§ŁŁŁŲÆ Ų®ŁŲÆŚ©Ų§Ų±</i> ŲØŁ Ų·ŁŲ± Ų§ŲŖŁŁ
Ų§ŲŖŪŚ© ŲØŁ ŁŲ³Ł
ŲŖ ŁŲ§Ū Ų¬ŲÆŪŲÆ Ų§Ų¹Ł
Ų§Ł Ų®ŁŲ§ŁŲÆ Ų“ŲÆ. \ n Ų¢ŪŲ§ Ų“Ł
Ų§ ŁŁ
ŚŁŪŁ Ł
Ū Ų®ŁŲ§ŁŪŲÆ Ų¢Ł Ų±Ų§ ŲØŁ ŁŲ³Ł
ŲŖ ŁŲ§ŪŪ Ś©Ł ŁŲØŁŲ§ Ł
ŁŲŖŲ“Ų± Ų“ŲÆŁ Ų§Ų¹Ł
Ų§Ł Ś©ŁŪŲÆŲ</string> - <string name="auto_delete_label">ŲŲ°Ł Ų®ŁŲÆŚ©Ų§Ų± ŁŲ³Ł
ŲŖ ŁŲ§ </string> - <string name="parallel_downloads_suffix">\u0020ŲÆŲ§ŁŁŁŲÆ ŁŁ
Ų²Ł
Ų§Ł</string> + <string name="auto_download_apply_to_items_title">Ų§Ų¹Ł
Ų§Ł ŲØŲ± ŁŲ³Ł
ŲŖāŁŲ§Ū ŁŲØŁŪ</string> + <string name="auto_download_apply_to_items_message">ŲŖŁŲøŪŁ
Ų§ŲŖ Ų¬ŲÆŪŲÆ<i>ŲØŲ§Ų±ŚÆŪŲ±Ū Ų®ŁŲÆŚ©Ų§Ų±</i> ŲØŁ Ų·ŁŲ± Ų®ŁŲÆŚ©Ų§Ų± ŲØŲ± ŁŲ³Ł
ŲŖāŁŲ§Ū Ų¬ŲÆŪŲÆ Ų§Ų¹Ł
Ų§Ł Ų®ŁŲ§ŁŲÆ Ų“ŲÆ.\n Ų¢ŪŲ§ Ł
ŪāŲ®ŁŲ§ŁŪŲÆ Ų¢Ł Ų±Ų§ ŲØŲ± ŁŲ³Ł
ŲŖāŁŲ§ŪŪ Ś©Ł ŁŲØŁŲ§ Ł
ŁŲŖŲ“Ų± Ų“ŲÆŁ ŁŪŲ² Ų§Ų¹Ł
Ų§Ł Ś©ŁŪŲÆŲ</string> + <string name="auto_delete_label">ŲŲ°Ł Ų®ŁŲÆŚ©Ų§Ų± ŁŲ³Ł
ŲŖ</string> + <string name="parallel_downloads_suffix">\u0020ŲØŲ§Ų±ŚÆŪŲ±Ū ŁŁ
āŲ²Ł
Ų§Ł</string> <string name="feed_auto_download_global">Ł¾ŪŲ“ ŁŲ±Ų¶ Ų¬ŁŲ§ŁŪ</string> <string name="feed_auto_download_always">ŁŁ
ŪŲ“Ł</string> <string name="feed_auto_download_never">Never</string> @@ -90,6 +94,7 @@ <string name="episode_cleanup_queue_removal">ŁŁŲŖŪ Ś©Ł ŲÆŲ± ŲµŁ ŁŪŲ³ŲŖ</string> <string name="episode_cleanup_after_listening">ŲØŲ¹ŲÆ Ų§Ų² ŲŖŁ
Ų§Ł
Ų“ŲÆŁ</string> <plurals name="episode_cleanup_days_after_listening"> + <item quantity="one">%dŲ±ŁŲ² ŲØŲ¹ŲÆ Ų§Ų² Ų§ŲŖŁ
Ų§Ł
</item> <item quantity="other">%dŲ±ŁŲ² ŲØŲ¹ŲÆ Ų§Ų² Ų§ŲŖŁ
Ų§Ł
</item> </plurals> <!--'Add Feed' Activity labels--> @@ -101,46 +106,45 @@ <string name="browse_gpoddernet_label">Browse gpodder.net</string> <!--Actions on feeds--> <string name="mark_all_read_label">Ų¹ŁŲ§Ł
ŲŖ ŚÆŲ°Ų§Ų±Ū ŁŁ
Ł ŲØŁ Ų¹ŁŁŲ§Ł Ł¾Ų®Ų“ Ų“ŲÆŁ</string> - <string name="mark_all_read_msg">ŁŁ
Ł ŁŲ³Ł
ŲŖ ŁŲ§ ŲØŁ Ų¹ŁŁŲ§Ł Ł¾Ų®Ų“ Ų“ŲÆŁ Ų¹ŁŲ§Ł
ŲŖ ŚÆŲ°Ų§Ų±Ū Ų“ŲÆ.</string> - <string name="mark_all_read_confirmation_msg">ŁŲ·ŁŲ§ ŲŖŲ£ŪŪŲÆ Ś©ŁŪŲÆ Ś©Ł Ł
ŪŲ®ŁŲ§ŁŪŲÆ ŲŖŁ
Ų§Ł
ŁŲ³Ł
ŲŖŁŲ§ Ų±Ų§ ŲØŲ¹ŁŁŲ§Ł Ł¾Ų®Ų“ Ų“ŲÆŁ Ų¹ŁŲ§Ł
ŲŖ ŲØŲ²ŁŪŲÆ.</string> - <string name="mark_all_read_feed_confirmation_msg">ŁŲ·ŁŲ§ ŲŖŲ£ŪŪŲÆ Ś©ŁŪŲÆ Ś©Ł Ł
ŪŲ®ŁŲ§ŁŪŲÆ ŲŖŁ
Ų§Ł
ŁŲ³Ł
ŲŖŁŲ§Ū Ų§ŪŁ Ų®ŁŲ±Ų§Ś© Ų±Ų§ ŲØŲ¹ŁŁŲ§Ł Ł¾Ų®Ų“ Ų“ŲÆŁ Ų¹ŁŲ§Ł
ŲŖ ŲØŲ²ŁŪŲÆ.</string> + <string name="mark_all_read_msg">ŁŁ
Ł ŁŲ³Ł
ŲŖāŁŲ§ ŲØŁ Ų¹ŁŁŲ§Ł Ł¾Ų®Ų“ Ų“ŲÆŁ Ų¹ŁŲ§Ł
ŲŖāŚÆŲ°Ų§Ų±Ū Ų“ŲÆ</string> + <string name="mark_all_read_confirmation_msg">ŁŲ·ŁŲ§ ŲŖŲ£ŪŪŲÆ Ś©ŁŪŲÆ Ś©Ł Ł
ŪāŲ®ŁŲ§ŁŪŲÆ ŲŖŁ
Ų§Ł
ŁŲ³Ł
ŲŖāŁŲ§ Ų±Ų§ ŲØŁ Ų¹ŁŁŲ§Ł Ł¾Ų®Ų“ Ų“ŲÆŁ Ų¹ŁŲ§Ł
ŲŖ ŲØŲ²ŁŪŲÆ.</string> <string name="mark_all_seen_label">Ų¹ŁŲ§Ł
ŲŖ ŚÆŲ°Ų§Ų±Ū ŁŁ
Ł ŲØŁ Ų¹ŁŁŲ§Ł ŲÆŪŲÆŁ Ų“ŲÆŁ</string> - <string name="mark_all_seen_msg">ŁŁ
Ł ŁŲ³Ł
ŲŖ ŁŲ§ ŲØŲ¹ŁŁŲ§Ł ŲÆŪŲÆŁ Ų“ŲÆŁ Ų¹ŁŲ§Ł
ŲŖ ŚÆŲ°Ų§Ų±Ū Ų“ŲÆ.</string> - <string name="mark_all_seen_confirmation_msg">ŁŲ·ŁŲ§ ŲŖŲ£ŪŪŲÆ Ś©ŁŪŲÆ Ś©Ł Ł
ŪŲ®ŁŲ§ŁŪŲÆ ŲŖŁ
Ų§Ł
ŁŲ³Ł
ŲŖŁŲ§ Ų±Ų§ ŲØŲ¹ŁŁŲ§Ł ŲÆŪŲÆŁ Ų“ŲÆŁ Ų¹ŁŲ§Ł
ŲŖ ŲØŲ²ŁŪŲÆ.</string> + <string name="mark_all_seen_confirmation_msg">ŁŲ·ŁŲ§ ŲŖŲ£ŪŪŲÆ Ś©ŁŪŲÆ Ś©Ł Ł
ŪāŲ®ŁŲ§ŁŪŲÆ ŲŖŁ
Ų§Ł
ŁŲ³Ł
ŲŖāŁŲ§ Ų±Ų§ ŲØŁ Ų¹ŁŁŲ§Ł ŲÆŪŲÆŁ Ų“ŲÆŁ Ų¹ŁŲ§Ł
ŲŖ ŲØŲ²ŁŪŲÆ.</string> <string name="show_info_label">ŁŁ
Ų§ŪŲ“ Ų§Ų·ŁŲ§Ų¹Ų§ŲŖ</string> - <string name="rename_feed_label">Ā ŲŖŲŗŪŪŲ± ŁŲ§Ł
Ł¾Ų§ŲÆŚ©Ų³ŲŖ</string> - <string name="remove_feed_label">ŲŲ°Ł Ł¾Ų§ŲÆŚ©Ų³ŲŖ</string> + <string name="show_feed_settings_label">ŁŁ
Ų§ŪŲ“ ŲŖŁŲøŪŁ
Ų§ŲŖ Ł¾Ų§ŲÆŚ©Ų³ŲŖ</string> + <string name="feed_info_label">Ų§Ų·ŁŲ§Ų¹Ų§ŲŖ Ł¾Ų§ŲÆŚ©Ų³ŲŖ</string> + <string name="feed_settings_label">ŲŖŁŲøŪŁ
Ų§ŲŖ Ł¾Ų§ŲÆŚ©Ų³ŲŖ</string> + <string name="rename_feed_label">ŲŖŲŗŪŪŲ± ŁŲ§Ł
Ł¾Ų§ŲÆŚ©Ų³ŲŖ</string> + <string name="remove_feed_label">Ł¾Ų§Ś©āŚ©Ų±ŲÆŁ Ł¾Ų§ŲÆŚ©Ų³ŲŖ</string> <string name="share_label">Ų§Ų“ŲŖŲ±Ų§Ś© ŚÆŲ°Ų§Ų±Ū...</string> - <string name="share_link_label">Ų§Ų“ŲŖŲ±Ų§Ś© ŚÆŲ°Ų§Ų±Ū ŁŪŁŚ©</string> + <string name="share_link_label">ŁŁ
āŲ±Ų³Ų§ŁŪ ŁŲ“Ų§ŁŪ Ł¾Ų§ŲÆŚ©Ų³ŲŖ</string> <string name="share_file_label">Ų§Ų“ŲŖŲ±Ų§Ś© ŚÆŲ°Ų§Ų±Ū ŁŲ§ŪŁ</string> - <string name="share_link_with_position_label">Ų§Ų“ŲŖŲ±Ų§Ś© ŚÆŲ°Ų§Ų±Ū ŁŪŁŚ© ŲØŲ§ Ł
ŁŁŲ¹ŪŲŖ Ł¾Ų®Ų“</string> <string name="share_feed_url_label">Ų§Ų“ŲŖŲ±Ų§Ś© ŚÆŲ°Ų§Ų±Ū URL Ų®ŁŲ±Ų§Ś© </string> - <string name="share_item_url_label">Ų§Ų“ŲŖŲ±Ų§Ś© ŚÆŲ°Ų§Ų±Ū ŁŲ§ŪŁ URL ŁŲ³Ł
ŲŖ</string> - <string name="share_item_url_with_position_label">Ų§Ų“ŲŖŲ±Ų§Ś© ŚÆŲ°Ų§Ų±Ū ŁŲ§ŪŁ URL ŁŲ³Ł
ŲŖ ŲØŲ§ Ł
ŁŁŲ¹ŪŲŖ Ł¾Ų®Ų“</string> - <string name="feed_delete_confirmation_msg">ŁŲ·ŁŲ§ ŲŖŲ£ŪŪŲÆ Ś©ŁŪŲÆ Ś©Ł Ł
ŪŲ®ŁŲ§ŁŪŲÆ Ų®ŁŲ±Ų§Ś© \"%1$s\" Ł ŲŖŁ
Ų§Ł
ŁŲ³Ł
ŲŖŁŲ§Ū Ų¢Ł Ś©Ł ŲÆŲ§ŁŁŁŲÆ Ś©Ų±ŲÆŁ Ų§ŪŲÆ Ų±Ų§ ŲŲ°Ł Ś©ŁŪŲÆ.</string> - <string name="feed_remover_msg">ŲŲ°Ł Ų®ŁŲ±Ų§Ś©</string> - <string name="load_complete_feed">ŲŖŲ§Ų²Ł Ś©Ų±ŲÆŁ Ś©Ų§Ł
Ł Ų®ŁŲ±Ų§Ś©</string> - <string name="hide_episodes_title">Ł¾ŁŁŲ§Ł Ś©Ų±ŲÆŁ ŁŲ³Ł
ŲŖ ŁŲ§</string> - <string name="episode_actions">ŲÆŲ±Ų®ŁŲ§Ų³ŲŖ Ų§Ų¹Ł
Ų§Ł</string> + <string name="share_item_url_label">ŁŁ
āŲ±Ų³Ų§ŁŪ ŁŲ“Ų§ŁŪ Ł¾Ų±ŁŁŲÆŁ Ų±Ų³Ų§ŁŁ</string> + <string name="feed_remover_msg">ŲÆŲ± ŲŲ§Ł Ł¾Ų§Ś©āŚ©Ų±ŲÆŁ Ł¾Ų§ŲÆŚ©Ų³ŲŖ</string> + <string name="load_complete_feed">ŲŖŲ§Ų²ŁāŲ³Ų§Ų²Ū ŲŖŁ
Ų§Ł
Ł¾Ų§ŲÆŚ©Ų³ŲŖ</string> + <string name="hide_episodes_title">Ł¾ŁŁŲ§Ł Ś©Ų±ŲÆŁ ŁŲ³Ł
ŲŖāŁŲ§</string> + <string name="batch_edit">ŁŪŲ±Ų§ŪŲ“ ŚÆŲ±ŁŁŪ</string> <string name="hide_unplayed_episodes_label">Ł¾Ų®Ų“ ŁŲ“ŲÆŁ</string> <string name="hide_paused_episodes_label">Ł
ŲŖŁŁŁ Ų“ŲÆ</string> <string name="hide_played_episodes_label">Ł¾Ų®Ų“ Ų“ŲÆ</string> <string name="hide_queued_episodes_label">ŲÆŲ± ŲµŁ</string> <string name="hide_not_queued_episodes_label">Ų®Ų§Ų±Ų¬ Ų§Ų² ŲµŁ</string> - <string name="hide_downloaded_episodes_label">ŲÆŲ§ŁŁŁŲÆ Ų“ŲÆŁ</string> - <string name="hide_not_downloaded_episodes_label">ŲÆŲ§ŁŁŁŲÆ ŁŲ“ŲÆŁ</string> + <string name="hide_downloaded_episodes_label">ŲØŲ§Ų±ŚÆŪŲ±Ū Ų“ŲÆŁ</string> + <string name="hide_not_downloaded_episodes_label">ŲØŲ§Ų±ŚÆŪŲ±Ū ŁŲ“ŲÆŁ</string> <string name="hide_has_media_label">ŲÆŲ§Ų±Ų§Ū Ų±Ų³Ų§ŁŁ</string> <string name="filtered_label">ŁŪŁŲŖŲ± Ų“ŲÆŁ</string> <string name="open_podcast">ŲØŲ§Ų² Ś©Ų±ŲÆŁ Ł¾Ų§ŲÆŚ©Ų³ŲŖ</string> <!--actions on feeditems--> - <string name="download_label">ŲÆŲ§ŁŁŁŲÆ</string> + <string name="download_label">ŲØŲ§Ų±ŚÆŪŲ±Ū</string> <string name="play_label">Ł¾Ų®Ų“</string> <string name="pause_label">Ł
Ś©Ų«</string> <string name="stop_label">ŲŖŁŁŁ</string> + <string name="stream_label">Ų¬Ų±ŪŲ§Ł</string> <string name="remove_label">ŲŲ°Ł</string> <string name="delete_label">ŲŲ°Ł</string> <string name="delete_failed">ŁŲ§ŪŁ ŲŲ°Ł ŁŲ“ŲÆ.! Ų±Ų§Ł Ų§ŁŲÆŲ§Ų²Ū Ł
Ų¬ŲÆŲÆ ŲÆŲ³ŲŖŚÆŲ§Ł Ł
Ū ŲŖŁŲ§ŁŲÆ Ś©Ł
Ś© Ś©ŁŲÆ.</string> - <string name="remove_episode_lable">ŲŲ°Ł ŁŲ³Ł
ŲŖ</string> + <string name="remove_episode_lable">Ł¾Ų§Ś© Ś©Ų±ŲÆŁ ŁŲ³Ł
ŲŖ</string> <string name="marked_as_seen_label">Ų¹ŁŲ§Ł
ŲŖ ŚÆŲ°Ų§Ų±Ū ŲØŁ Ų¹ŁŁŲ§Ł ŲÆŪŲÆŁ Ų“ŲÆŁ</string> <string name="mark_read_label">Ų¹ŁŲ§Ł
ŲŖ ŚÆŲ°Ų§Ų±Ū ŲØŁ Ų¹ŁŁŲ§Ł Ł¾Ų®Ų“ Ų“ŲÆŁ</string> <string name="marked_as_read_label">ŲØŲ¹ŁŁŲ§Ł Ł¾Ų®Ų“ Ų“ŲÆŁ Ų¹ŁŲ§Ł
ŲŖ ŚÆŲ°Ų§Ų±Ū Ų“ŲÆ</string> @@ -152,16 +156,19 @@ <string name="added_to_favorites">ŲØŁ Ł
ŁŲ§Ų±ŲÆ ŲÆŁŲ®ŁŲ§Ł Ų§Ų¶Ų§ŁŁ Ų“ŲÆ.</string> <string name="remove_from_favorite_label">Ų§Ų² Ų¹ŁŲ§ŁŁ Ł
ŁŲÆŪ ŁŲ§ ŲŲ°Ł Ų“ŁŲÆ</string> <string name="removed_from_favorites">Ų§Ų² Ł
ŁŲ§Ų±ŲÆ ŲÆŁŲ®ŁŲ§Ł ŲŲ°Ł Ų“ŲÆ.</string> + <string name="visit_website_label">Ł
Ų“Ų§ŁŲÆŁ ŁŲØāŲ³Ų§ŪŲŖ</string> <string name="skip_episode_label">Ų±ŲÆ Ų“ŲÆŁ Ų§Ų² ŁŲ³Ł
ŲŖ</string> - <string name="activate_auto_download">ŁŲ¹Ų§Ł Ś©Ų±ŲÆŁ ŲÆŲ§ŁŁŁŲÆ Ų®ŁŲÆŚ©Ų§Ų±</string> - <string name="deactivate_auto_download">ŲŗŪŲ± ŁŲ¹Ų§Ł Ś©Ų±ŲÆŁ ŲÆŲ§ŁŁŁŲÆ Ų®ŁŲÆŚ©Ų§Ų±</string> + <string name="activate_auto_download">ŁŲ¹Ų§Ł Ś©Ų±ŲÆŁ ŲØŲ§Ų±ŚÆŪŲ±Ū Ų®ŁŲÆŚ©Ų§Ų±</string> + <string name="deactivate_auto_download">ŲŗŪŲ± ŁŲ¹Ų§Ł Ś©Ų±ŲÆŁ ŲØŲ§Ų±ŚÆŪŲ±Ū Ų®ŁŲÆŚ©Ų§Ų±</string> <string name="reset_position">ŲŖŁŲøŪŁ
Ł
Ų¬ŲÆŲÆ Ł
ŁŁŲ¹ŪŲŖ Ł¾Ų®Ų“</string> <string name="removed_item">Ł
ŁŲ±ŲÆ ŲŲ°Ł Ų“ŲÆŁ Ų§Ų³ŲŖ</string> <!--Download messages and labels--> <string name="download_successful">Ł
ŁŁŁŪŲŖ Ų¢Ł
ŪŲ²</string> <string name="download_failed">ŁŲ§Ł
ŁŁŁ</string> - <string name="download_pending">ŲÆŲ§ŁŁŁŲÆ ŲÆŲ± ŲŲ§Ł Ų§ŁŲŖŲøŲ§Ų±</string> - <string name="download_running">ŲÆŲ§ŁŁŁŲÆ ŲÆŲ± ŲŲ§Ł Ų§Ų¬Ų±Ų§</string> + <string name="download_pending">ŲØŲ§Ų±ŚÆŪŲ±Ū Ł
Ų¹ŁŁ</string> + <string name="download_running">ŲØŲ§Ų±ŚÆŪŲ±Ū ŲÆŲ± ŲŲ§Ł Ų§Ų¬Ų±Ų§</string> + <string name="download_error_details">Ų¬Ų²Ų¦ŪŲ§ŲŖ</string> + <string name="download_error_details_message">%1$s\n\nŁŲ“Ų§ŁŪ Ł¾Ų±ŁŁŲÆŁ:\n%2$s</string> <string name="download_error_device_not_found">ŲŲ§ŁŲøŁ Ų®Ų§Ų±Ų¬Ū ŪŲ§ŁŲŖ ŁŲ“ŲÆ.</string> <string name="download_error_insufficient_space">ŁŲ¶Ų§Ū ŁŲ§Ś©Ų§ŁŪ</string> <string name="download_error_file_error">Ų®Ų·Ų§Ū ŁŲ§ŪŁ</string> @@ -171,24 +178,121 @@ <string name="download_error_connection_error">Ų®Ų·Ų§Ū Ų§ŲŖŲµŲ§Ł</string> <string name="download_error_unknown_host">Ł
ŪŲ²ŲØŲ§Ł ŁŲ§Ų“ŁŲ§Ų³</string> <string name="download_error_unauthorized">Ų®Ų·Ų§Ū Ų§ŲŲ±Ų§Ų² ŁŁŪŲŖ</string> - <string name="cancel_all_downloads_label">ŁŲŗŁ ŁŁ
Ł ŲÆŲ§ŁŁŁŲÆŁŲ§</string> - <string name="download_canceled_msg">ŲÆŲ§ŁŁŁŲÆ ŁŲŗŁ Ų“ŲÆ.</string> + <string name="download_error_file_type_type">Ų®Ų·Ų§Ū ŁŁŲ¹ Ł¾Ų±ŁŁŲÆŁ</string> + <string name="download_error_forbidden">Ł
Ł
ŁŁŲ¹</string> + <string name="cancel_all_downloads_label">ŁŲŗŁ ŁŁ
Ł ŲØŲ§Ų±ŚÆŪŲ±ŪāŁŲ§</string> + <string name="download_canceled_msg">ŲØŲ§Ų±ŚÆŪŲ±Ū ŁŲŗŁ Ų“ŲÆ.</string> <string name="download_canceled_autodownload_enabled_msg">Ā ŲÆŲ§ŁŁŁŲÆ ŁŲŗŁ \n ŲŗŪŲ±ŁŲ¹Ų§Ł Ś©Ų±ŲÆŁ <i> ŲÆŲ§ŁŁŁŲÆ Ų®ŁŲÆŚ©Ų§Ų± </i> ŲØŲ±Ų§Ū Ų§ŪŁ Ł
ŁŲ±ŲÆ </string> + <string name="download_report_title">ŲØŲ§Ų±ŚÆŪŲ±ŪāŁŲ§ ŲØŲ§ Ų®Ų·Ų§(ŁŲ§) Ś©Ų§Ł
Ł Ų“ŲÆ</string> + <string name="download_report_content_title">ŚÆŲ²Ų§Ų±Ų“ ŲØŲ§Ų±ŚÆŪŲ±Ū</string> + <string name="download_error_io_error">Ų®Ų·Ų§Ū ŁŲ±ŁŲÆŪ/Ų®Ų±ŁŲ¬Ū</string> + <string name="download_error_request_error">Ų®Ų·Ų§Ū ŲÆŲ±Ų®ŁŲ§Ų³ŲŖ</string> + <string name="download_error_db_access">Ų®Ų·Ų§Ū ŲÆŲ³ŲŖŲ±Ų³Ū ŲØŁ Ł¾Ų§ŪŚÆŲ§ŁāŲÆŲ§ŲÆŁ</string> + <string name="downloads_processing">Ł¾Ų±ŲÆŲ§Ų²Ų“ ŲØŲ§Ų±ŚÆŪŲ±ŪāŁŲ§</string> + <string name="download_notification_title">ŲØŲ§Ų±ŚÆŪŲ±Ū ŲÆŲ§ŲÆŁ Ł¾Ų§ŲÆŚ©Ų³ŲŖ</string> + <string name="download_log_title_unknown">Ų¹ŁŁŲ§Ł ŁŲ§Ų“ŁŲ§Ų®ŲŖŁ</string> <string name="download_type_feed">Ų®ŁŲ±Ų§Ś©</string> + <string name="download_type_media">Ł¾Ų±ŁŁŲÆŁ Ų±Ų³Ų§ŁŁ</string> + <string name="download_type_image">ŲŖŲµŁŪŲ±</string> + <string name="confirm_mobile_download_dialog_enable_temporarily">Ų§Ų¬Ų§Ų²Ł Ł
ŁŁŲŖ</string> <!--Mediaplayer messages--> + <string name="player_error_msg">Ų®Ų·Ų§!</string> + <string name="player_stopped_msg">Ų±Ų³Ų§ŁŁāŲ§Ū ŲÆŲ± ŲŲ§Ł Ł¾Ų®Ų“ ŁŪŲ³ŲŖ</string> + <string name="player_preparing_msg">Ų¢Ł
Ų§ŲÆŁāŲ³Ų§Ų²Ū</string> + <string name="player_ready_msg">Ų¢Ł
Ų§ŲÆŁ</string> + <string name="playback_error_unknown">Ų®Ų·Ų§Ū ŁŲ§Ų“ŁŲ§Ų®ŲŖŁ</string> + <string name="no_media_playing_label">Ų±Ų³Ų§ŁŁāŲ§Ū ŲÆŲ± ŲŲ§Ł Ł¾Ų®Ų“ ŁŪŲ³ŲŖ</string> + <string name="player_go_to_picture_in_picture">ŲŲ§ŁŲŖ ŲŖŲµŁŪŲ± ŲÆŲ± ŲŖŲµŁŪŲ±</string> + <string name="playbackservice_notification_title">ŲÆŲ± ŲŲ§Ł Ł¾Ų®Ų“ Ł¾Ų§ŲÆŚ©Ų³ŲŖ</string> <!--Queue operations--> + <string name="clear_queue_label">Ł¾Ų§Ś©āŚ©Ų±ŲÆŁ ŲµŁ</string> + <string name="sort">Ł
Ų±ŲŖŲØāŲ³Ų§Ų²Ū</string> + <string name="date">ŲŖŲ§Ų±ŪŲ®</string> + <string name="duration">Ł
ŲÆŲŖ</string> + <string name="episode_title">Ų¹ŁŁŲ§Ł ŁŲ³Ł
ŲŖ</string> + <string name="feed_title">Ų¹ŁŁŲ§Ł Ł¾Ų§ŲÆŚ©Ų³ŲŖ</string> + <string name="random">ŲŖŲµŲ§ŲÆŁŪ</string> <!--Flattr--> + <string name="return_home_label">ŲØŲ§Ų²ŚÆŲ“ŲŖ ŲØŁ Ų®Ų§ŁŁ</string> <!--Flattr--> <!--Variable Speed--> <!--Empty list labels--> <!--Preferences--> + <string name="storage_pref">ŲŲ§ŁŲøŁ</string> + <string name="project_pref">Ł¾Ų±ŁŚŁ</string> + <string name="other_pref">ŲÆŪŚÆŲ±</string> + <string name="about_pref">ŲÆŲ±ŲØŲ§Ų±Ł</string> + <string name="queue_label">ŲµŁ</string> + <string name="download_pref_details">Ų¬Ų²Ų¦ŪŲ§ŲŖ</string> + <string name="import_export_pref">ŁŲ§Ų±ŲÆ/ŲµŲ§ŲÆŲ± Ś©Ų±ŲÆ</string> + <string name="appearance">ŁŁ
Ų§ŪŲ“</string> + <string name="external_elements">Ų¹ŁŲ§ŲµŲ± Ų®Ų§Ų±Ų¬Ū</string> + <string name="buttons">ŲÆŚ©Ł
ŁāŁŲ§Ū Ś©ŁŲŖŲ±Ł Ł¾Ų®Ų“</string> + <string name="media_player">Ł¾Ų®Ų“āŚ©ŁŁŲÆŁ Ų±Ų³Ų§ŁŁ</string> + <string name="pref_auto_delete_title">ŲŲ°Ł Ų®ŁŲÆŚ©Ų§Ų±</string> + <string name="playback_pref">Ł¾Ų®Ų“</string> + <string name="network_pref">Ų“ŲØŚ©Ł</string> + <string name="user_interface_label">Ų±Ų§ŲØŲ· Ś©Ų§Ų±ŲØŲ±Ū</string> + <string name="pref_set_theme_title">Ų§ŁŲŖŲ®Ų§ŲØ Ł¾ŁŲ³ŲŖŁ</string> + <string name="pref_theme_title_light">Ų±ŁŲ“Ł</string> + <string name="pref_theme_title_dark">ŲŖŲ§Ų±ŪŚ©</string> + <string name="pref_theme_title_trueblack">Ų³ŪŲ§Ł (Ł
ŁŲ§Ų³ŲØ AMOLED)</string> + <string name="pref_episode_cache_unlimited">ŁŲ§Ł
ŲŲÆŁŲÆ</string> + <string name="pref_update_interval_hours_plural">Ų³Ų§Ų¹ŲŖ</string> + <string name="pref_update_interval_hours_singular">Ų³Ų§Ų¹ŲŖ</string> + <string name="pref_update_interval_hours_manual">ŲÆŲ³ŲŖŪ</string> + <string name="pref_gpodnet_authenticate_title">ŁŲ±ŁŲÆ</string> + <string name="pref_gpodnet_logout_title">Ų®Ų±ŁŲ¬</string> + <string name="pref_gpodnet_logout_toast">Ų®Ų±ŁŲ¬ Ł
ŁŁŁŪŲŖāŲ¢Ł
ŪŲ² ŲØŁŲÆ</string> + <string name="pref_gpodnet_setlogin_information_title">ŲŖŲŗŪŪŲ± Ų§Ų·ŁŲ§Ų¹Ų§ŲŖ ŁŲ±ŁŲÆ</string> + <string name="pref_playback_speed_title">Ų³Ų±Ų¹ŲŖāŁŲ§Ū Ł¾Ų®Ų“</string> + <string name="pref_lockscreen_background_title">ŲŖŁŲøŪŁ
Ł¾Ų³āŲ²Ł
ŪŁŁ ŲµŁŲŁ ŁŁŁ</string> + <string name="pref_queueAddToFront_title">ŁŲ±Ų³ŲŖŲ§ŲÆŁ ŲØŁ Ų¬ŁŁŪ ŲµŁ</string> + <string name="pref_smart_mark_as_played_disabled">ŲŗŪŲ±ŁŲ¹Ų§Ł</string> + <string name="crash_report_title">ŚÆŲ²Ų§Ų±Ų“ Ł
Ų“Ś©Ł</string> + <string name="crash_report_sum">ŁŲ±Ų³ŲŖŲ§ŲÆŁ ŚÆŲ²Ų§Ų±Ų“ Ų¢Ų®Ų±ŪŁ Ł
Ų“Ś©Ł ŲØŲ§ Ų±Ų§ŪŲ§ŁŲ§Ł
Ł</string> + <string name="send_email">ŁŲ±Ų³ŲŖŲ§ŲÆŁ Ų±Ų§ŪŲ§ŁŲ§Ł
Ł</string> + <string name="experimental_pref">Ų¢Ų²Ł
Ų§ŪŲ“Ū</string> + <string name="pref_proxy_title">Ł¾Ų±ŁŚ©Ų³Ū</string> + <string name="pref_proxy_sum">ŲŖŁŲøŪŁ
Ł¾Ų±ŁŚ©Ų³Ū Ų“ŲØŚ©Ł</string> + <string name="pref_faq">Ų³ŁŲ§ŁŲ§ŲŖ Ł¾Ų±ŲŖŚ©Ų±Ų§Ų±</string> + <string name="pref_known_issues">Ł
Ų“Ś©ŁŲ§ŲŖ Ų“ŁŲ§Ų®ŲŖŁ Ų“ŲÆŁ</string> + <string name="pref_no_browser_found">Ł
Ų±ŁŲ±ŚÆŲ± ŁŲØ Ł¾ŪŲÆŲ§ ŁŲ“ŲÆ.</string> + <string name="pref_cast_title">Ł¾Ų“ŲŖŪŲØŲ§ŁŪ Ų§Ų² Ś©Ų±ŁŁ
āŚ©Ų³ŲŖ</string> + <string name="pref_enqueue_downloaded_title">ŲÆŲ± ŲµŁ ŁŁŲ§ŲÆŁ ŲØŲ§Ų±ŚÆŪŲ±ŪāŲ“ŲÆŁāŁŲ§</string> + <string name="media_player_builtin">Ł¾Ų®Ų“āŚ©ŁŁŲÆŁ Ł¾ŪŲ“āŁŲ±Ų¶ Ų§ŁŲÆŲ±ŁŪŲÆ</string> + <string name="stop_playback">ŲŖŁŁŁ Ł¾Ų®Ų“</string> + <string name="continue_playback">Ų§ŲÆŲ§Ł
Ł Ł¾Ų®Ų“ ŲµŲÆŲ§</string> <!--Auto-Flattr dialog--> <!--Search--> + <string name="search_hint">Ų¬Ų³ŲŖŲ¬Ł ŲØŲ±Ų§Ū ŁŲ³Ł
ŲŖāŁŲ§</string> + <string name="search_status_no_results">ŁŲŖŪŲ¬ŁāŲ§Ū ŪŲ§ŁŲŖ ŁŲ“ŲÆ</string> + <string name="search_label">Ų¬Ų³ŲŖŲ¬Ł</string> <!--OPML import and export--> + <string name="opml_directory_error">Ų®Ų·Ų§!</string> + <string name="select_all_label">Ų§ŁŲŖŲ®Ų§ŲØ ŁŁ
Ł</string> + <string name="deselect_all_label">Ų§ŁŲŖŲ®Ų§ŲØ ŁŪŚ</string> + <string name="select_options_label">Ų§ŁŲŖŲ®Ų§ŲØ...</string> <!--Sleep timer--> + <string name="time_seconds">Ų«Ų§ŁŪŁ</string> + <string name="time_minutes">ŲÆŁŪŁŁ</string> + <string name="time_hours">Ų³Ų§Ų¹ŲŖ</string> <!--gpodder.net--> + <string name="gpodnetsync_pref_report_successful">Ł
ŁŁŁ</string> + <string name="gpodnetsync_pref_report_failed">ŁŲ§Ł
ŁŁŁ</string> <!--Directory chooser--> + <string name="selected_folder_label">Ł¾ŁŲ“Ł Ų§ŁŲŖŲ®Ų§ŲØ Ų“ŲÆŁ:</string> + <string name="create_folder_label">Ų³Ų§Ų®ŲŖ Ł¾ŁŲ“Ł</string> + <string name="choose_data_directory">Ų§ŁŲŖŲ®Ų§ŲØ Ł¾ŁŲ“Ł ŲÆŲ§ŲÆŁ</string> + <string name="create_folder_success">Ų³Ų§Ų®ŲŖ Ł¾ŁŲ“Ł Ų¬ŲÆŪŲÆ</string> + <string name="create_folder_error_already_exists">Ų§ŪŁ Ł¾ŁŲ“Ł Ų§Ų² ŁŲØŁ Ł
ŁŲ¬ŁŲÆ Ų§Ų³ŲŖ</string> + <string name="create_folder_error">ŁŲ§ŲŖŁŲ§ŁŪ ŲÆŲ± Ų³Ų§Ų®ŲŖ Ł¾ŁŲ“Ł</string> + <string name="folder_not_empty_dialog_title">Ų§ŪŁ Ł¾ŁŲ“ŁŲ Ų®Ų§ŁŪ ŁŪŲ³ŲŖ</string> + <string name="set_to_default_folder">Ų§ŁŲŖŲ®Ų§ŲØ Ł¾ŁŲ“Ł Ł¾ŪŲ“āŁŲ±Ų¶</string> <!--Online feed view--> + <string name="subscribe_label">Ų§Ų“ŲŖŲ±Ų§Ś©</string> + <string name="subscribed_label">Ł
Ų“ŲŖŲ±Ś©āŲ“ŲÆŁ</string> + <string name="downloading_label">ŲÆŲ±ŲŲ§Ł ŲØŲ§Ų±ŚÆŪŲ±Ū...</string> <!--Content descriptions for image buttons--> <!--Feed information screen--> <!--Progress information--> @@ -201,4 +305,5 @@ <!--Database import/export--> <!--Casting--> <!--<string name="cast_failed_to_connect">Could not connect to the device</string>--> + <!--Notification channels--> </resources> diff --git a/core/src/main/res/values-fi/strings.xml b/core/src/main/res/values-fi/strings.xml index acf3abe75..2d9481b84 100644 --- a/core/src/main/res/values-fi/strings.xml +++ b/core/src/main/res/values-fi/strings.xml @@ -36,4 +36,5 @@ <!--Database import/export--> <!--Casting--> <!--<string name="cast_failed_to_connect">Could not connect to the device</string>--> + <!--Notification channels--> </resources> diff --git a/core/src/main/res/values-fr/strings.xml b/core/src/main/res/values-fr/strings.xml index dc4e356bf..11c41d415 100644 --- a/core/src/main/res/values-fr/strings.xml +++ b/core/src/main/res/values-fr/strings.xml @@ -1,11 +1,13 @@ <?xml version='1.0' encoding='UTF-8'?> <resources xmlns:tools="http://schemas.android.com/tools"> <!--Activitiy and fragment titles--> + <string name="feed_update_receiver_name">Mettre Ć jour les abonnements</string> <string name="feeds_label">Flux</string> <string name="statistics_label">Statistiques</string> <string name="add_feed_label">Ajouter un podcast</string> - <string name="episodes_label">Ćpisodes</string> + <string name="episodes_label">Episodes</string> <string name="all_episodes_short_label">Tout</string> + <string name="new_episodes_label">Nouveaux</string> <string name="favorite_episodes_label">Favoris</string> <string name="new_label">Nouveau</string> <string name="settings_label">PrĆ©fĆ©rences</string> @@ -18,10 +20,12 @@ <string name="cancel_download_label">Annuler les tĆ©lĆ©chargements</string> <string name="playback_history_label">Journal de lecture</string> <string name="gpodnet_main_label">gpodder.net</string> + <string name="gpodnet_summary">Synchroniser avec d\'autres appareils</string> <string name="gpodnet_auth_label">Identifiants gpodder.net</string> <string name="free_space_label">%1$s d\'espace libre</string> <string name="episode_cache_full_title">L\'emplacement pour stocker les Ć©pisodes est plein</string> <string name="episode_cache_full_message">Le nombre maximal d\'Ć©pisodes tĆ©lĆ©chargĆ©s a Ć©tĆ© atteint. Vous pouvez changer ce nombre dans les paramĆØtres.</string> + <string name="synchronizing">Synchronisation...</string> <!--Statistics fragment--> <string name="total_time_listened_to_podcasts">Temps d\'Ć©coute total</string> <string name="statistics_details_dialog">%1$d Ć©pisodes sur %2$d commencĆ©s.\n\nLu %3$s sur %4$s.</string> @@ -44,9 +48,9 @@ <string name="drawer_feed_counter_none">Aucun</string> <!--Webview actions--> <string name="open_in_browser_label">Ouvrir dans le navigateur</string> - <string name="copy_url_label">Copier l\'URL</string> - <string name="share_url_label">Partager l\'URL</string> - <string name="copied_url_msg">URL copiĆ©e dans le presse-papier</string> + <string name="copy_url_label">Copier le lien</string> + <string name="share_url_label">Partager le lien</string> + <string name="copied_url_msg">Lien copiĆ© dans le presse-papier</string> <string name="go_to_position_label">Aller Ć cette position</string> <!--Playback history--> <string name="clear_history_label">Effacer le journal</string> @@ -56,13 +60,14 @@ <string name="yes">Oui</string> <string name="no">Non</string> <string name="reset">RĆ©initialiser</string> - <string name="author_label">Auteur</string> + <string name="author_label">Auteur(s)</string> <string name="language_label">Langue</string> - <string name="url_label">URL</string> + <string name="url_label">Lien</string> <string name="podcast_settings_label">PrĆ©fĆ©rences</string> <string name="cover_label">Image</string> <string name="error_label">Erreur</string> <string name="error_msg_prefix">Une erreur a eu lieu :</string> + <string name="needs_storage_permission">L\'autorisation d\'utiliser le stockage est requis pour cette opĆ©ration</string> <string name="refresh_label">RafraĆ®chir</string> <string name="external_storage_error_msg">Aucun stockage externe n\'est disponible. Merci de connecter un volume de stockage externe pour que l\'application puisse fonctionner correctement.</string> <string name="chapters_label">Chapitres</string> @@ -83,7 +88,7 @@ <string name="auto_download_apply_to_items_message">Le nouveau paramĆØtre <i>TĆ©lĆ©chargement Automatique</i> sera automatiquement appliquĆ© sur chaque nouvel Ć©pisode.\nVoulez-vous faire de mĆŖme avec les Ć©pisodes prĆ©cĆ©dents ?</string> <string name="auto_delete_label">Suppression automatique de l\'Ć©pisode</string> <string name="parallel_downloads_suffix">\u0020tĆ©lĆ©chargements parallĆØles</string> - <string name="feed_auto_download_global">Global dĆ©faut</string> + <string name="feed_auto_download_global">Option par dĆ©faut</string> <string name="feed_auto_download_always">Toujours</string> <string name="feed_auto_download_never">Jamais</string> <string name="send_label">Envoyer...</string> @@ -95,9 +100,9 @@ <item quantity="other">%d jours aprĆØs avoir Ć©tĆ© Ć©coutĆ©</item> </plurals> <!--'Add Feed' Activity labels--> - <string name="feedurl_label">URL du flux</string> - <string name="etxtFeedurlHint">URL du flux</string> - <string name="txtvfeedurl_label">Ajouter un podcast par son URL</string> + <string name="feedurl_label">Lien du flux</string> + <string name="etxtFeedurlHint">www.example.com/feed</string> + <string name="txtvfeedurl_label">Ajouter un podcast Ć partir de son lien</string> <string name="podcastdirectories_label">Trouver le podcast dans la bibliothĆØque</string> <string name="podcastdirectories_descr">Pour de nouveaux podcasts vous pouvez chercher iTunes ou fyyd ou parcourir gpodder.net par nom, catĆ©gorie ou popularitĆ©.</string> <string name="browse_gpoddernet_label">Chercher sur gpodder.net</string> @@ -105,33 +110,37 @@ <string name="mark_all_read_label">Marquer tous les Ć©pisodes comme lus</string> <string name="mark_all_read_msg">Tous les Ć©pisodes ont Ć©tĆ© marquĆ©s comme lus</string> <string name="mark_all_read_confirmation_msg">Confirmer le marquage de tous les Ć©pisode comme lus</string> - <string name="mark_all_read_feed_confirmation_msg">Confirmer le marquage de tous les Ć©pisode de ce flux comme lus</string> + <string name="mark_all_read_feed_confirmation_msg">Confirmer le marquage de tous les Ć©pisodes de ce podcast comme lus</string> <string name="mark_all_seen_label">Marquer tous les Ć©pisodes comme vus</string> <string name="mark_all_seen_msg">Tous les Ć©pisodes ont Ć©tĆ© marquĆ©s vus</string> <string name="mark_all_seen_confirmation_msg">Merci de confirmer que vous voulez marquer tous les Ć©pisodes comme vus.</string> <string name="show_info_label">Voir les dĆ©tails</string> + <string name="show_feed_settings_label">ParamĆØtres du podcast...</string> + <string name="feed_info_label">Infos du podcast</string> + <string name="feed_settings_label">ParamĆØtres du podcast</string> <string name="rename_feed_label">Renommer le podcast</string> <string name="remove_feed_label">Supprimer le podcast</string> <string name="share_label">Partager...</string> - <string name="share_link_label">Partager un lien vers le site</string> + <string name="share_link_label">Partager le lien</string> + <string name="share_link_with_position_label">Partager le lien avec la position</string> <string name="share_file_label">Partager le fichier</string> - <string name="share_link_with_position_label">Partager lien avec position</string> - <string name="share_feed_url_label">Partager lien du flux</string> - <string name="share_item_url_label">Partager le lien de l\'Ć©pisode</string> - <string name="share_item_url_with_position_label">Partager le lien de l\'Ć©pisode avec la position</string> - <string name="feed_delete_confirmation_msg">Confirmer que vous voulez supprimer le flux \"%1$s\" et TOUS les Ć©pisodes que vous avez tĆ©lĆ©chargĆ©s.</string> - <string name="feed_remover_msg">Flux en cours de suppression</string> - <string name="load_complete_feed">Mettre Ć jour tout le flux</string> + <string name="share_feed_url_label">Partager le lien du flux</string> + <string name="share_item_url_label">Partager le lien du fichier</string> + <string name="share_item_url_with_position_label">Partager le lien du fichier avec la position</string> + <string name="feed_delete_confirmation_msg">Confirmer que vous voulez supprimer le podcast \"%1$s\" et TOUS ses Ć©pisodes tĆ©lĆ©chargĆ©s.</string> + <string name="feed_remover_msg">Podcast en cours de suppression</string> + <string name="load_complete_feed">Mettre Ć jour tout le podcast</string> <string name="hide_episodes_title">Cacher Ć©pisodes</string> - <string name="episode_actions">Appliquer les actions</string> - <string name="hide_unplayed_episodes_label">Non jouĆ©s</string> + <string name="batch_edit">Edition groupĆ©e</string> + <string name="hide_unplayed_episodes_label">Non lus</string> <string name="hide_paused_episodes_label">En pause</string> - <string name="hide_played_episodes_label">JouĆ©s</string> - <string name="hide_queued_episodes_label">RajoutĆ© Ć la liste de lecture</string> - <string name="hide_not_queued_episodes_label">Non rajoutĆ© Ć la liste de lecture</string> + <string name="hide_played_episodes_label">Lus</string> + <string name="hide_queued_episodes_label">Dans la liste de lecture</string> + <string name="hide_not_queued_episodes_label">Pas dans la liste de lecture</string> <string name="hide_downloaded_episodes_label">TĆ©lĆ©chargĆ©</string> <string name="hide_not_downloaded_episodes_label">Non tĆ©lĆ©chargĆ©</string> - <string name="hide_has_media_label">Ć des mĆ©dias</string> + <string name="hide_has_media_label">Avec mĆ©dia</string> + <string name="hide_is_favorite_label">Est un favori</string> <string name="filtered_label">FiltrĆ©</string> <string name="refresh_failed_msg">{fa-exclamation-circle} La derniĆØre mise Ć jour a Ć©chouĆ©</string> <string name="open_podcast">Ouvrir Podcast</string> @@ -144,7 +153,8 @@ <string name="remove_label">Supprimer</string> <string name="delete_label">Effacer</string> <string name="delete_failed">Suppression du fichier impossible. RedĆ©marrer pourrait aider.</string> - <string name="remove_episode_lable">Supprimer cet Ć©pisode</string> + <string name="remove_episode_lable">Supprimer</string> + <string name="mark_as_seen_label">Marquer comme vu</string> <string name="marked_as_seen_label">MarquĆ© comme vu</string> <string name="mark_read_label">Marquer comme lu</string> <string name="marked_as_read_label">Les Ć©pisodes ont Ć©tĆ© marquĆ©s comme lus</string> @@ -168,6 +178,8 @@ <string name="download_failed">Ć©chouĆ©</string> <string name="download_pending">TĆ©lĆ©chargement en attente</string> <string name="download_running">TĆ©lĆ©chargement en cours</string> + <string name="download_error_details">DĆ©tails</string> + <string name="download_error_details_message">%1$s \n\nLien du fichier :\n%2$s</string> <string name="download_error_device_not_found">Volume de stockage non trouvĆ©</string> <string name="download_error_insufficient_space">Espace insuffisant</string> <string name="download_error_file_error">AccĆØs au fichier impossible</string> @@ -185,7 +197,7 @@ <string name="download_canceled_autodownload_enabled_msg">TĆ©lĆ©chargement annulĆ©\n <i>TĆ©lĆ©chargement Automatique</i> dĆ©sactivĆ© pour cet Ć©lĆ©ment</string> <string name="download_report_title">TĆ©lĆ©chargements terminĆ©s avec des erreurs</string> <string name="download_report_content_title">Rapport des tĆ©lĆ©chargements</string> - <string name="download_error_malformed_url">URL incorrecte</string> + <string name="download_error_malformed_url">Lien incorrecte</string> <string name="download_error_io_error">Erreur d\'E/S</string> <string name="download_error_request_error">Erreur de requĆŖte</string> <string name="download_error_db_access">ProblĆØme d\'accĆØs Ć la base de donnĆ©es</string> @@ -218,6 +230,7 @@ <string name="playback_error_unknown">Erreur inconnue</string> <string name="no_media_playing_label">Aucune lecture</string> <string name="player_buffering_msg">Mise en mĆ©moire</string> + <string name="player_go_to_picture_in_picture">Mode Picture-in-Picture</string> <string name="playbackservice_notification_title">Lecture de podcast en cours</string> <string name="unknown_media_key">AntennaPod - Touche mĆ©dia inconnue : %1$d</string> <!--Queue operations--> @@ -234,7 +247,9 @@ <string name="date">Date</string> <string name="duration">DurĆ©e</string> <string name="episode_title">Titre de l\'Ć©pisode</string> - <string name="feed_title">Nom du flux</string> + <string name="feed_title">Nom du podcast</string> + <string name="random">AlĆ©atoire</string> + <string name="smart_shuffle">Tri intelligent</string> <string name="ascending">Ordre croissant</string> <string name="descending">Ordre dĆ©croissant</string> <string name="clear_queue_confirmation_msg">Veuillez confirmer que vous voulez bien supprimer TOUS les Ć©pisodes de la liste de lecture</string> @@ -272,30 +287,38 @@ <string name="enable_sonic">Activer Sonic</string> <!--Empty list labels--> <string name="no_items_label">Cette liste est vide.</string> - <string name="no_feeds_label">Vous n\'ĆŖtes encore abonnĆ© Ć aucun flux.</string> + <string name="no_feeds_label">Vous n\'ĆŖtes encore abonnĆ© Ć aucun podcast.</string> <string name="no_chapters_label">Cet Ć©pisode n\'a pas de chapitres.</string> - <string name="no_shownotes_label">Aucun descriptif pour cet Ć©pisode.</string> + <string name="no_shownotes_label">Aucune notes pour cet Ć©pisode.</string> <!--Preferences--> <string name="storage_pref">Stockage</string> <string name="project_pref">Projet</string> <string name="other_pref">Autres</string> <string name="about_pref">Ć propos</string> - <string name="queue_label">Liste</string> - <string name="services_label">Services</string> + <string name="queue_label">Liste de lecture</string> + <string name="integrations_label">IntĆ©grations</string> <string name="flattr_label">Flattr</string> + <string name="flattr_summary">Service de micropaiement</string> + <string name="automation">Automatisation</string> + <string name="download_pref_details">DĆ©tails</string> + <string name="import_export_pref">Importation / Exportation</string> + <string name="appearance">Apparence</string> + <string name="external_elements">ElĆ©ments externes</string> + <string name="interruptions">Interruptions</string> + <string name="buttons">Boutons de lecture</string> + <string name="media_player">Lecteur multimĆ©dia</string> <string name="pref_episode_cleanup_title">Nettoyage des Ć©pisodes</string> <string name="pref_episode_cleanup_summary">Les Ć©pisodes qui ne sont pas dans la liste de lecture et qui ne sont pas marquĆ©s comme favoris peuvent ĆŖtre supprimĆ©s si l\'espace est insuffisant pour le tĆ©lĆ©chargement automatique de nouveaux Ć©pisodes</string> <string name="pref_pauseOnDisconnect_sum">Interrompre la lecture lorsque le casque ou le bluetooth sont dĆ©connectĆ©s</string> - <string name="pref_unpauseOnHeadsetReconnect_sum">Reprendre la lecture quand les Ć©couteurs sont reconnectĆ©s</string> - <string name="pref_unpauseOnBluetoothReconnect_sum">Reprendre la lecture quand le Bluetooth se reconnecte</string> + <string name="pref_unpauseOnHeadsetReconnect_sum">Reprendre la lecture quand les Ć©couteurs sont connectĆ©s</string> + <string name="pref_unpauseOnBluetoothReconnect_sum">Reprendre la lecture quand le Bluetooth se connecte</string> <string name="pref_hardwareForwardButtonSkips_title">Le bouton \"saut avant\" saute l\'Ć©pisode</string> - <string name="pref_hardwareForwardButtonSkips_sum">Passer Ć l\'Ć©pisode suivant au lieu de faire un saut avant quand un bouton physique \"saut avant\" est pressĆ©</string> <string name="pref_hardwarePreviousButtonRestarts_title">Le bouton \"saut arriĆØre\" redĆ©marre l\'Ć©pisode</string> <string name="pref_hardwarePreviousButtonRestarts_sum">Repartir de zĆ©ro au lieu de faire un saut arriĆØre quand un bouton physique \"saut arriĆØre\" est pressĆ©</string> <string name="pref_followQueue_sum">AprĆØs la fin d\'un Ć©pisode, passer au suivant</string> <string name="pref_auto_delete_sum">Supprimer l\'Ć©pisode quand la lecture est finie</string> <string name="pref_auto_delete_title">Suppression automatique</string> - <string name="pref_smart_mark_as_played_sum">Les Ć©pisodes seront marquĆ©s comme lus mĆŖme s\'il reste quelques secondes Ć jouer</string> + <string name="pref_smart_mark_as_played_sum">Les Ć©pisodes seront marquĆ©s comme lus mĆŖme s\'il reste quelques secondes Ć Ć©couter</string> <string name="pref_smart_mark_as_played_title">Marquer comme lu intelligemment</string> <string name="pref_skip_keeps_episodes_sum">Garder les Ć©pisodes quand ils sont passĆ©s</string> <string name="pref_skip_keeps_episodes_title">Garder les Ć©pisodes passĆ©s</string> @@ -303,20 +326,20 @@ <string name="pref_favorite_keeps_episodes_title">Garder les Ć©pisodes favoris</string> <string name="playback_pref">Lecture</string> <string name="network_pref">RĆ©seau</string> - <string name="pref_autoUpdateIntervallOrTime_title">Mettre Ć jour lāintervalle ou l\'heure</string> + <string name="pref_autoUpdateIntervallOrTime_title">Intervalle / Heure de mise Ć jour</string> <string name="pref_autoUpdateIntervallOrTime_sum">Indiquer un intervalle ou une heure spĆ©cifique de mise Ć jour des flux</string> - <string name="pref_autoUpdateIntervallOrTime_message">Vous pouvez mettre en place un <i>intervalle</i> comme \"toutes les 2 heures\", une <i>heure prĆ©cise</i> comme \"7:00\" ou dĆ©sactiver les mises Ć jours automatique.\n\n<small>Note: Il est possible qu\'il y ait un dĆ©lai car l\'heure de mise Ć jour peut ĆŖtre inexacte.</small></string> + <string name="pref_autoUpdateIntervallOrTime_message">Vous pouvez dĆ©finir un <i>intervalle</i> comme \"toutes les 2 heures\" ou une <i>heure prĆ©cise</i> comme \"7:00\" ou dĆ©sactiver les mises Ć jours automatique.\n\n<small>Note: les heures de mise Ć jour ne sont pas prĆ©cises. Vous pouvez avoir un petit dĆ©lai.</small></string> <string name="pref_autoUpdateIntervallOrTime_Disable">DĆ©sactiver</string> - <string name="pref_autoUpdateIntervallOrTime_Interval">DĆ©finir intervalle</string> - <string name="pref_autoUpdateIntervallOrTime_TimeOfDay">RĆ©gler l\'heure</string> + <string name="pref_autoUpdateIntervallOrTime_Interval">Intervalle</string> + <string name="pref_autoUpdateIntervallOrTime_TimeOfDay">Heure</string> <string name="pref_autoUpdateIntervallOrTime_every">toutes les %1$s</string> <string name="pref_autoUpdateIntervallOrTime_at">Ć %1$s</string> <string name="pref_downloadMediaOnWifiOnly_sum">Ne tĆ©lĆ©charger les Ć©pisodes que par Wi-Fi</string> <string name="pref_followQueue_title">Lecture continue</string> <string name="pref_downloadMediaOnWifiOnly_title">TĆ©lĆ©chargement en Wi-Fi</string> - <string name="pref_pauseOnHeadsetDisconnect_title">DĆ©connexion du casque</string> - <string name="pref_unpauseOnHeadsetReconnect_title">Reconnexion du casque</string> - <string name="pref_unpauseOnBluetoothReconnect_title">Reconnexion Bluetooth</string> + <string name="pref_pauseOnHeadsetDisconnect_title">DĆ©connexion des Ć©couteurs ou du Bluetooth</string> + <string name="pref_unpauseOnHeadsetReconnect_title">Connexion des Ć©couteurs</string> + <string name="pref_unpauseOnBluetoothReconnect_title">Connexion du Bluetooth</string> <string name="pref_mobileUpdate_title">Mises Ć jour mobile</string> <string name="pref_mobileUpdate_sum">Autoriser les mises Ć jour avec la connexion mobile</string> <string name="refreshing_label">Mise Ć jour en cours</string> @@ -338,7 +361,7 @@ <string name="pref_nav_drawer_feed_order_title">DĆ©finir l\'ordre des abonnements</string> <string name="pref_nav_drawer_feed_order_sum">Change l\'ordre de vos abonnements</string> <string name="pref_nav_drawer_feed_counter_title">DĆ©finir le compteur d\'abonnements</string> - <string name="pref_nav_drawer_feed_counter_sum">Changer l\'information affichĆ©e par le compteur d\'abonnements</string> + <string name="pref_nav_drawer_feed_counter_sum">Changer l\'information affichĆ©e par le compteur d\'abonnements. Cela change aussi l\'ordre des podcasts si ils sont triĆ©s par le compteur.</string> <string name="pref_set_theme_sum">Modifier l\'apparence d\'AntennaPod.</string> <string name="pref_automatic_download_title">TĆ©lĆ©chargement automatique</string> <string name="pref_automatic_download_sum">Configurer le tĆ©lĆ©chargement automatique des Ć©pisodes.</string> @@ -352,6 +375,7 @@ <string name="pref_episode_cache_title">Ćpisodes stockĆ©s localement</string> <string name="pref_theme_title_light">Clair</string> <string name="pref_theme_title_dark">Sombre</string> + <string name="pref_theme_title_trueblack">Noir (pour Ć©cran AMOLED)</string> <string name="pref_episode_cache_unlimited">IllimitĆ©</string> <string name="pref_update_interval_hours_plural">heures</string> <string name="pref_update_interval_hours_singular">heure</string> @@ -375,25 +399,23 @@ <string name="pref_playback_speed_title">Vitesses de lecture</string> <string name="pref_playback_speed_sum">DĆ©finir les vitesses disponibles lors de la lecture audio</string> <string name="pref_fast_forward">DurĆ©e du saut avant</string> - <string name="pref_fast_forward_sum">Nombre de secondes Ć sauter quand le bouton \"saut avant\" est cliquĆ©</string> + <string name="pref_fast_forward_sum">Nombre de secondes Ć sauter quand le bouton \"saut avant\" est pressĆ©</string> <string name="pref_rewind">DurĆ©e du saut arriĆØre</string> - <string name="pref_rewind_sum">Nombre de secondes Ć sauter quand le bouton \"saut arriĆØre\" est cliquĆ©</string> + <string name="pref_rewind_sum">Nombre de secondes Ć sauter quand le bouton \"saut arriĆØre\" est pressĆ©</string> <string name="pref_gpodnet_sethostname_title">Choisir un nom de domaine</string> <string name="pref_gpodnet_sethostname_use_default_host">Utiliser le nom de domaine par dĆ©faut</string> - <string name="pref_expandNotify_title">Etendre la notification</string> - <string name="pref_expandNotify_sum">Toujours Ć©tendre la notification pour montrer tous les boutons de lecture </string> <string name="pref_persistNotify_title">Boutons de lecture permanents</string> <string name="pref_persistNotify_sum">Garder les notifications et les boutons de lecture sur l\'Ć©cran de verouillage quand la lecture est en pause</string> <string name="pref_compact_notification_buttons_title">DĆ©finir les boutons de l\'Ć©cran de verrouillage</string> <string name="pref_compact_notification_buttons_sum">Change les boutons de lecture sur l\'Ć©cran de verrouillage. Le bouton de lecture/pause est toujours affichĆ©.</string> <string name="pref_compact_notification_buttons_dialog_title">Choisir un maximum de %1$d Ć©lĆ©ments</string> <string name="pref_compact_notification_buttons_dialog_error">Vous ne pouvez pas choisir plus de %1$d Ć©lĆ©ments.</string> - <string name="pref_lockscreen_background_title">Changer lāarriĆØre plan de l\'Ć©cran de dĆ©verrouillage</string> - <string name="pref_lockscreen_background_sum">Placer l\'image de lāĆ©pisode en arriĆØre plan de l\'Ć©cran de dĆ©verrouillage. Cela aura aussi pour effet de montrer l\'image dans les autres applications.</string> + <string name="pref_lockscreen_background_title">Changer lāarriĆØre plan de l\'Ć©cran de verrouillage</string> + <string name="pref_lockscreen_background_sum">Placer l\'image de lāĆ©pisode en arriĆØre plan de l\'Ć©cran de verrouillage. Cela aura aussi pour effet de montrer l\'image dans les autres applications.</string> <string name="pref_showDownloadReport_title">Afficher le rapport de tĆ©lĆ©chargements</string> <string name="pref_showDownloadReport_sum">Si les tĆ©lĆ©chargements Ć©chouent, gĆ©nĆ©rer un rapport dĆ©taillĆ© des Ć©checs.</string> <string name="pref_expand_notify_unsupport_toast">Les versions d\'Android antĆ©rieures Ć 4.1 ne sont pas compatibles avec les notifications Ć©largies</string> - <string name="pref_queueAddToFront_sum">Ajouter les nouveaux Ć©pisodes au dĆ©but de la liste de lecture.</string> + <string name="pref_queueAddToFront_sum">Ajouter les nouveaux Ć©pisodes au dĆ©but de la liste de lecture</string> <string name="pref_queueAddToFront_title">Mettre au dĆ©but de la liste de lecture</string> <string name="pref_smart_mark_as_played_disabled">DĆ©sactivĆ©</string> <string name="pref_image_cache_size_title">Taille du cache de l\'image</string> @@ -402,8 +424,7 @@ <string name="crash_report_sum">Envoyer le dernier rapport de crash par e-mail</string> <string name="send_email">Envoyer e-mail</string> <string name="experimental_pref">ExpĆ©rimental</string> - <string name="pref_sonic_title">Lecteur multimĆ©dia Sonic</string> - <string name="pref_sonic_message">Utiliser le lecteur multimĆ©dia interne Sonic au lieu du lecteur natif d\'Android ou Prestissimo</string> + <string name="pref_media_player_message">Choisir le lecteur Ć utiliser pour lire les fichiers</string> <string name="pref_current_value">Valeur actuelle : %1$s</string> <string name="pref_proxy_title">Proxy</string> <string name="pref_proxy_sum">ParamĆ©trer un rĆ©seau proxy</string> @@ -415,17 +436,22 @@ <string name="pref_cast_message_free_flavor">Chromecast nĆ©cessite des bibliothĆØques tierces qui sont dĆ©sactivĆ©es dans cette version d\'AntennaPod</string> <string name="pref_enqueue_downloaded_title">Ajouter Ć la liste aprĆØs tĆ©lĆ©chargement</string> <string name="pref_enqueue_downloaded_summary">Mettre les Ć©pisodes dans la la liste de lecture aprĆØs tĆ©lĆ©chargement</string> + <string name="media_player_builtin">Lecteur natif d\'Android</string> + <string name="pref_videoBehavior_title">Sorti du lecteur pendant une vidĆ©o</string> + <string name="pref_videoBehavior_sum">DĆ©finir ce qu\'il se passe si une vidĆ©o est quittĆ©e pendant sa lecture</string> + <string name="stop_playback">ArrĆŖter la lecture</string> + <string name="continue_playback">Continuer la lecture</string> <!--Auto-Flattr dialog--> <string name="auto_flattr_enable">Activer le paiement flattr automatique</string> - <string name="auto_flattr_after_percent">Lancer un paiement flattr pour un Ć©pisode dĆØs que %d de l\'Ć©pisode a Ć©tĆ© jouĆ©</string> + <string name="auto_flattr_after_percent">Lancer un paiement flattr quand %d pourcent de l\'Ć©pisode a Ć©tĆ© lu</string> <string name="auto_flattr_ater_beginning">Lancer le paiement flattr d\'un Ć©pisode dĆØs que la lecture commence</string> <string name="auto_flattr_ater_end">Lancer le paiement flattr d\'un Ć©pisode Ć la fin de la lecture</string> <!--Search--> <string name="search_hint">Chercher les Ć©pisodes</string> <string name="found_in_shownotes_label">TrouvĆ© dans les notes d\'Ć©pisodes</string> <string name="found_in_chapters_label">TrouvĆ© dans les titres de chapitre</string> - <string name="found_in_authors_label">TrouvĆ©s en tant qu\'auteur</string> - <string name="found_in_feeds_label">TrouvĆ©s dans les flux</string> + <string name="found_in_authors_label">TrouvĆ©s dans les auteurs</string> + <string name="found_in_feeds_label">TrouvĆ©s dans les podcasts</string> <string name="search_status_no_results">Aucun rĆ©sultat trouvĆ©</string> <string name="search_label">Recherche</string> <string name="found_in_title_label">TrouvĆ© dans le titre</string> @@ -437,7 +463,7 @@ <string name="opml_import_explanation_2">Utiliser une application tierce comme Dropbox, Google Drive ou votre gestionnaire de fichier favori pour ouvrir un fichier OPML</string> <string name="opml_import_explanation_3">De nombreuses applications comme Google Mail, Dropbox ou Google Drive et la plupart des gestionnaires de fichiers peuvent <i>ouvrir</i> les fichiers OPML <i>avec</i> AntennaPod.</string> <string name="start_import_label">DĆ©marrer l\'importation</string> - <string name="opml_import_label">Importation OPML</string> + <string name="opml_import_label">Import OPML</string> <string name="opml_directory_error">ERREUR !</string> <string name="reading_opml_label">Lecture du fichier OPML en cours</string> <string name="opml_reader_error">Une erreur s\'est produite pendant la lecture du fichier OPML :</string> @@ -447,12 +473,12 @@ <string name="select_options_label">Choisir...</string> <string name="choose_file_from_filesystem">Depuis le systĆØme de fichier local</string> <string name="choose_file_from_external_application">Utiliser une application tierce</string> - <string name="opml_export_label">Exportation OPML</string> + <string name="opml_export_label">Export OPML</string> <string name="html_export_label">Export HTML</string> <string name="exporting_label">Export en cours...</string> <string name="export_error_label">Erreur d\'exportation</string> - <string name="opml_export_success_title">Exportation OPML rĆ©ussie.</string> - <string name="opml_export_success_sum">Le fichier .opml a Ć©tĆ© Ć©crit ici :\u0020</string> + <string name="export_success_title">Export rĆ©ussi</string> + <string name="export_success_sum">Le fichier a Ć©tĆ© exportĆ© dans :\n\n%1$s</string> <string name="opml_import_ask_read_permission">L\'accĆØs au stockage externe est requis pour lire le fichier OPML</string> <!--Sleep timer--> <string name="set_sleeptimer_label">Activation du minuteur d\'arrĆŖt</string> @@ -565,25 +591,25 @@ <string name="sp_apps_importing_feeds_msg">Importation des abonnements Ć partir d\'applications Ć usage unique...</string> <string name="search_itunes_label">Chercher sur iTunes</string> <string name="filter">Filtrer</string> - <string name="search_fyyd_label">Chercher fyyd</string> + <string name="search_fyyd_label">Chercher sur fyyd</string> <!--Episodes apply actions--> <string name="all_label">Tout</string> <string name="selected_all_label">Tous les Ć©pisodes ont Ć©tĆ© sĆ©lectionnĆ©</string> <string name="none_label">Aucun</string> <string name="deselected_all_label">Tous les Ć©pisodes ont Ć©tĆ© dĆ©sĆ©lectionnĆ©</string> - <string name="played_label">JouĆ©s</string> - <string name="selected_played_label">Episodes jouĆ©s sĆ©lectionnĆ©s</string> - <string name="unplayed_label">Non jouĆ©s</string> - <string name="selected_unplayed_label">Episodes non jouĆ©s sĆ©lectionnĆ©s</string> + <string name="played_label">Lus</string> + <string name="selected_played_label">Episodes lus sĆ©lectionnĆ©s</string> + <string name="unplayed_label">Non lus</string> + <string name="selected_unplayed_label">Episodes non lus sĆ©lectionnĆ©s</string> <string name="downloaded_label">TĆ©lĆ©chargĆ©s</string> <string name="selected_downloaded_label">Episodes tĆ©lĆ©chargĆ©s sĆ©lectionnĆ©s</string> <string name="not_downloaded_label">Non tĆ©lĆ©chargĆ©s</string> <string name="selected_not_downloaded_label">Ćpisodes non tĆ©lĆ©chargĆ©s sĆ©lectionnĆ©s</string> - <string name="queued_label">Dans liste de lecture</string> + <string name="queued_label">Dans la liste de lecture</string> <string name="selected_queued_label">Episodes prĆ©sents dans la liste de lecture sĆ©lectionnĆ©s</string> <string name="not_queued_label">En dehors de la liste de lecture</string> <string name="selected_not_queued_label">Episodes absents de la liste de lecture sĆ©lectionnĆ©s</string> - <string name="has_media">Ć des mĆ©dias</string> + <string name="has_media">A des mĆ©dias</string> <string name="selected_has_media_label">SĆ©lectionner les Ć©pisodes avec des mĆ©dias</string> <!--Sort--> <string name="sort_title_a_z">Titre (A \u2192 Z)</string> @@ -620,12 +646,12 @@ <string name="proxy_host_invalid_error">L\'hĆ“te n\'est pas une adresse IP ou un domaine valide</string> <string name="proxy_port_invalid_error">Port non valide</string> <!--Database import/export--> - <string name="import_export">Importer/Exporter la base de donnĆ©es</string> - <string name="import_export_warning">Cette fonction expĆ©rimentale peut-ĆŖtre utilisĆ©e pour transfĆ©rer vos abonnements et Ć©pisodes jouĆ©s sur un autre appareil.\n\nLes bases de donnĆ©es exportĆ©es peuvent uniquement ĆŖtre importĆ©es sur la mĆŖme version d\'AntennaPod. Dans le cas contraire, des dysfonctionnements peuvent survenir.\n\nAprĆØs import, il est possible que des Ć©pisodes apparaissent tĆ©lĆ©chargĆ©s alors qu\'ils ne le sont pas. Appuyer sur le bouton de lecture pour qu\'AntennaPod le dĆ©tecte.</string> + <string name="import_export">Import / Export de la base de donnĆ©es</string> + <string name="import_export_warning">Cette fonction expĆ©rimentale peut-ĆŖtre utilisĆ©e pour transfĆ©rer vos abonnements et Ć©pisodes lus sur un autre appareil.\n\nLes bases de donnĆ©es exportĆ©es peuvent uniquement ĆŖtre importĆ©es sur la mĆŖme version d\'AntennaPod. Dans le cas contraire, des dysfonctionnements peuvent apparaĆ®tre.\n\nAprĆØs import, il est possible que des Ć©pisodes apparaissent tĆ©lĆ©chargĆ©s alors qu\'ils ne le sont pas. Appuyer sur le bouton de lecture pour qu\'AntennaPod le dĆ©tecte.</string> <string name="label_import">Importer</string> <string name="label_export">Exporter</string> <string name="import_select_file">SĆ©lectionner le fichier Ć importer</string> - <string name="export_ok">Export rĆ©ussi. La base de donnĆ©es a Ć©tĆ© Ć©crite sur la carte SD.</string> + <string name="export_ok">Export rĆ©ussi.</string> <string name="import_ok">Import rĆ©ussi.\n\nAppuyer sur OK pour redĆ©marrer AntennaPod</string> <!--Casting--> <string name="cast_media_route_menu_title">Lire sur...</string> @@ -643,4 +669,13 @@ <string name="cast_failed_seek">Ćchec de la recherche de la nouvelle position sur l\'appareil cast</string> <string name="cast_failed_receiver_player_error">Le lecteur de rĆ©ception a rencontrĆ© une grave erreur</string> <string name="cast_failed_media_error_skipping">Erreur de lecture du mĆ©dia. Passage au suivant...</string> + <!--Notification channels--> + <string name="notification_channel_user_action">Action requise</string> + <string name="notification_channel_user_action_description">S\'affiche si une action est requise. Par exemple, un mot de passe Ć saisir.</string> + <string name="notification_channel_downloading">TĆ©lĆ©chargement en cours</string> + <string name="notification_channel_downloading_description">S\'affiche lorsqu\'un tĆ©lĆ©chargement est en cours.</string> + <string name="notification_channel_playing">Lecture en cours</string> + <string name="notification_channel_playing_description">Permet de contrĆ“ler la lecture. C\'est la notification principale pendant la lecture d\'un podcast.</string> + <string name="notification_channel_error">Erreurs</string> + <string name="notification_channel_error_description">S\'affiche en cas de problĆØme. Par exemple, un tĆ©lĆ©chargement ou une synchronisation qui Ć©choue.</string> </resources> diff --git a/core/src/main/res/values-gl-rES/strings.xml b/core/src/main/res/values-gl-rES/strings.xml index 2dc04a5db..a2a4366ed 100644 --- a/core/src/main/res/values-gl-rES/strings.xml +++ b/core/src/main/res/values-gl-rES/strings.xml @@ -1,32 +1,36 @@ <?xml version='1.0' encoding='UTF-8'?> <resources xmlns:tools="http://schemas.android.com/tools"> <!--Activitiy and fragment titles--> + <string name="feed_update_receiver_name">Actualizar subscriciĆ³ns</string> <string name="feeds_label">Fontes</string> <string name="statistics_label">EstatĆsticas</string> - <string name="add_feed_label">Engadir Podcast</string> + <string name="add_feed_label">Engadir podcast</string> <string name="episodes_label">Episodios</string> <string name="all_episodes_short_label">Todo</string> + <string name="new_episodes_label">Novo</string> <string name="favorite_episodes_label">Favoritos</string> <string name="new_label">Novo</string> <string name="settings_label">Axustes</string> <string name="downloads_label">Descargas</string> - <string name="downloads_running_label">Descargando</string> + <string name="downloads_running_label">Funcionando</string> <string name="downloads_completed_label">Completado</string> <string name="downloads_log_label">Rexistro</string> - <string name="subscriptions_label">SuscriciĆ³ns</string> - <string name="subscriptions_list_label">Lista de suscriciĆ³ns</string> + <string name="subscriptions_label">SubscriciĆ³ns</string> + <string name="subscriptions_list_label">Lista de subscriciĆ³ns</string> <string name="cancel_download_label">Cancelar\nDescarga</string> <string name="playback_history_label">Historial de reproduciĆ³n</string> <string name="gpodnet_main_label">gpodder.net</string> + <string name="gpodnet_summary">Sincronizar con outros dispositivos</string> <string name="gpodnet_auth_label">gpodder.net ConexiĆ³n</string> <string name="free_space_label">%1$s libre</string> <string name="episode_cache_full_title">CachĆ© de episodios chea</string> <string name="episode_cache_full_message">Acadouse o lĆmite de espazo na cachĆ© de episodios. Pode incrementalo nos Axustes do tamaƱo da cachĆ©.</string> + <string name="synchronizing">Sincronizando...</string> <!--Statistics fragment--> <string name="total_time_listened_to_podcasts">Tempo total dos podcast reproducidos:</string> <string name="statistics_details_dialog">%1$d de %2$d episodios iniciados.\n\nReproducidos %3$s de %4$s.</string> <string name="statistics_mode">Modo de estatĆsticas</string> - <string name="statistics_mode_normal">Calcular a duraciĆ³n que foi realmente reproducida. Reproducir dĆŗas veces conta dobre, mentras que marcar como lido non conta</string> + <string name="statistics_mode_normal">Calcular a duraciĆ³n que foi realmente reproducida. Reproducir dĆŗas veces conta dobre, mentres que marcar como lido non conta</string> <string name="statistics_mode_count_all">Sumar todos os podcast marcados como reproducidos</string> <string name="statistics_speed_not_counted">Aviso: A velocidade de reproduciĆ³n non se ten en conta en ningĆŗn caso.</string> <!--Main activity--> @@ -34,7 +38,7 @@ <string name="drawer_close">Pechar menĆŗ</string> <string name="drawer_preferences">Preferencias da caixa</string> <string name="drawer_feed_order_unplayed_episodes">Ordenar polo contador</string> - <string name="drawer_feed_order_alphabetical">Ordenar alfabĆ©ticamente</string> + <string name="drawer_feed_order_alphabetical">Ordenar alfabeticamente</string> <string name="drawer_feed_order_last_update">Ordenar por data de publicaciĆ³n</string> <string name="drawer_feed_order_most_played">Ordenar por nĆŗmero de episodios reproducidos</string> <string name="drawer_feed_counter_new_unplayed">NĆŗmero de episodios novos e non reproducidos</string> @@ -43,7 +47,7 @@ <string name="drawer_feed_counter_downloaded">NĆŗmero de episodios descargados</string> <string name="drawer_feed_counter_none">NingĆŗn</string> <!--Webview actions--> - <string name="open_in_browser_label">Abrir en navegador</string> + <string name="open_in_browser_label">Abrir no navegador</string> <string name="copy_url_label">Copiar URL</string> <string name="share_url_label">Compartir URL</string> <string name="copied_url_msg">Copiar URL ao portapapeis</string> @@ -56,15 +60,16 @@ <string name="yes">Si</string> <string name="no">Non</string> <string name="reset">Restablecer</string> - <string name="author_label">Autor</string> + <string name="author_label">Autor(es)</string> <string name="language_label">Idioma</string> <string name="url_label">URL</string> <string name="podcast_settings_label">Axustes</string> <string name="cover_label">Imaxe</string> <string name="error_label">Fallo</string> - <string name="error_msg_prefix">Houbo un fallo:</string> + <string name="error_msg_prefix">Produciuse un fallo:</string> + <string name="needs_storage_permission">PrecĆsase o permiso de almacenamento para esta operaciĆ³n</string> <string name="refresh_label">Actualizar</string> - <string name="external_storage_error_msg">Non se dispĆ³n de almacenamento externo. Por favor asegĆŗrese de que o almacenamento externo estĆ” montado e asĆ o app poderĆ” funcionar correctamente.</string> + <string name="external_storage_error_msg">Non se dispĆ³n de almacenamento externo. Por favor asegĆŗrese de que o almacenamento externo estĆ” montado e asĆ o aplicativo poderĆ” funcionar correctamente.</string> <string name="chapters_label">CapĆtulos</string> <string name="chapter_duration">DuraciĆ³n: %1$s</string> <string name="shownotes_label">Notas do episodio</string> @@ -105,25 +110,28 @@ <string name="mark_all_read_label">Marcar todo como reproducido</string> <string name="mark_all_read_msg">MarcĆ”ronse todos como reproducidos</string> <string name="mark_all_read_confirmation_msg">Por favor confirme que quere marcar todos os episodios como reproducidos.</string> - <string name="mark_all_read_feed_confirmation_msg">Por favor confirme que quere marcar todos os episodios de esta fonte como reproducidos.</string> + <string name="mark_all_read_feed_confirmation_msg">Por favor, confirme que quere marcar todos os episodios deste podcast como reproducidos.</string> <string name="mark_all_seen_label">Marcar como visto</string> <string name="mark_all_seen_msg">MarcĆ”ronse todos os episodios como vistos</string> <string name="mark_all_seen_confirmation_msg">Por favor confirme que quere marcar todos os episodios como vistos.</string> <string name="show_info_label">Mostrar informaciĆ³n</string> + <string name="show_feed_settings_label">Mostrar axustes do podcast</string> + <string name="feed_info_label">InformaciĆ³n do podcast</string> + <string name="feed_settings_label">Axustes do podcast</string> <string name="rename_feed_label">Mudar nome do podcast</string> - <string name="remove_feed_label">Quitar podcast</string> + <string name="remove_feed_label">Eliminar o podcast</string> <string name="share_label">Compartir...</string> - <string name="share_link_label">Compartir ligazĆ³n</string> + <string name="share_link_label">Compartir a URL do episodio</string> + <string name="share_link_with_position_label">Compartir a URL do ficheiro do episodio coa posiciĆ³n</string> <string name="share_file_label">Compartir ficheiro</string> - <string name="share_link_with_position_label">Compartir ligazĆ³n con posiciĆ³n</string> <string name="share_feed_url_label">Compartir URL da fonte</string> - <string name="share_item_url_label">Compartir a URL do ficheiro do episodio</string> - <string name="share_item_url_with_position_label">Compartir a URL do ficheiro do episodio con posiciĆ³n</string> - <string name="feed_delete_confirmation_msg">Por favor confirme que quere eliminar a fonte \"%1$s\" e TODOS os episodios de esta fonte anteriormente descargados.</string> - <string name="feed_remover_msg">Eliminando a fonte</string> - <string name="load_complete_feed">Actualizar completamente a fonte</string> + <string name="share_item_url_label">Compartir a URL do ficheiro multimedia</string> + <string name="share_item_url_with_position_label">Compartir a URL do ficheiro multimedia coa posiciĆ³n</string> + <string name="feed_delete_confirmation_msg">Por favor, confirme que quere eliminar o podcast \"%1$s\" e TODOS os seus episodios (incluĆdos os xa descargados).</string> + <string name="feed_remover_msg">Eliminando o podcast</string> + <string name="load_complete_feed">Actualizar o podcast completo</string> <string name="hide_episodes_title">Ocultar episodios</string> - <string name="episode_actions">Aplicar acciĆ³ns</string> + <string name="batch_edit">EdiciĆ³n por lote</string> <string name="hide_unplayed_episodes_label">Non reproducido</string> <string name="hide_paused_episodes_label">En pausa</string> <string name="hide_played_episodes_label">Reproducido</string> @@ -132,6 +140,7 @@ <string name="hide_downloaded_episodes_label">Descargado</string> <string name="hide_not_downloaded_episodes_label">Non descargado</string> <string name="hide_has_media_label">Ten medios</string> + <string name="hide_is_favorite_label">Ć favorito</string> <string name="filtered_label">Filtrado</string> <string name="refresh_failed_msg">{fa-exclamation-circle} Erro na Ćŗltima actualizaciĆ³n</string> <string name="open_podcast">Abrir podcast</string> @@ -145,6 +154,7 @@ <string name="delete_label">Borrar</string> <string name="delete_failed">Non se puido eliminar o ficheiro. Reiniciar o dispositivo poderĆa axudar.</string> <string name="remove_episode_lable">Eliminar episodio</string> + <string name="mark_as_seen_label">Marcar como visto</string> <string name="marked_as_seen_label">Marcar como visto</string> <string name="mark_read_label">Marcar como reproducido</string> <string name="marked_as_read_label">Marcado como reproducido</string> @@ -168,6 +178,8 @@ <string name="download_failed">fallou</string> <string name="download_pending">Descarga pendente</string> <string name="download_running">Descarga en proceso</string> + <string name="download_error_details">Detalles</string> + <string name="download_error_details_message">%1$s\n\nURL do ficheiro:\n %2$s </string> <string name="download_error_device_not_found">Non se atopou dispositivo de almacenamento</string> <string name="download_error_insufficient_space">Non hai suficiente espacio</string> <string name="download_error_file_error">Fallo de ficheiro</string> @@ -182,7 +194,7 @@ <string name="download_error_forbidden">Non admitido</string> <string name="cancel_all_downloads_label">Cancelar todas as descargas</string> <string name="download_canceled_msg">Descarga cancelada</string> - <string name="download_canceled_autodownload_enabled_msg">Descarga cancelada\nDeshabilitouse <i>Descarga automĆ”tica</i> para este elemento</string> + <string name="download_canceled_autodownload_enabled_msg">Descarga cancelada\nDesactivouse a <i>Descarga AutomĆ”tica</i> para este elemento</string> <string name="download_report_title">Descargas completadas con erro(s)</string> <string name="download_report_content_title">Informe da descarga</string> <string name="download_error_malformed_url">URL mal formada</string> @@ -204,8 +216,8 @@ <string name="authentication_notification_title">PrecĆsase autenticaciĆ³n</string> <string name="authentication_notification_msg">O recurso solicitado require un usuario e contrasinal</string> <string name="confirm_mobile_download_dialog_title">Confirme a descarga con datos do mĆ³bil</string> - <string name="confirm_mobile_download_dialog_message_not_in_queue">Descargar coa conexiĆ³n de datos do mĆ³bil estĆ” deshabilitada nos axustes.\n\nPode escoller ben sĆ³ engadir o episodio a cola ou pode permitir a descarga temporalmente.\n\n<small> A sĆŗa elecciĆ³n lembrarase durante 10 minutos.</small></string> - <string name="confirm_mobile_download_dialog_message">A descarga con datos mĆ³biles estĆ” deshabilitada nos axustes.\n\nQuere permitir a descarga temporalmente?\n\n <small>A sĆŗa decisiĆ³n lembrarase durante 10 minutos.</small></string> + <string name="confirm_mobile_download_dialog_message_not_in_queue">Descargar coa conexiĆ³n de datos do mĆ³bil estĆ” desactivada nos axustes.\n\nPode escoller ben sĆ³ engadir o episodio a cola ou pode permitir a descarga temporalmente.\n\n<small> A sĆŗa elecciĆ³n lembrarase durante 10 minutos.</small></string> + <string name="confirm_mobile_download_dialog_message">A descarga con datos mĆ³biles estĆ” desactivada nos axustes.\n\nQuere permitir a descarga temporalmente?\n\n <small>A sĆŗa decisiĆ³n lembrarase durante 10 minutos.</small></string> <string name="confirm_mobile_download_dialog_only_add_to_queue">Engadir a cola</string> <string name="confirm_mobile_download_dialog_enable_temporarily">Permitir temporalmente</string> <!--Mediaplayer messages--> @@ -218,13 +230,14 @@ <string name="playback_error_unknown">Fallo descoƱecido</string> <string name="no_media_playing_label">Non reproducindo</string> <string name="player_buffering_msg">Almacenando</string> + <string name="player_go_to_picture_in_picture">Modo imaxe-en-imaxe</string> <string name="playbackservice_notification_title">Reproducindo podcast</string> <string name="unknown_media_key">AntennaPod - chave de medios descoƱecida: %1$d</string> <!--Queue operations--> - <string name="lock_queue">Pechar a cola</string> - <string name="unlock_queue">Despechar a cola</string> - <string name="queue_locked">Cola pechada</string> - <string name="queue_unlocked">Cola despechada</string> + <string name="lock_queue">Bloquear a cola</string> + <string name="unlock_queue">Desbloquear a cola</string> + <string name="queue_locked">Cola bloqueada</string> + <string name="queue_unlocked">Cola desbloqueada</string> <string name="clear_queue_label">Limpar cola</string> <string name="undo">Desfacer</string> <string name="removed_from_queue">Elemento eliminado</string> @@ -234,7 +247,9 @@ <string name="date">Data</string> <string name="duration">DuraciĆ³n</string> <string name="episode_title">TĆtulo do episodio</string> - <string name="feed_title">TĆtulo da fonte</string> + <string name="feed_title">TĆtulo do podcast</string> + <string name="random">Aleatorio</string> + <string name="smart_shuffle">Barallado intelixente</string> <string name="ascending">Ascendente</string> <string name="descending">Descendente</string> <string name="clear_queue_confirmation_msg">Por favor confirme que quere limpar a cola e TODOS os episodios nela</string> @@ -243,15 +258,15 @@ <string name="flattr_auth_explanation">Pulse o botĆ³n inferior para iniciar o proceso de autenticaciĆ³n. SerĆ” redireccionado a pantalla de conexiĆ³n en Flattr no seu navegador e pediralle permiso para que AntennaPod poida acceder. Despois de dar permiso, voltarĆ” a esta pantalla de xeito automĆ”tico.</string> <string name="authenticate_label">Autenticar</string> <string name="return_home_label">Voltar ao inicio</string> - <string name="flattr_auth_success">Autenticouse correctamente! Xa pode enviar valoraciĆ³ns a Flattr desde o app.</string> + <string name="flattr_auth_success">Autenticouse correctamente! Xa pode enviar valoraciĆ³ns a Flattr desde o aplicativo.</string> <string name="no_flattr_token_title">Non se atopou o testemuƱo de Flattr</string> <string name="no_flattr_token_notification_msg">A sĆŗa conta de Flattr non semella estar conectada a AntennaPod. Toque aquĆ para autenticarse.</string> - <string name="no_flattr_token_msg">A sĆŗa conta de Flattr non semella estar conectada a AntennaPod. Ben pode conectar a sĆŗa conta a AntennaPod para interactuar en Flattr desde o app ou ben pode visitar o sitio web do elemento e darlle ao flattr desde alĆ.</string> + <string name="no_flattr_token_msg">A sĆŗa conta de Flattr non semella estar conectada a AntennaPod. Ben pode conectar a sĆŗa conta a AntennaPod para interactuar en Flattr desde o aplicativo ou ben pode visitar o sitio web do elemento e darlle ao flattr desde alĆ.</string> <string name="authenticate_now_label">Autenticar</string> <string name="action_forbidden_title">AcciĆ³n non permitida</string> <string name="action_forbidden_msg">AntennaPod non ten permiso para esta acciĆ³n. A razĆ³n poderĆa ser que o testemuƱo de acceso de AntennaPod ou a sĆŗa conta fosen rexeitados. Pode voltar a autenticarse ou visitar o sitio web do elemento.</string> <string name="access_revoked_title">Acceso rexeitado</string> - <string name="access_revoked_info">Eliminou correctamente o testemuƱo de acceso de AntennaPod a sĆŗa conta. Para completar o proceso deberĆ” eliminar este aplicativo da lista de aplicativos autorizados nos axustes da sĆŗa conta na web de Flattr.</string> + <string name="access_revoked_info">Eliminou correctamente o token de acceso de AntennaPod Ć” sĆŗa conta. Para completar o proceso deberĆ” eliminar este aplicativo da lista de aplicativos autorizados nos axustes da sĆŗa conta na web de Flattr.</string> <!--Flattr--> <string name="flattr_click_success">Flateraches algo!</string> <string name="flattr_click_success_count">Flateraches %d cousas!</string> @@ -272,7 +287,7 @@ <string name="enable_sonic">Habilitar Sonic</string> <!--Empty list labels--> <string name="no_items_label">Non hai elementos na lista.</string> - <string name="no_feeds_label">AĆnda non estĆ” suscrito a ningunha fonte.</string> + <string name="no_feeds_label">AĆnda non estĆ” subscrito a ningĆŗn podcast.</string> <string name="no_chapters_label">Este episodio non ten capĆtulos.</string> <string name="no_shownotes_label">Este episodio non ten notas de episodio.</string> <!--Preferences--> @@ -281,15 +296,23 @@ <string name="other_pref">Outro</string> <string name="about_pref">Sobre</string> <string name="queue_label">Cola</string> - <string name="services_label">Servizos</string> + <string name="integrations_label">IntegraciĆ³ns</string> <string name="flattr_label">Flattr</string> + <string name="flattr_summary">Servizo de micropagamentos</string> + <string name="automation">Automatizado</string> + <string name="download_pref_details">Detalles</string> + <string name="import_export_pref">Importar/Exportar</string> + <string name="appearance">Aspecto</string> + <string name="external_elements">Elementos externos</string> + <string name="interruptions">InterrupciĆ³ns</string> + <string name="buttons">BotĆ³ns do control de reproduciĆ³n</string> + <string name="media_player">Reprodutor de medios</string> <string name="pref_episode_cleanup_title">Limpeza de episodios</string> <string name="pref_episode_cleanup_summary">Os episodios que non estĆ”n na cola e tampouco son favoritos deberĆan poder ser candidatos a ser eliminados si a funciĆ³n Descarga AutomĆ”tica precisa espazo para novos episodios.</string> <string name="pref_pauseOnDisconnect_sum">Deter a reproduciĆ³n cando se desconectan os auriculares ou bluetooth</string> <string name="pref_unpauseOnHeadsetReconnect_sum">Retomar a reproduciĆ³n cando se conectan os auriculares</string> <string name="pref_unpauseOnBluetoothReconnect_sum">Retomar a reproduciĆ³n cando se reconecta o bluetooth</string> <string name="pref_hardwareForwardButtonSkips_title">O botĆ³n Adiante salta</string> - <string name="pref_hardwareForwardButtonSkips_sum">Cando se presiona o botĆ³n Adiante no dispositivo salta ao seguinte episodio en lugar de reproducir de xeito acelerado</string> <string name="pref_hardwarePreviousButtonRestarts_title">O botĆ³n Anterior reinicia</string> <string name="pref_hardwarePreviousButtonRestarts_sum">Cando se presiona Anterior no dispositivo reinicia o episodio no lugar de ir cara atrĆ”s</string> <string name="pref_followQueue_sum">Saltar ao seguinte elemento na cola cando remata o episodio</string> @@ -304,9 +327,9 @@ <string name="playback_pref">ReproduciĆ³n</string> <string name="network_pref">Rede</string> <string name="pref_autoUpdateIntervallOrTime_title">Intervalo de actualizaciĆ³n ou Hora do dĆa</string> - <string name="pref_autoUpdateIntervallOrTime_sum">Indicar un intervalo ou unha hora en concreto para actualizar automĆ”ticamente as fontes</string> - <string name="pref_autoUpdateIntervallOrTime_message">Pode establecer un <i>intervalo</i> como \"2 horas\", unha <i>hora do dĆa</i> en concreto como \"7:00 AM\" ou <i>deshabilitar</i>totalmente a actualizaciĆ³n automĆ”tica.\n\n<small>Aviso: indicar que pode haber un lixeiro retardo do momento da actualizaciĆ³n.</small></string> - <string name="pref_autoUpdateIntervallOrTime_Disable">Deshabilitar</string> + <string name="pref_autoUpdateIntervallOrTime_sum">Indicar un intervalo ou unha hora en concreto para actualizar automaticamente as fontes</string> + <string name="pref_autoUpdateIntervallOrTime_message">Pode establecer un <i>intervalo</i> como \"2 horas\", unha <i>hora do dĆa</i> en concreto como \"7:00 AM\" ou <i>desactivar</i> totalmente a actualizaciĆ³n automĆ”tica.\n\n<small>Aviso: pode haber un lixeiro retardo do momento da actualizaciĆ³n.</small></string> + <string name="pref_autoUpdateIntervallOrTime_Disable">Desactivar</string> <string name="pref_autoUpdateIntervallOrTime_Interval">Establecer intervalo</string> <string name="pref_autoUpdateIntervallOrTime_TimeOfDay">Establecer hora do dĆa</string> <string name="pref_autoUpdateIntervallOrTime_every">cada %1$s</string> @@ -335,10 +358,10 @@ <string name="pref_nav_drawer_sum">Personalice o aspecto da caixa de navegaciĆ³n</string> <string name="pref_nav_drawer_items_title">Estableza os elementos da Caixa de navegaciĆ³n</string> <string name="pref_nav_drawer_items_sum">Cambie os elementos que aparecerĆ”n na Caixa de navegaciĆ³n</string> - <string name="pref_nav_drawer_feed_order_title">Estableza a orde de suscriciĆ³n</string> - <string name="pref_nav_drawer_feed_order_sum">Cambie a orde das sĆŗas suscriciĆ³ns</string> - <string name="pref_nav_drawer_feed_counter_title">Establecer o contador de suscriciĆ³ns</string> - <string name="pref_nav_drawer_feed_counter_sum">Cambie a informaciĆ³n mostrada polo contador de suscriciĆ³ns</string> + <string name="pref_nav_drawer_feed_order_title">Estableza a orde das subscriciĆ³ns</string> + <string name="pref_nav_drawer_feed_order_sum">Cambie a orde das subscriciĆ³ns</string> + <string name="pref_nav_drawer_feed_counter_title">Establecer o contador de subscriciĆ³ns</string> + <string name="pref_nav_drawer_feed_counter_sum">Cambiar a informaciĆ³n mostrada polo contador de subscriciĆ³ns. TamĆ©n afecta Ć” orde das subscriciĆ³ns se \"Orde das subscriciĆ³ns\" estĆ” establecida a \"Contador\".</string> <string name="pref_set_theme_sum">Cambiar o aspecto de AntennaPod.</string> <string name="pref_automatic_download_title">Descarga automĆ”tica</string> <string name="pref_automatic_download_sum">Axuste a descarga automĆ”tica de episodios.</string> @@ -352,20 +375,21 @@ <string name="pref_episode_cache_title">CachĆ© de episodios</string> <string name="pref_theme_title_light">Claro</string> <string name="pref_theme_title_dark">Oscuro</string> + <string name="pref_theme_title_trueblack">Negro (listo para AMOLED)</string> <string name="pref_episode_cache_unlimited">Ilimitado</string> <string name="pref_update_interval_hours_plural">horas</string> <string name="pref_update_interval_hours_singular">hora</string> <string name="pref_update_interval_hours_manual">Manual</string> <string name="pref_gpodnet_authenticate_title">ConexiĆ³n</string> - <string name="pref_gpodnet_authenticate_sum">Conectar coa sĆŗa conta gpodder.net para sincronizar as sĆŗas suscriciĆ³ns.</string> + <string name="pref_gpodnet_authenticate_sum">Conecte coa sĆŗa conta gpodder.net para sincronizar as sĆŗas subscriciĆ³ns.</string> <string name="pref_gpodnet_logout_title">Desconectar</string> <string name="pref_gpodnet_logout_toast">Desconectouse correctamente</string> <string name="pref_gpodnet_setlogin_information_title">Cambiar a informaciĆ³n de conexiĆ³n</string> <string name="pref_gpodnet_setlogin_information_sum">Cambiar a informaciĆ³n de conexiĆ³n da sĆŗa conta gpodder.net</string> <string name="pref_gpodnet_sync_changes_title">Sincronizar os cambios agora</string> - <string name="pref_gpodnet_sync_changes_sum">Sincronizar os datos de suscriciĆ³n e estado dos episodios con gpodder.net</string> + <string name="pref_gpodnet_sync_changes_sum">Sincronizar os datos de subscriciĆ³n e estado dos episodios con gpodder.net</string> <string name="pref_gpodnet_full_sync_title">Sincronice todo agora</string> - <string name="pref_gpodnet_full_sync_sum">Sincronizar todas as suscriciĆ³ns e estados de episodios con gpodder.net</string> + <string name="pref_gpodnet_full_sync_sum">Sincronizar todas as subscriciĆ³ns e estados de episodios con gpodder.net</string> <string name="pref_gpodnet_sync_sum_last_sync_line">Ćltimo intento de sincronizaciĆ³n: %1$s (%2$s)</string> <string name="pref_gpodnet_sync_started">SincronizaciĆ³n iniciada</string> <string name="pref_gpodnet_full_sync_started">SincronizaciĆ³n completa iniciada</string> @@ -380,8 +404,6 @@ <string name="pref_rewind_sum">Personalice o nĆŗmero de segundos que se retrocede na reproduciĆ³n cando se pulsa o botĆ³n retroceso</string> <string name="pref_gpodnet_sethostname_title">Establecer servidor</string> <string name="pref_gpodnet_sethostname_use_default_host">Utilizar servidor por omisiĆ³n</string> - <string name="pref_expandNotify_title">Expandir notificaciĆ³n</string> - <string name="pref_expandNotify_sum">Expandir sempre a notificaciĆ³n para mostrar os botĆ³ns de reproduciĆ³n</string> <string name="pref_persistNotify_title">Controles persistentes de reproduciĆ³n</string> <string name="pref_persistNotify_sum">Manter notificaciĆ³n e controles na pantalla de bloqueo cando a reproduciĆ³n estĆ” pausada.</string> <string name="pref_compact_notification_buttons_title">Establecer botĆ³ns de pantalla de bloqueo</string> @@ -395,15 +417,14 @@ <string name="pref_expand_notify_unsupport_toast">As versiĆ³ns de Android anteriores a 4.1 non teƱen soporte para notificaciĆ³ns expandidas.</string> <string name="pref_queueAddToFront_sum">Engadir os novos episodios ao inicio da cola.</string> <string name="pref_queueAddToFront_title">Por no inicio da cola</string> - <string name="pref_smart_mark_as_played_disabled">Deshabilitado</string> + <string name="pref_smart_mark_as_played_disabled">Desactivado</string> <string name="pref_image_cache_size_title">TamaƱo da cachĆ© de imaxes</string> <string name="pref_image_cache_size_sum">TamaƱo da cachĆ© en disco para as imaxes.</string> <string name="crash_report_title">Informe de Desgracias</string> <string name="crash_report_sum">Enviar por email o informe de fallo xeral no aplicativo</string> <string name="send_email">Enviar email</string> <string name="experimental_pref">En probas</string> - <string name="pref_sonic_title">Sonic Media Player</string> - <string name="pref_sonic_message">Utilizar o sonic media player incluĆdo no lugar do reprodutor nativo de Android e Prestissimo</string> + <string name="pref_media_player_message">Escolla o reprodutor de medios para reproducir ficheiros</string> <string name="pref_current_value">Valor actual: %1$s</string> <string name="pref_proxy_title">Proxy</string> <string name="pref_proxy_sum">Establecer un proxy para a rede</string> @@ -412,9 +433,14 @@ <string name="pref_no_browser_found">Non se atopou un navegador web</string> <string name="pref_cast_title">Soporte Chromecast</string> <string name="pref_cast_message_play_flavor">Habilitar o soporte de reproduciĆ³n remota nun dispositivo Cast (como o Chromecast, Altofalantes ou Android TV)</string> - <string name="pref_cast_message_free_flavor">Chromecast precisa software propietario de terceiras partes que estĆ”n deshabilitadas en esta versiĆ³n de AntennaPod</string> + <string name="pref_cast_message_free_flavor">Chromecast precisa software propietario de terceiras partes que estĆ”n desactivadas en esta versiĆ³n de AntennaPod</string> <string name="pref_enqueue_downloaded_title">Foron descargados os elementos da cola</string> <string name="pref_enqueue_downloaded_summary">Engadir os episodios descargados a cola</string> + <string name="media_player_builtin">Reprodutor android nativo</string> + <string name="pref_videoBehavior_title">Ao saĆr do vĆdeo</string> + <string name="pref_videoBehavior_sum">Comportamento cando saia do vĆdeo</string> + <string name="stop_playback">Para a reproduciĆ³n</string> + <string name="continue_playback">Continuar a reproduciĆ³n de audio</string> <!--Auto-Flattr dialog--> <string name="auto_flattr_enable">Hablitar o flattring automĆ”tico</string> <string name="auto_flattr_after_percent">Flattr o episodio tan pronto como o %d por cento foi reproducido</string> @@ -424,8 +450,8 @@ <string name="search_hint">Buscar episodios</string> <string name="found_in_shownotes_label">Atopado nas notas do episodio</string> <string name="found_in_chapters_label">Atopado en capĆtulos</string> - <string name="found_in_authors_label">Atopado en autores</string> - <string name="found_in_feeds_label">Atopado en fontes</string> + <string name="found_in_authors_label">Atopado en autor(es)</string> + <string name="found_in_feeds_label">Atopado no podcast</string> <string name="search_status_no_results">Non se atoparon resultados</string> <string name="search_label">Buscar</string> <string name="found_in_title_label">Atopado no tĆtulo</string> @@ -451,12 +477,12 @@ <string name="html_export_label">Exportar HTML</string> <string name="exporting_label">Exportando...</string> <string name="export_error_label">Fallo ao exportar</string> - <string name="opml_export_success_title">ExportaciĆ³n OPML exitosa.</string> - <string name="opml_export_success_sum">O ficheiro .opml foi gardado en:\u0020</string> + <string name="export_success_title">Exportado con Ć©xito</string> + <string name="export_success_sum">Escribeuse o ficheiro exportado en:\n\n%1$s</string> <string name="opml_import_ask_read_permission">PrecĆsase acceso ao almacenamento externo para ler o ficheiro OPML</string> <!--Sleep timer--> <string name="set_sleeptimer_label">Establecer apagado automĆ”tico</string> - <string name="disable_sleeptimer_label">Deshabilitar o apagado automĆ”tico</string> + <string name="disable_sleeptimer_label">Desactivar o apagado automĆ”tico</string> <string name="enter_time_here_label">Introducir tempo</string> <string name="sleep_timer_label">Apagado automĆ”tico</string> <string name="time_left_label">Tempo restante:\u0020</string> @@ -479,9 +505,9 @@ <item quantity="one">1 hora</item> <item quantity="other">%d horas</item> </plurals> - <string name="auto_enable_label">Habilitar automĆ”ticamente</string> + <string name="auto_enable_label">Habilitar automaticamente</string> <string name="sleep_timer_enabled_label">Apagado automĆ”tico habilitado</string> - <string name="sleep_timer_disabled_label">Apagado automĆ”tico deshabilitado</string> + <string name="sleep_timer_disabled_label">Apagado automĆ”tico desactivado</string> <!--gpodder.net--> <string name="gpodnet_taglist_header">CATEGORĆAS</string> <string name="gpodnet_toplist_header">PODCASTS TOP</string> @@ -504,7 +530,7 @@ <string name="gpodnetauth_device_caption_errorEmpty">Non pode quedar baldeiro o titulo</string> <string name="gpodnetauth_device_butChoose">Escoller</string> <string name="gpodnetauth_finish_title">ConexiĆ³n correcta!</string> - <string name="gpodnetauth_finish_descr">ParabĆ©ns! A sĆŗa conta gpodder.net estĆ” conectada ao dispositivo. AntennaPod poderĆ” agora sincronizar automĆ”ticamente as sĆŗas suscriciĆ³ns no dispositivo na conta de gpodder.net</string> + <string name="gpodnetauth_finish_descr">ParabĆ©ns! A sĆŗa conta gpodder.net estĆ” conectada ao dispositivo. AntennaPod poderĆ” agora sincronizar automaticamente as sĆŗas subscriciĆ³ns no dispositivo na conta de gpodder.net</string> <string name="gpodnetauth_finish_butsyncnow">Iniciar a sincronizaciĆ³n</string> <string name="gpodnetauth_finish_butgomainscreen">Ir a pantalla principal</string> <string name="gpodnetsync_auth_error_title">fallo na autenticaciĆ³n en gpodder.net</string> @@ -530,14 +556,14 @@ <string name="folder_not_empty_dialog_title">O cartafol non estĆ” baldeiro</string> <string name="folder_not_empty_dialog_msg">O cartafol escollido non estĆ” baldeiro. As descargas de medios e outros ficheiros situaranse directamente en este cartafol. Proceder de todos xeitos?</string> <string name="set_to_default_folder">Escolla o cartafol por omisiĆ³n</string> - <string name="pref_pausePlaybackForFocusLoss_sum">Pausar a reproduciĆ³n en lugar de baixar o volume cando outro app quere reproducir un son.</string> + <string name="pref_pausePlaybackForFocusLoss_sum">Pausar a reproduciĆ³n en lugar de baixar o volume cando outro aplicativo quere reproducir un son.</string> <string name="pref_pausePlaybackForFocusLoss_title">Pausa para interrupciĆ³ns</string> <string name="pref_resumeAfterCall_sum">Retomar a reproduciĆ³n despois de rematar a chamada telefĆ³nica</string> <string name="pref_resumeAfterCall_title">Retomar despois da chamada</string> <string name="pref_restart_required">AntennaPod debe reiniciarse para que esta opciĆ³n se aplique.</string> <!--Online feed view--> - <string name="subscribe_label">Suscribir</string> - <string name="subscribed_label">Suscrito</string> + <string name="subscribe_label">Subscribir</string> + <string name="subscribed_label">Subscrito</string> <string name="downloading_label">Descargando...</string> <!--Content descriptions for image buttons--> <string name="rewind_label">Rebobinar</string> @@ -562,10 +588,10 @@ <!--Progress information--> <string name="progress_upgrading_database">Actualizando a base de datos</string> <!--AntennaPodSP--> - <string name="sp_apps_importing_feeds_msg">Importando as suscriciĆ³ns desde apps de propĆ³sito Ćŗnico...</string> + <string name="sp_apps_importing_feeds_msg">Importando as subscriciĆ³ns desde aplicativos de propĆ³sito Ćŗnico...</string> <string name="search_itunes_label">Buscar en iTunes</string> <string name="filter">Filtrado</string> - <string name="search_fyyd_label">Buscar fyyd</string> + <string name="search_fyyd_label">Buscar en fyyd</string> <!--Episodes apply actions--> <string name="all_label">Todo</string> <string name="selected_all_label">Seleccionar todos os episodios</string> @@ -593,7 +619,7 @@ <string name="sort_duration_short_long">DuraciĆ³n (Curto \u2192 Longo)</string> <string name="sort_duration_long_short">DuraciĆ³n (Longo \u2192 Curto)</string> <!--Rating dialog--> - <string name="rating_title">Gosta de AntennaPod?</string> + <string name="rating_title">Goza de AntennaPod?</string> <string name="rating_message">AgradecerĆamos que dedicase un intre a valorar AntennaPod.</string> <string name="rating_never_label">Pasa de min oh!</string> <string name="rating_later_label">Lembrar mĆ”is tarde</string> @@ -621,11 +647,11 @@ <string name="proxy_port_invalid_error">Porto non vĆ”lido</string> <!--Database import/export--> <string name="import_export">Importar/Exportar base de datos</string> - <string name="import_export_warning">Esta funciĆ³n experimental utilĆzase para transferir as sĆŗas suscriciĆ³ns e episodios reproducidos en outro dispositivo.\n\nAs bases de datos exportadas sĆ³ se poden importar si utiliza a misma versiĆ³n de AntennaPod. De todos xeitos, esta funciĆ³n pode comportarse de xeito raro.\n\nDespois de importar, os episodios poderĆan ser mostrados como descargados sin telo sido. Simplemente pulse o botĆ³n de reproduciĆ³n dos episodios para que AntennaPod detecte esto.</string> + <string name="import_export_warning">Esta funciĆ³n experimental utilĆzase para transferir as sĆŗas subscriciĆ³ns e episodios reproducidos noutro dispositivo.\n\nAs bases de datos exportadas sĆ³ se poden importar se utiliza a misma versiĆ³n de AntennaPod. De todos xeitos, esta funciĆ³n pode comportarse de xeito raro.\n\nDespois de importar, os episodios poderĆan ser mostrados como descargados sin telo sido. Simplemente pulse o botĆ³n de reproduciĆ³n dos episodios para que AntennaPod detecte esto.</string> <string name="label_import">Importar</string> <string name="label_export">Exportar</string> <string name="import_select_file">Escolla o ficheiro a importar</string> - <string name="export_ok">Exportouse correctamente. A base de datos escribeuse na tarxeta SD.</string> + <string name="export_ok">Exportado con Ć©xito.</string> <string name="import_ok">ImportaciĆ³n correcta.\n\nPulse OK para reiniciar AntennaPod</string> <!--Casting--> <string name="cast_media_route_menu_title">Reproducir en...</string> @@ -643,4 +669,13 @@ <string name="cast_failed_seek">Non se puido cambiar a posiciĆ³n no dispositivo de emisiĆ³n</string> <string name="cast_failed_receiver_player_error">O reprodutor receptor atopou un fallo grave</string> <string name="cast_failed_media_error_skipping">Fallo na reproduciĆ³n de medios. Saltando...</string> + <!--Notification channels--> + <string name="notification_channel_user_action">AcciĆ³n requerida</string> + <string name="notification_channel_user_action_description">Mostrado si a sĆŗa acciĆ³n Ć© requerida, por exemplo si precisa introducir o contrasinal.</string> + <string name="notification_channel_downloading">Descargando</string> + <string name="notification_channel_downloading_description">Mostrado durante a descarga actual.</string> + <string name="notification_channel_playing">Soando agora</string> + <string name="notification_channel_playing_description">Permite controlar a reproduciĆ³n. Esta Ć© a notificaciĆ³n principal que verĆ” mentras reproduce un podcast.</string> + <string name="notification_channel_error">Fallos</string> + <string name="notification_channel_error_description">Mostrado si algo falla, por exemplo si a descarga ou a sincronizaciĆ³n con gpodder fallan.</string> </resources> diff --git a/core/src/main/res/values-hi-rIN/strings.xml b/core/src/main/res/values-hi-rIN/strings.xml index 7e3333a37..2cb584c48 100644 --- a/core/src/main/res/values-hi-rIN/strings.xml +++ b/core/src/main/res/values-hi-rIN/strings.xml @@ -1,35 +1,75 @@ <?xml version='1.0' encoding='UTF-8'?> <resources xmlns:tools="http://schemas.android.com/tools"> <!--Activitiy and fragment titles--> + <string name="feed_update_receiver_name">ą¤øą¤¬ą„ą¤øą„ą¤ą„ą¤°ą¤æą¤Ŗą„ą¤¶ą¤Øą„ą¤ø ą¤ą¤¾ ą¤
ą¤¦ą„ą¤Æą¤¤ą¤Ø </string> <string name="feeds_label">ą¤«ą¤æą¤”ą„ą¤ø</string> + <string name="statistics_label">ą¤ą¤ą¤ą¤”ą¤¼ą„</string> + <string name="add_feed_label">ą¤Ŗą„ą¤”ą¤ą¤¾ą¤øą„ą¤ ą¤ą„ą¤”ą¤¼ą„ą¤</string> + <string name="episodes_label">ą¤ą¤Ŗą¤æą¤øą„ą¤”</string> + <string name="all_episodes_short_label">ą¤øą¤¾ą¤°ą„</string> + <string name="new_episodes_label">ą¤Øą¤Æą„</string> + <string name="favorite_episodes_label">ą¤Ŗą¤øą¤ą¤¦ą„ą¤¦ą¤¾</string> <string name="new_label">ą¤Øą¤Æą¤¾</string> <string name="settings_label">ą¤øą„ą¤ą¤æą¤ą¤ą„ą¤ø</string> <string name="downloads_label">ą¤”ą¤¾ą¤ą¤Øą¤²ą„ą¤”</string> + <string name="downloads_running_label">ą¤ą¤¾ą¤°ą„</string> + <string name="downloads_completed_label">ą¤øą¤ą¤Ŗą¤Øą„ą¤Ø ą¤¹ą„ą¤</string> + <string name="downloads_log_label">ą¤
ą¤ą¤æą¤²ą„ą¤</string> + <string name="subscriptions_label">ą¤øą¤¬ą„ą¤øą„ą¤ą„ą¤°ą¤æą¤Ŗą„ą¤¶ą¤Øą„ą¤ø</string> + <string name="subscriptions_list_label">ą¤øą¤¬ą„ą¤øą„ą¤ą„ą¤°ą¤æą¤Ŗą„ą¤¶ą¤Øą„ą¤ø ą¤ą„ ą¤øą„ą¤ą„</string> <string name="cancel_download_label">ą¤”ą¤¾ą¤ą¤Øą¤²ą„ą¤” ą¤°ą¤¦ą„ą¤¦ ą¤ą¤°ą„ą¤</string> <string name="playback_history_label">ą¤Ŗą„ą¤²ą„ą¤¬ą„ą¤ ą¤ą¤¤ą¤æą¤¹ą¤¾ą¤ø</string> <string name="gpodnet_main_label">gpodder.net</string> - <string name="gpodnet_auth_label">gpodder.net login</string> + <string name="gpodnet_summary">ą¤
ą¤Øą„ą¤Æ ą¤ą¤Ŗą¤ą¤°ą¤£ ą¤ą„ ą¤øą¤¾ą¤„ ą¤øą¤®ą¤ą„ą¤°ą¤®ą¤æą¤ ą¤ą¤°ą„ą¤</string> + <string name="gpodnet_auth_label">gpodder.net ą¤²ą„ą¤ą¤æą¤Ø</string> + <string name="free_space_label">%1$s ą¤ą¤¾ą¤²ą„</string> + <string name="episode_cache_full_title">ą¤ą¤Ŗą¤æą¤øą„ą¤” ą¤ą„ą¤¶ ą¤ą¤° ą¤ą¤Æą¤¾ ą¤¹ą„</string> + <string name="episode_cache_full_message">ą¤ą¤Ŗą¤æą¤øą„ą¤” ą¤ą„ą¤¶ ą¤øą„ą¤®ą¤¾ ą¤¤ą¤ ą¤Ŗą¤¹ą„ą¤ą¤ ą¤ą¤Æą¤¾ ą¤¹ą„ą„¤ ą¤ą¤Ŗ ą¤øą„ą¤ą¤æą¤ą¤ ą¤®ą„ą¤ ą¤ą„ą¤¶ ą¤ą¤¾ ą¤ą¤ą¤¾ą¤° ą¤¬ą¤¢ą¤¼ą¤¾ ą¤øą¤ą¤¤ą„ ą¤¹ą„ą¤ą„¤</string> + <string name="synchronizing">ą¤øą¤®ą¤ą„ą¤°ą¤®ą¤æą¤ ą¤¹ą„ ą¤°ą¤¹ą¤¾ ą¤¹ą„...</string> <!--Statistics fragment--> + <string name="total_time_listened_to_podcasts">ą¤ą¤²ą¤¾ą¤Æą„ ą¤ą¤ ą¤Ŗą„ą¤”ą¤ą¤¾ą¤øą„ą¤ ą¤ą¤¾ ą¤ą„ą¤² ą¤øą¤®ą¤Æ:</string> + <string name="statistics_details_dialog">%2$d ą¤®ą„ą¤ ą¤øą„ %1$d ą¤ą¤Ŗą¤æą¤øą„ą¤” ą¤¶ą„ą¤°ą„ ą¤ą¤æą¤ ą¤ą¤ ą¤¹ą„.\n\n%4$s ą¤®ą„ą¤ ą¤øą„ %3$są¤Ŗą„ą¤°ą„ ą¤¹ą„ą¤ ą¤¹ą„ą„¤ </string> + <string name="statistics_mode_normal">ą¤µą¤¾ą¤øą„ą¤¤ą¤µ ą¤®ą„ą¤ ą¤ą¤²ą¤¾ą¤ ą¤ą¤Æą„ ą¤
ą¤µą¤§ą¤æ ą¤ą„ ą¤ą¤£ą¤Øą¤¾ ą¤ą¤°ą„ą¤ą„¤ ą¤¦ą„ ą¤¬ą¤¾ą¤° ą¤ą¤²ą¤Øą„ ą¤Ŗą¤° ą¤¦ą„ ą¤¬ą¤¾ą¤° ą¤ą¤æą¤Øą¤¾ ą¤ą¤¾ą¤Æą„ą¤ą¤¾, ą¤ą¤¬ą¤ą¤æ ą¤ą¤² ą¤ą„ą¤ą¤¾ ą¤øą¤¾ ą¤ą¤æą¤¹ą„ą¤Øą¤æą¤¤ą„ ą¤ą„ ą¤Øą¤¹ą„ ą¤ą¤æą¤Øą¤¾ ą¤ą¤¾ą¤Æą„ą¤ą¤¾ą„¤</string> + <string name="statistics_speed_not_counted">ą¤øą„ą¤ą¤Øą¤¾: ą¤Ŗą„ą¤²ą„ą¤¬ą„ą¤ ą¤ą¤¤ą¤æ ą¤ą„ ą¤ą¤ą„ ą¤ą„ ą¤§ą„ą¤Æą¤¾ą¤Ø ą¤®ą„ą¤ ą¤Øą¤¹ą„ą¤ ą¤°ą¤ą¤¾ ą¤ą¤¾ą¤¤ą¤¾ ą¤¹ą„ą„¤</string> <!--Main activity--> + <string name="drawer_open">ą¤®ą„ą¤Øą„ą¤Æą„ ą¤ą„ą¤²ą„ą¤</string> + <string name="drawer_close">ą¤®ą„ą¤Øą„ą¤Æą„ ą¤¬ą¤ą¤¦ ą¤ą¤°ą„ą¤</string> + <string name="drawer_preferences">ą¤”ą„ą¤°ą¤¾ą¤µą¤° ą¤ą„ ą¤Ŗą„ą¤°ą¤¾ą¤„ą¤®ą¤æą¤ą¤¤ą¤¾ą¤ą¤</string> + <string name="drawer_feed_order_unplayed_episodes">ą¤ą¤¾ą¤ą¤ą¤ą¤° ą¤øą„ ą¤ą„ą¤°ą¤®ą¤¬ą¤¦ą„ą¤§ ą¤ą¤°ą„ą¤</string> + <string name="drawer_feed_order_alphabetical">ą¤µą¤°ą„ą¤£ą¤¾ą¤Øą„ą¤ą„ą¤°ą¤® ą¤øą„ ą¤ą„ą¤°ą¤®ą¤¬ą¤¦ą„ą¤§ ą¤ą¤°ą„ą¤</string> + <string name="drawer_feed_order_last_update">ą¤Ŗą„ą¤°ą¤ą¤¾ą¤¶ą¤Ø ą¤¤ą¤æą¤„ą¤æ ą¤øą„ ą¤ą„ą¤°ą¤®ą¤¬ą¤¦ą„ą¤§ ą¤ą¤°ą„ą¤</string> + <string name="drawer_feed_order_most_played">ą¤ą¤²ą¤¾ą¤ ą¤ą¤ ą¤ą¤Ŗą¤æą¤øą„ą¤” ą¤ą„ ą¤øą¤ą¤ą„ą¤Æą¤¾</string> + <string name="drawer_feed_counter_new_unplayed">ą¤Øą¤ ą¤ą¤° ą¤Øą¤¹ą„ą¤ ą¤ą¤²ą¤¾ą¤ ą¤ą¤ ą¤ą¤Ŗą¤æą¤øą„ą¤” ą¤ą„ ą¤øą¤ą¤ą„ą¤Æą¤¾</string> + <string name="drawer_feed_counter_new">ą¤Øą¤ ą¤ą¤Ŗą¤æą¤øą„ą¤” ą¤ą„ ą¤øą¤ą¤ą„ą¤Æą¤¾</string> + <string name="drawer_feed_counter_unplayed">ą¤Øą¤¹ą„ą¤ ą¤ą¤²ą¤¾ą¤ ą¤ą¤ ą¤ą¤Ŗą¤æą¤øą„ą¤” ą¤ą„ ą¤øą¤ą¤ą„ą¤Æą¤¾</string> + <string name="drawer_feed_counter_downloaded">ą¤”ą¤¾ą¤ą¤Øą¤²ą„ą¤” ą¤ą¤æą¤ ą¤ą¤ ą¤ą¤Ŗą¤æą¤øą„ą¤” ą¤ą„ ą¤øą¤ą¤ą„ą¤Æą¤¾</string> + <string name="drawer_feed_counter_none">ą¤¶ą„ą¤Øą„ą¤Æ</string> <!--Webview actions--> <string name="open_in_browser_label">ą¤¬ą„ą¤°ą¤¾ą¤ą¤ą¤¼ą¤° ą¤®ą„ą¤ ą¤ą„ą¤²ą„ą¤</string> <string name="copy_url_label">ą¤ą„ą¤Ŗą„ ą¤Æą„ą¤ą¤°ą¤ą¤²</string> <string name="share_url_label">ą¤¶ą„ą¤Æą¤° ą¤Æą„ą¤ą¤°ą¤ą¤²</string> - <string name="copied_url_msg">ą¤Æą„ą¤ą¤°ą¤ą¤² ą¤ą„ ą¤ą„ą¤²ą¤æą¤Ŗą¤¬ą„ą¤°ą„ą¤” ą¤Ŗą¤° ą¤ą„ą¤Ŗą„ ą¤ą¤° ą¤²ą¤æą¤Æą¤¾ ą¤ą¤Æą¤¾ ą¤¹ą„</string> + <string name="copied_url_msg">ą¤Æą„ą¤ą¤°ą¤ą¤² ą¤ą„ ą¤ą„ą¤²ą¤æą¤Ŗą¤¬ą„ą¤°ą„ą¤” ą¤Ŗą¤° ą¤ą„ą¤Ŗą„ ą¤ą¤æą¤Æą¤¾ ą¤ą¤Æą¤¾ ą¤¹ą„</string> + <string name="go_to_position_label">ą¤ą¤ø ą¤øą„ą¤„ą¤¾ą¤Ø ą¤Ŗą¤° ą¤ą¤¾ą¤ą¤</string> <!--Playback history--> <string name="clear_history_label"> ą¤¹ą¤æą¤øą„ą¤ą„ą¤°ą„ ą¤¹ą¤ą¤¾ą¤ą¤</string> <!--Other--> <string name="confirm_label">ą¤Ŗą„ą¤·ą„ą¤ą¤æ ą¤ą¤°ą„ą¤</string> <string name="cancel_label">ą¤°ą¤¦ą„ą¤¦ ą¤ą¤°ą„ą¤</string> - <string name="author_label"> ą¤Øą¤æą¤°ą„ą¤®ą¤¾ą¤¤ą¤¾</string> + <string name="yes">ą¤¹ą¤¾ą¤</string> + <string name="no">ą¤Øą¤¹ą„ą¤</string> + <string name="reset">ą¤°ą„ą¤øą„ą¤</string> + <string name="author_label">ą¤ą¤²ą¤¾ą¤ą¤¾ą¤°</string> <string name="language_label">ą¤ą¤¾ą¤·ą¤¾</string> + <string name="url_label">URL</string> <string name="podcast_settings_label">ą¤øą„ą¤ą¤æą¤ą¤ą„ą¤ø</string> <string name="cover_label">ą¤¤ą¤øą„ą¤µą„ą¤°</string> <string name="error_label">ą¤¤ą„ą¤°ą„ą¤ą¤æ</string> <string name="error_msg_prefix">ą¤ą¤ ą¤¤ą„ą¤°ą„ą¤ą¤æ ą¤¹ą„ ą¤ą¤:</string> + <string name="needs_storage_permission">ą¤ą¤ø ą¤ą¤¾ą¤°ą„ą¤Æ ą¤ą„ ą¤Ŗą„ą¤°ą„ą¤¤ą„ ą¤ą„ ą¤²ą¤æą¤ ą¤øą„ą¤ą„ą¤°ą„ą¤ ą¤
ą¤Øą„ą¤®ą¤¤ą¤æ ą¤ą„ ą¤ą¤µą¤¶ą„ą¤Æą¤ą¤¤ą¤¾ ą¤¹ą„</string> <string name="refresh_label">ą¤¤ą¤¾ą¤ą¤¼ą¤¾ ą¤ą¤°ą„ą¤</string> <string name="external_storage_error_msg">ą¤ą„ą¤ ą¤¬ą¤¾ą¤¹ą¤°ą„ ą¤ą¤ą¤”ą¤¾ą¤°ą¤£ ą¤ą¤Ŗą¤²ą¤¬ą„ą¤§ ą¤Øą¤¹ą„ą¤ ą¤¹ą„.ą¤øą„ą¤Øą¤æą¤¶ą„ą¤ą¤æą¤¤ ą¤ą¤°ą„ą¤ ą¤ą¤æ ą¤ą¤Ŗą¤Øą„ ą¤¬ą¤¾ą¤¹ą¤°ą„ ą¤ą¤ą¤”ą¤¾ą¤°ą¤£ ą¤®ą„ą¤¹ą¤æą¤® ą¤¶ą„ą¤°ą„ ą¤ą„ ą¤¹ą„ ą¤¤ą¤¾ą¤ą¤æ ą¤
ą¤Øą„ą¤Ŗą„ą¤°ą¤Æą„ą¤ ą¤ ą„ą¤ ą¤øą„ ą¤ą¤¾ą¤® ą¤ą¤° ą¤øą¤ą¤¤ą„ ą¤¹ą„ą¤</string> <string name="chapters_label">ą¤
ą¤§ą„ą¤Æą¤¾ą¤Æ</string> + <string name="chapter_duration">ą¤
ą¤µą¤§ą¤æ: %1$s</string> <string name="shownotes_label">ą¤Øą„ą¤ą„ą¤ø ą¤¦ą¤æą¤ą¤¾ą¤ą¤</string> <string name="description_label">ą¤µą¤æą¤µą¤°ą¤£</string> <string name="most_recent_prefix">ą¤øą¤¬ą¤øą„ ą¤¹ą¤¾ą¤² ą¤ą¤¾ ą¤Ŗą„ą¤°ą¤ą¤°ą¤£:\u0020</string> @@ -37,40 +77,100 @@ <string name="length_prefix">ą¤²ą¤ą¤¬ą¤¾ą¤:\u0020</string> <string name="size_prefix">ą¤øą¤¾ą¤ą¤:\u0020</string> <string name="processing_label">ą¤Ŗą„ą¤°ą¤øą¤ą¤øą„ą¤ą¤°ą¤£</string> + <string name="loading_label">ą¤²ą„ą¤” ą¤¹ą„ ą¤°ą¤¹ą¤¾ ą¤¹ą„...</string> <string name="save_username_password_label">ą¤Æą„ą¤ą¤¼ą¤°ą¤Øą„ą¤® ą¤ą¤° ą¤Ŗą¤¾ą¤øą¤µą¤°ą„ą¤” ą¤øą¤¹ą„ą¤ą„ą¤</string> <string name="close_label">ą¤¬ą¤ą¤¦ ą¤ą¤°ą„ą¤</string> <string name="retry_label">ą¤Ŗą„ą¤Ø: ą¤Ŗą„ą¤°ą¤Æą¤¾ą¤ø</string> <string name="auto_download_label">ą¤ą¤ą„ ą¤”ą¤¾ą¤ą¤Øą¤²ą„ą¤” ą¤®ą„ą¤ ą¤¶ą¤¾ą¤®ą¤æą¤² ą¤ą¤°ą„ą¤</string> + <string name="auto_download_apply_to_items_title">ą¤Ŗą¤æą¤ą¤²ą„ ą¤ą¤Ŗą¤æą¤øą„ą¤” ą¤Ŗą¤° ą¤²ą¤¾ą¤ą„ ą¤ą¤°ą„ą¤</string> + <string name="auto_download_apply_to_items_message">ą¤Øą¤Æą¤¾ <i>ą¤ą¤ą„ ą¤”ą¤¾ą¤ą¤Øą¤²ą„ą¤”</i> ą¤øą„ą¤ą¤æą¤ą¤ ą¤øą„ą¤µą¤ą¤¾ą¤²ą¤æą¤¤ ą¤°ą„ą¤Ŗ ą¤øą„ ą¤Øą¤ ą¤ą¤Ŗą¤æą¤øą„ą¤” ą¤Ŗą¤° ą¤²ą¤¾ą¤ą„ ą¤ą„ ą¤ą¤¾ą¤ą¤ą¤¾ą„¤\ną¤ą„ą¤Æą¤¾ ą¤ą¤Ŗ ą¤ą¤øą¤øą„ ą¤Ŗą¤¹ą¤²ą„ ą¤Ŗą„ą¤°ą¤ą¤¾ą¤¶ą¤æą¤¤ ą¤ą¤Ŗą¤æą¤øą„ą¤” ą¤Ŗą¤° ą¤ą„ ą¤²ą¤¾ą¤ą„ ą¤ą¤°ą¤Øą¤¾ ą¤ą¤¾ą¤¹ą¤¤ą„ ą¤¹ą„ą¤?</string> + <string name="auto_delete_label">ą¤ą¤ą„ ą¤”ą¤æą¤²ą„ą¤ ą¤ą¤Ŗą¤æą¤øą„ą¤”</string> + <string name="parallel_downloads_suffix">\u0020ą¤øą¤®ą¤¾ą¤Øą¤¾ą¤ą¤¤ą¤° ą¤”ą¤¾ą¤ą¤Øą¤²ą„ą¤”</string> + <string name="feed_auto_download_global">ą¤øą¤¾ą¤°ą„ą¤µą¤ą„ą¤®ą¤æą¤ ą¤”ą¤æą¤«ą¤¼ą„ą¤²ą„ą¤</string> + <string name="feed_auto_download_always">ą¤¹ą¤®ą„ą¤¶ą¤¾</string> + <string name="feed_auto_download_never">ą¤ą¤ą„ ą¤Øą¤¹ą„ą¤</string> + <string name="send_label">ą¤ą„ą¤ą„ą¤...</string> + <string name="episode_cleanup_never">ą¤ą¤ą„ ą¤Øą¤¹ą„ą¤</string> + <string name="episode_cleanup_queue_removal">ą¤ą¤¬ ą„ą¤¤ą¤¾ą¤° ą¤®ą„ą¤ ą¤Øą¤¹ą„ą¤ ą¤¹ą„</string> + <string name="episode_cleanup_after_listening">ą¤øą¤®ą¤¾ą¤Ŗą„ą¤¤ą¤æ ą¤ą„ ą¤¬ą¤¾ą¤¦</string> + <plurals name="episode_cleanup_days_after_listening"> + <item quantity="one">ą¤øą¤®ą¤¾ą¤Ŗą„ą¤¤ą¤æ ą¤ą„ 1 ą¤¦ą¤æą¤Ø ą¤¬ą¤¾ą¤¦</item> + <item quantity="other">ą¤øą¤®ą¤¾ą¤Ŗą„ą¤¤ą¤æ ą¤ą„ %d ą¤¦ą¤æą¤Ø ą¤¬ą¤¾ą¤¦</item> + </plurals> <!--'Add Feed' Activity labels--> <string name="feedurl_label">ą¤Æą„ą¤ą¤°ą¤ą¤² ą¤«ą¤¼ą„ą¤”</string> + <string name="etxtFeedurlHint">www.example.com/feed</string> <string name="txtvfeedurl_label">ą¤Æą„ą¤ą¤°ą¤ą¤² ą¤¦ą„ą¤µą¤¾ą¤°ą¤¾ ą¤Ŗą„ą¤”ą¤ą¤¾ą¤øą„ą¤ ą¤ą„ą¤”ą¤¼ą„ą¤</string> <string name="podcastdirectories_label">ą¤Ŗą„ą¤”ą¤ą¤¾ą¤øą„ą¤ ą¤Øą¤æą¤°ą„ą¤¦ą„ą¤¶ą¤æą¤ą¤¾</string> + <string name="podcastdirectories_descr">ą¤Øą¤ ą¤Ŗą„ą¤”ą¤ą¤¾ą¤øą„ą¤ ą¤ą„ ą¤²ą¤æą¤, ą¤ą¤Ŗ iTunes ą¤Æą¤¾ fyyd ą¤ą„ą¤ ą¤øą¤ą¤¤ą„ ą¤¹ą„ą¤, ą¤Æą¤¾ gpodder.net ą¤ą„ ą¤Øą¤¾ą¤®, ą¤¶ą„ą¤°ą„ą¤£ą„ ą¤Æą¤¾ ą¤²ą„ą¤ą¤Ŗą„ą¤°ą¤æą¤Æą¤¤ą¤¾ ą¤¦ą„ą¤µą¤¾ą¤°ą¤¾ ą¤¬ą„ą¤°ą¤¾ą¤ą¤ą¤¼ ą¤ą¤° ą¤øą¤ą¤¤ą„ ą¤¹ą„ą¤ą„¤</string> + <string name="browse_gpoddernet_label">gpodder.net ą¤¬ą„ą¤°ą¤¾ą¤ą¤ą¤¼ ą¤ą¤°ą„ą¤</string> <!--Actions on feeds--> <string name="mark_all_read_label">ą¤Ŗą¤¢ą¤¼ą¤Øą„ ą¤ą„ ą¤°ą„ą¤Ŗ ą¤®ą„ą¤ ą¤øą¤ą„ ą¤ą„ ą¤ą¤æą¤¹ą„ą¤Øą¤æą¤¤ ą¤ą¤°ą„ą¤</string> <string name="show_info_label">ą¤ą¤¾ą¤Øą¤ą¤¾ą¤°ą„ ą¤¦ą¤æą¤ą¤¾ą¤ą¤</string> - <string name="remove_feed_label">ą¤Ŗą„ą¤”ą¤ą¤¾ą¤øą„ą¤ ą¤¹ą¤ą¤¾ą¤ą¤ -</string> - <string name="share_link_label">ą¤¶ą„ą¤Æą¤° ą¤µą„ą¤¬ą¤øą¤¾ą¤ą¤ ą¤²ą¤æą¤ą¤</string> - <string name="feed_remover_msg">ą¤«ą¤¼ą„ą¤” ą¤Øą¤æą¤ą¤¾ą¤² ą¤°ą¤¹ą¤¾ ą¤¹ą„</string> + <string name="show_feed_settings_label">ą¤Ŗą„ą¤”ą¤ą¤¾ą¤øą„ą¤ ą¤øą„ą¤ą¤æą¤ą¤ ą¤¦ą¤æą¤ą¤¾ą¤ą¤</string> + <string name="feed_info_label">ą¤Ŗą„ą¤”ą¤ą¤¾ą¤øą„ą¤ ą¤ą„ ą¤ą¤¾ą¤Øą¤ą¤¾ą¤°ą„</string> + <string name="feed_settings_label">ą¤Ŗą„ą¤”ą¤ą¤¾ą¤øą„ą¤ ą¤ą„ ą¤øą„ą¤ą¤æą¤ą¤</string> + <string name="rename_feed_label">ą¤Ŗą„ą¤”ą¤ą¤¾ą¤øą„ą¤ ą¤ą¤¾ ą¤Øą¤¾ą¤® ą¤¬ą¤¦ą¤²ą„</string> + <string name="remove_feed_label">ą¤Ŗą„ą¤”ą¤ą¤¾ą¤øą„ą¤ ą¤¹ą¤ą¤¾ą¤</string> + <string name="share_label">ą¤¶ą„ą¤Æą¤°...</string> + <string name="share_link_label">ą¤ą¤Ŗą¤æą¤øą„ą¤” URL ą¤¶ą„ą¤Æą¤° ą¤ą¤°ą„</string> + <string name="share_link_with_position_label">ą¤øą„ą¤„ą¤¾ą¤Ø ą¤ą„ ą¤øą¤¾ą¤„ ą¤ą¤Ŗą¤æą¤øą„ą¤” URL ą¤¶ą„ą¤Æą¤° ą¤ą¤°ą„</string> + <string name="share_file_label">ą¤«ą¤¾ą¤ą¤² ą¤¶ą„ą¤Æą¤° ą¤ą¤°ą„</string> + <string name="share_feed_url_label">ą¤«ą„ą¤” URL ą¤¶ą„ą¤Æą¤° ą¤ą¤°ą„</string> + <string name="share_item_url_label">ą¤®ą„ą¤”ą¤æą¤Æą¤¾ ą¤«ą¤¾ą¤ą¤² ą¤¶ą„ą¤Æą¤° ą¤ą¤°ą„</string> + <string name="share_item_url_with_position_label"> ą¤øą„ą¤„ą¤¾ą¤Ø ą¤ą„ ą¤øą¤¾ą¤„ ą¤®ą„ą¤”ą¤æą¤Æą¤¾ ą¤«ą¤¾ą¤ą¤² ą¤¶ą„ą¤Æą¤° ą¤ą¤°ą„</string> + <string name="feed_remover_msg">ą¤Ŗą„ą¤”ą¤ą¤¾ą¤øą„ą¤ ą¤¹ą¤ą¤¾ą¤Æą¤¾ ą¤ą¤¾ą¤°ą¤¹ą¤¾ ą¤¹ą„</string> + <string name="load_complete_feed">ą¤øą¤¾ą¤°ą„ ą¤Ŗą„ą¤”ą¤ą¤¾ą¤øą„ą¤ ą¤ą„ ą¤°ą¤æą¤«ą„ą¤°ą„ą¤¶ ą¤ą¤°ą„ą¤</string> + <string name="hide_episodes_title">ą¤ą¤Ŗą¤æą¤øą„ą¤” ą¤ą„ą¤Ŗą¤¾ą¤</string> + <string name="batch_edit">ą¤ą¤¤ą„ą¤„ą¤¾ ą¤øą¤ą¤Ŗą¤¾ą¤¦ą¤æą¤¤ ą¤ą¤°ą„ą¤</string> + <string name="hide_unplayed_episodes_label">ą¤Øą¤¹ą„ą¤ ą¤ą¤²ą¤¾ą¤ ą¤ą¤</string> + <string name="hide_paused_episodes_label">ą¤°ą„ą¤ą„ ą¤ą¤</string> + <string name="hide_played_episodes_label">ą¤ą¤²ą¤¾ą¤ ą¤ą¤</string> + <string name="hide_queued_episodes_label">ą„ą¤¤ą¤¾ą¤° ą¤ą¤æą¤ ą¤ą¤</string> + <string name="hide_not_queued_episodes_label">ą„ą¤¤ą¤¾ą¤° ą¤Øą¤¹ą„ ą¤ą¤æą¤ ą¤ą¤</string> + <string name="hide_downloaded_episodes_label">ą¤”ą¤¾ą¤ą¤Øą¤²ą„ą¤” ą¤ą¤æą¤Æą„ ą¤ą¤</string> + <string name="hide_not_downloaded_episodes_label">ą¤Øą¤¹ą„ą¤ ą¤”ą¤¾ą¤ą¤Øą¤²ą„ą¤” ą¤ą¤æą¤Æą„ ą¤ą¤</string> + <string name="hide_has_media_label">ą¤®ą„ą¤”ą¤æą¤Æą¤¾ ą¤¹ą„</string> + <string name="hide_is_favorite_label">ą¤Ŗą¤øą¤ą¤¦ą„ą¤¦ą¤¾ ą¤¹ą„</string> + <string name="filtered_label">ą¤ą¤¾ą¤Øą„ ą¤¹ą„ą¤</string> + <string name="refresh_failed_msg">{fa-exclamation-circle} ą¤Ŗą¤æą¤ą¤²ą¤¾ ą¤°ą¤æą¤«ą„ą¤°ą„ą¤¶ ą¤
ą¤øą¤«ą¤² ą¤¹ą„ą¤</string> + <string name="open_podcast">ą¤Ŗą„ą¤”ą¤ą¤¾ą¤øą„ą¤ ą¤ą„ą¤²ą„</string> <!--actions on feeditems--> <string name="download_label">ą¤”ą¤¾ą¤ą¤Øą¤²ą„ą¤”</string> <string name="play_label">ą¤Ŗą„ą¤²ą„</string> <string name="pause_label">ą¤°ą„ą¤ą„ą¤</string> + <string name="stop_label">ą¤°ą„ą¤ą„ą¤</string> <string name="stream_label">ą¤øą„ą¤ą„ą¤°ą¤æą¤®</string> <string name="remove_label"> ą¤¹ą¤ą¤¾ą¤ą¤</string> - <string name="mark_read_label">ą¤Ŗą„ą¤¾ ą¤¹ą„ą¤ ą¤ą„ ą¤°ą„ą¤Ŗ ą¤®ą„ą¤ ą¤ą¤æą¤¹ą„ą¤Øą¤æą¤¤ ą¤ą¤°ą„ą¤</string> - <string name="mark_unread_label">ą¤Øą¤¾ ą¤Ŗą„ą¤¾ ą¤¹ą„ą¤ ą¤ą„ ą¤°ą„ą¤Ŗ ą¤®ą„ą¤ ą¤ą¤æą¤¹ą„ą¤Øą¤æą¤¤ ą¤ą¤°ą„ą¤</string> + <string name="delete_label">ą¤”ą¤æą¤²ą„ą¤</string> + <string name="delete_failed">ą¤«ą¤¼ą¤¾ą¤ą¤² ą¤”ą¤æą¤²ą„ą¤ ą¤ą¤°ą¤Øą„ ą¤®ą„ą¤ ą¤
ą¤øą¤®ą¤°ą„ą¤„ą„¤ ą¤”ą¤æą¤µą¤¾ą¤ą¤ø ą¤ą„ ą¤°ą¤æą¤¬ą„ą¤ ą¤ą¤°ą¤Øą„ ą¤øą„ ą¤®ą¤¦ą¤¦ ą¤®ą¤æą¤² ą¤øą¤ą¤¤ą„ ą¤¹ą„ą„¤</string> + <string name="remove_episode_lable">ą¤ą¤Ŗą¤æą¤øą„ą¤” ą¤¹ą¤ą¤¾ą¤ą¤</string> + <string name="mark_as_seen_label">ą¤¦ą„ą¤ą¤¾ ą¤ą¤Æą¤¾ ą¤ą„ ą¤°ą„ą¤Ŗ ą¤®ą„ą¤ ą¤ą¤æą¤¹ą„ą¤Øą¤æą¤¤ ą¤ą¤°ą„ą¤</string> + <string name="marked_as_seen_label">ą¤¦ą„ą¤ą¤¾ ą¤ą¤Æą¤¾ ą¤ą„ ą¤°ą„ą¤Ŗ ą¤®ą„ą¤ ą¤ą¤æą¤¹ą„ą¤Øą¤æą¤¤ ą¤ą¤æą¤Æą¤¾ ą¤ą¤Æą¤¾</string> + <string name="mark_read_label">ą¤ą¤²ą¤¾ą¤Æą¤¾ ą¤ą¤Æą¤¾ ą¤ą„ ą¤°ą„ą¤Ŗ ą¤®ą„ą¤ ą¤ą¤æą¤¹ą„ą¤Øą¤æą¤¤ ą¤ą¤°ą„ą¤</string> + <string name="marked_as_read_label">ą¤ą¤²ą¤¾ą¤Æą¤¾ ą¤ą¤Æą¤¾ ą¤ą„ ą¤°ą„ą¤Ŗ ą¤®ą„ą¤ ą¤ą¤æą¤¹ą„ą¤Øą¤æą¤¤ ą¤ą¤æą¤Æą¤¾ ą¤ą¤Æą¤¾</string> + <string name="mark_unread_label">ą¤Øą¤¹ą„ ą¤ą¤²ą¤¾ą¤Æą¤¾ ą¤ą¤Æą¤¾ ą¤ą„ ą¤°ą„ą¤Ŗ ą¤®ą„ą¤ ą¤ą¤æą¤¹ą„ą¤Øą¤æą¤¤ ą¤ą¤°ą„ą¤</string> <string name="add_to_queue_label">ą¤ą¤¼ą¤¤ą¤¾ą¤° ą¤®ą„ą¤ ą¤ą„ą¤”ą¤¼ą„ą¤</string> + <string name="added_to_queue_label">ą¤ą¤¾ą¤ą¤¤ą¤° ą¤®ą„ą¤ ą¤ą„ą„ą„ ą¤ą¤</string> <string name="remove_from_queue_label">ą¤ą¤¼ą¤¤ą¤¾ą¤° ą¤øą„ ą¤¹ą¤ą¤¾ą¤ą¤</string> + <string name="add_to_favorite_label">ą¤Ŗą¤øą¤ą¤¦ą„ą¤¦ą¤¾ ą¤øą„ą¤ą„ ą¤®ą„ą¤ ą¤ą„ą¤”ą¤¼ą„</string> + <string name="added_to_favorites">ą¤Ŗą¤øą¤ą¤¦ą„ą¤¦ą¤¾ ą¤øą„ą¤ą„ ą¤®ą„ą¤ ą¤ą„ą„ą¤¾ ą¤ą¤Æą¤¾</string> + <string name="remove_from_favorite_label">ą¤Ŗą¤øą¤ą¤¦ą„ą¤¦ą¤¾ ą¤øą„ą¤ą„ ą¤øą„ ą¤¹ą¤ą¤¾ą¤</string> + <string name="removed_from_favorites">ą¤Ŗą¤øą¤ą¤¦ą„ą¤¦ą¤¾ ą¤øą„ą¤ą„ ą¤øą„ ą¤¹ą¤ą¤Æą¤¾ ą¤ą¤Æą¤¾</string> <string name="visit_website_label">ą¤µą„ą¤¬ą¤øą¤¾ą¤ą¤ ą¤Ŗą¤° ą¤ą¤¾ą¤ą¤</string> <string name="support_label">ą¤ą¤øą„ Flattr ą¤ą¤°ą„ą¤</string> <string name="skip_episode_label">ą¤ą¤Ŗą¤æą¤øą„ą¤” ą¤ą„ą¤ą„ą¤</string> + <string name="activate_auto_download">ą¤ą¤ą„ ą¤”ą¤¾ą¤ą¤Øą¤²ą„ą¤” ą¤øą¤ą„ą¤°ą¤æą¤Æ ą¤ą¤°ą„ą¤</string> + <string name="deactivate_auto_download">ą¤ą¤ą„ ą¤”ą¤¾ą¤ą¤Øą¤²ą„ą¤” ą¤Øą¤æą¤·ą„ą¤ą„ą¤°ą¤æą¤Æ ą¤ą¤°ą„ą¤</string> + <string name="reset_position">ą¤Ŗą„ą¤²ą„ą¤¬ą„ą¤ ą¤øą„ą¤„ą¤æą¤¤ą¤æ ą¤°ą„ą¤øą„ą¤ ą¤ą¤°ą„ą¤</string> + <string name="removed_item">ą¤ą¤ą¤ą¤® ą¤¹ą¤ą¤Æą¤¾ ą¤ą¤Æą¤¾</string> <!--Download messages and labels--> - <string name="download_successful">ą¤øą¤«ą¤² -</string> - <string name="download_failed">ą¤”ą¤¾ą¤ą¤Øą¤²ą„ą¤” ą¤µą¤æą¤«ą¤²</string> + <string name="download_successful">ą¤øą¤«ą¤² ą¤¹ą„ą¤</string> + <string name="download_failed">ą¤
ą¤øą¤«ą¤² ą¤¹ą„ą¤</string> <string name="download_pending">ą¤²ą¤ą¤¬ą¤æą¤¤ ą¤”ą¤¾ą¤ą¤Øą¤²ą„ą¤”</string> <string name="download_running">ą¤”ą¤¾ą¤ą¤Øą¤²ą„ą¤” ą¤ą¤² ą¤°ą¤¹ą¤¾ ą¤¹ą„</string> + <string name="download_error_details">ą¤µą¤æą¤µą¤°ą¤£</string> + <string name="download_error_details_message">%1$s \n\ną¤«ą¤¾ą¤ą¤² URL:\n%2$s</string> <string name="download_error_device_not_found">ą¤øą„ą¤ą„ą¤°ą„ą¤ ą¤”ą¤æą¤µą¤¾ą¤ą¤ø ą¤Øą¤¹ą„ą¤ ą¤®ą¤æą¤²ą¤¾</string> <string name="download_error_insufficient_space">ą¤
ą¤Ŗą¤°ą„ą¤Æą¤¾ą¤Ŗą„ą¤¤ ą¤øą„ą¤„ą¤¾ą¤Ø</string> <string name="download_error_file_error">ą¤«ą¤¼ą¤¾ą¤ą¤² ą¤¤ą„ą¤°ą„ą¤ą¤æ</string> @@ -80,13 +180,23 @@ <string name="download_error_unsupported_type">ą¤
ą¤øą¤®ą¤°ą„ą¤„ą¤æą¤¤ ą¤«ą¤¼ą„ą¤” ą¤Ŗą„ą¤°ą¤ą¤¾ą¤°</string> <string name="download_error_connection_error">ą¤ą¤Øą„ą¤ą„ą¤¶ą¤Ø ą¤¤ą„ą¤°ą„ą¤ą¤æ</string> <string name="download_error_unknown_host">ą¤
ą¤ą„ą¤ą¤¾ą¤¤ ą¤¹ą„ą¤øą„ą¤</string> + <string name="download_error_unauthorized">ą¤Ŗą„ą¤°ą¤®ą¤¾ą¤£ą„ą¤ą¤°ą¤£ ą¤¤ą„ą¤°ą„ą¤ą¤æ</string> + <string name="download_error_file_type_type">ą¤«ą¤¼ą¤¾ą¤ą¤² ą¤Ŗą„ą¤°ą¤ą¤¾ą¤° ą¤¤ą„ą¤°ą„ą¤ą¤æ</string> + <string name="download_error_forbidden">ą¤Øą¤æą¤·ą¤æą¤¦ą„ą¤§</string> <string name="cancel_all_downloads_label">ą¤øą¤ą„ ą¤”ą¤¾ą¤ą¤Øą¤²ą„ą¤” ą¤°ą¤¦ą„ą¤¦ ą¤ą¤°ą„ą¤</string> <string name="download_canceled_msg">ą¤”ą¤¾ą¤ą¤Øą¤²ą„ą¤” ą¤°ą¤¦ą„ą¤¦</string> - <string name="download_report_title">ą¤”ą¤¾ą¤ą¤Øą¤²ą„ą¤” ą¤Ŗą„ą¤°ą¤¾ ą¤¹ą„ ą¤ą¤Æą¤¾ ą¤¹ą„</string> + <string name="download_canceled_autodownload_enabled_msg">ą¤”ą¤¾ą¤ą¤Øą¤²ą„ą¤” ą¤°ą¤¦ą„ą¤¦ ą¤¹ą„ą¤\ną¤ą¤ø ą¤ą¤ą¤ą¤® ą¤ą„ ą¤²ą¤æą¤ <i>ą¤ą¤ą¤”ą¤¾ą¤ą¤Øą¤²ą„ą¤”</i> ą¤
ą¤ą„ą¤·ą¤® ą¤ą¤æą¤Æą¤¾ ą¤ą¤Æą¤¾</string> + <string name="download_report_title">ą¤¤ą„ą¤°ą„ą¤ą¤æ ą¤ą„ ą¤øą¤¾ą¤„ ą¤”ą¤¾ą¤ą¤Øą¤²ą„ą¤” ą¤øą¤ą¤Ŗą¤Øą„ą¤Ø ą¤¹ą„ą¤</string> + <string name="download_report_content_title">ą¤°ą¤æą¤Ŗą„ą¤°ą„ą¤ ą¤”ą¤¾ą¤ą¤Øą¤²ą„ą¤” ą¤ą¤°ą„</string> <string name="download_error_malformed_url">ą¤ą¤²ą¤¤ URL</string> <string name="download_error_io_error">ą¤ą¤ą¤ ą¤¤ą„ą¤°ą„ą¤ą¤æ</string> <string name="download_error_request_error">ą¤
ą¤Øą„ą¤°ą„ą¤§ ą¤¤ą„ą¤°ą„ą¤ą¤æ</string> <string name="download_error_db_access">ą¤”ą„ą¤ą¤¾ą¤¬ą„ą¤ø ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤¤ą„ą¤°ą„ą¤ą¤æ</string> + <plurals name="downloads_left"> + <item quantity="one">%d ą¤”ą¤¾ą¤ą¤Øą¤²ą„ą¤” ą¤¬ą¤¾ą¤ą„</item> + <item quantity="other">%d ą¤”ą¤¾ą¤ą¤Øą¤²ą„ą¤” ą¤¬ą¤¾ą¤ą„</item> + </plurals> + <string name="downloads_processing">ą¤”ą¤¾ą¤ą¤Øą¤²ą„ą¤” ą¤Ŗą„ą¤°ą„ą¤øą„ą¤ø ą¤ą¤æą¤Æą„ ą¤ą¤¾ą¤°ą¤¹ą„</string> <string name="download_notification_title">ą¤Ŗą„ą¤”ą¤ą¤¾ą¤øą„ą¤ ą¤”ą„ą¤ą¤¾ ą¤”ą¤¾ą¤ą¤Øą¤²ą„ą¤” ą¤ą¤°ą„ą¤</string> <string name="download_report_content">%1$d ą¤”ą¤¾ą¤ą¤Øą¤²ą„ą¤” ą¤øą¤«ą¤² ą¤°ą¤¹ą¤¾, %2$d ą¤®ą„ą¤ ą¤µą¤æą¤«ą¤² ą¤°ą¤¹ą¤¾ ą¤¹ą„</string> <string name="download_log_title_unknown">ą¤
ą¤ą„ą¤ą¤¾ą¤¤ ą¤¶ą„ą¤°ą„ą¤·ą¤</string> @@ -94,6 +204,11 @@ <string name="download_type_media">ą¤®ą„ą¤”ą¤æą¤Æą¤¾ ą¤«ą¤¼ą¤¾ą¤ą¤²</string> <string name="download_type_image">ą¤ą¤µą¤æ</string> <string name="download_request_error_dialog_message_prefix">ą¤«ą¤¾ą¤ą¤² ą¤”ą¤¾ą¤ą¤Øą¤²ą„ą¤” ą¤ą¤°ą¤Øą„ ą¤ą„ ą¤²ą¤æą¤ ą¤Ŗą„ą¤°ą¤Æą¤¾ą¤ø ą¤ą¤°ą¤¤ą„ ą¤øą¤®ą¤Æ ą¤ą¤ ą¤¤ą„ą¤°ą„ą¤ą¤æ ą¤¹ą„ą¤:\u0020</string> + <string name="authentication_notification_title">ą¤Ŗą„ą¤°ą¤®ą¤¾ą¤£ą„ą¤ą¤°ą¤£ ą¤ą¤µą¤¶ą„ą¤Æą¤ ą¤¹ą„</string> + <string name="authentication_notification_msg">ą¤ą¤Ŗą¤ą„ ą¤¦ą„ą¤µą¤¾ą¤°ą¤¾ ą¤
ą¤Øą„ą¤°ą„ą¤§ą¤æą¤¤ ą¤øą¤ą¤øą¤¾ą¤§ą¤Ø ą¤ą„ ą¤²ą¤æą¤ ą¤Æą„ą¤ą¤°ą¤Øą¤¾ą¤® ą¤Æą„ą¤ą¤°ą¤Øą„ą¤® ą¤ą¤° ą¤Ŗą¤¾ą¤øą¤µą¤°ą„ą¤” ą¤ą„ ą¤ą¤µą¤¶ą„ą¤Æą¤ą¤¤ą¤¾ ą¤¹ą„</string> + <string name="confirm_mobile_download_dialog_title">ą¤®ą„ą¤¬ą¤¾ą¤ą¤² ą¤”ą¤¾ą¤ą¤Øą¤²ą„ą¤” ą¤ą„ ą¤Ŗą„ą¤·ą„ą¤ą¤æ ą¤ą¤°ą„ą¤</string> + <string name="confirm_mobile_download_dialog_only_add_to_queue">ą¤ą¤¤ą¤¾ą¤°ą¤¬ą¤¦ą„ą¤§ ą¤ą¤°ą„ą¤</string> + <string name="confirm_mobile_download_dialog_enable_temporarily">ą¤
ą¤øą„ą¤„ą¤¾ą¤Æą„ ą¤°ą„ą¤Ŗ ą¤øą„ ą¤
ą¤Øą„ą¤®ą¤¤ą¤æ ą¤¦ą„ą¤</string> <!--Mediaplayer messages--> <string name="player_error_msg">ą¤¤ą„ą¤°ą„ą¤ą¤æ!</string> <string name="player_stopped_msg">ą¤®ą„ą¤”ą¤æą¤Æą¤¾ ą¤Øą¤¹ą„ą¤ ą¤ą¤² ą¤°ą¤¹ą¤¾</string> @@ -105,12 +220,22 @@ <string name="no_media_playing_label">ą¤®ą„ą¤”ą¤æą¤Æą¤¾ ą¤Øą¤¹ą„ą¤ ą¤ą¤² ą¤°ą¤¹ą¤¾</string> <string name="player_buffering_msg">ą¤¬ą¤«ą¤°ą¤æą¤ą¤</string> <string name="playbackservice_notification_title">ą¤Ŗą„ą¤²ą„ą¤ą¤ą¤ ą¤Ŗą„ą¤”ą¤ą¤¾ą¤øą„ą¤</string> + <string name="unknown_media_key">ą¤ą¤Øą„ą¤ą„ą¤Øą¤¾ą¤Ŗą„ą¤” - ą¤
ą¤Øą¤ą¤¾ą¤Ø ą¤®ą„ą¤”ą¤æą¤Æą¤¾ ą¤ą„: %1$d</string> <!--Queue operations--> <string name="clear_queue_label">ą¤ą¤¤ą¤¾ą¤° ą¤øą¤¾ą¤«</string> <string name="undo">ą¤Ŗą„ą¤°ą„ą¤µą¤µą¤¤ą„ ą¤ą¤°ą„ą¤</string> <string name="removed_from_queue">ą¤ą¤ą¤ą¤® ą¤¹ą¤ą¤¾ą¤Æą¤¾</string> <string name="move_to_top_label">ą¤¶ą„ą¤°ą„ą¤· ą¤Ŗą¤° ą¤²ą„ ą¤ą¤¾ą¤ą¤</string> <string name="move_to_bottom_label">ą¤Øą„ą¤ą„ ą¤ą¤¾ą¤ą¤</string> + <string name="date">ą¤¦ą¤æą¤Øą¤¾ą¤ą¤</string> + <string name="duration">ą¤
ą¤µą¤§ą¤æ</string> + <string name="episode_title">ą¤ą¤Ŗą¤æą¤øą„ą¤” ą¤ą¤¾ ą¤¶ą„ą¤°ą„ą¤·ą¤</string> + <string name="feed_title">ą¤Ŗą„ą¤”ą¤ą¤¾ą¤øą„ą¤ ą¤ą¤¾ ą¤¶ą„ą¤°ą„ą¤·ą¤</string> + <string name="random">ą¤ą„ą¤°ą¤®ą¤°ą¤¹ą¤æą¤¤</string> + <string name="smart_shuffle">ą¤ą¤¤ą„ą¤° ą¤®ą¤æą¤¶ą„ą¤°ą¤£</string> + <string name="ascending">ą¤ą¤°ą„ą¤¹ą„</string> + <string name="descending">ą¤
ą¤µą¤°ą„ą¤¹ą„</string> + <string name="clear_queue_confirmation_msg">ą¤ą„ą¤Ŗą¤Æą¤¾ ą¤Ŗą„ą¤·ą„ą¤ą¤æ ą¤ą¤°ą„ą¤ ą¤ą¤æ ą¤ą¤Ŗ ą¤øą¤¾ą¤°ą„ ą¤ą¤Ŗą¤æą¤øą„ą¤” ą¤ą„ ą¤ą¤ø ą¤ą¤¤ą¤¾ą¤° ą¤ą„ ą¤¹ą¤ą¤¾ą¤Øą¤¾ ą¤ą¤¾ą¤¹ą¤¤ą„ ą¤¹ą„ą¤</string> <!--Flattr--> <string name="flattr_auth_label">Flattr ą¤Ŗą¤ą¤ą„ą¤ą¤°ą¤£ ą¤ą¤°ą„ą¤</string> <string name="flattr_auth_explanation">ą¤Ŗą„ą¤°ą¤®ą¤¾ą¤£ą„ą¤ą¤°ą¤£ ą¤Ŗą„ą¤°ą¤ą„ą¤°ą¤æą¤Æą¤¾ ą¤¶ą„ą¤°ą„ ą¤ą¤°ą¤Øą„ ą¤ą„ ą¤²ą¤æą¤ ą¤Øą„ą¤ą„ ą¤¦ą¤æą¤ ą¤ą¤ ą¤¬ą¤ą¤Ø ą¤ą„ ą¤¦ą¤¬ą¤¾ą¤ą¤. ą¤ą¤Ŗą¤ą„ ą¤¬ą„ą¤°ą¤¾ą¤ą¤ą¤¼ą¤° ą¤®ą„ą¤ flattr ą¤²ą„ą¤ą¤æą¤Ø ą¤øą„ą¤ą„ą¤°ą„ą¤Ø ą¤ą„ ą¤ą„ą¤ą¤¾ ą¤ą¤¾ą¤ą¤ą¤¾ ą¤ą¤° flattr ą¤¬ą¤¾ą¤¤ą„ą¤ ą¤ą¤°ą¤Øą„ ą¤ą„ ą¤²ą¤æą¤ ą¤
ą¤Øą„ą¤®ą¤¤ą¤æ AntennaPod ą¤ą„ ą¤¦ą„ą¤Øą„ ą¤ą„ ą¤²ą¤æą¤ ą¤ą¤¹ą¤¾ ą¤ą¤¾ą¤ą¤ą¤¾. ą¤ą¤Ŗą¤ą¤æ ą¤
ą¤Øą„ą¤®ą¤¤ą¤æ ą¤¦ą„ą¤Øą„ ą¤ą„ ą¤¬ą¤¾ą¤¦, ą¤ą¤Ŗ ą¤øą„ą¤µą¤¤ą¤ ą¤¹ą„ ą¤ą¤ø ą¤øą„ą¤ą„ą¤°ą„ą¤Ø ą¤®ą„ą¤ ą¤µą¤¾ą¤Ŗą¤ø ą¤ ą¤ą¤¾ą¤ą¤ą„ą¤.</string> @@ -128,23 +253,39 @@ <string name="flattr_click_success">ą¤øą¤«ą¤²ą¤¤ą¤¾ą¤Ŗą„ą¤°ą„ą¤µą¤ ą¤Æą¤¹ ą¤¬ą¤¾ą¤¤ Flattr ą¤ą¤æą¤Æą¤¾</string> <string name="flattr_click_success_count">ą¤øą¤«ą¤²ą¤¤ą¤¾ą¤Ŗą„ą¤°ą„ą¤µą¤ %d ą¤¬ą¤¾ą¤¤ą„ą¤ą¤ą„ Flattr ą¤ą¤æą¤Æą¤¾</string> <string name="flattr_click_success_queue">Flattr ą¤ą¤æą¤Øą¤¤ą„: %s</string> - <string name="flattring_label">ą¤ą¤Øą„ą¤ą„ą¤Øą¤¾ą¤Ŗą„ą¤” Flattr </string> + <string name="flattring_label">ą¤ą¤Øą„ą¤ą„ą¤Øą¤¾ą¤Ŗą„ą¤” Flattr ą¤ą¤°ą¤°ą¤¹ą¤¾ ą¤¹ą„</string> <!--Variable Speed--> <string name="download_plugin_label">ą¤Ŗą„ą¤²ą¤ą¤ą¤Ø ą¤”ą¤¾ą¤ą¤Øą¤²ą„ą¤” ą¤ą¤°ą„ą¤</string> <string name="no_playback_plugin_title">ą¤Ŗą„ą¤²ą¤ą¤ą¤Ø ą¤øą„ą¤„ą¤¾ą¤Ŗą¤æą¤¤ ą¤Øą¤¹ą„ą¤ ą¤¹ą„ą¤</string> <string name="set_playback_speed_label">ą¤Ŗą„ą¤²ą„ą¤¬ą„ą¤ ą¤ą¤¤ą¤æ</string> + <string name="enable_sonic">ą¤øą„ą¤Øą¤æą¤ ą¤øą¤ą„ą¤·ą¤® ą¤ą¤°ą„</string> <!--Empty list labels--> <string name="no_items_label">ą¤ą¤ø ą¤øą„ą¤ą„ ą¤®ą„ą¤ ą¤ą„ą¤ ą¤ą¤ą¤ą¤® ą¤Øą¤¹ą„ą¤ ą¤¹ą„ą¤.</string> - <string name="no_feeds_label">ą¤ą¤Ŗą¤Øą„ ą¤
ą¤ą„ ą¤¤ą¤ ą¤ą¤æą¤øą„ ą¤ą„ ą¤«ą¤¼ą„ą¤” ą¤ą„ ą¤øą¤¦ą¤øą„ą¤Æą¤¤ą¤¾ ą¤Øą¤¹ą„ą¤ ą¤²ą„ ą¤¹ą„.</string> + <string name="no_feeds_label">ą¤ą¤Ŗą¤Øą„ ą¤
ą¤ą„ ą¤¤ą¤ ą¤ą¤æą¤øą„ ą¤ą„ ą¤Ŗą„ą¤”ą¤ą¤¾ą¤øą„ą¤ ą¤ą„ ą¤øą¤¬ą„ą¤øą¤ą„ą¤°ą¤¾ą¤ą¤¬ ą¤Øą¤¹ą„ą¤ ą¤ą¤æą¤Æą¤¾ ą¤¹ą„ą„¤</string> + <string name="no_chapters_label">ą¤ą¤ø ą¤ą¤Ŗą¤æą¤øą„ą¤” ą¤®ą„ą¤ ą¤ą„ą¤ ą¤
ą¤§ą„ą¤Æą¤¾ą¤Æ ą¤Øą¤¹ą„ą¤ ą¤¹ą„ą„¤</string> + <string name="no_shownotes_label">ą¤ą¤ø ą¤ą¤Ŗą¤æą¤øą„ą¤” ą¤®ą„ą¤ ą¤ą„ą¤ ą¤¶ą„ą¤Øą„ą¤ą„ą¤ø ą¤Øą¤¹ą„ą¤ ą¤¹ą„ą„¤</string> <!--Preferences--> + <string name="storage_pref">ą¤øą„ą¤ą„ą¤°ą„ą¤</string> + <string name="project_pref">ą¤Ŗą¤°ą¤æą¤Æą„ą¤ą¤Øą¤¾</string> <string name="other_pref">ą¤
ą¤Øą„ą¤Æ</string> <string name="about_pref">ą¤ą„ ą¤¬ą¤¾ą¤°ą„ ą¤®ą„ą¤</string> <string name="queue_label">ą¤Ŗą¤ą¤ą„ą¤¤ą¤æ</string> - <string name="services_label">ą¤øą„ą¤µą¤¾ą¤ą¤</string> <string name="flattr_label">Flattr</string> + <string name="automation">ą¤øą„ą¤µą¤ą¤¾ą¤²ą¤Ø</string> + <string name="download_pref_details">ą¤µą¤æą¤µą¤°ą¤£</string> + <string name="import_export_pref">ą¤ą¤Æą¤¾ą¤¤/ą¤Øą¤æą¤°ą„ą¤Æą¤¾ą¤¤</string> + <string name="appearance">ą¤¦ą¤æą¤ą¤¾ą¤µą¤</string> + <string name="external_elements">ą¤¬ą¤¾ą¤¹ą¤°ą„ ą¤¤ą¤¤ą„ą¤µ</string> + <string name="interruptions">ą¤°ą„ą¤ą¤¾ą¤µą¤ą„</string> + <string name="pref_episode_cleanup_title">ą¤ą¤Ŗą¤æą¤øą„ą¤” ą¤ą„ ą¤øą¤«ą¤¾ą¤</string> <string name="pref_followQueue_sum">ą¤Ŗą„ą¤²ą„ą¤¬ą„ą¤ ą¤ą„ ą¤Ŗą„ą¤°ą¤¾ ą¤¹ą„ą¤Øą„ ą¤Ŗą¤° ą¤
ą¤ą¤²ą„ ą¤Ŗą¤ą¤ą„ą¤¤ą¤æ ą¤ą¤ą¤ą¤® ą¤ą„ ą¤²ą¤æą¤ ą¤ą¤¾ą¤ą¤</string> <string name="playback_pref">ą¤Ŗą„ą¤²ą„ą¤¬ą„ą¤</string> <string name="network_pref">ą¤øą¤ą¤ą¤¾ą¤²</string> + <string name="pref_autoUpdateIntervallOrTime_Disable">ą¤
ą¤ą„ą¤·ą¤® ą¤ą¤°ą„ą¤</string> + <string name="pref_autoUpdateIntervallOrTime_Interval">ą¤
ą¤ą¤¤ą¤°ą¤¾ą¤² ą¤Øą¤æą¤°ą„ą¤§ą¤¾ą¤°ą¤æą¤¤ ą¤ą¤°ą„ą¤</string> + <string name="pref_autoUpdateIntervallOrTime_TimeOfDay">ą¤¦ą¤æą¤Ø ą¤ą¤¾ ą¤øą¤®ą¤Æ ą¤Øą¤æą¤°ą„ą¤§ą¤¾ą¤°ą¤æą¤¤ ą¤ą¤°ą„ą¤</string> + <string name="pref_autoUpdateIntervallOrTime_every">ą¤Ŗą„ą¤°ą¤¤ą¤æ %1$s</string> + <string name="pref_autoUpdateIntervallOrTime_at">%1$s ą¤¬ą¤ą„ </string> <string name="pref_downloadMediaOnWifiOnly_sum">ą¤ą„ą¤µą¤² ą¤µą¤¾ą¤ą¤«ą¤¼ą¤¾ą¤ ą¤Ŗą¤° ą¤®ą„ą¤”ą¤æą¤Æą¤¾ ą¤«ą¤¼ą¤¾ą¤ą¤²ą„ą¤ ą¤”ą¤¾ą¤ą¤Øą¤²ą„ą¤” ą¤ą¤°ą„ą¤</string> <string name="pref_followQueue_title">ą¤øą¤¤ą¤¤ ą¤Ŗą„ą¤²ą„ą¤¬ą„ą¤</string> <string name="pref_downloadMediaOnWifiOnly_title">ą¤µą¤¾ą¤ą¤«ą¤¾ą¤ ą¤®ą„ą¤”ą¤æą¤Æą¤¾ ą¤”ą¤¾ą¤ą¤Øą¤²ą„ą¤” ą¤ą¤°ą„ą¤</string> @@ -179,6 +320,7 @@ <string name="pref_gpodnet_logout_toast">ą¤²ą„ą¤ą¤ą¤ą¤ ą¤øą¤«ą¤² ą¤°ą¤¹ą¤¾ ą¤„ą¤¾</string> <string name="pref_gpodnet_setlogin_information_title">ą¤Ŗą„ą¤°ą¤µą„ą¤¶ ą¤ą¤¾ą¤Øą¤ą¤¾ą¤°ą„ ą¤¬ą¤¦ą¤²ą„ą¤</string> <string name="pref_gpodnet_setlogin_information_sum">ą¤
ą¤Ŗą¤Øą„ gpodder.net ą¤ą¤¾ą¤¤ą„ ą¤ą„ ą¤²ą¤æą¤ ą¤Ŗą„ą¤°ą¤µą„ą¤¶ ą¤ą¤¾ą¤Øą¤ą¤¾ą¤°ą„ ą¤¬ą¤¦ą¤²ą„ą¤.</string> + <string name="pref_gpodnet_login_status"><![CDATA[ <i>%1$s</i> ą¤ą„ ą¤°ą„ą¤Ŗ ą¤®ą„ą¤ <i>%2$s</i> ą¤”ą¤æą¤µą¤¾ą¤ą¤ø ą¤ą„ ą¤øą¤¾ą¤„ ą¤²ą„ą¤ą¤æą¤Ø ą¤ą¤æą¤Æą¤¾ ą¤ą¤Æą¤¾ ]]></string> <string name="pref_playback_speed_title">ą¤Ŗą„ą¤²ą„ą¤¬ą„ą¤ ą¤ą¤¤ą¤æ</string> <string name="pref_playback_speed_sum">ą¤ą¤° ą¤ą¤¤ą¤æ ą¤ą¤”ą¤æą¤Æą„ ą¤Ŗą„ą¤²ą„ą¤¬ą„ą¤ ą¤ą„ ą¤²ą¤æą¤ ą¤ą¤Ŗą¤²ą¤¬ą„ą¤§ ą¤ą¤¤ą¤æ ą¤¬ą¤Øą¤¾ą¤ą¤</string> <string name="pref_gpodnet_sethostname_title">ą¤¹ą„ą¤øą„ą¤ą¤Øą¤¾ą¤® ą¤øą„ą¤</string> @@ -199,7 +341,6 @@ <string name="deselect_all_label">ą¤øą¤ą„ ą¤ą¤¾ ą¤ą¤Æą¤Ø ą¤°ą¤¦ą„ą¤¦ ą¤ą¤°ą„ą¤</string> <string name="opml_export_label">OPML ą¤Øą¤æą¤°ą„ą¤Æą¤¾ą¤¤</string> <string name="export_error_label">ą¤Øą¤æą¤°ą„ą¤Æą¤¾ą¤¤ ą¤¤ą„ą¤°ą„ą¤ą¤æ</string> - <string name="opml_export_success_sum">.ompl ą¤«ą¤¼ą¤¾ą¤ą¤² ą¤²ą¤æą¤ą¤¾ ą¤ą¤Æą¤¾ ą¤„ą¤¾:\u0020</string> <!--Sleep timer--> <string name="set_sleeptimer_label">ą¤øą„ą¤²ą„ą¤Ŗ ą¤ą¤¾ą¤ą¤®ą¤° ą¤øą„ą¤</string> <string name="disable_sleeptimer_label">ą¤øą„ą¤²ą„ą¤Ŗ ą¤ą¤¾ą¤ą¤®ą¤° ą¤
ą¤ą„ą¤·ą¤®</string> @@ -247,7 +388,7 @@ <string name="folder_not_empty_dialog_msg">ą¤ą¤Ŗą¤ą„ ą¤¦ą„ą¤µą¤¾ą¤°ą¤¾ ą¤ą„ą¤Øą„ ą¤ą¤ ą¤«ą¤¼ą„ą¤²ą„ą¤”ą¤° ą¤ą¤¾ą¤²ą„ ą¤Øą¤¹ą„ą¤ ą¤¹ą„. ą¤®ą„ą¤”ą¤æą¤Æą¤¾ ą¤”ą¤¾ą¤ą¤Øą¤²ą„ą¤” ą¤ą¤° ą¤
ą¤Øą„ą¤Æ ą¤«ą¤¼ą¤¾ą¤ą¤²ą„ą¤ ą¤ą¤ø ą¤«ą¤¼ą„ą¤²ą„ą¤”ą¤° ą¤®ą„ą¤ ą¤øą„ą¤§ą„ ą¤°ą¤ą¤¾ ą¤ą¤¾ą¤ą¤ą¤¾. ą¤«ą¤æą¤° ą¤ą„ ą¤ą¤¾ą¤°ą„ ą¤°ą¤ą„ą¤?</string> <string name="set_to_default_folder">ą¤”ą¤æą¤«ą¤¼ą„ą¤²ą„ą¤ ą¤«ą¤¼ą„ą¤²ą„ą¤”ą¤° ą¤ą„ą¤Øą„ą¤</string> <string name="pref_pausePlaybackForFocusLoss_sum">ą¤Ŗą„ą¤²ą„ą¤¬ą„ą¤ ą¤°ą„ą¤ą„ą¤ ą¤¬ą¤ą¤¾ą¤Æ ą¤§ą„ą¤µą¤Øą¤æą¤Æą„ą¤ ą¤ą„ ą¤ą¤® ą¤ą¤°ą¤Øą„ ą¤ą„ ą¤
ą¤ą¤° ą¤ą„ą¤ ą¤
ą¤Øą„ą¤Æ ą¤
ą¤Øą„ą¤Ŗą„ą¤°ą¤Æą„ą¤ ą¤ą¤øą„ ą¤¬ą¤ą¤¾ą¤Øą¤¾ ą¤ą¤¾ą¤¹ą¤¤ą¤¾ ą¤¹ą„ </string> - <string name="pref_pausePlaybackForFocusLoss_title">ą¤°ą„ą¤ą¤¾ą¤µą¤ ą¤ą„ ą¤²ą¤æą¤ ą¤°ą„ą¤ą„ą¤</string> + <string name="pref_pausePlaybackForFocusLoss_title">ą¤°ą„ą¤ą¤¾ą¤µą¤ą„ ą¤ą„ ą¤²ą¤æą¤ ą¤°ą„ą¤ą„ą¤</string> <!--Online feed view--> <string name="subscribe_label">ą¤øą¤¦ą¤øą„ą¤Æą¤¤ą¤¾ ą¤²ą„ą¤</string> <string name="subscribed_label">ą¤øą¤¦ą¤øą„ą¤Æą¤¤ą¤¾ ą¤²ą„ ą¤ą¤</string> @@ -263,4 +404,5 @@ <!--Database import/export--> <!--Casting--> <!--<string name="cast_failed_to_connect">Could not connect to the device</string>--> + <!--Notification channels--> </resources> diff --git a/core/src/main/res/values-hu/strings.xml b/core/src/main/res/values-hu/strings.xml index 878925133..71e1283ce 100644 --- a/core/src/main/res/values-hu/strings.xml +++ b/core/src/main/res/values-hu/strings.xml @@ -32,6 +32,7 @@ <string name="drawer_feed_order_unplayed_episodes">RendezĆ©s szĆ”mlĆ”lĆ³ szerint</string> <string name="drawer_feed_order_alphabetical">RendezĆ©s ABC rendben</string> <string name="drawer_feed_order_last_update">RendezĆ©s megjelenĆ©s dĆ”tuma szerint</string> + <string name="drawer_feed_order_most_played">RendezĆ©s jĆ”tszott epizĆ³dok szerint</string> <string name="drawer_feed_counter_new_unplayed">Ćj Ć©s nem jĆ”tszott epizĆ³dok szĆ”ma</string> <string name="drawer_feed_counter_new">Ćj epizĆ³dok szĆ”ma</string> <string name="drawer_feed_counter_unplayed">Nem jĆ”tszott epizĆ³dok szĆ”ma</string> @@ -51,7 +52,6 @@ <string name="yes">Igen</string> <string name="no">Nem</string> <string name="reset">VisszaĆ”llĆtĆ”s</string> - <string name="author_label">SzerzÅ</string> <string name="language_label">Nyelv</string> <string name="url_label">URL</string> <string name="podcast_settings_label">BeĆ”llĆtĆ”sok</string> @@ -61,6 +61,7 @@ <string name="refresh_label">FrissĆtĆ©s</string> <string name="external_storage_error_msg">Nem talĆ”lhatĆ³ kĆ¼lsÅ tĆ”rhely. BiztosĆts egy kĆ¼lsÅ tĆ”rhelyet hogy az alkalmazĆ”s műkƶdni tudjon.</string> <string name="chapters_label">Fejezetek</string> + <string name="chapter_duration">Hossz: %1$s</string> <string name="shownotes_label">Jegyzetek</string> <string name="description_label">LeĆrĆ”s</string> <string name="most_recent_prefix">Legfrissebb epizĆ³d:\u0020</string> @@ -82,7 +83,7 @@ <string name="feed_auto_download_never">Soha</string> <string name="send_label">KĆ¼ldĆ©sā¦</string> <string name="episode_cleanup_never">Soha</string> - <string name="episode_cleanup_queue_removal">Ha nem vĆ”rakozik</string> + <string name="episode_cleanup_queue_removal">Ha nincs sorbaĆ”llĆtva</string> <string name="episode_cleanup_after_listening">BefejezĆ©s utĆ”n</string> <plurals name="episode_cleanup_days_after_listening"> <item quantity="one">1 nappal a befejezĆ©s utĆ”n</item> @@ -99,28 +100,18 @@ <string name="mark_all_read_label">Az ƶsszes megjelƶlĆ©se lejĆ”tszottkĆ©nt</string> <string name="mark_all_read_msg">Az ƶsszes epizĆ³d lejĆ”tszottkĆ©nt megjelƶlve</string> <string name="mark_all_read_confirmation_msg">Biztosan megjelƶlƶd az ƶsszes epizĆ³dot lejĆ”tszottkĆ©nt?</string> - <string name="mark_all_read_feed_confirmation_msg">Biztosan megjelƶlƶd az ƶsszes epizĆ³dot az idÅvonalon lejĆ”tszottkĆ©nt?</string> <string name="mark_all_seen_label">Az ƶsszes megjelƶlĆ©se megnĆ©zettkĆ©nt</string> - <string name="mark_all_seen_msg">Az ƶsszes epizĆ³d megnĆ©zettkĆ©nt megjelƶlve</string> <string name="mark_all_seen_confirmation_msg">Biztosan megjelƶlƶd az ƶsszes epizĆ³dott megnĆ©zettkĆ©nt?</string> <string name="show_info_label">InformĆ”ciĆ³ mutatĆ”sa</string> - <string name="rename_feed_label">Podcast Ć”tnevezĆ©se</string> - <string name="remove_feed_label">Podcast eltĆ”volĆtĆ”sa</string> <string name="share_label">MegosztĆ”sā¦</string> - <string name="share_link_label">Link megosztĆ”sa</string> - <string name="share_link_with_position_label">Link megosztĆ”sa pozĆciĆ³val</string> + <string name="share_file_label">FĆ”jl megosztĆ”sa</string> <string name="share_feed_url_label">IdÅvonal URL megosztĆ”sa</string> - <string name="share_item_url_label">EpizĆ³d fĆ”jl URL megosztĆ”sa</string> - <string name="share_item_url_with_position_label">EpizĆ³d fĆ”jl URL megosztĆ”sa pozĆciĆ³val</string> - <string name="feed_remover_msg">IdÅvonal eltĆ”volĆtĆ”sa</string> - <string name="load_complete_feed">Teljes idÅvonal frissĆtĆ©se</string> <string name="hide_episodes_title">EpizĆ³dok elrejtĆ©se</string> - <string name="episode_actions">Műveletek alkalmazĆ”sa</string> <string name="hide_unplayed_episodes_label">Nem lejĆ”tszott</string> <string name="hide_paused_episodes_label">SzĆ¼neteltetett</string> <string name="hide_played_episodes_label">LejĆ”tszott</string> - <string name="hide_queued_episodes_label">VĆ”rakozĆ³</string> - <string name="hide_not_queued_episodes_label">Nem vĆ”rakozĆ³</string> + <string name="hide_queued_episodes_label">SorbaĆ”llĆtva</string> + <string name="hide_not_queued_episodes_label">Nincs sorbaĆ”llĆtva</string> <string name="hide_downloaded_episodes_label">Letƶltƶtt</string> <string name="hide_not_downloaded_episodes_label">Nem letƶltƶtt</string> <string name="hide_has_media_label">TovĆ”bbi tartalma van</string> @@ -137,12 +128,12 @@ <string name="delete_label">TƶrlĆ©s</string> <string name="remove_episode_lable">EpizĆ³d eltĆ”volĆtĆ”sa</string> <string name="marked_as_seen_label">MegtekintettkĆ©nt megjelƶlve</string> - <string name="mark_read_label">LejĆ”tszottkĆ©nt megjelƶlĆ©s</string> + <string name="mark_read_label">JelƶlĆ©s jĆ”tszottnak</string> <string name="marked_as_read_label">LejĆ”tszottkĆ©nt megjelƶlve</string> - <string name="mark_unread_label">Nem lejĆ”tszottkĆ©nt megjelƶlĆ©s</string> - <string name="add_to_queue_label">VĆ”rakozĆ”si sorhoz adĆ”s</string> - <string name="added_to_queue_label">VĆ”rakozĆ”si sorhoz adva</string> - <string name="remove_from_queue_label">VĆ”rakozĆ”si sorbĆ³l eltĆ”volĆtĆ”s</string> + <string name="mark_unread_label">JelƶlĆ©s nem jĆ”tszottnak</string> + <string name="add_to_queue_label">SorbaĆ”llĆtĆ”s</string> + <string name="added_to_queue_label">HozzĆ”adva a lejĆ”tszĆ”si sorhoz</string> + <string name="remove_from_queue_label">EltĆ”volĆtĆ”s lejĆ”tszĆ”si sorbĆ³l</string> <string name="add_to_favorite_label">Kedvencekhez adĆ”s</string> <string name="added_to_favorites">Kedvencekhez adva</string> <string name="remove_from_favorite_label">KedvencekbÅl eltĆ”volĆtĆ”s</string> @@ -159,6 +150,8 @@ <string name="download_failed">sikertelen</string> <string name="download_pending">LetƶltĆ©s vĆ”rakozik</string> <string name="download_running">LetƶltĆ©s fut</string> + <string name="download_error_details">RĆ©szletek</string> + <string name="download_error_details_message">%1$s \n\nFĆ”jl URL:\n%2$s</string> <string name="download_error_device_not_found">TĆ”reszkƶz nem talĆ”lhatĆ³</string> <string name="download_error_insufficient_space">TĆŗl kevĆ©s tĆ”rhely</string> <string name="download_error_file_error">FĆ”jl Hiba</string> @@ -173,30 +166,208 @@ <string name="download_error_forbidden">Tiltott</string> <string name="cancel_all_downloads_label">Az ƶsszes letƶltĆ©s visszavonĆ”sa</string> <string name="download_canceled_msg">LetƶltĆ©s visszavonva</string> + <string name="download_report_title">LetƶltĆ©s befejezÅdƶtt, hibĆ”k lĆ©ptek fel</string> + <string name="download_report_content_title">JelentĆ©s letƶltĆ©se</string> + <string name="download_error_request_error">LekĆ©rĆ©si hiba</string> + <string name="download_error_db_access">AdatbĆ”zis hozzĆ”fĆ©rĆ©si hiba</string> + <plurals name="downloads_left"> + <item quantity="one">%d letƶltĆ©s van hĆ”tra</item> + <item quantity="other">%d letƶltĆ©s van hĆ”tra</item> + </plurals> + <string name="downloads_processing">LetƶltĆ©sek feldolgozĆ”sa</string> + <string name="download_notification_title">Podcast adatok letƶltĆ©se</string> + <string name="download_report_content">%1$d letƶltĆ©s sikeres, %2$d sikertelen</string> + <string name="download_log_title_unknown">Ismeretlen cĆm</string> + <string name="download_type_feed">Csatorna</string> + <string name="download_type_media">MĆ©dia fĆ”jl</string> + <string name="download_type_image">KĆ©p</string> + <string name="authentication_notification_title">BejelentkezĆ©s szĆ¼ksĆ©ges</string> + <string name="authentication_notification_msg">A kĆ©rt forrĆ”s felhasznĆ”lĆ³nevet Ć©s jelszĆ³t kĆ©r</string> + <string name="confirm_mobile_download_dialog_enable_temporarily">Ćtmenetileg engedĆ©lyez</string> <!--Mediaplayer messages--> + <string name="player_error_msg">Hiba!</string> + <string name="player_preparing_msg">ElÅkĆ©szĆtĆ©s</string> + <string name="player_ready_msg">KĆ©sz</string> + <string name="player_seeking_msg">TekerĆ©s</string> + <string name="playback_error_server_died">Szerver kapcsolat megszakadt</string> + <string name="playback_error_unknown">Ismeretlen hiba</string> + <string name="player_buffering_msg">PufferelĆ©s</string> + <string name="playbackservice_notification_title">Podcast lejĆ”tszĆ”sa</string> <!--Queue operations--> + <string name="lock_queue">LejĆ”tszĆ”si sor lezĆ”rĆ”sa</string> + <string name="unlock_queue">LejĆ”tszĆ”si sor feloldĆ”sa</string> + <string name="queue_locked">LejĆ”tszĆ”si sor lezĆ”rva</string> + <string name="queue_unlocked">LejĆ”tszĆ”si sor feloldva</string> + <string name="clear_queue_label">LejĆ”tszĆ”si sor tisztĆtĆ”sa</string> + <string name="undo">VisszavonĆ”s</string> + <string name="removed_from_queue">Elem eltĆ”volĆtva</string> + <string name="move_to_top_label">MozgatĆ”s az elejĆ©re</string> + <string name="move_to_bottom_label">MozgatĆ”s a vĆ©gĆ©re</string> + <string name="sort">RendezĆ©s</string> + <string name="date">DĆ”tum</string> + <string name="duration">Hossz</string> + <string name="episode_title">EpizĆ³d cĆm</string> + <string name="ascending">NƶvekvÅ</string> + <string name="descending">CsƶkkenÅ</string> <!--Flattr--> + <string name="flattr_auth_label">Flattr bejelentkezĆ©s</string> + <string name="access_revoked_title">HozzĆ”fĆ©rĆ©s megtagadva</string> <!--Flattr--> <!--Variable Speed--> + <string name="download_plugin_label">KiegĆ©szĆtÅ letƶltĆ©se</string> + <string name="no_playback_plugin_title">KiegĆ©szĆtÅ nincs telepĆtve</string> + <string name="set_playback_speed_label">LejĆ”tszĆ”si sebessĆ©g</string> + <string name="enable_sonic">Sonic engedĆ©lyezĆ©se</string> <!--Empty list labels--> + <string name="no_items_label">Nincs elem a listĆ”ban</string> <!--Preferences--> + <string name="storage_pref">TĆ”rolĆ³</string> + <string name="project_pref">Projekt</string> + <string name="other_pref">Egyebek</string> + <string name="about_pref">RĆ³lam</string> + <string name="queue_label">LejĆ”tszĆ”si sor</string> + <string name="flattr_label">Flattr</string> + <string name="pref_pauseOnDisconnect_sum">LejĆ”tszĆ”s szĆ¼neteltetĆ©se fejhallgatĆ³ Ć©s bluetooth levĆ”lasztĆ”sakor</string> + <string name="pref_hardwareForwardButtonSkips_title">ElÅre gomb Ć”tugor</string> + <string name="pref_hardwarePreviousButtonRestarts_title">ElÅzÅ gomb ĆŗjraindĆt</string> + <string name="pref_auto_delete_title">AutĆ³mata tƶrlĆ©s</string> + <string name="pref_smart_mark_as_played_title">Intelligens jĆ”tszottnak jelƶlĆ©s</string> + <string name="playback_pref">LejĆ”tszĆ”s</string> + <string name="network_pref">HĆ”lĆ³zat</string> + <string name="pref_autoUpdateIntervallOrTime_Interval">Intervallum</string> + <string name="pref_autoUpdateIntervallOrTime_TimeOfDay">IdÅpont</string> + <string name="pref_autoUpdateIntervallOrTime_every">minden %1$s</string> + <string name="pref_autoUpdateIntervallOrTime_at">%1$s-kor</string> + <string name="pref_downloadMediaOnWifiOnly_sum">MĆ©dia fĆ”jlok letƶltĆ©se csak WiFi-n</string> + <string name="pref_followQueue_title">Folyamatos lejĆ”tszĆ”s</string> + <string name="pref_downloadMediaOnWifiOnly_title">WiFi mĆ©dia lejĆ”tszĆ”s</string> + <string name="pref_pauseOnHeadsetDisconnect_title">FejhallgatĆ³ levĆ”lasztĆ”sa</string> + <string name="pref_unpauseOnHeadsetReconnect_title">FejhallgatĆ³ ĆŗjracsatlakoztatĆ”sa</string> + <string name="pref_unpauseOnBluetoothReconnect_title">Bluetooth ĆŗjracsatlakozĆ”s</string> + <string name="pref_mobileUpdate_title">FrissĆtĆ©sek mobiladat-kapcsolaton</string> + <string name="pref_mobileUpdate_sum">FrissĆtĆ©sek engedĆ©lyezĆ©se mobiladat-kapcsolaton keresztĆ¼l</string> + <string name="flattr_settings_label">Flattr beĆ”llĆtĆ”sok</string> + <string name="pref_flattr_auth_title">Flattr bejelentkezĆ©s</string> + <string name="pref_revokeAccess_title">HozzĆ”fĆ©rĆ©s megvonĆ”sa</string> + <string name="user_interface_label">FelhasznĆ”lĆ³i felĆ¼let</string> + <string name="pref_set_theme_title">TĆ©ma kivĆ”lasztĆ”sa</string> + <string name="pref_nav_drawer_title">NavigĆ”ciĆ³s fiĆ³k testreszabĆ”sa</string> + <string name="pref_nav_drawer_sum">NavigĆ”ciĆ³s fiĆ³k kinĆ©zetĆ©nek testreszabĆ”s</string> + <string name="pref_nav_drawer_items_title">NavigĆ”ciĆ³s fiĆ³k elemeinek kivĆ”laasztĆ”sa</string> + <string name="pref_set_theme_sum">AntennaPod kinĆ©zetĆ©nek megvĆ”ltoztatĆ”sa</string> + <string name="pref_automatic_download_title">AutĆ³matikus letƶltĆ©s</string> + <string name="pref_automatic_download_sum">EpizĆ³dok autĆ³matikus letƶltĆ©sĆ©nek beĆ”llĆtĆ”sa</string> + <string name="pref_autodl_wifi_filter_title">Wi-Fi szűrÅ beĆ”llĆtĆ”sa</string> + <string name="pref_parallel_downloads_title">PĆ”rhuzamos letƶltĆ©sek</string> + <string name="pref_episode_cache_title">EpizĆ³d gyorsĆtĆ³tĆ”r</string> + <string name="pref_theme_title_light">VilĆ”gos</string> + <string name="pref_theme_title_dark">SƶtĆ©t</string> + <string name="pref_update_interval_hours_plural">Ć³ra</string> + <string name="pref_update_interval_hours_singular">Ć³ra</string> + <string name="pref_gpodnet_authenticate_title">BejelentkezĆ©s</string> + <string name="pref_gpodnet_authenticate_sum">Jelentkezz be a gpodder.net fiĆ³kodba a feliratkozĆ”sok szinkronizĆ”lĆ”sĆ”hoz.</string> + <string name="pref_gpodnet_logout_title">KijelentkezĆ©s</string> + <string name="pref_gpodnet_logout_toast">KijelentkezĆ©s sikeres</string> + <string name="pref_gpodnet_sync_changes_title">VĆ”ltozĆ”sok szinkronizĆ”lĆ”sa most</string> + <string name="pref_gpodnet_full_sync_title">Teljes szinkronizĆ”lĆ”s most</string> + <string name="pref_playback_speed_title">LejĆ”tszĆ”si sebessĆ©g</string> + <string name="pref_compact_notification_buttons_title">ZĆ”rkĆ©pernyÅ gombok beĆ”llĆtĆ”sa</string> + <string name="pref_lockscreen_background_title">ZĆ”rkĆ©pernyÅ hĆ”ttĆ©rkĆ©p</string> + <string name="pref_lockscreen_background_sum">ZĆ”rkĆ©pernyÅ hĆ”ttĆ©rkĆ©p Ć”tĆ”llĆtĆ”sa az epizĆ³d kĆ©pekĆ©nt.</string> + <string name="pref_image_cache_size_title">KĆ©p gyorsĆtĆ³tĆ”r mĆ©rete</string> + <string name="pref_image_cache_size_sum">KĆ©p gyorsĆtĆ³tĆ”r mĆ©retĆ©nek a lemezen</string> + <string name="crash_report_title">HibajelentĆ©s</string> + <string name="experimental_pref">KĆsĆ©rleti</string> + <string name="pref_proxy_title">Proxy</string> + <string name="pref_proxy_sum">HĆ”lĆ³zati proxy beĆ”llĆtĆ”sa</string> + <string name="pref_faq">GYIK</string> + <string name="pref_known_issues">Ismert hibĆ”k</string> + <string name="pref_no_browser_found">Nem talĆ”lhatĆ³ webbƶngĆ©szÅ</string> + <string name="pref_cast_title">Chromecast tĆ”mogatĆ”s</string> <!--Auto-Flattr dialog--> <!--Search--> + <string name="search_hint">EpizĆ³dok keresĆ©se</string> + <string name="search_label">KeresĆ©s</string> <!--OPML import and export--> + <string name="start_import_label">ImportĆ”lĆ”s indĆtĆ”sa</string> + <string name="opml_import_label">OPML importĆ”lĆ”sa</string> + <string name="opml_directory_error">HIBA!</string> + <string name="reading_opml_label">OPML fĆ”jl olvasĆ”sa</string> <!--Sleep timer--> + <string name="sleep_timer_enabled_label">ElalvĆ”s idÅzĆtÅ engedĆ©lyezĆ©se</string> + <string name="sleep_timer_disabled_label">ElalvĆ”s idÅzĆtÅ kikapcsolĆ”sa</string> <!--gpodder.net--> + <string name="gpodnet_taglist_header">KATEGĆRIĆK</string> + <string name="gpodnet_suggestions_header">AJĆNLĆSOK</string> + <string name="gpodnetauth_login_title">BejelentkezĆ©s</string> + <string name="gpodnetauth_login_butLabel">BejelentkezĆ©s</string> + <string name="username_label">FelhasznĆ”lĆ³nĆ©v</string> + <string name="password_label">JelszĆ³</string> + <string name="gpodnetauth_device_title">Eszkƶz kivĆ”lasztĆ”sa</string> + <string name="gpodnetsync_pref_report_successful">Sikeres</string> + <string name="gpodnetsync_pref_report_failed">Sikertelen</string> <!--Directory chooser--> + <string name="selected_folder_label">KivĆ”lasztott mappa:</string> + <string name="create_folder_label">Mappa lĆ©trehozĆ”sa</string> + <string name="create_folder_error_already_exists">Mappa mĆ”r lĆ©tezik</string> + <string name="folder_not_empty_dialog_title">Mappa nem Ć¼res</string> + <string name="set_to_default_folder">AlapĆ©rtelmezett mappa kivĆ”lasztĆ”sa</string> <!--Online feed view--> + <string name="subscribe_label">FeliratkozĆ”s</string> + <string name="subscribed_label">Feliratkozva</string> + <string name="downloading_label">LetƶltĆ©s...</string> <!--Content descriptions for image buttons--> + <string name="media_type_audio_label">Hang</string> + <string name="media_type_video_label">Video</string> + <string name="load_next_page_label">KƶvetkezÅ oldal betƶltĆ©se</string> <!--Feed information screen--> <!--Progress information--> <!--AntennaPodSP--> + <string name="search_itunes_label">iTunes keresĆ©s</string> + <string name="search_fyyd_label">fyyd keresĆ©s</string> <!--Episodes apply actions--> + <string name="all_label">Mind</string> + <string name="downloaded_label">Letƶltve</string> + <string name="not_downloaded_label">Nincs letƶltve</string> + <string name="queued_label">SorbaĆ”llĆtva</string> + <string name="not_queued_label">Nincs sorbaĆ”llĆtva</string> <!--Sort--> + <string name="sort_title_a_z">CĆm (A \u2192 Z)</string> + <string name="sort_title_z_a">CĆm (Z \u2192 A)</string> + <string name="sort_date_new_old">DĆ”tum (Ćj \u2192Ā RĆ©gi)</string> + <string name="sort_date_old_new">DĆ”tum (RĆ©gi \u2192 Ćj)</string> + <string name="sort_duration_short_long">Hossz (Rƶvid \u2192 HosszĆŗ)</string> + <string name="sort_duration_long_short">Hossz (HosszĆŗ \u2192 Rƶvid)</string> <!--Rating dialog--> + <string name="rating_later_label">KĆ©rdezz rĆ”kĆ©sÅbb</string> <!--Audio controls--> + <string name="audio_controls">Hang vezĆ©rlÅk</string> + <string name="playback_speed">LejĆ”tszĆ”si sebessĆ©g</string> + <string name="volume">HangerÅ</string> + <string name="left_short">B</string> + <string name="right_short">J</string> + <string name="audio_effects">Hangeffektek</string> + <string name="stereo_to_mono">LekeverĆ©s: SztereĆ³t Monora</string> + <string name="sonic_only">Csak Sonic</string> <!--proxy settings--> + <string name="proxy_type_label">TĆpus</string> + <string name="host_label">KiszolgĆ”lĆ³</string> + <string name="port_label">Port</string> + <string name="optional_hint">(OpcionĆ”lis)</string> + <string name="proxy_test_label">Teszt</string> + <string name="proxy_test_successful">Teszt sikeres</string> + <string name="proxy_test_failed">Teszt sikertelen</string> + <string name="proxy_host_empty_error">KiszolgĆ”lĆ³ nem lehet Ć¼res</string> + <string name="proxy_port_invalid_error">Port nem helyes</string> <!--Database import/export--> + <string name="import_export">AdatbĆ”zis importĆ”lĆ”sa/exportĆ”lĆ”sa</string> + <string name="label_import">ImportĆ”lĆ”s</string> + <string name="label_export">ExportĆ”lĆ”s</string> + <string name="import_select_file">FĆ”jl kiĆ”lasztĆ”s importĆ”lĆ”shoz</string> + <string name="export_ok">ExportĆ”lĆ”s sikeres</string> <!--Casting--> <!--<string name="cast_failed_to_connect">Could not connect to the device</string>--> + <string name="cast_failed_setting_volume">Hiba a hangerÅ beĆ”llĆtĆ”sa kƶzben</string> + <string name="cast_failed_media_error_skipping">Hiba a lejĆ”tszĆ”s kƶzben. ĆtugrĆ”s...</string> + <!--Notification channels--> </resources> diff --git a/core/src/main/res/values-id/strings.xml b/core/src/main/res/values-id/strings.xml index e6ff6d1e7..62254518d 100644 --- a/core/src/main/res/values-id/strings.xml +++ b/core/src/main/res/values-id/strings.xml @@ -151,4 +151,5 @@ <!--Database import/export--> <!--Casting--> <!--<string name="cast_failed_to_connect">Could not connect to the device</string>--> + <!--Notification channels--> </resources> diff --git a/core/src/main/res/values-is-rIS/strings.xml b/core/src/main/res/values-is-rIS/strings.xml index acf3abe75..2d9481b84 100644 --- a/core/src/main/res/values-is-rIS/strings.xml +++ b/core/src/main/res/values-is-rIS/strings.xml @@ -36,4 +36,5 @@ <!--Database import/export--> <!--Casting--> <!--<string name="cast_failed_to_connect">Could not connect to the device</string>--> + <!--Notification channels--> </resources> diff --git a/core/src/main/res/values-it-rIT/strings.xml b/core/src/main/res/values-it-rIT/strings.xml deleted file mode 100644 index 23c8ec1c0..000000000 --- a/core/src/main/res/values-it-rIT/strings.xml +++ /dev/null @@ -1,526 +0,0 @@ -<?xml version='1.0' encoding='UTF-8'?> -<resources xmlns:tools="http://schemas.android.com/tools"> - <!--Activitiy and fragment titles--> - <string name="feeds_label">Feed</string> - <string name="statistics_label">Statistiche</string> - <string name="add_feed_label">Aggiungi un podcast</string> - <string name="episodes_label">Episodi</string> - <string name="all_episodes_short_label">Tutti</string> - <string name="favorite_episodes_label">Preferiti</string> - <string name="new_label">Nuovo</string> - <string name="settings_label">Impostazioni</string> - <string name="downloads_label">Download</string> - <string name="downloads_running_label">In esecuzione</string> - <string name="downloads_completed_label">Completati</string> - <string name="downloads_log_label">Registro</string> - <string name="subscriptions_label">Abbonamenti</string> - <string name="subscriptions_list_label">Elenco degli Abbonamenti</string> - <string name="cancel_download_label">Annulla\nil Download</string> - <string name="playback_history_label">Cronologia delle riproduzioni</string> - <string name="gpodnet_main_label">gpodder.net</string> - <string name="gpodnet_auth_label">Accesso a gpodder.net</string> - <string name="free_space_label">%1$s disponibili</string> - <string name="episode_cache_full_title">Cache degli episodi piena</string> - <string name="episode_cache_full_message">Lo spazio di memoria della cache degli episodi ĆØ esaurito. Puoi aumentarlo nelle Impostazioni</string> - <!--Statistics fragment--> - <string name="total_time_listened_to_podcasts">Tempo totale di riproduzione:</string> - <string name="statistics_details_dialog">%1$d di %2$d episodi iniziati.\n\nRiprodotti %3$s di %4$s.</string> - <string name="statistics_mode">ModalitĆ di statistica</string> - <string name="statistics_mode_normal">Calcola l\'attuale tempo di riproduzione. Riprodurre un podcast due volte verrĆ contato due volte, mentre segnarlo come riprodotto no.</string> - <string name="statistics_mode_count_all">Somma tutti i podcast segnati come riprodotti</string> - <string name="statistics_speed_not_counted">Avviso: La velocitĆ di riproduzione non viene considerata.</string> - <!--Main activity--> - <string name="drawer_open">Apri il menĆ¹</string> - <string name="drawer_close">Chiudi il menĆ¹</string> - <string name="drawer_preferences">Preferenze del Drawer</string> - <string name="drawer_feed_order_unplayed_episodes">Ordina per contatore</string> - <string name="drawer_feed_order_alphabetical">Ordina alfabeticamente</string> - <string name="drawer_feed_order_last_update">Ordina per data di pubblicazione</string> - <string name="drawer_feed_order_most_played">Ordina per numero di episodi riprodotti</string> - <string name="drawer_feed_counter_new_unplayed">Numero di episodi nuovi e non riprodotti</string> - <string name="drawer_feed_counter_new">Numero di episodi nuovi</string> - <string name="drawer_feed_counter_unplayed">Numero di episodi non riprodotti</string> - <string name="drawer_feed_counter_downloaded">Numero di episodi scaricati</string> - <string name="drawer_feed_counter_none">Nulla</string> - <!--Webview actions--> - <string name="open_in_browser_label">Apri nel Browser</string> - <string name="copy_url_label">Copia URL</string> - <string name="share_url_label">Condividi URL</string> - <string name="copied_url_msg">URL copiato negli appunti</string> - <string name="go_to_position_label">Vai a questa posizione</string> - <!--Playback history--> - <string name="clear_history_label">Pulisci la cronologia</string> - <!--Other--> - <string name="confirm_label">Conferma</string> - <string name="cancel_label">Annulla</string> - <string name="yes">SƬ</string> - <string name="no">No</string> - <string name="reset">Reimposta</string> - <string name="author_label">Autore</string> - <string name="language_label">Lingua</string> - <string name="url_label">URL</string> - <string name="podcast_settings_label">Impostazioni</string> - <string name="cover_label">Immagine</string> - <string name="error_label">Errore</string> - <string name="error_msg_prefix">Ć stato rilevato un errore:</string> - <string name="refresh_label">Aggiorna</string> - <string name="external_storage_error_msg">Non risulta disponibile lo spazio di archiviazione esterno. Assicurati che lo spazio di archiviazione sia montato per permettere all\'applicazione di funzionare correttamente.</string> - <string name="chapters_label">Capitoli</string> - <string name="chapter_duration">Durata: %1$s</string> - <string name="shownotes_label">Note dell\'episodio</string> - <string name="description_label">Descrizione</string> - <string name="most_recent_prefix">Episodio piĆ¹ recente:\u0020</string> - <string name="episodes_suffix">\u0020episodi</string> - <string name="length_prefix">Durata:\u0020</string> - <string name="size_prefix">Dimensione:\u0020</string> - <string name="processing_label">Elaborazione in corso</string> - <string name="loading_label">Caricamento...</string> - <string name="save_username_password_label">Salva nome utente e password</string> - <string name="close_label">Chiudi</string> - <string name="retry_label">Riprova</string> - <string name="auto_download_label">Includi nei download automatici</string> - <string name="auto_download_apply_to_items_title">Applica ai Precedenti Episodi</string> - <string name="auto_download_apply_to_items_message">L\'opzione <i>Download Automatico</i> verrĆ applicata ai nuovi episodi.\nVuoi anche applicarla agli episodi precedenti?</string> - <string name="auto_delete_label">Elimina Episodi Automaticamente</string> - <string name="parallel_downloads_suffix">\u0020download paralleli</string> - <string name="feed_auto_download_global">Impostazione Globale</string> - <string name="feed_auto_download_always">Sempre</string> - <string name="feed_auto_download_never">Mai</string> - <string name="send_label">Invia...</string> - <string name="episode_cleanup_never">Mai</string> - <string name="episode_cleanup_queue_removal">Quando non ĆØ in coda</string> - <string name="episode_cleanup_after_listening">Dopo il completamento</string> - <plurals name="episode_cleanup_days_after_listening"> - <item quantity="one">1 giorno dopo il completamento</item> - <item quantity="other">%d giorni dopo il completamento</item> - </plurals> - <!--'Add Feed' Activity labels--> - <string name="feedurl_label">URL del feed</string> - <string name="etxtFeedurlHint">www.example.com/feed</string> - <string name="txtvfeedurl_label">Aggiungi un Podcast tramite URL</string> - <string name="podcastdirectories_label">Trova un podcast nella directory</string> - <string name="podcastdirectories_descr">Per trovare podcasts puoi cercare su iTunes o fyyd, oppure puoi esplorare gpodder.net per nome, categoria oppure popolaritĆ .</string> - <string name="browse_gpoddernet_label">Esplora gpodder.net</string> - <!--Actions on feeds--> - <string name="mark_all_read_label">Segna tutti come riprodotti</string> - <string name="mark_all_read_msg">Segnati tutti gli episodi come riprodotti</string> - <string name="mark_all_read_confirmation_msg">Conferma che desideri segnare tutti gli episodi come riprodotti.</string> - <string name="mark_all_read_feed_confirmation_msg">Conferma che desideri segnare tutti gli episodi in questo feed come riprodotti.</string> - <string name="mark_all_seen_label">Segna tutti come visti</string> - <string name="mark_all_seen_msg">Segnati tutti gli episodi come visti</string> - <string name="mark_all_seen_confirmation_msg">Conferma che desideri segnare tutti gli episodi come visti.</string> - <string name="show_info_label">Informazioni</string> - <string name="rename_feed_label">Rinomina Podcast</string> - <string name="remove_feed_label">Rimuovi podcast</string> - <string name="share_label">Condividi...</string> - <string name="share_link_label">Condividi il link</string> - <string name="share_file_label">Condividi il file</string> - <string name="share_link_with_position_label">Condividi il Link con la Posizione</string> - <string name="share_feed_url_label">Condividi URL del Feed</string> - <string name="share_item_url_label">Condividi l\'URL dell\'episodio</string> - <string name="share_item_url_with_position_label">Condividi l\'URL del File dell\'epsiodio con la Posizione</string> - <string name="feed_delete_confirmation_msg">Conferma che desideri cancellare il feed \"%1$s\" e TUTTI i suoi episodi scaricati.</string> - <string name="feed_remover_msg">Rimozione del Feed in corso</string> - <string name="load_complete_feed">Ricarica il feed completo</string> - <string name="hide_episodes_title">Nascondi gli episodi</string> - <string name="episode_actions">Applica le azioni</string> - <string name="hide_unplayed_episodes_label">Non riprodotti</string> - <string name="hide_paused_episodes_label">In pausa</string> - <string name="hide_played_episodes_label">Riprodotti</string> - <string name="hide_queued_episodes_label">In coda</string> - <string name="hide_not_queued_episodes_label">Non in coda</string> - <string name="hide_downloaded_episodes_label">Scaricati</string> - <string name="hide_not_downloaded_episodes_label">Non scaricati</string> - <string name="filtered_label">Filtrati</string> - <string name="refresh_failed_msg">{fa-exclamation-circle} Ultimo aggiornamento fallito</string> - <string name="open_podcast">Apri Podcast</string> - <!--actions on feeditems--> - <string name="download_label">Download</string> - <string name="play_label">Riproduci</string> - <string name="pause_label">Pausa</string> - <string name="stop_label">Ferma</string> - <string name="stream_label">Stream</string> - <string name="remove_label">Rimuovi</string> - <string name="delete_label">Elimina</string> - <string name="remove_episode_lable">Rimuovi l\'episodio</string> - <string name="marked_as_seen_label">Segna come visto</string> - <string name="mark_read_label">Segna come riprodotto</string> - <string name="marked_as_read_label">Segnato come riprodotto</string> - <string name="mark_unread_label">Segna come non riprodotto</string> - <string name="add_to_queue_label">Aggiungi alla coda</string> - <string name="added_to_queue_label">Aggiunto alla coda</string> - <string name="remove_from_queue_label">Rimuovi dalla coda</string> - <string name="add_to_favorite_label">Aggiungi ai preferiti</string> - <string name="added_to_favorites">Aggiunto ai Preferiti</string> - <string name="remove_from_favorite_label">Rimuovi dai preferiti</string> - <string name="removed_from_favorites">Rimosso dai Preferiti</string> - <string name="visit_website_label">Visita il sito</string> - <string name="support_label">Carica questo su Flattr</string> - <string name="skip_episode_label">Salta l\'episodio</string> - <string name="activate_auto_download">Attiva il Download Automatico</string> - <string name="deactivate_auto_download">Disattiva il Download Automatico</string> - <string name="reset_position">Azzera la Posizione di Riproduzione</string> - <string name="removed_item">Elemento rimosso</string> - <!--Download messages and labels--> - <string name="download_successful">successo</string> - <string name="download_failed">fallito</string> - <string name="download_pending">Download in attesa</string> - <string name="download_running">Download in corso</string> - <string name="download_error_device_not_found">Spazio di archiviazione non trovato</string> - <string name="download_error_insufficient_space">Spazio insufficiente</string> - <string name="download_error_file_error">Errore del file</string> - <string name="download_error_http_data_error">Errore dei dati HTTP</string> - <string name="download_error_error_unknown">Errore sconosciuto</string> - <string name="download_error_parser_exception">Eccezione del decodificatore</string> - <string name="download_error_unsupported_type">Tipo di feed non supportato</string> - <string name="download_error_connection_error">Errore di connessione</string> - <string name="download_error_unknown_host">Host sconosciuto</string> - <string name="download_error_unauthorized">Errore di autenticazione</string> - <string name="download_error_file_type_type">Errore Formato FIle</string> - <string name="download_error_forbidden">Proibito</string> - <string name="cancel_all_downloads_label">Annulla tutti i download</string> - <string name="download_canceled_msg">Download annullato</string> - <string name="download_canceled_autodownload_enabled_msg">Download annullato\n<i>Download Automatico</i> disabilitato per questo elemento</string> - <string name="download_report_title">Download completato con un errore (o errori)</string> - <string name="download_report_content_title">Rapporto del Downoad</string> - <string name="download_error_malformed_url">URL malformato</string> - <string name="download_error_io_error">Errore IO</string> - <string name="download_error_request_error">Errore della richiesta</string> - <string name="download_error_db_access">Errore di accesso al database</string> - <plurals name="downloads_left"> - <item quantity="one">%d download rimanente</item> - <item quantity="other">%d download rimanenti</item> - </plurals> - <string name="downloads_processing">Elaborazione dei download in corso</string> - <string name="download_notification_title">Download podcast in corso</string> - <string name="download_report_content">%1$d download con successo, %2$d falliti</string> - <string name="download_log_title_unknown">Titolo Sconosciuto</string> - <string name="download_type_feed">Feed</string> - <string name="download_type_media">File multimediali</string> - <string name="download_type_image">Immagine</string> - <string name="download_request_error_dialog_message_prefix">Rilevato errore durante il download del file:\u0020</string> - <string name="authentication_notification_title">Autenticazione richiesta</string> - <string name="authentication_notification_msg">La risorsa che hai richiesto richiede un nome utente e una password</string> - <string name="confirm_mobile_download_dialog_title">Conferma il download su cellulare</string> - <string name="confirm_mobile_download_dialog_only_add_to_queue">Metti in Coda</string> - <string name="confirm_mobile_download_dialog_enable_temporarily">Consenti temporaneamente</string> - <!--Mediaplayer messages--> - <string name="player_error_msg">Errore!</string> - <string name="player_stopped_msg">Nessun media in riproduzione</string> - <string name="player_preparing_msg">Preparazione</string> - <string name="player_ready_msg">Pronto</string> - <string name="player_seeking_msg">Ricerca posizione</string> - <string name="playback_error_server_died">Server morto</string> - <string name="playback_error_unknown">Errore sconosciuto</string> - <string name="no_media_playing_label">Nessun elemento multimediale in riproduzione</string> - <string name="player_buffering_msg">Buffer in corso</string> - <string name="playbackservice_notification_title">Riproduzione del podcast in corso</string> - <string name="unknown_media_key">AntennaPod - Chiave dell\'elemento multimediale sconosciuta: %1$d</string> - <!--Queue operations--> - <string name="lock_queue">Blocca la coda</string> - <string name="unlock_queue">Sblocca la coda</string> - <string name="queue_locked">Coda bloccata</string> - <string name="queue_unlocked">Coda sbloccata</string> - <string name="clear_queue_label">Svuota la Coda</string> - <string name="undo">Undo</string> - <string name="removed_from_queue">Oggetto rimosso</string> - <string name="move_to_top_label">Sposta all\'inizio</string> - <string name="move_to_bottom_label">Sposta in fondo</string> - <string name="sort">Ordina</string> - <string name="date">Per data</string> - <string name="duration">Per durata</string> - <string name="episode_title">Titolo dell\'episodio</string> - <string name="feed_title">Titolo del feed</string> - <string name="ascending">In ordine crescente</string> - <string name="descending">In ordine decrescente</string> - <string name="clear_queue_confirmation_msg">Per favore conferma che vuoi rimuovere dalla coda TUTTI gli episodi in essa presenti.</string> - <!--Flattr--> - <string name="flattr_auth_label">Accesso a Flattr</string> - <string name="flattr_auth_explanation">Premi il tasto seguente per iniziare il processo di autenticazione. Sarai trasferito alla pagina di login di flattr sul tuo browser e ti sarĆ richiesto di garantire ad AntennaPod il permesso di effettuare microdonazioni. Dopo la tua autorizzazione, sarai riportato alla seguente schermata in modo automatico.</string> - <string name="authenticate_label">Autenticazione</string> - <string name="return_home_label">Ritorna alla pagina iniziale</string> - <string name="flattr_auth_success">Autenticazione avvenuta con successo! Adesso puoi microdonare con flattr dall\'interno dell\'app.</string> - <string name="no_flattr_token_title">Nessun token flattr trovato</string> - <string name="no_flattr_token_notification_msg">Il tuo account di Flattr non sembra essere collegato ad AntennaPod. Premi qui per autenticarti.</string> - <string name="no_flattr_token_msg">Il tuo account flattr non sembra essere collegato ad AntennaPod. Potresti collegare il tuo account ad AntennaPod per utilizzare flattr dall\'app oppure puoi visitare il sito per utilizzare flattr direttamente da lƬ.</string> - <string name="authenticate_now_label">Autenticati</string> - <string name="action_forbidden_title">Azione proibita</string> - <string name="action_forbidden_msg">AntennaPod non ha il permesso di effettuare questa azione. La ragione potrebbe essere che il token di accesso di AntennaPod al tuo account ĆØ stato revocato. Puoi eseguire la re-autenticazione o altrimenti visitare il sito web.</string> - <string name="access_revoked_title">Accesso revocato</string> - <string name="access_revoked_info">Hai revocato l\'accesso di AntennaPod al tuo account. Al fine di completare il processo devi rimuovere l\'app dalla lista delle applicazioni autorizzare nelle impostazioni del tuo account sul sito di flattr.</string> - <!--Flattr--> - <string name="flattr_click_success">Caricata una cosa su Flattr!</string> - <string name="flattr_click_success_count">Caricate %d cose su Flattr!</string> - <string name="flattr_click_success_queue">Caricato su Flattr: %s.</string> - <string name="flattr_click_failure_count">Ć stato fallito il caricamento su Flattr di %d cose!</string> - <string name="flattr_click_failure">Non caricato su Flattr: %s.</string> - <string name="flattr_click_enqueued">La cosa verrĆ caricata su Flattr piĆ¹ tardi</string> - <string name="flattring_thing">Caricamento su Flattr di %s in corso</string> - <string name="flattring_label">AntennaPod sta eseguendo Flattr</string> - <string name="flattrd_label">AntennaPod ha caricato su Flattr</string> - <string name="flattrd_failed_label">Caricamento su Flattr di AntennaPod fallito</string> - <string name="flattr_retrieving_status">Ricezione di cose caricate su Flattr in corso</string> - <!--Variable Speed--> - <string name="download_plugin_label">Scarica plugin</string> - <string name="no_playback_plugin_title">Plugin non installato</string> - <string name="set_playback_speed_label">VelocitĆ di riproduzione</string> - <string name="enable_sonic">Abilita Sonic</string> - <!--Empty list labels--> - <string name="no_items_label">Non ci sono oggetti in questo elenco.</string> - <string name="no_feeds_label">Non sei ancora abbonato a nessun feed.</string> - <string name="no_chapters_label">Questo episodio non ha capitoli.</string> - <string name="no_shownotes_label">Questo episodio non ha note.</string> - <!--Preferences--> - <string name="storage_pref">Memoria</string> - <string name="project_pref">Progetto</string> - <string name="other_pref">Altro</string> - <string name="about_pref">Informazioni</string> - <string name="queue_label">Coda</string> - <string name="services_label">Servizi</string> - <string name="flattr_label">Flattr</string> - <string name="pref_unpauseOnHeadsetReconnect_sum">Riprendi la riproduzione quando vengono riconnesse le cuffie</string> - <string name="pref_followQueue_sum">Passa al prossimo episodio in coda quanto si completa una riproduzione</string> - <string name="pref_auto_delete_sum">Elimina l\'episodio quando viene completata la riproduzione</string> - <string name="pref_auto_delete_title">Elimina automaticamente</string> - <string name="pref_skip_keeps_episodes_title">Manteni gli Episodi Saltati</string> - <string name="playback_pref">Riproduzione</string> - <string name="network_pref">Rete</string> - <string name="pref_autoUpdateIntervallOrTime_message">Puoi impostare un <i>intervallo</i> come \"ogni 2 ore\", impostare <i>un\'ora del giorno</i> specifica, come \"7:00\" oppure <i>disabilitare</i> gli aggiornamenti automatici del tutto.\n\n<small>Nota: I tempi di aggiornamento non sono perfetti. Potrai riscontrare dei brevi ritardi.</small></string> - <string name="pref_autoUpdateIntervallOrTime_Disable">Disabilita</string> - <string name="pref_autoUpdateIntervallOrTime_Interval">Imposta Intervallo</string> - <string name="pref_autoUpdateIntervallOrTime_every">ogni %1$s</string> - <string name="pref_autoUpdateIntervallOrTime_at">alle %1$s</string> - <string name="pref_downloadMediaOnWifiOnly_sum">Abilita il download dei media solo tramite WiFi</string> - <string name="pref_followQueue_title">Riproduzione Continua</string> - <string name="pref_downloadMediaOnWifiOnly_title">Download dei media su WiFi</string> - <string name="pref_pauseOnHeadsetDisconnect_title">Disconnessione cuffie</string> - <string name="pref_unpauseOnHeadsetReconnect_title">Riconnetti le Cuffie</string> - <string name="pref_unpauseOnBluetoothReconnect_title">Riconnessione Bluetooth</string> - <string name="pref_mobileUpdate_title">Aggiornamenti su Reti a Consumo</string> - <string name="pref_mobileUpdate_sum">Permetti gli aggiornamenti tramite connessione dati mobile</string> - <string name="refreshing_label">Aggiornamento</string> - <string name="flattr_settings_label">Impostazioni Flattr</string> - <string name="pref_flattr_auth_title">Flattr sign-in</string> - <string name="pref_flattr_auth_sum">Collega il tuo account flattr per utilizzare flattr direttamente dall\'app</string> - <string name="pref_flattr_this_app_title">Supporta con flattr questa app</string> - <string name="pref_flattr_this_app_sum">Supporta lo sviluppo di AntennaPod tramite flattr. Grazie!</string> - <string name="pref_revokeAccess_title">Revoca l\'accesso</string> - <string name="pref_revokeAccess_sum">Revoca il permesso, a questa applicazione, di accedere al tuo account flattr.</string> - <string name="pref_auto_flattr_title">Flattr automatico</string> - <string name="pref_auto_flattr_sum">Configura l\'esecuzione automatica di Flattr</string> - <string name="user_interface_label">Interfaccia utente</string> - <string name="pref_set_theme_title">Seleziona un Tema</string> - <string name="pref_nav_drawer_feed_order_title">Imposta l\'ordine delle Iscrizioni</string> - <string name="pref_set_theme_sum">Cambia l\'aspetto di AntennaPod</string> - <string name="pref_automatic_download_title">Download Automatico</string> - <string name="pref_automatic_download_sum">Configura il download automatico degli episodi</string> - <string name="pref_autodl_wifi_filter_title">Abilita il filtro Wi-Fi</string> - <string name="pref_autodl_wifi_filter_sum">Abilita il download automatico solo per alcune reti Wi-Fi selezionate.</string> - <string name="pref_automatic_download_on_battery_title">Scarica quando la batteria non ĆØ in carica</string> - <string name="pref_automatic_download_on_battery_sum">Permetti il download automatico quando la batteria non ĆØ in carica</string> - <string name="pref_parallel_downloads_title">Download Contemporanei</string> - <string name="pref_episode_cache_title">Cache degli Episodi</string> - <string name="pref_theme_title_light">Light</string> - <string name="pref_theme_title_dark">Dark</string> - <string name="pref_episode_cache_unlimited">Illimitato</string> - <string name="pref_update_interval_hours_plural">ore</string> - <string name="pref_update_interval_hours_singular">ora</string> - <string name="pref_update_interval_hours_manual">Manuale</string> - <string name="pref_gpodnet_authenticate_title">Login</string> - <string name="pref_gpodnet_authenticate_sum">Effettua il login con il tuo account gpodder.net per sincronizzare le tue sottoscrizioni.</string> - <string name="pref_gpodnet_logout_title">Logout</string> - <string name="pref_gpodnet_logout_toast">Logout effettuato</string> - <string name="pref_gpodnet_setlogin_information_title">Cambia le informazioni di login</string> - <string name="pref_gpodnet_setlogin_information_sum">Cambia le informazioni di login per il tuo account gpodder.net.</string> - <string name="pref_gpodnet_sync_started">Sincronizzazione avviata</string> - <string name="pref_playback_speed_title">VelocitĆ di riproduzione</string> - <string name="pref_playback_speed_sum">Personalizza le velocitĆ disponibili per la riproduzione audio a velocitĆ variabile</string> - <string name="pref_gpodnet_sethostname_title">Imposta l\'hostname</string> - <string name="pref_gpodnet_sethostname_use_default_host">Usa l\'host di default</string> - <string name="pref_expandNotify_title">Espandi le notifiche</string> - <string name="pref_expandNotify_sum">Espandi sempre le notifiche per mostrare i pulsanti di riproduzione.</string> - <string name="pref_persistNotify_title">Controlli di riproduzione persistenti</string> - <string name="pref_persistNotify_sum">Mantieni le notifiche e i controlli del blocco dello schermo quando la riproduzione ĆØ in pausa.</string> - <string name="pref_showDownloadReport_title">Mostra il Rapporto del Download</string> - <string name="pref_expand_notify_unsupport_toast">Le versioni di Android prima della 4.1 non supportano le notifiche estese.</string> - <string name="pref_queueAddToFront_sum">Aggiungi un nuovo episodio in testa alla coda.</string> - <string name="pref_queueAddToFront_title">Aggiungi in cima alla coda</string> - <string name="pref_smart_mark_as_played_disabled">Disabilitato</string> - <string name="pref_image_cache_size_title">Dimensione Cache delle Immagini</string> - <string name="send_email">Invia e-mail</string> - <string name="experimental_pref">Sperimentale</string> - <string name="pref_current_value">Valore corrente: %1$s</string> - <string name="pref_proxy_title">Proxy</string> - <string name="pref_faq">FAQ</string> - <string name="pref_known_issues">Problemi noti</string> - <string name="pref_cast_title">Supporto a Chromecast</string> - <!--Auto-Flattr dialog--> - <string name="auto_flattr_enable">Abilita l\'esecuzione automatica di Flattr</string> - <string name="auto_flattr_after_percent">Carica l\'episodio su Flattr appena ĆØ stato riprodotto al %d percento</string> - <string name="auto_flattr_ater_beginning">Carica l\'episodio su Flattr appena comincia la riproduzione</string> - <string name="auto_flattr_ater_end">Carica l\'episodio su Flattr appena finisce la riproduzione</string> - <!--Search--> - <string name="found_in_chapters_label">Trovato nei capitoli</string> - <string name="search_status_no_results">Nessun risultato trovato</string> - <string name="search_label">Ricerca</string> - <string name="found_in_title_label">Trovato nel titolo</string> - <!--OPML import and export--> - <string name="opml_import_txtv_button_lable">I file OPML ti permettono di spostare i tuoi podcast da un programma ad un altro.</string> - <string name="start_import_label">Avvio importazione</string> - <string name="opml_import_label">Importazione OPML</string> - <string name="opml_directory_error">ERRORE!</string> - <string name="reading_opml_label">Lettura OPML file in corso</string> - <string name="opml_import_error_no_file">Nessun file selezionato!</string> - <string name="select_all_label">Seleziona tutti</string> - <string name="deselect_all_label">Deseleziona tutti</string> - <string name="choose_file_from_filesystem">Dal filesystem locale</string> - <string name="choose_file_from_external_application">Utilizza un\'applicazione esterna</string> - <string name="opml_export_label">Esportazione su OPML</string> - <string name="export_error_label">Errore di esportazione</string> - <string name="opml_export_success_title">Esportazione OPML avvenuta con successo.</string> - <string name="opml_export_success_sum">Il file .opml ĆØ stato scritto su:\u0020</string> - <!--Sleep timer--> - <string name="set_sleeptimer_label">Imposta timer</string> - <string name="disable_sleeptimer_label">Disabilita il timer di spegnimento</string> - <string name="enter_time_here_label">Tempo di spegnimento</string> - <string name="sleep_timer_label">Timer di spegnimento</string> - <string name="time_left_label">Tempo residuo:\u0020</string> - <string name="time_dialog_invalid_input">Input non valido, il campo deve essere un numero intero.</string> - <string name="timer_vibration_label">Vibra</string> - <string name="time_seconds">secondi</string> - <string name="time_minutes">minuti</string> - <string name="time_hours">ore</string> - <plurals name="time_seconds_quantified"> - <item quantity="one">1 secondo</item> - <item quantity="other">%d secondi</item> - </plurals> - <plurals name="time_minutes_quantified"> - <item quantity="one">1 minuto</item> - <item quantity="other">%d minuti</item> - </plurals> - <plurals name="time_hours_quantified"> - <item quantity="one">1 ora</item> - <item quantity="other">%d ore</item> - </plurals> - <string name="auto_enable_label">Abilita automaticamente</string> - <!--gpodder.net--> - <string name="gpodnet_taglist_header">CATEGORIE</string> - <string name="gpodnet_toplist_header">TOP PODCAST</string> - <string name="gpodnet_suggestions_header">SUGGERIMENTI</string> - <string name="gpodnet_search_hint">Cerca su gpodder.net</string> - <string name="gpodnetauth_login_title">Login</string> - <string name="gpodnetauth_login_descr">Benvenuto sul processo di login di gpodder.net. Per prima cosa, inserisci le tue informazioni di login:</string> - <string name="gpodnetauth_login_butLabel">Login</string> - <string name="gpodnetauth_login_register">Se non hai ancora un account, puoi crearne uno qui:\nhttps://gpodder.net/register/</string> - <string name="username_label">Username</string> - <string name="password_label">Password</string> - <string name="gpodnetauth_device_title">Scelta del dispositivo</string> - <string name="gpodnetauth_device_descr">Crea un nuovo dispositivo per utilizzare il tuo account gpodder.net o scegline uno esistente:</string> - <string name="gpodnetauth_device_deviceID">ID del dispositivo:\u0020</string> - <string name="gpodnetauth_device_caption">Caption</string> - <string name="gpodnetauth_device_butCreateNewDevice">Crea un nuovo dispositivo</string> - <string name="gpodnetauth_device_chooseExistingDevice">Scegli un dispositivo esistente:</string> - <string name="gpodnetauth_device_errorEmpty">L\'ID del dispositivo non puĆ² essere vuoto</string> - <string name="gpodnetauth_device_errorAlreadyUsed">ID di dispositivo giĆ in uso</string> - <string name="gpodnetauth_device_butChoose">Scegli</string> - <string name="gpodnetauth_finish_title">Login effettuato!</string> - <string name="gpodnetauth_finish_descr">Congraturazioni! Il tuo account gpodder.net ĆØ stato collegato con il tuo dispositivo. Da ora AntennaPod sincronizzerĆ automaticamente le sottoscrizioni sul tuo dispositivo con il tuo account gpodder.net.</string> - <string name="gpodnetauth_finish_butsyncnow">Avvia la sincronizzazione</string> - <string name="gpodnetauth_finish_butgomainscreen">Vai alla schermata principale</string> - <string name="gpodnetsync_auth_error_title">errore di autenticazione su gpodder.net</string> - <string name="gpodnetsync_auth_error_descr">Nome utente o password errati</string> - <string name="gpodnetsync_error_title">gpodder.net errore di sincronizzazione</string> - <string name="gpodnetsync_error_descr">Rilevato un errore in fase di sincronizzazione:\u0020</string> - <!--Directory chooser--> - <string name="selected_folder_label">Seleziona la cartella:</string> - <string name="create_folder_label">Crea una cartella</string> - <string name="choose_data_directory">Scegli la directory per i dati</string> - <string name="create_folder_msg">Crea una nuova directory con nome \"%1$s\"?</string> - <string name="create_folder_success">Crea una nuova directory</string> - <string name="create_folder_error_no_write_access">Impossibile scrivere in questa directory</string> - <string name="create_folder_error_already_exists">La cartella esiste giĆ </string> - <string name="create_folder_error">Non ĆØ stato possibile creare la cartella</string> - <string name="folder_does_not_exist_error">\"%1$s\" non esiste</string> - <string name="folder_not_readable_error">\"%1$s\" non ĆØ leggibile</string> - <string name="folder_not_writable_error">\"%1$s\" non ĆØ scrivibile</string> - <string name="folder_not_empty_dialog_title">La cartella non ĆØ vuota</string> - <string name="folder_not_empty_dialog_msg">La cartella che hai selezionato non ĆØ vuota. I download dei media e altri file saranno creati in questa cartella. Continuare?</string> - <string name="set_to_default_folder">Scegli la cartella predefinita</string> - <string name="pref_pausePlaybackForFocusLoss_sum">Sospendi la riproduzione invece di abbassare il volume quando un\'altra app emette un suono</string> - <string name="pref_pausePlaybackForFocusLoss_title">Pausa su interruzione</string> - <string name="pref_resumeAfterCall_title">Riprendi dopo la chiamata</string> - <!--Online feed view--> - <string name="subscribe_label">Abbonati</string> - <string name="subscribed_label">Abbonato</string> - <string name="downloading_label">Download in corso...</string> - <!--Content descriptions for image buttons--> - <string name="rewind_label">Riavvolgi</string> - <string name="fast_forward_label">Avanti veloce</string> - <string name="media_type_audio_label">Audio</string> - <string name="media_type_video_label">Video</string> - <string name="navigate_upwards_label">Naviga verso l\'alto</string> - <string name="status_downloading_label">L\'episodio sta venendo scaricato</string> - <string name="in_queue_label">L\'episodio ĆØ in coda</string> - <string name="drag_handle_content_description">Trascina per cambiare la posizione di questo oggetto</string> - <string name="load_next_page_label">Carica la pagina successiva</string> - <!--Feed information screen--> - <string name="authentication_label">Autenticazione</string> - <string name="authentication_descr">Cambia il tuo nome utente e la tua password per questo podcast e i suoi episodi.</string> - <string name="episode_filters_include">Includi</string> - <string name="episode_filters_exclude">Escludi</string> - <string name="keep_updated">Mantieni Aggiornato</string> - <!--Progress information--> - <!--AntennaPodSP--> - <string name="sp_apps_importing_feeds_msg">Importazione di sottoscrizioni da applicazioni monouso in corso...</string> - <string name="search_itunes_label">Cerca su iTunes</string> - <string name="filter">Filtro</string> - <!--Episodes apply actions--> - <string name="all_label">Tutto</string> - <string name="selected_all_label">Seleziona tutti gli Episodi</string> - <string name="none_label">Nulla</string> - <string name="deselected_all_label">De-seleziona tutti gli episodi</string> - <string name="played_label">Riprodotti</string> - <string name="selected_played_label">Selezionati gli episodi riprodotti</string> - <string name="unplayed_label">Non riprodotti</string> - <string name="selected_unplayed_label">Selezionati gli episodi non riprodotti</string> - <string name="downloaded_label">Scaricati</string> - <string name="selected_downloaded_label">Seleziona gli episodi scaricati</string> - <string name="not_downloaded_label">Non scaricati</string> - <string name="selected_not_downloaded_label">Seleziona gli episodi non scaricati</string> - <string name="queued_label">In coda</string> - <string name="selected_queued_label">Seleziona gli episodi in coda</string> - <string name="not_queued_label">Non in coda</string> - <string name="selected_not_queued_label">Seleziona gli episodi non in coda</string> - <string name="selected_has_media_label">Seleziona gli episodi con elementi multimediali</string> - <!--Sort--> - <string name="sort_title_a_z">Titolo (A \u2192 Z)</string> - <string name="sort_title_z_a">Titolo (Z \u2192 A)</string> - <string name="sort_date_new_old">Data (Nuovi \u2192 Vecchi)</string> - <string name="sort_date_old_new">Data (Vecchi \u2192 Nuovi)</string> - <string name="sort_duration_short_long">Durata (Corti \u2192 Lunghi)</string> - <string name="sort_duration_long_short">Durata (Lunghi \u2192 Corti)</string> - <!--Rating dialog--> - <string name="rating_title">Ti piace AntennaPod?</string> - <string name="rating_later_label">Ricordamelo piĆ¹ tardi</string> - <!--Audio controls--> - <string name="audio_controls">Controlli audio</string> - <string name="playback_speed">VelocitĆ di riproduzione</string> - <string name="volume">Volume</string> - <string name="left_short">Sx</string> - <string name="right_short">Dx</string> - <string name="audio_effects">Effetti Audio</string> - <!--proxy settings--> - <string name="proxy_type_label">Tipo</string> - <string name="host_label">Host</string> - <string name="port_label">Porta</string> - <string name="optional_hint">(Opzionale)</string> - <string name="proxy_test_label">Test</string> - <string name="proxy_checking">Controllo in corso...</string> - <string name="proxy_test_successful">Test avvenuto con successo</string> - <string name="proxy_test_failed">Test fallito</string> - <string name="proxy_port_invalid_error">Porta non valida</string> - <!--Database import/export--> - <!--Casting--> - <string name="cast_media_route_menu_title">Riproduci su...</string> - <!--<string name="cast_failed_to_connect">Could not connect to the device</string>--> -</resources> diff --git a/core/src/main/res/values-it/strings.xml b/core/src/main/res/values-it/strings.xml index 45cd8d334..6084c3020 100644 --- a/core/src/main/res/values-it/strings.xml +++ b/core/src/main/res/values-it/strings.xml @@ -1,11 +1,13 @@ <?xml version='1.0' encoding='UTF-8'?> <resources xmlns:tools="http://schemas.android.com/tools"> <!--Activitiy and fragment titles--> + <string name="feed_update_receiver_name">Aggiorna sottoscrizioni</string> <string name="feeds_label">Feed</string> <string name="statistics_label">Statistiche</string> <string name="add_feed_label">Aggiungi un podcast</string> <string name="episodes_label">Episodi</string> <string name="all_episodes_short_label">Tutti</string> + <string name="new_episodes_label">Nuovo</string> <string name="favorite_episodes_label">Preferiti</string> <string name="new_label">Nuovo</string> <string name="settings_label">Impostazioni</string> @@ -18,10 +20,12 @@ <string name="cancel_download_label">Annulla\nil download</string> <string name="playback_history_label">Cronologia delle riproduzioni</string> <string name="gpodnet_main_label">gpodder.net</string> + <string name="gpodnet_summary">Sincronizza con altri dispositivi</string> <string name="gpodnet_auth_label">Accesso a gpodder.net</string> <string name="free_space_label">%1$s liberi</string> <string name="episode_cache_full_title">Cache degli episodi piena</string> <string name="episode_cache_full_message">Lo spazio di memoria della cache dell\'episodio ĆØ esaurito. Puoi aumentarlo nelle Impostazioni</string> + <string name="synchronizing">Sincronizzazione...</string> <!--Statistics fragment--> <string name="total_time_listened_to_podcasts">Tempo totale di riproduzione:</string> <string name="statistics_details_dialog">%1$d di %2$d episodi iniziati.\n\nRiprodotti %3$s di %4$s.</string> @@ -56,13 +60,14 @@ <string name="yes">SƬ</string> <string name="no">No</string> <string name="reset">Reimposta</string> - <string name="author_label">Autore</string> + <string name="author_label">Autore(i)</string> <string name="language_label">Lingua</string> <string name="url_label">URL</string> <string name="podcast_settings_label">Impostazioni</string> <string name="cover_label">Immagine</string> <string name="error_label">Errore</string> <string name="error_msg_prefix">Ć avvenuto un errore:</string> + <string name="needs_storage_permission">Permessi di archiviazione obbligatori per questa azione</string> <string name="refresh_label">Ricarica</string> <string name="external_storage_error_msg">Non ĆØ stata trovata nessuna memoria esterna. Controlla che la memoria esterna sia montata in modo che l\'app possa rilevarla</string> <string name="chapters_label">Capitoli</string> @@ -105,24 +110,27 @@ <string name="mark_all_read_label">Segna tutti come riprodotti</string> <string name="mark_all_read_msg">Segnati tutti gli episodi come riprodotti</string> <string name="mark_all_read_confirmation_msg">Conferma che desideri segnare tutti gli episodi come riprodotti.</string> - <string name="mark_all_read_feed_confirmation_msg">Conferma che desideri segnare tutti gli episodi in questo feed come riprodotti.</string> + <string name="mark_all_read_feed_confirmation_msg">Per favore conferma che vuoi segnare tutti gli episodi di questo podcast come riprodotti.</string> <string name="mark_all_seen_label">Segna tutti come visti</string> - <string name="mark_all_seen_msg">Segnati tutti gli episodi come visti</string> + <string name="mark_all_seen_msg">Segna tutti gli episodi come visti</string> <string name="mark_all_seen_confirmation_msg">Conferma che desideri segnare tutti gli episodi come visti.</string> <string name="show_info_label">Mostra delle informazioni</string> - <string name="rename_feed_label">Rinomina Podcast</string> - <string name="remove_feed_label">Rimuovi Podcast</string> + <string name="show_feed_settings_label">Mostra impostazioni podcast</string> + <string name="feed_info_label">Info podcast</string> + <string name="feed_settings_label">Impostazioni podcast</string> + <string name="rename_feed_label">Rinomina podcast</string> + <string name="remove_feed_label">Rimuovi podcast</string> <string name="share_label">Condividi...</string> - <string name="share_link_label">Condividi il link</string> + <string name="share_link_label">Condividi URL episodio</string> + <string name="share_link_with_position_label">Condividi URL episodio con posizione</string> <string name="share_file_label">Condividi il file</string> - <string name="share_link_with_position_label">Condividi il Link con la Posizione</string> <string name="share_feed_url_label">Condividi URL del Feed</string> - <string name="share_item_url_label">Condividi l\'URL dell\'episodio</string> - <string name="share_item_url_with_position_label">Condividi l\'URL del File dell\'epsiodio con la Posizione</string> - <string name="feed_delete_confirmation_msg">Conferma che desideri cancellare il feed \"%1$s\" e TUTTI i suoi episodi scaricati.</string> - <string name="feed_remover_msg">Rimozione del Feed in corso</string> + <string name="share_item_url_label">Condividi URL Media File</string> + <string name="share_item_url_with_position_label">Condividi URL Media File con posizione</string> + <string name="feed_delete_confirmation_msg">Conferma che vuoi eliminare il podcast \"%1$s\" e TUTTI i suoi episodi (compresi quelli scaricati).</string> + <string name="feed_remover_msg">Rimozione podcast</string> + <string name="load_complete_feed">Aggiorna l\'intero podcast</string> <string name="hide_episodes_title">Nascondi gli episodi</string> - <string name="episode_actions">Applica le azioni</string> <string name="hide_unplayed_episodes_label">Non riprodotti</string> <string name="hide_paused_episodes_label">In pausa</string> <string name="hide_played_episodes_label">Riprodotti</string> @@ -130,6 +138,7 @@ <string name="hide_not_queued_episodes_label">Non in coda</string> <string name="hide_downloaded_episodes_label">Scaricati</string> <string name="hide_not_downloaded_episodes_label">Non scaricati</string> + <string name="hide_is_favorite_label">Preferito</string> <string name="filtered_label">Filtrati</string> <string name="refresh_failed_msg">{fa-exclamation-circle} Ultimo aggiornamento fallito</string> <string name="open_podcast">Apri il Podcast</string> @@ -141,7 +150,9 @@ <string name="stream_label">Stream</string> <string name="remove_label">Rimuovi</string> <string name="delete_label">Elimina</string> + <string name="delete_failed">Impossibile eliminare il file. Il riavvio del dispositivo potrebbe aiutare.</string> <string name="remove_episode_lable">Rimuovi l\'episodio</string> + <string name="mark_as_seen_label">Segna come visto</string> <string name="marked_as_seen_label">Segna come visto</string> <string name="mark_read_label">Segna come riprodotto</string> <string name="marked_as_read_label">Segnato come riprodotto</string> @@ -165,6 +176,8 @@ <string name="download_failed">fallito</string> <string name="download_pending">Download in attesa</string> <string name="download_running">Download in corso</string> + <string name="download_error_details">Dettagli</string> + <string name="download_error_details_message">%1$s \n\nFile URL:\n%2$s</string> <string name="download_error_device_not_found">Spazio di archiviazione non trovato</string> <string name="download_error_insufficient_space">Spazio Insufficiente</string> <string name="download_error_file_error">Errore del file</string> @@ -229,7 +242,6 @@ <string name="date">Per data</string> <string name="duration">Per durata</string> <string name="episode_title">Titolo dell\'episodio</string> - <string name="feed_title">Titolo del feed</string> <string name="ascending">Crescente</string> <string name="descending">Decrescente</string> <string name="clear_queue_confirmation_msg">Per favore conferma che vuoi rimuovere dalla coda TUTTI gli episodi in essa presenti.</string> @@ -266,7 +278,6 @@ <string name="enable_sonic">Abilita Sonic</string> <!--Empty list labels--> <string name="no_items_label">Non ci sono oggetti in questo elenco.</string> - <string name="no_feeds_label">Non sei ancora abbonato a nessun feed.</string> <string name="no_chapters_label">Questo episodio non ha capitoli.</string> <string name="no_shownotes_label">Questo episodio non ha note.</string> <!--Preferences--> @@ -275,12 +286,16 @@ <string name="other_pref">Altro</string> <string name="about_pref">Riguardo a</string> <string name="queue_label">Coda</string> - <string name="services_label">Servizi</string> <string name="flattr_label">Flattr</string> + <string name="pref_episode_cleanup_title">Pulizia dell\'episodio</string> + <string name="pref_episode_cleanup_summary">Gli episodi che non sono in coda e non sono preferiti dovrebbero essere idonei alla rimozione se Auto Download richiede spazio per nuovi episodi</string> + <string name="pref_pauseOnDisconnect_sum">Sospendi la riproduzione quando le cuffie o il bluetooth sono disconnessi</string> <string name="pref_unpauseOnHeadsetReconnect_sum">Riprendi la riproduzione quando le cuffie vengono ricollegate</string> + <string name="pref_unpauseOnBluetoothReconnect_sum">Reprendi la riproduzione quando le cuffie o il bluetooth sono disconnessi</string> <string name="pref_followQueue_sum">Passa al prossimo episodio in coda al termine della riproduzione</string> <string name="pref_auto_delete_sum">Elimina l\'episodio al termine della riproduzione</string> <string name="pref_auto_delete_title">Elimina Automaticamente</string> + <string name="pref_smart_mark_as_played_sum">Contrassegna gli episodi come riprodotti anche se rimane meno di un certo numero di secondi di tempo di riproduzione</string> <string name="pref_skip_keeps_episodes_title">Manteni gli Episodi Saltati</string> <string name="playback_pref">Riproduzione</string> <string name="network_pref">Rete</string> @@ -336,8 +351,6 @@ <string name="pref_playback_speed_sum">Personalizza le velocitĆ disponibili per la riproduzione audio a velocitĆ variabile</string> <string name="pref_gpodnet_sethostname_title">Imposta il nome dell\'host</string> <string name="pref_gpodnet_sethostname_use_default_host">Utilizza l\'host predefinito</string> - <string name="pref_expandNotify_title">Espandi le notifiche</string> - <string name="pref_expandNotify_sum">Espandi sempre le notifiche per mostrare i pulsanti di riproduzione.</string> <string name="pref_persistNotify_title">Controlli di riproduzione persistenti</string> <string name="pref_persistNotify_sum">Mantieni le notifiche e i controlli del blocco dello schermo quando la riproduzione ĆØ in pausa.</string> <string name="pref_showDownloadReport_title">Mostra il Rapporto del Download</string> @@ -376,8 +389,6 @@ <string name="choose_file_from_external_application">Usa un\'applicazione esterna</string> <string name="opml_export_label">Esportazione OPML</string> <string name="export_error_label">Errore di esportazione</string> - <string name="opml_export_success_title">Esportazione OPML avvenuta con successo.</string> - <string name="opml_export_success_sum">Il file .opml ĆØ stato scritto su:\u0020</string> <!--Sleep timer--> <string name="set_sleeptimer_label">Imposta timer di spegnimento</string> <string name="disable_sleeptimer_label">Disabilita il timer di spegnimento</string> @@ -499,7 +510,9 @@ <string name="sort_duration_long_short">Durata (Lunghi \u2192 Corti)</string> <!--Rating dialog--> <string name="rating_title">Ti piace AntennaPod?</string> + <string name="rating_never_label">Lasciami solo</string> <string name="rating_later_label">Ricordamelo piĆ¹ tardi</string> + <string name="rating_now_label">Certo, facciamolo!</string> <!--Audio controls--> <string name="audio_controls">Controlli audio</string> <string name="playback_speed">VelocitĆ di riproduzione</string> @@ -516,9 +529,13 @@ <string name="proxy_checking">Controllo in corso...</string> <string name="proxy_test_successful">Test avvenuto con successo</string> <string name="proxy_test_failed">Test fallito</string> + <string name="proxy_host_empty_error">Host non puĆ² essere vuoto</string> <string name="proxy_port_invalid_error">Porta non valida</string> <!--Database import/export--> + <string name="import_select_file">Seleziona il file da importare</string> + <string name="export_ok">Esportato con successo.</string> <!--Casting--> <string name="cast_media_route_menu_title">Riproduci su...</string> <!--<string name="cast_failed_to_connect">Could not connect to the device</string>--> + <!--Notification channels--> </resources> diff --git a/core/src/main/res/values-iw-rIL/strings.xml b/core/src/main/res/values-iw-rIL/strings.xml index 96475b40e..8699c3eee 100644 --- a/core/src/main/res/values-iw-rIL/strings.xml +++ b/core/src/main/res/values-iw-rIL/strings.xml @@ -2,58 +2,70 @@ <resources xmlns:tools="http://schemas.android.com/tools"> <!--Activitiy and fragment titles--> <string name="feeds_label">××× ××Ŗ</string> - <string name="statistics_label">×”××××”××ק××Ŗ</string> - <string name="add_feed_label">×××”×£ פ××ק××”×</string> + <string name="statistics_label">×”××××”××ק×</string> + <string name="add_feed_label">××הפ×Ŗ פ××ק××”×</string> <string name="episodes_label">פ×Øק××</string> - <string name="all_episodes_short_label">×××</string> + <string name="all_episodes_short_label">××××</string> <string name="favorite_episodes_label">×××¢×פ××</string> <string name="new_label">××ש</string> <string name="settings_label">××××Ø××Ŗ</string> <string name="downloads_label">×××Ø×××Ŗ</string> - <string name="downloads_running_label">פ××¢×</string> - <string name="downloads_completed_label">×”×××</string> + <string name="downloads_running_label">פע××</string> + <string name="downloads_completed_label">××ש××</string> <string name="downloads_log_label">××××</string> <string name="subscriptions_label">פ××ק××”×××</string> <string name="subscriptions_list_label">×Øש×××Ŗ פ××ק××”×××</string> - <string name="cancel_download_label">××× ×××Ø××</string> + <string name="cancel_download_label">×××××\n×××Ø××</string> <string name="playback_history_label">×××”×××Ø×××Ŗ × ××××</string> <string name="gpodnet_main_label">gpodder.net</string> - <string name="gpodnet_auth_label">××Ŗ×××Ø××Ŗ ×× gpodder.net</string> - <string name="free_space_label">%1$s ××× ×</string> - <string name="episode_cache_full_title">×××Ø×× -×××××× ×©× ×¤×Øק×× ×××</string> - <string name="episode_cache_full_message">×××Ø××-×××××× ×©× ×¤×Øק×× ××××¢ ××××× ×©××. ×פש×Ø ×××××× ××Ŗ ×××× ×××××× ×××××Ø××Ŗ.</string> + <string name="gpodnet_auth_label">×× ××”× ×× gpodder.net</string> + <string name="free_space_label">%1$s ×¤× ××××</string> + <string name="episode_cache_full_title">××××× ×פ×Øק×× ×××</string> + <string name="episode_cache_full_message">××××× ×פ×Øק×× ××Ŗ×××. × ××Ŗ× ×××××× ××Ŗ ×××× ×××××× ×××××Ø××Ŗ.</string> <!--Statistics fragment--> - <string name="total_time_listened_to_podcasts">×”×\"× ××× × ×××× ×©× ×¤××ק××”×××:</string> - <string name="statistics_mode_normal">××©× ××× ×©× ××× ×פ××¢×. פ×Øק ×©× ××× ×¤×¢×××× × ×”×¤×Ø ×¤×¢××××, ××¢×××Ŗ פ×Øק ש×Øק ×”××× ×× ××× - ש×× × ×”×¤×Ø.</string> + <string name="total_time_listened_to_podcasts">××× × ×××× ×פ××ק××”××× ×××××:</string> + <string name="statistics_details_dialog">%1$d ××Ŗ×× %2$d פ×Øק×× ××××.\n\n× ××× × %3$s ××Ŗ×× %4$s.</string> + <string name="statistics_mode">××¦× ×”××××”××ק×</string> + <string name="statistics_mode_normal">××ש×× ××× ×©× ××× ×פ××¢×. × ××× × ×פ××× × ×”×¤×Ø×Ŗ פע××××, ××¢×× ×©×”×××× ×× ××× ×× × ×ש×.</string> + <string name="statistics_mode_count_all">×”×××× ×× ×פ××ק××”××× ×©×”××× × ×× ××× ×</string> + <string name="statistics_speed_not_counted">××Ŗש×××Ŗ ×××: ××× ××Ŗ××××”××Ŗ ×××××Ø××Ŗ ×× ××× ×.</string> <!--Main activity--> - <string name="drawer_open">פ×Ŗ× ×Ŗפ×Ø××</string> - <string name="drawer_close">×”×××Ø ×Ŗפ×Ø××</string> - <string name="drawer_feed_order_alphabetical">×××× ××”××Ø ××פ×××Ŗ×</string> - <string name="drawer_feed_order_last_update">×××× ××¤× ×Ŗ××Ø×× ×¤×Ø×”××</string> - <string name="drawer_feed_order_most_played">×××× ××¤× ×הפ×Ø ×¤×Øק×× ×©××ש××¢× </string> + <string name="drawer_open">פ×Ŗ×××Ŗ ×Ŗפ×Ø××</string> + <string name="drawer_close">×”×××Ø×Ŗ ×Ŗפ×Ø××</string> + <string name="drawer_preferences">××¢×פ××Ŗ ××××Ø×</string> + <string name="drawer_feed_order_unplayed_episodes">×××× ××¤× ××× ×</string> + <string name="drawer_feed_order_alphabetical">×××× ××”××Ø ××פ×××Ŗ×</string> + <string name="drawer_feed_order_last_update">×××× ××¤× ×Ŗ××Ø×× ×¤×Ø×”××</string> + <string name="drawer_feed_order_most_played">×××× ××¤× ×הפ×Ø ×¤×Øק×× ×©××ש××¢× </string> + <string name="drawer_feed_counter_new_unplayed">×הפ×Ø ×¤×Øק×× ××ש×× ××××× ×©×¢×××× ×× ××Ŗ× ×× ×</string> + <string name="drawer_feed_counter_new">×הפ×Ø ×¤×Øק×× ××ש××</string> + <string name="drawer_feed_counter_unplayed">×הפ×Ø ×¤×Øק×× ×©×¢×× ×× ××Ŗ× ×× ×</string> + <string name="drawer_feed_counter_downloaded">×הפ×Ø ×¤×Øק×× ×©××Ŗק×××</string> + <string name="drawer_feed_counter_none">×××</string> <!--Webview actions--> - <string name="open_in_browser_label">פ×Ŗ× ××פ×פ×</string> - <string name="copy_url_label">××¢×Ŗק ××Ŗ×××Ŗ ××Ŗ×Ø</string> - <string name="share_url_label">ש×Ŗ×£ ××Ŗ×××Ŗ ××Ŗ×Ø</string> - <string name="copied_url_msg">××Ŗ×××Ŗ ××Ŗ×Ø×××¢×Ŗ×§× ××××.</string> - <string name="go_to_position_label">×¢×××Ø ×××ק×× ××</string> + <string name="open_in_browser_label">פ×Ŗ××× ××פ×פ×</string> + <string name="copy_url_label">××¢×Ŗק×Ŗ ××Ŗ×××Ŗ</string> + <string name="share_url_label">ש××Ŗ××£ ××Ŗ×××Ŗ</string> + <string name="copied_url_msg">×××Ŗ×××Ŗ ×××¢×Ŗ×§× ×××× ×××××Ø××</string> + <string name="go_to_position_label">××¢××Ø ×××ק×× ××</string> <!--Playback history--> - <string name="clear_history_label">× ×§× ×××”×××Ø××</string> + <string name="clear_history_label">× ×ק×× ×××”×××Ø××</string> <!--Other--> <string name="confirm_label">××ש××Ø</string> - <string name="cancel_label">×××</string> + <string name="cancel_label">×××××</string> <string name="yes">××</string> <string name="no">××</string> - <string name="author_label">××××Ø</string> + <string name="reset">××פ××”</string> <string name="language_label">שפ×</string> <string name="url_label">××Ŗ×××Ŗ</string> <string name="podcast_settings_label">××××Ø××Ŗ</string> <string name="cover_label">×Ŗ××× ×</string> <string name="error_label">ש××××</string> <string name="error_msg_prefix">×××Ø×¢× ×©××××:</string> - <string name="refresh_label">×Ø×¢× ×</string> - <string name="external_storage_error_msg">××× ×××”×× ××צ×× × ××××. ×× × ××× ×× ×××”×× ××צ×× × ××× ×××Ŗ×§× ×× ×©××פ××קצ×× ×Ŗ××× ××¢××× ××× ×©×¦×Ø××.</string> + <string name="refresh_label">×Ø×¢× ××</string> + <string name="external_storage_error_msg">××× ×××”×× ××צ×× × ××××. × × ××××× ×©×ש ×××”×× ××צ×× × ××¢××× ××× ×©×××ש×××× ×××× ×פע×× ××Ø×××.</string> <string name="chapters_label">פ×Øק××</string> + <string name="chapter_duration">×ש×: %1$s</string> <string name="shownotes_label">××¢×Ø××Ŗ פ×Øק</string> <string name="description_label">×Ŗ××××Ø</string> <string name="most_recent_prefix">×פ×Øק ××××Ø××:\u0020</string> @@ -62,187 +74,268 @@ <string name="size_prefix">××××:\u0020</string> <string name="processing_label">××¢××</string> <string name="loading_label">×××¢×...</string> - <string name="save_username_password_label">ש×××Ø ×©× ×ש×Ŗ×ש ××”×”××</string> - <string name="close_label">×”×××Ø</string> - <string name="retry_label">× ×”× ×©××</string> - <string name="auto_download_label">×××× ××××Ø×××Ŗ ×××××××××Ŗ</string> + <string name="save_username_password_label">ש×××Ø×Ŗ ×©× ×ש×Ŗ×ש ××”×”××</string> + <string name="close_label">×”×××Ø×</string> + <string name="retry_label">×× ×”××Ŗ ש××</string> + <string name="auto_download_label">××××× ××××Ø×××Ŗ ×××××××××Ŗ</string> + <string name="auto_download_apply_to_items_title">×××× ×¢× ×¤×Øק×× ×§×××××</string> + <string name="auto_download_apply_to_items_message">××××Ø××Ŗ ×<i>×××Ø×× ×××××××××Ŗ</i> ×××ש××Ŗ ××××× ××××××××Ŗ ×¢× ×¤×Øק×× ××ש××.\n××××× ×××Ŗ× ×× ×¢× ×¤×Øק×× ×©×¤××Ø×”×× ××¢××Ø?</string> + <string name="auto_delete_label">×××ק×Ŗ פ×Øק ××××¤× ×××××××</string> <string name="parallel_downloads_suffix">\u0020×××Ø×××Ŗ ××ק×××</string> + <string name="feed_auto_download_global">××Ø×Ø×Ŗ ×××× ××××××</string> <string name="feed_auto_download_always">×Ŗ×××</string> <string name="feed_auto_download_never">××£ פע×</string> - <string name="send_label">ש××...</string> + <string name="send_label">ש××××ā¦</string> <string name="episode_cleanup_never">××£ פע×</string> + <string name="episode_cleanup_queue_removal">××ש×Ø ×× ××Ŗ××Ø</string> <string name="episode_cleanup_after_listening">×××Ø× ×”×××</string> <plurals name="episode_cleanup_days_after_listening"> <item quantity="one">××× ×××Ø× ×”×××</item> + <item quantity="two">%d ×××× ××××Ø ×”××× </item> + <item quantity="many">%d ×××× ××××Ø ×”××× </item> <item quantity="other">%d ×××× ××××Ø ×”××× </item> </plurals> <!--'Add Feed' Activity labels--> <string name="feedurl_label">××Ŗ×××Ŗ ××× ×</string> - <string name="etxtFeedurlHint">××Ŗ×××Ŗ ×©× ××× × ×× ××Ŗ×Ø ××× ××Ø× ×</string> - <string name="txtvfeedurl_label">×××”×£ פ××ק××”× ××¤× ××Ŗ×××Ŗ ××Ŗ×Ø</string> + <string name="etxtFeedurlHint">www.example.com/feed</string> + <string name="txtvfeedurl_label">××הפ×Ŗ פ××ק××”× ××¤× ××Ŗ×××Ŗ</string> <string name="podcastdirectories_label">×פש פ××ק××”× ×הפ×Ø××</string> - <string name="browse_gpoddernet_label">×¢××× ×gpodder.net</string> + <string name="podcastdirectories_descr">××××Ŗ××Ø ×¤××ק××”××× ××ש××, × ××Ŗ× ××פש ×Ö¾iTunes ×× ×Ö¾fyyd ×× ××¢××× ×Ö¾gpodder.net ××¤× ×©×, ק××××Ø×× ×× ×¤×פ×××Ø×××Ŗ.</string> + <string name="browse_gpoddernet_label">×¢××× ×Ö¾gpodder.net</string> <!--Actions on feeds--> - <string name="mark_all_read_label">×”×× ××× ×× ×§×Ø×</string> - <string name="mark_all_read_msg">×”×× ××Ŗ ×× ×פ×Øק×× ×× ×§×Ø×</string> - <string name="mark_all_read_confirmation_msg">×× × ×ש×Ø ×©××Ŗ× ×Ø××¦× ××”×× ××Ŗ ×× ×¤×Øק×× ×× ×§×Ø×××.</string> - <string name="mark_all_read_feed_confirmation_msg">×× × ×ש×Ø ×©××Ŗ× ×Ø××¦× ××”×× ××Ŗ ×× ×¤×Øק×× ×××× × ×× ×× ×§×Ø×××.</string> - <string name="mark_all_seen_label">×”×× ××Ŗ ×××× ×× ×Ø××</string> - <string name="mark_all_seen_msg">×”×× ××Ŗ ×× ×פ×Øק×× ×× ×Ø××</string> - <string name="mark_all_seen_confirmation_msg">×× × ×ש×Ø ×©××Ŗ× ×Ø××¦× ××”×× ××Ŗ ×× ×¤×Øק×× ×× ×Ø××.</string> - <string name="show_info_label">××¦× ××××¢</string> - <string name="rename_feed_label">×©× × ×©× ×¤××ק××”×</string> - <string name="remove_feed_label">××”×Ø ×¤××ק××”×</string> - <string name="share_label">ש×Ŗ×£...</string> - <string name="share_link_label">ש×Ŗ×£ ק×ש××Ø ××Ŗ×Ø</string> - <string name="feed_remover_msg">××”×Ø ××× ×</string> - <string name="load_complete_feed">×Ø×¢× × ××Ŗ ×× ×××× ×</string> - <string name="hide_episodes_title">××”×Ŗ×Ø ×¤×Øק××</string> + <string name="mark_all_read_label">×”×××× ×××× ×× ××× ×</string> + <string name="mark_all_read_msg">×”×××× ××Ŗ ×× ×פ×Øק×× ×× ××× ×</string> + <string name="mark_all_read_confirmation_msg">× × ××ש×Ø ×©××Øצ×× × ××”×× ××Ŗ ×× ×פ×Øק×× ×× ××× ×.</string> + <string name="mark_all_seen_label">×”×××× ×××× ×× ×¦×¤×</string> + <string name="mark_all_seen_confirmation_msg">× × ××ש×Ø ×©××Øצ×× × ××”×× ××Ŗ ×× ×פ×Øק×× ×× ×¦×¤×.</string> + <string name="show_info_label">×צ××Ŗ ××××¢</string> + <string name="share_label">ש××Ŗ××£ā¦</string> + <string name="share_file_label">ש××Ŗ××£ ××Ŗ×××Ŗ</string> + <string name="share_feed_url_label">ש××Ŗ××£ ××Ŗ×××Ŗ ××× ×</string> + <string name="hide_episodes_title">××”×Ŗ×Ø×Ŗ פ×Øק××</string> + <string name="hide_unplayed_episodes_label">×× × ×××</string> + <string name="hide_paused_episodes_label">××ש××</string> + <string name="hide_played_episodes_label">× ×××</string> + <string name="hide_queued_episodes_label">××Ŗ××Ø</string> + <string name="hide_not_queued_episodes_label">×× ××Ŗ××Ø</string> + <string name="hide_downloaded_episodes_label">×××Ø×</string> + <string name="hide_not_downloaded_episodes_label">×× ×××Ø×</string> + <string name="hide_has_media_label">×ש ××××</string> + <string name="filtered_label">××”×× ×</string> + <string name="refresh_failed_msg">{fa-exclamation-circle} ××Ø×¢× ×× ××××Ø×× × ×ש×</string> + <string name="open_podcast">פ×Ŗ×××Ŗ פ××ק××”×</string> <!--actions on feeditems--> - <string name="download_label">×××Ø×</string> - <string name="play_label">× ××</string> - <string name="pause_label">×ש××</string> - <string name="stop_label">עצ××Ø</string> - <string name="stream_label">×××Ø×</string> - <string name="remove_label">××”×Ø</string> - <string name="remove_episode_lable">××”×Ø ×¤×Øק</string> - <string name="mark_read_label">×”×× ×× ×§×Ø×</string> - <string name="marked_as_read_label">×”××× ×× ×§×Ø×</string> - <string name="mark_unread_label">×”×× ××× × ×§×Ø×</string> - <string name="add_to_queue_label">×××”×£ ××Ŗ××Ø</string> + <string name="download_label">×××Ø××</string> + <string name="play_label">× ××××</string> + <string name="pause_label">×ש×××</string> + <string name="stop_label">עצ××Ø×</string> + <string name="stream_label">×××Ø××</string> + <string name="remove_label">××”×Ø×</string> + <string name="delete_label">×××ק×</string> + <string name="delete_failed">×× × ××Ŗ× ××××ק ק××ׄ. ×פע××Ŗ ×××ש××Ø ×××ש עש××× ××”×××¢.</string> + <string name="remove_episode_lable">××”×Ø×Ŗ פ×Øק</string> + <string name="marked_as_seen_label">×”×××× ×× ×¦×¤×</string> + <string name="mark_read_label">×”×××× ×× ×¦×¤×</string> + <string name="marked_as_read_label">×”×××× ×× ×××</string> + <string name="mark_unread_label">×”×××× ××× × ×××</string> + <string name="add_to_queue_label">×××”×¤× ××Ŗ××Ø</string> <string name="added_to_queue_label">××Ŗ×××”×£ ××Ŗ××Ø</string> - <string name="remove_from_queue_label">××”×Ø ×××Ŗ××Ø</string> + <string name="remove_from_queue_label">××”×Ø× ×××Ŗ××Ø</string> <string name="add_to_favorite_label">××Ŗ×××”×£ ××××¢×פ××</string> - <string name="visit_website_label">×ק×Ø ×××Ŗ×Ø</string> - <string name="support_label">×Ŗ×Ø×× ×××צע××Ŗ Flattr</string> - <string name="skip_episode_label">××× ×¢× ×פ×Øק</string> + <string name="added_to_favorites">××Ŗ×××”×£ ××××¢×פ××</string> + <string name="remove_from_favorite_label">××”×Ø× ×××××¢×פ××</string> + <string name="removed_from_favorites">×××”×Ø ×××××¢×פ××</string> + <string name="visit_website_label">××ק××Ø ×××Ŗ×Ø</string> + <string name="support_label">×Ŗ×Ø××× ×¢× Flattr</string> + <string name="skip_episode_label">××××× ×¢× ×¤×Øק</string> + <string name="activate_auto_download">×פע××Ŗ ×××Ø×× ××××××××Ŗ</string> + <string name="deactivate_auto_download">×ש××Ŗ×Ŗ ×××Ø×× ××××××××Ŗ</string> + <string name="reset_position">××פ××” ××ק×× ×× ××× ×</string> + <string name="removed_item">פ×Ø×× ×××”×Ø</string> <!--Download messages and labels--> <string name="download_successful">×צ×××</string> - <string name="download_failed">××ש×××</string> - <string name="download_pending">×××Ø×× ×¢×Ŗ××××Ŗ</string> + <string name="download_failed">×ש×</string> + <string name="download_pending">×××Ø×× ×××Ŗ×× ×</string> <string name="download_running">×××Ø×× ××Ŗ×צע×Ŗ</string> - <string name="download_error_device_not_found">××Ŗ×§× ××××”×× ×× × ×צ×</string> - <string name="download_error_insufficient_space">××× ×× ×©×× ××××”××</string> + <string name="download_error_details">פ×Ø×××</string> + <string name="download_error_details_message">%1$s \n\n××Ŗ×××Ŗ ×ק××ׄ:\n%2$s</string> + <string name="download_error_device_not_found">××Ŗ×§× ××××”×× ×× × ×צ×</string> + <string name="download_error_insufficient_space">××× ×× ×©×× ×××”××</string> <string name="download_error_file_error">ש××××Ŗ ק××ׄ</string> - <string name="download_error_http_data_error">ש××××Ŗ ××××¢ HTTP</string> + <string name="download_error_http_data_error">ש××××Ŗ × ×Ŗ×× × HTTP</string> <string name="download_error_error_unknown">ש×××× ×× ××××¢×</string> - <string name="download_error_parser_exception">ש××××Ŗ ×Ŗ××× ××Ŗ × ××Ŗ××</string> + <string name="download_error_parser_exception">ש××××Ŗ ××¤×¢× ×</string> <string name="download_error_unsupported_type">×”×× ×××× × ××× × × ×Ŗ××</string> <string name="download_error_connection_error">ש××××Ŗ ×××××Ø</string> <string name="download_error_unknown_host">ש×Ø×Ŗ ×× ××××¢</string> <string name="download_error_unauthorized">ש××××Ŗ ×××××Ŗ</string> - <string name="cancel_all_downloads_label">××× ××Ŗ ×× ××××Ø×××Ŗ</string> + <string name="download_error_file_type_type">ש××××Ŗ ×”×× ×§××ׄ</string> + <string name="download_error_forbidden">××”××Ø</string> + <string name="cancel_all_downloads_label">××××× ×× ××××Ø×××Ŗ</string> <string name="download_canceled_msg">×××Ø×× ×××××</string> - <string name="download_report_title">×××Ø×××Ŗ ××ש×××</string> - <string name="download_error_malformed_url">××Ŗ×××Ŗ ××Ŗ×Ø ×©××××</string> + <string name="download_canceled_autodownload_enabled_msg">××××Ø×× ×××××\n×<i>×××Ø×× ×××××××××Ŗ</i> ××ש××Ŗ× ×¢×××Ø ×¤×Ø×× ××</string> + <string name="download_report_title">×××Ø×××Ŗ ××ש××× ×¢× ×©×××× ×××Ŗ ×× ×××Ŗ×Ø</string> + <string name="download_report_content_title">××× ×××Ø××</string> + <string name="download_error_malformed_url">××Ŗ×××Ŗ ש××××</string> <string name="download_error_io_error">ש××××Ŗ ק×× ×¤××</string> <string name="download_error_request_error">ש××××Ŗ ×קש×</string> <string name="download_error_db_access">ש××××Ŗ ×××©× ×××”× ×× ×Ŗ×× ××</string> - <string name="downloads_processing">××¢×× ×××Ø×××Ŗ</string> - <string name="download_notification_title">×××Ø×× ×¤××ק××”×</string> - <string name="download_report_content">%1$d ×××Ø×××Ŗ ×צ××××, %2$d × ××ש××</string> + <plurals name="downloads_left"> + <item quantity="one">× ××Ŗ×Ø× ×××Ø×× %d</item> + <item quantity="two">× ××Ŗ×Ø× %d ×××Ø×××Ŗ</item> + <item quantity="many">× ××Ŗ×Ø× %d ×××Ø×××Ŗ</item> + <item quantity="other">× ××Ŗ×Ø× %d ×××Ø×××Ŗ</item> + </plurals> + <string name="downloads_processing">××××Ø×××Ŗ ×××××× ×¢××××</string> + <string name="download_notification_title">× ×Ŗ×× × ×פ××ק××”× ××Ŗק××××</string> + <string name="download_report_content">%1$d ×××Ø×××Ŗ ×צ××××, %2$d × ×ש××</string> <string name="download_log_title_unknown">×××Ŗ×Ø×Ŗ ×× ××××¢×</string> <string name="download_type_feed">××× ×</string> <string name="download_type_media">ק××ׄ ××××</string> <string name="download_type_image">×Ŗ××× ×</string> - <string name="download_request_error_dialog_message_prefix">ש×××× ×××Ø×¢× ××¢×Ŗ ×× ××”××× ×××Ø××Ŗ ×ק××ׄ:\u0020</string> - <string name="authentication_notification_title">× ×××Øש ×××××Ŗ</string> - <string name="authentication_notification_msg">××ש×× ×××Ŗ× ××קש×Ŗ ×××Øש ×©× ×ש×Ŗ×ש ××”×”××</string> + <string name="download_request_error_dialog_message_prefix">×××Ø×¢× ×©×××× ××¢×Ŗ ×× ××”××× ×××Ø××Ŗ ×ק××ׄ:\u0020</string> + <string name="authentication_notification_title">× ××Øש ×××××Ŗ</string> + <string name="authentication_notification_msg">××ש×× ×©××קש×Ŗ ×××Øש ×©× ×ש×Ŗ×ש ××”×”××</string> + <string name="confirm_mobile_download_dialog_title">××ש××Ø ×××Ø×× ××Ø× ×Øש×Ŗ ×”××××Ø××Ŗ</string> + <string name="confirm_mobile_download_dialog_message_not_in_queue">×××Ø×× ××Ø× ×××××Ø × ×Ŗ×× ×× ×©× ×Øש×Ŗ ×”××××Ø××Ŗ ××ש××Ŗ ××Ø× ×××××Ø××Ŗ.\n\n× ××Ŗ× ×××××Ø ××× ××הפ×Ŗ ×פ×Øק ××Ŗ××Ø ×× ××פש×Ø ××××Ø×× ×××Ŗ× ××××¤× ××× ×.\n\n<small>×××××Ø× ×©×× ×Ŗ×ש××Ø ×××©× 10 ×ק××Ŗ.</small></string> + <string name="confirm_mobile_download_dialog_message">×××Ø×× ××Ø× ×××××Ø × ×Ŗ×× ×× ×©× ×Øש×Ŗ ×”××××Ø××Ŗ ××ש××Ŗ ××Ø× ×××××Ø××Ŗ.\n\n××פש×Ø ××Ŗ ××××Ø×× ××××¤× ××× ×?\n\n<small>×××××Ø× ×©×× ×Ŗ×ש××Ø ×××©× 10 ×ק××Ŗ.</small></string> + <string name="confirm_mobile_download_dialog_only_add_to_queue">×××”×¤× ××Ŗ××Ø</string> + <string name="confirm_mobile_download_dialog_enable_temporarily">××פש×Ø ×××× ×Ŗ×××</string> <!--Mediaplayer messages--> <string name="player_error_msg">ש××××!</string> - <string name="player_stopped_msg">×××× ×× ××Ŗ× ×× ×Ŗ</string> - <string name="player_preparing_msg">××Ŗ××× ×</string> - <string name="player_ready_msg">××××</string> - <string name="player_seeking_msg">××פש</string> - <string name="playback_error_server_died">ש×Ø×Ŗ ××Ŗ</string> + <string name="player_stopped_msg">××× ×××× ××Ŗ× ×× ×Ŗ</string> + <string name="player_preparing_msg">×××× ×</string> + <string name="player_ready_msg">××××Ŗ× ×</string> + <string name="player_seeking_msg">××Ŗ×צע ×××Ŗ××Ø</string> + <string name="playback_error_server_died">×ש×Ø×Ŗ ×× ××××</string> <string name="playback_error_unknown">ש×××× ×× ××××¢×</string> - <string name="no_media_playing_label">×××× ×× ××Ŗ× ×× ×Ŗ</string> - <string name="player_buffering_msg">×××× ××צׄ</string> - <string name="playbackservice_notification_title">×× ×× ×¤××ק××”×</string> - <string name="unknown_media_key">×× ×× ×-פ×× - ×פ×Ŗ× ×××× ×× ××××¢: %1$d</string> + <string name="no_media_playing_label">××× ×××× ××Ŗ× ×× ×Ŗ</string> + <string name="player_buffering_msg">×××צׄ ××Ŗ×××</string> + <string name="playbackservice_notification_title">פ××ק××”× ××Ŗ× ××</string> + <string name="unknown_media_key">×× ×× ×־פּ×Ö¹× - ×פ×Ŗ× ×××× ×× ××××¢: %1$d</string> <!--Queue operations--> - <string name="clear_queue_label">× ×§× ×Ŗ××Ø</string> - <string name="undo">×××</string> - <string name="removed_from_queue">××”×Ø ×¤×Ø××</string> - <string name="move_to_top_label">××¢××Ø ×××¢××</string> - <string name="move_to_bottom_label">××¢××Ø ××××</string> - <string name="sort">××××</string> + <string name="lock_queue">× ×¢×××Ŗ ×Ŗ××Ø</string> + <string name="unlock_queue">ש××Ø××Ø ×Ŗ××Ø</string> + <string name="queue_locked">××Ŗ××Ø × × ×¢×</string> + <string name="queue_unlocked">××Ŗ××Ø ×©×××Ø×Ø ×× ×¢×××</string> + <string name="clear_queue_label">× ×ק×× ×Ŗ××Ø</string> + <string name="undo">×××××</string> + <string name="removed_from_queue">פ×Ø×× ×××”×Ø</string> + <string name="move_to_top_label">××¢××Ø× ×××¢××</string> + <string name="move_to_bottom_label">××¢××Ø× ××××</string> + <string name="sort">××××</string> <string name="date">×Ŗ××Ø××</string> <string name="duration">×ש×</string> + <string name="episode_title">×××Ŗ×Ø×Ŗ ×פ×Øק</string> <string name="ascending">××”××Ø ×¢×××</string> <string name="descending">××”××Ø ×××Ø×</string> - <string name="clear_queue_confirmation_msg">×× × ×ש×Ø ×©××Ŗ× ×Ø××¦× ×× ×§××Ŗ ××Ŗ ××Ŗ××Ø ××× ×פ×Øק×× ×©××</string> + <string name="clear_queue_confirmation_msg">× × ××ש×Ø ××Ŗ פ×× ×× ××Ŗ××Ø ××× ×פ×Øק×× ×©××</string> <!--Flattr--> - <string name="flattr_auth_label">×× ××”× ×-Fattr</string> - <string name="flattr_auth_explanation">××ׄ ×¢× ××פ×Ŗ××Ø ×××× ××× ×××Ŗ××× ××Ŗ ×Ŗ×××× ××××××Ŗ. ××Ŗ× ×Ŗ××¢××Ø ×××”× ×× ××”×Ŗ flattr ××פ××¤× ×©×× ××Ŗ×Ŗ×קש ××Ŗ×Ŗ ××× ×× ×-פ×× ×Øש××Ŗ ××Ŗ×Ø×× ×××צע××Ŗ flattr. ××××Ø ×©×§×××Ŗ ××ש××Ø, ×Ŗ××× ×××××Ø ×××”× ×× ××××¤× ×××××××.</string> + <string name="flattr_auth_label">×× ××”× ×Ö¾Fattr</string> + <string name="flattr_auth_explanation">× × ××××ׄ ×¢× ××פ×Ŗ××Ø ×©×××× ××× ×××Ŗ××× ××Ŗ ×Ŗ×××× ××××××Ŗ. פע××× ×× ×Ŗ×¢×××Ø ×××Ŗ× ×××”× ××× ××”× ×©× Flattr ××פ××¤× ×©×× ××Ŗ×פ××¢ ××§×©× ××פש×Ø ××× ×× ×־פּ×Ö¹× ××צע פע××××Ŗ ×Ö¾Flattr. ××××Ø ××Ŗ× ×××Øש××, ×××¢×Ø××Ŗ ×Ŗ××××Ø ×××Ŗ× ×××”× ×× ××××××××Ŗ.</string> <string name="authenticate_label">×××××Ŗ</string> - <string name="return_home_label">××××Ø ×××”× ××××Ŗ</string> - <string name="flattr_auth_success">××××××Ŗ ×צ×××! ×¢×ש×× ××Ŗ× ×××× ××Ŗ×Ø×× ×××צע××Ŗ flattr ××Ŗ×× ××פ××קצ××.</string> - <string name="no_flattr_token_title">××”×××× flattr ×× × ×צ×</string> - <string name="no_flattr_token_notification_msg">×ש××× ×-flattr ש×× ××× × ×××××Ø ××× ×× ×-פ××. ×קש ××× ××××××Ŗ.</string> - <string name="no_flattr_token_msg">×ש××× ×-flattr ש×× ××× × ×××××Ø ××× ×× ×-פ××. ××Ŗ× ×××× ×קש×Ø××Ŗ ××ש××× × ××× ×× ×-פ×× ××Ŗ×Ø×× ×××צע××Ŗ flattr ××Ŗ×× ××פ××קצ×× ×× ×©××Ŗ× ×××× ××ק×Ø ×××Ŗ×Ø ×××× ××Ø× × ×©× ××××Ø ×× ×Ŗ×Ø×¦× ××Ŗ×Ø××.</string> - <string name="authenticate_now_label">×××Ŗ</string> + <string name="return_home_label">×××Ø× ×××”× ××××Ŗ</string> + <string name="flattr_auth_success">××××××Ŗ ×צ×××! ××¢×Ŗ ×ש ×× ×פש×Ø××Ŗ ××Ŗ×Ø×× ×¢× Flattr ××Ŗ×× ×××ש××××.</string> + <string name="no_flattr_token_title">×× × ××¦× ××”×××× Flattr</string> + <string name="no_flattr_token_notification_msg">× ×Ø×× ×× ×ש××× ×Ö¾Flattr ש×× ××× × ×××××Ø ××× ×× ×־פּ×Ö¹×. ×ש ×××¢×Ŗ ××× ××××××Ŗ.</string> + <string name="no_flattr_token_msg">× ×Ø×× ×× ×ש××× ×Ö¾Flattr ש×× ××× × ×××××Ø ××× ×× ×־פּ×Ö¹×. ×ש ×× ×פש×Ø××Ŗ ××××Ø ××Ŗ ×ש××× × ××× ×× ×־פּ×Ö¹× ××× ××Ŗ×Ø×× ×¢× Flattr ××Ŗ×× ×××ש×××× ×× ××ק×Ø ×××Ŗ×Ø ×©× ×× ×©××Øצ×× × ××Ŗ×Ø×× ×× ×¢× Flattr.</string> + <string name="authenticate_now_label">×××××Ŗ</string> <string name="action_forbidden_title">×פע××× ××”××Ø×</string> - <string name="action_forbidden_msg">××× ×× ×-פ×× ××× ××Øש×× ×פע××× ××. ××”××× ××× ××××× ×××××Ŗ ש××”×××× ××××©× ×©× ×× ×× ×-פ×× ××ש××× ×©×× ××××. ××Ŗ× ×××× ××צע ×××××Ŗ ×××ש ×× ××ק×Ø ×××Ŗ×Ø ×××× ××Ø× × ×©× ××××Ø ××ק××.</string> + <string name="action_forbidden_msg">××× ×× ×־פּ×Ö¹× ××× ××Øש×× ××צע פע××× ××. ××”××× ××× ×¢×©××× ×××××Ŗ ש××”×××× ××××©× ×©× ×× ×× ×־פּ×Ö¹× ××ש××× ×©×× × ×©××. × ××Ŗ× ××××Ŗ ×××ש ×× ××ק×Ø ×××Ŗ×Ø ×××××¢× ××ק××.</string> <string name="access_revoked_title">×××©× ×××××</string> - <string name="access_revoked_info">××”×××× ××××©× ×©× ×× ×× ×-פ×× ××ש××× × ××××. ×¢× ×× ×Ŗ ××ש××× ××Ŗ ××Ŗ××××, ××Ŗ× ×¦×Ø×× ×××”××Ø ××ש×× ×× ×××Øש×××Ŗ ×××ש×××× ×©××ש×Ø× ×××××Ø××Ŗ ××ש××× × ×××Ŗ×Ø flattr.</string> + <string name="access_revoked_info">××”×××× ××××©× ×©× ×× ×× ×־פ×× ××ש××× × ××××. ×¢× ×× ×Ŗ ××ש××× ××Ŗ ××Ŗ××××, ××Ŗ× ×¦×Ø×× ×××”××Ø ××ש×× ×× ×××Øש×××Ŗ ×××ש×××× ×©××ש×Ø× ×××××Ø××Ŗ ××ש××× × ×××Ŗ×Ø flattr.</string> <!--Flattr--> - <string name="flattr_click_success">×Ŗ×Ø××Ŗ ×-Flattr!</string> - <string name="flattr_click_success_count">×Ŗ×Ø××Ŗ ×-Flattr %d פע×××! </string> + <string name="flattr_click_success">×Ŗ×Ø××Ŗ ×Ö¾Flattr!</string> + <string name="flattr_click_success_count">×Ŗ×Ø××Ŗ ×Ö¾Flattr %d פע×××!</string> <string name="flattr_click_success_queue">×Ŗ×Ø××××Ŗ Flattr: %s.</string> - <string name="flattr_click_failure_count">××ש××× ××Ŗ×Ø×× ×-Flattr %d!</string> - <string name="flattr_click_failure">×× × ×Ŗ×Ø× ×-Flattr: %s.</string> - <string name="flattr_click_enqueued">×Ŗ×Ø××××Ŗ ×-Flattr ×××××Ø ×××Ŗ×Ø</string> - <string name="flattring_thing">×Ŗ××Ø× ×-Flattr %s</string> - <string name="flattring_label">×× ×× ×-פ×× ×Ŗ××Ø× ×-Flattr</string> - <string name="flattrd_label">×× ×× ×-פ×× ×Ŗ×Ø× ×-Flattr</string> - <string name="flattrd_failed_label">××ש××× ×Ŗ×Ø×××Ŗ ×× ×× ×-פ×× ×-Flattr</string> - <string name="flattr_retrieving_status">××××××Ø ×Ŗ×Ø××××Ŗ Flattr</string> + <string name="flattr_click_failure_count">××Ŗ×Ø××× ×Ö¾Flattr %d × ×ש××!</string> + <string name="flattr_click_failure">×× × ×Ŗ×Ø× ×Ö¾Flattr: %s.</string> + <string name="flattr_click_enqueued">××Ŗ×Ø×× ×Ö¾Flattr ×××××Ø ×××Ŗ×Ø</string> + <string name="flattring_thing">×Ŗ×Ø××× ×Ö¾Flattr %s</string> + <string name="flattring_label">×Ŗ×Ø××× ×Ö¾Flattr ×¢× ×× ×× ×־פּ×Ö¹×</string> + <string name="flattrd_label">×Ŗ×Ø××× ×Ö¾Flattr ×¢× ×× ×× ×־פּ×Ö¹×</string> + <string name="flattrd_failed_label">××Ŗ×Ø××× ××× ×× ×־פּ×Ö¹× ×¢× Flattr × ×ש××</string> + <string name="flattr_retrieving_status">×Ŗ×Ø××××Ŗ Flattr ××Ŗק××××Ŗ</string> <!--Variable Speed--> - <string name="download_plugin_label">×××Ø× ×Ŗ××”×£</string> + <string name="download_plugin_label">×××Ø××Ŗ ×Ŗ××”×£</string> <string name="no_playback_plugin_title">×Ŗ××”×£ ×× ×××Ŗק×</string> + <string name="no_playback_plugin_or_sonic_msg">××× ×©×Ŗ××× ×Ŗ ×××××Ø××Ŗ ××ש×Ŗ× × ×Ŗפע×, ××××ׄ ××פע×× ××Ŗ × ×× ××××× ××××× × ××©× Sonic [×Ö¾Android 4.1 ×××××].\n\n××××פ××, × ××Ŗ× ××××Ø×× ×Ŗ××”×£ ×¦× ×©×××©× ××©× <i>Prestissimo</i> ×××× ××Ŗ Play.\n×× ×Ŗק×× ×©××פ××¢× ×Ö¾Prestissimo ××× × ××××Ø×××Ŗ ×× ×× ×־פּ×Ö¹× ××ש ××××× ×¢××× ×××¢××× ×¢× ××Ŗ××”×£.</string> <string name="set_playback_speed_label">××××Ø××××Ŗ × ××××</string> + <string name="enable_sonic">×פע××Ŗ Sonic</string> <!--Empty list labels--> <string name="no_items_label">××× ×¤×Ø×××× ××Øש××× ××.</string> - <string name="no_feeds_label">×× × ×Øש××Ŗ ×¢×××× ×××× ××Ŗ.</string> + <string name="no_chapters_label">×פ×Øק ×× ××× ×¤×Øק××.</string> + <string name="no_shownotes_label">×פ×Øק ×× ××× ××¢×Ø××Ŗ פ×Øק.</string> <!--Preferences--> + <string name="storage_pref">×××”××</string> + <string name="project_pref">××××</string> <string name="other_pref">×××Ø</string> - <string name="about_pref">×××××Ŗ</string> + <string name="about_pref">×¢× ×××××Ŗ</string> <string name="queue_label">×Ŗ××Ø</string> - <string name="services_label">ש××Ø××Ŗ××</string> <string name="flattr_label">Flattr</string> - <string name="pref_unpauseOnHeadsetReconnect_sum">×××©× ××Ŗ ×× ×××× ×ש××××× ×××Ŗ ×××××Ø××Ŗ ×××ש</string> - <string name="pref_followQueue_sum">×¢×××Ø ×פ×Ø×× ××× ××Ŗ××Ø ××ש×Ø ×× ×××× ××”×Ŗ×××</string> - <string name="pref_auto_delete_sum">××ק פ×Øק ××× ×××× ××”×Ŗ×××</string> + <string name="pref_episode_cleanup_title">× ×ק×× ×¤×Øק××</string> + <string name="pref_episode_cleanup_summary">פ×Øק×× ×©××× × ××Ŗ××Ø ×××× × ××××¢×פ×× ××××Ø×× ××¢× ××Ŗ ××Ŗ× ××× ×©× ××”×Ø× ××ק×Ø× ×©××××Ø×× ×××××××××Ŗ ×ק××§× ××ק×× ×פ×Øק×× ××ש××</string> + <string name="pref_pauseOnDisconnect_sum">×ש××××Ŗ ×× ××× × ××ש×Ø ××××× ×××Ŗ ×× ×Ö¾Bluetooth ×× ××Ŗק××</string> + <string name="pref_unpauseOnHeadsetReconnect_sum">×××ש×× ××Ŗ ×× ×××× ×ש××××× ×××Ŗ ×××××Ø××Ŗ ×××ש</string> + <string name="pref_unpauseOnBluetoothReconnect_sum">×××ש×× ××Ŗ ×× ××× × ×¢× ×××××Ø ×××ש ×©× ×Ö¾Bluetooth</string> + <string name="pref_hardwareForwardButtonSkips_title">×פ×Ŗ××Ø ×§×××× ××××</string> + <string name="pref_hardwarePreviousButtonRestarts_title">×פ×Ŗ××Ø ××××Ø× ××Ŗ××× ×××ש</string> + <string name="pref_hardwarePreviousButtonRestarts_sum">××××¦× ×¢× ×פ×Ŗ××Ø ×××××Ø× ××××Ø× ×××× ××Ŗ××× ×××ש ××Ŗ × ××× ×Ŗ ×פ×Øק ×× ×××× ××ק×× ×××××Ø ××××Ø× ×פ×Øק</string> + <string name="pref_followQueue_sum">××¢×××Ø ×פ×Ø×× ××× ××Ŗ××Ø ××ש×Ø ×× ×××× ××”×Ŗ×××</string> + <string name="pref_auto_delete_sum">×××ק×Ŗ פ×Øק ×ש×× ×××× ××”×Ŗ×××</string> <string name="pref_auto_delete_title">××××§× ××××××××Ŗ</string> + <string name="pref_smart_mark_as_played_sum">×”×××× ×¤×Øק×× ×× ××× × ×פ××× ×× × ×©××Ø× ××× ×©× ×××Ŗ ×× ××× ×</string> + <string name="pref_smart_mark_as_played_title">×”×××× ××× ×× ××× ×</string> + <string name="pref_skip_keeps_episodes_sum">××ש×××Ø ×¤×Øק×× ×××Ø××Ŗ ש×××××Ŗ ×¢××××</string> + <string name="pref_skip_keeps_episodes_title">××ש×××Ø ×¤×Øק×× ×©×××××</string> + <string name="pref_favorite_keeps_episodes_sum">××ש×××Ø ×¤×Øק×× ×©×”××× × ××××¢×פ××</string> + <string name="pref_favorite_keeps_episodes_title">××ש×××Ø ×¤×Øק×× ×××¢×פ××</string> <string name="playback_pref">× ××××</string> <string name="network_pref">×Øש×Ŗ</string> - <string name="pref_downloadMediaOnWifiOnly_sum">×××Ø× ×§××¦× ×××× ×Øק ××Ø× ×××××Ø ××× ××Ø× × ××××××</string> + <string name="pref_autoUpdateIntervallOrTime_title">××× ××× ×¢×××× ×× ×× ×××¢× ××××</string> + <string name="pref_autoUpdateIntervallOrTime_sum">× × ×צ××× ×פ×Øש ××× ×× ×××¢× ×××× ××Ø×¢× ×× ×××× ××Ŗ ××××××××Ŗ</string> + <string name="pref_autoUpdateIntervallOrTime_message">× ××Ŗ× ××××××Ø <i>×פ×Øש ×××</i> ×××× ā×× ×©×¢×Ŗ×××ā, ××××××Ø <i>×××¢× ××××</i> ×××× ā7:00ā ×× <i>××ש×××Ŗ</i> ×¢×××× ×× ××××××××× ××××Ŗ×Ø.\n\n<small>××Ŗש×××Ŗ ×××: ×××¢×× ××¢×××× ××× × ××××ק××. ××Ŗ×× ×¢×××× ×§× ×פע××××Ŗ.</small></string> + <string name="pref_autoUpdateIntervallOrTime_Disable">×ש××Ŗ×</string> + <string name="pref_autoUpdateIntervallOrTime_Interval">××××Ø×Ŗ ×פ×Øש ×××</string> + <string name="pref_autoUpdateIntervallOrTime_TimeOfDay">××××Ø×Ŗ ×××× ××××</string> + <string name="pref_autoUpdateIntervallOrTime_every">×× %1$s</string> + <string name="pref_autoUpdateIntervallOrTime_at">×Ö¾%1$s</string> + <string name="pref_downloadMediaOnWifiOnly_sum">×××Ø××Ŗ ק×××¦× ×××× ×Øק ××Ø× ×Øש×Ŗ ×××××××Ŗ</string> <string name="pref_followQueue_title">× ×××× ××Ŗ×ש×</string> - <string name="pref_downloadMediaOnWifiOnly_title">×××Ø××Ŗ ×××× ××Ø× ××× ××Ø× × ××××××</string> + <string name="pref_downloadMediaOnWifiOnly_title">×××Ø××Ŗ ×××× ××Ø× ×Øש×Ŗ ×××××××Ŗ</string> <string name="pref_pauseOnHeadsetDisconnect_title">× ××Ŗ×ק ×××× ×××Ŗ</string> <string name="pref_unpauseOnHeadsetReconnect_title">×××××Ø ×××× ×××Ŗ ×××ש</string> - <string name="pref_mobileUpdate_title">×¢××××× ××Ø× ×Øש×Ŗ ×”××××Ø××Ŗ</string> - <string name="pref_mobileUpdate_sum">×פש×Ø ×¢××××× ×× ××Ø× ×Øש×Ŗ ×”××××Ø××Ŗ</string> - <string name="refreshing_label">××Ø×¢× ×</string> + <string name="pref_unpauseOnBluetoothReconnect_title">×××××Ø Bluetooth ×××ש</string> + <string name="pref_mobileUpdate_title">×¢×××× ××Ø× ×Øש×Ŗ ×”××××Ø××Ŗ</string> + <string name="pref_mobileUpdate_sum">××פש×Ø ×¢×××× ×× ××Ø× ×Øש×Ŗ ×”××××Ø××Ŗ</string> + <string name="refreshing_label">××Ŗ×צע ×Ø×¢× ××</string> <string name="flattr_settings_label">××××Ø××Ŗ Flattr</string> - <string name="pref_flattr_auth_title">×× ××”× ×-Fattr</string> - <string name="pref_flattr_auth_sum">×××× ×” ××ש××× ×©×× ×flattr ××Ŗ×Ø×× ×ש××Ø××Ŗ ××Ŗ×× ××פ××קצ××.</string> + <string name="pref_flattr_auth_title">×× ××”× ×Ö¾Fattr</string> + <string name="pref_flattr_auth_sum">× ××Ŗ× ××××× ×” ××ש××× ×©×× ×Ö¾Flattr ××× ××Ŗ×Ø×× ×ש××Ø××Ŗ ××Ŗ×× ×××ש××××.</string> <string name="pref_flattr_this_app_title">×Ŗ×Ø×× ×××צע××Ŗ Flattr ××פ××קצ×× ××</string> - <string name="pref_flattr_this_app_sum">×Ŗ××× ×פ××Ŗ×× ×× ×× ×-פ×× ××Ŗ×Ø××× ×¢× Flattr. ×Ŗ×××!</string> - <string name="pref_revokeAccess_title">××× ××ש×</string> - <string name="pref_revokeAccess_sum">××× ××Øש××Ŗ ×××©× ××ש××× flattr ×××ש×× ××.</string> + <string name="pref_flattr_this_app_sum">× ××Ŗ× ××Ŗ××× ×פ××Ŗ×× ×©× ×× ×× ×־פּ×Ö¹× ×¢× ××× ×Ŗ×Ø××× ×Ö¾Flattr. ×Ŗ×××!</string> + <string name="pref_revokeAccess_title">××××× ×××©× ××ש×</string> + <string name="pref_revokeAccess_sum">ש××××Ŗ ××Øש×××Ŗ ××××©× ××ש××× ×Ö¾Flattr ש×× ×××ש×××× ××.</string> <string name="pref_auto_flattr_title">×Ŗ×Ø××××Ŗ Flattr ×××××××××Ŗ</string> - <string name="pref_auto_flattr_sum">××××Ø ×Ŗ×Ø××××Ŗ flattr ×××××××××Ŗ</string> - <string name="user_interface_label">××שק ×ש×Ŗ×ש</string> - <string name="pref_set_theme_title">×××Ø ×¢×Ø××Ŗ × ×ש×</string> - <string name="pref_set_theme_sum">×©× × ××Ŗ ××Ø×× ×× ×× ×-פ××</string> + <string name="pref_auto_flattr_sum">××××Ø×Ŗ ×Ŗ×Ø××××Ŗ Flattr ×××××××××Ŗ</string> + <string name="user_interface_label">×× ×©×§ ×ש×Ŗ×ש</string> + <string name="pref_set_theme_title">××××Ø×Ŗ ×¢×Ø××Ŗ ×¢×צ××</string> + <string name="pref_nav_drawer_title">××Ŗ×××Ŗ ××××Ø×Ŗ ×× ××××</string> + <string name="pref_nav_drawer_sum">××Ŗ×××Ŗ ×Ŗצ×××Ŗ ××××Ø×Ŗ ×× ××××.</string> + <string name="pref_nav_drawer_items_title">××××Ø×Ŗ פ×Ø××× ××××Ø×Ŗ × ××××</string> + <string name="pref_nav_drawer_items_sum">×××פ×Ŗ ×פ×Ø×××× ×©××פ××¢×× ×××××Ø×Ŗ ×× ××××.</string> + <string name="pref_nav_drawer_feed_order_title">××××Ø×Ŗ ×”××Ø ××× ××××</string> + <string name="pref_nav_drawer_feed_order_sum">ש×× ×× ×”××Ø ×××× ×××× ×©××</string> + <string name="pref_nav_drawer_feed_counter_title">××××Ø×Ŗ ××× × ××× ××××</string> + <string name="pref_set_theme_sum">ש×× ×× ×××Ø×× ×©× ×× ×× ×־פּ×Ö¹×</string> <string name="pref_automatic_download_title">×××Ø×× ××××××××Ŗ</string> - <string name="pref_automatic_download_sum">××××Ø ×××Ø×× ×××××××Ŗ ×©× ×¤×Øק××.</string> - <string name="pref_autodl_wifi_filter_title">×פש×Ø ×”×× ×× ××× ××Ø× × ××××××</string> - <string name="pref_autodl_wifi_filter_sum">×פש×Ø ×××Ø×× ××××××××Ŗ ××Ø× ×Øש×Ŗ××Ŗ ×××××××××Ŗ × ×××Ø××Ŗ.</string> - <string name="pref_automatic_download_on_battery_title">×××Ø×× ×ש×× ×××¢×</string> - <string name="pref_automatic_download_on_battery_sum">×פש×Ø ×××Ø×× ××××××××Ŗ ×ש××”×××× ××× × × ××¢× ×Ŗ</string> + <string name="pref_automatic_download_sum">××××Ø×Ŗ ×××Ø×× ×××××××Ŗ ×©× ×¤×Øק××.</string> + <string name="pref_autodl_wifi_filter_title">×פע××Ŗ ×”×× ×× ×Øש×Ŗ××Ŗ ××××××××Ŗ</string> + <string name="pref_autodl_wifi_filter_sum">××פש×Ø ×××Ø×× ××××××××Ŗ ×Øק ××Ø× ×Øש×Ŗ××Ŗ ××××××××Ŗ × ×××Ø××Ŗ.</string> + <string name="pref_autodl_allow_on_mobile_title">×××Ø×× ××Ø× ×Øש×Ŗ ×”××××Ø××Ŗ</string> + <string name="pref_autodl_allow_on_mobile_sum">××פש×Ø ×××Ø×× ××××××××Ŗ ××Ø× ×××××Ø × ×Ŗ×× ×× ×©× ×Øש×Ŗ ×”××××Ø××Ŗ.</string> + <string name="pref_automatic_download_on_battery_title">××××Ø×× ×©×× ×××× ××¢×× ×</string> + <string name="pref_automatic_download_on_battery_sum">××פש×Ø ×××Ø×× ××××××××Ŗ ××ש×Ø ××”×××× ××× × ×××¢×× ×</string> <string name="pref_parallel_downloads_title">×××Ø×××Ŗ ××ק×××</string> <string name="pref_episode_cache_title">××××× ×¤×Øק××</string> <string name="pref_theme_title_light">××××Ø</string> @@ -252,128 +345,291 @@ <string name="pref_update_interval_hours_singular">שע×</string> <string name="pref_update_interval_hours_manual">××× ×</string> <string name="pref_gpodnet_authenticate_title">×× ××”×</string> - <string name="pref_gpodnet_authenticate_sum">×× ×” ×¢× ×ש××× gpodder.net ש×× ×¢× ×× ×Ŗ ××”× ××Ø× ××Ŗ ×××Øש×××Ŗ ש××.</string> - <string name="pref_gpodnet_logout_title">××Ŗ× ×Ŗק××Ŗ</string> - <string name="pref_gpodnet_logout_toast">×××Ŗ× ×Ŗק××Ŗ ××××Ŗ× ××צ×××Ŗ</string> - <string name="pref_gpodnet_setlogin_information_title">ש×× ×× ×¤×Ø×× ××Ŗ×××Ø××Ŗ</string> - <string name="pref_gpodnet_setlogin_information_sum">×©× × ×¤×Ø×× ××Ŗ×××Ø××Ŗ ×©× ×ש××× gpodder.net.</string> + <string name="pref_gpodnet_authenticate_sum">× ××Ŗ× ××××× ×” ××ש××× × ×Ö¾gpodder.net ××× ××”× ××Ø× ××Ŗ ×××× ×××× ×©××.</string> + <string name="pref_gpodnet_logout_title">×צ×××</string> + <string name="pref_gpodnet_logout_toast">×צ×××Ŗ ×צ××Ŗ</string> + <string name="pref_gpodnet_setlogin_information_title">ש×× ×× ×¤×Ø×× ××× ××”×</string> + <string name="pref_gpodnet_setlogin_information_sum">ש×× ×× ×¤×Ø×× ××× ××”× ××ש××× ×Ö¾gpodder.net ש××.</string> + <string name="pref_gpodnet_sync_changes_title">×”× ××Ø×× ×ש×× ×××× ××¢×Ŗ</string> + <string name="pref_gpodnet_sync_changes_sum">×”× ××Ø×× ×©×× ××× ××¦× ×××× ×××× ××פ×Øק×× ××× gpodder.net.</string> + <string name="pref_gpodnet_full_sync_title">×”× ××Ø×× ××× ××¢×Ŗ</string> + <string name="pref_gpodnet_full_sync_sum">×”× ××Ø×× ×× ×××× ×××× ××צ×× ×פ×Øק×× ×¢× gpodder.net.</string> + <string name="pref_gpodnet_sync_sum_last_sync_line">× ××”××× ××”× ××Ø×× ××××Ø××: %1$s (%2$s)</string> + <string name="pref_gpodnet_sync_started">××”× ××Ø×× ××Ŗ×××</string> + <string name="pref_gpodnet_full_sync_started">××× ×”× ××Ø×× ×××</string> + <string name="pref_gpodnet_login_status"><![CDATA[× ×× ×”×Ŗ ××©× <i>%1$s</i> ×¢× ×××Ŗ×§× <i>%2$s</i>]]></string> + <string name="pref_gpodnet_notifications_title">×צ××Ŗ ××Ŗ×Ø×¢××Ŗ ש×××××Ŗ ×”× ××Ø××</string> + <string name="pref_gpodnet_notifications_sum">××××Ø× ×× ××× × ××× ×¢× ×©×××××Ŗ ×××××Ŗ.</string> <string name="pref_playback_speed_title">××××Ø××××Ŗ × ××××</string> - <string name="pref_playback_speed_sum">××Ŗ×××Ŗ ×××××Ø×××Ŗ ××××× ××Ŗ ×× ×××× ×××××Ø××Ŗ ×ש×Ŗ× ×</string> - <string name="pref_gpodnet_sethostname_title">××××Ø ×©× ×©×Ø×Ŗ</string> - <string name="pref_gpodnet_sethostname_use_default_host">×ש×Ŗ×ש ×ש×Ø×Ŗ ××Ø××Ø×Ŗ ××××</string> - <string name="pref_expandNotify_title">××Ø×× ××××¢×</string> - <string name="pref_expandNotify_sum">×Ŗ××× ××Ø×× ××Ŗ ×××××¢× ××× ×××Ø×××Ŗ ××Ŗ ×××¦× × ×פע××.</string> - <string name="pref_persistNotify_title">פק×× ×פע×× ×§×××¢××</string> - <string name="pref_persistNotify_sum">ש××Ø ×ק×Ø× ××××¢× ×××”× × ×¢××× ××¢×Ŗ ×ש××××Ŗ ×ש××¢×.</string> - <string name="pref_expand_notify_unsupport_toast">××Ø×”×××Ŗ ×× ××Ø××× ××¤× × 4.1 ×× ×Ŗ×××××Ŗ ×××××¢××Ŗ ×××Ø××××Ŗ.</string> - <string name="pref_queueAddToFront_sum">×××”×£ פ×Øק×× ××ש×× ××Ø×ש ××Ŗ××Ø.</string> - <string name="pref_queueAddToFront_title">×××”×£ ××Ø×ש ××Ŗ××Ø.</string> + <string name="pref_playback_speed_sum">××××Ø×Ŗ ×××××Ø××××Ŗ ××××× ××Ŗ ×××××Ø××Ŗ × ××× × ×ש×Ŗ× ×</string> + <string name="pref_fast_forward">××× ××××× ××××¦× ×§××××</string> + <string name="pref_fast_forward_sum">××Ŗ×××Ŗ ×הפ×Ø ××©× ×××Ŗ ×©× ×קפ××¦× ×§×××× ××¢×Ŗ ××××¦× ×¢× ×פ×Ŗ××Ø ×××צ×</string> + <string name="pref_rewind">××× ×קפ××¦× ××××Ø×</string> + <string name="pref_rewind_sum">××Ŗ×××Ŗ ×הפ×Ø ××©× ×××Ŗ ×©× ×קפ××¦× ××××Ø× ××¢×Ŗ ××××¦× ×¢× ×פ×Ŗ××Ø ××××Ø×</string> + <string name="pref_gpodnet_sethostname_title">××××Ø×Ŗ ×©× ×××Ø×</string> + <string name="pref_gpodnet_sethostname_use_default_host">ש×××ש ××©× ×××Ø× ×××Ø×Ø×Ŗ ××××</string> + <string name="pref_persistNotify_title">פק×× × ××× × ×§×××¢××</string> + <string name="pref_persistNotify_sum">××ש×××Ø ××Ŗ פק×× ×××Ŗ×Ø×¢××Ŗ ×××”× ×× ×¢××× ×× ×ש×× ××× × ××ש×××Ŗ.</string> + <string name="pref_compact_notification_buttons_title">××××Ø×Ŗ ×פ×Ŗ××Ø×× ×××”× × ×¢×××</string> + <string name="pref_compact_notification_buttons_sum">×××פ×Ŗ ×פ×Ŗ××Ø ×× ××× × ×××”× ×× ×¢×××. ××פ×Ŗ××Ø×× × ××× ×/×ש××× ×Ŗ××× × ×××××.</string> + <string name="pref_compact_notification_buttons_dialog_title">××××Ø× ×¢× %1$d פ×Ø××××</string> + <string name="pref_compact_notification_buttons_dialog_error">× ××Ŗ× ×××××Ø ×¢× %1$d פ×Ø××××.</string> + <string name="pref_lockscreen_background_title">××××Ø×Ŗ ×Øקע ××”× ×× ×¢×××</string> + <string name="pref_lockscreen_background_sum">××××Ø×Ŗ ×Øקע ××”× ×× ×¢××× ××Ŗ××× × ×©× ×פ×Øק ש××Ŗ× ×× ××¢×Ŗ. ××Ŗ×פע×Ŗ ×××××, ××Ŗ××× × ×Ŗ×פ××¢ ×× ×××ש××× ×¦× ×©××ש×.</string> + <string name="pref_showDownloadReport_title">×צ××Ŗ ××× ×××Ø××</string> + <string name="pref_showDownloadReport_sum">×× ××××Ø×× × ×ש××Ŗ, ×ש ××צ×Ø ××× ×©×צ×× ××Ŗ פ×Ø×× ××ש×.</string> + <string name="pref_expand_notify_unsupport_toast">××Ø×”×××Ŗ Android שק××× ×Ö¾4.1 ××× × ×Ŗ×××××Ŗ ×××Ŗ×Ø×¢××Ŗ ××Ŗ×Ø××××Ŗ.</string> + <string name="pref_queueAddToFront_sum">××הפ×Ŗ פ×Øק×× ××ש×× ××Ø×ש ××Ŗ××Ø.</string> + <string name="pref_queueAddToFront_title">×××”×¤× ××Ø×ש ××Ŗ××Ø.</string> + <string name="pref_smart_mark_as_played_disabled">××ש××Ŗ</string> + <string name="pref_image_cache_size_title">×××× ××××× ××Ŗ××× ××Ŗ</string> + <string name="pref_image_cache_size_sum">×× ×¤× ×××× × ×©×¢×©×× ×ש×ש ×××××× ×©× ×Ŗ××× ××Ŗ.</string> + <string name="crash_report_title">××××× ×¢× ×§×Ø××”×</string> + <string name="crash_report_sum">ש××××Ŗ ××××× ×ק×Ø××”× ××¢××× × ××××Ŗ×Ø ××Ø× ×××ד×</string> + <string name="send_email">ש××××Ŗ ×××ד×</string> + <string name="experimental_pref">× ××”××× ×</string> + <string name="pref_current_value">×¢×Ø× × ××××: %1$s</string> + <string name="pref_proxy_title">××Ŗ×××</string> + <string name="pref_proxy_sum">××××Ø×Ŗ ××Ŗ××× ×Øש×Ŗ</string> + <string name="pref_faq">ש×ד×Ŗ</string> + <string name="pref_known_issues">×Ŗק×××Ŗ ××××¢××Ŗ</string> + <string name="pref_no_browser_found">×× × ××¦× ×פ×פ×.</string> + <string name="pref_cast_title">×Ŗ×××× ×Ö¾Chromecast</string> + <string name="pref_cast_message_play_flavor">×פע××Ŗ ×Ŗ×××× ×× ××× ×Ŗ ×××× ×¢× ××Ŗ×§× × ×©××××Ø ××Ø××ק×× (×××× Chromecast, ×Ø×ק×××× ××××××××× ×× Android TV)</string> + <string name="pref_cast_message_free_flavor">××Ŗ×××× ×Ö¾Chromecast × ××Øש××Ŗ הפ×Ø×××Ŗ ×§× ××× ×××Ŗ ×××Ŗ צ×־ש×××©× ×©××ש××Ŗ××Ŗ ×××Ø×”× ×× ×©× ×× ×× ×־פּ×Ö¹×</string> + <string name="pref_enqueue_downloaded_title">××הפ×Ŗ ×××Ø×××Ŗ ××Ŗ××Ø</string> + <string name="pref_enqueue_downloaded_summary">××הפ×Ŗ פ×Øק×× ×©××Ŗק××× ××Ŗ××Ø</string> <!--Auto-Flattr dialog--> - <string name="auto_flattr_enable">××¤×¢× ×Ŗ×Ø××××Ŗ flattr ×××××××××Ŗ</string> - <string name="auto_flattr_after_percent">×Ŗ×Ø×× ×××צע××Ŗ flattr ××©× ××× %d ×××××× ××פ×Øק</string> - <string name="auto_flattr_ater_beginning">×Ŗ×Ø×× ×××צע××Ŗ flattr ××©× ×××× ×¤×Øק ××Ŗ×××</string> - <string name="auto_flattr_ater_end">×Ŗ×Ø×× ×××צע××Ŗ flattr ××©× ×××× ×¤×Øק ××”×Ŗ×××</string> + <string name="auto_flattr_enable">×פע××Ŗ ×Ŗ×Ø××××Ŗ Flattr ×××××××××Ŗ</string> + <string name="auto_flattr_after_percent">××Ŗ×Ø×× ×פ×Øק ××ש×Ø ××Ŗ× ×× × %d ××××××</string> + <string name="auto_flattr_ater_beginning">××Ŗ×Ø×× ×¢× Flattr ×¢× ×Ŗ××××Ŗ × ××× ×Ŗ פ×Øק</string> + <string name="auto_flattr_ater_end">××Ŗ×Ø×× ×¢× Flattr ×¢× ×”××× × ××× ×Ŗ פ×Øק</string> <!--Search--> + <string name="search_hint">××פ×ש ×××Ø ×¤×Øק××</string> + <string name="found_in_shownotes_label">× ××¦× ×××¢×Ø××Ŗ ×פ×Øק</string> <string name="found_in_chapters_label">× ××¦× ×פ×Øק××</string> - <string name="search_status_no_results">××× ×Ŗ×צ×××Ŗ</string> + <string name="search_status_no_results">×× × ×צ×× ×Ŗ×צ×××Ŗ</string> <string name="search_label">××פ×ש</string> <string name="found_in_title_label">× ××¦× ××××Ŗ×Ø×Ŗ</string> + <string name="no_results_for_query">×× × ×צ×× ×Ŗ×צ×××Ŗ ×¢×××Ø ā%1$sā</string> <!--OPML import and export--> - <string name="opml_import_txtv_button_lable">ק××¦× OPML ××פש×Ø× ××× ×× ××× ×¤××ק××”××× ××××× ×¤××ק××”××× ××× ×××©× ×.</string> - <string name="opml_import_explanation_1">×××Ø × ×Ŗ×× ×§××ׄ הפצ××¤× ×××¢×Ø××Ŗ ×ק×צ×× ××ק××××Ŗ.</string> - <string name="opml_import_explanation_2">×ש×Ŗ×ש ×××ש×××× ××צ×× ××× ××× Dropbox, Google Drive ×× ×× ×× ×ק×צ×× ××××× ×¢××× ×פ×Ŗ×× ×§××ׄ OPML.</string> - <string name="opml_import_explanation_3">××ש×××× ×Ø××× ××× Google Mail, Dropbox, Google Drive ××Ø×× ×× ××× ×ק×צ×× ×××××× <i>×פ×Ŗ××</i> ק××¦× OPML <i>×¢×</i> ×× ×× ×-פ××.</string> - <string name="start_import_label">××Ŗ×× ××××</string> - <string name="opml_import_label">×××× OPML</string> + <string name="opml_import_txtv_button_lable">ק×××¦× OPML ××פש×Ø×× ×× ×××¢×××Ø ××Ŗ ×פ××ק××”××× ×©×× ×××ש××Ø ××× ×××©× ××.</string> + <string name="opml_import_option">×פש×Ø××Ŗ %1$d</string> + <string name="opml_import_explanation_1">× × ×××××Ø × ×Ŗ×× ×§××ׄ ××”××× ×××¢×Ø××Ŗ ×ק×צ×× ××ק××××Ŗ.</string> + <string name="opml_import_explanation_2">× ××Ŗ× ××ש×Ŗ×ש ×××ש×××× ××צ×× ××× ××× Dropbox,ā Google Drive ×× ×× ×× ×ק×צ×× ××××¢××£ ×¢××× ××× ×פ×Ŗ×× ×§××ׄ OPML.</string> + <string name="opml_import_explanation_3">××ש×××× ×Ø××× ×××× Google Mail,ā Dropbox,ā Google Drive ××Ø×× ×× ××× ×ק×צ×× ×××××× <i>×פ×Ŗ××</i> ק×××¦× OPML <i>×¢×</i> ×× ×× ×־פּ×Ö¹×.</string> + <string name="start_import_label">××Ŗ×××Ŗ ×××××</string> + <string name="opml_import_label">××××× OPML</string> <string name="opml_directory_error">ש××××!</string> - <string name="reading_opml_label">ק××Ø× ×§××ׄ OPML</string> - <string name="select_all_label">×××Ø ×××</string> - <string name="deselect_all_label">××× ××××Ø××Ŗ</string> + <string name="reading_opml_label">ק×Ø×××Ŗ ק××ׄ OPML</string> + <string name="opml_reader_error">×××Ø×¢× ×©×××× ××¢×Ŗ ק×Ø×××Ŗ ××”×× ×Ö¾OPML:</string> + <string name="opml_import_error_no_file">×× × ×××Ø ×§××ׄ!</string> + <string name="select_all_label">××××Ø×Ŗ ××××</string> + <string name="deselect_all_label">××××× ×××××Ø×</string> + <string name="select_options_label">××××Ø×ā¦</string> <string name="choose_file_from_filesystem">×××¢×Ø××Ŗ ×ק×צ×× ××ק××××Ŗ</string> - <string name="choose_file_from_external_application">×ש×Ŗ×ש ××פ××קצ×× ××צ×× ××Ŗ</string> - <string name="opml_export_label">×צ×× OPML</string> - <string name="export_error_label">ש××××Ŗ ×צ××</string> - <string name="opml_export_success_title">×צ×× OPML ×צ×××.</string> - <string name="opml_export_success_sum">ק××ׄ OPML × ××Ŗ× ×:\u0020</string> + <string name="choose_file_from_external_application">ש×××ש ×××ש×××× ××צ×× ×</string> + <string name="opml_export_label">××צ×× OPML</string> + <string name="html_export_label">××צ×× HTML</string> + <string name="exporting_label">××Ŗ×צע ××צ××ā¦</string> + <string name="export_error_label">ש××××Ŗ ××צ××</string> + <string name="export_success_title">×××צ×× ×צ×××</string> + <string name="export_success_sum">×ק××ׄ ש××××¦× × ××Ŗ× ××:\n\n%1$s</string> + <string name="opml_import_ask_read_permission">× ××Øש×Ŗ ×××©× ××××”×× ××צ×× × ××× ×ק×Ø×× ××Ŗ ק××ׄ ×Ö¾OPML</string> <!--Sleep timer--> - <string name="set_sleeptimer_label">ק××¢ ×××××Ø ×©×× ×</string> - <string name="disable_sleeptimer_label">××× ×××××Ø ×©×× ×</string> - <string name="enter_time_here_label">ק××¢ ×××</string> - <string name="sleep_timer_label">×××××Ø ×©×× ×</string> - <string name="time_left_label">××× × ××Ŗ×Ø:\u0020</string> - <string name="time_dialog_invalid_input">ק×× ×× ××ק×, ××× ×××× ×××××Ŗ ×הפ×Ø ×©××</string> + <string name="set_sleeptimer_label">××××Ø×Ŗ ××Ŗ××× ×©×× ×</string> + <string name="disable_sleeptimer_label">×ש××Ŗ×Ŗ ××Ŗ××× ×©×× ×</string> + <string name="enter_time_here_label">××××Ø×Ŗ שע×</string> + <string name="sleep_timer_label">××Ŗ××× ×©×× ×</string> + <string name="time_left_label">××× ×©× ××Ŗ×Ø:\u0020</string> + <string name="time_dialog_invalid_input">ק×× ×©×××, ××©×¢× ×××× ×××××Ŗ ×הפ×Ø ×©×× ××××××</string> + <string name="timer_about_to_expire_label"><b>××ש×Ø ×”×¤××Ø×Ŗ ×××Ŗ××× ×¢××××Ŗ ×××”×Ŗ×××:</b></string> + <string name="shake_to_reset_label">×שקשק ××× ××פה ××Ŗ ×××Ŗ×××</string> + <string name="timer_vibration_label">××Ø×××</string> + <string name="time_seconds">×©× ×××Ŗ</string> + <string name="time_minutes">×ק××Ŗ</string> + <string name="time_hours">שע××Ŗ</string> + <plurals name="time_seconds_quantified"> + <item quantity="one">×©× ××× ×××Ŗ</item> + <item quantity="two">%d ×©× ×××Ŗ</item> + <item quantity="many">%d ×©× ×××Ŗ</item> + <item quantity="other">%d ×©× ×××Ŗ</item> + </plurals> + <plurals name="time_minutes_quantified"> + <item quantity="one">××§× ×××Ŗ</item> + <item quantity="two">%d ×ק××Ŗ</item> + <item quantity="many">%d ×ק××Ŗ</item> + <item quantity="other">%d ×ק××Ŗ</item> + </plurals> + <plurals name="time_hours_quantified"> + <item quantity="one">שע×</item> + <item quantity="two">שע×Ŗ×××</item> + <item quantity="many">%d שע××Ŗ</item> + <item quantity="other">%d שע××Ŗ</item> + </plurals> + <string name="auto_enable_label">×פע×× ××××××××Ŗ</string> + <string name="sleep_timer_enabled_label">××Ŗ××× ×ש×× × ×¤×¢××</string> + <string name="sleep_timer_disabled_label">××Ŗ××× ×ש×× × ××ש××Ŗ</string> <!--gpodder.net--> <string name="gpodnet_taglist_header">ק××××Ø×××Ŗ</string> - <string name="gpodnet_toplist_header">פ××ק××”××× ××××Ø××</string> + <string name="gpodnet_toplist_header">פ××ק××”××× ×××××××</string> <string name="gpodnet_suggestions_header">×××צ××Ŗ</string> - <string name="gpodnet_search_hint">×פש ×-gpodder.net</string> - <string name="gpodnetauth_login_title">××Ŗ×××Ø××Ŗ</string> - <string name="gpodnetauth_login_descr">××Ø×× ××× ×××Ŗ×××Ø××Ŗ ×-gpodder.net. ×Ø×ש××Ŗ, ×ק×× ××Ŗ פ×Ø×× ××× ××”× ×©××:</string> - <string name="gpodnetauth_login_butLabel">××Ŗ×××Ø××Ŗ</string> - <string name="gpodnetauth_login_register">×× ××× ×× ×¢×××× ×ש×××, ×Ŗ××× ×פ×Ŗ×× ××× ××Ø×: \nhttps://gpodder.net/register/</string> - <string name="username_label">×©× ×ש×Ŗ×ש:</string> - <string name="password_label">×”×”××:</string> + <string name="gpodnet_search_hint">××פ×ש ×Ö¾gpodder.net</string> + <string name="gpodnetauth_login_title">×× ××”×</string> + <string name="gpodnetauth_login_descr">××Ø×× ×××× ××Ŗ×××× ××× ××”× ×Ö¾gpodder.net. ×Ø×ש××Ŗ, ×¢××× ××ק××× ××Ŗ פ×Ø×× ××× ××”× ×©××:</string> + <string name="gpodnetauth_login_butLabel">×× ××”×</string> + <string name="gpodnetauth_login_register">×× ×¢×××× ××× ×× ×ש×××, × ××Ŗ× ××צ××Ø ××× ×××:ā\nhttps://gpodder.net/register/ā</string> + <string name="username_label">×©× ×ש×Ŗ×ש</string> + <string name="password_label">×”×”××</string> <string name="gpodnetauth_device_title">××××Ø×Ŗ ××ש××Ø</string> - <string name="gpodnetauth_device_descr">צ××Ø ××ש××Ø ××ש ×ש×××ש ×¢×××Ø ×ש××× gpodder.net ×× ××××Ø ××× ×§×××:</string> + <string name="gpodnetauth_device_descr">× ××Ŗ× ××צ××Ø ××Ŗ×§× ××ש ×ש×××ש ×¢× ××ש××× ×©×× ×Ö¾gpodder.net ×× ×××××Ø ×××Ŗ×§× ××ש:</string> <string name="gpodnetauth_device_deviceID">×××× ××ש××Ø:\u0020</string> <string name="gpodnetauth_device_caption">×××Ŗ×Ø×Ŗ</string> - <string name="gpodnetauth_device_butCreateNewDevice">צ××Ø ××ש××Ø ××ש</string> - <string name="gpodnetauth_device_chooseExistingDevice">×××Ø ××ש××Ø ×§×××:</string> - <string name="gpodnetauth_device_errorEmpty">×××× ×××ש××Ø ××× × ×××× ×××××Ŗ ×Ø×ק</string> - <string name="gpodnetauth_device_errorAlreadyUsed">×××× ×××ש××Ø ×ש×××ש</string> - <string name="gpodnetauth_device_butChoose">×××Ø</string> - <string name="gpodnetauth_finish_title">××Ŗ×××Ø××Ŗ ××צ×××Ŗ!</string> - <string name="gpodnetauth_finish_descr">××× ×××! ×ש××× gpodder.net ש×× ×ק×ש×Ø ××¢×Ŗ ×¢× ×××ש××Ø ×©××. ×× ×× ×-פ×× ××¢×Ŗ× ××”× ××Ø× ××××¤× ××××××× ××Øש×××Ŗ ×××ש××Ø ×©×× ×¢× ×ש××× gpodder.net ש××.</string> - <string name="gpodnetauth_finish_butsyncnow">××Ŗ×× ×”× ××Ø×× ××¢×Ŗ</string> - <string name="gpodnetauth_finish_butgomainscreen">×¢×××Ø ×××”× ××Ø×ש×</string> - <string name="gpodnetsync_auth_error_title">ש××××Ŗ ×××××Ŗ ×©× gpodder.net</string> + <string name="gpodnetauth_device_butCreateNewDevice">×צ××Ø×Ŗ ××ש××Ø ××ש</string> + <string name="gpodnetauth_device_chooseExistingDevice">××××Ø×Ŗ ××ש××Ø ×§×××:</string> + <string name="gpodnetauth_device_errorEmpty">×××× ×××ש××Ø ×× ×××× ×××ש××Ø ×Ø×ק</string> + <string name="gpodnetauth_device_errorAlreadyUsed">×××× ×××ש××Ø ×××Ø ×ש×××ש</string> + <string name="gpodnetauth_device_caption_errorEmpty">××××Ŗ×Ø×Ŗ ×× ××××× ×××ש××Ø ×Ø×ק×</string> + <string name="gpodnetauth_device_butChoose">××××Ø×</string> + <string name="gpodnetauth_finish_title">× ×× ×”×Ŗ ××צ×××!</string> + <string name="gpodnetauth_finish_descr">××× ×××! ×ש××× ×Ö¾gpodder.net ש×× ×ק×ש×Ø ××¢×Ŗ ×¢× ×××ש××Ø ×©××. ××¢×Ŗ× ×× ×××× ×××× ×©×× ××”×× ××Ø× × ××××××××Ŗ ×¢× ××× ×× ×× ×־פּ×Ö¹× ××××ש××Ø ×©×× ××ש××× ×Ö¾gpodder.net ש××.</string> + <string name="gpodnetauth_finish_butsyncnow">××Ŗ×××Ŗ ×”× ××Ø×× ××¢×Ŗ</string> + <string name="gpodnetauth_finish_butgomainscreen">××¢××Ø ×××”× ××Ø×ש×</string> + <string name="gpodnetsync_auth_error_title">ש××××Ŗ ×××××Ŗ ××× gpodder.net</string> <string name="gpodnetsync_auth_error_descr">×©× ×ש×Ŗ×ש ×× ×”×”×× ×©×××××</string> - <string name="gpodnetsync_error_title">ש××××Ŗ ×”× ××Ø×× ×©× gpodder.net</string> - <string name="gpodnetsync_error_descr">ש×××× ×××× ×”×× ××Ø××:\u0020</string> + <string name="gpodnetsync_error_title">ש××××Ŗ ×”× ××Ø×× ××× gpodder.net</string> + <string name="gpodnetsync_error_descr">ש×××× ××××× ×”×× ××Ø××:\u0020</string> + <string name="gpodnetsync_pref_report_successful">××צ××</string> + <string name="gpodnetsync_pref_report_failed">× ×ש×</string> <!--Directory chooser--> - <string name="selected_folder_label">×Ŗ×ק×× × ×××Ø×Ŗ:</string> - <string name="create_folder_label">צ××Ø ×Ŗ×ק××</string> + <string name="selected_folder_label">×Ŗ×ק××× × ×××Ø×Ŗ:</string> + <string name="create_folder_label">×צ××Ø×Ŗ ×Ŗ×ק×××</string> <string name="choose_data_directory">×××Ø ×Ŗ×ק×××Ŗ ××××¢</string> - <string name="create_folder_msg">צ××Ø ×Ŗ×ק×× ×××©× ××©× \"%1$s\"?</string> - <string name="create_folder_success">×Ŗ×ק×× ×××©× × ×צ×Ø×</string> - <string name="create_folder_error_no_write_access">×× × ××Ŗ× ×××Ŗ×× ××Ŗ××§× ××</string> - <string name="create_folder_error_already_exists">×Ŗ××§× ×××Ø ×§××××Ŗ</string> - <string name="create_folder_error">×× × ××Ŗ× ××צ××Ø ×Ŗ×ק××</string> - <string name="folder_not_empty_dialog_title">××Ŗ×ק×× ××× × ×Ø×ק×</string> - <string name="folder_not_empty_dialog_msg">××Ŗ×ק××× ×©×××Ø×Ŗ ××× × ×Ø×ק×. ×××Ø×××Ŗ ×××× ×ק×צ×× ×××Ø×× ×××× ×××ק×××Ŗ ×ש××Ø××Ŗ ××Ŗ×ק××× ××. ×××ש×× ××× ×××Ŗ?</string> - <string name="set_to_default_folder">×××Ø ×Ŗ×ק×××Ŗ ××Ø××Ø×Ŗ ××××</string> - <string name="pref_pausePlaybackForFocusLoss_sum">×ש×× × ×××× ××ק×× ×××ש×Ŗ ×¢×צ××Ŗ ש××¢ ×ש×פ××קצ×× ×××Ø×Ŗ ×× ×× ×Ŗ</string> - <string name="pref_pausePlaybackForFocusLoss_title">×ש×× ×××× ×פ×Ø×¢×</string> + <string name="choose_data_directory_message">× × ×××××Ø ××Ŗ ××”××” ×Ŗ×ק×××Ŗ ×× ×Ŗ×× ×× ×©××. ×Ŗ×ŖÖ¾××Ŗ×ק×××Ŗ ×Ŗ×××צ×Ø× × ×¢× ××× ×× ×× ×־פּ×Ö¹× ×××Ŗ××.</string> + <string name="choose_data_directory_permission_rationale">× ××Øש×Ŗ ×××©× ××××”×× ××צ×× × ××× ××©× ××Ŗ ××Ŗ ×Ŗ×ק×××Ŗ ×× ×Ŗ×× ××</string> + <string name="create_folder_msg">××צ××Ø ×Ŗ×ק××× ×××©× ××©× ā%1$sā?</string> + <string name="create_folder_success">× ×צ×Ø× ×Ŗ×ק××× ××ש×</string> + <string name="create_folder_error_no_write_access">×× × ××Ŗ× ×××Ŗ×× ××Ŗ×ק××× ××</string> + <string name="create_folder_error_already_exists">××Ŗ×ק××× ×××Ø ×§××××Ŗ</string> + <string name="create_folder_error">×× × ××Ŗ× ××צ××Ø ×Ŗ×ק×××</string> + <string name="folder_does_not_exist_error">ā%1$sā ×× ×§×××</string> + <string name="folder_not_readable_error">ā%1$sā ××× × ×§×Ø××</string> + <string name="folder_not_writable_error">ā%1$sā ××”×× ×××Ŗ×××</string> + <string name="folder_not_empty_dialog_title">××Ŗ×ק××× ××× × ×Ø×ק×</string> + <string name="folder_not_empty_dialog_msg">××Ŗ×ק××× ×©×××Ø×Ŗ ××× × ×Ø×ק×. ×××Ø×××Ŗ ×××× ×ק×צ×× ×××Ø×× ×××ק×× ×ש××Ø××Ŗ ××Ŗ×ק××× ××. ×××ש×× ××× ×××Ŗ?</string> + <string name="set_to_default_folder">× × ×××××Ø ×Ŗ×ק×××Ŗ ××Ø×Ø×Ŗ ××××</string> + <string name="pref_pausePlaybackForFocusLoss_sum">×ש××××Ŗ ×× ×××× ××ק×× ×× ×××Ŗ עצ××Ŗ ×ש××¢ ××ש×Ø ××ש×××× ×××Ø ××¢×× ××× ×× ×× ×¦×××××</string> + <string name="pref_pausePlaybackForFocusLoss_title">××ש×××Ŗ ××××× ×פ×Ø×¢××Ŗ</string> + <string name="pref_resumeAfterCall_sum">×××ש×× ×× ××× × ××××Ø ×ש×××Ŗ ש×××Ŗ ×××פ××</string> + <string name="pref_resumeAfterCall_title">×××ש×× ××××Ø ×©×××</string> + <string name="pref_restart_required">×ש ××פע×× ××Ŗ ×× ×× ×־פּ×Ö¹× ×××ש ××× ×©×ש×× ×××× ×××× ×”× ××Ŗ×קף.</string> <!--Online feed view--> - <string name="subscribe_label">××Øש×</string> - <string name="subscribed_label">× ×Øש×</string> + <string name="subscribe_label">××Øש××</string> + <string name="subscribed_label">× ×Øש××Ŗ</string> + <string name="downloading_label">××Ŗ×צע×Ŗ ×××Ø××ā¦</string> <!--Content descriptions for image buttons--> - <string name="rewind_label">××× ×××××Ø</string> - <string name="fast_forward_label">××Øׄ ק××××</string> + <string name="rewind_label">×××Ø× ×××××Ø</string> + <string name="fast_forward_label">××Ø×¦× ×§××××</string> <string name="media_type_audio_label">ש××¢</string> <string name="media_type_video_label">×××××</string> - <string name="navigate_upwards_label">× ××× ×××¢××</string> + <string name="navigate_upwards_label">× ×××× ×××¤× ××¢××</string> <string name="status_downloading_label">×פ×Øק ×××Ø×</string> <string name="in_queue_label">×פ×Øק ××Ŗ××Ø</string> <string name="drag_handle_content_description">××Ø××Ø ×ש×× ×× ××ק×× ×¤×Ø×× ××</string> - <string name="load_next_page_label">××¢× ××Ŗ ×××£ ×××</string> + <string name="load_next_page_label">××¢×× ×Ŗ ×××£ ×××</string> <!--Feed information screen--> <string name="authentication_label">×××××Ŗ</string> - <string name="authentication_descr">×©× × ××Ŗ ×©× ××ש×Ŗ×ש ×××”××”×× ×©×× ×פ××ק××”× ×פ×Øק×× ×©××.</string> + <string name="authentication_descr">ש×× ×× ×©× ××ש×Ŗ×ש ×××”×”×× ×©×× ×פ××ק××”× ××× ××פ×Øק×× ×©××.</string> + <string name="auto_download_settings_label">××××Ø××Ŗ ×××Ø×× ××××××××Ŗ</string> + <string name="episode_filters_label">××”× × ×¤×Øק××</string> + <string name="episode_filters_description">×Øש×××Ŗ ×××× ××× ××× ××¢×©× ×©×××ש ××× ×××××× ×× ×××××× ×× ××××Ø×× ×¤×Øק ××ש×× ××××× ×××Ø×× ××××××××Ŗ</string> + <string name="episode_filters_include">××××××</string> + <string name="episode_filters_exclude">××××Ø××</string> + <string name="episode_filters_hint">××××× ××××××Ŗ \n\"×××”×£ ×××××\"</string> + <string name="keep_updated">×ש×××Ø ×¢× ×¢××× ×××Ŗ</string> <!--Progress information--> + <string name="progress_upgrading_database">××”× ×× ×Ŗ×× ×× ×ש×Ŗ××Ø×</string> <!--AntennaPodSP--> - <string name="sp_apps_importing_feeds_msg">××××× ×Ø×ש×× ××פ××קצ×××Ŗ ××¢×××××Ŗ...</string> - <string name="search_itunes_label">×פש ×iTunes</string> + <string name="sp_apps_importing_feeds_msg">××Ŗ×צע ××××× ××× ×××× ×××ש×××× ×× ×××ק×× ×××Ø×ā¦</string> + <string name="search_itunes_label">××פ×ש ×Ö¾iTunes</string> + <string name="filter">××”× ×</string> + <string name="search_fyyd_label">×××פ×ש ×Ö¾fyyd</string> <!--Episodes apply actions--> + <string name="all_label">××××</string> + <string name="selected_all_label">××××Ø×Ŗ ×× ×פ×Øק××</string> + <string name="none_label">×××</string> + <string name="deselected_all_label">××£ פ×Øק ×× × ×××Ø</string> + <string name="played_label">× ××× ×</string> + <string name="selected_played_label">××××Ø×Ŗ פ×Øק×× ×©× ××× ×</string> + <string name="unplayed_label">×× × ××× ×</string> + <string name="selected_unplayed_label">××××Ø×Ŗ פ×Øק×× ×©×× × ××× ×</string> + <string name="downloaded_label">×××Ø××</string> + <string name="selected_downloaded_label">××××Ø×Ŗ פ×Øק×× ×©×××Ø××</string> + <string name="not_downloaded_label">×× ×××Ø××</string> + <string name="selected_not_downloaded_label">××××Ø×Ŗ פ×Øק×× ×©×× ×××Ø××</string> + <string name="queued_label">××Ŗ××Ø</string> + <string name="selected_queued_label">××××Ø×Ŗ פ×Øק×× ××Ŗ××Ø</string> + <string name="not_queued_label">×× ××Ŗ××Ø</string> + <string name="selected_not_queued_label">××××Ø×Ŗ פ×Ø××× ×©××× × ××Ŗ××Ø</string> + <string name="has_media">×ש ××××</string> + <string name="selected_has_media_label">××××Ø×Ŗ פ×Øק×× ×¢× ××××</string> <!--Sort--> + <string name="sort_title_a_z">×××Ŗ×Ø×Ŗ (× \u2192 ×Ŗ)</string> + <string name="sort_title_z_a">×××Ŗ×Ø×Ŗ (×Ŗ \u2192 ×)</string> + <string name="sort_date_new_old">×Ŗ××Ø×× (××ש \u2192 ×ש×)</string> + <string name="sort_date_old_new">×Ŗ××Ø×× (××©× \u2192 ××ש)</string> + <string name="sort_duration_short_long">××©× (קצ×Ø \u2192 ××Ø××)</string> + <string name="sort_duration_long_short">××©× (קצ×Ø \u2192 ××Ø××)</string> <!--Rating dialog--> - <string name="rating_title">×××××× ××Ŗ ××פ××קצ××?</string> + <string name="rating_title">×××ש×××× ×× ×× ×־פּ×Ö¹× × ××©× ×× ××¢×× ××?</string> + <string name="rating_message">×××× × ×©×× ×ק×× ×××Ø×× ×¢× ×× ×× ×־פּ×Ö¹× ×× ×ש ×× ××× ×××.</string> <string name="rating_never_label">×× ×Ŗ×××</string> <string name="rating_later_label">×¤×¢× ×××Ø×Ŗ</string> - <string name="rating_now_label">×××!</string> + <string name="rating_now_label">×××, × ×× ×¢× ××!</string> <!--Audio controls--> + <string name="audio_controls">פק×× ×©××¢</string> + <string name="playback_speed">××××Ø××Ŗ × ××× ×</string> + <string name="volume">עצ××Ŗ ש××¢</string> + <string name="left_short">L</string> + <string name="right_short">R</string> + <string name="audio_effects">×פק××× ×©× ×©××¢</string> + <string name="stereo_to_mono">×××××: ×”××Ø××× ×××× ×</string> + <string name="sonic_only">Sonic ××××</string> <!--proxy settings--> + <string name="proxy_type_label">×”××</string> + <string name="host_label">×××Ø×</string> + <string name="port_label">פ×Ŗ××</string> + <string name="optional_hint">(×Øש××Ŗ)</string> + <string name="proxy_test_label">×××ק×</string> + <string name="proxy_checking">××Ŗ×צע×Ŗ ×××ק×ā¦</string> + <string name="proxy_test_successful">×××××§× ×× ×צ××××</string> + <string name="proxy_test_failed">×××××§× × ×ש××</string> + <string name="proxy_host_empty_error">××××Ø× ×× ×××× ×××ש××Ø ×Ø×ק</string> + <string name="proxy_host_invalid_error">××Ŗ×××Ŗ ××××Ø× ××× × ××Ŗ×××Ŗ IP ×× ×©× ××Ŗ×× ×Ŗ×§× ×××</string> + <string name="proxy_port_invalid_error">×פ×Ŗ×× ××× × ×Ŗ×§× ××Ŗ</string> <!--Database import/export--> + <string name="import_export">×××××/××צ×× ××”× × ×Ŗ×× ××</string> + <string name="import_export_warning">×Ŗ××× × × ××”××× ××Ŗ ×× ××××× ×ש×ש ×××××Ŗ ××¢××Ø×Ŗ ×××× ×××× ××פ×Øק×× ×©× ××× ×Ŗ ×××Ŗ×§× ×××Ø.\n\n× ××Ŗ× ××××× ××”×× × ×Ŗ×× ×× ×©××צ×× ×Øק ××××Ŗ× ×××Ø×”× ×©× ×× ×× ×־פּ×Ö¹×. ×××Ø×Ŗ, ×Ŗ××× × ×× ×¢×©××× ×××Ø××Ø ××Ŗ× ××××Ŗ ×××Ŗ× ×¦×¤×××.\n\n××××Ø ××××××, ××Ŗ×× ×©××ק ××פ×Øק×× ××פ××¢× ××××× ×××Ø ×××Ø××Ŗ ×××Ŗ× ×××Ø××Ŗ ש×פ××¢× ×× ×¢×©××Ŗ ×××Ŗ. ×¢××× ×¤×©×× ××××ׄ ×¢× ×פ×Ŗ××Ø ×× ××× × ×©× ×פ×Øק×× ××× ×©×× ×× ×־פּ×Ö¹× ×××× ×××××Ŗ ×××Ŗ.</string> + <string name="label_import">×××××</string> + <string name="label_export">××צ××</string> + <string name="import_select_file">××××Ø×Ŗ ק××ׄ ××××××</string> + <string name="export_ok">×××צ×× ×צ×××.</string> + <string name="import_ok">×××××× ×צ×××.\n\n× × ××××ׄ ×¢× ××ש××Ø ××× ××פע×× ××Ŗ ×× ×× ×־פּ×Ö¹× ×××ש</string> <!--Casting--> + <string name="cast_media_route_menu_title">× ×××× ××Ø×ā¦</string> + <string name="cast_disconnect_label">× ××Ŗ×ק ×ש××××Ø</string> + <string name="cast_not_castable">××××× ×× ×××Ø×Ŗ ××× × ×Ŗ××××Ŗ ×××Ŗ×§× ×©××××Ø</string> + <string name="cast_failed_to_play">××Ŗ×××Ŗ × ××× ×Ŗ ××××× × ×ש××</string> + <string name="cast_failed_to_stop">עצ××Ø×Ŗ × ××× ×Ŗ ××××× × ×ש××</string> + <string name="cast_failed_to_pause">×ש××××Ŗ × ××× ×Ŗ ××××× × ×ש××</string> <!--<string name="cast_failed_to_connect">Could not connect to the device</string>--> + <string name="cast_failed_setting_volume">××××Ø×Ŗ עצ××Ŗ ×ש××¢ × ×ש××</string> + <string name="cast_failed_no_connection">××× ×××××Ø ×××Ŗ×§× ×©××××Ø</string> + <string name="cast_failed_no_connection_trans">××××××Ø ×××Ŗ×§× ×©××××Ø ×××. ×××ש×××× ×× ×”× ×××Ŗ×××Ø ×©××, ×× × ××Ŗ×. × × ××××Ŗ×× ×הפ×Ø ×©× ×××Ŗ ××× ×× ×”××Ŗ ש××.</string> + <string name="cast_failed_perform_action">××צ××¢ ×פע××× × ×ש×</string> + <string name="cast_failed_status_request">××”× ××Ø×× ×¢× ××Ŗ×§× ×ש××××Ø × ×ש×</string> + <string name="cast_failed_seek">×××§×¤×¦× ×××ק×× × ××× × ×××Ø ×××Ŗ×§× ×ש××××Ø × ×ש××</string> + <string name="cast_failed_receiver_player_error">×× ×× ××ק×× × ×Ŗ×§× ×ש×××× ××××Ø×</string> + <string name="cast_failed_media_error_skipping">ש×××× ×× ××× ×Ŗ ×××××. ××Ŗ×צע ×××××ā¦</string> + <!--Notification channels--> </resources> diff --git a/core/src/main/res/values-ja/strings.xml b/core/src/main/res/values-ja/strings.xml index c5ea6357f..566817243 100644 --- a/core/src/main/res/values-ja/strings.xml +++ b/core/src/main/res/values-ja/strings.xml @@ -1,11 +1,13 @@ <?xml version='1.0' encoding='UTF-8'?> <resources xmlns:tools="http://schemas.android.com/tools"> <!--Activitiy and fragment titles--> + <string name="feed_update_receiver_name">č³¼čŖćę“ę°</string> <string name="feeds_label">ćć£ć¼ć</string> <string name="statistics_label">ēµ±čØę
å ±</string> <string name="add_feed_label">ćć£ć¼ććčæ½å </string> <string name="episodes_label">ćØćć½ć¼ć</string> <string name="all_episodes_short_label">ćć¹ć¦</string> + <string name="new_episodes_label">ę°č¦</string> <string name="favorite_episodes_label">ćę°ć«å
„ć</string> <string name="new_label">ę°</string> <string name="settings_label">čØå®</string> @@ -18,10 +20,12 @@ <string name="cancel_download_label">ćć¦ć³ćć¼ćććć£ć³ć»ć«</string> <string name="playback_history_label">åē屄ę“</string> <string name="gpodnet_main_label">gpodder.net</string> + <string name="gpodnet_summary">ä»ć®ććć¤ć¹ćØåę</string> <string name="gpodnet_auth_label">gpodder.net ćć°ć¤ć³</string> <string name="free_space_label">%1$s ē©ŗć</string> <string name="episode_cache_full_title">ćØćć½ć¼ććć£ćć·ć„ćäøęÆć§ć</string> <string name="episode_cache_full_message">ćØćć½ć¼ććć£ćć·ć„ćå¶éć«éćć¾ćććčØå®ć§ćć£ćć·ć„ćµć¤ćŗćå¢ććććØćć§ćć¾ćć</string> + <string name="synchronizing">åęćć¦ćć¾ćā¦</string> <!--Statistics fragment--> <string name="total_time_listened_to_podcasts">ććććć£ć¹ććåēććåčØęé:</string> <string name="statistics_details_dialog">%2$d ćć %1$d ć®ćØćć½ć¼ććéå§ćć¾ććć\n\n%4$s ćć%3$s ćåēćć¾ććć</string> @@ -63,6 +67,7 @@ <string name="cover_label">ę å</string> <string name="error_label">ćØć©ć¼</string> <string name="error_msg_prefix">ćØć©ć¼ćēŗēćć¾ććć</string> + <string name="needs_storage_permission">ćć®ęä½ć«ćÆć¹ćć¬ć¼ćøć®ć¢ćÆć»ć¹čرåÆćåæ
č¦ć§ć</string> <string name="refresh_label">ę“ę°</string> <string name="external_storage_error_msg">å¤éØć¹ćć¬ć¼ćøćå©ēØć§ćć¾ćććć¢ććŖćę£åøøć«åä½ć§ććććć«ćå¤éØć¹ćć¬ć¼ćøććć¦ć³ćććć¦ććććØćē¢ŗčŖćć¦ćć ććć</string> <string name="chapters_label">ćć£ććæć¼</string> @@ -104,25 +109,28 @@ <string name="mark_all_read_label">ćć¹ć¦åēęøćØćć¦ćć¼ćÆ</string> <string name="mark_all_read_msg">ćć¹ć¦ć®ćØćć½ć¼ććåēęøć«ćć¾ćć</string> <string name="mark_all_read_confirmation_msg">åēęøćØćć¦ćć¼ćÆćććć¹ć¦ć®ćØćć½ć¼ććē¢ŗčŖćć¦ćć ććć</string> - <string name="mark_all_read_feed_confirmation_msg">åēęøćØćć¦ćć¼ćÆćććć®ćć£ć¼ćć®ćć¹ć¦ć®ćØćć½ć¼ććē¢ŗčŖćć¦ćć ććć</string> + <string name="mark_all_read_feed_confirmation_msg">åēęøćØćć¦ćć¼ćÆćććć®ććććć£ć¹ćć®ćć¹ć¦ć®ćØćć½ć¼ććē¢ŗčŖćć¦ćć ććć</string> <string name="mark_all_seen_label">ćć¹ć¦åē
§ęøćØćć¦ćć¼ćÆ</string> <string name="mark_all_seen_msg">ćć¹ć¦ć®ćØćć½ć¼ććåē
§ęøć«ćć¾ćć</string> <string name="mark_all_seen_confirmation_msg">åē
§ęøćØćć¦ćć¼ćÆćććć¹ć¦ć®ćØćć½ć¼ććē¢ŗčŖćć¦ćć ććć</string> <string name="show_info_label">ę
å ±ćč”Øē¤ŗ</string> + <string name="show_feed_settings_label">ććććć£ć¹ćčØå®ćč”Øē¤ŗ</string> + <string name="feed_info_label">ććććć£ć¹ćę
å ±</string> + <string name="feed_settings_label">ććććć£ć¹ćčØå®</string> <string name="rename_feed_label">ććććć£ć¹ćć®ååćå¤ę“</string> <string name="remove_feed_label">ććććć£ć¹ććåé¤</string> <string name="share_label">å
±ęā¦</string> - <string name="share_link_label">Webćµć¤ćć®ćŖć³ćÆćå
±ę</string> + <string name="share_link_label">ćØćć½ć¼ć URLćå
±ę</string> + <string name="share_link_with_position_label">ćØćć½ć¼ć URL ćä½ē½®ćØå
±ć«å
±ę</string> <string name="share_file_label">ćć”ć¤ć«ćå
±ę</string> - <string name="share_link_with_position_label">å “ęćØćŖć³ćÆćå
±ę</string> <string name="share_feed_url_label">ćć£ć¼ć URLćå
±ę</string> - <string name="share_item_url_label">ćØćć½ć¼ććć”ć¤ć« URLćå
±ę</string> - <string name="share_item_url_with_position_label">ćØćć½ć¼ććć”ć¤ć« URL ćä½ē½®ćØå
±ć«å
±ę</string> - <string name="feed_delete_confirmation_msg">ćć£ć¼ć \"%1$s\" ćØććć®ćć£ć¼ćć®ćć¹ć¦ć®ćć¦ć³ćć¼ććććØćć½ć¼ććåé¤ććććØćē¢ŗčŖćć¦ćć ććć</string> - <string name="feed_remover_msg">ćć£ć¼ćć®åé¤äø</string> - <string name="load_complete_feed">ćć£ć¼ćććć¹ć¦ę“ę°</string> + <string name="share_item_url_label">ć”ćć£ć¢ćć”ć¤ć« URLćå
±ę</string> + <string name="share_item_url_with_position_label">ć”ćć£ć¢ćć”ć¤ć« URL ćä½ē½®ćØå
±ć«å
±ę</string> + <string name="feed_delete_confirmation_msg">ććććć£ć¹ć \"%1$s\" ćØćć¹ć¦ć®ļ¼ćć¦ć³ćć¼ćęøćå«ćļ¼ćØćć½ć¼ććåé¤ććććØćē¢ŗčŖćć¦ćć ććć</string> + <string name="feed_remover_msg">ććććć£ć¹ććåé¤ćć¦ćć¾ć</string> + <string name="load_complete_feed">ććććć£ć¹ćććć¹ć¦ę“ę°</string> <string name="hide_episodes_title">ćØćć½ć¼ććéč”Øē¤ŗć«ćć</string> - <string name="episode_actions">ęä½ćé©ēØ</string> + <string name="batch_edit">äøę¬ē·Øé</string> <string name="hide_unplayed_episodes_label">ęŖåē</string> <string name="hide_paused_episodes_label">äøęåę¢ćć¾ćć</string> <string name="hide_played_episodes_label">åēćć¾ćć</string> @@ -131,6 +139,7 @@ <string name="hide_downloaded_episodes_label">ćć¦ć³ćć¼ććć¾ćć</string> <string name="hide_not_downloaded_episodes_label">ćć¦ć³ćć¼ććć¦ćć¾ćć</string> <string name="hide_has_media_label">ć”ćć£ć¢ćć</string> + <string name="hide_is_favorite_label">ćę°ć«å
„ć</string> <string name="filtered_label">ćć£ć«ćæć¼ćć¾ćć</string> <string name="refresh_failed_msg">{fa-exclamation-circle} ååę“ę°ć«å¤±ęćć¾ćć</string> <string name="open_podcast">ććććć£ć¹ććéć</string> @@ -144,6 +153,7 @@ <string name="delete_label">åé¤</string> <string name="delete_failed">ćć”ć¤ć«ćåé¤ć§ćć¾ćććććć¤ć¹ćåčµ·åćć¦ćæć¦ćć ććć</string> <string name="remove_episode_lable">ćØćć½ć¼ććåé¤</string> + <string name="mark_as_seen_label">åē
§ęø</string> <string name="marked_as_seen_label">åē
§ęøćØćć¦ćć¼ćÆ</string> <string name="mark_read_label">åēęøćØćć¦ćć¼ćÆ</string> <string name="marked_as_read_label">åēęøćØćć¦ćć¼ćÆćć¾ćć</string> @@ -167,6 +177,8 @@ <string name="download_failed">失ę</string> <string name="download_pending">ćć¦ć³ćć¼ććÆäæēäø</string> <string name="download_running">ćć¦ć³ćć¼ćå®č”äø</string> + <string name="download_error_details">č©³ē“°</string> + <string name="download_error_details_message">%1$s \n\nćć”ć¤ć« URL:\n%2$s</string> <string name="download_error_device_not_found">ć¹ćć¬ć¼ćø ććć¤ć¹ćč¦ć¤ććć¾ćć</string> <string name="download_error_insufficient_space">ć¹ćć¼ć¹ćäøč¶³ćć¦ćć¾ć</string> <string name="download_error_file_error">ćć”ć¤ć«ćØć©ć¼</string> @@ -216,6 +228,7 @@ <string name="playback_error_unknown">äøęćŖćØć©ć¼</string> <string name="no_media_playing_label">åēććć”ćć£ć¢ćććć¾ćć</string> <string name="player_buffering_msg">ćććć”ć¼äø</string> + <string name="player_go_to_picture_in_picture">ććÆćć£-ć¤ć³-ććÆćć£ ć¢ć¼ć</string> <string name="playbackservice_notification_title">ććććć£ć¹ććåēäø</string> <string name="unknown_media_key">AntennaPod - äøęćŖć”ćć£ć¢ćć¼: %1$d</string> <!--Queue operations--> @@ -232,7 +245,9 @@ <string name="date">ę„ä»</string> <string name="duration">ē¶ē¶ęé</string> <string name="episode_title">ćØćć½ć¼ć ćæć¤ćć«</string> - <string name="feed_title">ćć£ć¼ć ćæć¤ćć«</string> + <string name="feed_title">ććććć£ć¹ćć®ćæć¤ćć«</string> + <string name="random">ć©ć³ćć </string> + <string name="smart_shuffle">ć¹ćć¼ćć·ć£ććć«</string> <string name="ascending">ęé </string> <string name="descending">éé </string> <string name="clear_queue_confirmation_msg">ćÆćŖć¢ććććć„ć¼ć«å«ć¾ćććć¹ć¦ć®ćØćć½ć¼ććē¢ŗčŖćć¦ćć ććć</string> @@ -270,7 +285,7 @@ <string name="enable_sonic">Sonic ćęå¹ć«ćć</string> <!--Empty list labels--> <string name="no_items_label">ćć®ćŖć¹ćć«ćÆć¢ć¤ćć ćććć¾ććć</string> - <string name="no_feeds_label">ć¾ć ćć£ć¼ććä½ćč³¼čŖćć¦ćć¾ććć</string> + <string name="no_feeds_label">ć¾ć ććććć£ć¹ććä½ćč³¼čŖćć¦ćć¾ććć</string> <string name="no_chapters_label">ćć®ćØćć½ć¼ćć«ćć£ććæć¼ćÆććć¾ććć</string> <string name="no_shownotes_label">ćć®ćØćć½ć¼ćć«ć·ć§ć¼ćć¼ććÆććć¾ććć</string> <!--Preferences--> @@ -279,15 +294,23 @@ <string name="other_pref">ćć®ä»</string> <string name="about_pref">ć«ć¤ćć¦</string> <string name="queue_label">ćć„ć¼</string> - <string name="services_label">ćµć¼ćć¹</string> + <string name="integrations_label">ēµ±å</string> <string name="flattr_label">Flattr</string> + <string name="flattr_summary">ćć¤ćÆććć¤ć”ć³ć ćµć¼ćć¹</string> + <string name="automation">čŖå</string> + <string name="download_pref_details">č©³ē“°</string> + <string name="import_export_pref">ć¤ć³ćć¼ć/ćØćÆć¹ćć¼ć</string> + <string name="appearance">å¤č¦³</string> + <string name="external_elements">å¤éØč¦ē“ </string> + <string name="interruptions">å²ćč¾¼ćæ</string> + <string name="buttons">åēć³ć³ććć¼ć«ććæć³</string> + <string name="media_player">ć”ćć£ć¢ćć¬ć¼ć¤ć¼</string> <string name="pref_episode_cleanup_title">ćØćć½ć¼ć ćÆćŖć¼ć³ć¢ćć</string> <string name="pref_episode_cleanup_summary">ćć„ć¼ć«å«ć¾ćć¦ćććććę°ć«å
„ćć§ćÆćŖććØćć½ć¼ććÆćčŖåćć¦ć³ćć¼ćć§ę°ćććØćć½ć¼ćć®ććć«ć¹ćć¼ć¹ćåæ
č¦ćŖå “åćé¤å»ć®åÆ¾č±”ć«ćŖćć¾ć</string> <string name="pref_pauseOnDisconnect_sum">ććććć©ć³ć¾ććÆBluetoothć®ę„ē¶ćåęćććęćåēćäøęåę¢ćć¾ć</string> <string name="pref_unpauseOnHeadsetReconnect_sum">ććććć©ć³ćåę„ē¶ćććęć«åēćåéćć¾ć</string> <string name="pref_unpauseOnBluetoothReconnect_sum">Bluetoothćåę„ē¶ćććęć«åēćåéćć¾ć</string> <string name="pref_hardwareForwardButtonSkips_title">ę©éćććæć³ć§ć¹ććć</string> - <string name="pref_hardwareForwardButtonSkips_sum">ćć¼ćć¦ć§ć¢ć®ę©éćććæć³ćę¼ćććØćć«ćę©éćć®ä»£ććć«ę¬”ć®ćØćć½ć¼ćć«ć¹ććććć¾ć</string> <string name="pref_hardwarePreviousButtonRestarts_title">ę»ćććæć³ć§åé</string> <string name="pref_hardwarePreviousButtonRestarts_sum">ćć¼ćć¦ć§ć¢ć®ę»ćććæć³ćę¼ćććØćć«ćå·»ćę»ćć®ä»£ććć«ē¾åØć®ćØćć½ć¼ćć®åēćåéćć¾ć</string> <string name="pref_followQueue_sum">åēćå®äŗććęć«ę¬”ć®ćć„ć¼ć®ć¢ć¤ćć ć«ē§»åćć¾ć</string> @@ -336,7 +359,7 @@ <string name="pref_nav_drawer_feed_order_title">č³¼čŖę³Øęćć»ćć</string> <string name="pref_nav_drawer_feed_order_sum">č³¼čŖć®ę³Øęćå¤ę“ćć¾ć</string> <string name="pref_nav_drawer_feed_counter_title">č³¼čŖć«ć¦ć³ćæć¼ćć»ćć</string> - <string name="pref_nav_drawer_feed_counter_sum">č³¼čŖć«ć¦ć³ćæć¼ć§č”Øē¤ŗćććę
å ±ćå¤ę“ćć¾ć</string> + <string name="pref_nav_drawer_feed_counter_sum">č³¼čŖć«ć¦ć³ćæć¼ć«č”Øē¤ŗćććę
å ±ćå¤ę“ćć¾ćć \'č³¼čŖé \' ć \'ć«ć¦ć³ćæć¼\' ć«čØå®ććć¦ććå “åćÆćč³¼čŖć®äø¦ć³ęæćć«ćå½±éæćć¾ćć</string> <string name="pref_set_theme_sum">AntennaPodć®å¤č¦³ćå¤ę“ćć¾ćć</string> <string name="pref_automatic_download_title">čŖåćć¦ć³ćć¼ć</string> <string name="pref_automatic_download_sum">ćØćć½ć¼ćć®čŖåćć¦ć³ćć¼ććę§ęćć¾ćć</string> @@ -350,6 +373,7 @@ <string name="pref_episode_cache_title">ćØćć½ć¼ććć£ćć·ć„</string> <string name="pref_theme_title_light">ć©ć¤ć</string> <string name="pref_theme_title_dark">ćć¼ćÆ</string> + <string name="pref_theme_title_trueblack">é» (AMOLED åƾåæ)</string> <string name="pref_episode_cache_unlimited">ē”å¶é</string> <string name="pref_update_interval_hours_plural">ęé</string> <string name="pref_update_interval_hours_singular">ęé</string> @@ -378,8 +402,6 @@ <string name="pref_rewind_sum">å·»ćę»ćććæć³ććÆćŖććÆććććØćć«å¾ę¹ć«ćøć£ć³ćććē§ę°ćć«ć¹ćæćć¤ćŗćć¾ć</string> <string name="pref_gpodnet_sethostname_title">ćć¹ćåćć»ćć</string> <string name="pref_gpodnet_sethostname_use_default_host">ććć©ć«ććć¹ććä½æēØ</string> - <string name="pref_expandNotify_title">ę”å¼µéē„</string> - <string name="pref_expandNotify_sum">åøøć«åēććæć³ćč”Øē¤ŗććććć«éē„ćå±éćć¾ćć</string> <string name="pref_persistNotify_title">ę°øē¶åēć³ć³ććć¼ć«</string> <string name="pref_persistNotify_sum">åēćäøęåę¢ćććęć«ćéē„ććć³ćććÆē»é¢ć®ć³ć³ććć¼ć«ćäæęćć¾ćć</string> <string name="pref_compact_notification_buttons_title">ćććÆē»é¢ććæć³ćčØå®</string> @@ -400,8 +422,7 @@ <string name="crash_report_sum">ć”ć¼ć«ć§ęę°ć®ćÆć©ćć·ć„ć¬ćć¼ććéäæ”ćć¾ć</string> <string name="send_email">ć”ć¼ć«ćéäæ”</string> <string name="experimental_pref">å®éØē</string> - <string name="pref_sonic_title">Sonic ć”ćć£ć¢ćć¬ć¼ć¤ć¼</string> - <string name="pref_sonic_message">Android ęØęŗć®ć”ćć£ć¢ćć¬ć¼ć¤ć¼ćØ Prestissimo ć®ä»£ććć«ćå
čµć®ć½ćććÆć”ćć£ć¢ćć¬ć¼ć¤ć¼ćä½æēØćć¾ć</string> + <string name="pref_media_player_message">ćć”ć¤ć«ćåēććć”ćć£ć¢ćć¬ć¼ć¤ć¼ćéøę</string> <string name="pref_current_value">ē¾åØć®å¤: %1$s</string> <string name="pref_proxy_title">ćććć·</string> <string name="pref_proxy_sum">ććććÆć¼ćÆ ćććć·ć®čØå®</string> @@ -413,6 +434,11 @@ <string name="pref_cast_message_free_flavor">Chromecast ćÆ AntennaPod ć®ćć®ćć¼ćøć§ć³ć§ē”å¹ć«ćŖć£ć¦ćććµć¼ććć¼ćć£ē¬čŖć®ć©ć¤ćć©ćŖć¼ćåæ
č¦ć§ć</string> <string name="pref_enqueue_downloaded_title">ćć¦ć³ćć¼ćć®ćć„ć¼ć«å
„ćć</string> <string name="pref_enqueue_downloaded_summary">ćć¦ć³ćć¼ććććØćć½ć¼ćććć„ć¼ć«čæ½å ćć¾ć</string> + <string name="media_player_builtin">ćć«ćć¤ć³ Android ćć¬ć¼ć¤ć¼</string> + <string name="pref_videoBehavior_title">ćććŖēµäŗę</string> + <string name="pref_videoBehavior_sum">ćććŖåēććé·ē§»ęć®åä½</string> + <string name="stop_playback">åēåę¢</string> + <string name="continue_playback">é³å£°ć®åēćē¶ćć</string> <!--Auto-Flattr dialog--> <string name="auto_flattr_enable">čŖåFlattrćęå¹ć«ćć</string> <string name="auto_flattr_after_percent">%d ļ¼
åēććććØćć½ć¼ććFlattr </string> @@ -423,7 +449,7 @@ <string name="found_in_shownotes_label">ć·ć§ć¼ćć¼ćć§č¦ć¤ććć¾ćć</string> <string name="found_in_chapters_label">ćć£ććæć¼ć§č¦ć¤ććć¾ćć</string> <string name="found_in_authors_label">ä½č
ć§č¦ć¤ććć¾ćć</string> - <string name="found_in_feeds_label">ćć£ć¼ćć§č¦ć¤ććć¾ćć</string> + <string name="found_in_feeds_label">ććććć£ć¹ćć§č¦ć¤ććć¾ćć</string> <string name="search_status_no_results">č¦ć¤ććć¾ććć§ćć</string> <string name="search_label">ę¤ē“¢</string> <string name="found_in_title_label">ćæć¤ćć«ć§č¦ć¤ććć¾ćć</string> @@ -449,8 +475,8 @@ <string name="html_export_label">HTML ćØćÆć¹ćć¼ć</string> <string name="exporting_label">ćØćÆć¹ćć¼ćäøā¦</string> <string name="export_error_label">ćØćÆć¹ćć¼ććØć©ć¼</string> - <string name="opml_export_success_title">OPMLććØćÆć¹ćć¼ććć¾ććć</string> - <string name="opml_export_success_sum">.opml ćć”ć¤ć«ćęøćč¾¼ćæć¾ćć:\u0020</string> + <string name="export_success_title">ćØćÆć¹ćć¼ććć¾ćć</string> + <string name="export_success_sum">ćØćÆć¹ćć¼ććććć”ć¤ć«ćęøćč¾¼ćæć¾ćć:\n\n%1$s</string> <string name="opml_import_ask_read_permission">OPML ćć”ć¤ć«ćčŖćæč¾¼ćććć«ćå¤éØć¹ćć¬ć¼ćøćøć®ć¢ćÆć»ć¹ćåæ
č¦ć§ć</string> <!--Sleep timer--> <string name="set_sleeptimer_label">ć¹ćŖć¼ććæć¤ćć¼ćć»ćć</string> @@ -620,7 +646,7 @@ <string name="label_import">ć¤ć³ćć¼ć</string> <string name="label_export">ćØćÆć¹ćć¼ć</string> <string name="import_select_file">ć¤ć³ćć¼ććććć”ć¤ć«ćéøęćć¦ćć ćć</string> - <string name="export_ok">ćØćÆć¹ćć¼ććęåćć¾ććććć¼ćæćć¼ć¹ćÆSDć«ć¼ćć«ęøćč¾¼ć¾ćć¾ććć</string> + <string name="export_ok">ćØćÆć¹ćć¼ććć¾ććć</string> <string name="import_ok">ć¤ć³ćć¼ććęåćć¾ććć\n\nOKćę¼ćć¦AntennaPodćåčµ·åćć¦ćć ććć</string> <!--Casting--> <string name="cast_media_route_menu_title">ā¦ć§åē</string> @@ -638,4 +664,13 @@ <string name="cast_failed_seek">ćć£ć¹ćććć¤ć¹ć®ę°ććä½ē½®ćøć®ē§»åć«å¤±ęćć¾ćć</string> <string name="cast_failed_receiver_player_error">ć¬ć·ć¼ćć¼ćć¬ć¼ć¤ć¼ć§ę·±å»ćŖćØć©ć¼ćēŗēćć¾ćć</string> <string name="cast_failed_media_error_skipping">ć”ćć£ć¢ć®åēęć«ćØć©ć¼ćēŗēćć¾ćććć¹ććććć¦ćć¾ćā¦</string> + <!--Notification channels--> + <string name="notification_channel_user_action">ęä½ćåæ
č¦</string> + <string name="notification_channel_user_action_description">ććØćć°ćć¹ćÆć¼ććå
„åććåæ
č¦ćććå “åćŖć©ćęä½ćåæ
č¦ćŖå “åć«č”Øē¤ŗććć¾ćć</string> + <string name="notification_channel_downloading">ćć¦ć³ćć¼ćäø</string> + <string name="notification_channel_downloading_description">ē¾åØć®ćć¦ć³ćć¼ććč”Øē¤ŗććć¾ćć</string> + <string name="notification_channel_playing">ē¾åØåēäø</string> + <string name="notification_channel_playing_description">åēćć³ć³ććć¼ć«ć§ćć¾ćććććÆććććć£ć¹ćåēäøć®ć”ć¤ć³éē„ć§ćć</string> + <string name="notification_channel_error">ćØć©ć¼</string> + <string name="notification_channel_error_description">ćć¦ć³ćć¼ćć gpodder ć®åęć«å¤±ęććå “åćŖć©ćä½ćåé”ćēŗēććå “åć«č”Øē¤ŗććć¾ćć</string> </resources> diff --git a/core/src/main/res/values-kn-rIN/strings.xml b/core/src/main/res/values-kn-rIN/strings.xml index f62c6b2de..14ccf4e42 100644 --- a/core/src/main/res/values-kn-rIN/strings.xml +++ b/core/src/main/res/values-kn-rIN/strings.xml @@ -101,4 +101,5 @@ <!--Database import/export--> <!--Casting--> <!--<string name="cast_failed_to_connect">Could not connect to the device</string>--> + <!--Notification channels--> </resources> diff --git a/core/src/main/res/values-ko-rKR/strings.xml b/core/src/main/res/values-ko-rKR/strings.xml index acf3abe75..2d9481b84 100644 --- a/core/src/main/res/values-ko-rKR/strings.xml +++ b/core/src/main/res/values-ko-rKR/strings.xml @@ -36,4 +36,5 @@ <!--Database import/export--> <!--Casting--> <!--<string name="cast_failed_to_connect">Could not connect to the device</string>--> + <!--Notification channels--> </resources> diff --git a/core/src/main/res/values-ko/strings.xml b/core/src/main/res/values-ko/strings.xml index a3ec4de96..c776885ea 100644 --- a/core/src/main/res/values-ko/strings.xml +++ b/core/src/main/res/values-ko/strings.xml @@ -122,7 +122,6 @@ <string name="feed_remover_msg">ķ¼ė ģģ ķė ģ¤</string> <string name="load_complete_feed">ģ ģ²“ ķ¼ė ģė”ź³ ģ¹Ø</string> <string name="hide_episodes_title">ģķ¼ģė ź°ģ¶źø°</string> - <string name="episode_actions">ėģ ģ ģ©</string> <string name="hide_unplayed_episodes_label">ģ¬ģ ģ ķØ</string> <string name="hide_paused_episodes_label">ģ¼ģ ģ¤ģ§</string> <string name="hide_played_episodes_label">ģ¬ģķØ</string> @@ -167,6 +166,8 @@ <string name="download_failed">ģ¤ķØ</string> <string name="download_pending">ė¤ģ“ė”ė ģ§ģ° ģ¤</string> <string name="download_running">ė¤ģ“ė”ė ģ¤ķ ģ¤</string> + <string name="download_error_details">ģģøķ</string> + <string name="download_error_details_message">%1$s \n\nķģ¼ URL:\n%2$s</string> <string name="download_error_device_not_found">ģ ģ„ ģ„ģ¹ź° ģģµėė¤</string> <string name="download_error_insufficient_space">ģ ģ„ ź³µź°ģ“ ė¶ģ”±ķ©ėė¤</string> <string name="download_error_file_error">ķģ¼ ģ¤ė„</string> @@ -279,7 +280,6 @@ <string name="other_pref">źø°ķ</string> <string name="about_pref">ģ ė³“</string> <string name="queue_label">ėźø°ģ“</string> - <string name="services_label">ģė¹ģ¤</string> <string name="flattr_label">Flattr</string> <string name="pref_episode_cleanup_title">ģķ¼ģė ģ ė¦¬</string> <string name="pref_episode_cleanup_summary">ėźø°ģ“ģ ģź³ ģ¦ź²Øģ°¾źø°ģ ė£ģ§ ģģ ģķ¼ģėė ģė ė¤ģ“ė”ėģģ ģ ģķ¼ģėģ ź³µź°ģ“ ķģķ ź²½ģ° ģ ź±°ė ģ ģģµėė¤.</string> @@ -400,8 +400,6 @@ <string name="crash_report_sum">ģµź·¼ģ ģ“ģ ģ¢
ė£ ė³“ź³ ģė„¼ ģ“ė©ģ¼ė” ė³“ė
ėė¤.</string> <string name="send_email">ģ“ė©ģ¼ ė³“ė“źø°</string> <string name="experimental_pref">ģ¤ķģ źø°ė„</string> - <string name="pref_sonic_title">ģė ėÆøėģ“ ķė ģ“ģ“</string> - <string name="pref_sonic_message">ė“ģ„ ģė ėÆøėģ“ ķė ģ“ģ“ė„¼ ģėė”ģ“ė ź³ ģ ėÆøėģ“ ķė ģ“ģ“ģ Prestissimo ėģ ģ¬ģ©ķ©ėė¤.</string> <string name="pref_current_value">ķģ¬ ź°: %1$s</string> <string name="pref_proxy_title">ķė”ģ</string> <string name="pref_proxy_sum">ė¤ķøģķ¬ ķė”ģ ģ¤ģ </string> @@ -449,8 +447,8 @@ <string name="html_export_label">HTML ė“ė³“ė“źø°</string> <string name="exporting_label">ė“ė³“ė“ė ģ¤ā¦</string> <string name="export_error_label">ė“ė³“ė“źø° ģ¤ė„</string> - <string name="opml_export_success_title">OPML ė“ė³“ė“źø°ź° ģ±ź³µķģµėė¤.</string> - <string name="opml_export_success_sum">OPML ķģ¼ģ ė¤ģģ ģ ģ„ķģµėė¤:\u0020</string> + <string name="export_success_title">ė“ė³“ė“źø° ģ±ź³µ</string> + <string name="export_success_sum">ė“ė³“ėø ķģ¼ģ ė¤ģģ ģ ģ„ķģµėė¤:\n\n%1$s</string> <string name="opml_import_ask_read_permission">OPML ķģ¼ģ ģ½ģ¼ė ¤ė©“ ģøė¶ ģ ģ„ģ ģ ź·¼ģ“ ķģķ©ėė¤</string> <!--Sleep timer--> <string name="set_sleeptimer_label">ģ·Øģ¹Ø ķģ“ėØø ģ¤ģ </string> @@ -615,6 +613,13 @@ <string name="proxy_host_invalid_error">ķøģ¤ķøź° ģ¬ė°ė„ø IP ģ£¼ģ ėė ėė©ģøģ“ ģėėė¤</string> <string name="proxy_port_invalid_error">ķ¬ķøź° ģ¬ė°ė„“ģ§ ģģµėė¤</string> <!--Database import/export--> + <string name="import_export">ė°ģ“ķ°ė² ģ“ģ¤ ź°ģ øģ¤źø°/ė“ė³“ė“źø°</string> + <string name="import_export_warning">ģ¤ķģ ģø źø°ė„ģ¼ė” źµ¬ė
ģ ė³“ģ ģ¬ģķ ģķ¼ģė ģ ė³“ė„¼ ė¤ė„ø ģ„ģ¹ė” ģ®źø°ėė° ģ¬ģ©ķ©ėė¤.\n\nė“ė³“ėø ė°ģ“ķ°ė² ģ“ģ¤ė ź°ģ ė²ģ ģ ģķ
ėķģ ģ¬ģ©ķ ź²½ģ°ģė§ ź°ģ øģ¬ ģ ģģµėė¤. ź°ģ ė²ģ ģ“ ģėė©“ ģģģ¹ ėŖ»ķź² ėģķ ģ ģģµėė¤.\n\nź°ģ øģØ ķģ ė¤ģ“ė”ėķģ§ ģģ ģķ¼ģėź° ė¤ģ“ė”ėķ ź²ģ¼ė” ķģė ģ ģģµėė¤. ź·ø ź²½ģ° ķ“ė¹ ģķ¼ģėģ ģ¬ģ ė²ķ¼ģ ėė„“ė©“ ģķ
ėķģģ ė¤ģ“ė”ė ģ¬ė¶ė„¼ ķģøķ“ ģ¤ėė¤.</string> + <string name="label_import">ź°ģ øģ¤źø°</string> + <string name="label_export">ė“ė³“ė“źø°</string> + <string name="import_select_file">ź°ģ øģ¬ ķģ¼ģ ģ ķķģģģ¤</string> + <string name="export_ok">ė“ė³“ė“źø° ģ±ź³µ</string> + <string name="import_ok">ė“ė³“ė“źø° ģ±ź³µ.\n\nģķ
ėķģ ė¤ģ ģģķė ¤ė©“ ķģøģ ėė„“ģģģ¤</string> <!--Casting--> <string name="cast_media_route_menu_title">ė¤ė„ø ģ„ģ¹ģģ ģ¬ģ...</string> <string name="cast_disconnect_label">ģŗģ¤ķø ģøģ
ģ°ź²° ėźø°</string> @@ -631,4 +636,5 @@ <string name="cast_failed_seek">ģŗģ¤ķø ģ„ģ¹ģ ģ ģ¬ģ ģģ¹ė” ģ“ėķėė° ģ¤ķØķģµėė¤</string> <string name="cast_failed_receiver_player_error">ė¦¬ģė² ķė ģ“ģ“ģģ ģ¬ź°ķ ģ¤ė„ź° ė°ģķģµėė¤</string> <string name="cast_failed_media_error_skipping">ėÆøėģ“ ģ¬ģģ ģ¤ė„. ź±“ėėėė¤...</string> + <!--Notification channels--> </resources> diff --git a/core/src/main/res/values-lt/strings.xml b/core/src/main/res/values-lt/strings.xml index 7736c148b..3ca4270ce 100644 --- a/core/src/main/res/values-lt/strings.xml +++ b/core/src/main/res/values-lt/strings.xml @@ -1,11 +1,13 @@ <?xml version='1.0' encoding='UTF-8'?> <resources xmlns:tools="http://schemas.android.com/tools"> <!--Activitiy and fragment titles--> + <string name="feed_update_receiver_name">Atnaujinti prenumeratas</string> <string name="feeds_label">Sklaidos kanalai</string> <string name="statistics_label">Statistika</string> <string name="add_feed_label">PridÄti tinklalaidÄ</string> <string name="episodes_label">Epizodai</string> <string name="all_episodes_short_label">Visi</string> + <string name="new_episodes_label">Nauji</string> <string name="favorite_episodes_label">MÄgiami</string> <string name="new_label">Nauji</string> <string name="settings_label">Nustatymai</string> @@ -56,7 +58,7 @@ <string name="yes">Taip</string> <string name="no">Ne</string> <string name="reset">Nustatyti iÅ” naujo</string> - <string name="author_label">Autorius</string> + <string name="author_label">Autorius (-iai)</string> <string name="language_label">Kalba</string> <string name="url_label">URL</string> <string name="podcast_settings_label">Nustatymai</string> @@ -93,6 +95,7 @@ <plurals name="episode_cleanup_days_after_listening"> <item quantity="one">PraÄjus 1 dienai nuo perklausymo</item> <item quantity="few">PraÄjus %d dienoms nuo perklausymo</item> + <item quantity="many">PraÄjus %d dienų nuo perklausymo</item> <item quantity="other">PraÄjus %d dienų nuo perklausymo</item> </plurals> <!--'Add Feed' Activity labels--> @@ -106,25 +109,21 @@ <string name="mark_all_read_label">PažymÄti visus kaip perklausytus</string> <string name="mark_all_read_msg">Visi epizodai pažymÄti kaip perklausyti</string> <string name="mark_all_read_confirmation_msg">Patvirtinkite, jog norite pažymÄti visus epizodus kaip perklausytus.</string> - <string name="mark_all_read_feed_confirmation_msg">Patvirtinkite, jog norite pažymÄti visus Å”io sklaidos kanalo epizodus kaip perklausytus.</string> <string name="mark_all_seen_label">PažymÄti visus kaip matytus</string> - <string name="mark_all_seen_msg">Visi epizodai pažymÄti kaip matyti</string> + <string name="mark_all_seen_msg">PažymÄti visus epizodus kaip matytus</string> <string name="mark_all_seen_confirmation_msg">Patvirtinkite, jog norite pažymÄti visus epizodus kaip matytus.</string> <string name="show_info_label">Rodyti informacijÄ
</string> + <string name="feed_info_label">TinklalaidÄs informacija</string> <string name="rename_feed_label">Pervadinti tinklalaidÄ</string> <string name="remove_feed_label">PaÅ”alinti tinklalaidÄ</string> <string name="share_label">Dalintis...</string> - <string name="share_link_label">Dalintis nuoroda</string> + <string name="share_link_label">Dalintis epizodo URL</string> + <string name="share_link_with_position_label">Dalintis epizodo URL su pozicija</string> <string name="share_file_label">Dalintis failu</string> - <string name="share_link_with_position_label">Dalintis nuoroda su pozicija</string> <string name="share_feed_url_label">Dalintis sklaidos kanalo URL</string> - <string name="share_item_url_label">Dalintis epizodo failo URL</string> - <string name="share_item_url_with_position_label">Dalintis epizodo failo adresu su pozicija</string> - <string name="feed_delete_confirmation_msg">Patvirtinkite, jog norite iÅ”trinti sklaidos kanalÄ
ā%1$sā bei VISUS atsisiųstus Å”io sklaidos kanalo epizodus.</string> - <string name="feed_remover_msg">Å alinamas sklaidos kanalas</string> - <string name="load_complete_feed">Atnaujinti visÄ
sklaidos kanalÄ
</string> + <string name="share_item_url_label">Dalintis medijos failo URL</string> + <string name="share_item_url_with_position_label">Dalintis medijos failo adresu su pozicija</string> <string name="hide_episodes_title">SlÄpti epizodus</string> - <string name="episode_actions">Pritaikyti veiksmus</string> <string name="hide_unplayed_episodes_label">Neperklausyti</string> <string name="hide_paused_episodes_label">Pristabdyti</string> <string name="hide_played_episodes_label">Perklausyti</string> @@ -193,6 +192,7 @@ <plurals name="downloads_left"> <item quantity="one">Liko %d atsiuntimas</item> <item quantity="few">Liko %d atsiuntimai</item> + <item quantity="many">Liko %d atsiuntimų</item> <item quantity="other">Liko %d atsiuntimų</item> </plurals> <string name="downloads_processing">Apdorojami atsiuntimai</string> @@ -236,7 +236,7 @@ <string name="date">Data</string> <string name="duration">TrukmÄ</string> <string name="episode_title">Epizodo pavadinimas</string> - <string name="feed_title">Sklaidos kanalo pavadinimas</string> + <string name="feed_title">TinklalaidÄs pavadinimas</string> <string name="ascending">DidÄjanÄia tvarka</string> <string name="descending">MažÄjanÄia tvarka</string> <string name="clear_queue_confirmation_msg">Patvirtinkite, jog norite paÅ”alinti VISUS epizodus iÅ” perklausos eilÄs</string> @@ -274,7 +274,6 @@ <string name="enable_sonic">Ä®jungti āSonicā</string> <!--Empty list labels--> <string name="no_items_label">Å iame sÄ
raÅ”e nÄra elementų.</string> - <string name="no_feeds_label">Kol kas neprenumeruojate jokio sklaidos kanalo.</string> <string name="no_chapters_label">Å is epizodas neturi skyrių.</string> <string name="no_shownotes_label">Å is epizodas neturi užraŔų.</string> <!--Preferences--> @@ -283,15 +282,16 @@ <string name="other_pref">Kita</string> <string name="about_pref">Apie</string> <string name="queue_label">EilÄ</string> - <string name="services_label">Paslaugos</string> + <string name="integrations_label">Integracijos</string> <string name="flattr_label">Flattr</string> + <string name="appearance">IÅ”vaizda</string> + <string name="media_player">Medijos grotuvas</string> <string name="pref_episode_cleanup_title">Epizodų valymas</string> <string name="pref_episode_cleanup_summary">Epizodai, nesantys eilÄje ar tarp mÄgiamųjų, gali bÅ«ti iÅ”trinti automatinio atsiuntimo metu pritrÅ«kus laisvos vietos naujiems epizodams </string> <string name="pref_pauseOnDisconnect_sum">Pristabdyti atkÅ«rimÄ
, kai atjungiamos ausinÄs ar āBluetoothā</string> <string name="pref_unpauseOnHeadsetReconnect_sum">PratÄsti atkÅ«rimÄ
, kai ausinÄs pakartotinai prijungiamos</string> <string name="pref_unpauseOnBluetoothReconnect_sum">PratÄsti atkÅ«rimÄ
, kai pakartotinai prisijungiama prie āBluetoothā</string> <string name="pref_hardwareForwardButtonSkips_title">Mygtukas āpirmynā perÅ”oka epizodÄ
</string> - <string name="pref_hardwareForwardButtonSkips_sum">Paspaudus aparatinÄÆ mygtukÄ
āpirmynā perÅ”okti ÄÆ kitÄ
epizodÄ
vietoje greito persukimo ÄÆ priekÄÆ.</string> <string name="pref_hardwarePreviousButtonRestarts_title">Mygtukas āankstesnisā paleidžia iÅ” naujo</string> <string name="pref_hardwarePreviousButtonRestarts_sum">Paspaudus aparatinÄÆ mygtukÄ
āankstesnisā paleisti dabartinÄÆ epizodÄ
nuo pradžių vietoj epizodo perÅ”okimo</string> <string name="pref_followQueue_sum">AtkÅ«rimui pasibaigus perÅ”okti ÄÆ kitÄ
eilÄs elementÄ
</string> @@ -340,7 +340,6 @@ <string name="pref_nav_drawer_feed_order_title">Nustatyti prenumeratų tvarkÄ
</string> <string name="pref_nav_drawer_feed_order_sum">Keiskite prenumeratų tvarkÄ
</string> <string name="pref_nav_drawer_feed_counter_title">Nustatyti prenumeratų skaitliukÄ
</string> - <string name="pref_nav_drawer_feed_counter_sum">Keisti prenumeratų skaitliuko rodomÄ
informacijÄ
</string> <string name="pref_set_theme_sum">Keisti AntennaPod iÅ”vaizdÄ
.</string> <string name="pref_automatic_download_title">Automatinis atsiuntimas</string> <string name="pref_automatic_download_sum">KonfigÅ«ruoti automatinÄÆ epizodų atsiuntimÄ
.</string> @@ -382,8 +381,6 @@ <string name="pref_rewind_sum">Derinkite, per kiek sekundžių Å”oktelÄti atgal kai paspaudžiamas atsukimo atgal mygtukas</string> <string name="pref_gpodnet_sethostname_title">Nustatyti serverÄÆ</string> <string name="pref_gpodnet_sethostname_use_default_host">Naudoti numatytÄ
jÄÆ serverÄÆ</string> - <string name="pref_expandNotify_title">IÅ”plÄsti praneÅ”imus</string> - <string name="pref_expandNotify_sum">IÅ”plÄsti programos praneÅ”imus, kad bÅ«tų atvaizduojami atkÅ«rimo valdymo mygtukai.</string> <string name="pref_persistNotify_title">PastovÅ«s atkÅ«rimo valdikliai</string> <string name="pref_persistNotify_sum">Pristabdžius atkÅ«rimÄ
palikti valdiklius ekrano užrakte bei programų praneÅ”imuose. </string> <string name="pref_compact_notification_buttons_title">Nustatyti ekrano užrakto mygtukus</string> @@ -404,8 +401,6 @@ <string name="crash_report_sum">Siųsti paskiausios strigties praneÅ”imÄ
el. paÅ”tu</string> <string name="send_email">Siųsti el. laiÅ”kÄ
</string> <string name="experimental_pref">Eksperimentinis</string> - <string name="pref_sonic_title">āSonicā medijos leistuvÄ</string> - <string name="pref_sonic_message">Naudoti ÄÆtaisytÄ
jÄ
āSonicā medijos leistuvÄ vietoje savosios āAndroidā medijos leistuvÄs ir āPrestissimoā </string> <string name="pref_current_value">DabartinÄ reikÅ”mÄ: %1$s</string> <string name="pref_proxy_title">Ä®galiotasis serveris</string> <string name="pref_proxy_sum">Nustatyti ÄÆgaliotÄ
jÄÆ tinklo serverÄÆ</string> @@ -426,8 +421,6 @@ <string name="search_hint">IeÅ”koti epizodų</string> <string name="found_in_shownotes_label">Rasta laidos užraÅ”uose</string> <string name="found_in_chapters_label">Rasta skyriuose</string> - <string name="found_in_authors_label">Rasta autoriuose</string> - <string name="found_in_feeds_label">Rasta sklaidos kanaluose</string> <string name="search_status_no_results">Nieko nerasta</string> <string name="search_label">PaieÅ”ka</string> <string name="found_in_title_label">Rasta pavadinime</string> @@ -453,8 +446,6 @@ <string name="html_export_label">HTML eksportas</string> <string name="exporting_label">Eksportuojama...</string> <string name="export_error_label">Eksporto klaida</string> - <string name="opml_export_success_title">OPML eksportas sÄkmingas.</string> - <string name="opml_export_success_sum">.opml failas iÅ”saugotas ÄÆ:\u0020</string> <string name="opml_import_ask_read_permission">Norint nuskaityti OPML failÄ
reikalinga prieiga prie neÅ”iojamos atmintinÄs</string> <!--Sleep timer--> <string name="set_sleeptimer_label">Nustatyti miego laikmatÄÆ</string> @@ -472,16 +463,19 @@ <plurals name="time_seconds_quantified"> <item quantity="one">1 sekundÄ</item> <item quantity="few">%d sekundÄs</item> + <item quantity="many">%d sekundžių</item> <item quantity="other">%d sekundžių</item> </plurals> <plurals name="time_minutes_quantified"> <item quantity="one">1 minutÄ</item> <item quantity="few">%d minutÄs</item> + <item quantity="many">%d minuÄių</item> <item quantity="other">%d minuÄių</item> </plurals> <plurals name="time_hours_quantified"> <item quantity="one">1 valanda</item> <item quantity="few">%d valandos</item> + <item quantity="many">%d valandų</item> <item quantity="other">%d valandų</item> </plurals> <string name="auto_enable_label">Ä®jungti automatiÅ”kai</string> @@ -634,7 +628,6 @@ Po importavimo, epizodai gali bÅ«ti per klaidÄ
pažymÄti kaip atsisiųsti. Tie <string name="label_import">Importuoti</string> <string name="label_export">Eksportuoti</string> <string name="import_select_file">Pasirinkite failÄ
, kurÄÆ norite importuoti</string> - <string name="export_ok">Eksportas sÄkmingas. Duomenų bazÄ iÅ”saugota SD kortelÄje.</string> <string name="import_ok">Importuota sÄkmingai. Spauskite āOKā, kad paleisti āAntennaPodā iÅ” naujo.</string> @@ -654,4 +647,7 @@ Spauskite āOKā, kad paleisti āAntennaPodā iÅ” naujo.</string> <string name="cast_failed_seek">PerÅ”okti ÄÆ naujÄ
pozicijÄ
āChromecastā ÄÆrenginyje nepavyko</string> <string name="cast_failed_receiver_player_error">Imtuvo leistuvÄ iÅ”tiko rimta klaida</string> <string name="cast_failed_media_error_skipping">Ä®vyko medijos atkÅ«rimo klaida. Praleidžiama...</string> + <!--Notification channels--> + <string name="notification_channel_downloading">AtsiunÄiama</string> + <string name="notification_channel_error">Klaidos</string> </resources> diff --git a/core/src/main/res/values-mk/strings.xml b/core/src/main/res/values-mk/strings.xml new file mode 100644 index 000000000..1bb5aa651 --- /dev/null +++ b/core/src/main/res/values-mk/strings.xml @@ -0,0 +1,54 @@ +<?xml version='1.0' encoding='UTF-8'?> +<resources xmlns:tools="http://schemas.android.com/tools"> + <!--Activitiy and fragment titles--> + <string name="statistics_label">Š”ŃŠ°ŃŠøŃŃŠøŠŗŠø</string> + <string name="add_feed_label">Š”ŃŠ°Š²Šø ŠŠ¾Š“ŠŗŠ°ŃŃ</string> + <string name="episodes_label">ŠŠæŠøŠ·Š¾Š“Šø</string> + <string name="all_episodes_short_label">Š”ŠøŃŠµ</string> + <string name="new_episodes_label">ŠŠ¾Š²Šø</string> + <string name="favorite_episodes_label">ŠŠ¼ŠøŠ»ŠµŠ½Šø</string> + <!--Statistics fragment--> + <!--Main activity--> + <!--Webview actions--> + <!--Playback history--> + <!--Other--> + <string name="no">ŠŠµ</string> + <string name="reset">Š ŠµŃŠµŃ</string> + <string name="author_label">ŠŠ²ŃŠ¾Ń</string> + <string name="language_label">ŠŠ°Š·ŠøŠŗ</string> + <string name="url_label">Š£Š Š</string> + <string name="chapters_label">ŠŠ¾Š³Š»Š°Š²ŃŠ°</string> + <!--'Add Feed' Activity labels--> + <!--Actions on feeds--> + <!--actions on feeditems--> + <string name="delete_label">ŠŠ·Š±ŃŠøŃŠø</string> + <!--Download messages and labels--> + <!--Mediaplayer messages--> + <!--Queue operations--> + <string name="date">ŠŠ°ŃŃŠ¼</string> + <!--Flattr--> + <!--Flattr--> + <!--Variable Speed--> + <!--Empty list labels--> + <!--Preferences--> + <!--Auto-Flattr dialog--> + <!--Search--> + <!--OPML import and export--> + <!--Sleep timer--> + <!--gpodder.net--> + <!--Directory chooser--> + <!--Online feed view--> + <!--Content descriptions for image buttons--> + <!--Feed information screen--> + <!--Progress information--> + <!--AntennaPodSP--> + <!--Episodes apply actions--> + <!--Sort--> + <!--Rating dialog--> + <!--Audio controls--> + <!--proxy settings--> + <!--Database import/export--> + <!--Casting--> + <!--<string name="cast_failed_to_connect">Could not connect to the device</string>--> + <!--Notification channels--> +</resources> diff --git a/core/src/main/res/values-nb/strings.xml b/core/src/main/res/values-nb/strings.xml index 65dc5565b..dafc7eb60 100644 --- a/core/src/main/res/values-nb/strings.xml +++ b/core/src/main/res/values-nb/strings.xml @@ -42,7 +42,6 @@ <string name="cancel_label">Avbryt</string> <string name="yes">Ja</string> <string name="no">Nei</string> - <string name="author_label">Opphavsperson</string> <string name="language_label">SprĆ„k</string> <string name="url_label">URL</string> <string name="podcast_settings_label">Innstillinger</string> @@ -85,17 +84,10 @@ <string name="mark_all_read_label">Marker alle som avspilt</string> <string name="mark_all_read_msg">Marker alle episoder som avspilt</string> <string name="mark_all_read_confirmation_msg">Vennligst bekreft at du Ćønsker Ć„ markere alle episoder som avspilt.</string> - <string name="mark_all_read_feed_confirmation_msg">Vennligst bekreft at du Ćønsker Ć„ markere alle episoder i denne strĆømmen som avspilt.</string> <string name="mark_all_seen_label">Marker alle som sett</string> <string name="show_info_label">Vis informasjon</string> - <string name="remove_feed_label">Fjern podcast</string> - <string name="share_link_label">Del lenke</string> - <string name="share_link_with_position_label">Del lenke med plassering</string> <string name="share_feed_url_label">Del strĆømmens URL</string> - <string name="feed_remover_msg">Fjerner strĆøm</string> - <string name="load_complete_feed">Oppdater hele strĆømmen</string> <string name="hide_episodes_title">Skjul episoder</string> - <string name="episode_actions">Lagre handlinger</string> <string name="hide_unplayed_episodes_label">Ikke avspilt</string> <string name="hide_paused_episodes_label">Pauset</string> <string name="hide_played_episodes_label">Avspilt</string> @@ -226,18 +218,15 @@ <string name="enable_sonic">Skru pĆ„ Sonic</string> <!--Empty list labels--> <string name="no_items_label">Det er ingen objekter pĆ„ denne listen.</string> - <string name="no_feeds_label">Du abonnerer ikke pĆ„ noen strĆømmer enda.</string> <!--Preferences--> <string name="other_pref">Annet</string> <string name="about_pref">Om</string> <string name="queue_label">Queue</string> - <string name="services_label">Tjenester</string> <string name="flattr_label">Flattr</string> <string name="pref_episode_cleanup_title">Episodeopprydding</string> <string name="pref_pauseOnDisconnect_sum">Sett playback pĆ„ pause nĆ„r hodetelefoner eller bluetooth er frakoblet</string> <string name="pref_unpauseOnHeadsetReconnect_sum">Gjenoppta avspilling nĆ„r hodetelefoner gjeninnkoples</string> <string name="pref_unpauseOnBluetoothReconnect_sum">Fortsett avspilling nĆ„r bluetooth er tilkoblet igjen</string> - <string name="pref_hardwareForwardButtonSkips_sum">Ved pressing av hardware forover-knapp hopp til neste episode istedenfor forover-spoling</string> <string name="pref_followQueue_sum">Hopp til neste element i kĆøen nĆ„r avspillingen er ferdig</string> <string name="pref_auto_delete_sum">Slett episode nĆ„r avspillingen er ferdig</string> <string name="pref_auto_delete_title">Automatisk sletting</string> @@ -279,7 +268,6 @@ <string name="pref_nav_drawer_feed_order_title">Velg rekkefĆølge pĆ„ abbonement</string> <string name="pref_nav_drawer_feed_order_sum">Endre rekkefĆølgen pĆ„ abbonementene dine</string> <string name="pref_nav_drawer_feed_counter_title">Velg abbonementsteller</string> - <string name="pref_nav_drawer_feed_counter_sum">Endre informasjonen vist av abonnementstelleren</string> <string name="pref_set_theme_sum">Endre utseendet til AntennaPod</string> <string name="pref_automatic_download_title">Automatisk nedlasting</string> <string name="pref_automatic_download_sum">Konfigurer automatisk nedlasting av episoder.</string> @@ -305,8 +293,6 @@ <string name="pref_playback_speed_sum">Egendefiner hastighetene tilgjengelig for variabel avspillingshastighet</string> <string name="pref_gpodnet_sethostname_title">Sett vertsnavn</string> <string name="pref_gpodnet_sethostname_use_default_host">Bruk standard vert</string> - <string name="pref_expandNotify_title">Utvid varsel</string> - <string name="pref_expandNotify_sum">Utvider alltid varselet for Ć„ inkludere avspillingsknapper.</string> <string name="pref_persistNotify_title">Vedvarende avspillingskontroller</string> <string name="pref_persistNotify_sum">Behold varsel- og lĆ„seskjermkontroller nĆ„r avspilling er satt pĆ„ pause.</string> <string name="pref_lockscreen_background_title">Angi som bakgrunn pĆ„ lĆ„seskjermen</string> @@ -350,8 +336,6 @@ <string name="choose_file_from_external_application">Bruk ekstern applikasjon</string> <string name="opml_export_label">OPML-eksportering</string> <string name="export_error_label">Eksporteringserror</string> - <string name="opml_export_success_title">OPML-import vellykket.</string> - <string name="opml_export_success_sum">.opml-filen ble skrevet til:\u0020</string> <!--Sleep timer--> <string name="set_sleeptimer_label">Sett opp sovetimer</string> <string name="disable_sleeptimer_label">Deaktiver sovetimer</string> @@ -480,4 +464,5 @@ <!--Database import/export--> <!--Casting--> <!--<string name="cast_failed_to_connect">Could not connect to the device</string>--> + <!--Notification channels--> </resources> diff --git a/core/src/main/res/values-nl/strings.xml b/core/src/main/res/values-nl/strings.xml index 2756adc53..b2b368e8a 100644 --- a/core/src/main/res/values-nl/strings.xml +++ b/core/src/main/res/values-nl/strings.xml @@ -1,38 +1,42 @@ <?xml version='1.0' encoding='UTF-8'?> <resources xmlns:tools="http://schemas.android.com/tools"> <!--Activitiy and fragment titles--> + <string name="feed_update_receiver_name">Abonnementen bijwerken</string> <string name="feeds_label">Feeds</string> <string name="statistics_label">Statistieken</string> <string name="add_feed_label">Podcast toevoegen</string> <string name="episodes_label">Afleveringen</string> <string name="all_episodes_short_label">Alle</string> + <string name="new_episodes_label">Nieuw</string> <string name="favorite_episodes_label">Favorieten</string> <string name="new_label">Nieuw</string> <string name="settings_label">Instellingen</string> <string name="downloads_label">Downloads</string> <string name="downloads_running_label">Bezig</string> <string name="downloads_completed_label">Voltooid</string> - <string name="downloads_log_label">Geschiedenis</string> - <string name="subscriptions_label">Feeds</string> - <string name="subscriptions_list_label">Lijst met feeds</string> - <string name="cancel_download_label">Annuleer download</string> + <string name="downloads_log_label">Logboek</string> + <string name="subscriptions_label">Abonnementen</string> + <string name="subscriptions_list_label">Lijst met abonnementen</string> + <string name="cancel_download_label">Download\nafbreken</string> <string name="playback_history_label">Afspeelgeschiedenis</string> <string name="gpodnet_main_label">gpodder.net</string> - <string name="gpodnet_auth_label">gpodder.net login</string> + <string name="gpodnet_summary">Synchroniseren met andere apparaten</string> + <string name="gpodnet_auth_label">Inloggen op gpodder.net</string> <string name="free_space_label">%1$s beschikbaar</string> - <string name="episode_cache_full_title">Afleveringen cache is vol</string> - <string name="episode_cache_full_message">Het maximum aantal gecachte afleveringen is bereikt. U kunt het maximum verhogen in de instellingen.</string> + <string name="episode_cache_full_title">Afleveringscache is vol</string> + <string name="episode_cache_full_message">Het maximum aantal gecachete afleveringen is bereikt. Je kunt het maximum verhogen in de instellingen.</string> + <string name="synchronizing">Bezig met synchroniserenā¦</string> <!--Statistics fragment--> <string name="total_time_listened_to_podcasts">Totale duur van afgespeelde podcasts:</string> - <string name="statistics_details_dialog">%1$d van de %2$d afleveringen gestart.\n\n%3$s van de %4$s afgespeeld.</string> + <string name="statistics_details_dialog">%1$d van %2$d afleveringen gestart.\n\n%3$s van %4$s afgespeeld.</string> <string name="statistics_mode">Rekenmethode</string> - <string name="statistics_mode_normal">Bereken de daadwerkelijke speeltijd. Tweemaal afspelen wordt twee keer gerekend; als \'afgespeeld\' markeren wordt niet meegeteld.</string> - <string name="statistics_mode_count_all">Duur van de podcasts optelle die als \'afgespeeld\' zijn gemarkeerd.</string> - <string name="statistics_speed_not_counted">Let op: Met de afspeelsnelheid wordt geen rekening gehouden.</string> + <string name="statistics_mode_normal">Bereken de daadwerkelijke speeltijd. Tweemaal afspelen wordt twee keer gerekend; gemarkeerd als \'afgespeeld\' wordt niet meegeteld.</string> + <string name="statistics_mode_count_all">Duur van de podcasts optellen die gemarkeerd zijn als \'afgespeeld\' zijn</string> + <string name="statistics_speed_not_counted">Let op: er wordt geen rekening gehouden met de afspeelsnelheid.</string> <!--Main activity--> <string name="drawer_open">Menu openen</string> <string name="drawer_close">Menu sluiten</string> - <string name="drawer_preferences">Menu voorkeuren</string> + <string name="drawer_preferences">Menuvoorkeuren</string> <string name="drawer_feed_order_unplayed_episodes">Op aantal afleveringen</string> <string name="drawer_feed_order_alphabetical">Op alfabetische volgorde</string> <string name="drawer_feed_order_last_update">Op datum van publicatie</string> @@ -41,89 +45,93 @@ <string name="drawer_feed_counter_new">Aantal nieuwe afleveringen</string> <string name="drawer_feed_counter_unplayed">Aantal onbeluisterde afleveringen</string> <string name="drawer_feed_counter_downloaded">Aantal gedownloade afleveringen</string> - <string name="drawer_feed_counter_none">Geen (alfabetisch sorteren)</string> + <string name="drawer_feed_counter_none">Geen</string> <!--Webview actions--> - <string name="open_in_browser_label">In de browser openen</string> + <string name="open_in_browser_label">Openen in browser</string> <string name="copy_url_label">URL kopiĆ«ren</string> <string name="share_url_label">URL delen</string> - <string name="copied_url_msg">URL naar klembord gekopieerd.</string> - <string name="go_to_position_label">Ga naar specifiek tijdstip</string> + <string name="copied_url_msg">URL is gekopieerd naar het klembord</string> + <string name="go_to_position_label">Ga naar deze positie</string> <!--Playback history--> <string name="clear_history_label">Geschiedenis wissen</string> <!--Other--> - <string name="confirm_label">Bevestig</string> + <string name="confirm_label">Bevestigen</string> <string name="cancel_label">Annuleren</string> <string name="yes">Ja</string> <string name="no">Nee</string> - <string name="reset">Reset</string> - <string name="author_label">Auteur</string> + <string name="reset">Standaardwaarden</string> + <string name="author_label">Maker(s)</string> <string name="language_label">Taal</string> <string name="url_label">URL</string> <string name="podcast_settings_label">Instellingen</string> <string name="cover_label">Beeld</string> <string name="error_label">Fout</string> <string name="error_msg_prefix">Er is een fout opgetreden:</string> + <string name="needs_storage_permission">Machtiging voor gebruik van opslag voor deze functie vereist</string> <string name="refresh_label">Verversen</string> - <string name="external_storage_error_msg">Geen externe opslag beschikbaar. Zorg ervoor dat de externe opslag gemonteerd is, zodat de app goed kan werken.</string> + <string name="external_storage_error_msg">Geen externe opslag beschikbaar. Zorg ervoor dat de externe opslag is aangekoppeld, zodat de app goed kan werken.</string> <string name="chapters_label">Hoofdstukken</string> <string name="chapter_duration">Duur: %1$s</string> - <string name="shownotes_label">Shownotes</string> - <string name="description_label">Beschrijving</string> + <string name="shownotes_label">Notities</string> + <string name="description_label">Omschrijving</string> <string name="most_recent_prefix">Meest recente aflevering:\u0020</string> <string name="episodes_suffix">\u0020afleveringen</string> - <string name="length_prefix">Lengte:\u0020</string> + <string name="length_prefix">Duur:\u0020</string> <string name="size_prefix">Grootte:\u0020</string> - <string name="processing_label">Aan het verwerken</string> - <string name="loading_label">Ladenā¦</string> + <string name="processing_label">Bezig met verwerken...</string> + <string name="loading_label">Bezig met laden...</string> <string name="save_username_password_label">Gebruikersnaam en wachtwoord opslaan</string> <string name="close_label">Sluiten</string> - <string name="retry_label">Opnieuw proberen</string> + <string name="retry_label">Opnieuw</string> <string name="auto_download_label">Meenemen bij automatisch downloaden</string> - <string name="auto_download_apply_to_items_title">Toepassen op bestaande afleveringen</string> - <string name="auto_download_apply_to_items_message">De instelling voor <i>Automatisch downloaden</i> wordt automatisch toegepast op toekomstige afleveringen.\nWilt u het ook toepassen op eerder gepubliceerde afleveringen?</string> - <string name="auto_delete_label">Afleveringen automatisch\nverwijderen</string> - <string name="parallel_downloads_suffix">\u0020parallele downloads</string> + <string name="auto_download_apply_to_items_title">Toepassen op vorige afleveringen</string> + <string name="auto_download_apply_to_items_message">De instelling voor <i>Automatisch downloaden</i> wordt automatisch toegepast op toekomstige afleveringen.\nWil je het ook toepassen op eerder gepubliceerde afleveringen?</string> + <string name="auto_delete_label">Aflevering automatisch verwijderen</string> + <string name="parallel_downloads_suffix">\u0020gelijktijdige downloads</string> <string name="feed_auto_download_global">Standaardinstelling</string> <string name="feed_auto_download_always">Altijd</string> <string name="feed_auto_download_never">Nooit</string> - <string name="send_label">Versturenā¦</string> + <string name="send_label">Versturen...</string> <string name="episode_cleanup_never">Nooit</string> - <string name="episode_cleanup_queue_removal">Wanneer niet in de wachtrij</string> - <string name="episode_cleanup_after_listening">Wanneer aflevering volledig is afgespeeld</string> + <string name="episode_cleanup_queue_removal">Indien niet in de wachtrij</string> + <string name="episode_cleanup_after_listening">Als aflevering volledig is afgespeeld</string> <plurals name="episode_cleanup_days_after_listening"> - <item quantity="one">1 dag nadat de aflevering als afgespeeld is gemarkeerd</item> - <item quantity="other">%d dagen nadat de aflevering als afgespeeld is gemarkeerd</item> + <item quantity="one">1 dag nadat de aflevering is gemarkeerd als afgespeeld</item> + <item quantity="other">%d dagen nadat de aflevering is gemarkeerd als afgespeeld</item> </plurals> <!--'Add Feed' Activity labels--> - <string name="feedurl_label">Feed URL</string> + <string name="feedurl_label">Feed-URL</string> <string name="etxtFeedurlHint">www.voorbeeld.nl/feed</string> <string name="txtvfeedurl_label">Podcast toevoegen via URL</string> - <string name="podcastdirectories_label">Podcast vinden in de gids</string> - <string name="podcastdirectories_descr">U kunt nieuwe podcasts zoeken op naam, categorie of populariteit in de gpodder.net database, of de iTunes winkel doorzoeken.</string> - <string name="browse_gpoddernet_label">gpodder.net doorbladeren</string> + <string name="podcastdirectories_label">Podcast zoeken in de gids</string> + <string name="podcastdirectories_descr">Je kunt nieuwe podcasts vinden op naam, categorie of populariteit in de gpodder.net-databank of via iTunes of fyyd.</string> + <string name="browse_gpoddernet_label">Blader door gpodder.net</string> <!--Actions on feeds--> - <string name="mark_all_read_label">Alles als afgespeeld markeren</string> - <string name="mark_all_read_msg">Alle afleveringen als afgespeeld markeren</string> - <string name="mark_all_read_confirmation_msg">Bevestig aub dat u alle afleveringen als afgespeeld wilt markeren.</string> - <string name="mark_all_read_feed_confirmation_msg">Bevestig aub dat u alle afleveringen van deze feed als afgespeeld wilt markeren.</string> - <string name="mark_all_seen_label">\'Nieuw\' label van alle afleveringen verwijderen.</string> - <string name="mark_all_seen_msg">\'Nieuw\' label van alle afleveringen verwijderend</string> - <string name="mark_all_seen_confirmation_msg">Bevestig aub dat u het \'nieuw\' label van alle afleveringen wilt verwijderen.</string> - <string name="show_info_label">Toon informatie</string> - <string name="rename_feed_label">Podcast hernoemen</string> + <string name="mark_all_read_label">Alles markeren als afgespeeld</string> + <string name="mark_all_read_msg">Alle afleveringen zijn gemarkeerd als afgespeeld</string> + <string name="mark_all_read_confirmation_msg">Bevestig dat je alle afleveringen wilt markeren als afgespeeld.</string> + <string name="mark_all_read_feed_confirmation_msg">Bevestig dat je alle afleveringen van deze podcast wilt markeren als afgespeeld.</string> + <string name="mark_all_seen_label">Alles markeren als bekeken</string> + <string name="mark_all_seen_msg">Alle afleveringen zijn gemarkeerd als bekeken</string> + <string name="mark_all_seen_confirmation_msg">Bevestig dat je alle afleveringen wilt markeren als bekeken.</string> + <string name="show_info_label">Informatie tonen</string> + <string name="show_feed_settings_label">Podcast-instellingen tonen</string> + <string name="feed_info_label">Podcast-informatie</string> + <string name="feed_settings_label">Podcast-instellingen</string> + <string name="rename_feed_label">Podcastnaam wijzigen</string> <string name="remove_feed_label">Podcast verwijderen</string> - <string name="share_label">Delenā¦</string> - <string name="share_link_label">Link van de aflevering delen</string> - <string name="share_file_label">Deel bestand</string> - <string name="share_link_with_position_label">Link van de aflevering met tijdstip delen</string> - <string name="share_feed_url_label">URL van de feed delen</string> - <string name="share_item_url_label">URL van het mediabestand delen</string> - <string name="share_item_url_with_position_label">URL van mediabestand met tijdstip delen</string> - <string name="feed_delete_confirmation_msg">Bevestig dat u de feed <i>%1$s</i> en ALLE (ook gedownloade) afleveringen van deze podcast wilt verwijderen.</string> - <string name="feed_remover_msg">Feed verwijderen</string> - <string name="load_complete_feed">Hele feed vernieuwen</string> + <string name="share_label">Delen...</string> + <string name="share_link_label">URL van aflevering delen</string> + <string name="share_link_with_position_label">URL van aflevering delen, op specifieke positie</string> + <string name="share_file_label">Bestand delen</string> + <string name="share_feed_url_label">URL van feed delen</string> + <string name="share_item_url_label">URL van mediabestand delen</string> + <string name="share_item_url_with_position_label">URL van mediabestand delen, op specifieke positie</string> + <string name="feed_delete_confirmation_msg">Bevestig dat je de podcast \"%1$s\" en ALLE (ook gedownloade) bijbehorende afleveringen wilt verwijderen.</string> + <string name="feed_remover_msg">Podcast verwijderen</string> + <string name="load_complete_feed">Gehele podcast verversen</string> <string name="hide_episodes_title">Afleveringen verbergen</string> - <string name="episode_actions">Afleveringen beheren</string> + <string name="batch_edit">Bulkbewerking</string> <string name="hide_unplayed_episodes_label">Niet afgespeeld</string> <string name="hide_paused_episodes_label">Gepauzeerd</string> <string name="hide_played_episodes_label">Afgespeeld</string> @@ -132,335 +140,353 @@ <string name="hide_downloaded_episodes_label">Gedownload</string> <string name="hide_not_downloaded_episodes_label">Niet gedownload</string> <string name="hide_has_media_label">Bevat media</string> + <string name="hide_is_favorite_label">Gemarkeerd als favoriet</string> <string name="filtered_label">Gefilterd</string> - <string name="refresh_failed_msg">{fa-exclamation-circle} Laatste vernieuwing mislukt</string> - <string name="open_podcast">Open podcast</string> + <string name="refresh_failed_msg">{fa-exclamation-circle} Vorige verversing mislukt</string> + <string name="open_podcast">Podcast openen</string> <!--actions on feeditems--> - <string name="download_label">Download</string> - <string name="play_label">Spelen</string> - <string name="pause_label">Pauze</string> - <string name="stop_label">Stop</string> - <string name="stream_label">Stream</string> + <string name="download_label">Downloaden</string> + <string name="play_label">Afspelen</string> + <string name="pause_label">Pauzeren</string> + <string name="stop_label">Stoppen</string> + <string name="stream_label">Streamen</string> <string name="remove_label">Verwijderen</string> <string name="delete_label">Verwijderen</string> - <string name="delete_failed">Kan bestand niet verwijderen. Het kan misschien helpen om je apparaat opnieuw op te starten.</string> - <string name="remove_episode_lable">Aflevering(en) verwijderen</string> - <string name="marked_as_seen_label">Verwijder \'nieuw\' label</string> - <string name="mark_read_label">Als afgespeeld markeren</string> - <string name="marked_as_read_label">Als afgespeeld gemarkeerd</string> - <string name="mark_unread_label">Als niet afgespeeld markeren</string> - <string name="add_to_queue_label">Voeg toe aan wachtrij</string> - <string name="added_to_queue_label">Aan wachtrij toegevoegd</string> - <string name="remove_from_queue_label">Verwijder van wachtrij</string> + <string name="delete_failed">Kan bestand niet verwijderen; start je apparaat opnieuw op.</string> + <string name="remove_episode_lable">Aflevering verwijderen</string> + <string name="mark_as_seen_label">Markeren als bekeken</string> + <string name="marked_as_seen_label">Gemarkeerd als bekeken</string> + <string name="mark_read_label">Markeren als afgespeeld</string> + <string name="marked_as_read_label">Gemarkeerd als afgespeeld</string> + <string name="mark_unread_label">Markeren als niet-afgespeeld</string> + <string name="add_to_queue_label">Toevoegen aan wachtrij</string> + <string name="added_to_queue_label">Toegevoegd aan wachtrij</string> + <string name="remove_from_queue_label">Verwijderen uit wachtrij</string> <string name="add_to_favorite_label">Toevoegen aan favorieten</string> - <string name="added_to_favorites">Aan favorieten toegevoegd</string> + <string name="added_to_favorites">Toegevoegd aan favorieten</string> <string name="remove_from_favorite_label">Verwijderen uit favorieten</string> <string name="removed_from_favorites">Verwijderd uit favorieten</string> <string name="visit_website_label">Website bezoeken</string> <string name="support_label">Flattr dit</string> <string name="skip_episode_label">Aflevering overslaan</string> <string name="activate_auto_download">Automatisch downloaden activeren</string> - <string name="deactivate_auto_download">Automatisch downloaden deactiveren</string> - <string name="reset_position">Afspeelpositie resetten</string> + <string name="deactivate_auto_download">Automatisch downloaden de-activeren</string> + <string name="reset_position">Afspeelpositie herstellen</string> <string name="removed_item">Aflevering verwijderd</string> <!--Download messages and labels--> - <string name="download_successful">succesvol</string> + <string name="download_successful">voltooid</string> <string name="download_failed">mislukt</string> - <string name="download_pending">Download in afwachting</string> - <string name="download_running">Aan het downloaden</string> - <string name="download_error_device_not_found">Opslagmedium niet gevonden</string> + <string name="download_pending">Download staat in wachtrij</string> + <string name="download_running">Bezig met downloaden</string> + <string name="download_error_details">Details</string> + <string name="download_error_details_message">%1$s \n\nURL van bestand:\n%2$s</string> + <string name="download_error_device_not_found">Opslagmedium niet aangetroffen</string> <string name="download_error_insufficient_space">Onvoldoende ruimte</string> <string name="download_error_file_error">Bestandsfout</string> - <string name="download_error_http_data_error">HTTP data fout</string> + <string name="download_error_http_data_error">HTTP-gegevensfout</string> <string name="download_error_error_unknown">Onbekende fout</string> - <string name="download_error_parser_exception">Parser Exception</string> - <string name="download_error_unsupported_type">Niet ondersteunde feed soort</string> + <string name="download_error_parser_exception">Verwerkingsuitzondering</string> + <string name="download_error_unsupported_type">Niet-ondersteunde feedsoort</string> <string name="download_error_connection_error">Verbindingsfout</string> <string name="download_error_unknown_host">Onbekende host</string> - <string name="download_error_unauthorized">Authenticatie fout</string> - <string name="download_error_file_type_type">Fout met bestandsformaat</string> - <string name="download_error_forbidden">Actie niet mogelijk</string> - <string name="cancel_all_downloads_label">Alle downloads annuleren</string> - <string name="download_canceled_msg">Download geannuleerd</string> - <string name="download_canceled_autodownload_enabled_msg">Downloaden geannuleerd\n<i>Automatisch downloaden</i> uitgezet voor deze aflevering</string> - <string name="download_report_title">Downloads afgerond met fouten</string> + <string name="download_error_unauthorized">Authenticatiefout</string> + <string name="download_error_file_type_type">Bestandssoortfout</string> + <string name="download_error_forbidden">Niet mogelijk</string> + <string name="cancel_all_downloads_label">Alle downloads afbreken</string> + <string name="download_canceled_msg">Download afgebroken</string> + <string name="download_canceled_autodownload_enabled_msg">Download afgebroken\n<i>Automatisch downloaden</i> uitgeschakeld voor deze aflevering</string> + <string name="download_report_title">Downloads afgerond, maar met fout(en)</string> <string name="download_report_content_title">Downloadrapport</string> - <string name="download_error_malformed_url">Misvormde URL</string> - <string name="download_error_io_error">IO fout</string> - <string name="download_error_request_error">Fout in de aanvraag</string> - <string name="download_error_db_access">Databasetoegangsfout</string> + <string name="download_error_malformed_url">Onjuist opgemaakte URL</string> + <string name="download_error_io_error">Invoer-/uitvoerfout</string> + <string name="download_error_request_error">Opvraagfout</string> + <string name="download_error_db_access">Fout bij databanktoegang</string> <plurals name="downloads_left"> <item quantity="one">Nog %d download</item> <item quantity="other">Nog %d downloads</item> </plurals> - <string name="downloads_processing">Downloads verwerken</string> - <string name="download_notification_title">Podcastgegevens aan het downloaden</string> - <string name="download_report_content">%1$d downloads geslaagd, %2$d mislukt</string> + <string name="downloads_processing">Bezig met verwerken van downloads</string> + <string name="download_notification_title">Bezig met downloaden van podcastgegevens</string> + <string name="download_report_content">%1$d downloads voltooid, %2$d mislukt</string> <string name="download_log_title_unknown">Onbekende titel</string> <string name="download_type_feed">Feed</string> <string name="download_type_media">Mediabestand</string> - <string name="download_type_image">Beeld</string> - <string name="download_request_error_dialog_message_prefix">Er is een fout opgetreden bij het āādownloaden van bestand:\u0020</string> + <string name="download_type_image">Afbeelding</string> + <string name="download_request_error_dialog_message_prefix">Er is een fout opgetreden bij het āādownloaden van het bestand:\u0020</string> <string name="authentication_notification_title">Authenticatie vereist</string> - <string name="authentication_notification_msg">De opgevraagde bron vereist een gebruikersnaam en een wachtwoord</string> - <string name="confirm_mobile_download_dialog_title">Bevestig downloaden over mobiel netwerk</string> - <string name="confirm_mobile_download_dialog_message_not_in_queue">Het downloaden via mobiele verbindingen is uitgezet in de instellingen.\n\nU kunt er voor kiezen om slechts de aflevering aan de wachtrij toe te voegen, of om downloaden via mobiele netwerken tijdelijk toe te staan.\n<small>Uw keuze is 10 minuten geldig.</small></string> - <string name="confirm_mobile_download_dialog_message">Het downloaden via mobiele verbindingen is uitgezet in de instellingen.\n\nWilt u dit tijdelijk toestaan?\n<small>Uw keuze is 10 minuten geldig.</small></string> + <string name="authentication_notification_msg">De opgevraagde bron vereist een gebruikersnaam en wachtwoord</string> + <string name="confirm_mobile_download_dialog_title">Bevestig downloaden via mobiel internet</string> + <string name="confirm_mobile_download_dialog_message_not_in_queue">Downloaden via mobiel internet is uitgeschakeld in de instellingen.\n\nJe kunt er voor kiezen om de aflevering alleen toe te voegen aan de wachtrij of om downloaden via mobiele internet tijdelijk toe te staan.\n<small>Je keuze wordt 10 minuten onthouden.</small></string> + <string name="confirm_mobile_download_dialog_message">Downloaden via mobiel internet is uitgeschakeld in de instellingen.\n\nWil je dit tijdelijk toestaan?\n<small>Je keuze wordt 10 minuten onthouden.</small></string> <string name="confirm_mobile_download_dialog_only_add_to_queue">Toevoegen aan wachtrij</string> <string name="confirm_mobile_download_dialog_enable_temporarily">Tijdelijk toestaan</string> <!--Mediaplayer messages--> <string name="player_error_msg">Fout!</string> <string name="player_stopped_msg">Geen media aan het afspelen</string> - <string name="player_preparing_msg">Voorbereiding</string> + <string name="player_preparing_msg">Bezig met voorbereiden</string> <string name="player_ready_msg">Klaar</string> - <string name="player_seeking_msg">Aan het opzoeken</string> - <string name="playback_error_server_died">Server antwoord niet</string> + <string name="player_seeking_msg">Bezig met zoeken</string> + <string name="playback_error_server_died">Serververbinding verbroken</string> <string name="playback_error_unknown">Onbekende fout</string> <string name="no_media_playing_label">Geen media aan het afspelen</string> - <string name="player_buffering_msg">Buffering</string> - <string name="playbackservice_notification_title">Podcast aan het afspelen</string> - <string name="unknown_media_key">AntennaPod - Mediaknop onbekend: %1$d</string> + <string name="player_buffering_msg">Bezig met bufferen</string> + <string name="player_go_to_picture_in_picture">Picture-in-picture-modus</string> + <string name="playbackservice_notification_title">Bezig met afspelen van podcast</string> + <string name="unknown_media_key">AntennaPod - onbekende mediatoets: %1$d</string> <!--Queue operations--> - <string name="lock_queue">Wachtrij vastzetten</string> + <string name="lock_queue">Wachtrij vergrendelen</string> <string name="unlock_queue">Wachtrij ontgrendelen</string> <string name="queue_locked">Wachtrij vergrendeld</string> <string name="queue_unlocked">Wachtrij ontgrendeld</string> - <string name="clear_queue_label">Wachtrij leeg maken</string> + <string name="clear_queue_label">Wachtrij leegmaken</string> <string name="undo">Ongedaan maken</string> <string name="removed_from_queue">Item verwijderd</string> <string name="move_to_top_label">Naar boven verplaatsen</string> <string name="move_to_bottom_label">Naar beneden verplaatsen</string> <string name="sort">Sorteren</string> <string name="date">Datum</string> - <string name="duration">Lengte</string> - <string name="episode_title">Afleveringtitel</string> - <string name="feed_title">Feed-titel</string> + <string name="duration">Duur</string> + <string name="episode_title">Afleveringstitel</string> + <string name="feed_title">Podcast-titel</string> + <string name="random">Willekeurig</string> + <string name="smart_shuffle">Slim willekeurig afspelen</string> <string name="ascending">Oplopend</string> <string name="descending">Aflopend</string> - <string name="clear_queue_confirmation_msg">Bevestig aub dat u alle afleveringen uit de wachtrij wilt verwijderen</string> + <string name="clear_queue_confirmation_msg">Bevestig dat je ALLE afleveringen wilt verwijderen uit de wachtrij</string> <!--Flattr--> - <string name="flattr_auth_label">Flattr login</string> - <string name="flattr_auth_explanation">Druk op onderstaande knop om het verificatieproces te starten. U wordt doorgestuurd naar het Flattr inlogscherm in uw browser en u wordt gevraagd om toestemming aan AntennaPod te geven om dingen te Flattr\'en. Nadat u toestemming heeft gegeven, keert u automatisch terug naar dit scherm.</string> + <string name="flattr_auth_label">Inloggen op Flattr</string> + <string name="flattr_auth_explanation">Druk op onderstaande knop om het verificatieproces te starten. Het Flattr-inlogscherm wordt geopend in je browser en je wordt gevraagd om AntennaPod te machtigingen om dingen te Flattr\'en. Daarna keer je automatisch terug naar dit scherm.</string> <string name="authenticate_label">Authenticeren</string> - <string name="return_home_label">Terug naar de startscherm</string> - <string name="flattr_auth_success">Authenticatie is geslaagd! U kunt nu dingen vanuit de app Flattr\'en.</string> - <string name="no_flattr_token_title">Geen Flattr token gevonden</string> - <string name="no_flattr_token_notification_msg">Het lijkt er op dat uw Flattr account niet is verbonden met AntennaPod. Klik hier om te authenticeren.</string> - <string name="no_flattr_token_msg">Uw Flattr account lijkt niet aangesloten te zijn op AntennaPod. U kunt uw account aan AntennaPod sluiten om dingen vanuit de app te Flattr\'en, of u kunt op de website van het ding terecht om het daar te Flattr\'en.</string> + <string name="return_home_label">Terug naar startscherm</string> + <string name="flattr_auth_success">Authenticatie geslaagd! Je kunt nu dingen vanuit de app Flattr\'en.</string> + <string name="no_flattr_token_title">Geen Flattr-toegangssleutel gevonden</string> + <string name="no_flattr_token_notification_msg">Het lijkt er op dat je Flattr-account niet gekoppeld is aan AntennaPod. Druk hier om te authenticeren.</string> + <string name="no_flattr_token_msg">Je Flattr-account lijkt niet gekoppeld te zijn aan AntennaPod. Je kunt je account koppelen om dingen vanuit de app te Flattr\'en, of je kunt op de website van het ding terecht om het daar te Flattr\'en.</string> <string name="authenticate_now_label">Authenticeren</string> - <string name="action_forbidden_title">Actie verboden</string> - <string name="action_forbidden_msg">AntennaPod heeft geen toestemming voor deze actie. De reden hiervoor zou kunnen zijn dat de toegang token van AntennaPod voor uw account ingetrokken is. U kunt opnieuw authenticeren, of de website van het ding bezoeken.</string> + <string name="action_forbidden_title">Niet toegestaan</string> + <string name="action_forbidden_msg">AntennaPod heeft geen toestemming voor deze actie. De reden hiervoor zou kunnen zijn dat de toegangssleutel van AntennaPod voor je account is ingetrokken. Je kunt opnieuw authenticeren, of de website van het ding bezoeken.</string> <string name="access_revoked_title">Toegang ingetrokken</string> - <string name="access_revoked_info">U heeft met succes het toegangstoken van AntennaPod tot uw account ingetrokken. Om het proces te voltooien, moet u deze app uit de lijst van goedgekeurde applicaties in uw accountinstellingen op de Flattr website verwijderen.</string> + <string name="access_revoked_info">Je heb de toegangssleutel van AntennaPod tot je account ingetrokken. Om het proces te voltooien, moet je deze app verwijderen uit de lijst met goedgekeurde applicaties in je accountinstellingen op de Flattr-website.</string> <!--Flattr--> - <string name="flattr_click_success">Een ding geflattr\'d</string> + <string name="flattr_click_success">Een ding geflattr\'d!</string> <string name="flattr_click_success_count">%d dingen geflattr\'d!</string> <string name="flattr_click_success_queue">Geflattr\'d: %s.</string> - <string name="flattr_click_failure_count">Kon %d dingen niet flattr\'n!</string> + <string name="flattr_click_failure_count">Kan %d dingen niet flattr\'n!</string> <string name="flattr_click_failure">Niet geflattr\'d: %s.</string> <string name="flattr_click_enqueued">Ding wordt later geflattr\'d</string> - <string name="flattring_thing">%s aan het flattren</string> + <string name="flattring_thing">Bezig met flattr\'n van%s</string> <string name="flattring_label">AntennaPod is aan het flattren</string> <string name="flattrd_label">AntennaPod heeft geflattr\'d</string> - <string name="flattrd_failed_label">AntennaPod flattr niet gelukt</string> - <string name="flattr_retrieving_status">Geflattr\'de dingen aan het ontvangen</string> + <string name="flattrd_failed_label">AntennaPod-flattr mislukt</string> + <string name="flattr_retrieving_status">Bezig met ontvangen van geflattr\'de dingen</string> <!--Variable Speed--> - <string name="download_plugin_label">Plugin downloaden</string> - <string name="no_playback_plugin_title">Plugin niet geĆÆnstalleerd</string> - <string name="no_playback_plugin_or_sonic_msg">Om variabele afspeelsnelheid te kunnen gebruiken, raden wij u aan om de ingebouwde Sonic mediaspeler te activeren [Android 4.1+]\n\nEventueel kunt u de externe plugin <i>Prestissimo</i> downloaden van de Play Store.\nProblemen bij het gebruik van deze plugin zijn niet de verantwoordelijkheid van AntennaPod en moeten gemeld worden bij de ontwikkelaar van de plugin.</string> + <string name="download_plugin_label">Plug-in downloaden</string> + <string name="no_playback_plugin_title">Plug-in niet geĆÆnstalleerd</string> + <string name="no_playback_plugin_or_sonic_msg">Om variabele afspeelsnelheid te kunnen gebruiken, bevelen wij aan om de ingebouwde Sonic-mediaspeler te activeren [Android 4.1 en hoger]\n\nEvt. kun je de externe plug-in <i>Prestissimo</i> downloaden via de Play Store.\nWij zijn niet verantwoordelijk voor problemen met deze plug-in zijn; meld ze bij de plug-inontwikkelaar.</string> <string name="set_playback_speed_label">Afspeelsnelheden</string> <string name="enable_sonic">Sonic inschakelen</string> <!--Empty list labels--> - <string name="no_items_label">Er zijn geen items in deze lijst.</string> - <string name="no_feeds_label">U bent nog tot geen enkele feed geabonneerd.</string> - <string name="no_chapters_label">Deze aflevering heeft geen hoofdstukken.</string> - <string name="no_shownotes_label">Deze aflevering heeft geen shownotes.</string> + <string name="no_items_label">Er staan geen items op deze lijst.</string> + <string name="no_feeds_label">Je hebt nog geen abonnement op een podcast.</string> + <string name="no_chapters_label">Deze aflevering bevat geen hoofdstukken.</string> + <string name="no_shownotes_label">Deze aflevering bevat geen shownotities.</string> <!--Preferences--> - <string name="storage_pref">Geheugen</string> + <string name="storage_pref">Opslag</string> <string name="project_pref">Project</string> <string name="other_pref">Overig</string> <string name="about_pref">Over AntennaPod</string> <string name="queue_label">Wachtrij</string> - <string name="services_label">Services</string> + <string name="integrations_label">Integraties</string> <string name="flattr_label">Flattr</string> + <string name="flattr_summary">Dienst voor microbetalingen</string> + <string name="automation">Automatische acties</string> + <string name="download_pref_details">Details</string> + <string name="import_export_pref">Importeren/Exporteren</string> + <string name="appearance">Uiterlijk</string> + <string name="external_elements">Externe elementen</string> + <string name="interruptions">Onderbrekingen</string> + <string name="buttons">Knoppen voor afspeelbediening</string> + <string name="media_player">Mediaspeler</string> <string name="pref_episode_cleanup_title">Automatisch opschonen</string> - <string name="pref_episode_cleanup_summary">Afleveringen die niet in de wachtrij staan Ć©n niet als favoriet gemarkeerd zijn, mogen verwijderd worden als Automatisch Downloaden ruimte nodig heeft voor nieuwe afleveringen</string> - <string name="pref_pauseOnDisconnect_sum">Afspelen pauzeren wanneer de koptelefoon wordt losgekoppeld of de bluetooth verbinding wordt verbroken</string> - <string name="pref_unpauseOnHeadsetReconnect_sum">Afspelen hervatten wanneer de koptelefoon opnieuw wordt aangesloten</string> - <string name="pref_unpauseOnBluetoothReconnect_sum">Afspelen hervatten wanneer de bluetooth verbinding hervat wordt</string> - <string name="pref_hardwareForwardButtonSkips_title">\'Volgende\' knop voor overslaan</string> - <string name="pref_hardwareForwardButtonSkips_sum">Aflevering overslaan ipv vooruitspoelen wanneer op een fysieke \'volgende\' knop wordt gedrukt</string> - <string name="pref_hardwarePreviousButtonRestarts_title">Vorige voor opnieuw afspelen</string> - <string name="pref_hardwarePreviousButtonRestarts_sum">Aflevering afspelen vanaf het begin ipv terugspoelen wanneer op een fysieke \'vorige\' knop wordt gedrukt</string> + <string name="pref_episode_cleanup_summary">Afleveringen die niet op de wachtrij staan Ć©n geen favoriet zijn, mogen verwijderd worden als Automatisch downloaden ruimte nodig heeft voor nieuwe afleveringen</string> + <string name="pref_pauseOnDisconnect_sum">Afspelen pauzeren als de koptelefoon wordt losgekoppeld of de Bluetooth-verbinding wordt verbroken</string> + <string name="pref_unpauseOnHeadsetReconnect_sum">Afspelen hervatten als de koptelefoon opnieuw wordt aangesloten</string> + <string name="pref_unpauseOnBluetoothReconnect_sum">Afspelen hervatten als de Bluetooth-verbinding hervat wordt</string> + <string name="pref_hardwareForwardButtonSkips_title">\'Volgende\' voor overslaan</string> + <string name="pref_hardwarePreviousButtonRestarts_title">\'Vorige\' voor opnieuw afspelen</string> + <string name="pref_hardwarePreviousButtonRestarts_sum">Aflevering afspelen vanaf het begin i.p.v. terugspoelen als er op een fysieke \'vorige\'-knop wordt gedrukt</string> <string name="pref_followQueue_sum">Volgende item in de wachtrij afspelen als de aflevering voltooid is</string> <string name="pref_auto_delete_sum">Afleveringen verwijderen als ze zijn afgespeeld</string> <string name="pref_auto_delete_title">Automatisch verwijderen</string> - <string name="pref_smart_mark_as_played_sum">Afleveringen als afgespeeld markeren wanneer deze nog maar een bepaald aantal seconden duurt</string> - <string name="pref_smart_mark_as_played_title">Slimme afgespeeld markering</string> - <string name="pref_skip_keeps_episodes_sum">Afleveringen bewaren en in de wachtrij houden als u op \'overslaan\' klikt</string> + <string name="pref_smart_mark_as_played_sum">Afleveringen als afgespeeld markeren als deze nog maar een bepaald aantal seconden duren</string> + <string name="pref_smart_mark_as_played_title">Slimme afgespeeld-markering</string> + <string name="pref_skip_keeps_episodes_sum">Afleveringen bewaren als ze worden overgeslagen</string> <string name="pref_skip_keeps_episodes_title">Overgeslagen afleveringen bewaren</string> <string name="pref_favorite_keeps_episodes_sum">Afleveringen bewaren als ze als favoriet gemarkeerd zijn</string> <string name="pref_favorite_keeps_episodes_title">Favoriete afleveringen bewaren</string> <string name="playback_pref">Afspelen</string> <string name="network_pref">Netwerk</string> - <string name="pref_autoUpdateIntervallOrTime_title">Feed update interval of tijdstip</string> - <string name="pref_autoUpdateIntervallOrTime_sum">Specificeer een interval of tijdstip waarop feeds automatisch vernieuwd moeten worden</string> - <string name="pref_autoUpdateIntervallOrTime_message">U kunt een <i>interval</i> zoals \'elke twee uur\' of een specifiek <i>tijdstip</i> zoals \'07:00 uur\' instellen, of het automatisch verversen van feeds uitzetten.\n\n<small>Let op: tijdstippen voor updates zijn niet precies. Er kan een kleine vertraging plaatsvinden.</small></string> + <string name="pref_autoUpdateIntervallOrTime_title">Bijwerktussenpoos of -tijdstip</string> + <string name="pref_autoUpdateIntervallOrTime_sum">Geef een tussenpoos of tijdstip op waarop feeds automatisch ververst moeten worden</string> + <string name="pref_autoUpdateIntervallOrTime_message">Je kunt een <i>tussenpoos</i> zoals \'elke twee uur\' instellen, een specifiek <i>tijdstip</i> zoals \'07:00 uur\' of het automatisch verversen van feeds uitschakelen.\n\n<small>Let op: tijdstippen zijn niet precies; er kan een kleine vertraging zijn.</small></string> <string name="pref_autoUpdateIntervallOrTime_Disable">Uitschakelen</string> - <string name="pref_autoUpdateIntervallOrTime_Interval">Interval instellen</string> + <string name="pref_autoUpdateIntervallOrTime_Interval">Tussenpoos instellen</string> <string name="pref_autoUpdateIntervallOrTime_TimeOfDay">Tijdstip instellen</string> <string name="pref_autoUpdateIntervallOrTime_every">elke %1$s</string> - <string name="pref_autoUpdateIntervallOrTime_at">op %1$s</string> - <string name="pref_downloadMediaOnWifiOnly_sum">Download mediabestanden alleen via WiFi</string> - <string name="pref_followQueue_title">Continu afspelen</string> - <string name="pref_downloadMediaOnWifiOnly_title">WiFi download van media</string> - <string name="pref_pauseOnHeadsetDisconnect_title">Pauzeren bij loskoppeling</string> - <string name="pref_unpauseOnHeadsetReconnect_title">Aansluiten koptelefoon</string> - <string name="pref_unpauseOnBluetoothReconnect_title">Verbinden met bluetooth</string> - <string name="pref_mobileUpdate_title">Mobiele updates</string> - <string name="pref_mobileUpdate_sum">Updates toestaan āāvia de mobiele dataverbinding</string> - <string name="refreshing_label">Aan het verversen</string> - <string name="flattr_settings_label">Flattr settings</string> - <string name="pref_flattr_auth_title">Flattr accountgegevens</string> - <string name="pref_flattr_auth_sum">Log in je Flattr account om dingen rechtstreeks vanuit de app te flattr\'en.</string> + <string name="pref_autoUpdateIntervallOrTime_at">om %1$s</string> + <string name="pref_downloadMediaOnWifiOnly_sum">Mediabestanden alleen downloaden via Wi-Fi</string> + <string name="pref_followQueue_title">Doorlopend afspelen</string> + <string name="pref_downloadMediaOnWifiOnly_title">Media downloaden via Wi-Fi</string> + <string name="pref_pauseOnHeadsetDisconnect_title">Loskoppelen van hoofdtelefoon</string> + <string name="pref_unpauseOnHeadsetReconnect_title">Opnieuw aansluiten van hoofdtelefoon</string> + <string name="pref_unpauseOnBluetoothReconnect_title">Opnieuw verbinden met Bluetooth</string> + <string name="pref_mobileUpdate_title">Bijwerken via mobiel internet</string> + <string name="pref_mobileUpdate_sum">Bijwerken toestaan via mobiele internetverbinding</string> + <string name="refreshing_label">Bezig met verversen...</string> + <string name="flattr_settings_label">Flattr-instellingen</string> + <string name="pref_flattr_auth_title">Inloggen op Flattr</string> + <string name="pref_flattr_auth_sum">Log in op je Flattr-account om dingen vanuit de app te flattr\'en.</string> <string name="pref_flattr_this_app_title">Flattr deze app</string> - <string name="pref_flattr_this_app_sum">Ondersteun de ontwikkeling van AntennaPod door het te flattr\'en. Bedankt!</string> - <string name="pref_revokeAccess_title">Toegang intrekken</string> - <string name="pref_revokeAccess_sum">Trek de toegang van deze app in tot je Flattr account.</string> - <string name="pref_auto_flattr_title">Automatische Flattr</string> + <string name="pref_flattr_this_app_sum">Ondersteun de ontwikkeling van AntennaPod door te flattr\'en. Bedankt!</string> + <string name="pref_revokeAccess_title">Machtiging intrekken</string> + <string name="pref_revokeAccess_sum">Trek de machtiging van deze app in op je Flattr account.</string> + <string name="pref_auto_flattr_title">Automatisch flattr\'en</string> <string name="pref_auto_flattr_sum">Automatisch flattr\'en instellen</string> - <string name="user_interface_label">User Interface</string> - <string name="pref_set_theme_title">Kies kleurschema</string> - <string name="pref_nav_drawer_title">Menu aanpassen</string> - <string name="pref_nav_drawer_sum">Het uiterlijk en andere instellingen van het menu aanpassen.</string> - <string name="pref_nav_drawer_items_title">Menu-items instellen</string> - <string name="pref_nav_drawer_items_sum">Aanpassen welke items in het menu worden getoond</string> - <string name="pref_nav_drawer_feed_order_title">Feed volgorde instellen</string> - <string name="pref_nav_drawer_feed_order_sum">De volgorde van uw feeds instellen</string> + <string name="user_interface_label">Uiterlijk</string> + <string name="pref_set_theme_title">Thema kiezen</string> + <string name="pref_nav_drawer_title">Navigatiemenu aanpassen</string> + <string name="pref_nav_drawer_sum">Pas het uiterlijk van het navigatiemenu aan.</string> + <string name="pref_nav_drawer_items_title">Menu-items kiezen</string> + <string name="pref_nav_drawer_items_sum">Kies welke items moeten worden getoond in het navigatiemenu.</string> + <string name="pref_nav_drawer_feed_order_title">Abonnementsvolgorde instellen</string> + <string name="pref_nav_drawer_feed_order_sum">Stel de volgorde van je abonnementen in</string> <string name="pref_nav_drawer_feed_counter_title">Teller instellen</string> - <string name="pref_nav_drawer_feed_counter_sum">Pas aan welke aantallen in het menu worden getoond</string> - <string name="pref_set_theme_sum">Verander het uiterlijk van AntennaPod.</string> + <string name="pref_nav_drawer_feed_counter_sum">Wijzig de door de teller getoonde informatie. Is ook van toepassing op de sortering als \'Abonnementsvolgorde\' is ingesteld op \'Teller\'.</string> + <string name="pref_set_theme_sum">Pas het uiterlijk van AntennaPod aan.</string> <string name="pref_automatic_download_title">Automatisch downloaden</string> - <string name="pref_automatic_download_sum">Configureer het automatisch downloaden van afleveringen.</string> - <string name="pref_autodl_wifi_filter_title">Wi-Fi filter inschakelen</string> - <string name="pref_autodl_wifi_filter_sum">Automatisch downloaden alleen toestaan voor geselecteerde Wi-Fi-netwerken.</string> - <string name="pref_autodl_allow_on_mobile_title">Downloaden via mobiele verbinding</string> - <string name="pref_autodl_allow_on_mobile_sum">Het automatisch downloaden van afleveringen via een mobiele internetverbinding toestaan.</string> - <string name="pref_automatic_download_on_battery_title">Downloaden zonder opladen</string> + <string name="pref_automatic_download_sum">Stel het automatisch downloaden van afleveringen in.</string> + <string name="pref_autodl_wifi_filter_title">Wi-Fi-filter inschakelen</string> + <string name="pref_autodl_wifi_filter_sum">Automatisch downloaden alleen toestaan via gekozen Wi-Fi-netwerken.</string> + <string name="pref_autodl_allow_on_mobile_title">Downloaden via mobiel internet</string> + <string name="pref_autodl_allow_on_mobile_sum">Automatisch downloaden toestaan via een mobiele internetverbinding.</string> + <string name="pref_automatic_download_on_battery_title">Downloaden als het apparaat niet wordt opgeladen</string> <string name="pref_automatic_download_on_battery_sum">Downloaden toestaan als het apparaat niet wordt opgeladen</string> <string name="pref_parallel_downloads_title">Gelijktijdige downloads</string> - <string name="pref_episode_cache_title">Afleveringen cache</string> + <string name="pref_episode_cache_title">Afleveringscache</string> <string name="pref_theme_title_light">Licht</string> <string name="pref_theme_title_dark">Donker</string> + <string name="pref_theme_title_trueblack">Zwart (geschikt voor AMOLED)</string> <string name="pref_episode_cache_unlimited">Onbeperkt</string> <string name="pref_update_interval_hours_plural">uur</string> <string name="pref_update_interval_hours_singular">uur</string> <string name="pref_update_interval_hours_manual">Handmatig</string> <string name="pref_gpodnet_authenticate_title">Inloggen</string> - <string name="pref_gpodnet_authenticate_sum">Log in met je gpodder.net account om je abonnementen te synchroniseren.</string> - <string name="pref_gpodnet_logout_title">Log uit</string> - <string name="pref_gpodnet_logout_toast">Uitlog was succesvol</string> - <string name="pref_gpodnet_setlogin_information_title">Aanmeldingsgegevens wijzigen</string> - <string name="pref_gpodnet_setlogin_information_sum">Wijzig de aanmeldingsgegevens van je gpodder.net account.</string> + <string name="pref_gpodnet_authenticate_sum">Log in met je gpodder.net-account om je abonnementen te synchroniseren.</string> + <string name="pref_gpodnet_logout_title">Uitloggen</string> + <string name="pref_gpodnet_logout_toast">Uitgelogd</string> + <string name="pref_gpodnet_setlogin_information_title">Inloggegevens wijzigen</string> + <string name="pref_gpodnet_setlogin_information_sum">Wijzig de inloggegevens van je gpodder.net-account.</string> <string name="pref_gpodnet_sync_changes_title">Wijzigingen nu synchroniseren</string> - <string name="pref_gpodnet_sync_changes_sum">Synchroniseer veranderde abonnementen en aflevering-statussen met gpodder.net</string> + <string name="pref_gpodnet_sync_changes_sum">Synchroniseer gewijzigde abonnementen en afleveringsstatussen met gpodder.net.</string> <string name="pref_gpodnet_full_sync_title">Nu alles synchroniseren</string> - <string name="pref_gpodnet_full_sync_sum">Synchroniseer alle abonnementen en aflevering-statussen met gpodder.net</string> - <string name="pref_gpodnet_sync_sum_last_sync_line">Laatste synchronisatie: %1$s (%2$s)</string> + <string name="pref_gpodnet_full_sync_sum">Synchroniseer alle abonnementen en afleveringsstatussen met gpodder.net.</string> + <string name="pref_gpodnet_sync_sum_last_sync_line">Vorige synchronisatie: %1$s (%2$s)</string> <string name="pref_gpodnet_sync_started">Synchroniseren gestart</string> <string name="pref_gpodnet_full_sync_started">Volledige synchronisatie gestart</string> <string name="pref_gpodnet_login_status"><![CDATA[Ingelogd als <i>%1$s</i> met apparaat <i>%2$s</i>]]></string> - <string name="pref_gpodnet_notifications_title">Toon synchronisatiefouten in melding</string> + <string name="pref_gpodnet_notifications_title">Melding tonen bij synchronisatiefouten</string> <string name="pref_gpodnet_notifications_sum">Deze instelling is niet van toepassing op inlogfouten.</string> <string name="pref_playback_speed_title">Afspeelsnelheden</string> - <string name="pref_playback_speed_sum">Pas de beschikbare snelheden aan voor de variabele audio afspeelsnelheid</string> + <string name="pref_playback_speed_sum">Pas de beschikbare snelheden aan voor de variabele audio-afspeelsnelheid</string> <string name="pref_fast_forward">Snelheid van vooruitspoelen</string> - <string name="pref_fast_forward_sum">Pas het aantal seconden aan waarmee wordt vooruitgespoeld per klik op de knop</string> - <string name="pref_rewind">Snelheid terugspoelen</string> - <string name="pref_rewind_sum">Pas het aantal seconden aan waarmee wordt teruggespoeld per klik op de knop</string> - <string name="pref_gpodnet_sethostname_title">Definieer hostname</string> - <string name="pref_gpodnet_sethostname_use_default_host">Gebruik standaard host</string> - <string name="pref_expandNotify_title">Bedienen via melding</string> - <string name="pref_expandNotify_sum">Altijd de bedieningsknoppen tonen bij de melding in het notificatiecentrum.</string> - <string name="pref_persistNotify_title">Behoud bedieningsknoppen</string> - <string name="pref_persistNotify_sum">Ook bedieningsknoppen in het notificatiecentrum en op het vergrendelingsscherm behouden als het afspelen gepauzeerd wordt.</string> + <string name="pref_fast_forward_sum">Pas het aantal seconden aan waarmee wordt vooruitgespoeld per druk op de knop</string> + <string name="pref_rewind">Snelheid van terugspoelen</string> + <string name="pref_rewind_sum">Pas het aantal seconden aan waarmee wordt teruggespoeld per druk op de knop</string> + <string name="pref_gpodnet_sethostname_title">Hostnaam instellen</string> + <string name="pref_gpodnet_sethostname_use_default_host">Standaardhost gebruiken</string> + <string name="pref_persistNotify_title">Bedieningsknoppen behouden</string> + <string name="pref_persistNotify_sum">Ook bedieningsknoppen op het meldings- en vergrendelscherm behouden als het afspelen gepauzeerd wordt.</string> <string name="pref_compact_notification_buttons_title">Bedieningsknoppen vergrendelscherm</string> - <string name="pref_compact_notification_buttons_sum">Bedieningsknopppen voor op het vergrendelscherm kiezen. De play/pauze knop wordt altijd getoond.</string> - <string name="pref_compact_notification_buttons_dialog_title">Selecteer maximaal %1$d knoppen.</string> - <string name="pref_compact_notification_buttons_dialog_error">U kunt slechts maximaal %1$d knoppen selecteren.</string> + <string name="pref_compact_notification_buttons_sum">Kies de bedieningsknoppen voor het vergrendelscherm. De knop afspelen/pauzeren wordt altijd getoond.</string> + <string name="pref_compact_notification_buttons_dialog_title">Kies maximaal %1$d knoppen</string> + <string name="pref_compact_notification_buttons_dialog_error">Je kunt maximaal %1$d knoppen kiezen.</string> <string name="pref_lockscreen_background_title">Achtergrondafbeelding vergrendelscherm</string> - <string name="pref_lockscreen_background_sum">Laat de afbeelding van de huidige aflevering zien op het vergrendelscherm. Ten gevolge van deze functie is de afbeelding ook beschikbaar voor andere apps.</string> - <string name="pref_showDownloadReport_title">Laat downloadrapport zien</string> - <string name="pref_showDownloadReport_sum">Genereer een rapport met fout-details als downloads mislukken</string> - <string name="pref_expand_notify_unsupport_toast">Android versies lager dan 4.1 ondersteunen geen knoppen in het notificatiecentrum.</string> + <string name="pref_lockscreen_background_sum">Toon de afbeelding van de huidige aflevering op het vergrendelscherm. Hierdoor is de afbeelding ook beschikbaar voor andere apps.</string> + <string name="pref_showDownloadReport_title">Downloadrapportage tonen</string> + <string name="pref_showDownloadReport_sum">Genereer een rapport met foutdetails als downloads mislukken.</string> + <string name="pref_expand_notify_unsupport_toast">Android-versies lager dan 4.1 ondersteunen geen knoppen op meldingen.</string> <string name="pref_queueAddToFront_sum">Nieuwe afleveringen aan het begin van de wachtrij toevoegen.</string> <string name="pref_queueAddToFront_title">Bovenaan wachtrij toevoegen</string> <string name="pref_smart_mark_as_played_disabled">Uitgeschakeld</string> - <string name="pref_image_cache_size_title">Grootte cachegeheugen</string> - <string name="pref_image_cache_size_sum">De groote van het cachegeheugen voor afbeeldingen aanpassen.</string> - <string name="crash_report_title">Crashreport</string> - <string name="crash_report_sum">Verstuur laatste crashreport via email</string> - <string name="send_email">Verstuur email</string> - <string name="experimental_pref">Experimentele functie(s)</string> - <string name="pref_sonic_title">Sonic mediaspeler</string> - <string name="pref_sonic_message">Gebruik AntennaPod\'s ingebouwde Sonic mediaspeler als een alternatief voor Prestissimo en de mediaspeler van Android.</string> + <string name="pref_image_cache_size_title">Grootte van afbeeldingscache</string> + <string name="pref_image_cache_size_sum">Pas de grootte aan van het cachegeheugen voor afbeeldingen.</string> + <string name="crash_report_title">Crashrapportage</string> + <string name="crash_report_sum">Verstuur laatste crashrapportage via e-mail</string> + <string name="send_email">E-mail versturen</string> + <string name="experimental_pref">Experimenteel</string> + <string name="pref_media_player_message">Kies welke mediaspeler gebruikt moet worden voor het afspelen van bestanden</string> <string name="pref_current_value">Huidige instelling: %1$s</string> <string name="pref_proxy_title">Proxy</string> <string name="pref_proxy_sum">Netwerkproxy instellen</string> - <string name="pref_faq">FAQ - veelgestelde vragen</string> - <string name="pref_known_issues">Reeds bekende bugs</string> - <string name="pref_no_browser_found">Geen browser gevonden</string> - <string name="pref_cast_title">Chromecast</string> - <string name="pref_cast_message_play_flavor">Ondersteuning activeren voor draadloos afspelen via Cast apparaten (zoals Chromecast, Audio speakers en Android TV)</string> - <string name="pref_cast_message_free_flavor">Voor Chromecast is software van derden vereist die niet beschikbaar zijn in deze versie van AntennaPod</string> + <string name="pref_faq">Veelgestelde vragen</string> + <string name="pref_known_issues">Bekende problemen</string> + <string name="pref_no_browser_found">Geen browser aangetroffen.</string> + <string name="pref_cast_title">Chromecast-ondersteuning</string> + <string name="pref_cast_message_play_flavor">Ondersteuning activeren voor draadloos afspelen via Cast-apparaten (zoals Chromecast, luidsprekers of Android TV)</string> + <string name="pref_cast_message_free_flavor">Voor Chromecast is software van derden vereist die niet beschikbaar is in deze versie van AntennaPod</string> <string name="pref_enqueue_downloaded_title">Gedownloade afleveringen in wachtrij</string> <string name="pref_enqueue_downloaded_summary">Voeg gedownloade afleveringen toe aan de wachtrij</string> + <string name="media_player_builtin">Ingebouwde Android-speler</string> + <string name="pref_videoBehavior_title">Bij verlaten van video</string> + <string name="pref_videoBehavior_sum">Wat te doen bij het verlaten van een spelende video</string> + <string name="stop_playback">Afspelen stoppen</string> + <string name="continue_playback">Audio af blijven spelen</string> <!--Auto-Flattr dialog--> - <string name="auto_flattr_enable">Automatisch flattr\'en aanzetten</string> - <string name="auto_flattr_after_percent">Flattr een aflevering zodra %d procent is afgespeeld</string> - <string name="auto_flattr_ater_beginning">Flattr de aflevering bij afspelen</string> - <string name="auto_flattr_ater_end">Flattr aflevering als afspelen is gestopt</string> + <string name="auto_flattr_enable">Automatisch flattr\'en inschakelen</string> + <string name="auto_flattr_after_percent">Flattr een aflevering zodra deze %d procent is afgespeeld</string> + <string name="auto_flattr_ater_beginning">Flattr de aflevering als het afspelen begint</string> + <string name="auto_flattr_ater_end">Flattr de aflevering als afspelen is gestopt</string> <!--Search--> <string name="search_hint">Zoeken naar afleveringen</string> - <string name="found_in_shownotes_label">Gevonden in de shownotes</string> + <string name="found_in_shownotes_label">Gevonden in de shownotities</string> <string name="found_in_chapters_label">Gevonden in de hoofdstukken</string> - <string name="found_in_authors_label">Gevonden in de makers</string> - <string name="found_in_feeds_label">Gevonden in de feeds</string> + <string name="found_in_authors_label">Gevonden bij de maker(s)</string> + <string name="found_in_feeds_label">Gevonden in de podcast</string> <string name="search_status_no_results">Er zijn geen resultaten gevonden</string> <string name="search_label">Zoeken</string> <string name="found_in_title_label">Gevonden in de titel</string> <string name="no_results_for_query">Geen resultaten gevonden voor \"%1$s\"</string> <!--OPML import and export--> - <string name="opml_import_txtv_button_lable">Met OPML-bestanden kan je podcasts van de ene naar de andere podcatcher verplaatsen.</string> + <string name="opml_import_txtv_button_lable">Met OPML-bestanden kun je podcasts van de ene naar de andere podcatcher verplaatsen.</string> <string name="opml_import_option">Optie %1$d</string> - <string name="opml_import_explanation_1">Kies een bestand van een specifieke locatie via bestandsbeheer.</string> - <string name="opml_import_explanation_2">Kies een OPML bestand via een andere app, zoals Dropbox en Google Drive, of via uw bestandsbeheerder.</string> - <string name="opml_import_explanation_3">Ga naar een OPML bestand in apps zoals GMail, Dropbox en Google Drive om het met AntennaPod te openen.</string> - <string name="start_import_label">Start importeren</string> + <string name="opml_import_explanation_1">Kies een bestand via de bestandsbeheer.</string> + <string name="opml_import_explanation_2">Kies een OPML-bestand via een andere app, zoals Dropbox of Google Drive, of via je bestandsbeheerder.</string> + <string name="opml_import_explanation_3">Apps as Gmail, Dropbox, Google Drive en de meeste bestandsbeheerders kunnen OPML-bestanden <i>openen</i> <i>met</i> AntennaPod.</string> + <string name="start_import_label">Importeren starten</string> <string name="opml_import_label">OPML importeren</string> <string name="opml_directory_error">FOUT!</string> - <string name="reading_opml_label">OPML-bestand aan het lezen</string> - <string name="opml_reader_error">Er is iets misgegaan met het lezen van het OPML-bestand:</string> - <string name="opml_import_error_no_file">Geen bestand geselecteerd!</string> + <string name="reading_opml_label">Bezig met uitlezen van OPML-bestand...</string> + <string name="opml_reader_error">Er is iets misgegaan tijdens het lezen van het OPML-bestand:</string> + <string name="opml_import_error_no_file">Geen bestand gekozen!</string> <string name="select_all_label">Alles selecteren</string> - <string name="deselect_all_label">Alles deselecteren</string> - <string name="select_options_label">Selecterenā¦</string> + <string name="deselect_all_label">Alles de-selecteren</string> + <string name="select_options_label">Selecteren...</string> <string name="choose_file_from_filesystem">Via bestandsbeheer</string> <string name="choose_file_from_external_application">Via externe app</string> - <string name="opml_export_label">OPML export</string> - <string name="html_export_label">HTML export</string> - <string name="exporting_label">Exporterenā¦</string> - <string name="export_error_label">Export fout</string> - <string name="opml_export_success_title">OPML bestand succesvol geĆ«xporteerd.</string> - <string name="opml_export_success_sum"> Het OPML-bestand is in \u0020 geplaatst</string> + <string name="opml_export_label">OPML exporteren</string> + <string name="html_export_label">HTML exporteren</string> + <string name="exporting_label">Bezig met exporteren...</string> + <string name="export_error_label">Exportfout</string> + <string name="export_success_title">GeĆ«xporteerd</string> + <string name="export_success_sum">Het geĆ«xporteerde bestand is opgeslagen in:\n\n%1$s</string> <string name="opml_import_ask_read_permission">Toegang tot externe locaties is nodig om het OPML-bestand te kunnen lezen</string> <!--Sleep timer--> - <string name="set_sleeptimer_label">Slaap timer instellen</string> - <string name="disable_sleeptimer_label">Slaap timer uitschakelen</string> - <string name="enter_time_here_label">Voer tijd in</string> - <string name="sleep_timer_label">Slaap timer</string> + <string name="set_sleeptimer_label">Slaaptimer instellen</string> + <string name="disable_sleeptimer_label">Slaaptimer uitschakelen</string> + <string name="enter_time_here_label">Voer een tijd in</string> + <string name="sleep_timer_label">Slaaptimer</string> <string name="time_left_label">Resterende tijd:\u0020</string> - <string name="time_dialog_invalid_input">Ongeldige invoer, de tijd moet een geheel getal zijn</string> + <string name="time_dialog_invalid_input">Ongeldige invoer; de tijd moet een geheel getal zijn</string> <string name="timer_about_to_expire_label"><b>Als de timer bijna afloopt:</b></string> <string name="shake_to_reset_label">Schudden om opnieuw in te stellen</string> <string name="timer_vibration_label">Trillen</string> @@ -480,65 +506,65 @@ <item quantity="other">%d uur</item> </plurals> <string name="auto_enable_label">Automatisch inschakelen</string> - <string name="sleep_timer_enabled_label">Slaap timer ingeschakeld</string> - <string name="sleep_timer_disabled_label">Slaap timer uitgeschakeld</string> + <string name="sleep_timer_enabled_label">Slaaptimer ingeschakeld</string> + <string name="sleep_timer_disabled_label">Slaaptimer uitgeschakeld</string> <!--gpodder.net--> <string name="gpodnet_taglist_header">CATEGORIEĆN</string> - <string name="gpodnet_toplist_header">TOP PODCASTS</string> + <string name="gpodnet_toplist_header">POPULAIRE PODCASTS</string> <string name="gpodnet_suggestions_header">SUGGESTIES</string> - <string name="gpodnet_search_hint">Zoek gpodder.net</string> - <string name="gpodnetauth_login_title">Log in</string> - <string name="gpodnetauth_login_descr">Welkom bij het inlogproces van gpodder.net. Typ eerst je accountgegevens:</string> - <string name="gpodnetauth_login_butLabel">Log in</string> - <string name="gpodnetauth_login_register">Als u nog geen account heeft, kunt u er hier een aanmaken:\nhttps://gpodder.net/register/</string> + <string name="gpodnet_search_hint">gpodder.net doorzoeken</string> + <string name="gpodnetauth_login_title">Inloggen</string> + <string name="gpodnetauth_login_descr">Welkom bij het inlogproces van gpodder.net. Typ eerst je inloggegevens:</string> + <string name="gpodnetauth_login_butLabel">Inloggen</string> + <string name="gpodnetauth_login_register">Als je nog geen account hebt, dan kun je je hier registreren:\nhttps://gpodder.net/register/</string> <string name="username_label">Gebruikersnaam</string> <string name="password_label">Wachtwoord</string> - <string name="gpodnetauth_device_title">Apparaatselectie</string> - <string name="gpodnetauth_device_descr">Maak een nieuw apparaat aan om voor je gpodder.net account te gebruiken of kies een bestaande:</string> - <string name="gpodnetauth_device_deviceID">Device ID:\u0020</string> - <string name="gpodnetauth_device_caption">Apparaatnaam</string> - <string name="gpodnetauth_device_butCreateNewDevice">Maak een nieuw apparaat aan</string> - <string name="gpodnetauth_device_chooseExistingDevice">Kies een bestaand apparaat:</string> - <string name="gpodnetauth_device_errorEmpty">Apparaat ID mag niet leeg zijn</string> - <string name="gpodnetauth_device_errorAlreadyUsed">Apparaat ID al in gebruik</string> - <string name="gpodnetauth_device_caption_errorEmpty">Apparaatomschrijving kan niet leeg zijn</string> - <string name="gpodnetauth_device_butChoose">Kies</string> - <string name="gpodnetauth_finish_title">Login succesvol</string> - <string name="gpodnetauth_finish_descr">Gefeliciteerd! Jou gpodder.net account is nu verbonden met je apparaat. AntennaPod zal voortaan abonnementen op je apparaat automatisch met je gpodder.net account synchroniseren.</string> - <string name="gpodnetauth_finish_butsyncnow">Synchronisatie nu starten</string> + <string name="gpodnetauth_device_title">Apparaatkeuze</string> + <string name="gpodnetauth_device_descr">CreĆ«er een nieuw apparaat voor je gpodder.net-account of kies een bestaand:</string> + <string name="gpodnetauth_device_deviceID">Apparaat-ID:\u0020</string> + <string name="gpodnetauth_device_caption">Omschrijving</string> + <string name="gpodnetauth_device_butCreateNewDevice">Nieuw apparaat creĆ«ren</string> + <string name="gpodnetauth_device_chooseExistingDevice">Bestaand apparaat kiezen:</string> + <string name="gpodnetauth_device_errorEmpty">Apparaat-ID mag niet blanco zijn</string> + <string name="gpodnetauth_device_errorAlreadyUsed">Apparaat-ID wordt al gebruikt</string> + <string name="gpodnetauth_device_caption_errorEmpty">Apparaatomschrijving mag niet blanco zijn</string> + <string name="gpodnetauth_device_butChoose">Kiezen</string> + <string name="gpodnetauth_finish_title">Ingelogd!</string> + <string name="gpodnetauth_finish_descr">Gefeliciteerd! Je gpodder.net-account is nu gekoppeld aan je apparaat. AntennaPod zal voortaan abonnementen automatisch synchroniseren met je gpodder.net-account.</string> + <string name="gpodnetauth_finish_butsyncnow">Nu synchroniseren</string> <string name="gpodnetauth_finish_butgomainscreen">Terug naar hoofdscherm</string> - <string name="gpodnetsync_auth_error_title">gpodder.net authenticatie fout</string> - <string name="gpodnetsync_auth_error_descr">Ongeldig gebruikersnaam of wachtwoord</string> - <string name="gpodnetsync_error_title">gpodder.net synchronisatie fout</string> + <string name="gpodnetsync_auth_error_title">gpodder.net - authenticatiefout</string> + <string name="gpodnetsync_auth_error_descr">Onjuiste gebruikersnaam of wachtwoord</string> + <string name="gpodnetsync_error_title">gpodder.net - synchronisatiefout</string> <string name="gpodnetsync_error_descr">Er is een fout opgetreden tijdens het synchroniseren:\u0020</string> - <string name="gpodnetsync_pref_report_successful">Succesvol</string> - <string name="gpodnetsync_pref_report_failed">Gefaald</string> + <string name="gpodnetsync_pref_report_successful">Voltooid</string> + <string name="gpodnetsync_pref_report_failed">Mislukt</string> <!--Directory chooser--> - <string name="selected_folder_label">Geselecteerde map:</string> - <string name="create_folder_label">Map aanmaken</string> - <string name="choose_data_directory">Kies data map</string> - <string name="choose_data_directory_message">Kies de hoofdmap voor uw data. AntennaPod zal de benodigde submappen creeĆ«ren.</string> - <string name="choose_data_directory_permission_rationale">Toegang tot de externe opslag is nodig om de data-map aan te passen</string> - <string name="create_folder_msg">Maak een nieuwe map aan met de naam \"%1$s\"?</string> - <string name="create_folder_success">Nieuwe map aangemaakt</string> - <string name="create_folder_error_no_write_access">Kan in deze map niet schrijven</string> + <string name="selected_folder_label">Gekozen map:</string> + <string name="create_folder_label">Map creĆ«ren</string> + <string name="choose_data_directory">Kies de gegevensmap</string> + <string name="choose_data_directory_message">Kies de hoofdmap voor je gegevens. AntennaPod zal de benodigde submappen creĆ«ren.</string> + <string name="choose_data_directory_permission_rationale">Toegang tot externe opslag is nodig om de gegevensmap te wijzigen</string> + <string name="create_folder_msg">Wil je een nieuwe map creĆ«ren met de naam \"%1$s\"?</string> + <string name="create_folder_success">Nieuwe map gecreĆ«erd</string> + <string name="create_folder_error_no_write_access">Kan niet schrijven naar map</string> <string name="create_folder_error_already_exists">Map bestaat al</string> - <string name="create_folder_error">Kon map niet aanmaken</string> + <string name="create_folder_error">Kan map niet creĆ«ren</string> <string name="folder_does_not_exist_error">\"%1$s\" bestaat niet</string> - <string name="folder_not_readable_error">\"%1$s\" kan niet gelezen worden</string> - <string name="folder_not_writable_error">in \"%1$s\" kan geen data geschreven worden</string> + <string name="folder_not_readable_error">\"%1$s\" kan niet worden uitgelezen</string> + <string name="folder_not_writable_error">Kan niet wegschrijven naar \"%1$s\"</string> <string name="folder_not_empty_dialog_title">Map is niet leeg</string> - <string name="folder_not_empty_dialog_msg">De map die u heeft gekozen is niet leeg. Gedownloade media en andere bestanden zullen rechtstreeks in deze map geplaatst worden. Toch doorgaan?</string> - <string name="set_to_default_folder">Kies default map</string> - <string name="pref_pausePlaybackForFocusLoss_sum">Het afspelen onderbreken in plaats van het volume te verlagen wanneer er een andere app geluiden af wil spelen</string> + <string name="folder_not_empty_dialog_msg">De map die je hebt gekozen is niet leeg. Gedownloade media en andere bestanden worden rechtstreeks in deze map geplaatst. Wil je toch doorgaan?</string> + <string name="set_to_default_folder">Standaardmap kiezen</string> + <string name="pref_pausePlaybackForFocusLoss_sum">Het afspelen onderbreken in plaats van het volume te verlagen als een andere app geluiden wil afspelen</string> <string name="pref_pausePlaybackForFocusLoss_title">Pauzeren bij onderbrekingen</string> - <string name="pref_resumeAfterCall_sum">Afspelen hervatten na beĆ«indigen telefoongesprek</string> + <string name="pref_resumeAfterCall_sum">Afspelen hervatten na beĆ«indigen van telefoongesprek</string> <string name="pref_resumeAfterCall_title">Hervatten na gesprek</string> - <string name="pref_restart_required">AntennaPod moet opnieuw worden opgestart om deze wijziging door te voeren.</string> + <string name="pref_restart_required">AntennaPod moet opnieuw worden gestart om deze wijziging toe te passen.</string> <!--Online feed view--> <string name="subscribe_label">Abonneren</string> <string name="subscribed_label">Geabonneerd</string> - <string name="downloading_label">Downloadenā¦</string> + <string name="downloading_label">Bezig met downloaden...</string> <!--Content descriptions for image buttons--> <string name="rewind_label">Terugspoelen</string> <string name="fast_forward_label">Vooruitspoelen</string> @@ -546,45 +572,45 @@ <string name="media_type_video_label">Video</string> <string name="navigate_upwards_label">Navigeer naar boven</string> <string name="status_downloading_label">Aflevering wordt gedownload</string> - <string name="in_queue_label">Aflevering is in de queue</string> - <string name="drag_handle_content_description">Item verslepen om het te verplaatsen</string> + <string name="in_queue_label">Aflevering staat in de wachtrij</string> + <string name="drag_handle_content_description">Versleep dit item om de positie te veranderen</string> <string name="load_next_page_label">Volgende pagina laden</string> <!--Feed information screen--> <string name="authentication_label">Authenticatie</string> - <string name="authentication_descr">Gebruikersnaam en wachtwoord aanpassen voor deze podcast</string> + <string name="authentication_descr">Gebruikersnaam en wachtwoord wijzigen voor deze podcast en bijbehorende afleveringen.</string> <string name="auto_download_settings_label">Instellingen voor Automatisch downloaden</string> - <string name="episode_filters_label">Afleveringenfilter</string> + <string name="episode_filters_label">Afleveringsfilter</string> <string name="episode_filters_description">Lijst van zoektermen die bepalen of een aflevering meegenomen of uitgesloten wordt bij automatisch downloaden</string> <string name="episode_filters_include">Meenemen</string> <string name="episode_filters_exclude">Uitsluiten</string> <string name="episode_filters_hint">Losse woorden \n\"Meerdere tussen aanhalingstekens\"</string> - <string name="keep_updated">Up to date houden</string> + <string name="keep_updated">Bijgewerkt houden</string> <!--Progress information--> - <string name="progress_upgrading_database">Database upgraden</string> + <string name="progress_upgrading_database">Bezig met upgraden van databank...</string> <!--AntennaPodSP--> - <string name="sp_apps_importing_feeds_msg">Abonnementen aan het importeren vanuit single-purpose apps...</string> - <string name="search_itunes_label">Zoeken in iTunes</string> + <string name="sp_apps_importing_feeds_msg">Bezig met importeren van abonnementen uit eenmalige apps...</string> + <string name="search_itunes_label">iTunes doorzoeken</string> <string name="filter">Filter</string> <string name="search_fyyd_label">Fyyd doorzoeken</string> <!--Episodes apply actions--> <string name="all_label">Alle</string> - <string name="selected_all_label">Alle afleveringen selecteren</string> + <string name="selected_all_label">Alle afleveringen geselecteerd</string> <string name="none_label">Geen</string> - <string name="deselected_all_label">Alle afleveringen deselecteren</string> + <string name="deselected_all_label">Alle afleveringen gede-selecteerd</string> <string name="played_label">Afgespeeld</string> - <string name="selected_played_label">Alle afgespeelde afleveringen selecteren</string> + <string name="selected_played_label">Alle afgespeelde afleveringen geselecteerd</string> <string name="unplayed_label">Niet afgespeeld</string> - <string name="selected_unplayed_label">Niet afgespeelde afleveringen geselecteerd</string> + <string name="selected_unplayed_label">Niet-afgespeelde afleveringen geselecteerd</string> <string name="downloaded_label">Gedownload</string> - <string name="selected_downloaded_label">Gedownloadde afleveringen geselecteerd</string> + <string name="selected_downloaded_label">Gedownloade afleveringen geselecteerd</string> <string name="not_downloaded_label">Niet gedownload</string> - <string name="selected_not_downloaded_label">Niet gedownloadde afleveringen geselecteerd</string> + <string name="selected_not_downloaded_label">Niet-gedownloade afleveringen geselecteerd</string> <string name="queued_label">In de wachtrij</string> - <string name="selected_queued_label">Afleveringen in de wachtrij selecteren</string> + <string name="selected_queued_label">Afleveringen in de wachtrij geselecteerd</string> <string name="not_queued_label">Niet in de wachtrij</string> <string name="selected_not_queued_label">Afleveringen geselecteerd die niet in de wachtrij staan</string> <string name="has_media">Bevat media</string> - <string name="selected_has_media_label">Geselecteerde afleveringen met media</string> + <string name="selected_has_media_label">Afleveringen met media geselecteerd</string> <!--Sort--> <string name="sort_title_a_z">Titel (A \u2192 Z)</string> <string name="sort_title_z_a">Titel (A \u2192 A)</string> @@ -593,9 +619,9 @@ <string name="sort_duration_short_long">Lengte (kort \u2192 lang)</string> <string name="sort_duration_long_short">Lengte (lang \u2192 kort)</string> <!--Rating dialog--> - <string name="rating_title">Wat vind u van AntennaPod?</string> - <string name="rating_message">We zouden het op prijs stellen als u even de tijd kunt nemen om AntennaPod te beoordelen.</string> - <string name="rating_never_label">Nee, bedankt.</string> + <string name="rating_title">Wat vind je van AntennaPod?</string> + <string name="rating_message">We stellen het op prijs als je even de tijd neemt om AntennaPod te beoordelen.</string> + <string name="rating_never_label">Nee, bedankt</string> <string name="rating_later_label">Herinner me later</string> <string name="rating_now_label">Ja, doen we!</string> <!--Audio controls--> @@ -604,43 +630,52 @@ <string name="volume">Volume</string> <string name="left_short">L</string> <string name="right_short">R</string> - <string name="audio_effects">Terugmixen</string> + <string name="audio_effects">Audio-effecten</string> <string name="stereo_to_mono">Stereo terugmixen tot monogeluid op beide kanalen</string> <string name="sonic_only">Sonic vereist</string> <!--proxy settings--> <string name="proxy_type_label">Type</string> <string name="host_label">Host</string> <string name="port_label">Poort</string> - <string name="optional_hint">(Optioneel)</string> + <string name="optional_hint">(optioneel)</string> <string name="proxy_test_label">Testen</string> - <string name="proxy_checking">Controlerenā¦</string> - <string name="proxy_test_successful">Test succesvol</string> + <string name="proxy_checking">Bezig met controleren...</string> + <string name="proxy_test_successful">Test geslaagd</string> <string name="proxy_test_failed">Test mislukt</string> - <string name="proxy_host_empty_error">Host kan niet leeg zijn</string> - <string name="proxy_host_invalid_error">Host is geen geldig IP-adres of domein</string> - <string name="proxy_port_invalid_error">Poortnummer ongeldig</string> + <string name="proxy_host_empty_error">Host mag niet blanco zijn</string> + <string name="proxy_host_invalid_error">Host is geen geldig IP-adres of domeinnaam</string> + <string name="proxy_port_invalid_error">Ongeldig poortnummer</string> <!--Database import/export--> - <string name="import_export">Database im-/exporteren</string> - <string name="import_export_warning">Hiermee kun je de podcasts waarop je geabonneerd bent en de afgespeelde afleveringen naar een ander apparaat kopiĆ«ren\n\nGeĆ«xporteerde databases kunnen alleen geĆÆmporteerd worden in dezelfde versie van AntennaPod (zie \'Over AntennaPod\' in de instellingen). Het importeren naar een andere versie kan onverwachte problemen opleveren.\n\nNa het importeren kunnen afleveringen als \'gedownload\' aangemerkt zijn, terwijl dit niet het geval is. Druk op de afspeelknop naast de afleveringen om AntennaPod dit te laten detecteren.</string> + <string name="import_export">Databank im-/exporteren</string> + <string name="import_export_warning">Met deze experimentele functie kun je je abonnementen en afgespeelde afleveringen overzetten naar een ander apparaat.\n\nGeĆ«xporteerde databanken kunnen alleen worden geĆÆmporteerd in dezelfde versie van AntennaPod, anders kunnen zich problemen voordoen.\n\nNa het importeren kunnen afleveringen als \'gedownload\' aangemerkt zijn, terwijl dit niet het geval is. Druk op de afspeelknop om AntennaPod dit te laten detecteren.</string> <string name="label_import">Importeren</string> <string name="label_export">Exporteren</string> - <string name="import_select_file">Selecteer bestand om te importeren</string> - <string name="export_ok">Succesvol geĆ«xporteerd. De database is naar de SD-kaart geschreven.</string> - <string name="import_ok">Succesvol geĆÆmporteerd\n\nDruk op OK om AntennaPod te herstarten.</string> + <string name="import_select_file">Kies een te importeren bestand</string> + <string name="export_ok">Export voltooid.</string> + <string name="import_ok">GeĆÆmporteerd.\n\nDruk op OkĆ© om AntennaPod opnieuw te starten.</string> <!--Casting--> <string name="cast_media_route_menu_title">Afspelen opā¦</string> - <string name="cast_disconnect_label">Cast loskoppelen</string> - <string name="cast_not_castable">Dit bestand kan niet afgespeeld woorden door het Cast apparaat</string> - <string name="cast_failed_to_play">Starten van afspelen is mislukt</string> - <string name="cast_failed_to_stop">Stoppen van afspelen is mislukt</string> - <string name="cast_failed_to_pause">Pauzeren van afspelen is mislukt</string> + <string name="cast_disconnect_label">Cast-verbinding verbreken</string> + <string name="cast_not_castable">De geselecteerde media is niet compatibel met het cast-apparaat</string> + <string name="cast_failed_to_play">Afspelen mislukt</string> + <string name="cast_failed_to_stop">Stoppen mislukt</string> + <string name="cast_failed_to_pause">Pauzeren mislukt</string> <!--<string name="cast_failed_to_connect">Could not connect to the device</string>--> - <string name="cast_failed_setting_volume">Het aanpassen van het volume is mislukt</string> - <string name="cast_failed_no_connection">Er is geen verbinding met het Cast apparaat</string> - <string name="cast_failed_no_connection_trans">De verbinding met het Cast apparaat is verloren. Antennapod probeert de verbinding te herstellen. Wacht aub een paar seconden en probeer opnieuw.</string> - <string name="cast_failed_perform_action">Het uitvoeren van de actie is mislukt</string> - <string name="cast_failed_status_request">Het synchroniseren met het Cast apparaat is mislukt</string> - <string name="cast_failed_seek">Het opzoeken van het nieuwe tijdstip op het Cast apparaat is mislukt</string> - <string name="cast_failed_receiver_player_error">Ernstige fout opgetreden bij het afspelende Cast apparaat</string> - <string name="cast_failed_media_error_skipping">Er was een fout bij het afspelen; de aflevering wordt overgeslagenā¦</string> + <string name="cast_failed_setting_volume">Volume aanpassen mislukt</string> + <string name="cast_failed_no_connection">Er is geen verbinding met het Cast-apparaat</string> + <string name="cast_failed_no_connection_trans">De verbinding met het Cast-apparaat is verbroken; Antennapod probeert de verbinding te herstellen. Wacht een paar seconden en probeer het opnieuw.</string> + <string name="cast_failed_perform_action">Actie kan niet worden uitgevoerd</string> + <string name="cast_failed_status_request">Synchroniseren met Cast-apparaat mislukt</string> + <string name="cast_failed_seek">Opzoeken van nieuwe positie op Cast-apparaat mislukt</string> + <string name="cast_failed_receiver_player_error">Ernstige fout opgetreden op het afspelende Cast-apparaat</string> + <string name="cast_failed_media_error_skipping">Kan media niet afspelen. Bezig met overslaan...</string> + <!--Notification channels--> + <string name="notification_channel_user_action">Actie vereist</string> + <string name="notification_channel_user_action_description">Tonen als een actie vereist is, bijvoorbeeld als je een wachtwoord moet invoeren.</string> + <string name="notification_channel_downloading">Bezig met downloaden...</string> + <string name="notification_channel_downloading_description">Tonen als er iets wordt gedownload.</string> + <string name="notification_channel_playing">Nu aan het afspelen</string> + <string name="notification_channel_playing_description">Hiermee kun je het afspelen bedienen. Dit is de voornaamste melding tijdens het afspelen van een podcast.</string> + <string name="notification_channel_error">Foutmeldingen</string> + <string name="notification_channel_error_description">Tonen als er iets is misgegaan, bijvoorbeeld als downloaden of synchroniseren mislukt is.</string> </resources> diff --git a/core/src/main/res/values-no-rNB/strings.xml b/core/src/main/res/values-no-rNB/strings.xml index 2e3b9bd53..de0892b73 100644 --- a/core/src/main/res/values-no-rNB/strings.xml +++ b/core/src/main/res/values-no-rNB/strings.xml @@ -54,7 +54,6 @@ <string name="yes">Ja</string> <string name="no">Nei</string> <string name="reset">Tilbakestill</string> - <string name="author_label">Opphavsperson</string> <string name="language_label">SprĆ„k</string> <string name="url_label">URL</string> <string name="podcast_settings_label">Innstillinger</string> @@ -102,25 +101,13 @@ <string name="mark_all_read_label">Marker alle som avspilt</string> <string name="mark_all_read_msg">Marker alle episoder som avspilt</string> <string name="mark_all_read_confirmation_msg">Vennligst bekreft at du Ćønsker Ć„ markere alle episoder som avspilt.</string> - <string name="mark_all_read_feed_confirmation_msg">Vennligst bekreft at du Ćønsker Ć„ markere alle episoder i denne strĆømmen som avspilt.</string> <string name="mark_all_seen_label">Marker alle som sett</string> - <string name="mark_all_seen_msg">Marker alle episoder som sett</string> <string name="mark_all_seen_confirmation_msg">Vennligst bekreft at du Ćønsker Ć„ markere alle episoder som sett.</string> <string name="show_info_label">Vis informasjon</string> - <string name="rename_feed_label">Endre navn pĆ„ podcast</string> - <string name="remove_feed_label">Fjern podcast</string> <string name="share_label">Del ...</string> - <string name="share_link_label">Del lenke</string> <string name="share_file_label">Del fil</string> - <string name="share_link_with_position_label">Del lenke med plassering</string> <string name="share_feed_url_label">Del strĆømmens URL</string> - <string name="share_item_url_label">Del episodens URL</string> - <string name="share_item_url_with_position_label">Del episodens URL med posisjon</string> - <string name="feed_delete_confirmation_msg">Vennligst bekreft at du Ćønsker Ć„ slette strĆømmen \"%1$s\" og alle episoder fra denne strĆømmen som du har lastet ned.</string> - <string name="feed_remover_msg">Fjerner strĆøm</string> - <string name="load_complete_feed">Oppdater hele strĆømmen</string> <string name="hide_episodes_title">Skjul episoder</string> - <string name="episode_actions">Lagre handlinger</string> <string name="hide_unplayed_episodes_label">Ikke avspilt</string> <string name="hide_paused_episodes_label">Pauset</string> <string name="hide_played_episodes_label">Avspilt</string> @@ -227,7 +214,6 @@ <string name="date">PĆ„ dato</string> <string name="duration">PĆ„ varighet</string> <string name="episode_title">Episodetittel</string> - <string name="feed_title">StrĆømtittel</string> <string name="ascending">Ćkende</string> <string name="descending">Synkende</string> <string name="clear_queue_confirmation_msg">Vennligst bekreft at du Ćønsker Ć„ slette ALLE elementer i kĆøen</string> @@ -264,7 +250,6 @@ <string name="enable_sonic">Skru pĆ„ Sonic</string> <!--Empty list labels--> <string name="no_items_label">Det er ingen objekter pĆ„ denne listen.</string> - <string name="no_feeds_label">Du abonnerer ikke pĆ„ noen strĆømmer enda.</string> <string name="no_chapters_label">Denne episoden har ingen kapitler.</string> <string name="no_shownotes_label">Denne episoden har ingen shownotater</string> <!--Preferences--> @@ -273,13 +258,11 @@ <string name="other_pref">Annet</string> <string name="about_pref">Om</string> <string name="queue_label">Queue</string> - <string name="services_label">Tjenester</string> <string name="flattr_label">Flattr</string> <string name="pref_episode_cleanup_title">Episodeopprydding</string> <string name="pref_pauseOnDisconnect_sum">Sett playback pĆ„ pause nĆ„r hodetelefoner eller bluetooth er frakoblet</string> <string name="pref_unpauseOnHeadsetReconnect_sum">Gjenoppta avspilling nĆ„r hodetelefoner gjeninnkoples</string> <string name="pref_unpauseOnBluetoothReconnect_sum">Fortsett avspilling nĆ„r bluetooth er tilkoblet igjen</string> - <string name="pref_hardwareForwardButtonSkips_sum">Ved pressing av hardware forover-knapp hopp til neste episode istedenfor forover-spoling</string> <string name="pref_hardwarePreviousButtonRestarts_title">Forriv</string> <string name="pref_followQueue_sum">Hopp til neste element i kĆøen nĆ„r avspillingen er ferdig</string> <string name="pref_auto_delete_sum">Slett episode nĆ„r avspillingen er ferdig</string> @@ -327,7 +310,6 @@ <string name="pref_nav_drawer_feed_order_title">Velg rekkefĆølge pĆ„ abbonement</string> <string name="pref_nav_drawer_feed_order_sum">Endre rekkefĆølgen pĆ„ abbonementene dine</string> <string name="pref_nav_drawer_feed_counter_title">Velg abbonementsteller</string> - <string name="pref_nav_drawer_feed_counter_sum">Endre informasjonen vist av abonnementstelleren</string> <string name="pref_set_theme_sum">Endre utseendet til AntennaPod</string> <string name="pref_automatic_download_title">Automatisk nedlasting</string> <string name="pref_automatic_download_sum">Konfigurer automatisk nedlasting av episoder.</string> @@ -362,8 +344,6 @@ <string name="pref_playback_speed_sum">Egendefiner hastighetene tilgjengelig for variabel avspillingshastighet</string> <string name="pref_gpodnet_sethostname_title">Sett vertsnavn</string> <string name="pref_gpodnet_sethostname_use_default_host">Bruk standard vert</string> - <string name="pref_expandNotify_title">Utvid varsel</string> - <string name="pref_expandNotify_sum">Utvider alltid varselet for Ć„ inkludere avspillingsknapper.</string> <string name="pref_persistNotify_title">Vedvarende avspillingskontroller</string> <string name="pref_persistNotify_sum">Behold varsel- og lĆ„seskjermkontroller nĆ„r avspilling er satt pĆ„ pause.</string> <string name="pref_compact_notification_buttons_title">Velg lĆ„seskjermsknapper</string> @@ -381,8 +361,6 @@ <string name="crash_report_sum">Send den siste krƦsj-rapporten via e-post</string> <string name="send_email">Send e-post</string> <string name="experimental_pref">Eksperimentell</string> - <string name="pref_sonic_title">Sonic mediaspiller</string> - <string name="pref_sonic_message">Bruk innebygd Sonic mediaspiller som en erstatning for Androids mediaspiller og Prestissimo</string> <string name="pref_faq">FAQ</string> <string name="pref_known_issues">Kjente problemer</string> <string name="pref_no_browser_found">Ingen nettleser funnet.</string> @@ -421,8 +399,6 @@ <string name="html_export_label">HTML eksport</string> <string name="exporting_label">Eksporterer...</string> <string name="export_error_label">Eksporteringserror</string> - <string name="opml_export_success_title">OPML-import vellykket.</string> - <string name="opml_export_success_sum">.opml-filen ble skrevet til:\u0020</string> <string name="opml_import_ask_read_permission">Tilgang til ekstern lagring er nĆødvendig for Ć„ lese OPML filen</string> <!--Sleep timer--> <string name="set_sleeptimer_label">Sett opp sovetimer</string> @@ -592,4 +568,5 @@ <string name="cast_failed_to_stop">Feilter Ć„ stoppe avspillingen av media</string> <string name="cast_failed_to_pause">Feilet Ć„ pause avspillingen av media</string> <!--<string name="cast_failed_to_connect">Could not connect to the device</string>--> + <!--Notification channels--> </resources> diff --git a/core/src/main/res/values-no/strings.xml b/core/src/main/res/values-no/strings.xml index acf3abe75..2d9481b84 100644 --- a/core/src/main/res/values-no/strings.xml +++ b/core/src/main/res/values-no/strings.xml @@ -36,4 +36,5 @@ <!--Database import/export--> <!--Casting--> <!--<string name="cast_failed_to_connect">Could not connect to the device</string>--> + <!--Notification channels--> </resources> diff --git a/core/src/main/res/values-pl-rPL/strings.xml b/core/src/main/res/values-pl-rPL/strings.xml index 4839ef60c..d77236577 100644 --- a/core/src/main/res/values-pl-rPL/strings.xml +++ b/core/src/main/res/values-pl-rPL/strings.xml @@ -22,6 +22,7 @@ <string name="free_space_label">%1$s wolnego miejsca</string> <string name="episode_cache_full_title">PeÅna pamiÄÄ cache</string> <string name="episode_cache_full_message">Limit pamiÄci cache zostaÅ osiÄ
gniÄty. Możesz zwiÄkszyÄ pojemnoÅÄ cache w ustawieniach aplikacji.</string> + <string name="synchronizing">Synchronizowanie...</string> <!--Statistics fragment--> <string name="total_time_listened_to_podcasts">CaÅkowity czas trwania podcastĆ³w:</string> <string name="statistics_details_dialog">%1$d z %2$d odcinkĆ³w rozpoczÄto.\n\nZagrano %3$s z %4$s.</string> @@ -56,7 +57,6 @@ <string name="yes">Tak</string> <string name="no">Nie</string> <string name="reset">Reset</string> - <string name="author_label">Autor</string> <string name="language_label">JÄzyk</string> <string name="url_label">URL</string> <string name="podcast_settings_label">Ustawienia</string> @@ -107,24 +107,13 @@ <string name="mark_all_read_label">Oznacz wszystkie jako odtworzone</string> <string name="mark_all_read_msg">Wszystkie odcinki zaznaczono jako odtworzone</string> <string name="mark_all_read_confirmation_msg">ProszÄ potwierdziÄ, że chcesz zaznaczyÄ wszystkie odcinki do odtworzenia.</string> - <string name="mark_all_read_feed_confirmation_msg">ProszÄ potwierdziÄ, że chcesz zaznaczyÄ wszystkie odcinki na tym kanale do odtworzenia.</string> <string name="mark_all_seen_label">Oznacz wszystkie jako widziane</string> - <string name="mark_all_seen_msg">Zaznacz wszystkie Odcinki jako obejrzane</string> <string name="mark_all_seen_confirmation_msg">ProszÄ potwierdziÄ chÄÄ zaznaczenia wszystkich odcinkĆ³w jako obejrzanych.</string> <string name="show_info_label">Pokaż informacje</string> - <string name="rename_feed_label">ZmieÅ nazwÄ podcast-u</string> - <string name="remove_feed_label">UsuÅ podcast</string> <string name="share_label">UdostÄpnij...</string> - <string name="share_link_label">UdostÄpnij stronÄ</string> - <string name="share_link_with_position_label">UdostÄpnij link z aktualnÄ
pozycjÄ
</string> + <string name="share_file_label">UdostÄpnij plik</string> <string name="share_feed_url_label">UdostÄpnij adres kanaÅu</string> - <string name="share_item_url_label">UdostÄpnij plik URL odcinka</string> - <string name="share_item_url_with_position_label">UdostÄpnik plik URL odcinka z pozycjÄ
</string> - <string name="feed_delete_confirmation_msg">PotwierdÅŗ chÄÄ usuniÄcia kanaÅu \"%1$s\" wraz ze WSZYSTKIMI odcinkami, ktĆ³re zostaÅy pobrane.</string> - <string name="feed_remover_msg">Usuwanie kanaÅu</string> - <string name="load_complete_feed">OdÅwież caÅy kanaÅ</string> <string name="hide_episodes_title">Ukryj odcinki</string> - <string name="episode_actions">ZatwierdÅŗ czynnoÅci</string> <string name="hide_unplayed_episodes_label">Nieodtworzone</string> <string name="hide_paused_episodes_label">Zatrzymane</string> <string name="hide_played_episodes_label">Odtworzone</string> @@ -144,6 +133,7 @@ <string name="stream_label">StrumieÅ</string> <string name="remove_label">UsuÅ</string> <string name="delete_label">UsuÅ</string> + <string name="delete_failed">Nie można usunÄ
Ä pliku. Restart urzÄ
dzenia może w tym pomĆ³c.</string> <string name="remove_episode_lable">UsuÅ odcinek</string> <string name="marked_as_seen_label">Zaznaczono jako wyÅwietlone</string> <string name="mark_read_label">Oznacz jako odtworzone</string> @@ -168,6 +158,9 @@ <string name="download_failed">Operacja nie powiodÅa siÄ</string> <string name="download_pending">Pobieranie w toku</string> <string name="download_running">Pobieram</string> + <string name="download_error_details">SzczegĆ³Åy</string> + <string name="download_error_details_message">%1$s \n\nAdres pliku:\n%2$s +</string> <string name="download_error_device_not_found">Nie znaleziono urzÄ
dzenia docelowego</string> <string name="download_error_insufficient_space">NiewystarczajÄ
ca iloÅÄ pamiÄci</string> <string name="download_error_file_error">BÅÄ
d pliku</string> @@ -236,7 +229,6 @@ <string name="date">WedÅug daty</string> <string name="duration">WedÅug dÅugoÅci</string> <string name="episode_title">TytuÅ odcinka</string> - <string name="feed_title">TytuÅ kanaÅu</string> <string name="ascending">RosnÄ
co</string> <string name="descending">MalejÄ
co</string> <string name="clear_queue_confirmation_msg">PotwierdÅŗ usuniÄcie WSZYSTKICH pozycji z kolejki</string> @@ -274,7 +266,6 @@ <string name="enable_sonic">WÅÄ
cz Sonic</string> <!--Empty list labels--> <string name="no_items_label">Brak elementĆ³w na tej liÅcie.</string> - <string name="no_feeds_label">Nie subskrybowaÅeÅ jeszcze żadnego kanaÅu.</string> <string name="no_chapters_label">Ten odcinek nie ma rozdziaÅĆ³w.</string> <string name="no_shownotes_label">Ten epizod nie ma notatek.</string> <!--Preferences--> @@ -283,7 +274,6 @@ <string name="other_pref">Inne</string> <string name="about_pref">O...</string> <string name="queue_label">Kolejka</string> - <string name="services_label">UsÅugi</string> <string name="flattr_label">Flattr</string> <string name="pref_episode_cleanup_title">Usuwanie odcinkĆ³w</string> <string name="pref_episode_cleanup_summary">Odcinki niebÄdÄ
ce w kolejce i niebÄdÄ
ce na liÅcie ulubiobych powinny nadawaÄ siÄ do usuniÄcia, jeÅli Automatyczne Pobieranie potrzebuje miejsca na nowe odcinki.</string> @@ -291,7 +281,6 @@ <string name="pref_unpauseOnHeadsetReconnect_sum">WznĆ³w odtwarzanie kiedy sÅuchawki zostanÄ
podÅÄ
czone ponownie</string> <string name="pref_unpauseOnBluetoothReconnect_sum">WznĆ³w odtwarzanie po przywrĆ³ceniu poÅÄ
czenia Bluetooth</string> <string name="pref_hardwareForwardButtonSkips_title">Przycisk \'Do przodu\' pomija odcinek</string> - <string name="pref_hardwareForwardButtonSkips_sum">PrzyciÅniÄcie fizycznego przycisku \'Do przodu\' przeskakuje do nastÄpnego odcinka zamiast przewijania</string> <string name="pref_hardwarePreviousButtonRestarts_title">Przycisk wstecz restartuje</string> <string name="pref_hardwarePreviousButtonRestarts_sum">Podczas odtwarzania przycisk wstecz restartuje zamiast przewijaÄ</string> <string name="pref_followQueue_sum">Przeskocz do nastÄpnego elementu kolejki po zakoÅczeniu odtwarzania</string> @@ -301,6 +290,8 @@ <string name="pref_smart_mark_as_played_title">Inteligentnie oznacz jako odtworzone</string> <string name="pref_skip_keeps_episodes_sum">Zachowuje pominiÄte odcinki w kolejce</string> <string name="pref_skip_keeps_episodes_title">Zachowaj pominiÄte odcinki</string> + <string name="pref_favorite_keeps_episodes_sum">Zachowaj odcinki gdy sÄ
oznaczone jako Ulubione</string> + <string name="pref_favorite_keeps_episodes_title">Zachowaj Ulubione Odcinki</string> <string name="playback_pref">Odtwarzanie</string> <string name="network_pref">SieÄ</string> <string name="pref_autoUpdateIntervallOrTime_title">CzÄstotliwoÅÄ aktualizacji lub Czas dnia</string> @@ -338,12 +329,13 @@ <string name="pref_nav_drawer_feed_order_title">Ustaw kolejnoÅÄ subskrypcji</string> <string name="pref_nav_drawer_feed_order_sum">ZmieÅ kolejnoÅÄ subskrybowanych kanaÅĆ³w</string> <string name="pref_nav_drawer_feed_counter_title">Ustaw licznik subskrypcji</string> - <string name="pref_nav_drawer_feed_counter_sum">ZmieÅ informacjÄ wyÅwietlanÄ
przez licznik subskrypcji</string> <string name="pref_set_theme_sum">ZmieÅ wyglÄ
d AntennaPod.</string> <string name="pref_automatic_download_title">Automatyczne pobieranie</string> <string name="pref_automatic_download_sum">Skonfiguruj automatyczne pobieranie odcinkĆ³w.</string> <string name="pref_autodl_wifi_filter_title">WÅÄ
cz filtr Wi-Fi</string> <string name="pref_autodl_wifi_filter_sum">ZezwĆ³l na automatyczne pobieranie tylko dla okreÅlonych sieci Wi-Fi.</string> + <string name="pref_autodl_allow_on_mobile_title">Pobierz przy użyciu komĆ³rkowego transferu danych</string> + <string name="pref_autodl_allow_on_mobile_sum">ZezwĆ³l na automatyczne pobieranie przy użyciu komĆ³rkowego transferu danych</string> <string name="pref_automatic_download_on_battery_title">Pobieraj, gdy nie Åaduje</string> <string name="pref_automatic_download_on_battery_sum">ZezwĆ³l na automatyczne pobieranie, gdy bateria nie jest Åadowana.</string> <string name="pref_parallel_downloads_title">Liczba rĆ³wnolegÅych pobieraÅ</string> @@ -378,8 +370,6 @@ <string name="pref_rewind_sum">Dostosuj liczbÄ sekund do przeskoczenia przy klikniÄciu przewijania do tyÅu</string> <string name="pref_gpodnet_sethostname_title">Ustaw nazwÄ hosta</string> <string name="pref_gpodnet_sethostname_use_default_host">Użyj domyÅlnego hosta</string> - <string name="pref_expandNotify_title">RozwiÅ Powiadomienia</string> - <string name="pref_expandNotify_sum">Zawsze rozwijaj powiadomienie żeby pokazaÄ przyciski odtwarzacza.</string> <string name="pref_persistNotify_title">StaÅe przyciski odtwarzacza</string> <string name="pref_persistNotify_sum">Utrzymuj powiadomienie i przyciski odtwarzania na ekranie blokady gdy odtwarzanie jest wstrzymane.</string> <string name="pref_compact_notification_buttons_title">Ustaw przyciski ekranu blokowania</string> @@ -400,8 +390,6 @@ <string name="crash_report_sum">WyÅlij ostatni raport o bÅÄdach przez e-mail</string> <string name="send_email">WyÅlij e-mail</string> <string name="experimental_pref">Eksperymentalne</string> - <string name="pref_sonic_title">Odtwarzacz mediĆ³w Sonic</string> - <string name="pref_sonic_message">Użyj wbudowanego odtwarzacza Sonic jako oprogramowanie zastÄpcze do natywnego odtwarzacza Android i Prestissimo</string> <string name="pref_current_value">Aktualna wartoÅÄ: %1$s</string> <string name="pref_proxy_title">Proxy</string> <string name="pref_proxy_sum">Ustaw proxy sieciowe</string> @@ -411,6 +399,7 @@ <string name="pref_cast_title">ObsÅuga Chromecast</string> <string name="pref_cast_message_play_flavor">Uruchom obsÅugÄ dla zdalnego odtwarzania mediĆ³w na innych urzÄ
dzeniach (takich jak Chromecast, Audio Speakers albo Android TV)</string> <string name="pref_cast_message_free_flavor">Chromecast wymagadodatkowych bibliotek, ktĆ³re sÄ
zablokowane w tej wersji AntennaPod</string> + <string name="pref_enqueue_downloaded_title">Rzeczy z kolejki pobrane</string> <string name="pref_enqueue_downloaded_summary">Dodaj pobrane odcinki do kolejki</string> <!--Auto-Flattr dialog--> <string name="auto_flattr_enable">WÅÄ
cz automatyczne wspieranie na flattr.</string> @@ -421,8 +410,6 @@ <string name="search_hint">Szukaj odcinkĆ³w</string> <string name="found_in_shownotes_label">Znalezione w notatkach dotyczÄ
cych show</string> <string name="found_in_chapters_label">Znaleziono w rozdziaÅach</string> - <string name="found_in_authors_label">Znaleziono wÅrĆ³d autorĆ³w</string> - <string name="found_in_feeds_label">Znaleziono wÅrĆ³d kanaÅĆ³w</string> <string name="search_status_no_results">Brak wynikĆ³w</string> <string name="search_label">Szukaj</string> <string name="found_in_title_label">Znaleziono w tytuÅach</string> @@ -448,8 +435,8 @@ <string name="html_export_label">Eksport HTML</string> <string name="exporting_label">Eksportowanie...</string> <string name="export_error_label">BÅÄ
d eksportu</string> - <string name="opml_export_success_title">Eksport OPML udany.</string> - <string name="opml_export_success_sum">Plik .opml zostaÅ zapisany do:\u0020</string> + <string name="export_success_title">Export zakoÅczony powodzeniem</string> + <string name="export_success_sum">Wyeksportowany plik zostaÅ zapisany w:\n\n %1$s</string> <string name="opml_import_ask_read_permission">DostÄp do zewnÄtrznej pamiÄci jest potrzebny do odczytywania plikĆ³w OPML</string> <!--Sleep timer--> <string name="set_sleeptimer_label">Ustaw czas do wyÅÄ
czenia</string> @@ -624,6 +611,13 @@ https://gpodder.net/register/</string> <string name="proxy_host_invalid_error">Host nie jest prawidÅowym adresem IP albo domenÄ
</string> <string name="proxy_port_invalid_error">BÅÄdny port</string> <!--Database import/export--> + <string name="import_export">Import/Export bazy danych</string> + <string name="import_export_warning">Ta eksperymentalna funkcja może zostaÄ użyta do przeniesienia Twoich subskrypcji i już obejrzanych odcinkĆ³w na inne urzÄ
dzenie.\n\n Wyeksportowana baza może zostaÄ zaimportowana jedynie takÄ
samÄ
wersjÄ
programu AntennaPod. W innym przypadku może to spowodowaÄ nieprzewidziane zachowanie programu.\n\n Po zaimportowaniu, odcinki mogÄ
byÄ pokazane jako pobrane pomimo tego iż nie zostaÅy pobrane. Wystarczy kliknÄ
Ä odtwĆ³rz odcinek aby AntennaPod wykryÅ poprawny stan pliku.</string> + <string name="label_import">Import</string> + <string name="label_export">Export</string> + <string name="import_select_file">Wybierz plik do Importowania</string> + <string name="export_ok">Export zakoÅczony powodzeniem</string> + <string name="import_ok">Import zakoÅczony powodzeniem.\n\nNaciÅnij OK aby zrestartowaÄ AntennaPod</string> <!--Casting--> <string name="cast_media_route_menu_title">Odtwarzaj na...</string> <string name="cast_disconnect_label">RozÅÄ
cz sesjÄ</string> @@ -640,4 +634,5 @@ https://gpodder.net/register/</string> <string name="cast_failed_seek">WystÄ
piÅ bÅÄ
d podczas szukania nowej pozycji na urzÄ
dzeniu nadajÄ
cym.</string> <string name="cast_failed_receiver_player_error">UrzÄ
dzenie odbierajÄ
ce napotkaÅo poważny problem</string> <string name="cast_failed_media_error_skipping">BÅÄ
d podczas odtwarzania, pomijanie...</string> + <!--Notification channels--> </resources> diff --git a/core/src/main/res/values-pl/strings.xml b/core/src/main/res/values-pl/strings.xml index 097417900..6a640a0ee 100644 --- a/core/src/main/res/values-pl/strings.xml +++ b/core/src/main/res/values-pl/strings.xml @@ -67,7 +67,6 @@ <!--Empty list labels--> <!--Preferences--> <string name="queue_label">Kolejka</string> - <string name="services_label">UsÅugi</string> <string name="pref_downloadMediaOnWifiOnly_sum">Pobieraj pliki tylko przez WiFi</string> <string name="refreshing_label">OdÅwieżanie</string> <string name="user_interface_label">Interfejs Użytkownika</string> @@ -97,4 +96,5 @@ <!--Database import/export--> <!--Casting--> <!--<string name="cast_failed_to_connect">Could not connect to the device</string>--> + <!--Notification channels--> </resources> diff --git a/core/src/main/res/values-pt-rBR/strings.xml b/core/src/main/res/values-pt-rBR/strings.xml index fc8633b1f..57ec3573c 100644 --- a/core/src/main/res/values-pt-rBR/strings.xml +++ b/core/src/main/res/values-pt-rBR/strings.xml @@ -1,6 +1,7 @@ <?xml version='1.0' encoding='UTF-8'?> <resources xmlns:tools="http://schemas.android.com/tools"> <!--Activitiy and fragment titles--> + <string name="feed_update_receiver_name">Atualizar Assinaturas</string> <string name="feeds_label">Feeds</string> <string name="statistics_label">EstatĆsticas</string> <string name="add_feed_label">Adicionar Podcast</string> @@ -56,7 +57,6 @@ <string name="yes">Sim</string> <string name="no">NĆ£o</string> <string name="reset">Resetar</string> - <string name="author_label">Autor</string> <string name="language_label">Idioma</string> <string name="url_label">URL</string> <string name="podcast_settings_label">ConfiguraƧƵes</string> @@ -105,24 +105,12 @@ <string name="mark_all_read_label">Marcar todos como reproduzidos</string> <string name="mark_all_read_msg">Marcar todos EpisĆ³dios como reproduzidos</string> <string name="mark_all_read_confirmation_msg">Por favor, confirme que vocĆŖ deseja marcar todos os episĆ³dios como jĆ” reproduzidos.</string> - <string name="mark_all_read_feed_confirmation_msg">Por favor confirme se vocĆŖ deseja marcar todos os episĆ³dios deste feed como jĆ” reproduzidos.</string> <string name="mark_all_seen_label">Marcar todos como vistos</string> - <string name="mark_all_seen_msg">Todos os episĆ³dios marcados como vistos</string> <string name="mark_all_seen_confirmation_msg">Confirme se deseja marcar todos os episĆ³dios como vistos.</string> <string name="show_info_label">Mostrar informaĆ§Ć£o</string> - <string name="rename_feed_label">Renomear o Podcast</string> - <string name="remove_feed_label">Remover Podcast</string> <string name="share_label">Compartilhar...</string> - <string name="share_link_label">Compartilhar Link</string> - <string name="share_link_with_position_label">Compartilhar Link com posiĆ§Ć£o</string> <string name="share_feed_url_label">Compartilhar Link do Feed</string> - <string name="share_item_url_label">Compartilhar URL do arquivo do episĆ³dio</string> - <string name="share_item_url_with_position_label">Compartilhar URL do arquivo do episĆ³dio com posiĆ§Ć£o</string> - <string name="feed_delete_confirmation_msg">Confirme se deseja deletar o feed \"%1$s\" e todos os episĆ³dios baixados desse feed.</string> - <string name="feed_remover_msg">Removendo feed</string> - <string name="load_complete_feed">Atualizar feed completamente</string> <string name="hide_episodes_title">Ocultar EpisĆ³dios</string> - <string name="episode_actions">Aplicar aƧƵes</string> <string name="hide_unplayed_episodes_label">NĆ£o reproduzido</string> <string name="hide_paused_episodes_label">Pausado</string> <string name="hide_played_episodes_label">Reproduzido</string> @@ -232,7 +220,6 @@ <string name="date">Data</string> <string name="duration">DuraĆ§Ć£o</string> <string name="episode_title">Titulo do Episodio</string> - <string name="feed_title">Titulo do Feed</string> <string name="ascending">Crescente</string> <string name="descending">Decrescente</string> <string name="clear_queue_confirmation_msg">Por favor confirme que vocĆŖ deseja limpar TODOS episĆ³dios da fila</string> @@ -270,7 +257,6 @@ <string name="enable_sonic">Habilitar Sonic</string> <!--Empty list labels--> <string name="no_items_label">NĆ£o existem itens nesta lista.</string> - <string name="no_feeds_label">VocĆŖ ainda nĆ£o assinou nenhum feed.</string> <string name="no_chapters_label">Este episĆ³dio nĆ£o possui capĆtulos</string> <string name="no_shownotes_label">Este episĆ³dio nĆ£o possui notas.</string> <!--Preferences--> @@ -279,7 +265,6 @@ <string name="other_pref">Outros</string> <string name="about_pref">Sobre</string> <string name="queue_label">Fila</string> - <string name="services_label">ServiƧos</string> <string name="flattr_label">Flattr</string> <string name="pref_episode_cleanup_title">Limpar EpisĆ³dio</string> <string name="pref_episode_cleanup_summary">EpisĆ³dios que nĆ£o estĆ£o na fila e nĆ£o estĆ£o nos favoritos podem ser removidos se o Download AutomĆ”tico precisar de espaƧo para novos episĆ³dios</string> @@ -287,7 +272,6 @@ <string name="pref_unpauseOnHeadsetReconnect_sum">Continuar a reproduĆ§Ć£o quando os fones de ouvido forem reconectados</string> <string name="pref_unpauseOnBluetoothReconnect_sum">Continuar a reproduĆ§Ć£o quando o bluetooth reconectar</string> <string name="pref_hardwareForwardButtonSkips_title">BotĆ£o avanƧar pula</string> - <string name="pref_hardwareForwardButtonSkips_sum">Quando pressionar um botĆ£o fĆsico, avanƧar para o prĆ³ximo episĆ³dio ao invĆ©s de avanƧar a reproduĆ§Ć£o</string> <string name="pref_hardwarePreviousButtonRestarts_title">BotĆ£o anterior reinicia</string> <string name="pref_hardwarePreviousButtonRestarts_sum">Reinicia a reproduĆ§Ć£o atual ao pressionar o botĆ£o fĆsico anterior ao invĆ©s de retroceder</string> <string name="pref_followQueue_sum">Pular para prĆ³ximo item da fila quando a reproduĆ§Ć£o terminar</string> @@ -333,8 +317,7 @@ <string name="pref_nav_drawer_items_sum">Escolher quais itens irĆ£o aparecer na gaveta de navegaĆ§Ć£o.</string> <string name="pref_nav_drawer_feed_order_title">Configurar Ordem de Assinaturas</string> <string name="pref_nav_drawer_feed_order_sum">Mudar a ordem de suas assinaturas</string> - <string name="pref_nav_drawer_feed_counter_title">Configurar um contador de assinaturas</string> - <string name="pref_nav_drawer_feed_counter_sum">Mudar a informaĆ§Ć£o exibida pelo contador de assinaturas</string> + <string name="pref_nav_drawer_feed_counter_title">Configurar Contador de Assinaturas</string> <string name="pref_set_theme_sum">Altera a aparĆŖncia do AntennaPod</string> <string name="pref_automatic_download_title">Download automĆ”tico</string> <string name="pref_automatic_download_sum">Configurar download automĆ”tico de episĆ³dios.</string> @@ -374,8 +357,6 @@ <string name="pref_rewind_sum">Personalize os segundos para voltar quando o botĆ£o retroceder for clicado</string> <string name="pref_gpodnet_sethostname_title">Configurar hostname</string> <string name="pref_gpodnet_sethostname_use_default_host">Usar host padrĆ£o</string> - <string name="pref_expandNotify_title">Expandir NotificaĆ§Ć£o</string> - <string name="pref_expandNotify_sum">Sempre expandir a notificaĆ§Ć£o para mostrar os botƵes de reproduĆ§Ć£o.</string> <string name="pref_persistNotify_title">Controles de ReproduĆ§Ć£o Persistentes</string> <string name="pref_persistNotify_sum">Manter a notificaĆ§Ć£o e controles na tela de bloqueio enquanto a reproduĆ§Ć£o estĆ” pausada.</string> <string name="pref_compact_notification_buttons_title">Configurar BotƵes da tela de bloqueio</string> @@ -396,8 +377,6 @@ <string name="crash_report_sum">Enviar o relatĆ³rio da Ćŗltima falha por e-mail</string> <string name="send_email">Enviar e-mail</string> <string name="experimental_pref">Experimental</string> - <string name="pref_sonic_title">Sonic Media Player</string> - <string name="pref_sonic_message">Utilizar o reprodutor de mĆdia Sonic no lugar do reprodutor de mĆdia nativo do Android e do Prestissimo</string> <string name="pref_current_value">Valor atual: %1$s</string> <string name="pref_proxy_title">Proxy</string> <string name="pref_proxy_sum">Configurar um proxy da rede</string> @@ -417,8 +396,6 @@ <string name="search_hint">Buscar por episĆ³dios</string> <string name="found_in_shownotes_label">Encontrados em exibir descriĆ§Ć£o</string> <string name="found_in_chapters_label">Encontrado nos capĆtulos</string> - <string name="found_in_authors_label">Encontrados em autores</string> - <string name="found_in_feeds_label">Encontrados em feeds</string> <string name="search_status_no_results">Nenhum resultado encontrado</string> <string name="search_label">Pesquisar</string> <string name="found_in_title_label">Encontrado no tĆtulo</string> @@ -444,8 +421,6 @@ <string name="html_export_label">Exportar HTML</string> <string name="exporting_label">Exportando...</string> <string name="export_error_label">Erro na exportaĆ§Ć£o</string> - <string name="opml_export_success_title">ExportaĆ§Ć£o do OPML realizada com sucesso.</string> - <string name="opml_export_success_sum">O arquivo .opml foi gravado em:\u0020</string> <string name="opml_import_ask_read_permission">Acesso ao armazenamento externo Ć© necessĆ”ria para ler o arquivo OPML</string> <!--Sleep timer--> <string name="set_sleeptimer_label">Configura desligamento automĆ”tico</string> @@ -629,4 +604,5 @@ <string name="cast_failed_seek">Falha ao buscar uma nova posiĆ§Ć£o no dispositivo cast</string> <string name="cast_failed_receiver_player_error">O receptor de reproduĆ§Ć£o encontrou um erro grave</string> <string name="cast_failed_media_error_skipping">Erro ao reproduzir mĆdia. Pulando...</string> + <!--Notification channels--> </resources> diff --git a/core/src/main/res/values-pt/strings.xml b/core/src/main/res/values-pt/strings.xml index 8be0b8443..2f7941097 100644 --- a/core/src/main/res/values-pt/strings.xml +++ b/core/src/main/res/values-pt/strings.xml @@ -1,11 +1,13 @@ <?xml version='1.0' encoding='UTF-8'?> <resources xmlns:tools="http://schemas.android.com/tools"> <!--Activitiy and fragment titles--> + <string name="feed_update_receiver_name">Atualizar subscriƧƵes</string> <string name="feeds_label">Fontes</string> <string name="statistics_label">EstatĆsticas</string> <string name="add_feed_label">Adicionar podcast</string> <string name="episodes_label">EpisĆ³dios</string> <string name="all_episodes_short_label">Todos</string> + <string name="new_episodes_label">Novos</string> <string name="favorite_episodes_label">Favoritos</string> <string name="new_label">Novos</string> <string name="settings_label">DefiniƧƵes</string> @@ -18,10 +20,12 @@ <string name="cancel_download_label">Cancelar\ndescarga</string> <string name="playback_history_label">HistĆ³rico de reproduĆ§Ć£o</string> <string name="gpodnet_main_label">gpodder.net</string> + <string name="gpodnet_summary">Sincronizar com outros dispositivos</string> <string name="gpodnet_auth_label">Dados gpodder.net</string> <string name="free_space_label">%1$s disponĆvel</string> <string name="episode_cache_full_title">Cache de episĆ³dios cheia</string> <string name="episode_cache_full_message">Atingido o limite mĆ”ximo de itens em cache. Pode aumentar o tamanho de cache nas definiƧƵes.</string> + <string name="synchronizing">A sincronizar...</string> <!--Statistics fragment--> <string name="total_time_listened_to_podcasts">Tempo total dos podcasts reproduzidos:</string> <string name="statistics_details_dialog">%1$d de %2$d episĆ³dios iniciados.\n\nReproduzidos %3$s de %4$s.</string> @@ -51,18 +55,19 @@ <!--Playback history--> <string name="clear_history_label">Limpar histĆ³rico</string> <!--Other--> - <string name="confirm_label">Confirmar</string> + <string name="confirm_label">ConfirmaĆ§Ć£o</string> <string name="cancel_label">Cancelar</string> <string name="yes">Sim</string> <string name="no">NĆ£o</string> <string name="reset">Repor</string> - <string name="author_label">Autor</string> + <string name="author_label">Autor(es)</string> <string name="language_label">Idioma</string> <string name="url_label">URL</string> <string name="podcast_settings_label">DefiniƧƵes</string> <string name="cover_label">Imagem</string> <string name="error_label">Erro</string> <string name="error_msg_prefix">Ocorreu um erro:</string> + <string name="needs_storage_permission">Tem que permitir o acesso ao armazenamento para esta operaĆ§Ć£o</string> <string name="refresh_label">Atualizar</string> <string name="external_storage_error_msg">CartĆ£o SD nĆ£o disponĆvel. Certifique-se de que inseriu o cartĆ£o corretamente para que a aplicaĆ§Ć£o funcione corretamente.</string> <string name="chapters_label">CapĆtulos</string> @@ -105,25 +110,28 @@ <string name="mark_all_read_label">Marcar tudo como reproduzido</string> <string name="mark_all_read_msg">Marcar todos os episĆ³dios como reproduzidos</string> <string name="mark_all_read_confirmation_msg">Tem a certeza de que deseja marcar todos os episĆ³dios como reproduzidos?</string> - <string name="mark_all_read_feed_confirmation_msg">Tem a certeza de que deseja marcar todos os episĆ³dios desta fonte como reproduzidos?</string> - <string name="mark_all_seen_label">Marcar tudo como visto</string> - <string name="mark_all_seen_msg">Marcar todos os episĆ³dios como vistos</string> - <string name="mark_all_seen_confirmation_msg">Confirma de que deseja marcar todos os episĆ³dios como vistos?</string> + <string name="mark_all_read_feed_confirmation_msg">Tem a certeza de que deseja marcar como reproduzidos todos os episĆ³dios deste podcast?</string> + <string name="mark_all_seen_label">Marcar tudo como reproduzido</string> + <string name="mark_all_seen_msg">Marcar todos como reproduzidos</string> + <string name="mark_all_seen_confirmation_msg">Tem a certeza de que deseja marcar todos os episĆ³dios como vistos?</string> <string name="show_info_label">Mostrar informaƧƵes</string> + <string name="show_feed_settings_label">Mostrar definiƧƵes do podcast</string> + <string name="feed_info_label">InformaƧƵes do podcast</string> + <string name="feed_settings_label">DefiniƧƵes do podcast</string> <string name="rename_feed_label">Renomear podcast</string> <string name="remove_feed_label">Remover podcast</string> <string name="share_label">Partilhar...</string> - <string name="share_link_label">Partilhar ligaĆ§Ć£o</string> + <string name="share_link_label">Partilhar URL do episĆ³dio</string> + <string name="share_link_with_position_label">Partilhar URL do episĆ³dio (com posiĆ§Ć£o)</string> <string name="share_file_label">Partilhar ficheiro</string> - <string name="share_link_with_position_label">Partilhar ligaĆ§Ć£o com posiĆ§Ć£o</string> <string name="share_feed_url_label">Partilhar URL da fonte</string> - <string name="share_item_url_label">Partilhar URL do episĆ³dio</string> - <string name="share_item_url_with_position_label">Partilhar URL do episĆ³dio com posiĆ§Ć£o</string> - <string name="feed_delete_confirmation_msg">Tem a certeza de que deseja remover a fonte \"%1$s\" e TODOS os episĆ³dios descarregados?</string> - <string name="feed_remover_msg">Remover fonte</string> - <string name="load_complete_feed">Atualizar todas as pĆ”ginas da fonte</string> + <string name="share_item_url_label">Partilhar URL do ficheiro multimĆ©dia</string> + <string name="share_item_url_with_position_label">Partilhar URL do ficheiro multimĆ©dia (com posiĆ§Ć£o)</string> + <string name="feed_delete_confirmation_msg">Tem a certeza de que deseja remover o podcast \"%1$s\" e TODOS os seus episĆ³dios (inclusive descarregados)?</string> + <string name="feed_remover_msg">A remover podcast</string> + <string name="load_complete_feed">Atualizar podcast</string> <string name="hide_episodes_title">Ocultar episĆ³dios</string> - <string name="episode_actions">Aplicar aƧƵes</string> + <string name="batch_edit">EdiĆ§Ć£o em lote</string> <string name="hide_unplayed_episodes_label">NĆ£o reproduzidos</string> <string name="hide_paused_episodes_label">Em pausa</string> <string name="hide_played_episodes_label">Reproduzidos</string> @@ -132,6 +140,7 @@ <string name="hide_downloaded_episodes_label">Descarregados</string> <string name="hide_not_downloaded_episodes_label">NĆ£o descarregados</string> <string name="hide_has_media_label">Tem ficheiro</string> + <string name="hide_is_favorite_label">Ć favorito</string> <string name="filtered_label">Filtrados</string> <string name="refresh_failed_msg">{fa-exclamation-circle} Ćltima atualizaĆ§Ć£o falhada</string> <string name="open_podcast">Abrir podcast</string> @@ -145,7 +154,8 @@ <string name="delete_label">Apagar</string> <string name="delete_failed">EpisĆ³dio nĆ£o apagado. Experimente reiniciar o dispositivo.</string> <string name="remove_episode_lable">Remover episĆ³dio</string> - <string name="marked_as_seen_label">Marcar como visto</string> + <string name="mark_as_seen_label">Marcar como reproduzido</string> + <string name="marked_as_seen_label">Marcar como reproduzido</string> <string name="mark_read_label">Marcar como reproduzido</string> <string name="marked_as_read_label">Marcado como reproduzido</string> <string name="mark_unread_label">Marcar como nĆ£o reproduzido</string> @@ -168,6 +178,8 @@ <string name="download_failed">falha</string> <string name="download_pending">Descarga pendente</string> <string name="download_running">Descarga atual</string> + <string name="download_error_details">Detalhes</string> + <string name="download_error_details_message">%1$s \n\Ficheiro URL:\n%2$s</string> <string name="download_error_device_not_found">CartĆ£o SD nĆ£o encontrado</string> <string name="download_error_insufficient_space">EspaƧo insuficiente</string> <string name="download_error_file_error">Erro no ficheiro</string> @@ -218,6 +230,7 @@ <string name="playback_error_unknown">Erro desconhecido</string> <string name="no_media_playing_label">Nada em reproduĆ§Ć£o</string> <string name="player_buffering_msg">A processar...</string> + <string name="player_go_to_picture_in_picture">Modo \'picture-in-picture\'</string> <string name="playbackservice_notification_title">Reproduzir podcast</string> <string name="unknown_media_key">Tecla multimĆ©dia desconhecida: %1$d</string> <!--Queue operations--> @@ -234,7 +247,9 @@ <string name="date">Data</string> <string name="duration">DuraĆ§Ć£o</string> <string name="episode_title">TĆtulo do episĆ³dio</string> - <string name="feed_title">TĆtulo da fonte</string> + <string name="feed_title">TĆtulo do podcast</string> + <string name="random">AleatĆ³rio</string> + <string name="smart_shuffle">Mistura inteligente</string> <string name="ascending">Crescente</string> <string name="descending">Decrescente</string> <string name="clear_queue_confirmation_msg">Tem a certeza de que deseja remover todos os episĆ³dios da fila de reproduĆ§Ć£o?</string> @@ -272,7 +287,7 @@ <string name="enable_sonic">Ativar Sonic</string> <!--Empty list labels--> <string name="no_items_label">NĆ£o existem itens nesta lista</string> - <string name="no_feeds_label">Ainda nĆ£o possui quaisquer fontes</string> + <string name="no_feeds_label">Ainda nĆ£o tem quaisquer podcasts subscritos.</string> <string name="no_chapters_label">Este episĆ³dio nĆ£o tem capĆtulos.</string> <string name="no_shownotes_label">Este episĆ³dio nĆ£o tem notas.</string> <!--Preferences--> @@ -281,15 +296,23 @@ <string name="other_pref">Outras</string> <string name="about_pref">Sobre</string> <string name="queue_label">Fila</string> - <string name="services_label">ServiƧos</string> + <string name="integrations_label">IntegraƧƵes</string> <string name="flattr_label">Flattr</string> + <string name="flattr_summary">ServiƧo de micro pagamentos</string> + <string name="automation">AutomatizaĆ§Ć£o</string> + <string name="download_pref_details">Detalhes</string> + <string name="import_export_pref">Importar/Exportar</string> + <string name="appearance">AparĆŖncia</string> + <string name="external_elements">Elementos externos</string> + <string name="interruptions">InterrupƧƵes</string> + <string name="buttons">BotƵes para controlo de reproduĆ§Ć£o</string> + <string name="media_player">Reprodutor multimĆ©dia</string> <string name="pref_episode_cleanup_title">Limpeza de episĆ³dios</string> <string name="pref_episode_cleanup_summary">Os episĆ³dios que nĆ£o estejam na fila e nĆ£o sejam favoritos podem ser elegĆveis para serem removidos se a Descarga automĆ”tica necessitar de espaƧo para novos episĆ³dios.</string> <string name="pref_pauseOnDisconnect_sum">Pausa na reproduĆ§Ć£o ao desligar os auscultadores ou o bluetooth</string> <string name="pref_unpauseOnHeadsetReconnect_sum">Continuar reproduĆ§Ć£o ao ligar os auscultadores</string> <string name="pref_unpauseOnBluetoothReconnect_sum">Continuar reproduĆ§Ć£o ao estabelecer a ligaĆ§Ć£o bluetooth</string> <string name="pref_hardwareForwardButtonSkips_title">BotĆ£o para avanƧar</string> - <string name="pref_hardwareForwardButtonSkips_sum">Ao premir o botĆ£o AvanƧar, ir para o episĆ³dio seguinte em vez de avanƧar a reproduĆ§Ć£o</string> <string name="pref_hardwarePreviousButtonRestarts_title">BotĆ£o Anterior para reiniciar</string> <string name="pref_hardwarePreviousButtonRestarts_sum">Ao premir o botĆ£o do telefone, reiniciar o episĆ³dio atual em vez de recuar para o episĆ³dio anterior</string> <string name="pref_followQueue_sum">Ir para a episĆ³dio seguinte ao terminar a reproduĆ§Ć£o</string> @@ -338,7 +361,7 @@ <string name="pref_nav_drawer_feed_order_title">Definir ordem de subscriĆ§Ć£o</string> <string name="pref_nav_drawer_feed_order_sum">Alterar a ordem das suas subscriƧƵes</string> <string name="pref_nav_drawer_feed_counter_title">Definir contador de subscriƧƵes</string> - <string name="pref_nav_drawer_feed_counter_sum">Alterar a informaĆ§Ć£o mostrada no contador de subscriƧƵes</string> + <string name="pref_nav_drawer_feed_counter_sum">Alterar a informaĆ§Ć£o mostrada no contador de subscriƧƵes. TambĆ©m afeta as subscriƧƵes se \'Ordem de subscriĆ§Ć£o\' estiver definida como \'Contador\'.</string> <string name="pref_set_theme_sum">Alterar a aparĆŖncia do AntennaPod</string> <string name="pref_automatic_download_title">Descarga automĆ”tica</string> <string name="pref_automatic_download_sum">Configurar a descarga automĆ”tica dos episĆ³dios</string> @@ -352,12 +375,13 @@ <string name="pref_episode_cache_title">Cache de episĆ³dios</string> <string name="pref_theme_title_light">Claro</string> <string name="pref_theme_title_dark">Escuro</string> + <string name="pref_theme_title_trueblack">Preto (AMOLED)</string> <string name="pref_episode_cache_unlimited">Sem limite</string> <string name="pref_update_interval_hours_plural">horas</string> <string name="pref_update_interval_hours_singular">hora</string> <string name="pref_update_interval_hours_manual">Manual</string> <string name="pref_gpodnet_authenticate_title">Acesso</string> - <string name="pref_gpodnet_authenticate_sum">Aceda Ć sua conta gpodder.net para poder sincronizar as subscriƧƵes</string> + <string name="pref_gpodnet_authenticate_sum">Aceda Ć sua conta gpodder.net para poder sincronizar as subscriƧƵes.</string> <string name="pref_gpodnet_logout_title">Sair</string> <string name="pref_gpodnet_logout_toast">SessĆ£o terminada</string> <string name="pref_gpodnet_setlogin_information_title">Alterar informaĆ§Ć£o de acesso</string> @@ -380,8 +404,6 @@ <string name="pref_rewind_sum">Personalizar o nĆŗmero de segundos a recuar ao clicar no botĆ£o de recuo rĆ”pido</string> <string name="pref_gpodnet_sethostname_title">Definir nome de servidor</string> <string name="pref_gpodnet_sethostname_use_default_host">Utilizar predefiniƧƵes</string> - <string name="pref_expandNotify_title">ExpansĆ£o de notificaĆ§Ć£o</string> - <string name="pref_expandNotify_sum">Expandir sempre a notificaĆ§Ć£o para mostrar os botƵes de reproduĆ§Ć£o</string> <string name="pref_persistNotify_title">Controlos de reproduĆ§Ć£o</string> <string name="pref_persistNotify_sum">Manter controlos de notificaĆ§Ć£o e ecrĆ£ de bloqueio ao colocar a reproduĆ§Ć£o em pausa</string> <string name="pref_compact_notification_buttons_title">Definir botƵes do ecrĆ£ de bloqueio</string> @@ -402,8 +424,7 @@ <string name="crash_report_sum">Enviar o relatĆ³rio de erros por e-mail</string> <string name="send_email">Enviar e-mail</string> <string name="experimental_pref">Experimental</string> - <string name="pref_sonic_title">Reprodutor multimĆ©dia Sonic</string> - <string name="pref_sonic_message">Utilizar o Sonic Media Player como substituto do reprodutor nativo do Android e do Prestissimo</string> + <string name="pref_media_player_message">Selecione o reprodutor multimĆ©dia a utilizar</string> <string name="pref_current_value">Valor atual: %1$s</string> <string name="pref_proxy_title">Proxy</string> <string name="pref_proxy_sum">Definir um proxy de rede</string> @@ -415,6 +436,11 @@ <string name="pref_cast_message_free_flavor">O Chromecast necessita de bibliotecas proprietĆ”rias de terceiros que estĆ£o desativadas nesta versĆ£o do AntennaPod</string> <string name="pref_enqueue_downloaded_title">Colocar descargas na fila</string> <string name="pref_enqueue_downloaded_summary">Adicionar Ć fila os episĆ³dios descarregados</string> + <string name="media_player_builtin">Reprodutor nativo Android</string> + <string name="pref_videoBehavior_title">Ao sair do vĆdeo</string> + <string name="pref_videoBehavior_sum">Comportamento ao sair da reproduĆ§Ć£o do vĆdeo</string> + <string name="stop_playback">Parar reproduĆ§Ć£o</string> + <string name="continue_playback">Continuar reproduĆ§Ć£o de Ć”udio</string> <!--Auto-Flattr dialog--> <string name="auto_flattr_enable">Ativar flattr automĆ”tico</string> <string name="auto_flattr_after_percent">Flattr de episĆ³dios ao atingir %d porcento de reproduĆ§Ć£o</string> @@ -424,8 +450,8 @@ <string name="search_hint">Pesquisar por episĆ³dios</string> <string name="found_in_shownotes_label">Encontrado nas notas</string> <string name="found_in_chapters_label">Encontrado nos capĆtulos</string> - <string name="found_in_authors_label">Encontrado em autores</string> - <string name="found_in_feeds_label">Encontrado em fontes</string> + <string name="found_in_authors_label">Localizado em autor(es)</string> + <string name="found_in_feeds_label">Localizado em podcast</string> <string name="search_status_no_results">Nenhum resultado</string> <string name="search_label">Pesquisar</string> <string name="found_in_title_label">Encontrado no tĆtulo</string> @@ -451,8 +477,8 @@ <string name="html_export_label">ExportaĆ§Ć£o HTML</string> <string name="exporting_label">A exportar...</string> <string name="export_error_label">Erro de exportaĆ§Ć£o</string> - <string name="opml_export_success_title">ExportaĆ§Ć£o efetuada</string> - <string name="opml_export_success_sum">O ficheiro .opml foi guardado em:\u0020</string> + <string name="export_success_title">ExportaĆ§Ć£o com sucesso</string> + <string name="export_success_sum">O ficheiro exportado foi guardado em:\n\n%1$s</string> <string name="opml_import_ask_read_permission">Requer acesso ao armazenamento externo para ler o ficheiro OPML</string> <!--Sleep timer--> <string name="set_sleeptimer_label">Definir temporizador</string> @@ -619,6 +645,14 @@ <string name="proxy_host_empty_error">Servidor nĆ£o pode estar vazio</string> <string name="proxy_host_invalid_error">O servidor nĆ£o tem um endereƧo ou domĆnio vĆ”lido</string> <string name="proxy_port_invalid_error">Porta invĆ”lido</string> + <!--Database import/export--> + <string name="import_export">ImportaĆ§Ć£o/exportaĆ§Ć£o da base de dados</string> + <string name="import_export_warning">Esta funĆ§Ć£o experimental pode ser usada para transferir as suas subscriƧƵes e episĆ³dios para outros dispositivos.\n\nAs bases de dados exportadas apenas podem ser importadas se usar a mesma versĆ£o do AntennaPod. Caso contrĆ”rio, esta funĆ§Ć£o poderĆ” produzir efeitos inesperados.\n\nDepois da importaĆ§Ć£o, os episĆ³dios poderĆ£o ser apresentados como tendo sido descarregados mesmo que nĆ£o seja verdade. Prima o botĆ£o de reproduĆ§Ć£o dos episĆ³dios para que o AntennaPod detete a situaĆ§Ć£o.</string> + <string name="label_import">Importar</string> + <string name="label_export">Exportar</string> + <string name="import_select_file">Selecione o ficheiro a importar</string> + <string name="export_ok">ExportaĆ§Ć£o com sucesso.</string> + <string name="import_ok">ImportaĆ§Ć£o bem sucedida.\n\nPor favor prima OK para reiniciar o AntennaPod</string> <!--Casting--> <string name="cast_media_route_menu_title">Reproduzir em...</string> <string name="cast_disconnect_label">Desligar da Ćŗltima sessĆ£o</string> @@ -635,4 +669,13 @@ <string name="cast_failed_seek">Falha ao procurar a nova posiĆ§Ć£o no dispositivo</string> <string name="cast_failed_receiver_player_error">O reprodutor encontrou um erro crĆtico</string> <string name="cast_failed_media_error_skipping">Erro de reproduĆ§Ć£o. A ignorar...</string> + <!--Notification channels--> + <string name="notification_channel_user_action">Requer aĆ§Ć£o</string> + <string name="notification_channel_user_action_description">Mostrar se for necessĆ”ria uma aĆ§Ć£o como, por exemplo, digitar uma palavra-passe.</string> + <string name="notification_channel_downloading">A descarregar</string> + <string name="notification_channel_downloading_description">Mostrar durante a descarga.</string> + <string name="notification_channel_playing">ReproduĆ§Ć£o atual</string> + <string name="notification_channel_playing_description">Permite o controlo da reproduĆ§Ć£o. Esta serĆ” a notificaĆ§Ć£o que verĆ” ao reproduzir um podcast.</string> + <string name="notification_channel_error">Erros</string> + <string name="notification_channel_error_description">Mostrar se ocorrerem erros como, por exemplo, nĆ£o for possĆvel a descarga.</string> </resources> diff --git a/core/src/main/res/values-ro-rRO/strings.xml b/core/src/main/res/values-ro-rRO/strings.xml index d39e48bbc..92b2da8f9 100644 --- a/core/src/main/res/values-ro-rRO/strings.xml +++ b/core/src/main/res/values-ro-rRO/strings.xml @@ -2,25 +2,38 @@ <resources xmlns:tools="http://schemas.android.com/tools"> <!--Activitiy and fragment titles--> <string name="feeds_label">Feeduri</string> + <string name="statistics_label">Statistici</string> + <string name="add_feed_label">AdaugÄ podcast</string> + <string name="episodes_label">Episoade</string> + <string name="all_episodes_short_label">Toate</string> + <string name="favorite_episodes_label">Favorite</string> <string name="new_label">Nou</string> <string name="settings_label">SetÄri</string> <string name="downloads_label">DescÄrcÄri</string> + <string name="downloads_running_label">Active</string> + <string name="downloads_completed_label">Complete</string> + <string name="downloads_log_label">Jurnal</string> <string name="cancel_download_label">AnuleazÄ descÄrcare</string> <string name="playback_history_label">Istorie ascultare</string> <string name="gpodnet_main_label">gpodder.net</string> <string name="gpodnet_auth_label">autentificare gpodder.net</string> <!--Statistics fragment--> <!--Main activity--> + <string name="drawer_open">Deschide meniul</string> + <string name="drawer_close">Ćnchide meniul</string> <!--Webview actions--> <string name="open_in_browser_label">Deschide Ć®n browser</string> <string name="copy_url_label">CopiazÄ URL</string> <string name="share_url_label">Ćmparte URL</string> <string name="copied_url_msg">URL copiat Ć®n clipboard</string> + <string name="go_to_position_label">Mergi la poziČia</string> <!--Playback history--> <string name="clear_history_label">GoleČte istoric</string> <!--Other--> <string name="confirm_label">ConfirmÄ</string> <string name="cancel_label">AnuleazÄ</string> + <string name="yes">Da</string> + <string name="no">Nu</string> <string name="author_label">Autor</string> <string name="language_label">LimbÄ</string> <string name="podcast_settings_label">SetÄri</string> @@ -29,6 +42,7 @@ <string name="refresh_label">ReĆ®ncarcÄ</string> <string name="external_storage_error_msg">Nu exista stocare externÄ. AsiguraČi-vÄ cÄ stocarea externÄ este conectatÄ pentru ca aplicaČia sÄ funcČioneze corespunzÄtor.</string> <string name="chapters_label">Capitole</string> + <string name="chapter_duration">Durata: %1$s</string> <string name="shownotes_label">NotiČe</string> <string name="description_label">Descriere</string> <string name="most_recent_prefix">Cel mai recent episod:\u0020</string> @@ -39,6 +53,13 @@ <string name="save_username_password_label">SalveazÄ numele de utilizator Či parola</string> <string name="close_label">Ć®nchide</string> <string name="retry_label">ReĆ®ncearcÄ</string> + <string name="auto_delete_label">Čterge epidosul automat</string> + <string name="feed_auto_download_always">Ćntotdeauna</string> + <string name="feed_auto_download_never">NiciodatÄ</string> + <string name="send_label">Trimite...</string> + <string name="episode_cleanup_never">NiciodatÄ</string> + <string name="episode_cleanup_queue_removal">CĆ¢nd nu e Ć®n coadÄ</string> + <string name="episode_cleanup_after_listening">DupÄ terminare</string> <!--'Add Feed' Activity labels--> <string name="feedurl_label">AdresÄ feed</string> <!--Actions on feeds--> @@ -123,7 +144,6 @@ <string name="other_pref">Altele</string> <string name="about_pref">Despre</string> <string name="queue_label">CoadÄ</string> - <string name="services_label">Servicii</string> <string name="flattr_label">Flattr</string> <string name="pref_followQueue_sum">Sari la urmÄtorul element din coadÄ cand se terminÄ ascultarea</string> <string name="playback_pref">Ascultare</string> @@ -174,7 +194,6 @@ <string name="deselect_all_label">DeselecteazÄ toate</string> <string name="opml_export_label">ExportÄ OPML</string> <string name="export_error_label">Eroare exportare</string> - <string name="opml_export_success_sum">FiČierul .opml a fost scris Ć®n:\u0020</string> <!--Sleep timer--> <string name="set_sleeptimer_label">SeteazÄ cronometru somn</string> <string name="disable_sleeptimer_label">OpreČte cronometru somn</string> @@ -227,4 +246,5 @@ <!--Database import/export--> <!--Casting--> <!--<string name="cast_failed_to_connect">Could not connect to the device</string>--> + <!--Notification channels--> </resources> diff --git a/core/src/main/res/values-ru/strings.xml b/core/src/main/res/values-ru/strings.xml index 5e7f8dd73..076a54048 100644 --- a/core/src/main/res/values-ru/strings.xml +++ b/core/src/main/res/values-ru/strings.xml @@ -1,11 +1,13 @@ <?xml version='1.0' encoding='UTF-8'?> <resources xmlns:tools="http://schemas.android.com/tools"> <!--Activitiy and fragment titles--> + <string name="feed_update_receiver_name">ŠŠ±Š½Š¾Š²ŠøŃŃ ŠæŠ¾Š“ŠæŠøŃŠŗŠø</string> <string name="feeds_label">ŠŠ°Š½Š°Š»Ń</string> <string name="statistics_label">Š”ŃŠ°ŃŠøŃŃŠøŠŗŠ°</string> <string name="add_feed_label">ŠŠ¾Š±Š°Š²ŠøŃŃ ŠæŠ¾Š“ŠŗŠ°ŃŃ</string> <string name="episodes_label">ŠŃŠæŃŃŠŗŠø</string> <string name="all_episodes_short_label">ŠŃŠµ</string> + <string name="new_episodes_label">ŠŠ¾Š²ŃŠµ</string> <string name="favorite_episodes_label">ŠŠ·Š±ŃŠ°Š½Š½Š¾Šµ</string> <string name="new_label">ŠŠ¾Š²ŃŠµ</string> <string name="settings_label">ŠŠ°ŃŃŃŠ¾Š¹ŠŗŠø</string> @@ -18,10 +20,12 @@ <string name="cancel_download_label">ŠŃŠ¼ŠµŠ½ŠøŃŃ Š·Š°Š³ŃŃŠ·ŠŗŃ</string> <string name="playback_history_label">ŠŃŃŠ½Š°Š»</string> <string name="gpodnet_main_label">gpodder.net</string> + <string name="gpodnet_summary">Š”ŠøŠ½Ń
ŃŠ¾Š½ŠøŠ·ŠøŃŠ¾Š²Š°ŃŃ Ń Š“ŃŃŠ³ŠøŠ¼Šø ŃŃŃŃŠ¾Š¹ŃŃŠ²Š°Š¼Šø</string> <string name="gpodnet_auth_label">ŠŠ¾Š¹ŃŠø Š½Š° gpodder.net</string> <string name="free_space_label">ŃŠ²Š¾Š±Š¾Š“Š½Š¾ %1$s</string> <string name="episode_cache_full_title">ŠŃŃ Š²ŃŠæŃŃŠŗŠ¾Š² Š·Š°ŠæŠ¾Š»Š½ŠµŠ½</string> <string name="episode_cache_full_message">ŠŠ¾ŃŃŠøŠ³Š½ŃŃ ŠæŃŠµŠ“ŠµŠ» ŠŗŃŃŠ° Š²ŃŠæŃŃŠŗŠ¾Š². ŠŠ±ŃŃŠ¼ ŠŗŃŃŠ° Š¼Š¾Š¶Š½Š¾ ŃŠ²ŠµŠ»ŠøŃŠøŃŃ Š² ŠŠ°ŃŃŃŠ¾Š¹ŠŗŠ°Ń
.</string> + <string name="synchronizing">Š”ŠøŠ½Ń
ŃŠ¾Š½ŠøŠ·Š°ŃŠøŃā¦</string> <!--Statistics fragment--> <string name="total_time_listened_to_podcasts">ŠŠ±ŃŠµŠµ Š²ŃŠµŠ¼Ń ŠæŃŠ¾ŃŠ»ŃŃŠøŠ²Š°Š½ŠøŃ ŠæŠ¾Š“ŠŗŠ°ŃŃŠ¾Š²:</string> <string name="statistics_details_dialog">%1$d ŠøŠ· %2$d Š²ŃŠæŃŃŠŗŠ¾Š² Š½Š°ŃŠ°ŃŠ¾.\n\nŠŃŠ¾ŃŠ»ŃŃŠ°Š½Š¾ %3$s ŠøŠ· %4$s.</string> @@ -56,13 +60,14 @@ <string name="yes">ŠŠ°</string> <string name="no">ŠŠµŃ</string> <string name="reset">Š”Š±ŃŠ¾Ń</string> - <string name="author_label">ŠŠ²ŃŠ¾Ń</string> + <string name="author_label">ŠŠ²ŃŠ¾Ń(Ń)</string> <string name="language_label">ŠÆŠ·ŃŠŗ</string> <string name="url_label">ŠŠ“ŃŠµŃ</string> <string name="podcast_settings_label">ŠŠ°ŃŃŃŠ¾Š¹ŠŗŠø</string> <string name="cover_label">ŠŠ±Š»Š¾Š¶ŠŗŠ°</string> <string name="error_label">ŠŃŠøŠ±ŠŗŠ°</string> <string name="error_msg_prefix">ŠŃŠ¾ŠøŠ·Š¾ŃŠ»Š° Š¾ŃŠøŠ±ŠŗŠ°:</string> + <string name="needs_storage_permission">ŠŠ»Ń Š²ŃŠæŠ¾Š»Š½ŠµŠ½ŠøŃ ŃŃŠ¾Š¹ Š¾ŠæŠµŃŠ°ŃŠøŠø Š½ŃŠ¶Š½Š¾ ŃŠ°Š·ŃŠµŃŠøŃŃ Š“Š¾ŃŃŃŠæ Šŗ Ń
ŃŠ°Š½ŠøŠ»ŠøŃŃ</string> <string name="refresh_label">ŠŠ±Š½Š¾Š²ŠøŃŃ</string> <string name="external_storage_error_msg">ŠŠ½ŠµŃŠ½ŠøŠ¹ Š½Š¾ŃŠøŃŠµŠ»Ń Š½ŠµŠ“Š¾ŃŃŃŠæŠµŠ½. Š£Š±ŠµŠ“ŠøŃŠµŃŃ ŃŃŠ¾ Š²Š½ŠµŃŠ½ŠøŠ¹ Š½Š¾ŃŠøŃŠµŠ»Ń ŃŃŃŠ°Š½Š¾Š²Š»ŠµŠ½, ŠøŠ½Š°ŃŠµ ŠæŃŠøŠ»Š¾Š¶ŠµŠ½ŠøŠµ Š½Šµ ŃŠ¼Š¾Š¶ŠµŃ Š½Š¾ŃŠ¼Š°Š»ŃŠ½Š¾ ŃŠ°Š±Š¾ŃŠ°ŃŃ.</string> <string name="chapters_label">ŠŠ»Š°Š²Ń</string> @@ -107,25 +112,28 @@ <string name="mark_all_read_label">ŠŃŠ¼ŠµŃŠøŃŃ ŠŗŠ°Šŗ ŠæŃŠ¾ŃŠ»ŃŃŠ°Š½Š½Š¾Šµ</string> <string name="mark_all_read_msg">ŠŃŠ¼ŠµŃŠøŃŃ Š²ŃŠµ Š²ŃŠæŃŃŠŗŠø ŠŗŠ°Šŗ ŠæŃŠ¾ŃŠ»ŃŃŠ°Š½Š½ŃŠµ</string> <string name="mark_all_read_confirmation_msg">ŠŠ¾Š“ŃŠ²ŠµŃŠ“ŠøŃŠµ, ŃŃŠ¾ Ń
Š¾ŃŠøŃŠµ ŠæŠ¾Š¼ŠµŃŠøŃŃ Š²ŃŠµ ŃŠæŠøŠ·Š¾Š“Ń ŠŗŠ°Šŗ ŠæŃŠ¾ŃŠ»ŃŃŠ°Š½Š½ŃŠµ.</string> - <string name="mark_all_read_feed_confirmation_msg">ŠŠ¾Š“ŃŠ²ŠµŃŠ“ŠøŃŠµ, ŃŃŠ¾ Ń
Š¾ŃŠøŃŠµ ŠæŠ¾Š¼ŠµŃŠøŃŃ Š²ŃŠµ ŃŠæŠøŠ·Š¾Š“Ń Š² ŃŃŠ¾Š¼ ŠŗŠ°Š½Š°Š»Šµ ŠŗŠ°Šŗ ŠæŃŠ¾ŃŠ»ŃŃŠ°Š½Š½ŃŠµ.</string> + <string name="mark_all_read_feed_confirmation_msg">ŠŠ¾Š¶Š°Š»ŃŠ¹ŃŃŠ°, ŠæŠ¾Š“ŃŠ²ŠµŃŠ“ŠøŃŠµ Š¶ŠµŠ»Š°Š½ŠøŠµ Š¾ŃŠ¼ŠµŃŠøŃŃ Š²ŃŠµ Š²ŃŠæŃŃŠŗŠø ŃŃŠ¾Š³Š¾ ŠæŠ¾Š“ŠŗŠ°ŃŃŠ° ŠŗŠ°Šŗ ŠæŃŠ¾ŃŠ»ŃŃŠ°Š½Š½ŃŠµ.</string> <string name="mark_all_seen_label">ŠŃŠ¼ŠµŃŠøŃŃ Š²ŃŠµ ŠŗŠ°Šŗ ŠæŃŠ¾ŃŠ¼Š¾ŃŃŠµŠ½Š½Š¾Šµ</string> <string name="mark_all_seen_msg">ŠŃŠµ Š²ŃŠæŃŃŠŗŠø Š¾ŃŠ¼ŠµŃŠµŠ½Ń ŠŗŠ°Šŗ ŠæŃŠ¾ŃŠ¼Š¾ŃŃŠµŠ½Š½ŃŠµ</string> <string name="mark_all_seen_confirmation_msg">ŠŠ¾Š¶Š°Š»ŃŠ¹ŃŃŠ°, ŠæŠ¾Š“ŃŠ²ŠµŃŠ“ŠøŃŠµ Š½Š°Š¼ŠµŃŠµŠ½ŠøŠµ Š¾ŃŠ¼ŠµŃŠøŃŃ Š²ŃŠµ Š²ŃŠæŃŃŠŗŠø ŠŗŠ°Šŗ ŠæŃŠ¾ŃŠ¼Š¾ŃŃŠµŠ½Š½ŃŠµ.</string> <string name="show_info_label">ŠŠ¾ŠŗŠ°Š·Š°ŃŃ ŠøŠ½ŃŠ¾ŃŠ¼Š°ŃŠøŃ</string> + <string name="show_feed_settings_label">ŠŠ¾ŠŗŠ°Š·Š°ŃŃ Š½Š°ŃŃŃŠ¾Š¹ŠŗŠø ŠæŠ¾Š“ŠŗŠ°ŃŃŠ°</string> + <string name="feed_info_label">Š”Š²ŠµŠ“ŠµŠ½ŠøŃ Š¾ ŠæŠ¾Š“ŠŗŠ°ŃŃŠµ</string> + <string name="feed_settings_label">ŠŠ°ŃŃŃŠ¾Š¹ŠŗŠø ŠæŠ¾Š“ŠŗŠ°ŃŃŠ°</string> <string name="rename_feed_label">ŠŠµŃŠµŠøŠ¼ŠµŠ½Š¾Š²Š°ŃŃ ŠæŠ¾Š“ŠŗŠ°ŃŃ</string> <string name="remove_feed_label">Š£Š“Š°Š»ŠøŃŃ ŠæŠ¾Š“ŠŗŠ°ŃŃ</string> <string name="share_label">ŠŠ¾Š“ŠµŠ»ŠøŃŃŃŃā¦</string> - <string name="share_link_label">ŠŠ¾Š“ŠµŠ»ŠøŃŃŃŃ ŃŃŃŠ»ŠŗŠ¾Š¹</string> + <string name="share_link_label">ŠŠ¾Š“ŠµŠ»ŠøŃŃŃŃ ŃŃŃŠ»ŠŗŠ¾Š¹ Š½Š° Š²ŃŠæŃŃŠŗ</string> + <string name="share_link_with_position_label">ŠŠ¾Š“ŠµŠ»ŠøŃŃŃŃ ŃŃŃŠ»ŠŗŠ¾Š¹ Š½Š° Š²ŃŠæŃŃŠŗ Ń Š¾ŃŠ¼ŠµŃŠŗŠ¾Š¹ Š²ŃŠµŠ¼ŠµŠ½Šø</string> <string name="share_file_label">ŠŠ¾Š“ŠµŠ»ŠøŃŃŃŃ ŃŠ°Š¹Š»Š¾Š¼</string> - <string name="share_link_with_position_label">ŠŠ¾Š“ŠµŠ»ŠøŃŃŃŃ ŃŃŃŠ»ŠŗŠ¾Š¹ Ń Š¾ŃŠ¼ŠµŃŠŗŠ¾Š¹ Š²ŃŠµŠ¼ŠµŠ½Šø</string> <string name="share_feed_url_label">ŠŠ¾Š“ŠµŠ»ŠøŃŃŃŃ ŃŃŃŠ»ŠŗŠ¾Š¹ Š½Š° ŠŗŠ°Š½Š°Š»</string> - <string name="share_item_url_label">ŠŠ¾Š“ŠµŠ»ŠøŃŃŃŃ ŃŃŃŠ»ŠŗŠ¾Š¹ Š½Š° ŃŠ°Š¹Š» Š²ŃŠæŃŃŠŗŠ°</string> - <string name="share_item_url_with_position_label">ŠŠ¾Š“ŠµŠ»ŠøŃŃŃŃ ŃŃŃŠ»ŠŗŠ¾Š¹ Š½Š° ŃŠ°Š¹Š» Š²ŃŠæŃŃŠŗŠ° Ń Š¾ŃŠ¼ŠµŃŠŗŠ¾Š¹ Š²ŃŠµŠ¼ŠµŠ½Šø</string> - <string name="feed_delete_confirmation_msg">ŠŠ¾Š“ŃŠ²ŠµŃŠ“ŠøŃŠµ, ŃŃŠ¾ Ń
Š¾ŃŠøŃŠµ ŃŠ“Š°Š»ŠøŃŃ ŠŗŠ°Š½Š°Š» \"%1$s\" Šø ŠŠ”Š ŃŠŗŠ°ŃŠ°Š½Š½ŃŠµ ŃŠæŠøŠ·Š¾Š“Ń ŃŃŠ¾Š³Š¾ ŠŗŠ°Š½Š°Š»Š°.</string> - <string name="feed_remover_msg">Š£Š“Š°Š»ŠµŠ½ŠøŠµ ŠŗŠ°Š½Š°Š»Š°</string> - <string name="load_complete_feed">ŠŠ±Š½Š¾Š²ŠøŃŃ Š²ŠµŃŃ ŠŗŠ°Š½Š°Š»</string> + <string name="share_item_url_label">ŠŠ¾Š“ŠµŠ»ŠøŃŃŃŃ ŃŃŃŠ»ŠŗŠ¾Š¹ Š½Š° ŃŠ°Š¹Š»</string> + <string name="share_item_url_with_position_label">ŠŠ¾Š“ŠµŠ»ŠøŃŃŃŃ ŃŃŃŠ»ŠŗŠ¾Š¹ Š½Š° ŃŠ°Š¹Š» Ń Š¾ŃŠ¼ŠµŃŠŗŠ¾Š¹ Š²ŃŠµŠ¼ŠµŠ½Šø</string> + <string name="feed_delete_confirmation_msg">ŠŠ¾Š“ŃŠ²ŠµŃŠ“ŠøŃŠµ Š¶ŠµŠ»Š°Š½ŠøŠµ ŃŠ“Š°Š»ŠøŃŃ ŠæŠ¾Š“ŠŗŠ°ŃŃ \"%1$s\" Šø ŠŠ”Š ŠµŠ³Š¾ ŃŠæŠøŠ·Š¾Š“Ń, Š² ŃŠ¾Š¼ ŃŠøŃŠ»Šµ Šø ŃŠŗŠ°ŃŠ°Š½Š½ŃŠµ.</string> + <string name="feed_remover_msg">Š£Š“Š°Š»ŠµŠ½ŠøŠµ ŠæŠ¾Š“ŠŗŠ°ŃŃŠ°</string> + <string name="load_complete_feed">ŠŠ±Š½Š¾Š²ŠøŃŃ Š²ŠµŃŃ ŠæŠ¾Š“ŠŗŠ°ŃŃ</string> <string name="hide_episodes_title">Š”ŠŗŃŃŃŃ Š²ŃŠæŃŃŠŗŠø</string> - <string name="episode_actions">ŠŃŠøŠ¼ŠµŠ½ŠøŃŃ Š“ŠµŠ¹ŃŃŠ²ŠøŃ</string> + <string name="batch_edit">ŠŃŃŠæŠæŠ¾Š²Š°Ń Š¾Š±ŃŠ°Š±Š¾ŃŠŗŠ°</string> <string name="hide_unplayed_episodes_label">ŠŠµŠæŃŠ¾ŃŠ»ŃŃŠ°Š½Š½Š¾Šµ</string> <string name="hide_paused_episodes_label">ŠŃŠøŠ¾ŃŃŠ°Š½Š¾Š²Š»ŠµŠ½Š½Š¾Šµ</string> <string name="hide_played_episodes_label">ŠŃŠ¾ŃŠ»ŃŃŠ°Š½Š½Š¾Šµ</string> @@ -134,6 +142,7 @@ <string name="hide_downloaded_episodes_label">ŠŠ°Š³ŃŃŠ¶ŠµŠ½Š¾</string> <string name="hide_not_downloaded_episodes_label">ŠŠµ Š·Š°Š³ŃŃŠ¶ŠµŠ½Š¾</string> <string name="hide_has_media_label">Š” ŃŠ°Š¹Š»Š°Š¼Šø</string> + <string name="hide_is_favorite_label">ŠŠ·Š±ŃŠ°Š½Š½ŃŠµ</string> <string name="filtered_label">ŠŃŃŠøŠ»ŃŃŃŠ¾Š²Š°Š½Š¾</string> <string name="refresh_failed_msg">{fa-exclamation-circle} ŠŠ¾ŃŠ»ŠµŠ“Š½ŠµŠµ Š¾Š±Š½Š¾Š²Š»ŠµŠ½ŠøŠµ Š½Šµ ŃŠ“Š°Š»Š¾ŃŃ</string> <string name="open_podcast">ŠŃŠŗŃŃŃŃ ŠæŠ¾Š“ŠŗŠ°ŃŃ</string> @@ -147,6 +156,7 @@ <string name="delete_label">Š£Š“Š°Š»ŠøŃŃ</string> <string name="delete_failed">ŠŠµŠ²Š¾Š·Š¼Š¾Š¶Š½Š¾ ŃŠ“Š°Š»ŠøŃŃ ŃŠ°Š¹Š». ŠŠ¾ŠæŃŠ¾Š±ŃŠ¹ŃŠµ ŠæŠµŃŠµŠ·Š°Š³ŃŃŠ·ŠøŃŃ ŃŃŃŃŠ¾Š¹ŃŃŠ²Š¾.</string> <string name="remove_episode_lable">Š£Š“Š°Š»ŠøŃŃ Š²ŃŠæŃŃŠŗ</string> + <string name="mark_as_seen_label">ŠŃŠ¾ŃŠ¼Š¾ŃŃŠµŠ½Š¾</string> <string name="marked_as_seen_label">ŠŃŠ¼ŠµŃŠµŠ½Š¾ ŠŗŠ°Šŗ ŠæŃŠ¾ŃŠ¼Š¾ŃŃŠµŠ½Š½Š¾Šµ</string> <string name="mark_read_label">ŠŃŠ¼ŠµŃŠøŃŃ ŠŗŠ°Šŗ ŠæŃŠ¾ŃŠ»ŃŃŠ°Š½Š½Š¾Šµ</string> <string name="marked_as_read_label">ŠŠ¾Š¼ŠµŃŠµŠ½Š¾ ŠŗŠ°Šŗ ŠæŃŠ¾ŃŠ»ŃŃŠ°Š½Š½Š¾Šµ</string> @@ -170,6 +180,11 @@ <string name="download_failed">Š½Šµ ŃŠ“Š°Š»Š¾ŃŃ</string> <string name="download_pending">ŠŠ°Š³ŃŃŠ·ŠŗŠ° Š² Š¾Š¶ŠøŠ“Š°Š½ŠøŠø</string> <string name="download_running">ŠŠ°Š³ŃŃŠ·ŠŗŠ° Š² ŠæŃŠ¾ŃŠµŃŃŠµ</string> + <string name="download_error_details">ŠŠ¾Š“ŃŠ¾Š±Š½ŠµŠµ</string> + <string name="download_error_details_message">%1$s + +URL ŃŠ°Š¹Š»Š°: +%2$s</string> <string name="download_error_device_not_found">Š£ŃŃŃŠ¾Š¹ŃŃŠ²Š¾ Ń
ŃŠ°Š½ŠµŠ½ŠøŃ Š½Šµ Š½Š°Š¹Š“ŠµŠ½Š¾</string> <string name="download_error_insufficient_space">ŠŠµŠ“Š¾ŃŃŠ°ŃŠ¾ŃŠ½Š¾ Š¼ŠµŃŃŠ°</string> <string name="download_error_file_error">ŠŃŠøŠ±ŠŗŠ° ŃŠ°Š¹Š»Š°</string> @@ -222,6 +237,7 @@ <string name="playback_error_unknown">ŠŠµŠøŠ·Š²ŠµŃŃŠ½Š°Ń Š¾ŃŠøŠ±ŠŗŠ°</string> <string name="no_media_playing_label">ŠŠøŃŠµŠ³Š¾ Š½Šµ Š²Š¾ŃŠæŃŠ¾ŠøŠ·Š²Š¾Š“ŠøŃŃŃ</string> <string name="player_buffering_msg">ŠŃŃŠµŃŠøŠ·Š°ŃŠøŃ</string> + <string name="player_go_to_picture_in_picture">ŠŠ°ŃŃŠøŠ½ŠŗŠ° Š² ŠŗŠ°ŃŃŠøŠ½ŠŗŠµ</string> <string name="playbackservice_notification_title">ŠŠ¾ŃŠæŃŠ¾ŠøŠ·Š²ŠµŠ“ŠµŠ½ŠøŠµ ŠæŠ¾Š“ŠŗŠ°ŃŃŠ°</string> <string name="unknown_media_key">AntennaPod - Š½ŠµŠøŠ·Š²ŠµŃŃŠ½ŃŠ¹ ŠŗŠ»ŃŃ Š½Š¾ŃŠøŃŠµŠ»Ń: %1$d</string> <!--Queue operations--> @@ -238,7 +254,9 @@ <string name="date">ŠŠ¾ Š“Š°ŃŠµ</string> <string name="duration">ŠŠ¾ ŠæŃŠ¾Š“Š¾Š»Š¶ŠøŃŠµŠ»ŃŠ½Š¾ŃŃŠø</string> <string name="episode_title">ŠŠ°Š·Š²Š°Š½ŠøŠµ Š²ŃŠæŃŃŠŗŠ°</string> - <string name="feed_title">ŠŠ°Š·Š²Š°Š½ŠøŠµ ŠŗŠ°Š½Š°Š»Š°</string> + <string name="feed_title">ŠŠ°Š·Š²Š°Š½ŠøŠµ ŠæŠ¾Š“ŠŗŠ°ŃŃŠ°</string> + <string name="random">Š”Š»ŃŃŠ°Š¹Š½Š¾</string> + <string name="smart_shuffle">Š£Š¼Š½Š¾Šµ ŠæŠµŃŠµŠ¼ŠµŃŠøŠ²Š°Š½ŠøŠµ</string> <string name="ascending">ŠŠ¾ Š²Š¾Š·ŃŠ°ŃŃŠ°Š½ŠøŃ</string> <string name="descending">ŠŠ¾ ŃŠ±ŃŠ²Š°Š½ŠøŃ</string> <string name="clear_queue_confirmation_msg">ŠŠ¾Š“ŃŠ²ŠµŃŠ“ŠøŃŠµ, ŃŃŠ¾ Ń
Š¾ŃŠøŃŠµ Š¾ŃŠøŃŃŠøŃŃ Š¾ŃŠµŃŠµŠ“Ń Š¾Ń ŠŠ”ŠŠ„ ŃŠæŠøŠ·Š¾Š“Š¾Š².</string> @@ -276,7 +294,7 @@ <string name="enable_sonic">ŠŠŗŠ»ŃŃŠøŃŃ Sonic</string> <!--Empty list labels--> <string name="no_items_label">Š”ŠæŠøŃŠ¾Šŗ ŠæŃŃŃ</string> - <string name="no_feeds_label">ŠŃ ŠµŃŃ Š½Šµ ŠæŠ¾Š“ŠæŠøŃŠ°Š½Ń Š½Šø Š½Š° Š¾Š“ŠøŠ½ ŠŗŠ°Š½Š°Š».</string> + <string name="no_feeds_label">ŠŃ ŠµŃŃ Š½Šµ ŠæŠ¾Š“ŠæŠøŃŠ°Š½Ń Š½Šø Š½Š° Š¾Š“ŠøŠ½ ŠæŠ¾Š“ŠŗŠ°ŃŃ.</string> <string name="no_chapters_label">ŠŃŠ¾Ń Š²ŃŠæŃŃŠŗ Š½Šµ ŃŠ¾Š“ŠµŃŠ¶ŠøŃ Š¾Š³Š»Š°Š²Š»ŠµŠ½ŠøŃ.</string> <string name="no_shownotes_label">ŠŃŠ¾Ń Š²ŃŠæŃŃŠŗ Š½Šµ ŃŠ¾Š“ŠµŃŠ¶ŠøŃ ŠæŃŠøŠ¼ŠµŃŠ°Š½ŠøŠ¹.</string> <!--Preferences--> @@ -285,15 +303,23 @@ <string name="other_pref">ŠŃŠ¾ŃŠµŠµ</string> <string name="about_pref">Š ŠæŃŠ¾Š³ŃŠ°Š¼Š¼Šµ</string> <string name="queue_label">ŠŃŠµŃŠµŠ“Ń</string> - <string name="services_label">Š”ŠµŃŠ²ŠøŃŃ</string> + <string name="integrations_label">ŠŠ½ŃŠµŠ³ŃŠ°ŃŠøŃ</string> <string name="flattr_label">Flattr</string> + <string name="flattr_summary">Š£ŃŠ»ŃŠ³Š° Š¼ŠøŠŗŃŠ¾ŠæŠ»Š°ŃŠµŠ¶ŠµŠ¹</string> + <string name="automation">ŠŠ²ŃŠ¾Š¼Š°ŃŠøŠ·Š°ŃŠøŃ</string> + <string name="download_pref_details">ŠŠ¾Š“ŃŠ¾Š±Š½ŠµŠµ</string> + <string name="import_export_pref">ŠŠ¼ŠæŠ¾ŃŃ/ŃŠŗŃŠæŠ¾ŃŃ</string> + <string name="appearance">ŠŠ½ŠµŃŠ½ŠøŠ¹ Š²ŠøŠ“</string> + <string name="external_elements">ŠŠ½ŠµŃŠ½ŠøŠµ Š¾ŃŠ³Š°Š½Ń ŃŠæŃŠ°Š²Š»ŠµŠ½ŠøŃ</string> + <string name="interruptions">ŠŃŠµŃŃŠ²Š°Š½ŠøŃ</string> + <string name="buttons">ŠŠ½Š¾ŠæŠŗŠø ŃŠæŃŠ°Š²Š»ŠµŠ½ŠøŃ Š²Š¾ŃŠæŃŠ¾ŠøŠ·Š²ŠµŠ“ŠµŠ½ŠøŠµŠ¼</string> + <string name="media_player">ŠŃŠ¾ŠøŠ³ŃŃŠ²Š°ŃŠµŠ»Ń</string> <string name="pref_episode_cleanup_title">Š£Š“Š°Š»ŠµŠ½ŠøŠµ Š²ŃŠæŃŃŠŗŠ¾Š²</string> <string name="pref_episode_cleanup_summary">ŠŃŠæŃŃŠŗŠø, ŠŗŠ¾ŃŠ¾ŃŃŠµ Š½Šµ ŃŃŠ¾ŃŃ Š² Š¾ŃŠµŃŠµŠ“Šø Šø Š½Šµ Š¾ŃŠ¼ŠµŃŠµŠ½Ń ŠŗŠ°Šŗ ŠøŠ·Š±ŃŠ°Š½Š½ŃŠµ Š¼Š¾Š³ŃŃ Š±ŃŃŃ ŃŠ“Š°Š»ŠµŠ½Ń Š“Š»Ń Š¾ŃŠ²Š¾Š±Š¾Š¶Š“ŠµŠ½ŠøŃ Š¼ŠµŃŃŠ° ŠæŠ¾Š“ ŠŠ²ŃŠ¾Š·Š°Š³ŃŃŠ·ŠŗŃ.</string> <string name="pref_pauseOnDisconnect_sum">ŠŃŠøŠ¾ŃŃŠ°Š½Š¾Š²ŠøŃŃ Š²Š¾ŃŠæŃŠ¾ŠøŠ·Š²ŠµŠ“ŠµŠ½ŠøŠµ, ŠŗŠ¾Š³Š“Š° Š½Š°ŃŃŠ½ŠøŠŗŠø ŠøŠ»Šø bluetooth Š¾ŃŠŗŠ»ŃŃŠµŠ½Ń</string> <string name="pref_unpauseOnHeadsetReconnect_sum">ŠŃŠ¾Š“Š¾Š»Š¶Š°ŃŃ Š²Š¾ŃŠæŃŠ¾ŠøŠ·Š²ŠµŠ“ŠµŠ½ŠøŠµ ŠæŠ¾ŃŠ»Šµ ŠæŠ¾Š“ŠŗŠ»ŃŃŠµŠ½ŠøŃ Š½Š°ŃŃŠ½ŠøŠŗŠ¾Š²</string> <string name="pref_unpauseOnBluetoothReconnect_sum">ŠŃŠ¾Š“Š¾Š»Š¶Š°ŃŃ Š²Š¾ŃŠæŃŠ¾ŠøŠ·Š²ŠµŠ“ŠµŠ½ŠøŠµ ŠæŠ¾ŃŠ»Šµ Š²Š¾ŃŃŃŠ°Š½Š¾Š²Š»ŠµŠ½ŠøŃ bluetooth-ŃŠ¾ŠµŠ“ŠøŠ½ŠµŠ½ŠøŃ</string> <string name="pref_hardwareForwardButtonSkips_title">ŠŃŠ¾ŠæŃŃŠŗŠ°ŃŃ ŠŗŠ½Š¾ŠæŠŗŠ¾Š¹ ŠæŠµŃŠµŠ¼Š¾ŃŠŗŠø Š²ŠæŠµŃŃŠ“</string> - <string name="pref_hardwareForwardButtonSkips_sum">ŠŃŠø Š½Š°Š¶Š°ŃŠøŠø Š½Š° ŃŠøŠ·ŠøŃŠµŃŠŗŃŃ ŠŗŠ½Š¾ŠæŠŗŃ ŠæŠµŃŠµŠ¼Š¾ŃŠŗŠø Š²ŠæŠµŃŃŠ“ ŠæŠµŃŠµŃ
Š¾Š“ŠøŃŃ Šŗ ŃŠ»ŠµŠ“ŃŃŃŠµŠ¼Ń Š²ŃŠæŃŃŠŗŃ Š²Š¼ŠµŃŃŠ¾ ŠæŠµŃŠµŠ¼Š¾ŃŠŗŠø</string> <string name="pref_hardwarePreviousButtonRestarts_title">Š Š½Š°ŃŠ°Š»Š¾ ŠŗŠ½Š¾ŠæŠŗŠ¾Š¹ ŠæŠµŃŠµŠ¼Š¾ŃŠŗŠø Š½Š°Š·Š°Š“</string> <string name="pref_hardwarePreviousButtonRestarts_sum">ŠŃŠø Š½Š°Š¶Š°ŃŠøŠø Š½Š° ŃŠøŠ·ŠøŃŠµŃŠŗŃŃ ŠŗŠ½Š¾ŠæŠŗŃ ŠæŠµŃŠµŠ¼Š¾ŃŠŗŠø Š½Š°Š·Š°Š“ ŠæŠµŃŠµŃ
Š¾Š“ŠøŃŃ Šŗ Š½Š°ŃŠ°Š»Ń Š²ŃŠæŃŃŠŗŠ° Š²Š¼ŠµŃŃŠ¾ ŠæŠµŃŠµŠ¼Š¾ŃŠŗŠø Š½Š°Š·Š°Š“</string> <string name="pref_followQueue_sum">ŠŠ¾ŃŠ»Šµ Š·Š°Š²ŠµŃŃŠµŠ½ŠøŃ Š²Š¾ŃŠæŃŠ¾ŠøŠ·Š²ŠµŠ“ŠµŠ½ŠøŃ ŠæŠµŃŠµŠ¹ŃŠø Šŗ ŃŠ»ŠµŠ“ŃŃŃŠµŠ¼Ń Š² Š¾ŃŠµŃŠµŠ“Šø</string> @@ -342,7 +368,7 @@ <string name="pref_nav_drawer_feed_order_title">Š£ŠæŠ¾ŃŃŠ“Š¾ŃŠøŃŃ ŠæŠ¾Š“ŠæŠøŃŠŗŠø</string> <string name="pref_nav_drawer_feed_order_sum">ŠŃŠ±ŃŠ°ŃŃ ŠæŠ¾ŃŃŠ“Š¾Šŗ Š¾ŃŠ¾Š±ŃŠ°Š¶ŠµŠ½ŠøŃ ŠæŠ¾Š“ŠæŠøŃŠ¾Šŗ</string> <string name="pref_nav_drawer_feed_counter_title">ŠŃŠ±ŃŠ°ŃŃ ŃŃŃŃŃŠøŠŗ ŠæŠ¾Š“ŠæŠøŃŠ¾Šŗ</string> - <string name="pref_nav_drawer_feed_counter_sum">ŠŃŠ±ŃŠ°ŃŃ ŠŗŠ°ŠŗŃŃ ŠøŠ½ŃŠ¾ŃŠ¼Š°ŃŠøŃ ŠæŠ¾ŠŗŠ°Š·ŃŠ²Š°ŃŃ Š² ŃŃŃŃŃŠøŠŗŠµ ŠæŠ¾Š“ŠæŠøŃŠ¾Šŗ</string> + <string name="pref_nav_drawer_feed_counter_sum">ŠŃŠ±ŃŠ°ŃŃ ŠŗŠ°ŠŗŃŃ ŠøŠ½ŃŠ¾ŃŠ¼Š°ŃŠøŃ ŠæŠ¾ŠŗŠ°Š·ŃŠ²Š°ŃŃ Š² ŃŃŃŃŃŠøŠŗŠµ ŠæŠ¾Š“ŠæŠøŃŠ¾Šŗ. ŠŠ»ŠøŃŠµŃ ŃŠ°ŠŗŠ¶Šµ Š½Š° Š¾ŃŠµŃŃŠ“Š½Š¾ŃŃŃ ŠæŠ¾Š“ŠæŠøŃŠ¾Šŗ, ŠµŃŠ»Šø ŃŠ¾ŃŃŠøŃŠ¾Š²ŠŗŠ° ŠæŠ¾Š“ŠæŠøŃŠ¾Šŗ ŠæŃŠ¾ŠøŠ·Š²Š¾Š“ŠøŃŃŃ ŠæŠ¾ ŃŃŃŃŃŠøŠŗŃ.</string> <string name="pref_set_theme_sum">ŠŠ·Š¼ŠµŠ½ŠøŃŃ ŃŠµŠ¼Ń Š¾ŃŠ¾ŃŠ¼Š»ŠµŠ½ŠøŃ AntennaPod</string> <string name="pref_automatic_download_title">ŠŠ²ŃŠ¾Š¼Š°ŃŠøŃŠµŃŠŗŠ°Ń Š·Š°Š³ŃŃŠ·ŠŗŠ°</string> <string name="pref_automatic_download_sum">ŠŠ°ŃŃŃŠ¾ŠøŃŃ Š°Š²ŃŠ¾Š¼Š°ŃŠøŃŠµŃŠŗŃŃ Š·Š°Š³ŃŃŠ·ŠŗŃ Š²ŃŠæŃŃŠŗŠ¾Š².</string> @@ -356,6 +382,7 @@ <string name="pref_episode_cache_title">ŠŃŃ Š²ŃŠæŃŃŠŗŠ¾Š²</string> <string name="pref_theme_title_light">Š”Š²ŠµŃŠ»Š°Ń</string> <string name="pref_theme_title_dark">Š¢ŃŠ¼Š½Š°Ń</string> + <string name="pref_theme_title_trueblack">Š§ŃŃŠ½Š°Ń (Š“Š»Ń AMOLED)</string> <string name="pref_episode_cache_unlimited">ŠŠµŠ¾Š³ŃŠ°Š½ŠøŃŠµŠ½</string> <string name="pref_update_interval_hours_plural">Ń.</string> <string name="pref_update_interval_hours_singular">Ń.</string> @@ -384,8 +411,6 @@ <string name="pref_rewind_sum">ŠŠ°ŃŃŃŠ¾Š¹ŃŠµ Š“Š»ŠøŠ½Ń ŃŠ°Š³Š° Š² ŃŠµŠŗŃŠ½Š“Š°Ń
ŠæŃŠø Š½Š°Š¶Š°ŃŠøŠø ŠŗŠ½Š¾ŠæŠŗŠø ŠæŠµŃŠµŠ¼Š¾ŃŠŗŠø Š½Š°Š·Š°Š“</string> <string name="pref_gpodnet_sethostname_title">ŠŠ°Š“Š°ŃŃ ŠøŠ¼Ń ŃŠ·Š»Š°</string> <string name="pref_gpodnet_sethostname_use_default_host">ŠŃŠæŠ¾Š»ŃŠ·Š¾Š²Š°ŃŃ ŃŠ·ŠµŠ» ŠæŠ¾ ŃŠ¼Š¾Š»ŃŠ°Š½ŠøŃ</string> - <string name="pref_expandNotify_title">Š Š°Š·Š²ŃŃŠ½ŃŃŠ¾Šµ ŃŠ²ŠµŠ“Š¾Š¼Š»ŠµŠ½ŠøŠµ</string> - <string name="pref_expandNotify_sum">ŠŃŠµŠ³Š“Š° ŃŠ°Š·Š²Š¾ŃŠ°ŃŠøŠ²Š°ŃŃ ŃŠ²ŠµŠ“Š¾Š¼Š»ŠµŠ½ŠøŠµ, ŠæŠ¾ŠŗŠ°Š·ŃŠ²Š°Ń ŠŗŠ½Š¾ŠæŠŗŠø ŃŠæŃŠ°Š²Š»ŠµŠ½ŠøŃ Š²Š¾ŃŠæŃŠ¾ŠøŠ·Š²ŠµŠ“ŠµŠ½ŠøŠµŠ¼.</string> <string name="pref_persistNotify_title">ŠŠ¾ŃŃŠ¾ŃŠ½Š½ŃŠµ ŠŗŠ½Š¾ŠæŠŗŠø Š²Š¾ŃŠæŃŠ¾ŠøŠ·Š²ŠµŠ“ŠµŠ½ŠøŃ</string> <string name="pref_persistNotify_sum">Š”Š¾Ń
ŃŠ°Š½ŃŃŃ ŃŠ²ŠµŠ“Š¾Š¼Š»ŠµŠ½ŠøŠµ Šø ŠŗŠ½Š¾ŠæŠŗŠø Š²Š¾ŃŠæŃŠ¾ŠøŠ·Š²ŠµŠ“ŠµŠ½ŠøŃ Š½Š° ŃŠŗŃŠ°Š½Šµ Š±Š»Š¾ŠŗŠøŃŠ¾Š²ŠŗŠø Š²Š¾ Š²ŃŠµŠ¼Ń ŠæŠ°ŃŠ·Ń.</string> <string name="pref_compact_notification_buttons_title">ŠŃŠ±ŃŠ°ŃŃ ŠŗŠ½Š¾ŠæŠŗŠø ŃŠŗŃŠ°Š½Š° Š±Š»Š¾ŠŗŠøŃŠ¾Š²ŠŗŠø</string> @@ -406,8 +431,7 @@ <string name="crash_report_sum">ŠŃŠ¾ŃŠ»Š°ŃŃ ŠæŠ¾ŃŠ»ŠµŠ“Š½ŠøŠ¹ Š¾ŃŃŃŃ Š¾ ŃŠ±Š¾Šµ ŠæŠ¾ e-mail</string> <string name="send_email">ŠŃŠæŃŠ°Š²ŠøŃŃ Email</string> <string name="experimental_pref">ŠŠŗŃŠæŠµŃŠøŠ¼ŠµŠ½ŃŠ°Š»ŃŠ½ŃŠµ Š½Š°ŃŃŃŠ¾Š¹ŠŗŠø</string> - <string name="pref_sonic_title">ŠŃŠ¾ŠøŠ³ŃŃŠ²Š°ŃŃ ŃŠµŃŠµŠ· Sonic</string> - <string name="pref_sonic_message">ŠŠ°Š“ŠµŠ¹ŃŃŠ²Š¾Š²Š°ŃŃ Š²ŃŃŃŠ¾ŠµŠ½Š½ŃŠ¹ Š¼ŠµŠ“ŠøŠ° ŠæŃŠ¾ŠøŠ³ŃŃŠ²Š°ŃŠµŠ»Ń Sonic Š²Š¼ŠµŃŃŠ¾ ŃŃŠ°Š½Š“Š°ŃŃŠ½Š¾Š³Š¾ ŠøŠ· ŠŠ” Android Šø Prestissimo</string> + <string name="pref_media_player_message">ŠŃŠ±ŠµŃŠøŃŠµ ŠŗŠ°ŠŗŠøŠ¼ ŠæŃŠ¾ŠøŠ³ŃŃŠ²Š°ŃŠµŠ»ŠµŠ¼ ŃŠ»ŠµŠ“ŃŠµŃ Š²Š¾ŃŠæŃŠ¾ŠøŠ·Š²Š¾Š“ŠøŃŃ ŃŠ°Š¹Š»Ń</string> <string name="pref_current_value">Š¢ŠµŠŗŃŃŠµŠµ Š·Š½Š°ŃŠµŠ½ŠøŠµ: %1$s</string> <string name="pref_proxy_title">ŠŃŠ¾ŠŗŃŠø</string> <string name="pref_proxy_sum">ŠŠ°ŃŃŃŠ¾Š¹ŠŗŠø ŠæŃŠ¾ŠŗŃŠø</string> @@ -419,6 +443,11 @@ <string name="pref_cast_message_free_flavor">ŠŠ»Ń ŃŠ°Š±Š¾ŃŃ Chromecast ŃŃŠµŠ±ŃŃŃŃŃ ŃŠ¾Š±ŃŃŠ²ŠµŠ½Š½ŠøŃŠµŃŠŗŠøŠµ Š±ŠøŠ±Š»ŠøŠ¾ŃŠµŠŗŠø ŃŃŠµŃŃŠµŠ¹ ŃŃŠ¾ŃŠ¾Š½Ń, ŠŗŠ¾ŃŠ¾ŃŃŠµ Š½Šµ Š²ŠŗŠ»ŃŃŠµŠ½Ń Š² Š“Š°Š½Š½ŃŃ Š²ŠµŃŃŠøŃ AntennaPod</string> <string name="pref_enqueue_downloaded_title">ŠŠ¾Š±Š°Š²Š»ŃŃŃ Š·Š°Š³ŃŃŠ¶ŠµŠ½Š½ŃŠµ Š² Š¾ŃŠµŃŠµŠ“Ń</string> <string name="pref_enqueue_downloaded_summary">ŠŠ¾Š±Š°Š²Š»ŃŃŃ Š·Š°Š³ŃŃŠ¶ŠµŠ½Š½ŃŠµ Š²ŃŠæŃŃŠŗŠø Š² Š¾ŃŠµŃŠµŠ“Ń</string> + <string name="media_player_builtin">ŠŃŃŃŠ¾ŠµŠ½Š½ŃŠ¹ Š² Android ŠæŃŠ¾ŠøŠ³ŃŃŠ²Š°ŃŠµŠ»Ń</string> + <string name="pref_videoBehavior_title">ŠŃŠø Š·Š°Š²ŠµŃŃŠµŠ½ŠøŠø Š²ŠøŠ“ŠµŠ¾</string> + <string name="pref_videoBehavior_sum">ŠŃŠø ŃŠ²Š¾ŃŠ°ŃŠøŠ²Š°Š½ŠøŠø ŠæŃŠ¾ŠøŠ³ŃŃŠ²Š°ŃŠµŠ»Ń Š²ŠøŠ“ŠµŠ¾</string> + <string name="stop_playback">Š¾ŃŃŠ°Š½Š¾Š²ŠøŃŃ Š²Š¾ŃŠæŃŠ¾ŠøŠ·Š²ŠµŠ“ŠµŠ½ŠøŠµ</string> + <string name="continue_playback">ŠŃŠ¾Š“Š¾Š»Š¶ŠøŃŃ Š²Š¾ŃŠæŃŠ¾ŠøŠ·Š²ŠµŠ“ŠµŠ½ŠøŠµ Š·Š²ŃŠŗŠ°</string> <!--Auto-Flattr dialog--> <string name="auto_flattr_enable">ŠŠŗŠ»ŃŃŠøŃŃ Š°Š²ŃŠ¾Š¼Š°ŃŠøŃŠµŃŠŗŃŃ ŠæŠ¾Š“Š“ŠµŃŠ¶ŠŗŃ ŃŠµŃŠµŠ· Flattr</string> <string name="auto_flattr_after_percent">ŠŠ¾Š“Š“ŠµŃŠ¶ŠøŠ²Š°ŃŃ ŃŠµŃŠµŠ· Flattr ŃŠæŠøŠ·Š¾Š“Ń, ŠæŃŠ¾ŃŠ»ŃŃŠ°Š½Š½ŃŠµ Š½Š° %d ŠæŃŠ¾ŃŠµŠ½ŃŠ¾Š²</string> @@ -428,8 +457,8 @@ <string name="search_hint">ŠŠ°Š¹ŃŠø Š²ŃŠæŃŃŠŗŠø</string> <string name="found_in_shownotes_label">ŠŠ°Š¹Š“ŠµŠ½Š¾ Š² ŠæŃŠøŠ¼ŠµŃŠ°Š½ŠøŃŃ
Šŗ Š²ŃŠæŃŃŠŗŃ</string> <string name="found_in_chapters_label">ŠŠ°Š¹Š“ŠµŠ½Š¾ Š² Š³Š»Š°Š²Š°Ń
</string> - <string name="found_in_authors_label">ŠŠ°Š¹Š“ŠµŠ½Š¾ Š² Š°Š²ŃŠ¾ŃŠ°Ń
</string> - <string name="found_in_feeds_label">ŠŠ°Š¹Š“ŠµŠ½Š¾ Š² ŠŗŠ°Š½Š°Š»Š°Ń
</string> + <string name="found_in_authors_label">ŠŠ°Š¹Š“ŠµŠ½Š¾ ŃŃŠµŠ“Šø Š°Š²ŃŠ¾ŃŠ¾Š²</string> + <string name="found_in_feeds_label">ŠŠ°Š¹Š“ŠµŠ½Š¾ Š² ŠæŠ¾Š“ŠŗŠ°ŃŃŠ°Ń
</string> <string name="search_status_no_results">ŠŠøŃŠµŠ³Š¾ Š½Šµ Š½Š°Š¹Š“ŠµŠ½Š¾</string> <string name="search_label">ŠŠ¾ŠøŃŠŗ</string> <string name="found_in_title_label">ŠŠ°Š¹Š“ŠµŠ½Š¾ Š² Š·Š°Š³Š¾Š»Š¾Š²ŠŗŠµ</string> @@ -455,8 +484,10 @@ <string name="html_export_label">ŠŠŗŃŠæŠ¾ŃŃ Š² HTML</string> <string name="exporting_label">ŠŠŗŃŠæŠ¾ŃŃŠøŃŃŠµŃŃŃ...</string> <string name="export_error_label">ŠŃŠøŠ±ŠŗŠ° ŃŠŗŃŠæŠ¾ŃŃŠ°</string> - <string name="opml_export_success_title">OPML ŃŃŠæŠµŃŠ½Š¾ ŃŠŗŃŠæŠ¾ŃŃŠøŃŠ¾Š²Š°Š½.</string> - <string name="opml_export_success_sum">Š¤Š°Š¹Š» OPML Š±ŃŠ» Š·Š°ŠæŠøŃŠ°Š½ Š²:\u0020</string> + <string name="export_success_title">ŠŠŗŃŠæŠ¾ŃŃ Š·Š°Š²ŠµŃŃŃŠ½ ŃŃŠæŠµŃŠ½Š¾</string> + <string name="export_success_sum">ŠŠŗŃŠæŠ¾ŃŃ Š¾ŃŃŃŠµŃŃŠ²Š»ŃŠ½ Š² ŃŠ°Š¹Š»: + +%1$s</string> <string name="opml_import_ask_read_permission">ŠŠ»Ń ŃŃŠµŠ½ŠøŃ ŃŠ°Š¹Š»Š° OPML Š½ŠµŠ¾Š±Ń
Š¾Š“ŠøŠ¼ Š“Š¾ŃŃŃŠæ Šŗ Š²Š½ŠµŃŠ½ŠµŠ¼Ń Ń
ŃŠ°Š½ŠøŠ»ŠøŃŃ</string> <!--Sleep timer--> <string name="set_sleeptimer_label">Š£ŃŃŠ°Š½Š¾Š²ŠøŃŃ ŃŠ°Š¹Š¼ŠµŃ ŃŠ½Š°</string> @@ -635,7 +666,7 @@ <string name="label_import">ŠŠ¼ŠæŠ¾ŃŃ</string> <string name="label_export">ŠŠŗŃŠæŠ¾ŃŃ</string> <string name="import_select_file">ŠŃŠ±ŠµŃŠøŃŠµ ŠøŠ¼ŠæŠ¾ŃŃŠøŃŃŠµŠ¼ŃŠ¹ ŃŠ°Š¹Š»</string> - <string name="export_ok">Š£ŃŠæŠµŃŠ½Š¾ ŃŠŗŃŠæŠ¾ŃŃŠøŃŠ¾Š²Š°Š½Š¾. ŠŠ°Š·Š° Š“Š°Š½Š½ŃŃ
Š±ŃŠ»Š° Š·Š°ŠæŠøŃŠ°Š½Š° Š½Š° ŠŗŠ°ŃŃŃ ŠæŠ°Š¼ŃŃŠø.</string> + <string name="export_ok">Š£ŃŠæŠµŃŠ½Š¾ ŃŠŗŃŠæŠ¾ŃŃŠøŃŠ¾Š²Š°Š½Š¾.</string> <string name="import_ok">Š£ŃŠæŠµŃŠ½Š¾ ŠøŠ¼ŠæŠ¾ŃŃŠøŃŠ¾Š²Š°Š½Š¾.\n\nŠŠ¾Š¶Š°Š»ŃŠ¹ŃŃŠ°, Š½Š°Š¶Š¼ŠøŃŠµ OK, ŃŃŠ¾Š±Ń ŠæŠµŃŠµŠ·Š°ŠæŃŃŃŠøŃŃ AntennaPod</string> <!--Casting--> <string name="cast_media_route_menu_title">ŠŠ¾ŃŠæŃŠ¾ŠøŠ·Š²ŠµŃŃŠø Š½Š°ā¦</string> @@ -653,4 +684,13 @@ <string name="cast_failed_seek">ŠŠµ ŃŠ“Š°Š»Š¾ŃŃ Š²ŃŠæŠ¾Š»Š½ŠøŃŃ ŠæŠµŃŠµŠ¼Š¾ŃŠŗŃ Š½Š° ŃŃŃŃŠ¾Š¹ŃŃŠ²Šµ Google cast</string> <string name="cast_failed_receiver_player_error">Š”ŠµŃŃŃŠ·Š½Š°Ń Š¾ŃŠøŠ±ŠŗŠ° Š²Š¾ŃŠæŃŠ¾ŠøŠ·Š²ŠµŠ“ŠµŠ½ŠøŃ Š² ŃŃŃŃŠ¾Š¹ŃŃŠ²Šµ Google cast</string> <string name="cast_failed_media_error_skipping">ŠŃŠøŠ±ŠŗŠ° Š²Š¾ŃŠæŃŠ¾ŠøŠ·Š²ŠµŠ“ŠµŠ½ŠøŃ. ŠŃŠ¾ŠæŃŃŠŗŠ°Ńā¦</string> + <!--Notification channels--> + <string name="notification_channel_user_action">Š¢ŃŠµŠ±ŃŠµŃŃŃ Š“ŠµŠ¹ŃŃŠ²ŠøŠµ</string> + <string name="notification_channel_user_action_description">ŠŠ¾ŠŗŠ°Š·ŃŠ²Š°ŠµŃŃŃ, ŠŗŠ¾Š³Š“Š° ŃŃŠµŠ±ŃŠµŃŃŃ Š“ŠµŠ¹ŃŃŠ²ŠøŠµ, Š½Š°ŠæŃŠøŠ¼ŠµŃ, Š“Š»Ń Š²Š²Š¾Š“Š° ŠæŠ°ŃŠ¾Š»Ń.</string> + <string name="notification_channel_downloading">ŠŠ“ŃŃ Š·Š°Š³ŃŃŠ·ŠŗŠ°</string> + <string name="notification_channel_downloading_description">ŠŠ¾ŠŗŠ°Š·ŃŠ²Š°ŠµŃŃŃ Š²Š¾ Š²ŃŠµŠ¼Ń Š·Š°Š³ŃŃŠ·ŠŗŠø.</string> + <string name="notification_channel_playing">ŠŠ“ŃŃ Š²Š¾ŃŠæŃŠ¾ŠøŠ·Š²ŠµŠ“ŠµŠ½ŠøŠµ</string> + <string name="notification_channel_playing_description">ŠŠ¾Š·Š²Š¾Š»ŃŠµŃ ŃŠæŃŠ°Š²Š»ŃŃŃ Š²Š¾ŃŠæŃŠ¾ŠøŠ·Š²ŠµŠ“ŠµŠ½ŠøŠµŠ¼. ŠŃŠ½Š¾Š²Š½Š¾Šµ ŃŠ²ŠµŠ“Š¾Š¼Š»ŠµŠ½ŠøŠµ, ŠæŠ¾ŠŗŠ°Š·ŃŠ²Š°ŠµŃŃŃ ŠæŃŠø Š²Š¾ŃŠæŃŠ¾ŠøŠ·Š²ŠµŠ“ŠµŠ½ŠøŠø ŠæŠ¾Š“ŠŗŠ°ŃŃŠ°.</string> + <string name="notification_channel_error">ŠŃŠøŠ±ŠŗŠø</string> + <string name="notification_channel_error_description">ŠŠ¾ŠŗŠ°Š·ŃŠ²Š°ŠµŃŃŃ ŠµŃŠ»Šø ŃŃŠ¾-ŃŠ¾ ŠæŠ¾ŃŠ»Š¾ Š½Šµ ŃŠ°Šŗ, Šŗ ŠæŃŠøŠ¼ŠµŃŃ, Š½ŠµŃŠ“Š°Š²ŃŠ°ŃŃŃ Š·Š°Š³ŃŃŠ·ŠŗŠ° ŠøŠ»Šø ŃŠøŠ½Ń
ŃŠ¾Š½ŠøŠ·Š°ŃŠøŃ Ń gpodder.</string> </resources> diff --git a/core/src/main/res/values-sv-rSE/strings.xml b/core/src/main/res/values-sv-rSE/strings.xml index cb7474ed4..d56307e07 100644 --- a/core/src/main/res/values-sv-rSE/strings.xml +++ b/core/src/main/res/values-sv-rSE/strings.xml @@ -1,11 +1,13 @@ <?xml version='1.0' encoding='UTF-8'?> <resources xmlns:tools="http://schemas.android.com/tools"> <!--Activitiy and fragment titles--> + <string name="feed_update_receiver_name">Uppdatera Prenumerationer</string> <string name="feeds_label">Flƶden</string> <string name="statistics_label">Statistik</string> <string name="add_feed_label">LƤgg till Podcast</string> <string name="episodes_label">Episoder</string> <string name="all_episodes_short_label">Alla</string> + <string name="new_episodes_label">Nytt</string> <string name="favorite_episodes_label">Favoriter</string> <string name="new_label">Nya</string> <string name="settings_label">InstƤllningar</string> @@ -18,10 +20,12 @@ <string name="cancel_download_label">Avbryt\nNedladdning</string> <string name="playback_history_label">Uppspelningshistorik</string> <string name="gpodnet_main_label">gpodder.net</string> + <string name="gpodnet_summary">Synkronisera med andra enheter</string> <string name="gpodnet_auth_label">Inloggning till gpodder.net</string> <string name="free_space_label">%1$s kvar</string> <string name="episode_cache_full_title">Episodcachen Ƥr full</string> <string name="episode_cache_full_message">Episodcachens grƤns har nĆ„tts. Du kan ƶka cachens storlek i instƤllningarna.</string> + <string name="synchronizing">Synkroniserar...</string> <!--Statistics fragment--> <string name="total_time_listened_to_podcasts">Total uppspelningstid:</string> <string name="statistics_details_dialog">%1$d av %2$d episoder startade.\n\nSpelat %3$s av %4$s.</string> @@ -56,13 +60,14 @@ <string name="yes">Ja</string> <string name="no">Nej</string> <string name="reset">Ć
terstƤll</string> - <string name="author_label">Skapare</string> + <string name="author_label">Fƶrfattare</string> <string name="language_label">SprĆ„k</string> <string name="url_label">URL</string> <string name="podcast_settings_label">InstƤllningar</string> <string name="cover_label">Bild</string> <string name="error_label">Fel</string> <string name="error_msg_prefix">Ett fel intrƤffade:</string> + <string name="needs_storage_permission">LagringtillstĆ„nd behƶvs fƶr denna Ć„tgƤrd</string> <string name="refresh_label">Uppdatera</string> <string name="external_storage_error_msg">Ingen extern lagring Ƥr tillgƤnglig. Se till att montera en extern lagringsenhet sĆ„ att appen kan fungera korrekt.</string> <string name="chapters_label">Kapitel</string> @@ -105,25 +110,28 @@ <string name="mark_all_read_label">Markera alla som spelade</string> <string name="mark_all_read_msg">Markera alla Episoder som spelade</string> <string name="mark_all_read_confirmation_msg">BekrƤfta att du verkligen vill markera alla episoder som spelade.</string> - <string name="mark_all_read_feed_confirmation_msg">BekrƤfta att du verkligen vill markera alla episoder i detta flƶde som spelade.</string> + <string name="mark_all_read_feed_confirmation_msg">BekrƤfta att du vill markera alla episider i denna podcast som spelade.</string> <string name="mark_all_seen_label">Markera alla som sedda</string> - <string name="mark_all_seen_msg">Markera alla Episoder som sedda</string> + <string name="mark_all_seen_msg">Markerade alla episoder som sedda</string> <string name="mark_all_seen_confirmation_msg">BekrƤfta att du vill markera alla episoder som sedda.</string> <string name="show_info_label">Visa information</string> - <string name="rename_feed_label">Byt namn pĆ„ Podcast</string> - <string name="remove_feed_label">Ta bort Podcast</string> + <string name="show_feed_settings_label">Visa podcastinstƤllningar</string> + <string name="feed_info_label">Podcastinfo</string> + <string name="feed_settings_label">PodcastinstƤllningar</string> + <string name="rename_feed_label">Byt namn pĆ„ podcast</string> + <string name="remove_feed_label">Ta bort podcast</string> <string name="share_label">Delaā¦</string> - <string name="share_link_label">Dela LƤnk</string> + <string name="share_link_label">Dela Episod-URL</string> + <string name="share_link_with_position_label">Dela Episod-URL med Position</string> <string name="share_file_label">Dela Fil</string> - <string name="share_link_with_position_label">Dela LƤnk med Position</string> <string name="share_feed_url_label">Dela Flƶdets URL</string> - <string name="share_item_url_label">Dela Episoden Fil-URL</string> - <string name="share_item_url_with_position_label">Dela Episodens Fil-URL med Position</string> - <string name="feed_delete_confirmation_msg">BekrƤfta att du vill ta bort flƶdet \"%1$s\" och ALLA episoder du laddat ned frĆ„n detta flƶde.</string> - <string name="feed_remover_msg">Tar bort Flƶde</string> - <string name="load_complete_feed">Uppdatera hela Flƶdet</string> + <string name="share_item_url_label">Dela Mediafilens URL</string> + <string name="share_item_url_with_position_label">Dela Mediafilens URL med Position</string> + <string name="feed_delete_confirmation_msg">BekrƤfta att du vill ta bort podcast \"%1$s\" och ALLA dess episoder (inklusive nedladdade episoder).</string> + <string name="feed_remover_msg">Tar bort podcast</string> + <string name="load_complete_feed">Uppdatera hela podcasten</string> <string name="hide_episodes_title">Dƶlj Episoder</string> - <string name="episode_actions">Applicera Ć„tgƤrder</string> + <string name="batch_edit">Batchredigering</string> <string name="hide_unplayed_episodes_label">Ospelade</string> <string name="hide_paused_episodes_label">Pausade</string> <string name="hide_played_episodes_label">Spelad</string> @@ -132,6 +140,7 @@ <string name="hide_downloaded_episodes_label">Nedladdade</string> <string name="hide_not_downloaded_episodes_label">Ej nedladdade</string> <string name="hide_has_media_label">Har media</string> + <string name="hide_is_favorite_label">Ćr favorit</string> <string name="filtered_label">Filtrerad</string> <string name="refresh_failed_msg">{fa-exclamation-circle} Senaste uppdateringen misslyckades</string> <string name="open_podcast">Ćppna Podcast</string> @@ -145,6 +154,7 @@ <string name="delete_label">Ta bort</string> <string name="delete_failed">Kunde inte ta bort filen. Testa att starta om enheten.</string> <string name="remove_episode_lable">Ta bort Episod</string> + <string name="mark_as_seen_label">Markera som sedd</string> <string name="marked_as_seen_label">Markera som sedd</string> <string name="mark_read_label">Markera som spelad</string> <string name="marked_as_read_label">Markera som spelad</string> @@ -168,6 +178,8 @@ <string name="download_failed">misslyckades</string> <string name="download_pending">Avvaktar nedladdning</string> <string name="download_running">Nedladdning pĆ„gĆ„r</string> + <string name="download_error_details">Detaljer</string> + <string name="download_error_details_message">%1$s \n\nFil-URL:\n%2$s</string> <string name="download_error_device_not_found">Hittade ingen lagringsenhet</string> <string name="download_error_insufficient_space">OtillrƤckligt Utrymme</string> <string name="download_error_file_error">Filfel</string> @@ -218,6 +230,7 @@ <string name="playback_error_unknown">OkƤnt fel</string> <string name="no_media_playing_label">Inget media spelar</string> <string name="player_buffering_msg">Buffrar</string> + <string name="player_go_to_picture_in_picture">Bild-i-bild lƤge</string> <string name="playbackservice_notification_title">Spelar podcast</string> <string name="unknown_media_key">AntannaPod - OkƤnd mediaknapp: %1$d</string> <!--Queue operations--> @@ -234,7 +247,9 @@ <string name="date">Datum</string> <string name="duration">LƤngd</string> <string name="episode_title">Episodtitel</string> - <string name="feed_title">Flƶdestitel</string> + <string name="feed_title">Podcasttitel</string> + <string name="random">Slumpa</string> + <string name="smart_shuffle">Smart Blandning</string> <string name="ascending">Stigande</string> <string name="descending">Fallande</string> <string name="clear_queue_confirmation_msg">BekrƤfta att du vill rensa kƶn frĆ„n ALLA episoder.</string> @@ -272,7 +287,7 @@ <string name="enable_sonic">Aktivera Sonic</string> <!--Empty list labels--> <string name="no_items_label">Det finns inget i denna lista.</string> - <string name="no_feeds_label">Du har inte prenumererat pĆ„ nĆ„got flƶde Ƥnnu.</string> + <string name="no_feeds_label">Du har inte prenumererat pĆ„ nĆ„gra podcasts Ƥn.</string> <string name="no_chapters_label">Denna episod har inga kapitel.</string> <string name="no_shownotes_label">Denna episod har inga shownotes.</string> <!--Preferences--> @@ -281,15 +296,23 @@ <string name="other_pref">Annat</string> <string name="about_pref">Om</string> <string name="queue_label">Kƶ</string> - <string name="services_label">TjƤnster</string> + <string name="integrations_label">Integrationer</string> <string name="flattr_label">Flattr</string> + <string name="flattr_summary">MikrobetalningstjƤnst</string> + <string name="automation">Automatisering</string> + <string name="download_pref_details">Detaljer</string> + <string name="import_export_pref">Importera/Exportera</string> + <string name="appearance">Utseende</string> + <string name="external_elements">Externa element</string> + <string name="interruptions">Avbrott</string> + <string name="buttons">Uppspelningsknappar</string> + <string name="media_player">Mediaspelare</string> <string name="pref_episode_cleanup_title">Episodupprensning</string> <string name="pref_episode_cleanup_summary">Episoder som inte Ƥr i kƶn och inte Ƥr favoriter kan tas bort om Automatisk Nedladdning behƶver utrymme fƶr nya episoder</string> <string name="pref_pauseOnDisconnect_sum">Pausa uppspelningen nƤr hƶrlurar eller bluetooth kopplas ifrĆ„n.</string> <string name="pref_unpauseOnHeadsetReconnect_sum">FortsƤtt uppspelningen nƤr hƶrlurarna Ć„teransluts</string> <string name="pref_unpauseOnBluetoothReconnect_sum">FortsƤtt uppspelningen nƤr bluetooth Ć„teransluts</string> <string name="pref_hardwareForwardButtonSkips_title">Knappen spola fram hoppar</string> - <string name="pref_hardwareForwardButtonSkips_sum">Hoppa till nƤsta episod istƤllet fƶr att snabbspola vid tryck pĆ„ hĆ„rdvaruknappen</string> <string name="pref_hardwarePreviousButtonRestarts_title">Knappen fƶregĆ„ende startar om</string> <string name="pref_hardwarePreviousButtonRestarts_sum">Starta om den nuvarande episoden nƤr du trycker pĆ„ hĆ„rdvaruknappen fƶr fƶregĆ„ende istƤllet fƶr att spola tillbaka</string> <string name="pref_followQueue_sum">Hoppa till nƤsta i kƶn nƤr uppspelningen Ƥr klar</string> @@ -338,7 +361,7 @@ <string name="pref_nav_drawer_feed_order_title">VƤlj Prenumerationsordning</string> <string name="pref_nav_drawer_feed_order_sum">Ćndra ordningen pĆ„ dina prenumerationer</string> <string name="pref_nav_drawer_feed_counter_title">Val Fƶr PrenumerationsrƤknaren</string> - <string name="pref_nav_drawer_feed_counter_sum">Ćndra informationen som visas av prenumerationsrƤknaren</string> + <string name="pref_nav_drawer_feed_counter_sum">Ćndra informationen som visas vid prenumerationsrƤknaren. PĆ„verkar Ƥven sorteringen av prenumerationer om \'Prenumerationsordning\' Ƥr satt till \'RƤknare\'.</string> <string name="pref_set_theme_sum">Ćndra utseendet pĆ„ AntennaPod.</string> <string name="pref_automatic_download_title">Automatisk Nedladdning</string> <string name="pref_automatic_download_sum">Konfigurera automatisk nedladdning av episoder.</string> @@ -352,6 +375,7 @@ <string name="pref_episode_cache_title">Episodcache</string> <string name="pref_theme_title_light">Ljust</string> <string name="pref_theme_title_dark">Mƶrkt</string> + <string name="pref_theme_title_trueblack">Svart (AMOLED redo)</string> <string name="pref_episode_cache_unlimited">ObegrƤnsat</string> <string name="pref_update_interval_hours_plural">timmar</string> <string name="pref_update_interval_hours_singular">timme</string> @@ -380,8 +404,6 @@ <string name="pref_rewind_sum">Anpassa antalet sekunder att hoppa bakĆ„t nƤr snabbspolningsknappen bakĆ„t anvƤnds</string> <string name="pref_gpodnet_sethostname_title">SƤtt vƤrdnamn</string> <string name="pref_gpodnet_sethostname_use_default_host">AnvƤnd standardvƤrden</string> - <string name="pref_expandNotify_title">Expandera aviseringen</string> - <string name="pref_expandNotify_sum">Expandera alltid aviseringen fƶr att visa uppspelningskontrollerna.</string> <string name="pref_persistNotify_title">BestĆ„ende Uppspelningskontroller</string> <string name="pref_persistNotify_sum">BehĆ„ll avisering och kontroller pĆ„ lĆ„sskƤrmen nƤr uppspelningen pausas.</string> <string name="pref_compact_notification_buttons_title">SƤtt LĆ„sskƤrmens Knappar</string> @@ -402,8 +424,7 @@ <string name="crash_report_sum">SƤnd den senaste krashrapporten via e-post</string> <string name="send_email">SƤnd e-post</string> <string name="experimental_pref">Experimentellt</string> - <string name="pref_sonic_title">Sonic Mediaspelare</string> - <string name="pref_sonic_message">AnvƤnd den inbyggda Sonic mediaspelare som ersƤttning fƶr Androids egna mediaspelare och Prestissimo</string> + <string name="pref_media_player_message">VƤlj vilken mediaspelare som ska spela filer</string> <string name="pref_current_value">Nuvarande vƤrde: %1$s</string> <string name="pref_proxy_title">Proxy</string> <string name="pref_proxy_sum">AnvƤnd en nƤtverksproxy</string> @@ -415,6 +436,11 @@ <string name="pref_cast_message_free_flavor">Chromecast krƤver propretiƤra tredjepartsbibliotek som inte Ƥr inkluderade i denna version av AntennaPod</string> <string name="pref_enqueue_downloaded_title">Kƶa Nedladdade</string> <string name="pref_enqueue_downloaded_summary">LƤgg nedladdade episoder i uppspelningskƶn</string> + <string name="media_player_builtin">Andriods inbyggda spelare</string> + <string name="pref_videoBehavior_title">Vid avslutande av video</string> + <string name="pref_videoBehavior_sum">Beteende nƤr videouppspelning avslutas</string> + <string name="stop_playback">Stoppa uppspelning</string> + <string name="continue_playback">FortsƤtt ljuduppspelning</string> <!--Auto-Flattr dialog--> <string name="auto_flattr_enable">Aktivera automatisk Flattring</string> <string name="auto_flattr_after_percent">Flattra episoden sĆ„ snart %d procent har spelats</string> @@ -424,8 +450,8 @@ <string name="search_hint">Sƶk efter episoder</string> <string name="found_in_shownotes_label">Hittad i shownotes</string> <string name="found_in_chapters_label">Hittad i kapitel</string> - <string name="found_in_authors_label">Hittad i fƶrfattare</string> - <string name="found_in_feeds_label">Hittad i flƶden</string> + <string name="found_in_authors_label">Hittade i fƶrfattare</string> + <string name="found_in_feeds_label">Hittade i podcast</string> <string name="search_status_no_results">Inga resultat hittades</string> <string name="search_label">Sƶk</string> <string name="found_in_title_label">Hittad i titeln</string> @@ -451,8 +477,8 @@ <string name="html_export_label">HTML export</string> <string name="exporting_label">Exporterarā¦</string> <string name="export_error_label">Exporteringsfel</string> - <string name="opml_export_success_title">OPML Exportering lyckades.</string> - <string name="opml_export_success_sum">.opml filen skrevs till:\u0020</string> + <string name="export_success_title">Exporten lyckades</string> + <string name="export_success_sum">Den exporterade filen skrevs till:\n\n%1$s</string> <string name="opml_import_ask_read_permission">TillgĆ„ng till extern lagring krƤvs fƶr att lƤsa OPML-filen</string> <!--Sleep timer--> <string name="set_sleeptimer_label">StƤll in sƶmntimer</string> @@ -619,6 +645,14 @@ <string name="proxy_host_empty_error">VƤrd mĆ„ste fyllas i</string> <string name="proxy_host_invalid_error">VƤrd Ƥr inte en giltig IP adress eller domƤn</string> <string name="proxy_port_invalid_error">Porten Ƥr inte giltig</string> + <!--Database import/export--> + <string name="import_export">Databas-Import/Export</string> + <string name="import_export_warning">Denna experimentella funktion kan anvƤndas fƶr att fƶra ƶver dina prenumerationer och spelade episoder till en annan enhet.\n\nExporterade databaser kan bara importeras med samma version av AntennaPod. Annars kommer en import att leda till ofƶrutsƤgbara konsekvenser.\n\nEfter en import kan episoder visas som nedladdade Ƥven om de inte Ƥr det. Tryck bara pĆ„ uppspelningsknappen pĆ„ episoden fƶr att AntennaPod ska kolla det igen.</string> + <string name="label_import">Import</string> + <string name="label_export">Export</string> + <string name="import_select_file">VƤlj fil att importera</string> + <string name="export_ok">Exporten lyckades.</string> + <string name="import_ok">Importen lyckades.\n\nTryck OK fƶr att starta om AntennaPod</string> <!--Casting--> <string name="cast_media_route_menu_title">Spela pĆ„...</string> <string name="cast_disconnect_label">Koppla loss castningen</string> @@ -635,4 +669,13 @@ <string name="cast_failed_seek">Misslyckades att sƶka till den nya positionen pĆ„ cast-enheten</string> <string name="cast_failed_receiver_player_error">Mottagande uppspelaren har stƶtt pĆ„ ett allvarligt fel</string> <string name="cast_failed_media_error_skipping">Fel vid uppspelning av media. Hoppar ƶver...</string> + <!--Notification channels--> + <string name="notification_channel_user_action">Ć
tgƤrd krƤvs</string> + <string name="notification_channel_user_action_description">Visas om din Ć„tgƤrd Ƥr obligatorisk, till exempel om du behƶver ange ett lƶsenord.</string> + <string name="notification_channel_downloading">Laddar ner</string> + <string name="notification_channel_downloading_description">Visas under tiden som nedladdning pĆ„gĆ„r.</string> + <string name="notification_channel_playing">Uppspelning pĆ„gĆ„r</string> + <string name="notification_channel_playing_description">Medger kontroll ƶver uppspelning. Detta Ƥr huvudnotifieringen som du ser nƤr en podcast spelas.</string> + <string name="notification_channel_error">Fel</string> + <string name="notification_channel_error_description">Visas om nĆ„got blev fel, exempelvis om nedladdning eller gpodder synkronisering misslyckas.</string> </resources> diff --git a/core/src/main/res/values-sw-rKE/strings.xml b/core/src/main/res/values-sw-rKE/strings.xml index acf3abe75..2d9481b84 100644 --- a/core/src/main/res/values-sw-rKE/strings.xml +++ b/core/src/main/res/values-sw-rKE/strings.xml @@ -36,4 +36,5 @@ <!--Database import/export--> <!--Casting--> <!--<string name="cast_failed_to_connect">Could not connect to the device</string>--> + <!--Notification channels--> </resources> diff --git a/core/src/main/res/values-te/strings.xml b/core/src/main/res/values-te/strings.xml index 93db7b76f..d73db283a 100644 --- a/core/src/main/res/values-te/strings.xml +++ b/core/src/main/res/values-te/strings.xml @@ -3,6 +3,7 @@ <!--Activitiy and fragment titles--> <string name="feeds_label">ą°«ą±ą°”ą±ą°²ą±</string> <string name="statistics_label">ą°ą°£ą°¾ą°ą°ą°¾ą°²ą±</string> + <string name="episodes_label">ą°ą°Ŗą°æą°øą±ą°”ą±ą°²ą±</string> <string name="all_episodes_short_label">ą°
ą°Øą±ą°Øą±</string> <string name="favorite_episodes_label">ą°ą°·ą±ą°ą°¾ą°²ą±</string> <string name="new_label">ą°ą±ą°¤ą±ą°¤ą°¦ą°æ</string> @@ -13,33 +14,63 @@ <string name="downloads_log_label">ą°ą°æą°ą±ą°ą°¾</string> <string name="subscriptions_label">ą°ą°ą°¦ą°¾ą°²ą±</string> <string name="subscriptions_list_label">ą°ą°ą°¦ą°¾ą°² ą°ą°¾ą°¬ą°æą°¤ą°¾</string> + <string name="cancel_download_label">ą°¦ą°æą°ą°Ŗą±ą°ą±ą°²ą±ą°Øą±\ną°°ą°¦ą±ą°¦ą±ą°ą±ą°Æą°æ</string> + <string name="playback_history_label">ą°ą°”ą°æą°ą°Ŗą± ą°ą°°ą°æą°¤ą±ą°°</string> + <string name="gpodnet_main_label">gpodder.net</string> + <string name="gpodnet_auth_label">gpodder.net ą°Ŗą±ą°°ą°µą±ą°¶ą°</string> <string name="free_space_label">%1$s ą°ą°¾ą°³ą±</string> <!--Statistics fragment--> + <string name="statistics_mode">ą°ą°£ą°¾ą°ą°ą°¾ą°² ą°°ą±ą°¤ą°æ</string> <!--Main activity--> + <string name="drawer_open">ą°®ą±ą°Øą±ą°Øą°æ ą°¤ą±ą°°ą±ą°µą±</string> + <string name="drawer_close">ą°®ą±ą°Øą±ą°Øą°æ ą°®ą±ą°øą°æą°µą±ą°Æą°æ</string> <string name="drawer_feed_counter_none">ą°ą°®ą±ą°²ą±ą°µą±</string> <!--Webview actions--> <!--Playback history--> + <string name="clear_history_label">ą°ą°°ą°æą°¤ą±ą°°ą°Øą± ą°¤ą±ą°”ą°æą°ą°æą°µą±ą°Æą°æ</string> <!--Other--> + <string name="confirm_label">ą°Øą°æą°°ą±ą°§ą°¾ą°°ą°æą°ą°ą±</string> <string name="cancel_label">ą°°ą°¦ą±ą°¦ą±ą°ą±ą°Æą°æ</string> <string name="yes">ą°
ą°µą±ą°Øą±</string> <string name="no">ą°ą°¾ą°¦ą±</string> <string name="language_label">ą°ą°¾ą°·</string> <string name="podcast_settings_label">ą°
ą°®ą°°ą°æą°ą°²ą±</string> + <string name="cover_label">ą°¬ą±ą°®ą±ą°®</string> + <string name="error_label">ą°Ŗą±ą°°ą°Ŗą°¾ą°ą±</string> + <string name="error_msg_prefix">ą°Ŗą±ą°°ą°Ŗą°¾ą°ą± ą°ą°°ą°æą°ą°æą°ą°¦ą°æ:</string> + <string name="chapters_label">ą°ą°¾ą°Ŗą±ą°ą°°ą±ą°²ą±</string> + <string name="chapter_duration">ą°Øą°æą°”ą°æą°µą°æ: %1$s</string> <string name="description_label">ą°µą°æą°µą°°ą°£</string> + <string name="most_recent_prefix">ą°
ą°¤ą±ą°Æą°ą°¤ ą°ą°ą±ą°µą°²ą°æ ą°ą°Ŗą°æą°øą±ą°”ą±:\u0020</string> + <string name="episodes_suffix">\u0020ą°ą°Ŗą°æą°øą±ą°”ą±ą°²ą±</string> <string name="length_prefix">ą°Øą°æą°”ą°æą°µą°æ:\u0020</string> + <string name="size_prefix">ą°Ŗą°°ą°æą°®ą°¾ą°£ą°:\u0020</string> <string name="loading_label">ą°µą°øą±ą°¤ą±ą°ą°¦ą°æā¦</string> + <string name="save_username_password_label">ą°µą°¾ą°”ą±ą°ą°°ą°æ ą°Ŗą±ą°°ą±ą°Øą± ą°øą°ą°ą±ą°¤ą°Ŗą°¦ą°¾ą°Øą±ą°Øą± ą°ą°¦ą±ą°°ą°Ŗą°°ą°ą±</string> <string name="close_label">ą°®ą±ą°øą°æą°µą±ą°Æą°æ</string> + <string name="retry_label">ą°®ą°³ą±ą°³ą± ą°Ŗą±ą°°ą°Æą°¤ą±ą°Øą°æą°ą°ą±</string> <string name="feed_auto_download_always">ą°ą°²ą±ą°²ą°Ŗą±ą°Ŗą±ą°”ą±</string> <string name="send_label">ą°Ŗą°ą°Ŗą°æą°ą°ą±ā¦</string> + <plurals name="episode_cleanup_days_after_listening"> + <item quantity="one">ą°®ą±ą°ą°æą°ą°ą°æą°Ø 1 ą°°ą±ą°ą± ą°¤ą°°ą±ą°µą°¾ą°¤</item> + <item quantity="other">ą°®ą±ą°ą°æą°ą°ą°æą°Ø %d ą°°ą±ą°ą±ą°² ą°¤ą°°ą±ą°µą°¾ą°¤</item> + </plurals> <!--'Add Feed' Activity labels--> + <string name="feedurl_label">ą°«ą±ą°”ą± ą°ą°æą°°ą±ą°Øą°¾ą°®ą°¾</string> + <string name="etxtFeedurlHint">www.example.com/feed</string> <!--Actions on feeds--> + <string name="show_info_label">ą°øą°®ą°¾ą°ą°¾ą°°ą° ą°ą±ą°Ŗą°æą°ą°ą±</string> <string name="share_label">ą°Ŗą°ą°ą±ą°ą±ą°ą°”ą°æā¦</string> <!--actions on feeditems--> + <string name="download_label">ą°¦ą°æą°ą°Ŗą±ą°ą±</string> <string name="play_label">ą°ą°”ą°æą°ą°ą±</string> <string name="pause_label">ą°Øą°æą°²ą±ą°Ŗą±</string> <string name="stop_label">ą°ą°Ŗą°æą°µą±ą°Æą°æ</string> + <string name="remove_label">ą°¤ą±ą°²ą°ą°æą°ą°ą±</string> <string name="delete_label">ą°¤ą±ą°²ą°ą°æą°ą°ą±</string> <!--Download messages and labels--> + <string name="download_error_details">ą°µą°æą°µą°°ą°¾ą°²ą±</string> + <string name="download_type_feed">ą°«ą±ą°”ą±</string> <!--Mediaplayer messages--> <!--Queue operations--> <string name="date">ą°¤ą±ą°¦ą±</string> @@ -51,15 +82,22 @@ <!--Variable Speed--> <!--Empty list labels--> <!--Preferences--> + <string name="other_pref">ą°ą°¤ą°°</string> <string name="about_pref">ą°ą±ą°°ą°æą°ą°ą°æ</string> - <string name="services_label">ą°øą±ą°µą°²ą±</string> <string name="network_pref">ą°Øą±ą°ą±āą°µą°°ą±ą°ą±</string> + <string name="pref_autoUpdateIntervallOrTime_Disable">ą°
ą°ą±ą°¤ą°Øą°æą°ą°ą±</string> + <string name="pref_autoUpdateIntervallOrTime_every">ą°Ŗą±ą°°ą°¤ą± %1$s</string> + <string name="pref_theme_title_light">ą°²ą±ą°¤</string> + <string name="pref_theme_title_dark">ą°Øą°²ą±ą°²ą°Øą°æ</string> + <string name="pref_episode_cache_unlimited">ą°
ą°Ŗą°°ą°æą°®ą°æą°¤ą°</string> <string name="pref_update_interval_hours_plural">ą°ą°ą°ą°²ą±</string> <string name="pref_update_interval_hours_singular">ą°ą°ą°</string> <string name="experimental_pref">ą°Ŗą±ą°°ą°Æą±ą°ą°¾ą°¤ą±ą°®ą°ą°</string> <string name="pref_proxy_title">ą°Ŗą±ą°°ą°¾ą°ą±ą°øą±</string> + <string name="pref_known_issues">ą°¤ą±ą°²ą°æą°øą°æą°Ø ą°øą°®ą°øą±ą°Æą°²ą±</string> <!--Auto-Flattr dialog--> <!--Search--> + <string name="search_label">ą°µą±ą°¤ą±ą°ą±</string> <!--OPML import and export--> <string name="select_all_label">ą°
ą°Øą±ą°Øą± ą°ą°ą°ą±ą°ą±ą°ą°”ą°æ</string> <!--Sleep timer--> @@ -80,9 +118,14 @@ </plurals> <!--gpodder.net--> <string name="gpodnet_taglist_header">ą°µą°°ą±ą°ą°¾ą°²ą±</string> + <string name="gpodnet_toplist_header">ą°®ą±ą°ą°æ ą°Ŗą°¾ą°”ą±āą°ą°¾ą°øą±ą°ą±ą°²ą±</string> + <string name="gpodnet_suggestions_header">ą°øą°²ą°¹ą°¾ą°²ą±</string> <string name="username_label">ą°µą°¾ą°”ą±ą°ą°°ą°æ ą°Ŗą±ą°°ą±</string> <string name="password_label">ą°øą°ą°ą±ą°¤ą°Ŗą°¦ą°</string> + <string name="gpodnetsync_pref_report_successful">ą°µą°æą°ą°Æą°µą°ą°¤ą°</string> + <string name="gpodnetsync_pref_report_failed">ą°µą°æą°«ą°²ą°®ą±ą°ą°¦ą°æ</string> <!--Directory chooser--> + <string name="folder_not_empty_dialog_title">ą°øą°ą°ą°Æą° ą°ą°¾ą°³ą±ą°ą°¾ ą°²ą±ą°¦ą±</string> <!--Online feed view--> <!--Content descriptions for image buttons--> <!--Feed information screen--> @@ -99,6 +142,10 @@ <string name="proxy_type_label">ą°°ą°ą°</string> <string name="optional_hint">(ą°ą°ą±ą°ą°æą°ą°)</string> <!--Database import/export--> + <string name="label_import">ą°¦ą°æą°ą±ą°®ą°¤ą°æ</string> + <string name="label_export">ą°¦ą°æą°ą±ą°®ą°¤ą°æ</string> + <string name="export_ok">ą°ą°ą±ą°®ą°¤ą°æ ą°µą°æą°ą°Æą°µą°ą°¤ą°.</string> <!--Casting--> <!--<string name="cast_failed_to_connect">Could not connect to the device</string>--> + <!--Notification channels--> </resources> diff --git a/core/src/main/res/values-tr/strings.xml b/core/src/main/res/values-tr/strings.xml index 9d9aa95e8..a980a1224 100644 --- a/core/src/main/res/values-tr/strings.xml +++ b/core/src/main/res/values-tr/strings.xml @@ -48,7 +48,6 @@ <string name="yes">Evet</string> <string name="no">Hayır</string> <string name="reset">Sıfırla</string> - <string name="author_label">Yayıncı</string> <string name="language_label">Dil</string> <string name="url_label">URL</string> <string name="podcast_settings_label">Ayarlar</string> @@ -94,23 +93,12 @@ <string name="mark_all_read_label">Hepsini oynatıldı olarak iÅaretle</string> <string name="mark_all_read_msg">TĆ¼m bƶlĆ¼mleri oynatıldı olarak iÅaretle</string> <string name="mark_all_read_confirmation_msg">LĆ¼tfen tĆ¼m bƶlĆ¼mleri oynatıldı olarak iÅaretlemek istediÄinizi onaylayın.</string> - <string name="mark_all_read_feed_confirmation_msg">LĆ¼tfen bu besleme iƧindeki tĆ¼m bƶlĆ¼mleri oynatıldı olarak iÅaretlemek istediÄinizi onaylayın.</string> <string name="mark_all_seen_label">Hepsini gƶrĆ¼ldĆ¼ olarak iÅaretle</string> - <string name="mark_all_seen_msg">TĆ¼m bƶlĆ¼mler gƶrĆ¼ldĆ¼ olarak iÅaretlendi</string> <string name="mark_all_seen_confirmation_msg">LĆ¼tfen tĆ¼m bƶlĆ¼mleri gƶrĆ¼ldĆ¼ olarak iÅaretlemek istediÄinizi onaylayın.</string> <string name="show_info_label">Bilgiyi gƶster</string> - <string name="rename_feed_label">Cep yayınını yeniden adlandır</string> - <string name="remove_feed_label">Cep yayını kaldır</string> <string name="share_label">PaylaÅ...</string> - <string name="share_link_label">Link\'i paylaÅ</string> - <string name="share_link_with_position_label">Link\'i Konumla birlikte paylaÅ</string> <string name="share_feed_url_label">Besleme Adresini PaylaÅ</string> - <string name="share_item_url_label">BƶlĆ¼m Dosyası Adresini PaylaÅ</string> - <string name="share_item_url_with_position_label">BƶlĆ¼m Dosyası Adresini Konumla birlikte paylaÅ</string> - <string name="feed_remover_msg">Besleme kaldırılıyor</string> - <string name="load_complete_feed">TĆ¼m beslemeyi yenile</string> <string name="hide_episodes_title">BƶlĆ¼mleri gizle</string> - <string name="episode_actions">Eylemleri uygula</string> <string name="hide_unplayed_episodes_label">Oynatılmadı</string> <string name="hide_paused_episodes_label">Duraklatıldı</string> <string name="hide_played_episodes_label">Oynatıldı</string> @@ -220,7 +208,6 @@ <string name="date">Tarih</string> <string name="duration">SĆ¼re</string> <string name="episode_title">BlĆ¼m baÅlıÄı</string> - <string name="feed_title">Besleme baÅlıÄı</string> <string name="ascending">Artan</string> <string name="descending">Azalan</string> <string name="clear_queue_confirmation_msg">LĆ¼tfen iƧerisindeki BĆTĆN ƶlĆ¼mlerle birlikte kuyruÄu temizleme isteÄinizi onaylayın.</string> @@ -257,14 +244,12 @@ <string name="enable_sonic">Sonic\'i EtkinleÅtir</string> <!--Empty list labels--> <string name="no_items_label">Bu listede hiƧ ƶge yok.</string> - <string name="no_feeds_label">HenĆ¼z hiƧbir beslemeye abone deÄilsiniz.</string> <!--Preferences--> <string name="storage_pref">Depolama</string> <string name="project_pref">Proje</string> <string name="other_pref">DiÄer</string> <string name="about_pref">Hakkında</string> <string name="queue_label">Kuyruk</string> - <string name="services_label">Servisler</string> <string name="flattr_label">Flattr</string> <string name="pref_episode_cleanup_title">BƶlĆ¼m TemizliÄi</string> <string name="pref_pauseOnDisconnect_sum">Kulaklıklar ƧıkarıldıÄında veya bluetooth baÄlantısı kesildiÄinde Ƨalmayı duraklat</string> @@ -330,8 +315,6 @@ <string name="pref_playback_speed_sum">DeÄiÅken hızlı ses yĆ¼rĆ¼tmesi iƧin kullanılabilir hızları ƶzelleÅtirin</string> <string name="pref_gpodnet_sethostname_title">Sunucu ismini ayarla</string> <string name="pref_gpodnet_sethostname_use_default_host">Varsayılan sunucuyu kullan</string> - <string name="pref_expandNotify_title">Bildirimi GeniÅlet</string> - <string name="pref_expandNotify_sum">Ćalma tuÅlarını gƶstermek iƧin bildirimi her zaman geniÅlet.</string> <string name="pref_persistNotify_title">Kalıcı oynatma kontrolleri</string> <string name="pref_persistNotify_sum">Ćalma duraklatıldıÄında bildirim ve ekran kilidi ayarlarını sakla.</string> <string name="pref_showDownloadReport_title">Ä°ndirme Raporunu Gƶster</string> @@ -374,8 +357,6 @@ <string name="choose_file_from_external_application">Harici uygulama kullan</string> <string name="opml_export_label">OPML dıÅa aktar</string> <string name="export_error_label">DıÅa aktarma hatası</string> - <string name="opml_export_success_title">Opml dıÅa aktarma baÅarılı.</string> - <string name="opml_export_success_sum">.opml dosyasy yazıldı: \u0020</string> <!--Sleep timer--> <string name="set_sleeptimer_label">Zamanlayıcıyı ayarla</string> <string name="disable_sleeptimer_label">Zamanlayıcıyı devre dıÅı bırak</string> @@ -508,4 +489,5 @@ <!--Database import/export--> <!--Casting--> <!--<string name="cast_failed_to_connect">Could not connect to the device</string>--> + <!--Notification channels--> </resources> diff --git a/core/src/main/res/values-uk-rUA/strings.xml b/core/src/main/res/values-uk-rUA/strings.xml index 18ca0713b..0afc1e8c2 100644 --- a/core/src/main/res/values-uk-rUA/strings.xml +++ b/core/src/main/res/values-uk-rUA/strings.xml @@ -1,11 +1,13 @@ <?xml version='1.0' encoding='UTF-8'?> <resources xmlns:tools="http://schemas.android.com/tools"> <!--Activitiy and fragment titles--> + <string name="feed_update_receiver_name">ŠŠ½Š¾Š²ŠøŃŠø ŠæŃŠ“ŠæŠøŃŠŗŠø</string> <string name="feeds_label">ŠŠ°Š½Š°Š»Šø</string> <string name="statistics_label">Š”ŃŠ°ŃŠøŃŃŠøŠŗŠ°</string> <string name="add_feed_label">ŠŠ¾Š“Š°ŃŠø ŠæŠ¾Š“ŠŗŠ°ŃŃ</string> <string name="episodes_label">ŠŠæŃŠ·Š¾Š“Šø</string> <string name="all_episodes_short_label">ŠŃŃ</string> + <string name="new_episodes_label">ŠŠ¾Š²Ń</string> <string name="favorite_episodes_label">Š£Š»ŃŠ±Š»ŠµŠ½Ń</string> <string name="new_label">ŠŠ¾Š²Ń</string> <string name="settings_label">ŠŠ°Š»Š°ŃŃŃŠ²Š°Š½Š½Ń</string> @@ -15,18 +17,20 @@ <string name="downloads_log_label">ŠŃŃŠ½Š°Š»</string> <string name="subscriptions_label">ŠŃŠ“ŠæŠøŃŠŗŠø</string> <string name="subscriptions_list_label">ŠŠµŃŠµŠ»ŃŠŗ ŠæŃŠ“ŠæŠøŃŠ¾Šŗ</string> - <string name="cancel_download_label">Š”ŠŗŠ°ŃŃŠ²Š°ŃŠø Š·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Š½Ń</string> - <string name="playback_history_label">Š©Š¾ Š³ŃŠ°Š»Š¾</string> + <string name="cancel_download_label">Š”ŠŗŠ°ŃŃŠ²Š°ŃŠø\nŠ·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Š½Ń</string> + <string name="playback_history_label">ŠŃŃŠ¾ŃŃŃ Š²ŃŠ“ŃŠ²Š¾ŃŠµŠ½Š½Ń</string> <string name="gpodnet_main_label">gpodder.net</string> + <string name="gpodnet_summary">Š”ŠøŠ½Ń
ŃŠ¾Š½ŠøŠ·Š°ŃŃŃ Š· ŃŠ½ŃŠøŠ¼Šø ŠæŃŠøŃŃŃŠ¾ŃŠ¼Šø</string> <string name="gpodnet_auth_label">gpodder.net Š»Š¾Š³ŃŠ½</string> <string name="free_space_label">%1$s Š²ŃŠ»ŃŠ½Š¾</string> <string name="episode_cache_full_title">ŠŠµŃ ŠµŠæŃŠ·Š¾Š“ŃŠ² Š·Š°ŠæŠ¾Š²Š½ŠµŠ½ŠøŠ¹</string> <string name="episode_cache_full_message">ŠŠ¾ŃŃŠ³Š½ŃŃŠ° Š¼ŠµŠ¶Š° ŃŠ¾Š·Š¼ŃŃŠ° ŠŗŠµŃŠ° ŠµŠæŃŠ·Š¾Š“ŃŠ². Š Š¾Š·Š¼ŃŃ ŠŗŠµŃŠ° Š¼Š¾Š¶Š½Š° Š·Š±ŃŠ»ŃŃŠøŃŠø Š² Š½Š°Š»Š°ŃŃŃŠ²Š°Š½Š½ŃŃ
.</string> + <string name="synchronizing">Š”ŠøŠ½Ń
ŃŠ¾Š½ŃŠ·ŃŃŃŃŃŃā¦</string> <!--Statistics fragment--> <string name="total_time_listened_to_podcasts">ŠŠ°Š³Š°Š»ŃŠ½ŠøŠ¹ ŃŠ°Ń ŠæŃŠ¾ŃŠ»ŃŃ
Š°Š½ŠøŃ
ŠæŠ¾Š“ŠŗŠ°ŃŃŃŠ²:</string> <string name="statistics_details_dialog">%1$d Š· %2$d ŠµŠæŃŠ·Š¾Š“ŃŠ² ŠæŠ¾ŃŠ°ŃŠ¾.\n\nŠŃŠ¾ŃŠ»ŃŃ
Š°Š½Š¾ %3$s Š· %4$s.</string> <string name="statistics_mode">Š ŠµŠ¶ŠøŠ¼ ŃŃŠ°ŃŠøŃŃŠøŠŗŠø</string> - <string name="statistics_mode_normal">ŠŠ±ŃŠøŃŠ»ŠøŃŠø ŃŃŠøŠ²Š°Š»ŃŃŃŃ ŠæŃŠ¾ŃŠ»ŃŃ
Š°Š½Š¾Š³Š¾. ŠŃŠ¾ŃŠ»ŃŃ
Š°Š½Šµ Š“Š²ŃŃŃ Š²ŃŠ°Ń
Š¾Š²ŃŃŃŃŃŃ Š“Š²ŃŃŠø, Š°Š»Šµ ŠæŃŠ¾ŃŃŠ¾ ŠæŠ¾Š·Š½Š°ŃŠµŠ½Šµ ŃŠŗ ŠæŃŠ¾ŃŠ»ŃŃ
Š°Š½Šµ Š½Šµ Š²ŃŠ°Ń
Š¾Š²ŃŃŃŃŃŃ </string> + <string name="statistics_mode_normal">ŠŠ±ŃŠøŃŠ»ŠøŃŠø ŃŃŠøŠ²Š°Š»ŃŃŃŃ Š“ŃŠ¹ŃŠ½Š¾ ŠæŃŠ¾ŃŠ»ŃŃ
Š°Š½Š¾Š³Š¾. ŠŃŠ¾ŃŠ»ŃŃ
Š°Š½Šµ Š“Š²ŃŃŃ Š²ŃŠ°Ń
Š¾Š²ŃŃŃŃŃŃ Š“Š²ŃŃŃ, Š°Š»Šµ ŠæŃŠ¾ŃŃŠ¾ ŠæŠ¾Š·Š½Š°ŃŠµŠ½Šµ ŃŠŗ ŠæŃŠ¾ŃŠ»ŃŃ
Š°Š½Šµ Š½Šµ Š²ŃŠ°Ń
Š¾Š²ŃŃŃŃŃŃ </string> <string name="statistics_mode_count_all">ŠŃŠ“ŃŃŠ¼ŃŠ²Š°ŃŠø Š²ŃŃ ŠæŠ¾Š“ŠŗŠ°ŃŃŠø ŠæŠ¾Š·Š½Š°ŃŠµŠ½Ń ŃŠŗ ŠæŃŠ¾ŃŠ»ŃŃ
Š°Š½Ń</string> <string name="statistics_speed_not_counted">ŠŠ°ŃŠ²Š°Š¶ŠµŠ½Š½Ń: ŠØŠ²ŠøŠ“ŠŗŃŃŃŃ ŠæŃŠ¾Š³ŃŠ°Š²Š°Š½Š½Ń Š½Šµ Š±ŠµŃŠµŃŃŃŃ Š“Š¾ ŃŠ²Š°Š³Šø.</string> <!--Main activity--> @@ -34,9 +38,9 @@ <string name="drawer_close">Š”Ń
Š¾Š²Š°ŃŠø Š¼ŠµŠ½Ń</string> <string name="drawer_preferences">ŠŠ°ŃŃŃŠ¾Š¹ŠŗŠø Š¼ŠµŠ½Ń Š½Š°Š²ŃŠ³Š°ŃŃŃ</string> <string name="drawer_feed_order_unplayed_episodes">Š”Š¾ŃŃŃŠ²Š°ŃŠø Š·Š° Š»ŃŃŠøŠ»ŃŠ½ŠøŠŗŠ¾Š¼</string> - <string name="drawer_feed_order_alphabetical">Š”Š¾ŃŃŃŠ²Š°Š½Š½Ń Š·Š° Š°Š±ŠµŃŠŗŠ¾Ń</string> + <string name="drawer_feed_order_alphabetical">Š”Š¾ŃŃŃŠ²Š°ŃŠø Š·Š° Š°Š±ŠµŃŠŗŠ¾Ń</string> <string name="drawer_feed_order_last_update">Š”Š¾ŃŃŃŠ²Š°ŃŠø Š·Š° Š“Š°ŃŠ¾Ń ŠæŃŠ±Š»ŃŠŗŠ°ŃŃŃ</string> - <string name="drawer_feed_order_most_played">Š”Š¾ŃŃŃŠ²Š°Š½Š½Ń Š·Š° ŠŗŃŠ»ŃŠŗŃŃŃŃ ŠæŃŠ¾ŃŠ»ŃŃ
Š°Š½ŠøŃ
ŠµŠæŃŠ·Š¾Š“ŃŠ²</string> + <string name="drawer_feed_order_most_played">Š”Š¾ŃŃŃŠ²Š°ŃŠø Š·Š° ŠŗŃŠ»ŃŠŗŃŃŃŃ ŠæŃŠ¾ŃŠ»ŃŃ
Š°Š½ŠøŃ
ŠµŠæŃŠ·Š¾Š“ŃŠ²</string> <string name="drawer_feed_counter_new_unplayed">ŠŃŠ»ŃŠŗŃŃŃŃ Š½Š¾Š²ŠøŃ
ŃŠ° Š½ŠµŠæŃŠ¾ŃŠ»ŃŃ
Š°Š½ŠøŃ
ŠµŠæŃŠ·Š¾Š“ŃŠ²</string> <string name="drawer_feed_counter_new">ŠŃŠ»ŃŠŗŃŃŃŃ Š½Š¾Š²ŠøŃ
ŠµŠæŃŠ·Š¾Š“ŃŠ²</string> <string name="drawer_feed_counter_unplayed">ŠŃŠ»ŃŠŗŃŃŃŃ Š½ŠµŠæŃŠ¾ŃŠ»ŃŃ
Š°Š½ŠøŃ
ŠµŠæŃŠ·Š¾Š“ŃŠ²</string> @@ -49,20 +53,21 @@ <string name="copied_url_msg">URL ŃŠŗŠ¾ŠæŃŠ¹Š¾Š²Š°Š½Š¾ Š² Š±ŃŃŠµŃ</string> <string name="go_to_position_label">ŠŠ¾ ŃŃŃŃ ŠæŠ¾Š·ŠøŃŃŃ</string> <!--Playback history--> - <string name="clear_history_label">ŠŠ°Š±ŃŃŠø</string> + <string name="clear_history_label">ŠŃŠøŃŃŠøŃŠø ŃŃŃŠ¾ŃŃŃ</string> <!--Other--> <string name="confirm_label"> ŠŃŠ“ŃŠ²ŠµŃŠ“ŠøŃŠø</string> <string name="cancel_label">Š”ŠŗŠ°ŃŃŠ²Š°ŃŠø</string> <string name="yes">Š¢Š°Šŗ</string> <string name="no">ŠŃ</string> <string name="reset">ŠŠµŃŠµŠ·Š°ŠæŃŃŠŗ</string> - <string name="author_label">ŠŠ²ŃŠ¾Ń</string> + <string name="author_label">ŠŠ²ŃŠ¾Ń(Šø)</string> <string name="language_label">ŠŠ¾Š²Š°</string> <string name="url_label">URL</string> <string name="podcast_settings_label">ŠŠ°Š»Š°ŃŃŃŠ²Š°Š½Š½Ń</string> <string name="cover_label">ŠŠ¾Š±ŃŠ°Š¶ŠµŠ½Š½Ń</string> <string name="error_label">ŠŠ¾Š¼ŠøŠ»ŠŗŠ°</string> <string name="error_msg_prefix">Š¢ŃŠ°ŠæŠøŠ»Š°ŃŃ ŠæŠ¾Š¼ŃŠ»ŠŗŠ°:</string> + <string name="needs_storage_permission">ŠŠ»Ń ŃŃŃŃ Š¾ŠæŠµŃŠ°ŃŃŃ ŠæŠ¾ŃŃŃŠ±ŠµŠ½ Š“Š¾Š·Š²ŃŠ» Š½Š° Š“Š¾ŃŃŃŠæ Š“Š¾ ŠæŠ°Š¼āŃŃŃ</string> <string name="refresh_label">ŠŠ½Š¾Š²ŠøŃŠø</string> <string name="external_storage_error_msg">ŠŠµŠ¼Š°Ń Š“Š¾ŃŃŃŠæŠ½Š¾Ń ŠŗŠ°ŃŃŠø ŠæŠ°Š¼\'ŃŃŃ. ŠŠ¾Š²Š½ŃŃŠ½ŃŠ¹ Š½Š¾ŃŃŠ¹ ŠæŠ¾ŃŃŃŠ±ŠµŠ½ Š“Š»Ń ŠŗŠ¾ŃŠµŠŗŃŠ½Š¾Ń ŃŠ¾Š±Š¾ŃŠø Š“Š¾Š“Š°ŃŠŗŃ</string> <string name="chapters_label">ŠŠ»Š°Š²Šø</string> @@ -80,10 +85,10 @@ <string name="retry_label">ŠŠ¾Š²ŃŠ¾ŃŠøŃŠø Š·Š½Š¾Š²Ń</string> <string name="auto_download_label">ŠŠŗŠ»ŃŃŠøŃŠø Š“Š¾ Š°Š²ŃŠ¾Š·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Š½Ń</string> <string name="auto_download_apply_to_items_title">ŠŠ°ŃŃŠ¾ŃŃŠ²Š°ŃŠø Š“Š¾ ŠæŠ¾ŠæŠµŃŠµŠ“Š½ŃŃ
ŠµŠæŃŠ·Š¾Š“ŃŠ²</string> - <string name="auto_download_apply_to_items_message">ŠŠ¾Š²Šµ Š½Š°Š»Š°ŃŃŃŠ²Š°Š½Š½Ń <i>ŠŠ²ŃŠ¾Š·Š°Š³ŃŃŠ·ŠŗŠ°</i> Š±ŃŠ“Šµ Š°Š²ŃŠ¾Š¼Š°ŃŠøŃŠ½Š¾ Š·Š°ŃŃŠ¾ŃŠ¾Š²Š°Š½Šµ Š“Š¾ Š½Š¾Š²ŠøŃ
ŠµŠæŃŠ·Š¾Š“ŃŠ².\nŠŠ°Š¶Š°ŃŃŠµ ŃŠ°ŠŗŠ¾Š¶ Š·Š°ŃŃŠ¾ŃŃŠ²Š°ŃŠø Š¹Š¾Š³Š¾ Š“Š¾ ŃŠøŃ
ŠµŠæŃŠ·Š¾Š“ŃŠ² ŃŠ¾ Š±ŃŠ»Š¾ Š¾ŠæŃŠ±Š»ŃŠŗŠ¾Š²Š°Š½Š¾ ŃŠ°Š½ŃŃŠµ?</string> + <string name="auto_download_apply_to_items_message">ŠŠ¾Š²Šµ Š½Š°Š»Š°ŃŃŃŠ²Š°Š½Š½Ń <i>ŠŠ²ŃŠ¾Š·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Š½Ń</i> Š±ŃŠ“Šµ Š°Š²ŃŠ¾Š¼Š°ŃŠøŃŠ½Š¾ Š·Š°ŃŃŠ¾ŃŠ¾Š²Š°Š½Šµ Š“Š¾ Š½Š¾Š²ŠøŃ
ŠµŠæŃŠ·Š¾Š“ŃŠ².\nŠŠ°Š¶Š°ŃŃŠµ ŃŠ°ŠŗŠ¾Š¶ Š·Š°ŃŃŠ¾ŃŃŠ²Š°ŃŠø Š¹Š¾Š³Š¾ Š“Š¾ ŃŠøŃ
ŠµŠæŃŠ·Š¾Š“ŃŠ² ŃŠ¾ Š±ŃŠ»Šø Š¾ŠæŃŠ±Š»ŃŠŗŠ¾Š²Š°Š½Ń ŃŠ°Š½ŃŃŠµ?</string> <string name="auto_delete_label">ŠŠ²ŃŠ¾Š²ŠøŠ“Š°Š»ŠµŠ½Š½Ń ŠµŠæŃŠ·Š¾Š“Š°</string> <string name="parallel_downloads_suffix">\u0020ŠæŠ°ŃŠ°Š»ŠµŠ»ŃŠ½ŠøŃ
Š·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Ń</string> - <string name="feed_auto_download_global">ŠŠ° Š·Š°Š¼Š¾Š²ŃŠ°Š½Š½ŃŠ¼</string> + <string name="feed_auto_download_global">ŠŠ° Š·Š°Š¼Š¾Š²ŃŃŠ²Š°Š½Š½ŃŠ¼</string> <string name="feed_auto_download_always">ŠŠ°Š²Š¶Š“Šø</string> <string name="feed_auto_download_never">ŠŃŠŗŠ¾Š»Šø</string> <string name="send_label">ŠŃŠ“ŠæŃŠ°Š²ŠøŃŠøā¦</string> @@ -93,6 +98,7 @@ <plurals name="episode_cleanup_days_after_listening"> <item quantity="one">1 Š“ŠµŠ½Ń ŠæŃŃŠ»Ń Š·Š°ŠŗŃŠ½ŃŠµŠ½Š½Ń</item> <item quantity="few">%d Š“Š½Ń ŠæŃŃŠ»Ń Š·Š°ŠŗŃŠ½ŃŠµŠ½Š½Ń</item> + <item quantity="many">%d Š“Š½ŃŠ² ŠæŃŃŠ»Ń Š·Š°ŠŗŃŠ½ŃŠµŠ½Š½Ń</item> <item quantity="other">%d Š“Š½ŃŠ² ŠæŃŃŠ»Ń Š·Š°ŠŗŃŠ½ŃŠµŠ½Š½Ń</item> </plurals> <!--'Add Feed' Activity labels--> @@ -103,36 +109,42 @@ <string name="podcastdirectories_descr">ŠŠ¾Š²Ń ŠæŠ¾Š“ŠŗŠ°ŃŃŠø Š¼Š¾Š¶Š½Š° ŃŃŠŗŠ°ŃŠø Š½Š° iTunes Š°Š±Š¾ fyyd, Š°Š±Š¾ ŠæŠµŃŠµŠ³Š»ŃŠ½ŃŃŠø gpodder.net Š·Š° ŃŠ¼ŠµŠ½Š°Š¼Šø, ŠŗŠ°ŃŠµŠ³Š¾ŃŃŃŠ¼Šø Š°Š±Š¾ ŠæŠ¾ŠæŃŠ»ŃŃŠ½ŃŃŃŃ.</string> <string name="browse_gpoddernet_label">ŠŠµŃŠµŠ³Š»ŃŠ½ŃŃŠø gpodder.net</string> <!--Actions on feeds--> - <string name="mark_all_read_label">ŠŠ¾Š·Š½Š°ŃŠøŃŠø Š²ŃŃ ŃŠŗ Š³ŃŠ°Š½Ń</string> - <string name="mark_all_read_msg">ŠŠ¾Š·Š½Š°ŃŠµŠ½Š¾ Š²ŃŃ ŠµŠæŃŠ·Š¾Š“Šø ŃŠŗ Š³ŃŠ°Š½Ń</string> - <string name="mark_all_read_confirmation_msg">ŠŃŠ“Ń Š»Š°ŃŠŗŠ°, ŠæŃŠ“ŃŠ²ŠµŃŠ“ŃŃŃ ŃŠ¾ Š²Šø Š±Š°Š¶Š°ŃŃŠµ ŠæŠ¾Š·Š½Š°ŃŠøŃŠø Š²ŃŃ ŠµŠæŃŠ·Š¾Š“Šø ŃŠŗ Š³ŃŠ°Š½Ń.</string> - <string name="mark_all_read_feed_confirmation_msg">ŠŃŠ“Ń Š»Š°ŃŠŗŠ°, ŠæŃŠ“ŃŠ²ŠµŃŠ“ŃŃŃ ŃŠ¾ Š²Šø Š±Š°Š¶Š°ŃŃŠµ ŠæŠ¾Š·Š½Š°ŃŠøŃŠø Š²ŃŃ ŠµŠæŃŠ·Š¾Š“Šø ŃŃŠ¾Š³Š¾ ŠŗŠ°Š½Š°Š»Š° ŃŠŗ Š³ŃŠ°Š½Ń.</string> + <string name="mark_all_read_label">ŠŠ¾Š·Š½Š°ŃŠøŃŠø Š²ŃŃ ŃŠŗ Š²ŃŠ“ŃŠ²Š¾ŃŠµŠ½Ń</string> + <string name="mark_all_read_msg">ŠŠ¾Š·Š½Š°ŃŠµŠ½Š¾ Š²ŃŃ ŠµŠæŃŠ·Š¾Š“Šø ŃŠŗ Š²ŃŠ“ŃŠ²Š¾ŃŠµŠ½Ń</string> + <string name="mark_all_read_confirmation_msg">ŠŃŠ“Ń Š»Š°ŃŠŗŠ°, ŠæŃŠ“ŃŠ²ŠµŃŠ“ŃŃŃ ŃŠ¾ Š²Šø Š±Š°Š¶Š°ŃŃŠµ ŠæŠ¾Š·Š½Š°ŃŠøŃŠø Š²ŃŃ ŠµŠæŃŠ·Š¾Š“Šø ŃŠŗ Š²ŃŠ“ŃŠ²Š¾ŃŠµŠ½Ń.</string> + <string name="mark_all_read_feed_confirmation_msg">ŠŃŠ“Ń Š»Š°ŃŠŗŠ°, ŠæŃŠ“ŃŠ²ŠµŃŠ“ŃŃŃ, ŃŠ¾ Š²Šø Š±Š°Š¶Š°ŃŃŠµ ŠæŠ¾Š·Š½Š°ŃŠøŃŠø Š²ŃŃ ŠµŠæŃŠ·Š¾Š“Šø ŃŃŠ¾Š³Š¾ ŠæŠ¾Š“ŠŗŠ°ŃŃŃ ŃŠŗ Š²ŃŠ“ŃŠ²Š¾ŃŠµŠ½Ń. </string> <string name="mark_all_seen_label">ŠŠ¾Š·Š½Š°ŃŠøŃŠø Š²ŃŃ ŃŠŗ ŠæŠµŃŠµŠ³Š»ŃŠ½ŃŃŃ</string> <string name="mark_all_seen_msg">ŠŃŃ ŠµŠæŃŠ·Š¾Š“Šø ŠæŠ¾Š·Š½Š°ŃŠµŠ½Š¾ ŃŠŗ ŠæŠµŃŠµŠ³Š»ŃŠ½ŃŃŃ</string> <string name="mark_all_seen_confirmation_msg">ŠŃŠ“Ń Š»Š°ŃŠŗŠ°, ŠæŃŠ“ŃŠ²ŠµŃŠ“ŃŃŃ ŃŠ¾ Š²Šø Š±Š°Š¶Š°ŃŃŠµ ŠæŠ¾Š·Š½Š°ŃŠøŃŠø Š²ŃŃ ŠµŠæŃŠ·Š¾Š“Šø ŃŠŗ ŠæŠµŃŠµŠ³Š»ŃŠ½ŃŃŃ.</string> <string name="show_info_label">ŠŠ½ŃŠ¾ŃŠ¼Š°ŃŃŃ</string> + <string name="show_feed_settings_label">ŠŠ¾ŠŗŠ°Š·Š°ŃŠø Š½Š°Š»Š°ŃŃŃŠ²Š°Š½Š½Ń ŠæŠ¾Š“ŠŗŠ°ŃŃŃ</string> + <string name="feed_info_label">ŠŠ½ŃŠ¾ŃŠ¼Š°ŃŃŃ ŠæŃŠ¾ ŠæŠ¾Š“ŠŗŠ°ŃŃ</string> + <string name="feed_settings_label">ŠŠ°Š»Š°ŃŃŃŠ²Š°Š½Š½Ń ŠæŠ¾Š“ŠŗŠ°ŃŃŠ°</string> <string name="rename_feed_label">ŠŠµŃŠµŠ¹Š¼ŠµŠ½ŃŠ²Š°ŃŠø ŠæŠ¾Š“ŠŗŠ°ŃŃ</string> <string name="remove_feed_label">ŠŠøŠ“Š°Š»ŠøŃŠø ŠæŠ¾Š“ŠŗŠ°ŃŃ</string> <string name="share_label">ŠŠ¾Š“ŃŠ»ŠøŃŠøŃŃā¦</string> - <string name="share_link_label">ŠŠ¾Š“ŃŠ»ŠøŃŠøŃŃ URL ŃŠ°Š¹ŃŃ</string> + <string name="share_link_label">ŠŠ¾Š“ŃŠ»ŠøŃŠøŃŃ ŠæŠ¾ŃŠøŠ»Š°Š½Š½ŃŠ¼ Š½Š° ŠµŠæŃŠ·Š¾Š“</string> + <string name="share_link_with_position_label">ŠŠ¾Š“ŃŠ»ŃŃŃŃŃ ŠæŠ¾ŃŠøŠ»Š°Š½Š½ŃŠ¼ Š½Š° ŠµŠæŃŠ·Š¾Š“ Š· ŠæŠ¾Š·ŠøŃŃŃŃ</string> <string name="share_file_label">ŠŠ¾Š“ŃŠ»ŠøŃŠøŃŃ ŃŠ°Š¹Š»Š¾Š¼</string> - <string name="share_link_with_position_label">ŠŠ¾Š“ŃŠ»ŠøŃŠøŃŃ ŠæŠ¾ŃŠøŠ»Š°Š½Š½ŃŠ¼ Š½Š° ŠæŠ¾Š·ŠøŃŃŃ</string> <string name="share_feed_url_label">ŠŠ¾Š“ŃŠ»ŠøŃŠøŃŃ ŠæŠ¾ŃŠøŠ»Š°Š½Š½ŃŠ¼ Š½Š° ŠŗŠ°Š½Š°Š»</string> - <string name="share_item_url_label">ŠŠ¾Š“ŃŠ»ŠøŃŠøŃŃ ŠæŠ¾ŃŠøŠ»Š°Š½Š½ŃŠ¼ Š½Š° ŃŠ°Š¹Š» ŠµŠæŃŠ·Š¾Š“Š°</string> - <string name="share_item_url_with_position_label">ŠŠ¾Š“ŃŠ»ŠøŃŠøŃŃ ŠæŠ¾ŃŠøŠ»Š°Š½Š½ŃŠ¼ Š½Š° ŃŠ°Š¹Š» ŠµŠæŃŠ·Š¾Š“Š° Š· ŠæŠ¾Š·ŠøŃŃŃŃ</string> - <string name="feed_delete_confirmation_msg">ŠŃŠ“Ń Š»Š°ŃŠŗŠ°, ŠæŃŠ“ŃŠ²ŠµŃŠ“ŃŃŃ ŃŠ¾ Š²Šø Š±Š°Š¶Š°ŃŃŠµ Š²ŠøŠ“Š°Š»ŠøŃŠø ŠŗŠ°Š½Š°Š» \"%1$s\" Ń ŠŠ”Š ŠµŠæŃŠ·Š¾Š“Šø ŃŃŠ¾Š³Š¾ ŠŗŠ°Š½Š°Š»Š° ŃŠŗŃ Š²Šø Š·Š°Š²Š°Š½ŃŠ°Š¶ŠøŠ»Šø.</string> - <string name="feed_remover_msg">Š£Š“Š°Š»ŃŃ ŠŗŠ°Š½Š°Š»</string> - <string name="load_complete_feed">ŠŠ½Š¾Š²ŠøŃŠø ŠŗŠ°Š½Š°Š» ŃŃŠ»ŠŗŠ¾Š¼</string> + <string name="share_item_url_label">ŠŠ¾Š“ŃŠ»ŠøŃŠøŃŃ ŠæŠ¾ŃŠøŠ»Š°Š½Š½ŃŠ¼ Š½Š° Š¼ŠµŠ“ŃŠ°-ŃŠ°Š¹Š»</string> + <string name="share_item_url_with_position_label">ŠŠ¾Š“ŃŠ»ŠøŃŠøŃŃ ŠæŠ¾ŃŠøŠ»Š°Š½Š½ŃŠ¼ Š½Š° Š¼ŠµŠ“ŃŠ°-ŃŠ°Š¹Š» Š· ŠæŠ¾Š·ŠøŃŃŃŃ</string> + <string name="feed_delete_confirmation_msg">ŠŃŠ“Ń Š»Š°ŃŠŗŠ°, ŠæŃŠ“ŃŠ²ŠµŃŠ“ŃŃŃ ŃŠ¾ Š²Šø Š±Š°Š¶Š°ŃŃŠµ Š²ŠøŠ“Š°Š»ŠøŃŠø ŠæŠ¾Š“ŠŗŠ°ŃŃ \"%1$s\" Ń ŠŠ”Š Š¹Š¾Š³Š¾ ŠµŠæŃŠ·Š¾Š“Šø (ŃŠ°Š·Š¾Š¼ Š· Š·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½ŠøŠ¼Šø).</string> + <string name="feed_remover_msg">ŠŠøŠ“Š°Š»ŠµŠ½Š½Ń ŠæŠ¾Š“ŠŗŠ°ŃŃŠ°</string> + <string name="load_complete_feed">ŠŠ½Š¾Š²ŠøŃŠø Š²ŠµŃŃ ŠæŠ¾Š“ŠŗŠ°ŃŃ</string> <string name="hide_episodes_title">ŠŃŠøŃ
Š¾Š²Š°ŃŠø ŠµŠæŃŠ·Š¾Š“Šø</string> - <string name="episode_actions">ŠŠ°ŃŃŠ¾ŃŃŠ²Š°ŃŠø Š“ŃŃ</string> - <string name="hide_unplayed_episodes_label">ŠŠµŠ³ŃŠ°Š½Ń</string> - <string name="hide_paused_episodes_label">ŠŠ° ŠæŠ°ŃŠ·Ń</string> - <string name="hide_played_episodes_label">ŠŃŠ°Š½Ń</string> + <string name="batch_edit">ŠŃŃŠæŠ¾Š²Šµ ŃŠµŠ“Š°Š³ŃŠ²Š°Š½Š½Ń</string> + <string name="select_all_above">ŠŠøŠ±ŃŠ°ŃŠø Š²ŃŠµ Š²ŠøŃŠµ</string> + <string name="select_all_below">ŠŠøŠ±ŃŠ°ŃŠø Š²ŃŠµ Š½ŠøŠ¶ŃŠµ</string> + <string name="hide_unplayed_episodes_label">ŠŠµŠ²ŃŠ“ŃŠ²Š¾ŃŠµŠ½Ń</string> + <string name="hide_paused_episodes_label">ŠŃŠøŠ·ŃŠæŠøŠ½ŠµŠ½Ń</string> + <string name="hide_played_episodes_label">ŠŃŠ“ŃŠ²Š¾ŃŠµŠ½Ń</string> <string name="hide_queued_episodes_label">Š ŃŠµŃŠ·Ń</string> <string name="hide_not_queued_episodes_label">ŠŠµ Š² ŃŠµŃŠ·Ń</string> <string name="hide_downloaded_episodes_label">ŠŠ°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Ń</string> <string name="hide_not_downloaded_episodes_label">ŠŠµ Š·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Ń</string> - <string name="hide_has_media_label">ŠŠ· Š·Š²ŃŠŗŠ¾Š¼ Š°Š±Š¾ Š²ŃŠ“ŠµŠ¾</string> + <string name="hide_has_media_label">ŠŃ Š·Š²ŃŠŗŠ¾Š¼ Š°Š±Š¾ Š²ŃŠ“ŠµŠ¾</string> + <string name="hide_is_favorite_label">Š ŃŠ»ŃŠ±Š»ŠµŠ½ŠøŃ
</string> <string name="filtered_label">Š¤ŃŠ»ŃŃŃŠ¾Š²Š°Š½Ń</string> <string name="refresh_failed_msg">{fa-exclamation-circle} ŠŃŃŠ°Š½Š½Ń Š¾Š½Š¾Š²Š»ŠµŠ½Š½Ń Š±ŃŠ»Š¾ Š½ŠµŠ²Š“Š°Š»ŠøŠ¼</string> <string name="open_podcast">ŠŃŠ“ŠŗŃŠøŃŠø ŠæŠ¾Š“ŠŗŠ°ŃŃ</string> @@ -146,10 +158,11 @@ <string name="delete_label">ŠŠøŠ“Š°Š»ŠøŃŠø</string> <string name="delete_failed">Š¤Š°Š¹Š» Š½Šµ Š²ŠøŠ“Š°Š»ŠµŠ½Š¾. ŠŠ¾Š¶Š»ŠøŠ²Š¾, ŠæŠµŃŠµŠ·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Š½Ń ŠæŃŠøŃŃŃŠ¾Ń Š“Š¾ŠæŠ¾Š¼Š¾Š¶Šµ.</string> <string name="remove_episode_lable">ŠŠøŠ“Š°Š»ŠøŃŠø ŠµŠæŃŠ·Š¾Š“</string> + <string name="mark_as_seen_label">ŠŠ¾Š·Š½Š°ŃŠøŃŠø ŃŠŗ ŠæŠµŃŠµŠ³Š»ŃŠ½ŃŃŠøŠ¹</string> <string name="marked_as_seen_label">ŠŠ¾Š·Š½Š°ŃŠµŠ½Š¾ ŃŠŗ ŠæŠµŃŠµŠ³Š»ŃŠ½ŃŃŠøŠ¹</string> - <string name="mark_read_label">ŠŠ¾Š·Š½Š°ŃŠøŃŠø ŃŠŗ Š³ŃŠ°Š½ŠøŠ¹</string> - <string name="marked_as_read_label">ŠŠ¾Š·Š½Š°ŃŠµŠ½Š¾ ŃŠŗ Š³ŃŠ°Š½ŠøŠ¹</string> - <string name="mark_unread_label">ŠŠ¾Š·Š½Š°ŃŠøŃŠø ŃŠŗ Š½Šµ Š³ŃŠ°Š½ŠøŠ¹</string> + <string name="mark_read_label">ŠŠ¾Š·Š½Š°ŃŠøŃŠø ŃŠŗ Š²ŃŠ“ŃŠ²Š¾ŃŠµŠ½ŠøŠ¹</string> + <string name="marked_as_read_label">ŠŠ¾Š·Š½Š°ŃŠµŠ½Š¾ ŃŠŗ Š²ŃŠ“ŃŠ²Š¾ŃŠµŠ½ŠøŠ¹</string> + <string name="mark_unread_label">ŠŠ¾Š·Š½Š°ŃŠøŃŠø ŃŠŗ Š½Šµ Š²ŃŠ“ŃŠ²Š¾ŃŠµŠ½ŠøŠ¹</string> <string name="add_to_queue_label">ŠŠ¾Š“Š°ŃŠø Š“Š¾ ŃŠµŃŠ³Šø</string> <string name="added_to_queue_label">ŠŠ¾Š“Š°Š½Š¾ Š“Š¾ ŃŠµŃŠ³Šø</string> <string name="remove_from_queue_label">ŠŠøŠ“Š°Š»ŠøŃŠø Š· ŃŠµŃŠ³Šø</string> @@ -162,24 +175,26 @@ <string name="skip_episode_label">ŠŃŠ¾ŠæŃŃŃŠøŃŠø ŠµŠæŃŠ·Š¾Š“</string> <string name="activate_auto_download">ŠŠŗŠ»ŃŃŠøŃŠø Š°Š²ŃŠ¾Š·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Š½Ń</string> <string name="deactivate_auto_download">ŠŠøŠŗŠ»ŃŃŠøŃŠø Š°Š²ŃŠ¾Š·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Š½Ń</string> - <string name="reset_position">ŠŠµŃŠ½ŃŃŠø ŠæŠ¾ŃŠ°ŃŠŗŠ¾Š²Ń ŠæŠ¾Š·ŠøŃŃŃ Š²ŃŠ“ŃŠ²Š¾ŃŠµŠ½Š½Ń</string> + <string name="reset_position">Š”ŠŗŠøŠ½ŃŃŠø ŠæŠ¾Š·ŠøŃŃŃ Š²ŃŠ“ŃŠ²Š¾ŃŠµŠ½Š½Ń</string> <string name="removed_item">ŠŠøŠ“Š°Š»ŠµŠ½Š¾</string> <!--Download messages and labels--> <string name="download_successful">ŃŃŠæŃŃŠ½Š¾</string> <string name="download_failed">Š· ŠæŠ¾Š¼ŠøŠ»ŠŗŠ°Š¼Šø</string> <string name="download_pending">ŠŠ¾ŃŃŃŠ±Š½Š¾ Š·Š°Š²Š°Š½ŃŠ°Š¶ŠøŃŠø</string> <string name="download_running">ŠŠ°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Š½Ń</string> - <string name="download_error_device_not_found">ŠŠµŠ¼Š°Ń ŠŗŃŠ“Šø Š·Š±ŠµŃŃŠ³Š°ŃŠø</string> - <string name="download_error_insufficient_space">ŠŠ°Š»Š¾ Š¼ŃŃŃŃ</string> + <string name="download_error_details">ŠŠ¾ŠŗŠ»Š°Š“Š½Š¾</string> + <string name="download_error_details_message">%1$s \n\nŠŠ¾ŃŠøŠ»Š°Š½Š½Ń Š½Š° ŃŠ°Š¹Š»:\n%2$s</string> + <string name="download_error_device_not_found">ŠŃŠøŃŃŃŃŠ¹ Š·Š±ŠµŃŃŠ³Š°Š½Š½Ń Š“Š°Š½ŠøŃ
Š½Šµ Š·Š½Š°Š¹Š“ŠµŠ½Š¾</string> + <string name="download_error_insufficient_space">ŠŠµŠ“Š¾ŃŃŠ°ŃŠ½ŃŠ¹ ŠæŃŠ¾ŃŃŃŃ Š“Š»Ń Š·Š±ŠµŃŃŠ³Š°Š½Š½Ń</string> <string name="download_error_file_error">ŠŠ¾Š¼ŠøŠ»ŠŗŠ° ŃŠ°Š¹Š»Ń</string> <string name="download_error_http_data_error">ŠŠ¾Š¼ŠøŠ»ŠŗŠ° HTTP</string> <string name="download_error_error_unknown">Š©Š¾ŃŃ ŃŃŠ°ŠæŠøŠ»Š¾ŃŃ</string> <string name="download_error_parser_exception">ŠŠ¾Š¼ŠøŠ»ŠŗŠ° ŠæŠ°ŃŃŠµŃŠ°</string> - <string name="download_error_unsupported_type">ŠŠµ ŠæŃŠ“ŃŃŠøŠ¼ŃŃ ŠŗŠ°Š½Š°Š»Šø ŃŠ°ŠŗŠ¾Š³Š¾ ŃŠøŠæŠ°</string> + <string name="download_error_unsupported_type">ŠŠµŠæŃŠ“ŃŃŠøŠ¼ŃŠ²Š°Š½ŠøŠ¹ ŃŠøŠæ ŠŗŠ°Š½Š°Š»Ń</string> <string name="download_error_connection_error">ŠŠ¾Š¼ŠøŠ»ŠŗŠ° Š·\'ŃŠ“Š½Š°Š½Š½Ń</string> - <string name="download_error_unknown_host">ŠŠµŠ²ŃŠ“Š¾Š¼ŠøŠ¹ host</string> - <string name="download_error_unauthorized">ŠŠ¾Š¼ŠøŠ»ŠŗŠ° Š°Š²ŃŠµŠ½ŃŠøŃŃŠŗŠ°ŃŃŃ</string> - <string name="download_error_file_type_type">ŠŠ¾Š¼ŠøŠ»ŠŗŠ° ŃŠøŠæŠ° ŃŠ°Š¹Š»Š°</string> + <string name="download_error_unknown_host">ŠŠµŠ²ŃŠ“Š¾Š¼ŠøŠ¹ Ń
Š¾ŃŃ</string> + <string name="download_error_unauthorized">ŠŠ¾Š¼ŠøŠ»ŠŗŠ° Š°ŃŃŠµŠ½ŃŠøŃŃŠŗŠ°ŃŃŃ</string> + <string name="download_error_file_type_type">ŠŠ¾Š¼ŠøŠ»ŠŗŠ° ŃŠøŠæŃ ŃŠ°Š¹Š»Ń</string> <string name="download_error_forbidden">ŠŠ°Š±Š¾ŃŠ¾Š½ŠµŠ½Š¾</string> <string name="cancel_all_downloads_label">Š”ŠŗŠ°ŃŃŠ²Š°ŃŠø Š²ŃŃ Š·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Š½Ń</string> <string name="download_canceled_msg">ŠŠ°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Š½Ń ŃŠŗŠ°ŃŠ¾Š²Š°Š½Šµ</string> @@ -193,21 +208,22 @@ <plurals name="downloads_left"> <item quantity="one">%d Š·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Š½Ń Š·Š°Š»ŠøŃŠøŠ»Š¾ŃŃ</item> <item quantity="few">%d Š·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Š½Ń Š·Š°Š»ŠøŃŠøŠ»Š¾ŃŃ</item> + <item quantity="many">%d Š·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Ń Š·Š°Š»ŠøŃŠøŠ»Š¾ŃŃ</item> <item quantity="other">%d Š·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Ń Š·Š°Š»ŠøŃŠøŠ»Š¾ŃŃ</item> </plurals> <string name="downloads_processing">ŠŠ±ŃŠ¾Š±ŠŗŠ° Š·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Š¾Š³Š¾</string> <string name="download_notification_title">ŠŠ°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Š½Ń Š“Š°Š½ŠøŃ
ŠæŠ¾Š“ŠŗŠ°ŃŃŃ</string> <string name="download_report_content">ŠŠ°Š²Š°Š½ŃŠ°Š¶ŠøŠ»Š¾ŃŃ %1$d ŃŃŠæŃŃŠ½Š¾, %2$d Š· ŠæŠ¾Š¼ŠøŠ»ŠŗŠ°Š¼Šø</string> - <string name="download_log_title_unknown">ŠŠµŠ²ŃŠ“Š¾Š¼Š° Š½Š°Š·Š²Š°</string> + <string name="download_log_title_unknown">ŠŠµŠ²ŃŠ“Š¾Š¼ŠøŠ¹ Š·Š°Š³Š¾Š»Š¾Š²Š¾Šŗ</string> <string name="download_type_feed">ŠŠ°Š½Š°Š»</string> <string name="download_type_media">Š¤Š°Š¹Š» Š· Š¼ŠµŠ“ŃŠ°</string> <string name="download_type_image">ŠŠ¾Š±ŃŠ°Š¶ŠµŠ½Š½Ń</string> <string name="download_request_error_dialog_message_prefix">ŠŠ¾Š¼ŠøŠ»ŠŗŠ° ŠæŃŠø Š·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Ń ŃŠ°Š¹Š»Ń:\u0020</string> <string name="authentication_notification_title">ŠŠ¾ŃŃŃŠ±Š½Š° Š°Š²ŃŠµŠ½ŃŠøŃŃŠŗŠ°ŃŃŃ</string> <string name="authentication_notification_msg">ŠŠ»Ń Š“Š¾ŃŃŃŠæŠ° Š“Š¾ ŃŃŠ¾Š³Š¾ ŃŠµŃŃŃŃŠ° ŠæŠ¾ŃŃŃŠ±Š½Ń ŃŠ¼\'Ń ŃŠ° ŠæŠ°ŃŠ¾Š»Ń </string> - <string name="confirm_mobile_download_dialog_title">ŠŃŠ“ŃŠ²ŠµŃŠ“Š¶ŠµŠ½Š½Ń Š¼Š¾Š±ŃŠ»ŃŠ½ŠøŃ
Š·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Ń</string> - <string name="confirm_mobile_download_dialog_message_not_in_queue">ŠŠ°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Š½Ń ŃŠµŃŠµŠ· Š¼Š¾Š±ŃŠ»ŃŠ½ŠøŠ¹ Š·Š²\'ŃŠ·Š¾Šŗ Š²ŠøŠ¼ŠŗŠ½ŠµŠ½Š¾ Š² Š½Š°ŃŃŃŠ¾Š¹ŠŗŠ°Ń
.\n\nŠ£Š²ŃŠ¼ŠŗŠ½ŃŃŠø ŃŠøŠ¼ŃŠ°ŃŠ¾Š²Š¾ Š°Š±Š¾ ŃŃŠ»ŃŠŗŠø Š“Š¾Š“Š°ŃŠø Š“Š¾ ŃŠµŃŠ³Šø?\n\n<small>ŠŠ°Ń Š²ŠøŠ±ŃŃ Š±ŃŠ“Šµ Š·Š°ŠæŠ°Š¼\'ŃŃŠ¾Š²Š°Š½Š¾ Š½Š° 10 Ń
Š²ŠøŠ»ŠøŠ½.</small></string> - <string name="confirm_mobile_download_dialog_message">ŠŠ°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Š½Ń ŃŠµŃŠµŠ· Š¼Š¾Š±ŃŠ»ŃŠ½ŠøŠ¹ Š·Š²\'ŃŠ·Š¾Šŗ Š²ŠøŠ¼ŠŗŠ½ŠµŠ½Š¾ Š² Š½Š°ŃŃŃŠ¾Š¹ŠŗŠ°Ń
.\n\nŠ£Š²ŃŠ¼ŠŗŠ½ŃŃŠø ŃŠøŠ¼ŃŠ°ŃŠ¾Š²Š¾?\n\n<small>ŠŠ°Ń Š²ŠøŠ±ŃŃ Š±ŃŠ“Šµ Š·Š°ŠæŠ°Š¼\'ŃŃŠ¾Š²Š°Š½Š¾ Š½Š° 10 Ń
Š²ŠøŠ»ŠøŠ½.</small></string> + <string name="confirm_mobile_download_dialog_title">ŠŃŠ“ŃŠ²ŠµŃŠ“Š¶ŠµŠ½Š½Ń Š·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Ń ŃŠµŃŠµŠ· Š¼Š¾Š±ŃŠ»ŃŠ½Ń Š¼ŠµŃŠµŠ¶Ń</string> + <string name="confirm_mobile_download_dialog_message_not_in_queue">ŠŠ°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Š½Ń ŃŠµŃŠµŠ· Š¼Š¾Š±ŃŠ»ŃŠ½Ń Š¼ŠµŃŠµŠ¶Ń Š²ŠøŠ¼ŠŗŠ½ŠµŠ½Š¾ Š² Š½Š°ŃŃŃŠ¾Š¹ŠŗŠ°Ń
.\n\nŠŠøŠ±ŃŠ°ŃŠø Š“Š¾Š“Š°Š²Š°Š½Š½Ń ŠµŠæŃŠ·Š¾Š“Ń Š“Š¾ ŃŠµŃŠ³Šø ŃŠø ŃŠøŠ¼ŃŠ°ŃŠ¾Š²Šµ Š·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Š½Ń?\n\n<small>ŠŠ°Ń Š²ŠøŠ±ŃŃ Š·Š°ŠæŠ°Š¼\'ŃŃŠ°ŃŃŃŃŃ Š½Š° 10 Ń
Š²ŠøŠ»ŠøŠ½.</small></string> + <string name="confirm_mobile_download_dialog_message">ŠŠ°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Š½Ń ŃŠµŃŠµŠ· Š¼Š¾Š±ŃŠ»ŃŠ½Ń Š¼ŠµŃŠµŠ¶Ń Š²ŠøŠ¼ŠŗŠ½ŠµŠ½Š¾ Š² Š½Š°ŃŃŃŠ¾Š¹ŠŗŠ°Ń
.\n\nŠ£Š²ŃŠ¼ŠŗŠ½ŃŃŠø ŃŠøŠ¼ŃŠ°ŃŠ¾Š²Š¾?\n\n<small>ŠŠ°Ń Š²ŠøŠ±ŃŃ Š·Š°ŠæŠ°Š¼\'ŃŃŠ°ŃŃŃŃŃ Š½Š° 10 Ń
Š²ŠøŠ»ŠøŠ½.</small></string> <string name="confirm_mobile_download_dialog_only_add_to_queue">ŠŠøŃŠµ Š“Š¾Š“Š°ŃŠø Š“Š¾ ŃŠµŃŠ³Šø</string> <string name="confirm_mobile_download_dialog_enable_temporarily">Š£Š²ŃŠ¼ŠŗŠ½ŃŃŠø ŃŠøŠ¼ŃŠ°ŃŠ¾Š²Š¾</string> <!--Mediaplayer messages--> @@ -220,13 +236,14 @@ <string name="playback_error_unknown">ŠŠµŠ²ŃŠ“Š¾Š¼Š° ŠæŠ¾Š¼ŠøŠ»ŠŗŠ°</string> <string name="no_media_playing_label">ŠŠµŠ¼Š°Ń ŃŠ¾ Š³ŃŠ°ŃŠø</string> <string name="player_buffering_msg">ŠŃŃŠµŃŃŠ·ŃŃ</string> + <string name="player_go_to_picture_in_picture">Š ŠµŠ¶ŠøŠ¼ Š·Š¾Š±ŃŠ°Š¶ŠµŠ½Š½Ń Š² Š·Š¾Š±ŃŠ°Š¶ŠµŠ½Š½Ń</string> <string name="playbackservice_notification_title">ŠŃŠ°Ń ŠæŠ¾Š“ŠŗŠ°ŃŃ</string> <string name="unknown_media_key">AntennaPod - ŠŠµŠ²ŃŠ“Š¾Š¼ŠøŠ¹ Š¼ŠµŠ“ŃŠ° ŠŗŠ»ŃŃ: %1$d</string> <!--Queue operations--> <string name="lock_queue">ŠŠ°Š±Š»Š¾ŠŗŃŠ²Š°ŃŠø ŃŠµŃŠ³Ń</string> <string name="unlock_queue">Š Š¾Š·Š±Š»Š¾ŠŗŃŠ²Š°ŃŠø ŃŠµŃŠ³Ń</string> <string name="queue_locked">Š§ŠµŃŠ³Ń Š·Š°Š±Š»Š¾ŠŗŠ¾Š²Š°Š½Š¾</string> - <string name="queue_unlocked">Š§ŠµŃŠ³Ń ŃŠ°Š·Š±Š»Š¾ŠŗŠ¾Š²Š°Š½Š¾</string> + <string name="queue_unlocked">Š§ŠµŃŠ³Ń ŃŠ¾Š·Š±Š»Š¾ŠŗŠ¾Š²Š°Š½Š¾</string> <string name="clear_queue_label">ŠŃŠøŃŃŠøŃŠø ŃŠµŃŠ³Ń</string> <string name="undo">Š”ŠŗŠ°ŃŃŠ²Š°ŃŠø</string> <string name="removed_from_queue">ŠŠøŠ“Š°Š»ŠµŠ½Š¾</string> @@ -235,8 +252,10 @@ <string name="sort">ŠŠæŠ¾ŃŃŠ“ŠŗŃŠ²Š°ŃŠø</string> <string name="date">ŠŠ° Š“Š°ŃŠ¾Ń</string> <string name="duration">ŠŠ° ŃŃŠøŠ²Š°Š»ŃŃŃŃ</string> - <string name="episode_title">ŠŠ°Š·Š²Š° ŠµŠæŃŠ·Š¾Š“Š°</string> - <string name="feed_title">ŠŠ°Š·Š²Š° ŠŗŠ°Š½Š°Š»Š°</string> + <string name="episode_title">ŠŠ°Š·Š²Š° ŠµŠæŃŠ·Š¾Š“Ń</string> + <string name="feed_title">ŠŠ°Š·Š²Š° ŠæŠ¾Š“ŠŗŠ°ŃŃŠ°</string> + <string name="random">ŠŠøŠæŠ°Š“ŠŗŠ¾Š²Š¾</string> + <string name="smart_shuffle">Š Š¾Š·ŃŠ¼Š½Šµ ŠæŠµŃŠµŠ¼ŃŃŃŠ²Š°Š½Š½Ń</string> <string name="ascending">ŠŠ° Š·ŃŠ¾ŃŃŠ°Š½Š½ŃŠ¼</string> <string name="descending">ŠŠ° ŃŠæŠ°Š“Š°Š½Š½ŃŠ¼</string> <string name="clear_queue_confirmation_msg">ŠŃŠ“Ń Š»Š°ŃŠŗŠ°, ŠæŃŠ“ŃŠ²ŠµŃŠ“ŃŃŃ ŃŠ¾ Š²Šø Š±Š°Š¶Š°ŃŃŠµ Š²ŠøŠ»ŃŃŠøŃŠø Š²ŃŃ ŠµŠæŃŠ·Š¾Š“Šø Š· ŃŠµŃŠ³Šø.</string> @@ -274,7 +293,7 @@ <string name="enable_sonic">ŠŠŗŠ»ŃŃŠøŃŠø Sonic</string> <!--Empty list labels--> <string name="no_items_label">ŠŃŃŠ¾Š³Š¾ Š² ŃŃŠ¾Š¼Ń ŃŠæŠøŃŠŗŃ</string> - <string name="no_feeds_label">ŠŠµŠ¼Š°Ń ŠæŃŠ“ŠæŠøŃŠ°Š½ŠøŃ
ŠŗŠ°Š½Š°Š»ŃŠ² </string> + <string name="no_feeds_label">ŠŠø ŃŠµ Š½Šµ ŠæŃŠ“ŠæŠøŃŠ°Š»ŠøŃŃ Š½Š° Š¶Š¾Š“Š½Ń ŠæŠ¾Š“ŠŗŠ°ŃŃŠø.</string> <string name="no_chapters_label">Š ŃŃŠ¾Š¼Ń ŠµŠæŃŠ·Š¾Š“Ń Š½ŠµŠ¼Š°Ń ŃŠ¾Š·Š“ŃŠ»ŃŠ².</string> <string name="no_shownotes_label">ŠŠ¾ ŃŃŠ¾Š³Š¾ ŠµŠæŃŠ·Š¾Š“Š° Š½ŠµŠ¼Š°Ń Š½Š¾ŃŠ°ŃŠ¾Šŗ.</string> <!--Preferences--> @@ -283,40 +302,49 @@ <string name="other_pref">ŠŠ½ŃŠµ</string> <string name="about_pref">ŠŃŠ¾ ŠæŃŠ¾Š³ŃŠ°Š¼Ń</string> <string name="queue_label">Š§ŠµŃŠ³Š°</string> - <string name="services_label">Š”ŠµŃŠ²ŃŃŠø</string> + <string name="integrations_label">ŠŠ½ŃŠµŠ³ŃŠ°ŃŃŃ</string> <string name="flattr_label">Flattr</string> - <string name="pref_episode_cleanup_title">Š§ŠøŃŠµŠ½Š½Ń ŠµŠæŃŠ·Š¾Š“ŃŠ²</string> + <string name="flattr_summary">Š”ŠµŃŠ²ŃŃ Š¼ŃŠŗŃŠ¾ŠæŠ»Š°ŃŠµŠ¶ŃŠ²</string> + <string name="automation">ŠŠ²ŃŠ¾Š¼Š°ŃŠøŠ·Š°ŃŃŃ</string> + <string name="download_pref_details">ŠŠµŃŠ°Š»ŃŠ½Š¾</string> + <string name="import_export_pref">ŠŠ¼ŠæŠ¾ŃŃ/ŠŠŗŃŠæŠ¾ŃŃ</string> + <string name="appearance">ŠŠøŠ³Š»ŃŠ“</string> + <string name="external_elements">ŠŠ¾Š²Š½ŃŃŠ½Ń ŠµŠ»ŠµŠ¼ŠµŠ½ŃŠø</string> + <string name="interruptions">Š¢ŠøŠ¼ŃŠ°ŃŠ¾Š²Ń ŠæŠ°ŃŠ·Šø</string> + <string name="buttons">ŠŠ½Š¾ŠæŠŗŠø ŠŗŠµŃŃŠ²Š°Š½Š½Ń Š²ŃŠ“ŃŠ²Š¾ŃŠµŠ½Š½ŃŠ¼</string> + <string name="media_player">ŠŠµŠ“ŃŠ° ŠæŃŠ¾Š³ŃŠ°Š²Š°Ń</string> + <string name="pref_episode_cleanup_title">ŠŃŠøŃŠµŠ½Š½Ń ŠµŠæŃŠ·Š¾Š“ŃŠ²</string> <string name="pref_episode_cleanup_summary">ŠŠæŃŠ·Š¾Š“Šø ŃŠ¾ Š½Šµ Š·Š½Š°Ń
Š¾Š“ŃŃŃŃŃ Š² ŃŠµŃŠ·Ń ŃŠ° Š½Šµ ŠæŠ¾Š¼ŃŃŠµŠ½Ń ŃŠŗ ŃŠ»ŃŠ±Š»ŠµŠ½Ń Š¼Š¾Š¶ŃŃŃ Š±ŃŃŠø Š²ŠøŠ“Š°Š»ŠµŠ½Ń ŃŠŗŃŠ¾ ŠŠ²ŃŠ¾Š·Š°Š²Š°Š½ŃŠ°Š¶ŃŠ²Š°Ń ŠæŠ¾ŃŃŠµŠ±ŃŠ²Š°ŃŠøŠ¼Šµ Š¼ŃŃŃŠµ Š“Š»Ń Š½Š¾Š²ŠøŃ
ŠµŠæŃŠ·Š¾Š“ŃŠ².</string> - <string name="pref_pauseOnDisconnect_sum">ŠŃŠæŠøŠ½ŃŃŠøŃŃ ŠŗŠ¾Š»Šø Š½Š°Š²ŃŃŠ½ŠøŠŗŠø Š°Š±Š¾ Š±Š»ŃŃŃŠ· Š²ŃŠ“āŃŠ“Š½Š°Š½Š¾</string> + <string name="pref_pauseOnDisconnect_sum">ŠŃŠæŠøŠ½ŃŃŠø Š²ŃŠ“ŃŠ²Š¾ŃŠµŠ½Š½Ń ŠŗŠ¾Š»Šø Š½Š°Š²ŃŃŠ½ŠøŠŗŠø Š°Š±Š¾ Š±Š»ŃŃŃŠ· Š²ŃŠ“āŃŠ“Š½Š°Š½Š¾</string> <string name="pref_unpauseOnHeadsetReconnect_sum">ŠŠ¾Š½Š¾Š²ŠøŃŠø Š²ŃŠ“ŃŠ²Š¾ŃŠµŠ½Š½Ń ŠŗŠ¾Š»Šø Š½Š°Š²ŃŃŠ½ŠøŠŗŠø ŠæŠ¾Š²ŃŠ¾ŃŠ½Š¾ ŠæŃŠ“āŃŠ“Š½Š°Š½Š¾</string> <string name="pref_unpauseOnBluetoothReconnect_sum">ŠŠ¾Š½Š¾Š²ŠøŃŠø Š²ŃŠ“ŃŠ²Š¾ŃŠµŠ½Š½Ń ŠŗŠ¾Š»Šø Š±Š»ŃŃŃŠ· ŠæŠ¾Š²ŃŠ¾ŃŠ½Š¾ ŠæŃŠ“āŃŠ“Š½Š°Š½Š¾</string> <string name="pref_hardwareForwardButtonSkips_title">ŠŠ½Š¾ŠæŠŗŠ° ŠæŠµŃŠµŠ¼Š¾ŃŠŗŠø ŠæŃŠ¾ŠæŃŃŠŗŠ°Ń</string> - <string name="pref_hardwareForwardButtonSkips_sum">ŠŃŠø Š½Š°ŃŠøŃŠŗŠ°Š½Š½Ń Š°ŠæŠ°ŃŠ°ŃŠ½Š¾Ń ŠŗŠ½Š¾ŠæŠŗŠø ŠæŠµŃŠµŠ¼Š¾ŃŠŗŠø ŠæŠµŃŠµŠ¹ŃŠø Š“Š¾ Š½Š°ŃŃŃŠæŠ½Š¾Š³Š¾ ŠµŠæŃŠ·Š¾Š“Š° Š·Š°Š¼ŃŃŃŃ ŠæŠµŃŠµŠ¼Š¾ŃŠŗŠø.</string> + <string name="pref_hardwareForwardButtonSkips_sum">ŠŃŠø Š½Š°ŃŠøŃŠŗŠ°Š½Š½Ń ŠŗŠ½Š¾ŠæŠŗŠø Š²ŠæŠµŃŠµŠ“ Š½Š° Š±Š»ŃŃŃŃ ŠæŃŠøŃŃŃŠ¾Ń, ŠæŠµŃŠµŃ
Š¾Š“ŃŃŠµ Š“Š¾ Š½Š°ŃŃŃŠæŠ½Š¾Š³Š¾ ŠµŠæŃŠ·Š¾Š“Ń Š·Š°Š¼ŃŃŃŃ ŃŠ²ŠøŠ“ŠŗŠ¾Š³Š¾ ŠæŠµŃŠµŠ¼Š¾ŃŃŠ²Š°Š½Š½Ń</string> <string name="pref_hardwarePreviousButtonRestarts_title">ŠŠ½Š¾ŠæŠŗŠ° \"Š½Š°Š·Š°Š“\" ŠæŠ¾Š²ŠµŃŃŠ°Ń Š“Š¾ ŠæŠ¾ŃŠ°ŃŠŗŃ</string> <string name="pref_hardwarePreviousButtonRestarts_sum">ŠŃŠø Š½Š°ŃŠøŃŠŗŠ°Š½Š½Ń Š°ŠæŠ°ŃŠ°ŃŠ½Š¾Ń ŠŗŠ½Š¾ŠæŠŗŠø \"Š½Š°Š·Š°Š“\", Š·Š°Š¼ŃŃŃŃ ŠæŠµŃŠµŠ¼Š¾ŃŠŗŠø, ŃŠ¾Š·ŠæŠ¾ŃŠ°ŃŠø ŠæŃŠ¾Š³ŃŠ°Š²Š°Š½Š½Ń ŠæŠ¾ŃŠ¾ŃŠ½Š¾Š³Š¾ ŠµŠæŃŠ·Š¾Š“Š° Š·Š°Š½Š¾Š²Š¾</string> <string name="pref_followQueue_sum">ŠŠµŃŠµŠ¹ŃŠø Š“Š¾ Š½Š°ŃŃŃŠæŠ½Š¾Š³Š¾ ŠµŠæŃŠ·Š¾Š“Š° Š² ŃŠµŃŠ·Ń ŠŗŠ¾Š»Šø ŠæŠ¾ŃŠ¾ŃŠ½ŠøŠ¹ Š·Š°ŠŗŃŠ½ŃŠµŠ½Š¾</string> <string name="pref_auto_delete_sum">ŠŠøŠ“Š°Š»ŠøŃŠø ŠµŠæŃŠ·Š¾Š“ ŠæŃŃŠ»Ń ŠæŠ¾Š²Š½Š¾Š³Š¾ Š²ŃŠ“ŃŠ²Š¾ŃŠµŠ½Š½Ń</string> <string name="pref_auto_delete_title">ŠŠ²ŃŠ¾Š²ŠøŠ“Š°Š»ŠµŠ½Š½Ń</string> - <string name="pref_smart_mark_as_played_sum">ŠŠ¾Š·Š½Š°ŃŠøŃŠø ŠµŠæŃŠ·Š¾Š“Šø ŃŠŗ Š³ŃŠ°Š½Ń Š½Š°Š²ŃŃŃ ŃŠŗŃŠ¾ Š·Š°Š»ŠøŃŠøŠ»Š¾ŃŃ Š¼ŠµŠ½Ń Š½ŃŠ¶ Š·Š°Š·Š½Š°ŃŠµŠ½Šµ ŃŠøŃŠ»Š¾ ŃŠµŠŗŃŠ½Š“ Š“Š¾ ŠŗŃŠ½ŃŃ Š²ŃŠ“ŃŠ²Š¾ŃŠµŠ½Š½Ń</string> + <string name="pref_smart_mark_as_played_sum">ŠŠ¾Š·Š½Š°ŃŠøŃŠø ŠµŠæŃŠ·Š¾Š“Šø ŃŠŗ Š²ŃŠ“ŃŠ²Š¾ŃŠµŠ½Ń, Š½Š°Š²ŃŃŃ ŃŠŗŃŠ¾ Š·Š°Š»ŠøŃŠøŠ»Š¾ŃŃ Š¼ŠµŠ½Ń Š½ŃŠ¶ Š·Š°Š·Š½Š°ŃŠµŠ½Šµ ŃŠøŃŠ»Š¾ ŃŠµŠŗŃŠ½Š“ Š“Š¾ ŠŗŃŠ½ŃŃ Š²ŃŠ“ŃŠ²Š¾ŃŠµŠ½Š½Ń</string> <string name="pref_smart_mark_as_played_title">Š Š¾Š·ŃŠ¼Š½Šµ ŠæŠ¾Š·Š½Š°ŃŠµŠ½Š½Ń ŠæŃŠ¾ŃŠ»ŃŃ
Š°Š½ŠøŃ
ŠµŠæŃŠ·Š¾Š“ŃŠ²</string> - <string name="pref_skip_keeps_episodes_sum">ŠŠ±ŠµŃŃŠ³Š°ŃŠø ŠµŠæŃŠ·Š¾Š“Šø ŃŠ¾ ŠæŃŠ¾ŠæŃŃŠµŠ½Ń ŠæŃŠø ŠæŃŠ¾Š³ŃŠ°Š²Š°Š½Š½Ń </string> - <string name="pref_skip_keeps_episodes_title">ŠŠ±ŠµŃŃŠ³Š°ŃŠø ŠæŃŠ¾ŠæŃŃŠµŠ½Ń ŠæŃŠø ŠæŃŠ¾Š³ŃŠ°Š²Š°Š½Š½Ń ŠµŠæŃŠ·Š¾Š“Šø </string> + <string name="pref_skip_keeps_episodes_sum">ŠŠ±ŠµŃŃŠ³Š°ŃŠø ŠæŃŠ¾ŠæŃŃŠµŠ½Ń ŠµŠæŃŠ·Š¾Š“Šø ŠæŃŠø ŠæŃŠ¾Š³ŃŠ°Š²Š°Š½Š½Ń </string> + <string name="pref_skip_keeps_episodes_title">ŠŠ±ŠµŃŃŠ³Š°ŃŠø ŠæŃŠ¾ŠæŃŃŠµŠ½Ń ŠµŠæŃŠ·Š¾Š“Šø</string> <string name="pref_favorite_keeps_episodes_sum">ŠŠ±ŠµŃŃŠ³Š°ŃŠø ŠµŠæŃŠ·Š¾Š“Šø ŃŠ¾ ŠæŠ¾Š¼ŃŃŠµŠ½Ń ŃŠŗ ŃŠ»ŃŠ±Š»ŠµŠ½Ń</string> <string name="pref_favorite_keeps_episodes_title">ŠŠ±ŠµŃŃŠ³Š°ŃŠø ŃŠ»ŃŠ±Š»ŠµŠ½Ń ŠµŠæŃŠ·Š¾Š“Šø</string> <string name="playback_pref">ŠŃŠ“ŃŠ²Š¾ŃŠµŠ½Š½Ń</string> <string name="network_pref">ŠŠµŃŠµŠ¶Š°</string> <string name="pref_autoUpdateIntervallOrTime_title">Š§Š°ŃŃŠ¾ŃŠ° Š¾Š½Š¾Š²Š»ŠµŠ½Ń Š°Š±Š¾ Š¾Š½Š¾Š²Š»ŠµŠ½Š½Ń Š² Š·Š°Š·Š½Š°ŃŠµŠ½ŠøŠ¹ ŃŠ°Ń</string> - <string name="pref_autoUpdateIntervallOrTime_sum">ŠŠøŠ·Š½Š°ŃŠøŃŠø ŃŠ½ŃŠµŃŠ²Š°Š» ŃŠ°ŃŃ Š°Š±Š¾ Š²ŠøŠ·Š½Š°ŃŠøŃŠø ŃŠ°Ń ŃŠ¾Š“Š½Ń Š“Š»Ń Š°Š²ŃŠ¾Š¾Š½Š¾Š²Š»ŠµŠ½Š½Ń</string> - <string name="pref_autoUpdateIntervallOrTime_message">ŠŠ¾Š¶Š»ŠøŠ²Š¾ Š²ŃŃŠ°Š½Š¾Š²ŠøŃŠø <i>ŃŠ½ŃŠµŃŠ²Š°Š»</i> ŃŠŗ ŃŠ¾ \"ŠŗŠ¾Š¶Š½Ń 2 Š³Š¾Š“ŠøŠ½Šø\", Š²ŃŃŠ°Š½Š¾Š²ŠøŃŠø <i>ŃŠ°Ń ŃŠ¾Š“Š½Ń</i> ŃŠŗ ŃŠ¾ \"7:00\" Š°Š±Š¾ <i>Š²ŃŠ“ŠŗŠ»ŃŃŠøŃŠø</i> Š°Š²ŃŠ¾Š¼Š°ŃŠøŃŠ½Šµ Š¾Š½Š¾Š²Š»ŠµŠ½Š½Ń Š²Š·Š°Š³Š°Š»Ń.\n\n<small>ŠŠ²ŠµŃŠ½ŃŃŃ ŃŠ²Š°Š³Ń: Š§Š°Ń Š¾Š½Š¾Š²Š»ŠµŠ½Š½Ń Š½Šµ Ń ŃŠ¾ŃŠ½ŠøŠ¼. ŠŠ¾Š¶Š»ŠøŠ²Ń ŠŗŠ¾ŃŠ¾ŃŠŗŃ Š·Š°ŃŃŠøŠ¼ŠŗŠø.</small></string> + <string name="pref_autoUpdateIntervallOrTime_sum">ŠŠŗŠ°Š¶ŃŃŃ ŃŠ½ŃŠµŃŠ²Š°Š» Š°Š±Š¾ ŠæŠµŠ²Š½ŠøŠ¹ ŃŠ°Ń Š“Š¾Š±Šø, ŃŠ¾Š± Š¾Š½Š¾Š²ŠøŃŠø ŠŗŠ°Š½Š°Š»Šø Š°Š²ŃŠ¾Š¼Š°ŃŠøŃŠ½Š¾</string> + <string name="pref_autoUpdateIntervallOrTime_message">ŠŠ¾Š¶Š»ŠøŠ²Š¾ Š²ŃŃŠ°Š½Š¾Š²ŠøŃŠø <i>ŃŠ½ŃŠµŃŠ²Š°Š»</i> ŃŠŗ ŃŠ¾ \"ŠŗŠ¾Š¶Š½Ń 2 Š³Š¾Š“ŠøŠ½Šø\", Š²ŃŃŠ°Š½Š¾Š²ŠøŃŠø <i>ŃŠ°Ń Š“Š½Ń</i> ŃŠŗ ŃŠ¾ \"7:00\" Š°Š±Š¾ ŠæŠ¾Š²Š½ŃŃŃŃ <i>Š²ŠøŠ¼ŠŗŠ½ŃŃŠø</i> Š°Š²ŃŠ¾Š¼Š°ŃŠøŃŠ½Šµ Š¾Š½Š¾Š²Š»ŠµŠ½Š½Ń.\n\n<small>ŠŠ²ŠµŃŠ½ŃŃŃ ŃŠ²Š°Š³Ń: Š§Š°ŃŠø Š¾Š½Š¾Š²Š»ŠµŠ½Š½Ń Š½Šµ Ń ŃŠ¾ŃŠ½ŠøŠ¼Šø. ŠŠ¾Š¶Š»ŠøŠ²Ń ŠŗŠ¾ŃŠ¾ŃŠŗŃ Š·Š°ŃŃŠøŠ¼ŠŗŠø.</small></string> <string name="pref_autoUpdateIntervallOrTime_Disable">ŠŠøŠ¼ŠŗŠ½ŃŃŠø</string> <string name="pref_autoUpdateIntervallOrTime_Interval">ŠŠ½ŃŠµŃŠ²Š°Š»</string> - <string name="pref_autoUpdateIntervallOrTime_TimeOfDay">ŠŃŃŠ°Š½Š¾Š²ŠøŃŠø ŃŠ°Ń ŃŠ¾Š“Š½Ń</string> + <string name="pref_autoUpdateIntervallOrTime_TimeOfDay">ŠŃŃŠ°Š½Š¾Š²ŠøŃŠø Š³Š¾Š“ŠøŠ½Ń</string> <string name="pref_autoUpdateIntervallOrTime_every">ŠŗŠ¾Š¶Š½Ń %1$s</string> - <string name="pref_autoUpdateIntervallOrTime_at">Š½Š° %1$s</string> + <string name="pref_autoUpdateIntervallOrTime_at">Š¾ %1$s</string> <string name="pref_downloadMediaOnWifiOnly_sum">ŠŠ°Š²Š°Š½ŃŠ°Š¶ŃŠ²Š°ŃŠø ŃŃŠ»ŃŠŗŠø ŃŠµŃŠµŠ· Wifi</string> <string name="pref_followQueue_title">ŠŃŠ°ŃŠø Š±ŠµŠ·ŠæŠµŃŠµŃŠ²Š½Š¾</string> <string name="pref_downloadMediaOnWifiOnly_title">ŠŠ°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Š½Ń ŃŠµŃŠµŠ· Wifi</string> - <string name="pref_pauseOnHeadsetDisconnect_title">ŠŠ°Š²ŃŃŠ½ŠøŠŗŠø Š²ŠøŃŃŠ³Š½ŃŃŃ</string> + <string name="pref_pauseOnHeadsetDisconnect_title">ŠŠ°Š²ŃŃŠ½ŠøŠŗŠø Š²ŃŠ“\'ŃŠ“Š½Š°Š½Ń</string> <string name="pref_unpauseOnHeadsetReconnect_title">ŠŠ¾Š²ŃŠ¾ŃŠ½Šµ ŠæŃŠ“āŃŠ“Š½Š°Š½Š½Ń Š½Š°Š²ŃŃŠ½ŠøŠŗŃŠ²</string> <string name="pref_unpauseOnBluetoothReconnect_title">ŠŠ¾Š²ŃŠ¾ŃŠ½Šµ ŠæŃŠ“āŃŠ“Š½Š°Š½Š½Ń Š±Š»ŃŃŃŠ·</string> <string name="pref_mobileUpdate_title">ŠŠ¾Š±ŃŠ»ŃŠ½Šµ Š¾Š½Š¾Š²Š»ŠµŠ½Š½Ń</string> @@ -325,7 +353,7 @@ <string name="flattr_settings_label">ŠŠ°Š»Š°ŃŃŃŠ²Š°Š½Š½Ń Flattr</string> <string name="pref_flattr_auth_title">Š£Š²ŃŠ¹ŃŠø Š“Š¾ Flattr</string> <string name="pref_flattr_auth_sum">Š£Š²ŃŠ¹ŃŠø Š² Š¾Š±Š»ŃŠŗŠ¾Š²Ń flattr Š“Š»Ń ŠæŃŠ“ŃŃŠøŠ¼ŠŗŠø Š°Š²ŃŠ¾ŃŃŠ² Š½Š°ŠæŃŃŠ¼Ń Š· Š“Š¾Š“Š°ŃŠŗŃ</string> - <string name="pref_flattr_this_app_title">Flattr ŃŃŠ¹ Š“Š¾Š“Š°ŃŠ¾Šŗ</string> + <string name="pref_flattr_this_app_title">ŠŃŠ“ŃŃŠøŠ¼Š°ŃŠø ŃŠµŠ¹ Š“Š¾Š“Š°ŃŠ¾Šŗ Š·Š° Š“Š¾ŠæŠ¾Š¼Š¾Š³Š¾Ń Flattr</string> <string name="pref_flattr_this_app_sum">ŠŃŠ“ŃŃŠøŠ¼Š°Š¹ŃŠµ ŃŠ¾Š·ŃŠ¾Š±ŠŗŃ AntennaPod Š·Š° Š“Š¾ŠæŠ¾Š¼Š¾Š³Š¾Ń flattr. ŠŃŠŗŃŃ!</string> <string name="pref_revokeAccess_title">ŠŃŠ“ŠŗŠ»ŠøŠŗŠ°ŃŠø Š“Š¾ŃŃŃŠæ</string> <string name="pref_revokeAccess_sum">ŠŃŠ“ŠŗŠ»ŠøŠŗŠ°ŃŠø Š“Š¾Š·Š²ŃŠ» Š½Š° Š“Š¾ŃŃŃŠæ Š“Š¾ Š²Š°ŃŠ¾Š³Š¾ flattr Š· ŃŃŠ¾Š³Š¾ Š“Š¾Š“Š°ŃŠŗŃ</string> @@ -340,20 +368,21 @@ <string name="pref_nav_drawer_feed_order_title">ŠŃŃŠ°Š½Š¾Š²ŠøŃŠø ŠæŠ¾ŃŃŠ“Š¾Šŗ ŠæŃŠ“ŠæŠøŃŠ¾Šŗ</string> <string name="pref_nav_drawer_feed_order_sum">ŠŠ¼ŃŠ½ŠøŃŠø ŠæŠ¾ŃŃŠ“Š¾Šŗ Š²Š°ŃŠøŃ
ŠæŃŠ“ŠæŠøŃŠ¾Šŗ</string> <string name="pref_nav_drawer_feed_counter_title">ŠŠ°Š»Š°ŃŃŃŠ²Š°ŃŠø Š»ŃŃŠøŠ»ŃŠ½ŠøŠŗ ŠæŃŠ“ŠæŠøŃŠ¾Šŗ</string> - <string name="pref_nav_drawer_feed_counter_sum">ŠŠ¼ŃŠ½ŠøŃŠø ŃŠ½ŃŠ¾ŃŠ¼Š°ŃŃŃ ŃŠŗŃ Š²ŃŠ“Š¾Š±ŃŠ°Š¶Š°Ń Š»ŃŃŠøŠ»ŃŠ½ŠøŠŗ ŠæŃŠ“ŠæŠøŃŠ¾Šŗ</string> + <string name="pref_nav_drawer_feed_counter_sum">ŠŠ¼ŃŠ½ŃŃŃ ŃŠ½ŃŠ¾ŃŠ¼Š°ŃŃŃ, ŃŠ¾ Š²ŃŠ“Š¾Š±ŃŠ°Š¶Š°ŃŃŃŃŃ Š»ŃŃŠøŠ»ŃŠ½ŠøŠŗŠ¾Š¼ ŠæŃŠ“ŠæŠøŃŠŗŠø. Š¢Š°ŠŗŠ¾Š¶ Š²ŠæŠ»ŠøŠ²Š°Ń Š½Š° ŃŠ¾ŃŃŃŠ²Š°Š½Š½Ń ŠæŃŠ“ŠæŠøŃŠ¾Šŗ, ŃŠŗŃŠ¾ Š“Š»Ń ŠæŠ°ŃŠ°Š¼ŠµŃŃŠ° \"ŠŠ¾ŃŃŠ“Š¾Šŗ ŠæŃŠ“ŠæŠøŃŠ¾Šŗ\" Š²ŃŃŠ°Š½Š¾Š²Š»ŠµŠ½Š¾ Š·Š½Š°ŃŠµŠ½Š½Ń \"ŠŃŃŠøŠ»ŃŠ½ŠøŠŗ\".</string> <string name="pref_set_theme_sum">ŠŠ¼ŃŠ½ŠøŃŠø Š²ŠøŠ³Š»ŃŠ“ AntennaPod</string> <string name="pref_automatic_download_title">ŠŠ²ŃŠ¾Š·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Š½Ń</string> <string name="pref_automatic_download_sum">ŠŠ°Š»Š°ŃŃŃŠ²Š°Š½Š½Ń Š°Š²ŃŠ¾Š·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Š½Ń ŠµŠæŃŠ·Š¾Š“ŃŠ²</string> <string name="pref_autodl_wifi_filter_title">Š£Š²ŃŠ¼ŠŗŠ½ŃŃŠø ŃŃŠ»ŃŃŃ Wi-Fi</string> <string name="pref_autodl_wifi_filter_sum">ŠŠ¾Š·Š²Š¾Š»ŠøŃŠø Š°Š²ŃŠ¾Š·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Š½Ń ŃŃŠ»ŃŠŗŠø Š² ŃŠøŃ
Wi-Fi Š¼ŠµŃŠµŠ¶Š°Ń
</string> - <string name="pref_autodl_allow_on_mobile_title">ŠŠ°Š²Š°Š½ŃŠ°Š¶ŃŠ²Š°ŃŠø ŃŠµŃŠµŠ· Š¼Š¾Š±ŃŠ»ŃŠ½Šµ Š·āŃŠ“Š½Š°Š½Š½Ń</string> - <string name="pref_autodl_allow_on_mobile_sum">ŠŠ¾Š·Š²Š¾Š»ŠøŃŠø Š°Š²ŃŠ¾Š¼Š°ŃŠøŃŠ½Šµ Š·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Š½Ń ŃŠµŃŠµŠ· Š¼Š¾Š±ŃŠ»ŃŠ½Šµ Š·āŃŠ“Š½Š°Š½Š½Ń.</string> + <string name="pref_autodl_allow_on_mobile_title">ŠŠ°Š²Š°Š½ŃŠ°Š¶ŃŠ²Š°ŃŠø ŃŠµŃŠµŠ· Š¼Š¾Š±ŃŠ»ŃŠ½Ń Š¼ŠµŃŠµŠ¶Ń</string> + <string name="pref_autodl_allow_on_mobile_sum">ŠŠ¾Š·Š²Š¾Š»ŠøŃŠø Š°Š²ŃŠ¾Š¼Š°ŃŠøŃŠ½Šµ Š·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Š½Ń ŃŠµŃŠµŠ· Š¼Š¾Š±ŃŠ»ŃŠ½Ń Š¼ŠµŃŠµŠ¶Ń.</string> <string name="pref_automatic_download_on_battery_title">ŠŠ°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Š½Ń Š±ŠµŠ· Š·Š°ŃŃŠ“Š½Š¾Š³Š¾ ŠæŃŠøŃŃŃŠ¾Ń</string> - <string name="pref_automatic_download_on_battery_sum">ŠŠ¾Š·Š²Š¾Š»ŠøŃŠø Š°Š²ŃŠ¾Š·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Š½Ń ŠŗŠ¾Š»Šø Š·Š°ŃŃŠ“Š½ŠøŠ¹ ŠæŃŠøŃŃŃŃŠ¹ Š½Šµ ŠæŃŠ“ŠŗŠ»ŃŃŠµŠ½Š¾</string> + <string name="pref_automatic_download_on_battery_sum">ŠŠ¾Š·Š²Š¾Š»ŠøŃŠø Š°Š²ŃŠ¾Š·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Š½Ń ŠŗŠ¾Š»Šø Š·Š°ŃŃŠ“Š½ŠøŠ¹ ŠæŃŠøŃŃŃŃŠ¹ Š½Šµ ŠæŃŠ“ŠŗŠ»ŃŃŠµŠ½ŠøŠ¹</string> <string name="pref_parallel_downloads_title">ŠŠ°ŃŠ°Š»ŠµŠ»ŃŠ½Ń Š·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Š½Ń</string> <string name="pref_episode_cache_title">ŠŠµŃ ŠµŠæŃŠ·Š¾Š“ŃŠ²</string> <string name="pref_theme_title_light">Š”Š²ŃŃŠ»Š°</string> <string name="pref_theme_title_dark">Š¢ŠµŠ¼Š½Š°</string> + <string name="pref_theme_title_trueblack">Š§Š¾ŃŠ½Š° (Š“Š»Ń AMOLED)</string> <string name="pref_episode_cache_unlimited">ŠŠµŠ· Š¾Š±Š¼ŠµŠ¶ŠµŠ½Ń</string> <string name="pref_update_interval_hours_plural">Š³Š¾Š“ŠøŠ½</string> <string name="pref_update_interval_hours_singular">Š³Š¾Š“ŠøŠ½Š°</string> @@ -365,33 +394,33 @@ <string name="pref_gpodnet_setlogin_information_title">ŠŠ¼ŃŠ½ŠøŃŠø ŃŠ½ŃŠ¾ŃŠ¼Š°ŃŃŃ Š“Š»Ń Š²Ń
Š¾Š“Ń</string> <string name="pref_gpodnet_setlogin_information_sum">ŠŠ¼ŃŠ½ŠøŃŠø ŃŠ½ŃŠ¾ŃŠ¼Š°ŃŃŃ ŃŠ¾Š“Š¾ Š¾Š±Š»ŃŠŗŠ¾Š²Š¾Š³Š¾ Š·Š°ŠæŠøŃŃ gpodder.net</string> <string name="pref_gpodnet_sync_changes_title">Š”ŠøŠ½Ń
ŃŠ¾Š½ŃŠ·ŃŠ²Š°ŃŠø Š·Š¼ŃŠ½Šø Š½ŠµŠ³Š°Š¹Š½Š¾</string> - <string name="pref_gpodnet_sync_changes_sum">Š”ŠøŠ½Ń
ŃŠ¾Š½ŃŠ·ŃŠ²Š°ŃŠø ŠæŃŠ“ŠæŠøŃŠŗŠø ŃŠ° Š·Š¼ŃŠ½Šø ŃŃŠ°Š½Š° ŠµŠæŃŠ·Š¾Š“ŃŠ² Š· gpodder.net</string> + <string name="pref_gpodnet_sync_changes_sum">Š”ŠøŠ½Ń
ŃŠ¾Š½ŃŠ·ŃŠ²Š°ŃŠø ŠæŃŠ“ŠæŠøŃŠŗŠø ŃŠ° Š·Š¼ŃŠ½Šø ŃŃŠ°Š½Ń ŠµŠæŃŠ·Š¾Š“ŃŠ² Š· gpodder.net</string> <string name="pref_gpodnet_full_sync_title">ŠŠøŠŗŠ¾Š½Š°ŃŠø ŠæŠ¾Š²Š½Ń ŃŠøŠ½Ń
ŃŠ¾Š½ŃŠ·Š°ŃŃŃ Š½ŠµŠ³Š°Š¹Š½Š¾</string> <string name="pref_gpodnet_full_sync_sum">Š”ŠøŠ½Ń
ŃŠ¾Š½ŃŠ·ŃŠ²Š°ŃŠø Š²ŃŃ ŠæŃŠ“ŠæŠøŃŠŗŠø ŃŠ° ŃŃŠ°Š½ ŠµŠæŃŠ·Š¾Š“ŃŠ² Š· gpodder.net.</string> <string name="pref_gpodnet_sync_sum_last_sync_line">ŠŃŃŠ°Š½Š½Ń ŃŠæŃŠ¾Š±Š° ŃŠøŠ½Ń
ŃŠ¾Š½ŃŠ·Š°ŃŃŃ: %1$s (%2$s)</string> <string name="pref_gpodnet_sync_started">CŠøŠ½Ń
ŃŠ¾Š½ŃŠ·Š°ŃŃŃ ŠæŠ¾ŃŠ°Š»Š°ŃŃ</string> <string name="pref_gpodnet_full_sync_started">ŠŠ¾Š²Š½Ń ŃŠøŠ½Ń
ŃŠ¾Š½ŃŠ·Š°ŃŃŃ ŃŠ¾Š·ŠæŠ¾ŃŠ°ŃŠ¾</string> - <string name="pref_gpodnet_login_status"><![CDATA[ŠŠø ŃŠ²ŃŠ¹ŃŠ»Šø ŃŠŗ <i>%1$s</i> Š· ŠæŃŠøŃŃŃŠ¾Ń <i>%2$s</i>]]></string> + <string name="pref_gpodnet_login_status"><![CDATA[ŠŠø ŃŠ²ŃŠ¹ŃŠ»Šø ŃŠŗ <i>%1$s</i> Š· ŠæŃŠøŃŃŃŠ¾Ń <i>%2$s</i>]]></string> <string name="pref_gpodnet_notifications_title">ŠŠ¾Š²ŃŠ“Š¾Š¼Š»ŃŃŠø ŠæŃŠ¾ ŠæŠ¾Š¼ŠøŠ»ŠŗŠø ŃŠøŠ½Ń
ŃŠ¾Š½ŃŠ·Š°ŃŃŃ</string> <string name="pref_gpodnet_notifications_sum">Š¦Šµ Š½Š°Š»Š°ŃŃŃŠ²Š°Š½Š½Ń Š½Šµ Š·Š°ŃŃŠ¾ŃŠ¾Š²ŃŃŃŃŃŃ Š“Š¾ ŠæŠ¾Š¼ŠøŠ»Š¾Šŗ Š°Š²ŃŠµŠ½ŃŠøŃŃŠŗŠ°ŃŃŃ.</string> <string name="pref_playback_speed_title">ŠØŠ²ŠøŠ“ŠŗŃŃŃŃ ŠæŃŠ¾Š³ŃŠ°Š²Š°Š½Š½Ń</string> <string name="pref_playback_speed_sum">ŠŠ°Š»Š°ŃŃŃŠ²Š°Š½Š½Ń ŃŠ²ŃŠ“ŠŗŠ¾ŃŃŃ Š“Š¾ŃŃŃŠæŠ½Š¾ Š“Š»Ń Š·Š¼ŃŠ½Š½Š¾Ń ŃŠ²ŠøŠ“ŠŗŠ¾ŃŃŃ ŠæŃŠ¾Š³ŃŠ°Š²Š°Š½Š½Ń</string> - <string name="pref_fast_forward">Š§Š°Ń ŠæŃŠ¾ŠæŃŃŠŗŠ° ŠŗŠ½Š¾ŠæŠŗŠ¾Š¹ ŠæŠµŃŠµŠ¼Š¾ŃŠŗŠø Š²ŠæŠµŃŠµŠ“</string> - <string name="pref_fast_forward_sum">ŠŠ°Š»Š°ŃŃŃŠ²Š°ŃŠø ŠŗŃŠ»ŃŠŗŃŃŃŃ ŃŠµŠŗŃŠ½Š“ ŃŠŗŃ ŠæŃŠ¾ŠæŃŃŠŗŠ°ŃŃŃŃŃ ŠæŃŠø Š½Š°ŃŠøŃŠŗŠ°Š½Š½Ń ŠŗŠ½Š¾ŠæŠŗŠø ŠæŠµŃŠµŠ¼Š¾ŃŠŗŠø Š²ŠæŠµŃŠµŠ“</string> - <string name="pref_rewind">Š§Š°Ń ŠæŃŠ¾ŠæŃŃŠŗŠ° ŠŗŠ½Š¾ŠæŠŗŠ¾Š¹ ŠæŠµŃŠµŠ¼Š¾ŃŠŗŠø Š½Š°Š·Š°Š“</string> - <string name="pref_rewind_sum">ŠŠ°Š»Š°ŃŃŃŠ²Š°ŃŠø ŠŗŃŠ»ŃŠŗŃŃŃŃ ŃŠµŠŗŃŠ½Š“ ŃŠŗŃ Š²ŃŠ“Š¼Š¾ŃŃŃŃŃŃŃ ŠæŃŠø Š½Š°ŃŠøŃŠŗŠ°Š½Š½Ń ŠŗŠ½Š¾ŠæŠŗŠø ŠæŠµŃŠµŠ¼Š¾ŃŠŗŠø Š½Š°Š·Š°Š“</string> + <string name="pref_fast_forward">Š§Š°Ń, ŃŠ¾ ŠæŃŠ¾ŠæŃŃŠŗŠ°ŃŃŃŃŃ ŠŗŠ½Š¾ŠæŠŗŠ¾Ń ŠæŠµŃŠµŠ¼Š¾ŃŠŗŠø Š²ŠæŠµŃŠµŠ“</string> + <string name="pref_fast_forward_sum">ŠŠ°Š»Š°ŃŃŃŠ²Š°ŃŠø ŠŗŃŠ»ŃŠŗŃŃŃŃ ŃŠµŠŗŃŠ½Š“, ŃŠŗŃ ŠæŃŠ¾ŠæŃŃŠŗŠ°ŃŃŃŃŃ ŠæŃŠø Š½Š°ŃŠøŃŠŗŠ°Š½Š½Ń ŠŗŠ½Š¾ŠæŠŗŠø ŠæŠµŃŠµŠ¼Š¾ŃŠŗŠø Š²ŠæŠµŃŠµŠ“</string> + <string name="pref_rewind">Š§Š°Ń, ŃŠ¾ ŠæŃŠ¾ŠæŃŃŠŗŠ°ŃŃŃŃŃ ŠŗŠ½Š¾ŠæŠŗŠ¾Ń Š²ŃŠ“Š¼Š¾ŃŠŗŠø Š½Š°Š·Š°Š“</string> + <string name="pref_rewind_sum">ŠŠ°Š»Š°ŃŃŃŠ²Š°ŃŠø ŠŗŃŠ»ŃŠŗŃŃŃŃ ŃŠµŠŗŃŠ½Š“ ŃŠŗŃ Š²ŃŠ“Š¼Š¾ŃŃŃŃŃŃŃ ŠæŃŠø Š½Š°ŃŠøŃŠŗŠ°Š½Š½Ń ŠŗŠ½Š¾ŠæŠŗŠø Š²ŃŠ“Š¼Š¾ŃŠŗŠø Š½Š°Š·Š°Š“</string> <string name="pref_gpodnet_sethostname_title">ŠŃŃŠ°Š½Š¾Š²ŠøŃŠø ŃŠ¼\'Ń Ń
Š¾ŃŃŠ°</string> <string name="pref_gpodnet_sethostname_use_default_host">ŠŠøŠŗŠ¾ŃŠøŃŃŠ°ŃŠø Ń
Š¾ŃŃ ŠæŠ¾ Š·Š°Š¼Š¾Š²ŃŠ°Š½Š½Ń</string> - <string name="pref_expandNotify_title">Š Š¾Š·Š³Š¾ŃŠ½ŃŃŠø ŠæŠ¾Š²ŃŠ“Š¾Š¼Š»ŠµŠ½Š½Ń</string> - <string name="pref_expandNotify_sum">ŠŠ°Š²Š¶Š“Šø ŃŠ¾Š·Š³Š¾ŃŃŠ°ŃŠø ŠæŠ¾Š²ŃŠ“Š¾Š¼Š»ŠµŠ½Š½Ń, ŃŠ¾Š± ŠæŠ¾ŠŗŠ°Š·Š°ŃŠø ŠŗŠ½Š¾ŠæŠŗŠø ŠŗŠµŃŃŠ²Š°Š½Š½Ń.</string> + <string name="pref_expandNotify_title">ŠŠøŃŠ¾ŠŗŠøŠ¹ ŠæŃŃŠ¾ŃŠøŃŠµŃ ŃŠæŠ¾Š²ŃŃŠµŠ½Š½Ń</string> + <string name="pref_expandNotify_sum">ŠŠ°Š·Š²ŠøŃŠ°Š¹ ŃŠµ ŃŠ¾Š·ŃŠøŃŃŃ ŃŠæŠ¾Š²ŃŃŠµŠ½Š½Ń, ŃŠ¾Š± ŠæŠ¾ŠŗŠ°Š·Š°ŃŠø ŠŗŠ½Š¾ŠæŠŗŠø Š²ŃŠ“ŃŠ²Š¾ŃŠµŠ½Š½Ń.</string> <string name="pref_persistNotify_title">ŠŠ°Š²Š¶Š“Šø ŠæŠ¾ŠŗŠ°Š·ŃŠ²Š°ŃŠø ŠµŠ»ŠµŠ¼ŠµŠ½ŃŠø ŠŗŠµŃŃŠ²Š°Š½Š½Ń Š²ŃŠ“ŃŠ²Š¾ŃŠµŠ½Š½ŃŠ¼</string> <string name="pref_persistNotify_sum">ŠŠ¾ŠŗŠ°Š·ŃŠ²Š°ŃŠø ŠæŠ¾Š²ŃŠ“Š¾Š¼Š»ŠµŠ½Š½Ń ŃŠ° ŠµŠ»ŠµŠ¼ŠµŠ½ŃŠø ŠŗŠµŃŃŠ²Š°Š½Š½Ń Š½Š° ŠµŠŗŃŠ°Š½Ń Š±Š»Š¾ŠŗŃŠ²Š°Š½Š½Ń Š² ŃŠµŠ¶ŠøŠ¼Ń ŠæŠ°ŃŠ·Šø.</string> <string name="pref_compact_notification_buttons_title">ŠŠ°Š»Š°ŃŃŃŠ²Š°ŃŠø ŠŗŠ½Š¾ŠæŠŗŠø Š½Š° ŠµŠŗŃŠ°Š½Ń Š±Š»Š¾ŠŗŃŠ²Š°Š½Š½Ń</string> <string name="pref_compact_notification_buttons_sum">ŠŠ¼ŃŠ½ŠøŃŠø ŠŗŠ½Š¾ŠæŠŗŠø Š½Š° ŠµŠŗŃŠ°Š½Ń Š±Š»Š¾ŠŗŃŠ²Š°Š½Š½Ń. ŠŠ½Š¾ŠæŠŗŠø ŠæŃŠ¾Š³ŃŠ°Š²Š°Š½Š½Ń/ŠæŠ°ŃŠ·Š° Š·Š°Š²Š¶Š“Šø Š²ŠŗŠ»ŃŃŠµŠ½Ń.</string> <string name="pref_compact_notification_buttons_dialog_title">ŠŠ±ŠµŃŃŃŃ Š½Šµ Š±ŃŠ»ŃŃŠµ Š½ŃŠ¶ %1$d ŠŗŠ½Š¾ŠæŠ¾Šŗ</string> <string name="pref_compact_notification_buttons_dialog_error">ŠŠø Š¼Š¾Š¶ŠµŃŠµ Š¾Š±ŃŠ°ŃŠø Š½Šµ Š±ŃŠ»ŃŃŠµ Š½ŃŠ¶ %1$d ŠŗŠ½Š¾ŠæŠ¾Šŗ.</string> - <string name="pref_lockscreen_background_title">ŠŠ¼ŃŠ½ŃŠ²Š°ŃŠø ŃŠ¾Š½ ŠµŠŗŃŠ°Š½Š° Š±Š»Š¾ŠŗŃŠ²Š°Š½Š½Ń</string> - <string name="pref_lockscreen_background_sum">ŠŃŃŠ°Š½Š¾Š²ŠøŃŠø ŠŗŠ°ŃŃŠøŠ½ŠŗŃ ŠæŠ¾ŃŠ¾ŃŠ½Š¾Š³Š¾ ŠµŠæŃŠ·Š¾Š“Š° ŃŠŗ ŃŠ¾Š½ ŠµŠŗŃŠ°Š½Š° Š±Š»Š¾ŠŗŃŠ²Š°Š½Š½Ń. ŠŠ¾Š±ŃŃŠ½ŠøŠ¹ ŠµŃŠµŠŗŃ - ŃŠµ Š·Š¾Š±ŃŠ°Š¶ŠµŠ½Š½Ń Š±ŃŠ“Šµ ŃŠ°ŠŗŠ¾Š¶ Š²ŠøŠ“Š½Š¾ Š² ŃŠ½ŃŠøŃ
Š“Š¾Š“Š°ŃŠŗŠ°Ń
.</string> + <string name="pref_lockscreen_background_title">ŠŃŃŠ°Š½Š¾Š²ŠøŃŠø ŃŠ¾Š½ ŠµŠŗŃŠ°Š½Š° Š±Š»Š¾ŠŗŃŠ²Š°Š½Š½Ń</string> + <string name="pref_lockscreen_background_sum">ŠŃŃŠ°Š½Š¾Š²ŠøŃŠø ŠŗŠ°ŃŃŠøŠ½ŠŗŃ ŠæŠ¾ŃŠ¾ŃŠ½Š¾Š³Š¾ ŠµŠæŃŠ·Š¾Š“Ń ŃŠŗ ŃŠ¾Š½ ŠµŠŗŃŠ°Š½Š° Š±Š»Š¾ŠŗŃŠ²Š°Š½Š½Ń. ŠŠ¾Š±ŃŃŠ½ŠøŠ¹ ŠµŃŠµŠŗŃ - ŃŠµ Š·Š¾Š±ŃŠ°Š¶ŠµŠ½Š½Ń ŃŠ°ŠŗŠ¾Š¶ Š±ŃŠ“Šµ Š²ŠøŠ“ŠøŠ¼ŠøŠ¼ Š² ŃŠ½ŃŠøŃ
Š“Š¾Š“Š°ŃŠŗŠ°Ń
.</string> <string name="pref_showDownloadReport_title">ŠŠ¾ŠŗŠ°Š·Š°ŃŠø Š·Š²ŃŃ ŠæŃŠ¾ Š·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Š½Ń</string> <string name="pref_showDownloadReport_sum">Š£ ŃŠ°Š·Ń ŠæŠ¾Š¼ŠøŠ»ŠŗŠø ŠæŃŠø Š·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Š½Ń ŃŃŠ²Š¾ŃŠøŃŠø Š“ŠµŃŠ°Š»ŃŠ½ŠøŠ¹ Š·Š²ŃŃ ŠæŃŠ¾ ŠæŠ¾Š¼ŠøŠ»ŠŗŃ.</string> <string name="pref_expand_notify_unsupport_toast">Android Š“Š¾ Š²ŠµŃŃŃŃ 4.1 Š½Šµ ŠæŃŠ“ŃŃŠøŠ¼ŃŃ ŃŠ¾Š·ŃŠøŃŠµŠ½Ń ŠæŠ¾Š²ŃŠ“Š¾Š¼Š»ŠµŠ½Š½Ń.</string> @@ -404,8 +433,7 @@ <string name="crash_report_sum">ŠŠ°Š“ŃŃŠ»Š°ŃŠø Šµ-ŠæŠ¾ŃŃŃ Š·Ń Š·Š²ŃŃŠ¾Š¼ ŠæŃŠ¾ Š¾ŃŃŠ°Š½Š½ŃŠ¹ Š·Š±ŃŠ¹</string> <string name="send_email">ŠŠ°Š“ŃŃŠ»Š°ŃŠø Šµ-ŠæŠ¾ŃŃŃ</string> <string name="experimental_pref">ŠŠŗŃŠæŠµŃŠøŠ¼ŠµŠ½ŃŠ°Š»ŃŠ½Ń</string> - <string name="pref_sonic_title">Sonic Media Player</string> - <string name="pref_sonic_message">ŠŠ°ŃŃŠ¾ŃŃŠ²Š°ŃŠø Š²Š±ŃŠ“Š¾Š²Š°Š½ŠøŠ¹ ŠæŃŠ¾Š³ŃŠ°Š²Š°Ń sonic Š·Š°Š¼ŃŃŃŃ ŠæŃŠ¾Š³ŃŠ°Š²Š°ŃŠ° Android ŃŠ° Prestissimo</string> + <string name="pref_media_player_message">ŠŠ±ŠµŃŃŃŃ Š¼ŠµŠ“ŃŠ° ŠæŠ»ŠµŃŃ Š“Š»Ń ŠæŃŠ¾Š³ŃŠ°Š²Š°Š½Š½Ń ŃŠ°Š¹Š»ŃŠ²</string> <string name="pref_current_value">ŠŠ¾ŃŠ¾ŃŠ½Šµ Š·Š½Š°ŃŠµŠ½Š½Ń: %1$s</string> <string name="pref_proxy_title">ŠŃŠ¾ŠŗŃŃ</string> <string name="pref_proxy_sum">ŠŠ°ŃŃŠ¾ŃŃŠ²Š°ŃŠø ŠæŃŠ¾ŠŗŃŃ ŃŠµŃŠ²ŠµŃ</string> @@ -417,6 +445,22 @@ <string name="pref_cast_message_free_flavor">ŠŠ»Ń ŠæŃŠ“ŃŃŠøŠ¼ŠŗŠø Chromecast ŠæŠ¾ŃŃŃŠ±Š½Ń Š±ŃŠ±Š»ŃŠ¾ŃŠµŠŗŠø ŃŠŗŃ Š½Šµ Š²ŠŗŠ»ŃŃŠµŠ½Ń Š² ŃŃ Š²ŠµŃŃŃŃ AntennaPod</string> <string name="pref_enqueue_downloaded_title">ŠŠ¾Š“Š°ŃŠø Š·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Š½Ń Š“Š¾ ŃŠµŃŠ³Šø</string> <string name="pref_enqueue_downloaded_summary">ŠŠ¾Š“Š°Š²Š°ŃŠø Š·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Ń ŠµŠæŃŠ·Š¾Š“Šø Š“Š¾ ŃŠµŃŠ³Šø</string> + <string name="media_player_builtin">Š”ŃŠ°Š½Š“Š°ŃŃŠ½ŠøŠ¹ ŠæŠ»ŠµŃŃ Android</string> + <string name="pref_videoBehavior_title"> ŠŃŠø Š²ŠøŃ
Š¾Š“Ń Š· Š²ŃŠ“ŠµŠ¾ŃŠµŠ¶ŠøŠ¼Ń</string> + <string name="pref_videoBehavior_sum">ŠŠ¾Š²ŠµŠ“ŃŠ½ŠŗŠ° ŠæŃŠø Š²ŠøŃ
Š¾Š“Ń Š· Š²ŃŠ“ŠµŠ¾</string> + <string name="stop_playback">ŠŃŠæŠøŠ½ŠøŃŠø ŠæŃŠ¾Š³ŃŠ°Š²Š°Š½Š½Ń</string> + <string name="continue_playback">ŠŃŠ¾Š“Š¾Š²Š¶ŠøŃŠø Š²ŃŠ“ŃŠ²Š¾ŃŠµŠ½Š½Ń Š°ŃŠ“ŃŠ¾</string> + <string name="behavior">ŠŠ¾Š²ŠµŠ“ŃŠ½ŠŗŠ°</string> + <string name="pref_back_button_behavior_title">ŠŠ¾Š²ŠµŠ“ŃŠ½ŠŗŠ° ŠŗŠ½Š¾ŠæŠŗŠø \"ŠŠ°Š·Š°Š“\"</string> + <string name="pref_back_button_behavior_sum">ŠŠ¼ŃŠ½Š° ŠæŠ¾Š²ŠµŠ“ŃŠ½ŠŗŠø ŠŗŠ½Š¾ŠæŠŗŠø \"ŠŠ°Š·Š°Š“\".</string> + <string name="back_button_default">ŠŠ° Š·Š°Š¼Š¾Š²ŃŃŠ²Š°Š½Š½ŃŠ¼</string> + <string name="back_button_open_drawer">ŠŃŠ“ŠŗŃŠøŃŠø Š¼ŠµŠ½Ń Š½Š°Š²ŃŠ³Š°ŃŃŃ</string> + <string name="back_button_double_tap">ŠŠ°ŃŠøŃŠ½ŃŃŃ Š“Š²ŃŃŃ, ŃŠ¾Š± Š²ŠøŠ¹ŃŠø</string> + <string name="back_button_show_prompt">ŠŃŠ“ŃŠ²ŠµŃŠ“ŃŃŃ Š²ŠøŃ
ŃŠ“</string> + <string name="close_prompt">ŠŃŠ¹ŃŠ½Š¾ Š·Š°ŠŗŃŠøŃŠø AntennaPod?</string> + <string name="double_tap_toast">ŠŠ°ŃŠøŃŠ½ŃŃŃ ŠŗŠ½Š¾ŠæŠŗŃ Š½Š°Š·Š°Š“ ŃŠµ ŃŠ°Š·, ŃŠ¾Š± Š²ŠøŠ¹ŃŠø</string> + <string name="back_button_go_to_page">ŠŠµŃŠµŠ¹ŃŠø Š½Š° ŃŃŠ¾ŃŃŠ½ŠŗŃā¦</string> + <string name="back_button_go_to_page_title">ŠŠøŠ±ŃŠ°ŃŠø ŃŃŠ¾ŃŃŠ½ŠŗŃ</string> <!--Auto-Flattr dialog--> <string name="auto_flattr_enable">ŠŠŗŠ»ŃŃŠøŃŠø Š°Š²ŃŠ¾Š¼Š°ŃŠøŃŠ½Šµ Š·Š°Š¾Ń
Š¾ŃŠµŠ½Š½Ń Š°Š²ŃŠ¾ŃŃŠ² ŃŠµŃŠµŠ· ŃŠµŃŠ²ŃŃ flattr</string> <string name="auto_flattr_after_percent">ŠŠ°Š¾Ń
Š¾ŃŠøŃŠø Š°Š²ŃŠ¾ŃŠ° ŃŠµŃŠµŠ· Flattr ŃŠ¾Š¹Š½Š¾ %d Š²ŃŠ“ŃŠ¾ŃŠŗŃŠ² ŠµŠæŃŠ·Š¾Š“Š° Š±ŃŠ»Š¾ Š²ŃŠ“ŃŠ²Š¾ŃŠµŠ½Š¾</string> @@ -427,7 +471,7 @@ <string name="found_in_shownotes_label">ŠŠ½Š°Š¹Š“ŠµŠ½Š¾ Š² Š½Š¾ŃŠ°ŃŠŗŠ°Ń
ŠµŠæŃŠ·Š¾Š“Š°</string> <string name="found_in_chapters_label">ŠŠ½Š°Š¹Š“ŠµŠ½Š¾ Š² Š³Š»Š°Š²Š°Ń
</string> <string name="found_in_authors_label">ŠŠ½Š°Š¹Š“ŠµŠ½Š¾ Š² Š°Š²ŃŠ¾ŃŠ°Ń
</string> - <string name="found_in_feeds_label">ŠŠ½Š°Š¹Š“ŠµŠ½Š¾ Š² ŠŗŠ°Š½Š°Š»Š°Ń
</string> + <string name="found_in_feeds_label">ŠŠ½Š°Š¹Š“ŠµŠ½Š¾ Š² ŠæŠ¾Š“ŠŗŠ°ŃŃŃ</string> <string name="search_status_no_results">ŠŠ¾Š“Š½ŠøŃ
ŃŠµŠ·ŃŠ»ŃŃŠ°ŃŃŠ² Š½ŠµŠ¼Š°Ń</string> <string name="search_label">ŠŠ¾ŃŃŠŗ</string> <string name="found_in_title_label">ŠŠ½Š°Š¹Š“ŠµŠ½Š¾ Ń Š½Š°Š·Š²Ń</string> @@ -435,15 +479,15 @@ <!--OPML import and export--> <string name="opml_import_txtv_button_lable">OPML ŃŠ°Š¹Š»Šø Š“Š¾Š·Š²Š¾Š»ŃŃŃ Š²Š°Š¼ ŠæŠµŃŠµŠ½ŠµŃŃŠø ŠæŠ¾Š“ŠŗŠ°ŃŃŠø Š· Š¾Š“Š½ŃŃŃ ŠæŃŠ¾Š³ŃŠ°Š¼Š¼Šø Š“Š¾ ŃŠ½ŃŠ¾Ń</string> <string name="opml_import_option">ŠŠ°ŃŃŠ°Š½Ń %1$d</string> - <string name="opml_import_explanation_1">ŠŠøŠ±ŠµŃŃŃŃ Š»Š¾ŠŗŠ°Š»ŃŠ½Ń ŠæŠ°ŠæŠŗŃ.</string> + <string name="opml_import_explanation_1">ŠŠøŠ±ŠµŃŃŃŃ ŃŠ»ŃŃ
Š“Š¾ ŃŠ°Š¹Š»Ń Š· Š»Š¾ŠŗŠ°Š»ŃŠ½Š¾Ń ŃŠ°Š¹Š»Š¾Š²Š¾Ń ŃŠøŃŃŠµŠ¼Šø.</string> <string name="opml_import_explanation_2">ŠŠøŠ±ŃŠ°ŃŠø OPML ŃŠ°Š¹Š» Š·Š° Š“Š¾ŠæŠ¾Š¼Š¾Š³Š¾Ń ŃŠ°ŠŗŠøŃ
Š“Š¾Š“Š°ŃŠŗŃŠ² ŃŠŗ Dropbox, Google Drive Š°Š±Š¾ ŃŠ°Š¹Š»Š¾Š²ŠøŠ¹ Š¼ŠµŠ½ŠµŠ“Š¶ŠµŃ.</string> - <string name="opml_import_explanation_3">ŠŠ°Š³Š°ŃŠ¾ Š“Š¾Š“Š°ŃŠŗŃŠ² ŃŠ°ŠŗŠøŃ
ŃŠŗ Google Mail, Dropbox, Google Drive ŃŠ° Š±ŃŠ»ŃŃŃŃŃŃ ŃŠ°Š¹Š»Š¾Š²ŠøŃ
Š¼ŠµŠ½ŠµŠ“Š¶ŠµŃŃŠ² Š·Š“Š°ŃŠ½Ń <i>Š²ŃŠ“ŠŗŃŠøŃŠø</i> OPML ŃŠ°Š¹Š»Šø <i>Š“Š»Ń</i> AntennaPod.</string> + <string name="opml_import_explanation_3">ŠŠ°Š³Š°ŃŠ¾ Š“Š¾Š“Š°ŃŠŗŃŠ², ŃŠ°ŠŗŠøŃ
ŃŠŗ Google Mail, Dropbox, Google Drive ŃŠ° Š±ŃŠ»ŃŃŃŃŃŃ ŃŠ°Š¹Š»Š¾Š²ŠøŃ
Š¼ŠµŠ½ŠµŠ“Š¶ŠµŃŃŠ², Š·Š“Š°ŃŠ½Ń <i>Š²ŃŠ“ŠŗŃŠøŠ²Š°ŃŠø</i> OPML ŃŠ°Š¹Š»Šø <i>Š·Š° Š“Š¾ŠæŠ¾Š¼Š¾Š³Š¾Ń</i> AntennaPod.</string> <string name="start_import_label">ŠŠ¾ŃŠ°ŃŠø ŃŠ¼ŠæŠ¾ŃŃ</string> - <string name="opml_import_label">OPML ŃŠ¼ŠæŠ¾ŃŃ</string> + <string name="opml_import_label">ŠŠ¼ŠæŠ¾ŃŃ OPML</string> <string name="opml_directory_error">ŠŠ¾Š¼ŠøŠ»ŠŗŠ°!</string> <string name="reading_opml_label">Š§ŠøŃŠ°ŃŠ¼Š¾ OPML ŃŠ°Š¹Š»</string> <string name="opml_reader_error">ŠŠ¾Š¼ŠøŠ»ŠŗŠ° ŠæŃŠø ŃŠøŃŠ°Š½Š½Ń Š“Š¾ŠŗŃŠ¼ŠµŠ½ŃŠ° OPML:</string> - <string name="opml_import_error_no_file">ŠŠ¾Š“Š½Š¾Š³Š¾ ŃŠ°Š¹Š»Š° Š½Šµ Š¾Š±ŃŠ°Š½Š¾!</string> + <string name="opml_import_error_no_file">ŠŠ¾Š“Š½Š¾Š³Š¾ ŃŠ°Š¹Š»Ń Š½Šµ Š¾Š±ŃŠ°Š½Š¾!</string> <string name="select_all_label">ŠŠ±ŃŠ°ŃŠø Š²ŃŠµ</string> <string name="deselect_all_label">Š£Š±ŃŠ°ŃŠø Š²ŠøŠ“ŃŠ»ŠµŠ½Š½Ń</string> <string name="select_options_label">ŠŠ±ŃŠ°ŃŠøā¦</string> @@ -453,9 +497,9 @@ <string name="html_export_label">ŠŠŗŃŠæŠ¾ŃŃ Š“Š¾ HTML</string> <string name="exporting_label">ŠŠŗŃŠæŠ¾ŃŃŃŃŃŃŃŃā¦</string> <string name="export_error_label">ŠŠ¾Š¼ŠøŠ»ŠŗŠ° ŠµŠŗŃŠæŠ¾ŃŃŃ</string> - <string name="opml_export_success_title">OPML ŠµŠŗŃŠæŠ¾ŃŃ ŃŃŠæŃŃŠ½ŠøŠ¹</string> - <string name="opml_export_success_sum">OPML ŃŠ°Š¹Š» Š·Š°ŠæŠøŃŠ°Š½ŠøŠ¹ Š²:\u0020</string> - <string name="opml_import_ask_read_permission">Š©Š¾Š± ŠæŃŠ¾ŃŠøŃŠ°ŃŠø ŃŠ°Š¹Š» OPML ŠæŠ¾ŃŃŃŠ±ŠµŠ½ Š“Š¾ŃŃŃŠæ Š“Š¾ Š·Š¾Š²Š½ŃŃŠ½ŃŠ¾Ń ŠæŠ°Š¼āŃŃŠø</string> + <string name="export_success_title">Š£ŃŠæŃŃŠ½ŠøŠ¹ ŠµŠŗŃŠæŠ¾ŃŃ</string> + <string name="export_success_sum">Š¤Š°Š¹Š» Š±ŃŠ»Š¾ Š·Š°ŠæŠøŃŠ°Š½Š¾ Š²:\n\n%1$s</string> + <string name="opml_import_ask_read_permission">Š©Š¾Š± ŠæŃŠ¾ŃŠøŃŠ°ŃŠø ŃŠ°Š¹Š» OPML ŠæŠ¾ŃŃŃŠ±ŠµŠ½ Š“Š¾ŃŃŃŠæ Š“Š¾ Š·Š¾Š²Š½ŃŃŠ½ŃŠ¾Š³Š¾ Š½Š¾ŃŃŃ</string> <!--Sleep timer--> <string name="set_sleeptimer_label">Š¢Š°Š¹Š¼ŠµŃ ŃŠ½Ń</string> <string name="disable_sleeptimer_label">ŠŠøŠ¼ŠŗŠ½ŃŃŠø Š·Š°ŃŠøŠ½Š°Š½Š½Ń</string> @@ -472,16 +516,19 @@ <plurals name="time_seconds_quantified"> <item quantity="one">1 ŃŠµŠŗŃŠ½Š“Š°</item> <item quantity="few">%d ŃŠµŠŗŃŠ½Š“Šø</item> + <item quantity="many">%d ŃŠµŠŗŃŠ½Š“</item> <item quantity="other">%d ŃŠµŠŗŃŠ½Š“</item> </plurals> <plurals name="time_minutes_quantified"> <item quantity="one">1 Ń
Š²ŠøŠ»ŠøŠ½Š°</item> <item quantity="few">%d Ń
Š²ŠøŠ»ŠøŠ½Šø</item> + <item quantity="many">%d Ń
Š²ŠøŠ»ŠøŠ½</item> <item quantity="other">%d Ń
Š²ŠøŠ»ŠøŠ½</item> </plurals> <plurals name="time_hours_quantified"> <item quantity="one">1 Š³Š¾Š“ŠøŠ½Š°</item> <item quantity="few">%d Š³Š¾Š“ŠøŠ½Šø</item> + <item quantity="many">%d Š³Š¾Š“ŠøŠ½</item> <item quantity="other">%d Š³Š¾Š“ŠøŠ½</item> </plurals> <string name="auto_enable_label">Š£Š²ŃŠ¼ŠŗŠ½ŃŃŠø Š°Š²ŃŠ¾Š¼Š°ŃŠøŃŠ½Š¾</string> @@ -522,7 +569,7 @@ <string name="selected_folder_label">ŠŠ±ŃŠ°ŃŠø ŠæŠ°ŠæŠŗŃ:</string> <string name="create_folder_label">ŠŠ¾Š²Š° ŠæŠ°ŠæŠŗŠ°</string> <string name="choose_data_directory">ŠŠ±ŃŠ°ŃŠø ŠæŠ°ŠæŠŗŃ</string> - <string name="choose_data_directory_message">ŠŠ±ŠµŃŃŃŃ, Š±ŃŠ“Ń Š»Š°ŃŠŗŠ°, Š±Š°Š·Š¾Š²ŠøŠ¹ ŠŗŠ°ŃŠ°Š»Š¾Š³ Š“Š»Ń Š“Š°Š½ŠøŃ
. AntennaPod ŃŃŠ²Š¾ŃŠøŃŃ Š²ŃŠ“ŠæŠ¾Š²ŃŠ“Š½Ń ŠæŃŠ“ŃŠ¾Š·Š“ŃŠ»Šø. </string> + <string name="choose_data_directory_message">ŠŠ±ŠµŃŃŃŃ, Š±ŃŠ“Ń Š»Š°ŃŠŗŠ°, Š±Š°Š·Š¾Š²ŠøŠ¹ ŠŗŠ°ŃŠ°Š»Š¾Š³ Š“Š°Š½ŠøŃ
. AntennaPod ŃŃŠ²Š¾ŃŠøŃŃ Š²ŃŠ“ŠæŠ¾Š²ŃŠ“Š½Ń ŠæŃŠ“ŃŠ¾Š·Š“ŃŠ»Šø.</string> <string name="choose_data_directory_permission_rationale">ŠŠ»Ń Š·Š¼ŃŠ½Šø ŠæŠ°ŠæŠŗŠø Š·Š±ŠµŃŃŠ³Š°Š½Š½Ń Š“Š°Š½ŠøŃ
ŠæŠ¾ŃŃŃŠ±ŠµŠ½ Š“Š¾ŃŃŃŠæ Š“Š¾ Š·Š¾Š²Š½ŃŃŠ½ŃŠ¾Š³Š¾ Š½Š¾ŃŃŃ</string> <string name="create_folder_msg">Š”ŃŠ²Š¾ŃŠøŃŠø ŠæŠ°ŠæŠŗŃ Š· ŃŠ¼\'ŃŠ¼ \"%1$s\"?</string> <string name="create_folder_success">Š”ŃŠ²Š¾ŃŠµŠ½Š° Š½Š¾Š²Š° ŠæŠ°ŠæŠŗŠ°</string> @@ -537,8 +584,8 @@ <string name="set_to_default_folder">ŠŠ±ŃŠ°ŃŠø ŠæŠ°ŠæŠŗŃ ŠæŠ¾ Š·Š°Š¼Š¾Š²ŃŠ°Š½Š½Ń</string> <string name="pref_pausePlaybackForFocusLoss_sum">ŠŃŠøŠ·ŃŠæŠøŠ½ŃŃŠø ŠæŃŠ¾Š³ŃŠ°Š²Š°Š½Š½Ń Š·Š°Š¼ŃŃŃŃ Š·Š½ŠøŠ¶ŠµŠ½Š½Ń Š³ŃŃŠ½Š¾ŃŃŃ ŠŗŠ¾Š»Šø ŃŠ½ŃŠ° ŠæŃŠ¾Š³ŃŠ°Š¼Š° Ń
Š¾ŃŠµ ŠæŃŠ¾Š³ŃŠ°ŃŠø Š·Š²ŃŠŗ</string> <string name="pref_pausePlaybackForFocusLoss_title">ŠŠ°ŃŠ·Š° Š² ŃŠ°Š·Ń ŠæŠµŃŠµŃŠøŠ²Š°Š½Š½Ń</string> - <string name="pref_resumeAfterCall_sum">ŠŃŠ“Š½Š¾Š²ŠøŃŠø Š²ŃŠ“ŃŠ²Š¾ŃŠµŠ½Š½Ń ŠæŃŃŠ»Ń Š·Š°ŠŗŃŠ½ŃŠµŠ½Š½Ń Š“Š·Š²ŃŠ½ŠŗŠ°</string> - <string name="pref_resumeAfterCall_title">ŠŃŠ“Š½Š¾Š²ŠøŃŠø ŠæŃŃŠ»Ń Š“Š·Š²ŃŠ½ŠŗŠ°</string> + <string name="pref_resumeAfterCall_sum">ŠŠ¾Š½Š¾Š²ŠøŃŠø Š²ŃŠ“ŃŠ²Š¾ŃŠµŠ½Š½Ń ŠæŃŃŠ»Ń Š·Š°ŠŗŃŠ½ŃŠµŠ½Š½Ń Š“Š·Š²ŃŠ½ŠŗŠ°</string> + <string name="pref_resumeAfterCall_title">ŠŠ¾Š½Š¾Š²ŠøŃŠø ŠæŃŃŠ»Ń Š“Š·Š²ŃŠ½ŠŗŠ°</string> <string name="pref_restart_required">ŠŠ»Ń Š·Š°ŃŃŠ¾ŃŃŠ²Š°Š½Š½Ń Š·Š¼ŃŠ½ ŠæŠ¾ŃŃŃŠ±Š½Š¾ ŠæŠµŃŠµŠ·Š°ŠæŃŃŃŠøŃŠø AntennaPod</string> <!--Online feed view--> <string name="subscribe_label">ŠŃŠ“ŠæŠøŃŠ°ŃŠøŃŃ</string> @@ -559,10 +606,10 @@ <string name="authentication_descr">ŠŠ¼ŃŠ½ŠøŃŠø Š²Š°ŃŃ Š»Š¾Š³ŃŠ½ ŃŠ° ŠæŠ°ŃŠ¾Š»Ń Š“Š»Ń ŠæŠ¾Š“ŠŗŠ°ŃŃŠ° ŃŠ° ŠµŠæŃŠ·Š¾Š“ŃŠ²</string> <string name="auto_download_settings_label">ŠŠ°Š»Š°ŃŃŃŠ²Š°Š½Š½Ń Š°Š²ŃŠ¾Š·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Š½Ń</string> <string name="episode_filters_label">Š¤ŃŠ»ŃŃŃ ŠµŠæŃŠ·Š¾Š“ŃŠ²</string> - <string name="episode_filters_description">ŠŠµŃŠµŠ»ŃŠŗ ŃŠµŃŠ¼ŃŠ½ŃŠ² ŃŠ¾ Š²ŠøŠŗŠ¾ŃŠøŃŃŠ¾Š²ŃŃŃŃŃŃ Š“Š»Ń Š²ŠøŃŃŃŠµŠ½Š½Ń ŃŠø Š·Š°Š²Š°Š½ŃŠ°Š¶ŃŠ²Š°ŃŠø ŠµŠæŃŠ·Š¾Š“ Š°Š²ŃŠ¾Š¼Š°ŃŠøŃŠ½Š¾</string> + <string name="episode_filters_description">ŠŠµŃŠµŠ»ŃŠŗ ŃŠµŃŠ¼ŃŠ½ŃŠ², ŃŠ¾ Š²ŠøŠŗŠ¾ŃŠøŃŃŠ¾Š²ŃŃŃŃŃŃ Š“Š»Ń Š²ŠøŃŃŃŠµŠ½Š½Ń ŃŠø ŃŠ»ŃŠ“ Š·Š°Š²Š°Š½ŃŠ°Š¶ŃŠ²Š°ŃŠø ŠµŠæŃŠ·Š¾Š“ Š°Š²ŃŠ¾Š¼Š°ŃŠøŃŠ½Š¾</string> <string name="episode_filters_include">ŠŠŗŠ»ŃŃŠøŃŠø</string> - <string name="episode_filters_exclude">ŠŠøŠ»ŃŃŠøŃŠø</string> - <string name="episode_filters_hint">ŠŠŗŃŠµŠ¼Ń ŃŠ»Š¾Š²Š° \n\"Š”Š»Š¾Š²Š° Š Š°Š·Š¾Š¼\"</string> + <string name="episode_filters_exclude">ŠŠøŠŗŠ»ŃŃŠøŃŠø</string> + <string name="episode_filters_hint">ŠŠŗŃŠµŠ¼Ń ŃŠ»Š¾Š²Š° \n\"ŠŃŠ»ŃŠŗŠ° ŃŠ»ŃŠ²\"</string> <string name="keep_updated">ŠŃŠ“ŃŃŠøŠ¼ŃŠ²Š°ŃŠø Š¾Š½Š¾Š²Š»ŠµŠ½ŠøŠ¼</string> <!--Progress information--> <string name="progress_upgrading_database">ŠŠ½Š¾Š²Š»ŠµŠ½Š½Ń Š±Š°Š·Šø Š“Š°Š½ŠøŃ
</string> @@ -575,11 +622,11 @@ <string name="all_label">ŠŃŃ</string> <string name="selected_all_label">ŠŠ±ŃŠ°Š½Š¾ Š²ŃŃ ŠµŠæŃŠ·Š¾Š“Šø</string> <string name="none_label">ŠŠ¾Š“Š½Š¾Š³Š¾</string> - <string name="deselected_all_label">ŠŠ¾Š“Š½Š¾Š³Š¾ ŠµŠæŃŠ·Š¾Š“Š° Š¾Š±ŃŠ°Š½Š¾</string> - <string name="played_label">ŠŠµŃŠµŠ³Š»ŃŠ½ŃŃŃ</string> - <string name="selected_played_label">ŠŠ±ŃŠ°Š½Š¾ ŠæŠµŃŠµŠ³Š»ŃŠ½ŃŃŃ ŠµŠæŃŠ·Š¾Š“Šø</string> - <string name="unplayed_label">ŠŠµŠæŠµŃŠµŠ³Š»ŃŠ½ŃŃŃ</string> - <string name="selected_unplayed_label">ŠŠ±ŃŠ°Š½Š¾ Š½ŠµŠæŠµŃŠµŠ³Š»ŃŠ½ŃŃŃ ŠµŠæŃŠ·Š¾Š“Šø</string> + <string name="deselected_all_label">ŠŠ¾Š“Š½Š¾Š³Š¾ ŠµŠæŃŠ·Š¾Š“Š° Š½Šµ Š¾Š±ŃŠ°Š½Š¾</string> + <string name="played_label">ŠŃŠ“ŃŠ²Š¾ŃŠµŠ½Ń</string> + <string name="selected_played_label">ŠŠ±ŃŠ°Š½Š¾ Š²ŃŠ“ŃŠ²Š¾ŃŠµŠ½Ń ŠµŠæŃŠ·Š¾Š“Šø</string> + <string name="unplayed_label">ŠŠµŠ²ŃŠ“ŃŠ²Š¾ŃŠµŠ½Ń</string> + <string name="selected_unplayed_label">ŠŠ±ŃŠ°Š½Š¾ Š½ŠµŠ²ŃŠ“ŃŠ²Š¾ŃŠµŠ½Ń ŠµŠæŃŠ·Š¾Š“Šø</string> <string name="downloaded_label">ŠŠ°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Ń</string> <string name="selected_downloaded_label">ŠŠ±ŃŠ°Š½Š¾ Š·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Ń ŠµŠæŃŠ·Š¾Š“Šø</string> <string name="not_downloaded_label">ŠŠµŠ·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Ń</string> @@ -588,8 +635,8 @@ <string name="selected_queued_label">ŠŠ±ŃŠ°Š½Š¾ ŠµŠæŃŠ·Š¾Š“Šø ŃŠ¾ Š² ŃŠµŃŠ·Ń</string> <string name="not_queued_label">ŠŠµ Š² ŃŠµŃŠ·Ń</string> <string name="selected_not_queued_label">ŠŠ±ŃŠ°Š½Š¾ ŠµŠæŃŠ·Š¾Š“Šø ŃŠ¾ Š½Šµ Š² ŃŠµŃŠ·Ń</string> - <string name="has_media">ŠŠ· Š·Š²ŃŠŗŠ¾Š¼ Š°Š±Š¾ Š²ŃŠ“ŠµŠ¾</string> - <string name="selected_has_media_label">ŠŠ±ŃŠ°Š½Š¾ ŠµŠæŃŠ·Š¾Š“Šø ŃŠ· Š·Š²ŃŠŗŠ¾Š¼ Š°Š±Š¾ Š²ŃŠ“ŠµŠ¾</string> + <string name="has_media">ŠŃ Š·Š²ŃŠŗŠ¾Š¼ Š°Š±Š¾ Š²ŃŠ“ŠµŠ¾</string> + <string name="selected_has_media_label">ŠŠ±ŃŠ°Š½Š¾ ŠµŠæŃŠ·Š¾Š“Šø Š·Ń Š·Š²ŃŠŗŠ¾Š¼ Š°Š±Š¾ Š²ŃŠ“ŠµŠ¾</string> <!--Sort--> <string name="sort_title_a_z">ŠŠ°Š·Š²Š° (Š \u2192 ŠÆ)</string> <string name="sort_title_z_a">ŠŠ°Š·Š²Š° (ŠÆ \u2192 Š)</string> @@ -598,7 +645,7 @@ <string name="sort_duration_short_long">Š¢ŃŠøŠ²Š°Š»ŃŃŃŃ (ŠŠ¾ŃŠ¾ŃŠŗŃ \u2192 ŠŠ¾Š²Š³Ń)</string> <string name="sort_duration_long_short">Š¢ŃŠøŠ²Š°Š»ŃŃŃŃ (ŠŠ¾Š²Š³Ń \u2192 ŠŠ¾ŃŠ¾ŃŠŗŃ)</string> <!--Rating dialog--> - <string name="rating_title">ŠŃŃŠ½ŠøŃŠø AntennaPod?</string> + <string name="rating_title">ŠŠ¾Š“Š¾Š±Š°ŃŃŃŃŃ AntennaPod?</string> <string name="rating_message">ŠŠø Š±ŃŠ“ŠµŠ¼Š¾ Š²Š“ŃŃŠ½Ń ŃŠŗŃŠ¾ Š²Šø ŠæŠ¾ŃŃŠ°Š²ŠøŃŠµ ŃŠ²Š¾Ń Š¾ŃŃŠ½ŠŗŃ AntennaPod.</string> <string name="rating_never_label">ŠŠµ Š·Š°ŃŠ°Š·</string> <string name="rating_later_label">ŠŠ°Š³Š°Š“Š°ŃŠø Š·Š³Š¾Š“Š¾Š¼</string> @@ -623,10 +670,18 @@ <string name="proxy_test_failed">ŠŃŠ¾ŃŠµŃŃŠ¾Š²Š°Š½Š¾ Š· ŠæŠ¾Š¼ŠøŠ»ŠŗŠ°Š¼Šø</string> <string name="proxy_host_empty_error">Š„Š¾ŃŃ Š½Šµ Š¼Š¾Š¶Šµ Š±ŃŃŠø ŠæŃŃŃŠøŠ¼</string> <string name="proxy_host_invalid_error">Š„Š¾ŃŃ Š½Šµ Ń ŠæŃŠ°Š²ŠøŠ»ŃŠ½Š¾Ń IP-Š°Š“ŃŠµŃŠ¾Ń Š°Š±Š¾ Š“Š¾Š¼ŠµŠ½Š½ŠøŠ¼ ŃŠ¼āŃŠ¼</string> - <string name="proxy_port_invalid_error">ŠŠµŠæŃŠ°Š²ŠøŠ»ŃŠ½ŠøŠ¹ ŠæŠ¾ŃŃ</string> + <string name="proxy_port_invalid_error">ŠŠ¾ŃŃ Š½ŠµŠ“ŃŠ¹ŃŠ½ŠøŠ¹</string> + <!--Database import/export--> + <string name="import_export">ŠŠ¼ŠæŠ¾ŃŃŃŠ²Š°ŃŠø/ŠŠŗŃŠæŠ¾ŃŃŃŠ²Š°ŃŠø Š±Š°Š·Ń Š“Š°Š½Š½ŠøŃ
</string> + <string name="import_export_warning">Š¦Ń ŠµŠŗŃŠæŠµŃŠøŠ¼ŠµŠ½ŃŠ°Š»ŃŠ½Š° ŃŃŠ½ŠŗŃŃŃ Š²ŠøŠŗŠ¾ŃŠøŃŃŠ¾Š²ŃŃŃŃŃŃ Š“Š»Ń ŠæŠµŃŠµŠ½ŠµŃŠµŠ½Š½Ń Š²Š°ŃŠøŃ
ŠæŃŠ“ŠæŠøŃŠ¾Šŗ ŃŠ° Š²Š¶Šµ ŠæŃŠ¾ŃŠ»ŃŃ
Š°Š½ŠøŃ
ŠµŠæŃŠ·Š¾Š“ŃŠ² Š“Š¾ ŃŠ½ŃŠ¾Š³Š¾ ŠæŃŠøŃŃŃŠ¾Ń.\n\nŠŠŗŃŠæŠ¾ŃŃŠ¾Š²Š°Š½Š° Š±Š°Š·Š° Š“Š°Š½ŠøŃ
Š¼Š¾Š¶Šµ Š±ŃŃŠø ŃŠ¼ŠæŠ¾ŃŃŠ¾Š²Š°Š½Š° ŃŃŃŃ Š¶ ŃŠ°Š¼Š¾Ń Š²ŠµŃŃŃŃŃ AntennaPod. ŠŠ½Š°ŠŗŃŠµ, ŃŠµŠ·ŃŠ»ŃŃŠ°Ń Š¼Š¾Š¶Šµ Š±ŃŃŠø Š½ŠµŠæŠµŃŠµŠ“Š±Š°ŃŠµŠ½ŠøŠ¼.\n\nŠŃŃŠ»Ń ŃŠ¼ŠæŠ¾ŃŃŃŠ²Š°Š½Š½Ń, ŠµŠæŃŠ·Š¾Š“Šø Š¼Š¾Š¶ŃŃŃ Š²ŃŠ“Š¾Š±ŃŠ°Š¶Š°ŃŠøŃŃ ŃŠŗ Š·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Ń, Š½Š°Š²ŃŃŃ ŃŠŗŃŠ¾ Š²Š¾Š½Šø ŃŠ°ŠŗŠøŠ¼Šø Š½Šµ Ń. ŠŃŠ¾ŃŃŠ¾ Š½Š°ŃŠøŃŠ½ŃŃŃ ŠŗŠ½Š¾ŠæŠŗŃ Š²ŃŠ“ŃŠ²Š¾ŃŠµŠ½Š½Ń ŠµŠæŃŠ·Š¾Š“ŃŠ², ŃŠ¾Š± AntennaPod Š²ŠøŃŠ²ŠøŠ² ŃŠµ.</string> + <string name="label_import">ŠŠ¼ŠæŠ¾ŃŃŃŠ²Š°ŃŠø</string> + <string name="label_export">ŠŠŗŃŠæŠ¾ŃŃŃŠ²Š°ŃŠø</string> + <string name="import_select_file">ŠŠ±ŃŠ°ŃŠø ŃŠ°Š¹Š» Š“Š»Ń ŃŠ¼ŠæŠ¾ŃŃŃ</string> + <string name="export_ok">Š£ŃŠæŃŃŠ½ŠøŠ¹ ŠµŠŗŃŠæŠ¾ŃŃ</string> + <string name="import_ok">ŠŠ¼ŠæŠ¾ŃŃ ŠæŃŠ¾Š¹ŃŠ¾Š² ŃŃŠæŃŃŠ½Š¾.\n\nŠŃŠ“Ń Š»Š°ŃŠŗŠ°, Š½Š°ŃŠøŃŠ½ŃŃŃ ŠŠ ŃŠ¾Š± ŠæŠµŃŠµŠ·Š°ŠæŃŃŃŠøŃŠø AntennaPod</string> <!--Casting--> <string name="cast_media_route_menu_title">ŠŃŠ°ŃŠø Š½Š°ā¦</string> - <string name="cast_disconnect_label">ŠŃŠ“āŃŠ“Š½Š°ŃŠøŃŃ Š²ŃŠ“ ŠæŃŠøŃŃŃŠ¾Ń ŠæŃŠ¾Š³ŃŠ°Š²Š°Š½Š½Ń</string> + <string name="cast_disconnect_label">ŠŃŠ“āŃŠ“Š½Š°ŃŠøŃŃ Š²ŃŠ“ ŠæŃŠøŃŃŃŠ¾Ń ŠæŃŠ¾Š³ŃŠ°Š²Š°Š½Š½Ń</string> <string name="cast_not_castable">ŠŠ±ŃŠ°Š½ŠøŠ¹ ŃŠ°Š¹Š» Š½Šµ ŃŃŠ¼ŃŃŠ½ŠøŠ¹ Š· ŠæŃŠøŃŃŃŠ¾ŃŠ¼ ŠæŃŠ¾Š³ŃŠ°Š²Š°Š½Š½Ń</string> <string name="cast_failed_to_play">ŠŠ¾Š¼ŠøŠ»ŠŗŠ° ŠæŃŠ¾Š³ŃŠ°Š²Š°Š½Š½Ń ŃŠ°Š¹Š»Š°</string> <string name="cast_failed_to_stop">ŠŠ¾Š¼ŠøŠ»ŠŗŠ° ŃŠæŃŠ¾Š±Šø Š·ŃŠæŠøŠ½ŠŗŠø ŠæŃŠ¾Š³ŃŠ°Š²Š°Š½Š½Ń</string> @@ -634,10 +689,19 @@ <!--<string name="cast_failed_to_connect">Could not connect to the device</string>--> <string name="cast_failed_setting_volume">ŠŠ¾Š¼ŠøŠ»ŠŗŠ° Š²ŃŃŠ°Š½Š¾Š²Š»ŠµŠ½Š½Ń Š³ŃŃŠ½Š¾ŃŃŃ</string> <string name="cast_failed_no_connection">ŠŠµŠ¼Š°Ń Š·āŃŠ“Š½Š°Š½Š½Ń Š· ŠæŃŠøŃŃŃŠ¾ŃŠ¼ ŠæŃŠ¾Š³ŃŠ°Š²Š°Š½Š½Ń</string> - <string name="cast_failed_no_connection_trans">ŠŠ²āŃŠ·Š¾Šŗ Š· ŠæŃŠøŃŃŃŠ¾ŃŠ¼ ŠæŃŠ¾Š³ŃŠ°Š²Š°Š½Š½Ń Š²ŃŃŠ°ŃŠµŠ½Š¾. ŠŃŠ¾Š³ŃŠ°Š¼Š° Š½Š°Š¼Š°Š³Š°ŃŃŃŃŃ ŠæŠ¾Š½Š¾Š²ŠøŃŠø Š·Š²āŃŠ·Š¾Šŗ, ŃŠŗŃŠ¾ ŃŠµ Š¼Š¾Š¶Š»ŠøŠ²Š¾. ŠŃŠ“Ń Š»Š°ŃŠŗŠ° Š·Š°ŃŠµŠŗŠ°Š¹ŃŠµ ŠŗŃŠ»ŃŠŗŠ° ŃŠµŠŗŃŠ½Š“ Ń ŃŠæŃŠ¾Š±ŃŠ¹ŃŠµ Š·Š½Š¾Š².</string> + <string name="cast_failed_no_connection_trans">ŠŠ²āŃŠ·Š¾Šŗ Š· ŠæŃŠøŃŃŃŠ¾ŃŠ¼ ŠæŃŠ¾Š³ŃŠ°Š²Š°Š½Š½Ń Š²ŃŃŠ°ŃŠµŠ½Š¾. ŠŃŠ¾Š³ŃŠ°Š¼Š° Š½Š°Š¼Š°Š³Š°ŃŃŃŃŃ ŠæŠ¾Š½Š¾Š²ŠøŃŠø Š·\'ŃŠ“Š½Š°Š½Š½Ń, ŃŠŗŃŠ¾ ŃŠµ Š¼Š¾Š¶Š»ŠøŠ²Š¾. ŠŃŠ“Ń Š»Š°ŃŠŗŠ° Š·Š°ŃŠµŠŗŠ°Š¹ŃŠµ ŠŗŃŠ»ŃŠŗŠ° ŃŠµŠŗŃŠ½Š“ Ń ŃŠæŃŠ¾Š±ŃŠ¹ŃŠµ Š·Š½Š¾Š².</string> <string name="cast_failed_perform_action">ŠŠ¾Š¼ŠøŠ»ŠŗŠ° Š²ŠøŠŗŠ¾Š½Š°Š½Š½Ń Š“ŃŃ</string> <string name="cast_failed_status_request">ŠŠ¾Š¼ŠøŠ»ŠŗŠ° ŃŠøŠ½Ń
ŃŠ¾Š½ŠøŠ·Š°ŃŃŃ Š· ŠæŃŠøŃŃŃŠ¾ŃŠ¼ ŠæŃŠ¾Š³ŃŠ°Š²Š°Š½Š½Ń</string> <string name="cast_failed_seek">ŠŠ¾Š¼ŠøŠ»ŠŗŠ° ŠæŠµŃŠµŃ
Š¾Š“Š° Š½Š° Š½Š¾Š²Ń ŠæŠ¾Š·ŠøŃŃŃ ŠæŃŠ¾Š³ŃŠ°Š²Š°Š½Š½Ń Š½Š° ŠæŃŠøŃŃŃŠ¾Ń.</string> <string name="cast_failed_receiver_player_error">Š”ŠµŃŠ¹Š¾Š·Š½Š° ŠæŠ¾Š¼ŠøŠ»ŠŗŠ° ŠæŃŠ¾Š³ŃŠ°Š²Š°Š½Š½Ń Š½Š° ŠæŃŠøŃŃŃŠ¾Ń</string> <string name="cast_failed_media_error_skipping">ŠŠ¾Š¼ŠøŠ»ŠŗŠ° ŠæŃŠ¾Š³ŃŠ°Š²Š°Š½Š½Ń ŃŠ°Š¹Š»Š°. ŠŃŠ¾ŠæŃŃŠŗŠ°Ń...</string> + <!--Notification channels--> + <string name="notification_channel_user_action">ŠŠ¾ŃŃŃŠ±Š½Š° Š“ŃŃ</string> + <string name="notification_channel_user_action_description">ŠŃŠ“Š¾Š±ŃŠ°Š¶Š°ŃŃŃŃŃ, ŃŠŗŃŠ¾ ŠæŠ¾ŃŃŃŠ±Š½Š° Š²Š°ŃŠ° Š“ŃŃ, Š½Š°ŠæŃŠøŠŗŠ»Š°Š“, ŃŠŗŃŠ¾ ŠæŠ¾ŃŃŃŠ±Š½Š¾ Š²Š²ŠµŃŃŠø ŠæŠ°ŃŠ¾Š»Ń.</string> + <string name="notification_channel_downloading">ŠŠ°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Š½Ń</string> + <string name="notification_channel_downloading_description">ŠŠ¾ŠŗŠ°Š·ŃŃŃŃŃŃ ŠæŃŠ“ ŃŠ°Ń Š·Š°Š²Š°Š½ŃŠ°Š¶ŠµŠ½Š½Ń.</string> + <string name="notification_channel_playing">ŠŃŠ¾Š³ŃŠ°ŃŃŃŃŃ Š·Š°ŃŠ°Š·</string> + <string name="notification_channel_playing_description">ŠŠ¾Š·Š²Š¾Š»ŃŃ ŠŗŠµŃŃŠ²Š°ŃŠø Š²ŃŠ“ŃŠ²Š¾ŃŠµŠ½Š½ŃŠ¼. Š¦Šµ Š¾ŃŠ½Š¾Š²Š½Šµ ŃŠæŠ¾Š²ŃŃŠµŠ½Š½Ń, ŃŠŗŠµ Š²Šø Š±Š°ŃŠøŃŠµ ŠæŃŠ“ ŃŠ°Ń Š²ŃŠ“ŃŠ²Š¾ŃŠµŠ½Š½Ń ŠæŠ¾Š“ŠŗŠ°ŃŃŃ.</string> + <string name="notification_channel_error">ŠŠ¾Š¼ŠøŠ»ŠŗŠø</string> + <string name="notification_channel_error_description">ŠŃŠ“Š¾Š±ŃŠ°Š¶Š°ŃŃŃŃŃ, ŃŠŗŃŠ¾ ŃŠ¾ŃŃ ŠæŃŃŠ»Š¾ Š½Šµ ŃŠ°Šŗ, Š½Š°ŠæŃŠøŠŗŠ»Š°Š“, ŃŠŗŃŠ¾ Š½Šµ Š²Š“Š°Š»Š¾ŃŃ Š·Š°Š²Š°Š½ŃŠ°Š¶ŠøŃŠø Š°Š±Š¾ ŃŠøŠ½Ń
ŃŠ¾Š½ŃŠ·ŃŠ²Š°ŃŠø Š· gpodder.</string> </resources> diff --git a/core/src/main/res/values-v21/styles.xml b/core/src/main/res/values-v21/styles.xml index 503337c95..c53000c4f 100644 --- a/core/src/main/res/values-v21/styles.xml +++ b/core/src/main/res/values-v21/styles.xml @@ -6,6 +6,19 @@ <style name="Theme.AntennaPod.Dark" parent="Theme.Base.AntennaPod.Dark"> <item name="android:windowContentTransitions">true</item> </style> + <style name="Theme.AntennaPod.TrueBlack" parent="Theme.Base.AntennaPod.TrueBlack"> + <item name="android:windowContentTransitions">true</item> + <item name="android:navigationBarColor">@color/black</item> + <item name="android:colorAccent">@color/white</item> + <item name="android:colorPrimary">@color/black</item> + <item name="android:colorPrimaryDark">@color/black</item> + </style> + <style name="Theme.AntennaPod.TrueBlack.NoTitle" parent="Theme.Base.AntennaPod.TrueBlack.NoTitle"> + <item name="android:navigationBarColor">@color/black</item> + <item name="android:colorAccent">@color/white</item> + <item name="android:colorPrimary">@color/black</item> + <item name="android:colorPrimaryDark">@color/black</item> + </style> <style name="Widget.AntennaPod.Button" parent="Widget.AppCompat.Button"> <item name="textAllCaps">true</item> diff --git a/core/src/main/res/values-v23/styles.xml b/core/src/main/res/values-v23/styles.xml new file mode 100644 index 000000000..5cd274e68 --- /dev/null +++ b/core/src/main/res/values-v23/styles.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + + <style name="Theme.AntennaPod.Light.NoTitle" parent="Theme.Base.AntennaPod.Light.NoTitle"> + <item name="android:windowLightStatusBar">true</item> + <item name="colorPrimaryDark">@color/primary_light</item> + </style> + + <style name="Theme.AntennaPod.Light" parent="Theme.Base.AntennaPod.Light"> + <item name="android:windowLightStatusBar">true</item> + <item name="colorPrimaryDark">@color/primary_light</item> + </style> +</resources> diff --git a/core/src/main/res/values-vi-rVN/strings.xml b/core/src/main/res/values-vi-rVN/strings.xml index acf3abe75..2d9481b84 100644 --- a/core/src/main/res/values-vi-rVN/strings.xml +++ b/core/src/main/res/values-vi-rVN/strings.xml @@ -36,4 +36,5 @@ <!--Database import/export--> <!--Casting--> <!--<string name="cast_failed_to_connect">Could not connect to the device</string>--> + <!--Notification channels--> </resources> diff --git a/core/src/main/res/values-vi/strings.xml b/core/src/main/res/values-vi/strings.xml index 00ed733d1..0982d2b14 100644 --- a/core/src/main/res/values-vi/strings.xml +++ b/core/src/main/res/values-vi/strings.xml @@ -48,7 +48,6 @@ <string name="yes">CĆ³</string> <string name="no">KhĆ“ng</string> <string name="reset">Äįŗ·t lįŗ”i</string> - <string name="author_label">TĆ”c giįŗ£</string> <string name="language_label">NgĆ“n ngį»Æ</string> <string name="url_label">LiĆŖn kįŗæt</string> <string name="podcast_settings_label">Thiįŗæt lįŗp</string> @@ -93,20 +92,11 @@ <string name="mark_all_read_msg">ÄĆ”nh dįŗ„u ÄĆ£ nghe tįŗ„t cįŗ£ cĆ”c tįŗp</string> <string name="mark_all_read_confirmation_msg">HĆ£y xĆ”c nhįŗn bįŗ”n muį»n ÄĆ”nh dįŗ„u ÄĆ£ nghe tįŗ„t cįŗ£ cĆ”c tįŗp.</string> <string name="mark_all_seen_label">ÄĆ”nh dįŗ„u ÄĆ£ xem tįŗ„t cįŗ£</string> - <string name="mark_all_seen_msg">ÄĆ”nh dįŗ„u ÄĆ£ xem tįŗ„t cįŗ£ cĆ”c tįŗp</string> <string name="mark_all_seen_confirmation_msg">HĆ£y xĆ”c nhįŗn bįŗ”n muį»n ÄĆ”nh dįŗ„u ÄĆ£ xem tįŗ„t cįŗ£ cĆ”c tįŗp.</string> <string name="show_info_label">Hiį»n thĆ“ng tin</string> - <string name="rename_feed_label">Äį»i tĆŖn podcast</string> - <string name="remove_feed_label">XoĆ” podcast</string> <string name="share_label">Chia sįŗ»ā¦</string> - <string name="share_link_label">Chia sįŗ» liĆŖn kįŗæt</string> - <string name="share_link_with_position_label">Chia sįŗ» liĆŖn kįŗæt cĆ¹ng vį» trĆ phĆ”t</string> <string name="share_feed_url_label">Chia sįŗ» liĆŖn kįŗæt feed</string> - <string name="share_item_url_label">Chia sįŗ» liĆŖn kįŗæt cį»§a tįŗp nĆ y</string> - <string name="share_item_url_with_position_label">Chia sįŗ» liĆŖn kįŗæt vĆ vį» trĆ phĆ”t tįŗp nĆ y</string> - <string name="feed_remover_msg">Äang xoĆ” feed</string> <string name="hide_episodes_title">įŗØn cĆ”c tįŗp</string> - <string name="episode_actions">Ćp dį»„ng hĆ nh Äį»ng</string> <string name="hide_unplayed_episodes_label">ChĘ°a nghe</string> <string name="hide_paused_episodes_label">Äang tįŗ”m dį»«ng</string> <string name="hide_played_episodes_label">ÄĆ£ nghe</string> @@ -204,7 +194,6 @@ <string name="date">NgĆ y</string> <string name="duration">Thį»i lĘ°į»£ng</string> <string name="episode_title">TiĆŖu Äį» tįŗp</string> - <string name="feed_title">TiĆŖu Äį» feed</string> <string name="ascending">TÄng dįŗ§n</string> <string name="descending">Giįŗ£m dįŗ§n</string> <!--Flattr--> @@ -233,7 +222,6 @@ <string name="pref_pauseOnDisconnect_sum">Tįŗ”m dį»«ng khi tai nghe hoįŗ·c thiįŗæt bį» Bluetooth bį» ngįŗÆt kįŗæt nį»i</string> <string name="pref_unpauseOnHeadsetReconnect_sum">Tiįŗæp tį»„c phĆ”t khi tai nghe ÄĘ°į»£c kįŗæt nį»i lįŗ”i</string> <string name="pref_unpauseOnBluetoothReconnect_sum">Tiįŗæp tį»„c phĆ”t khi thiįŗæt bį» Bluetooth ÄĘ°į»£c kįŗæt nį»i lįŗ”i</string> - <string name="pref_hardwareForwardButtonSkips_sum">Khi įŗ„n nĆŗt tua nhanh (nĆŗt cį»©ng), khĆ“ng tua mĆ chuyįŗæn sang tįŗp tiįŗæp theo</string> <string name="pref_hardwarePreviousButtonRestarts_title">Nghe lįŗ”i khi įŗ„n nĆŗt tua lįŗ”i</string> <string name="pref_hardwarePreviousButtonRestarts_sum">Khi įŗ„n nĆŗt tua lįŗ”i (nĆŗt cį»©ng), khĆ“ng tua lįŗ”i mĆ phĆ”t lįŗ”i tįŗp Äang nghe</string> <string name="pref_followQueue_sum">Chuyį»n Äįŗæn mį»„c Äį»£i phĆ”t tiįŗæp theo khi nghe xong</string> @@ -309,4 +297,5 @@ <!--Database import/export--> <!--Casting--> <!--<string name="cast_failed_to_connect">Could not connect to the device</string>--> + <!--Notification channels--> </resources> diff --git a/core/src/main/res/values-zh-rCN/strings.xml b/core/src/main/res/values-zh-rCN/strings.xml index 3eda888f9..02e78171c 100644 --- a/core/src/main/res/values-zh-rCN/strings.xml +++ b/core/src/main/res/values-zh-rCN/strings.xml @@ -18,17 +18,19 @@ <string name="cancel_download_label">åę¶äøč½½</string> <string name="playback_history_label">ęę¾åå²</string> <string name="gpodnet_main_label">gpodder.net</string> + <string name="gpodnet_summary">äøå
¶ä»č®¾å¤åę„</string> <string name="gpodnet_auth_label">gpodder.net ē»å½</string> - <string name="free_space_label">%1$såÆēØ</string> + <string name="free_space_label">%1$s åÆēØ</string> <string name="episode_cache_full_title">ę²ē®ē¼åå·²ę»”</string> <string name="episode_cache_full_message">å·²č¾¾å°ę²ē®ē¼åéå¶ļ¼åÆ仄åØč®¾ē½®äøęé«ē¼å大å°ć</string> + <string name="synchronizing">ę£åØåę„ā¦</string> <!--Statistics fragment--> <string name="total_time_listened_to_podcasts">ę»ęę¾ę¶éæļ¼</string> - <string name="statistics_details_dialog">%1$d out of %2$d episodes started.\n\nPlayed %3$s out of %4$s.</string> + <string name="statistics_details_dialog">å¬čæäŗę»č®” %2$d ęę客äøē %1$d ęć\n\nęę¾äŗę»č®” %4$s äøēĀ %3$sć</string> <string name="statistics_mode">ē»č®”ęØ”å¼</string> - <string name="statistics_mode_normal">č®”ē®å®é
ęę¾ę¶éæćęę¾äø¤ę¬”ēę
åµč¢«ę£ē”®čÆå«äøŗäø¤ę¬”ļ¼ä½ęÆč¢«ę č®°äøŗęŖęę¾ē¶ęēé½ę²”ęč¢«ę£ē”®čÆå«ę¶å¬ę¬”ę°ć</string> - <string name="statistics_mode_count_all">ē»č®”ęęåø¦ęå·²ęę¾ę客ę č®°ēę°é</string> - <string name="statistics_speed_not_counted">ę³Øęļ¼åę¾éåŗ¦äøåØčččå“ä¹å
ć</string> + <string name="statistics_mode_normal">č®”ē®å®é
äøēęę¾ę¬”ę°äøę¶éæćęę¾čæäø¤ę¬”åå°č¢«čÆå«äøŗäø¤ę¬”ļ¼ä½ęÆč¢«ęåØę č®°äøŗå·²ęę¾ē¶ęēäøē®ć</string> + <string name="statistics_mode_count_all">ē»č®”ęę¾ę¬”ę°ę¶ä»
ē»č®”ęęåø¦ęå·²ęę¾ę客ę č®°ēę°é</string> + <string name="statistics_speed_not_counted">ę³Øęļ¼ęę¾éåŗ¦äøåØčččå“ä¹å
ć</string> <!--Main activity--> <string name="drawer_open">ęå¼čå</string> <string name="drawer_close">å
³éčå</string> @@ -63,10 +65,11 @@ <string name="cover_label">å¾ē</string> <string name="error_label">éčÆÆ</string> <string name="error_msg_prefix">åŗé:</string> + <string name="needs_storage_permission">ę¤ęä½éč¦ååØęéć</string> <string name="refresh_label">å·ę°</string> <string name="external_storage_error_msg">ę²”ęåÆēØēå¤éØååØ. čÆ·ē”®äæå®č£
å¤éØååØåØ, čæę ·ę¬åŗēØęåÆ仄ę£åøøå·„ä½.</string> <string name="chapters_label">ē« č</string> - <string name="chapter_duration">ę¶éæļ¼ %1$s</string> + <string name="chapter_duration">ę¶éæļ¼%1$s</string> <string name="shownotes_label">ē¬č®°</string> <string name="description_label">ęčæ°</string> <string name="most_recent_prefix">ęčæę²ē®:\u0020</string> @@ -74,13 +77,13 @@ <string name="length_prefix">éæåŗ¦:\u0020</string> <string name="size_prefix">大å°:\u0020</string> <string name="processing_label">å¤ēäø</string> - <string name="loading_label">ę£åØå č½½</string> + <string name="loading_label">ę£åØå č½½ā¦</string> <string name="save_username_password_label">äæåēØę·ååÆē </string> <string name="close_label">å
³é</string> <string name="retry_label">éčÆ</string> <string name="auto_download_label">å
å«å°čŖåØäøč½½</string> <string name="auto_download_apply_to_items_title"> åŗēØå°ä¹åēę²ē®äø</string> - <string name="auto_download_apply_to_items_message">ę°ē <i>čŖåØäøč½½</i> ēč®¾å®å°ä¼čŖåØåŗēØå°ę°ę²ē®äøć\nä½ ę³åŗēØå°ä¹åēę²ē®åļ¼</string> + <string name="auto_download_apply_to_items_message">ę°ē <i>čŖåØäøč½½</i> č®¾ē½®å°ä¼čŖåØåŗēØå°ę°ēčē®äøć\nä½ ę³åŗēØå°ä¹åēčē®åļ¼</string> <string name="auto_delete_label">čŖåØå é¤å§é</string> <string name="parallel_downloads_suffix">\u0020 并č”äøč½½</string> <string name="feed_auto_download_global">å
Øå±é»č®¤</string> @@ -104,25 +107,13 @@ <string name="mark_all_read_label">å
ØéØę čÆå·²čÆ»</string> <string name="mark_all_read_msg">å°ęęę²ē®ę č®°äøŗå·²ęę¾</string> <string name="mark_all_read_confirmation_msg">čÆ·ē”®č®¤ęØč¦å°ęęę²ē®ę äøŗå·²ęę¾</string> - <string name="mark_all_read_feed_confirmation_msg">čÆ·ē”®č®¤ęØč¦å°čÆ„č®¢é
äøēęęę²ē®ę äøŗå·²ęę¾</string> <string name="mark_all_seen_label">ęęåÆč§</string> - <string name="mark_all_seen_msg">å°ęęę²ē®ę č®°äøŗå·²čÆ»</string> <string name="mark_all_seen_confirmation_msg">čÆ·ē”®č®¤ęØč¦å°ęęę²ē®ę č®°äøŗå·²čÆ»ć</string> <string name="show_info_label">ę„ēäæ”ęÆ</string> - <string name="rename_feed_label">éå½åę客</string> - <string name="remove_feed_label">å é¤ę客</string> <string name="share_label">åäŗ«</string> - <string name="share_link_label">åäŗ«ē½ē«é¾ę„</string> <string name="share_file_label">åäŗ«ę件</string> - <string name="share_link_with_position_label">åäŗ«ē½ē«é¾ę„äøä½ē½®</string> <string name="share_feed_url_label">åäŗ«č®¢é
å°å</string> - <string name="share_item_url_label">åäŗ«å§éę件URL</string> - <string name="share_item_url_with_position_label">åäŗ«å§éę件URLåå
¶ē¶ę</string> - <string name="feed_delete_confirmation_msg">čÆ·ē”®č®¤ęØč¦å é¤č®¢é
\"%1$s\" å
ę¬ ęę ę¤č®¢é
äøēå·²äøč½½ę²ē®ć</string> - <string name="feed_remover_msg">å é¤č®¢é
</string> - <string name="load_complete_feed">å·ę°å
ØéØč®¢é
</string> <string name="hide_episodes_title">éčę²ē®</string> - <string name="episode_actions">åÆēØ</string> <string name="hide_unplayed_episodes_label">ęŖęę¾</string> <string name="hide_paused_episodes_label">å·²ęå</string> <string name="hide_played_episodes_label">å·²ęę¾</string> @@ -231,7 +222,6 @@ <string name="date">ęę„ę</string> <string name="duration">ęę¶éæ</string> <string name="episode_title">å§éę é¢</string> - <string name="feed_title">č®¢é
ę é¢</string> <string name="ascending">ååŗ</string> <string name="descending">éåŗ</string> <string name="clear_queue_confirmation_msg">čÆ·ē”®č®¤ęØč¦ęø
é¤éåäøēå
ØéØę²ē®</string> @@ -268,7 +258,6 @@ <string name="enable_sonic">å
č®ø声é³</string> <!--Empty list labels--> <string name="no_items_label">åč”Øäøŗē©ŗ.</string> - <string name="no_feeds_label">čæę²”ęä»»ä½č®¢é
.</string> <string name="no_chapters_label">ę¤ę²ē®ę²”ęē« čäæ”ęÆ</string> <string name="no_shownotes_label">ę¬éäøå
å«å±ē¤ŗäæ”ęÆ</string> <!--Preferences--> @@ -277,7 +266,6 @@ <string name="other_pref">å
¶ä»</string> <string name="about_pref">å
³äŗ</string> <string name="queue_label">ęę¾åč”Ø</string> - <string name="services_label">ęå”</string> <string name="flattr_label">Flattr</string> <string name="pref_episode_cleanup_title">ęø
ēę²ē®</string> <string name="pref_pauseOnDisconnect_sum">ęåęę¾ę²ē®å½č³ęŗęčēéę°čæę„</string> @@ -326,7 +314,6 @@ <string name="pref_nav_drawer_feed_order_title">č®¾ē½®č®¢é
ēęåŗę¹å¼</string> <string name="pref_nav_drawer_feed_order_sum">ę¹åä½ ēč®¢é
ēęåŗę¹å¼</string> <string name="pref_nav_drawer_feed_counter_title">č®¾å®č®¢é
ę°</string> - <string name="pref_nav_drawer_feed_counter_sum">ę¹åč®¢é
ę°ę代č”Øēäæ”ęÆ</string> <string name="pref_set_theme_sum">ę¹å AntennaPod å¤č§</string> <string name="pref_automatic_download_title">čŖåØäøč½½</string> <string name="pref_automatic_download_sum">é
ē½®čŖåØäøč½½ēę²ē®</string> @@ -362,8 +349,6 @@ <string name="pref_rewind_sum">čŖå®ä¹ęÆꬔååčē®ēē§ę°</string> <string name="pref_gpodnet_sethostname_title">č®¾ē½®äø»ęŗå</string> <string name="pref_gpodnet_sethostname_use_default_host">ä½æēØé»č®¤äø»ęŗ</string> - <string name="pref_expandNotify_title">ę©å±éē„</string> - <string name="pref_expandNotify_sum">ę»ęÆę©å±éē„仄ę¾ē¤ŗęę¾ęé®</string> <string name="pref_persistNotify_title">äæęęę¾ę§å¶</string> <string name="pref_persistNotify_sum">åØęåę¶äæęéē„åéå±ēé¢ēę§å¶ć</string> <string name="pref_compact_notification_buttons_title">č®¾ē½®éå±ęé®</string> @@ -384,8 +369,6 @@ <string name="crash_report_sum">éčæ E-mail åéęåå“©ęŗę„å</string> <string name="send_email">åé E-mail</string> <string name="experimental_pref">å®éŖę§</string> - <string name="pref_sonic_title">é³é¢åŖä½ęę¾åØ</string> - <string name="pref_sonic_message">ä½æēØå
ē½®é³é¢åŖä½ęę¾åØ代ęæ Android åēåŖä½ęę¾åØ</string> <string name="pref_current_value">å½åå¼ļ¼%1$s</string> <string name="pref_proxy_title">代ē</string> <string name="pref_proxy_sum">éę©äøäøŖē½ē»ä»£ē</string> @@ -404,7 +387,6 @@ <!--Search--> <string name="search_hint">ę„ę¾čē®</string> <string name="found_in_chapters_label">ē« čäøę„ę¾</string> - <string name="found_in_feeds_label">Feeds äøę„ę¾</string> <string name="search_status_no_results">ę²”ęę¾å°ä»»ä½ē»ę</string> <string name="search_label">ęē“¢</string> <string name="found_in_title_label">ę é¢äøę„ę¾</string> @@ -430,8 +412,6 @@ <string name="html_export_label">åƼåŗäøŗ HTML ę件</string> <string name="exporting_label">ę£åØåƼåŗ</string> <string name="export_error_label">åƼåŗåŗé</string> - <string name="opml_export_success_title">OPML åƼåŗęå.</string> - <string name="opml_export_success_sum">.opml ę件已äæåå°:\u0020</string> <string name="opml_import_ask_read_permission">čÆ»å OPML ę件éč¦č®æé®å¤éØååØēęé</string> <!--Sleep timer--> <string name="set_sleeptimer_label">č®¾ē½®ä¼ē č®”ę¶åØ</string> @@ -598,4 +578,5 @@ <!--<string name="cast_failed_to_connect">Could not connect to the device</string>--> <string name="cast_failed_setting_volume">é³éč®¾ē½®å¤±č“„</string> <string name="cast_failed_media_error_skipping">åŖä½ęę¾åŗé.č·³č½¬äø...</string> + <!--Notification channels--> </resources> diff --git a/core/src/main/res/values-zh-rHK/strings.xml b/core/src/main/res/values-zh-rHK/strings.xml index acf3abe75..2d9481b84 100644 --- a/core/src/main/res/values-zh-rHK/strings.xml +++ b/core/src/main/res/values-zh-rHK/strings.xml @@ -36,4 +36,5 @@ <!--Database import/export--> <!--Casting--> <!--<string name="cast_failed_to_connect">Could not connect to the device</string>--> + <!--Notification channels--> </resources> diff --git a/core/src/main/res/values-zh-rTW/strings.xml b/core/src/main/res/values-zh-rTW/strings.xml index 87f749c37..f00904eda 100644 --- a/core/src/main/res/values-zh-rTW/strings.xml +++ b/core/src/main/res/values-zh-rTW/strings.xml @@ -56,7 +56,6 @@ <string name="yes">ęÆ</string> <string name="no">å¦</string> <string name="reset">éē½®</string> - <string name="author_label">ä½č
</string> <string name="language_label">čŖčØ</string> <string name="url_label">éę„</string> <string name="podcast_settings_label">čØē½®</string> @@ -104,25 +103,13 @@ <string name="mark_all_read_label">å
ØéØęØčØēŗå·²ęę¾</string> <string name="mark_all_read_msg">å
ØéØåéęØčØēŗå·²ęę¾</string> <string name="mark_all_read_confirmation_msg">č«ē¢ŗčŖä½ č¦å°ęęåéęØčØēŗå·²ęę¾ć</string> - <string name="mark_all_read_feed_confirmation_msg">č«ē¢ŗčŖä½ č¦å°ę¤ęę¾ęŗēęęåéęØčØēŗå·²ęę¾ć</string> <string name="mark_all_seen_label">ęØčØēŗå·²č®</string> - <string name="mark_all_seen_msg">å
ØéØåéęØčØēŗå·²č®</string> <string name="mark_all_seen_confirmation_msg">č«ē¢ŗčŖä½ č¦å°ęęåéęØčØēŗå·²č®ć</string> <string name="show_info_label">é”Æē¤ŗč³ę</string> - <string name="rename_feed_label">éå½åę客</string> - <string name="remove_feed_label">ē§»é¤ę客</string> <string name="share_label">åäŗ«</string> - <string name="share_link_label">åäŗ«éę„</string> <string name="share_file_label">åäŗ«ę件</string> - <string name="share_link_with_position_label">åäŗ«éę„čä½ē½®</string> <string name="share_feed_url_label">åäŗ«ę客ęŗéę„</string> - <string name="share_item_url_label">åäŗ«åéę件éę„</string> - <string name="share_item_url_with_position_label">åäŗ«åéę件éę„åä½ē½®</string> - <string name="feed_delete_confirmation_msg">č«ē¢ŗčŖęØå³å°åŖé¤ę客ęŗ\"%1$s\" åå®ęęēåéć</string> - <string name="feed_remover_msg">ē§»é¤ę客ęŗ</string> - <string name="load_complete_feed">å·ę°å®ęę客ęŗ</string> <string name="hide_episodes_title">é±čåé</string> - <string name="episode_actions">ęēØ</string> <string name="hide_unplayed_episodes_label">ęŖęę¾</string> <string name="hide_paused_episodes_label">ę«å</string> <string name="hide_played_episodes_label">å·²ęę¾</string> @@ -232,7 +219,6 @@ <string name="date">ę„ę</string> <string name="duration">ęé·</string> <string name="episode_title">åéęØé”</string> - <string name="feed_title">ęŗęØé”</string> <string name="ascending">ååŗ</string> <string name="descending">éåŗ</string> <string name="clear_queue_confirmation_msg">č«ē¢ŗčŖęØč¦ęø
é¤éå仄åå
¶äøęęēåé</string> @@ -270,7 +256,6 @@ <string name="enable_sonic">åēØSonic</string> <!--Empty list labels--> <string name="no_items_label">åč”Øč£”ę²ęé
ē®ć</string> - <string name="no_feeds_label">ęØéęŖčØé±ä»»ä½ęŗć</string> <string name="no_chapters_label">ę¬åéę²ęē« ēÆć</string> <string name="no_shownotes_label">ę¬åéę²ęēčØć</string> <!--Preferences--> @@ -279,7 +264,6 @@ <string name="other_pref">å
¶ä»</string> <string name="about_pref">éę¼</string> <string name="queue_label">éå</string> - <string name="services_label">ęå</string> <string name="flattr_label">Flattr</string> <string name="pref_episode_cleanup_title">åéęø
ē</string> <string name="pref_episode_cleanup_summary">å¦ęčŖåäøč¼éč¦ē©ŗéēØę¼ę°ēåéļ¼åäøåØéåäøäø¦äøäøęÆęęēåéå°č¢«ē§»é¤ć</string> @@ -287,7 +271,6 @@ <string name="pref_unpauseOnHeadsetReconnect_sum">ē¶č³ę©åꬔé£ę„ęē¹¼ēŗęę¾</string> <string name="pref_unpauseOnBluetoothReconnect_sum">ē¶čēåꬔé£ę„ęē¹¼ēŗęę¾</string> <string name="pref_hardwareForwardButtonSkips_title">åæ«é²ęéč·³é</string> - <string name="pref_hardwareForwardButtonSkips_sum">ē¶ęäøäøååƦé«ēåæ«é²ęéęļ¼č·³éäøäøååéčäøé²č”åæ«é²</string> <string name="pref_hardwarePreviousButtonRestarts_title">å¾ééµéę°ęę¾</string> <string name="pref_hardwarePreviousButtonRestarts_sum">ē¶ęäøäøååƦé«éµēå¾éęéęļ¼éę°ęę¾ę¬åéčäøęÆå¾é</string> <string name="pref_followQueue_sum">ē¶ęę¾å®ē¢ęčŖåč·³č³åč”Øäøēäøäøåé
ē®</string> @@ -319,4 +302,5 @@ <!--Database import/export--> <!--Casting--> <!--<string name="cast_failed_to_connect">Could not connect to the device</string>--> + <!--Notification channels--> </resources> diff --git a/core/src/main/res/values/arrays.xml b/core/src/main/res/values/arrays.xml index 9d9a2453d..6d310e0e5 100644 --- a/core/src/main/res/values/arrays.xml +++ b/core/src/main/res/values/arrays.xml @@ -55,6 +55,18 @@ <item>-1</item> </string-array> + <string-array name="mobile_update_entries"> + <item>@string/pref_mobileUpdate_nothing</item> + <item>@string/pref_mobileUpdate_images</item> + <item>@string/pref_mobileUpdate_everything</item> + </string-array> + + <string-array name="mobile_update_values"> + <item>nothing</item> + <item>images</item> + <item>everything</item> + </string-array> + <string-array name="episode_cleanup_entries"> <item>@string/episode_cleanup_queue_removal</item> <item>0</item> @@ -68,10 +80,11 @@ <string-array name="episode_cleanup_values"> <item>-1</item> <item>0</item> - <item>1</item> - <item>3</item> - <item>5</item> - <item>7</item> + <item>12</item> + <item>24</item> + <item>72</item> + <item>120</item> + <item>168</item> <item>-2</item> </string-array> @@ -137,10 +150,12 @@ <string-array name="theme_options"> <item>@string/pref_theme_title_light</item> <item>@string/pref_theme_title_dark</item> + <item>@string/pref_theme_title_trueblack</item> </string-array> <string-array name="theme_values"> <item>0</item> <item>1</item> + <item>2</item> </string-array> <string-array name="nav_drawer_titles"> @@ -181,6 +196,28 @@ <item>3</item> </string-array> + <string-array name="media_player_options"> + <item>@string/media_player_builtin</item> + <item>@string/media_player_sonic</item> + <item>@string/media_player_exoplayer</item> + </string-array> + + <string-array name="media_player_values"> + <item>builtin</item> + <item>sonic</item> + <item>exoplayer</item> + </string-array> + + <string-array name="media_player_options_no_sonic"> + <item>@string/media_player_builtin</item> + <item>@string/media_player_exoplayer</item> + </string-array> + + <string-array name="media_player_values_no_sonic"> + <item>builtin</item> + <item>exoplayer</item> + </string-array> + <string-array name="episode_filter_options"> <item>@string/hide_unplayed_episodes_label</item> <item>@string/hide_paused_episodes_label</item> @@ -190,6 +227,7 @@ <item>@string/hide_downloaded_episodes_label</item> <item>@string/hide_not_downloaded_episodes_label</item> <item>@string/hide_has_media_label</item> + <item>@string/hide_is_favorite_label</item> </string-array> <string-array name="episode_filter_values"> @@ -201,6 +239,7 @@ <item>downloaded</item> <item>not_downloaded</item> <item>has_media</item> + <item>is_favorite</item> </string-array> <string-array name="image_cache_size_options"> @@ -246,4 +285,37 @@ <item>stop</item> <item>continue</item> </string-array> + + <string-array name="batch_long_press_options"> + <item>@string/select_all_above</item> + <item>@string/select_all_below</item> + </string-array> + + <string-array name="back_button_behavior_options"> + <item>@string/back_button_default</item> + <item>@string/back_button_go_to_page</item> + <item>@string/back_button_open_drawer</item> + <item>@string/back_button_double_tap</item> + <item>@string/back_button_show_prompt</item> + </string-array> + + <string-array name="back_button_behavior_values"> + <item>default</item> + <item>page</item> + <item>drawer</item> + <item>doubletap</item> + <item>prompt</item> + </string-array> + + <string-array name="back_button_go_to_pages"> + <item>@string/queue_label</item> + <item>@string/episodes_label</item> + <item>@string/subscriptions_label</item> + </string-array> + + <string-array name="back_button_go_to_pages_tags"> + <item>QueueFragment</item> + <item>EpisodesFragment</item> + <item>SubscriptionFragment</item> + </string-array> </resources> diff --git a/core/src/main/res/values/attrs.xml b/core/src/main/res/values/attrs.xml index b005d4dc3..5311d6cd2 100644 --- a/core/src/main/res/values/attrs.xml +++ b/core/src/main/res/values/attrs.xml @@ -12,6 +12,7 @@ <attr name="av_rewind" format="reference"/> <attr name="content_discard" format="reference"/> <attr name="content_new" format="reference"/> + <attr name="content_remove_from_queue" format="reference"/> <attr name="storage" format="reference"/> <attr name="statistics" format="reference"/> <attr name="feed" format="reference"/> @@ -47,19 +48,29 @@ <attr name="ic_sleep" format="reference"/> <attr name="ic_sleep_off" format="reference"/> <attr name="checkbox_multiple" format="reference"/> - <attr name="ic_check_box" format="reference"/> - <attr name="ic_check_box_outline" format="reference"/> - <attr name="ic_indeterminate_check_box" format="reference"/> + <attr name="ic_select_all" format="reference"/> + <attr name="ic_select_none" format="reference"/> <attr name="ic_sort" format="reference"/> <attr name="ic_sd_storage" format="reference"/> <attr name="ic_create_new_folder" format="reference"/> <attr name="ic_cast_disconnect" format="reference"/> <attr name="ic_swap" format="reference"/> + <attr name="ic_cellphone_text" format="reference"/> + <attr name="ic_question_answer" format="reference" /> + <attr name="ic_bug" format="reference" /> + <attr name="ic_known_issues" format="reference" /> <attr name="master_switch_background" format="color"/> + <attr name="currently_playing_background" format="color"/> <!-- Used in itemdescription --> <attr name="non_transparent_background" format="reference"/> <attr name="overlay_background" format="color"/> <attr name="nav_drawer_background" format="color"/> + <attr name="drawer_activated_color" format="color"/> + + <attr name="about_screen_background" format="color"/> + <attr name="about_screen_card_background" format="color"/> + <attr name="about_screen_card_border" format="color"/> + <attr name="about_screen_font_color" format="color"/> </resources> diff --git a/core/src/main/res/values/colors.xml b/core/src/main/res/values/colors.xml index c9a5b3d6a..5d820f3cf 100644 --- a/core/src/main/res/values/colors.xml +++ b/core/src/main/res/values/colors.xml @@ -22,14 +22,18 @@ <color name="image_readability_tint">#80000000</color> <color name="feed_image_bg">#50000000</color> + <color name="selection_background_color_trueblack">#286E8A</color> <color name="selection_background_color_dark">#286E8A</color> <color name="selection_background_color_light">#81CFEA</color> <!-- Theme colors --> <color name="primary_light">#FFFFFF</color> - + <color name="primary_darktheme">#212121</color> + <color name="nav_drawer_background_dark">#3B3B3B</color> + <color name="nav_drawer_highlighted_dark">#212121</color> <color name="highlight_light">#DDDDDD</color> <color name="highlight_dark">#414141</color> + <color name="highlight_trueblack">#414141</color> <color name="antennapod_blue">#147BAF</color> diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml index 44288b24a..3d730516e 100644 --- a/core/src/main/res/values/strings.xml +++ b/core/src/main/res/values/strings.xml @@ -70,13 +70,14 @@ <string name="yes">Yes</string> <string name="no">No</string> <string name="reset">Reset</string> - <string name="author_label">Author</string> + <string name="author_label">Author(s)</string> <string name="language_label">Language</string> <string name="url_label">URL</string> <string name="podcast_settings_label">Settings</string> <string name="cover_label">Picture</string> <string name="error_label">Error</string> <string name="error_msg_prefix">An error occurred:</string> + <string name="needs_storage_permission">Storage permission is needed for this operation</string> <string name="refresh_label">Refresh</string> <string name="external_storage_error_msg">No external storage is available. Please make sure that external storage is mounted so that the app can work properly.</string> <string name="chapters_label">Chapters</string> @@ -104,10 +105,15 @@ <string name="episode_cleanup_never">Never</string> <string name="episode_cleanup_queue_removal">When not in queue</string> <string name="episode_cleanup_after_listening">After finishing</string> + <plurals name="episode_cleanup_hours_after_listening"> + <item quantity="one">1 hour after finishing</item> + <item quantity="other">%d hours after finishing</item> + </plurals> <plurals name="episode_cleanup_days_after_listening"> <item quantity="one">1 day after finishing</item> <item quantity="other">%d days after finishing</item> </plurals> + <string name="num_selected_label">%d selected</string> <!-- 'Add Feed' Activity labels --> <string name="feedurl_label">Feed URL</string> @@ -121,28 +127,30 @@ <string name="mark_all_read_label">Mark all as played</string> <string name="mark_all_read_msg">Marked all Episodes as played</string> <string name="mark_all_read_confirmation_msg">Please confirm that you want to mark all episodes as being played.</string> - <string name="mark_all_read_feed_confirmation_msg">Please confirm that you want to mark all episodes in this feed as being played.</string> + <string name="mark_all_read_feed_confirmation_msg">Please confirm that you want to mark all episodes in this podcast as being played.</string> <string name="mark_all_seen_label">Mark all as seen</string> - <string name="mark_all_seen_msg">Marked all Episodes as seen</string> + <string name="mark_all_seen_msg">Marked all episodes as seen</string> <string name="mark_all_seen_confirmation_msg">Please confirm that you want to mark all episodes as seen.</string> <string name="show_info_label">Show information</string> - <string name="show_feed_settings_label">Show feed settings</string> - <string name="feed_info_label">Feed info</string> - <string name="feed_settings_label">Feed settings</string> - <string name="rename_feed_label">Rename Podcast</string> - <string name="remove_feed_label">Remove Podcast</string> + <string name="show_feed_settings_label">Show podcast settings</string> + <string name="feed_info_label">Podcast info</string> + <string name="feed_settings_label">Podcast settings</string> + <string name="rename_feed_label">Rename podcast</string> + <string name="remove_feed_label">Remove podcast</string> <string name="share_label">Share…</string> - <string name="share_link_label">Share Link</string> + <string name="share_link_label">Share Episode URL</string> + <string name="share_link_with_position_label">Share Episode URL with Position</string> <string name="share_file_label">Share File</string> - <string name="share_link_with_position_label">Share Link with Position</string> <string name="share_feed_url_label">Share Feed URL</string> - <string name="share_item_url_label">Share Episode File URL</string> - <string name="share_item_url_with_position_label">Share Episode File URL with Position</string> - <string name="feed_delete_confirmation_msg">Please confirm that you want to delete the feed \"%1$s\" and ALL episodes of this feed that you have downloaded.</string> - <string name="feed_remover_msg">Removing Feed</string> - <string name="load_complete_feed">Refresh complete Feed</string> + <string name="share_item_url_label">Share Media File URL</string> + <string name="share_item_url_with_position_label">Share Media File URL with Position</string> + <string name="feed_delete_confirmation_msg">Please confirm that you want to delete the podcast \"%1$s\" and ALL its episodes (including downloaded episodes).</string> + <string name="feed_remover_msg">Removing podcast</string> + <string name="load_complete_feed">Refresh complete podcast</string> <string name="hide_episodes_title">Hide Episodes</string> <string name="batch_edit">Batch edit</string> + <string name="select_all_above">Select all above</string> + <string name="select_all_below">Select all below</string> <string name="hide_unplayed_episodes_label">Unplayed</string> <string name="hide_paused_episodes_label">Paused</string> <string name="hide_played_episodes_label">Played</string> @@ -151,12 +159,17 @@ <string name="hide_downloaded_episodes_label">Downloaded</string> <string name="hide_not_downloaded_episodes_label">Not downloaded</string> <string name="hide_has_media_label">Has media</string> + <string name="hide_is_favorite_label">Is favorite</string> <string name="filtered_label">Filtered</string> <string name="refresh_failed_msg">{fa-exclamation-circle} Last Refresh failed</string> <string name="open_podcast">Open Podcast</string> <!-- actions on feeditems --> <string name="download_label">Download</string> + <plurals name="downloading_batch_label"> + <item quantity="one">Downloading %d episode.</item> + <item quantity="other">Downloading %d episodes.</item> + </plurals> <string name="play_label">Play</string> <string name="pause_label">Pause</string> <string name="stop_label">Stop</string> @@ -164,14 +177,35 @@ <string name="remove_label">Remove</string> <string name="delete_label">Delete</string> <string name="delete_failed">Unable to delete file. Rebooting the device could help.</string> - <string name="remove_episode_lable">Remove Episode</string> + <string name="delete_episode_label">Delete Episode</string> + <plurals name="deleted_episode_batch_label"> + <item quantity="one">%d episode deleted.</item> + <item quantity="other">%d episodes deleted.</item> + </plurals> + <string name="mark_as_seen_label">Mark as seen</string> <string name="marked_as_seen_label">Marked as seen</string> <string name="mark_read_label">Mark as played</string> <string name="marked_as_read_label">Marked as played</string> + <plurals name="marked_read_batch_label"> + <item quantity="one">%d episode marked as played.</item> + <item quantity="other">%d episodes marked as played.</item> + </plurals> <string name="mark_unread_label">Mark as unplayed</string> + <plurals name="marked_unread_batch_label"> + <item quantity="one">%d episode marked as unplayed.</item> + <item quantity="other">%d episodes marked as unplayed.</item> + </plurals> <string name="add_to_queue_label">Add to Queue</string> <string name="added_to_queue_label">Added to Queue</string> + <plurals name="added_to_queue_batch_label"> + <item quantity="one">%d episode added to queue.</item> + <item quantity="other">%d episodes added to queue.</item> + </plurals> <string name="remove_from_queue_label">Remove from Queue</string> + <plurals name="removed_from_queue_batch_label"> + <item quantity="one">%d episode removed from queue.</item> + <item quantity="other">%d episodes removed from queue.</item> + </plurals> <string name="add_to_favorite_label">Add to Favorites</string> <string name="added_to_favorites">Added to Favorites</string> <string name="remove_from_favorite_label">Remove from Favorites</string> @@ -224,6 +258,7 @@ <string name="download_type_media">Media file</string> <string name="download_type_image">Image</string> <string name="download_request_error_dialog_message_prefix">An error occurred when trying to download the file:\u0020</string> + <string name="null_value_podcast_error">No podcast was provided that could be shown.</string> <string name="authentication_notification_title">Authentication required</string> <string name="authentication_notification_msg">The resource you requested requires a username and a password</string> <string name="confirm_mobile_download_dialog_title">Confirm Mobile Download</string> @@ -261,7 +296,7 @@ <string name="date">Date</string> <string name="duration">Duration</string> <string name="episode_title">Episode title</string> - <string name="feed_title">Feed title</string> + <string name="feed_title">Podcast title</string> <string name="random">Random</string> <string name="smart_shuffle">Smart Shuffle</string> <string name="ascending">Ascending</string> @@ -304,10 +339,25 @@ <string name="enable_sonic">Enable Sonic</string> <!-- Empty list labels --> - <string name="no_items_label">There are no items in this list.</string> - <string name="no_feeds_label">You haven\'t subscribed to any feeds yet.</string> + <string name="no_items_header_label">No queued episodes</string> + <string name="no_items_label">You can add episodes to the queue by long-pressing or downloading them.</string> + <string name="no_feeds_label">You haven\'t subscribed to any podcasts yet.</string> <string name="no_chapters_label">This episode has no chapters.</string> <string name="no_shownotes_label">This episode has no shownotes.</string> + <string name="no_run_downloads_head_label">No downloads running</string> + <string name="no_run_downloads_label">You can download episodes on the podcast details screen.</string> + <string name="no_comp_downloads_head_label">No downloaded episodes</string> + <string name="no_comp_downloads_label">You can download episodes on the podcast details screen.</string> + <string name="no_log_downloads_head_label">No download log</string> + <string name="no_log_downloads_label">Download logs will appear here when available.</string> + <string name="no_history_head_label">No History</string> + <string name="no_history_label">After you listen to an episode, it will appear here.</string> + <string name="no_all_episodes_head_label">No Episodes</string> + <string name="no_all_episodes_label">When you add a podcast, the episodes will be shown here.</string> + <string name="no_new_episodes_head_label">No new episodes</string> + <string name="no_new_episodes_label">When new episodes arrive, they will be shown here.</string> + <string name="no_fav_episodes_head_label">No favorite episodes</string> + <string name="no_fav_episodes_label">You can add episodes to the favorites by long-pressing them.</string> <!-- Preferences --> <string name="storage_pref">Storage</string> @@ -321,10 +371,11 @@ <string name="automation">Automation</string> <string name="download_pref_details">Details</string> <string name="import_export_pref">Import/Export</string> + <string name="import_export_search_keywords">backup, restore</string> <string name="appearance">Appearance</string> <string name="external_elements">External elements</string> <string name="interruptions">Interruptions</string> - <string name="buttons">Buttons</string> + <string name="buttons">Playback control buttons</string> <string name="media_player">Media player</string> <string name="pref_episode_cleanup_title">Episode Cleanup</string> <string name="pref_episode_cleanup_summary">Episodes that aren\'t in the queue and aren\'t favorites should be eligible for removal if Auto Download needs space for new episodes</string> @@ -332,7 +383,7 @@ <string name="pref_unpauseOnHeadsetReconnect_sum">Resume playback when the headphones are reconnected</string> <string name="pref_unpauseOnBluetoothReconnect_sum">Resume playback when bluetooth reconnects</string> <string name="pref_hardwareForwardButtonSkips_title">Forward Button Skips</string> - <string name="pref_hardwareForwardButtonSkips_sum">When pressing a hardware forward button skip to the next episode instead of fast-forwarding</string> + <string name="pref_hardwareForwardButtonSkips_sum">When pressing a forward button on a bluetooth-connected device skip to the next episode instead of fast-forwarding</string> <string name="pref_hardwarePreviousButtonRestarts_title">Previous button restarts</string> <string name="pref_hardwarePreviousButtonRestarts_sum">When pressing a hardware previous button restart playing the current episode instead of rewinding</string> <string name="pref_followQueue_sum">Jump to next queue item when playback completes</string> @@ -362,6 +413,9 @@ <string name="pref_unpauseOnBluetoothReconnect_title">Bluetooth Reconnect</string> <string name="pref_mobileUpdate_title">Mobile Updates</string> <string name="pref_mobileUpdate_sum">Allow updates over the mobile data connection</string> + <string name="pref_mobileUpdate_nothing">Nothing</string> + <string name="pref_mobileUpdate_images">Images only</string> + <string name="pref_mobileUpdate_everything">Everything</string> <string name="refreshing_label">Refreshing</string> <string name="flattr_settings_label">Flattr settings</string> <string name="pref_flattr_auth_title">Flattr sign-in</string> @@ -381,7 +435,7 @@ <string name="pref_nav_drawer_feed_order_title">Set Subscription Order</string> <string name="pref_nav_drawer_feed_order_sum">Change the order of your subscriptions</string> <string name="pref_nav_drawer_feed_counter_title">Set Subscription Counter</string> - <string name="pref_nav_drawer_feed_counter_sum">Change the information displayed by the subscription counter</string> + <string name="pref_nav_drawer_feed_counter_sum">Change the information displayed by the subscription counter. Also affects the sorting of subscriptions if \'Subscription Order\' is set to \'Counter\'.</string> <string name="pref_set_theme_sum">Change the appearance of AntennaPod.</string> <string name="pref_automatic_download_title">Automatic Download</string> <string name="pref_automatic_download_sum">Configure the automatic download of episodes.</string> @@ -395,6 +449,7 @@ <string name="pref_episode_cache_title">Episode Cache</string> <string name="pref_theme_title_light">Light</string> <string name="pref_theme_title_dark">Dark</string> + <string name="pref_theme_title_trueblack">Black (AMOLED ready)</string> <string name="pref_episode_cache_unlimited">Unlimited</string> <string name="pref_update_interval_hours_plural">hours</string> <string name="pref_update_interval_hours_singular">hour</string> @@ -423,8 +478,8 @@ <string name="pref_rewind_sum">Customize the number of seconds to jump backwards when the rewind button is clicked</string> <string name="pref_gpodnet_sethostname_title">Set hostname</string> <string name="pref_gpodnet_sethostname_use_default_host">Use default host</string> - <string name="pref_expandNotify_title">Expand Notification</string> - <string name="pref_expandNotify_sum">Always expand the notification to show playback buttons.</string> + <string name="pref_expandNotify_title">High Notification priority</string> + <string name="pref_expandNotify_sum">This usually expands the notification to show playback buttons.</string> <string name="pref_persistNotify_title">Persistent Playback Controls</string> <string name="pref_persistNotify_sum">Keep notification and lockscreen controls when playback is paused.</string> <string name="pref_compact_notification_buttons_title">Set Lockscreen Buttons</string> @@ -445,8 +500,7 @@ <string name="crash_report_sum">Send the latest crash report via e-mail</string> <string name="send_email">Send e-mail</string> <string name="experimental_pref">Experimental</string> - <string name="pref_sonic_title">Sonic Media Player</string> - <string name="pref_sonic_message">Use built-in sonic media player as a replacement for Android\'s native mediaplayer and Prestissimo</string> + <string name="pref_media_player_message">Select which media player to use to play files</string> <string name="pref_current_value">Current value: %1$s</string> <string name="pref_proxy_title">Proxy</string> <string name="pref_proxy_sum">Set a network proxy</string> @@ -458,10 +512,27 @@ <string name="pref_cast_message_free_flavor">Chromecast requires third party proprietary libraries that are disabled in this version of AntennaPod</string> <string name="pref_enqueue_downloaded_title">Enqueue Downloaded</string> <string name="pref_enqueue_downloaded_summary">Add downloaded episodes to the queue</string> - <string name="pref_videoBehavior_title">Video behavior</string> + <string name="media_player_builtin">Built-in Android player</string> + <string name="media_player_sonic" translatable="false">Sonic Media Player</string> + <string name="media_player_exoplayer" translatable="false">ExoPlayer</string> + <string name="pref_skip_silence_title">Skip Silence in Audio</string> + <string name="pref_videoBehavior_title">Upon exiting video</string> <string name="pref_videoBehavior_sum">Behavior when leaving video playback</string> <string name="stop_playback">Stop playback</string> - <string name="continue_playback">Continue playback</string> + <string name="continue_playback">Continue audio playback</string> + <string name="behavior">Behavior</string> + <string name="pref_back_button_behavior_title">Back Button Behavior</string> + <string name="pref_back_button_behavior_sum">Change behavior of the back button.</string> + <string name="back_button_default">Default</string> + <string name="back_button_open_drawer">Open navigation drawer</string> + <string name="back_button_double_tap">Double tap to exit</string> + <string name="back_button_show_prompt">Confirm to exit</string> + <string name="close_prompt">Are you sure you want to close AntennaPod?</string> + <string name="double_tap_toast">Tap back button again to exit</string> + <string name="back_button_go_to_page">Go to pageā¦</string> + <string name="back_button_go_to_page_title">Select page</string> + <string name="pref_delete_removes_from_queue_title">Delete removes from Queue</string> + <string name="pref_delete_removes_from_queue_sum">Automatically remove an episode from the queue when it is deleted.</string> <!-- Auto-Flattr dialog --> <string name="auto_flattr_enable">Enable automatic flattring</string> @@ -473,8 +544,8 @@ <string name="search_hint">Search for episodes</string> <string name="found_in_shownotes_label">Found in show notes</string> <string name="found_in_chapters_label">Found in chapters</string> - <string name="found_in_authors_label">Found in authors</string> - <string name="found_in_feeds_label">Found in feeds</string> + <string name="found_in_authors_label">Found in author(s)</string> + <string name="found_in_feeds_label">Found in podcast</string> <string name="search_status_no_results">No results were found</string> <string name="search_label">Search</string> <string name="found_in_title_label">Found in title</string> @@ -672,6 +743,7 @@ <string name="audio_effects">Audio Effects</string> <string name="stereo_to_mono">Downmix: Stereo to mono</string> <string name="sonic_only">Sonic only</string> + <string name="exoplayer_only">ExoPlayer only</string> <!-- proxy settings --> <string name="proxy_type_label">Type</string> diff --git a/core/src/main/res/values/styles.xml b/core/src/main/res/values/styles.xml index 3a215588e..e9a7a2f64 100644 --- a/core/src/main/res/values/styles.xml +++ b/core/src/main/res/values/styles.xml @@ -26,6 +26,7 @@ <item type="attr" name="av_rewind">@drawable/ic_fast_rewind_grey600_24dp</item> <item type="attr" name="content_discard">@drawable/ic_delete_grey600_24dp</item> <item type="attr" name="content_new">@drawable/ic_add_grey600_24dp</item> + <item type="attr" name="content_remove_from_queue">@drawable/ic_remove_grey600</item> <item type="attr" name="feed">@drawable/ic_feed_grey600_24dp</item> <item type="attr" name="location_web_site">@drawable/ic_web_grey600_24dp</item> <item type="attr" name="navigation_accept">@drawable/ic_done_grey600_24dp</item> @@ -43,6 +44,7 @@ <item type="attr" name="dragview_background">@drawable/ic_drag_vertical_grey600_48dp</item> <item type="attr" name="dragview_float_background">@color/white</item> <item type="attr" name="nav_drawer_background">@color/white</item> + <item type="attr" name="drawer_activated_color">@color/highlight_light</item> <item type="attr" name="ic_new">@drawable/ic_new_releases_grey600_24dp</item> <item type="attr" name="ic_history">@drawable/ic_history_grey600_24dp</item> <item type="attr" name="ic_folder">@drawable/ic_folder_grey600_24dp</item> @@ -59,15 +61,26 @@ <item type="attr" name="ic_filter">@drawable/ic_filter_grey600_24dp</item> <item type="attr" name="ic_sleep">@drawable/ic_sleep_grey600_24dp</item> <item type="attr" name="ic_sleep_off">@drawable/ic_sleep_off_grey600_24dp</item> - <item type="attr" name="ic_check_box">@drawable/ic_check_box_grey600_24dp</item> - <item type="attr" name="ic_check_box_outline">@drawable/ic_check_box_outline_blank_grey600_24dp</item> - <item type="attr" name="ic_indeterminate_check_box">@drawable/ic_indeterminate_check_box_grey600_24dp</item> + <item type="attr" name="ic_select_all">@drawable/ic_select_all_grey600</item> + <item type="attr" name="ic_select_none">@drawable/ic_select_none_grey600</item> <item type="attr" name="ic_sort">@drawable/ic_sort_grey600_24dp</item> <item type="attr" name="ic_sd_storage">@drawable/ic_sd_storage_grey600_36dp</item> <item type="attr" name="ic_create_new_folder">@drawable/ic_create_new_folder_grey600_24dp</item> <item type="attr" name="ic_cast_disconnect">@drawable/ic_cast_disconnect_grey600_36dp</item> + <item type="attr" name="ic_cellphone_text">@drawable/ic_cellphone_text_grey600_24dp</item> + <item type="attr" name="ic_question_answer">@drawable/ic_forum_grey600_24dp</item> + <item type="attr" name="ic_bug">@drawable/ic_bug_grey600_24dp</item> + <item type="attr" name="ic_known_issues">@drawable/ic_format_list_bulleted_grey600_24dp</item> + <item type="attr" name="master_switch_background">@color/master_switch_background_light</item> + <item type="attr" name="currently_playing_background">@color/highlight_light</item> + <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item> + + <item type="attr" name="about_screen_background">#e5e5e5</item> + <item type="attr" name="about_screen_card_background">#ffffff</item> + <item type="attr" name="about_screen_card_border">#d2d2d2</item> + <item type="attr" name="about_screen_font_color">#000000</item> </style> <style name="Theme.AntennaPod.Dark" parent="Theme.Base.AntennaPod.Dark"> @@ -76,6 +89,8 @@ <style name="Theme.Base.AntennaPod.Dark" parent="Theme.AppCompat"> <item name="colorAccent">@color/holo_blue_dark</item> + <item name="colorPrimary">@color/primary_darktheme</item> + <item name="colorPrimaryDark">@color/primary_darktheme</item> <item name="colorControlNormal">@color/white</item> <item name="buttonStyle">@style/Widget.AntennaPod.Button</item> <item name="progressBarTheme">@style/ProgressBarDark</item> @@ -95,6 +110,7 @@ <item type="attr" name="av_rewind">@drawable/ic_fast_rewind_white_24dp</item> <item type="attr" name="content_discard">@drawable/ic_delete_white_24dp</item> <item type="attr" name="content_new">@drawable/ic_add_white_24dp</item> + <item type="attr" name="content_remove_from_queue">@drawable/ic_remove_white</item> <item type="attr" name="feed">@drawable/ic_feed_white_24dp</item> <item type="attr" name="location_web_site">@drawable/ic_web_white_24dp</item> <item type="attr" name="navigation_accept">@drawable/ic_done_white_24dp</item> @@ -111,7 +127,8 @@ <item type="attr" name="overlay_drawable">@drawable/overlay_drawable_dark</item> <item type="attr" name="dragview_background">@drawable/ic_drag_vertical_white_48dp</item> <item type="attr" name="dragview_float_background">@color/black</item> - <item type="attr" name="nav_drawer_background">#3B3B3B</item> + <item type="attr" name="nav_drawer_background">@color/nav_drawer_background_dark</item> + <item type="attr" name="drawer_activated_color">@color/nav_drawer_highlighted_dark</item> <item type="attr" name="ic_new">@drawable/ic_new_releases_white_24dp</item> <item type="attr" name="ic_history">@drawable/ic_history_white_24dp</item> <item type="attr" name="ic_folder">@drawable/ic_folder_white_24dp</item> @@ -128,17 +145,49 @@ <item type="attr" name="ic_filter">@drawable/ic_filter_white_24dp</item> <item type="attr" name="ic_sleep">@drawable/ic_sleep_white_24dp</item> <item type="attr" name="ic_sleep_off">@drawable/ic_sleep_off_white_24dp</item> - <item type="attr" name="ic_check_box">@drawable/ic_check_box_white_24dp</item> - <item type="attr" name="ic_check_box_outline">@drawable/ic_check_box_outline_blank_white_24dp</item> - <item type="attr" name="ic_indeterminate_check_box">@drawable/ic_indeterminate_check_box_white_24dp</item> + <item type="attr" name="ic_select_all">@drawable/ic_select_all_white</item> + <item type="attr" name="ic_select_none">@drawable/ic_select_none_white</item> <item type="attr" name="ic_sort">@drawable/ic_sort_white_24dp</item> <item type="attr" name="ic_sd_storage">@drawable/ic_sd_storage_white_36dp</item> <item type="attr" name="ic_create_new_folder">@drawable/ic_create_new_folder_white_24dp</item> <item type="attr" name="ic_cast_disconnect">@drawable/ic_cast_disconnect_white_36dp</item> + <item type="attr" name="ic_cellphone_text">@drawable/ic_cellphone_text_white_24dp</item> + <item type="attr" name="ic_question_answer">@drawable/ic_baseline_question_answer_white_24dp</item> + <item type="attr" name="ic_bug">@drawable/ic_bug_white_24dp</item> + <item type="attr" name="ic_known_issues">@drawable/ic_format_list_bulleted_white_24dp</item> <item type="attr" name="master_switch_background">@color/master_switch_background_dark</item> + <item type="attr" name="currently_playing_background">@color/highlight_dark</item> <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item> + + <item type="attr" name="about_screen_background">#303030</item> + <item type="attr" name="about_screen_card_background">#424242</item> + <item type="attr" name="about_screen_card_border">#262626</item> + <item type="attr" name="about_screen_font_color">#ffffff</item> + </style> + + <style name="Theme.AntennaPod.TrueBlack" parent="Theme.Base.AntennaPod.TrueBlack"> + <!-- Room for API dependent attributes --> </style> + <style name="Theme.Base.AntennaPod.TrueBlack" parent="Theme.Base.AntennaPod.Dark"> + <item name="progressBarTheme">@style/ProgressBarTrueBlack</item> + <item type="attr" name="non_transparent_background">@color/black</item> + <item type="attr" name="overlay_background">@color/black</item> + <item type="attr" name="overlay_drawable">@drawable/overlay_drawable_dark_trueblack</item> + <item type="attr" name="dragview_background">@drawable/ic_drag_vertical_white_48dp</item> + <item type="attr" name="dragview_float_background">@color/black</item> + <item type="attr" name="nav_drawer_background">@color/black</item> + <item type="attr" name="drawer_activated_color">@color/highlight_trueblack</item> + <item name="android:textColorPrimary">@color/white</item> + <item name="android:color">@color/white</item> + <item name="android:colorBackground">@color/black</item> + <item name="android:windowBackground">@color/black</item> + <item name="android:actionBarStyle">@color/black</item> + <item name="colorPrimary">@color/black</item> + <item name="colorPrimaryDark">@color/black</item> + </style> + + <style name="Theme.AntennaPod.Light.NoTitle" parent="Theme.Base.AntennaPod.Light.NoTitle"> <!-- Room for API dependent attributes --> </style> @@ -165,6 +214,7 @@ <item type="attr" name="av_rewind">@drawable/ic_fast_rewind_grey600_24dp</item> <item type="attr" name="content_discard">@drawable/ic_delete_grey600_24dp</item> <item type="attr" name="content_new">@drawable/ic_add_grey600_24dp</item> + <item type="attr" name="content_remove_from_queue">@drawable/ic_remove_grey600</item> <item type="attr" name="feed">@drawable/ic_feed_grey600_24dp</item> <item type="attr" name="location_web_site">@drawable/ic_web_grey600_24dp</item> <item type="attr" name="navigation_accept">@drawable/ic_done_grey600_24dp</item> @@ -182,6 +232,7 @@ <item type="attr" name="dragview_background">@drawable/ic_drag_vertical_grey600_48dp</item> <item type="attr" name="dragview_float_background">@color/white</item> <item type="attr" name="nav_drawer_background">@color/white</item> + <item type="attr" name="drawer_activated_color">@color/highlight_light</item> <item type="attr" name="ic_new">@drawable/ic_new_releases_grey600_24dp</item> <item type="attr" name="ic_history">@drawable/ic_history_grey600_24dp</item> <item type="attr" name="ic_folder">@drawable/ic_folder_grey600_24dp</item> @@ -198,15 +249,24 @@ <item type="attr" name="ic_filter">@drawable/ic_filter_grey600_24dp</item> <item type="attr" name="ic_sleep">@drawable/ic_sleep_grey600_24dp</item> <item type="attr" name="ic_sleep_off">@drawable/ic_sleep_off_grey600_24dp</item> - <item type="attr" name="ic_check_box">@drawable/ic_check_box_grey600_24dp</item> - <item type="attr" name="ic_check_box_outline">@drawable/ic_check_box_outline_blank_grey600_24dp</item> - <item type="attr" name="ic_indeterminate_check_box">@drawable/ic_indeterminate_check_box_grey600_24dp</item> + <item type="attr" name="ic_select_all">@drawable/ic_select_all_grey600</item> + <item type="attr" name="ic_select_none">@drawable/ic_select_none_grey600</item> <item type="attr" name="ic_sort">@drawable/ic_sort_grey600_24dp</item> <item type="attr" name="ic_sd_storage">@drawable/ic_sd_storage_grey600_36dp</item> <item type="attr" name="ic_create_new_folder">@drawable/ic_create_new_folder_grey600_24dp</item> <item type="attr" name="ic_cast_disconnect">@drawable/ic_cast_disconnect_grey600_36dp</item> + <item type="attr" name="ic_cellphone_text">@drawable/ic_cellphone_text_grey600_24dp</item> + <item type="attr" name="ic_question_answer">@drawable/ic_forum_grey600_24dp</item> + <item type="attr" name="ic_bug">@drawable/ic_bug_grey600_24dp</item> + <item type="attr" name="ic_known_issues">@drawable/ic_format_list_bulleted_grey600_24dp</item> <item type="attr" name="master_switch_background">@color/master_switch_background_light</item> + <item type="attr" name="currently_playing_background">@color/highlight_light</item> <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item> + + <item type="attr" name="about_screen_background">#e5e5e5</item> + <item type="attr" name="about_screen_card_background">#ffffff</item> + <item type="attr" name="about_screen_card_border">#d2d2d2</item> + <item type="attr" name="about_screen_font_color">#000000</item> </style> <style name="Theme.AntennaPod.Dark.NoTitle" parent="Theme.Base.AntennaPod.Dark.NoTitle"> @@ -218,6 +278,8 @@ <item name="windowActionModeOverlay">true</item> <item name="progressBarTheme">@style/ProgressBarDark</item> <item name="colorAccent">@color/holo_blue_dark</item> + <item name="colorPrimary">@color/primary_darktheme</item> + <item name="colorPrimaryDark">@color/primary_darktheme</item> <item name="colorControlNormal">@color/white</item> <item name="buttonStyle">@style/Widget.AntennaPod.Button</item> <item name="alertDialogTheme">@style/AntennaPod.Dialog.Dark</item> @@ -236,6 +298,7 @@ <item type="attr" name="content_discard">@drawable/ic_delete_white_24dp</item> <item type="attr" name="content_new">@drawable/ic_add_white_24dp</item> <item type="attr" name="feed">@drawable/ic_feed_white_24dp</item> + <item type="attr" name="content_remove_from_queue">@drawable/ic_remove_white</item> <item type="attr" name="location_web_site">@drawable/ic_web_white_24dp</item> <item type="attr" name="navigation_accept">@drawable/ic_done_white_24dp</item> <item type="attr" name="navigation_cancel">@drawable/ic_cancel_white_24dp</item> @@ -251,7 +314,8 @@ <item type="attr" name="overlay_drawable">@drawable/overlay_drawable_dark</item> <item type="attr" name="dragview_background">@drawable/ic_drag_vertical_white_48dp</item> <item type="attr" name="dragview_float_background">@color/black</item> - <item type="attr" name="nav_drawer_background">#3B3B3B</item> + <item type="attr" name="nav_drawer_background">@color/nav_drawer_background_dark</item> + <item type="attr" name="drawer_activated_color">@color/nav_drawer_highlighted_dark</item> <item type="attr" name="ic_new">@drawable/ic_new_releases_white_24dp</item> <item type="attr" name="ic_history">@drawable/ic_history_white_24dp</item> <item type="attr" name="ic_folder">@drawable/ic_folder_white_24dp</item> @@ -268,19 +332,54 @@ <item type="attr" name="ic_filter">@drawable/ic_filter_white_24dp</item> <item type="attr" name="ic_sleep">@drawable/ic_sleep_white_24dp</item> <item type="attr" name="ic_sleep_off">@drawable/ic_sleep_off_white_24dp</item> - <item type="attr" name="ic_check_box">@drawable/ic_check_box_white_24dp</item> - <item type="attr" name="ic_check_box_outline">@drawable/ic_check_box_outline_blank_white_24dp</item> - <item type="attr" name="ic_indeterminate_check_box">@drawable/ic_indeterminate_check_box_white_24dp</item> + <item type="attr" name="ic_select_all">@drawable/ic_select_all_white</item> + <item type="attr" name="ic_select_none">@drawable/ic_select_none_white</item> <item type="attr" name="ic_sort">@drawable/ic_sort_white_24dp</item> <item type="attr" name="ic_sd_storage">@drawable/ic_sd_storage_white_36dp</item> <item type="attr" name="ic_create_new_folder">@drawable/ic_create_new_folder_white_24dp</item> <item type="attr" name="ic_cast_disconnect">@drawable/ic_cast_disconnect_white_36dp</item> + <item type="attr" name="ic_cellphone_text">@drawable/ic_cellphone_text_white_24dp</item> + <item type="attr" name="ic_question_answer">@drawable/ic_baseline_question_answer_white_24dp</item> + <item type="attr" name="ic_bug">@drawable/ic_bug_white_24dp</item> + <item type="attr" name="ic_known_issues">@drawable/ic_format_list_bulleted_white_24dp</item> <item type="attr" name="master_switch_background">@color/master_switch_background_dark</item> + <item type="attr" name="currently_playing_background">@color/highlight_dark</item> <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item> + + <item type="attr" name="about_screen_background">#303030</item> + <item type="attr" name="about_screen_card_background">#424242</item> + <item type="attr" name="about_screen_card_border">#262626</item> + <item type="attr" name="about_screen_font_color">#ffffff</item> + </style> + + <style name="Theme.AntennaPod.TrueBlack.NoTitle" parent="Theme.Base.AntennaPod.TrueBlack.NoTitle"> + <!-- Room for API dependent attributes --> </style> + <style name="Theme.Base.AntennaPod.TrueBlack.NoTitle" parent="Theme.Base.AntennaPod.Dark.NoTitle"> + <item name="progressBarTheme">@style/ProgressBarTrueBlack</item> + <item type="attr" name="non_transparent_background">@color/black</item> + <item type="attr" name="overlay_background">@color/black</item> + <item type="attr" name="overlay_drawable">@drawable/overlay_drawable_dark_trueblack</item> + <item type="attr" name="dragview_background">@drawable/ic_drag_vertical_white_48dp</item> + <item type="attr" name="dragview_float_background">@color/black</item> + <item type="attr" name="nav_drawer_background">@color/black</item> + <item type="attr" name="drawer_activated_color">@color/highlight_trueblack</item> + <item type="attr" name="currently_playing_background">@color/highlight_trueblack</item> + <item name="android:textColorPrimary">@color/white</item> + <item name="android:color">@color/white</item> + <item name="android:colorBackground">@color/black</item> + <item name="android:windowBackground">@color/black</item> + <item name="android:actionBarStyle">@color/black</item> + <item name="colorPrimary">@color/black</item> + <item name="colorPrimaryDark">@color/black</item> + </style> + + <style name="Theme.AntennaPod.Dark.Splash" parent="Theme.AppCompat.NoActionBar"> <item name="android:windowBackground">@drawable/bg_splash</item> + <item name="colorPrimary">@color/ic_launcher_background</item> + <item name="colorPrimaryDark">@color/ic_launcher_background</item> </style> <style name="Theme.AntennaPod.VideoPlayer" parent="@style/Theme.AntennaPod.Dark"> @@ -366,4 +465,9 @@ <item name="android:progressDrawable">@drawable/progress_bar_horizontal_dark</item> </style> + <style name="ProgressBarTrueBlack"> + <item name="android:indeterminateOnly">false</item> + <item name="android:progressDrawable">@drawable/progress_bar_horizontal_trueblack</item> + </style> + </resources> |