mirror of
				https://github.com/TeamNewPipe/NewPipe
				synced 2025-10-31 15:23:00 +00:00 
			
		
		
		
	Merge pull request #7981 from Stypox/sparse-items-deduplic
Deduplicate code for fetching stream info when sparse
This commit is contained in:
		| @@ -14,7 +14,7 @@ import org.schabi.newpipe.local.dialog.PlaylistDialog; | ||||
| import org.schabi.newpipe.player.playqueue.PlayQueue; | ||||
| import org.schabi.newpipe.player.playqueue.PlayQueueItem; | ||||
| import org.schabi.newpipe.util.NavigationHelper; | ||||
| import org.schabi.newpipe.util.SaveUploaderUrlHelper; | ||||
| import org.schabi.newpipe.util.SparseItemUtil; | ||||
|  | ||||
| import java.util.Collections; | ||||
|  | ||||
| @@ -62,7 +62,8 @@ public final class QueueItemMenuUtil { | ||||
|  | ||||
|                     return true; | ||||
|                 case R.id.menu_item_channel_details: | ||||
|                     SaveUploaderUrlHelper.saveUploaderUrlIfNeeded(context, item, | ||||
|                     SparseItemUtil.fetchUploaderUrlIfSparse(context, item.getServiceId(), | ||||
|                             item.getUrl(), item.getUploaderUrl(), | ||||
|                             // An intent must be used here. | ||||
|                             // Opening with FragmentManager transactions is not working, | ||||
|                             // as PlayQueueActivity doesn't use fragments. | ||||
|   | ||||
| @@ -1,7 +1,8 @@ | ||||
| package org.schabi.newpipe.info_list.dialog; | ||||
|  | ||||
| import static org.schabi.newpipe.info_list.dialog.StreamDialogEntry.fetchItemInfoIfSparse; | ||||
| import static org.schabi.newpipe.util.NavigationHelper.openChannelFragment; | ||||
| import static org.schabi.newpipe.util.SparseItemUtil.fetchItemInfoIfSparse; | ||||
| import static org.schabi.newpipe.util.SparseItemUtil.fetchUploaderUrlIfSparse; | ||||
|  | ||||
| import android.net.Uri; | ||||
|  | ||||
| @@ -14,7 +15,6 @@ import org.schabi.newpipe.local.dialog.PlaylistAppendDialog; | ||||
| import org.schabi.newpipe.local.dialog.PlaylistDialog; | ||||
| import org.schabi.newpipe.local.history.HistoryRecordManager; | ||||
| import org.schabi.newpipe.util.NavigationHelper; | ||||
| import org.schabi.newpipe.util.SaveUploaderUrlHelper; | ||||
| import org.schabi.newpipe.util.external_communication.KoreUtils; | ||||
| import org.schabi.newpipe.util.external_communication.ShareUtils; | ||||
|  | ||||
| @@ -40,8 +40,8 @@ import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; | ||||
|  */ | ||||
| public enum StreamDialogDefaultEntry { | ||||
|     SHOW_CHANNEL_DETAILS(R.string.show_channel_details, (fragment, item) -> | ||||
|         SaveUploaderUrlHelper.saveUploaderUrlIfNeeded(fragment, item, | ||||
|                 uploaderUrl -> openChannelFragment(fragment, item, uploaderUrl)) | ||||
|             fetchUploaderUrlIfSparse(fragment.requireContext(), item.getServiceId(), item.getUrl(), | ||||
|                     item.getUploaderUrl(), url -> openChannelFragment(fragment, item, url)) | ||||
|     ), | ||||
|  | ||||
|     /** | ||||
|   | ||||
| @@ -6,19 +6,7 @@ import androidx.annotation.NonNull; | ||||
| import androidx.annotation.StringRes; | ||||
| import androidx.fragment.app.Fragment; | ||||
|  | ||||
| import org.schabi.newpipe.error.ErrorInfo; | ||||
| import org.schabi.newpipe.error.ErrorUtil; | ||||
| import org.schabi.newpipe.error.UserAction; | ||||
| import org.schabi.newpipe.extractor.stream.StreamInfoItem; | ||||
| import org.schabi.newpipe.extractor.stream.StreamType; | ||||
| import org.schabi.newpipe.local.history.HistoryRecordManager; | ||||
| import org.schabi.newpipe.player.playqueue.SinglePlayQueue; | ||||
| import org.schabi.newpipe.util.ExtractorHelper; | ||||
|  | ||||
| import java.util.function.Consumer; | ||||
|  | ||||
| import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; | ||||
| import io.reactivex.rxjava3.schedulers.Schedulers; | ||||
|  | ||||
| public class StreamDialogEntry { | ||||
|  | ||||
| @@ -40,52 +28,4 @@ public class StreamDialogEntry { | ||||
|     public interface StreamDialogEntryAction { | ||||
|         void onClick(Fragment fragment, StreamInfoItem infoItem); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Fetches a {@link StreamInfoItem} if it is incomplete and executes the callback. | ||||
|      * <br /> | ||||
|      * This method is required if the info has been fetched | ||||
|      * via a {@link org.schabi.newpipe.extractor.feed.FeedExtractor}. | ||||
|      * FeedExtractors provide a fast and lightweight method to fetch info, | ||||
|      * but the info might be incomplete | ||||
|      * (see {@link org.schabi.newpipe.local.feed.service.FeedLoadService} for more details). | ||||
|      * @param context | ||||
|      * @param item the item which is checked and eventually loaded completely | ||||
|      * @param callback | ||||
|      */ | ||||
|     public static void fetchItemInfoIfSparse(@NonNull final Context context, | ||||
|                                              @NonNull final StreamInfoItem item, | ||||
|                                              @NonNull final Consumer<SinglePlayQueue> callback) { | ||||
|         if (!(item.getStreamType() == StreamType.LIVE_STREAM | ||||
|                 || item.getStreamType() == StreamType.AUDIO_LIVE_STREAM) | ||||
|                 && item.getDuration() < 0) { | ||||
|             // Sparse item: fetched by fast fetch | ||||
|             ExtractorHelper.getStreamInfo( | ||||
|                     item.getServiceId(), | ||||
|                     item.getUrl(), | ||||
|                     false | ||||
|             ) | ||||
|                     .subscribeOn(Schedulers.io()) | ||||
|                     .observeOn(AndroidSchedulers.mainThread()) | ||||
|                     .subscribe(result -> { | ||||
|                         final HistoryRecordManager recordManager = | ||||
|                                 new HistoryRecordManager(context); | ||||
|                         recordManager.saveStreamState(result, 0) | ||||
|                                 .subscribeOn(Schedulers.io()) | ||||
|                                 .observeOn(AndroidSchedulers.mainThread()) | ||||
|                                 .doOnError(throwable -> ErrorUtil.showSnackbar( | ||||
|                                         context, | ||||
|                                         new ErrorInfo(throwable, UserAction.REQUESTED_STREAM, | ||||
|                                                 item.getUrl(), item.getServiceId()))) | ||||
|                                 .subscribe(); | ||||
|  | ||||
|                         callback.accept(new SinglePlayQueue(result)); | ||||
|                     }, throwable -> ErrorUtil.createNotification(context, | ||||
|                             new ErrorInfo(throwable, UserAction.REQUESTED_CHANNEL, | ||||
|                                     "Could not fetch missing stream info"))); | ||||
|         } else { | ||||
|             callback.accept(new SinglePlayQueue(item)); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -19,6 +19,8 @@ | ||||
|  | ||||
| package org.schabi.newpipe.util; | ||||
|  | ||||
| import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty; | ||||
|  | ||||
| import android.content.Context; | ||||
| import android.util.Log; | ||||
| import android.view.View; | ||||
| @@ -30,8 +32,6 @@ import androidx.preference.PreferenceManager; | ||||
|  | ||||
| import org.schabi.newpipe.MainActivity; | ||||
| import org.schabi.newpipe.R; | ||||
| import org.schabi.newpipe.extractor.comments.CommentsInfoItem; | ||||
| import org.schabi.newpipe.util.external_communication.TextLinkifier; | ||||
| import org.schabi.newpipe.extractor.Info; | ||||
| import org.schabi.newpipe.extractor.InfoItem; | ||||
| import org.schabi.newpipe.extractor.ListExtractor.InfoItemsPage; | ||||
| @@ -42,6 +42,7 @@ import org.schabi.newpipe.extractor.Page; | ||||
| import org.schabi.newpipe.extractor.StreamingService; | ||||
| import org.schabi.newpipe.extractor.channel.ChannelInfo; | ||||
| import org.schabi.newpipe.extractor.comments.CommentsInfo; | ||||
| import org.schabi.newpipe.extractor.comments.CommentsInfoItem; | ||||
| import org.schabi.newpipe.extractor.feed.FeedExtractor; | ||||
| import org.schabi.newpipe.extractor.feed.FeedInfo; | ||||
| import org.schabi.newpipe.extractor.kiosk.KioskInfo; | ||||
| @@ -50,6 +51,7 @@ import org.schabi.newpipe.extractor.search.SearchInfo; | ||||
| import org.schabi.newpipe.extractor.stream.StreamInfo; | ||||
| import org.schabi.newpipe.extractor.stream.StreamInfoItem; | ||||
| import org.schabi.newpipe.extractor.suggestion.SuggestionExtractor; | ||||
| import org.schabi.newpipe.util.external_communication.TextLinkifier; | ||||
|  | ||||
| import java.util.Collections; | ||||
| import java.util.List; | ||||
| @@ -58,8 +60,6 @@ import io.reactivex.rxjava3.core.Maybe; | ||||
| import io.reactivex.rxjava3.core.Single; | ||||
| import io.reactivex.rxjava3.disposables.CompositeDisposable; | ||||
|  | ||||
| import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty; | ||||
|  | ||||
| public final class ExtractorHelper { | ||||
|     private static final String TAG = ExtractorHelper.class.getSimpleName(); | ||||
|     private static final InfoCache CACHE = InfoCache.getInstance(); | ||||
|   | ||||
| @@ -1,94 +0,0 @@ | ||||
| package org.schabi.newpipe.util; | ||||
|  | ||||
| import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty; | ||||
|  | ||||
| import android.content.Context; | ||||
| import android.widget.Toast; | ||||
|  | ||||
| import androidx.annotation.NonNull; | ||||
| import androidx.annotation.Nullable; | ||||
| import androidx.fragment.app.Fragment; | ||||
|  | ||||
| import org.schabi.newpipe.NewPipeDatabase; | ||||
| import org.schabi.newpipe.R; | ||||
| import org.schabi.newpipe.error.ErrorInfo; | ||||
| import org.schabi.newpipe.error.ErrorUtil; | ||||
| import org.schabi.newpipe.error.UserAction; | ||||
| import org.schabi.newpipe.extractor.stream.StreamInfoItem; | ||||
| import org.schabi.newpipe.player.playqueue.PlayQueueItem; | ||||
|  | ||||
| import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; | ||||
| import io.reactivex.rxjava3.schedulers.Schedulers; | ||||
|  | ||||
| /** | ||||
|  * Utility class for putting the uploader url into the database - when required. | ||||
|  */ | ||||
| public final class SaveUploaderUrlHelper { | ||||
|     private SaveUploaderUrlHelper() { | ||||
|     } | ||||
|  | ||||
|     // Public functions which call the function that does | ||||
|     // the actual work with the correct parameters | ||||
|     public static void saveUploaderUrlIfNeeded(@NonNull final Fragment fragment, | ||||
|                                                @NonNull final StreamInfoItem infoItem, | ||||
|                                                @NonNull final SaveUploaderUrlCallback callback) { | ||||
|         saveUploaderUrlIfNeeded(fragment.requireContext(), | ||||
|                 infoItem.getServiceId(), | ||||
|                 infoItem.getUrl(), | ||||
|                 infoItem.getUploaderUrl(), | ||||
|                 callback); | ||||
|     } | ||||
|     public static void saveUploaderUrlIfNeeded(@NonNull final Context context, | ||||
|                                                @NonNull final PlayQueueItem queueItem, | ||||
|                                                @NonNull final SaveUploaderUrlCallback callback) { | ||||
|         saveUploaderUrlIfNeeded(context, | ||||
|                 queueItem.getServiceId(), | ||||
|                 queueItem.getUrl(), | ||||
|                 queueItem.getUploaderUrl(), | ||||
|                 callback); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Fetches and saves the uploaderUrl if it is empty (meaning that it does | ||||
|      * not exist in the video item). The callback is called with either the | ||||
|      * fetched uploaderUrl, or the already saved uploaderUrl, but it is always | ||||
|      * called with a valid uploaderUrl that can be used to show channel details. | ||||
|      * | ||||
|      * @param context       Context | ||||
|      * @param serviceId     The serviceId of the item | ||||
|      * @param url           The item url | ||||
|      * @param uploaderUrl   The uploaderUrl of the item, if null or empty, it | ||||
|      *                      will be fetched using the item url. | ||||
|      * @param callback      The callback that returns the fetched or existing | ||||
|      *                      uploaderUrl | ||||
|      */ | ||||
|     private static void saveUploaderUrlIfNeeded(@NonNull final Context context, | ||||
|                                          final int serviceId, | ||||
|                                          @NonNull final String url, | ||||
|                                          // Only used if not null or empty | ||||
|                                          @Nullable final String uploaderUrl, | ||||
|                                          @NonNull final SaveUploaderUrlCallback callback) { | ||||
|         if (isNullOrEmpty(uploaderUrl)) { | ||||
|             Toast.makeText(context, R.string.loading_channel_details, | ||||
|                     Toast.LENGTH_SHORT).show(); | ||||
|             ExtractorHelper.getStreamInfo(serviceId, url, false) | ||||
|                     .subscribeOn(Schedulers.io()) | ||||
|                     .observeOn(AndroidSchedulers.mainThread()) | ||||
|                     .subscribe(result -> { | ||||
|                         NewPipeDatabase.getInstance(context).streamDAO() | ||||
|                                 .setUploaderUrl(serviceId, url, result.getUploaderUrl()) | ||||
|                                 .subscribeOn(Schedulers.io()).subscribe(); | ||||
|                         callback.onCallback(result.getUploaderUrl()); | ||||
|                     }, throwable -> ErrorUtil.createNotification(context, | ||||
|                             new ErrorInfo(throwable, UserAction.REQUESTED_CHANNEL, | ||||
|                                     "Could not load channel details") | ||||
|                     )); | ||||
|         } else { | ||||
|             callback.onCallback(uploaderUrl); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public interface SaveUploaderUrlCallback { | ||||
|         void onCallback(@NonNull String uploaderUrl); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										128
									
								
								app/src/main/java/org/schabi/newpipe/util/SparseItemUtil.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										128
									
								
								app/src/main/java/org/schabi/newpipe/util/SparseItemUtil.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,128 @@ | ||||
| package org.schabi.newpipe.util; | ||||
|  | ||||
| import static org.schabi.newpipe.extractor.stream.StreamType.AUDIO_LIVE_STREAM; | ||||
| import static org.schabi.newpipe.extractor.stream.StreamType.LIVE_STREAM; | ||||
| import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty; | ||||
|  | ||||
| import android.content.Context; | ||||
| import android.widget.Toast; | ||||
|  | ||||
| import androidx.annotation.NonNull; | ||||
| import androidx.annotation.Nullable; | ||||
|  | ||||
| import org.schabi.newpipe.NewPipeDatabase; | ||||
| import org.schabi.newpipe.R; | ||||
| import org.schabi.newpipe.database.stream.model.StreamEntity; | ||||
| import org.schabi.newpipe.error.ErrorInfo; | ||||
| import org.schabi.newpipe.error.ErrorUtil; | ||||
| import org.schabi.newpipe.error.UserAction; | ||||
| import org.schabi.newpipe.extractor.stream.StreamInfo; | ||||
| import org.schabi.newpipe.extractor.stream.StreamInfoItem; | ||||
| import org.schabi.newpipe.player.playqueue.SinglePlayQueue; | ||||
|  | ||||
| import java.util.function.Consumer; | ||||
|  | ||||
| import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; | ||||
| import io.reactivex.rxjava3.core.Completable; | ||||
| import io.reactivex.rxjava3.schedulers.Schedulers; | ||||
|  | ||||
| /** | ||||
|  * Utility class for fetching additional data for stream items when needed. | ||||
|  */ | ||||
| public final class SparseItemUtil { | ||||
|     private SparseItemUtil() { | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Use this to certainly obtain an single play queue with all of the data filled in when the | ||||
|      * stream info item you are handling might be sparse, e.g. because it was fetched via a {@link | ||||
|      * org.schabi.newpipe.extractor.feed.FeedExtractor}. FeedExtractors provide a fast and | ||||
|      * lightweight method to fetch info, but the info might be incomplete (see | ||||
|      * {@link org.schabi.newpipe.local.feed.service.FeedLoadService} for more details). | ||||
|      * | ||||
|      * @param context  Android context | ||||
|      * @param item     item which is checked and eventually loaded completely | ||||
|      * @param callback callback to call with the single play queue built from the original item if | ||||
|      *                 all info was available, otherwise from the fetched {@link | ||||
|      *                 org.schabi.newpipe.extractor.stream.StreamInfo} | ||||
|      */ | ||||
|     public static void fetchItemInfoIfSparse(@NonNull final Context context, | ||||
|                                              @NonNull final StreamInfoItem item, | ||||
|                                              @NonNull final Consumer<SinglePlayQueue> callback) { | ||||
|         if (((item.getStreamType() == LIVE_STREAM || item.getStreamType() == AUDIO_LIVE_STREAM) | ||||
|                 || item.getDuration() >= 0) && !isNullOrEmpty(item.getUploaderUrl())) { | ||||
|             // if the duration is >= 0 (provided that the item is not a livestream) and there is an | ||||
|             // uploader url, probably all info is already there, so there is no need to fetch it | ||||
|             callback.accept(new SinglePlayQueue(item)); | ||||
|         } | ||||
|  | ||||
|         // either the duration or the uploader url are not available, so fetch more info | ||||
|         fetchStreamInfoAndSaveToDatabase(context, item.getServiceId(), item.getUrl(), | ||||
|                 streamInfo -> callback.accept(new SinglePlayQueue(streamInfo))); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Use this to certainly obtain an uploader url when the stream info item or play queue item you | ||||
|      * are handling might not have the uploader url (e.g. because it was fetched with {@link | ||||
|      * org.schabi.newpipe.extractor.feed.FeedExtractor}). A toast is shown if loading details is | ||||
|      * required. | ||||
|      * | ||||
|      * @param context     Android context | ||||
|      * @param serviceId   serviceId of the item | ||||
|      * @param url         item url | ||||
|      * @param uploaderUrl uploaderUrl of the item; if null or empty will be fetched | ||||
|      * @param callback    callback to be called with either the original uploaderUrl, if it was a | ||||
|      *                    valid url, otherwise with the uploader url obtained by fetching the {@link | ||||
|      *                    org.schabi.newpipe.extractor.stream.StreamInfo} corresponding to the item | ||||
|      */ | ||||
|     public static void fetchUploaderUrlIfSparse(@NonNull final Context context, | ||||
|                                                 final int serviceId, | ||||
|                                                 @NonNull final String url, | ||||
|                                                 @Nullable final String uploaderUrl, | ||||
|                                                 @NonNull final Consumer<String> callback) { | ||||
|         if (isNullOrEmpty(uploaderUrl)) { | ||||
|             fetchStreamInfoAndSaveToDatabase(context, serviceId, url, | ||||
|                     streamInfo -> callback.accept(streamInfo.getUploaderUrl())); | ||||
|         } else { | ||||
|             callback.accept(uploaderUrl); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Loads the stream info corresponding to the given data on an I/O thread, stores the result in | ||||
|      * the database and calls the callback on the main thread with the result. A toast will be shown | ||||
|      * to the user about loading stream details, so this needs to be called on the main thread. | ||||
|      * | ||||
|      * @param context   Android context | ||||
|      * @param serviceId service id of the stream to load | ||||
|      * @param url       url of the stream to load | ||||
|      * @param callback  callback to be called with the result | ||||
|      */ | ||||
|     private static void fetchStreamInfoAndSaveToDatabase(@NonNull final Context context, | ||||
|                                                          final int serviceId, | ||||
|                                                          @NonNull final String url, | ||||
|                                                          final Consumer<StreamInfo> callback) { | ||||
|         Toast.makeText(context, R.string.loading_stream_details, Toast.LENGTH_SHORT).show(); | ||||
|         ExtractorHelper.getStreamInfo(serviceId, url, false) | ||||
|                 .subscribeOn(Schedulers.io()) | ||||
|                 .observeOn(AndroidSchedulers.mainThread()) | ||||
|                 .subscribe(result -> { | ||||
|                     // save to database in the background (not on main thread) | ||||
|                     Completable.fromAction(() -> NewPipeDatabase.getInstance(context) | ||||
|                             .streamDAO().upsert(new StreamEntity(result))) | ||||
|                             .subscribeOn(Schedulers.io()) | ||||
|                             .observeOn(Schedulers.io()) | ||||
|                             .doOnError(throwable -> | ||||
|                                     ErrorUtil.createNotification(context, | ||||
|                                             new ErrorInfo(throwable, UserAction.REQUESTED_STREAM, | ||||
|                                                     "Saving stream info to database", result))) | ||||
|                             .subscribe(); | ||||
|  | ||||
|                     // call callback on main thread with the obtained result | ||||
|                     callback.accept(result); | ||||
|                 }, throwable -> ErrorUtil.createNotification(context, | ||||
|                         new ErrorInfo(throwable, UserAction.REQUESTED_STREAM, | ||||
|                                 "Loading stream info: " + url, serviceId) | ||||
|                 )); | ||||
|     } | ||||
| } | ||||
| @@ -688,8 +688,6 @@ | ||||
|     <string name="seekbar_preview_thumbnail_title">معاينة مصغرة على شريط التمرير</string> | ||||
|     <string name="mark_as_watched">علّمه كفيديو تمت مشاهدته</string> | ||||
|     <string name="detail_heart_img_view_description">أُعجب بها منشئ المحتوى</string> | ||||
|     <string name="loading_channel_details">جاري تحميل تفاصيل القناة…</string> | ||||
|     <string name="error_show_channel_details">خطأ في عرض تفاصيل القناة</string> | ||||
|     <string name="show_image_indicators_summary">أظهر أشرطة ملونة لبيكاسو أعلى الصور تشير إلى مصدرها: الأحمر للشبكة والأزرق للقرص والأخضر للذاكرة</string> | ||||
|     <string name="show_image_indicators_title">إظهار مؤشرات الصور</string> | ||||
|     <string name="remote_search_suggestions">اقتراحات البحث عن بعد</string> | ||||
|   | ||||
| @@ -638,8 +638,6 @@ | ||||
|     <string name="high_quality_larger">高品质(较大)</string> | ||||
|     <string name="detail_heart_img_view_description">被创作者喜爱</string> | ||||
|     <string name="mark_as_watched">标记为已观看</string> | ||||
|     <string name="loading_channel_details">加载频道详情中…</string> | ||||
|     <string name="error_show_channel_details">显示频道详情时出错</string> | ||||
|     <string name="show_image_indicators_summary">在图像顶部显示毕加索彩带,指示其来源:红色代表网络,蓝色代表磁盘,绿色代表内存</string> | ||||
|     <string name="show_image_indicators_title">显示图像指示器</string> | ||||
|     <string name="remote_search_suggestions">远程搜索建议</string> | ||||
|   | ||||
| @@ -601,7 +601,6 @@ | ||||
| \nDegut a la nova política d\'edat de YouTube, el NewPipe no pot accedir a aquest contingut i per tant no pot reproduir-lo.</string> | ||||
|     <string name="show_description_summary">Desactiveu per amagar la descripció i la informació addicional del vídeo</string> | ||||
|     <string name="disable_media_tunneling_title">Desactiva l\'entunelament del contingut</string> | ||||
|     <string name="loading_channel_details">Carregant detalls del canal…</string> | ||||
|     <string name="off">Desactiva</string> | ||||
|     <string name="on">Activa</string> | ||||
|     <string name="tablet_mode_title">Mode tablet</string> | ||||
| @@ -671,7 +670,6 @@ | ||||
|     <string name="error_report_notification_title">NewPipe ha trobat un error, toca per informar</string> | ||||
|     <string name="enqueue_next_stream">Posa a la cua el següent vídeo</string> | ||||
|     <string name="create_error_notification">Crear una notificació d\'error</string> | ||||
|     <string name="error_show_channel_details">Error en mostrar els detalls del canal</string> | ||||
|     <string name="error_report_channel_description">Notificacions per informar d\'errors</string> | ||||
|     <string name="show_error_snackbar">Mostra una barra d\'errors</string> | ||||
|     <string name="checking_updates_toast">S\'estan comprovant les actualitzacions…</string> | ||||
|   | ||||
| @@ -641,8 +641,6 @@ | ||||
|     <string name="tablet_mode_title">دۆخی تابلێت</string> | ||||
|     <string name="open_website_license">کردنەوەی ماڵپەڕ</string> | ||||
|     <string name="seekbar_preview_thumbnail_title">پێشبینینی سەروێنەی گەڕان</string> | ||||
|     <string name="loading_channel_details">وردەکارییەکانی کەناڵەکە بار دەکرێن…</string> | ||||
|     <string name="error_show_channel_details">هەڵە ڕوویدا لە پیشاندانی وردەکارییەکانی کەناڵ</string> | ||||
|     <string name="detail_heart_img_view_description">بەدڵکراوە لەلایەن بڵاوکەرەوە</string> | ||||
|     <string name="dont_show">پیشان نەدرێت</string> | ||||
|     <string name="low_quality_smaller">کواڵێتی نزم (بچووکتر)</string> | ||||
|   | ||||
| @@ -658,8 +658,6 @@ | ||||
|     <string name="comments_are_disabled">Komentáře jsou vypnuty</string> | ||||
|     <string name="detail_heart_img_view_description">Srdíčko od tvůrce</string> | ||||
|     <string name="mark_as_watched">Označit jako zhlédnuté</string> | ||||
|     <string name="loading_channel_details">Načítání podrobností kanálu…</string> | ||||
|     <string name="error_show_channel_details">Chyba při zobrazení prodrobností kanálu</string> | ||||
|     <plurals name="deleted_downloads_toast"> | ||||
|         <item quantity="one">%1$s stažení smazáno</item> | ||||
|         <item quantity="few">%1$s stažení smazána</item> | ||||
|   | ||||
| @@ -648,8 +648,6 @@ | ||||
|     <string name="feed_toggle_show_played_items">Angesehene Elemente anzeigen</string> | ||||
|     <string name="mark_as_watched">Als gesehen markieren</string> | ||||
|     <string name="detail_heart_img_view_description">Vom Ersteller mit Herz versehen</string> | ||||
|     <string name="loading_channel_details">Kanaldetails werden geladen…</string> | ||||
|     <string name="error_show_channel_details">Fehler beim Anzeigen der Kanaldetails</string> | ||||
|     <string name="show_image_indicators_summary">Farbige Picasso-Bänder über den Bildern anzeigen, die deren Quelle angeben: rot für Netzwerk, blau für Festplatte und grün für Speicher</string> | ||||
|     <string name="show_image_indicators_title">Bildindikatoren anzeigen</string> | ||||
|     <string name="remote_search_suggestions">Entfernte Suchvorschläge</string> | ||||
|   | ||||
| @@ -648,8 +648,6 @@ | ||||
|     <string name="seekbar_preview_thumbnail_title">Προεπισκόπηση στην μπάρα αναζήτησης</string> | ||||
|     <string name="mark_as_watched">Σήμανση ως αναπαραχθέν</string> | ||||
|     <string name="detail_heart_img_view_description">Επισημάνθηκε από τον δημιουργό</string> | ||||
|     <string name="loading_channel_details">Φόρτωση λεπτομερειών καναλιού…</string> | ||||
|     <string name="error_show_channel_details">Σφάλμα στην εμφάνιση λεπτομερειών καναλιού</string> | ||||
|     <string name="show_image_indicators_summary">Εμφάνιση χρωματιστής κορδέλας πάνω στις εικόνες, που δείχνει την πηγή τους: κόκκινη για δίκτυο, μπλε για δίσκο και πράσινο για μνήμη</string> | ||||
|     <string name="show_image_indicators_title">Εμφάνιση δεικτών εικόνων</string> | ||||
|     <string name="remote_search_suggestions">Προτάσεις απομακρυσμένης αναζήτησης</string> | ||||
|   | ||||
| @@ -652,8 +652,6 @@ | ||||
|     <string name="detail_heart_img_view_description">Valorado por el creador</string> | ||||
|     <string name="mark_as_watched">Marcar como visto</string> | ||||
|     <string name="show_image_indicators_summary">Mostrar cintas de colores Picasso encima de las imágenes indicando su origen: rojo para la red, azul para el disco y verde para la memoria</string> | ||||
|     <string name="loading_channel_details">Cargando detalles del canal…</string> | ||||
|     <string name="error_show_channel_details">Error en Mostrar detalles del canal</string> | ||||
|     <string name="show_image_indicators_title">Mostrar indicadores de imagen</string> | ||||
|     <string name="remote_search_suggestions">Sugerencias de búsqueda remota</string> | ||||
|     <string name="local_search_suggestions">Sugerencias de búsqueda local</string> | ||||
|   | ||||
| @@ -648,8 +648,6 @@ | ||||
| \n | ||||
| \nNii et valik taandub sellele, mida eelistad: kiirus või täpne teave.</string> | ||||
|     <string name="mark_as_watched">Märgi vaadatuks</string> | ||||
|     <string name="loading_channel_details">Laadin kanali andmeid…</string> | ||||
|     <string name="error_show_channel_details">Viga kanali lisateabe kuvamisel</string> | ||||
|     <string name="show_image_indicators_summary">Näita piltide kohal Picasso värvides riba, mis märgib pildi allikat: punane tähistab võrku, sinine kohalikku andmekandjat ja roheline kohalikku mälu</string> | ||||
|     <string name="show_image_indicators_title">Näita piltide allikat</string> | ||||
|     <string name="remote_search_suggestions">Kaugotsingu soovitused</string> | ||||
|   | ||||
| @@ -646,8 +646,6 @@ | ||||
|     <string name="high_quality_larger">Kalitate handia (handiagoa)</string> | ||||
|     <string name="seekbar_preview_thumbnail_title">Seekbarren miniaturen aurrebista</string> | ||||
|     <string name="comments_are_disabled">Iruzkinak desaktibatuta daude</string> | ||||
|     <string name="loading_channel_details">Kanalaren xehetasunak kargatzen…</string> | ||||
|     <string name="error_show_channel_details">Errorea kanalaren xehetasunak erakustean</string> | ||||
|     <string name="detail_heart_img_view_description">Sortzaileak baloratua</string> | ||||
|     <plurals name="deleted_downloads_toast"> | ||||
|         <item quantity="one">Deskarga %1$s ezabatuta</item> | ||||
|   | ||||
| @@ -660,8 +660,6 @@ | ||||
|     </plurals> | ||||
|     <string name="description_select_enable">به کار انداختن گزینش متن در شرح</string> | ||||
|     <string name="description_select_disable">از کار انداختن گزینش متن در شرح</string> | ||||
|     <string name="loading_channel_details">بار کردن جزییات کانال…</string> | ||||
|     <string name="error_show_channel_details">خطا در نمایش جزییات کانال</string> | ||||
|     <string name="main_page_content_swipe_remove">برای برداشتن موارد، بکشیدشان</string> | ||||
|     <string name="start_main_player_fullscreen_summary">اگر چرخش خودکار قفل باشد، ویدیوها را در پخشکنندهٔ کوچک آغاز نمیکند، بلکه مستقیماً به تمامصفحه میرود. همچنان میتوانید با خروج از تمامصفحه به پخشکنندهٔ کوچک دسترسی داشته باشید</string> | ||||
|     <string name="start_main_player_fullscreen_title">آغاز پخشکنندهٔ اصلی در تمامصفحه</string> | ||||
|   | ||||
| @@ -648,8 +648,6 @@ | ||||
|     <string name="no_dir_yet">Latauskansiota ei vielä asetettu, valitse ensin oletuslatauskansio</string> | ||||
|     <string name="comments_are_disabled">Kommentit poistettu käytöstä</string> | ||||
|     <string name="mark_as_watched">Merkitse katsotuksi</string> | ||||
|     <string name="loading_channel_details">Ladataan kanavan tietoja…</string> | ||||
|     <string name="error_show_channel_details">Virhe kanavan lisätietojen näyttämisessä</string> | ||||
|     <string name="show_image_indicators_summary">Näytä Picasso-värjätyt nauhat kuvien päällä osoittaakseen lähteen: punainen tarkoittaa verkkoa, sininen tarkoittaa levytilaa ja vihreä tarkoittaa muistia</string> | ||||
|     <string name="show_image_indicators_title">Näytä kuvailmaisimet</string> | ||||
|     <string name="remote_search_suggestions">Etähakuehdotukset</string> | ||||
|   | ||||
| @@ -650,8 +650,6 @@ | ||||
|     <string name="seekbar_preview_thumbnail_title">Prévisualisation de la barre de progression sur la miniature</string> | ||||
|     <string name="mark_as_watched">Marquer comme visionné</string> | ||||
|     <string name="detail_heart_img_view_description">Apprécié par le créateur</string> | ||||
|     <string name="loading_channel_details">Chargement des détails du canal…</string> | ||||
|     <string name="error_show_channel_details">Erreur lors de l’affichage des détails du canal</string> | ||||
|     <string name="show_image_indicators_title">Afficher les indicateurs d’image</string> | ||||
|     <string name="remote_search_suggestions">Suggestions de recherche distante</string> | ||||
|     <string name="local_search_suggestions">Suggestions de recherche locale</string> | ||||
|   | ||||
| @@ -625,8 +625,6 @@ | ||||
|     <string name="show_meta_info_summary">Desactivar para ocultar información adicional sobre o creador da emisión, do contido, ou da petición de procura</string> | ||||
|     <string name="notification_colorize_summary">Permitir a Android personalizar a cor da notificación conforme a cor principal da miniatura (esta opción non está dispoñíbel en todos os dispositivos)</string> | ||||
|     <string name="mark_as_watched">Marcar como visto</string> | ||||
|     <string name="loading_channel_details">A carregar detalles da canle…</string> | ||||
|     <string name="error_show_channel_details">Erro en Mostrar detalles da canle</string> | ||||
|     <string name="download_has_started">Descarga inciada</string> | ||||
|     <string name="account_terminated">Conta cancelada</string> | ||||
|     <string name="feed_load_error_fast_unknown">O modo feed rápido non prové máis información sobre isto.</string> | ||||
|   | ||||
| @@ -668,8 +668,6 @@ | ||||
|     <string name="seekbar_preview_thumbnail_title">תמונה מוקטנת בסרגל הנגינה</string> | ||||
|     <string name="detail_heart_img_view_description">סומן בלב על ידי היוצר</string> | ||||
|     <string name="mark_as_watched">סימון כנצפה</string> | ||||
|     <string name="loading_channel_details">פרטי הערוץ נטענים…</string> | ||||
|     <string name="error_show_channel_details">שגיאה בהצגת פרטי הערוץ</string> | ||||
|     <string name="show_image_indicators_summary">הצגת סרטים בסגנון פיקאסו בראש התמונות לציון המקור שלהם: אדום זה מהרשת, כחול מהכונן וירוק מהזיכרון</string> | ||||
|     <string name="show_image_indicators_title">הצגת מחווני תמונות</string> | ||||
|     <string name="remote_search_suggestions">הצעות חיפוש מרוחקות</string> | ||||
|   | ||||
| @@ -659,8 +659,6 @@ | ||||
|     <string name="description_select_note">Sada možeš odabrati tekst u opisu. Napomena: stranica će možda treperiti i možda nećeš moći kliknuti poveznice u načinu rada za odabir teksta.</string> | ||||
|     <string name="service_provides_reason">%s daje ovaj razlog:</string> | ||||
|     <string name="processing_may_take_a_moment">Obrada... Pričekajte trenutak</string> | ||||
|     <string name="error_show_channel_details">Pogreška pri prikazu detalja kanala</string> | ||||
|     <string name="loading_channel_details">Učitavanje detalja o kanalu…</string> | ||||
|     <string name="main_page_content_swipe_remove">Povucite stavke da biste ih uklonili</string> | ||||
|     <string name="show_image_indicators_title">Prikazati indikatore slike</string> | ||||
|     <plurals name="download_finished_notification"> | ||||
|   | ||||
| @@ -620,7 +620,6 @@ | ||||
|     <string name="metadata_privacy_public">Nyilvános</string> | ||||
|     <string name="metadata_privacy_unlisted">Nem listázott</string> | ||||
|     <string name="off">Ki</string> | ||||
|     <string name="loading_channel_details">Csatornarészletek betöltése…</string> | ||||
|     <string name="no_appropriate_file_manager_message">Nem található megfelelő fájlkezelő ehhez a művelethez. | ||||
| \nTelepítsen egy fájlkezelőt, vagy próbálja meg letiltani a következőt a letöltési beállításokban: „%s”.</string> | ||||
|     <plurals name="download_finished_notification"> | ||||
| @@ -666,7 +665,6 @@ | ||||
|     <string name="metadata_category">Kategória</string> | ||||
|     <string name="metadata_tags">Címkék</string> | ||||
|     <string name="metadata_privacy">Adatvédelem</string> | ||||
|     <string name="error_show_channel_details">Hiba a csatornarészletek megjelenítésekor</string> | ||||
|     <string name="feed_use_dedicated_fetch_method_disable_button">Gyors mód letiltása</string> | ||||
|     <string name="remove_watched_popup_yes_and_partially_watched_videos">Igen, és távolítsa el a részben megnézett videókat is</string> | ||||
|     <string name="remove_watched_popup_warning">A videók, melyeket már megnézett miután a lejátszási listához adta őket, el lesznek távolítva. | ||||
|   | ||||
| @@ -653,8 +653,6 @@ | ||||
|     <string name="enqueued_next">telah ditambahkan ke selanjutnya</string> | ||||
|     <string name="show_image_indicators_summary">Tampilkan Ribon bewarna Picasso di atas gambar yang mengindikasikan asalnya: merah untuk jaringan, biru untuk disk dan hijau untuk memori</string> | ||||
|     <string name="start_main_player_fullscreen_summary">Jangan memulai memutar video di mini player, tapi nyalakan langsung di mode layar penuh, jika rotasi otomatis terkunci. Anda tetap dapat mengakses mini player dengan keluar dari layar penuh</string> | ||||
|     <string name="loading_channel_details">Memuat Detail Channel…</string> | ||||
|     <string name="error_show_channel_details">Galat Menampilkan Detail Channel</string> | ||||
|     <string name="processing_may_take_a_moment">Memproses… Mungkin butuh waktu sebentar</string> | ||||
|     <string name="manual_update_title">Periksa Pembaruan</string> | ||||
|     <string name="manual_update_description">Periksa manual untuk versi baru</string> | ||||
|   | ||||
| @@ -648,8 +648,6 @@ | ||||
|     <string name="comments_are_disabled">Commenti disattivati</string> | ||||
|     <string name="detail_heart_img_view_description">Apprezzato dall\'autore</string> | ||||
|     <string name="mark_as_watched">Segna come visto</string> | ||||
|     <string name="loading_channel_details">Caricamento dettagli canale…</string> | ||||
|     <string name="error_show_channel_details">Errore per \"Mostra dettagli canale\"</string> | ||||
|     <string name="show_image_indicators_summary">Mostra gli indicatori colorati Picasso sopra le immagini, per indicare la loro fonte: rosso per la rete, blu per il disco e verde per la memoria</string> | ||||
|     <string name="show_image_indicators_title">Mostra indicatori immagine</string> | ||||
|     <string name="remote_search_suggestions">Suggerimenti di ricerca remoti</string> | ||||
|   | ||||
| @@ -637,8 +637,6 @@ | ||||
|     <string name="seekbar_preview_thumbnail_title">シークバーのサムネイルプレビュー</string> | ||||
|     <string name="comments_are_disabled">コメントは無効です</string> | ||||
|     <string name="mark_as_watched">視聴済みとしてマーク</string> | ||||
|     <string name="error_show_channel_details">チャンネルの詳細の表示でエラー</string> | ||||
|     <string name="loading_channel_details">チャンネルの詳細を読み込み中…</string> | ||||
|     <string name="remote_search_suggestions">リモート検索候補</string> | ||||
|     <string name="local_search_suggestions">ローカル検索候補</string> | ||||
|     <string name="main_page_content_swipe_remove">アイテムをスワイプして削除</string> | ||||
|   | ||||
| @@ -658,8 +658,6 @@ | ||||
|     <string name="dont_show">Nerodyti</string> | ||||
|     <string name="detail_heart_img_view_description">Širdelė nuo kurėjo</string> | ||||
|     <string name="mark_as_watched">Pažymėti kaip peržiūrėtą</string> | ||||
|     <string name="loading_channel_details">Įkeliama kanalo išsami informacija…</string> | ||||
|     <string name="error_show_channel_details">Klaida rodant kanalo išsamią informaciją</string> | ||||
|     <string name="show_image_indicators_summary">Rodyti „Picasso“ spalvotas juosteles ant vaizdų, nurodančių jų šaltinį: raudona tinklui, mėlyna diskui ir žalia atmintis</string> | ||||
|     <string name="show_image_indicators_title">Rodyti vaizdo indikatorius</string> | ||||
|     <string name="remote_search_suggestions">Nuotolinės paieškos pasiūlymai</string> | ||||
|   | ||||
| @@ -662,8 +662,6 @@ | ||||
|     <string name="detail_heart_img_view_description">Autors piekrīt</string> | ||||
|     <string name="open_website_license">Atvērt mājaslapu</string> | ||||
|     <string name="tablet_mode_title">Tabletes režīms</string> | ||||
|     <string name="error_show_channel_details">Kļūda rādot kanāla informāciju</string> | ||||
|     <string name="loading_channel_details">Ielādē kanāla informāciju…</string> | ||||
|     <string name="low_quality_smaller">Zemas kvalitātes (mazāks)</string> | ||||
|     <string name="metadata_privacy">Privātums</string> | ||||
|     <string name="metadata_privacy_unlisted">Sarakstā neiekļauts</string> | ||||
|   | ||||
| @@ -611,8 +611,6 @@ | ||||
|     <string name="detail_heart_img_view_description">സ്നേഹത്തോടെ സൃഷ്ടാവ്</string> | ||||
|     <string name="description_select_disable">ഡിസ്ക്രിപ്ഷനിലെ ടെക്സ്റ്റ് സെലക്ട് ചെയ്യുവാൻ അനുവദിക്കാതെ ഇരിക്കുക</string> | ||||
|     <string name="description_select_enable">ഡിസ്ക്രിപ്ഷനിലെ ടെക്സ്റ്റ് സെലക്ട് ചെയ്യാൻ അനുവദിക്കുക</string> | ||||
|     <string name="loading_channel_details">ചാനൽ വിശദാംശങ്ങൾ ലോഡ് ചെയ്യുന്നു…</string> | ||||
|     <string name="error_show_channel_details">ചാനൽ വിശദാംശങ്ങൾ കാണിക്കുന്നതിൽ പിശക് സംഭവിച്ചു</string> | ||||
|     <string name="off">ഓഫ്</string> | ||||
|     <string name="on">ഓൺ</string> | ||||
|     <string name="open_website_license">വെബ്സൈറ്റ് തുറക്കുക</string> | ||||
|   | ||||
| @@ -652,14 +652,12 @@ | ||||
|         <item quantity="one">Slettet én nedlastning</item> | ||||
|         <item quantity="other">Slettet %1$s nedlastninger</item> | ||||
|     </plurals> | ||||
|     <string name="loading_channel_details">Laster inn kanaldetaljer …</string> | ||||
|     <string name="remote_search_suggestions">Søkeforslag annensteds fra</string> | ||||
|     <string name="local_search_suggestions">Lokale søkeforslag</string> | ||||
|     <string name="mark_as_watched">Marker som sett</string> | ||||
|     <string name="start_main_player_fullscreen_summary">Ikke start videoer i minispilleren, men gå til fullskjermsmodus direkte, hvis auto-rotering er låst. Du har fremdeles tilgang til minispilleren ved å avslutte fullskjermsvisning.</string> | ||||
|     <string name="show_image_indicators_summary">Vis Picasso-fargede bånd på toppen av bilder for å indikere kilde: Rød for nettverk, blå for disk, og grønn for minne</string> | ||||
|     <string name="detail_heart_img_view_description">Hjertemerket av skaper</string> | ||||
|     <string name="error_show_channel_details">Kunne ikke vise kanaldetaljer</string> | ||||
|     <string name="show_image_indicators_title">Vis bildeindikatorer</string> | ||||
|     <string name="main_page_content_swipe_remove">Dra elementer for å fjerne dem</string> | ||||
|     <string name="start_main_player_fullscreen_title">Start hovedspiller i fullskjerm</string> | ||||
|   | ||||
| @@ -641,8 +641,6 @@ | ||||
|     <string name="downloads_storage_use_saf_summary_api_19">Het \'Storage Access Framework\' is niet ondersteund op Android KitKat en lager</string> | ||||
|     <string name="downloads_storage_ask_summary_no_saf_notice">U wordt gevraagd waar elk bestand wordt opgeslagen</string> | ||||
|     <string name="no_dir_yet">Nog geen downloadfolder gekozen, kies de standaard downloadfolder</string> | ||||
|     <string name="loading_channel_details">Kanaaldetails laden…</string> | ||||
|     <string name="error_show_channel_details">Error tijdens tonen van kanaal details</string> | ||||
|     <string name="detail_heart_img_view_description">Geliefd door de maker</string> | ||||
|     <string name="dont_show">Niet laten zien</string> | ||||
|     <string name="low_quality_smaller">Lage kwaliteit (kleiner)</string> | ||||
|   | ||||
| @@ -663,8 +663,6 @@ | ||||
|     <string name="dont_show">Nie pokazuj</string> | ||||
|     <string name="detail_heart_img_view_description">Serduszko od twórcy</string> | ||||
|     <string name="mark_as_watched">Oznacz jako obejrzane</string> | ||||
|     <string name="loading_channel_details">Ładowanie szczegółów kanału…</string> | ||||
|     <string name="error_show_channel_details">Błąd podczas wyświetlania szczegółów kanału</string> | ||||
|     <string name="show_image_indicators_summary">Pokazuj kolorowe wstążki Picasso nad obrazami wskazujące ich źródło: czerwone dla sieci, niebieskie dla dysku i zielone dla pamięci</string> | ||||
|     <string name="show_image_indicators_title">Pokazuj wskaźniki obrazu</string> | ||||
|     <string name="remote_search_suggestions">Zdalne podpowiedzi wyszukiwania</string> | ||||
|   | ||||
| @@ -649,8 +649,6 @@ | ||||
|     <string name="mark_as_watched">Marcar como visto</string> | ||||
|     <string name="detail_heart_img_view_description">Curtido pelo criador</string> | ||||
|     <string name="show_image_indicators_summary">Exibir fitas coloridas no topo das imagens indicando sua fonte: vermelho para rede, azul para disco e verde para memória</string> | ||||
|     <string name="loading_channel_details">Carregando detalhes do canal…</string> | ||||
|     <string name="error_show_channel_details">Erro ao exibir detalhes do canal</string> | ||||
|     <plurals name="deleted_downloads_toast"> | ||||
|         <item quantity="one">%1$s download apagado</item> | ||||
|         <item quantity="other">%1$s downloads apagados</item> | ||||
|   | ||||
| @@ -648,8 +648,6 @@ | ||||
|     <string name="no_dir_yet">Ainda não foi definida uma pasta de descarregamento, escolha agora a pasta de descarregamento padrão</string> | ||||
|     <string name="comments_are_disabled">Comentários estão desativados</string> | ||||
|     <string name="mark_as_watched">Marcar como visto</string> | ||||
|     <string name="loading_channel_details">A carregar detalhes do canal…</string> | ||||
|     <string name="error_show_channel_details">Erro em Mostrar detalhes do canal</string> | ||||
|     <string name="show_image_indicators_summary">Mostrar fitas coloridas de Picasso em cima das imagens que indicam a sua fonte: vermelho para rede, azul para disco e verde para memória</string> | ||||
|     <string name="show_image_indicators_title">Mostrar indicadores de imagem</string> | ||||
|     <string name="remote_search_suggestions">Sugestões de pesquisa remotas</string> | ||||
|   | ||||
| @@ -648,8 +648,6 @@ | ||||
|     <string name="low_quality_smaller">Baixa qualidade (menor)</string> | ||||
|     <string name="high_quality_larger">Alta qualidade (maior)</string> | ||||
|     <string name="comments_are_disabled">Comentários estão desativados</string> | ||||
|     <string name="loading_channel_details">A carregar detalhes do canal…</string> | ||||
|     <string name="error_show_channel_details">Erro em Mostrar detalhes do canal</string> | ||||
|     <string name="show_image_indicators_summary">Mostrar fitas coloridas de Picasso em cima das imagens que indicam a sua fonte: vermelho para rede, azul para disco e verde para memória</string> | ||||
|     <string name="show_image_indicators_title">Mostrar indicadores de imagem</string> | ||||
|     <string name="remote_search_suggestions">Sugestões de pesquisa remotas</string> | ||||
|   | ||||
| @@ -619,8 +619,6 @@ | ||||
|     <string name="enqueued_next">Următorul pus în coadă</string> | ||||
|     <string name="enqueue_next_stream">Adăugați în coadă pe următorul</string> | ||||
|     <string name="mark_as_watched">Marcare ca vizionat</string> | ||||
|     <string name="loading_channel_details">Încărcare Detalii canal…</string> | ||||
|     <string name="error_show_channel_details">Eroare la Afișare detalii canal</string> | ||||
|     <string name="off">Oprit</string> | ||||
|     <string name="on">Pornit</string> | ||||
|     <string name="tablet_mode_title">Mod tabletă</string> | ||||
|   | ||||
| @@ -660,8 +660,6 @@ | ||||
|     <string name="seekbar_preview_thumbnail_title">Миниатюра над полосой прокрутки</string> | ||||
|     <string name="detail_heart_img_view_description">Автору видео понравилось это</string> | ||||
|     <string name="mark_as_watched">Пометить как проигранные</string> | ||||
|     <string name="error_show_channel_details">Не удалось отобразить сведения о канале</string> | ||||
|     <string name="loading_channel_details">Загрузка сведений о канале…</string> | ||||
|     <string name="show_image_indicators_summary">Picasso: указать цветом источник изображений (красный — сеть, синий — диск, зелёный — память)</string> | ||||
|     <string name="show_image_indicators_title">Цветные метки на изображениях</string> | ||||
|     <string name="remote_search_suggestions">Серверные предложения поиска</string> | ||||
|   | ||||
| @@ -648,8 +648,6 @@ | ||||
|     <string name="comments_are_disabled">Sos cummentos sunt disabilitados</string> | ||||
|     <string name="detail_heart_img_view_description">Su creadore b\'at postu unu coro</string> | ||||
|     <string name="mark_as_watched">Marca comente pompiadu</string> | ||||
|     <string name="loading_channel_details">Carrighende sos detàllios de su canale…</string> | ||||
|     <string name="error_show_channel_details">Errore in sa visualizatzione de sos detàllios de su canale</string> | ||||
|     <string name="show_image_indicators_summary">Ammustra sos listrones colorados de Picasso in subra de sas immàgines chi indicant sa fonte issoro: ruja pro sa retze, biaita pro su discu e birde pro sa memòria</string> | ||||
|     <string name="show_image_indicators_title">Ammustra sos indicadores de immàgines</string> | ||||
|     <string name="remote_search_suggestions">Impòsitos de chirca remota</string> | ||||
|   | ||||
| @@ -648,8 +648,6 @@ | ||||
|     <string name="downloads_storage_ask_summary_no_saf_notice">Pri každom sťahovaní sa zobrazí výzva kam uložiť súbor</string> | ||||
|     <string name="no_dir_yet">Nie je nastavený adresár na sťahovanie, nastavte ho teraz</string> | ||||
|     <string name="mark_as_watched">Označiť ako pozorované</string> | ||||
|     <string name="loading_channel_details">Načítavanie podrobností o kanáli…</string> | ||||
|     <string name="error_show_channel_details">Chyba pri zobrazení podrobností kanála</string> | ||||
|     <string name="off">Vypnuté</string> | ||||
|     <string name="on">Zapnuté</string> | ||||
|     <string name="tablet_mode_title">Režim tabletu</string> | ||||
|   | ||||
| @@ -647,8 +647,6 @@ | ||||
|     <string name="comments_are_disabled">Fallooyinka waa laxidhay</string> | ||||
|     <string name="detail_heart_img_view_description">Kahelay soosaaraha</string> | ||||
|     <string name="mark_as_watched">Waan daawaday</string> | ||||
|     <string name="error_show_channel_details">Khalad ayaa ka dhacay Faahfaahinta Kanaalka</string> | ||||
|     <string name="loading_channel_details">Soo kicinaya faahfaahinta Kanaalka…</string> | ||||
|     <string name="show_image_indicators_summary">Soo bandhig shaambado midabka Picasso leh sawirrada dushooda oo tilmaamaya isha laga keenay: guduud waa khadka, buluug waa kaydka gudaha, cagaar waa kaydka K/G</string> | ||||
|     <string name="show_image_indicators_title">Tus tilmaamayaasha sawirka</string> | ||||
|     <string name="remote_search_suggestions">Soojeedinada raadinta banaanka</string> | ||||
|   | ||||
| @@ -647,10 +647,8 @@ | ||||
|     <string name="select_night_theme_toast">Du kan välja det natt-tema du föredrar nedan</string> | ||||
|     <string name="night_theme_summary">Välj det natt-tema du föredrar — %s</string> | ||||
|     <string name="seekbar_preview_thumbnail_title">Sökradens förhandsvisningsminiatyr</string> | ||||
|     <string name="loading_channel_details">Laddar kanaldetaljer…</string> | ||||
|     <string name="show_image_indicators_title">Visa bildindikatorer</string> | ||||
|     <string name="local_search_suggestions">Lokala sökningsförslag</string> | ||||
|     <string name="error_show_channel_details">Kunde inte visa kanaldetaljer</string> | ||||
|     <plurals name="deleted_downloads_toast"> | ||||
|         <item quantity="one">Tog bort %1$s nedladdning</item> | ||||
|         <item quantity="other">Tog bort %1$s nedladdningar</item> | ||||
|   | ||||
| @@ -330,7 +330,6 @@ | ||||
|     <string name="enqueue_next_stream">அடுத்தைச் சாரைபடுத்து</string> | ||||
|     <string name="enqueued_next">அடுத்தது சாரைபடுத்தப்பட்டது</string> | ||||
|     <string name="rename_playlist">மறுபெயரிடு</string> | ||||
|     <string name="loading_channel_details">பதிவுத்தட விவரங்களை ஏற்றுகிறது…</string> | ||||
|     <string name="no_playlist_bookmarked_yet">ஒளிச்சர நூற்குறிகள் இன்னுமில</string> | ||||
|     <string name="unbookmark_playlist">நூற்குறியை நீக்கு</string> | ||||
|     <string name="set_as_playlist_thumbnail">ஒளிச்சர சிறுபடமாக அமை</string> | ||||
| @@ -338,7 +337,6 @@ | ||||
|     <string name="settings_file_replacement_character_title">மாற்றீடு வரியுரு</string> | ||||
|     <string name="playlist_page_summary">ஒளிச்சரப் பக்கம்</string> | ||||
|     <string name="feed_group_show_only_ungrouped_subscriptions">ஒன்றிணைக்கா சந்தாக்களை மட்டும் காட்டு</string> | ||||
|     <string name="error_show_channel_details">பதிவுத்தட விவரங்களைக் காட்டுவதில் பிழை</string> | ||||
|     <string name="import_settings">அமைவையும் இறக்குமதி செய்யவா\?</string> | ||||
|     <string name="start_here_on_background">பின்னணியில் இயங்கத் துவங்கு</string> | ||||
|     <string name="start_here_on_popup"></string> | ||||
|   | ||||
| @@ -648,8 +648,6 @@ | ||||
|     <string name="comments_are_disabled">Yorumlar devre dışı</string> | ||||
|     <string name="detail_heart_img_view_description">Yaratıcısınca kalplendi</string> | ||||
|     <string name="mark_as_watched">İzlendi olarak imle</string> | ||||
|     <string name="loading_channel_details">Kanal Ayrıntıları Yükleniyor…</string> | ||||
|     <string name="error_show_channel_details">Kanal Ayrıntılarını Göstermede Hata</string> | ||||
|     <string name="show_image_indicators_summary">Resimlerin üzerinde kaynaklarını gösteren Picasso renkli şeritler göster: ağ için kırmızı, disk için mavi ve bellek için yeşil</string> | ||||
|     <string name="show_image_indicators_title">Resim göstergelerini göster</string> | ||||
|     <string name="remote_search_suggestions">Uzak arama önerileri</string> | ||||
|   | ||||
| @@ -659,8 +659,6 @@ | ||||
|     <string name="seekbar_preview_thumbnail_title">Мініатюра з попереднім переглядом на повзунку поступу</string> | ||||
|     <string name="detail_heart_img_view_description">Вподобано автором</string> | ||||
|     <string name="mark_as_watched">Позначити переглянутим</string> | ||||
|     <string name="loading_channel_details">Завантаження відомостей про канал…</string> | ||||
|     <string name="error_show_channel_details">Помилка показу відомостей про канал</string> | ||||
|     <string name="show_image_indicators_summary">Показувати кольорові стрічки Пікассо поверх зображень із зазначенням їх джерела: червоний для мережі, синій для диска та зелений для пам’яті</string> | ||||
|     <string name="show_image_indicators_title">Показати індикатори зображень</string> | ||||
|     <string name="remote_search_suggestions">Віддалені пропозиції пошуку</string> | ||||
|   | ||||
| @@ -637,8 +637,6 @@ | ||||
|     <string name="comments_are_disabled">Bình luận đang bị tắt</string> | ||||
|     <string name="detail_heart_img_view_description">Đã được người tạo gắn tim</string> | ||||
|     <string name="mark_as_watched">Đánh dấu là đã xem</string> | ||||
|     <string name="loading_channel_details">Đang tải chi tiết kênh…</string> | ||||
|     <string name="error_show_channel_details">Lỗi tại Hiện chi tiết kênh</string> | ||||
|     <string name="show_image_indicators_summary">Hiện ruy băng được tô màu Picasso ở trên cùng các hình ảnh và chỉ ra nguồn của chúng: đỏ đối với mạng, xanh lam đối với ổ đĩa và xanh lá đối với bộ nhớ</string> | ||||
|     <string name="show_image_indicators_title">Hiện dấu chỉ hình ảnh</string> | ||||
|     <string name="remote_search_suggestions">Đề xuất tìm kiếm trên mạng</string> | ||||
|   | ||||
| @@ -459,7 +459,6 @@ | ||||
|     <string name="error_http_unsupported_range">伺服器唔接受多執行緒下載,請改用 @string/msg_threads = 1 再試下啦</string> | ||||
|     <string name="error_connect_host">連接唔到伺服器</string> | ||||
|     <string name="playlist_page_summary">播放清單頁面</string> | ||||
|     <string name="loading_channel_details">載入緊頻道詳情…</string> | ||||
|     <string name="hold_to_append">撳住就輪候</string> | ||||
|     <string name="error_path_creation">目的地資料夾建立唔到</string> | ||||
|     <string name="error_ssl_exception">建立唔到安全連線</string> | ||||
| @@ -525,7 +524,6 @@ | ||||
|     <string name="detail_heart_img_view_description">創作者畀咗心心</string> | ||||
|     <string name="open_website_license">開啟網站</string> | ||||
|     <string name="off">關</string> | ||||
|     <string name="error_show_channel_details">顯示頻道詳情嘅時候有問題</string> | ||||
|     <string name="metadata_host">主機</string> | ||||
|     <string name="show_hold_to_append_summary">喺影片「詳情:」度撳一下「幕後播」或者「浮面播」個掣嘅時候顯示提示</string> | ||||
|     <string name="title_activity_history">紀錄</string> | ||||
|   | ||||
| @@ -638,8 +638,6 @@ | ||||
|     <string name="seekbar_preview_thumbnail_title">拖動列縮圖預覽</string> | ||||
|     <string name="detail_heart_img_view_description">被創作者加心號</string> | ||||
|     <string name="mark_as_watched">標記為已觀看</string> | ||||
|     <string name="loading_channel_details">正在載入頻道詳細資訊……</string> | ||||
|     <string name="error_show_channel_details">顯示頻道詳細資訊時發生錯誤</string> | ||||
|     <string name="show_image_indicators_summary">在圖片頂部顯示畢卡索彩色絲帶,指示其來源:紅色代表網路、藍色代表磁碟、綠色代表記憶體</string> | ||||
|     <string name="show_image_indicators_title">顯示圖片指示器</string> | ||||
|     <string name="remote_search_suggestions">遠端搜尋建議</string> | ||||
|   | ||||
| @@ -405,6 +405,7 @@ | ||||
|     <string name="enqueued_next">Enqueued next</string> | ||||
|     <string name="start_here_on_background">Start playing in the background</string> | ||||
|     <string name="start_here_on_popup">Start playing in a popup</string> | ||||
|     <string name="loading_stream_details">Loading stream details…</string> | ||||
|     <!-- Drawer --> | ||||
|     <string name="drawer_open">Open Drawer</string> | ||||
|     <string name="drawer_close">Close Drawer</string> | ||||
| @@ -716,9 +717,6 @@ | ||||
|     <string name="tablet_mode_title">Tablet mode</string> | ||||
|     <string name="on">On</string> | ||||
|     <string name="off">Off</string> | ||||
|     <!-- Show Channel Details --> | ||||
|     <string name="error_show_channel_details">Error at Show Channel Details</string> | ||||
|     <string name="loading_channel_details">Loading Channel Details…</string> | ||||
|     <!-- Progressive Load Interval --> | ||||
|     <string name="progressive_load_interval_default">ExoPlayer default</string> | ||||
| </resources> | ||||
		Reference in New Issue
	
	Block a user
	 litetex
					litetex