Merge pull request #2530 from TeamNewPipe/release_v0.17.1

Release v0.17.1
This commit is contained in:
Christian Schabesberger 2019-08-22 11:21:06 +02:00 committed by GitHub
commit 670a95a01d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
91 changed files with 1936 additions and 839 deletions

1
.github/FUNDING.yml vendored Normal file
View File

@ -0,0 +1 @@
liberapay: TeamNewPipe

View File

@ -8,8 +8,8 @@ android {
applicationId "org.schabi.newpipe"
minSdkVersion 19
targetSdkVersion 28
versionCode 750
versionName "0.17.0"
versionCode 760
versionName "0.17.1"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
@ -57,7 +57,7 @@ dependencies {
exclude module: 'support-annotations'
})
implementation 'com.github.TeamNewPipe:NewPipeExtractor:5f65788a2f89e'
implementation 'com.github.teamnewpipe:NewPipeExtractor:430da57350c587828'
testImplementation 'junit:junit:4.12'
testImplementation 'org.mockito:mockito-core:2.23.0'

View File

@ -164,7 +164,7 @@ public class Downloader implements org.schabi.newpipe.extractor.Downloader {
final ResponseBody body = response.body();
if (response.code() == 429) {
throw new ReCaptchaException("reCaptcha Challenge requested");
throw new ReCaptchaException("reCaptcha Challenge requested", siteUrl);
}
if (body == null) {
@ -214,7 +214,7 @@ public class Downloader implements org.schabi.newpipe.extractor.Downloader {
final ResponseBody body = response.body();
if (response.code() == 429) {
throw new ReCaptchaException("reCaptcha Challenge requested");
throw new ReCaptchaException("reCaptcha Challenge requested", siteUrl);
}
if (body == null) {
@ -268,7 +268,7 @@ public class Downloader implements org.schabi.newpipe.extractor.Downloader {
final ResponseBody body = response.body();
if (response.code() == 429) {
throw new ReCaptchaException("reCaptcha Challenge requested");
throw new ReCaptchaException("reCaptcha Challenge requested", siteUrl);
}
if (body == null) {

View File

@ -60,6 +60,7 @@ import org.schabi.newpipe.report.ErrorActivity;
import org.schabi.newpipe.util.Constants;
import org.schabi.newpipe.util.KioskTranslator;
import org.schabi.newpipe.util.NavigationHelper;
import org.schabi.newpipe.util.PermissionHelper;
import org.schabi.newpipe.util.ServiceHelper;
import org.schabi.newpipe.util.StateSaver;
import org.schabi.newpipe.util.ThemeHelper;
@ -421,6 +422,17 @@ public class MainActivity extends AppCompatActivity {
return;
}
}
switch (requestCode) {
case PermissionHelper.DOWNLOADS_REQUEST_CODE:
NavigationHelper.openDownloads(this);
break;
case PermissionHelper.DOWNLOAD_DIALOG_REQUEST_CODE:
Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.fragment_holder);
if (fragment instanceof VideoDetailFragment) {
((VideoDetailFragment) fragment).openDownloadDialog();
}
break;
}
}
/**

View File

@ -37,15 +37,24 @@ import android.webkit.WebViewClient;
*/
public class ReCaptchaActivity extends AppCompatActivity {
public static final int RECAPTCHA_REQUEST = 10;
public static final String RECAPTCHA_URL_EXTRA = "recaptcha_url_extra";
public static final String TAG = ReCaptchaActivity.class.toString();
public static final String YT_URL = "https://www.youtube.com";
private String url;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recaptcha);
url = getIntent().getStringExtra(RECAPTCHA_URL_EXTRA);
if (url == null || url.isEmpty()) {
url = YT_URL;
}
// Set return to Cancel by default
setResult(RESULT_CANCELED);
@ -73,15 +82,12 @@ public class ReCaptchaActivity extends AppCompatActivity {
myWebView.clearHistory();
android.webkit.CookieManager cookieManager = CookieManager.getInstance();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
cookieManager.removeAllCookies(new ValueCallback<Boolean>() {
@Override
public void onReceiveValue(Boolean aBoolean) {}
});
cookieManager.removeAllCookies(aBoolean -> {});
} else {
cookieManager.removeAllCookie();
}
myWebView.loadUrl(YT_URL);
myWebView.loadUrl(url);
}
private class ReCaptchaWebViewClient extends WebViewClient {

View File

@ -74,10 +74,13 @@ import static org.schabi.newpipe.util.ThemeHelper.resolveResourceIdFromAttr;
*/
public class RouterActivity extends AppCompatActivity {
@State protected int currentServiceId = -1;
@State
protected int currentServiceId = -1;
private StreamingService currentService;
@State protected LinkType currentLinkType;
@State protected int selectedRadioPosition = -1;
@State
protected LinkType currentLinkType;
@State
protected int selectedRadioPosition = -1;
protected int selectedPreviously = -1;
protected String currentUrl;
@ -257,7 +260,7 @@ public class RouterActivity extends AppCompatActivity {
.setNegativeButton(R.string.just_once, dialogButtonsClickListener)
.setPositiveButton(R.string.always, dialogButtonsClickListener)
.setOnDismissListener((dialog) -> {
if(!selectionIsDownload) finish();
if (!selectionIsDownload) finish();
})
.create();
@ -358,13 +361,13 @@ public class RouterActivity extends AppCompatActivity {
positiveButton.setEnabled(state);
}
private void handleText(){
private void handleText() {
String searchString = getIntent().getStringExtra(Intent.EXTRA_TEXT);
int serviceId = getIntent().getIntExtra(Constants.KEY_SERVICE_ID, 0);
Intent intent = new Intent(getThemeWrapperContext(), MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
NavigationHelper.openSearch(getThemeWrapperContext(),serviceId,searchString);
NavigationHelper.openSearch(getThemeWrapperContext(), serviceId, searchString);
}
private void handleChoice(final String selectedChoiceKey) {
@ -382,8 +385,10 @@ public class RouterActivity extends AppCompatActivity {
}
if (selectedChoiceKey.equals(getString(R.string.download_key))) {
selectionIsDownload = true;
openDownloadDialog();
if (PermissionHelper.checkStoragePermissions(this, PermissionHelper.DOWNLOAD_DIALOG_REQUEST_CODE)) {
selectionIsDownload = true;
openDownloadDialog();
}
return;
}
@ -395,7 +400,7 @@ public class RouterActivity extends AppCompatActivity {
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(intent -> {
if(!internalRoute){
if (!internalRoute) {
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
}
@ -445,17 +450,21 @@ public class RouterActivity extends AppCompatActivity {
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
for (int i: grantResults){
if (i == PackageManager.PERMISSION_DENIED){
for (int i : grantResults) {
if (i == PackageManager.PERMISSION_DENIED) {
finish();
return;
}
}
if (requestCode == PermissionHelper.DOWNLOAD_DIALOG_REQUEST_CODE) {
openDownloadDialog();
}
}
private static class AdapterChoiceItem {
final String description, key;
@DrawableRes final int icon;
@DrawableRes
final int icon;
AdapterChoiceItem(String key, String description, int icon) {
this.description = description;
@ -553,7 +562,8 @@ public class RouterActivity extends AppCompatActivity {
final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
boolean isExtVideoEnabled = preferences.getBoolean(getString(R.string.use_external_video_player_key), false);
boolean isExtAudioEnabled = preferences.getBoolean(getString(R.string.use_external_audio_player_key), false);;
boolean isExtAudioEnabled = preferences.getBoolean(getString(R.string.use_external_audio_player_key), false);
;
PlayQueue playQueue;
String playerChoice = choice.playerChoice;

View File

@ -61,6 +61,7 @@ public class DownloadActivity extends AppCompatActivity {
.commit();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
MenuInflater inflater = getMenuInflater();
@ -86,9 +87,4 @@ public class DownloadActivity extends AppCompatActivity {
return super.onOptionsItemSelected(item);
}
}
@Override
public void onRestoreInstanceState(Bundle inState){
super.onRestoreInstanceState(inState);
}
}

View File

@ -8,6 +8,7 @@ import android.content.ServiceConnection;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.IBinder;
import android.preference.PreferenceManager;
import android.support.annotation.IdRes;
@ -33,6 +34,8 @@ import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import com.nononsenseapps.filepicker.Utils;
import org.schabi.newpipe.MainActivity;
import org.schabi.newpipe.R;
import org.schabi.newpipe.extractor.MediaFormat;
@ -45,13 +48,17 @@ import org.schabi.newpipe.extractor.stream.VideoStream;
import org.schabi.newpipe.extractor.utils.Localization;
import org.schabi.newpipe.report.ErrorActivity;
import org.schabi.newpipe.report.UserAction;
import org.schabi.newpipe.settings.NewPipeSettings;
import org.schabi.newpipe.util.FilePickerActivityHelper;
import org.schabi.newpipe.util.FilenameUtils;
import org.schabi.newpipe.util.ListHelper;
import org.schabi.newpipe.util.PermissionHelper;
import org.schabi.newpipe.util.SecondaryStreamHelper;
import org.schabi.newpipe.util.StreamItemAdapter;
import org.schabi.newpipe.util.StreamItemAdapter.StreamSizeWrapper;
import org.schabi.newpipe.util.ThemeHelper;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
@ -72,7 +79,7 @@ import us.shandian.giga.service.MissionState;
public class DownloadDialog extends DialogFragment implements RadioGroup.OnCheckedChangeListener, AdapterView.OnItemSelectedListener {
private static final String TAG = "DialogFragment";
private static final boolean DEBUG = MainActivity.DEBUG;
private static final int REQUEST_DOWNLOAD_PATH_SAF = 0x1230;
private static final int REQUEST_DOWNLOAD_SAVE_AS = 0x1230;
@State
protected StreamInfo currentInfo;
@ -173,6 +180,11 @@ public class DownloadDialog extends DialogFragment implements RadioGroup.OnCheck
if (DEBUG)
Log.d(TAG, "onCreate() called with: savedInstanceState = [" + savedInstanceState + "]");
if (!PermissionHelper.checkStoragePermissions(getActivity(), PermissionHelper.DOWNLOAD_DIALOG_REQUEST_CODE)) {
getDialog().dismiss();
return;
}
context = getContext();
setStyle(STYLE_NO_TITLE, ThemeHelper.getDialogTheme(context));
@ -311,12 +323,18 @@ public class DownloadDialog extends DialogFragment implements RadioGroup.OnCheck
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_DOWNLOAD_PATH_SAF && resultCode == Activity.RESULT_OK) {
if (requestCode == REQUEST_DOWNLOAD_SAVE_AS && resultCode == Activity.RESULT_OK) {
if (data.getData() == null) {
showFailedDialog(R.string.general_error);
return;
}
if (FilePickerActivityHelper.isOwnFileUri(context, data.getData())) {
File file = Utils.getFileForUri(data.getData());
checkSelectedDownload(null, Uri.fromFile(file), file.getName(), StoredFileHelper.DEFAULT_MIME);
return;
}
DocumentFile docFile = DocumentFile.fromSingleUri(context, data.getData());
if (docFile == null) {
showFailedDialog(R.string.general_error);
@ -569,12 +587,27 @@ public class DownloadDialog extends DialogFragment implements RadioGroup.OnCheck
// This part is called if with SAF preferred:
// * older android version running
// * save path not defined (via download settings)
// * the user as checked the "ask where to download" option
// * the user checked the "ask where to download" option
if (!askForSavePath)
Toast.makeText(context, getString(R.string.no_available_dir), Toast.LENGTH_LONG).show();
StoredFileHelper.requestSafWithFileCreation(this, REQUEST_DOWNLOAD_PATH_SAF, filename, mime);
if (NewPipeSettings.useStorageAccessFramework(context)) {
StoredFileHelper.requestSafWithFileCreation(this, REQUEST_DOWNLOAD_SAVE_AS, filename, mime);
} else {
File initialSavePath;
if (radioStreamsGroup.getCheckedRadioButtonId() == R.id.audio_button)
initialSavePath = NewPipeSettings.getDir(Environment.DIRECTORY_MUSIC);
else
initialSavePath = NewPipeSettings.getDir(Environment.DIRECTORY_MOVIES);
initialSavePath = new File(initialSavePath, filename);
startActivityForResult(
FilePickerActivityHelper.chooseFileToSave(context, initialSavePath.getAbsolutePath()),
REQUEST_DOWNLOAD_SAVE_AS
);
}
return;
}
@ -624,6 +657,11 @@ public class DownloadDialog extends DialogFragment implements RadioGroup.OnCheck
// This part is called if:
// * using SAF on older android version
// * save path not defined
// * if the file exists overwrite it, is not necessary ask
if (!storage.existsAsFile() && !storage.create()) {
showFailedDialog(R.string.error_file_creation);
return;
}
continueSelectedDownload(storage);
return;
} else if (targetFile == null) {
@ -728,7 +766,7 @@ public class DownloadDialog extends DialogFragment implements RadioGroup.OnCheck
try {
if (storage.length() > 0) storage.truncate();
} catch (IOException e) {
Log.e(TAG, "failed to overwrite the file: " + storage.getUri().toString(), e);
Log.e(TAG, "failed to truncate the file: " + storage.getUri().toString(), e);
showFailedDialog(R.string.overwrite_failed);
return;
}

View File

@ -180,7 +180,7 @@ public abstract class BaseStateFragment<I> extends BaseFragment implements ViewC
}
if (exception instanceof ReCaptchaException) {
onReCaptchaException();
onReCaptchaException((ReCaptchaException) exception);
return true;
} else if (exception instanceof IOException) {
showError(getString(R.string.network_error), true);
@ -190,11 +190,13 @@ public abstract class BaseStateFragment<I> extends BaseFragment implements ViewC
return false;
}
public void onReCaptchaException() {
public void onReCaptchaException(ReCaptchaException exception) {
if (DEBUG) Log.d(TAG, "onReCaptchaException() called");
Toast.makeText(activity, R.string.recaptcha_request_toast, Toast.LENGTH_LONG).show();
// Starting ReCaptcha Challenge Activity
startActivityForResult(new Intent(activity, ReCaptchaActivity.class), ReCaptchaActivity.RECAPTCHA_REQUEST);
Intent intent = new Intent(activity, ReCaptchaActivity.class);
intent.putExtra(ReCaptchaActivity.RECAPTCHA_URL_EXTRA, exception.getUrl());
startActivityForResult(intent, ReCaptchaActivity.RECAPTCHA_REQUEST);
showError(getString(R.string.recaptcha_request_toast), false);
}

View File

@ -384,7 +384,10 @@ public class VideoDetailFragment
}
break;
case R.id.detail_controls_download:
this.openDownloadDialog();
if (PermissionHelper.checkStoragePermissions(activity,
PermissionHelper.DOWNLOAD_DIALOG_REQUEST_CODE)) {
this.openDownloadDialog();
}
break;
case R.id.detail_uploader_root_layout:
if (TextUtils.isEmpty(currentInfo.getUploaderUrl())) {

View File

@ -64,7 +64,6 @@ public abstract class BaseListFragment<I, N> extends BaseStateFragment<I> implem
@Override
public void onDetach() {
infoListAdapter.dispose();
super.onDetach();
}
@ -97,8 +96,6 @@ public abstract class BaseListFragment<I, N> extends BaseStateFragment<I> implem
}
updateFlags = 0;
}
itemsList.post(infoListAdapter::updateStates);
}
/*//////////////////////////////////////////////////////////////////////////

View File

@ -1,8 +1,11 @@
package org.schabi.newpipe.fragments.list.playlist;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.util.Log;
@ -26,7 +29,9 @@ import org.schabi.newpipe.extractor.NewPipe;
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
import org.schabi.newpipe.extractor.playlist.PlaylistInfo;
import org.schabi.newpipe.extractor.stream.StreamInfoItem;
import org.schabi.newpipe.extractor.stream.StreamType;
import org.schabi.newpipe.fragments.list.BaseListInfoFragment;
import org.schabi.newpipe.info_list.InfoItemDialog;
import org.schabi.newpipe.local.playlist.RemotePlaylistManager;
import org.schabi.newpipe.player.playqueue.PlayQueue;
import org.schabi.newpipe.player.playqueue.PlaylistPlayQueue;
@ -36,6 +41,7 @@ import org.schabi.newpipe.util.ExtractorHelper;
import org.schabi.newpipe.util.ImageDisplayConstants;
import org.schabi.newpipe.util.NavigationHelper;
import org.schabi.newpipe.util.ShareUtils;
import org.schabi.newpipe.util.StreamDialogEntry;
import org.schabi.newpipe.util.ThemeHelper;
import java.util.ArrayList;
@ -130,6 +136,42 @@ public class PlaylistFragment extends BaseListInfoFragment<PlaylistInfo> {
infoListAdapter.useMiniItemVariants(true);
}
private PlayQueue getPlayQueueStartingAt(StreamInfoItem infoItem) {
return getPlayQueue(Math.max(infoListAdapter.getItemsList().indexOf(infoItem), 0));
}
@Override
protected void showStreamDialog(StreamInfoItem item) {
final Context context = getContext();
final Activity activity = getActivity();
if (context == null || context.getResources() == null || activity == null) return;
if (item.getStreamType() == StreamType.AUDIO_STREAM) {
StreamDialogEntry.setEnabledEntries(
StreamDialogEntry.enqueue_on_background,
StreamDialogEntry.start_here_on_background,
StreamDialogEntry.append_playlist,
StreamDialogEntry.share);
} else {
StreamDialogEntry.setEnabledEntries(
StreamDialogEntry.enqueue_on_background,
StreamDialogEntry.enqueue_on_popup,
StreamDialogEntry.start_here_on_background,
StreamDialogEntry.start_here_on_popup,
StreamDialogEntry.append_playlist,
StreamDialogEntry.share);
StreamDialogEntry.start_here_on_popup.setCustomAction(
(fragment, infoItem) -> NavigationHelper.playOnPopupPlayer(context, getPlayQueueStartingAt(infoItem), true));
}
StreamDialogEntry.start_here_on_background.setCustomAction(
(fragment, infoItem) -> NavigationHelper.playOnBackgroundPlayer(context, getPlayQueueStartingAt(infoItem), true));
new InfoItemDialog(activity, item, StreamDialogEntry.getCommands(context), (dialog, which) ->
StreamDialogEntry.clickOn(which, this, item)).show();
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
if (DEBUG) Log.d(TAG, "onCreateOptionsMenu() called with: menu = [" + menu +

View File

@ -2,14 +2,11 @@ package org.schabi.newpipe.info_list;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import com.nostra13.universalimageloader.core.ImageLoader;
import org.schabi.newpipe.database.stream.model.StreamStateEntity;
import org.schabi.newpipe.extractor.InfoItem;
import org.schabi.newpipe.extractor.channel.ChannelInfoItem;
import org.schabi.newpipe.extractor.comments.CommentsInfoItem;
@ -24,6 +21,7 @@ import org.schabi.newpipe.info_list.holder.PlaylistInfoItemHolder;
import org.schabi.newpipe.info_list.holder.PlaylistMiniInfoItemHolder;
import org.schabi.newpipe.info_list.holder.StreamInfoItemHolder;
import org.schabi.newpipe.info_list.holder.StreamMiniInfoItemHolder;
import org.schabi.newpipe.local.history.HistoryRecordManager;
import org.schabi.newpipe.util.OnClickGesture;
/*
@ -61,14 +59,14 @@ public class InfoItemBuilder {
this.context = context;
}
public View buildView(@NonNull ViewGroup parent, @NonNull final InfoItem infoItem, @Nullable StreamStateEntity state) {
return buildView(parent, infoItem, state, false);
public View buildView(@NonNull ViewGroup parent, @NonNull final InfoItem infoItem, final HistoryRecordManager historyRecordManager) {
return buildView(parent, infoItem, historyRecordManager, false);
}
public View buildView(@NonNull ViewGroup parent, @NonNull final InfoItem infoItem,
@Nullable StreamStateEntity state, boolean useMiniVariant) {
final HistoryRecordManager historyRecordManager, boolean useMiniVariant) {
InfoItemHolder holder = holderFromInfoType(parent, infoItem.getInfoType(), useMiniVariant);
holder.updateFromItem(infoItem, state);
holder.updateFromItem(infoItem, historyRecordManager);
return holder.itemView;
}
@ -83,7 +81,6 @@ public class InfoItemBuilder {
case COMMENT:
return useMiniVariant ? new CommentsMiniInfoItemHolder(this, parent) : new CommentsInfoItemHolder(this, parent);
default:
Log.e(TAG, "Trollolo");
throw new RuntimeException("InfoType not expected = " + infoType.name());
}
}

View File

@ -1,6 +1,6 @@
package org.schabi.newpipe.info_list;
import android.app.Activity;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.widget.GridLayoutManager;
@ -27,6 +27,7 @@ import org.schabi.newpipe.info_list.holder.PlaylistMiniInfoItemHolder;
import org.schabi.newpipe.info_list.holder.StreamGridInfoItemHolder;
import org.schabi.newpipe.info_list.holder.StreamInfoItemHolder;
import org.schabi.newpipe.info_list.holder.StreamMiniInfoItemHolder;
import org.schabi.newpipe.local.history.HistoryRecordManager;
import org.schabi.newpipe.util.FallbackViewHolder;
import org.schabi.newpipe.util.OnClickGesture;
@ -53,7 +54,7 @@ import java.util.List;
* along with NewPipe. If not, see <http://www.gnu.org/licenses/>.
*/
public class InfoListAdapter extends StateObjectsListAdapter {
public class InfoListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private static final String TAG = InfoListAdapter.class.getSimpleName();
private static final boolean DEBUG = false;
@ -74,6 +75,8 @@ public class InfoListAdapter extends StateObjectsListAdapter {
private final InfoItemBuilder infoItemBuilder;
private final ArrayList<InfoItem> infoItemList;
private final HistoryRecordManager recordManager;
private boolean useMiniVariant = false;
private boolean useGridVariant = false;
private boolean showFooter = false;
@ -89,9 +92,9 @@ public class InfoListAdapter extends StateObjectsListAdapter {
}
}
public InfoListAdapter(Activity a) {
super(a.getApplicationContext());
infoItemBuilder = new InfoItemBuilder(a);
public InfoListAdapter(Context context) {
this.recordManager = new HistoryRecordManager(context);
infoItemBuilder = new InfoItemBuilder(context);
infoItemList = new ArrayList<>();
}
@ -120,63 +123,52 @@ public class InfoListAdapter extends StateObjectsListAdapter {
}
public void addInfoItemList(@Nullable final List<InfoItem> data) {
if (data != null) {
loadStates(data, infoItemList.size(), () -> addInfoItemListImpl(data));
}
}
private void addInfoItemListImpl(@NonNull List<InfoItem> data) {
if (DEBUG) {
Log.d(TAG, "addInfoItemList() before > infoItemList.size() = " + infoItemList.size() + ", data.size() = " + data.size());
if (data == null) {
return;
}
if (DEBUG) Log.d(TAG, "addInfoItemList() before > infoItemList.size() = " +
infoItemList.size() + ", data.size() = " + data.size());
int offsetStart = sizeConsideringHeaderOffset();
infoItemList.addAll(data);
if (DEBUG) {
Log.d(TAG, "addInfoItemList() after > offsetStart = " + offsetStart + ", infoItemList.size() = " + infoItemList.size() + ", header = " + header + ", footer = " + footer + ", showFooter = " + showFooter);
}
if (DEBUG) Log.d(TAG, "addInfoItemList() after > offsetStart = " + offsetStart +
", infoItemList.size() = " + infoItemList.size() +
", header = " + header + ", footer = " + footer +
", showFooter = " + showFooter);
notifyItemRangeInserted(offsetStart, data.size());
if (footer != null && showFooter) {
int footerNow = sizeConsideringHeaderOffset();
notifyItemMoved(offsetStart, footerNow);
if (DEBUG) Log.d(TAG, "addInfoItemList() footer from " + offsetStart + " to " + footerNow);
if (DEBUG) Log.d(TAG, "addInfoItemList() footer from " + offsetStart +
" to " + footerNow);
}
}
public void addInfoItem(@Nullable InfoItem data) {
if (data != null) {
loadState(data, infoItemList.size(), () -> addInfoItemImpl(data));
}
}
private void addInfoItemImpl(@NonNull InfoItem data) {
if (DEBUG) {
Log.d(TAG, "addInfoItem() before > infoItemList.size() = " + infoItemList.size() + ", thread = " + Thread.currentThread());
if (data == null) {
return;
}
if (DEBUG) Log.d(TAG, "addInfoItem() before > infoItemList.size() = " +
infoItemList.size() + ", thread = " + Thread.currentThread());
int positionInserted = sizeConsideringHeaderOffset();
infoItemList.add(data);
if (DEBUG) {
Log.d(TAG, "addInfoItem() after > position = " + positionInserted + ", infoItemList.size() = " + infoItemList.size() + ", header = " + header + ", footer = " + footer + ", showFooter = " + showFooter);
}
if (DEBUG) Log.d(TAG, "addInfoItem() after > position = " + positionInserted +
", infoItemList.size() = " + infoItemList.size() +
", header = " + header + ", footer = " + footer +
", showFooter = " + showFooter);
notifyItemInserted(positionInserted);
if (footer != null && showFooter) {
int footerNow = sizeConsideringHeaderOffset();
notifyItemMoved(positionInserted, footerNow);
if (DEBUG) Log.d(TAG, "addInfoItem() footer from " + positionInserted + " to " + footerNow);
}
}
public void updateStates() {
if (!infoItemList.isEmpty()) {
updateAllStates(infoItemList);
if (DEBUG) Log.d(TAG, "addInfoItem() footer from " + positionInserted +
" to " + footerNow);
}
}
@ -185,7 +177,6 @@ public class InfoListAdapter extends StateObjectsListAdapter {
return;
}
infoItemList.clear();
clearStates();
notifyDataSetChanged();
}
@ -254,7 +245,6 @@ public class InfoListAdapter extends StateObjectsListAdapter {
case COMMENT:
return useMiniVariant ? MINI_COMMENT_HOLDER_TYPE : COMMENT_HOLDER_TYPE;
default:
Log.e(TAG, "Trollolo");
return -1;
}
}
@ -292,7 +282,6 @@ public class InfoListAdapter extends StateObjectsListAdapter {
case COMMENT_HOLDER_TYPE:
return new CommentsInfoItemHolder(infoItemBuilder, parent);
default:
Log.e(TAG, "Trollolo");
return new FallbackViewHolder(new View(parent.getContext()));
}
}
@ -304,7 +293,7 @@ public class InfoListAdapter extends StateObjectsListAdapter {
// If header isn't null, offset the items by -1
if (header != null) position--;
((InfoItemHolder) holder).updateFromItem(infoItemList.get(position), getState(position));
((InfoItemHolder) holder).updateFromItem(infoItemList.get(position), recordManager);
} else if (holder instanceof HFHolder && position == 0 && header != null) {
((HFHolder) holder).view = header;
} else if (holder instanceof HFHolder && position == sizeConsideringHeaderOffset() && footer != null && showFooter) {
@ -317,11 +306,9 @@ public class InfoListAdapter extends StateObjectsListAdapter {
if (!payloads.isEmpty() && holder instanceof InfoItemHolder) {
for (Object payload : payloads) {
if (payload instanceof StreamStateEntity) {
((InfoItemHolder) holder).updateState(infoItemList.get(header == null ? position : position - 1),
(StreamStateEntity) payload);
((InfoItemHolder) holder).updateState(infoItemList.get(header == null ? position : position - 1), recordManager);
} else if (payload instanceof Boolean) {
((InfoItemHolder) holder).updateState(infoItemList.get(header == null ? position : position - 1),
null);
((InfoItemHolder) holder).updateState(infoItemList.get(header == null ? position : position - 1), recordManager);
}
}
} else {
@ -329,11 +316,6 @@ public class InfoListAdapter extends StateObjectsListAdapter {
}
}
@Override
protected void onItemStateChanged(int position, @Nullable StreamStateEntity state) {
notifyItemChanged(header == null ? position : position + 1, state != null ? state : false);
}
public GridLayoutManager.SpanSizeLookup getSpanSizeLookup(final int spanCount) {
return new GridLayoutManager.SpanSizeLookup() {
@Override

View File

@ -1,180 +0,0 @@
package org.schabi.newpipe.info_list;
import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.support.annotation.Nullable;
import android.support.v7.widget.RecyclerView;
import android.util.SparseArray;
import org.schabi.newpipe.BuildConfig;
import org.schabi.newpipe.R;
import org.schabi.newpipe.database.LocalItem;
import org.schabi.newpipe.database.stream.model.StreamStateEntity;
import org.schabi.newpipe.extractor.InfoItem;
import org.schabi.newpipe.local.history.HistoryRecordManager;
import org.schabi.newpipe.util.SparseArrayUtils;
import java.util.List;
import java.util.Objects;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
public abstract class StateObjectsListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private final SparseArray<StreamStateEntity> states;
private final HistoryRecordManager recordManager;
private final CompositeDisposable stateLoaders;
private final Context context;
public StateObjectsListAdapter(Context context) {
this.states = new SparseArray<>();
this.recordManager = new HistoryRecordManager(context);
this.context = context;
this.stateLoaders = new CompositeDisposable();
}
@Nullable
public StreamStateEntity getState(int position) {
return states.get(position);
}
protected void clearStates() {
states.clear();
}
private void appendStates(List<StreamStateEntity> statesEntities, int offset) {
for (int i = 0; i < statesEntities.size(); i++) {
final StreamStateEntity state = statesEntities.get(i);
if (state != null) {
states.append(offset + i, state);
}
}
}
private void appendState(StreamStateEntity statesEntity, int offset) {
if (statesEntity != null) {
states.append(offset, statesEntity);
}
}
protected void removeState(int index) {
states.remove(index);
}
protected void moveState(int from, int to) {
final StreamStateEntity item = states.get(from);
if (from < to) {
SparseArrayUtils.shiftItemsDown(states, from, to);
} else {
SparseArrayUtils.shiftItemsUp(states, to, from);
}
states.put(to, item);
}
protected void loadStates(List<InfoItem> list, int offset, Runnable callback) {
if (isPlaybackStatesVisible()) {
List<StreamStateEntity> streamStateEntities = null;
try {
streamStateEntities = recordManager.loadStreamStateBatch(list).blockingGet();
} catch (Exception e) {
if (BuildConfig.DEBUG) e.printStackTrace();
}
if(streamStateEntities != null) appendStates(streamStateEntities, offset);
callback.run();
} else {
callback.run();
}
}
protected void loadState(InfoItem item, int offset, Runnable callback) {
if (isPlaybackStatesVisible()) {
StreamStateEntity[] streamStateEntities = null;
try {
streamStateEntities = recordManager.loadStreamState(item).blockingGet();
} catch (Exception e) {
if (BuildConfig.DEBUG) e.printStackTrace();
}
if(streamStateEntities != null && streamStateEntities.length > 0) appendState(streamStateEntities[0], offset);
callback.run();
} else {
callback.run();
}
}
protected void loadStatesForLocal(List<? extends LocalItem> list, int offset, Runnable callback) {
if (isPlaybackStatesVisible()) {
List<StreamStateEntity> streamStateEntities = null;
try {
streamStateEntities = recordManager.loadLocalStreamStateBatch(list).blockingGet();
} catch (Exception e) {
if (BuildConfig.DEBUG) e.printStackTrace();
}
if(streamStateEntities != null) appendStates(streamStateEntities, offset);
callback.run();
} else {
callback.run();
}
}
private void processStatesUpdates(List<StreamStateEntity> streamStateEntities) {
for (int i = 0; i < streamStateEntities.size(); i++) {
final StreamStateEntity newState = streamStateEntities.get(i);
if (!Objects.equals(states.get(i), newState)) {
if (newState == null) {
states.remove(i);
} else {
states.put(i, newState);
}
onItemStateChanged(i, newState);
}
}
}
protected void updateAllStates(List<InfoItem> list) {
if (isPlaybackStatesVisible()) {
stateLoaders.add(
recordManager.loadStreamStateBatch(list)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(this::processStatesUpdates, throwable -> {
if (BuildConfig.DEBUG) throwable.printStackTrace();
})
);
} else {
final int[] positions = SparseArrayUtils.getKeys(states);
states.clear();
for (int pos : positions) onItemStateChanged(pos, null);
}
}
protected void updateAllLocalStates(List<? extends LocalItem> list) {
if (isPlaybackStatesVisible()) {
stateLoaders.add(
recordManager.loadLocalStreamStateBatch(list)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(this::processStatesUpdates, throwable -> {
if (BuildConfig.DEBUG) throwable.printStackTrace();
})
);
} else {
final int[] positions = SparseArrayUtils.getKeys(states);
states.clear();
for (int pos : positions) onItemStateChanged(pos, null);
}
}
public void dispose() {
stateLoaders.dispose();
}
protected boolean isPlaybackStatesVisible() {
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
return prefs.getBoolean(context.getString(R.string.enable_watch_history_key), true)
&& prefs.getBoolean(context.getString(R.string.enable_playback_resume_key), true)
&& prefs.getBoolean(context.getString(R.string.enable_playback_state_lists_key), true);
}
protected abstract void onItemStateChanged(int position, @Nullable StreamStateEntity state);
}

View File

@ -1,14 +1,13 @@
package org.schabi.newpipe.info_list.holder;
import android.support.annotation.Nullable;
import android.view.ViewGroup;
import android.widget.TextView;
import org.schabi.newpipe.R;
import org.schabi.newpipe.database.stream.model.StreamStateEntity;
import org.schabi.newpipe.extractor.InfoItem;
import org.schabi.newpipe.extractor.channel.ChannelInfoItem;
import org.schabi.newpipe.info_list.InfoItemBuilder;
import org.schabi.newpipe.local.history.HistoryRecordManager;
import org.schabi.newpipe.util.Localization;
/*
@ -40,8 +39,8 @@ public class ChannelInfoItemHolder extends ChannelMiniInfoItemHolder {
}
@Override
public void updateFromItem(final InfoItem infoItem, @Nullable final StreamStateEntity state) {
super.updateFromItem(infoItem, state);
public void updateFromItem(final InfoItem infoItem, final HistoryRecordManager historyRecordManager) {
super.updateFromItem(infoItem, historyRecordManager);
if (!(infoItem instanceof ChannelInfoItem)) return;
final ChannelInfoItem item = (ChannelInfoItem) infoItem;

View File

@ -1,14 +1,13 @@
package org.schabi.newpipe.info_list.holder;
import android.support.annotation.Nullable;
import android.view.ViewGroup;
import android.widget.TextView;
import org.schabi.newpipe.R;
import org.schabi.newpipe.database.stream.model.StreamStateEntity;
import org.schabi.newpipe.extractor.InfoItem;
import org.schabi.newpipe.extractor.channel.ChannelInfoItem;
import org.schabi.newpipe.info_list.InfoItemBuilder;
import org.schabi.newpipe.local.history.HistoryRecordManager;
import org.schabi.newpipe.util.ImageDisplayConstants;
import org.schabi.newpipe.util.Localization;
@ -32,7 +31,7 @@ public class ChannelMiniInfoItemHolder extends InfoItemHolder {
}
@Override
public void updateFromItem(final InfoItem infoItem, @Nullable final StreamStateEntity state) {
public void updateFromItem(final InfoItem infoItem, final HistoryRecordManager historyRecordManager) {
if (!(infoItem instanceof ChannelInfoItem)) return;
final ChannelInfoItem item = (ChannelInfoItem) infoItem;

View File

@ -1,14 +1,13 @@
package org.schabi.newpipe.info_list.holder;
import android.support.annotation.Nullable;
import android.view.ViewGroup;
import android.widget.TextView;
import org.schabi.newpipe.R;
import org.schabi.newpipe.database.stream.model.StreamStateEntity;
import org.schabi.newpipe.extractor.InfoItem;
import org.schabi.newpipe.extractor.comments.CommentsInfoItem;
import org.schabi.newpipe.info_list.InfoItemBuilder;
import org.schabi.newpipe.local.history.HistoryRecordManager;
/*
* Created by Christian Schabesberger on 12.02.17.
@ -41,8 +40,8 @@ public class CommentsInfoItemHolder extends CommentsMiniInfoItemHolder {
}
@Override
public void updateFromItem(final InfoItem infoItem, @Nullable final StreamStateEntity state) {
super.updateFromItem(infoItem, state);
public void updateFromItem(final InfoItem infoItem, final HistoryRecordManager historyRecordManager) {
super.updateFromItem(infoItem, historyRecordManager);
if (!(infoItem instanceof CommentsInfoItem)) return;
final CommentsInfoItem item = (CommentsInfoItem) infoItem;

View File

@ -1,18 +1,16 @@
package org.schabi.newpipe.info_list.holder;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.text.util.Linkify;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import org.jsoup.helper.StringUtil;
import org.schabi.newpipe.R;
import org.schabi.newpipe.database.stream.model.StreamStateEntity;
import org.schabi.newpipe.extractor.InfoItem;
import org.schabi.newpipe.extractor.comments.CommentsInfoItem;
import org.schabi.newpipe.info_list.InfoItemBuilder;
import org.schabi.newpipe.local.history.HistoryRecordManager;
import org.schabi.newpipe.report.ErrorActivity;
import org.schabi.newpipe.util.CommentTextOnTouchListener;
import org.schabi.newpipe.util.ImageDisplayConstants;
@ -48,7 +46,7 @@ public class CommentsMiniInfoItemHolder extends InfoItemHolder {
if(hours != null) timestamp += (Integer.parseInt(hours.replace(":", ""))*3600);
if(minutes != null) timestamp += (Integer.parseInt(minutes.replace(":", ""))*60);
if(seconds != null) timestamp += (Integer.parseInt(seconds));
return streamUrl + url.replace(match.group(0), "#timestamp=" + String.valueOf(timestamp));
return streamUrl + url.replace(match.group(0), "#timestamp=" + timestamp);
}
};
@ -67,7 +65,7 @@ public class CommentsMiniInfoItemHolder extends InfoItemHolder {
}
@Override
public void updateFromItem(final InfoItem infoItem, @Nullable final StreamStateEntity state) {
public void updateFromItem(final InfoItem infoItem, final HistoryRecordManager historyRecordManager) {
if (!(infoItem instanceof CommentsInfoItem)) return;
final CommentsInfoItem item = (CommentsInfoItem) infoItem;
@ -76,20 +74,17 @@ public class CommentsMiniInfoItemHolder extends InfoItemHolder {
itemThumbnailView,
ImageDisplayConstants.DISPLAY_THUMBNAIL_OPTIONS);
itemThumbnailView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(StringUtil.isBlank(item.getAuthorEndpoint())) return;
try {
final AppCompatActivity activity = (AppCompatActivity) itemBuilder.getContext();
NavigationHelper.openChannelFragment(
activity.getSupportFragmentManager(),
item.getServiceId(),
item.getAuthorEndpoint(),
item.getAuthorName());
} catch (Exception e) {
ErrorActivity.reportUiError((AppCompatActivity) itemBuilder.getContext(), e);
}
itemThumbnailView.setOnClickListener(view -> {
if(StringUtil.isBlank(item.getAuthorEndpoint())) return;
try {
final AppCompatActivity activity = (AppCompatActivity) itemBuilder.getContext();
NavigationHelper.openChannelFragment(
activity.getSupportFragmentManager(),
item.getServiceId(),
item.getAuthorEndpoint(),
item.getAuthorName());
} catch (Exception e) {
ErrorActivity.reportUiError((AppCompatActivity) itemBuilder.getContext(), e);
}
});
@ -101,7 +96,7 @@ public class CommentsMiniInfoItemHolder extends InfoItemHolder {
itemContentView.setOnTouchListener(CommentTextOnTouchListener.INSTANCE);
if (itemContentView.getLineCount() == 0) {
itemContentView.post(() -> ellipsize());
itemContentView.post(this::ellipsize);
} else {
ellipsize();
}

View File

@ -1,13 +1,12 @@
package org.schabi.newpipe.info_list.holder;
import android.support.annotation.Nullable;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import org.schabi.newpipe.database.stream.model.StreamStateEntity;
import org.schabi.newpipe.extractor.InfoItem;
import org.schabi.newpipe.info_list.InfoItemBuilder;
import org.schabi.newpipe.local.history.HistoryRecordManager;
/*
* Created by Christian Schabesberger on 12.02.17.
@ -37,8 +36,8 @@ public abstract class InfoItemHolder extends RecyclerView.ViewHolder {
this.itemBuilder = infoItemBuilder;
}
public abstract void updateFromItem(final InfoItem infoItem, @Nullable final StreamStateEntity state);
public abstract void updateFromItem(final InfoItem infoItem, final HistoryRecordManager historyRecordManager);
public void updateState(final InfoItem infoItem, @Nullable final StreamStateEntity state) {
public void updateState(final InfoItem infoItem, final HistoryRecordManager historyRecordManager) {
}
}

View File

@ -1,15 +1,14 @@
package org.schabi.newpipe.info_list.holder;
import android.support.annotation.Nullable;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import org.schabi.newpipe.R;
import org.schabi.newpipe.database.stream.model.StreamStateEntity;
import org.schabi.newpipe.extractor.InfoItem;
import org.schabi.newpipe.extractor.playlist.PlaylistInfoItem;
import org.schabi.newpipe.info_list.InfoItemBuilder;
import org.schabi.newpipe.local.history.HistoryRecordManager;
import org.schabi.newpipe.util.ImageDisplayConstants;
public class PlaylistMiniInfoItemHolder extends InfoItemHolder {
@ -32,7 +31,7 @@ public class PlaylistMiniInfoItemHolder extends InfoItemHolder {
}
@Override
public void updateFromItem(final InfoItem infoItem, @Nullable final StreamStateEntity state) {
public void updateFromItem(final InfoItem infoItem, final HistoryRecordManager historyRecordManager) {
if (!(infoItem instanceof PlaylistInfoItem)) return;
final PlaylistInfoItem item = (PlaylistInfoItem) infoItem;

View File

@ -1,15 +1,14 @@
package org.schabi.newpipe.info_list.holder;
import android.support.annotation.Nullable;
import android.text.TextUtils;
import android.view.ViewGroup;
import android.widget.TextView;
import org.schabi.newpipe.R;
import org.schabi.newpipe.database.stream.model.StreamStateEntity;
import org.schabi.newpipe.extractor.InfoItem;
import org.schabi.newpipe.extractor.stream.StreamInfoItem;
import org.schabi.newpipe.info_list.InfoItemBuilder;
import org.schabi.newpipe.local.history.HistoryRecordManager;
import org.schabi.newpipe.util.Localization;
/*
@ -42,8 +41,8 @@ public class StreamInfoItemHolder extends StreamMiniInfoItemHolder {
}
@Override
public void updateFromItem(final InfoItem infoItem, @Nullable final StreamStateEntity state) {
super.updateFromItem(infoItem, state);
public void updateFromItem(final InfoItem infoItem, final HistoryRecordManager historyRecordManager) {
super.updateFromItem(infoItem, historyRecordManager);
if (!(infoItem instanceof StreamInfoItem)) return;
final StreamInfoItem item = (StreamInfoItem) infoItem;

View File

@ -1,6 +1,5 @@
package org.schabi.newpipe.info_list.holder;
import android.support.annotation.Nullable;
import android.support.v4.content.ContextCompat;
import android.view.View;
import android.view.ViewGroup;
@ -13,6 +12,7 @@ import org.schabi.newpipe.extractor.InfoItem;
import org.schabi.newpipe.extractor.stream.StreamInfoItem;
import org.schabi.newpipe.extractor.stream.StreamType;
import org.schabi.newpipe.info_list.InfoItemBuilder;
import org.schabi.newpipe.local.history.HistoryRecordManager;
import org.schabi.newpipe.util.AnimationUtils;
import org.schabi.newpipe.util.ImageDisplayConstants;
import org.schabi.newpipe.util.Localization;
@ -43,7 +43,7 @@ public class StreamMiniInfoItemHolder extends InfoItemHolder {
}
@Override
public void updateFromItem(final InfoItem infoItem, @Nullable final StreamStateEntity state) {
public void updateFromItem(final InfoItem infoItem, final HistoryRecordManager historyRecordManager) {
if (!(infoItem instanceof StreamInfoItem)) return;
final StreamInfoItem item = (StreamInfoItem) infoItem;
@ -55,10 +55,12 @@ public class StreamMiniInfoItemHolder extends InfoItemHolder {
itemDurationView.setBackgroundColor(ContextCompat.getColor(itemBuilder.getContext(),
R.color.duration_background_color));
itemDurationView.setVisibility(View.VISIBLE);
if (state != null) {
StreamStateEntity state2 = historyRecordManager.loadStreamState(infoItem).blockingGet()[0];
if (state2 != null) {
itemProgressView.setVisibility(View.VISIBLE);
itemProgressView.setMax((int) item.getDuration());
itemProgressView.setProgress((int) TimeUnit.MILLISECONDS.toSeconds(state.getProgressTime()));
itemProgressView.setProgress((int) TimeUnit.MILLISECONDS.toSeconds(state2.getProgressTime()));
} else {
itemProgressView.setVisibility(View.GONE);
}
@ -101,8 +103,10 @@ public class StreamMiniInfoItemHolder extends InfoItemHolder {
}
@Override
public void updateState(final InfoItem infoItem, @Nullable final StreamStateEntity state) {
public void updateState(final InfoItem infoItem, final HistoryRecordManager historyRecordManager) {
final StreamInfoItem item = (StreamInfoItem) infoItem;
StreamStateEntity state = historyRecordManager.loadStreamState(infoItem).blockingGet()[0];
if (state != null && item.getDuration() > 0 && item.getStreamType() != StreamType.LIVE_STREAM) {
itemProgressView.setMax((int) item.getDuration());
if (itemProgressView.getVisibility() == View.VISIBLE) {
@ -130,4 +134,4 @@ public class StreamMiniInfoItemHolder extends InfoItemHolder {
itemView.setLongClickable(false);
itemView.setOnLongClickListener(null);
}
}
}

View File

@ -76,8 +76,6 @@ public abstract class BaseLocalListFragment<I, N> extends BaseStateFragment<I>
}
updateFlags = 0;
}
itemsList.post(itemListAdapter::updateStates);
}
/*//////////////////////////////////////////////////////////////////////////
@ -152,7 +150,6 @@ public abstract class BaseLocalListFragment<I, N> extends BaseStateFragment<I>
public void onDestroyView() {
super.onDestroyView();
itemsList = null;
itemListAdapter.dispose();
itemListAdapter = null;
}

View File

@ -1,6 +1,6 @@
package org.schabi.newpipe.local;
import android.app.Activity;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.widget.GridLayoutManager;
@ -11,7 +11,7 @@ import android.view.ViewGroup;
import org.schabi.newpipe.database.LocalItem;
import org.schabi.newpipe.database.stream.model.StreamStateEntity;
import org.schabi.newpipe.info_list.StateObjectsListAdapter;
import org.schabi.newpipe.local.history.HistoryRecordManager;
import org.schabi.newpipe.local.holder.LocalItemHolder;
import org.schabi.newpipe.local.holder.LocalPlaylistGridItemHolder;
import org.schabi.newpipe.local.holder.LocalPlaylistItemHolder;
@ -49,7 +49,7 @@ import java.util.List;
* along with NewPipe. If not, see <http://www.gnu.org/licenses/>.
*/
public class LocalItemListAdapter extends StateObjectsListAdapter {
public class LocalItemListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private static final String TAG = LocalItemListAdapter.class.getSimpleName();
private static final boolean DEBUG = false;
@ -68,6 +68,7 @@ public class LocalItemListAdapter extends StateObjectsListAdapter {
private final LocalItemBuilder localItemBuilder;
private final ArrayList<LocalItem> localItems;
private final HistoryRecordManager recordManager;
private final DateFormat dateFormat;
private boolean showFooter = false;
@ -75,12 +76,12 @@ public class LocalItemListAdapter extends StateObjectsListAdapter {
private View header = null;
private View footer = null;
public LocalItemListAdapter(Activity activity) {
super(activity.getApplicationContext());
localItemBuilder = new LocalItemBuilder(activity);
public LocalItemListAdapter(Context context) {
recordManager = new HistoryRecordManager(context);
localItemBuilder = new LocalItemBuilder(context);
localItems = new ArrayList<>();
dateFormat = DateFormat.getDateInstance(DateFormat.SHORT,
Localization.getPreferredLocale(activity));
Localization.getPreferredLocale(context));
}
public void setSelectedListener(OnClickGesture<LocalItem> listener) {
@ -92,27 +93,19 @@ public class LocalItemListAdapter extends StateObjectsListAdapter {
}
public void addItems(@Nullable List<? extends LocalItem> data) {
if (data != null) {
loadStatesForLocal(data, localItems.size(), () -> addItemsImpl(data));
}
}
private void addItemsImpl(@NonNull List<? extends LocalItem> data) {
if (DEBUG) {
Log.d(TAG, "addItems() before > localItems.size() = " +
localItems.size() + ", data.size() = " + data.size());
if (data == null) {
return;
}
if (DEBUG) Log.d(TAG, "addItems() before > localItems.size() = " +
localItems.size() + ", data.size() = " + data.size());
int offsetStart = sizeConsideringHeader();
localItems.addAll(data);
if (DEBUG) {
Log.d(TAG, "addItems() after > offsetStart = " + offsetStart +
", localItems.size() = " + localItems.size() +
", header = " + header + ", footer = " + footer +
", showFooter = " + showFooter);
}
if (DEBUG) Log.d(TAG, "addItems() after > offsetStart = " + offsetStart +
", localItems.size() = " + localItems.size() +
", header = " + header + ", footer = " + footer +
", showFooter = " + showFooter);
notifyItemRangeInserted(offsetStart, data.size());
if (footer != null && showFooter) {
@ -124,16 +117,9 @@ public class LocalItemListAdapter extends StateObjectsListAdapter {
}
}
public void updateStates() {
if (!localItems.isEmpty()) {
updateAllLocalStates(localItems);
}
}
public void removeItem(final LocalItem data) {
final int index = localItems.indexOf(data);
localItems.remove(index);
removeState(index);
notifyItemRemoved(index + (header != null ? 1 : 0));
}
@ -145,7 +131,6 @@ public class LocalItemListAdapter extends StateObjectsListAdapter {
if (actualFrom >= localItems.size() || actualTo >= localItems.size()) return false;
localItems.add(actualTo, localItems.remove(actualFrom));
moveState(actualFrom, actualTo);
notifyItemMoved(fromAdapterPosition, toAdapterPosition);
return true;
}
@ -155,7 +140,6 @@ public class LocalItemListAdapter extends StateObjectsListAdapter {
return;
}
localItems.clear();
clearStates();
notifyDataSetChanged();
}
@ -236,8 +220,9 @@ public class LocalItemListAdapter extends StateObjectsListAdapter {
}
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int type) {
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int type) {
if (DEBUG) Log.d(TAG, "onCreateViewHolder() called with: parent = [" +
parent + "], type = [" + type + "]");
switch (type) {
@ -268,7 +253,7 @@ public class LocalItemListAdapter extends StateObjectsListAdapter {
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
if (DEBUG) Log.d(TAG, "onBindViewHolder() called with: holder = [" +
holder.getClass().getSimpleName() + "], position = [" + position + "]");
@ -276,7 +261,7 @@ public class LocalItemListAdapter extends StateObjectsListAdapter {
// If header isn't null, offset the items by -1
if (header != null) position--;
((LocalItemHolder) holder).updateFromItem(localItems.get(position), getState(position), dateFormat);
((LocalItemHolder) holder).updateFromItem(localItems.get(position), recordManager, dateFormat);
} else if (holder instanceof HeaderFooterHolder && position == 0 && header != null) {
((HeaderFooterHolder) holder).view = header;
} else if (holder instanceof HeaderFooterHolder && position == sizeConsideringHeader()
@ -290,11 +275,9 @@ public class LocalItemListAdapter extends StateObjectsListAdapter {
if (!payloads.isEmpty() && holder instanceof LocalItemHolder) {
for (Object payload : payloads) {
if (payload instanceof StreamStateEntity) {
((LocalItemHolder) holder).updateState(localItems.get(header == null ? position : position - 1),
(StreamStateEntity) payload);
((LocalItemHolder) holder).updateState(localItems.get(header == null ? position : position - 1), recordManager);
} else if (payload instanceof Boolean) {
((LocalItemHolder) holder).updateState(localItems.get(header == null ? position : position - 1),
null);
((LocalItemHolder) holder).updateState(localItems.get(header == null ? position : position - 1), recordManager);
}
}
} else {
@ -302,11 +285,6 @@ public class LocalItemListAdapter extends StateObjectsListAdapter {
}
}
@Override
protected void onItemStateChanged(int position, @Nullable StreamStateEntity state) {
notifyItemChanged(header == null ? position : position + 1, state != null ? state : false);
}
public GridLayoutManager.SpanSizeLookup getSpanSizeLookup(final int spanCount) {
return new GridLayoutManager.SpanSizeLookup() {
@Override

View File

@ -1,6 +1,5 @@
package org.schabi.newpipe.local.dialog;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
@ -28,7 +27,7 @@ import java.util.Collections;
import java.util.List;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.disposables.CompositeDisposable;
public final class PlaylistAppendDialog extends PlaylistDialog {
private static final String TAG = PlaylistAppendDialog.class.getCanonicalName();
@ -36,7 +35,7 @@ public final class PlaylistAppendDialog extends PlaylistDialog {
private RecyclerView playlistRecyclerView;
private LocalItemListAdapter playlistAdapter;
private Disposable playlistReactor;
private CompositeDisposable playlistDisposables = new CompositeDisposable();
public static PlaylistAppendDialog fromStreamInfo(final StreamInfo info) {
PlaylistAppendDialog dialog = new PlaylistAppendDialog();
@ -99,9 +98,9 @@ public final class PlaylistAppendDialog extends PlaylistDialog {
final View newPlaylistButton = view.findViewById(R.id.newPlaylist);
newPlaylistButton.setOnClickListener(ignored -> openCreatePlaylistDialog());
playlistReactor = playlistManager.getPlaylists()
playlistDisposables.add(playlistManager.getPlaylists()
.observeOn(AndroidSchedulers.mainThread())
.subscribe(this::onPlaylistsReceived);
.subscribe(this::onPlaylistsReceived));
}
/*//////////////////////////////////////////////////////////////////////////
@ -111,13 +110,12 @@ public final class PlaylistAppendDialog extends PlaylistDialog {
@Override
public void onDestroyView() {
super.onDestroyView();
if (playlistReactor != null) playlistReactor.dispose();
playlistDisposables.dispose();
if (playlistAdapter != null) {
playlistAdapter.dispose();
playlistAdapter.unsetSelectedListener();
}
playlistReactor = null;
playlistDisposables.clear();
playlistRecyclerView = null;
playlistAdapter = null;
}
@ -151,13 +149,12 @@ public final class PlaylistAppendDialog extends PlaylistDialog {
@NonNull List<StreamEntity> streams) {
if (getStreams() == null) return;
@SuppressLint("ShowToast")
final Toast successToast = Toast.makeText(getContext(),
R.string.playlist_add_stream_success, Toast.LENGTH_SHORT);
manager.appendToPlaylist(playlist.uid, streams)
playlistDisposables.add(manager.appendToPlaylist(playlist.uid, streams)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(ignored -> successToast.show());
.subscribe(ignored -> successToast.show()));
getDialog().dismiss();
}

View File

@ -22,6 +22,7 @@ import org.reactivestreams.Subscriber;
import org.reactivestreams.Subscription;
import org.schabi.newpipe.R;
import org.schabi.newpipe.database.LocalItem;
import org.schabi.newpipe.database.playlist.PlaylistStreamEntry;
import org.schabi.newpipe.database.stream.StreamStatisticsEntry;
import org.schabi.newpipe.extractor.stream.StreamInfoItem;
import org.schabi.newpipe.extractor.stream.StreamType;
@ -357,6 +358,10 @@ public class StatisticsPlaylistFragment
startLoading(true);
}
private PlayQueue getPlayQueueStartingAt(StreamStatisticsEntry infoItem) {
return getPlayQueue(Math.max(itemListAdapter.getItemsList().indexOf(infoItem), 0));
}
private void showStreamDialog(final StreamStatisticsEntry item) {
final Context context = getContext();
final Activity activity = getActivity();
@ -379,8 +384,13 @@ public class StatisticsPlaylistFragment
StreamDialogEntry.delete,
StreamDialogEntry.append_playlist,
StreamDialogEntry.share);
StreamDialogEntry.start_here_on_popup.setCustomAction(
(fragment, infoItemDuplicate) -> NavigationHelper.playOnPopupPlayer(context, getPlayQueueStartingAt(item), true));
}
StreamDialogEntry.start_here_on_background.setCustomAction(
(fragment, infoItemDuplicate) -> NavigationHelper.playOnBackgroundPlayer(context, getPlayQueueStartingAt(item), true));
StreamDialogEntry.delete.setCustomAction((fragment, infoItemDuplicate) ->
deleteEntry(Math.max(itemListAdapter.getItemsList().indexOf(item), 0)));

View File

@ -1,13 +1,12 @@
package org.schabi.newpipe.local.holder;
import android.support.annotation.Nullable;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import org.schabi.newpipe.database.LocalItem;
import org.schabi.newpipe.database.stream.model.StreamStateEntity;
import org.schabi.newpipe.local.LocalItemBuilder;
import org.schabi.newpipe.local.history.HistoryRecordManager;
import java.text.DateFormat;
@ -40,8 +39,8 @@ public abstract class LocalItemHolder extends RecyclerView.ViewHolder {
this.itemBuilder = itemBuilder;
}
public abstract void updateFromItem(final LocalItem item, @Nullable final StreamStateEntity state, final DateFormat dateFormat);
public abstract void updateFromItem(final LocalItem item, HistoryRecordManager historyRecordManager, final DateFormat dateFormat);
public void updateState(final LocalItem localItem, @Nullable final StreamStateEntity state) {
public void updateState(final LocalItem localItem, HistoryRecordManager historyRecordManager) {
}
}

View File

@ -1,13 +1,12 @@
package org.schabi.newpipe.local.holder;
import android.support.annotation.Nullable;
import android.view.View;
import android.view.ViewGroup;
import org.schabi.newpipe.database.LocalItem;
import org.schabi.newpipe.database.playlist.PlaylistMetadataEntry;
import org.schabi.newpipe.database.stream.model.StreamStateEntity;
import org.schabi.newpipe.local.LocalItemBuilder;
import org.schabi.newpipe.local.history.HistoryRecordManager;
import org.schabi.newpipe.util.ImageDisplayConstants;
import java.text.DateFormat;
@ -23,7 +22,7 @@ public class LocalPlaylistItemHolder extends PlaylistItemHolder {
}
@Override
public void updateFromItem(final LocalItem localItem, @Nullable final StreamStateEntity state, final DateFormat dateFormat) {
public void updateFromItem(final LocalItem localItem, HistoryRecordManager historyRecordManager, final DateFormat dateFormat) {
if (!(localItem instanceof PlaylistMetadataEntry)) return;
final PlaylistMetadataEntry item = (PlaylistMetadataEntry) localItem;
@ -34,6 +33,6 @@ public class LocalPlaylistItemHolder extends PlaylistItemHolder {
itemBuilder.displayImage(item.thumbnailUrl, itemThumbnailView,
ImageDisplayConstants.DISPLAY_PLAYLIST_OPTIONS);
super.updateFromItem(localItem, state, dateFormat);
super.updateFromItem(localItem, historyRecordManager, dateFormat);
}
}

View File

@ -1,6 +1,5 @@
package org.schabi.newpipe.local.holder;
import android.support.annotation.Nullable;
import android.support.v4.content.ContextCompat;
import android.view.MotionEvent;
import android.view.View;
@ -14,12 +13,14 @@ import org.schabi.newpipe.database.playlist.PlaylistStreamEntry;
import org.schabi.newpipe.database.stream.model.StreamStateEntity;
import org.schabi.newpipe.extractor.NewPipe;
import org.schabi.newpipe.local.LocalItemBuilder;
import org.schabi.newpipe.local.history.HistoryRecordManager;
import org.schabi.newpipe.util.AnimationUtils;
import org.schabi.newpipe.util.ImageDisplayConstants;
import org.schabi.newpipe.util.Localization;
import org.schabi.newpipe.views.AnimatedProgressBar;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.concurrent.TimeUnit;
public class LocalPlaylistStreamItemHolder extends LocalItemHolder {
@ -47,7 +48,7 @@ public class LocalPlaylistStreamItemHolder extends LocalItemHolder {
}
@Override
public void updateFromItem(final LocalItem localItem, @Nullable final StreamStateEntity state, final DateFormat dateFormat) {
public void updateFromItem(final LocalItem localItem, HistoryRecordManager historyRecordManager, final DateFormat dateFormat) {
if (!(localItem instanceof PlaylistStreamEntry)) return;
final PlaylistStreamEntry item = (PlaylistStreamEntry) localItem;
@ -60,6 +61,8 @@ public class LocalPlaylistStreamItemHolder extends LocalItemHolder {
itemDurationView.setBackgroundColor(ContextCompat.getColor(itemBuilder.getContext(),
R.color.duration_background_color));
itemDurationView.setVisibility(View.VISIBLE);
StreamStateEntity state = historyRecordManager.loadLocalStreamStateBatch(new ArrayList<LocalItem>() {{ add(localItem); }}).blockingGet().get(0);
if (state != null) {
itemProgressView.setVisibility(View.VISIBLE);
itemProgressView.setMax((int) item.duration);
@ -94,9 +97,11 @@ public class LocalPlaylistStreamItemHolder extends LocalItemHolder {
}
@Override
public void updateState(LocalItem localItem, @Nullable StreamStateEntity state) {
public void updateState(LocalItem localItem, HistoryRecordManager historyRecordManager) {
if (!(localItem instanceof PlaylistStreamEntry)) return;
final PlaylistStreamEntry item = (PlaylistStreamEntry) localItem;
StreamStateEntity state = historyRecordManager.loadLocalStreamStateBatch(new ArrayList<LocalItem>() {{ add(localItem); }}).blockingGet().get(0);
if (state != null && item.duration > 0) {
itemProgressView.setMax((int) item.duration);
if (itemProgressView.getVisibility() == View.VISIBLE) {

View File

@ -13,12 +13,14 @@ import org.schabi.newpipe.database.stream.StreamStatisticsEntry;
import org.schabi.newpipe.database.stream.model.StreamStateEntity;
import org.schabi.newpipe.extractor.NewPipe;
import org.schabi.newpipe.local.LocalItemBuilder;
import org.schabi.newpipe.local.history.HistoryRecordManager;
import org.schabi.newpipe.util.AnimationUtils;
import org.schabi.newpipe.util.ImageDisplayConstants;
import org.schabi.newpipe.util.Localization;
import org.schabi.newpipe.views.AnimatedProgressBar;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.concurrent.TimeUnit;
/*
@ -76,7 +78,7 @@ public class LocalStatisticStreamItemHolder extends LocalItemHolder {
}
@Override
public void updateFromItem(final LocalItem localItem, @Nullable final StreamStateEntity state, final DateFormat dateFormat) {
public void updateFromItem(final LocalItem localItem, HistoryRecordManager historyRecordManager, final DateFormat dateFormat) {
if (!(localItem instanceof StreamStatisticsEntry)) return;
final StreamStatisticsEntry item = (StreamStatisticsEntry) localItem;
@ -88,6 +90,8 @@ public class LocalStatisticStreamItemHolder extends LocalItemHolder {
itemDurationView.setBackgroundColor(ContextCompat.getColor(itemBuilder.getContext(),
R.color.duration_background_color));
itemDurationView.setVisibility(View.VISIBLE);
StreamStateEntity state = historyRecordManager.loadLocalStreamStateBatch(new ArrayList<LocalItem>() {{ add(localItem); }}).blockingGet().get(0);
if (state != null) {
itemProgressView.setVisibility(View.VISIBLE);
itemProgressView.setMax((int) item.duration);
@ -124,9 +128,11 @@ public class LocalStatisticStreamItemHolder extends LocalItemHolder {
}
@Override
public void updateState(LocalItem localItem, @Nullable StreamStateEntity state) {
public void updateState(LocalItem localItem, HistoryRecordManager historyRecordManager) {
if (!(localItem instanceof StreamStatisticsEntry)) return;
final StreamStatisticsEntry item = (StreamStatisticsEntry) localItem;
StreamStateEntity state = historyRecordManager.loadLocalStreamStateBatch(new ArrayList<LocalItem>() {{ add(localItem); }}).blockingGet().get(0);
if (state != null && item.duration > 0) {
itemProgressView.setMax((int) item.duration);
if (itemProgressView.getVisibility() == View.VISIBLE) {

View File

@ -1,14 +1,13 @@
package org.schabi.newpipe.local.holder;
import android.support.annotation.Nullable;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import org.schabi.newpipe.R;
import org.schabi.newpipe.database.LocalItem;
import org.schabi.newpipe.database.stream.model.StreamStateEntity;
import org.schabi.newpipe.local.LocalItemBuilder;
import org.schabi.newpipe.local.history.HistoryRecordManager;
import java.text.DateFormat;
@ -33,7 +32,7 @@ public abstract class PlaylistItemHolder extends LocalItemHolder {
}
@Override
public void updateFromItem(final LocalItem localItem, @Nullable final StreamStateEntity state, final DateFormat dateFormat) {
public void updateFromItem(final LocalItem localItem, HistoryRecordManager historyRecordManager, final DateFormat dateFormat) {
itemView.setOnClickListener(view -> {
if (itemBuilder.getOnItemSelectedListener() != null) {
itemBuilder.getOnItemSelectedListener().selected(localItem);

View File

@ -1,13 +1,12 @@
package org.schabi.newpipe.local.holder;
import android.support.annotation.Nullable;
import android.view.ViewGroup;
import org.schabi.newpipe.database.LocalItem;
import org.schabi.newpipe.database.playlist.model.PlaylistRemoteEntity;
import org.schabi.newpipe.database.stream.model.StreamStateEntity;
import org.schabi.newpipe.extractor.NewPipe;
import org.schabi.newpipe.local.LocalItemBuilder;
import org.schabi.newpipe.local.history.HistoryRecordManager;
import org.schabi.newpipe.util.ImageDisplayConstants;
import org.schabi.newpipe.util.Localization;
@ -23,7 +22,7 @@ public class RemotePlaylistItemHolder extends PlaylistItemHolder {
}
@Override
public void updateFromItem(final LocalItem localItem, @Nullable final StreamStateEntity state, final DateFormat dateFormat) {
public void updateFromItem(final LocalItem localItem, HistoryRecordManager historyRecordManager, final DateFormat dateFormat) {
if (!(localItem instanceof PlaylistRemoteEntity)) return;
final PlaylistRemoteEntity item = (PlaylistRemoteEntity) localItem;
@ -35,6 +34,6 @@ public class RemotePlaylistItemHolder extends PlaylistItemHolder {
itemBuilder.displayImage(item.getThumbnailUrl(), itemThumbnailView,
ImageDisplayConstants.DISPLAY_PLAYLIST_OPTIONS);
super.updateFromItem(localItem, state, dateFormat);
super.updateFromItem(localItem, historyRecordManager, dateFormat);
}
}

View File

@ -511,6 +511,10 @@ public class LocalPlaylistFragment extends BaseLocalListFragment<List<PlaylistSt
// Utils
//////////////////////////////////////////////////////////////////////////*/
private PlayQueue getPlayQueueStartingAt(PlaylistStreamEntry infoItem) {
return getPlayQueue(Math.max(itemListAdapter.getItemsList().indexOf(infoItem), 0));
}
protected void showStreamItemDialog(final PlaylistStreamEntry item) {
final Context context = getContext();
final Activity activity = getActivity();
@ -535,8 +539,13 @@ public class LocalPlaylistFragment extends BaseLocalListFragment<List<PlaylistSt
StreamDialogEntry.delete,
StreamDialogEntry.append_playlist,
StreamDialogEntry.share);
StreamDialogEntry.start_here_on_popup.setCustomAction(
(fragment, infoItemDuplicate) -> NavigationHelper.playOnPopupPlayer(context, getPlayQueueStartingAt(item), true));
}
StreamDialogEntry.start_here_on_background.setCustomAction(
(fragment, infoItemDuplicate) -> NavigationHelper.playOnBackgroundPlayer(context, getPlayQueueStartingAt(item), true));
StreamDialogEntry.set_as_playlist_thumbnail.setCustomAction(
(fragment, infoItemDuplicate) -> changeThumbnailUrl(item.thumbnailUrl));
StreamDialogEntry.delete.setCustomAction(

View File

@ -130,7 +130,6 @@ public class SubscriptionFragment extends BaseStateFragment<List<SubscriptionEnt
@Override
public void onDetach() {
infoListAdapter.dispose();
super.onDetach();
}
@ -153,8 +152,6 @@ public class SubscriptionFragment extends BaseStateFragment<List<SubscriptionEnt
}
updateFlags = 0;
}
itemsList.post(infoListAdapter::updateStates);
}
@Override
@ -382,7 +379,6 @@ public class SubscriptionFragment extends BaseStateFragment<List<SubscriptionEnt
});
//noinspection ConstantConditions
whatsNewItemListHeader.setOnClickListener(v -> {
FragmentManager fragmentManager = getFM();
NavigationHelper.openWhatsNewFragment(fragmentManager);
@ -430,12 +426,12 @@ public class SubscriptionFragment extends BaseStateFragment<List<SubscriptionEnt
}
private void shareChannel (ChannelInfoItem selectedItem) {
ShareUtils.shareUrl(this.getContext(), selectedItem.getName(), selectedItem.getUrl());
private void shareChannel(ChannelInfoItem selectedItem) {
ShareUtils.shareUrl(getContext(), selectedItem.getName(), selectedItem.getUrl());
}
@SuppressLint("CheckResult")
private void deleteChannel (ChannelInfoItem selectedItem) {
private void deleteChannel(ChannelInfoItem selectedItem) {
subscriptionService.subscriptionTable()
.getSubscription(selectedItem.getServiceId(), selectedItem.getUrl())
.toObservable()
@ -447,7 +443,7 @@ public class SubscriptionFragment extends BaseStateFragment<List<SubscriptionEnt
private Observer<List<SubscriptionEntity>> getDeleteObserver(){
private Observer<List<SubscriptionEntity>> getDeleteObserver() {
return new Observer<List<SubscriptionEntity>>() {
@Override
public void onSubscribe(Disposable d) {

View File

@ -1049,27 +1049,33 @@ public abstract class BasePlayer implements
private void savePlaybackState(final StreamInfo info, final long progress) {
if (info == null) return;
if (DEBUG) Log.d(TAG, "savePlaybackState() called");
final Disposable stateSaver = recordManager.saveStreamState(info, progress)
.observeOn(AndroidSchedulers.mainThread())
.doOnError((e) -> {
if (DEBUG) e.printStackTrace();
})
.onErrorComplete()
.subscribe();
databaseUpdateReactor.add(stateSaver);
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
if (prefs.getBoolean(context.getString(R.string.enable_watch_history_key), true)) {
final Disposable stateSaver = recordManager.saveStreamState(info, progress)
.observeOn(AndroidSchedulers.mainThread())
.doOnError((e) -> {
if (DEBUG) e.printStackTrace();
})
.onErrorComplete()
.subscribe();
databaseUpdateReactor.add(stateSaver);
}
}
private void resetPlaybackState(final PlayQueueItem queueItem) {
if (queueItem == null) return;
final Disposable stateSaver = queueItem.getStream()
.flatMapCompletable(info -> recordManager.saveStreamState(info, 0))
.observeOn(AndroidSchedulers.mainThread())
.doOnError((e) -> {
if (DEBUG) e.printStackTrace();
})
.onErrorComplete()
.subscribe();
databaseUpdateReactor.add(stateSaver);
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
if (prefs.getBoolean(context.getString(R.string.enable_watch_history_key), true)) {
final Disposable stateSaver = queueItem.getStream()
.flatMapCompletable(info -> recordManager.saveStreamState(info, 0))
.observeOn(AndroidSchedulers.mainThread())
.doOnError((e) -> {
if (DEBUG) e.printStackTrace();
})
.onErrorComplete()
.subscribe();
databaseUpdateReactor.add(stateSaver);
}
}
public void resetPlaybackState(final StreamInfo info) {

View File

@ -35,8 +35,6 @@ public class DownloadSettingsFragment extends BasePreferenceFragment {
private String DOWNLOAD_PATH_VIDEO_PREFERENCE;
private String DOWNLOAD_PATH_AUDIO_PREFERENCE;
private String DOWNLOAD_STORAGE_ASK;
private Preference prefPathVideo;
private Preference prefPathAudio;
private Preference prefStorageAsk;
@ -49,14 +47,14 @@ public class DownloadSettingsFragment extends BasePreferenceFragment {
DOWNLOAD_PATH_VIDEO_PREFERENCE = getString(R.string.download_path_video_key);
DOWNLOAD_PATH_AUDIO_PREFERENCE = getString(R.string.download_path_audio_key);
DOWNLOAD_STORAGE_ASK = getString(R.string.downloads_storage_ask);
final String downloadStorageAsk = getString(R.string.downloads_storage_ask);
prefPathVideo = findPreference(DOWNLOAD_PATH_VIDEO_PREFERENCE);
prefPathAudio = findPreference(DOWNLOAD_PATH_AUDIO_PREFERENCE);
prefStorageAsk = findPreference(DOWNLOAD_STORAGE_ASK);
prefStorageAsk = findPreference(downloadStorageAsk);
updatePreferencesSummary();
updatePathPickers(!defaultPreferences.getBoolean(DOWNLOAD_STORAGE_ASK, false));
updatePathPickers(!defaultPreferences.getBoolean(downloadStorageAsk, false));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
prefStorageAsk.setSummary(R.string.downloads_storage_ask_summary);
@ -180,7 +178,7 @@ public class DownloadSettingsFragment extends BasePreferenceFragment {
}
Intent i;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && NewPipeSettings.useStorageAccessFramework(ctx)) {
i = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE)
.putExtra("android.content.extra.SHOW_ADVANCED", true)
.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION | StoredDirectoryHelper.PERMISSION_FLAGS);
@ -221,16 +219,17 @@ public class DownloadSettingsFragment extends BasePreferenceFragment {
return;
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
// steps:
// 1. revoke permissions on the old save path
// 2. acquire permissions on the new save path
// 3. save the new path, if step(2) was successful
final Context ctx = getContext();
if (ctx == null) throw new NullPointerException("getContext()");
forgetSAFTree(ctx, defaultPreferences.getString(key, ""));
// revoke permissions on the old save path (required for SAF only)
final Context ctx = getContext();
if (ctx == null) throw new NullPointerException("getContext()");
forgetSAFTree(ctx, defaultPreferences.getString(key, ""));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && !FilePickerActivityHelper.isOwnFileUri(ctx, uri)) {
// steps to acquire the selected path:
// 1. acquire permissions on the new save path
// 2. save the new path, if step(2) was successful
try {
ctx.grantUriPermission(ctx.getPackageName(), uri, StoredDirectoryHelper.PERMISSION_FLAGS);
@ -245,7 +244,7 @@ public class DownloadSettingsFragment extends BasePreferenceFragment {
return;
}
} else {
File target = Utils.getFileForUri(data.getData());
File target = Utils.getFileForUri(uri);
if (!target.canWrite()) {
showMessageDialog(R.string.download_to_sdcard_error_title, R.string.download_to_sdcard_error_message);
return;

View File

@ -18,7 +18,7 @@ import io.reactivex.disposables.Disposable;
public class HistorySettingsFragment extends BasePreferenceFragment {
private String cacheWipeKey;
private String viewsHistroyClearKey;
private String viewsHistoryClearKey;
private String searchHistoryClearKey;
private HistoryRecordManager recordManager;
private CompositeDisposable disposables;
@ -27,7 +27,7 @@ public class HistorySettingsFragment extends BasePreferenceFragment {
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
cacheWipeKey = getString(R.string.metadata_cache_wipe_key);
viewsHistroyClearKey = getString(R.string.clear_views_history_key);
viewsHistoryClearKey = getString(R.string.clear_views_history_key);
searchHistoryClearKey = getString(R.string.clear_search_history_key);
recordManager = new HistoryRecordManager(getActivity());
disposables = new CompositeDisposable();
@ -46,7 +46,7 @@ public class HistorySettingsFragment extends BasePreferenceFragment {
Toast.LENGTH_SHORT).show();
}
if (preference.getKey().equals(viewsHistroyClearKey)) {
if (preference.getKey().equals(viewsHistoryClearKey)) {
new AlertDialog.Builder(getActivity())
.setTitle(R.string.delete_view_history_alert)
.setNegativeButton(R.string.cancel, ((dialog, which) -> dialog.dismiss()))

View File

@ -22,7 +22,6 @@ package org.schabi.newpipe.settings;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Build;
import android.os.Environment;
import android.preference.PreferenceManager;
import android.support.annotation.NonNull;
@ -67,10 +66,8 @@ public class NewPipeSettings {
PreferenceManager.setDefaultValues(context, R.xml.video_audio_settings, true);
PreferenceManager.setDefaultValues(context, R.xml.debug_settings, true);
if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
getVideoDownloadFolder(context);
getAudioDownloadFolder(context);
}
getVideoDownloadFolder(context);
getAudioDownloadFolder(context);
}
private static void getVideoDownloadFolder(Context context) {
@ -93,11 +90,19 @@ public class NewPipeSettings {
}
@NonNull
private static File getDir(String defaultDirectoryName) {
public static File getDir(String defaultDirectoryName) {
return new File(Environment.getExternalStorageDirectory(), defaultDirectoryName);
}
private static String getNewPipeChildFolderPathForDir(File dir) {
return new File(dir, "NewPipe").toURI().toString();
}
public static boolean useStorageAccessFramework(Context context) {
final String key = context.getString(R.string.storage_use_saf);
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
return prefs.getBoolean(key, false);
}
}

View File

@ -2,6 +2,7 @@ package org.schabi.newpipe.util;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.support.annotation.NonNull;
@ -29,7 +30,7 @@ public class FilePickerActivityHelper extends com.nononsenseapps.filepicker.File
@Override
public void onCreate(Bundle savedInstanceState) {
if(ThemeHelper.isLightThemeSelected(this)) {
if (ThemeHelper.isLightThemeSelected(this)) {
this.setTheme(R.style.FilePickerThemeLight);
} else {
this.setTheme(R.style.FilePickerThemeDark);
@ -73,6 +74,11 @@ public class FilePickerActivityHelper extends com.nononsenseapps.filepicker.File
.putExtra(FilePickerActivityHelper.EXTRA_MODE, FilePickerActivityHelper.MODE_NEW_FILE);
}
public static boolean isOwnFileUri(@NonNull Context context, @NonNull Uri uri) {
if (uri.getAuthority() == null) return false;
return uri.getAuthority().startsWith(context.getPackageName());
}
/*//////////////////////////////////////////////////////////////////////////
// Internal
//////////////////////////////////////////////////////////////////////////*/

View File

@ -446,6 +446,9 @@ public class NavigationHelper {
}
public static boolean openDownloads(Activity activity) {
if (!PermissionHelper.checkStoragePermissions(activity, PermissionHelper.DOWNLOADS_REQUEST_CODE)) {
return false;
}
Intent intent = new Intent(activity, DownloadActivity.class);
activity.startActivity(intent);
return true;

View File

@ -18,10 +18,12 @@ import android.widget.Toast;
import org.schabi.newpipe.R;
public class PermissionHelper {
public static final int DOWNLOAD_DIALOG_REQUEST_CODE = 778;
public static final int DOWNLOADS_REQUEST_CODE = 777;
public static boolean checkStoragePermissions(Activity activity, int requestCode) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
if(!checkReadStoragePermissions(activity, requestCode)) return false;
if (!checkReadStoragePermissions(activity, requestCode)) return false;
}
return checkWriteStoragePermissions(activity, requestCode);
}
@ -89,7 +91,7 @@ public class PermissionHelper {
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
return false;
}else return true;
} else return true;
}
public static boolean isPopupEnabled(Context context) {

View File

@ -35,8 +35,8 @@ public class DownloadManager {
public final static int SPECIAL_PENDING = 1;
public final static int SPECIAL_FINISHED = 2;
static final String TAG_AUDIO = "audio";
static final String TAG_VIDEO = "video";
public static final String TAG_AUDIO = "audio";
public static final String TAG_VIDEO = "video";
private final FinishedMissionStore mFinishedMissionStore;
@ -666,9 +666,9 @@ public class DownloadManager {
continue;
if (mission.running)
paused = true;
else
running = true;
else
paused = true;
}
}

View File

@ -122,14 +122,8 @@ public class MissionAdapter extends Adapter<ViewHolder> {
break;
}
if (mStartButton != null && mPauseButton != null) switch (msg.what) {
case DownloadManagerService.MESSAGE_DELETED:
case DownloadManagerService.MESSAGE_ERROR:
case DownloadManagerService.MESSAGE_FINISHED:
case DownloadManagerService.MESSAGE_PAUSED:
checkMasterButtonsVisibility();
break;
}
if (mStartButton != null && mPauseButton != null)
checkMasterButtonsVisibility();
}
};
@ -163,8 +157,7 @@ public class MissionAdapter extends Adapter<ViewHolder> {
mPendingDownloadsItems.remove(h);
if (mPendingDownloadsItems.size() < 1) {
setAutoRefresh(false);
if (mStartButton != null) mStartButton.setVisible(false);
if (mPauseButton != null) mPauseButton.setVisible(false);
checkMasterButtonsVisibility();
}
}
@ -664,11 +657,11 @@ public class MissionAdapter extends Adapter<ViewHolder> {
if (mEmptyMessage.getVisibility() != flag) mEmptyMessage.setVisibility(flag);
}
private void checkMasterButtonsVisibility() {
public void checkMasterButtonsVisibility() {
boolean[] state = mIterator.hasValidPendingMissions();
mStartButton.setVisible(state[0]);
mPauseButton.setVisible(state[1]);
mPauseButton.setVisible(state[0]);
mStartButton.setVisible(state[1]);
}
public void ensurePausedMissions() {

View File

@ -7,7 +7,9 @@ import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.IBinder;
import android.preference.PreferenceManager;
import android.support.annotation.NonNull;
@ -22,9 +24,14 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import com.nononsenseapps.filepicker.Utils;
import org.schabi.newpipe.R;
import org.schabi.newpipe.settings.NewPipeSettings;
import org.schabi.newpipe.util.FilePickerActivityHelper;
import org.schabi.newpipe.util.ThemeHelper;
import java.io.File;
import java.io.IOException;
import us.shandian.giga.get.DownloadMission;
@ -37,7 +44,7 @@ import us.shandian.giga.ui.adapter.MissionAdapter;
public class MissionsFragment extends Fragment {
private static final int SPAN_SIZE = 2;
private static final int REQUEST_DOWNLOAD_PATH_SAF = 0x1230;
private static final int REQUEST_DOWNLOAD_SAVE_AS = 0x1230;
private SharedPreferences mPrefs;
private boolean mLinear;
@ -138,6 +145,7 @@ public class MissionsFragment extends Fragment {
* deprecated in API level 23,
* but must remain to allow compatibility with api<23
*/
@SuppressWarnings("deprecation")
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
@ -241,12 +249,28 @@ public class MissionsFragment extends Fragment {
private void recoverMission(@NonNull DownloadMission mission) {
unsafeMissionTarget = mission;
StoredFileHelper.requestSafWithFileCreation(
MissionsFragment.this,
REQUEST_DOWNLOAD_PATH_SAF,
mission.storage.getName(),
mission.storage.getType()
);
if (NewPipeSettings.useStorageAccessFramework(mContext)) {
StoredFileHelper.requestSafWithFileCreation(
MissionsFragment.this,
REQUEST_DOWNLOAD_SAVE_AS,
mission.storage.getName(),
mission.storage.getType()
);
} else {
File initialSavePath;
if (DownloadManager.TAG_VIDEO.equals(mission.storage.getType()))
initialSavePath = NewPipeSettings.getDir(Environment.DIRECTORY_MOVIES);
else
initialSavePath = NewPipeSettings.getDir(Environment.DIRECTORY_MUSIC);
initialSavePath = new File(initialSavePath, mission.storage.getName());
startActivityForResult(
FilePickerActivityHelper.chooseFileToSave(mContext, initialSavePath.getAbsolutePath()),
REQUEST_DOWNLOAD_SAVE_AS
);
}
}
@Override
@ -273,6 +297,7 @@ public class MissionsFragment extends Fragment {
}
mBinder.addMissionEventListener(mAdapter.getMessenger());
mAdapter.checkMasterButtonsVisibility();
}
if (mBinder != null) mBinder.enableNotifications(false);
}
@ -288,15 +313,20 @@ public class MissionsFragment extends Fragment {
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode != REQUEST_DOWNLOAD_PATH_SAF || resultCode != Activity.RESULT_OK) return;
if (requestCode != REQUEST_DOWNLOAD_SAVE_AS || resultCode != Activity.RESULT_OK) return;
if (unsafeMissionTarget == null || data.getData() == null) {
return;// unsafeMissionTarget cannot be null
return;
}
try {
Uri fileUri = data.getData();
if (fileUri.getAuthority() != null && FilePickerActivityHelper.isOwnFileUri(mContext, fileUri)) {
fileUri = Uri.fromFile(Utils.getFileForUri(fileUri));
}
String tag = unsafeMissionTarget.storage.getTag();
unsafeMissionTarget.storage = new StoredFileHelper(mContext, null, data.getData(), tag);
unsafeMissionTarget.storage = new StoredFileHelper(mContext, null, fileUri, tag);
mAdapter.recoverMission(unsafeMissionTarget);
} catch (IOException e) {
Toast.makeText(mContext, R.string.general_error, Toast.LENGTH_LONG).show();

View File

@ -1,16 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:gravity="center_vertical"
android:minHeight="?attr/actionBarSize"
android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.ActionBar"
app:titleTextAppearance="@style/Toolbar.Title">
</android.support.v7.widget.Toolbar>
<WebView
android:id="@+id/reCaptchaWebView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="?attr/actionBarSize"/>
<include layout="@layout/toolbar_layout"/>
</RelativeLayout>

View File

@ -1,11 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
<menu xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/switch_mode"
android:icon="?attr/ic_grid"
android:title="@string/grid"
app:showAsAction="ifRoom" />
tools:ignore="AlwaysShowAction"
app:showAsAction="always" />
<item android:id="@+id/start_downloads"
android:visible="false"

View File

@ -20,7 +20,7 @@
<string name="download_path_summary">مسار حفظ تنزيلات الفيديو في</string>
<string name="download_path_title">مسار ملفات الفيديو المحفوظة</string>
<string name="err_dir_create">"لا يمكن إنشاء مجلد للتنزيلات في '%1$s'"</string>
<string name="info_dir_created">"تم إنشاء مجلد تنزيلات في '%1$s'"</string>
<string name="info_dir_created">إنشاء دليل التنزيل \'%1$s\'</string>
<string name="install">تثبيت</string>
<string name="kore_not_found">تطبيق Kore غير موجود. هل تريد تثبيته ؟</string>
<string name="light_theme_title">مضيء</string>
@ -42,7 +42,7 @@
<string name="share">مشاركة</string>
<string name="share_dialog_title">مشاركة بواسطة</string>
<string name="show_next_and_similar_title">عرض مقاطع الفيديو \"التالية\" و \"المشابهة\"</string>
<string name="show_play_with_kodi_summary">عرض خيار لتشغيل الفيديو بواسطة مشغل كودي</string>
<string name="show_play_with_kodi_summary">عرض خيار تشغيل الفيديو عبر مركز وسائط Kodi</string>
<string name="show_play_with_kodi_title">عرض خيار التشغيل بواسطة كودي</string>
<string name="theme_title">السمة</string>
<string name="upload_date_text">تم النشر يوم %1$s</string>
@ -66,11 +66,11 @@
<string name="controls_background_title">في الخلفية</string>
<string name="autoplay_by_calling_app_title">تشغيل تلقائي</string>
<string name="black_theme_title">اسود</string>
<string name="enable_watch_history_title">التاريخ وذاكرة التخزين المؤقت</string>
<string name="enable_watch_history_title">مراقبة السجل</string>
<string name="settings_category_history_title">التاريخ و ذاكرة التخزين المؤقت</string>
<string name="content">محتوى</string>
<string name="downloads">التنزيلات</string>
<string name="downloads_title">التحميل</string>
<string name="downloads">التحميلات</string>
<string name="downloads_title">التحميلات</string>
<string name="all">الكل</string>
<string name="channel">القناة</string>
<string name="video">الفيديو</string>
@ -80,7 +80,7 @@
<string name="title_activity_history">التاريخ</string>
<string name="action_history">التاريخ</string>
<string name="open_in_popup_mode">فتح في وضع منبثق</string>
<string name="use_external_video_player_summary">يزيل الصوت في بعض الخيارات</string>
<string name="use_external_video_player_summary">"يزيل الصوت في بعض قرارات الدقة"</string>
<string name="popup_mode_share_menu_title">وضع النوافذ المنبثقة NewPipe</string>
<string name="channel_unsubscribed">تم إلغاء الاشتراك في القناة</string>
<string name="subscription_change_failed">تعذر تغيير حالة الاشتراك</string>
@ -113,11 +113,11 @@
<string name="show_age_restricted_content_title">محتوى مقيد بحسب العمر</string>
<string name="video_is_age_restricted">"إظهار الفيديو المقيد بحسب العمر. يمكن السماح باستخدام هذه المواد من \"الإعدادات\"."</string>
<string name="duration_live">بث مباشر</string>
<string name="error_report_title">تقرير الخطأ</string>
<string name="error_report_title">أبلغ عن خطأ</string>
<string name="playlist">قائمة التشغيل</string>
<string name="yes">نعم</string>
<string name="later">لاحقاً</string>
<string name="disabled">مُعطل</string>
<string name="disabled">معطل</string>
<string name="filter">فلتر</string>
<string name="refresh">تحديث</string>
<string name="clear">تنظيف</string>
@ -158,11 +158,11 @@
<string name="short_billion">بليون</string>
<string name="no_subscribers">ليس هناك مشترِكون</string>
<plurals name="subscribers">
<item quantity="zero">%s لا يوجد مشترك</item>
<item quantity="zero">%s لا يوجد مشارك</item>
<item quantity="one">%s مشترك</item>
<item quantity="two">%s اثنتين مشتركين</item>
<item quantity="two">"%s مشتركتين"</item>
<item quantity="few">%s اشتراكات</item>
<item quantity="many">%s مشتركين</item>
<item quantity="many">%s مشاركين</item>
<item quantity="other">%s مشتركون</item>
</plurals>
<string name="no_views">دون مشاهدات</string>
@ -184,7 +184,7 @@
<string name="msg_running_detail">انقر للحصول على التفاصيل</string>
<string name="msg_wait">يُرجى الإنتظار…</string>
<string name="msg_copied">تم نسخه إلى الحافظة</string>
<string name="no_available_dir">الرجاء تحديد مجلد لحفظ التنزيلات</string>
<string name="no_available_dir">يرجى تحديد مجلد التنزيل لاحقًا في الإعدادات</string>
<string name="msg_popup_permission">هذا الإذن مطلوب
\nللفتح في وضع النافذة المنبثقة</string>
<string name="reCaptchaActivity">اختبار reCAPTCHA</string>
@ -200,7 +200,7 @@
<string name="action_open_website">فتح الموقع</string>
<string name="tab_contributors">المساهمون</string>
<string name="tab_licenses">التراخيص</string>
<string name="app_description">تطبيق حُر و خفيف لتشغيل اليوتيوب على نظام الأندرويد.</string>
<string name="app_description">تطبيق مجاني خفيف الوزن وبث حي على نظام أندرويد.</string>
<string name="contribution_title">ساهم</string>
<string name="contribution_encouragement">إذا كانت لديك أفكار؛ أو ترجمة، أو تغييرات تخص التصميم، أو تنظيف و تحسين الشفرة البرمجية ، أو تعديلات عميقة عليها، فتذكر أنّ مساعدتك دائما موضع ترحيب. وكلما أتممنا شيئا كلما كان ذلك أفضل !</string>
<string name="view_on_github">عرض على GitHub</string>
@ -234,7 +234,7 @@
<string name="play_queue_stream_detail">التفاصيل</string>
<string name="play_queue_audio_settings">الإعدادات الصوتية</string>
<string name="start_here_on_main">تشغيل هنا</string>
<string name="start_here_on_popup">تشغيل في وضع النافذة المنبثقة</string>
<string name="start_here_on_popup">تشغيل في وضع نافذة منبثقة</string>
<string name="reCaptcha_title">تحدي الكابتشا</string>
<string name="hold_to_append">اضغط للإدراج في قائمة الانتظار</string>
<plurals name="views">
@ -307,11 +307,6 @@
<string name="playlist_delete_failure">لا يمكن حذف قائمة التشغيل.</string>
<string name="resize_fill">ملئ الشاشة</string>
<string name="resize_zoom">تكبير</string>
<string name="caption_font_size_settings_title">حجم خط التسمية</string>
<string name="smaller_caption_font_size">أصغر خط</string>
<string name="normal_caption_font_size">خط عادي</string>
<string name="larger_caption_font_size">خط ذو حجم كبير</string>
<string name="live_sync">مُزامَنة</string>
<string name="controls_download_desc">تنزيل ملف البث</string>
<string name="tab_bookmarks">الإشارات المرجعية</string>
<string name="use_inexact_seek_title">استعمال التقديم السريع الغير دقيق</string>
@ -430,11 +425,11 @@
<string name="app_update_notification_channel_name">تتبيه تحديث التطبيق</string>
<string name="volume_gesture_control_title">إيماءة التحكم بالصوت</string>
<string name="events">الأحداث</string>
<string name="app_update_notification_channel_description">التنبيه بإصدارات newpipe الجديدة</string>
<string name="download_to_sdcard_error_title">ذاكرة التخزين الخارجي غير متوفرة</string>
<string name="download_to_sdcard_error_message">التحميل إلى بطاقة الذاكرة الخارجية ليس متاحا حتى الآن. إعادة تعيين موقع مجلد التحميل؟</string>
<string name="saved_tabs_invalid_json">باستخدام علامات الجدولة الافتراضية، حدث خطأ أثناء قراءة علامات التبويب المحفوظة</string>
<string name="restore_defaults">استعادة الافتراضيات</string>
<string name="app_update_notification_channel_description">الإخطارات عند تواجد إصدار newpipe جديد</string>
<string name="download_to_sdcard_error_title">وحدة التخزين الخارجية غير متوفرة</string>
<string name="download_to_sdcard_error_message">"التنزيل على بطاقة SD الخارجية غير ممكن. إعادة تعيين موقع مجلد التحميل؟"</string>
<string name="saved_tabs_invalid_json">عند إستخدام علامات التبويب الافتراضية ، وقع خطأ أثناء قراءة علامات التبويب المحفوظة</string>
<string name="restore_defaults">استعادة الضبط الافتراضي</string>
<string name="restore_defaults_confirmation">هل تريد استعادة الإعدادات الافتراضية؟</string>
<string name="subscribers_count_not_available">عدد المشتركين غير متاح</string>
<string name="main_page_content_summary">ما هي التبويبات التي تظهر على الصفحة الرئيسية</string>
@ -481,8 +476,8 @@
<string name="stop">توقف</string>
<string name="max_retry_msg">أقصى عدد للمحاولات</string>
<string name="max_retry_desc">الحد الأقصى لعدد محاولات قبل إلغاء التحميل</string>
<string name="pause_downloads_on_mobile">"ايقاف عند التحويل إلى البيانات المتنقلة"</string>
<string name="pause_downloads_on_mobile_desc">سيتم إعادة تحميل التنزيلات التي لا يمكن إيقافها</string>
<string name="pause_downloads_on_mobile">"إنقطع الإتصال بالشبكة عند التحويل إلى البيانات المتنقلة"</string>
<string name="pause_downloads_on_mobile_desc">مفيد عند التبديل إلى بيانات الجوال ، على الرغم من أنه لا يمكن تعليق بعض التنزيلات</string>
<string name="show_comments_title">إظهار التعليقات</string>
<string name="show_comments_summary">تعطيل لإيقاف عرض التعليقات</string>
<string name="autoplay_title">تشغيل تلقائي</string>
@ -496,6 +491,28 @@
</plurals>
<string name="no_comments">لا توجد تعليقات</string>
<string name="error_unable_to_load_comments">تعذر تحميل التعليقات</string>
<string name="direct_on_background">التشغيل مباشرة في الخلفية</string>
<string name="close">إغلاق</string>
<string name="enable_playback_resume_title">استئناف التشغيل</string>
<string name="enable_playback_resume_summary">استعادة آخر موقف التشغيل</string>
<string name="enable_playback_state_lists_title">واضع القوائم</string>
<string name="enable_playback_state_lists_summary">إظهار مؤشرات وضع التشغيل في القوائم</string>
<string name="settings_category_clear_data_title">امسح البيانات</string>
<string name="watch_history_states_deleted">تم حذف وضع التشغيل.</string>
<string name="missing_file">نقل الملف أو حذفه</string>
<string name="overwrite_unrelated_warning">يوجد ملف بهذا الاسم مسبقاً</string>
<string name="overwrite_failed">لا يمكن الكتابة فوق الملف</string>
<string name="download_already_pending">هناك تنزيل معلق بهذا الاسم</string>
<string name="error_postprocessing_stopped">تم إغلاق NewPipe أثناء العمل على الملف</string>
<string name="error_insufficient_storage">لم يتبقى مساحة في الجهاز</string>
<string name="error_progress_lost">تم فقد التقدم بسبب حذف الملف</string>
<string name="error_timeout">انتهى وقت الاتصال</string>
<string name="confirm_prompt">هل أنت واثق؟</string>
<string name="enable_queue_limit">حد قائمة انتظار التنزيل</string>
<string name="enable_queue_limit_desc">سيتم تشغيل تنزيل واحد في نفس الوقت</string>
<string name="start_downloads">بدء التنزيلات</string>
<string name="pause_downloads">إيقاف التحميل مؤقتا</string>
<string name="downloads_storage_ask_title">اسأل عن مكان التنزيل</string>
<string name="downloads_storage_ask_summary">سيُطلب منك مكان حفظ كل تنزيل</string>
<string name="downloads_storage_ask_summary_kitkat">سوف يطلب منك مكان حفظ كل تحميل.
\nقم بتشغيل هذا إذا كنت تريد التنزيل إلى بطاقة SD خارجية.</string>
</resources>

View File

@ -368,11 +368,6 @@
<string name="resize_fill">RELLENAR</string>
<string name="resize_zoom">ZOOM</string>
<string name="caption_font_size_settings_title">Tamañu de fonte de sotítulos</string>
<string name="smaller_caption_font_size">Fonte más pequeña</string>
<string name="normal_caption_font_size">Fonte media</string>
<string name="larger_caption_font_size">Fonte más grande</string>
<string name="enable_leak_canary_title">Activar LeakCanary</string>
<string name="enable_leak_canary_summary">La supervisión d\'escapes de memoria podría facer que l\'aplicación nun respuenda al volquiar la pila</string>

View File

@ -405,5 +405,4 @@
<string name="minimize_on_exit_background_description">Фонавы плэер</string>
<string name="minimize_on_exit_popup_description">Плэер у акне</string>
<string name="unsubscribe">Адпісацца</string>
<string name="direct_on_background">Іграць \"у фоне\"</string>
</resources>

View File

@ -305,7 +305,7 @@
<string name="add">Nova missió</string>
<string name="msg_url_malform">L\'URL té un format incorrecte o no hi ha connexió a internet</string>
<string name="msg_running_detail">Toqueu aquí per a més detalls</string>
<string name="no_available_dir">Trieu una carpeta de baixades disponible</string>
<string name="no_available_dir">Definiu una carpeta de baixades més endavant a la configuració</string>
<string name="msg_popup_permission">Es necessita aquest permís per a obrir el mode emergent</string>
<string name="reCaptcha_title">Camp reCAPTCHA</string>
<string name="recaptcha_request_toast">S\'ha sol·licitat l\'emplenament d\'un camp reCAPTCHA</string>
@ -333,18 +333,13 @@
<string name="resize_fill">Omple</string>
<string name="resize_zoom">Escala</string>
<string name="caption_auto_generated">Generats automàticament</string>
<string name="caption_font_size_settings_title">Mida dels subtítols</string>
<string name="smaller_caption_font_size">Mida més petita</string>
<string name="normal_caption_font_size">Mida normal</string>
<string name="larger_caption_font_size">Mida més gran</string>
<string name="enable_leak_canary_title">Habilita el LeakCanary</string>
<string name="previous_export">Darrera exportació</string>
<string name="subscriptions_import_unsuccessful">No s\'han pogut importar les subscripcions</string>
<string name="subscriptions_export_unsuccessful">No s\'han pogut exportar les subscripcions</string>
<string name="unhook_checkbox">Desvincula (pot provocar distorsió)</string>
<string name="playback_nightcore">Nightcore</string>
<string name="metadata_cache_wipe_summary">Elimina totes les dades de llocs web de la memòria cau</string>
<string name="auto_queue_summary">Afegeix a la cua un vídeo relacionat quan es reprodueix l\'últim vídeo en una cua sense repetició.</string>
<string name="auto_queue_summary">Afegeix a la cua un vídeo relacionat quan es reprodueix l\'últim vídeo en una cua sense repetició</string>
<string name="show_hold_to_append_title">Mostra els missatges d\'ajuda</string>
<string name="show_hold_to_append_summary">Mostra un missatge d\'ajuda quan el botó de mode en segon pla o emergent estigui premut a la pàgina de detalls d\'un vídeo</string>
<string name="info_labels">Què ha passat:\\nPetició:\\nIdioma del contingut:\\nServei:\\nHora GMT:\\nPaquet:\\nVersió:\\nVersió del SO:</string>
@ -456,7 +451,7 @@
<string name="max_retry_msg">Intents màxims</string>
<string name="max_retry_desc">Nombre màxim d\'intents abans de cancel·lar la baixada</string>
<string name="pause_downloads_on_mobile">Pausa en canviar a dades mòbils</string>
<string name="pause_downloads_on_mobile_desc">Les baixades que no es puguin pausar es tornaran a iniciar</string>
<string name="pause_downloads_on_mobile_desc">Útil en canviar a les dades mòbils, tot i que algunes baixades no es poden aturar</string>
<string name="unsubscribe">Elimina la subscripció</string>
<string name="overwrite">Sobreescriu</string>
<string name="error_http_not_found">No s\'ha trobat</string>
@ -465,6 +460,25 @@
<string name="autoplay_title">Reproducció automàtica</string>
<string name="no_comments">No hi ha comentaris</string>
<string name="error_unable_to_load_comments">No s\'han pogut carregar els comentaris</string>
<string name="direct_on_background">Reprodueix directament en segon pla</string>
<string name="close">Tanca</string>
<string name="saved_tabs_invalid_json">S\'estan utilitzant les pestanyes per defecte, s\'ha produït un error en llegir les pestanyes desades</string>
<string name="updates_setting_description">Mostra una notificació per demanar l\'actualització de l\'aplicació si hi ha una nova versió disponible</string>
<string name="app_update_notification_content_text">Toca per baixar</string>
<string name="error_http_no_content">El servidor no està enviant dades</string>
<plurals name="comments">
<item quantity="one">Comentaris</item>
<item quantity="other"/>
</plurals>
<string name="app_update_notification_channel_name">Notificació d\'actualització de l\'aplicació</string>
<string name="enable_playback_resume_title">Reprèn la reproducció</string>
<string name="overwrite_failed">No es pot sobreescriure el fitxer</string>
<string name="download_already_pending">Hi ha una baixada pendent amb aquest nom</string>
<string name="error_insufficient_storage">No hi ha espai disponible al dispositiu</string>
<string name="error_progress_lost">S\'ha perdut el progrés perquè s\'ha eliminat el fitxer</string>
<string name="error_timeout">S\'ha excedit el temps d\'espera de la connexió</string>
<string name="confirm_prompt">Segur\?</string>
<string name="enable_queue_limit">Limita la cua de baixades</string>
<string name="start_downloads">Inicia les baixades</string>
<string name="pause_downloads">Pausa les baixades</string>
<string name="downloads_storage_ask_summary">Se us demanarà la ubicació de cada baixada</string>
</resources>

View File

@ -92,7 +92,7 @@
<string name="title_licenses">第三方执照</string>
<string name="action_open_website">打开网页</string>
<string name="unbookmark_playlist">删除书签</string>
<string name="delete_playlist_prompt">确定删除该播放列表吗?</string>
<string name="delete_playlist_prompt">确定删除该播放列表吗?</string>
<string name="playlist_creation_success">已创建播放列表</string>
<string name="playlist_add_stream_success">播放列表</string>
<string name="playback_step">步骤</string>
@ -115,14 +115,14 @@
<string name="metadata_cache_wipe_complete_notice">已清除缓存的元数据</string>
<string name="download_thumbnail_summary">不加载缩略图时,可以节省数据和存储空间。更改后将清除存储空间和扩展空间的缓存。</string>
<string name="auto_queue_title">自动排列下一个媒体</string>
<string name="auto_queue_summary">在非重复排列中播放最后一个媒体时自动推荐相关媒体</string>
<string name="auto_queue_summary">在非重复排列中播放最后一个媒体时自动推荐相关媒体</string>
<string name="player_gesture_controls_title">玩家手势控制</string>
<string name="player_gesture_controls_summary">使用手势控制播放器的亮度和音量</string>
<string name="show_search_suggestions_title">搜索建议</string>
<string name="show_search_suggestions_summary">搜索时显示建议</string>
<string name="enable_search_history_title">搜索历史记录</string>
<string name="enable_search_history_summary">在本地存储搜索</string>
<string name="enable_watch_history_title">历史记录和缓存数据</string>
<string name="enable_watch_history_title">观看历史</string>
<string name="enable_watch_history_summary">记录观看过的视频</string>
<string name="resume_on_audio_focus_gain_title">取得视窗焦点时继续播放</string>
<string name="resume_on_audio_focus_gain_summary">在被打断后继续播放(例如有来电)</string>
@ -134,7 +134,6 @@
<string name="url_not_supported_toast">不支持该网址</string>
<string name="default_content_country_title">默认内容的国家</string>
<string name="service_title">服务</string>
<string name="search_language_title">默认内容的语言</string>
<string name="settings_category_player_title">播放器</string>
<string name="settings_category_player_behavior_title">行为</string>
<string name="settings_category_video_audio_title">视频与音频</string>
@ -256,7 +255,7 @@
<string name="no_videos">没有视频</string>
<plurals name="videos">
<item quantity="one">部视频</item>
<item quantity="other"/>
<item quantity="other"></item>
</plurals>
<string name="delete_one">删除</string>
<string name="checksum">校验</string>
@ -267,7 +266,7 @@
<string name="msg_url_malform">错误的网址或网络不可用</string>
<string name="msg_running_detail">点按以查看详细信息</string>
<string name="msg_copied">复制到剪贴板</string>
<string name="no_available_dir">选择下载文件夹</string>
<string name="no_available_dir">稍后在设置中定义一个下载文件夹</string>
<string name="msg_popup_permission">在悬浮窗模式打开
\n需要此权限</string>
<string name="one_item_deleted">已删除一个项目。</string>
@ -337,19 +336,19 @@
<string name="play_queue_stream_detail">详细</string>
<string name="play_queue_audio_settings">音频设置</string>
<string name="hold_to_append">长按以新增至队列</string>
<string name="enqueue_on_background">转到后台时排列</string>
<string name="enqueue_on_popup">排列新的悬浮窗</string>
<string name="enqueue_on_background">加入后台播放列表</string>
<string name="enqueue_on_popup">加入悬浮窗播放列表</string>
<string name="start_here_on_main">从这里开始播放</string>
<string name="start_here_on_background">转到后台时从这里开始</string>
<string name="start_here_on_popup">从新的悬浮窗开始</string>
<string name="start_here_on_background">开始在后台播放</string>
<string name="start_here_on_popup">开始在新悬浮窗播放</string>
<string name="drawer_open">打开抽屉</string>
<string name="drawer_close">关闭抽屉</string>
<string name="drawer_header_action_paceholder_text">某些东西即将在此出现;D</string>
<string name="drawer_header_action_paceholder_text">很快就会出现在这里 ;D</string>
<string name="preferred_open_action_settings_title">偏好的「开启」动作</string>
<string name="preferred_open_action_settings_summary">开启内容时的默认动作 - %s</string>
<string name="video_player">视频播放器</string>
<string name="background_player">转到后台播放</string>
<string name="popup_player">悬浮窗播放</string>
<string name="background_player">后台播放</string>
<string name="popup_player">悬浮窗播放</string>
<string name="always_ask_open_action">总是询问</string>
<string name="preferred_player_fetcher_notification_title">正在获取信息…</string>
<string name="preferred_player_fetcher_notification_message">正在载入请求的内容</string>
@ -363,12 +362,12 @@
<string name="playlist_thumbnail_change_success">播放列表缩略图已更改。</string>
<string name="playlist_delete_failure">无法删除播放列表。</string>
<string name="caption_none">没有字幕</string>
<string name="resize_fit">合适</string>
<string name="resize_fit">合适</string>
<string name="resize_fill">填满</string>
<string name="resize_zoom">缩放</string>
<string name="caption_auto_generated">自动生成</string>
<string name="caption_setting_title">字幕</string>
<string name="caption_setting_description">修改播放器标题文本比例和背景样式。需要重启才能生效。</string>
<string name="caption_setting_description">修改播放器字幕文本比列和背景样式。需要重启才能生效。</string>
<string name="enable_leak_canary_title">启用 LeakCanary</string>
<string name="enable_leak_canary_summary">内存泄漏监视可能导致应用程序在存储时无响应</string>
<string name="enable_disposed_exceptions_title">报告活动周期外错误</string>
@ -416,7 +415,7 @@
<string name="app_update_notification_channel_name">应用升级通知</string>
<string name="app_update_notification_channel_description">新 NewPipe 版本通知</string>
<string name="download_to_sdcard_error_title">外储存不可行</string>
<string name="download_to_sdcard_error_message">下载至外置SD卡还未可行。重置下载文件夹位置?</string>
<string name="download_to_sdcard_error_message">无法下载到外部SD卡。重置下载文件夹位置?</string>
<string name="restore_defaults">恢复默认</string>
<string name="restore_defaults_confirmation">您真的要恢复至默认吗?</string>
<string name="selection">选择</string>
@ -452,7 +451,7 @@
<string name="stop"></string>
<string name="max_retry_msg">重试上限</string>
<string name="max_retry_desc">取消下载前可以尝试的最多次数</string>
<string name="pause_downloads_on_mobile">换成手机数据时暂停</string>
<string name="pause_downloads_on_mobile">换成手机数据时中断</string>
<string name="events">事件</string>
<string name="saved_tabs_invalid_json">使用默认选项卡, 读取保存的选项卡时出错</string>
<string name="subscribers_count_not_available">订阅者计数不可用</string>
@ -464,8 +463,41 @@
<string name="switch_view">切换视图</string>
<string name="app_update_notification_content_title">NewPipe 更新可用!</string>
<string name="error_path_creation">无法创建目标文件夹</string>
<string name="error_http_unsupported_range">服务器不接受多线程下载, 请重试使用 @string/msg_threads = 1</string>
<string name="error_http_unsupported_range">服务器不接受多线程下载, 请使用 @string/msg_threads = 1重试</string>
<string name="error_http_requested_range_not_satisfiable">请求范围无法满足</string>
<string name="msg_pending_downloads">继续进行%s个待下载转移</string>
<string name="pause_downloads_on_mobile_desc">无法暂停的下载将重新开始</string>
<string name="pause_downloads_on_mobile_desc">切换至移动数据时有用,尽管一些下载无法被暂停</string>
<string name="show_comments_title">显示评论</string>
<string name="show_comments_summary">禁用停止显示评论</string>
<string name="autoplay_title">自动播放</string>
<plurals name="comments">
<item quantity="one">评论</item>
<item quantity="other"/>
</plurals>
<string name="no_comments">没有评论</string>
<string name="error_unable_to_load_comments">无法加载评论</string>
<string name="close">关闭</string>
<string name="enable_playback_resume_title">继续播放</string>
<string name="enable_playback_resume_summary">恢复上次播放位置</string>
<string name="enable_playback_state_lists_title">列表中的位置</string>
<string name="enable_playback_state_lists_summary">在列表中显示播放位置指示符</string>
<string name="settings_category_clear_data_title">清除数据</string>
<string name="watch_history_states_deleted">播放位置已删除。</string>
<string name="missing_file">文件被移动或删除</string>
<string name="overwrite_unrelated_warning">已存在具有此名称的文件</string>
<string name="overwrite_failed">无法覆盖该文件</string>
<string name="download_already_pending">同名文件正在等待下载</string>
<string name="error_postprocessing_stopped">处理此文件时 NewPipe 已关闭</string>
<string name="error_insufficient_storage">设备上没有剩余空间</string>
<string name="error_progress_lost">进度丢失,因为文件已被删除</string>
<string name="error_timeout">连接超时</string>
<string name="confirm_prompt">你确定吗?</string>
<string name="enable_queue_limit">限制下载队列</string>
<string name="enable_queue_limit_desc">同时只有一个下载进行</string>
<string name="start_downloads">开始全部下载</string>
<string name="pause_downloads">暂停全部下载</string>
<string name="downloads_storage_ask_title">询问下载位置</string>
<string name="downloads_storage_ask_summary">每次下载将询问保存的位置</string>
<string name="downloads_storage_ask_summary_kitkat">每次下载将询问保存的位置。
\n如果要下载到外部SD卡请选中。</string>
</resources>

View File

@ -316,13 +316,7 @@ otevření ve vyskakovacím okně</string>
<string name="resize_fit">Přizpůsobit</string>
<string name="resize_fill">Vyplnit</string>
<string name="resize_zoom">Zvětšit</string>
<string name="caption_font_size_settings_title">Velikost písma nadpisu</string>
<string name="smaller_caption_font_size">Menší písmo</string>
<string name="normal_caption_font_size">Normální písmo</string>
<string name="larger_caption_font_size">Větší písmo</string>
<string name="toggle_leak_canary">Sledovat únik paměti</string>
<string name="disable_leak_canary_notice">Sledování úniku paměti vypnuto</string>
<string name="enable_leak_canary_notice">Sledování úniku paměti povoleno, aplikace může při zátěži přestat reagovat</string>
<string name="settings_category_debug_title">Ladění</string>
<string name="caption_auto_generated">"Automaticky generováno "</string>
<string name="enable_leak_canary_title">Povolit službu LeakCanary</string>
@ -377,7 +371,6 @@ otevření ve vyskakovacím okně</string>
<string name="playback_tempo">Rychlost</string>
<string name="playback_pitch">Výška tónu</string>
<string name="unhook_checkbox">Rozpojit (může způsobit zkreslení)</string>
<string name="playback_nightcore">Nightcore mód</string>
<string name="playback_default">Výchozí nastavení</string>
<string name="no_streams_available_download">Ke stažení nejsou dostupné žádné streamy</string>
<string name="preferred_open_action_settings_title">Preferovaná \'otevřít\' akce</string>
@ -456,7 +449,7 @@ otevření ve vyskakovacím okně</string>
<string name="permission_denied">Akce odmítnuta systémem</string>
<string name="download_failed">Stahování se nezdařilo</string>
<string name="download_finished">Stahování dokončeno</string>
<string name="download_finished_more">% s stahování dokončeno</string>
<string name="download_finished_more">%s stahování dokončeno</string>
<string name="generate_unique_name">Vytvořit jedinečný název</string>
<string name="overwrite">Přepsat</string>
<string name="overwrite_unrelated_warning">Stažený soubor s tímto názvem již existuje</string>
@ -492,7 +485,6 @@ otevření ve vyskakovacím okně</string>
</plurals>
<string name="no_comments">Žádné komentáře</string>
<string name="error_unable_to_load_comments">Nelze načíst komentáře</string>
<string name="direct_on_background">Přehrát přímo na pozadí</string>
<string name="close">Zavřít</string>
<string name="download_to_sdcard_error_message">Stahování na externí SD kartu ještě není možné. Resetovat umístění složky pro stahování\?</string>
</resources>
</resources>

View File

@ -58,7 +58,6 @@
<string name="youtube_signature_decryption_error">Konnte Video-URL-Signatur nicht entschlüsseln</string>
<string name="parsing_error">Konnte Webseite nicht analysieren</string>
<string name="content_not_available">Inhalt nicht verfügbar</string>
<string name="content">Inhalt</string>
<string name="show_age_restricted_content_title">Altersbeschränkte Inhalte</string>
<string name="video_is_age_restricted">Altersbeschränktes Video anzeigen. Das Zulassen dieses Materials ist von den Einstellungen aus möglich.</string>
@ -98,7 +97,7 @@
<string name="msg_exists">Datei existiert bereits</string>
<string name="msg_wait">Bitte warten…</string>
<string name="msg_copied">In Zwischenablage kopiert</string>
<string name="no_available_dir">Bitte wähle ein verfügbares Downloadverzeichnis</string>
<string name="no_available_dir">Bitte gib später in den Einstellungen einen Downloadverzeichnis an</string>
<string name="start">Starten</string>
<string name="pause">Pause</string>
<string name="view">Abspielen</string>
@ -166,12 +165,12 @@
<string name="charset_letters_and_digits">Buchstaben und Zahlen</string>
<string name="subscribe_button_title">Abonnieren</string>
<string name="subscribed_button_title">Abonniert</string>
<string name="channel_unsubscribed">Abonnement beendet</string>
<string name="channel_unsubscribed">Kanal abbestellt</string>
<string name="tab_subscriptions">Abos</string>
<string name="fragment_whats_new">Neuigkeiten</string>
<string name="enable_search_history_title">Suchverlauf</string>
<string name="enable_search_history_summary">Suchanfragen lokal speichern</string>
<string name="enable_watch_history_title">Verlauf &amp; Cache</string>
<string name="enable_watch_history_title">Verlauf ansehen</string>
<string name="enable_watch_history_summary">Speichere den Wiedergabeverlauf</string>
<string name="title_activity_history">Verlauf</string>
<string name="title_history_search">Gesucht</string>
@ -277,7 +276,7 @@
<string name="no_valid_zip_file">Keine gültige ZIP-Datei</string>
<string name="could_not_import_all_files">Warnung: Nicht alle Dateien konnten importiert werden.</string>
<string name="override_current_data">Dies wird deine aktuellen Einstellungen überschreiben.</string>
<string name="show_info">Info anzeigen</string>
<string name="show_info">Infos anzeigen</string>
<string name="tab_bookmarks">Lesezeichen für Wiedergabelisten</string>
<string name="controls_add_to_playlist_title">Hinzufügen zu</string>
<string name="detail_drag_description">Zum Neuordnen ziehen</string>
@ -302,9 +301,7 @@
<string name="playlist_thumbnail_change_success">Vorschaubild der Wiedergabeliste geändert.</string>
<string name="playlist_delete_failure">Konnte Wiedergabeliste nicht löschen.</string>
<string name="caption_none">Keine Untertitel</string>
<string name="caption_font_size_settings_title">Schriftgröße der Untertitel</string>
<string name="dismiss">Abbrechen</string>
<string name="normal_caption_font_size">Normale Schriftgröße</string>
<string name="controls_download_desc">Stream-Datei herunterladen</string>
<string name="use_inexact_seek_title">Schnelle, ungenaue Suche verwenden</string>
<string name="use_inexact_seek_summary">Mit ungenauem Suchen kann die Abspielposition schneller erreicht werden, aber auf Kosten der Genauigkeit</string>
@ -314,8 +311,6 @@
<string name="file_name_empty_error">Dateiname darf nicht leer sein</string>
<string name="error_occurred_detail">Ein Fehler ist aufgetreten: %1$s</string>
<string name="caption_auto_generated">Automatisch erzeugt</string>
<string name="smaller_caption_font_size">Kleinere Schrift</string>
<string name="larger_caption_font_size">Größere Schrift</string>
<string name="enable_leak_canary_title">LeakCanary aktivieren</string>
<string name="import_from">Import von</string>
<string name="export_to">Export nach</string>
@ -344,7 +339,6 @@
<string name="playback_tempo">Geschwindigkeit</string>
<string name="playback_pitch">Tonhöhe</string>
<string name="unhook_checkbox">Verknüpfung aufheben (kann zu Verzerrungen führen)</string>
<string name="playback_nightcore">Nightcore</string>
<string name="playback_default">Standard</string>
<string name="download_thumbnail_summary">Abschalten, um das Laden von Miniaturansichten zu verhindern, was Daten- und Speicherverbrauch spart. Änderungen löschen den Bildzwischenspeicher sowohl im Arbeitsspeicher als auch auf dem internen Speicher.</string>
<string name="auto_queue_title">Nächsten Stream automatisch einreihen</string>
@ -408,7 +402,7 @@
<string name="playlists">Wiedergabelisten</string>
<string name="tracks">Titel</string>
<string name="users">Benutzer</string>
<string name="unsubscribe">Deabonnieren</string>
<string name="unsubscribe">Abbestellen</string>
<string name="tab_new">Neuer Tab</string>
<string name="tab_choose">Tab wählen</string>
<string name="volume_gesture_control_title">Gestensteuerung für Lautstärke</string>
@ -420,7 +414,7 @@
<string name="app_update_notification_channel_name">Aktualisierungsbenachrichtigung</string>
<string name="app_update_notification_channel_description">Benachrichtigung bei neuer NewPipe-Version</string>
<string name="download_to_sdcard_error_title">Kein externer Speicher verfügbar</string>
<string name="download_to_sdcard_error_message">Herunterladen auf externe SD-Karte ist noch nicht möglich. Zielverzeichnis zurücksetzen\?</string>
<string name="download_to_sdcard_error_message">Herunterladen auf externe SD-Karte ist nicht möglich. Downloadverzeichnis zurücksetzen\?</string>
<string name="saved_tabs_invalid_json">Fehler beim Lesen der gespeicherten Tabs es werden die Voreinstellungen benutzt</string>
<string name="restore_defaults">Voreinstellungen wiederherstellen</string>
<string name="restore_defaults_confirmation">Möchtest du die Voreinstellungen wiederherstellen\?</string>
@ -453,7 +447,7 @@
<string name="show_error">Fehler anzeigen</string>
<string name="label_code">Code</string>
<string name="error_file_creation">Die Datei kann nicht erstellt werden</string>
<string name="error_path_creation">Der Zielordner kann nicht erstellt werden</string>
<string name="error_path_creation">Das Zielverzeichnis kann nicht erstellt werden</string>
<string name="error_permission_denied">System verweigert den Zugriff</string>
<string name="error_ssl_exception">Sichere Verbindung fehlgeschlagen</string>
<string name="error_unknown_host">Der Server konnte nicht gefunden werden</string>
@ -468,8 +462,8 @@
<string name="stop">Anhalten</string>
<string name="max_retry_msg">Maximale Wiederholungen</string>
<string name="max_retry_desc">Maximalanzahl der Versuche, bevor der Download abgebrochen wird</string>
<string name="pause_downloads_on_mobile">Beim Umschalten auf mobile Daten pausieren</string>
<string name="pause_downloads_on_mobile_desc">Downloads, die nicht pausiert werden können, werden wiederholt</string>
<string name="pause_downloads_on_mobile">Unterbrechen bei kostenpflichtigen Netzwerken</string>
<string name="pause_downloads_on_mobile_desc">Nützlich beim Wechsel zu mobilen Daten, obwohl einige Downloads nicht unterbrochen werden können</string>
<string name="conferences">Konferenzen</string>
<string name="events">Ereignisse</string>
<string name="error_timeout">Verbindungszeitüberschreitung</string>
@ -478,10 +472,31 @@
<string name="autoplay_title">Autoplay</string>
<plurals name="comments">
<item quantity="one">Kommentare</item>
<item quantity="other"></item>
<item quantity="other"/>
</plurals>
<string name="no_comments">Keine Kommentare</string>
<string name="error_unable_to_load_comments">Kommentare konnten nicht geladen werden</string>
<string name="direct_on_background">Direkt im Hintergrund wiedergeben</string>
<string name="close">Schließen</string>
<string name="enable_playback_resume_title">Wiedergabe fortsetzen</string>
<string name="enable_playback_resume_summary">Wiederherstellen der letzten Wiedergabeposition</string>
<string name="enable_playback_state_lists_title">Positionen in Listen</string>
<string name="enable_playback_state_lists_summary">Wiedergabepositionsanzeigen in Listen anzeigen</string>
<string name="settings_category_clear_data_title">Daten löschen</string>
<string name="watch_history_states_deleted">Wiedergabeposition gelöscht.</string>
<string name="missing_file">Datei verschoben oder gelöscht</string>
<string name="overwrite_finished_warning">Eine heruntergeladene Datei mit diesem Namen existiert bereits</string>
<string name="overwrite_failed">kann die Datei nicht überschreiben</string>
<string name="download_already_pending">Es gibt einen ausstehenden Download mit diesem Namen</string>
<string name="error_postprocessing_stopped">NewPipe wurde während der Verarbeitung der Datei geschlossen</string>
<string name="error_insufficient_storage">Kein Speicherplatz mehr auf dem Gerät</string>
<string name="error_progress_lost">Vorgang abgebrochen, da die Datei gelöscht wurde</string>
<string name="confirm_prompt">Bist du sicher\?</string>
<string name="enable_queue_limit">Downloadwarteschlange begrenzen</string>
<string name="enable_queue_limit_desc">Ein Download wird zur gleichen Zeit ausgeführt</string>
<string name="start_downloads">Downloads starten</string>
<string name="pause_downloads">Downloads anhalten</string>
<string name="downloads_storage_ask_title">Frage, wohin heruntergeladen werden soll</string>
<string name="downloads_storage_ask_summary">Du wirst gefragt, wohin du jeden Download speichern willst</string>
<string name="downloads_storage_ask_summary_kitkat">Du wirst gefragt, wohin du jeden Download speichern willst.
\nAktiviere diese Option, wenn du auf die externe SD-Karte herunterladen möchtest</string>
</resources>

View File

@ -475,6 +475,5 @@
</plurals>
<string name="no_comments">Χωρίς σχόλια</string>
<string name="error_unable_to_load_comments">Δεν ήταν δυνατή η φόρτωση σχολίων</string>
<string name="direct_on_background">Αναπαραγωγή απευθείας στο παρασκήνιο</string>
<string name="close">Κλείσιμο</string>
</resources>

View File

@ -1,4 +1,4 @@
<?xml version='1.0' encoding='UTF-8'?>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="view_count_text">%1$s vidoj</string>
<string name="upload_date_text">Eldonita je %1$s</string>
@ -15,7 +15,6 @@
<string name="screen_rotation">turno</string>
<string name="use_external_video_player_title">Uzi eksteran videoludilon</string>
<string name="use_external_audio_player_title">Uzi eksteran sonludilon</string>
<string name="default_resolution_title">Defaŭlta distingivo</string>
<string name="play_with_kodi_title">Ludi per Kodi</string>
<string name="show_play_with_kodi_title">Montri \"Ludi per Kodi\"-opcion</string>
@ -24,7 +23,6 @@
<string name="theme_title">Etoso</string>
<string name="dark_theme_title">Malluma</string>
<string name="light_theme_title">Luma</string>
<string name="download_dialog_title">Elŝuti</string>
<string name="next_video_title">Sekva video</string>
<string name="url_not_supported_toast">Ligilo ne subtenita</string>
@ -37,7 +35,6 @@
<string name="general_error">Eraro</string>
<string name="network_error">Reteraro</string>
<string name="content_not_available">Enhavo ne estas disponebla</string>
<string name="detail_likes_img_view_description">Ŝatoj</string>
<string name="detail_dislikes_img_view_description">Malŝatoj</string>
<string name="use_tor_title">Uzi la programon Tor</string>
@ -55,27 +52,22 @@
<string name="download_path_title">Elŝutujo por videoj</string>
<string name="download_path_audio_title">Elŝutujo por muziko</string>
<string name="use_tor_summary">(Eksperimenta) Devigi elŝuttrafikon tra Tor por pli bona privateco (elsendfluaj videoj estas ankoraŭ ne subtenitaj).</string>
<string name="show_play_with_kodi_summary">Montri opcion por ludi videon per la aplikaĵo Kodi</string>
<string name="download_path_summary">Dosierujo por konservi elŝutitajn videojn</string>
<string name="download_path_audio_summary">Dosierujo por konservi elŝutitan muzikon</string>
<string name="download_path_dialog_title">Elektu lokon por konservi elŝutitajn videojn</string>
<string name="download_path_audio_dialog_title">Elektu lokon por konservi elŝutitan muzikon</string>
<string name="content">Enhavo</string>
<string name="error_report_button_text">Raporti eraron per retpoŝto</string>
<string name="error_snackbar_action">RAPORTI</string>
<string name="what_device_headline">Informoj:</string>
<string name="your_comment">Via komento (en la angla):</string>
<string name="error_details_headline">Detaloj:</string>
<string name="report_error">Raporti eraron</string>
<string name="video">Video</string>
<string name="retry">Reprovi</string>
<string name="main_bg_subtitle">Tapu serĉo por komenci</string>
<string name="no_player_found_toast">Neniu elsendlflua ludilo trovita (instalu VLC por ludi ĝin)</string>
<string name="main_bg_subtitle">Tapu serĉo por komenci</string>
<string name="no_player_found_toast">Neniu elsendlflua ludilo trovita (instalu VLC por ludi ĝin).</string>
<string name="open_in_popup_mode">Malfermi en ŝprucfenestron modon</string>
<string name="use_external_video_player_summary">Iuj rezolucioj NE havos aŭdion kiam ĉi tiu eblo estas ebligita</string>
<string name="popup_mode_share_menu_title">NewPipe ŝprucfenestron modon</string>
@ -83,20 +75,16 @@
<string name="subscribed_button_title">Abonita</string>
<string name="channel_unsubscribed">Kanalo malabonita</string>
<string name="subscription_change_failed">Neebla ŝanĝi abonon</string>
<string name="controls_download_desc">Elŝutu dosieron.</string>
<string name="controls_download_desc">Elŝutu dosieron</string>
<string name="subscription_update_failed">Ne eblas ĝisdatigi abonon</string>
<string name="show_info">Montri informon</string>
<string name="tab_main">Ĉefa</string>
<string name="tab_subscriptions">Abonoj</string>
<string name="tab_bookmarks">Legosigno</string>
<string name="fragment_whats_new">Kio novas</string>
<string name="controls_background_title">Fono</string>
<string name="controls_popup_title">ŝprucfenestron</string>
<string name="controls_add_to_playlist_title">Aldonu al</string>
<string name="autoplay_by_calling_app_title">Aŭtomata play</string>
<string name="autoplay_by_calling_app_summary">Ludas video kiam NewPipe vokas de alia programo</string>
<string name="default_popup_resolution_title">Defaŭlta popup rezolucio</string>
@ -109,4 +97,4 @@
<string name="use_inexact_seek_title">Uzu rapide, ne preciza serĉon</string>
<string name="use_inexact_seek_summary">Ne preciza serĉo permesas al la ludanto serĉi poziciojn pli rapide kun malalta precizeco</string>
<string name="download_thumbnail_title">Ŝarĝi bildetojn</string>
</resources>
</resources>

View File

@ -322,8 +322,6 @@ abrir en modo popup</string>
<string name="use_inexact_seek_summary">La búsqueda inexacta permite al reproductor buscar posiciones más rápido con menor precisión</string>
<string name="auto_queue_title">Auto-encolar la siguiente transmisión</string>
<string name="auto_queue_summary">Añadir de forma automática un vídeo relacionado con el último vídeo reproducido en una cola no repetitiva</string>
<string name="live">DIRECTO</string>
<string name="live_sync">SINCRONIZAR</string>
<string name="file">Archivo</string>
<string name="missing_file">Archivo movido o eliminado</string>
<string name="invalid_directory">No existe el directorio</string>
@ -460,7 +458,9 @@ abrir en modo popup</string>
<string name="downloads_storage_ask_title">Preguntar dónde descargar</string>
<string name="downloads_storage_ask_summary">Se preguntará dónde guardar cada descarga</string>
<string name="downloads_storage_ask_summary_kitkat">Se preguntará dónde guardar cada descarga.\nHabilita esta opción si quieres descargar en la tarjeta SD externa</string>
<string name="downloads_storage_ask_summary_kitkat">Se preguntará dónde guardar cada descarga.\nHabilita esta opción junto con SAF si quieres descargar en la tarjeta SD externa</string>
<string name="downloads_storage_use_saf_title">Usar SAF</string>
<string name="downloads_storage_use_saf_summary">El Framework de Acceso al Almacenamiento permite descargar en la tarjeta SD externa.\nNota: Algunos los dispositivos no son compatibles</string>
<string name="unsubscribe">Desuscribirse</string>
<string name="tab_new">Nueva pestaña</string>
@ -498,6 +498,5 @@ abrir en modo popup</string>
</plurals>
<string name="no_comments">Sin comentarios</string>
<string name="error_unable_to_load_comments">No se pudo cargar comentarios</string>
<string name="direct_on_background">Reproducir directamente en segundo plano</string>
<string name="close">Cerrar</string>
</resources>

View File

@ -136,7 +136,7 @@
<string name="msg_running_detail">Ukitu xehetasunetarako</string>
<string name="msg_wait">Itxaron mesedez…</string>
<string name="msg_copied">Arbelera kopiatuta</string>
<string name="no_available_dir">Aukeratu eskuragarri dagoen karpeta bat deskargetarako</string>
<string name="no_available_dir">Ezarri deskargetarako karpeta bat ezarpenetan geroago</string>
<string name="msg_popup_permission">Baimen hau beharrezkoa da
\nlaster-leiho moduan irekitzeko</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
@ -176,7 +176,7 @@
<string name="charset_most_special_characters">Karaktere berezi gehienak</string>
<string name="enable_search_history_title">Bilaketa historiala</string>
<string name="enable_search_history_summary">Gorde bilaketak lokalki</string>
<string name="enable_watch_history_title">Historiala eta katxea</string>
<string name="enable_watch_history_title">Ikustaldien historiala</string>
<string name="enable_watch_history_summary">Gorde ikusitako bideoen historiala</string>
<string name="notification_channel_name">NewPipe jakinarazpena</string>
<string name="settings_category_player_title">Erreproduzigailua</string>
@ -374,7 +374,6 @@
<string name="playback_tempo">Tempoa</string>
<string name="playback_pitch">Tonua</string>
<string name="unhook_checkbox">Deslotu (distortsioa sor lezake)</string>
<string name="playback_nightcore">Nightcore</string>
<string name="playback_default">Lehenetsia</string>
<string name="import_settings">Ezarpenak ere inportatu nahi dituzu?</string>
<string name="use_inexact_seek_summary">Bilaketa ez zehatzak posizioak azkarrago baina prezisio gutxiagoz bilatzea ahalbidetzen du</string>
@ -416,7 +415,7 @@
<string name="app_update_notification_channel_name">Aplikazioaren eguneraketaren jakinarazpena</string>
<string name="app_update_notification_channel_description">NewPipe aplikazioaren bertsio berrien jakinarazpena</string>
<string name="download_to_sdcard_error_title">Kanpo biltegiratzea ez dago eskuragarri</string>
<string name="download_to_sdcard_error_message">Oraindik ezin da SD txartel batera deskargatu. Deskargen karpeta berrezarri\?</string>
<string name="download_to_sdcard_error_message">Ezin da SD txartel batera deskargatu. Deskargen karpeta berrezarri nahi duzu\?</string>
<string name="saved_tabs_invalid_json">Lehenetsitako fitxak erabiltzen, errorea gordetako fitxak irakurtzean</string>
<string name="restore_defaults">Berrezarri lehenetsitakoak</string>
<string name="restore_defaults_confirmation">Lehenetsitakoak berrezarri nahi dituzu\?</string>
@ -465,18 +464,39 @@
<string name="stop">Gelditu</string>
<string name="max_retry_msg">Gehienezko saiakerak</string>
<string name="max_retry_desc">Deskarga ezeztatu aurretik saiatu beharreko aldi kopurua</string>
<string name="pause_downloads_on_mobile">Pausatu datu mugikorretara aldatzean</string>
<string name="pause_downloads_on_mobile_desc">Pausatu ezin daitezkeen deskargak berrekingo dira</string>
<string name="pause_downloads_on_mobile">Eten sare neurtuetan</string>
<string name="pause_downloads_on_mobile_desc">Erabilgarria datu mugikorretara aldatzean, hala ere deskarga batzuk ezin dira pausatu</string>
<string name="error_timeout">Konexioaren denbora muga</string>
<string name="show_comments_title">Erakutsi iruzkinak</string>
<string name="show_comments_summary">Desgaitu iruzkinak erakusteari erakusteko</string>
<string name="autoplay_title">Erreprodukzio automatikoa</string>
<plurals name="comments">
<item quantity="one">Iruzkinak</item>
<item quantity="other"></item>
<item quantity="other"/>
</plurals>
<string name="no_comments">Iruzkinik ez</string>
<string name="error_unable_to_load_comments">Ezin izan dira iruzkinak kargatu</string>
<string name="direct_on_background">Erreproduzitu zuzenean bigarren planoan</string>
<string name="close">Itxi</string>
<string name="enable_playback_resume_title">Berrekin erreprodukzioa</string>
<string name="enable_playback_resume_summary">Berrezarri azken erreprodukzio-posizioa</string>
<string name="enable_playback_state_lists_title">Posizioak zerrendetan</string>
<string name="enable_playback_state_lists_summary">Erakutsi erreprodukzio-posizioen adierazleak zerrendetan</string>
<string name="settings_category_clear_data_title">Garbitu datuak</string>
<string name="watch_history_states_deleted">Erreprodukzio-posizioak ezabatuta.</string>
<string name="missing_file">Fitxategia lekuz aldatu edo ezabatu da</string>
<string name="overwrite_unrelated_warning">Badago izen bereko fitxategi bat</string>
<string name="overwrite_failed">ezin da fitxategia gainidatzi</string>
<string name="download_already_pending">Badago izen bereko deskarga bat burutzeke</string>
<string name="error_postprocessing_stopped">NewPipe itxi egin da fitxategian lanean zegoela</string>
<string name="error_insufficient_storage">Ez dago lekurik gailuan</string>
<string name="error_progress_lost">Progresioa galdu da, fitxategia ezabatu delako</string>
<string name="confirm_prompt">Ziur al zaude\?</string>
<string name="enable_queue_limit">Mugatu deskargen ilara</string>
<string name="enable_queue_limit_desc">Deskarga bakarra aldi berean</string>
<string name="start_downloads">Hasi deskargak</string>
<string name="pause_downloads">Pausatu deskargak</string>
<string name="downloads_storage_ask_title">Galdetu non deskargatu</string>
<string name="downloads_storage_ask_summary">Non gorde galdetuko zaizu deskarga bakoitzean</string>
<string name="downloads_storage_ask_summary_kitkat">Non gorde galdetuko zaizu deskarga bakoitzean.
\nGaitu aukera hau kanpo SD txartelean gorde nahi baduzu</string>
</resources>

View File

@ -55,10 +55,10 @@
<string name="general_error">خطا</string>
<string name="network_error">خطای شبکه</string>
<string name="could_not_load_thumbnails">نمی‌توان تمام بندانگشتی‌ها را بار کرد</string>
<string name="youtube_signature_decryption_error">نمی‌توان امضای نشانی اینترنتی ویدیو را رمزگشایی کرد.</string>
<string name="parsing_error">نمی‌توان پایگاه وب را تجزیه کرد.</string>
<string name="light_parsing_error">نمی‌توان پایگاه وب را به صورت کامل تجزیه کرد.</string>
<string name="content_not_available">محتوا در دسترس نیست.</string>
<string name="youtube_signature_decryption_error">نمی‌توان امضای نشانی اینترنتی ویدیو را رمزگشایی کرد</string>
<string name="parsing_error">نمی‌توان پایگاه وب را تجزیه کرد</string>
<string name="light_parsing_error">نمی‌توان پایگاه وب را به صورت کامل تجزیه کرد</string>
<string name="content_not_available">محتوا در دسترس نیست</string>
<string name="could_not_setup_download_menu">نمی‌توان فهرست بارگیری را برپا ساخت.</string>
<string name="live_streams_not_supported">جریان‌های زنده هنوز پشتیبانی نمی‌شوند</string>
<string name="could_not_get_stream">نمی‌توان هیچ جریانی را گرفت</string>

View File

@ -55,7 +55,6 @@
<string name="general_error">Erreur</string>
<string name="parsing_error">Impossible d\'analyser le site web</string>
<string name="content_not_available">Contenu non disponible</string>
<string name="error_snackbar_message">Désolé, des erreurs se sont produites.</string>
<string name="content">Contenu</string>
<string name="show_age_restricted_content_title">Contenu avec limite d\'âge</string>
@ -103,7 +102,7 @@
<string name="msg_running_detail">Appuyer pour plus de détails</string>
<string name="msg_wait">Veuillez patienter…</string>
<string name="msg_copied">Copié dans le presse-papiers</string>
<string name="no_available_dir">Sélectionner un dossier de téléchargement disponible</string>
<string name="no_available_dir">Veuillez définir un dossier de téléchargement plus tard dans les paramètres</string>
<string name="could_not_load_image">Impossible de charger l\'image</string>
<string name="app_ui_crash">Lapplication a crashé</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
@ -175,7 +174,7 @@
<string name="settings_file_replacement_character_title">Caractère de remplacement</string>
<string name="enable_search_history_title">Historique de recherche</string>
<string name="enable_search_history_summary">Conserver les recherches sur l\'appareil</string>
<string name="enable_watch_history_title">Historique et cache</string>
<string name="enable_watch_history_title">Voir l \'historique</string>
<string name="title_activity_history">Historique</string>
<string name="title_history_search">Recherché</string>
<string name="title_history_view">Regardé</string>
@ -308,10 +307,6 @@
<string name="caption_none">Aucuns sous-titres</string>
<string name="resize_fit">Ajuster</string>
<string name="resize_zoom">Zoom</string>
<string name="caption_font_size_settings_title">Taille des sous-titres</string>
<string name="smaller_caption_font_size">Petite</string>
<string name="normal_caption_font_size">Normale</string>
<string name="larger_caption_font_size">Grande</string>
<string name="use_inexact_seek_title">Recherche rapide approximative</string>
<string name="use_inexact_seek_summary">Permettre au lecteur d\'accéder plus rapidement à une position au détriment de la précision</string>
<string name="download_thumbnail_title">Charger les miniatures</string>
@ -373,7 +368,6 @@
<string name="caption_setting_title">Sous-titres</string>
<string name="caption_setting_description">Modifier la taille du texte et les styles d\'arrière-plan du lecteur. Redémarrage requis pour prendre effet.</string>
<string name="playback_pitch">Ton</string>
<string name="playback_nightcore">Nightcore</string>
<string name="toast_no_player">Aucune application installée pour lire ce fichier</string>
<string name="clear_views_history_title">Effacer l\'historique</string>
<string name="clear_views_history_summary">Supprimer l\'historique des flux regardés</string>
@ -426,7 +420,7 @@
<string name="selection">Sélection</string>
<string name="stop">Arrêter</string>
<string name="events">Événements</string>
<string name="download_to_sdcard_error_message">Télécharger vers la carte SD n\'est pas encore possible. Voulez-vous réinitialiser l\'emplacement du dossier \?</string>
<string name="download_to_sdcard_error_message">Télécharger vers la carte SD n\'est pas possible. Voulez-vous réinitialiser l\'emplacement du dossier \?</string>
<string name="main_page_content_summary">Quels onglets seront visibles sur la page principale</string>
<string name="updates_setting_title">Mises à jour</string>
<string name="updates_setting_description">Afficher une notification pour proposer une mise à jour de l\'application lorsqu\'une nouvelle version est disponible</string>
@ -437,7 +431,7 @@
<string name="app_update_notification_content_title">Une mise à jour de NewPipe disponible !</string>
<string name="app_update_notification_content_text">Appuyez pour télécharger</string>
<string name="missions_header_finished">Terminé</string>
<string name="missions_header_pending">Dans la file d\'attente</string>
<string name="missions_header_pending">En attente</string>
<string name="paused">En pause</string>
<string name="download_failed">Téléchargement échoué</string>
<string name="error_timeout">Délai de connection dépassé</string>
@ -452,8 +446,8 @@
<string name="download_already_running">Il y a un téléchargement en cours avec ce nom</string>
<string name="show_error">Afficher l\'erreur</string>
<string name="label_code">Code</string>
<string name="error_path_creation">Le fichier ne peut pas être créé</string>
<string name="error_file_creation">Le dossier de destination ne peut pas être créé</string>
<string name="error_path_creation">Le dossier de destination ne peut pas être créé</string>
<string name="error_file_creation">Le fichier ne peut pas être créé</string>
<string name="error_permission_denied">Autorisation refusée par le système</string>
<string name="error_ssl_exception">Échoué de la connexion sécurisée</string>
<string name="error_unknown_host">Le serveur est introuvable</string>
@ -462,7 +456,7 @@
<string name="error_http_not_found">Introuvable</string>
<string name="clear_finished_download">Effacer les téléchargements terminés</string>
<string name="pause_downloads_on_mobile">Mettre en pause lors du passage en données mobiles</string>
<string name="pause_downloads_on_mobile_desc">Les téléchargements qui ne peuvent pas être mis en pause seront redémarrés</string>
<string name="pause_downloads_on_mobile_desc">Utile lors du passage aux données mobiles, bien que certains téléchargements ne peuvent pas être suspendus</string>
<string name="list_view_mode">Mode liste</string>
<string name="post_processing">post-traitement</string>
<string name="enqueue">File dattente</string>
@ -483,6 +477,22 @@
</plurals>
<string name="no_comments">Pas de commentaires</string>
<string name="error_unable_to_load_comments">Impossible de charger les commentaires</string>
<string name="direct_on_background">Jouer directement en arrière-plan</string>
<string name="close">Fermer</string>
<string name="enable_playback_resume_title">Reprendre la lecture</string>
<string name="settings_category_clear_data_title">Effacer les données</string>
<string name="missing_file">Fichier déplacé ou supprimé</string>
<string name="overwrite_failed">ne peut pas remplacer le fichier</string>
<string name="download_already_pending">Il y a déjà un téléchargement en attente avec ce nom</string>
<string name="error_postprocessing_stopped">NewPipe a été fermé alors qu\'il travaillait sur le fichier</string>
<string name="error_insufficient_storage">Aucun espace disponible sur le périphérique</string>
<string name="error_progress_lost">Progression perdue, car le fichier a été effacé</string>
<string name="confirm_prompt">Êtes-vous certain \?</string>
<string name="enable_queue_limit">Limiter la file d\'attente de téléchargement</string>
<string name="enable_queue_limit_desc">Un téléchargement s\'exécutera en même temps</string>
<string name="start_downloads">Démarrer les téléchargements</string>
<string name="pause_downloads">Mettre en pause les téléchargements</string>
<string name="downloads_storage_ask_title">Demander où télécharger</string>
<string name="downloads_storage_ask_summary">On vous demandera où enregistrer chaque téléchargement</string>
<string name="downloads_storage_ask_summary_kitkat">On vous demandera où enregistrer chaque téléchargement.
\nActivez cette option si vous voulez télécharger sur la carte SD externe</string>
</resources>

View File

@ -93,7 +93,6 @@
<string name="url_not_supported_toast">Este URL non está soportado</string>
<string name="default_content_country_title">País predeterminado para o contido</string>
<string name="service_title">Servizo</string>
<string name="search_language_title">Idioma predeterminado do contido</string>
<string name="settings_category_player_title">Reprodutor</string>
<string name="settings_category_player_behavior_title">Comportamento</string>
<string name="settings_category_video_audio_title">Vídeo e audio</string>

View File

@ -52,7 +52,7 @@
<string name="show_search_suggestions_title">הצעות חיפוש</string>
<string name="show_search_suggestions_summary">הצגת הצעות בעת החיפוש</string>
<string name="download_dialog_title">הורדה</string>
<string name="next_video_title">הבא בתור</string>
<string name="next_video_title">הבא</string>
<string name="show_next_and_similar_title">להציג סרטונים דומים ובאים בתור</string>
<string name="url_not_supported_toast">כתובת לא נתמכת</string>
<string name="content_language_title">שפת התוכן המועדפת</string>
@ -108,7 +108,7 @@
<string name="fragment_whats_new">מה חדש</string>
<string name="enable_search_history_title">היסטוריית חיפוש</string>
<string name="enable_search_history_summary">שמירת שאילתות החיפוש מקומית</string>
<string name="enable_watch_history_title">היסטוריה ומטמון</string>
<string name="enable_watch_history_title">היסטוריית צפייה</string>
<string name="enable_watch_history_summary">תיעוד הסרטונים שנצפו</string>
<string name="resume_on_audio_focus_gain_title">להמשיך את הניגון עם החזרת המיקוד</string>
<string name="resume_on_audio_focus_gain_summary">להמשיך לנגן לאחר הפרעות (למשל: שיחות טלפון)</string>
@ -168,9 +168,9 @@
<string name="no_videos">אין סרטונים</string>
<plurals name="videos">
<item quantity="one">סרטון</item>
<item quantity="two">שני סרטונים</item>
<item quantity="many">%s סרטונים</item>
<item quantity="other">%s סרטונים</item>
<item quantity="two">סרטונים</item>
<item quantity="many">סרטונים</item>
<item quantity="other">סרטונים</item>
</plurals>
<string name="start">התחלה</string>
<string name="pause">השהיה</string>
@ -189,7 +189,7 @@
<string name="msg_running_detail">יש לגעת לפרטים נוספים</string>
<string name="msg_wait">נא להמתין…</string>
<string name="msg_copied">הועתק ללוח</string>
<string name="no_available_dir">נא לבחור תיקיית הורדה זמינה</string>
<string name="no_available_dir">נא לציין תיקיית הורדה בהגדרות בהמשך</string>
<string name="msg_popup_permission">הרשאה זו נדרשת לטובת
\nפתיחה בחלון צף</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
@ -407,7 +407,7 @@
<string name="app_update_notification_channel_name">התראת עדכון יישומון</string>
<string name="app_update_notification_channel_description">התראות על גרסה חדשה של NewPipe</string>
<string name="download_to_sdcard_error_title">האחסון החיצוני אינו זמין</string>
<string name="download_to_sdcard_error_message">אין עדיין אפשרות להוריד לכרטיס SD. לאפס את מיקום תיקיית ההורדה\?</string>
<string name="download_to_sdcard_error_message">אין אפשרות להוריד לכרטיס SD. לאפס את מיקום תיקיית ההורדה\?</string>
<string name="saved_tabs_invalid_json">נעשה שימוש בלשוניות בררת המחדל, אירעה שגיאה בעת קריאת הלשוניות שנשמרו</string>
<string name="restore_defaults">שחזור בררות מחדל</string>
<string name="restore_defaults_confirmation">לשחזר את בררות המחדל\?</string>
@ -469,20 +469,42 @@
<string name="stop">עצירה</string>
<string name="max_retry_msg">מספר הניסיונות החוזרים המרבי</string>
<string name="max_retry_desc">מספר הניסיונות החוזרים המרבי בטרם ביטול ההורדה</string>
<string name="pause_downloads_on_mobile">להשהות בעת מעבר לתקשורת נתונים סלולרית</string>
<string name="pause_downloads_on_mobile_desc">הורדות שלא ניתן להשהות יופעלו מחדש</string>
<string name="missions_header_pending">בהמתנה</string>
<string name="pause_downloads_on_mobile">לייצר הפרעה ברשתות מדודות</string>
<string name="pause_downloads_on_mobile_desc">שימושי בעת מעבר לחיבור רשת סלולרית, למרות שישנן הורדות שלא ניתן להשהות</string>
<string name="show_comments_title">הצגת תגובות</string>
<string name="show_comments_summary">יש להשבית כדי להפסיק הצגת תגובות</string>
<string name="autoplay_title">ניגון אוטומטי</string>
<plurals name="comments">
<item quantity="one">תגובות</item>
<item quantity="two"></item>
<item quantity="many"></item>
<item quantity="other"></item>
<item quantity="two"/>
<item quantity="many"/>
<item quantity="other"/>
</plurals>
<string name="no_comments">אין תגובות</string>
<string name="error_unable_to_load_comments">לא ניתן לטעון תגובות</string>
<string name="direct_on_background">לנגן ישירות ברקע</string>
<string name="close">סגירה</string>
<string name="missions_header_pending">בהמתנה</string>
<string name="enable_playback_resume_title">להמשיך בנגינה</string>
<string name="enable_playback_resume_summary">לשחזר את מיקום הנגינה האחרון</string>
<string name="enable_playback_state_lists_title">מיקומים ברשימות</string>
<string name="enable_playback_state_lists_summary">להציג מחווני מיקומי נגינה ברשימות</string>
<string name="settings_category_clear_data_title">לנקות את הנתונים</string>
<string name="watch_history_states_deleted">מיקומי הנגינה נמחקו.</string>
<string name="missing_file">הקובץ הועבר או נמחק</string>
<string name="overwrite_unrelated_warning">כבר קיים קובץ בשם הזה</string>
<string name="overwrite_failed">לא ניתן לשכתב על הקובץ</string>
<string name="download_already_pending">כבר יש הורדה ממתינה בשם הזה</string>
<string name="error_postprocessing_stopped">NewPipe נסגר בזמן העבודה על הקובץ</string>
<string name="error_insufficient_storage">לא נשאר מקום במכשיר</string>
<string name="error_progress_lost">התהליך אבד כיוון שהקובץ נמחק</string>
<string name="error_timeout">החיבור המתין זמן רב מדי</string>
<string name="confirm_prompt">בוודאות\?</string>
<string name="enable_queue_limit">הגבלת תור ההורדה</string>
<string name="enable_queue_limit_desc">רק הורדה אחת תרוץ בו־זמנית</string>
<string name="start_downloads">התחלת הורדות</string>
<string name="pause_downloads">השהיית הורדות</string>
<string name="downloads_storage_ask_title">לשאול לאן להוריד</string>
<string name="downloads_storage_ask_summary">תופיע שאלה לאן לשמור כל הורדה</string>
<string name="downloads_storage_ask_summary_kitkat">תוצג שאלה היכן לשמור כל הורדה.
\nיש להפעיל זאת אם ברצונך להוריד לכרטיס SD חיצוני.</string>
</resources>

View File

@ -310,10 +310,6 @@
<string name="resize_fit">फिट</string>
<string name="resize_fill">भरें</string>
<string name="resize_zoom">ज़ूम करें</string>
<string name="caption_font_size_settings_title">कैप्शन फ़ॉंट आकार</string>
<string name="smaller_caption_font_size">छोटे फ़ॉंट</string>
<string name="normal_caption_font_size">सामांय फ़ॉंट</string>
<string name="larger_caption_font_size">बड़ा फ़ॉंट</string>
<string name="settings_category_debug_title">डीबग करें</string>
<string name="caption_auto_generated">ऑटो-जनरेटेड</string>
<string name="enable_leak_canary_title">LeakCanary सक्षम करें</string>

View File

@ -276,10 +276,6 @@
<string name="resize_fill">Ispuniti</string>
<string name="resize_zoom">Povećaj</string>
<string name="caption_auto_generated">Auto generirano</string>
<string name="caption_font_size_settings_title">Veličina fonta naslova</string>
<string name="smaller_caption_font_size">Manji font</string>
<string name="normal_caption_font_size">Normalni font</string>
<string name="larger_caption_font_size">Veći font</string>
<string name="enable_leak_canary_title">Omogući \"LeakCanary\"</string>
<string name="enable_leak_canary_summary">Monitoring curenja memorije može uzrokovati greške u radu aplikacije prilikom odlaganje gomile</string>
<string name="enable_disposed_exceptions_title">Izvijestite o pogreškama izvan životnog ciklusa</string>
@ -478,7 +474,6 @@
</plurals>
<string name="no_comments">Nema komentara</string>
<string name="error_unable_to_load_comments">Komentare nije moguće učitati</string>
<string name="direct_on_background">Sviraj izravno u pozadini</string>
<string name="close">Zatvori</string>
<string name="app_license">NewPipe je copyleft libre software: možete ga koristiti, proučavati i poboljšavati po volji. Konkretno, možete ga redistribuirati i / ili modificirati pod uvjetima GNU opće javne licence koju je objavila Free Software Foundation, bilo verzije 3 Licence, ili (po vašem izboru) bilo koje kasnije verzije.</string>
<string name="privacy_policy_encouragement">"Projekt NewPipe ozbiljno shvaća vašu privatnost. Stoga aplikacija ne prikuplja nikakve podatke bez vašeg pristanka.

View File

@ -97,7 +97,7 @@
<string name="msg_running_detail">Sentuh untuk detail</string>
<string name="msg_wait">Mohon tunggu…</string>
<string name="msg_copied">Disalin ke papan klip</string>
<string name="no_available_dir">Silakan pilih direktori unduhan yang tersedia</string>
<string name="no_available_dir">Silakan pilih folder unduhan di pengaturan</string>
<string name="no_player_found">Pemutar stream tidak ditemukan. Apakah anda ingin memasang VLC\?</string>
<string name="youtube_signature_decryption_error">Tidak bisa dekripsi tanda tangan URL video</string>
<string name="app_ui_crash">App/UI rusak</string>
@ -171,7 +171,7 @@
<string name="tab_main">Utama</string>
<string name="enable_search_history_title">Riwayat pencarian</string>
<string name="enable_search_history_summary">Simpan pencarian secara lokal</string>
<string name="enable_watch_history_title">Riwayat &amp; Cache</string>
<string name="enable_watch_history_title">Riwayat tontonan</string>
<string name="notification_channel_name">Notifikasi NewPipe</string>
<string name="title_activity_history">Riwayat</string>
<string name="history_disabled">Riwayat dinonaktifkan</string>
@ -312,12 +312,7 @@
<string name="resize_fill">Isi</string>
<string name="resize_zoom">Perbesar</string>
<string name="caption_auto_generated">Otomatis dibuat</string>
<string name="caption_font_size_settings_title">Ukuran fon deskripsi</string>
<string name="smaller_caption_font_size">Fon lebih kecil</string>
<string name="normal_caption_font_size">Fon normal</string>
<string name="larger_caption_font_size">Fon lebih besar</string>
<string name="enable_leak_canary_title">Aktifkan LeakCanary</string>
<string name="playback_nightcore">Nightcore</string>
<string name="playback_default">Bawaan</string>
<string name="no_player_found_toast">Pemutar stream tidak ditemukan (anda bisa memasang VLC untuk memutarnya).</string>
<string name="controls_download_desc">Unduh berkas stream</string>
@ -417,7 +412,7 @@
<string name="app_update_notification_channel_name">Notifikasi Pembaruan Apl</string>
<string name="app_update_notification_channel_description">Notifikasi untuk versi NewPipe baru</string>
<string name="download_to_sdcard_error_title">Penyimpanan eksternal tidak tersedia</string>
<string name="download_to_sdcard_error_message">Belum bisa mengunduh ke kartu SD eksternal. Setel ulang lokasi folder unduhan\?</string>
<string name="download_to_sdcard_error_message">Tidak bisa mengunduh ke kartu SD eksternal. Atur ulang lokasi folder unduhan\?</string>
<string name="saved_tabs_invalid_json">Menggunakan tab baku, ralat saat membaca tab yang disimpan</string>
<string name="restore_defaults">Kembali ke awal</string>
<string name="restore_defaults_confirmation">Apakah anda ingin kembali ke awal\?</string>
@ -466,8 +461,8 @@
<string name="stop">Berhenti</string>
<string name="max_retry_msg">Percobaan maksimum</string>
<string name="max_retry_desc">Jumlah upaya maksimum sebelum membatalkan unduhan</string>
<string name="pause_downloads_on_mobile">Berhenti ketika beralih ke data seluler</string>
<string name="pause_downloads_on_mobile_desc">Unduhan yang tidak dapat dijeda akan diulang dari awal</string>
<string name="pause_downloads_on_mobile">Berhenti pada jaringan terbatas</string>
<string name="pause_downloads_on_mobile_desc">Berguna saat beralih ke data seluler, walaupun beberapa unduhan tidak bisa ditangguhkan</string>
<string name="show_comments_title">Tampilkan komentar</string>
<string name="show_comments_summary">Nonaktifkan untuk berhenti menampilkan komentar</string>
<string name="autoplay_title">Otomatis putar</string>
@ -476,6 +471,27 @@
</plurals>
<string name="no_comments">Tidak ada komentar</string>
<string name="error_unable_to_load_comments">Tidak bisa memuat komentar</string>
<string name="direct_on_background">Putar di latar belakang</string>
<string name="close">Tutup</string>
<string name="enable_playback_resume_title">Lanjutkan pemutaran</string>
<string name="enable_playback_resume_summary">Pulihkan posisi pemutaran terakhir</string>
<string name="enable_playback_state_lists_title">Posisi dalam daftar</string>
<string name="enable_playback_state_lists_summary">Tampilkan indikator posisi pemutaran di dalam daftar</string>
<string name="settings_category_clear_data_title">Hapus data</string>
<string name="watch_history_states_deleted">Posisi pemutaran dihapus.</string>
<string name="missing_file">Berkas dipindah atau dihapus</string>
<string name="overwrite_unrelated_warning">Berkas dengan nama yang sama sudah ada</string>
<string name="overwrite_failed">tidak bisa menimpa ulang berkas</string>
<string name="download_already_pending">Ada unduhan yang dijeda dengan nama ini</string>
<string name="error_postprocessing_stopped">NewPipe telah ditutup saat sedang memproses berkas</string>
<string name="error_insufficient_storage">Tidak ada ruang kosong tersisa pada perangkat</string>
<string name="error_progress_lost">Kehilangan laju, karena berkas telah dihapus</string>
<string name="confirm_prompt">Apakah anda yakin\?</string>
<string name="enable_queue_limit">Batasi antrean unduhan</string>
<string name="enable_queue_limit_desc">Satu unduhan akan berjalan pada waktu yang bersamaan</string>
<string name="start_downloads">Mulai unduh</string>
<string name="pause_downloads">Jeda unduh</string>
<string name="downloads_storage_ask_title">Tanyakan lokasi unduhan</string>
<string name="downloads_storage_ask_summary">Anda akan ditanya lokasi penyimpanan berkas unduhan</string>
<string name="downloads_storage_ask_summary_kitkat">Anda akan ditanya lokasi penyimpanan berkas unduhan.
\nAktifkan opsi ini jika anda ingin mengunduh ke kartu SD eksternal</string>
</resources>

View File

@ -310,10 +310,6 @@
<string name="resize_fit">Rientrato</string>
<string name="resize_fill">Pieno</string>
<string name="resize_zoom">Ingrandito</string>
<string name="caption_font_size_settings_title">Dimensione dei caratteri dei sottotitoli</string>
<string name="smaller_caption_font_size">Carattere più piccolo</string>
<string name="normal_caption_font_size">Carattere normale</string>
<string name="larger_caption_font_size">Carattere più grande</string>
<string name="drawer_header_action_paceholder_text">A breve qualcosa apparirà qui ;D</string>
<string name="settings_category_debug_title">Debug</string>
<string name="caption_auto_generated">Generato automaticamente</string>
@ -325,7 +321,6 @@
<string name="use_inexact_seek_summary">La ricerca imprecisa permette al lettore multimediale di spostarsi nelle posizioni più velocemente con una precisione ridotta</string>
<string name="auto_queue_title">Metti in coda automaticamente il prossimo flusso</string>
<string name="auto_queue_summary">Aggiungi automaticamente uno stream correlato raggiunta la fine della coda se la ripetizione è disattivata</string>
<string name="live_sync">SINCRONIZZAZIONE</string>
<string name="file">File</string>
<string name="invalid_directory">Nessuna cartella</string>
<string name="invalid_source">Nessun file o cartella che contiene sorgenti</string>
@ -367,7 +362,6 @@
<string name="playback_tempo">Tempo</string>
<string name="playback_pitch">Tono</string>
<string name="unhook_checkbox">Scollega (può causare distorsione)</string>
<string name="playback_nightcore">Nightcore</string>
<string name="playback_default">Valore predefinito</string>
<string name="no_streams_available_download">Nessun flusso disponibile per il download</string>
<string name="preferred_open_action_settings_title">\'Apri\' preferibilmente con</string>
@ -482,6 +476,5 @@
</plurals>
<string name="no_comments">Nessun commento</string>
<string name="error_unable_to_load_comments">Impossibile caricare i commenti</string>
<string name="direct_on_background">Riproduci direttamente in sottofondo</string>
<string name="close">Chiudi</string>
</resources>

View File

@ -57,7 +57,6 @@
<string name="youtube_signature_decryption_error">動画のURLを復号できませんでした</string>
<string name="parsing_error">Webサイトを解析できませんでした</string>
<string name="content_not_available">コンテンツが利用できません</string>
<string name="could_not_setup_download_menu">保存メニューを設定できませんでした</string>
<string name="live_streams_not_supported">生放送にはまだ対応していません</string>
<string name="content">コンテンツ</string>
@ -100,7 +99,7 @@
<string name="msg_running_detail">タップして詳細を表示</string>
<string name="msg_wait">お待ちください…</string>
<string name="msg_copied">クリップボードにコピーしました</string>
<string name="no_available_dir">ダウンロードフォルダを選択して下さい</string>
<string name="no_available_dir">後ほど設定でダウンロードフォルダを定義してください</string>
<string name="downloads">ダウンロード</string>
<string name="downloads_title">ダウンロード</string>
<string name="error_report_title">不具合報告</string>
@ -169,7 +168,7 @@
<string name="fragment_whats_new">新着</string>
<string name="enable_search_history_title">検索履歴</string>
<string name="enable_search_history_summary">検索した履歴を記憶します</string>
<string name="enable_watch_history_title">再生履歴とキャッシュ</string>
<string name="enable_watch_history_title">視聴履歴</string>
<string name="enable_watch_history_summary">再生した履歴を記憶します</string>
<string name="resume_on_audio_focus_gain_title">オーディオフォーカス復帰で再開する</string>
<string name="resume_on_audio_focus_gain_summary">電話などによる中断の後、再生を再開します</string>
@ -294,7 +293,6 @@
<string name="playlist_thumbnail_change_success">プレイリストのサムネイルを変更しました。</string>
<string name="playlist_delete_failure">プレイリストを削除できませんでした。</string>
<string name="caption_none">字幕表示なし</string>
<string name="caption_font_size_settings_title">字幕の文字サイズ</string>
<string name="import_export_title">インポート/エクスポート</string>
<string name="import_title">インポート</string>
<string name="import_from">インポート元</string>
@ -437,8 +435,8 @@
<string name="download_already_running">同じ名前を持つダウンロードが既に進行中です</string>
<string name="show_error">エラーを表示する</string>
<string name="label_code">コード</string>
<string name="error_path_creation">ファイルを作成できません</string>
<string name="error_file_creation">宛先フォルダを作成できません</string>
<string name="error_path_creation">宛先のフォルダーを作成できません</string>
<string name="error_file_creation">ファイルを作成できません</string>
<string name="error_permission_denied">権限がシステムによって拒否されました</string>
<string name="error_ssl_exception">安全な接続に失敗しました</string>
<string name="error_unknown_host">サーバが見つかりませんでした</string>
@ -458,14 +456,14 @@
<string name="brightness_gesture_control_summary">ジェスチャーを使用して、プレーヤーの明るさを制御します</string>
<string name="file_deleted">ファイルを削除しました</string>
<string name="app_update_notification_channel_name">アプリの更新通知</string>
<string name="download_to_sdcard_error_message">まだ外部 SD カードにダウンロードできません。ダウンロードフォルダーの場所をリセットしますか\?</string>
<string name="download_to_sdcard_error_message">外部 SD カードにダウンロードできません。ダウンロードフォルダーの場所をリセットしますか\?</string>
<string name="saved_tabs_invalid_json">デフォルトのタブを使用します。保存されたタブの読み込みエラーが発生しました</string>
<string name="main_page_content_summary">メインページに表示されるタブ</string>
<string name="updates_setting_description">新しいバージョンが利用可能なときにアプリの更新を確認する通知を表示します</string>
<string name="msg_pending_downloads">ダウンロードから %s の保留中の転送を続行します</string>
<string name="pause_downloads_on_mobile">モバイルデータ通信に切り替え時に休止</string>
<string name="pause_downloads_on_mobile_desc">休止できないダウンロードが再開されます</string>
<string name="error_timeout">接続タイムアウト</string>
<string name="pause_downloads_on_mobile">従量制課金ネットワークの割り込み</string>
<string name="pause_downloads_on_mobile_desc">モバイルデータ通信に切り替える場合に便利ですが、一部のダウンロードは一時停止できません</string>
<string name="show_comments_title">コメントを表示</string>
<string name="show_comments_summary">無効にするとコメントの表示を停止します</string>
<string name="autoplay_title">自動再生</string>
<plurals name="comments">
@ -473,7 +471,27 @@
</plurals>
<string name="no_comments">コメントはありません</string>
<string name="error_unable_to_load_comments">コメントを読み込めませんでした</string>
<string name="direct_on_background">バックグラウンドで直接再生</string>
<string name="close">閉じる</string>
<string name="show_comments_title">コメントを表示</string>
<string name="error_timeout">接続タイムアウト</string>
<string name="enable_playback_resume_title">再生を再開</string>
<string name="enable_playback_resume_summary">最後に再生した位置を復元します</string>
<string name="enable_playback_state_lists_title">リスト内の位置</string>
<string name="enable_playback_state_lists_summary">リストに再生位置インジケーターを表示します</string>
<string name="settings_category_clear_data_title">データをクリア</string>
<string name="watch_history_states_deleted">再生位置を削除しました。</string>
<string name="missing_file">ファイルが移動または削除されました</string>
<string name="overwrite_failed">ファイルを上書きできません</string>
<string name="download_already_pending">この名前の保留中のダウンロードがあります</string>
<string name="error_postprocessing_stopped">ファイルの作業中に NewPipe が閉じられました</string>
<string name="error_insufficient_storage">デバイスに空き容量がありません</string>
<string name="error_progress_lost">ファイルが削除されたため、進行状況が失われました</string>
<string name="confirm_prompt">よろしいですか\?</string>
<string name="enable_queue_limit">ダウンロード キューの制限</string>
<string name="enable_queue_limit_desc">同時に1つのダウンロードが実行されます</string>
<string name="start_downloads">ダウンロードの開始</string>
<string name="pause_downloads">ダウンロードの一時停止</string>
<string name="downloads_storage_ask_title">ダウンロード先を尋ねる</string>
<string name="downloads_storage_ask_summary">ダウンロードのたびに保存する場所を尋ねます</string>
<string name="downloads_storage_ask_summary_kitkat">ダウンロードのたびに保存する場所を尋ねます。
\n外部 SD カードにダウンロードする場合は、このオプションをオンにしてください。</string>
</resources>

View File

@ -257,7 +257,6 @@
<string name="default_content_country_title">기본 콘텐츠 국가</string>
<string name="service_title">서비스</string>
<string name="settings_category_debug_title">디버그</string>
<string name="live">라이브 (LIVE)</string>
<string name="always">항상</string>
<string name="just_once">한번만</string>
<string name="toggle_orientation">디바이스 방향 토글</string>
@ -315,11 +314,6 @@
<string name="resize_fill">채우기</string>
<string name="resize_zoom">확대</string>
<string name="caption_auto_generated">자동 생성됨</string>
<string name="caption_font_size_settings_title">자막 폰트 크기</string>
<string name="smaller_caption_font_size">작은 폰트</string>
<string name="normal_caption_font_size">보통 폰트</string>
<string name="larger_caption_font_size">큰 폰트</string>
<string name="live_sync">동기화</string>
<string name="enable_leak_canary_title">LeakCanary 할성화</string>
<string name="enable_leak_canary_summary">힙 덤프 중 메모리 누수 점검으로 앱이 불안정해질 수 있습니다</string>
<string name="enable_disposed_exceptions_title">out-of-lifecycle 오류 보고</string>
@ -368,7 +362,6 @@
<string name="playback_tempo">템포</string>
<string name="playback_pitch">피치</string>
<string name="unhook_checkbox">영상과 소리 분리 (소리가 깨질 수 있음)</string>
<string name="playback_nightcore">나이트코어</string>
<string name="playback_default">기본</string>
<string name="no_streams_available_download">다운로드 가능한 스트림이 없습니다</string>
<string name="toast_no_player">이 파일을 재생할 수 있는 플레이어 앱이 없습니다</string>
@ -481,6 +474,5 @@
</plurals>
<string name="no_comments">댓글 없음</string>
<string name="error_unable_to_load_comments">댓글을 불러올 수 없음</string>
<string name="direct_on_background">백그라운드에서 바로 재생</string>
<string name="close">닫기</string>
</resources>

View File

@ -362,10 +362,6 @@
<string name="resize_zoom">Priartinti</string>
<string name="caption_auto_generated">Automatiškai sugeneruotas</string>
<string name="caption_font_size_settings_title">Antraštės šrifto dydis</string>
<string name="smaller_caption_font_size">Mažesnis šriftas</string>
<string name="normal_caption_font_size">Normalus šriftas</string>
<string name="larger_caption_font_size">Didesnis šriftas</string>
<string name="enable_leak_canary_title">Įjungti LeakCanary</string>
<string name="enable_leak_canary_summary">Atminties nutekėjimo stebėjimas gali padaryti programėlę nestabilią</string>

View File

@ -368,10 +368,6 @@
<string name="resize_zoom">Зумирај</string>
<string name="caption_auto_generated">Автоматски создадено</string>
<string name="caption_font_size_settings_title">Големина на преводот</string>
<string name="smaller_caption_font_size">Помал фонт</string>
<string name="normal_caption_font_size">Нормален фонт</string>
<string name="larger_caption_font_size">Поголем фонт</string>
<string name="enable_leak_canary_title">Вклучи LeakCanary</string>
<string name="enable_leak_canary_summary">Следењето на мемориските грешки може да ја прикочува апликацијата</string>
@ -414,7 +410,6 @@
<string name="playback_tempo">Темпо</string>
<string name="playback_pitch">Тон</string>
<string name="unhook_checkbox">Откачи (може да создаде мутации)</string>
<string name="playback_nightcore">„Nightcore“</string>
<string name="playback_default">Стандардно</string>
<string name="clear_views_history_title">Избриши историја на гледаност</string>
<string name="clear_views_history_summary">Ја брише историјата на пуштени видеа</string>

View File

@ -105,7 +105,7 @@
<string name="start">Start</string>
<string name="add">Nytt mål</string>
<string name="msg_url_malform">Feilaktig nettadresse eller manglende internettilknytning</string>
<string name="no_available_dir">Velg ei tilgjengelig nedlastingsmappe</string>
<string name="no_available_dir">Velg nedlastingsmappe senere i innstillingene</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
<string name="reCaptcha_title">reCAPTCHA-oppgave</string>
<string name="open_in_popup_mode">Åpne i oppsprettsmodus</string>
@ -143,7 +143,7 @@
<string name="show_search_suggestions_summary">Vis søkeforslag ved søk</string>
<string name="enable_search_history_title">Søkehistorikk</string>
<string name="enable_search_history_summary">Lagre søkemønster lokalt</string>
<string name="enable_watch_history_title">Historikk og mellomlagring</string>
<string name="enable_watch_history_title">Visningshistorikk</string>
<string name="enable_watch_history_summary">Lagre visningshistorikk</string>
<string name="settings_category_popup_title">Oppsprett</string>
<string name="filter">Filter</string>
@ -310,10 +310,6 @@
<string name="resize_fit">Tilpass</string>
<string name="resize_fill">Fyll</string>
<string name="resize_zoom">Forstørr</string>
<string name="caption_font_size_settings_title">Bildetekstens størrelse</string>
<string name="smaller_caption_font_size">Mindre skrift</string>
<string name="normal_caption_font_size">Normal skrift</string>
<string name="larger_caption_font_size">Større skrift</string>
<string name="use_inexact_seek_title">Bruk raskt unøyaktig blafring</string>
<string name="settings_category_debug_title">Feilretting</string>
<string name="file">Fil</string>
@ -383,7 +379,6 @@
<string name="enable_disposed_exceptions_title">Rapporter feil som opptrer utenfor sin levetid</string>
<string name="enable_disposed_exceptions_summary">Tving rapportering av uleverbare Rx-unntak utenom fragment eller aktivitetslevetid etter forkastelse</string>
<string name="unhook_checkbox">Avhekt (kan forårsake forvrenging)</string>
<string name="playback_nightcore">Nightcore</string>
<string name="privacy_policy_title">NewPipes personvernspraksis</string>
<string name="privacy_policy_encouragement">NewPipe-prosjektet tar ditt personvern veldig alvorlig. Derfor samler ikke programmet inn data uten ditt samtykke.
\nNewPipes personvernspraksis forklarer i detalj hvilken deta som sendes og lagres når du sender en kræsjrapport.</string>
@ -419,7 +414,7 @@
<string name="app_update_notification_channel_name">Programoppgraderingsmerknad</string>
<string name="app_update_notification_channel_description">Merknader for nye NewPipe-versjoner</string>
<string name="download_to_sdcard_error_title">Ekstern lagring utilgjengelig</string>
<string name="download_to_sdcard_error_message">Nedlasting til eksternt SD-kort er ikke mulig enda. Tilbakestill plassering av nedlastingsmappe\?</string>
<string name="download_to_sdcard_error_message">Nedlasting til eksternt SD-kort er ikke mulig. Tilbakestill plassering av nedlastingsmappe\?</string>
<string name="saved_tabs_invalid_json">Bruker forvalgte faner, feil under lagring av lagrede faner.</string>
<string name="restore_defaults">Gjenopprett forvalg</string>
<string name="restore_defaults_confirmation">Ønsker du å gjenopprette alt til forvalgene\?</string>
@ -467,8 +462,8 @@
<string name="stop">Stopp</string>
<string name="max_retry_msg">Maksimalt antall forsøk</string>
<string name="max_retry_desc">Maksimalt antall tilkoblingsforsøk før nedlastingen avblåses</string>
<string name="pause_downloads_on_mobile">Pause ved veksling til mobildata</string>
<string name="pause_downloads_on_mobile_desc">Nedlastinger som ikke kan pauses vil bli startet på nytt</string>
<string name="pause_downloads_on_mobile">Pause ved veksling til kvotebasert nett</string>
<string name="pause_downloads_on_mobile_desc">Nyttig ved veksling til mobildata, selv om noen nedlastinger ikke kan settes på pause</string>
<string name="show_comments_title">Vis kommentarer</string>
<string name="show_comments_summary">Skru av for å stoppe visning i kommentarer</string>
<string name="autoplay_title">Spill av automatisk</string>
@ -478,6 +473,29 @@
</plurals>
<string name="no_comments">Ingen kommenterer</string>
<string name="error_unable_to_load_comments">Kunne ikke laste inn kommentarer</string>
<string name="direct_on_background">Spill direkte i bakgrunnen</string>
<string name="close">Lukk</string>
<string name="missions_header_pending">Venter</string>
<string name="enable_playback_resume_title">Gjenoppta avspilling</string>
<string name="enable_playback_resume_summary">Fortsett der du slapp</string>
<string name="enable_playback_state_lists_title">Posisjon i lister</string>
<string name="enable_playback_state_lists_summary">Vis avspillingsposisjonsindikator i lister</string>
<string name="settings_category_clear_data_title">Tøm data</string>
<string name="watch_history_states_deleted">Avspillingsposisjon slettet</string>
<string name="missing_file">Fil flyttet eller slettet</string>
<string name="overwrite_unrelated_warning">En fil ved dette navnet finnes allerede</string>
<string name="overwrite_failed">Kan ikke overskrive filen</string>
<string name="download_already_pending">Det finnes en ventende nedlasting ved dette navnet</string>
<string name="error_postprocessing_stopped">NewPipe ble lukket under arbeid med filen</string>
<string name="error_insufficient_storage">Ingen ledig plass på enheten</string>
<string name="error_progress_lost">Framdrift gikk tapt, fordi filen ble slettet</string>
<string name="error_timeout">Tilkoblingsavbrudd</string>
<string name="confirm_prompt">Er du sikker\?</string>
<string name="enable_queue_limit">Begrens nedlastingskø</string>
<string name="enable_queue_limit_desc">Én nedlasting av gangen</string>
<string name="start_downloads">Start nedlastinger</string>
<string name="pause_downloads">Sett nedlastinger på pause</string>
<string name="downloads_storage_ask_title">Spør om hvor ting skal lastes ned til</string>
<string name="downloads_storage_ask_summary">Du vil bli spurt om hvor hver nedlasting skal plasseres</string>
<string name="downloads_storage_ask_summary_kitkat">Du vil bli spurt om hvor hver nedlasting skal plasseres.
\nSkru på dette valget hvis du vil laste ned til eksternt SD-kort.</string>
</resources>

View File

@ -367,7 +367,6 @@
<string name="playback_tempo">Tempo</string>
<string name="playback_pitch">Toon</string>
<string name="unhook_checkbox">Ontkoppelen (kan ruis veroorzaken)</string>
<string name="playback_nightcore">Nightcore</string>
<string name="playback_default">Standaard</string>
<string name="clear_views_history_title">Kijkgeschiedenis wissen</string>
<string name="clear_views_history_summary">Verwijdert de geschiedenis van afgespeelde streams</string>
@ -474,6 +473,5 @@
</plurals>
<string name="no_comments">Geen commentaren</string>
<string name="error_unable_to_load_comments">Kan commentaren niet laden</string>
<string name="direct_on_background">Rechtstreeks in achtergrond afspelen</string>
<string name="close">Sluiten</string>
</resources>

View File

@ -310,10 +310,6 @@
<string name="resize_fit">Inpassen</string>
<string name="resize_fill">Opvullen</string>
<string name="resize_zoom">Inzoomen</string>
<string name="caption_font_size_settings_title">Lettergrootte van bijschrift</string>
<string name="smaller_caption_font_size">Kleiner lettertype</string>
<string name="normal_caption_font_size">Normaal lettertype</string>
<string name="larger_caption_font_size">Groter lettertype</string>
<string name="drawer_header_action_paceholder_text">Hier zal binnenkort iets verschijnen ;D</string>
<string name="settings_category_debug_title">Foutopsporing</string>
<string name="caption_auto_generated">Automatisch gegenereerd</string>
@ -325,7 +321,6 @@
<string name="use_inexact_seek_summary">Minder exact spoelen laat de speler sneller posities zoeken met verminderde precisie</string>
<string name="auto_queue_title">Volgende stream automatisch in wachtrij plaatsen</string>
<string name="auto_queue_summary">Automatisch een gerelateerde stream toekennen bij het afspelen van de laatste stream in een niet-herhalende afspeelwachtlijst</string>
<string name="live_sync">SYNCHRONISEREN</string>
<string name="file">Bestand</string>
<string name="invalid_directory">Deze map bestaat niet</string>
<string name="invalid_source">Bestand/Inhoudsbron bestaat niet</string>
@ -367,7 +362,6 @@
<string name="playback_tempo">Tempo</string>
<string name="playback_pitch">Toon</string>
<string name="unhook_checkbox">Ontlinken (kan ruis veroorzaken)</string>
<string name="playback_nightcore">Nightcore</string>
<string name="playback_default">Standaard</string>
<string name="preferred_open_action_settings_title">Voorkeursactie voor openen</string>
<string name="preferred_open_action_settings_summary">Standaardactie bij openen van inhoud — %s</string>
@ -482,6 +476,5 @@
</plurals>
<string name="no_comments">Geen reacties</string>
<string name="error_unable_to_load_comments">Kan reacties niet laden</string>
<string name="direct_on_background">Direct spelen in achtergrond</string>
<string name="close">Sluiten</string>
</resources>

View File

@ -1,31 +1,500 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources><string name="main_bg_subtitle">ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਸਰਚ ਦਬਾਓ</string>
<string name="view_count_text">%1$s ਦੇਖੇ</string>
<string name="upload_date_text">%1$s ਤੇ ਪਬਲਿਸ਼ ਕੀਤਾ</string>
<string name="no_player_found">ਸਟਰੀਮ ਪਲੇਅਰ ਨਹੀਂ ਮਿਲਿਆ . ਤੁਸੀ VLC ਭਰਨਾ ਚਾਹੋਗੇ?</string>
<string name="no_player_found_toast">ਸਟਰੀਮ ਪਲੇਅਰ ਨਹੀਂ ਮਿਲਿਆ (ਤੁਸੀਂ vlc ਇੰਸਟਾਲ ਕਰ ਸਕਦੇ ਹੋ)</string>
<string name="install">ਭਰੋ</string>
<string name="cancel">ਨਹੀਂ</string>
<string name="open_in_browser">Browser ਚ ਖੋਲੋ</string>
<string name="open_in_popup_mode">Popup ਚ ਖੋਲੋ</string>
<string name="share">ਭੇਜੋ</string>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="main_bg_subtitle">ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਸਰਚ ਦਬਾਓ</string>
<string name="view_count_text">%1$s VIEWS</string>
<string name="upload_date_text">%1$s ਨੂੰ ਪਬਲਿਸ਼ ਕੀਤੀ ਗਈ</string>
<string name="no_player_found">"ਸਟ੍ਰੀਮ ਪਲੇਅਰ ਨਹੀਂ ਮਿਲਿਆ। ਤੁਸੀਂ VLC ਭਰਨਾ ਚਾਹੋਗੇ \?"</string>
<string name="no_player_found_toast">ਸਟ੍ਰੀਮ ਪਲੇਅਰ ਨਹੀਂ ਮਿਲਿਆ ਤੁਸੀਂ VLC ਇੰਸਟਾਲ ਕਰ ਸਕਦੇ ਹੋ.</string>
<string name="install">ਇੰਸਟਾਲ</string>
<string name="cancel">ਰੱਦ ਕਰੋ</string>
<string name="open_in_browser">ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ ਖੋਲੋ</string>
<string name="open_in_popup_mode">ਪੌਪ-ਅਪ ਵਿਚ ਖੋਲੋ</string>
<string name="share">ਸਾਂਝਾ ਕਰੋ</string>
<string name="download">ਡਾਊਨਲੋਡ</string>
<string name="controls_download_desc">ਡਾਊਨਲੋਡ ਸਟਰੀਮ ਫਾਈਲ.</string>
<string name="controls_download_desc">ਡਾਊਨਲੋਡ ਸਟਰੀਮ ਫਾਈਲ</string>
<string name="search">ਖੋਜੋ</string>
<string name="settings">ਟਿੰਗਾਂ</string>
<string name="settings">ਟਿੰਗਾਂ</string>
<string name="did_you_mean">ਕੀ ਤੁਹਾਡਾ ਮਤਲਬ: %1$s\?</string>
<string name="share_dialog_title">ਭੇਜ</string>
<string name="choose_browser">Browser ਚੁਣੋ</string>
<string name="screen_rotation">ਉਲਟਾਨਾ</string>
<string name="use_external_video_player_title">ਹੋਰ ਪਲੇਅਰ ਵਰਤਤ</string>
<string name="use_external_video_player_summary">ਕੁਝ ਵੀਡੀਓ ਰੈਸੋਲੂਸ਼ਨ ਚੁਣਨ ਨਾਲ ਆਡੀਓ ਮੌਜੂਦ ਨਹੀਂ ਹੋਵੇਗੀ</string>
<string name="share_dialog_title">ਸਾਂਝਾ ਕਰ</string>
<string name="choose_browser">ਬ੍ਰਾਊਜ਼ਰ ਚੁਣੋ</string>
<string name="screen_rotation">ਰੋਟੇਸ਼ਨ</string>
<string name="use_external_video_player_title">ਹੋਰ ਵੀਡੀਓ ਪਲੇਅਰ ਦੀ ਵਰਤੋਂ ਕਰ</string>
<string name="use_external_video_player_summary">ਕੁਝ ਰੇਸੋਲਿਯੁਸ਼ਨ ਤੇ ਆਵਾਜ਼ ਨੂੰ ਹਟਾਉਂਦਾ ਹੈ</string>
<string name="use_external_audio_player_title">ਬਾਹਰੀ ਆਡੀਓ ਪਲੇਅਰ ਦੀ ਵਰਤੋਂ ਕਰੋ</string>
<string name="popup_mode_share_menu_title">NewPipe ਪੋਪਉਪ ਮੋਡ</string>
<string name="subscribe_button_title">ਸਅਬਸਕਰਾਇਬ</string>
<string name="subscribed_button_title">ਮੈਂਬਰ ਬਣਏ</string>
<string name="channel_unsubscribed">ਚੈਨਲ ਸਦੱਸਤਾ ਰੱਦ ਕੀਤੀ ਗਈ</string>
<string name="subscription_change_failed">ਸਦੱਸਤਾ ਨੂੰ ਬਦਲਣ ਵਿਚ ਅਸਮਰੱਥ ਹੈ</string>
<string name="show_info">ਜਾਣਕਾਰੀ</string>
<string name="popup_mode_share_menu_title">NewPipe ਪੌਪ-ਅਪ ਮੋਡ</string>
<string name="subscribe_button_title">ਸਬਸਕ੍ਰਾਈਬ</string>
<string name="subscribed_button_title">ਸਬਸਕ੍ਰਾਈਬ ਕੀਤਾ ਹੈ</string>
<string name="channel_unsubscribed">ਚੈਨਲ ਅਨ-ਸਬਸਕ੍ਰਾਈਬ</string>
<string name="subscription_change_failed">ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਨੂੰ ਬਦਲਣ ਵਿਚ ਅਸਮਰੱਥ</string>
<string name="show_info">ਜਾਣਕਾਰੀ ਵੇਖੋ</string>
<string name="tab_main">ਮੁੱਖ</string>
</resources>
<string name="subscription_update_failed">ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਅੱਪਡੇਟ ਕਰਨ ਵਿਚ ਅਸਮਰੱਥ</string>
<string name="tab_subscriptions">ਸਬਸਕ੍ਰਿਪਸ਼ਨ</string>
<string name="tab_bookmarks">ਬੁੱਕਮਾਰਕ ਪਲੇਲਿਸਟਾਂ</string>
<string name="fragment_whats_new">ਨਵਾਂ ਕੀ ਹੈ</string>
<string name="controls_background_title">ਬੈਕਗਰਾਊਂਡ</string>
<string name="controls_popup_title">ਪੋਪ-ਅਪ</string>
<string name="controls_add_to_playlist_title">ਸ਼ਾਮਿਲ ਕਰੋ</string>
<string name="download_path_title">ਵੀਡੀਓ ਦਾ ਡਾਊਨਲੋਡ ਮਾਰਗ</string>
<string name="download_path_summary">ਡਾਉਨਲੋਡ ਕੀਤੇ ਵੀਡੀਓ ਨੂੰ ਸਟੋਰ ਕਰਨ ਦਾ ਮਾਰਗ</string>
<string name="download_path_dialog_title">ਵੀਡੀਓ ਲਈ ਡਾਊਨਲੋਡ ਮਾਰਗ ਭਰੋ</string>
<string name="download_path_audio_title">ਆਡੀਓ ਦਾ ਡਾਊਨਲੋਡ ਫੋਲਡਰ</string>
<string name="download_path_audio_summary">ਡਾਊਨਲੋਡ ਕੀਤੇ ਆਡੀਓ ਇੱਥੇ ਸਟੋਰ ਹਨ</string>
<string name="download_path_audio_dialog_title">ਆਡੀਓ ਫਾਈਲਾਂ ਲਈ ਡਾਊਨਲੋਡ ਮਾਰਗ ਭਰੋ</string>
<string name="autoplay_by_calling_app_title">ਆਟੋ ਪਲੇ</string>
<string name="autoplay_by_calling_app_summary">ਜਦੋਂ ਕਿਸੇ ਹੋਰ ਐਪ ਜਰੀਏ NewPipe ਨੂੰ ਖੋਲਿਆ ਜਾਂਦਾ ਹੈ ਤਾਂ ਇਹ ਵੀਡੀਓ ਚਲਾਉਂਦਾ ਹੈ</string>
<string name="default_resolution_title">Default Resolution</string>
<string name="default_popup_resolution_title">Default ਪੌਪ-ਅਪ Resolution</string>
<string name="show_higher_resolutions_title">ਉੱਚ ਰੇਸੋਲਿਯੁਸ਼ਨਾਂ ਵੀ ਦਿਖਾਓ</string>
<string name="show_higher_resolutions_summary">ਸਿਰਫ ਕੁੱਝ ਉਪਕਰਣ ਹੀ 2K/4K ਵੀਡੀਓ ਵਿਖਾਉਣ ਵਿਚ ਸਮਰਥਨ ਹੁੰਦੇ ਹਨ</string>
<string name="play_with_kodi_title">Kodi ਨਾਲ ਚਲਾਓ</string>
<string name="kore_not_found">Kore ਐਪ ਮੌਜੂਦ ਨਹੀਂ ਹੈ। ਕੀ ਤੁਸੀਂ ਇਸਨੂੰ ਇੰਸਟਾਲ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ \?</string>
<string name="show_play_with_kodi_title">\"Kodi ਨਾਲ ਚਲਾਓ\" ਵਿਕਲਪ ਦਿਖਾਓ</string>
<string name="show_play_with_kodi_summary">Kodi ਮੀਡੀਆ ਸੈਂਟਰ ਰਾਹੀਂ ਵੀਡੀਓ ਚਲਾਉਣ ਲਈ ਇੱਕ ਵਿਕਲਪ ਵਿਖਾਓ</string>
<string name="play_audio">ਆਡੀਓ</string>
<string name="default_audio_format_title">Default ਆਡੀਓ ਫਾਰਮੈਟ</string>
<string name="default_video_format_title">"Default ਵੀਡੀਓ ਫਾਰਮੈਟ"</string>
<string name="theme_title">ਥੀਮ</string>
<string name="light_theme_title">ਸਫੈਦ</string>
<string name="dark_theme_title">ਗੂੜਾ</string>
<string name="black_theme_title">ਕਾਲਾ</string>
<string name="popup_remember_size_pos_title">ਪੌਪ-ਅਪ ਦਾ ਆਕਾਰ ਅਤੇ ਸਥਿਤੀ ਯਾਦ ਰੱਖੋ</string>
<string name="popup_remember_size_pos_summary">ਪੌਪ-ਅਪ ਦਾ ਆਖਰੀ ਅਕਾਰ ਅਤੇ ਸਥਿਤੀ ਯਾਦ ਰੱਖੋ</string>
<string name="use_inexact_seek_title">ਤੇਜ਼ ਪਰ inexact seek ਵਰਤੋ</string>
<string name="use_inexact_seek_summary">Inexact seek ਵੀਡੀਓ ਨੂੰ ਤੇਜ਼ ਪਰ ਅਣ-ਸਟੀਕ ਢੰਗ ਨਾਲ ਅੱਗੇ-ਪਿੱਛੇ ਲਿਜਾਂਦਾ ਹੈ</string>
<string name="download_thumbnail_title">ਥੰਬਨੇਲ ਲੋਡ ਕਰੋ</string>
<string name="download_thumbnail_summary">ਥੰਬਨੇਲ ਲੋਡ, ਡਾਟਾ ਦੀ ਬਚਤ ਅਤੇ ਮੈਮੋਰੀ ਦੀ ਵਰਤੋਂ ਨੂੰ ਰੋਕਣ ਲਈ ਇਸਨੂੰ ਬੰਦ ਕਰੋ। ਇਸ ਵਿਚ ਤਬਦੀਲੀ ਕਰਨ ਨਾਲ ਇਨ-ਮੈਮੋਰੀ ਅਤੇ ਆਨ-ਡਿਸਕ ਚਿੱਤਰ cache ਦੋਵੇਂ ਮਿਟ ਜਾਣਗੇ।</string>
<string name="thumbnail_cache_wipe_complete_notice">ਚਿੱਤਰ cache ਮਿਟਾ ਦਿੱਤੀ ਗਈ ਹੈ</string>
<string name="metadata_cache_wipe_title">Cached metadata ਮਿਟਾਓ</string>
<string name="metadata_cache_wipe_summary">ਸਾਰੇ cached ਵੈੱਬ-ਪੇਜਾਂ ਦਾ ਡਾਟਾ ਮਿਟਾਓ</string>
<string name="metadata_cache_wipe_complete_notice">Metadata cache ਮਿਟਾ ਦਿੱਤੀ ਗਈ ਹੈ</string>
<string name="auto_queue_title">ਅਗਲੀ ਸਟ੍ਰੀਮ ਨੂੰ ਆਟੋ-ਕਤਾਰਬੱਧ ਕਰੋ</string>
<string name="auto_queue_summary">"ਇੱਕ ਨਾ-ਦੁਹਰਾਉਣ ਵਾਲੀ ਕਤਾਰ ਵਿੱਚ ਆਖਰੀ ਸਟ੍ਰੀਮ ਨੂੰ ਚਲਾਉਣ ਵੇਲੇ ਆਪਣੇ-ਆਪ ਸ਼ਾਮਿਲ ਕਰੋ"</string>
<string name="player_gesture_controls_title">ਵੀਡੀਓ ਪਲੇਯਰ gesture ਕੰਟਰੋਲ</string>
<string name="player_gesture_controls_summary">ਸਕ੍ਰੀਨ ਲਾਈਟ ਅਤੇ ਆਵਾਜ਼ ਨੂੰ ਕੰਟਰੋਲ ਕਰਨ ਲਈ gestures ਦੀ ਵਰਤੋਂ ਕਰੋ</string>
<string name="show_search_suggestions_title">ਖੋਜ ਸੁਝਾਅ</string>
<string name="show_search_suggestions_summary">ਖੋਜ ਕਰਨ ਵੇਲੇ ਸੁਝਾਅ ਦਿਖਾਓ</string>
<string name="enable_search_history_title">ਖੋਜ ਸੂਚੀ</string>
<string name="enable_search_history_summary">ਖੋਜ ਸੂਚੀ ਨੂੰ locally ਸਟੋਰ ਕਰੋ</string>
<string name="enable_watch_history_title">ਪਹਿਲਾਂ ਤੋਂ ਵੇਖੀਆਂ ਹੋਈਆਂ ਚੀਜ਼ਾਂ ਦੀ ਸੂਚੀ</string>
<string name="enable_watch_history_summary">ਦੇਖੇ ਗਏ ਵਿਡੀਓਜ਼ ਦੀ ਸੂਚੀ ਰੱਖੋ</string>
<string name="resume_on_audio_focus_gain_title">Focus gain ਹੋਣ ਤੇ ਦੋਬਾਰਾ ਚਲਾਓ</string>
<string name="resume_on_audio_focus_gain_summary">ਰੁਕਾਵਟਾਂ (ਜਿਵੇਂ ਕਿ ਫੋਨ ਕਾਲਾਂ,ਮੈਸੇਜ) ਤੋਂ ਬਾਅਦ ਪਲੇਅ-ਬੈਕ ਜਾਰੀ ਰੱਖੋ</string>
<string name="download_dialog_title">ਡਾਊਨਲੋਡ</string>
<string name="next_video_title">ਅੱਗੇ</string>
<string name="show_next_and_similar_title">\'ਅੱਗੇ\' ਅਤੇ \'ਸਮਾਨਅੰਤਰ\' ਵੀਡੀਓ ਦਿਖਾਓ</string>
<string name="show_hold_to_append_title">\"Hold to append\" ਸੁਝਾਅ ਦਿਖਾਓ</string>
<string name="show_hold_to_append_summary">ਵੀਡੀਓ ਵੇਰਵੇ ਪੰਨੇ ਤੇ ਬੈਕਗ੍ਰਾਉਂਡ ਜਾਂ ਪੌਪ-ਅਪ ਬਟਨ ਦਬਾਉਣ ਤੇ ਸੰਕੇਤ ਦਿਖਾਓ</string>
<string name="url_not_supported_toast">ਅਣ-ਸਹਾਇਕ URL</string>
<string name="default_content_country_title">ਮੂਲ ਦੇਸ਼ Content</string>
<string name="service_title">ਸੇਵਾ</string>
<string name="settings_category_player_title">ਪਲੇਯਰ</string>
<string name="settings_category_player_behavior_title">ਵਿਵਹਾਰ</string>
<string name="settings_category_video_audio_title">ਵੀਡੀਓ ਅਤੇ ਆਡੀਓ</string>
<string name="settings_category_history_title">ਹਿਸਟਰੀ ਅਤੇ cache</string>
<string name="settings_category_popup_title">ਪੌਪ-ਅਪ</string>
<string name="settings_category_appearance_title">ਦਿੱਖ</string>
<string name="settings_category_other_title">ਹੋਰ</string>
<string name="settings_category_debug_title">ਡੀ-ਬੱਗ</string>
<string name="background_player_playing_toast">ਬੈਕਗ੍ਰਾਉਂਡ ਵਿੱਚ ਚੱਲ ਰਿਹਾ ਹੈ</string>
<string name="popup_playing_toast">ਪੌਪ-ਅਪ ਮੋਡ ਵਿੱਚ ਚੱਲ ਰਿਹਾ ਹੈ</string>
<string name="background_player_append">ਬੈਕਗ੍ਰਾਉਂਡ ਪਲੇਅਰ ਵਿੱਚ ਕਤਾਰਬੱਧ</string>
<string name="popup_playing_append">ਪੌਪ-ਅਪ ਪਲੇਯਰ ਵਿੱਚ ਕਤਾਰਬੱਧ</string>
<string name="play_btn_text">ਪਲੇ</string>
<string name="content">Content</string>
<string name="show_age_restricted_content_title">ਉਮਰ ਪ੍ਰਤੀਬੰਧਿਤ Content</string>
<string name="video_is_age_restricted">ਉਮਰ ਪ੍ਰਤੀਬੰਧਿਤ ਵੀਡੀਓ ਦਿਖਾਓ ਸੈਟਿੰਗਸ ਤੋਂ ਅਜਿਹੀ ਸਮੱਗਰੀ ਦੀ ਆਗਿਆ ਦੇਣੀ ਸੰਭਵ ਹੈ.</string>
<string name="duration_live">ਲਾਈਵ</string>
<string name="downloads">ਡਾਊਨਲੋਡਸ</string>
<string name="downloads_title">ਡਾਊਨਲੋਡਸ</string>
<string name="error_report_title">Error ਰਿਪੋਰਟ</string>
<string name="all">ਸਾਰੇ</string>
<string name="channel">ਚੈਨਲ</string>
<string name="playlist">ਪਲੇ ਸੂਚੀ</string>
<string name="yes">ਹਾਂ</string>
<string name="later">ਬਾਅਦ ਵਿੱਚ</string>
<string name="disabled">ਬੰਦ ਕੀਤਾ</string>
<string name="filter">ਫਿਲਟਰ</string>
<string name="refresh">ਤਾਜ਼ਾ ਕਰੋ</string>
<string name="clear">ਮਿਟਾਓ</string>
<string name="popup_resizing_indicator_title">ਮੁੜ ਆਕਾਰ</string>
<string name="best_resolution">ਵਧੀਆ Resolution</string>
<string name="undo">ਵਾਪਿਸ</string>
<string name="play_all">ਸਾਰੇ ਚਲਾਓ</string>
<string name="always">ਹਮੇਸ਼ਾ</string>
<string name="just_once">ਸਿਰਫ਼ ਇਸ ਬਾਰ</string>
<string name="file">ਫਾਈਲ</string>
<string name="notification_channel_name">NewPipe ਨੋਟੀਫਿਕੇਸ਼ਨ</string>
<string name="notification_channel_description">NewPipe ਬੈਕਗ੍ਰਾਉਂਡ ਅਤੇ ਪੌਪ-ਅਪ ਪਲੇਅਰਾਂ ਲਈ ਸੂਚਨਾਵਾਂ</string>
<string name="unknown_content">ਅਣਜਾਣ</string>
<string name="toggle_orientation">Orientation ਬਦਲੋ</string>
<string name="switch_to_background">ਬੈਕਗਰਾਊਂਡ ਵਿੱਚ ਬਦਲੋ</string>
<string name="switch_to_popup">ਪੌਪ-ਅਪ ਵਿੱਚ ਬਦਲੋ</string>
<string name="switch_to_main">ਮੁੱਖ ਵਿੱਚ ਬਦਲੋ</string>
<string name="import_data_title">Database ਆਯਾਤ ਕਰੋ</string>
<string name="export_data_title">Database ਨਿਰਯਾਤ ਕਰੋ</string>
<string name="import_data_summary">ਤੁਹਾਡੀ ਮੌਜੂਦਾ ਹਿਸਟਰੀ ਅਤੇ ਸਬਸਕ੍ਰਿਪਸ਼ਨਸ ਨੂੰ Override ਕਰਦਾ ਹੈ</string>
<string name="export_data_summary">ਹਿਸਟਰੀ, ਸੁਬਸਕ੍ਰਿਪਸ਼ਨਸ ਅਤੇ ਪਲੇ-ਸੂਚੀ ਨਿਰਯਾਤ ਕਰੋ</string>
<string name="clear_views_history_title">Watch ਹਿਸਟਰੀ ਮਿਟਾਓ</string>
<string name="clear_views_history_summary">ਚਲਾਈਆਂ ਗਈਆਂ ਸਟ੍ਰੀਮਾਂ ਦੀ ਸੂਚੀ ਮਿਟਾਉਂਦਾ ਹੈ</string>
<string name="delete_view_history_alert">ਕੀ ਸਾਰੀ watch ਹਿਸਟਰੀ ਮਿਟਾ ਦਿੱਤੀ ਜਾਵੇ \?</string>
<string name="clear_search_history_title">ਖੋਜ ਸੂਚੀ ਮਿਟਾਓ</string>
<string name="clear_search_history_summary">ਖੋਜ ਸ਼ਬਦਾਂ ਦੀ ਸੂਚੀ ਮਿਟਾਉਂਦਾ ਹੈ</string>
<string name="delete_search_history_alert">ਕੀ ਸਾਰੀ ਖੋਜ ਸੂਚੀ ਮਿਟਾ ਦਿਤੀ ਜਾਵੇ \?</string>
<string name="search_history_deleted">ਖੋਜ ਸੂਚੀ ਮਿਟਾ ਦਿਤੀ ਗਈ ਹੈ.</string>
<string name="general_error">ERROR</string>
<string name="network_error">ਨੈੱਟਵਰਕ ERROR</string>
<string name="could_not_load_thumbnails">ਸਾਰੇ ਥੰਬਨੇਲ ਲੋਡ ਨਹੀਂ ਹੋ ਸਕੇ</string>
<string name="youtube_signature_decryption_error">ਵੀਡੀਓ URL ਦਸਤਖਤ ਡੀਕ੍ਰਿਪਟ ਨਹੀਂ ਹੋ ਸਕਿਆ</string>
<string name="parsing_error">ਵੈਬਸਾਈਟ parse ਨਹੀਂ ਹੋ ਸਕੀ</string>
<string name="light_parsing_error">ਵੈਬਸਾਈਟ ਪੂਰੀ ਤਰਾਂ Parse ਨਹੀਂ ਹੋ ਸਕੀ</string>
<string name="content_not_available">Content ਉਪਲਬਧ ਨਹੀਂ ਹੈ</string>
<string name="could_not_setup_download_menu">ਡਾਊਨਲੋਡ ਮੀਨੂੰ ਸੈਟ-ਅਪ ਨਹੀਂ ਹੋ ਸਕਿਆ</string>
<string name="live_streams_not_supported">ਲਾਈਵ ਸਟ੍ਰੀਮ ਅਜੇ supported ਨਹੀਂ ਹਨ</string>
<string name="could_not_get_stream">ਕੋਈ ਸਟ੍ਰੀਮ ਪ੍ਰਾਪਤ ਨਹੀਂ ਹੋ ਸਕੀ</string>
<string name="could_not_load_image">ਚਿੱਤਰ ਲੋਡ ਨਹੀਂ ਹੋ ਸਕਿਆ</string>
<string name="app_ui_crash">ਐਪ/UI crashed</string>
<string name="player_stream_failure">ਇਸ ਸਟ੍ਰੀਮ ਨੂੰ ਚਲਾਇਆ ਨਹੀਂ ਜਾ ਸਕਿਆ</string>
<string name="player_unrecoverable_failure">ਅਣਚਾਹਾ ਪਲੇਅਰ ERROR ਆਇਆ ਹੈ</string>
<string name="player_recoverable_failure">ਪਲੇਅਰ ERROR ਤੋਂ Recover ਹੋ ਰਿਹਾ ਹੈ</string>
<string name="external_player_unsupported_link_type">External ਪਲੇਅਰ ਇਸ ਕਿਸਮ ਦੇ ਲਿੰਕਾਂ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦੇ</string>
<string name="invalid_url_toast">ਅਵੈਧ URL</string>
<string name="video_streams_empty">ਕੋਈ ਵੀ ਵੀਡੀਓ ਸਟ੍ਰੀਮ ਨਹੀਂ ਮਿਲੀ</string>
<string name="audio_streams_empty">ਕੋਈ ਵੀ ਆਡੀਓ ਸਟ੍ਰੀਮ ਨਹੀਂ ਮਿਲੀ</string>
<string name="invalid_directory">ਅਜਿਹਾ ਕੋਈ ਫੋਲਡਰ ਨਹੀਂ</string>
<string name="invalid_source">ਅਜਿਹਾ ਕੋਈ ਫਾਈਲ/Content ਸਰੋਤ ਨਹੀਂ ਹੈ</string>
<string name="invalid_file">ਫਾਈਲ ਮੌਜੂਦ ਨਹੀਂ ਹੈ ਜਾਂ ਇਸ ਨੂੰ ਪੜ੍ਹਨ ਜਾਂ ਲਿਖਣ ਦੀ ਆਗਿਆ ਨਹੀਂ ਹੈ</string>
<string name="file_name_empty_error">ਫਾਈਲ ਨਾਮ ਖਾਲੀ ਨਹੀਂ ਹੋ ਸਕਦਾ</string>
<string name="error_occurred_detail">ਇੱਕ ERROR ਆਇਆ ਹੈ: %1$s</string>
<string name="no_streams_available_download">ਡਾਊਨਲੋਡ ਕਰਨ ਲਈ ਕੋਈ ਸਟ੍ਰੀਮ ਉਪਲਬਧ ਨਹੀਂ ਹੈ</string>
<string name="sorry_string">ਮੁਆਫ ਕਰਨਾ, ਅਜਿਹਾ ਨਹੀਂ ਹੋਣਾ ਚਾਹੀਦਾ ਸੀ.</string>
<string name="error_report_button_text">ਈ-ਮੇਲ ਦੁਆਰਾ ERROR ਦੀ ਰਿਪੋਰਟ ਕਰੋ</string>
<string name="error_snackbar_message">ਮੁਆਫ ਕਰਨਾ, ਕੁਝ ERROR ਹੋਏ ਹਨ.</string>
<string name="error_snackbar_action">ਰਿਪੋਰਟ</string>
<string name="what_device_headline">ਜਾਣਕਾਰੀ:</string>
<string name="what_happened_headline">ਕੀ ਹੋਇਆ ਹੈ:</string>
<string name="info_labels">ਕਿਸ ਬਾਰੇ:\\nRequest:\\nContent ਭਾਸ਼ਾ:\\nService:\\nGMT ਸਮਾਂ:\\nPackage:\\nVersion:\\nOS version:</string>
<string name="your_comment">ਤੁਹਾਡੀ ਟਿੱਪਣੀ (ਅੰਗਰੇਜ਼ੀ ਵਿਚ):</string>
<string name="error_details_headline">ਵੇਰਵੇ:</string>
<string name="list_thumbnail_view_description">ਵੀਡੀਓ preview thumbnail</string>
<string name="detail_thumbnail_view_description">ਵੀਡੀਓ preview thumbnail</string>
<string name="detail_uploader_thumbnail_view_description">ਅਪਲੋਡਰ ਦਾ ਅਵਤਾਰ thumbnail</string>
<string name="detail_likes_img_view_description">ਪਸੰਦ</string>
<string name="detail_dislikes_img_view_description">ਨਾਪਸੰਦ</string>
<string name="use_tor_title">TOR ਦੀ ਵਰਤੋਂ ਕਰੋ</string>
<string name="use_tor_summary">(ਪ੍ਰਯੋਗ ਅਧੀਨ) ਗੋਪਨੀਯਤਾ ਲਈ TOR ਦੁਆਰਾ ਟਰੈਫਿਕ ਨੂੰ ਜਬਰੀ Download ਹੋਣ ਲਈ ਮਜਬੂਰ ਕਰੋ (ਸਟ੍ਰੀਮਿੰਗ ਵੀਡੀਓ ਅਜੇ supported ਨਹੀਂ ਹਨ).</string>
<string name="report_error">ERROR ਰਿਪੋਰਟ ਕਰੋ</string>
<string name="user_report">ਯੂਸਰ ਰਿਪੋਰਟ</string>
<string name="search_no_results">ਕੋਈ ਨਤੀਜੇ ਨਹੀਂ</string>
<string name="empty_subscription_feed_subtitle">ਇਥੇ ਦਾ ਸੁੰਨਾਪਨ ਦੂਰ ਕਰਨ ਲਈ ਕੋਈ ਚੈਨਲ ਸਬਸਕ੍ਰਾਇਬ ਕਰੋ</string>
<string name="detail_drag_description">ਕਤਾਰਬੱਧ ਕਰਨ ਲਈ ਖਿੱਚੋ</string>
<string name="err_dir_create">ਡਾਊਨਲੋਡ ਡਾਇਰੈਕਟਰੀ ਨਹੀਂ ਬਣਾਈ ਜਾ ਸਕਦੀ \'%1$s\'</string>
<string name="info_dir_created">ਡਾਊਨਲੋਡ ਡਾਇਰੈਕਟਰੀ ਬਣਾਈ ਗਈ \'%1$s\'</string>
<string name="video">ਵੀਡੀਓ</string>
<string name="audio">ਆਡੀਓ</string>
<string name="retry">ਦੋਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ</string>
<string name="storage_permission_denied">ਸਟੋਰੇਜ਼ Access ਨੂੰ ਅਸਵੀਕਾਰ ਕੀਤਾ ਗਿਆ</string>
<string name="short_thousand">ਹਜ਼ਾਰ</string>
<string name="short_million">ਮਿਲੀਅਨ</string>
<string name="short_billion">ਬਿਲੀਅਨ</string>
<string name="no_subscribers">ਕੋਈ ਸਬਸਕ੍ਰਾਇਬਰ ਨਹੀਂ</string>
<plurals name="subscribers">
<item quantity="one">ਸਬਸਕ੍ਰਾਇਬਰ</item>
<item quantity="other">ਸਬਸਕ੍ਰਾਇਬਰਸ</item>
</plurals>
<string name="no_views">ਕੋਈ views ਨਹੀਂ</string>
<plurals name="views">
<item quantity="one">%s view</item>
<item quantity="other">%s views</item>
</plurals>
<string name="no_videos">ਕੋਈ ਵੀਡੀਓ ਨਹੀਂ</string>
<plurals name="videos">
<item quantity="one">ਵੀਡੀਓ</item>
<item quantity="other">ਵੀਡੀਓਜ਼</item>
</plurals>
<string name="start">ਸ਼ੁਰੂ ਕਰੋ</string>
<string name="pause">ਰੋਕੋ</string>
<string name="view">ਪਲੇ</string>
<string name="create">ਬਣਾਓ</string>
<string name="delete">ਮਿਟਾਓ</string>
<string name="delete_one">ਇੱਕ ਮਿਟਾਓ</string>
<string name="delete_all">ਸਾਰਾ ਮਿਟਾਓ</string>
<string name="checksum">ਚੈੱਕ-ਸਮ</string>
<string name="dismiss">ਬਰਖਾਸਤ ਕਰੋ</string>
<string name="rename">ਨਾਮ ਬਦਲੋ</string>
<string name="add">ਨਵਾਂ ਮਿਸ਼ਨ</string>
<string name="finish">ਠੀਕ ਹੈ</string>
<string name="msg_name">ਫਾਈਲ ਦਾ ਨਾਮ</string>
<string name="msg_threads">threads</string>
<string name="msg_error">ERROR</string>
<string name="msg_server_unsupported">Unsupported ਸਰਵਰ</string>
<string name="msg_exists">ਫਾਈਲ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ</string>
<string name="msg_url_malform">ਖਰਾਬ URL ਜਾਂ ਇੰਟਰਨੈਟ ਉਪਲਬਧ ਨਹੀਂ ਹੈ</string>
<string name="msg_running">NewPipe ਡਾਊਨਲੋਡ ਹੋ ਰਿਹਾ ਹੈ</string>
<string name="msg_running_detail">ਵੇਰਵਿਆਂ ਲਈ ਖੋਲੋ</string>
<string name="msg_wait">ਕ੍ਰਿਪਾ ਕਰਕੇ ਉਡੀਕ ਕਰੋ…</string>
<string name="msg_copied">ਕਲਿਪ-ਬੋਰਡ ਵਿੱਚ ਕਾਪੀ ਹੋ ਗਿਆ ਹੈ</string>
<string name="no_available_dir">ਬਾਅਦ ਵਿੱਚ ਸੈਟਿੰਗਾਂ ਵਿਚੋਂ ਇੱਕ ਡਾਉਨਲੋਡ ਫੋਲਡਰ ਨੂੰ ਚੁਣੋ</string>
<string name="msg_popup_permission">ਪੌਪ-ਅਪ ਮੋਡ ਵਿੱਚ ਖੋਲ੍ਹਣ ਵਾਸਤੇ ਇਸ ਇਜਾਜ਼ਤ ਦੀ ਲੋੜ ਹੈ</string>
<string name="one_item_deleted">1 ਆਈਟਮ ਮਿਟਾਈ ਗਈ.</string>
<string name="reCaptchaActivity">ReCaptcha</string>
<string name="reCaptcha_title">ReCaptcha ਚੁਣੌਤੀ</string>
<string name="recaptcha_request_toast">ReCaptcha ਚੁਣੌਤੀ ਲਈ ਬੇਨਤੀ</string>
<string name="settings_category_downloads_title">ਡਾਊਨਲੋਡ</string>
<string name="settings_file_charset_title">ਫਾਈਲ ਨਾਮ ਵਿੱਚ ਪ੍ਰਵਾਨਿਤ ਅੱਖਰ</string>
<string name="settings_file_replacement_character_summary">ਗਲਤ ਅੱਖਰ ਇਸ Value ਨਾਲ ਤਬਦੀਲ ਕੀਤੇ ਜਾਣਗੇ</string>
<string name="settings_file_replacement_character_title">Replacement ਅੱਖਰ</string>
<string name="charset_letters_and_digits">ਅੱਖਰ ਅਤੇ ਅੰਕ</string>
<string name="charset_most_special_characters">ਬਹੁਤੇ ਖ਼ਾਸ ਅੱਖਰ</string>
<string name="toast_no_player">ਇਸ ਫਾਈਲ ਨੂੰ ਚਲਾਉਣ ਲਈ ਕੋਈ ਐਪ ਇੰਸਟਾਲ ਨਹੀਂ ਹੈ</string>
<string name="title_activity_about">NewPipe ਬਾਰੇ</string>
<string name="action_settings">ਸੈਟਿੰਗਾਂ</string>
<string name="action_about">ਐਪ ਬਾਰੇ</string>
<string name="title_licenses">ਥਰਡ-ਪਾਰਟੀ ਲਾਇਸੈਂਸ</string>
<string name="copyright" formatted="true">© %1$s ਵਲੋਂ %2$s, %3$s ਅਧੀਨ</string>
<string name="error_unable_to_load_license">ਲਾਇਸੈਂਸ ਲੋਡ ਨਹੀਂ ਹੋ ਸਕਿਆ</string>
<string name="action_open_website">ਵੈਬਸਾਈਟ ਖੋਲ੍ਹੋ</string>
<string name="tab_about">ਐਪ ਬਾਰੇ</string>
<string name="tab_contributors">ਯੋਗਦਾਨ ਪਾਉਣ ਵਾਲੇ</string>
<string name="tab_licenses">ਲਾਇਸੈਂਸ</string>
<string name="app_description">ਐਂਡਰਾਇਡ ਤੇ ਮੁਫਤ ਲਾਈਟਵੇਟ ਸਟ੍ਰੀਮਿੰਗ.</string>
<string name="contribution_title">ਯੋਗਦਾਨ ਪਾਓ</string>
<string name="contribution_encouragement">ਭਾਵੇਂ ਤੁਹਾਡੇ ਕੋਲ ਵਿਚਾਰ ਹਨ; ਅਨੁਵਾਦ, ਡਿਜ਼ਾਈਨ ਬਦਲਾਵ, ਕੋਡ ਦੀ ਸਫਾਈ, ਜਾਂ ਅਸਲ ਭਾਰੀ ਕੋਡ ਬਦਲਾਵ — ਹਰ ਮਦਦ ਦਾ ਸਦਾ ਸਵਾਗਤ ਹੈ. ਜਿੰਨਾ ਇਸ ਨੂੰ ਜ਼ਿਆਦਾ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਉੱਨਾ ਹੀ ਇਹ ਬਿਹਤਰ ਹੁੰਦਾ ਹੈ!</string>
<string name="view_on_github">GitHub ਤੇ ਵੇਖੋ</string>
<string name="donation_title">ਦਾਨ ਕਰੋ</string>
<string name="donation_encouragement">NewPipe ਵਲੰਟੀਅਰਾਂ ਦੁਆਰਾ ਵਿਕਸਤ ਕੀਤੀ ਗਈ ਹੈ ਜੋ ਤੁਹਾਡੇ ਲਈ ਬਿਹਤਰ ਅਨੁਭਵ ਲਿਆਉਣ ਲਈ ਸਮਾਂ ਬਿਤਾਉਂਦੇ ਹਨ. ਇੱਕ ਕੱਪ ਕਾਫੀ ਦਾ ਆਨੰਦ ਲੈਂਦੇ ਹੋਏ ਡਿਵੈਲਪਰਾਂ ਨੂੰ NewPipe ਨੂੰ ਹੋਰ ਵਧੀਆ ਬਣਾਉਣ ਵਿੱਚ ਸਹਾਇਤਾ ਲਈ ਵਾਪਸ ਦਿਓ.</string>
<string name="give_back">ਵਾਪਸ ਦਿਓ</string>
<string name="website_title">ਵੈਬਸਾਈਟ</string>
<string name="website_encouragement">ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਅਤੇ ਖ਼ਬਰਾਂ ਲਈ NewPipe ਵੈਬਸਾਈਟ ਵੇਖੋ.</string>
<string name="app_license_title">NewPipe\'s ਲਾਇਸੈਂਸ</string>
<string name="app_license">NewPipe ਇੱਕ ਕਾੱਪੀਲਿਫਟ ਮੁਫ਼ਤ ਸਾੱਫਟਵੇਅਰ ਹੈ: ਤੁਸੀਂ ਇਸ ਦੀ ਵਰਤੋਂ, ਅਧਿਐਨ ਅਤੇ ਇਸ ਨੂੰ ਸਾਂਝਾ ਕਰ ਸਕਦੇ ਹੋ ਅਤੇ ਇਸ ਵਿੱਚ ਆਪਣੀ ਮਰਜ਼ੀ ਅਨੁਸਾਰ ਸੁਧਾਰ ਸਕਦੇ ਹੋ. ਖਾਸ ਤੌਰ \'ਤੇ ਤੁਸੀਂ ਇਸ ਨੂੰ GNU ਜਨਰਲ ਪਬਲਿਕ ਲਾਇਸੈਂਸ ਦੀਆਂ ਸ਼ਰਤਾਂ ਦੇ ਅਧੀਨ ਵੰਡ ਸਕਦੇ ਹੋ / ਜਾਂ ਸੰਸ਼ੋਧਿਤ ਕਰ ਸਕਦੇ ਹੋ ਜਿਵੇਂ ਕਿ ਮੁਫਤ ਸਾੱਫਟਵੇਅਰ ਫਾਊਂਡੇਸ਼ਨ ਦੁਆਰਾ ਪ੍ਰਕਾਸ਼ਤ ਕੀਤਾ ਗਿਆ ਹੈ, ਜਾਂ ਤਾਂ ਲਾਇਸੈਂਸ ਦਾ ਵਰਜ਼ਨ 3, ਜਾਂ (ਤੁਹਾਡੇ ਵਿਕਲਪ\' ਤੇ) ਬਾਅਦ ਦਾ ਕੋਈ ਸੰਸਕਰਣ.</string>
<string name="read_full_license">ਲਾਇਸੈਂਸ ਪੜ੍ਹੋ</string>
<string name="title_activity_history">ਹਿਸਟਰੀ</string>
<string name="title_history_search">ਖੋਜਿਆ ਗਿਆ</string>
<string name="title_history_view">ਵੇਖਿਆ ਗਿਆ</string>
<string name="history_disabled">ਹਿਸਟਰੀ ਬੰਦ ਕੀਤੀ ਹੋਈ ਹੈ</string>
<string name="action_history">ਹਿਸਟਰੀ</string>
<string name="history_empty">ਹਿਸਟਰੀ ਖ਼ਾਲੀ ਹੈ</string>
<string name="history_cleared">ਹਿਸਟਰੀ ਮਿਟਾ ਦਿੱਤੀ ਗਈ ਹੈ</string>
<string name="item_deleted">ਆਈਟਮ ਮਿਟਾ ਦਿੱਤੀ ਗਈ ਹੈ</string>
<string name="delete_item_search_history">ਕੀ ਤੁਸੀਂ ਇਸ ਚੀਜ਼ ਨੂੰ ਖੋਜ ਸੂਚੀ ਵਿੱਚੋਂ ਮਿਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ\?</string>
<string name="delete_stream_history_prompt">ਕੀ ਤੁਸੀਂ ਇਸ ਨੂੰ ਵੇਖੀ ਗਈ ਸੂਚੀ ਵਿੱਚੋਂ ਮਿਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ \?</string>
<string name="delete_all_history_prompt">ਕੀ ਤੁਸੀਂ ਸੱਚਮੁੱਚ ਹਿਸਟਰੀ ਤੋਂ ਸਾਰੀਆਂ ਆਈਟਮਾਂ ਨੂੰ ਮਿਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ\?</string>
<string name="title_last_played">ਆਖਰੀ ਚਲਾਈ ਗਈ</string>
<string name="title_most_played">ਸਭ ਤੋਂ ਜਿਆਦਾ ਚਲਾਈ ਗਈ</string>
<string name="main_page_content">ਮੁੱਖ ਪੰਨੇ ਦੀ ਸਮੱਗਰੀ</string>
<string name="blank_page_summary">ਖਾਲੀ ਪੇਜ</string>
<string name="kiosk_page_summary">Kiosk ਪੇਜ</string>
<string name="subscription_page_summary">ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਪੇਜ</string>
<string name="feed_page_summary">ਫੀਡ ਪੇਜ</string>
<string name="channel_page_summary">ਚੈਨਲ ਪੇਜ</string>
<string name="select_a_channel">ਚੈਨਲ ਚੁਣੋ</string>
<string name="no_channel_subscribed_yet">ਅਜੇ ਤੱਕ ਕੋਈ ਚੈਨਲ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਨਹੀਂ</string>
<string name="select_a_kiosk">ਇੱਕ Kiosk ਚੁਣੋ</string>
<string name="export_complete_toast">ਐਕਸਪੋਰਟ ਕੀਤਾ ਗਿਆ</string>
<string name="import_complete_toast">ਇੰਪੋਰਟ ਕੀਤਾ ਗਿਆ</string>
<string name="no_valid_zip_file">ਕੋਈ ਵੈਧ ZIP ਫਾਈਲ ਨਹੀਂ ਹੈ</string>
<string name="could_not_import_all_files">ਚੇਤਾਵਨੀ: ਸਾਰੀਆਂ ਫਾਈਲਾਂ ਇੰਪੋਰਟ ਨਹੀਂ ਕੀਤੀਆਂ ਜਾ ਸਕੀਆਂ.</string>
<string name="override_current_data">ਇਹ ਤੁਹਾਡੇ ਮੌਜੂਦਾ ਸੈਟ-ਅਪ ਨੂੰ Override ਕਰ ਦੇਵੇਗਾ.</string>
<string name="kiosk">kiosk</string>
<string name="trending">ਰੁਝਾਨ ਵਿੱਚ</string>
<string name="top_50">ਟੌਪ 50</string>
<string name="new_and_hot">ਨਵਾਂ ਅਤੇ ਗਰਮਾ-ਗਰਮ</string>
<string name="title_activity_background_player">ਬੈਕਗ੍ਰਾਉਂਡ ਪਲੇਅਰ</string>
<string name="title_activity_popup_player">ਪੌਪ-ਅਪ ਪਲੇਅਰ</string>
<string name="play_queue_remove">ਹਟਾਓ</string>
<string name="play_queue_stream_detail">ਵੇਰਵੇ</string>
<string name="play_queue_audio_settings">ਆਡੀਓ ਸੈਟਿੰਗਾਂ</string>
<string name="hold_to_append">ਕਤਾਰਬੱਧ ਕਰਨ ਵਾਸਤੇ ਦਬਾ ਕੇ ਰੱਖੋ</string>
<string name="enqueue_on_background">ਬੈਕਗ੍ਰਆਊਂਡ ਵਿੱਚ ਕਤਾਰਬੱਧ ਕਰੋ</string>
<string name="enqueue_on_popup">ਨਵੇਂ ਪੌਪ-ਅਪ ਵਿੱਚ ਕਤਾਰਬੱਧ ਕਰੋ</string>
<string name="start_here_on_main">ਇਥੇ ਚਲਾਉ</string>
<string name="start_here_on_background">"ਬੈਕਗ੍ਰਾਊਂਡ ਵਿੱਚ ਚਲਾਉ"</string>
<string name="start_here_on_popup">ਨਵੇਂ ਪੌਪ-ਅਪ ਵਿੱਚ ਚਲਾਓ</string>
<string name="drawer_open">Drawer ਖੋਲੋ</string>
<string name="drawer_close">Drawer ਬੰਦ ਕਰੋ</string>
<string name="drawer_header_action_paceholder_text">ਜਲਦੀ ਹੀ ਇੱਥੇ ਕੁੱਝ ਦਿਖਾਈ ਦੇਵੇਗਾ ;D</string>
<string name="preferred_open_action_settings_title">ਤਰਜੀਹੀ \'OPEN\' ਐਕਸ਼ਨ</string>
<string name="preferred_open_action_settings_summary">Content ਖੋਲ੍ਹਣ ਵੇਲੇ Default ਕਾਰਵਾਈ — %s</string>
<string name="video_player">ਵੀਡੀਓ ਪਲੇਅਰ</string>
<string name="background_player">ਬੈਕਗ੍ਰਾਊਂਡ ਪਲੇਅਰ</string>
<string name="popup_player">ਪੌਪ-ਅਪ ਪਲੇਅਰ</string>
<string name="always_ask_open_action">ਹਮੇਸ਼ਾ ਪੁੱਛੋ</string>
<string name="preferred_player_fetcher_notification_title">ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਕਰ ਰਹੇ ਹਾਂ…</string>
<string name="preferred_player_fetcher_notification_message">ਬੇਨਤੀ ਕੀਤਾ Content ਲੋਡ ਕੀਤੀ ਜਾ ਰਿਹਾ ਹੈ</string>
<string name="create_playlist">ਨਵੀਂ ਪਲੇ-ਲਿਸਟ</string>
<string name="delete_playlist">ਮਿਟਾਓ</string>
<string name="rename_playlist">ਨਾਮ ਬਦਲੋ</string>
<string name="playlist_name_input">ਨਾਮ</string>
<string name="append_playlist">ਪਲੇ-ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕਰੋ</string>
<string name="set_as_playlist_thumbnail">ਪਲੇ-ਲਿਸਟ thumbnail ਦੇ ਤੌਰ ਤੇ ਸੈੱਟ ਕਰੋ</string>
<string name="bookmark_playlist">ਬੁੱਕਮਾਰਕ ਪਲੇ-ਲਿਸਟ</string>
<string name="unbookmark_playlist">ਬੁੱਕਮਾਰਕ ਹਟਾਓ</string>
<string name="delete_playlist_prompt">ਇਸ ਪਲੇ-ਲਿਸਟ ਨੂੰ ਮਿਟਾਉਣਾ ਹੈ \?</string>
<string name="playlist_creation_success">ਪਲੇ-ਲਿਸਟ ਬਣਾਈ ਗਈ</string>
<string name="playlist_add_stream_success">ਪਲੇ-ਲਿਸਟ ਕੀਤਾ ਗਿਆ</string>
<string name="playlist_thumbnail_change_success">ਪਲੇ-ਲਿਸਟ thumbnail ਬਦਲਿਆ ਗਿਆ.</string>
<string name="playlist_delete_failure">ਪਲੇ-ਲਿਸਟ ਨੂੰ ਮਿਟਾ ਨਹੀਂ ਸਕੇ.</string>
<string name="caption_none">No captions</string>
<string name="resize_fit">ਫਿੱਟ</string>
<string name="resize_fill">ਭਰੋ</string>
<string name="resize_zoom">ਜ਼ੂਮ</string>
<string name="caption_auto_generated">Auto-Generated</string>
<string name="caption_setting_title">captions</string>
<string name="caption_setting_description">ਪਲੇਅਰ caption, text ਸਕੇਲ ਅਤੇ ਬੈਕਗ੍ਰਾਉਂਡ ਸਟਾਈਲ ਨੂੰ ਸੋਧੋ. ਪ੍ਰਭਾਵ ਨੂੰ ਲਾਗੂ ਕਰਨ ਲਈ ਐਪ ਨੂੰ ਮੁੜ ਚਾਲੂ ਕਰਨ ਦੀ ਜ਼ਰੂਰਤ ਹੈ.</string>
<string name="enable_leak_canary_title">LeakCanary ਚਲਾਓ</string>
<string name="enable_leak_canary_summary">ਮੈਮੋਰੀ ਲੀਕ monitoring, ਐਪ ਨੂੰ Unresponsive ਬਣਾ ਸਕਦੀ ਹੈ ਜਦੋਂ ਹੀਪ dumping ਹੁੰਦੀ ਹੈ</string>
<string name="enable_disposed_exceptions_title">Out-of-lifecycle ERROR ਰਿਪੋਰਟ ਕਰੋ</string>
<string name="enable_disposed_exceptions_summary">ਨਿਪਟਾਰੇ ਦੇ ਬਾਅਦ ਟੁਕੜੇ ਜਾਂ ਗਤੀਵਿਧੀਆਂ ਦੇ lifecycle ਤੋਂ ਬਾਹਰ undeliverable Rx ਅਪਵਾਦਾਂ ਬਾਰੇ ਜ਼ਬਰੀ ਰਿਪੋਰਟ ਕਰਨਾ</string>
<string name="import_export_title">ਇੰਪੋਰਟ/ਐਕਸਪੋਰਟ</string>
<string name="import_title">ਇੰਪੋਰਟ</string>
<string name="import_from">ਇੰਪੋਰਟ ਕਰੋ</string>
<string name="export_to">ਐਕਸਪੋਰਟ ਕਰੋ</string>
<string name="import_ongoing">ਇੰਪੋਰਟ ਹੋ ਰਿਹਾ ਹੈ…</string>
<string name="export_ongoing">ਐਕਸਪੋਰਟ ਹੋ ਰਿਹਾ ਹੈ…</string>
<string name="import_file_title">ਇੰਪੋਰਟ ਫਾਈਲ</string>
<string name="previous_export">ਪਿੱਛਲਾ ਐਕਸਪੋਰਟ</string>
<string name="subscriptions_import_unsuccessful">ਸਬਸਕ੍ਰਿਪਸ਼ਨਾਂ ਇੰਪੋਰਟ ਨਹੀਂ ਹੋ ਸਕੀਆਂ</string>
<string name="subscriptions_export_unsuccessful">ਸਬਸਕ੍ਰਿਪਸ਼ਨਾਂ ਐਕਸਪੋਰਟ ਨਹੀਂ ਹੋ ਸਕੀਆਂ</string>
<string name="import_youtube_instructions">ਯੂ ਟਿਊਬ ਸਬਸਕ੍ਰਿਪਸ਼ਨਾਂ ਇੰਪੋਰਟ ਕਰਨ ਲਈ ਐਕਸਪੋਰਟ ਫਾਈਲ ਡਾਊਨਲੋਡ ਕਰੋ:
\n
\n1. ਇਸ URL ਤੇ ਜਾਓ: %1$s
\n2. ਆਪਣੇ ਖਾਤੇ ਚ ਲੌਗ-ਇਨ ਕਰੋ
\n3. ਇੱਕ ਡਾਉਨਲੋਡ ਸ਼ੁਰੂ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ (ਇਹੀ ਐਕਸਪੋਰਟ ਫਾਈਲ ਹੈ)</string>
<string name="import_soundcloud_instructions">URL ਜਾਂ ਆਪਣੀ ID ਟਾਈਪ ਕਰਕੇ ਸਾਉੰਡ ਕਲਾਉਡ ਪ੍ਰੋਫਾਈਲ ਇੰਪੋਰਟ ਕਰੋ:
\n
\n1. ਇੱਕ ਵੈਬ-ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ \"ਡੈਸਕਟਾਪ ਮੋਡ\" ਨੂੰ ਚਾਲੂ ਕਰੋ (ਸਾਈਟ ਮੋਬਾਈਲ ਉਪਕਰਣਾਂ ਲਈ ਉਪਲਬਧ ਨਹੀਂ ਹੈ)
\n2. ਇਸ URL ਤੇ ਜਾਓ: %1$s
\n3. ਆਪਣੇ ਖਾਤੇ ਚ ਲੌਗ-ਇਨ ਕਰੋ
\n4. ਨਿਰਦੇਸ਼ਤ ਕੀਤੇ ਗਏ ਪ੍ਰੋਫਾਈਲ URL ਨੂੰ ਕਾਪੀ ਕਰੋ.</string>
<string name="import_soundcloud_instructions_hint">yourID, Soundcloud.com/yourid</string>
<string name="import_network_expensive_warning">ਯਾਦ ਰੱਖੋ ਕਿ ਇਹ ਕਾਰਜ ਡਾਟਾ consuming ਹੋ ਸਕਦਾ ਹੈ.
\n
\nਕੀ ਤੁਸੀਂ ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ\?</string>
<string name="playback_speed_control">ਪਲੇਅਬੈਕ ਸਪੀਡ ਕੰਟਰੋਲ</string>
<string name="playback_tempo">tempo</string>
<string name="playback_pitch">pitch</string>
<string name="unhook_checkbox">ਅਨਲਿੰਕ (distortion ਪੈਦਾ ਹੋ ਸਕਦੀ ਹੈ)</string>
<string name="import_settings">ਕੀ ਤੁਸੀਂ ਸੈਟਿੰਗਾਂ ਨੂੰ ਵੀ ਇੰਪੋਰਟ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ\?</string>
<string name="privacy_policy_title">NewPipe\'s ਗੋਪਨੀਯਤਾ ਨੀਤੀ</string>
<string name="privacy_policy_encouragement">NewPipe ਪ੍ਰੋਜੈਕਟ ਤੁਹਾਡੀ ਗੋਪਨੀਯਤਾ ਨੂੰ ਬਹੁਤ ਗੰਭੀਰਤਾ ਨਾਲ ਲੈਂਦਾ ਹੈ. ਇਸ ਲਈ ਐਪ ਤੁਹਾਡੀ ਸਹਿਮਤੀ ਤੋਂ ਬਿਨਾਂ ਕੋਈ ਵੀ ਡਾਟਾ ਇੱਕਠਾ ਨਹੀਂ ਕਰਦਾ.
\nNewPipe ਦੀ ਗੋਪਨੀਯਤਾ ਨੀਤੀ ਵਿਸਥਾਰ ਵਿੱਚ ਦੱਸਦੀ ਹੈ ਕਿ ਜਦੋਂ ਤੁਸੀਂ ਕਰੈਸ਼ ਰਿਪੋਰਟ ਭੇਜਦੇ ਹੋ ਤਾਂ ਕਿਹੜਾ ਡੇਟਾ ਭੇਜਿਆ ਜਾਂ ਸਟੋਰ ਕੀਤਾ ਜਾਂਦਾ ਹੈ.</string>
<string name="read_privacy_policy">ਗੋਪਨੀਯਤਾ ਨੀਤੀ ਪੜ੍ਹੋ</string>
<string name="start_accept_privacy_policy">ਯੂਰਪੀਅਨ ਜਨਰਲ ਡੇਟਾ ਪ੍ਰੋਟੈਕਸ਼ਨ ਰੈਗੂਲੇਸ਼ਨ (ਜੀਡੀਪੀਆਰ) ਦੀ ਪਾਲਣਾ ਕਰਨ ਲਈ, ਅਸੀਂ ਤੁਹਾਡਾ ਧਿਆਨ NewPipe ਦੀ ਗੋਪਨੀਯਤਾ ਨੀਤੀ ਵੱਲ ਖਿੱਚਦੇ ਹਾਂ. ਕਿਰਪਾ ਕਰਕੇ ਇਸਨੂੰ ਧਿਆਨ ਨਾਲ ਪੜ੍ਹੋ.
\nਸਾਨੂੰ BUG ਰਿਪੋਰਟ ਭੇਜਣ ਲਈ ਤੁਹਾਨੂੰ ਇਸ ਨੂੰ ਸਵੀਕਾਰ ਕਰਨਾ ਪਵੇਗਾ.</string>
<string name="accept">ਸਵੀਕਾਰ ਕਰੋ</string>
<string name="decline">ਅਸਵੀਕਾਰ</string>
<string name="limit_data_usage_none_description">ਕੋਈ ਸੀਮਾ ਨਹੀਂ</string>
<string name="limit_mobile_data_usage_title">ਮੋਬਾਈਲ ਡਾਟਾ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਸਮੇਂ Resolution ਨੂੰ ਸੀਮਿਤ ਕਰੋ</string>
<string name="minimize_on_exit_title">ਐਪ switch ਕਰਨ ਤੇ minimize ਕਰੋ</string>
<string name="minimize_on_exit_summary">ਮੁੱਖ ਵੀਡੀਓ ਪਲੇਅਰ ਤੋਂ ਦੂਜੇ ਐਪ \'ਤੇ ਜਾਣ ਵੇਲੇ ਐਕਸ਼ਨ</string>
<string name="minimize_on_exit_none_description">ਕੋਈ ਨਹੀਂ</string>
<string name="minimize_on_exit_background_description">ਬੈਕਗ੍ਰਾਉਂਡ ਪਲੇਅਰ ਵਿੱਚ Minimize ਕਰੋ</string>
<string name="minimize_on_exit_popup_description">ਪੌਪ-ਅਪ ਪਲੇਅਰ ਵਿੱਚ minimize ਕਰੋ</string>
<string name="skip_silence_checkbox">ਚੁੱਪ ਦੌਰਾਨ ਤੇਜ਼ੀ ਨਾਲ ਅੱਗੇ ਕਰੋ</string>
<string name="playback_step">ਸਟੇਪ</string>
<string name="playback_reset">ਰੀਸੈੱਟ</string>
<string name="channels">ਚੈਨਲਾਂ</string>
<string name="playlists">ਪਲੇ ਸੂਚੀਆਂ</string>
<string name="tracks">ਟਰੈਕਸ</string>
<string name="users">ਯੂਜ਼ਰਸ</string>
<string name="unsubscribe">ਅਨ-ਸਬਸਕ੍ਰਾਈਬ</string>
<string name="tab_new">ਨਵਾਂ ਟੈਬ</string>
<string name="tab_choose">ਟੈਬ ਚੁਣੋ</string>
<string name="volume_gesture_control_title">ਆਵਾਜ਼ gesture ਕੰਟਰੋਲ</string>
<string name="volume_gesture_control_summary">ਆਵਾਜ਼ ਕੰਟਰੋਲ ਕਰਨ ਲਈ gestures ਦੀ ਵਰਤੋਂ ਕਰੋ</string>
<string name="brightness_gesture_control_title">ਸਕ੍ਰੀਨ ਲਾਈਟ gesture ਕੰਟਰੋਲ</string>
<string name="brightness_gesture_control_summary">ਵੀਡੀਓ ਸਕ੍ਰੀਨ ਲਾਈਟ ਕੰਟਰੋਲ ਕਰਨ ਲਈ gestures ਦੀ ਵਰਤੋਂ ਕਰੋ</string>
<string name="content_language_title">ਮੂਲ ਭਾਸ਼ਾ Content</string>
<string name="settings_category_updates_title">ਅਪਡੇਟਾਂ</string>
<string name="file_deleted">ਫਾਈਲ ਮਿਟਾ ਦਿੱਤੀ ਗਈ ਹੈ</string>
<string name="app_update_notification_channel_name">ਐਪ ਅੱਪਡੇਟ ਨੋਟੀਫਿਕੇਸ਼ਨ</string>
<string name="app_update_notification_channel_description">ਨਵੇਂ NewPipe ਸੰਸਕਰਣ ਲਈ ਸੂਚਨਾਵਾਂ</string>
<string name="download_to_sdcard_error_title">ਬਾਹਰੀ ਸਟੋਰੇਜ ਉਪਲਬਧ ਨਹੀਂ ਹੈ</string>
<string name="download_to_sdcard_error_message">ਬਾਹਰੀ SD ਕਾਰਡ ਤੇ ਡਾਊਨਲੋਡ ਕਰਨਾ ਸੰਭਵ ਨਹੀਂ ਹੈ. ਕੀ ਡਾਊਨਲੋਡ ਫੋਲਡਰ ਦੀ ਸਥਿਤੀ ਨੂੰ ਰੀਸੈਟ ਕੀਤਾ ਜਾਵੇ \?</string>
<string name="saved_tabs_invalid_json">Default ਟੈਬ ਦੀ ਵਰਤੋਂ ਕਰਦਿਆਂ, save ਕੀਤੇ ਟੈਬਾਂ ਨੂੰ ਪੜ੍ਹਨ ਵੇਲੇ ERROR</string>
<string name="restore_defaults">Default ਮੁੜ-ਪ੍ਰਾਪਤ ਕਰੋ</string>
<string name="restore_defaults_confirmation">ਕੀ ਤੁਸੀਂ Default ਲਾਗੂ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ \?</string>
<string name="subscribers_count_not_available">ਸਬਸਕ੍ਰਾਇਬਰਾਂ ਦੀ ਗਿਣਤੀ ਉਪਲਬਧ ਨਹੀਂ ਹੈ</string>
<string name="main_page_content_summary">ਮੁੱਖ ਪੰਨੇ ਤੇ ਕਿਹੜੇ ਟੈਬ ਦਿਖਾਏ ਜਾਣਗੇ</string>
<string name="selection">ਚੋਣ</string>
<string name="updates_setting_title">ਅਪਡੇਟਾਂ</string>
<string name="updates_setting_description">ਜਦੋਂ ਨਵਾਂ ਸੰਸਕਰਣ ਉਪਲਬਧ ਹੁੰਦਾ ਹੈ ਤਾਂ ਐਪ ਅਪਡੇਟ ਨੂੰ ਪੁੱਛਣ ਲਈ ਇੱਕ ਨੋਟੀਫਿਕੇਸ਼ਨ ਦਿਖਾਓ</string>
<string name="list_view_mode">ਲਿਸਟ view ਮੋਡ</string>
<string name="list">ਲਿਸਟ</string>
<string name="grid">ਗਰਿੱਡ</string>
<string name="auto">ਆਟੋ</string>
<string name="switch_view">ਸਵਿੱਚ view</string>
<string name="app_update_notification_content_title">NewPipe ਅੱਪਡੇਟ ਉਪਲਬੱਧ!</string>
<string name="app_update_notification_content_text">ਡਾਊਨਲੋਡ ਕਰਨ ਲਈ ਦਬਾਓ</string>
<string name="missions_header_finished">ਮੁਕੰਮਲ ਹੋਇਆ</string>
<string name="missions_header_pending">ਬਕਾਇਆ</string>
<string name="paused">ਰੁਕਿਆ</string>
<string name="queued">ਕਤਾਰਬੱਧ</string>
<string name="post_processing">Post-processing</string>
<string name="enqueue">ਕਤਾਰ</string>
<string name="permission_denied">ਸਿਸਟਮ ਦੁਆਰਾ ਕਾਰਵਾਈ ਤੋਂ ਇਨਕਾਰ ਕੀਤਾ ਗਿਆ</string>
<string name="download_failed">ਡਾਊਨਲੋਡ ਫੇਲ੍ਹ</string>
<string name="download_finished">ਡਾਊਨਲੋਡ ਮੁਕੰਮਲ</string>
<string name="download_finished_more">%s ਡਾਊਨਲੋਡ ਮੁਕੰਮਲ</string>
<string name="generate_unique_name">ਵਿਲੱਖਣ ਨਾਮ Generate ਕਰੋ</string>
<string name="overwrite">overwrite</string>
<string name="download_already_running">ਇਸ ਨਾਮ ਦੇ ਨਾਲ ਇੱਕ ਡਾਊਨਲੋਡ ਪਹਿਲਾਂ ਤੋਂ ਜਾਰੀ ਹੈ</string>
<string name="show_error">ERROR ਵਿਖਾਓ</string>
<string name="label_code">ਕੋਡ</string>
<string name="error_path_creation">Destination ਫੋਲਡਰ ਬਣਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ</string>
<string name="error_file_creation">ਫਾਈਲ ਨਹੀਂ ਬਣਾਈ ਜਾ ਸਕਦੀ</string>
<string name="error_permission_denied">ਸਿਸਟਮ ਦੁਆਰਾ permission Deny ਕੀਤੀ ਗਈ</string>
<string name="error_ssl_exception">ਸੁਰੱਖਿਅਤ ਕੁਨੈਕਸ਼ਨ ਫੇਲ੍ਹ</string>
<string name="error_unknown_host">ਸਰਵਰ ਨਹੀਂ ਲੱਭ ਸਕਿਆ</string>
<string name="error_connect_host">ਸਰਵਰ ਨਾਲ ਜੁੜ ਨਹੀਂ ਸਕਦਾ</string>
<string name="error_http_no_content">ਸਰਵਰ ਨੇ ਡਾਟਾ ਨਹੀਂ ਭੇਜਿਆ</string>
<string name="error_http_unsupported_range">ਸਰਵਰ ਮਲਟੀ-Threaded ਡਾਊਨਲੋਡਸ ਨੂੰ ਸਵੀਕਾਰ ਨਹੀਂ ਕਰਦਾ, ਇਸ ਨਾਲ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ @string/msg_threads = 1</string>
<string name="error_http_requested_range_not_satisfiable">ਬੇਨਤੀ ਕੀਤੀ ਸੀਮਾ ਤਸੱਲੀਬਖਸ਼ ਨਹੀਂ ਹੈ</string>
<string name="error_http_not_found">ਨਹੀਂ ਲਭਿਆ</string>
<string name="error_postprocessing_failed">Post-processing ਫੇਲ੍ਹ</string>
<string name="clear_finished_download">ਮੁਕੰਮਲ ਹੋਈਆਂ ਡਾਊਨਲੋਡ ਸਾਫ਼ ਕਰੋ</string>
<string name="msg_pending_downloads">ਡਾਉਨਲੋਡਸ ਤੋਂ ਆਪਣੀਆਂ %s ਬਕਾਇਆ ਟ੍ਰਾਂਸਫਰ ਜਾਰੀ ਰੱਖੋ</string>
<string name="stop">ਰੁੱਕੋ</string>
<string name="max_retry_msg">ਵੱਧ ਤੋਂ ਵੱਧ ਕੋਸ਼ਿਸ਼ਾਂ</string>
<string name="max_retry_desc">ਡਾਉਨਲੋਡ ਰੱਦ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਵੱਧ ਤੋਂ ਵੱਧ ਕੋਸ਼ਿਸ਼ਾਂ</string>
<string name="pause_downloads_on_mobile">Metered ਨੈਟਵਰਕਸ ਤੇ ਰੁਕਾਵਟ</string>
<string name="pause_downloads_on_mobile_desc">ਮੋਬਾਈਲ ਡਾਟਾ ਤੇ switch ਕਰਨ ਵੇਲੇ ਲਾਭਦਾਇਕ ਹੈ, ਹਾਲਾਂਕਿ ਕੁਝ ਡਾਉਨਲੋਡਾਂ ਨੂੰ suspend ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ</string>
<string name="events">ਇਵੇੰਟਸ</string>
<string name="conferences">ਕਾਨਫਰੰਸਾਂ</string>
<string name="show_comments_title">ਟਿੱਪਣੀਆਂ ਦਿਖਾਓ</string>
<string name="show_comments_summary">ਟਿੱਪਣੀਆਂ ਵਿਖਾਉਣਾ ਬੰਦ ਕਰਨ ਲਈ ਇਸਨੂੰ ਬੰਦ ਕਰੋ</string>
<string name="autoplay_title">ਆਟੋ-ਪਲੇ</string>
<plurals name="comments">
<item quantity="one">ਟਿਪਣੀਆਂ</item>
<item quantity="other"></item>
</plurals>
<string name="no_comments">ਕੋਈ ਟਿੱਪਣੀ ਨਹੀਂ ਕੀਤੀ ਗਈ</string>
<string name="error_unable_to_load_comments">ਟਿੱਪਣੀਆਂ ਲੋਡ ਨਹੀਂ ਹੋ ਸਕੀਆਂ</string>
<string name="close">ਬੰਦ ਕਰੋ</string>
<string name="enable_playback_resume_title">ਪਲੇਅਬੈਕ ਦੋਬਾਰਾ ਸ਼ੁਰੂ ਕਰੋ</string>
<string name="enable_playback_resume_summary">ਪਿਛਲੀ ਪਲੇਅਬੈਕ ਸਥਿਤੀ ਤੋਂ ਮੁੜ ਚਲਾਓ</string>
<string name="enable_playback_state_lists_title">ਸੂਚੀਆਂ ਦੀ ਸਥਿਤੀ</string>
<string name="enable_playback_state_lists_summary">ਸੂਚੀਆਂ ਵਿੱਚ ਪਲੇਅਬੈਕ ਸਥਿਤੀ ਸੂਚਕ ਦਿਖਾਓ</string>
<string name="settings_category_clear_data_title">ਡਾਟਾ ਮਿਟਾਓ</string>
<string name="watch_history_deleted">Watch ਹਿਸਟਰੀ ਮਿਟਾ ਦਿੱਤੀ ਗਈ ਹੈ.</string>
<string name="watch_history_states_deleted">ਪਲੇਬੈਕ ਸਥਿਤੀ ਨੂੰ ਮਿਟਾ ਦਿੱਤਾ ਗਿਆ ਹੈ.</string>
<string name="missing_file">ਫਾਈਲ ਮੂਵ ਕੀਤੀ ਜਾਂ ਮਿਟਾਈ ਗਈ ਹੈ</string>
<string name="overwrite_unrelated_warning">ਇਸ ਨਾਮ ਵਾਲੀ ਇੱਕ ਫਾਈਲ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ</string>
<string name="overwrite_finished_warning">ਇਸ ਨਾਮ ਨਾਲ ਡਾਉਨਲੋਡ ਕੀਤੀ ਫਾਈਲ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ</string>
<string name="overwrite_failed">ਫਾਈਲ Overwrite ਨਹੀਂ ਹੋ ਸਕਦੀ</string>
<string name="download_already_pending">ਇਸ ਨਾਮ ਦੇ ਨਾਲ ਇੱਥੇ ਇੱਕ ਬਕਾਇਆ ਡਾਊਨਲੋਡ ਹੈ</string>
<string name="error_postprocessing_stopped">ਫਾਈਲ ਤੇ ਕੰਮ ਕਰਦੇ ਸਮੇਂ NewPipe ਬੰਦ ਕੀਤੀ ਗਈ ਸੀ</string>
<string name="error_insufficient_storage">ਡਿਵਾਈਸ ਤੇ ਕੋਈ ਜਗ੍ਹਾ ਨਹੀਂ ਬਚੀ ਹੈ</string>
<string name="error_progress_lost">Progress lost, ਕਿਉਂਕਿ ਫਾਈਲ ਮਿਟ ਗਈ ਸੀ</string>
<string name="error_timeout">ਕੁਨੈਕਸ਼ਨ timeout</string>
<string name="confirm_prompt">are you sure\?</string>
<string name="enable_queue_limit">ਡਾਊਨਲੋਡ ਸੀਮਾ ਕਤਾਰ ਵਿੱਚ</string>
<string name="enable_queue_limit_desc">one download will run at the same time</string>
<string name="start_downloads">ਡਾਊਨਲੋਡ ਸ਼ੁਰੂ ਕਰੋ</string>
<string name="pause_downloads">ਡਾਊਨਲੋਡਸ ਰੋਕੋ</string>
<string name="downloads_storage_ask_title">ਪੁੱਛੋ ਕਿੱਥੇ ਡਾਊਨਲੋਡ ਕਰਨਾ ਹੈ</string>
<string name="downloads_storage_ask_summary">ਤੁਹਾਨੂੰ ਪੁੱਛਿਆ ਜਾਵੇਗਾ ਕਿ ਹਰ ਡਾਉਨਲੋਡ ਨੂੰ ਕਿੱਥੇ save ਕਰਨਾ ਹੈ</string>
<string name="downloads_storage_ask_summary_kitkat">ਤੁਹਾਨੂੰ ਪੁੱਛਿਆ ਜਾਵੇਗਾ ਕਿ ਹਰ ਡਾਉਨਲੋਡ ਨੂੰ ਕਿੱਥੇ save ਕਰਨਾ ਹੈ.
\nਜੇ ਤੁਸੀਂ ਬਾਹਰੀ SD ਕਾਰਡ ਤੇ ਡਾਊਨਲੋਡ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ ਤਾਂ ਇਸ ਨੂੰ ਚਾਲੂ ਕਰੋ.</string>
</resources>

View File

@ -479,6 +479,5 @@
</plurals>
<string name="no_comments">Brak komentarzy</string>
<string name="error_unable_to_load_comments">Nie można załadować komentarzy</string>
<string name="direct_on_background">Odtwarzaj bezpośrednio w tle</string>
<string name="close">Zamknij</string>
</resources>

View File

@ -96,7 +96,7 @@
<string name="msg_exists">Arquivo já existe</string>
<string name="msg_threads">Threads</string>
<string name="msg_url_malform">URL inválida ou internet indisponível</string>
<string name="no_available_dir">Selecione uma pasta para download</string>
<string name="no_available_dir">Selecione uma pasta para download posteriormente nas configurações</string>
<string name="no_player_found">Nenhum player de stream encontrado. Deseja instalar o VLC?</string>
<string name="parsing_error">Não foi possível interpretar o site</string>
<string name="play_audio">Áudio</string>
@ -177,7 +177,7 @@ abrir em modo popup</string>
<string name="resume_on_audio_focus_gain_summary">Continuar reproduzindo depois de interrupções (exemplo: ligações)</string>
<string name="enable_search_history_title">Histórico de pesquisas</string>
<string name="enable_search_history_summary">Armazenar histórico de pesquisa localmente</string>
<string name="enable_watch_history_title">Histórico &amp; Cache</string>
<string name="enable_watch_history_title">Histórico de visualização</string>
<string name="enable_watch_history_summary">Armazenar histórico de vídeos assistidos</string>
<string name="title_activity_history">Histórico</string>
<string name="title_history_search">Pesquisado</string>
@ -416,7 +416,7 @@ abrir em modo popup</string>
<string name="app_update_notification_channel_name">Notificação de Atualização do Aplicativo</string>
<string name="app_update_notification_channel_description">Notificações para a versão do NewPipe</string>
<string name="download_to_sdcard_error_title">Armazenamento externo indisponível</string>
<string name="download_to_sdcard_error_message">Baixar para o cartão SD externo ainda não é possivel. Resetar o local da pasta de download\?</string>
<string name="download_to_sdcard_error_message">Não é possivel baixar para o cartão SD externo . Resetar o local da pasta de download\?</string>
<string name="saved_tabs_invalid_json">Usando abas padrão, erro ao ler abas salvas</string>
<string name="restore_defaults">Restaurar padrões</string>
<string name="restore_defaults_confirmation">Deseja restaurar os padrões\?</string>
@ -465,7 +465,7 @@ abrir em modo popup</string>
<string name="max_retry_msg">Tentativas máximas</string>
<string name="max_retry_desc">Número máximo de tentativas antes de cancelar o download</string>
<string name="pause_downloads_on_mobile">Pausar quando trocar para dados móveis</string>
<string name="pause_downloads_on_mobile_desc">Downloads que não puderem ser pausados serão reiniciados</string>
<string name="pause_downloads_on_mobile_desc">Útil quando trocar para dados móveis, porém alguns downloads não podem ser suspensos</string>
<string name="missions_header_pending">Pendente</string>
<string name="show_comments_title">Exibir comentários</string>
<string name="show_comments_summary">Desabilitar para parar de exibir comentários</string>
@ -476,6 +476,28 @@ abrir em modo popup</string>
</plurals>
<string name="no_comments">Não há comentários</string>
<string name="error_unable_to_load_comments">Não foi possível carregar comentários</string>
<string name="direct_on_background">Reproduzir diretamente em segundo plano</string>
<string name="close">Fechar</string>
<string name="enable_playback_resume_title">Retomar a reprodução</string>
<string name="enable_playback_resume_summary">Restaurar para a última posição da reprodução</string>
<string name="enable_playback_state_lists_title">Posições em listas</string>
<string name="enable_playback_state_lists_summary">Mostrar indicadoers de posição da reprodução nas listas</string>
<string name="settings_category_clear_data_title">Limpar dados</string>
<string name="watch_history_states_deleted">Posições da reprodução apagadas.</string>
<string name="missing_file">Arquivo movido ou apagado</string>
<string name="overwrite_unrelated_warning">Já existe um arquivo com este nome</string>
<string name="overwrite_failed">não é possível sobrescrever o arquivo</string>
<string name="download_already_pending">Existe um download pendente com este nome</string>
<string name="error_postprocessing_stopped">NewPipe foi fechado enquanto manipulava o arquivo</string>
<string name="error_insufficient_storage">Não há espaço disponível no dispositivo</string>
<string name="error_progress_lost">Progresso perdido devido ao arquivo ter sido apagado</string>
<string name="error_timeout">Tempo limite de conexão</string>
<string name="confirm_prompt">Tem certeza\?</string>
<string name="enable_queue_limit">Limitar tamanho da fila de download</string>
<string name="enable_queue_limit_desc">Um download será executado ao mesmo tempo</string>
<string name="start_downloads">Iniciar downloads</string>
<string name="pause_downloads">Pausar downloads</string>
<string name="downloads_storage_ask_title">Perguntar onde salvar o arquivo do download</string>
<string name="downloads_storage_ask_summary">Você será questionado onde salvar o arquivo a cada download</string>
<string name="downloads_storage_ask_summary_kitkat">Você será questionado onde salvar o arquivo a cada download
\nAtive esta opção caso queira fazer o download para um cartão de memória SD externo.</string>
</resources>

View File

@ -27,7 +27,7 @@
<string name="play_audio">Áudio</string>
<string name="default_audio_format_title">Formato áudio padrão</string>
<string name="download_dialog_title">Descarregar</string>
<string name="next_video_title">A seguir</string>
<string name="next_video_title">Seguinte</string>
<string name="show_next_and_similar_title">Mostrar vídeos \'Seguintes\' e \'Semelhantes\'</string>
<string name="url_not_supported_toast">URL não suportado</string>
<string name="content_language_title">Idioma padrão do conteúdo</string>
@ -57,7 +57,6 @@
<string name="youtube_signature_decryption_error">Incapaz de descodificar a assinatura do vídeo</string>
<string name="parsing_error">Incapaz de processar o site</string>
<string name="content_not_available">Conteúdo não disponível</string>
<string name="content">Conteúdo</string>
<string name="show_age_restricted_content_title">Restringir conteúdo por idade</string>
<string name="video_is_age_restricted">Mostrar vídeo com restrição de idade. É possível permitir tal material nas Configurações.</string>
@ -100,7 +99,7 @@
<string name="msg_running_detail">Toque para detalhes</string>
<string name="msg_wait">Por favor aguarde…</string>
<string name="msg_copied">Copiado para a área de transferência</string>
<string name="no_available_dir">Por favor selecione a pasta para as descargas</string>
<string name="no_available_dir">Por favor selecione nas configurações a pasta para as descargas</string>
<string name="finish">OK</string>
<string name="msg_threads">Processos</string>
<string name="msg_running">Descarga do NewPipe</string>
@ -169,7 +168,7 @@
<string name="fragment_whats_new">Novidades</string>
<string name="enable_search_history_title">Histórico de pesquisa</string>
<string name="enable_search_history_summary">Guardar termos de pesquisa localmente</string>
<string name="enable_watch_history_title">Histórico e cache</string>
<string name="enable_watch_history_title">Ver história</string>
<string name="enable_watch_history_summary">Guardar histórico de vídeos assistidos</string>
<string name="resume_on_audio_focus_gain_title">Retomar ao ganhar foco</string>
<string name="resume_on_audio_focus_gain_summary">Continuar reprodução após interrupções (ex. chamadas)</string>
@ -194,8 +193,8 @@
</plurals>
<string name="no_videos">Sem vídeos</string>
<plurals name="videos">
<item quantity="one">vídeo</item>
<item quantity="other">vídeos</item>
<item quantity="one">Vídeo</item>
<item quantity="other">Vídeos</item>
</plurals>
<string name="settings_category_downloads_title">Descarregar</string>
<string name="settings_file_charset_title">Caracteres permitidos em nomes de ficheiros</string>
@ -398,7 +397,7 @@
<string name="limit_data_usage_none_description">Ilimitado</string>
<string name="limit_mobile_data_usage_title">Limitar resolução se estiver a usar dados móveis</string>
<string name="minimize_on_exit_title">Minimizar ao trocar de aplicação</string>
<string name="minimize_on_exit_summary">Ação a executar ao trocar para outra aplicação a partir do menu principal - % s</string>
<string name="minimize_on_exit_summary">Ação a executar ao trocar para outra aplicação a partir do menu principal - %s</string>
<string name="minimize_on_exit_none_description">Nenhuma</string>
<string name="minimize_on_exit_background_description">Ativar o reprodutor em segundo plano</string>
<string name="minimize_on_exit_popup_description">Ativar o reprodutor \'popup\'</string>
@ -414,7 +413,7 @@
<string name="app_update_notification_channel_name">Notificação de atualização</string>
<string name="app_update_notification_channel_description">Notificações para uma nova versão do NewPipe</string>
<string name="download_to_sdcard_error_title">Armazenamento externo indisponível</string>
<string name="download_to_sdcard_error_message">Ainda não é possível descarrgar ao cartão SD. Repor localização da pasta de descargas\?</string>
<string name="download_to_sdcard_error_message">Não é possível descarregar ao cartão SD. Repor a localização da pasta de descargas\?</string>
<string name="saved_tabs_invalid_json">Erro ao ler os separadores guardados e serão usados os separadores padrão</string>
<string name="restore_defaults">Restaurar predefinições</string>
<string name="restore_defaults_confirmation">Deseja restaurar as predefinições\?</string>
@ -461,8 +460,8 @@
<string name="stop">Parar</string>
<string name="max_retry_msg">Tentativas máximas</string>
<string name="max_retry_desc">Número máximo de tentativas antes de cancelar a descarga</string>
<string name="pause_downloads_on_mobile">Pausa na comutação para dados móveis</string>
<string name="pause_downloads_on_mobile_desc">Descarregamentos que não podem ser pausados serão reiniciados</string>
<string name="pause_downloads_on_mobile">Interromper em redes limitadas</string>
<string name="pause_downloads_on_mobile_desc">Útil ao mudar para dados móveis, embora alguns descarregamentos não possam ser suspensos</string>
<string name="events">Eventos</string>
<string name="conferences">Conferências</string>
<string name="missions_header_pending">Pendente</string>
@ -471,10 +470,32 @@
<string name="autoplay_title">Reprodução automática</string>
<plurals name="comments">
<item quantity="one">Comentários</item>
<item quantity="other"></item>
<item quantity="other"/>
</plurals>
<string name="no_comments">Sem comentários</string>
<string name="error_unable_to_load_comments">Não foi possível carregar comentários</string>
<string name="direct_on_background">Reproduzir diretamente no fundo</string>
<string name="close">Fechar</string>
<string name="enable_playback_resume_title">Continuar a reprodução</string>
<string name="enable_playback_resume_summary">Restaurar a última posição de reprodução</string>
<string name="enable_playback_state_lists_title">Posições nas listas</string>
<string name="enable_playback_state_lists_summary">Mostrar indicadores de posição de reprodução em listas</string>
<string name="settings_category_clear_data_title">Limpar dados</string>
<string name="watch_history_states_deleted">Posições de reprodução apagadas.</string>
<string name="missing_file">Ficheiro movido ou apagado</string>
<string name="overwrite_unrelated_warning">Um ficheiro com este nome já existe</string>
<string name="overwrite_failed">não é possível sobrescrever o ficheiro</string>
<string name="download_already_pending">Há um descarregamento pendente com este nome</string>
<string name="error_postprocessing_stopped">NewPipe foi fechado enquanto trabalhava no ficheiro</string>
<string name="error_insufficient_storage">Não há espaço disponível no aparelho</string>
<string name="error_progress_lost">Progresso perdido, porque o fiheiro foi apagado</string>
<string name="error_timeout">Tempo limite de conexão</string>
<string name="confirm_prompt">Tem certeza\?</string>
<string name="enable_queue_limit">Limitar a fila de descarregamentos</string>
<string name="enable_queue_limit_desc">Descarregar um só ao mesmo tempo</string>
<string name="start_downloads">Iniciar descarregamentos</string>
<string name="pause_downloads">Pausa descarregamentos</string>
<string name="downloads_storage_ask_title">Perguntar para onde descarregar</string>
<string name="downloads_storage_ask_summary">Você será perguntado para onde gravar cada descarregamento</string>
<string name="downloads_storage_ask_summary_kitkat">Você será perguntado para onde gravar cada descarregamento.
\nAtive-o se pretender descarregar para um cartão SD externo.</string>
</resources>

View File

@ -15,7 +15,7 @@
<string name="choose_browser">Выбор браузера</string>
<string name="screen_rotation">поворот</string>
<string name="download_path_title">Путь для скачанного видео</string>
<string name="download_path_summary">Путь для сохранения скачанного видео</string>
<string name="download_path_summary">Папка для хранения загруженных видео</string>
<string name="download_path_dialog_title">Введите путь к папке для скачивания видео</string>
<string name="default_resolution_title">Разрешение по умолчанию</string>
<string name="play_with_kodi_title">Воспроизвести в Kodi</string>
@ -27,7 +27,7 @@
<string name="download_dialog_title">Скачать</string>
<string name="next_video_title">Следующее</string>
<string name="url_not_supported_toast">URL не поддерживается</string>
<string name="show_next_and_similar_title">Показывать \"Следующее\" и \"Похожие\" видео</string>
<string name="show_next_and_similar_title">\"Следующее\" и \"Похожие\" видео</string>
<string name="content_language_title">Язык контента по умолчанию</string>
<string name="settings_category_video_audio_title">Видео и аудио</string>
<string name="settings_category_appearance_title">Внешний вид</string>
@ -239,8 +239,8 @@
<string name="play_queue_remove">Удалить</string>
<string name="subscribed_button_title">Вы подписаны</string>
<string name="channel_unsubscribed">Подписка отменена</string>
<string name="show_hold_to_append_title">Показывать \"Зажмите, чтобы добавить\"</string>
<string name="show_hold_to_append_summary">Показывать подсказку при нажатии кнопок всплывающего окна или фонового воспроизведения на странице сведений о видео</string>
<string name="show_hold_to_append_title">\"Зажмите, чтобы добавить\"</string>
<string name="show_hold_to_append_summary">Показать подсказку при нажатии \"В окне\" или \"В фоне\" на странице сведений о видео</string>
<string name="unknown_content">[Неизвестно]</string>
<string name="player_recoverable_failure">Восстановление после ошибки плеера</string>
<string name="title_activity_background_player">В фоне</string>
@ -331,7 +331,6 @@
<string name="resize_fill">Заполнить</string>
<string name="resize_zoom">Приблизить</string>
<string name="caption_auto_generated">Созданы автоматически</string>
<string name="live_sync">Синхронизировать</string>
<string name="enable_leak_canary_title">Включить LeakCanary</string>
<string name="enable_leak_canary_summary">Мониторинг утечки памяти может привести к зависанию приложения</string>
<string name="enable_disposed_exceptions_title">Сообщать об ошибках жизненного цикла</string>
@ -487,5 +486,4 @@
</plurals>
<string name="no_comments">Нет комментариев</string>
<string name="error_unable_to_load_comments">Не удалось загрузить комментарии</string>
<string name="direct_on_background">Играть сейчас в фоне</string>
</resources>

View File

@ -314,10 +314,6 @@
<string name="resize_fit">Prispôsobiť</string>
<string name="resize_fill">Vyplniť</string>
<string name="resize_zoom">Zväčšiť</string>
<string name="caption_font_size_settings_title">Veľkosť písma titulkov</string>
<string name="smaller_caption_font_size">Menšie Písmo</string>
<string name="normal_caption_font_size">Normálne Písmo</string>
<string name="larger_caption_font_size">Väčšie Písmo</string>
<string name="use_inexact_seek_title">Používať rýchly posun</string>
<string name="use_inexact_seek_summary">Rýchly posun umožňuje prejsť na novú pozíciu rýchlejšie, ale s menšou presnosťou</string>
<string name="download_thumbnail_title">Načítanie miniatúr</string>
@ -380,7 +376,6 @@
<string name="playback_tempo">Rýchlosť</string>
<string name="playback_pitch">Výška</string>
<string name="unhook_checkbox">"Spomalenie (môže spôsobovať skreslenie)"</string>
<string name="playback_nightcore">Nightcore režim</string>
<string name="playback_default">Predvolené</string>
<string name="clear_views_history_title">Vymazať históriu pozretí</string>
<string name="clear_views_history_summary">Odstráni históriu prehrávaných streamov</string>

View File

@ -47,9 +47,9 @@
<string name="light_theme_title">Светла</string>
<string name="settings_category_appearance_title">Изглед</string>
<string name="network_error">Грешка мреже</string>
<string name="download_path_audio_title">Одредиште преузимања за аудио</string>
<string name="download_path_audio_title">Фолдер преузимања за аудио</string>
<string name="download_path_audio_dialog_title">Унесите путању за преузимање аудио фајлова</string>
<string name="download_path_audio_summary">Путања за упис преузетих аудио фајлова</string>
<string name="download_path_audio_summary">Овде се чувају преузети аудио-снимци</string>
<string name="info_dir_created">Направљен директоријум за преузимање „%1$s“</string>
<string name="err_dir_create">Не могу да направим директоријум за преузимање„ %1$s“</string>
<string name="general_error">Грешка</string>
@ -133,7 +133,7 @@
<string name="clear">Очисти</string>
<string name="controls_background_title">Позадина</string>
<string name="controls_popup_title">Прозорче</string>
<string name="use_external_video_player_summary">Неке резолуције биће БЕЗ звука када је ова опција укључена</string>
<string name="use_external_video_player_summary">Уклања звук на неким резолуцијама</string>
<string name="popup_remember_size_pos_title">Упамти величину и позицију искачућег прозора</string>
<string name="popup_remember_size_pos_summary">Памти последњу величину и позицију искачућег прозорчета</string>
<string name="player_gesture_controls_title">Контроле прејера потезом</string>
@ -243,7 +243,7 @@
<string name="no_player_found_toast">Нема плејера тока (можете инсталирати ВЛЦ).</string>
<string name="controls_download_desc">Преузимање фајла тока</string>
<string name="show_info">Прикажи податке</string>
<string name="tab_bookmarks">Обележивачи</string>
<string name="tab_bookmarks">Сачуване плејлисте</string>
<string name="controls_add_to_playlist_title">Додај у</string>
<string name="default_content_country_title">Подразумевана држава за садржај</string>
<string name="service_title">Услуга</string>
@ -259,4 +259,16 @@
<string name="website_encouragement">Да бисте добили више информација и најновије вести о ЊуПајпу посетите наш вебсајт.</string>
<string name="hold_to_append">Задржи за стављање у ред</string>
<string name="start_here_on_main">Пусти одавде</string>
<string name="use_inexact_seek_title">Користи брзо, али непрецизно премотавање</string>
<string name="use_inexact_seek_summary">Омогућава плејеру да брже долази до позиције уз смањену прецизност</string>
<string name="download_thumbnail_title">Учитавање слика</string>
<string name="download_thumbnail_summary">Искључите како се не би преузимале слике, чиме ћете смањити количину пренетог саобраћаја и потрошњу меморије. Промена ове опције ће уклонити слике из радне и трајне меморије.</string>
<string name="thumbnail_cache_wipe_complete_notice">Очишћен кеш са сликама</string>
<string name="metadata_cache_wipe_title">Уклони кеширане метаподатке</string>
<string name="metadata_cache_wipe_summary">Уклони све податке о кешираним веб-странама</string>
<string name="unsubscribe">Откажи претплату</string>
<string name="tab_new">Нова картица</string>
<string name="tab_choose">Одабери картицу</string>
<string name="show_comments_title">Приказивање коментара</string>
<string name="show_comments_summary">Искључите како се не би приказивали коментари</string>
</resources>

View File

@ -121,7 +121,6 @@
<string name="enable_search_history_summary">தேடப்பட்ட வாக்கியத்தை அமைவிடத்தில் சேமிக்கவும்</string>
<string name="url_not_supported_toast">ஆதரிக்கப்படாத URL</string>
<string name="default_content_country_title">இயல்புநிலை தகவல்களின் நாடு</string>
<string name="search_language_title">தகவல்களின் இயல்பு மொழி</string>
<string name="settings_category_debug_title">பிழைதிருத்து</string>
<string name="content">உள்ளடக்கம்</string>
<string name="show_age_restricted_content_title">வயது வரம்புக்கு உட்பட்டது</string>

View File

@ -0,0 +1,447 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="main_bg_subtitle">แตะที่ปุ่มค้นหาเพื่อเริ่มต้น</string>
<string name="view_count_text">%1$s วิว</string>
<string name="upload_date_text">เผยแพร่เมื่อ %1$s</string>
<string name="no_player_found">ไม่พบแอปที่สามารถสตรีมสื่อวีดีโอได้ คุณต้องการติดตั้ง VLC หรือไม่\?</string>
<string name="no_player_found_toast">ไม่พบแอปที่สามารถสตรีมสื่อวีดีโอได้ (คุณสามารถติดตั้ง VLC เพื่อดูวีดีโอ)</string>
<string name="install">ติดตั้ง</string>
<string name="cancel">ยกเลิก</string>
<string name="open_in_browser">เปิดด้วยเว็บบราวเซอร์</string>
<string name="open_in_popup_mode">เปิดในโหมดป๊อปอัพ</string>
<string name="share">แชร์</string>
<string name="download">ดาวน์โหลด</string>
<string name="controls_download_desc">ดาวน์โหลดไฟล์สตรีม</string>
<string name="search">ค้นหา</string>
<string name="settings">ตั้งค่า</string>
<string name="did_you_mean">หรือคุณหมายถึง: %1$s\?</string>
<string name="share_dialog_title">แชร์ด้วย</string>
<string name="choose_browser">เลือกบราวเซอร์</string>
<string name="screen_rotation">หมุน</string>
<string name="use_external_video_player_title">ใช้แอปเล่นวีดีโอภายนอก</string>
<string name="use_external_audio_player_title">ใช้แอปเล่นเสียงภายนอก</string>
<string name="popup_mode_share_menu_title">NewPipe โหมดป๊อปอัพ</string>
<string name="subscribe_button_title">บอกรับ</string>
<string name="subscribed_button_title">บอกรับแล้ว</string>
<string name="unsubscribe">ยกเลิกการบอกรับ</string>
<string name="channel_unsubscribed">ยกเลิกการบอกรับช่องแล้ว</string>
<string name="subscription_change_failed">ไม่สามารถเปลี่ยนสถานะการบอกรับได้</string>
<string name="subscription_update_failed">ไม่สามารถอัปเดตการบอกรับข้อมูล</string>
<string name="show_info">แสดงข้อมูล</string>
<string name="tab_main">หน้าหลัก</string>
<string name="tab_subscriptions">การสมัครรับข้อมูล</string>
<string name="tab_bookmarks">เพลย์ลิสต์ที่เก็บไว้</string>
<string name="tab_new">แท็บใหม่</string>
<string name="tab_choose">เลือกแท็บ</string>
<string name="fragment_whats_new">มีอะไรใหม่</string>
<string name="controls_background_title">พื้นหลัง</string>
<string name="controls_popup_title">ป๊อปอัพ</string>
<string name="controls_add_to_playlist_title">เพิ่มไปยัง</string>
<string name="download_path_title">เส้นทางการดาวน์โหลดวิดีโอ</string>
<string name="download_path_summary">เส้นทางในการจัดเก็บวิดีโอที่ดาวน์โหลดมา</string>
<string name="download_path_dialog_title">ป้อนเส้นทางการดาวน์โหลดสำหรับวิดีโอ</string>
<string name="download_path_audio_title">โฟลเดอร์ที่ดาวน์โหลดเสียง</string>
<string name="download_path_audio_summary">เสียงที่ดาวน์โหลดจะถูกเก็บไว้ที่นี่</string>
<string name="download_path_audio_dialog_title">ป้อนเส้นทางการดาวน์โหลดสำหรับไฟล์เสียง</string>
<string name="autoplay_by_calling_app_title">เล่นอัตโนมัติ</string>
<string name="autoplay_by_calling_app_summary">เล่นวิดีโอเมื่อ NewPipe ถูกเรียกจากแอปอื่น</string>
<string name="default_resolution_title">ความละเอียดเริ่มต้น</string>
<string name="default_popup_resolution_title">ความละเอียดเริ่มต้นในโหมดป๊อปอัพ</string>
<string name="show_higher_resolutions_title">แสดงความละเอียดที่สูงขึ้น</string>
<string name="show_higher_resolutions_summary">เฉพาะบางอุปกรณ์ที่รองรับการเล่นวิดีโอ 2K/4K</string>
<string name="play_with_kodi_title">เปิดด้วย Kodi</string>
<string name="kore_not_found">ไม่พบแอป Kore จะติดตั้งหรือไม่\?</string>
<string name="show_play_with_kodi_title">แสดงตัวเลือก \"เปิดด้วย Kodi\"</string>
<string name="show_play_with_kodi_summary">แสดงตัวเลือกในการเล่นวิดีโอผ่าน Kodi media center</string>
<string name="play_audio">เสียง</string>
<string name="default_audio_format_title">ฟอร์แมตเสียงเริ่มต้น</string>
<string name="default_video_format_title">ฟอร์แมตวีดีโอเริ่มต้น</string>
<string name="theme_title">ธีม</string>
<string name="light_theme_title">สว่าง</string>
<string name="dark_theme_title">มืด</string>
<string name="black_theme_title">สีดำ</string>
<string name="popup_remember_size_pos_title">จำขนาดและตำแหน่งของป๊อปอัพ</string>
<string name="popup_remember_size_pos_summary">จำขนาดและตำแหน่งสุดท้ายของป๊อปอัพ</string>
<string name="use_inexact_seek_title">ใช้การข้ามที่ไม่แม่นยำ</string>
<string name="use_inexact_seek_summary">การข้ามช่วงที่ไม่แม่นยำจะทำให้เลื่อนไปยังตำแหน่งเวลาที่ต้องการได้เร็วขึ้น แต่จะลดความแม่นยำในการลากตำแหน่งลง</string>
<string name="download_thumbnail_title">โหลดภาพขนาดย่อ</string>
<string name="show_comments_title">แสดงความคิดเห็น</string>
<string name="show_comments_summary">ปิดใช้งานเพื่อซ่อนความคิดเห็น</string>
<string name="download_thumbnail_summary">ปิดเพื่อป้องกันการโหลดรูปขนาดย่อ ลดการใช้ข้อมูลและหน่วยความจำ การเปลี่ยนแปลงล้างแคชภาพในหน่วยความจำและบนดิสก์</string>
<string name="thumbnail_cache_wipe_complete_notice">ล้างแคชของรูปภาพแล้ว</string>
<string name="metadata_cache_wipe_summary">ลบข้อมูลเว็บเพจที่แคชไว้ทั้งหมด</string>
<string name="auto_queue_title">คิววีดีโอถัดไปโดยอัตโนมัติ</string>
<string name="auto_queue_summary">ต่อท้ายวีดีโอที่เกี่ยวข้องโดยอัตโนมัติเมื่อเล่นถึงรายการสุดท้ายในกรณีที่ไม่ได้ตั้งให้เล่นซ้ำ</string>
<string name="volume_gesture_control_title">การควบคุมระดับเสียงด้วยท่าทาง</string>
<string name="volume_gesture_control_summary">ใช้ท่าทางสัมผัสเพื่อควบคุมระดับเสียงของเครื่องเล่น</string>
<string name="brightness_gesture_control_title">การควบคุมความสว่างด้วยท่าทาง</string>
<string name="brightness_gesture_control_summary">ใช้ท่าทางสัมผัสเพื่อควบคุมความสว่างของเครื่องเล่น</string>
<string name="player_gesture_controls_title">ตัวควบคุมท่าทางของโปรแกรมเล่น</string>
<string name="player_gesture_controls_summary">ใช้ท่าทางสัมผัสเพื่อควบคุมความสว่างและระดับเสียงของเครื่องเล่น</string>
<string name="show_search_suggestions_title">คำแนะนำการค้นหา</string>
<string name="show_search_suggestions_summary">แสดงคำแนะนำเมื่อทำการค้นหา</string>
<string name="enable_search_history_title">ประวัติการค้นหา</string>
<string name="enable_search_history_summary">จัดเก็บคำที่เคยค้นหาไว้ในเครื่อง</string>
<string name="enable_watch_history_title">ประวัติและแคช</string>
<string name="enable_watch_history_summary">ติดตามวิดีโอที่ดคยดู</string>
<string name="resume_on_audio_focus_gain_summary">เล่นต่อหลังการขัดจังหวะ (เช่น การรับโทรศัพท์)</string>
<string name="download_dialog_title">ดาวน์โหลด</string>
<string name="next_video_title">วีดีโอถัดไป</string>
<string name="autoplay_title">เล่นอัตโนมัติ</string>
<string name="show_next_and_similar_title">แสดงวิดีโอ \'ถัดไป\' และ \'ที่คล้ายกัน\'</string>
<string name="show_hold_to_append_title">แสดงเคล็ดลับ \"แตะค้างเพื่อเพิ่ม\"</string>
<string name="show_hold_to_append_summary">แสดงเคล็ดลับเมื่อกดปุ่มพื้นหลังหรือป๊อปอัพในหน้ารายละเอียดวิดีโอ</string>
<string name="url_not_supported_toast">URL ที่ไม่สนับสนุน</string>
<string name="default_content_country_title">ประเทศเริ่มต้นของเนื้อหา</string>
<string name="service_title">บริการ</string>
<string name="content_language_title">ภาษาของเนื้อหาเริ่มต้น</string>
<string name="settings_category_player_title">เครื่องเล่น</string>
<string name="settings_category_player_behavior_title">พฤติกรรม</string>
<string name="settings_category_video_audio_title">วิดีโอและเสียง</string>
<string name="settings_category_history_title">ประวัติและแคช</string>
<string name="settings_category_popup_title">ป๊อปอัพ</string>
<string name="settings_category_appearance_title">ลักษณะ</string>
<string name="settings_category_other_title">อื่นๆ</string>
<string name="settings_category_debug_title">แก้จุดบกพร่อง</string>
<string name="settings_category_updates_title">อัพเดท</string>
<string name="background_player_playing_toast">กำลังเล่นในโหมดพื้นหลัง</string>
<string name="popup_playing_toast">กำลังเล่นในโหมดป๊อปอัพ</string>
<string name="background_player_append">จัดคิวลงในการเล่นโหมดพื้นหลังแล้ว</string>
<string name="popup_playing_append">จัดคิวลงในการเล่นโหมดป๊อปอัพแล้ว</string>
<string name="play_btn_text">เล่น</string>
<string name="content">เนื้อหา</string>
<string name="show_age_restricted_content_title">เนื้อหาที่จำกัดอายุ</string>
<string name="video_is_age_restricted">แสดงวิดีโอที่จำกัดอายุ การอนุญาตดังกล่าวเป็นไปได้จากการตั้งค่า</string>
<string name="duration_live">สด</string>
<string name="downloads">ดาวน์โหลด</string>
<string name="downloads_title">ดาวน์โหลด</string>
<string name="error_report_title">รายงานข้อผิดพลาด</string>
<string name="all">ทั้งหมด</string>
<string name="channel">ช่อง</string>
<string name="channels">ช่อง</string>
<string name="playlist">เพลย์ลิสต์</string>
<string name="playlists">เพลย์ลิสต์</string>
<plurals name="videos">
<item quantity="other">วิดีโอ</item>
</plurals>
<plurals name="comments">
<item quantity="other">ความคิดเห็น</item>
</plurals>
<string name="tracks">แทร็ค</string>
<string name="users">ผู้ใช้</string>
<string name="events">เหตุการณ์</string>
<string name="yes">ใช่</string>
<string name="later">ในภายหลัง</string>
<string name="disabled">ปิดการใช้งาน</string>
<string name="filter">ตัวกรอง</string>
<string name="refresh">เรียกใหม่</string>
<string name="clear">ล้าง</string>
<string name="popup_resizing_indicator_title">กำลังปรับขนาด</string>
<string name="best_resolution">ความละเอียดที่ดีที่สุด</string>
<string name="undo">เลิกทำ</string>
<string name="file_deleted">ลบไฟล์แล้ว</string>
<string name="play_all">เล่นทั้งหมด</string>
<string name="always">ตลอดเวลา</string>
<string name="just_once">เพียงครั้งเดียว</string>
<string name="file">ไฟล์</string>
<string name="notification_channel_name">การแจ้งเตือน NewPipe</string>
<string name="notification_channel_description">การแจ้งเตือนของแอป NewPipe เมื่อเล่นสื่อในโหมดพื้นหลังและป๊อปอัพ</string>
<string name="app_update_notification_channel_name">การแจ้งเตือนการอัปเดตแอป</string>
<string name="app_update_notification_channel_description">การแจ้งเตือนสำหรับ NewPipe เวอร์ชั่นใหม่</string>
<string name="unknown_content">[ไม่ทราบ]</string>
<string name="toggle_orientation">เปลี่ยนการวางแนว</string>
<string name="switch_to_background">สลับไปยังโหมดพื้นหลัง</string>
<string name="switch_to_popup">สลับไปยังโหมดป๊อปอัพ</string>
<string name="switch_to_main">สลับไปยังโหมดหลัก</string>
<string name="import_data_title">นำเข้าฐานข้อมูล</string>
<string name="export_data_title">ส่งออกฐานข้อมูล</string>
<string name="import_data_summary">แทนที่ประวัติการดูและการสมัครรับข้อมูลของคุณ</string>
<string name="export_data_summary">ส่งออกประวัติการดู ช่องที่ได้บอกรับและเพลย์ลิสต์</string>
<string name="clear_views_history_title">ล้างประวัติการดู</string>
<string name="clear_views_history_summary">ลบประวัติของวีดีโอที่เคยเล่น</string>
<string name="delete_view_history_alert">ลบประวัติการดูทั้งหมดหรือไม่\?</string>
<string name="view_history_deleted">ลบประวัติการดูแล้ว</string>
<string name="clear_search_history_title">ล้างประวัติการค้นหา</string>
<string name="clear_search_history_summary">ลบประวัติของคำที่เคยค้นหา</string>
<string name="delete_search_history_alert">ลบประวัติการค้นหาทั้งหมดหรือไม่\?</string>
<string name="search_history_deleted">ลบประวัติการค้นหาแล้ว</string>
<string name="general_error">เกิดข้อผิดพลาด</string>
<string name="download_to_sdcard_error_title">พื้นที่เก็บข้อมูลภายนอกไม่พร้อมใช้งาน</string>
<string name="download_to_sdcard_error_message">การดาวน์โหลดไปยังการ์ดความจำภายนอกยังไม่สามารถทำได้ รีเซ็ตตำแหน่งโฟลเดอร์ดาวน์โหลดหรือไม่\?</string>
<string name="network_error">ข้อผิดพลาดของเครือข่าย</string>
<string name="could_not_load_thumbnails">ไม่สามารถโหลดรูปขนาดย่อทั้งหมด</string>
<string name="youtube_signature_decryption_error">ไม่สามารถถอดรหัสลายเซ็น URL ของวิดีโอ</string>
<string name="parsing_error">ไม่สามารถแยกวิเคราะห์เว็บไซต์</string>
<string name="light_parsing_error">ไม่สามารถแยกวิเคราะห์เว็บไซต์ได้อย่างสมบูรณ์</string>
<string name="content_not_available">เนื้อหาไม่พร้อมใช้งาน</string>
<string name="blocked_by_gema">ถูกบล็อกโดย GEMA</string>
<string name="could_not_setup_download_menu">ไม่สามารถตั้งค่าเมนูดาวน์โหลด</string>
<string name="live_streams_not_supported">ยังไม่รองรับสตรีมแบบสดในขณะนี้</string>
<string name="could_not_get_stream">ไม่สามารถรับสตรีมใดๆ</string>
<string name="could_not_load_image">ไม่สามารถโหลดรูปภาพ</string>
<string name="app_ui_crash">แอป / UI ขัดข้อง</string>
<string name="player_stream_failure">ไม่สามารถเล่นสตรีมนี้</string>
<string name="player_unrecoverable_failure">เกิดข้อผิดพลาดของตัวเล่นที่ไม่สามารถกู้คืนได้</string>
<string name="player_recoverable_failure">กำลังกู้คืนจากข้อผิดพลาดของตัวเล่น</string>
<string name="external_player_unsupported_link_type">ตัวเล่นภายนอกไม่สนับสนุนลิงก์ประเภทนี้</string>
<string name="invalid_url_toast">URL ไม่ถูกต้อง</string>
<string name="video_streams_empty">ไม่พบสตรีมวิดีโอ</string>
<string name="audio_streams_empty">ไม่พบสตรีมเสียง</string>
<string name="invalid_directory">ไม่มีโฟลเดอร์ตามที่ระบุ</string>
<string name="invalid_source">ไม่มีแหล่งแฟ้ม/เนื้อหาดังกล่าว</string>
<string name="invalid_file">ไฟล์นี้ไม่มีอยู่หรือไม่ได้รับอนุญาตให้อ่านหรือเขียนไฟล์</string>
<string name="file_name_empty_error">ชื่อไฟล์ต้องไม่ว่างเปล่า</string>
<string name="error_occurred_detail">เกิดข้อผิดพลาด: %1$s</string>
<string name="no_streams_available_download">ไม่มีสตรีมให้ดาวน์โหลด</string>
<string name="saved_tabs_invalid_json">เรียกคืนการวางตำแหน่งแท็บเป็นค่าเดิม เนื่องจากพบข้อผิดพลาดในการอ่านการวางตำแหน่งแท็บที่บันทึกไว้</string>
<string name="restore_defaults">คืนค่าเริ่มต้น</string>
<string name="restore_defaults_confirmation">คุณต้องการคืนค่าเริ่มต้นหรือไม่\?</string>
<string name="error_report_button_text">รายงานข้อผิดพลาดผ่านทาง e-mail</string>
<string name="what_device_headline">ข้อมูล:</string>
<string name="what_happened_headline">เกิดอะไรขึ้น:</string>
<string name="your_comment">ความคิดเห็นของคุณ (เป็นภาษาอังกฤษ):</string>
<string name="error_details_headline">รายละเอียด:</string>
<string name="list_thumbnail_view_description">ภาพขนาดย่อของตัวอย่างวิดีโอ</string>
<string name="detail_thumbnail_view_description">ภาพของตัวอย่างวิดีโอขนาดย่อ</string>
<string name="detail_uploader_thumbnail_view_description">รูปขนาดย่อของผู้อัปโหลด</string>
<string name="detail_likes_img_view_description">ชอบ</string>
<string name="detail_dislikes_img_view_description">ไม่ชอบ</string>
<string name="use_tor_title">ใช้ Tor</string>
<string name="use_tor_summary">(ทดลอง) บังคับให้ใช้การเชื่อมต่อผ่าน Tor เพื่อเพิ่มความเป็นส่วนตัว (ยังไม่รองรับวิดีโอสตรีมมิ่ง)</string>
<string name="report_error">รายงานข้อผิดพลาด</string>
<string name="search_no_results">ไม่มีผลลัพธ์</string>
<string name="empty_subscription_feed_subtitle">ไม่มีอะไรที่นี่นอกจากจิ้งหรีด</string>
<string name="detail_drag_description">ลากเพื่อจัดลำดับใหม่</string>
<string name="err_dir_create">ไม่สามารถสร้างไดเรกทอรีดาวน์โหลด \'%1$s\'</string>
<string name="info_dir_created">สร้างไดเรกทอรีดาวน์โหลด \'%1$s\'</string>
<string name="video">วิดีโอ</string>
<string name="audio">เสียง</string>
<string name="retry">ลองอีกครั้ง</string>
<string name="storage_permission_denied">สิทธิ์การเข้าถึงการจัดเก็บข้อมูลถูกปฏิเสธ</string>
<string name="short_thousand">พัน</string>
<string name="short_million">ล้าน</string>
<string name="short_billion">พันล้าน</string>
<string name="no_subscribers">ไม่มีสมาชิกที่สมัครรับ</string>
<plurals name="subscribers">
<item quantity="other">%s บอกรับ</item>
</plurals>
<string name="subscribers_count_not_available">ไม่สามารถนับจำนวนสมาชิกได้</string>
<string name="no_views">ไม่มียอดวิว</string>
<plurals name="views">
<item quantity="other">%s วิว</item>
</plurals>
<string name="no_videos">ไม่มีวิดีโอ</string>
<string name="no_comments">ไม่มีความคิดเห็น</string>
<string name="start">เริ่ม</string>
<string name="pause">หยุดพัก</string>
<string name="view">เล่น</string>
<string name="create">สร้าง</string>
<string name="delete">ลบ</string>
<string name="delete_one">ลบหนึ่งรายการ</string>
<string name="delete_all">ลบทั้งหมด</string>
<string name="dismiss">ไม่สนใจ</string>
<string name="rename">เปลี่ยนชื่อ</string>
<string name="add">ภารกิจใหม่</string>
<string name="msg_name">ชื่อไฟล์</string>
<string name="msg_server_unsupported">เซิร์ฟเวอร์ที่ไม่รองรับ</string>
<string name="msg_exists">ไฟล์มีอยู่แล้ว</string>
<string name="msg_running">NewPipe กำลังดาวน์โหลด</string>
<string name="msg_running_detail">แตะเพื่อดูรายละเอียด</string>
<string name="msg_wait">โปรดรอ…</string>
<string name="msg_copied">คัดลอกไปที่คลิปบอร์ดแล้ว</string>
<string name="no_available_dir">โปรดเลือกโฟลเดอร์ดาวน์โหลดที่พร้อมใช้งาน</string>
<string name="msg_popup_permission">การอนุญาตนี้เป็นสิ่งจำเป็นเพื่อ
\nเปิดในโหมดป๊อปอัป</string>
<string name="one_item_deleted">ลบ 1 รายการแล้ว</string>
<string name="settings_category_downloads_title">ดาวน์โหลด</string>
<string name="settings_file_charset_title">อักขระที่อนุญาตในชื่อไฟล์</string>
<string name="settings_file_replacement_character_summary">อักขระที่ไม่ถูกต้องจะถูกแทนที่ด้วยค่านี้</string>
<string name="settings_file_replacement_character_title">อักขระทดแทน</string>
<string name="charset_letters_and_digits">ตัวอักษรและตัวเลข</string>
<string name="charset_most_special_characters">อักขระพิเศษส่วนใหญ่</string>
<string name="toast_no_player">ไม่มีแอพที่ติดตั้งเพื่อให้เล่นไฟล์นี้ได้</string>
<string name="title_activity_about">เกี่ยวกับ NewPipe</string>
<string name="action_settings">การตั้งค่า</string>
<string name="action_about">เกี่ยวกับ</string>
<string name="title_licenses">สัญญาอนุญาตของบุคคลที่สาม</string>
<string name="copyright" formatted="true">© %1$s โดย %2$s ภายใต้ %3$s</string>
<string name="error_unable_to_load_license">ไม่สามารถโหลดสัญญาอนุญาต</string>
<string name="action_open_website">เปิดเว็บไซต์</string>
<string name="tab_about">เกี่ยวกับ</string>
<string name="tab_contributors">ผู้มีส่วนร่วม</string>
<string name="tab_licenses">สัญญาอนุญาต</string>
<string name="app_description">แอปสตรีมมิ่งที่เล็กและเสรีบน Android</string>
<string name="contribution_title">สนับสนุน</string>
<string name="contribution_encouragement">ไม่ว่าคุณจะมีความคิดที่จะช่วยแปลภาษา เปลี่ยนดีไซน์ แก้ไขโค้ดของโปรแกรมให้ดีขึ้นทั้งในระดับเล็กน้อยหรือจะเปลี่ยนแปลงกันแบบขนานใหญ่ เรายินดีให้คุณได้ร่วมช่วยเหลือเสมอ… ยิ่งทำมาก ยิ่งช่วยให้ดีขึ้นมาก!</string>
<string name="view_on_github">ดูบน GitHub</string>
<string name="donation_title">บริจาค</string>
<string name="give_back">คืนให้</string>
<string name="website_title">เว็บไซต์</string>
<string name="website_encouragement">เยี่ยมชมเว็บไซต์ NewPipe สำหรับข้อมูลเพิ่มเติมและข่าวสาร</string>
<string name="privacy_policy_title">นโยบายความเป็นส่วนตัวของ NewPipe</string>
<string name="privacy_policy_encouragement">โครงการ NewPipe คำนึงถึงความเป็นส่วนตัวของคุณอย่างจริงจัง ดังนั้นแอปจะไม่เก็บรวบรวมข้อมูลใดๆ โดยไม่ได้รับความยินยอมจากคุณ
\nนโยบายความเป็นส่วนตัวของ NewPipe มีการอธิบายในรายละเอียดเกี่ยวกับข้อมูลที่จะถูกส่งออกไปและเก็บไว้เมื่อคุณรายงานความผิดพลาดของแอป</string>
<string name="read_privacy_policy">อ่านนโยบายความเป็นส่วนตัว</string>
<string name="app_license_title">สัญญาอนุญาตของ NewPipe</string>
<string name="read_full_license">อ่านสัญญาอนุญาต</string>
<string name="title_activity_history">ประวัติ</string>
<string name="title_history_search">สืบค้นแล้ว</string>
<string name="title_history_view">ดูแล้ว</string>
<string name="history_disabled">ประวัติการดูได้ปิดใช้งานอยู่</string>
<string name="action_history">ประวัติ</string>
<string name="history_empty">ประวัติว่างเปล่า</string>
<string name="history_cleared">ล้างประวัติแล้ว</string>
<string name="item_deleted">ลบรายการแล้ว</string>
<string name="delete_item_search_history">คุณต้องการลบรายการนี้ออกจากประวัติการค้นหาหรือไม่\?</string>
<string name="delete_stream_history_prompt">คุณต้องการลบรายการนี้ออกจากประวัติการดูหรือไม่\?</string>
<string name="delete_all_history_prompt">คุณแน่ใจหรือไม่ว่าต้องการลบรายการประวัติทั้งหมด\?</string>
<string name="title_last_played">เล่นครั้งล่าสุด</string>
<string name="title_most_played">เล่นมากที่สุด</string>
<string name="main_page_content">เนื้อหาของหน้าหลัก</string>
<string name="main_page_content_summary">แท็บใดบ้างที่ต้องการให้แสดงบนหน้าหลัก</string>
<string name="selection">การเลือก</string>
<string name="blank_page_summary">หน้าว่าง</string>
<string name="kiosk_page_summary">หน้า Kiosk</string>
<string name="subscription_page_summary">หน้าการสมัครสมาชิก</string>
<string name="feed_page_summary">หน้าฟีด</string>
<string name="channel_page_summary">หน้าของช่อง</string>
<string name="select_a_channel">เลือกช่อง</string>
<string name="no_channel_subscribed_yet">ยังไม่มีการสมัครรับข้อมูลช่องในตอนนี้</string>
<string name="select_a_kiosk">เลือกหน้า Kiosk</string>
<string name="export_complete_toast">ส่งออกแล้ว</string>
<string name="import_complete_toast">นำเข้าแล้ว</string>
<string name="no_valid_zip_file">ไม่มีไฟล์ ZIP ที่ถูกต้อง</string>
<string name="could_not_import_all_files">คำเตือน: ไม่สามารถนำเข้าไฟล์ทั้งหมดได้</string>
<string name="override_current_data">สิ่งนี้จะแทนที่การตั้งค่าปัจจุบันของคุณ</string>
<string name="import_settings">คุณยังต้องการนำเข้าการตั้งค่าด้วยหรือไม่\?</string>
<string name="error_unable_to_load_comments">ไม่สามารถโหลดความคิดเห็นได้</string>
<string name="trending">ได้รับความนิยม</string>
<string name="top_50">50 อันดับแรก</string>
<string name="new_and_hot">ใหม่และมาแรง</string>
<string name="conferences">การประชุม</string>
<string name="title_activity_background_player">เครื่องเล่นพื้นหลัง</string>
<string name="title_activity_popup_player">เครื่องเล่นป๊อปอัพ</string>
<string name="play_queue_remove">เอาออก</string>
<string name="play_queue_stream_detail">รายละเอียด</string>
<string name="play_queue_audio_settings">การตั้งค่าเสียง</string>
<string name="hold_to_append">กดค้างไว้เพื่อเพิ่มลงในคิว</string>
<string name="direct_on_background">เล่นโดยตรงในโหมดพื้นหลัง</string>
<string name="enqueue_on_background">เพิ่มคิวในโหมดพื้นหลัง</string>
<string name="enqueue_on_popup">เพิ่มคิวในโหมดป๊อปอัพ</string>
<string name="start_here_on_main">เริ่มเล่นจากตรงนี้</string>
<string name="start_here_on_background">เล่นจากจุดนี้ในโหมดพื้นหลัง</string>
<string name="start_here_on_popup">เล่นจากจุดนี้ในโหมดป๊อปอัพ</string>
<string name="drawer_header_action_paceholder_text">บางสิ่งบางอย่างจะปรากฏที่นี่เร็วๆ นี้ ;D</string>
<string name="preferred_open_action_settings_title">การดำเนินการ \'เปิด\' ที่ต้องการ</string>
<string name="preferred_open_action_settings_summary">การดำเนินการเริ่มต้นเมื่อเปิดเนื้อหา — %s</string>
<string name="video_player">เครื่องเล่นวิดีโอ</string>
<string name="background_player">เครื่องเล่นพื้นหลัง</string>
<string name="popup_player">เครื่องเล่นป๊อปอัพ</string>
<string name="always_ask_open_action">ถามเสมอ</string>
<string name="preferred_player_fetcher_notification_title">กำลังรับข้อมูล…</string>
<string name="preferred_player_fetcher_notification_message">กำลังโหลดเนื้อหาที่ร้องขอ</string>
<string name="create_playlist">เพลย์ลิสต์ใหม่</string>
<string name="delete_playlist">ลบ</string>
<string name="rename_playlist">เปลี่ยนชื่อ</string>
<string name="playlist_name_input">ชื่อ</string>
<string name="append_playlist">เพิ่มในเพลย์ลิสต์</string>
<string name="set_as_playlist_thumbnail">ตั้งเป็นรูปขนาดย่อของเพลย์ลิสต์</string>
<string name="bookmark_playlist">เก็บเพลย์ลิสต์</string>
<string name="unbookmark_playlist">เอาที่คั่นหน้าออก</string>
<string name="delete_playlist_prompt">ลบเพลย์ลิสต์นี้หรือไม่\?</string>
<string name="playlist_creation_success">สร้างเพลย์ลิสต์แล้ว</string>
<string name="playlist_add_stream_success">เพิ่มลงในเพลย์ลิสต์แล้ว</string>
<string name="playlist_thumbnail_change_success">เปลี่ยนภาพย่อของเพลย์ลิสต์แล้ว</string>
<string name="playlist_delete_failure">ไม่สามารถลบเพลย์ลิสต์ได้</string>
<string name="caption_none">ไม่มีคำอธิบายภาพ</string>
<string name="resize_fit">พอดี</string>
<string name="resize_fill">เติม</string>
<string name="resize_zoom">ขยาย</string>
<string name="caption_auto_generated">สร้างขึ้นโดยอัตโนมัติ</string>
<string name="caption_setting_title">คำบรรยายภาพ</string>
<string name="caption_setting_description">ปรับเปลี่ยนขนาดตัวอักษร สีของข้อความหรือพื้นหลังของคำอธิบายภาพ (จำเป็นตองปิดและเปิดแอปใหม่เพื่อให้การเปลี่ยนแปลงมีผล)</string>
<string name="enable_leak_canary_title">เปิดใช้งาน LeakCanary</string>
<string name="enable_leak_canary_summary">การตรวจสอบการรั่วไหลของหน่วยความจำอาจทำให้แอปจะไม่ตอบสนองเมื่อมีการดึงข้อมูลจากหน่วยความจำ</string>
<string name="import_export_title">นำเข้า/ส่งออก</string>
<string name="import_title">นำเข้า</string>
<string name="import_from">นำเข้าจาก</string>
<string name="export_to">ส่งออกไปยัง</string>
<string name="import_ongoing">กำลังนำเข้า…</string>
<string name="export_ongoing">กำลังส่งออก…</string>
<string name="import_file_title">นำเข้าไฟล์</string>
<string name="previous_export">การส่งออกก่อนหน้านี้</string>
<string name="subscriptions_import_unsuccessful">ไม่สามารถนำเข้าการสมัครรับข้อมูล</string>
<string name="subscriptions_export_unsuccessful">ไม่สามารถส่งออกการสมัครรับข้อมูล</string>
<string name="import_youtube_instructions">นำเข้ารายการช่องที่บอกรับใน YouTube โดยการดาวน์โหลดไฟล์การส่งออก:
\n
\n1. ไปที่ URL นี้: %1$s
\n2. เข้าสู่ระบบเมื่อระบบถาม
\n3. การดาวน์โหลดควรเริ่มต้น (นั่นคือไฟล์ที่ส่งออก)</string>
<string name="import_soundcloud_instructions">นำเข้าโปรไฟล์ SoundCloud โดยการพิมพ์ URL หรือรหัสไอดีผู้ใช้ของคุณ:
\n
\n1. เปิดใช้งาน \"โหมดเดสก์ท็อป\" ในเว็บเบราว์เซอร์ (เว็บไซต์ไม่สามารถใช้ได้สำหรับอุปกรณ์มือถือ)
\n2. ไปที่ URL นี้: %1$s
\n3. เข้าสู่ระบบเมื่อระบบถาม
\n4. คัดลอก URL ของโปรไฟล์ที่คุณถูกเปลี่ยนเส้นทางไป</string>
<string name="import_network_expensive_warning">โปรดทราบว่าการดำเนินการนี้อาจใช้งานข้อมูลมือถือที่มีค่าใช้จ่าย
\n
\nคุณต้องการที่จะทำต่อไปหรือไม่\?</string>
<string name="playback_speed_control">การควบคุมความเร็วในการเล่น</string>
<string name="playback_tempo">จังหวะ</string>
<string name="playback_pitch">เสียงสูงต่ำ</string>
<string name="unhook_checkbox">ยกเลิกการเชื่อมโยง (อาจทำให้เสียงมีการบิดเบือน)</string>
<string name="skip_silence_checkbox">กรอไปข้างหน้าระหว่างความเงียบ</string>
<string name="playback_step">ทีละ</string>
<string name="playback_reset">รีเซ็ต</string>
<string name="start_accept_privacy_policy">เพื่อให้สอดคล้องกับระเบียบข้อบังคับว่าด้วยการป้องกันข้อมูลทั่วไปของยุโรป (GDPR) เราขอแนะนำให้คุณอ่านนโยบายความเป็นส่วนตัวของ NewPipe อย่างระมัดระวังและถี่ถ้วน
\nคุณต้องยอมรับข้อตกลงเพื่ออนุญาตให้ส่งรายงานข้อผิดพลาดถึงเรา</string>
<string name="accept">ยอมรับ</string>
<string name="decline">ปฏิเสธ</string>
<string name="limit_data_usage_none_description">ไม่จำกัด</string>
<string name="limit_mobile_data_usage_title">จำกัดความละเอียดเมื่อใช้ข้อมูลมือถือ</string>
<string name="updates_setting_title">อัพเดท</string>
<string name="updates_setting_description">แสดงการแจ้งเตือนการปรับปรุงให้ทราบก่อนอัพเดทแอพ เมื่อมีเวอร์ชั่นใหม่ให้พร้อมใช้งาน</string>
<string name="minimize_on_exit_title">ย่อเล็กสุดเมื่อสลับแอป</string>
<string name="minimize_on_exit_summary">การดำเนินการเมื่อสลับไปยังแอปอื่นๆ จากโปรแกรมเล่นวิดีโอหลัก — %s</string>
<string name="minimize_on_exit_none_description">ไม่มี</string>
<string name="minimize_on_exit_background_description">ย่อเล็กสุดไปยังการเล่นพื้นหลัง</string>
<string name="minimize_on_exit_popup_description">ย่อเล็กสุดไปยังการเล่นป๊อปอัพ</string>
<string name="list_view_mode">โหมดมุมมองรายการ</string>
<string name="list">รายการ</string>
<string name="grid">ตาราง</string>
<string name="auto">อัตโนมัติ</string>
<string name="switch_view">สลับมุมมอง</string>
<string name="app_update_notification_content_title">NewPipe พร้อมให้อัพเดทแล้ว!</string>
<string name="app_update_notification_content_text">แตะเพื่อดาวน์โหลด</string>
<string name="missions_header_finished">เสร็จแล้ว</string>
<string name="missions_header_pending">อยู่ในคิว</string>
<string name="paused">หยุดชั่วคราว</string>
<string name="queued">อยู่ในคิวแล้ว</string>
<string name="enqueue">คิว</string>
<string name="permission_denied">การดำเนินการถูกปฏิเสธโดยระบบ</string>
<string name="download_failed">การดาวน์โหลดล้มเหลว</string>
<string name="download_finished">การดาวน์โหลดเสร็จสิ้น</string>
<string name="download_finished_more">%s การดาวน์โหลดเสร็จสิ้น</string>
<string name="generate_unique_name">สร้างชื่อเฉพาะ</string>
<string name="overwrite">เขียนทับ</string>
<string name="overwrite_warning">ไฟล์ที่ดาวน์โหลดด้วยชื่อนี้มีอยู่แล้ว</string>
<string name="download_already_running">มีการดาวน์โหลดที่กำลังดำเนินการอยู่ด้วยไฟล์ชื่อนี้อยู่แล้ว</string>
<string name="show_error">แสดงข้อผิดพลาด</string>
<string name="label_code">โค้ด</string>
<string name="error_path_creation">ไม่สามารถสร้างไฟล์ได้</string>
<string name="error_file_creation">ไม่สามารถสร้างโฟลเดอร์ปลายทางได้</string>
<string name="error_permission_denied">การอนุญาตถูกปฏิเสธโดยระบบ</string>
<string name="error_ssl_exception">ล้มเหลวในการสร้างการเชื่อมต่อที่ปลอดภัย</string>
<string name="error_unknown_host">ไม่พบเซิร์ฟเวอร์</string>
<string name="error_connect_host">ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์</string>
<string name="error_http_no_content">เซิร์ฟเวอร์ไม่ส่งข้อมูล</string>
<string name="error_http_unsupported_range">เซิร์ฟเวอร์ไม่รองรับการดาวน์โหลดแบบพร้อมกันหลายส่วน โปรดลองอีกครั้งด้วย @string/msg_threads = 1</string>
<string name="error_http_not_found">ไม่พบ</string>
<string name="clear_finished_download">ล้างการดาวน์โหลดที่เสร็จสิ้นแล้ว</string>
<string name="stop">หยุด</string>
<string name="max_retry_msg">จำนวนครั้งสูงสุดที่จะลองใหม่</string>
<string name="max_retry_desc">จำนวนครั้งสูงสุดที่จะลองใหม่ก่อนจะยกเลิกการดาวน์โหลด</string>
<string name="pause_downloads_on_mobile">หยุดชั่วคราวเมื่อเปลี่ยนเป็นข้อมูลมือถือ</string>
<string name="pause_downloads_on_mobile_desc">การดาวน์โหลดที่ไม่สามารถหยุดพักได้จะเริ่มต้นใหม่</string>
<string name="close">ปิด</string>
</resources>

View File

@ -310,10 +310,6 @@
<string name="resize_fit">Sığdır</string>
<string name="resize_fill">Doldur</string>
<string name="resize_zoom">Yakınlaştır</string>
<string name="caption_font_size_settings_title">Alt yazı boyutu</string>
<string name="smaller_caption_font_size">Daha küçük yazı tipi</string>
<string name="normal_caption_font_size">Normal yazı tipi</string>
<string name="larger_caption_font_size">Daha büyük yazı tipi</string>
<string name="settings_category_debug_title">Hata ayıklama</string>
<string name="drawer_header_action_paceholder_text">Yakında bir şeyler burada görünecek ;D</string>
<string name="caption_auto_generated">Kendiliğinden Oluşturulan</string>
@ -325,7 +321,6 @@
<string name="use_inexact_seek_summary">İsabetsiz konumlama, oynatıcının daha düşük hassasiyetle daha hızlı pozisyon aramasını sağlar</string>
<string name="auto_queue_title">Sonraki akışı otomatik kuyruğa ekle</string>
<string name="auto_queue_summary">Yinelenmeyen bir kuyruktaki son akışı oynatırken, ilgili bir akışı kendiliğinden ekle</string>
<string name="live_sync">EŞZAMANLA</string>
<string name="file">Dosya</string>
<string name="invalid_directory">Böyle bir dizin yok</string>
<string name="invalid_source">Dosya/içerik kaynağı değil</string>
@ -368,7 +363,6 @@
<string name="playback_default">Öntanımlı</string>
<string name="playback_pitch">Ses titreşimi</string>
<string name="unhook_checkbox">Bağlantısız (bozulmaya neden olabilir)</string>
<string name="playback_nightcore">Nightcore</string>
<string name="no_streams_available_download">İndirilebilecek akış yok</string>
<string name="preferred_open_action_settings_title">Tercih edilen \'aç\' eylemi</string>
<string name="preferred_open_action_settings_summary">İçerik açılırken öntanımlı eylem — %s</string>
@ -481,6 +475,5 @@
</plurals>
<string name="no_comments">Yorum yok</string>
<string name="error_unable_to_load_comments">Yorumlar yüklenemedi</string>
<string name="direct_on_background">Arka planda direkt başlat</string>
<string name="close">Kapat</string>
</resources>

View File

@ -107,7 +107,7 @@
<string name="msg_running_detail">Подробиці</string>
<string name="msg_wait">Зачекайте…</string>
<string name="msg_copied">Скопійовано до буферу обміну</string>
<string name="no_available_dir">Оберіть доступну теку для завантажень</string>
<string name="no_available_dir">Вкажіть теку для завантажень пізніше у налаштуваннях</string>
<string name="no_player_found_toast">Програвач потокового відео не знайдений (ви можете встановити VLC для програвання).</string>
<string name="open_in_popup_mode">Відкрити у віконному режимі</string>
<string name="use_external_video_player_summary">Прибирає звук при ПЕВНИХ роздільних здатностях</string>
@ -436,7 +436,7 @@
<string name="app_update_notification_content_title">Доступна нова версія NewPipe!</string>
<string name="app_update_notification_content_text">Натисніть для завантаження</string>
<string name="missions_header_finished">Завершено</string>
<string name="missions_header_pending">У черзі</string>
<string name="missions_header_pending">Очікує</string>
<string name="paused">призупинено</string>
<string name="queued">додано в чергу</string>
<string name="post_processing">пост-обробка</string>
@ -452,8 +452,8 @@
<string name="download_already_running">Файл з такою назвою вже завантажується</string>
<string name="show_error">Показати помилку</string>
<string name="label_code">Код</string>
<string name="error_path_creation">Файл не може бути створений</string>
<string name="error_file_creation">Цільова тека не може бути створена</string>
<string name="error_path_creation">Цільова тека не може бути створена</string>
<string name="error_file_creation">Файл не може бути створений</string>
<string name="error_permission_denied">Доступ заборонено системою</string>
<string name="error_ssl_exception">Захищене з\'єднання не встановлено</string>
<string name="error_unknown_host">Сервер не знайдено</string>
@ -466,24 +466,40 @@
<string name="stop">Зупинити</string>
<string name="max_retry_msg">Максимум спроб</string>
<string name="max_retry_desc">Максимальна кількість спроб перед скасуванням завантаження</string>
<string name="pause_downloads_on_mobile">Призупиняти завантаження при переході на стільникові дані</string>
<string name="download_to_sdcard_error_message">Завантаження до зовнішньої SD-карти поки що неможливе. Скинути розташування теки для завантажень\?</string>
<string name="pause_downloads_on_mobile">Переривати завантаження на небезлімітних з\'єднаннях</string>
<string name="download_to_sdcard_error_message">Завантаження до зовнішньої SD-карти неможливе. Скинути розташування теки для завантажень\?</string>
<string name="saved_tabs_invalid_json">Помилка зчитування збережених вкладок. Використовую типові вкладки.</string>
<string name="main_page_content_summary">Вкладки, що відображаються на головній сторінці</string>
<string name="updates_setting_description">Показувати сповіщення з пропозицією оновити застосунок за наявності нової версії</string>
<string name="error_http_requested_range_not_satisfiable">Запитуваний діапазон неприпустимий</string>
<string name="msg_pending_downloads">Продовжити ваші %s відкладених переміщень із Завантажень</string>
<string name="pause_downloads_on_mobile_desc">Завантаження, що не можуть бути призупинені, будуть перезапущені</string>
<string name="pause_downloads_on_mobile_desc">Корисно під час переходу на мобільні дані, хоча деякі завантаження не можуть бути призупинені</string>
<string name="show_comments_title">Показувати коментарі</string>
<string name="show_comments_summary">Вимнути відображення дописів</string>
<string name="autoplay_title">Автопрогравання</string>
<plurals name="comments">
<item quantity="one">Коментарі</item>
<item quantity="few"></item>
<item quantity="many"></item>
<item quantity="few"/>
<item quantity="many"/>
</plurals>
<string name="no_comments">Коментарі відсутні</string>
<string name="error_unable_to_load_comments">Не вдалося підвантажити коментарів</string>
<string name="direct_on_background">Програвати у фоні</string>
<string name="close">Закрити</string>
<string name="watch_history_states_deleted">Позиції відтворення видалено.</string>
<string name="missing_file">Файл переміщено або видалено</string>
<string name="overwrite_failed">не можу перезаписати файл</string>
<string name="download_already_pending">Завантаження з таким ім\'ям вже є в черзі</string>
<string name="error_postprocessing_stopped">NewPipe був закритий під час роботи над файлом</string>
<string name="error_insufficient_storage">На пристрої не залишилося вільного місця</string>
<string name="error_progress_lost">Прогрес втрачено через видалення файлу</string>
<string name="error_timeout">Час очікування з\'єднання вичерпано</string>
<string name="confirm_prompt">Ви впевнені\?</string>
<string name="enable_queue_limit">Обмежити чергу завантажень</string>
<string name="enable_queue_limit_desc">В кожен момент часу виконуватиметься одне завантаження</string>
<string name="start_downloads">Почати завантаження</string>
<string name="pause_downloads">Призупинити завантаження</string>
<string name="downloads_storage_ask_title">Запитувати, куди завантажувати</string>
<string name="downloads_storage_ask_summary">Вас питатимуть, куди зберігати кожне завантаження</string>
<string name="downloads_storage_ask_summary_kitkat">Вас питатимуть, куди зберігати кожне завантаження.
\nУвімкніть цю опцію, якщо бажаєте завантажувати на зовнішню SD-картку</string>
</resources>

View File

@ -12,11 +12,11 @@
<string name="download">Tải về</string>
<string name="search">Tìm kiếm</string>
<string name="settings">Cài đặt</string>
<string name="did_you_mean">Ý của bạn là %1$s\?</string>
<string name="did_you_mean">Ý của bạn là: %1$s\?</string>
<string name="share_dialog_title">Chia sẻ với</string>
<string name="choose_browser">Chọn trình duyệt</string>
<string name="use_external_video_player_title">Sử dụng trình phát video bên ngoài</string>
<string name="use_external_video_player_summary">Âm thanh có thể không có ở *một vài* độ phân giải video</string>
<string name="use_external_video_player_summary">Loại bỏ âm thanh trên *MỘT SỐ* độ phân giải video</string>
<string name="use_external_audio_player_title">Sử dụng trình phát audio bên ngoài</string>
<string name="popup_mode_share_menu_title">Chế độ popup của NewPipe</string>
<string name="controls_popup_title">Trình phát nổi</string>
@ -45,13 +45,13 @@
<string name="dark_theme_title">Tối</string>
<string name="black_theme_title">Đen</string>
<string name="popup_remember_size_pos_title">Nhớ kích thước và vị trí của popup</string>
<string name="popup_remember_size_pos_summary">Nhớ kích thước và vị trí cuối của popup</string>
<string name="popup_remember_size_pos_summary">Nhớ kích thước và vị trí lần trước của popup</string>
<string name="player_gesture_controls_title">Điều khiển cử chỉ trình phát</string>
<string name="player_gesture_controls_summary">Sử dụng cử chỉ để kiểm soát độ sáng và âm lượng của trình phát</string>
<string name="show_search_suggestions_title">Đề xuất tìm kiếm</string>
<string name="show_search_suggestions_summary">Hiển thị các đề xuất khi tìm kiếm</string>
<string name="download_dialog_title">Tải về</string>
<string name="next_video_title">Tiếp</string>
<string name="next_video_title">Tiếp theo</string>
<string name="show_next_and_similar_title">Hiển thị video \"Tiếp theo\" và \"Tương tự\"</string>
<string name="url_not_supported_toast">URL không được hỗ trợ</string>
<string name="settings_category_appearance_title">Hiển thị</string>
@ -78,7 +78,7 @@
<string name="best_resolution">Độ phân giải tốt nhất</string>
<string name="general_error">Lỗi</string>
<string name="network_error">Lỗi kết nối mạng</string>
<string name="could_not_load_thumbnails">Không thể tải tất cả các thumbnails</string>
<string name="could_not_load_thumbnails">Không thể tải tất cả hình thu nhỏ</string>
<string name="youtube_signature_decryption_error">Không thể giải mã chữ ký URL video</string>
<string name="parsing_error">Không thể phân tích cú pháp trang web</string>
<string name="light_parsing_error">Không thể phân tích cú pháp hoàn toàn trang web</string>
@ -132,7 +132,7 @@
<string name="msg_running_detail">Chạm để biết chi tiết</string>
<string name="msg_wait">Vui lòng đợi …</string>
<string name="msg_copied">Sao chép vào clipboard</string>
<string name="no_available_dir">Chọn một thư mục tải về có sẵn</string>
<string name="no_available_dir">Chọn một thư mục tải về có sẵn trong cài đặt</string>
<string name="msg_popup_permission">Cần quyền này để
\nmở trong chế độ popup</string>
<string name="reCaptchaActivity">ReCAPTCHA</string>
@ -158,7 +158,7 @@
<string name="content_language_title">Ngôn ngữ nội dung ưu tiên</string>
<string name="settings_category_video_audio_title">Video &amp; âm thanh</string>
<string name="settings_category_popup_title">Trình phát nổi</string>
<string name="enable_watch_history_title">Lịch sử &amp; bộ nhớ cache</string>
<string name="enable_watch_history_title">Lịch sử xem</string>
<string name="settings_category_history_title">Lịch sử &amp; bộ nhớ cache</string>
<string name="playlist">Playlist</string>
<string name="search_no_results">Không tìm thấy</string>
@ -170,13 +170,13 @@
<string name="no_player_found_toast">Không tìm thấy trình phát luồng nào (bạn có thể cài đặt VLC để phát).</string>
<string name="controls_download_desc">Tải về tệp luồng</string>
<string name="show_info">Hiển thị thông tin</string>
<string name="tab_main">main</string>
<string name="tab_main">Trang chủ</string>
<string name="tab_subscriptions">Đăng ký</string>
<string name="tab_bookmarks">Playlist đã đánh dấu</string>
<string name="tab_bookmarks">Danh sách phát được đánh dấu</string>
<string name="fragment_whats_new">Có gì mới</string>
<string name="controls_add_to_playlist_title">Thêm vào</string>
<string name="use_inexact_seek_title">Sử dụng tìm kiếm nhanh không chính xác</string>
<string name="use_inexact_seek_summary">Tìm kiếm không chính xác cho phép trình phát tua đến vị trí nhanh hơn với độ chính xác bị hạn chế</string>
<string name="use_inexact_seek_summary">Tìm kiếm không chính xác cho phép trình phát tìm đến vị trí nhanh hơn với độ chính xác bị hạn chế</string>
<string name="download_thumbnail_title">Tải hình thu nhỏ</string>
<string name="download_thumbnail_summary">Tắt để không tải về các hình thu nhỏ, tiết kiệm lưu lượng mạng và bộ nhớ. Thay đổi điều này sẽ xóa bộ nhớ đệm hình ảnh cả trong RAM và trong bộ nhớ.</string>
<string name="thumbnail_cache_wipe_complete_notice">Đã xóa bộ nhớ cache hình ảnh</string>
@ -184,7 +184,7 @@
<string name="metadata_cache_wipe_summary">Xóa tất cả dữ liệu trang web được lưu trong bộ nhớ cache</string>
<string name="metadata_cache_wipe_complete_notice">Đã xóa bộ nhớ cache siêu dữ liệu</string>
<string name="auto_queue_title">Tự động phát tiếp theo theo hàng</string>
<string name="auto_queue_summary">Tự động thêm một luồng có liên quan khi phát luồng cuối cùng trong hàng đợi không lặp lại.</string>
<string name="auto_queue_summary">Tự động thêm một luồng có liên quan khi phát luồng cuối cùng trong hàng đợi không lặp lại</string>
<string name="enable_search_history_title">Lịch sử tìm kiếm</string>
<string name="enable_search_history_summary">Lưu trữ truy vấn tìm kiếm cục bộ</string>
<string name="enable_watch_history_summary">Theo dõi các video đã xem</string>
@ -252,7 +252,7 @@
</plurals>
<string name="no_videos">Không có video nào</string>
<plurals name="videos">
<item quantity="other">Video</item>
<item quantity="other">Videos</item>
</plurals>
<string name="create">Tạo nên</string>
<string name="delete_one">Xóa một</string>
@ -315,10 +315,10 @@
<string name="play_queue_audio_settings">Cài đặt âm thanh</string>
<string name="hold_to_append">Giữ để nối tiếp</string>
<string name="enqueue_on_background">Thêm vào trình phát nền</string>
<string name="enqueue_on_popup">Thêm vào trình phát popup</string>
<string name="enqueue_on_popup">Thêm vào trình phát popup mới</string>
<string name="start_here_on_main">Bắt đầu phát ở đây</string>
<string name="start_here_on_background">Bắt đầu từ đây trong nền</string>
<string name="start_here_on_popup">Bắt đầu từ đây trên trình phát popup</string>
<string name="start_here_on_background">Bắt đầu phát từ đây trong nền</string>
<string name="start_here_on_popup">Bắt đầu phát từ đây trên trình phát popup mới</string>
<string name="drawer_open">Mở ngăn kéo</string>
<string name="drawer_close">Đóng ngăn</string>
<string name="drawer_header_action_paceholder_text">Một cái gì đó sẽ xuất hiện ở đây sớm ;D</string>
@ -409,7 +409,7 @@
<string name="app_update_notification_channel_name">Thông báo cập nhật ứng dụng</string>
<string name="app_update_notification_channel_description">Thông báo phiên bản NewPipe mới</string>
<string name="download_to_sdcard_error_title">Bộ nhớ ngoài không khả dụng</string>
<string name="download_to_sdcard_error_message">Hiện tại chưa thể tải vào thẻ SD ngoài. Đặt lại vị trí tải về\?</string>
<string name="download_to_sdcard_error_message">Không thể tải vào thẻ SD ngoài. Đặt lại vị trí tải về\?</string>
<string name="saved_tabs_invalid_json">Khôi phục lại các tab mặc định do danh sách các tab đã lưu không hợp lệ</string>
<string name="restore_defaults">Khôi phục về mặc định</string>
<string name="restore_defaults_confirmation">Bạn có muốn khôi phục về mặc định\?</string>
@ -457,9 +457,41 @@
<string name="stop">Dừng</string>
<string name="max_retry_msg">Số lượt thử lại tối đa</string>
<string name="max_retry_desc">Số lượt thử lại trước khi hủy tải về</string>
<string name="pause_downloads_on_mobile">Tạm dừng tải khi chuyển qua dữ liệu di động</string>
<string name="pause_downloads_on_mobile_desc">Các tải về không thể tạm dừng được sẽ bắt đầu lại từ đầu</string>
<string name="pause_downloads_on_mobile">Tạm dừng tải khi trên dữ liệu di động</string>
<string name="pause_downloads_on_mobile_desc">Hữu ích khi chuyển sang dữ liệu di động, nhưng một số tải xuống không thể bị đình chỉ</string>
<string name="missions_header_pending">Đang chờ xử lý</string>
<string name="conferences">Hội thảo</string>
<string name="label_code"></string>
<string name="show_comments_title">Hiện nhận xét</string>
<string name="show_comments_summary">Vô hiệu hoá để dừng nhận xét xuất hiện</string>
<string name="autoplay_title">Tự động phát</string>
<plurals name="comments">
<item quantity="other">Nhận xét</item>
</plurals>
<string name="no_comments">Không có nhận xét</string>
<string name="error_unable_to_load_comments">Không thể tải nhận xét</string>
<string name="close">Đóng</string>
<string name="enable_playback_resume_title">Tiếp tục phát</string>
<string name="enable_playback_resume_summary">Phục hồi vị trí phát lại</string>
<string name="enable_playback_state_lists_title">Vị trí phát trong danh sách</string>
<string name="enable_playback_state_lists_summary">Hiện vị trí phát lại trong danh sách</string>
<string name="settings_category_clear_data_title">Xoá dữ liệu</string>
<string name="watch_history_states_deleted">Đã xoá vị trí phát lại.</string>
<string name="missing_file">Tệp đã di chuyển hoặc đã xoá</string>
<string name="overwrite_unrelated_warning">Tên file này đã tồn tại</string>
<string name="overwrite_failed">Không thể ghi đè lên tệp</string>
<string name="download_already_pending">Có một bản tải xuống đang chờ xử lí với tên này</string>
<string name="error_postprocessing_stopped">Newpipe đã bị đóng khi đang xử lí tệp</string>
<string name="error_insufficient_storage">Không đủ dung lượng trên máy</string>
<string name="error_progress_lost">Quá trình mất, vì tập tin đã bị xoá</string>
<string name="error_timeout">Kết nối hết thời gian</string>
<string name="confirm_prompt">Bạn có chắc không\?</string>
<string name="enable_queue_limit">Giới hạn hàng chờ tải xuống</string>
<string name="enable_queue_limit_desc">Chỉ một tải xuống sẽ chạy</string>
<string name="start_downloads">Bắt đầu tải xuống</string>
<string name="pause_downloads">Tạm dừng tải xuống</string>
<string name="downloads_storage_ask_title">Hỏi vị trí tải xuống</string>
<string name="downloads_storage_ask_summary">Bạn sẽ được hỏi vị trí lưu mỗi lần tải xuống</string>
<string name="downloads_storage_ask_summary_kitkat">Bạn sẽ được hỏi vị trí lưu mỗi lần tải xuống.
\nBật tính năng này nếu bạn muốn tải xuống sang thẻ SD ngoài.</string>
</resources>

View File

@ -383,10 +383,6 @@
<string name="resize_zoom">放大填充</string>
<string name="caption_auto_generated">自动生成</string>
<string name="caption_font_size_settings_title">字幕字体大小</string>
<string name="smaller_caption_font_size">小字体</string>
<string name="normal_caption_font_size">中等字体</string>
<string name="larger_caption_font_size">大字体</string>
<string name="enable_leak_canary_title">启用 LeakCanary</string>
<string name="enable_leak_canary_summary">内存泄露监测可能会在heap dumping时导致应用失去响应</string>
@ -426,7 +422,6 @@
<string name="playback_tempo">速度</string>
<string name="playback_pitch">音调</string>
<string name="unhook_checkbox">Unhook可能导致失真</string>
<string name="playback_nightcore">Nightcore</string>
<string name="playback_default">默认</string>
<string name="toast_no_player">未安装能播放此文件的应用</string>

View File

@ -306,10 +306,6 @@
<string name="resize_fit">合適的</string>
<string name="resize_fill">填滿</string>
<string name="resize_zoom">縮放</string>
<string name="caption_font_size_settings_title">標題字體大小</string>
<string name="smaller_caption_font_size">縮小字體</string>
<string name="normal_caption_font_size">正常字體</string>
<string name="larger_caption_font_size">加大字體</string>
<string name="drawer_header_action_paceholder_text">某些東西即將在此出現 ;D</string>
<string name="settings_category_debug_title">除錯</string>
<string name="caption_auto_generated">自動產生</string>
@ -321,7 +317,6 @@
<string name="use_inexact_seek_summary">粗略的尋找能讓播放器以降低的精確度更快找到影片的進度位置</string>
<string name="auto_queue_title">自動將下一部影片新增至佇列</string>
<string name="auto_queue_summary">在非重複播放佇列中最後一個串流開始播放時,自動新增相關串流</string>
<string name="live_sync">同步</string>
<string name="file">檔案</string>
<string name="invalid_directory">無效的資料夾</string>
<string name="invalid_source">無效的檔案/內容來源</string>
@ -363,7 +358,6 @@
<string name="playback_tempo">節奏</string>
<string name="playback_pitch">音高</string>
<string name="unhook_checkbox">解除連結(可能導致失真)</string>
<string name="playback_nightcore">Nightcore</string>
<string name="playback_default">預設</string>
<string name="preferred_open_action_settings_title">偏好的「開啟」動作</string>
<string name="preferred_open_action_settings_summary">開啟內容時的預設動作 — %s</string>
@ -477,6 +471,5 @@
</plurals>
<string name="no_comments">沒有留言</string>
<string name="error_unable_to_load_comments">無法載入留言</string>
<string name="direct_on_background">直接在背景播放</string>
<string name="close">關閉</string>
</resources>

View File

@ -163,6 +163,7 @@
<string name="clear_search_history_key" translatable="false">clear_search_history</string>
<string name="downloads_storage_ask" translatable="false">downloads_storage_ask</string>
<string name="storage_use_saf" translatable="false">storage_use_saf</string>
<!-- FileName Downloads -->
<string name="settings_file_charset_key" translatable="false">file_rename_charset</string>

View File

@ -99,7 +99,7 @@
<string name="resume_on_audio_focus_gain_title">Resume on focus gain</string>
<string name="resume_on_audio_focus_gain_summary">Continue playing after interruptions (e.g. phone calls)</string>
<string name="download_dialog_title">Download</string>
<string name="next_video_title">Up next</string>
<string name="next_video_title">Next</string>
<string name="autoplay_title">Autoplay</string>
<string name="show_next_and_similar_title">Show \'Next\' and \'Similar\' videos</string>
<string name="show_hold_to_append_title">Show \"Hold to append\" tip</string>
@ -260,16 +260,14 @@
</plurals>
<string name="no_videos">No videos</string>
<plurals name="videos">
<item quantity="one">Video</item>
<item quantity="other">Videos</item>
</plurals>
<item quantity="one">Videos</item>
<item quantity="other">Videos</item>
</plurals>
<string name="no_comments">No comments</string>
<plurals name="comments">
<item quantity="one">%s comment</item>
<item quantity="other">%s comments</item>
</plurals>
<!-- Missions -->
<string name="start">Start</string>
<string name="pause">Pause</string>
@ -295,7 +293,7 @@
<string name="msg_running_detail">Tap for details</string>
<string name="msg_wait">Please wait…</string>
<string name="msg_copied">Copied to clipboard</string>
<string name="no_available_dir">Please define an download folder later in settings</string>
<string name="no_available_dir">Please define a download folder later in settings</string>
<string name="msg_popup_permission">This permission is needed to\nopen in popup mode</string>
<string name="one_item_deleted">1 item deleted.</string>
<!-- Checksum types -->
@ -310,7 +308,6 @@
<string name="settings_file_charset_title">Allowed characters in filenames</string>
<string name="settings_file_replacement_character_summary">Invalid characters are replaced with this value</string>
<string name="settings_file_replacement_character_title">Replacement character</string>
<string name="charset_letters_and_digits">Letters and digits</string>
<string name="charset_most_special_characters">Most special characters</string>
<string name="toast_no_player">No app installed to play this file</string>
@ -377,7 +374,6 @@
<string name="override_current_data">This will override your current setup.</string>
<string name="import_settings">Do you want to also import settings?</string>
<string name="error_unable_to_load_comments">Could not load comments</string>
<!-- Kiosk Names -->
<string name="kiosk">Kiosk</string>
<string name="trending">Trending</string>
@ -397,7 +393,6 @@
<string name="start_here_on_main">Start playing here</string>
<string name="start_here_on_background">Start playing in the background</string>
<string name="start_here_on_popup">Start playing in a new popup</string>
<!-- Drawer -->
<string name="drawer_open">Open Drawer</string>
<string name="drawer_close">Close Drawer</string>
@ -520,7 +515,6 @@
<string name="overwrite_failed">cannot overwrite the file</string>
<string name="download_already_running">There is a download in progress with this name</string>
<string name="download_already_pending">There is a pending download with this name</string>
<!-- message dialog about download error -->
<string name="show_error">Show error</string>
<string name="label_code">Code</string>
@ -539,7 +533,6 @@
<string name="error_insufficient_storage">No space left on device</string>
<string name="error_progress_lost">Progress lost, because the file was deleted</string>
<string name="error_timeout">Connection timeout</string>
<string name="clear_finished_download">Clear finished downloads</string>
<string name="confirm_prompt">Are you sure?</string>
<string name="msg_pending_downloads">Continue your %s pending transfers from Downloads</string>
@ -553,9 +546,9 @@
<string name="enable_queue_limit_desc">One download will run at the same time</string>
<string name="start_downloads">Start downloads</string>
<string name="pause_downloads">Pause downloads</string>
<string name="downloads_storage_ask_title">Ask where to download</string>
<string name="downloads_storage_ask_summary">You will be asked where to save each download</string>
<string name="downloads_storage_ask_summary_kitkat">You will be asked where to save each download.\nEnable this option if you want download to the external SD Card</string>
</resources>
<string name="downloads_storage_ask_summary_kitkat">You will be asked where to save each download.\nChoose SAF if you want to download to an external SD card</string>
<string name="downloads_storage_use_saf_title">Use SAF</string>
<string name="downloads_storage_use_saf_summary">The Storage Access Framework allows downloads to an external SD card.\nNote: some devices are not compatible</string>
</resources>

View File

@ -12,6 +12,13 @@
android:summary="@string/downloads_storage_ask_summary_kitkat"
android:title="@string/downloads_storage_ask_title" />
<SwitchPreference
app:iconSpaceReserved="false"
android:defaultValue="false"
android:key="@string/storage_use_saf"
android:summary="@string/downloads_storage_use_saf_summary"
android:title="@string/downloads_storage_use_saf_title" />
<Preference
app:iconSpaceReserved="false"
android:dialogTitle="@string/download_path_dialog_title"

View File

@ -0,0 +1,44 @@
Changes in 0.17.1
New
• Thai localization
Improved
• Add start playing here action in long-press menus for playlists again #2518
• Add switch for SAF / legacy file picker #2521
Fixed
• Fix disappearing buttons in downloads view when switching apps #2487
• Fix playback position is stored although watch history is disabled
• Fix reduced performance caused by playback position in list views #2517
• [Extractor] Fix ReCaptchaActivity #2527, TeamNewPipe/NewPipeExtractor#186
• [Extractor] [YouTube] Fix casual search error when playlists are in results TeamNewPipe/NewPipeExtractor#185
Changes in 0.17.0
New
Playback resume #2288
• Resume streams where you stopped last time
Downloader Enhancements #2149
• Use Storage Access Framework to store downloads on external SD-cards
• New mp4 muxer
• Optionally change the download directory before starting a download
• Respect metered networks
Improved
• Removed gema strings #2295
• Handle (auto)rotation changes during activity lifecycle #2444
• Make long-press menus consistent #2368
Fixed
• Fixed selected subtitle track name not being shown #2394
• Do not crash when check for app update fails (GitHub version) #2423
• Fixed downloads stuck at 99.9% #2440
• Update play queue metadata #2453
• [SoundCloud] Fixed crash when loading playlists TeamNewPipe/NewPipeExtractor#170
• [YouTube] Fixed duration can not be paresd TeamNewPipe/NewPipeExtractor#177