Merge branch 'dev' into patch-10

This commit is contained in:
Stypox 2020-02-16 21:58:44 +01:00 committed by GitHub
commit 3b57135a6e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
117 changed files with 2871 additions and 2498 deletions

View File

@ -13,7 +13,7 @@
</p>
<hr>
<p align="center"><a href="#screenshots">Screenshots</a> &bull; <a href="#description">Description</a> &bull; <a href="#features">Features</a> &bull; <a href="#updates">Updates</a> &bull; <a href="#contribution">Contribution</a> &bull; <a href="#donate">Donate</a> &bull; <a href="#license">License</a></p>
<p align="center"><a href="https://newpipe.schabi.org">Website</a> &bull; <a href="https://newpipe.schabi.org/blog/">Blog</a> &bull; <a href="https://newpipe.schabi.org/press/">Press</a></p>
<p align="center"><a href="https://newpipe.schabi.org">Website</a> &bull; <a href="https://newpipe.schabi.org/blog/">Blog</a> &bull; <a href="https://newpipe.schabi.org/FAQ/">FAQ</a> &bull; <a href="https://newpipe.schabi.org/press/">Press</a></p>
<hr>
<b>WARNING: THIS IS A BETA VERSION, THEREFORE YOU MAY ENCOUNTER BUGS. IF YOU DO, OPEN AN ISSUE VIA OUR GITHUB REPOSITORY.</b>

View File

@ -11,8 +11,8 @@ android {
applicationId "org.schabi.newpipe"
minSdkVersion 19
targetSdkVersion 28
versionCode 800
versionName "0.18.0"
versionCode 830
versionName "0.18.3"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
@ -53,6 +53,7 @@ ext {
okHttpLibVersion = '3.12.6'
icepickLibVersion = '3.2.0'
stethoLibVersion = '1.5.0'
markwonVersion = '4.2.1'
}
dependencies {
@ -62,7 +63,7 @@ dependencies {
exclude module: 'support-annotations'
})
implementation 'com.github.TeamNewPipe:NewPipeExtractor:8e53fda'
implementation 'com.github.TeamNewPipe:NewPipeExtractor:fc9f031'
testImplementation 'junit:junit:4.12'
testImplementation 'org.mockito:mockito-core:2.23.0'
@ -94,7 +95,7 @@ dependencies {
implementation 'io.reactivex.rxjava2:rxjava:2.2.2'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
implementation 'com.jakewharton.rxbinding2:rxbinding:2.1.1'
implementation 'org.ocpsoft.prettytime:prettytime:4.0.1.Final'
implementation 'org.ocpsoft.prettytime:prettytime:4.0.3.Final'
implementation "androidx.room:room-runtime:${roomDbLibVersion}"
implementation "androidx.room:room-rxjava2:${roomDbLibVersion}"
@ -108,4 +109,7 @@ dependencies {
implementation "com.squareup.okhttp3:okhttp:${okHttpLibVersion}"
debugImplementation "com.facebook.stetho:stetho-okhttp3:${stethoLibVersion}"
implementation "io.noties.markwon:core:${markwonVersion}"
implementation "io.noties.markwon:linkify:${markwonVersion}"
}

View File

@ -112,7 +112,7 @@
<activity
android:name=".ReCaptchaActivity"
android:label="@string/reCaptchaActivity"/>
android:label="@string/recaptcha"/>
<provider
android:name="androidx.core.content.FileProvider"
@ -153,6 +153,7 @@
<!-- channel prefix -->
<data android:pathPrefix="/channel/"/>
<data android:pathPrefix="/user/"/>
<data android:pathPrefix="/c/"/>
<!-- playlist prefix -->
<data android:pathPrefix="/playlist"/>
</intent-filter>

View File

@ -99,7 +99,7 @@ public class App extends Application {
NewPipe.init(getDownloader(),
Localization.getPreferredLocalization(this),
Localization.getPreferredContentCountry(this));
Localization.init();
Localization.init(getApplicationContext());
StateSaver.init(this);
initNotificationChannel();

View File

@ -31,7 +31,6 @@ import android.preference.PreferenceManager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
@ -56,7 +55,6 @@ import androidx.fragment.app.FragmentManager;
import com.google.android.material.navigation.NavigationView;
import org.schabi.newpipe.extractor.NewPipe;
import org.schabi.newpipe.extractor.ServiceList;
import org.schabi.newpipe.extractor.StreamingService;
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
import org.schabi.newpipe.extractor.services.peertube.PeertubeInstance;
@ -67,6 +65,7 @@ import org.schabi.newpipe.fragments.list.search.SearchFragment;
import org.schabi.newpipe.report.ErrorActivity;
import org.schabi.newpipe.util.Constants;
import org.schabi.newpipe.util.KioskTranslator;
import org.schabi.newpipe.util.Localization;
import org.schabi.newpipe.util.NavigationHelper;
import org.schabi.newpipe.util.PeertubeHelper;
import org.schabi.newpipe.util.PermissionHelper;
@ -78,6 +77,8 @@ import org.schabi.newpipe.util.ThemeHelper;
import java.util.ArrayList;
import java.util.List;
import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
public static final boolean DEBUG = !BuildConfig.BUILD_TYPE.equals("release");
@ -113,9 +114,9 @@ public class MainActivity extends AppCompatActivity {
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) {
TLSSocketFactoryCompat.setAsDefault();
}
ThemeHelper.setTheme(this, ServiceHelper.getSelectedServiceId(this));
assureCorrectAppLanguage(this);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
@ -419,6 +420,8 @@ public class MainActivity extends AppCompatActivity {
@Override
protected void onResume() {
assureCorrectAppLanguage(this);
Localization.init(getApplicationContext()); //change the date format to match the selected language on resume
super.onResume();
// close drawer on return, and don't show animation, so its looks like the drawer isn't open
@ -449,6 +452,16 @@ public class MainActivity extends AppCompatActivity {
sharedPreferences.edit().putBoolean(Constants.KEY_MAIN_PAGE_CHANGE, false).apply();
NavigationHelper.openMainActivity(this);
}
if (sharedPreferences.getBoolean(Constants.KEY_ENABLE_WATCH_HISTORY, true)) {
if (DEBUG) Log.d(TAG, "do not show History-menu as its disabled in settings");
drawerItems.getMenu().findItem(ITEM_ID_HISTORY).setVisible(true);
}
if (!sharedPreferences.getBoolean(Constants.KEY_ENABLE_WATCH_HISTORY, true)) {
if (DEBUG) Log.d(TAG, "show History-menu as its enabled in settings");
drawerItems.getMenu().findItem(ITEM_ID_HISTORY).setVisible(false);
}
}
@Override
@ -551,8 +564,6 @@ public class MainActivity extends AppCompatActivity {
if (!(fragment instanceof SearchFragment)) {
findViewById(R.id.toolbar).findViewById(R.id.toolbar_search_container).setVisibility(View.GONE);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_menu, menu);
}
ActionBar actionBar = getSupportActionBar();
@ -574,14 +585,6 @@ public class MainActivity extends AppCompatActivity {
case android.R.id.home:
onHomeButtonPressed();
return true;
case R.id.action_show_downloads:
return NavigationHelper.openDownloads(this);
case R.id.action_history:
NavigationHelper.openStatisticFragment(getSupportFragmentManager());
return true;
case R.id.action_settings:
NavigationHelper.openSettings(this);
return true;
default:
return super.onOptionsItemSelected(item);
}

View File

@ -1,20 +1,25 @@
package org.schabi.newpipe;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Build;
import android.os.Bundle;
import androidx.core.app.NavUtils;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.webkit.CookieManager;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import org.schabi.newpipe.util.ThemeHelper;
import javax.annotation.Nonnull;
/*
* Created by beneth <bmauduit@beneth.fr> on 06.12.16.
*
@ -37,48 +42,46 @@ 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;
private WebView webView;
private String foundCookies = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
ThemeHelper.setTheme(this);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recaptcha);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
url = getIntent().getStringExtra(RECAPTCHA_URL_EXTRA);
String url = getIntent().getStringExtra(RECAPTCHA_URL_EXTRA);
if (url == null || url.isEmpty()) {
url = YT_URL;
}
// Set return to Cancel by default
// set return to Cancel by default
setResult(RESULT_CANCELED);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setTitle(R.string.reCaptcha_title);
actionBar.setDisplayShowTitleEnabled(true);
}
webView = findViewById(R.id.reCaptchaWebView);
WebView myWebView = findViewById(R.id.reCaptchaWebView);
// Enable Javascript
WebSettings webSettings = myWebView.getSettings();
// enable Javascript
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
ReCaptchaWebViewClient webClient = new ReCaptchaWebViewClient(this);
myWebView.setWebViewClient(webClient);
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
handleCookies(url);
}
});
// Cleaning cache, history and cookies from webView
myWebView.clearCache(true);
myWebView.clearHistory();
// cleaning cache, history and cookies from webView
webView.clearCache(true);
webView.clearHistory();
android.webkit.CookieManager cookieManager = CookieManager.getInstance();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
cookieManager.removeAllCookies(aBoolean -> {});
@ -86,77 +89,82 @@ public class ReCaptchaActivity extends AppCompatActivity {
cookieManager.removeAllCookie();
}
myWebView.loadUrl(url);
webView.loadUrl(url);
}
private class ReCaptchaWebViewClient extends WebViewClient {
private final Activity context;
private String mCookies;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_recaptcha, menu);
ReCaptchaWebViewClient(Activity ctx) {
context = ctx;
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(false);
actionBar.setTitle(R.string.title_activity_recaptcha);
actionBar.setSubtitle(R.string.subtitle_activity_recaptcha);
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// TODO: Start Loader
super.onPageStarted(view, url, favicon);
}
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
String cookies = CookieManager.getInstance().getCookie(url);
// TODO: Stop Loader
// find cookies : s_gl & goojf and Add cookies to Downloader
if (find_access_cookies(cookies)) {
// Give cookies to Downloader class
DownloaderImpl.getInstance().setCookies(mCookies);
// Closing activity and return to parent
setResult(RESULT_OK);
finish();
}
}
private boolean find_access_cookies(String cookies) {
boolean ret = false;
String c_s_gl = "";
String c_goojf = "";
String[] parts = cookies.split("; ");
for (String part : parts) {
if (part.trim().startsWith("s_gl")) {
c_s_gl = part.trim();
}
if (part.trim().startsWith("goojf")) {
c_goojf = part.trim();
}
}
if (c_s_gl.length() > 0 && c_goojf.length() > 0) {
ret = true;
//mCookies = c_s_gl + "; " + c_goojf;
// Youtube seems to also need the other cookies:
mCookies = cookies;
}
return ret;
}
@Override
public void onBackPressed() {
saveCookiesAndFinish();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case android.R.id.home: {
Intent intent = new Intent(this, org.schabi.newpipe.MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
NavUtils.navigateUpTo(this, intent);
case R.id.menu_item_done:
saveCookiesAndFinish();
return true;
}
default:
return false;
}
}
private void saveCookiesAndFinish() {
handleCookies(webView.getUrl()); // try to get cookies of unclosed page
if (!foundCookies.isEmpty()) {
// give cookies to Downloader class
DownloaderImpl.getInstance().setCookies(foundCookies);
setResult(RESULT_OK);
}
Intent intent = new Intent(this, org.schabi.newpipe.MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
NavUtils.navigateUpTo(this, intent);
}
private void handleCookies(String url) {
String cookies = CookieManager.getInstance().getCookie(url);
if (MainActivity.DEBUG) Log.d(TAG, "handleCookies: url=" + url + "; cookies=" + (cookies == null ? "null" : cookies));
if (cookies == null) return;
addYoutubeCookies(cookies);
// add other methods to extract cookies here
}
private void addYoutubeCookies(@Nonnull String cookies) {
if (cookies.contains("s_gl=") || cookies.contains("goojf=") || cookies.contains("VISITOR_INFO1_LIVE=")) {
// youtube seems to also need the other cookies:
addCookie(cookies);
}
}
private void addCookie(String cookie) {
if (foundCookies.contains(cookie)) {
return;
}
if (foundCookies.isEmpty() || foundCookies.endsWith("; ")) {
foundCookies += cookie;
} else if (foundCookies.endsWith(";")) {
foundCookies += " " + cookie;
} else {
foundCookies += "; " + cookie;
}
}
}

View File

@ -22,27 +22,30 @@ import android.widget.TextView;
import org.schabi.newpipe.BuildConfig;
import org.schabi.newpipe.R;
import org.schabi.newpipe.util.NavigationHelper;
import org.schabi.newpipe.util.ThemeHelper;
import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage;
public class AboutActivity extends AppCompatActivity {
/**
* List of all software components
*/
private static final SoftwareComponent[] SOFTWARE_COMPONENTS = new SoftwareComponent[]{
new SoftwareComponent("Giga Get", "2014", "Peter Cai", "https://github.com/PaperAirplane-Dev-Team/GigaGet", StandardLicenses.GPL2),
new SoftwareComponent("NewPipe Extractor", "2017", "Christian Schabesberger", "https://github.com/TeamNewPipe/NewPipeExtractor", StandardLicenses.GPL3),
new SoftwareComponent("Giga Get", "2014 - 2015", "Peter Cai", "https://github.com/PaperAirplane-Dev-Team/GigaGet", StandardLicenses.GPL2),
new SoftwareComponent("NewPipe Extractor", "2017 - 2020", "Christian Schabesberger", "https://github.com/TeamNewPipe/NewPipeExtractor", StandardLicenses.GPL3),
new SoftwareComponent("Jsoup", "2017", "Jonathan Hedley", "https://github.com/jhy/jsoup", StandardLicenses.MIT),
new SoftwareComponent("Rhino", "2015", "Mozilla", "https://www.mozilla.org/rhino/", StandardLicenses.MPL2),
new SoftwareComponent("ACRA", "2013", "Kevin Gaudin", "http://www.acra.ch", StandardLicenses.APACHE2),
new SoftwareComponent("Universal Image Loader", "2011 - 2015", "Sergey Tarasevich", "https://github.com/nostra13/Android-Universal-Image-Loader", StandardLicenses.APACHE2),
new SoftwareComponent("CircleImageView", "2014 - 2017", "Henning Dodenhof", "https://github.com/hdodenhof/CircleImageView", StandardLicenses.APACHE2),
new SoftwareComponent("CircleImageView", "2014 - 2020", "Henning Dodenhof", "https://github.com/hdodenhof/CircleImageView", StandardLicenses.APACHE2),
new SoftwareComponent("NoNonsense-FilePicker", "2016", "Jonas Kalderstam", "https://github.com/spacecowboy/NoNonsense-FilePicker", StandardLicenses.MPL2),
new SoftwareComponent("ExoPlayer", "2014-2017", "Google Inc", "https://github.com/google/ExoPlayer", StandardLicenses.APACHE2),
new SoftwareComponent("RxAndroid", "2015", "The RxAndroid authors", "https://github.com/ReactiveX/RxAndroid", StandardLicenses.APACHE2),
new SoftwareComponent("RxJava", "2016-present", "RxJava Contributors", "https://github.com/ReactiveX/RxJava", StandardLicenses.APACHE2),
new SoftwareComponent("RxBinding", "2015", "Jake Wharton", "https://github.com/JakeWharton/RxBinding", StandardLicenses.APACHE2)
new SoftwareComponent("ExoPlayer", "2014 - 2020", "Google Inc", "https://github.com/google/ExoPlayer", StandardLicenses.APACHE2),
new SoftwareComponent("RxAndroid", "2015 - 2018", "The RxAndroid authors", "https://github.com/ReactiveX/RxAndroid", StandardLicenses.APACHE2),
new SoftwareComponent("RxJava", "2016 - 2020", "RxJava Contributors", "https://github.com/ReactiveX/RxJava", StandardLicenses.APACHE2),
new SoftwareComponent("RxBinding", "2015 - 2018", "Jake Wharton", "https://github.com/JakeWharton/RxBinding", StandardLicenses.APACHE2),
new SoftwareComponent("PrettyTime", "2012 - 2020", "Lincoln Baxter, III", "https://github.com/ocpsoft/prettytime", StandardLicenses.APACHE2),
new SoftwareComponent("Markwon", "2017 - 2020", "Noties", "https://github.com/noties/Markwon", StandardLicenses.APACHE2)
};
/**
@ -62,8 +65,10 @@ public class AboutActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
assureCorrectAppLanguage(this);
super.onCreate(savedInstanceState);
ThemeHelper.setTheme(this);
this.setTitle(getString(R.string.title_activity_about));
setContentView(R.layout.activity_about);
@ -99,11 +104,6 @@ public class AboutActivity extends AppCompatActivity {
case android.R.id.home:
finish();
return true;
case R.id.action_settings:
NavigationHelper.openSettings(this);
return true;
case R.id.action_show_downloads:
return NavigationHelper.openDownloads(this);
}
return super.onOptionsItemSelected(item);

View File

@ -3,6 +3,7 @@ package org.schabi.newpipe.about;
import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.res.Resources;
import android.os.AsyncTask;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
@ -14,6 +15,8 @@ import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.lang.ref.WeakReference;
import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage;
public class LicenseFragmentHelper extends AsyncTask<Object, Void, Integer> {
final WeakReference<Activity> weakReference;
@ -55,15 +58,15 @@ public class LicenseFragmentHelper extends AsyncTask<Object, Void, Integer> {
wv.loadData(webViewData, "text/html; charset=UTF-8", null);
alert.setView(wv);
alert.setNegativeButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
assureCorrectAppLanguage(activity.getApplicationContext());
alert.setNegativeButton(getFinishString(activity), (dialog, which) -> dialog.dismiss());
alert.show();
}
private static String getFinishString(Activity activity) {
return activity.getApplicationContext().getResources().getString(R.string.finish);
}
/**
* @param context the context to use
* @param license the license

View File

@ -12,12 +12,13 @@ import android.view.MenuItem;
import android.view.ViewTreeObserver;
import org.schabi.newpipe.R;
import org.schabi.newpipe.settings.SettingsActivity;
import org.schabi.newpipe.util.ThemeHelper;
import us.shandian.giga.service.DownloadManagerService;
import us.shandian.giga.ui.fragment.MissionsFragment;
import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage;
public class DownloadActivity extends AppCompatActivity {
private static final String MISSIONS_FRAGMENT_TAG = "fragment_tag";
@ -29,6 +30,7 @@ public class DownloadActivity extends AppCompatActivity {
i.setClass(this, DownloadManagerService.class);
startService(i);
assureCorrectAppLanguage(this);
ThemeHelper.setTheme(this);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_downloader);
@ -78,11 +80,7 @@ public class DownloadActivity extends AppCompatActivity {
onBackPressed();
return true;
}
case R.id.action_settings: {
Intent intent = new Intent(this, SettingsActivity.class);
startActivity(intent);
return true;
}
default:
return super.onOptionsItemSelected(item);
}

View File

@ -11,15 +11,6 @@ import android.os.Bundle;
import android.os.Environment;
import android.os.IBinder;
import android.preference.PreferenceManager;
import androidx.annotation.IdRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.fragment.app.DialogFragment;
import androidx.documentfile.provider.DocumentFile;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.view.menu.ActionMenuItemView;
import androidx.appcompat.widget.Toolbar;
import android.util.Log;
import android.util.SparseArray;
import android.view.LayoutInflater;
@ -34,6 +25,16 @@ import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.IdRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.view.menu.ActionMenuItemView;
import androidx.appcompat.widget.Toolbar;
import androidx.documentfile.provider.DocumentFile;
import androidx.fragment.app.DialogFragment;
import com.nononsenseapps.filepicker.Utils;
import org.schabi.newpipe.MainActivity;
@ -78,6 +79,8 @@ import us.shandian.giga.service.DownloadManagerService;
import us.shandian.giga.service.DownloadManagerService.DownloadManagerBinder;
import us.shandian.giga.service.MissionState;
import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage;
public class DownloadDialog extends DialogFragment implements RadioGroup.OnCheckedChangeListener, AdapterView.OnItemSelectedListener {
private static final String TAG = "DialogFragment";
private static final boolean DEBUG = MainActivity.DEBUG;
@ -527,10 +530,11 @@ public class DownloadDialog extends DialogFragment implements RadioGroup.OnCheck
}
private void showFailedDialog(@StringRes int msg) {
assureCorrectAppLanguage(getContext());
new AlertDialog.Builder(context)
.setTitle(R.string.general_error)
.setMessage(msg)
.setNegativeButton(android.R.string.ok, null)
.setNegativeButton(getString(R.string.finish), null)
.create()
.show();
}
@ -832,7 +836,6 @@ public class DownloadDialog extends DialogFragment implements RadioGroup.OnCheck
psArgs = new String[]{
selectedStream.getFormat().getSuffix(),
"false",// ignore empty frames
"false",// detect youtube duplicate lines
};
}
break;

View File

@ -2,7 +2,6 @@ package org.schabi.newpipe.fragments.detail;
import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
@ -18,7 +17,6 @@ import androidx.fragment.app.Fragment;
import androidx.core.content.ContextCompat;
import androidx.viewpager.widget.ViewPager;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.text.Html;
import android.text.Spanned;
@ -58,6 +56,7 @@ import org.schabi.newpipe.extractor.exceptions.ExtractionException;
import org.schabi.newpipe.extractor.exceptions.ParsingException;
import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor;
import org.schabi.newpipe.extractor.stream.AudioStream;
import org.schabi.newpipe.extractor.stream.Description;
import org.schabi.newpipe.extractor.stream.Stream;
import org.schabi.newpipe.extractor.stream.StreamInfo;
import org.schabi.newpipe.extractor.stream.StreamType;
@ -79,6 +78,7 @@ import org.schabi.newpipe.util.Constants;
import org.schabi.newpipe.util.ExtractorHelper;
import org.schabi.newpipe.util.ImageDisplayConstants;
import org.schabi.newpipe.util.InfoCache;
import org.schabi.newpipe.util.KoreUtil;
import org.schabi.newpipe.util.ListHelper;
import org.schabi.newpipe.util.Localization;
import org.schabi.newpipe.util.NavigationHelper;
@ -95,6 +95,8 @@ import java.util.List;
import java.util.concurrent.TimeUnit;
import icepick.State;
import io.noties.markwon.Markwon;
import io.noties.markwon.linkify.LinkifyPlugin;
import io.reactivex.Single;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
@ -482,7 +484,6 @@ public class VideoDetailFragment
videoUploadDateView = rootView.findViewById(R.id.detail_upload_date_view);
videoDescriptionView = rootView.findViewById(R.id.detail_description_view);
videoDescriptionView.setMovementMethod(LinkMovementMethod.getInstance());
videoDescriptionView.setAutoLinkMask(Linkify.WEB_URLS);
thumbsUpTextView = rootView.findViewById(R.id.detail_thumbs_up_count_view);
thumbsUpImageView = rootView.findViewById(R.id.detail_thumbs_up_img_view);
@ -624,7 +625,7 @@ public class VideoDetailFragment
url.replace("https", "http")));
} catch (Exception e) {
if (DEBUG) Log.i(TAG, "Failed to start kore", e);
showInstallKoreDialog(activity);
KoreUtil.showInstallKoreDialog(activity);
}
return true;
default:
@ -632,16 +633,6 @@ public class VideoDetailFragment
}
}
private static void showInstallKoreDialog(final Context context) {
final AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setMessage(R.string.kore_not_found)
.setPositiveButton(R.string.install, (DialogInterface dialog, int which) ->
NavigationHelper.installKore(context))
.setNegativeButton(R.string.cancel, (DialogInterface dialog, int which) -> {
});
builder.create().show();
}
private void setupActionBarOnError(final String url) {
if (DEBUG) Log.d(TAG, "setupActionBarHandlerOnError() called with: url = [" + url + "]");
Log.e("-----", "missing code");
@ -928,28 +919,41 @@ public class VideoDetailFragment
return sortedVideoStreams != null ? sortedVideoStreams.get(selectedVideoStreamIndex) : null;
}
private void prepareDescription(final String descriptionHtml) {
if (TextUtils.isEmpty(descriptionHtml)) {
private void prepareDescription(Description description) {
if (TextUtils.isEmpty(description.getContent()) || description == Description.emptyDescription) {
return;
}
disposables.add(Single.just(descriptionHtml)
.map((@io.reactivex.annotations.NonNull String description) -> {
Spanned parsedDescription;
if (Build.VERSION.SDK_INT >= 24) {
parsedDescription = Html.fromHtml(description, 0);
} else {
//noinspection deprecation
parsedDescription = Html.fromHtml(description);
}
return parsedDescription;
})
.subscribeOn(Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.subscribe((@io.reactivex.annotations.NonNull Spanned spanned) -> {
videoDescriptionView.setText(spanned);
videoDescriptionView.setVisibility(View.VISIBLE);
}));
if (description.getType() == Description.HTML) {
disposables.add(Single.just(description.getContent())
.map((@io.reactivex.annotations.NonNull String descriptionText) -> {
Spanned parsedDescription;
if (Build.VERSION.SDK_INT >= 24) {
parsedDescription = Html.fromHtml(descriptionText, 0);
} else {
//noinspection deprecation
parsedDescription = Html.fromHtml(descriptionText);
}
return parsedDescription;
})
.subscribeOn(Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.subscribe((@io.reactivex.annotations.NonNull Spanned spanned) -> {
videoDescriptionView.setText(spanned);
videoDescriptionView.setVisibility(View.VISIBLE);
}));
} else if (description.getType() == Description.MARKDOWN) {
final Markwon markwon = Markwon.builder(getContext())
.usePlugin(LinkifyPlugin.create())
.build();
markwon.setMarkdown(videoDescriptionView, description.getContent());
videoDescriptionView.setVisibility(View.VISIBLE);
} else {
//== Description.PLAIN_TEXT
videoDescriptionView.setAutoLinkMask(Linkify.WEB_URLS);
videoDescriptionView.setText(description.getContent(), TextView.BufferType.SPANNABLE);
videoDescriptionView.setVisibility(View.VISIBLE);
}
}
private void setHeightThumbnail() {

View File

@ -1,9 +1,15 @@
package org.schabi.newpipe.info_list.holder;
import androidx.appcompat.app.AppCompatActivity;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.text.util.Linkify;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import org.jsoup.helper.StringUtil;
import org.schabi.newpipe.R;
@ -120,6 +126,21 @@ public class CommentsMiniInfoItemHolder extends InfoItemHolder {
itemBuilder.getOnCommentsSelectedListener().selected(item);
}
});
itemView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
ClipboardManager clipboardManager = (ClipboardManager) itemBuilder.getContext()
.getSystemService(Context.CLIPBOARD_SERVICE);
clipboardManager.setPrimaryClip(ClipData.newPlainText(null,commentText));
Toast.makeText(itemBuilder.getContext(), R.string.msg_copied, Toast.LENGTH_SHORT).show();
return true;
}
});
}
private void ellipsize() {

View File

@ -1,8 +1,11 @@
package org.schabi.newpipe.local.bookmark;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.os.Bundle;
import android.os.Parcelable;
import android.util.Log;
import android.widget.EditText;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.FragmentManager;
@ -10,6 +13,7 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import io.reactivex.disposables.Disposable;
import org.reactivestreams.Subscriber;
import org.reactivestreams.Subscription;
import org.schabi.newpipe.NewPipeDatabase;
@ -118,8 +122,7 @@ public final class BookmarkFragment
@Override
public void held(LocalItem selectedItem) {
if (selectedItem instanceof PlaylistMetadataEntry) {
showLocalDeleteDialog((PlaylistMetadataEntry) selectedItem);
showLocalDialog((PlaylistMetadataEntry) selectedItem);
} else if (selectedItem instanceof PlaylistRemoteEntity) {
showRemoteDeleteDialog((PlaylistRemoteEntity) selectedItem);
}
@ -247,14 +250,30 @@ public final class BookmarkFragment
// Utils
///////////////////////////////////////////////////////////////////////////
private void showLocalDeleteDialog(final PlaylistMetadataEntry item) {
showDeleteDialog(item.name, localPlaylistManager.deletePlaylist(item.uid));
}
private void showRemoteDeleteDialog(final PlaylistRemoteEntity item) {
showDeleteDialog(item.getName(), remotePlaylistManager.deletePlaylist(item.getUid()));
}
private void showLocalDialog(PlaylistMetadataEntry selectedItem) {
View dialogView = View.inflate(getContext(), R.layout.dialog_bookmark, null);
EditText editText = dialogView.findViewById(R.id.playlist_name_edit_text);
editText.setText(selectedItem.name);
Builder builder = new AlertDialog.Builder(activity);
builder.setView(dialogView)
.setPositiveButton(R.string.rename_playlist, (dialog, which) -> {
changeLocalPlaylistName(selectedItem.uid, editText.getText().toString());
})
.setNegativeButton(R.string.cancel, null)
.setNeutralButton(R.string.delete, (dialog, which) -> {
showDeleteDialog(selectedItem.name,
localPlaylistManager.deletePlaylist(selectedItem.uid));
dialog.dismiss();
})
.create()
.show();
}
private void showDeleteDialog(final String name, final Single<Integer> deleteReactor) {
if (activity == null || disposables == null) return;
@ -271,6 +290,23 @@ public final class BookmarkFragment
.show();
}
private void changeLocalPlaylistName(long id, String name) {
if (localPlaylistManager == null) {
return;
}
if (DEBUG) {
Log.d(TAG, "Updating playlist id=[" + id +
"] with new name=[" + name + "] items");
}
localPlaylistManager.renamePlaylist(id, name);
final Disposable disposable = localPlaylistManager.renamePlaylist(id, name)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(longs -> {/*Do nothing on success*/}, this::onError);
disposables.add(disposable);
}
private static List<PlaylistLocalItem> merge(final List<PlaylistMetadataEntry> localPlaylists,
final List<PlaylistRemoteEntity> remotePlaylists) {
List<PlaylistLocalItem> items = new ArrayList<>(

View File

@ -388,8 +388,10 @@ public class LocalPlaylistFragment extends BaseLocalListFragment<List<PlaylistSt
this.name = name;
setTitle(name);
Log.d(TAG, "Updating playlist id=[" + playlistId +
if (DEBUG) {
Log.d(TAG, "Updating playlist id=[" + playlistId +
"] with new name=[" + name + "] items");
}
final Disposable disposable = playlistManager.renamePlaylist(playlistId, name)
.observeOn(AndroidSchedulers.mainThread())
@ -404,8 +406,10 @@ public class LocalPlaylistFragment extends BaseLocalListFragment<List<PlaylistSt
R.string.playlist_thumbnail_change_success,
Toast.LENGTH_SHORT);
Log.d(TAG, "Updating playlist id=[" + playlistId +
if (DEBUG) {
Log.d(TAG, "Updating playlist id=[" + playlistId +
"] with new thumbnail url=[" + thumbnailUrl + "]");
}
final Disposable disposable = playlistManager
.changePlaylistThumbnail(playlistId, thumbnailUrl)
@ -472,8 +476,10 @@ public class LocalPlaylistFragment extends BaseLocalListFragment<List<PlaylistSt
}
}
Log.d(TAG, "Updating playlist id=[" + playlistId +
if (DEBUG) {
Log.d(TAG, "Updating playlist id=[" + playlistId +
"] with [" + streamIds.size() + "] items");
}
final Disposable disposable = playlistManager.updateJoin(playlistId, streamIds)
.observeOn(AndroidSchedulers.mainThread())

View File

@ -15,6 +15,8 @@ import org.schabi.newpipe.util.ThemeHelper;
import icepick.Icepick;
import icepick.State;
import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage;
public class ImportConfirmationDialog extends DialogFragment {
@State
protected Intent resultServiceIntent;
@ -34,11 +36,12 @@ public class ImportConfirmationDialog extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
assureCorrectAppLanguage(getContext());
return new AlertDialog.Builder(getContext(), ThemeHelper.getDialogTheme(getContext()))
.setMessage(R.string.import_network_expensive_warning)
.setCancelable(true)
.setNegativeButton(R.string.cancel, null)
.setPositiveButton(android.R.string.ok, (dialogInterface, i) -> {
.setPositiveButton(R.string.finish, (dialogInterface, i) -> {
if (resultServiceIntent != null && getContext() != null) {
getContext().startService(resultServiceIntent);
}

View File

@ -58,7 +58,7 @@ import org.schabi.newpipe.util.NavigationHelper;
import org.schabi.newpipe.util.ThemeHelper;
import static org.schabi.newpipe.player.helper.PlayerHelper.getTimeString;
import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage;
/**
* Base players joining the common properties
@ -115,7 +115,7 @@ public final class BackgroundPlayer extends Service {
notificationManager = ((NotificationManager) getSystemService(NOTIFICATION_SERVICE));
lockManager = new LockManager(this);
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
assureCorrectAppLanguage(this);
ThemeHelper.setTheme(this);
basePlayerImpl = new BasePlayerImpl(this);
basePlayerImpl.setup();

View File

@ -55,10 +55,7 @@ public final class BackgroundPlayerActivity extends ServicePlayerActivity {
return true;
}
this.player.setRecovery();
getApplicationContext().sendBroadcast(getPlayerShutdownIntent());
getApplicationContext().startService(getSwitchIntent(PopupVideoPlayer.class));
return true;
return switchTo(PopupVideoPlayer.class);
}
return false;
}

View File

@ -150,6 +150,8 @@ public abstract class BasePlayer implements
@NonNull
public static final String RESUME_PLAYBACK = "resume_playback";
@NonNull
public static final String START_PAUSED = "start_paused";
@NonNull
public static final String SELECT_ON_APPEND = "select_on_append";
/*//////////////////////////////////////////////////////////////////////////
@ -304,7 +306,7 @@ public abstract class BasePlayer implements
}
// Good to go...
initPlayback(queue, repeatMode, playbackSpeed, playbackPitch, playbackSkipSilence,
/*playOnInit=*/true);
/*playOnInit=*/!intent.getBooleanExtra(START_PAUSED, false));
}
protected void initPlayback(@NonNull final PlayQueue queue,
@ -944,10 +946,10 @@ public abstract class BasePlayer implements
public void onPlayPause() {
if (DEBUG) Log.d(TAG, "onPlayPause() called");
if (!isPlaying()) {
onPlay();
} else {
if (isPlaying()) {
onPause();
} else {
onPlay();
}
}

View File

@ -28,6 +28,7 @@ import android.database.ContentObserver;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.media.AudioManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
@ -75,6 +76,7 @@ import org.schabi.newpipe.player.playqueue.PlayQueueItemTouchCallback;
import org.schabi.newpipe.player.resolver.MediaSourceTag;
import org.schabi.newpipe.player.resolver.VideoPlaybackResolver;
import org.schabi.newpipe.util.AnimationUtils;
import org.schabi.newpipe.util.KoreUtil;
import org.schabi.newpipe.util.ListHelper;
import org.schabi.newpipe.util.NavigationHelper;
import org.schabi.newpipe.util.PermissionHelper;
@ -93,6 +95,7 @@ import static org.schabi.newpipe.util.AnimationUtils.Type.SCALE_AND_ALPHA;
import static org.schabi.newpipe.util.AnimationUtils.Type.SLIDE_AND_ALPHA;
import static org.schabi.newpipe.util.AnimationUtils.animateRotation;
import static org.schabi.newpipe.util.AnimationUtils.animateView;
import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage;
import static org.schabi.newpipe.util.StateSaver.KEY_SAVED_STATE;
/**
@ -123,6 +126,7 @@ public final class MainVideoPlayer extends AppCompatActivity
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
assureCorrectAppLanguage(this);
super.onCreate(savedInstanceState);
if (DEBUG) Log.d(TAG, "onCreate() called with: savedInstanceState = [" + savedInstanceState + "]");
defaultPreferences = PreferenceManager.getDefaultSharedPreferences(this);
@ -190,6 +194,7 @@ public final class MainVideoPlayer extends AppCompatActivity
@Override
protected void onResume() {
if (DEBUG) Log.d(TAG, "onResume() called");
assureCorrectAppLanguage(this);
super.onResume();
if (globalScreenOrientationLocked()) {
@ -220,6 +225,7 @@ public final class MainVideoPlayer extends AppCompatActivity
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
assureCorrectAppLanguage(this);
if (playerImpl.isSomePopupMenuVisible()) {
playerImpl.getQualityPopupMenu().dismiss();
@ -364,8 +370,8 @@ public final class MainVideoPlayer extends AppCompatActivity
}
private boolean globalScreenOrientationLocked() {
// 1: Screen orientation changes using acelerometer
// 0: Screen orientatino is locked
// 1: Screen orientation changes using accelerometer
// 0: Screen orientation is locked
return !(android.provider.Settings.System.getInt(getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, 0) == 1);
}
@ -435,6 +441,7 @@ public final class MainVideoPlayer extends AppCompatActivity
private boolean queueVisible;
private ImageButton moreOptionsButton;
private ImageButton kodiButton;
private ImageButton shareButton;
private ImageButton toggleOrientationButton;
private ImageButton switchPopupButton;
@ -471,6 +478,7 @@ public final class MainVideoPlayer extends AppCompatActivity
this.moreOptionsButton = rootView.findViewById(R.id.moreOptionsButton);
this.secondaryControls = rootView.findViewById(R.id.secondaryControls);
this.kodiButton = rootView.findViewById(R.id.kodi);
this.shareButton = rootView.findViewById(R.id.share);
this.toggleOrientationButton = rootView.findViewById(R.id.toggleOrientation);
this.switchBackgroundButton = rootView.findViewById(R.id.switchBackground);
@ -482,6 +490,9 @@ public final class MainVideoPlayer extends AppCompatActivity
titleTextView.setSelected(true);
channelTextView.setSelected(true);
boolean showKodiButton = PreferenceManager.getDefaultSharedPreferences(this.context).getBoolean(
this.context.getString(R.string.show_play_with_kodi_key), false);
kodiButton.setVisibility(showKodiButton ? View.VISIBLE : View.GONE);
getRootView().setKeepScreenOn(true);
}
@ -518,6 +529,7 @@ public final class MainVideoPlayer extends AppCompatActivity
closeButton.setOnClickListener(this);
moreOptionsButton.setOnClickListener(this);
kodiButton.setOnClickListener(this);
shareButton.setOnClickListener(this);
toggleOrientationButton.setOnClickListener(this);
switchBackgroundButton.setOnClickListener(this);
@ -588,6 +600,17 @@ public final class MainVideoPlayer extends AppCompatActivity
finish();
}
public void onKodiShare() {
onPause();
try {
NavigationHelper.playWithKore(this.context, Uri.parse(
playerImpl.getVideoUrl().replace("https", "http")));
} catch (Exception e) {
if (DEBUG) Log.i(TAG, "Failed to start kore", e);
KoreUtil.showInstallKoreDialog(this.context);
}
}
/*//////////////////////////////////////////////////////////////////////////
// Player Overrides
//////////////////////////////////////////////////////////////////////////*/
@ -614,7 +637,8 @@ public final class MainVideoPlayer extends AppCompatActivity
this.getPlaybackPitch(),
this.getPlaybackSkipSilence(),
this.getPlaybackQuality(),
false
false,
!isPlaying()
);
context.startService(intent);
@ -637,7 +661,8 @@ public final class MainVideoPlayer extends AppCompatActivity
this.getPlaybackPitch(),
this.getPlaybackSkipSilence(),
this.getPlaybackQuality(),
false
false,
!isPlaying()
);
context.startService(intent);
@ -686,6 +711,8 @@ public final class MainVideoPlayer extends AppCompatActivity
} else if (v.getId() == closeButton.getId()) {
onPlaybackShutdown();
return;
} else if (v.getId() == kodiButton.getId()) {
onKodiShare();
}
if (getCurrentState() != STATE_COMPLETED) {

View File

@ -80,6 +80,7 @@ import static org.schabi.newpipe.player.BasePlayer.STATE_PLAYING;
import static org.schabi.newpipe.player.VideoPlayer.DEFAULT_CONTROLS_DURATION;
import static org.schabi.newpipe.player.VideoPlayer.DEFAULT_CONTROLS_HIDE_TIME;
import static org.schabi.newpipe.util.AnimationUtils.animateView;
import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage;
/**
* Service Popup Player implementing VideoPlayer
@ -142,6 +143,7 @@ public final class PopupVideoPlayer extends Service {
@Override
public void onCreate() {
assureCorrectAppLanguage(this);
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
notificationManager = ((NotificationManager) getSystemService(NOTIFICATION_SERVICE));
@ -169,6 +171,7 @@ public final class PopupVideoPlayer extends Service {
@Override
public void onConfigurationChanged(Configuration newConfig) {
assureCorrectAppLanguage(this);
if (DEBUG) Log.d(TAG, "onConfigurationChanged() called with: newConfig = [" + newConfig + "]");
updateScreenSize();
updatePopupSize(popupLayoutParams.width, -1);
@ -567,7 +570,8 @@ public final class PopupVideoPlayer extends Service {
this.getPlaybackPitch(),
this.getPlaybackSkipSilence(),
this.getPlaybackQuality(),
false
false,
!isPlaying()
);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
@ -1123,4 +1127,4 @@ public final class PopupVideoPlayer extends Service {
return distanceFromCloseButton(popupMotionEvent) <= getClosingRadius();
}
}
}
}

View File

@ -48,10 +48,7 @@ public final class PopupVideoPlayerActivity extends ServicePlayerActivity {
@Override
public boolean onPlayerOptionSelected(MenuItem item) {
if (item.getItemId() == R.id.action_switch_background) {
this.player.setRecovery();
getApplicationContext().sendBroadcast(getPlayerShutdownIntent());
getApplicationContext().startService(getSwitchIntent(BackgroundPlayer.class));
return true;
return switchTo(BackgroundPlayer.class);
}
return false;
}

View File

@ -46,6 +46,7 @@ import java.util.List;
import static org.schabi.newpipe.player.helper.PlayerHelper.formatPitch;
import static org.schabi.newpipe.player.helper.PlayerHelper.formatSpeed;
import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage;
public abstract class ServicePlayerActivity extends AppCompatActivity
implements PlayerEventListener, SeekBar.OnSeekBarChangeListener,
@ -116,6 +117,7 @@ public abstract class ServicePlayerActivity extends AppCompatActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
assureCorrectAppLanguage(this);
super.onCreate(savedInstanceState);
ThemeHelper.setTheme(this);
setContentView(R.layout.activity_player_queue_control);
@ -157,18 +159,11 @@ public abstract class ServicePlayerActivity extends AppCompatActivity
case R.id.action_append_playlist:
appendAllToPlaylist();
return true;
case R.id.action_settings:
NavigationHelper.openSettings(this);
redraw = true;
return true;
case R.id.action_system_audio:
startActivity(new Intent(Settings.ACTION_SOUND_SETTINGS));
return true;
case R.id.action_switch_main:
this.player.setRecovery();
getApplicationContext().sendBroadcast(getPlayerShutdownIntent());
getApplicationContext().startActivity(getSwitchIntent(MainVideoPlayer.class));
return true;
return switchTo(MainVideoPlayer.class);
}
return onPlayerOptionSelected(item) || super.onOptionsItemSelected(item);
}
@ -189,8 +184,17 @@ public abstract class ServicePlayerActivity extends AppCompatActivity
this.player.getPlaybackPitch(),
this.player.getPlaybackSkipSilence(),
null,
false,
false
).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.putExtra(BasePlayer.START_PAUSED, !this.player.isPlaying());
}
protected boolean switchTo(final Class clazz) {
this.player.setRecovery();
getApplicationContext().sendBroadcast(getPlayerShutdownIntent());
getApplicationContext().startActivity(getSwitchIntent(clazz));
return true;
}
////////////////////////////////////////////////////////////////////////////

View File

@ -17,6 +17,7 @@ import org.schabi.newpipe.R;
import org.schabi.newpipe.util.SliderStrategy;
import static org.schabi.newpipe.player.BasePlayer.DEBUG;
import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage;
public class PlaybackParameterDialog extends DialogFragment {
@NonNull private static final String TAG = "PlaybackParameterDialog";
@ -108,6 +109,7 @@ public class PlaybackParameterDialog extends DialogFragment {
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
assureCorrectAppLanguage(getContext());
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
initialTempo = savedInstanceState.getDouble(INITIAL_TEMPO_KEY, DEFAULT_TEMPO);
@ -137,6 +139,7 @@ public class PlaybackParameterDialog extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
assureCorrectAppLanguage(getContext());
final View view = View.inflate(getContext(), R.layout.dialog_playback_parameter, null);
setupControlViews(view);

View File

@ -46,6 +46,8 @@ import java.util.List;
import java.util.TimeZone;
import java.util.Vector;
import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage;
/*
* Created by Christian Schabesberger on 24.10.15.
*
@ -171,6 +173,7 @@ public class ErrorActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
assureCorrectAppLanguage(this);
super.onCreate(savedInstanceState);
ThemeHelper.setTheme(this);
setContentView(R.layout.activity_error);

View File

@ -7,11 +7,12 @@ import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.preference.Preference;
import android.util.Log;
import android.widget.Toast;
import com.nononsenseapps.filepicker.Utils;
import com.nostra13.universalimageloader.core.ImageLoader;
@ -40,6 +41,8 @@ import java.util.Map;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;
import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage;
public class ContentSettingsFragment extends BasePreferenceFragment {
private static final int REQUEST_IMPORT_PATH = 8945;
@ -56,6 +59,7 @@ public class ContentSettingsFragment extends BasePreferenceFragment {
private Localization initialSelectedLocalization;
private ContentCountry initialSelectedContentCountry;
private String initialLanguage;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
@ -64,6 +68,7 @@ public class ContentSettingsFragment extends BasePreferenceFragment {
initialSelectedLocalization = org.schabi.newpipe.util.Localization.getPreferredLocalization(requireContext());
initialSelectedContentCountry = org.schabi.newpipe.util.Localization.getPreferredContentCountry(requireContext());
initialLanguage = PreferenceManager.getDefaultSharedPreferences(getContext()).getString("app_language_key", "en");
}
@Override
@ -125,9 +130,10 @@ public class ContentSettingsFragment extends BasePreferenceFragment {
.getPreferredLocalization(requireContext());
final ContentCountry selectedContentCountry = org.schabi.newpipe.util.Localization
.getPreferredContentCountry(requireContext());
final String selectedLanguage = PreferenceManager.getDefaultSharedPreferences(getContext()).getString("app_language_key", "en");
if (!selectedLocalization.equals(initialSelectedLocalization)
|| !selectedContentCountry.equals(initialSelectedContentCountry)) {
|| !selectedContentCountry.equals(initialSelectedContentCountry) || !selectedLanguage.equals(initialLanguage)) {
Toast.makeText(requireContext(), R.string.localization_changes_requires_app_restart, Toast.LENGTH_LONG).show();
NewPipe.setupLocalization(selectedLocalization, selectedContentCountry);
@ -136,6 +142,7 @@ public class ContentSettingsFragment extends BasePreferenceFragment {
@Override
public void onActivityResult(int requestCode, int resultCode, @NonNull Intent data) {
assureCorrectAppLanguage(getContext());
super.onActivityResult(requestCode, resultCode, data);
if (DEBUG) {
Log.d(TAG, "onActivityResult() called with: requestCode = [" + requestCode + "], resultCode = [" + resultCode + "], data = [" + data + "]");
@ -150,7 +157,7 @@ public class ContentSettingsFragment extends BasePreferenceFragment {
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage(R.string.override_current_data)
.setPositiveButton(android.R.string.ok,
.setPositiveButton(getString(R.string.finish),
(DialogInterface d, int id) -> importDatabase(path))
.setNegativeButton(android.R.string.cancel,
(DialogInterface d, int id) -> d.cancel());
@ -189,7 +196,7 @@ public class ContentSettingsFragment extends BasePreferenceFragment {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
} finally {
try {
if (output != null) {
output.flush();
@ -236,7 +243,7 @@ public class ContentSettingsFragment extends BasePreferenceFragment {
}
//If settings file exist, ask if it should be imported.
if(ZipHelper.extractFileFromZip(filePath, newpipe_settings.getPath(), "newpipe.settings")) {
if (ZipHelper.extractFileFromZip(filePath, newpipe_settings.getPath(), "newpipe.settings")) {
AlertDialog.Builder alert = new AlertDialog.Builder(getContext());
alert.setTitle(R.string.import_settings);
@ -245,7 +252,7 @@ public class ContentSettingsFragment extends BasePreferenceFragment {
// restart app to properly load db
System.exit(0);
});
alert.setPositiveButton(android.R.string.yes, (dialog, which) -> {
alert.setPositiveButton(getString(R.string.finish), (dialog, which) -> {
dialog.dismiss();
loadSharedPreferences(newpipe_settings);
// restart app to properly load db
@ -291,7 +298,7 @@ public class ContentSettingsFragment extends BasePreferenceFragment {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}finally {
} finally {
try {
if (input != null) {
input.close();

View File

@ -8,11 +8,12 @@ import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.preference.Preference;
import android.util.Log;
import android.widget.Toast;
import com.nononsenseapps.filepicker.Utils;
@ -28,6 +29,8 @@ import java.nio.charset.StandardCharsets;
import us.shandian.giga.io.StoredDirectoryHelper;
import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage;
public class DownloadSettingsFragment extends BasePreferenceFragment {
private static final int REQUEST_DOWNLOAD_VIDEO_PATH = 0x1235;
private static final int REQUEST_DOWNLOAD_AUDIO_PATH = 0x1236;
@ -159,7 +162,7 @@ public class DownloadSettingsFragment extends BasePreferenceFragment {
AlertDialog.Builder msg = new AlertDialog.Builder(ctx);
msg.setTitle(title);
msg.setMessage(message);
msg.setPositiveButton(android.R.string.ok, null);
msg.setPositiveButton(getString(R.string.finish), null);
msg.show();
}
@ -202,6 +205,7 @@ public class DownloadSettingsFragment extends BasePreferenceFragment {
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
assureCorrectAppLanguage(getContext());
super.onActivityResult(requestCode, resultCode, data);
if (DEBUG) {
Log.d(TAG, "onActivityResult() called with: requestCode = [" + requestCode + "], " +

View File

@ -14,6 +14,7 @@ import android.view.MenuItem;
import org.schabi.newpipe.R;
import org.schabi.newpipe.util.ThemeHelper;
import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage;
/*
* Created by Christian Schabesberger on 31.08.15.
@ -44,7 +45,7 @@ public class SettingsActivity extends AppCompatActivity implements BasePreferenc
@Override
protected void onCreate(Bundle savedInstanceBundle) {
setTheme(ThemeHelper.getSettingsThemeStyle(this));
assureCorrectAppLanguage(this);
super.onCreate(savedInstanceBundle);
setContentView(R.layout.settings_layout);

View File

@ -1,12 +1,64 @@
package org.schabi.newpipe.settings;
import android.content.SharedPreferences;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
import android.view.View;
import androidx.annotation.Nullable;
import com.google.android.material.snackbar.Snackbar;
import org.schabi.newpipe.R;
import org.schabi.newpipe.util.PermissionHelper;
public class VideoAudioSettingsFragment extends BasePreferenceFragment {
private SharedPreferences.OnSharedPreferenceChangeListener listener;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
listener = (sharedPreferences, s) -> {
// on M and above, if user chooses to minimise to popup player on exit and the app doesn't have
// display over other apps permission, show a snackbar to let the user give permission
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
s.equals(getString(R.string.minimize_on_exit_key))) {
String newSetting = sharedPreferences.getString(s, null);
if (newSetting != null
&& newSetting.equals(getString(R.string.minimize_on_exit_popup_key))
&& !Settings.canDrawOverlays(getContext())) {
Snackbar.make(getListView(), R.string.permission_display_over_apps, Snackbar.LENGTH_INDEFINITE)
.setAction(R.string.settings,
view -> PermissionHelper.checkSystemAlertWindowPermission(getContext()))
.show();
}
}
};
}
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
addPreferencesFromResource(R.xml.video_audio_settings);
}
@Override
public void onResume() {
super.onResume();
getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(listener);
}
@Override
public void onPause() {
super.onPause();
getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(listener);
}
}

View File

@ -137,6 +137,7 @@ public class DataReader {
position = 0;
readOffset = readBuffer.length;
readCount = 0;
}
public boolean canRewind() {

View File

@ -11,6 +11,7 @@ import org.schabi.newpipe.streams.io.SharpStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.ArrayList;
/**
* @author kapodamy
@ -23,7 +24,6 @@ public class Mp4FromDashWriter {
private final static byte SAMPLES_PER_CHUNK = 6;// ffmpeg uses 2, basic uses 1 (with 60fps uses 21 or 22). NewPipe will use 6
private final static long THRESHOLD_FOR_CO64 = 0xFFFEFFFFL;// near 3.999 GiB
private final static int THRESHOLD_MOOV_LENGTH = (256 * 1024) + (2048 * 1024); // 2.2 MiB enough for: 1080p 60fps 00h35m00s
private final static short SINGLE_CHUNK_SAMPLE_BUFFER = 256;
private final long time;
@ -46,6 +46,8 @@ public class Mp4FromDashWriter {
private int overrideMainBrand = 0x00;
private ArrayList<Integer> compatibleBrands = new ArrayList<>(5);
public Mp4FromDashWriter(SharpStream... sources) throws IOException {
for (SharpStream src : sources) {
if (!src.canRewind() && !src.canRead()) {
@ -57,6 +59,10 @@ public class Mp4FromDashWriter {
readers = new Mp4DashReader[sourceTracks.length];
readersChunks = new Mp4DashChunk[readers.length];
time = (System.currentTimeMillis() / 1000L) + EPOCH_OFFSET;
compatibleBrands.add(0x6D703431);// mp41
compatibleBrands.add(0x69736F6D);// isom
compatibleBrands.add(0x69736F32);// iso2
}
public Mp4Track[] getTracksFromSource(int sourceIndex) throws IllegalStateException {
@ -104,8 +110,8 @@ public class Mp4FromDashWriter {
}
}
public void setMainBrand(int brandId) {
overrideMainBrand = brandId;
public void setMainBrand(int brand) {
overrideMainBrand = brand;
}
public boolean isDone() {
@ -159,7 +165,13 @@ public class Mp4FromDashWriter {
tablesInfo[i] = new TablesInfo();
}
boolean singleChunk = tracks.length == 1 && tracks[0].kind == TrackKind.Audio;
int single_sample_buffer;
if (tracks.length == 1 && tracks[0].kind == TrackKind.Audio) {
// near 1 second of audio data per chunk, avoid split the audio stream in large chunks
single_sample_buffer = tracks[0].trak.mdia.mdhd_timeScale / 1000;
} else {
single_sample_buffer = -1;
}
for (int i = 0; i < readers.length; i++) {
@ -210,31 +222,10 @@ public class Mp4FromDashWriter {
readers[i].rewind();
int tmp = tablesInfo[i].stsz - SAMPLES_PER_CHUNK_INIT;
tablesInfo[i].stco = (tmp / SAMPLES_PER_CHUNK) + 1;// +1 for samples in first chunk
tmp = tmp % SAMPLES_PER_CHUNK;
if (singleChunk) {
// avoid split audio streams in chunks
tablesInfo[i].stsc = 1;
tablesInfo[i].stsc_bEntries = new int[]{
1, tablesInfo[i].stsz, 1
};
tablesInfo[i].stco = 1;
} else if (tmp == 0) {
tablesInfo[i].stsc = 2;// first chunk (init) and succesive chunks
tablesInfo[i].stsc_bEntries = new int[]{
1, SAMPLES_PER_CHUNK_INIT, 1,
2, SAMPLES_PER_CHUNK, 1
};
if (single_sample_buffer > 0) {
initChunkTables(tablesInfo[i], single_sample_buffer, single_sample_buffer);
} else {
tablesInfo[i].stsc = 3;// first chunk (init) and successive chunks and remain chunk
tablesInfo[i].stsc_bEntries = new int[]{
1, SAMPLES_PER_CHUNK_INIT, 1,
2, SAMPLES_PER_CHUNK, 1,
tablesInfo[i].stco + 1, tmp, 1
};
tablesInfo[i].stco++;
initChunkTables(tablesInfo[i], SAMPLES_PER_CHUNK_INIT, SAMPLES_PER_CHUNK);
}
sampleCount[i] = tablesInfo[i].stsz;
@ -259,7 +250,7 @@ public class Mp4FromDashWriter {
boolean is64 = read > THRESHOLD_FOR_CO64;
// calculate the moov size;
// calculate the moov size
int auxSize = make_moov(defaultMediaTime, tablesInfo, is64);
if (auxSize < THRESHOLD_MOOV_LENGTH) {
@ -272,11 +263,6 @@ public class Mp4FromDashWriter {
final int ftyp_size = make_ftyp();
// reserve moov space in the output stream
/*if (outStream.canSetLength()) {
long length = writeOffset + auxSize;
outStream.setLength(length);
outSeek(length);
} else {*/
if (auxSize > 0) {
int length = auxSize;
byte[] buffer = new byte[64 * 1024];// 64 KiB
@ -292,10 +278,10 @@ public class Mp4FromDashWriter {
}
// tablesInfo contains row counts
// and after returning from make_moov() will contain table offsets
// and after returning from make_moov() will contain those table offsets
make_moov(defaultMediaTime, tablesInfo, is64);
// write tables: stts stsc
// write tables: stts stsc sbgp
// reset for ctts table: sampleCount sampleExtra
for (int i = 0; i < readers.length; i++) {
writeEntryArray(tablesInfo[i].stts, 2, sampleCount[i], defaultSampleDuration[i]);
@ -305,6 +291,7 @@ public class Mp4FromDashWriter {
sampleCount[i] = 1;// the index is not base zero
sampleExtra[i] = -1;
}
writeEntryArray(tablesInfo[i].sbgp, 1, sampleCount[i]);
}
if (auxBuffer == null) {
@ -314,8 +301,8 @@ public class Mp4FromDashWriter {
outWrite(make_mdat(totalSampleSize, is64));
int[] sampleIndex = new int[readers.length];
int[] sizes = new int[singleChunk ? SINGLE_CHUNK_SAMPLE_BUFFER : SAMPLES_PER_CHUNK];
int[] sync = new int[singleChunk ? SINGLE_CHUNK_SAMPLE_BUFFER : SAMPLES_PER_CHUNK];
int[] sizes = new int[single_sample_buffer > 0 ? single_sample_buffer : SAMPLES_PER_CHUNK];
int[] sync = new int[single_sample_buffer > 0 ? single_sample_buffer : SAMPLES_PER_CHUNK];
int written = readers.length;
while (written > 0) {
@ -329,8 +316,8 @@ public class Mp4FromDashWriter {
long chunkOffset = writeOffset;
int syncCount = 0;
int limit;
if (singleChunk) {
limit = SINGLE_CHUNK_SAMPLE_BUFFER;
if (single_sample_buffer > 0) {
limit = single_sample_buffer;
} else {
limit = sampleIndex[i] == 0 ? SAMPLES_PER_CHUNK_INIT : SAMPLES_PER_CHUNK;
}
@ -342,6 +329,7 @@ public class Mp4FromDashWriter {
if (sample == null) {
if (tablesInfo[i].ctts > 0 && sampleExtra[i] >= 0) {
writeEntryArray(tablesInfo[i].ctts, 1, sampleCount[i], sampleExtra[i]);// flush last entries
outRestore();
}
sampleIndex[i] = -1;
break;
@ -390,10 +378,6 @@ public class Mp4FromDashWriter {
} else {
tablesInfo[i].stco = writeEntryArray(tablesInfo[i].stco, 1, (int) chunkOffset);
}
if (singleChunk) {
tablesInfo[i].stco = -1;
}
}
outRestore();
@ -470,7 +454,42 @@ public class Mp4FromDashWriter {
}
}
private void initChunkTables(TablesInfo tables, int firstCount, int succesiveCount) {
// tables.stsz holds amount of samples of the track (total)
int totalSamples = (tables.stsz - firstCount);
float chunkAmount = totalSamples / (float) succesiveCount;
int remainChunkOffset = (int) Math.ceil(chunkAmount);
boolean remain = remainChunkOffset != (int) chunkAmount;
int index = 0;
tables.stsc = 1;
if (firstCount != succesiveCount) {
tables.stsc++;
}
if (remain) {
tables.stsc++;
}
// stsc_table_entry = [first_chunk, samples_per_chunk, sample_description_index]
tables.stsc_bEntries = new int[tables.stsc * 3];
tables.stco = remainChunkOffset + 1;// total entrys in chunk offset box
tables.stsc_bEntries[index++] = 1;
tables.stsc_bEntries[index++] = firstCount;
tables.stsc_bEntries[index++] = 1;
if (firstCount != succesiveCount) {
tables.stsc_bEntries[index++] = 2;
tables.stsc_bEntries[index++] = succesiveCount;
tables.stsc_bEntries[index++] = 1;
}
if (remain) {
tables.stsc_bEntries[index++] = remainChunkOffset + 1;
tables.stsc_bEntries[index++] = totalSamples % succesiveCount;
tables.stsc_bEntries[index] = 1;
}
}
private void outWrite(byte[] buffer) throws IOException {
outWrite(buffer, buffer.length);
@ -585,19 +604,29 @@ public class Mp4FromDashWriter {
private int make_ftyp() throws IOException {
byte[] buffer = new byte[]{
0x00, 0x00, 0x00, 0x1C, 0x66, 0x74, 0x79, 0x70,// ftyp
0x6D, 0x70, 0x34, 0x32,// mayor brand (mp42)
0x00, 0x00, 0x02, 0x00,// default minor version (512)
0x6D, 0x70, 0x34, 0x31, 0x69, 0x73, 0x6F, 0x6D, 0x69, 0x73, 0x6F, 0x32// compatible brands: mp41 isom iso2
};
int size = 16 + (compatibleBrands.size() * 4);
if (overrideMainBrand != 0) size += 4;
if (overrideMainBrand != 0)
ByteBuffer.wrap(buffer).putInt(8, overrideMainBrand);
ByteBuffer buffer = ByteBuffer.allocate(size);
buffer.putInt(size);
buffer.putInt(0x66747970);// "ftyp"
outWrite(buffer);
if (overrideMainBrand == 0) {
buffer.putInt(0x6D703432);// mayor brand "mp42"
buffer.putInt(512);// default minor version
} else {
buffer.putInt(overrideMainBrand);
buffer.putInt(0);
buffer.putInt(0x6D703432);// "mp42" compatible brand
}
return buffer.length;
for (Integer brand : compatibleBrands) {
buffer.putInt(brand);// compatible brand
}
outWrite(buffer.array());
return size;
}
private byte[] make_mdat(long refSize, boolean is64) {
@ -740,13 +769,12 @@ public class Mp4FromDashWriter {
.array()
);
make_mdia(tracks[index].trak.mdia, tables, is64);
make_mdia(tracks[index].trak.mdia, tables, is64, tracks[index].kind == TrackKind.Audio);
lengthFor(start);
}
private void make_mdia(Mdia mdia, TablesInfo tablesInfo, boolean is64) throws IOException {
private void make_mdia(Mdia mdia, TablesInfo tablesInfo, boolean is64, boolean isAudio) throws IOException {
int start_mdia = auxOffset();
auxWrite(new byte[]{0x00, 0x00, 0x00, 0x00, 0x6D, 0x64, 0x69, 0x61});// mdia
auxWrite(mdia.mdhd);
@ -766,7 +794,7 @@ public class Mp4FromDashWriter {
// And stsz can be empty if has a default sample size
//
if (moovSimulation) {
make(0x73747473, -1, 2, 1);
make(0x73747473, -1, 2, 1);// stts
if (tablesInfo.stss > 0) {
make(0x73747373, -1, 1, tablesInfo.stss);
}
@ -789,6 +817,11 @@ public class Mp4FromDashWriter {
tablesInfo.stco = make(is64 ? 0x636F3634 : 0x7374636F, -1, is64 ? 2 : 1, tablesInfo.stco);
}
if (isAudio) {
auxWrite(make_sgpd());
tablesInfo.sbgp = make_sbgp();// during simulation the returned offset is ignored
}
lengthFor(start_stbl);
lengthFor(start_minf);
lengthFor(start_mdia);
@ -816,6 +849,48 @@ public class Mp4FromDashWriter {
return buffer.array();
}
private int make_sbgp() throws IOException {
int offset = auxOffset();
auxWrite(new byte[] {
0x00, 0x00, 0x00, 0x1C,// box size
0x73, 0x62, 0x67, 0x70,// "sbpg"
0x00, 0x00, 0x00, 0x00,// default box flags
0x72, 0x6F, 0x6C, 0x6C,// group type "roll"
0x00, 0x00, 0x00, 0x01,// group table size
0x00, 0x00, 0x00, 0x00,// group[0] total samples (to be set later)
0x00, 0x00, 0x00, 0x01// group[0] description index
});
return offset + 0x14;
}
private byte[] make_sgpd() {
/*
* Sample Group Description Box
*
* ¿whats does?
* the table inside of this box gives information about the
* characteristics of sample groups. The descriptive information is any other
* information needed to define or characterize the sample group.
*
* ¿is replicabled this box?
* NO due lacks of documentation about this box but...
* most of m4a encoders and ffmpeg uses this box with dummy values (same values)
*/
ByteBuffer buffer = ByteBuffer.wrap(new byte[] {
0x00, 0x00, 0x00, 0x1A,// box size
0x73, 0x67, 0x70, 0x64,// "sgpd"
0x01, 0x00, 0x00, 0x00,// box flags (unknown flag sets)
0x72, 0x6F, 0x6C, 0x6C, // ¿¿group type??
0x00, 0x00, 0x00, 0x02,// ¿¿??
0x00, 0x00, 0x00, 0x01,// ¿¿??
(byte)0xFF, (byte)0xFF// ¿¿??
});
return buffer.array();
}
class TablesInfo {
@ -827,5 +902,6 @@ public class Mp4FromDashWriter {
int stsz_default;
int stss;
int stco;
int sbgp;
}
}

View File

@ -0,0 +1,95 @@
package org.schabi.newpipe.streams;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.nodes.Node;
import org.jsoup.nodes.TextNode;
import org.jsoup.parser.Parser;
import org.jsoup.select.Elements;
import org.schabi.newpipe.streams.io.SharpStream;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
/**
* @author kapodamy
*/
public class SrtFromTtmlWriter {
private static final String NEW_LINE = "\r\n";
private SharpStream out;
private boolean ignoreEmptyFrames;
private final Charset charset = StandardCharsets.UTF_8;
private int frameIndex = 0;
public SrtFromTtmlWriter(SharpStream out, boolean ignoreEmptyFrames) {
this.out = out;
this.ignoreEmptyFrames = ignoreEmptyFrames;
}
private static String getTimestamp(Element frame, String attr) {
return frame
.attr(attr)
.replace('.', ',');// SRT subtitles uses comma as decimal separator
}
private void writeFrame(String begin, String end, StringBuilder text) throws IOException {
writeString(String.valueOf(frameIndex++));
writeString(NEW_LINE);
writeString(begin);
writeString(" --> ");
writeString(end);
writeString(NEW_LINE);
writeString(text.toString());
writeString(NEW_LINE);
writeString(NEW_LINE);
}
private void writeString(String text) throws IOException {
out.write(text.getBytes(charset));
}
public void build(SharpStream ttml) throws IOException {
/*
* TTML parser with BASIC support
* multiple CUE is not supported
* styling is not supported
* tag timestamps (in auto-generated subtitles) are not supported, maybe in the future
* also TimestampTagOption enum is not applicable
* Language parsing is not supported
*/
// parse XML
byte[] buffer = new byte[(int) ttml.available()];
ttml.read(buffer);
Document doc = Jsoup.parse(new ByteArrayInputStream(buffer), "UTF-8", "", Parser.xmlParser());
StringBuilder text = new StringBuilder(128);
Elements paragraph_list = doc.select("body > div > p");
// check if has frames
if (paragraph_list.size() < 1) return;
for (Element paragraph : paragraph_list) {
text.setLength(0);
for (Node children : paragraph.childNodes()) {
if (children instanceof TextNode)
text.append(((TextNode) children).text());
else if (children instanceof Element && ((Element) children).tagName().equalsIgnoreCase("br"))
text.append(NEW_LINE);
}
if (ignoreEmptyFrames && text.length() < 1) continue;
String begin = getTimestamp(paragraph, "begin");
String end = getTimestamp(paragraph, "end");
writeFrame(begin, end, text);
}
}
}

View File

@ -1,369 +0,0 @@
package org.schabi.newpipe.streams;
import org.schabi.newpipe.streams.io.SharpStream;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.nio.charset.Charset;
import java.text.ParseException;
import java.util.Locale;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.XPathExpressionException;
/**
* @author kapodamy
*/
public class SubtitleConverter {
private static final String NEW_LINE = "\r\n";
public void dumpTTML(SharpStream in, final SharpStream out, final boolean ignoreEmptyFrames, final boolean detectYoutubeDuplicateLines
) throws IOException, ParseException, SAXException, ParserConfigurationException, XPathExpressionException {
final FrameWriter callback = new FrameWriter() {
int frameIndex = 0;
final Charset charset = Charset.forName("utf-8");
@Override
public void yield(SubtitleFrame frame) throws IOException {
if (ignoreEmptyFrames && frame.isEmptyText()) {
return;
}
out.write(String.valueOf(frameIndex++).getBytes(charset));
out.write(NEW_LINE.getBytes(charset));
out.write(getTime(frame.start, true).getBytes(charset));
out.write(" --> ".getBytes(charset));
out.write(getTime(frame.end, true).getBytes(charset));
out.write(NEW_LINE.getBytes(charset));
out.write(frame.text.getBytes(charset));
out.write(NEW_LINE.getBytes(charset));
out.write(NEW_LINE.getBytes(charset));
}
};
read_xml_based(in, callback, detectYoutubeDuplicateLines,
"tt", "xmlns", "http://www.w3.org/ns/ttml",
new String[]{"timedtext", "head", "wp"},
new String[]{"body", "div", "p"},
"begin", "end", true
);
}
private void read_xml_based(SharpStream source, FrameWriter callback, boolean detectYoutubeDuplicateLines,
String root, String formatAttr, String formatVersion, String[] cuePath, String[] framePath,
String timeAttr, String durationAttr, boolean hasTimestamp
) throws IOException, ParseException, SAXException, ParserConfigurationException, XPathExpressionException {
/*
* XML based subtitles parser with BASIC support
* multiple CUE is not supported
* styling is not supported
* tag timestamps (in auto-generated subtitles) are not supported, maybe in the future
* also TimestampTagOption enum is not applicable
* Language parsing is not supported
*/
byte[] buffer = new byte[(int) source.available()];
source.read(buffer);
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder();
Document xml = builder.parse(new ByteArrayInputStream(buffer));
String attr;
// get the format version or namespace
Element node = xml.getDocumentElement();
if (node == null) {
throw new ParseException("Can't get the format version. ¿wrong namespace?", -1);
} else if (!node.getNodeName().equals(root)) {
throw new ParseException("Invalid root", -1);
}
if (formatAttr.equals("xmlns")) {
if (!node.getNamespaceURI().equals(formatVersion)) {
throw new UnsupportedOperationException("Expected xml namespace: " + formatVersion);
}
} else {
attr = node.getAttributeNS(formatVersion, formatAttr);
if (attr == null) {
throw new ParseException("Can't get the format attribute", -1);
}
if (!attr.equals(formatVersion)) {
throw new ParseException("Invalid format version : " + attr, -1);
}
}
NodeList node_list;
int line_break = 0;// Maximum characters per line if present (valid for TranScript v3)
if (!hasTimestamp) {
node_list = selectNodes(xml, cuePath, formatVersion);
if (node_list != null) {
// if the subtitle has multiple CUEs, use the highest value
for (int i = 0; i < node_list.getLength(); i++) {
try {
int tmp = Integer.parseInt(((Element) node_list.item(i)).getAttributeNS(formatVersion, "ah"));
if (tmp > line_break) {
line_break = tmp;
}
} catch (Exception err) {
}
}
}
}
// parse every frame
node_list = selectNodes(xml, framePath, formatVersion);
if (node_list == null) {
return;// no frames detected
}
int fs_ff = -1;// first timestamp of first frame
boolean limit_lines = false;
for (int i = 0; i < node_list.getLength(); i++) {
Element elem = (Element) node_list.item(i);
SubtitleFrame obj = new SubtitleFrame();
obj.text = elem.getTextContent();
attr = elem.getAttribute(timeAttr);// ¡this cant be null!
obj.start = hasTimestamp ? parseTimestamp(attr) : Integer.parseInt(attr);
attr = elem.getAttribute(durationAttr);
if (obj.text == null || attr == null) {
continue;// normally is a blank line (on auto-generated subtitles) ignore
}
if (hasTimestamp) {
obj.end = parseTimestamp(attr);
if (detectYoutubeDuplicateLines) {
if (limit_lines) {
int swap = obj.end;
obj.end = fs_ff;
fs_ff = swap;
} else {
if (fs_ff < 0) {
fs_ff = obj.end;
} else {
if (fs_ff < obj.start) {
limit_lines = true;// the subtitles has duplicated lines
} else {
detectYoutubeDuplicateLines = false;
}
}
}
}
} else {
obj.end = obj.start + Integer.parseInt(attr);
}
if (/*node.getAttribute("w").equals("1") &&*/line_break > 1 && obj.text.length() > line_break) {
// implement auto line breaking (once)
StringBuilder text = new StringBuilder(obj.text);
obj.text = null;
switch (text.charAt(line_break)) {
case ' ':
case '\t':
putBreakAt(line_break, text);
break;
default:// find the word start position
for (int j = line_break - 1; j > 0; j--) {
switch (text.charAt(j)) {
case ' ':
case '\t':
putBreakAt(j, text);
j = -1;
break;
case '\r':
case '\n':
j = -1;// long word, just ignore
break;
}
}
break;
}
obj.text = text.toString();// set the processed text
}
callback.yield(obj);
}
}
private static NodeList selectNodes(Document xml, String[] path, String namespaceUri) {
Element ref = xml.getDocumentElement();
for (int i = 0; i < path.length - 1; i++) {
NodeList nodes = ref.getChildNodes();
if (nodes.getLength() < 1) {
return null;
}
Element elem;
for (int j = 0; j < nodes.getLength(); j++) {
if (nodes.item(j).getNodeType() == Node.ELEMENT_NODE) {
elem = (Element) nodes.item(j);
if (elem.getNodeName().equals(path[i]) && elem.getNamespaceURI().equals(namespaceUri)) {
ref = elem;
break;
}
}
}
}
return ref.getElementsByTagNameNS(namespaceUri, path[path.length - 1]);
}
private static int parseTimestamp(String multiImpl) throws NumberFormatException, ParseException {
if (multiImpl.length() < 1) {
return 0;
} else if (multiImpl.length() == 1) {
return Integer.parseInt(multiImpl) * 1000;// ¡this must be a number in seconds!
}
// detect wallclock-time
if (multiImpl.startsWith("wallclock(")) {
throw new UnsupportedOperationException("Parsing wallclock timestamp is not implemented");
}
// detect offset-time
if (multiImpl.indexOf(':') < 0) {
int multiplier = 1000;
char metric = multiImpl.charAt(multiImpl.length() - 1);
switch (metric) {
case 'h':
multiplier *= 3600000;
break;
case 'm':
multiplier *= 60000;
break;
case 's':
if (multiImpl.charAt(multiImpl.length() - 2) == 'm') {
multiplier = 1;// ms
}
break;
default:
if (!Character.isDigit(metric)) {
throw new NumberFormatException("Invalid metric suffix found on : " + multiImpl);
}
metric = '\0';
break;
}
try {
String offset_time = multiImpl;
if (multiplier == 1) {
offset_time = offset_time.substring(0, offset_time.length() - 2);
} else if (metric != '\0') {
offset_time = offset_time.substring(0, offset_time.length() - 1);
}
double time_metric_based = Double.parseDouble(offset_time);
if (Math.abs(time_metric_based) <= Double.MAX_VALUE) {
return (int) (time_metric_based * multiplier);
}
} catch (Exception err) {
throw new UnsupportedOperationException("Invalid or not implemented timestamp on: " + multiImpl);
}
}
// detect clock-time
int time = 0;
String[] units = multiImpl.split(":");
if (units.length < 3) {
throw new ParseException("Invalid clock-time timestamp", -1);
}
time += Integer.parseInt(units[0]) * 3600000;// hours
time += Integer.parseInt(units[1]) * 60000;//minutes
time += Float.parseFloat(units[2]) * 1000f;// seconds and milliseconds (if present)
// frames and sub-frames are ignored (not implemented)
// time += units[3] * fps;
return time;
}
private static void putBreakAt(int idx, StringBuilder str) {
// this should be optimized at compile time
if (NEW_LINE.length() > 1) {
str.delete(idx, idx + 1);// remove after replace
str.insert(idx, NEW_LINE);
} else {
str.setCharAt(idx, NEW_LINE.charAt(0));
}
}
private static String getTime(int time, boolean comma) {
// cast every value to integer to avoid auto-round in ToString("00").
StringBuilder str = new StringBuilder(12);
str.append(numberToString(time / 1000 / 3600, 2));// hours
str.append(':');
str.append(numberToString(time / 1000 / 60 % 60, 2));// minutes
str.append(':');
str.append(numberToString(time / 1000 % 60, 2));// seconds
str.append(comma ? ',' : '.');
str.append(numberToString(time % 1000, 3));// miliseconds
return str.toString();
}
private static String numberToString(int nro, int pad) {
return String.format(Locale.ENGLISH, "%0".concat(String.valueOf(pad)).concat("d"), nro);
}
/******************
* helper classes *
******************/
private interface FrameWriter {
void yield(SubtitleFrame frame) throws IOException;
}
private static class SubtitleFrame {
//Java no support unsigned int
public int end;
public int start;
public String text = "";
private boolean isEmptyText() {
if (text == null) {
return true;
}
for (int i = 0; i < text.length(); i++) {
switch (text.charAt(i)) {
case ' ':
case '\t':
case '\r':
case '\n':
break;
default:
return false;
}
}
return true;
}
}
}

View File

@ -11,5 +11,7 @@ public class Constants {
public static final String KEY_THEME_CHANGE = "key_theme_change";
public static final String KEY_MAIN_PAGE_CHANGE = "key_main_page_change";
public static final String KEY_ENABLE_WATCH_HISTORY = "enable_watch_history";
public static final int NO_SERVICE_ID = -1;
}

View File

@ -0,0 +1,23 @@
package org.schabi.newpipe.util;
import android.content.Context;
import android.content.DialogInterface;
import androidx.appcompat.app.AlertDialog;
import org.schabi.newpipe.R;
public class KoreUtil {
private KoreUtil() { }
public static void showInstallKoreDialog(final Context context) {
final AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setMessage(R.string.kore_not_found)
.setPositiveButton(R.string.install,
(DialogInterface dialog, int which) -> NavigationHelper.installKore(context))
.setNegativeButton(R.string.cancel, (DialogInterface dialog, int which) -> {
});
builder.create().show();
}
}

View File

@ -1,9 +1,17 @@
package org.schabi.newpipe.util;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.preference.PreferenceManager;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import androidx.annotation.NonNull;
import androidx.annotation.PluralsRes;
import androidx.annotation.StringRes;
import org.ocpsoft.prettytime.PrettyTime;
import org.ocpsoft.prettytime.units.Decade;
@ -18,10 +26,6 @@ import java.util.Date;
import java.util.List;
import java.util.Locale;
import androidx.annotation.NonNull;
import androidx.annotation.PluralsRes;
import androidx.annotation.StringRes;
/*
* Created by chschtsch on 12/29/15.
*
@ -50,8 +54,8 @@ public class Localization {
private Localization() {
}
public static void init() {
initPrettyTime();
public static void init(Context context) {
initPrettyTime(context);
}
@NonNull
@ -115,12 +119,13 @@ public class Localization {
return nf.format(number);
}
public static String formatDate(Date date) {
return DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.getDefault()).format(date);
public static String formatDate(Date date, Context context) {
return DateFormat.getDateInstance(DateFormat.MEDIUM, getAppLocale(context)).format(date);
}
@SuppressLint("StringFormatInvalid")
public static String localizeUploadDate(Context context, Date date) {
return context.getString(R.string.upload_date_text, formatDate(date));
return context.getString(R.string.upload_date_text, formatDate(date, context));
}
public static String localizeViewCount(Context context, long viewCount) {
@ -199,21 +204,47 @@ public class Localization {
// Pretty Time
//////////////////////////////////////////////////////////////////////////*/
private static void initPrettyTime() {
prettyTime = new PrettyTime(Locale.getDefault());
private static void initPrettyTime(Context context) {
prettyTime = new PrettyTime(getAppLocale(context));
// Do not use decades as YouTube doesn't either.
prettyTime.removeUnit(Decade.class);
}
private static PrettyTime getPrettyTime() {
// If pretty time's Locale is different, init again with the new one.
if (!prettyTime.getLocale().equals(Locale.getDefault())) {
initPrettyTime();
}
return prettyTime;
}
public static String relativeTime(Calendar calendarTime) {
return getPrettyTime().formatUnrounded(calendarTime);
}
private static void changeAppLanguage(Locale loc, Resources res) {
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.setLocale(loc);
res.updateConfiguration(conf, dm);
}
public static Locale getAppLocale(Context context) {
SharedPreferences prefs = androidx.preference.PreferenceManager.getDefaultSharedPreferences(context);
String lang = prefs.getString("app_language_key", "en");
Locale loc;
if (lang.equals("system")) {
loc = Locale.getDefault();
} else if (lang.matches(".*-.*")) {
//to differentiate different versions of the language
//for example, pt (portuguese in Portugal) and pt-br (portuguese in Brazil)
String[] localisation = lang.split("-");
lang = localisation[0];
String country = localisation[1];
loc = new Locale(lang, country);
} else {
loc = new Locale(lang);
}
return loc;
}
public static void assureCorrectAppLanguage(Context c) {
changeAppLanguage(getAppLocale(c), c.getResources());
}
}

View File

@ -109,12 +109,14 @@ public class NavigationHelper {
final float playbackPitch,
final boolean playbackSkipSilence,
@Nullable final String playbackQuality,
final boolean resumePlayback) {
final boolean resumePlayback,
final boolean startPaused) {
return getPlayerIntent(context, targetClazz, playQueue, playbackQuality, resumePlayback)
.putExtra(BasePlayer.REPEAT_MODE, repeatMode)
.putExtra(BasePlayer.PLAYBACK_SPEED, playbackSpeed)
.putExtra(BasePlayer.PLAYBACK_PITCH, playbackPitch)
.putExtra(BasePlayer.PLAYBACK_SKIP_SILENCE, playbackSkipSilence);
.putExtra(BasePlayer.PLAYBACK_SKIP_SILENCE, playbackSkipSilence)
.putExtra(BasePlayer.START_PAUSED, startPaused);
}
public static void playOnMainPlayer(final Context context, final PlayQueue queue, final boolean resumePlayback) {

View File

@ -223,6 +223,7 @@ public class DownloadMission extends Mission {
conn.setInstanceFollowRedirects(true);
conn.setRequestProperty("User-Agent", DownloaderImpl.USER_AGENT);
conn.setRequestProperty("Accept", "*/*");
conn.setRequestProperty("Accept-Encoding", "*");
if (headRequest) conn.setRequestMethod("HEAD");

View File

@ -80,7 +80,7 @@ public abstract class Postprocessing implements Serializable {
private transient DownloadMission mission;
private File tempFile;
private transient File tempFile;
Postprocessing(boolean reserveSpace, boolean worksOnSameFile, String algorithmName) {
this.reserveSpace = reserveSpace;
@ -95,8 +95,12 @@ public abstract class Postprocessing implements Serializable {
public void cleanupTemporalDir() {
if (tempFile != null && tempFile.exists()) {
//noinspection ResultOfMethodCallIgnored
tempFile.delete();
try {
//noinspection ResultOfMethodCallIgnored
tempFile.delete();
} catch (Exception e) {
// nothing to do
}
}
}

View File

@ -2,15 +2,10 @@ package us.shandian.giga.postprocessing;
import android.util.Log;
import org.schabi.newpipe.streams.SubtitleConverter;
import org.schabi.newpipe.streams.SrtFromTtmlWriter;
import org.schabi.newpipe.streams.io.SharpStream;
import org.xml.sax.SAXException;
import java.io.IOException;
import java.text.ParseException;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.XPathExpressionException;
/**
* @author kapodamy
@ -27,33 +22,16 @@ class TtmlConverter extends Postprocessing {
int process(SharpStream out, SharpStream... sources) throws IOException {
// check if the subtitle is already in srt and copy, this should never happen
String format = getArgumentAt(0, null);
boolean ignoreEmptyFrames = getArgumentAt(1, "true").equals("true");
if (format == null || format.equals("ttml")) {
SubtitleConverter ttmlDumper = new SubtitleConverter();
SrtFromTtmlWriter writer = new SrtFromTtmlWriter(out, ignoreEmptyFrames);
try {
ttmlDumper.dumpTTML(
sources[0],
out,
getArgumentAt(1, "true").equals("true"),
getArgumentAt(2, "true").equals("true")
);
writer.build(sources[0]);
} catch (Exception err) {
Log.e(TAG, "subtitle parse failed", err);
if (err instanceof IOException) {
return 1;
} else if (err instanceof ParseException) {
return 2;
} else if (err instanceof SAXException) {
return 3;
} else if (err instanceof ParserConfigurationException) {
return 4;
} else if (err instanceof XPathExpressionException) {
return 7;
}
return 8;
return err instanceof IOException ? 1 : 8;
}
return OK_RESULT;

View File

@ -139,6 +139,9 @@ public class DownloadManager {
Log.d(TAG, "Loading pending downloads from directory: " + mPendingMissionsDir.getAbsolutePath());
}
File tempDir = pickAvailableTemporalDir(ctx);
Log.i(TAG, "using '" + tempDir + "' as temporal directory");
for (File sub : subs) {
if (!sub.isFile()) continue;
if (sub.getName().equals(".tmp")) continue;
@ -184,7 +187,7 @@ public class DownloadManager {
if (mis.psAlgorithm != null) {
mis.psAlgorithm.cleanupTemporalDir();
mis.psAlgorithm.setTemporalDir(pickAvailableTemporalDir(ctx));
mis.psAlgorithm.setTemporalDir(tempDir);
}
mis.metadata = sub;
@ -513,13 +516,21 @@ public class DownloadManager {
}
static File pickAvailableTemporalDir(@NonNull Context ctx) {
if (isDirectoryAvailable(ctx.getExternalFilesDir(null)))
return ctx.getExternalFilesDir(null);
else if (isDirectoryAvailable(ctx.getFilesDir()))
return ctx.getFilesDir();
File dir = ctx.getExternalFilesDir(null);
if (isDirectoryAvailable(dir)) return dir;
dir = ctx.getFilesDir();
if (isDirectoryAvailable(dir)) return dir;
// this never should happen
return ctx.getDir("tmp", Context.MODE_PRIVATE);
dir = ctx.getDir("muxing_tmp", Context.MODE_PRIVATE);
if (isDirectoryAvailable(dir)) return dir;
// fallback to cache dir
dir = ctx.getCacheDir();
if (isDirectoryAvailable(dir)) return dir;
throw new RuntimeException("Not temporal directories are available");
}
@Nullable

View File

@ -5,6 +5,7 @@ import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
@ -35,6 +36,8 @@ import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.RecyclerView.Adapter;
import androidx.recyclerview.widget.RecyclerView.ViewHolder;
import com.google.android.material.snackbar.Snackbar;
import org.schabi.newpipe.BuildConfig;
import org.schabi.newpipe.R;
import org.schabi.newpipe.extractor.NewPipe;
@ -46,6 +49,7 @@ import java.io.File;
import java.lang.ref.WeakReference;
import java.net.URI;
import java.util.ArrayList;
import java.util.Iterator;
import us.shandian.giga.get.DownloadMission;
import us.shandian.giga.get.FinishedMission;
@ -104,8 +108,12 @@ public class MissionAdapter extends Adapter<ViewHolder> implements Handler.Callb
private MenuItem mPauseButton;
private View mEmptyMessage;
private RecoverHelper mRecover;
private View mView;
private ArrayList<Mission> mHidden;
private Snackbar mSnackbar;
private final Runnable rUpdater = this::updater;
private final Runnable rDelete = this::deleteFinishedDownloads;
public MissionAdapter(Context context, @NonNull DownloadManager downloadManager, View emptyMessage, View root) {
mContext = context;
@ -122,6 +130,10 @@ public class MissionAdapter extends Adapter<ViewHolder> implements Handler.Callb
mDeleter = new Deleter(root, mContext, this, mDownloadManager, mIterator, mHandler);
mView = root;
mHidden = new ArrayList<>();
checkEmptyMessageVisibility();
onResume();
}
@ -522,7 +534,7 @@ public class MissionAdapter extends Adapter<ViewHolder> implements Handler.Callb
);
}
builder.setNegativeButton(android.R.string.ok, (dialog, which) -> dialog.cancel())
builder.setNegativeButton(R.string.finish, (dialog, which) -> dialog.cancel())
.setTitle(mission.storage.getName())
.create()
.show();
@ -557,9 +569,50 @@ public class MissionAdapter extends Adapter<ViewHolder> implements Handler.Callb
);
}
public void clearFinishedDownloads() {
mDownloadManager.forgetFinishedDownloads();
applyChanges();
public void clearFinishedDownloads(boolean delete) {
if (delete && mIterator.hasFinishedMissions() && mHidden.isEmpty()) {
for (int i = 0; i < mIterator.getOldListSize(); i++) {
FinishedMission mission = mIterator.getItem(i).mission instanceof FinishedMission ? (FinishedMission) mIterator.getItem(i).mission : null;
if (mission != null) {
mIterator.hide(mission);
mHidden.add(mission);
}
}
applyChanges();
String msg = String.format(mContext.getString(R.string.deleted_downloads), mHidden.size());
mSnackbar = Snackbar.make(mView, msg, Snackbar.LENGTH_INDEFINITE);
mSnackbar.setAction(R.string.undo, s -> {
Iterator<Mission> i = mHidden.iterator();
while (i.hasNext()) {
mIterator.unHide(i.next());
i.remove();
}
applyChanges();
mHandler.removeCallbacks(rDelete);
});
mSnackbar.setActionTextColor(Color.YELLOW);
mSnackbar.show();
mHandler.postDelayed(rDelete, 5000);
} else if (!delete) {
mDownloadManager.forgetFinishedDownloads();
applyChanges();
}
}
private void deleteFinishedDownloads() {
if (mSnackbar != null) mSnackbar.dismiss();
Iterator<Mission> i = mHidden.iterator();
while (i.hasNext()) {
Mission mission = i.next();
if (mission != null) {
mDownloadManager.deleteMission(mission);
mContext.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, mission.storage.getUri()));
}
i.remove();
}
}
private boolean handlePopupItem(@NonNull ViewHolderItem h, @NonNull MenuItem option) {

View File

@ -17,6 +17,7 @@ import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.Toast;
import androidx.annotation.NonNull;
@ -189,10 +190,12 @@ public class MissionsFragment extends Fragment {
return true;
case R.id.clear_list:
AlertDialog.Builder prompt = new AlertDialog.Builder(mContext);
prompt.setTitle(R.string.clear_finished_download);
prompt.setTitle(R.string.clear_download_history);
prompt.setMessage(R.string.confirm_prompt);
prompt.setPositiveButton(android.R.string.ok, (dialog, which) -> mAdapter.clearFinishedDownloads());
prompt.setNegativeButton(R.string.cancel, null);
// Intentionally misusing button's purpose in order to achieve good order
prompt.setNegativeButton(R.string.clear_download_history, (dialog, which) -> mAdapter.clearFinishedDownloads(false));
prompt.setPositiveButton(R.string.delete_downloaded_files, (dialog, which) -> mAdapter.clearFinishedDownloads(true));
prompt.setNeutralButton(R.string.cancel, null);
prompt.create().show();
return true;
case R.id.start_downloads:

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M9,16.2L4.8,12l-1.4,1.4L9,19 21,7l-1.4,-1.4L9,16.2z"/>
</vector>

View File

@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#FFFFFF"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M9,16.2L4.8,12l-1.4,1.4L9,19 21,7l-1.4,-1.4L9,16.2z"/>
</vector>

View File

@ -305,7 +305,7 @@
tools:text="English" />
<ImageButton
android:id="@+id/share"
android:id="@+id/kodi"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginLeft="4dp"
@ -316,6 +316,25 @@
android:focusable="true"
android:padding="5dp"
android:scaleType="fitXY"
android:src="@drawable/ic_cast_white_24dp"
android:background="?attr/selectableItemBackground"
android:contentDescription="@string/play_with_kodi_title"
tools:ignore="RtlHardcoded"
android:visibility="visible"/>
<ImageButton
android:id="@+id/share"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="2dp"
android:layout_toLeftOf="@id/kodi"
android:layout_alignWithParentIfMissing="true"
android:layout_centerVertical="true"
android:clickable="true"
android:focusable="true"
android:padding="5dp"
android:scaleType="fitXY"
android:src="@drawable/ic_share_white_24dp"
android:background="?attr/selectableItemBackground"
android:contentDescription="@string/share"

View File

@ -303,7 +303,7 @@
tools:text="English" />
<ImageButton
android:id="@+id/share"
android:id="@+id/kodi"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginLeft="4dp"
@ -314,6 +314,25 @@
android:focusable="true"
android:padding="5dp"
android:scaleType="fitXY"
android:src="@drawable/ic_cast_white_24dp"
android:background="?attr/selectableItemBackground"
android:contentDescription="@string/play_with_kodi_title"
tools:ignore="RtlHardcoded"
android:visibility="visible"/>
<ImageButton
android:id="@+id/share"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="2dp"
android:layout_toLeftOf="@id/kodi"
android:layout_alignWithParentIfMissing="true"
android:layout_centerVertical="true"
android:clickable="true"
android:focusable="true"
android:padding="5dp"
android:scaleType="fitXY"
android:src="@drawable/ic_share_white_24dp"
android:background="?attr/selectableItemBackground"
android:contentDescription="@string/share"

View File

@ -14,9 +14,7 @@
android:minHeight="?attr/actionBarSize"
android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.ActionBar"
app:titleTextAppearance="@style/Toolbar.Title">
</androidx.appcompat.widget.Toolbar>
app:titleTextAppearance="@style/Toolbar.Title"/>
<WebView
android:id="@+id/reCaptchaWebView"

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<EditText
android:id="@+id/playlist_name_edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:importantForAutofill="no"
android:inputType="text"
android:maxLines="1"
android:layout_margin="10dp"
android:hint="@string/playlist_name_input"/>
</LinearLayout>

View File

@ -24,11 +24,7 @@
<item android:id="@+id/clear_list"
android:visible="false"
android:icon="?attr/ic_delete"
android:title="@string/clear_finished_download"
android:title="@string/clear_download_history"
app:showAsAction="ifRoom" />
<item android:id="@+id/action_settings"
android:title="@string/settings"
app:showAsAction="never" />
</menu>

View File

@ -1,22 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_show_downloads"
android:orderInCategory="980"
android:title="@string/downloads"
app:showAsAction="never"/>
<item
android:id="@+id/action_history"
android:orderInCategory="981"
android:title="@string/action_history"
app:showAsAction="never"/>
<item
android:id="@+id/action_settings"
android:orderInCategory="990"
android:title="@string/settings"
app:showAsAction="never"/>
</menu>

View File

@ -3,14 +3,4 @@
xmlns:tools="http://schemas.android.com/tools"
tools:context="org.schabi.newpipe.about.AboutActivity">
<item android:id="@+id/action_show_downloads"
android:orderInCategory="980"
android:title="@string/downloads"
app:showAsAction="never"/>
<item android:id="@+id/action_settings"
android:orderInCategory="990"
android:title="@string/settings"
app:showAsAction="never"/>
</menu>

View File

@ -10,11 +10,6 @@
android:visible="true"
app:showAsAction="ifRoom"/>
<item android:id="@+id/action_settings"
android:orderInCategory="990"
android:title="@string/settings"
app:showAsAction="never"/>
<item android:id="@+id/action_system_audio"
android:orderInCategory="996"
android:title="@string/play_queue_audio_settings"

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/menu_item_done"
android:title="@string/recaptcha_done_button"
android:icon="?attr/ic_done"
app:showAsAction="always"/>
</menu>

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>
@ -57,7 +57,7 @@
<string name="general_error">خطأ</string>
<string name="parsing_error">تعذرت عملية تحليل الموقع</string>
<string name="youtube_signature_decryption_error">تعذر فك تشفير توقيع رابط الفيديو</string>
<string name="main_bg_subtitle">اضغط بحث للبدء</string>
<string name="main_bg_subtitle">انقر فوق بحث لتبدأ</string>
<string name="subscribe_button_title">اشتراك</string>
<string name="subscribed_button_title">مشترك</string>
<string name="tab_main">الرئيسية</string>
@ -69,8 +69,8 @@
<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,7 +113,7 @@
<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>
@ -155,15 +155,15 @@
<string name="storage_permission_denied">تم رفض إذن الوصول إلى التخزين</string>
<string name="short_thousand">ألف</string>
<string name="short_million">مليون</string>
<string name="short_billion">G</string>
<string name="short_billion">B</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="few">%s اشتراكات</item>
<item quantity="many">%s مشاركون</item>
<item quantity="other">%s اشتراك</item>
<item quantity="two">%s المشتركين</item>
<item quantity="few">%s المشتركين</item>
<item quantity="many">%s المشتركين</item>
<item quantity="other">%s المشتركين</item>
</plurals>
<string name="no_views">دون مشاهدات</string>
<string name="no_videos">لاتوجد فيديوهات</string>
@ -187,7 +187,7 @@
<string name="no_available_dir">يرجى تحديد مجلد التنزيل لاحقا في الإعدادات</string>
<string name="msg_popup_permission">هذا الإذن مطلوب
\nللفتح في وضع النافذة المنبثقة</string>
<string name="reCaptchaActivity">اختبار reCAPTCHA</string>
<string name="recaptcha">اختبار reCAPTCHA</string>
<string name="settings_file_charset_title">السماح بالرموز في أسماء الملفات</string>
<string name="settings_file_replacement_character_summary">يتم استبدال الرموز غير المسموح بها بهذه القيمة</string>
<string name="settings_file_replacement_character_title">استبدال الحرف</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>
@ -235,23 +235,23 @@
<string name="play_queue_audio_settings">الإعدادات الصوتية</string>
<string name="start_here_on_main">تشغيل هنا</string>
<string name="start_here_on_popup">بدأ التشغيل في نافذة منبثقة جديدة</string>
<string name="reCaptcha_title">تحدي الكابتشا</string>
<string name="title_activity_recaptcha">تحدي الكابتشا</string>
<string name="hold_to_append">ضغط مطول للإدراج الى قائمة الانتظار</string>
<plurals name="views">
<item quantity="zero">%s بدون مشهد</item>
<item quantity="one">%s شاهد</item>
<item quantity="two">%s مشاهدتان</item>
<item quantity="few">%s مشاهدات</item>
<item quantity="many">%s مشاهدون</item>
<item quantity="other">%s شاهدو</item>
<item quantity="zero">%s بدون مشهادة</item>
<item quantity="one">%s مشاهدة</item>
<item quantity="two">%s مشاهدة</item>
<item quantity="few">%s مشاهدة</item>
<item quantity="many">%s مشاهدة</item>
<item quantity="other">%s مشاهدة</item>
</plurals>
<plurals name="videos">
<item quantity="zero">فيديوهات</item>
<item quantity="one">فيديوهات</item>
<item quantity="two">فيديوهات</item>
<item quantity="few">فيديوهات</item>
<item quantity="many">فيديوهات</item>
<item quantity="other">فيديوهات</item>
<item quantity="zero">%s فيديو</item>
<item quantity="one">%s أشرطة فيديو</item>
<item quantity="two">%s أشرطة فيديو</item>
<item quantity="few">%s أشرطة فيديو</item>
<item quantity="many">%s أشرطة فيديو</item>
<item quantity="other">%s أشرطة فيديو</item>
</plurals>
<string name="recaptcha_request_toast">طلب اختبار الكابتشا مطلوب</string>
<string name="copyright" formatted="true">© %1$sبواسطة%2$sتحت%3$s</string>
@ -425,7 +425,7 @@
<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="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>
@ -449,7 +449,7 @@
<string name="paused">متوقف</string>
<string name="queued">في قائمة الانتظار</string>
<string name="post_processing">قيد المعالجة</string>
<string name="enqueue">قائمه انتظار</string>
<string name="enqueue">طابور</string>
<string name="permission_denied">تم رفضها من قبل النظام</string>
<string name="download_failed">فشل التنزيل</string>
<string name="download_finished">تم الانتهاء من التحميل</string>
@ -504,7 +504,7 @@
<string name="error_insufficient_storage">لم يتبقى مساحة في الجهاز</string>
<string name="error_progress_lost">تم فقد التقدم بسبب حذف الملف</string>
<string name="error_timeout">انتهى وقت الاتصال</string>
<string name="confirm_prompt">هل أنت واثق؟</string>
<string name="confirm_prompt">هل تريد محو سجل التنزيل أو حذف جميع الملفات التي تم تنزيلها؟</string>
<string name="enable_queue_limit">حد قائمة انتظار التنزيل</string>
<string name="enable_queue_limit_desc">سيتم تشغيل تنزيل واحد في نفس الوقت</string>
<string name="start_downloads">بدء التنزيلات</string>
@ -542,11 +542,11 @@
</plurals>
<string name="seek_duration_title">تسريع إلى الأمام/-ترجيع وقت البحث</string>
<string name="peertube_instance_url_title">مثيلات خوادم پيرتيوب</string>
<string name="peertube_instance_url_summary">عيّن مثيلات خوادم پيرتيوب التي تُفضّلها</string>
<string name="peertube_instance_url_summary">حدد مثيلات PeerTube المفضلة لديك</string>
<string name="peertube_instance_add_title">إضافة نموذج</string>
<string name="peertube_instance_add_help">أدخل رابط مثيل الخادم</string>
<string name="peertube_instance_add_fail">فشل في التحقق من مثيل الخادم</string>
<string name="peertube_instance_add_https_only">فقط عناوين https المدعومة</string>
<string name="peertube_instance_add_help">أدخل عنوان URL للمثيل</string>
<string name="peertube_instance_add_fail">لا يمكن التحقق من صحة المثال</string>
<string name="peertube_instance_add_https_only">يتم دعم عناوين URL HTTPS فقط</string>
<string name="peertube_instance_add_exists">مثيل الخادم موجود بالفعل</string>
<string name="local">محلي</string>
<string name="recently_added">أضيف مؤخرا</string>
@ -554,5 +554,16 @@
<string name="playlist_no_uploader">تم إنشاؤه-تلقائيًا (لم يتم العثور على برنامج تحميل)</string>
<string name="recovering">استرد</string>
<string name="error_download_resource_gone">لا يمكن استرداد هذا التنزيل</string>
<string name="choose_instance_prompt">اختيار مثيل خادم</string>
<string name="choose_instance_prompt">اختيار مثيل</string>
<string name="peertube_instance_url_help">ابحث عن الحالات التي تناسبك على %s</string>
<string name="enable_lock_screen_video_thumbnail_title">تمكين قفل شاشة الصور المصغرة الفيديو</string>
<string name="enable_lock_screen_video_thumbnail_summary">عند استخدام مشغل الخلفية ، سيتم عرض صورة مصغرة للفيديو على شاشة القفل</string>
<string name="clear_download_history">تنظيف تاريخ التحميل</string>
<string name="delete_downloaded_files">حذف الملفات التي تم تنزيلها</string>
<string name="deleted_downloads">التنزيلات %1$s المحذوفة</string>
<string name="permission_display_over_apps">إعطاء إذن لعرضه على التطبيقات الأخرى</string>
<string name="app_language_title">لغة التطبيق</string>
<string name="systems_language">النظام الافتراضي</string>
<string name="subtitle_activity_recaptcha">اضغط على \"تم\" عند حلها</string>
<string name="recaptcha_done_button">منجز</string>
</resources>

View File

@ -58,8 +58,8 @@
<string name="short_billion">Mil mill.</string>
<string name="msg_popup_permission">Precísase esti permisu
\np\'abrir nel mou ventanu</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
<string name="reCaptcha_title">Retu de reCAPTCHA</string>
<string name="recaptcha">reCAPTCHA</string>
<string name="title_activity_recaptcha">Retu de reCAPTCHA</string>
<string name="recaptcha_request_toast">Solicitóse\'l retu de reCAPTCHA</string>
<string name="controls_background_title">En segundu planu</string>
<string name="controls_popup_title">Ventanu</string>

View File

@ -6,7 +6,7 @@
<string name="open_in_browser">在浏览器中打开</string>
<string name="open_in_popup_mode">在悬浮窗模式下打开</string>
<string name="did_you_mean">您是不是要找:%1$s</string>
<string name="no_player_found_toast">找不到串流播放器 (您可以安裝并使用VLC播放)。</string>
<string name="no_player_found_toast">找不到串流播放器 (您可以安装 VLC 进行播放)。</string>
<string name="controls_download_desc">下载串流文件</string>
<string name="install">安装</string>
<string name="cancel">取消</string>
@ -16,7 +16,7 @@
<string name="settings">设置</string>
<string name="share_dialog_title">分享给...</string>
<string name="choose_browser">选择浏览器</string>
<string name="download_path_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_summary">已下载的音频存储在这里</string>
@ -42,7 +42,7 @@
<item quantity="other"/>
</plurals>
<string name="disabled">禁用</string>
<string name="controls_background_title">背景</string>
<string name="controls_background_title">后台播放</string>
<string name="filter">过滤器</string>
<string name="refresh">刷新</string>
<string name="show_search_suggestions_title">搜索建议</string>
@ -110,7 +110,7 @@
<string name="msg_running_detail">点击了解详情</string>
<string name="msg_wait">请稍候…</string>
<string name="msg_copied">复制至剪贴板</string>
<string name="reCaptchaActivity">reCAPTCHA验证码</string>
<string name="recaptcha">reCAPTCHA验证码</string>
<string name="controls_popup_title">悬浮窗播放</string>
<string name="title_activity_about">关于NewPipe</string>
<string name="action_settings">设置</string>
@ -130,7 +130,7 @@
<string name="search_no_results">没有结果</string>
<string name="no_subscribers">没有订阅者</string>
<plurals name="subscribers">
<item quantity="one">%s订阅者</item>
<item quantity="one">%s订阅者</item>
<item quantity="other"/>
</plurals>
<string name="no_videos">没有视频</string>
@ -148,7 +148,7 @@
<string name="missions_header_pending">等待中…</string>
<string name="paused">已暂停</string>
<string name="queued">排队中</string>
<string name="enqueue">加入队列</string>
<string name="enqueue">加入队列</string>
<string name="permission_denied">操作已被系统拒绝</string>
<string name="download_failed">下载失败</string>
<string name="download_finished">下载完成</string>
@ -157,8 +157,8 @@
<string name="drawer_header_description">切换服务,当前选择:</string>
<string name="no_player_found">找不到串流播放器。您想安装 VLC 吗?</string>
<string name="screen_rotation">旋转</string>
<string name="use_external_video_player_title">使用第三方视频播放器</string>
<string name="use_external_audio_player_title">使用第三方视频播放器</string>
<string name="use_external_video_player_title">使用外部视频播放器</string>
<string name="use_external_audio_player_title">使用外部音频播放器</string>
<string name="download_path_audio_title">音频下载文件夹</string>
<string name="autoplay_by_calling_app_summary">从其他应用调用 NewPipe 时播放视频</string>
<string name="default_resolution_title">默认分辨率</string>
@ -207,9 +207,9 @@
<string name="no_available_dir">请稍后在设置中设定下载目录</string>
<string name="msg_popup_permission">用悬浮窗模式
\n需要此权限</string>
<string name="reCaptcha_title">reCAPTCHA验证</string>
<string name="title_activity_recaptcha">reCAPTCHA验证</string>
<string name="recaptcha_request_toast">请求的新的CAPTCHA验证</string>
<string name="popup_mode_share_menu_title">NewPipe悬浮窗模式</string>
<string name="popup_mode_share_menu_title">NewPipe 悬浮窗模式</string>
<string name="popup_playing_toast">在悬浮窗中播放</string>
<string name="default_popup_resolution_title">默认悬浮窗分辨率</string>
<string name="show_higher_resolutions_title">使用更高的分辨率</string>
@ -219,7 +219,7 @@
<string name="popup_remember_size_pos_summary">记住最后一次使用悬浮窗的大小和位置</string>
<string name="settings_category_popup_title">悬浮窗</string>
<string name="popup_resizing_indicator_title">调整大小</string>
<string name="use_external_video_player_summary">删除“某些”分辨率的音频</string>
<string name="use_external_video_player_summary">隐藏部分没有音频的分辨率</string>
<string name="player_gesture_controls_title">播放器手势控制</string>
<string name="player_gesture_controls_summary">使用手势控制播放器的亮度和音量</string>
<string name="show_search_suggestions_summary">显示搜索建议</string>
@ -234,9 +234,9 @@
<string name="channel_unsubscribed">取消订阅频道</string>
<string name="subscription_change_failed">无法修改订阅</string>
<string name="subscription_update_failed">无法更新订阅</string>
<string name="tab_main">主页</string>
<string name="tab_main">主页</string>
<string name="tab_subscriptions">订阅</string>
<string name="fragment_whats_new">增功能</string>
<string name="fragment_whats_new"></string>
<string name="resume_on_audio_focus_gain_title">恢复前台焦点</string>
<string name="resume_on_audio_focus_gain_summary">中断后继续播放(例如突然来电后)</string>
<string name="enable_search_history_title">搜索历史记录</string>
@ -321,7 +321,7 @@
<string name="could_not_import_all_files">警告:无法导入所有文件。</string>
<string name="override_current_data">这将覆盖当前设置。</string>
<string name="show_info">显示信息</string>
<string name="tab_bookmarks">已收藏</string>
<string name="tab_bookmarks">书签</string>
<string name="delete_stream_history_prompt">确定要从观看历史记录中删除该项吗?</string>
<string name="delete_all_history_prompt">是否确实要从历史记录中删除所有项目?</string>
<string name="title_last_played">最后播放</string>
@ -410,13 +410,13 @@
<string name="privacy_policy_encouragement">NewPipe 项目非常重视您的隐私。因此,未经您的同意,应用程序不会收集任何数据。
\nNewPipe 的隐私政策详细解释了在发送崩溃报告时发送和存储的数据。</string>
<string name="read_privacy_policy">阅读隐私政策</string>
<string name="start_accept_privacy_policy">为了遵守欧洲一般数据保护条例 GDPR我们提请您注意 NewPipe 的隐私政策。请仔细阅读。
\n您必须接受它才能向我们发送错误报告。</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="minimize_on_exit_title">切换应用时最小化</string>
<string name="minimize_on_exit_title">退出应用时最小化</string>
<string name="minimize_on_exit_summary">从主播放器切换到其他应用时的操作 - %s</string>
<string name="skip_silence_checkbox">静音时快进</string>
<string name="playback_step">滑块[比例尺]</string>
@ -487,7 +487,7 @@
<string name="error_insufficient_storage">设备上没有剩余储存空间</string>
<string name="error_progress_lost">进度丢失,文件已被删除</string>
<string name="error_timeout">连接超时</string>
<string name="confirm_prompt">你确定吗</string>
<string name="confirm_prompt">是否要清除下载历史记录或删除所有下载的文件</string>
<string name="enable_queue_limit">最大下载队列</string>
<string name="enable_queue_limit_desc">同时只允许一个下载进行</string>
<string name="start_downloads">开始下载</string>
@ -504,24 +504,24 @@
<string name="delete_playback_states_alert">删除所有播放位置记录?</string>
<string name="download_choose_new_path">更改下载目录让内容生效</string>
<string name="default_kiosk_page_summary">『时下流行』页-默认</string>
<string name="no_one_watching">无人在线观看</string>
<string name="no_one_watching">没有人在观看</string>
<plurals name="watching">
<item quantity="one">%s 人在观看</item>
<item quantity="other"/>
</plurals>
<string name="no_one_listening">没人在听</string>
<string name="no_one_listening">人在听</string>
<plurals name="listening">
<item quantity="one">s 人在听</item>
<item quantity="other"></item>
<item quantity="other"/>
</plurals>
<string name="localization_changes_requires_app_restart">重新启动应用后,语言将更改。</string>
<string name="peertube_instance_url_title">PeerTube 服务器</string>
<string name="peertube_instance_url_summary">设置自己喜欢的peertube服务器</string>
<string name="peertube_instance_url_help">查找最适合你的服务器https://joinpeertube.org/instances#instances-list</string>
<string name="peertube_instance_url_summary">设置自己喜欢的PeerTube服务器</string>
<string name="peertube_instance_url_help">查找最适合你的服务器%s</string>
<string name="peertube_instance_add_title">添加服务器</string>
<string name="peertube_instance_add_help">输入服务器网址</string>
<string name="peertube_instance_add_help">输入服务器网址(URL)</string>
<string name="peertube_instance_add_fail">无法验证服务器</string>
<string name="peertube_instance_add_https_only">仅支持 https URL</string>
<string name="peertube_instance_add_https_only">仅支持 HTTPS和URL</string>
<string name="peertube_instance_add_exists">该服务器已存在</string>
<string name="local">本地</string>
<string name="recently_added">最近添加</string>
@ -531,4 +531,9 @@
<string name="error_download_resource_gone">无法恢复此下载</string>
<string name="choose_instance_prompt">选择一个服务器</string>
<string name="seek_duration_title">快进 / 快退的单位时间</string>
<string name="enable_lock_screen_video_thumbnail_title">在锁屏上显示视频缩略图</string>
<string name="enable_lock_screen_video_thumbnail_summary">在后台播放时,锁屏上将会显示视频的缩略图</string>
<string name="clear_download_history">清除下载历史记录</string>
<string name="delete_downloaded_files">删除下载了的文件</string>
<string name="deleted_downloads">已删除 %1$s 下载</string>
</resources>

View File

@ -247,8 +247,8 @@
<string name="msg_popup_permission">Гэтае разрозненне трэба для
\nпрайгравання ў акне</string>
<string name="one_item_deleted">1 элемент выдалены.</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
<string name="reCaptcha_title">Запыт reCAPTCHA</string>
<string name="recaptcha">reCAPTCHA</string>
<string name="title_activity_recaptcha">Запыт reCAPTCHA</string>
<string name="recaptcha_request_toast">Запытаны ўвод reCAPTCHA</string>
<string name="settings_category_downloads_title">Загрузкі</string>
<string name="settings_file_charset_title">Дапушчальныя сімвалы назвы файлаў</string>

View File

@ -269,8 +269,8 @@
<string name="msg_popup_permission">Това разрешение се изисква за
\nвъзпроизвеждане в отделен прозорец</string>
<string name="one_item_deleted">1 елемент е изтрит.</string>
<string name="reCaptchaActivity">преКАПЧА</string>
<string name="reCaptcha_title">reCAPTCHA заявка</string>
<string name="recaptcha">преКАПЧА</string>
<string name="title_activity_recaptcha">reCAPTCHA заявка</string>
<string name="recaptcha_request_toast">Изисква се въвеждане на reCAPTCHA</string>
<string name="settings_category_downloads_title">Изтегляне</string>
<string name="charset_most_special_characters">Повечето специални символи</string>

View File

@ -145,8 +145,8 @@
<!-- Checksum types -->
<!-- <string name="md5" translatable="false">MD5</string> -->
<!-- <string name="sha1" translatable="false">SHA1</string> -->
<string name="reCaptchaActivity">রিক্যাপচা</string>
<string name="reCaptcha_title">reCAPTCHA চ্যালেঞ্জ</string>
<string name="recaptcha">রিক্যাপচা</string>
<string name="title_activity_recaptcha">reCAPTCHA চ্যালেঞ্জ</string>
<string name="recaptcha_request_toast">reCAPTCHA চ্যালেঞ্জ অনুরোধ করা হয়েছে</string>
<!-- End of GigaGet's Strings -->
<string name="info_labels">কি:\\nঅনুরোধ:\\nকন্টেন্ট ভাষা:\\nসার্ভিস:\\nসময়(GMT এ):\\nপ্যাকেজ:\\nসংস্করণ:\\nওএস সংস্করণ:\\nআইপি পরিসর:</string>

View File

@ -67,7 +67,7 @@
<string name="finish">D\'acord</string>
<string name="msg_name">Nom de fitxer</string>
<string name="msg_error">Error</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
<string name="recaptcha">reCAPTCHA</string>
<string name="settings_category_downloads_title">Baixades</string>
<string name="action_settings">Paràmetres</string>
<string name="action_about">Quant a</string>
@ -307,7 +307,7 @@
<string name="msg_running_detail">Feu un toc aquí per a més detalls</string>
<string name="no_available_dir">Defineix una carpeta de baixades més endavant als paràmetres</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="title_activity_recaptcha">Camp reCAPTCHA</string>
<string name="recaptcha_request_toast">S\'ha sol·licitat l\'emplenament d\'un camp reCAPTCHA</string>
<string name="settings_file_replacement_character_summary">Se substituiran els caràcters no vàlids amb aquest valor</string>
<string name="settings_file_replacement_character_title">Caràcter de substitució</string>

View File

@ -1,504 +0,0 @@
<?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_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="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="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">NewPipes被其它程序调用时播放视频</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 媒体中心播放视频的选项</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="thumbnail_cache_wipe_complete_notice">已清除图像缓存</string>
<string name="minimize_on_exit_popup_description">最小化悬浮窗播放器</string>
<string name="clear_views_history_title">清除观看历史</string>
<string name="search_history_deleted">搜索记录已删除。</string>
<string name="general_error">错误</string>
<string name="network_error">网络错误</string>
<string name="report_error">举报错误</string>
<string name="search_no_results">没有结果</string>
<string name="start">开始</string>
<string name="pause">暂停</string>
<string name="view">播放</string>
<string name="create">创建</string>
<string name="delete">删除</string>
<string name="delete_all">删除所有</string>
<string name="add">新任务</string>
<string name="finish">
\n</string>
<string name="msg_error">错误
\n</string>
<string name="msg_server_unsupported">不支持的服务器</string>
<string name="msg_exists">文件已存在</string>
<string name="msg_running">NewPipe 下载中</string>
<string name="msg_wait">请稍等…</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="action_open_website">打开网页</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="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="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="use_inexact_seek_title">使用快速粗略定位</string>
<string name="use_inexact_seek_summary">粗略定位功能允许播放器以略低的精确度为代价换取更快的定位速度</string>
<string name="download_thumbnail_title">下载缩略图</string>
<string name="metadata_cache_wipe_title">清除缓存的元数据</string>
<string name="metadata_cache_wipe_summary">移除所有缓存的网页数据</string>
<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="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_title">取得视窗焦点时继续播放</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">显示「长按以新增」的提示</string>
<string name="show_hold_to_append_summary">在视频详细信息页按下后台播放或悬浮窗按钮时提示</string>
<string name="url_not_supported_toast">不支持该网址</string>
<string name="default_content_country_title">默认内容的国家</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">历史记录和缓存数据</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">内容</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>
<string name="tracks">曲目</string>
<string name="users">用户</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="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">切换方向</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_summary">删除播放过的媒体的历史记录及回放位置</string>
<string name="delete_view_history_alert">确定要清除所有观看历史记录吗?</string>
<string name="watch_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="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="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">应用程序或界面出现崩溃了</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">无效的网址</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="sorry_string">抱歉,这不应该发生的。</string>
<string name="error_report_button_text">通过电子邮件报告错误</string>
<string name="error_snackbar_message">抱歉,发生了一些错误。</string>
<string name="error_snackbar_action">报告</string>
<string name="what_device_headline">信息:</string>
<string name="what_happened_headline">发生了什么:</string>
<string name="info_labels">事件:\\n请求\\n内容语言\\n服务\\nGMT 时间:\\n组件\\n版本\\n系统版本</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="user_report">用户报告</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="one">%s 位订阅者</item>
<item quantity="other"/>
</plurals>
<string name="no_views">无观看次数</string>
<plurals name="views">
<item quantity="one">%s 次观看</item>
<item quantity="other"/>
</plurals>
<string name="no_videos">没有视频</string>
<string name="delete_one">删除</string>
<string name="checksum">校验</string>
<string name="dismiss">退出</string>
<string name="rename">重命名</string>
<string name="msg_name">文件名</string>
<string name="msg_threads">线程</string>
<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="msg_popup_permission">在悬浮窗模式打开
\n需要此权限</string>
<string name="one_item_deleted">已删除一个项目。</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">无效字符将替换为该值</string>
<string name="settings_file_replacement_character_title">替换字符</string>
<string name="copyright" formatted="true">© %1$s 由 %2$s 使用 %3$s 版权所有</string>
<string name="error_unable_to_load_license">无法加载许可证</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">您是否有想法帮助我们:翻译、界面设计、代码优化以及真正繁重的功能扩展 - 我们随时欢迎您提供帮助。让 NewPipe 越变越好!</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="privacy_policy_title">NewPipe 的隐私政策</string>
<string name="privacy_policy_encouragement">NewPipe 项目是非常重视您的隐私。因此,未经您的同意,该应用程序不会收集任何数据。
\nNewPipe 的隐私政策详细说明了当您发送崩溃报告时,什么资料会被传送及储存。</string>
<string name="read_privacy_policy">阅读隐私政策</string>
<string name="app_license_title">NewPipe 的许可证</string>
<string name="app_license">NewPipe 是一个 Copyleft 的自由软件:您可以随意使用、研究、分享或改进它。在遵守由自由软件基金会所发布的 GNU 通用公共授权条款的状况下,您可以自由地再发布或修改它;授权条款预设使用第三版,但您也可以选择更新的版本。</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">互动页面</string>
<string name="subscription_page_summary">订阅页面</string>
<string name="feed_page_summary">Feed 页面</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">选择一个互动</string>
<string name="export_complete_toast">输出</string>
<string name="import_complete_toast">接入</string>
<string name="no_valid_zip_file">无效的压缩文件</string>
<string name="could_not_import_all_files">警告:无法导入所有文件。</string>
<string name="override_current_data">这将覆盖您当前的设定。</string>
<string name="import_settings">您是否要导入设定?</string>
<string name="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">打开抽屉</string>
<string name="drawer_close">关闭抽屉</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="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="enable_disposed_exceptions_title">报告活动周期外错误</string>
<string name="enable_disposed_exceptions_summary">强制报告在处理完片段或活动周期外发生的无法传递的 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">通过下载导出文件来导入 YouTube 订阅:
\n
\n1.移至该网址:%1$s
\n2.当被询问时登入帐号
\n3.应该开始下载(这是导出文件)</string>
<string name="import_soundcloud_instructions">通过输入 URL 或 ID 来导入 SoundCloud的配置文件
\n
\n1.在浏览器中启用「桌面模式」(该网站不适用于移动设备)
\n2.移至该网址:%1$s
\n3.当被询问时登入帐号
\n4.复制您重定向的配置文件到网址。</string>
<string name="import_soundcloud_instructions_hint">您的 IDsoundcloud.com/yourid</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="unsubscribe">退订</string>
<string name="tab_new">新标签</string>
<string name="tab_choose">选择标签</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="content_language_title">默认的内容语言</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="restore_defaults">恢复默认</string>
<string name="restore_defaults_confirmation">您真的要恢复至默认吗?</string>
<string name="selection">选择</string>
<string name="updates_setting_title">升级</string>
<string name="list">列表</string>
<string name="auto">自动</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">后处理</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_finished_warning">同名的已下载文件已经存在</string>
<string name="download_already_running">同名下载进行中</string>
<string name="show_error">显示错误</string>
<string name="label_code">代码</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_not_found">找不到</string>
<string name="error_postprocessing_failed">后处理失败</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="events">事件</string>
<string name="saved_tabs_invalid_json">使用默认选项卡, 读取保存的选项卡时出错</string>
<string name="subscribers_count_not_available">订阅者计数不可用</string>
<string name="main_page_content_summary">主页上显示的选项卡</string>
<string name="conferences">会议</string>
<string name="updates_setting_description">显示通知, 以便在新版本可用时提示应用更新</string>
<string name="list_view_mode">列表视图模式</string>
<string name="grid">网格</string>
<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="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>
<string name="downloads_storage_use_saf_title">使用存储访问框架</string>
<string name="downloads_storage_use_saf_summary">存储访问框架(SAF)允许下载文件到外部SD卡。
\n注一些设备不兼容SAF</string>
<string name="clear_playback_states_title">删除回放位置</string>
<string name="clear_playback_states_summary">删除所有回放位置</string>
<string name="delete_playback_states_alert">删除所有的回放位置吗?</string>
<string name="download_choose_new_path">更改要生效的下载文件夹</string>
</resources>

View File

@ -64,7 +64,7 @@
<string name="video_is_age_restricted">Zobrazit video s věkovým omezením. Povolit tento obsah lze v \"Nastavení\".</string>
<string name="duration_live">ŽIVĚ</string>
<string name="light_parsing_error">Nebylo možné kompletně analyzovat stránku</string>
<string name="main_bg_subtitle">Začni stiskem hledat</string>
<string name="main_bg_subtitle">Začni klepnutím na hledat</string>
<string name="msg_copied">Zkopírováno do schránky</string>
<string name="msg_wait">Počkejte prosím…</string>
<string name="msg_running">NewPipe stahuje</string>
@ -102,8 +102,8 @@
<string name="view">Přehrát</string>
<string name="add">Nová mise</string>
<string name="finish">OK</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
<string name="reCaptcha_title">Výzva reCAPTCHA</string>
<string name="recaptcha">reCAPTCHA</string>
<string name="title_activity_recaptcha">Výzva reCAPTCHA</string>
<string name="recaptcha_request_toast">Požadována výzva reCAPTCHA</string>
<string name="black_theme_title">Černé</string>
<string name="checksum">Kontrolní součet</string>
@ -143,7 +143,7 @@ otevření ve vyskakovacím okně</string>
<string name="show_search_suggestions_summary">Zobrazovat návrhy při vyhledávání</string>
<string name="enable_search_history_title">Historie vyhledávání</string>
<string name="enable_search_history_summary">Hledané výrazy lokálně uchovávat</string>
<string name="enable_watch_history_title">Historie zhlédnutí</string>
<string name="enable_watch_history_title">Historie sledování</string>
<string name="enable_watch_history_summary">Evidovat zhlédnutá videa</string>
<string name="resume_on_audio_focus_gain_title">Přehrávat po přechodu do popředí</string>
<string name="resume_on_audio_focus_gain_summary">Pokračovat v přehrávání po přerušení (např. hovor)</string>
@ -319,7 +319,7 @@ otevření ve vyskakovacím okně</string>
<string name="enable_leak_canary_title">Povolit službu LeakCanary</string>
<string name="enable_leak_canary_summary">Monitoring úniku paměti může způsobit nereagování aplikace při heap dumpingu</string>
<string name="enable_disposed_exceptions_title">Nahlásit mimo-cyklické chyby</string>
<string name="enable_disposed_exceptions_summary">Vynutit vykazování výjimek Rx mimo fragment nebo životnost cyklu po odstranění</string>
<string name="enable_disposed_exceptions_summary">Vynutit hlášení nedoručitelných výjimek Rx mimo životnost fragmentu nebo aktivity po odstranění</string>
<string name="use_inexact_seek_title">Použít rychlé nepřesné hledání</string>
<string name="use_inexact_seek_summary">Nepřesné hledání umožní přehrávači posouvat se rychleji, ale se sníženou přesností</string>
<string name="download_thumbnail_title">Načítat náhledy</string>
@ -365,7 +365,7 @@ otevření ve vyskakovacím okně</string>
\n
\nChcete pokračovat?</string>
<string name="playback_speed_control">Ovládání rychlosti přehrávání</string>
<string name="playback_tempo">Rychlost</string>
<string name="playback_tempo">Tempo</string>
<string name="playback_pitch">Výška tónu</string>
<string name="unhook_checkbox">Rozpojit (může způsobit zkreslení)</string>
<string name="playback_default">Výchozí nastavení</string>
@ -483,8 +483,8 @@ otevření ve vyskakovacím okně</string>
<string name="close">Zavřít</string>
<string name="download_to_sdcard_error_message">Stahování na externí SD kartu není možné. Resetovat umístění složky pro stahování\?</string>
<string name="enable_playback_resume_title">Pokračovat v přehrávání</string>
<string name="enable_playback_resume_summary">Obnovit poslední přehrávanou pozici</string>
<string name="enable_playback_state_lists_title">Pořadí v seznamech</string>
<string name="enable_playback_resume_summary">Obnovit poslední pozici přehrávání</string>
<string name="enable_playback_state_lists_title">Pozice v seznamech</string>
<string name="settings_category_clear_data_title">Vymazat data</string>
<string name="missing_file">Soubor přemístěn nebo smazán</string>
<string name="overwrite_failed">soubor nelze přepsat</string>
@ -492,7 +492,7 @@ otevření ve vyskakovacím okně</string>
<string name="error_postprocessing_stopped">NewPipe byl ukončen v průběhu zpracovávání souboru</string>
<string name="error_insufficient_storage">V zařízení nezbývá žádné místo</string>
<string name="error_progress_lost">Postup ztracen, protože soubor byl smazán</string>
<string name="confirm_prompt">Jste si jisti\?</string>
<string name="confirm_prompt">Jste si jisti smazáním své historie stahování nebo smazáním všech stažených souborů\?</string>
<string name="enable_queue_limit">Omezit frontu stahování</string>
<string name="enable_queue_limit_desc">Najednou se bude stahovat pouze jeden soubor</string>
<string name="start_downloads">Začít stahování</string>
@ -504,7 +504,7 @@ otevření ve vyskakovacím okně</string>
<string name="downloads_storage_use_saf_title">Použít SAF</string>
<string name="downloads_storage_use_saf_summary">Storage Access Framework umožňuje stahovat na externí SD kartu.
\nUpozornění: některá zařízení jsou nekompatibilní</string>
<string name="enable_playback_state_lists_summary">Ukázat poziční indikátory playbacku v seznamech</string>
<string name="enable_playback_state_lists_summary">Zobrazit pozici přehrávání v seznamech</string>
<string name="watch_history_states_deleted">Pozice playbacku smazány.</string>
<string name="error_timeout">Timeout spojení</string>
<string name="clear_playback_states_title">Smazat pozice playbacku</string>
@ -526,4 +526,30 @@ otevření ve vyskakovacím okně</string>
</plurals>
<string name="localization_changes_requires_app_restart">Ke změně jazyka dojde po restartu aplikace.</string>
<string name="default_kiosk_page_summary">Výchozí kiosek</string>
<string name="seek_duration_title">Délka přetočení vpřed/zpět</string>
<string name="peertube_instance_url_title">Instance PeerTube</string>
<string name="peertube_instance_url_summary">Vybrat oblíbené instance PeerTube</string>
<string name="peertube_instance_url_help">Vyhledat nejvhodnější instance na %s</string>
<string name="peertube_instance_add_title">Přidat instanci</string>
<string name="peertube_instance_add_help">Zadat URL instance</string>
<string name="peertube_instance_add_fail">Instanci nebylo možno potvrdit</string>
<string name="peertube_instance_add_https_only">Podporujeme pouze URL s HTTPS</string>
<string name="peertube_instance_add_exists">Instance již existuje</string>
<string name="local">Místní</string>
<string name="recently_added">Přidány nedávno</string>
<string name="most_liked">Nejoblíbenější</string>
<string name="playlist_no_uploader">Autogenerovány (uploader nenalezen)</string>
<string name="recovering">obnovuji</string>
<string name="error_download_resource_gone">Toto stahování nelze obnovit</string>
<string name="choose_instance_prompt">Vyberte instanci</string>
<string name="enable_lock_screen_video_thumbnail_title">Zapnout náhled videa na zamknuté obrazovce</string>
<string name="enable_lock_screen_video_thumbnail_summary">Hraje-li video na pozadí, náhled videa se ukáže na zamknuté obrazovce</string>
<string name="clear_download_history">Smazat historii stahování</string>
<string name="delete_downloaded_files">Smazat stažené soubory</string>
<string name="deleted_downloads">Smazat %1$s stahování</string>
<string name="permission_display_over_apps">Souhlasit se zobrazením přes jiné aplikace</string>
<string name="app_language_title">Jazyk aplikace</string>
<string name="systems_language">Jazyk systému</string>
<string name="subtitle_activity_recaptcha">Po vyřešení stiskni \"Hotovo\"</string>
<string name="recaptcha_done_button">Hotovo</string>
</resources>

View File

@ -249,8 +249,8 @@
<string name="no_available_dir">Vælg venligst en tilgængelig downloadmappe</string>
<string name="msg_popup_permission">Denne tilladelse er nødvendig for at kunne åbne i pop op-tilstand</string>
<string name="one_item_deleted">1 element slettet.</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
<string name="reCaptcha_title">reCAPTCHA-udfordring</string>
<string name="recaptcha">reCAPTCHA</string>
<string name="title_activity_recaptcha">reCAPTCHA-udfordring</string>
<string name="recaptcha_request_toast">Der blev anmodet om en reCAPTCHA-udfordring</string>
<string name="settings_category_downloads_title">Download</string>
<string name="settings_file_charset_title">Tilladte tegn i filnavne</string>

View File

@ -14,7 +14,7 @@
<string name="did_you_mean">Meintest du: %1$s\?</string>
<string name="share_dialog_title">Teilen mit</string>
<string name="choose_browser">Browser auswählen</string>
<string name="screen_rotation">Drehen des Geräts</string>
<string name="screen_rotation">Bildschirm drehen</string>
<string name="download_path_title">Downloadordner für Videos</string>
<string name="download_path_summary">Heruntergeladene Videodateien werden hier gespeichert</string>
<string name="download_path_dialog_title">Wähle den Downloadordner für Videodateien aus</string>
@ -79,7 +79,7 @@
<string name="your_comment">Dein Kommentar (auf englisch):</string>
<string name="could_not_get_stream">Konnte keinen Stream abrufen</string>
<string name="autoplay_by_calling_app_title">Automatische Wiedergabe</string>
<string name="autoplay_by_calling_app_summary">Wiedergabe eines Videos, wenn NewPipe von einer anderen App aufgerufen wurde</string>
<string name="autoplay_by_calling_app_summary">Video abspielen, wenn NewPipe von einer anderen App aufgerufen wird</string>
<string name="report_error">Einen Fehler melden</string>
<string name="user_report">Anwenderbericht</string>
<string name="duration_live">LIVE</string>
@ -110,9 +110,9 @@
<string name="msg_running">NewPipe lädt herunter</string>
<string name="msg_running_detail">Für Details antippen</string>
<string name="msg_url_malform">Ungültige URL oder Internet nicht verfügbar</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
<string name="recaptcha">reCAPTCHA</string>
<string name="black_theme_title">Schwarz</string>
<string name="reCaptcha_title">reCAPTCHA-Aufgabe</string>
<string name="title_activity_recaptcha">reCAPTCHA-Aufgabe</string>
<string name="recaptcha_request_toast">reCAPTCHA-Aufgabe angefordert</string>
<string name="later">Später</string>
<string name="yes">Ja</string>
@ -123,7 +123,8 @@
<string name="default_video_format_title">Bevorzugtes Videoformat</string>
<string name="popup_playing_toast">Im Pop-up Modus abspielen</string>
<string name="popup_mode_share_menu_title">NewPipe-Pop-up-Modus</string>
<string name="msg_popup_permission">Diese Berechtigung ist für das Öffnen im Pop-up-Modus erforderlich</string>
<string name="msg_popup_permission">Diese Berechtigung ist für das
\nÖffnen im Pop-up-Modus erforderlich</string>
<string name="default_popup_resolution_title">Standardauflösung des Pop-ups</string>
<string name="show_higher_resolutions_title">Höhere Auflösungen anzeigen</string>
<string name="show_higher_resolutions_summary">Nur manche Geräte unterstützen das Abspielen von 2K-/4K-Videos</string>
@ -154,7 +155,7 @@
<string name="tab_about">Über</string>
<string name="app_description">Freies und schlankes Streaming für Android.</string>
<string name="app_license_title">NewPipes Lizenz</string>
<string name="contribution_encouragement">Ob Ideen, Übersetzungen, Design-Änderungen, Code-Aufräumung oder richtig große Code-Änderungen Hilfe ist immer willkommen. Je mehr geholfen wird, desto besser wird NewPipe!</string>
<string name="contribution_encouragement">Ob Ideen, Übersetzungen, Design-Änderungen, Code-Aufräumung oder richtig große Code-Änderungen Hilfe ist immer willkommen. Je mehr geholfen wird, desto besser wird NewPipe!</string>
<string name="title_licenses">Drittanbieter-Lizenzen</string>
<string name="view_on_github">Auf GitHub ansehen</string>
<string name="contribution_title">Beitragen</string>
@ -202,8 +203,8 @@
</plurals>
<string name="no_videos">Keine Videos</string>
<plurals name="videos">
<item quantity="one">Video</item>
<item quantity="other">Videos</item>
<item quantity="one">%s Video</item>
<item quantity="other">%s Videos</item>
</plurals>
<string name="charset_most_special_characters">Die meisten Sonderzeichen</string>
<string name="item_deleted">Element gelöscht</string>
@ -278,7 +279,7 @@
<string name="override_current_data">Dies wird deine aktuellen Einstellungen überschreiben.</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="controls_add_to_playlist_title">Hinzufügen</string>
<string name="detail_drag_description">Zum Neuordnen ziehen</string>
<string name="create">Erstellen</string>
<string name="delete_one">Einen löschen</string>
@ -365,7 +366,7 @@
<string name="import_soundcloud_instructions_hint">yourID, soundcloud.com/yourid</string>
<string name="no_streams_available_download">Keine Streams zum Download verfügbar</string>
<string name="preferred_open_action_settings_title">Bevorzugte \"Öffnen\" Aktion</string>
<string name="preferred_open_action_settings_summary">Standardaktion beim Öffnen von Inhalten - %s</string>
<string name="preferred_open_action_settings_summary">Standardaktion beim Öffnen von Inhalten %s</string>
<string name="caption_setting_title">Untertitel</string>
<string name="caption_setting_description">Textgröße und Hintergrund der Untertitel im Player anpassen. Wird erst nach Neustart der App wirksam.</string>
<string name="toast_no_player">Keine App zum Abspielen dieser Datei installiert</string>
@ -391,11 +392,11 @@
<string name="limit_data_usage_none_description">Unbegrenzt</string>
<string name="limit_mobile_data_usage_title">Auflösung bei Verwendung mobiler Daten begrenzen</string>
<string name="minimize_on_exit_title">Minimieren beim Appwechsel</string>
<string name="minimize_on_exit_summary">Aktion beim Umschalten auf eine andere App vom Haupt-Videoplayer - %s</string>
<string name="minimize_on_exit_summary">Aktion beim Umschalten auf eine andere App vom Haupt-Videoplayer %s</string>
<string name="minimize_on_exit_none_description">Keine</string>
<string name="minimize_on_exit_background_description">Zum Hintergrund-Player minimieren</string>
<string name="minimize_on_exit_popup_description">Zum Popup-Player minimieren</string>
<string name="skip_silence_checkbox">Vorspulen während der Stille</string>
<string name="skip_silence_checkbox">Vorspulen bei Stille</string>
<string name="playback_step">Schritt</string>
<string name="playback_reset">Zurücksetzen</string>
<string name="channels">Kanäle</string>
@ -483,20 +484,20 @@
<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="overwrite_failed">Datei kann nicht überschrieben werden</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="confirm_prompt">Möchtest du deinen Downloadverlauf oder alle heruntergeladenen Dateien löschen\?</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>
<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>
<string name="downloads_storage_use_saf_title">SAF verwenden</string>
<string name="downloads_storage_use_saf_summary">Das Storage Access Framework erlaubt Downloads auf eine externe SD-Karte.
\nHinweis: Manche Geräte sind nicht kompatibel</string>
@ -505,7 +506,7 @@
<string name="delete_playback_states_alert">Alle Wiedergabepositionen löschen\?</string>
<string name="download_choose_new_path">Ändere die Downloadordner, damit sie wirksam werden</string>
<string name="drawer_header_description">Dienst umschalten, aktuell ausgewählt:</string>
<string name="default_kiosk_page_summary">Quiosque Predefinido</string>
<string name="default_kiosk_page_summary">Standard-Kiosk</string>
<string name="no_one_watching">Niemand schaut zu</string>
<plurals name="watching">
<item quantity="one">%s Zuschauer</item>
@ -518,19 +519,29 @@
</plurals>
<string name="localization_changes_requires_app_restart">Die Sprache ändert sich, sobald die App neu gestartet wird.</string>
<string name="peertube_instance_url_title">PeerTube-Instanzen</string>
<string name="peertube_instance_url_help">Finde auf https://joinpeertube.org/instances#instances-list die Instanzen, die am besten zu dir passen</string>
<string name="peertube_instance_url_help">Finde auf %s die Instanzen, die am besten zu dir passen</string>
<string name="peertube_instance_add_title">Instanz hinzufügen</string>
<string name="peertube_instance_add_help">Gib die URL der Instanz ein</string>
<string name="peertube_instance_add_fail">Validieren der Instanz fehlgeschlagen</string>
<string name="peertube_instance_add_exists">Diese Instanz existiert bereits</string>
<string name="peertube_instance_add_help">URL der Instanz eingeben</string>
<string name="peertube_instance_add_fail">Validierung der Instanz fehlgeschlagen</string>
<string name="peertube_instance_add_exists">Instanz existiert bereits</string>
<string name="local">Lokal</string>
<string name="recently_added">Kürzlich hinzugefügt</string>
<string name="playlist_no_uploader">Auto-generiert (kein Uploader gefunden)</string>
<string name="choose_instance_prompt">Wähle eine Instanz</string>
<string name="peertube_instance_url_summary">Bevorzugte Peertube-Instanzen festlegen</string>
<string name="peertube_instance_add_https_only">Es werden nur https-Adressen unterstützt</string>
<string name="peertube_instance_url_summary">Bevorzugte Peertube-Instanzen auswählen</string>
<string name="peertube_instance_add_https_only">Es werden nur HTTPS-Adressen unterstützt</string>
<string name="seek_duration_title">Dauer der Suche bei schnellem Vor-/Zurückspulen</string>
<string name="most_liked">Am beliebtesten</string>
<string name="recovering">Wiederherstellen</string>
<string name="error_download_resource_gone">Dieser Download kann nicht wiederhergestellt werden</string>
<string name="enable_lock_screen_video_thumbnail_title">Video-Vorschaubild für Sperrbildschirm aktivieren</string>
<string name="enable_lock_screen_video_thumbnail_summary">Bei Verwendung des Hintergrundplayers wird ein Video-Miniaturbild auf dem Sperrbildschirm angezeigt</string>
<string name="clear_download_history">Downloadverlauf löschen</string>
<string name="delete_downloaded_files">Heruntergeladene Dateien löschen</string>
<string name="deleted_downloads">%1$s Downloads gelöscht</string>
<string name="permission_display_over_apps">Berechtigung zur Anzeige über andere Apps erteilen</string>
<string name="app_language_title">Sprache der App</string>
<string name="systems_language">Systemstandard</string>
<string name="subtitle_activity_recaptcha">\"Fertig\" drücken, wenn es gelöst wurde</string>
<string name="recaptcha_done_button">Fertig</string>
</resources>

View File

@ -251,8 +251,8 @@
<string name="msg_popup_permission">Αυτή η άδεια είναι απαραίτητη για
\nτο άνοιγμα αναδυόμενων παραθύρων</string>
<string name="one_item_deleted">1 αντικείμενο διαγράφηκε.</string>
<string name="reCaptchaActivity">Αυτόματο τεστ</string>
<string name="reCaptcha_title">Πρόκληση reCAPTCHA</string>
<string name="recaptcha">Αυτόματο τεστ</string>
<string name="title_activity_recaptcha">Πρόκληση reCAPTCHA</string>
<string name="recaptcha_request_toast">Ζητήθηκε πρόκληση reCAPTCHA</string>
<string name="settings_file_charset_title">Επιτρεπόμενοι χαρακτήρες σε ονόματα αρχείων</string>
<string name="settings_file_replacement_character_summary">Οι μη έγκυροι χαρακτήρες αντικαθίστανται με αυτήν την τιμή</string>
@ -522,4 +522,6 @@
<string name="playlist_no_uploader">Δημιουργήθηκε αυτόματα (δεν βρέθηκε χρήστης μεταφόρτωσης)</string>
<string name="recovering">Ανάκτηση</string>
<string name="error_download_resource_gone">Δεν είναι δυνατή η ανάκτηση αυτής της λήψης</string>
<string name="enable_lock_screen_video_thumbnail_title">Ενεργοποίηση μικρογραφίας βίντεο στην οθόνη κλειδώματος</string>
<string name="enable_lock_screen_video_thumbnail_summary">Όταν χρησιμοποιείται αναπαραγωγή παρασκηνίου μια μικρογραφία βίντεο θα εμφανίζεται στην οθόνη κλειδώματος</string>
</resources>

View File

@ -4,20 +4,20 @@
<string name="upload_date_text">Eldonita je %1$s</string>
<string name="install">Instali</string>
<string name="cancel">Nuligi</string>
<string name="open_in_browser">Malfermi per krozilo</string>
<string name="open_in_browser">Malfermi en retumilo</string>
<string name="share">Konigi</string>
<string name="download">Elŝuti</string>
<string name="search">Serĉi</string>
<string name="settings">Agordoj</string>
<string name="did_you_mean">Ĉu vi signifis: %1$s\?</string>
<string name="share_dialog_title">Konigi kun</string>
<string name="choose_browser">Elekti krozilon</string>
<string name="choose_browser">Elekti retumilon</string>
<string name="screen_rotation">turno</string>
<string name="use_external_video_player_title">Uzi eksteran filmetoludilon</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">Legi per Kodi</string>
<string name="show_play_with_kodi_title">Montri \"Legi per Kodi\"-opcion</string>
<string name="default_resolution_title">Defaŭlta rezolucio</string>
<string name="play_with_kodi_title">Ludi per Kodi</string>
<string name="show_play_with_kodi_title">Montri \"Ludi per Kodi\"-opcion</string>
<string name="play_audio">Sono</string>
<string name="default_audio_format_title">Defaŭlta sondosierformo</string>
<string name="theme_title">Etoso</string>
@ -30,8 +30,8 @@
<string name="settings_category_video_audio_title">Filmeto kaj sono</string>
<string name="settings_category_appearance_title">Apero</string>
<string name="settings_category_other_title">Alia</string>
<string name="background_player_playing_toast">Ludado fone</string>
<string name="play_btn_text">Legi</string>
<string name="background_player_playing_toast">Ludanta fone</string>
<string name="play_btn_text">Ludi</string>
<string name="general_error">Eraro</string>
<string name="network_error">Reteraro</string>
<string name="content_not_available">Enhavo malhavebla</string>
@ -41,12 +41,12 @@
<string name="no_player_found">Neniu elsendlflua ludilo trovita. Ĉu vi volas instali la aplikaĵon VLC\?</string>
<string name="kore_not_found">La aplikaĵo Kore ne estas trovita. Ĉu instali ĝin?</string>
<string name="show_next_and_similar_title">Montri la sekvan filmeton kaj similajn filmetojn</string>
<string name="could_not_load_thumbnails">Ĉiuj miniaturoj ne ŝargeblas</string>
<string name="could_not_load_thumbnails">Ĉiuj bildetoj ne ŝargeblas</string>
<string name="youtube_signature_decryption_error">La subskribo de la ligilo de la filmeto ne malĉifreblas</string>
<string name="parsing_error">La retejo ne analizeblas</string>
<string name="list_thumbnail_view_description">Miniaturo de la antaŭrigardo de la filmeto</string>
<string name="detail_thumbnail_view_description">Legi filmeton, daŭro:</string>
<string name="detail_uploader_thumbnail_view_description">Miniaturo de la bildo de la alŝutinto</string>
<string name="list_thumbnail_view_description">Bildeto de la antaŭrigardo de la filmeto</string>
<string name="detail_thumbnail_view_description">Ludi filmeton, daŭro:</string>
<string name="detail_uploader_thumbnail_view_description">Bildeto de la alŝutinto</string>
<string name="err_dir_create">La elŝutujo \'%1$s\' ne kreeblas</string>
<string name="info_dir_created">Elŝutujo \'%1$s\' kreita</string>
<string name="download_path_title">Elŝutujo por filmetoj</string>
@ -61,17 +61,17 @@
<string name="error_report_button_text">Signali eraron per retpoŝto</string>
<string name="error_snackbar_action">SIGNALI</string>
<string name="what_device_headline">Informoj:</string>
<string name="your_comment">Via komento (angle):</string>
<string name="your_comment">Vian komenton (angle):</string>
<string name="error_details_headline">Detaloj:</string>
<string name="report_error">Signali eraron</string>
<string name="video">Filmeto</string>
<string name="retry">Reprovi</string>
<string name="main_bg_subtitle">Premu serĉo por komenci</string>
<string name="main_bg_subtitle">Premi serĉon 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">Forigas aŭdion ĉe KELKAJ distingivoj</string>
<string name="popup_mode_share_menu_title">NewPipe ŝprucfenestron modon</string>
<string name="subscribe_button_title">Abonu</string>
<string name="open_in_popup_mode">Malfermi en ŝprucfenestran modon</string>
<string name="use_external_video_player_summary">Forigas aŭdon ĉe KELKAJ rezolucioj</string>
<string name="popup_mode_share_menu_title">NewPipe ŝprucfenestran modon</string>
<string name="subscribe_button_title">Aboni</string>
<string name="subscribed_button_title">Abonita</string>
<string name="channel_unsubscribed">Kanalo malabonita</string>
<string name="subscription_change_failed">Ne povis ŝanĝi abonon</string>
@ -86,13 +86,13 @@
<string name="controls_popup_title">Ŝprucfenestro</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">Legas filmeton kiam NewPipe vokas de alia programo</string>
<string name="default_popup_resolution_title">Defaŭlta distingivo de la ŝprucfenestro</string>
<string name="show_higher_resolutions_title">Montri pli altajn distingivojn</string>
<string name="show_higher_resolutions_summary">Nur kelkaj aparatoj subtenas legante 2K / 4K filmetojn</string>
<string name="autoplay_by_calling_app_summary">Ludas filmeton kiam NewPipe vokas el alia programo</string>
<string name="default_popup_resolution_title">Defaŭlta rezolucio de la ŝprucfenestra ludilo</string>
<string name="show_higher_resolutions_title">Montri pli altajn rezoluciojn</string>
<string name="show_higher_resolutions_summary">Nur kelkaj aparatoj subtenas ludi 2K / 4K filmetojn</string>
<string name="default_video_format_title">Defaŭlta fomato de filmeto</string>
<string name="black_theme_title">Nigra</string>
<string name="popup_remember_size_pos_title">Memoru ŝprucfenestron kaj pozicion</string>
<string name="popup_remember_size_pos_title">Memoru ŝprucfenestran grandecon kaj pozicion</string>
<string name="popup_remember_size_pos_summary">Memoru lastan grandecon kaj pozicion de ŝprucfenestro</string>
<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>
@ -109,8 +109,8 @@
<string name="error_report_title">Erarosignalo</string>
<string name="could_not_load_image">Ne povis ŝarĝi bildon</string>
<string name="app_ui_crash">Apo kraŝis</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
<string name="reCaptcha_title">reCAPTCHA defio</string>
<string name="recaptcha">reCAPTCHA</string>
<string name="title_activity_recaptcha">reCAPTCHA defio</string>
<string name="recaptcha_request_toast">reCAPTCHA defio petita</string>
<string name="all">Ĉiuj</string>
<string name="channel">Kanalo</string>
@ -120,10 +120,10 @@
</plurals>
<string name="yes">Jes</string>
<string name="later">Poste</string>
<string name="msg_popup_permission">Tiu permeso estas necesa por
\nmalfermi en ŝprucfenestro modo</string>
<string name="popup_playing_toast">Leganta en ŝprucfenestro modo</string>
<string name="disabled">Malaktiva</string>
<string name="msg_popup_permission">Tiu permeso estas necesa por
\nmalfermi en ŝprucfenestra modo</string>
<string name="popup_playing_toast">Ludante en ŝprucfenestra modo</string>
<string name="disabled">Malŝatitaj</string>
<string name="filter">Filtri</string>
<string name="refresh">Aktualigi</string>
<string name="clear">Forviŝi</string>
@ -133,19 +133,19 @@
<string name="player_gesture_controls_summary">Uzu gestojn por kontroli la brilon kaj volumenon de la ludilo</string>
<string name="show_search_suggestions_title">Serĉi sugestojn</string>
<string name="show_search_suggestions_summary">Montri sugestojn kiam serĉanto</string>
<string name="best_resolution">Plej bona distingivo</string>
<string name="best_resolution">Plej bona rezolucio</string>
<string name="app_description">Libera malpeza torentado ĉe Android.</string>
<string name="settings_category_downloads_title">Elŝuti</string>
<string name="charset_letters_and_digits">Leteroj kaj ciferoj</string>
<string name="charset_most_special_characters">Plej specialaj karakteroj</string>
<string name="resume_on_audio_focus_gain_title">Rekomencu en fokusa gajno</string>
<string name="resume_on_audio_focus_gain_summary">Daŭrigi la legon post la interrompaĵoj (ekzemple telefonadoj)</string>
<string name="resume_on_audio_focus_gain_title">Rekomenci en fokusa gajno</string>
<string name="resume_on_audio_focus_gain_summary">Daŭrigi la ludon post la interrompaĵoj (ekzemple telefonadoj)</string>
<string name="enable_search_history_title">Serĉa historio</string>
<string name="enable_search_history_summary">Konservi la historio de serĉo lokale</string>
<string name="enable_watch_history_title">Rigardu historion</string>
<string name="enable_watch_history_summary">Spuri la viditajn filmetojn</string>
<string name="notification_channel_name">Newpipe Sciifo</string>
<string name="notification_channel_description">Sciigoj por NewPipe fono kaj ŝprucfenestroj ludiloj</string>
<string name="notification_channel_name">NewPipe Sciigo</string>
<string name="notification_channel_description">Sciigoj por NewPipe fonaj kaj ŝprucfenestraj ludiloj</string>
<string name="settings_category_player_title">Ludilo</string>
<string name="settings_category_player_behavior_title">Konduto</string>
<string name="settings_category_history_title">Historio kaj kaŝmemoro</string>
@ -156,23 +156,23 @@
<string name="top_50">Supro 50</string>
<string name="new_and_hot">Nova &amp; varma</string>
<string name="show_hold_to_append_title">Montri la indiko « Tenu por aldoni »</string>
<string name="show_hold_to_append_summary">Montri indikon kiam la fono aŭ ŝprucfenestro butono estas premita en la retpaĝo de dalatadoj de la filmeto</string>
<string name="background_player_append">Viciĝita en la ludilo en fono</string>
<string name="popup_playing_append">Viciĝita en ŝprucfenestro ludilo</string>
<string name="play_all">Ludi ĉiuj</string>
<string name="show_hold_to_append_summary">Montri indikon kiam la fona aŭ ŝprucfenestra butono estas premita en la retpaĝo de dalatadoj de la filmeto</string>
<string name="background_player_append">Viciĝita en la fona ludilo</string>
<string name="popup_playing_append">Viciĝita en ŝprucfenestra ludilo</string>
<string name="play_all">Ludi ĉiujn</string>
<string name="player_stream_failure">Ne povis ludi tion torenton</string>
<string name="player_unrecoverable_failure">Neatendebla eraro de ludilo okazis</string>
<string name="player_recoverable_failure">Reakiri el eraro de la ludilo</string>
<string name="title_activity_background_player">Fona ludilo</string>
<string name="title_activity_popup_player">Ŝprucfenestro ludilo</string>
<string name="title_activity_popup_player">Ŝprucfenestra ludilo</string>
<string name="play_queue_remove">Retiri</string>
<string name="play_queue_stream_detail">Detalado</string>
<string name="play_queue_audio_settings">Sonaj parametroj</string>
<string name="hold_to_append">Teni por viciĝi</string>
<string name="unknown_content">[Nekonata]</string>
<string name="enqueue_on_background">Viciĝi en la fono</string>
<string name="enqueue_on_background">Viciĝi en la fona ludilo</string>
<string name="enqueue_on_popup">Viciĝi en nova ŝprucfenestro</string>
<string name="start_here_on_popup">Komencu ludi en nova ŝprucfenestro</string>
<string name="start_here_on_popup">Komenci ludi en nova ŝprucfenestro</string>
<string name="default_content_country_title">Defaŭlta enhava lando</string>
<string name="toggle_orientation">Ŝangi Orientiĝon</string>
<string name="switch_to_background">Ŝanĝi al Fono</string>
@ -180,46 +180,46 @@
<string name="switch_to_main">Ŝangi al Ĉefa</string>
<string name="service_title">Servo</string>
<string name="always">Ĉiam</string>
<string name="just_once">Nur unfoje</string>
<string name="just_once">Nur unufoje</string>
<string name="invalid_url_toast">Nevalida ligilo</string>
<string name="video_streams_empty">Neniuj filmeta torentoj trovitaj</string>
<string name="audio_streams_empty">Neniuj sonaj torentoj trovis</string>
<string name="popup_player">Ŝprucfenestro ludilo</string>
<string name="popup_player">Ŝprucfenestra ludilo</string>
<string name="import_data_title">Importi la datumbazon</string>
<string name="export_data_title">Eksporti la datumbazon</string>
<string name="import_data_summary">Anstataŭigas vian aktualan historion kaj abonojn</string>
<string name="export_data_summary">Eksporti historion, abonojn kaj ludlistoj</string>
<string name="always_ask_open_action">Ĉiam peti</string>
<string name="create_playlist">Nova ludlisto</string>
<string name="delete_playlist">Forigi</string>
<string name="delete_playlist">Forviŝi</string>
<string name="rename_playlist">Alinomi</string>
<string name="playlist_name_input">Nomo</string>
<string name="append_playlist">Aldoni al la ludlisto</string>
<string name="set_as_playlist_thumbnail">Meti kiel bildeto de ludlisto</string>
<string name="bookmark_playlist">Legosigno Ludlisto</string>
<string name="unbookmark_playlist">Forigi Legosignon</string>
<string name="delete_playlist_prompt">Ĉu forigi ĉi tiun ludliston \?</string>
<string name="unbookmark_playlist">Forviŝi Legosignon</string>
<string name="delete_playlist_prompt">Ĉu forviŝi ĉi tiun ludliston \?</string>
<string name="playlist_creation_success">Ludlisto kreita</string>
<string name="playlist_add_stream_success">Ludlistita</string>
<string name="playlist_thumbnail_change_success">Bildeto de ludlisto ŝanĝiĝita.</string>
<string name="playlist_delete_failure">Ne povis forigi ludlisto.</string>
<string name="playlist_delete_failure">Ne povis forviŝi ludliston.</string>
<string name="settings_category_debug_title">Malcimigi</string>
<string name="auto_queue_title">Auto-vico sekva fluo</string>
<string name="auto_queue_summary">Aŭto-aldoni rilatan enhavon kiam leganta la lasta enhavo en malrepetita atendovico</string>
<string name="auto_queue_summary">Aŭto-aldoni rilatan enhavon kiam ludanta la lasta enhavo en malrepetita atendovico</string>
<string name="file">Dosiero</string>
<string name="invalid_directory">Tia dosierujo ne ekzistas</string>
<string name="invalid_source">Tia dosiero/enhavo ne ekzistas</string>
<string name="file_name_empty_error">Dosiernomo ne povas esti malplena</string>
<string name="error_occurred_detail">Eraro okazis : %1$s</string>
<string name="import_youtube_instructions">Importu Jutubajn abonaĵojn per elŝuti la dosieron de eksporto :
\n
\n1. Iru ĉe tie retpaĝo : %1$s
\n2. Ensalutu kiam oni petas vin
\n3. Elŝuto devus komenci (ĝi estas la dosiero de eksporto)</string>
<string name="import_soundcloud_instructions">Importu Soundcloud-n profilon per elŝuti la dosieron de eksporto :
<string name="error_occurred_detail">Eraro okazis: %1$s</string>
<string name="import_youtube_instructions">Importu Jutubajn abonaĵojn per elŝuti la dosieron de eksporto :
\n
\n1. Ebligu komputilon modon en krozilo (la retejo malhaveblas por poŝtelefonoj)
\n2. Iru al tie retpaĝo : %1$s
\n1. Iru ĉe tiu retpaĝo: %1$s
\n2. Ensalutu kiam oni petas vin
\n3. Elŝuto devus komenci (ĝi estas la dosiero de eksporto)</string>
<string name="import_soundcloud_instructions">Importu Soundcloud-n profilon tajpante ĉu la ligilon, ĉu vian ID :
\n
\n1. Ebligu komputilon modon en retumilon (la retejo malhaveblas por poŝtelefonoj)
\n2. Iru tien: %1$s
\n3. Ensalutu kiam oni petas vin
\n4. Kopiu la ligilon de profilo ke oni kondikis vin.</string>
<string name="download_thumbnail_summary">Malŝaltu por malebligi ŝarĝajn bildetojn, konservi datumojn kaj uzadon de memoro. Ŝanĝoj forviŝas ambaŭ en-memoro kaj sur-disko bildo kaŝmemoro.</string>
@ -236,13 +236,13 @@
<string name="clear_search_history_summary">Forviŝi la serĉajn ŝlosilvortojn</string>
<string name="delete_search_history_alert">Ĉu vi volas forviŝi la totalon de la historio de serĉo \?</string>
<string name="search_history_deleted">Historio de serĉo forviŝita.</string>
<string name="limit_mobile_data_usage_title">Limigi distingivo kiam uzanta moveblan datumon</string>
<string name="minimize_on_exit_popup_description">Minimumigi al ŝprucfenestro ludilo</string>
<string name="limit_mobile_data_usage_title">Limigi rezolucio kiam uzanta moveblan datumon</string>
<string name="minimize_on_exit_popup_description">Minimumigi al ŝprucfenestra ludilo</string>
<string name="channels">Kanaloj</string>
<string name="playlists">Ludlistoj</string>
<string name="tracks">Spuroj</string>
<string name="users">Uzantoj</string>
<string name="unsubscribe">Malabonu</string>
<string name="unsubscribe">Malaboni</string>
<string name="tab_new">Nova ongleto</string>
<string name="tab_choose">Elektu ongleton</string>
<string name="volume_gesture_control_title">Kontrolo de volumena gesto</string>
@ -252,7 +252,7 @@
<string name="settings_category_updates_title">Ĝisdatigoj</string>
<string name="file_deleted">Dosiero forviŝita</string>
<string name="app_update_notification_channel_name">Sciigo por ĝisdatigi apon</string>
<string name="app_update_notification_channel_description">Sciigo por nova versio de Newpipe</string>
<string name="app_update_notification_channel_description">Sciigo por nova versio de NewPipe</string>
<string name="download_to_sdcard_error_title">Ekstera konservejo malhavebla</string>
<string name="download_to_sdcard_error_message">Elŝuti al ekstera SD-karto ne eblas. Ĉu vi volas restarigi la elŝutan dosierujon \?</string>
<string name="queued">viciĝita</string>
@ -265,7 +265,7 @@
<string name="conferences">Konferencoj</string>
<string name="show_comments_title">Montri komentojn</string>
<string name="show_comments_summary">Malebligu por malvidigi komentojn</string>
<string name="autoplay_title">Aŭtolego</string>
<string name="autoplay_title">Aŭtoludo</string>
<plurals name="comments">
<item quantity="one">Komentoj</item>
<item quantity="other"/>
@ -281,7 +281,7 @@
<string name="watch_history_states_deleted">Ludaj pozicioj forviŝitaj.</string>
<string name="missing_file">Dosiero movita aŭ forviŝita</string>
<string name="overwrite_failed">ne povas dispremi la dosieron</string>
<string name="confirm_prompt">Ĉu vi certas\?</string>
<string name="confirm_prompt">Ĉu vi volas forviŝi vian historion de elŝutoj aŭ forviŝi la tutajn elŝutitajn dosierojn\?</string>
<string name="enable_queue_limit">Limigi la elŝutan atendovicon</string>
<string name="enable_queue_limit_desc">Unu elŝuto ruliĝos en la sama tempo</string>
<string name="start_downloads">Komenci elŝutojn</string>
@ -291,8 +291,8 @@
<string name="downloads_storage_ask_summary_kitkat">Oni petos vin kie konservi ĉion elŝutaĵon.
\nElektu AFM se vi volas elŝuti al ekstera SD-karto</string>
<string name="downloads_storage_use_saf_title">Uzu AFM</string>
<string name="downloads_storage_use_saf_summary">La Atinga Framo al la Memoro ebligas elŝuti al ekstera SD-karto.
\nKomento : kelkaj aparatoj ne kongruas</string>
<string name="downloads_storage_use_saf_summary">La Atinga Framo al la Memoro ebligas elŝuti al ekstera SD-karto.
\nKomento: kelkaj aparatoj ne kongruas</string>
<string name="clear_playback_states_title">Forviŝi ludajn poziciojn</string>
<string name="clear_playback_states_summary">Forviŝi la totalon de ludaj pozicioj</string>
<string name="delete_playback_states_alert">Ĉu vi volas forviŝi ĉiujn ludajn poziciojn \?</string>
@ -307,7 +307,7 @@
<string name="start">Komenci</string>
<string name="pause">Paŭzigi</string>
<string name="view">Ludi</string>
<string name="delete">Forigi</string>
<string name="delete">Forviŝi</string>
<string name="checksum">Kontrolsumo</string>
<string name="add">Nova misio</string>
<string name="finish">Bone</string>
@ -341,8 +341,8 @@
<string name="tab_licenses">Permesiloj</string>
<string name="view_on_github">Rigardu ĉe GitHub</string>
<string name="app_license_title">Permesilo de NewPipe</string>
<string name="contribution_encouragement">Ĉu vi havas ideojn pri; traduko, desegnaĵoj ŝanĝoj, purigado de kodo, aŭ realaj masivaj ŝanĝoj—helpo estas ĉiam bonvena. Ju pli oni faras, des pli bonas!</string>
<string name="read_full_license">Legu permesilon</string>
<string name="contribution_encouragement">Ĉu vi havas ideojn pri; traduko, desegnaĵoj ŝanĝoj, purigado de kodo, aŭ realaj masivaj ŝanĝoj—helpo ĉiam estas bonvena. Ju pli oni faras, des pli bonas!</string>
<string name="read_full_license">Legi permesilon</string>
<string name="contribution_title">Kontribui</string>
<string name="settings_file_charset_title">Permesitaj karakteroj en dosiernomoj</string>
<string name="settings_file_replacement_character_summary">Nevalidaj karakteroj estas anstataŭigita kun ĉi tiu valoro</string>
@ -353,7 +353,7 @@
<string name="history_disabled">La historio estas malŝatita</string>
<string name="action_history">Historio</string>
<string name="history_empty">La historio estas malplena</string>
<string name="history_cleared">Historio vakigita</string>
<string name="history_cleared">Historio forviŝita</string>
<string name="search_no_results">Neniuj rezultoj</string>
<string name="empty_subscription_feed_subtitle">Neniu enhavo</string>
<string name="no_subscribers">Neniuj abonantoj</string>
@ -375,12 +375,12 @@
<string name="no_channel_subscribed_yet">Neniuj kanalaj abonoj ankoraŭ</string>
<string name="select_a_kiosk">Elekti kioskon</string>
<string name="start_here_on_main">Komenci ludi ĉi tie</string>
<string name="start_here_on_background">Komenci ludi en la fono</string>
<string name="start_here_on_background">Komenci ludi fone</string>
<string name="donation_title">Donaci</string>
<string name="donation_encouragement">NewPipe estas programada par volontuoj, elspezante tempo por alporti vin la plej bona sperto. Redonu por helpi programistojn plibonigi NewPipe dum ĝuante tason da kafo.</string>
<string name="donation_encouragement">NewPipe estas programadita par volontuoj, elspezante tempo por alporti vin la plej bona sperto. Redoni por helpi programistojn plibonigi NewPipe dum ĝuante tason da kafo.</string>
<string name="give_back">Redoni</string>
<string name="website_title">Retejo</string>
<string name="website_encouragement">Vizitu la retejon de NewPipe por pli da informoj kaj novaĵoj.</string>
<string name="website_encouragement">Viziti la retejon de NewPipe por pli da informoj kaj novaĵoj.</string>
<string name="drawer_open">Malfermi la tirkeston</string>
<string name="drawer_close">Fermi la tirtekston</string>
<string name="external_player_unsupported_link_type">Ekstaraj ludantoj ne suportas tiajn ligilojn</string>
@ -395,8 +395,8 @@
<string name="override_current_data">Ĉi tio nuligos vian nunan aranĝon.</string>
<string name="detail_drag_description">Trenu por reorgidi</string>
<string name="create">Krei</string>
<string name="delete_one">Forigi Unu</string>
<string name="delete_all">Forigi ĉiujn</string>
<string name="delete_one">Forviŝi Unu</string>
<string name="delete_all">Forviŝi ĉiujn</string>
<string name="dismiss">Rezigni</string>
<string name="rename">Alinomi</string>
<string name="delete_stream_history_prompt">Ĉu vi volas forviŝi tion eron el la spekta historio \?</string>
@ -413,7 +413,7 @@
<string name="enable_leak_canary_summary">La monitorado de la memorlikadoj povas frostigi la apon dum la hejta dumpingo</string>
<string name="enable_disposed_exceptions_title">Signali ekster-vivciklajn erarojn</string>
<string name="enable_disposed_exceptions_summary">Perforti signalante neenretigaj Rx esceptoj eksere la fragmento aŭ aktiveco vivciklo post dispono</string>
<string name="invalid_file">La dosiero ne ekzistas aŭ la legopermeso mankas</string>
<string name="invalid_file">La dosiero ne ekzistas aŭ la ludopermeso mankas</string>
<string name="import_export_title">Importi/eksporti</string>
<string name="import_title">Importi</string>
<string name="import_from">Importi el</string>
@ -437,14 +437,14 @@
<string name="caption_setting_title">Subtitoloj</string>
<string name="caption_setting_description">Modifi la dimension de la teksto kaj la fonajn stilojn de la subtitoloj de la ludilo. Ĝi bezonas restarto de la apo por efektiviĝi.</string>
<string name="one_item_deleted">1 ero forviŝita.</string>
<string name="app_license">NewPipe estas programaro sub rajtoceda permesilo: Vi povas uzi, studi, komuniki kaj plibonigi ĝin kiel vi volas. Precize, vi povas redistribui kaj/aŭ modifi ĝin sub la kondiĉojn de la Ĝenerala Publika Permesilo de GNU, kiel publikigita per la Free Software Foundation, ĉu en la versio 3, ĉu (se vi volas) ajna posta versio.</string>
<string name="app_license">NewPipe estas programaro sub rajtoceda permesilo: Vi povas uzi, studi, komuniki kaj plibonigi ĝin kiel vi volas. Precize, vi povas redistribui kaj/aŭ modifi ĝin sub la kondiĉoj de la Ĝenerala Publika Permesilo de GNU, kiel publikigita per la Free Software Foundation, ĉu en la versio 3, ĉu (se vi volas) ajna posta versio.</string>
<string name="import_settings">Ĉu vi volas ankaŭ importi agordojn\?</string>
<string name="privacy_policy_title">Privateca politiko de NewPipe</string>
<string name="privacy_policy_encouragement">La NewPipe projekto respektas vian privatecon serioze. Konsekvence, la apo ne kolektas ajnan datumo sen via konsento.
\nLa privateco politiko de Newpipe detale eksplikas kion datumon estas sendita kaj stokita kiam vi sendas falegosignalon.</string>
<string name="privacy_policy_encouragement">La NewPipe projekto serioze respektas vian privatecon. Konsekvence, la apo ne kolektas ajnan datumon sen via konsento.
\nLa privateco politiko de NewPipe detale eksplikas kion datumon estas sendita kaj stokita kiam vi sendas falegosignalon.</string>
<string name="read_privacy_policy">Legi la privatecan politikon</string>
<string name="start_accept_privacy_policy">Por konformiĝi al la Ĝenerala Datum-Protekta Regularon (GDPR), ni allogas vian atento al la privateca politiko de NewPipe. Bonvolu legi ĝin atentive.
\nVi devas akcepti ĝin por sendi nin la cimsignalo.</string>
<string name="start_accept_privacy_policy">Por konformiĝi al la Ĝenerala Datum-Protekta Regularon (GDPR), ni allogas vian atenton al la privateca politiko de NewPipe. Bonvolu atentive legi ĝin.
\nVi devas akcepti ĝin por sendi la cimsignalon al ni.</string>
<string name="accept">Akcepti</string>
<string name="decline">Rifuzi</string>
<string name="limit_data_usage_none_description">Neniu limo</string>
@ -455,7 +455,7 @@
<string name="skip_silence_checkbox">Plirapidigi dum silentoj</string>
<string name="playback_step">Paŝo</string>
<string name="playback_reset">Restarigi</string>
<string name="saved_tabs_invalid_json">Uzante defaŭltajn ongletojn, eraro dum leganta savajn ongletojn</string>
<string name="saved_tabs_invalid_json">Uzante defaŭltajn ongletojn, eraro ludante savajn ongletojn</string>
<string name="restore_defaults">Restaŭri la defaŭltojn</string>
<string name="restore_defaults_confirmation">Ĉu vi volas restaŭri la defaŭltojn \?</string>
<string name="subscribers_count_not_available">Kalkulo de abonantoj malhavebla</string>
@ -468,8 +468,8 @@
<string name="grid">Krado</string>
<string name="auto">Aŭto</string>
<string name="switch_view">Ŝanĝi vidon</string>
<string name="app_update_notification_content_title">Ĝisdatigo de NewPipe havebla !</string>
<string name="app_update_notification_content_text">Premu por elŝuti</string>
<string name="app_update_notification_content_title">Ĝisdatigo de NewPipe havebla!</string>
<string name="app_update_notification_content_text">Premi por elŝuti</string>
<string name="missions_header_finished">Finita</string>
<string name="missions_header_pending">Pritraktata</string>
<string name="paused">Paŭzigita</string>
@ -507,8 +507,8 @@
<string name="default_kiosk_page_summary">Defaŭlta Kiosko</string>
<string name="no_one_watching">Neniu spektas</string>
<plurals name="watching">
<item quantity="one">%s spektanta</item>
<item quantity="other">%s spektanta</item>
<item quantity="one">%s spektanto</item>
<item quantity="other">%s spektantoj</item>
</plurals>
<string name="no_one_listening">Neniu aŭskultas</string>
<plurals name="listening">
@ -518,18 +518,28 @@
<string name="localization_changes_requires_app_restart">La lingvo ŝanĝos kiam la apo restartos.</string>
<string name="seek_duration_title">Rapida antaŭen / posten daŭron</string>
<string name="peertube_instance_url_title">Instancoj de PeerTube</string>
<string name="peertube_instance_url_summary">Registri viajn preferitajn instancojn de PeerTube</string>
<string name="peertube_instance_url_help">Trovu la instancojn kiu vi povus ŝati ĉe https://joinpeertube.org/instances#instances-list</string>
<string name="peertube_instance_url_summary">Elekti viajn preferitajn instancojn de PeerTube</string>
<string name="peertube_instance_url_help">Trovu la instancojn kiu vi povus ŝati ĉe %s</string>
<string name="peertube_instance_add_title">Aldoni instanco</string>
<string name="peertube_instance_add_help">Eniri la ligilon de la instanco</string>
<string name="peertube_instance_add_fail">Malsukcesis validigi instanco</string>
<string name="peertube_instance_add_https_only">Nur https ligiloj estas subtenitaj</string>
<string name="peertube_instance_add_fail">Ne povis validigi instanco</string>
<string name="peertube_instance_add_https_only">Nur HTTPS ligiloj estas subtenitaj</string>
<string name="peertube_instance_add_exists">La instanco jam ekzistas</string>
<string name="local">Loka</string>
<string name="recently_added">Freŝdate ĝisdatigita</string>
<string name="most_liked">La plej ŝatitatj</string>
<string name="local">Lokaj</string>
<string name="recently_added">Freŝe aldonitaj</string>
<string name="most_liked">La plej ŝatitaj</string>
<string name="playlist_no_uploader">Aŭtomate generita (neniu alŝutilo trovita)</string>
<string name="recovering">Reakiranta</string>
<string name="error_download_resource_gone">Ne povas reakiri tion elŝuton</string>
<string name="choose_instance_prompt">Elektu instancon</string>
<string name="enable_lock_screen_video_thumbnail_title">Enablu bildeta filmeton ĉe ŝlosita ekrano</string>
<string name="enable_lock_screen_video_thumbnail_summary">Uzante la fona ludilo, bildeta filmeto vidiĝos ĉe ŝlosita ekrano</string>
<string name="clear_download_history">Forviŝi la historion de elŝutoj</string>
<string name="delete_downloaded_files">Forviŝi elŝutitajn dosierojn</string>
<string name="deleted_downloads">%1$s elŝutoj forviŝitaj</string>
<string name="permission_display_over_apps">Doni la permeson por afiŝiĝi supre aliaj apoj</string>
<string name="app_language_title">Lingvo de la apo</string>
<string name="systems_language">Sistemnormo</string>
<string name="subtitle_activity_recaptcha">Premu « Finita » kiam solvita</string>
<string name="recaptcha_done_button">Finita</string>
</resources>

View File

@ -115,11 +115,11 @@
<string name="short_thousand">k</string>
<string name="short_million">M</string>
<string name="short_billion">MM</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
<string name="recaptcha">reCAPTCHA</string>
<string name="open_in_popup_mode">Abrir en modo emergente</string>
<string name="msg_popup_permission">Se necesita este permiso
\npara abrir en modo emergente</string>
<string name="reCaptcha_title">Reto reCAPTCHA</string>
<string name="title_activity_recaptcha">Reto reCAPTCHA</string>
<string name="recaptcha_request_toast">Reto reCAPTCHA requerido</string>
<string name="popup_mode_share_menu_title">Modo emergente de NewPipe</string>
<string name="popup_playing_toast">Reproduciendo en modo emergente</string>
@ -221,7 +221,7 @@
<string name="select_a_channel">Seleccione un canal</string>
<string name="no_channel_subscribed_yet">No hay suscripciones a canales todavía</string>
<string name="select_a_kiosk">Seleccione un kiosco</string>
<string name="kiosk">Kiosco</string>
<string name="kiosk">Quiosco</string>
<string name="trending">Tendencias</string>
<string name="top_50">50 mejores</string>
<string name="show_hold_to_append_summary">Mostrar sugerencia cuando se presiona el botón de 2.º plano o emergente en la página de detalles del vídeo</string>
@ -425,7 +425,7 @@
<string name="grid">Mostrar como grilla</string>
<string name="list">Mostrar como lista</string>
<string name="clear_finished_download">Limpiar descargas finalizadas</string>
<string name="confirm_prompt">¿Lo confirma\?</string>
<string name="confirm_prompt">¿Quiere limpiar su historial de descargas o eliminar todos los ficheros descargados\?</string>
<string name="stop">Detener</string>
<string name="max_retry_msg">Intentos máximos</string>
<string name="max_retry_desc">Cantidad máxima de intentos antes de cancelar la descarga</string>
@ -517,19 +517,29 @@
<item quantity="one">%s escucha</item>
<item quantity="other">%s escuchas</item>
</plurals>
<string name="localization_changes_requires_app_restart">El idioma cambiará luego de que la app sea reiniciada.</string>
<string name="localization_changes_requires_app_restart">El idioma cambiará luego de que se reinicie la aplicación.</string>
<string name="seek_duration_title">Duración de búsqueda al avanzar y/o retroceder</string>
<string name="peertube_instance_url_title">Instancias de PeerTube</string>
<string name="peertube_instance_url_summary">Elige tus instancias favoritas de PeerTube</string>
<string name="peertube_instance_url_help">Encuentra las mejores instancias para ti en https://joinpeertube.org/instances#instances-list</string>
<string name="peertube_instance_url_summary">Selecciona tus instancias favoritas de PeerTube</string>
<string name="peertube_instance_url_help">Encuentra las mejores instancias para ti en %s</string>
<string name="peertube_instance_add_title">Agregar instancia</string>
<string name="peertube_instance_add_help">Dirección URL de la instancia</string>
<string name="peertube_instance_add_fail">Error al validar la instancia</string>
<string name="peertube_instance_add_https_only">Sólo URLs con HTTPS</string>
<string name="peertube_instance_add_help">Ingresar URL de la instancia</string>
<string name="peertube_instance_add_fail">No se pudo validar la instancia</string>
<string name="peertube_instance_add_https_only">Solo se admiten URL HTTPS</string>
<string name="peertube_instance_add_exists">La instancia ya existe</string>
<string name="local">Local</string>
<string name="recently_added">Agregados recientemente</string>
<string name="most_liked">Más gustados</string>
<string name="playlist_no_uploader">Generado automáticamente (no se encontró creador)</string>
<string name="choose_instance_prompt">Elige una instancia</string>
<string name="enable_lock_screen_video_thumbnail_title">Habilitar miniatura de video de la pantalla de bloqueo</string>
<string name="enable_lock_screen_video_thumbnail_summary">Al usar el reproductor de fondo, se mostrará una miniatura de video en la pantalla de bloqueo</string>
<string name="clear_download_history">Limpiar historial de descargas</string>
<string name="delete_downloaded_files">Eliminar archivos descargados</string>
<string name="deleted_downloads">Eliminadas %1$s descargas</string>
<string name="permission_display_over_apps">Dar permisos para que se muestre por sobre otras apps</string>
<string name="app_language_title">Idioma de aplicación</string>
<string name="systems_language">Predeterminado del sistema</string>
<string name="subtitle_activity_recaptcha">Pulse en «Hecho» cuando esté resuelto</string>
<string name="recaptcha_done_button">Hecho</string>
</resources>

View File

@ -238,7 +238,7 @@
<string name="msg_popup_permission">Need õigused on vajalikud
\nhüpikakna avamiseks</string>
<string name="one_item_deleted">Kustutati 1 element.</string>
<string name="reCaptchaActivity">"reCAPTCHA "</string>
<string name="recaptcha">"reCAPTCHA "</string>
<string name="settings_category_downloads_title">Laadi alla</string>
<string name="settings_file_charset_title">Lubatud tähemärgid failinimedes</string>
<string name="settings_file_replacement_character_summary">Vigased tähemärgid asendatakse selle väärtusega</string>
@ -370,7 +370,7 @@
<string name="tracks">Lood</string>
<string name="users">Kasutajad</string>
<string name="switch_to_main">Lülitu peamisele</string>
<string name="reCaptcha_title">reCAPTCHA nõue</string>
<string name="title_activity_recaptcha">reCAPTCHA nõue</string>
<string name="recaptcha_request_toast">reCAPTCHA nõude taotlus</string>
<string name="copyright" formatted="true">© %1$s %2$s %3$s alla</string>
<string name="app_description">Vaba kergekaaluline Androidi voogesitus.</string>

View File

@ -139,8 +139,8 @@
<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>
<string name="reCaptcha_title">reCAPTCHA erronka</string>
<string name="recaptcha">reCAPTCHA</string>
<string name="title_activity_recaptcha">reCAPTCHA erronka</string>
<string name="recaptcha_request_toast">reCAPTCHA erronka eskatu da</string>
<string name="title_activity_about">NewPipe aplikazioari buruz</string>
<string name="action_settings">Ezarpenak</string>
@ -199,8 +199,8 @@
</plurals>
<string name="no_videos">Bideorik ez</string>
<plurals name="videos">
<item quantity="one">Bideoa</item>
<item quantity="other">Bideoak</item>
<item quantity="one">Bideo %</item>
<item quantity="other">% bideo</item>
</plurals>
<string name="title_activity_history">Historiala</string>
<string name="title_history_search">Bilatuta</string>
@ -488,7 +488,7 @@
<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="confirm_prompt">Zure deskargen historiala garbitu nahi duzu ala deskargatutako fitxategi guztiak ezabatu\?</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>
@ -519,12 +519,12 @@
<string name="default_kiosk_page_summary">Kiosko Lehenetsia</string>
<string name="seek_duration_title">Aurreratze/atzeratze bilaketaren iraupena</string>
<string name="peertube_instance_url_title">PeerTube instantziak</string>
<string name="peertube_instance_url_summary">Ezarri zure gogoko peertube instantziak</string>
<string name="peertube_instance_url_help">Aurkitu instantziak hemen: https://joinpeertube.org/instances#instances-list</string>
<string name="peertube_instance_url_summary">Hautatu zure gogoko PeerTube instantziak</string>
<string name="peertube_instance_url_help">Aurkitu instantziak hemen: %s</string>
<string name="peertube_instance_add_title">Gehitu instantzia</string>
<string name="peertube_instance_add_help">Sartu instantziaren URLa</string>
<string name="peertube_instance_add_fail">Huts egin du instantzia balioztatzean</string>
<string name="peertube_instance_add_https_only">https URLak onartzen dira soilik</string>
<string name="peertube_instance_add_fail">Ezin izan da instantzia balioztatu</string>
<string name="peertube_instance_add_https_only">HTTPS URLak onartzen dira soilik</string>
<string name="peertube_instance_add_exists">Instantzia badago aurretik</string>
<string name="local">Lokala</string>
<string name="recently_added">Berriki gehitua</string>
@ -533,4 +533,14 @@
<string name="recovering">berreskuratzen</string>
<string name="error_download_resource_gone">Ezin da deskarga hau berreskuratu</string>
<string name="choose_instance_prompt">Aukeratu instantzia</string>
<string name="enable_lock_screen_video_thumbnail_title">Gaitu bideoaren iruditxoa blokeo pantailan</string>
<string name="enable_lock_screen_video_thumbnail_summary">Bigarren planoko erreproduzigailua erabiltzean bideoaren iruditxo bat bistaratuko da blokeo pantailan</string>
<string name="clear_download_history">Garbitu deskargen historiala</string>
<string name="delete_downloaded_files">Ezabatu deskargatutako fitxategiak</string>
<string name="deleted_downloads">%1$s deskarga ezabatuta</string>
<string name="permission_display_over_apps">Eman beste aplikazioen gainean erakusteko baimena</string>
<string name="app_language_title">Aplikazioaren hizkuntza</string>
<string name="systems_language">Sisteman lehenetsia</string>
<string name="subtitle_activity_recaptcha">Sakatu \"Egina\" konponduta dagoenean</string>
<string name="recaptcha_done_button">Egina</string>
</resources>

View File

@ -296,7 +296,7 @@
<string name="use_inexact_seek_title">زمان فعلی پخش کننده را به صورت تقریبی و سریع جلو ببر</string>
<string name="use_inexact_seek_summary">این گزینه باعث می شود هنگام جلو/عقب کردن زمان تصویر، به جای زمان دقیق انتخاب شده، به زمان غیر دقیق و نزدیک به مکان انتخاب شده برود که این کار سریع تر انجام می شود</string>
<string name="app_ui_crash">کاره یا رابط کاربری با خطا مواجه شد</string>
<string name="reCaptchaActivity">ریکپچا</string>
<string name="recaptcha">ریکپچا</string>
<string name="settings_category_downloads_title">بارگیری</string>
<string name="toggle_orientation">تغییر جهت</string>
<string name="switch_to_background">تغییر وضعیت به پس‌زمینه</string>
@ -361,7 +361,7 @@
<string name="undo">بازگردانی</string>
<string name="background_player_append">در صف پخش کننده پس‌زمینه قرار گرفت</string>
<string name="info_labels">چه:\\nدرخواست:\\nزبان درخواست:\\nخدمت:\\nزمان GMT:\\nنگارش:\\nنگارش س.ع:\\nبازه آی‌پی:</string>
<string name="reCaptcha_title">چالش ری‌کپچا</string>
<string name="title_activity_recaptcha">چالش ری‌کپچا</string>
<string name="recaptcha_request_toast">نیاز به چالش ری‌کپچا است</string>
<string name="msg_popup_permission">این مجوز مورد نیاز است
\nتا بتوان به حالت تصویر در تصویر رفت</string>

View File

@ -173,8 +173,8 @@
<string name="msg_copied">Kopioitu leikepöydälle</string>
<string name="no_available_dir">Valitse saatavilla oleva latauskansio</string>
<string name="msg_popup_permission">Tämä käyttöoikeus tarvitaan ponnahdusikkunan käytölle</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
<string name="reCaptcha_title">reCAPTCHA Haaste</string>
<string name="recaptcha">reCAPTCHA</string>
<string name="title_activity_recaptcha">reCAPTCHA Haaste</string>
<string name="recaptcha_request_toast">reCAPTCHA Haaste pyydetty</string>
<string name="settings_category_downloads_title">Lataus</string>
<string name="settings_file_charset_title">Sallitut merkit tiedostonimissä</string>

View File

@ -39,4 +39,7 @@
<string name="controls_popup_title">Popup</string>
<string name="controls_add_to_playlist_title">Idagdag sa</string>
<string name="download_path_title">Folder ng pag-download ng video</string>
<string name="download_path_dialog_title">Pumili ng folder kung saan ido-download ang mga bidyo</string>
<string name="download_path_audio_summary">Nakaimbak sa folder na ito ang mga nai-download na mga audio files</string>
<string name="download_path_audio_dialog_title">Pumili ng folder kung saan ido-download ang mga audio files</string>
</resources>

View File

@ -19,14 +19,14 @@
<string name="share">Partager</string>
<string name="share_dialog_title">Partager avec</string>
<string name="show_play_with_kodi_summary">Affiche une option pour lire une vidéo via Kodi</string>
<string name="show_play_with_kodi_title">Afficher loption «Lire avec Kodi»</string>
<string name="show_play_with_kodi_title">Afficher loption « Lire avec Kodi »</string>
<string name="upload_date_text">Publiée le %1$s</string>
<string name="view_count_text">%1$s vues</string>
<string name="play_audio">Audio</string>
<string name="default_audio_format_title">Format audio par défaut</string>
<string name="download_dialog_title">Télécharger</string>
<string name="next_video_title">Suivant</string>
<string name="show_next_and_similar_title">Afficher les vidéos «Suivantes» et «Similaires»</string>
<string name="show_next_and_similar_title">Afficher les vidéos « Suivantes » et « Similaires »</string>
<string name="url_not_supported_toast">URL non pris en charge</string>
<string name="settings_category_video_audio_title">Vidéo et audio</string>
<string name="settings_category_other_title">Autre</string>
@ -50,8 +50,8 @@
<string name="download_path_audio_title">Dossier de téléchargement audio</string>
<string name="download_path_audio_summary">Les fichiers audio téléchargés sont stockés ici</string>
<string name="download_path_audio_dialog_title">Choisissez le dossier de téléchargement des fichiers audio</string>
<string name="err_dir_create">Impossible de créer le répertoire de téléchargement «%1$s»</string>
<string name="info_dir_created">Répertoire de téléchargement «%1$s» créé</string>
<string name="err_dir_create">Impossible de créer le répertoire de téléchargement « %1$s »</string>
<string name="info_dir_created">Répertoire de téléchargement « %1$s » créé</string>
<string name="general_error">Erreur</string>
<string name="parsing_error">Impossible danalyser le site web</string>
<string name="content_not_available">Contenu indisponible</string>
@ -105,24 +105,24 @@
<string name="no_available_dir">Veuillez définir ultérieurement un dossier de téléchargement dans les paramètres</string>
<string name="could_not_load_image">Impossible de charger limage</string>
<string name="app_ui_crash">Lapplication a planté</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
<string name="recaptcha">reCAPTCHA</string>
<string name="black_theme_title">Noir</string>
<string name="all">Tout</string>
<string name="channel">Chaîne</string>
<string name="reCaptcha_title">Défi reCAPTCHA</string>
<string name="title_activity_recaptcha">Défi reCAPTCHA</string>
<string name="recaptcha_request_toast">Défi reCAPTCHA demandé</string>
<string name="open_in_popup_mode">Ouvrir en mode flottant</string>
<string name="popup_mode_share_menu_title">Mode flottant NewPipe</string>
<string name="popup_playing_toast">Lecture en mode flottant</string>
<string name="yes">Oui</string>
<string name="later">Plus tard</string>
<string name="disabled">Désactivé</string>
<string name="disabled">Désactivés</string>
<string name="info_labels">Quoi :\\nRequête :\\nLangue du contenu :\\nService :\\nHeure UTC :\\nPaquet :\\nVersion :\\nVersion du système dexploitation :</string>
<string name="short_thousand">k</string>
<string name="short_million">M</string>
<string name="msg_popup_permission">Cette autorisation est nécessaire pour
\nutiliser le mode flottant</string>
<string name="controls_background_title">Arrière-plan</string>
<string name="controls_background_title">Lire l\'audio</string>
<string name="controls_popup_title">Flottant</string>
<string name="default_popup_resolution_title">Définition de la fenêtre flottante par défaut</string>
<string name="show_higher_resolutions_title">Afficher des définitions plus élevées</string>
@ -185,7 +185,7 @@
<string name="notification_channel_name">Notification NewPipe</string>
<string name="undo">Annuler</string>
<string name="enable_watch_history_summary">Garde un suivi des vidéos vues</string>
<string name="resume_on_audio_focus_gain_title">Reprendre à lobtention de la cible de saisie</string>
<string name="resume_on_audio_focus_gain_title">Reprendre lors du retour dans l\'application</string>
<string name="settings_category_player_title">Lecteur</string>
<string name="settings_category_player_behavior_title">Comportement</string>
<string name="settings_category_history_title">Historique et cache</string>
@ -205,8 +205,8 @@
</plurals>
<string name="no_videos">Aucune vidéo</string>
<plurals name="videos">
<item quantity="one">Vidéo</item>
<item quantity="other">Vidéos</item>
<item quantity="one">%s vidéo</item>
<item quantity="other">%s vidéos</item>
</plurals>
<string name="charset_most_special_characters">Caractères spéciaux</string>
<string name="item_deleted">Élément supprimé</string>
@ -231,8 +231,8 @@
<string name="play_queue_remove">Retirer</string>
<string name="play_queue_stream_detail">Détails</string>
<string name="play_queue_audio_settings">Paramètres audios</string>
<string name="show_hold_to_append_title">Afficher lastuce «Maintenir pour ajouter»</string>
<string name="show_hold_to_append_summary">Affiche lastuce lors de lappui du bouton «Arrière-plan» ou «Mode flottant» sur la page de détails dune vidéo</string>
<string name="show_hold_to_append_title">Afficher lastuce « Maintenir pour ajouter »</string>
<string name="show_hold_to_append_summary">Affiche lastuce lors de lappui du bouton « Arrière-plan » ou « Mode flottant » sur la page de détails dune vidéo</string>
<string name="unknown_content">[Inconnu]</string>
<string name="player_recoverable_failure">Récupération depuis lerreur du lecteur</string>
<string name="kiosk_page_summary">Kiosque</string>
@ -310,7 +310,7 @@
<string name="use_inexact_seek_title">Utiliser la recherche rapide approximative</string>
<string name="use_inexact_seek_summary">Permet au lecteur daccéder plus rapidement à une position au détriment de la précision</string>
<string name="download_thumbnail_title">Charger les miniatures</string>
<string name="download_thumbnail_summary">Désactiver pour empêcher le chargement des miniatures afin d\'économiser vos données. Modifier cette option vide le cache en mémoire vive et sur le disque.</string>
<string name="download_thumbnail_summary">Désactivez pour empêcher le chargement des miniatures afin de réduire lutilisation de la bande passante et de la mémoire. La modification de cette option, vide le cache en mémoire vive et sur le disque.</string>
<string name="thumbnail_cache_wipe_complete_notice">Images en cache effacées</string>
<string name="metadata_cache_wipe_title">Effacer les métadonnées en cache</string>
<string name="metadata_cache_wipe_summary">Efface toutes les données de pages Web en cache</string>
@ -348,11 +348,11 @@
\n1. Suivez ce lien : %1$s.
\n2. Connectez-vous à votre compte.
\n3. Un téléchargement va démarrer (celui du fichier dexportation).</string>
<string name="import_soundcloud_instructions">Veuillez importer un profil SoundCloud en saisissant lURL de votre profil ou votre identifiant.
\n
\n1. Activez le «mode bureau» dans votre navigateur web (le site nest pas disponible pour les appareils mobiles).
\n2. Suivez cette URL : %1$s.
\n3. Connectez-vous à votre compte.
<string name="import_soundcloud_instructions">Veuillez importer un profil SoundCloud en saisissant lURL de votre profil ou votre identifiant.
\n
\n1. Activez le « mode bureau » dans votre navigateur web (le site nest pas disponible pour les appareils mobiles).
\n2. Suivez cette URL : %1$s.
\n3. Connectez-vous à votre compte.
\n4. Copiez lURL du profil vers lequel vous venez dêtre redirigé.</string>
<string name="import_soundcloud_instructions_hint">votre identifiant, soundcloud.com/votreidentifiant</string>
<string name="import_network_expensive_warning">Cette opération peut charger énormément la connexion réseau.
@ -484,7 +484,7 @@
<string name="error_postprocessing_stopped">NewPipe a été fermé alors quil 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 sûr\?</string>
<string name="confirm_prompt">Voulez-vous effacer l\'historique de téléchargement ou supprimer tous les fichiers téléchargés \?</string>
<string name="enable_queue_limit">Limiter la file dattente de téléchargement</string>
<string name="enable_queue_limit_desc">Un téléchargement sexécutera en même temps</string>
<string name="start_downloads">Démarrer les téléchargements</string>
@ -508,8 +508,8 @@
<string name="default_kiosk_page_summary">Kiosque par défaut</string>
<string name="no_one_watching">Personne ne regarde</string>
<plurals name="watching">
<item quantity="one">%s regarde</item>
<item quantity="other">%s regardent</item>
<item quantity="one">%s spectateur</item>
<item quantity="other">%s spectateurs</item>
</plurals>
<string name="no_one_listening">Personne n\'écoute</string>
<plurals name="listening">
@ -519,12 +519,12 @@
<string name="localization_changes_requires_app_restart">La langue changera lors du redémarrage de l\'application.</string>
<string name="seek_duration_title">Avance/rembobinage rapide sur une durée</string>
<string name="peertube_instance_url_title">Instances PeerTube</string>
<string name="peertube_instance_url_summary">Définissez vos instances peertube préférées</string>
<string name="peertube_instance_url_help">Cherchez des instances qui pourraient vous intéresser sur https://joinpeertube.org/instances#instances-list</string>
<string name="peertube_instance_url_summary">Choisissez vos instances PeerTube préférées</string>
<string name="peertube_instance_url_help">Cherchez des instances qui pourraient vous intéresser sur %s</string>
<string name="peertube_instance_add_title">Ajouter une instance</string>
<string name="peertube_instance_add_help">Entrez lURL de linstance</string>
<string name="peertube_instance_add_fail">Échec de validation de linstance</string>
<string name="peertube_instance_add_https_only">Sont prises en charge uniquement les URLs en https</string>
<string name="peertube_instance_add_https_only">Sont prises en charge uniquement les URLs en HTTPS</string>
<string name="peertube_instance_add_exists">Linstance existe déjà</string>
<string name="local">Local</string>
<string name="recently_added">Ajoutées récemment</string>
@ -532,4 +532,15 @@
<string name="recovering">récupération</string>
<string name="error_download_resource_gone">Impossible de récupérer ce téléchargement</string>
<string name="choose_instance_prompt">Choisissez une instance</string>
<string name="playlist_no_uploader">Généré automatiquement (pas de téléverseur trouvé)</string>
<string name="enable_lock_screen_video_thumbnail_title">Activer la vidéo miniaturisée sur l\'écran de verrouillage</string>
<string name="enable_lock_screen_video_thumbnail_summary">En utilisant le lecteur audio, la miniature de la vidéo sera affichée sur l\'écran de verrouillage</string>
<string name="clear_download_history">Effacer l\'historique de téléchargement</string>
<string name="delete_downloaded_files">Supprimer les fichiers téléchargés</string>
<string name="deleted_downloads">%1$s téléchargements supprimés</string>
<string name="permission_display_over_apps">Autoriser la superposition d\'applis</string>
<string name="app_language_title">Langue de l\'application</string>
<string name="systems_language">Prédéfini par le système</string>
<string name="subtitle_activity_recaptcha">Appuyez sur « Terminé » une fois résolu</string>
<string name="recaptcha_done_button">Terminé</string>
</resources>

View File

@ -266,8 +266,8 @@
\npara abrir o vídeo no modo «popup»</string>
<string name="one_item_deleted">1 elemento foi eliminado.</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
<string name="reCaptcha_title">Desafío reCAPTCHA</string>
<string name="recaptcha">reCAPTCHA</string>
<string name="title_activity_recaptcha">Desafío reCAPTCHA</string>
<string name="recaptcha_request_toast">Desafío reCAPTCHA solicitado</string>
<string name="settings_category_downloads_title">Descarregar</string>

View File

@ -167,10 +167,10 @@
</plurals>
<string name="no_videos">אין סרטונים</string>
<plurals name="videos">
<item quantity="one">סרטון %s</item>
<item quantity="two">%s סרטונים</item>
<item quantity="many">%s סרטונים</item>
<item quantity="other">%s סרטונים</item>
<item quantity="one">סרטון</item>
<item quantity="two">סרטונים</item>
<item quantity="many">סרטונים</item>
<item quantity="other">סרטונים</item>
</plurals>
<string name="start">התחלה</string>
<string name="pause">השהיה</string>
@ -192,8 +192,8 @@
<string name="no_available_dir">נא לציין תיקיית הורדה בהגדרות בהמשך</string>
<string name="msg_popup_permission">הרשאה זו נדרשת לטובת
\nפתיחה בחלון צף</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
<string name="reCaptcha_title">אתגר reCAPTCHA</string>
<string name="recaptcha">reCAPTCHA</string>
<string name="title_activity_recaptcha">אתגר reCAPTCHA</string>
<string name="recaptcha_request_toast">התקבלה בקשה לאתגר reCAPTCHA</string>
<string name="settings_category_downloads_title">הורדה</string>
<string name="settings_file_charset_title">רשימת תווים אפשרית בשמות קבצים</string>
@ -496,7 +496,7 @@
<string name="error_insufficient_storage">לא נשאר מקום במכשיר</string>
<string name="error_progress_lost">התהליך אבד כיוון שהקובץ נמחק</string>
<string name="error_timeout">החיבור המתין זמן רב מדי</string>
<string name="confirm_prompt">בוודאות\?</string>
<string name="confirm_prompt">למחוק את היסטוריית ההורדות שלך או למחוק את כל הקבצים שהורדת\?</string>
<string name="enable_queue_limit">הגבלת תור ההורדה</string>
<string name="enable_queue_limit_desc">רק הורדה אחת תרוץ בו־זמנית</string>
<string name="start_downloads">התחלת הורדות</string>
@ -531,12 +531,12 @@
<string name="default_kiosk_page_summary">קיוסק בררת מחדל</string>
<string name="seek_duration_title">משך קפיצה מהירה קדימה/אחורה</string>
<string name="peertube_instance_url_title">מופעים של PeerTube</string>
<string name="peertube_instance_url_summary">נא להגדיר את מופעי ה־peertube המועדפים עליך</string>
<string name="peertube_instance_url_help">איתור המופעים שהכי מתאימים לך תחת https://joinpeertube.org/instances#instances-list</string>
<string name="peertube_instance_url_summary">נא לבחור את מופעי ה־PeerTube המועדפים עליך</string>
<string name="peertube_instance_url_help">איתור המופעים שהכי מתאימים לך תחת %s</string>
<string name="peertube_instance_add_title">הוספת מופע</string>
<string name="peertube_instance_add_help">נא להכניס כתובת מופע</string>
<string name="peertube_instance_add_fail">אימות המופע נכשל</string>
<string name="peertube_instance_add_https_only">יש תמיכה בכתובות https בלבד</string>
<string name="peertube_instance_add_fail">לא ניתן לאמת את המופע</string>
<string name="peertube_instance_add_https_only">יש תמיכה בכתובות HTTPS בלבד</string>
<string name="peertube_instance_add_exists">המופע כבר קיים</string>
<string name="local">מקומי</string>
<string name="recently_added">נוספו לאחרונה</string>
@ -545,4 +545,14 @@
<string name="recovering">בשחזור</string>
<string name="error_download_resource_gone">לא ניתן לשחזר את ההורדה הזאת</string>
<string name="choose_instance_prompt">נא לבחור מופע</string>
<string name="enable_lock_screen_video_thumbnail_title">הפעלת תמונה מוקטנת של הסרטון במסך הנעילה</string>
<string name="enable_lock_screen_video_thumbnail_summary">בעת השימוש בנגן הרקע תופיע תמונה מוקטנת של הסרטון על מסך הנעילה</string>
<string name="clear_download_history">מחיקת היסטוריית ההורדות</string>
<string name="delete_downloaded_files">למחוק את הקבצים שהורדתי</string>
<string name="deleted_downloads">נמחקו %1$s הורדות</string>
<string name="permission_display_over_apps">יש להעניק הרשאה להציג על גבי יישומונים אחרים</string>
<string name="app_language_title">שפת היישומון</string>
<string name="systems_language">בררת המחדל של המערכת</string>
<string name="subtitle_activity_recaptcha">יש ללחוץ על „סיום” לאחר הפתירה</string>
<string name="recaptcha_done_button">סיום</string>
</resources>

View File

@ -206,8 +206,8 @@
<string name="msg_copied">क्लिपबोर्ड पर कॉपी हो गया है</string>
<string name="no_available_dir">कृपया बाद में सेटिंग्स में डाउनलोड स्थान चुने</string>
<string name="msg_popup_permission">पॉपअप के तरीके में खोलने के लिए अनुमति की जरुरत है</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
<string name="reCaptcha_title">reCAPTCHA चुनौती</string>
<string name="recaptcha">reCAPTCHA</string>
<string name="title_activity_recaptcha">reCAPTCHA चुनौती</string>
<string name="recaptcha_request_toast">reCAPTCHA चुनौती का अनुरोध किया</string>
<string name="settings_category_downloads_title">डाउनलोड</string>
<string name="settings_file_charset_title">फाइल के नाम के लिए आवश्यक characters(जैसे - १२३, abc) की अनुमति है</string>

View File

@ -30,12 +30,12 @@
<string name="fragment_whats_new">Što je novo</string>
<string name="controls_background_title">Pozadina</string>
<string name="controls_popup_title">Skočni prozor</string>
<string name="download_path_title">Put za preuzimanje videozapisa</string>
<string name="download_path_summary">Put za spremanje videozapisa u</string>
<string name="download_path_dialog_title">Unesi put za preuzimanje videozapisa</string>
<string name="download_path_title">Mapa za preuzimanje videozapisa</string>
<string name="download_path_summary">Preuzete video datoteke se spremaju ovdje</string>
<string name="download_path_dialog_title">Odaberi mapu za preuzimanje video datoteka</string>
<string name="download_path_audio_title">Mapa za preuzimanje zvuka</string>
<string name="download_path_audio_summary">Preuzeti zvuk je spremljen ovdje</string>
<string name="download_path_audio_dialog_title">Unesi put za preuzimanje zvučne datoteke</string>
<string name="download_path_audio_summary">Preuzete audio datoteke se spremaju ovdje</string>
<string name="download_path_audio_dialog_title">Odaberi mapu za preuzimanje audio datoteka</string>
<string name="autoplay_by_calling_app_title">Automatska reprodukcija</string>
<string name="autoplay_by_calling_app_summary">Reproducira videozapis kad je NewPipe pozvan iz druge aplikacije</string>
<string name="default_resolution_title">Zadana razlučivost</string>
@ -61,7 +61,7 @@
<string name="show_search_suggestions_summary">Prikaži prijedloge pri traženju</string>
<string name="enable_search_history_title">Povijest pretraživanja</string>
<string name="enable_search_history_summary">Svaku pretragu spremi lokalno</string>
<string name="enable_watch_history_title">Povijest &amp; Predmemorija</string>
<string name="enable_watch_history_title">Prati povijest</string>
<string name="enable_watch_history_summary">Pratite pogledane videozapise</string>
<string name="resume_on_audio_focus_gain_title">Nastavi nakon dobivanja fokusa</string>
<string name="resume_on_audio_focus_gain_summary">Nastavi reproducirati nakon prekidanja (npr. telefonski pozivi)</string>
@ -116,7 +116,7 @@
<string name="your_comment">Vaš komentar (na engleskom):</string>
<string name="error_details_headline">Detalji:</string>
<string name="list_thumbnail_view_description">Sličica pregleda videozapisa</string>
<string name="detail_thumbnail_view_description">Sličica pregleda videozapisa</string>
<string name="detail_thumbnail_view_description">Pokreni video, trajanje:</string>
<string name="detail_uploader_thumbnail_view_description">Profilna slika prenositelja</string>
<string name="detail_likes_img_view_description">Goreglasovi</string>
<string name="detail_dislikes_img_view_description">Doljeglasovi</string>
@ -130,9 +130,9 @@
<string name="audio">Zvuk</string>
<string name="retry">Ponovno pokušaj</string>
<string name="storage_permission_denied">Dozvola za pisanje po pohrani je odbijena</string>
<string name="short_thousand">tis</string>
<string name="short_thousand">tis.</string>
<string name="short_million">mil</string>
<string name="short_billion">mlrd</string>
<string name="short_billion">mlrd.</string>
<string name="start">Počni</string>
<string name="pause">Pauziraj</string>
<string name="view">Reproduciraj</string>
@ -150,11 +150,11 @@
<string name="msg_running_detail">Dodirni za detalje</string>
<string name="msg_wait">Molimo pričekajte…</string>
<string name="msg_copied">Kopirano u međuspremnik</string>
<string name="no_available_dir">Molimo odaberite dostupnu mapu za preuzimanje</string>
<string name="no_available_dir">Kasnije odredite mapu za preuzimanje u postavkama</string>
<string name="msg_popup_permission">Ova dozvola je potrebna za
\notvaranje skočnog prozora</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
<string name="reCaptcha_title">reCAPTCHA zadatak</string>
<string name="recaptcha">reCAPTCHA</string>
<string name="title_activity_recaptcha">reCAPTCHA zadatak</string>
<string name="recaptcha_request_toast">Traži se reCAPTCHA zadatak</string>
<string name="settings_category_downloads_title">Preuzimanja</string>
<string name="settings_file_charset_title">Dozvoljeni znakovi u nazivima datoteka</string>
@ -209,8 +209,8 @@
<string name="no_videos">Nema videozapisa</string>
<plurals name="videos">
<item quantity="one">%s video</item>
<item quantity="few">%s videozapisa</item>
<item quantity="other">%s videozapisi</item>
<item quantity="few">%s videa</item>
<item quantity="other">%s videa</item>
</plurals>
<string name="item_deleted">Stavka je izbrisana</string>
<string name="background_player_append">U redu čekanja za reprod. u pozadini</string>
@ -397,7 +397,7 @@
<string name="settings_category_debug_title">Otkrivanje grešaka</string>
<string name="app_update_notification_channel_name">Obavijest o ažuriranju aplikacije</string>
<string name="toggle_orientation">Uključite ili isključite orijentaciju</string>
<string name="download_to_sdcard_error_message">Preuzimanje na vanjsku SD karticu još nije moguće. Poništite lokaciju mape za preuzimanje\?</string>
<string name="download_to_sdcard_error_message">Preuzimanje na vanjsku SD karticu nije moguće. Ponovo postaviti lokaciju mape za preuzimanje\?</string>
<string name="external_player_unsupported_link_type">Vanjski playeri ne podržavaju ove vrste veza</string>
<string name="video_streams_empty">Nije pronađen nijedan videozapis</string>
<string name="audio_streams_empty">Nije pronađen nijedan zvuk</string>
@ -433,7 +433,7 @@
<string name="list_view_mode">Način prikaza popisa</string>
<string name="auto">Automatski</string>
<string name="missions_header_finished">Gotovo</string>
<string name="missions_header_pending">U redu za čekanje</string>
<string name="missions_header_pending">Na čekanju</string>
<string name="paused">pauzirano</string>
<string name="queued">Na redu za čekanje</string>
<string name="post_processing">naknadna obrada</string>
@ -446,8 +446,8 @@
<string name="overwrite_finished_warning">Preuzeta datoteka s tim nazivom već postoji</string>
<string name="download_already_running">U tijeku je preuzimanje s ovim nazivom</string>
<string name="label_code">Kod</string>
<string name="error_path_creation">Datoteku nije moguće izraditi</string>
<string name="error_file_creation">Odredišnu mapu nije moguće izraditi</string>
<string name="error_path_creation">Odredišnu mapu nije moguće stvoriti</string>
<string name="error_file_creation">Datoteku nije moguće stvoriti</string>
<string name="error_permission_denied">Sustav je odbio dozvolu</string>
<string name="error_ssl_exception">Sigurna veza nije uspjela</string>
<string name="error_unknown_host">Nije moguće pronaći server</string>
@ -460,7 +460,7 @@
<string name="stop">Stop</string>
<string name="max_retry_msg">Maksimalnih ponovnih pokušaja</string>
<string name="max_retry_desc">Maksimalni broj pokušaja prije poništavanja preuzimanja</string>
<string name="pause_downloads_on_mobile">Pauziraj prilikom prebacivanja na mobilne podatke</string>
<string name="pause_downloads_on_mobile">Prekini na mrežama s ograničenim prometom</string>
<string name="pause_downloads_on_mobile_desc">Preuzimanja koja se ne mogu zaustaviti ponovno će se pokrenuti</string>
<string name="show_comments_title">Prikaži komentare</string>
<string name="show_comments_summary">Onemogućite da biste prestali prikazivati komentare</string>

View File

@ -14,9 +14,9 @@
<string name="share_dialog_title">Megosztás ezzel</string>
<string name="choose_browser">Válasszon böngészőt</string>
<string name="screen_rotation">forgatás</string>
<string name="download_path_title">Videófájlok letöltési helye</string>
<string name="download_path_summary">Útvonal a letöltött videók tárolásához</string>
<string name="download_path_dialog_title">Adja meg a videófájlok letöltési helyét</string>
<string name="download_path_title">Videók letöltési helye</string>
<string name="download_path_summary">Ide kerülnek a letöltött videók</string>
<string name="download_path_dialog_title">Válassza ki a videófájlok letöltési helyét</string>
<string name="default_resolution_title">Alapértelmezett felbontás</string>
<string name="play_with_kodi_title">Lejátszás Kodi-val</string>
<string name="kore_not_found">A Kore alkalmazás nem található. Telepíted a Kore lejátszót?</string>
@ -29,7 +29,7 @@
<string name="url_not_supported_toast">Nem támogatott webcím</string>
<string name="use_external_video_player_title">Külső videólejátszó használata</string>
<string name="use_external_audio_player_title">Külső hanglejátszó használata</string>
<string name="download_path_audio_dialog_title">Add meg a hangfájlok letöltési helyét</string>
<string name="download_path_audio_dialog_title">Válaszd ki a hangfájlok letöltési helyét</string>
<string name="use_tor_title">Tor használata</string>
<string name="use_tor_summary">(Kísérleti) Adatforgalom Tor-on keresztüli kényszerítése a biztonság fokozása érdekében (a videó stream-elés még nem támogatott).</string>
<string name="play_btn_text">Lejátszás</string>
@ -44,7 +44,7 @@
<string name="light_theme_title">Világos</string>
<string name="theme_title">Téma</string>
<string name="download_path_audio_title">Hangfájlok letöltési helye</string>
<string name="download_path_audio_summary">Letöltött hangfájlok itt találhatók</string>
<string name="download_path_audio_summary">A letöltött hangfájlok itt találhatóak</string>
<string name="detail_likes_img_view_description">Tetszik</string>
<string name="detail_dislikes_img_view_description">Nem tetszik</string>
<string name="list_thumbnail_view_description">Előnézeti kép</string>
@ -123,8 +123,7 @@
<string name="show_higher_resolutions_title">Mutassa a magasabb felbontásokat</string>
<string name="show_higher_resolutions_summary">Csak néhány eszköz támogatja a 2K/4K videók lejátszását</string>
<string name="default_video_format_title">Alapértelmezett videó formátum</string>
<string name="black_theme_title">Fekete
\n</string>
<string name="black_theme_title">Fekete</string>
<string name="popup_remember_size_pos_title">Jegyezze meg a felugró ablak helyét és méretét</string>
<string name="popup_remember_size_pos_summary">Jegyezze meg a felugró ablak előző helyét és méretét</string>
<string name="show_search_suggestions_title">Keresési javaslatok</string>
@ -233,8 +232,8 @@
<string name="rename">Átnevezés</string>
<string name="msg_popup_permission">Ez az engedély szükséges a felugró ablakban történő megnyitáshoz</string>
<string name="one_item_deleted">1 elem törölve.</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
<string name="reCaptcha_title">reCAPTCHA rejtvény</string>
<string name="recaptcha">reCAPTCHA</string>
<string name="title_activity_recaptcha">reCAPTCHA rejtvény</string>
<string name="recaptcha_request_toast">reCAPTCHA rejtvény igényelve</string>
<string name="settings_category_downloads_title">Letöltés</string>
<string name="settings_file_charset_title">Fájlnevekben engedélyezett karakterek</string>
@ -382,4 +381,8 @@
<string name="dismiss">Figyelmen kívül hagy</string>
<string name="bookmark_playlist">Lejátszási lista könyvjelzők közé</string>
<string name="auto_queue_summary">Hasonló videó beadása az utolsó videó után egy nem ismétlődő sorban</string>
<string name="enqueue">Sor</string>
<string name="overwrite_failed">a fájl nem írható felül</string>
<string name="seek_duration_title">Az előre- és visszatekerés időtartama</string>
<string name="enable_lock_screen_video_thumbnail_title">Videó előnézet megjelenítése a lezárási képernyőn</string>
</resources>

View File

@ -32,4 +32,6 @@
<string name="start_downloads">Initiar discargas</string>
<string name="pause_downloads">Pausar le discargas</string>
<string name="choose_instance_prompt">Seliger un instantia</string>
<string name="error_connect_host">Non poteva connecter con le servitor</string>
<string name="view_count_text">%1$s vistas</string>
</resources>

View File

@ -105,8 +105,8 @@
<string name="info_labels">Apa:\\nPermintaan:\\nBahasa Konten:\\nLayanan:\\nWaktu GMT:\\nPaket:\\nVersi:\\nVersi OS:</string>
<string name="user_report">Laporan pengguna</string>
<string name="msg_threads">Thread</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
<string name="reCaptcha_title">Tantangan reCAPTCHA</string>
<string name="recaptcha">reCAPTCHA</string>
<string name="title_activity_recaptcha">Tantangan reCAPTCHA</string>
<string name="recaptcha_request_toast">Meminta kode reCAPTCHA</string>
<string name="black_theme_title">Hitam</string>
<string name="all">Semua</string>
@ -480,7 +480,7 @@
<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="confirm_prompt">Apakah anda yakin ingin menghapus semua riwayat unduhan dan berkas yang telah diunduh\?</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>
@ -498,7 +498,7 @@
<string name="delete_playback_states_alert">Hapus semua posisi pemutaran\?</string>
<string name="download_choose_new_path">Ubah folder unduhan</string>
<plurals name="videos">
<item quantity="other">Video</item>
<item quantity="other">%s video</item>
</plurals>
<string name="drawer_header_description">Aktif/Nonaktifkan layanan, saat ini aktif:</string>
<string name="no_one_watching">Tidak ada yang menonton</string>
@ -510,4 +510,29 @@
<item quantity="other">%s mendengarkan</item>
</plurals>
<string name="localization_changes_requires_app_restart">Bahasa akan diterapkan setelah aplikasi dimulai ulang.</string>
<string name="peertube_instance_url_title">Situs PeerTube</string>
<string name="peertube_instance_url_summary">Pilih situs PeerTube favorit anda</string>
<string name="peertube_instance_url_help">Temukan situs yang sesuai dengan anda di %s</string>
<string name="peertube_instance_add_title">Tambah situs</string>
<string name="peertube_instance_add_help">Masukkan URL situs</string>
<string name="peertube_instance_add_fail">Tidak bisa memvalidasi situs</string>
<string name="peertube_instance_add_https_only">Hanya mendukung URL HTTPS</string>
<string name="peertube_instance_add_exists">Situs sudah ada</string>
<string name="local">Lokal</string>
<string name="recently_added">Baru-baru ini ditambahkan</string>
<string name="most_liked">Disukai terbanyak</string>
<string name="playlist_no_uploader">Dibuat otomatis (pengunggah tidak ditemukan)</string>
<string name="recovering">memulihkan</string>
<string name="error_download_resource_gone">Tidak bisa memulihkan unduhan ini</string>
<string name="choose_instance_prompt">Pilih situs</string>
<string name="enable_lock_screen_video_thumbnail_title">Aktifkan kunci layar thumbnail video</string>
<string name="enable_lock_screen_video_thumbnail_summary">Ketika menggunakan pemutar latar belakang, thumbnail video akan ditampilkan di tampilan kunci layar</string>
<string name="default_kiosk_page_summary">Kiosk Default</string>
<string name="clear_download_history">Hapus riwayat unduhan</string>
<string name="delete_downloaded_files">Hapus berkas yang diunduh</string>
<string name="deleted_downloads">%1$s unduhan dihapus</string>
<string name="permission_display_over_apps">Izinkan untuk ditampilkan di atas aplikasi lain</string>
<string name="app_language_title">Bahasa apl</string>
<string name="systems_language">Default sistem</string>
<string name="recaptcha_done_button">Selesai</string>
</resources>

View File

@ -30,9 +30,9 @@
<string name="url_not_supported_toast">URL non supportato</string>
<string name="content_language_title">Lingua Predefinita per Contenuti</string>
<string name="settings_category_video_audio_title">Video e Audio</string>
<string name="list_thumbnail_view_description">Miniatura anteprima video</string>
<string name="list_thumbnail_view_description">Copertina di anteprima video</string>
<string name="detail_thumbnail_view_description">Riproduci video, durata:</string>
<string name="detail_uploader_thumbnail_view_description">Miniatura dell\'immagine di profilo dell\'utente</string>
<string name="detail_uploader_thumbnail_view_description">Immagine di profilo dell\'utente</string>
<string name="detail_dislikes_img_view_description">Non mi piace</string>
<string name="detail_likes_img_view_description">Mi piace</string>
<string name="err_dir_create">Impossibile creare la cartella di download \'%1$s\'</string>
@ -51,7 +51,7 @@
<string name="play_btn_text">Riproduci</string>
<string name="general_error">Errore</string>
<string name="network_error">Errore di connessione</string>
<string name="could_not_load_thumbnails">Impossibile caricare tutte le miniature</string>
<string name="could_not_load_thumbnails">Impossibile caricare tutte le copertine</string>
<string name="youtube_signature_decryption_error">Impossibile decriptare la firma dell\'URL del video</string>
<string name="content_not_available">Contenuto non disponibile</string>
<string name="use_tor_title">Usa Tor</string>
@ -106,8 +106,8 @@
<string name="could_not_load_image">Impossibile caricare l\'immagine</string>
<string name="app_ui_crash">L\'app/UI si è interrotta</string>
<string name="info_labels">Cosa:\\nRichiesta:\\nLingua contenuto:\\nServizio:\\nOrario GMT:\\nPacchetto:\\nVersione:\\nVersione SO:</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
<string name="reCaptcha_title">Risoluzione reCAPTCHA</string>
<string name="recaptcha">reCAPTCHA</string>
<string name="title_activity_recaptcha">Risoluzione reCAPTCHA</string>
<string name="black_theme_title">Nero</string>
<string name="all">Tutto</string>
<string name="channel">Canale</string>
@ -117,19 +117,19 @@
<string name="recaptcha_request_toast">È richiesta la risoluzione del reCAPTCHA</string>
<string name="yes"></string>
<string name="later">Più tardi</string>
<string name="open_in_popup_mode">Apri in modalità popup</string>
<string name="popup_mode_share_menu_title">Modalità popup di NewPipe</string>
<string name="popup_playing_toast">Riproduzione in Modalità Popup</string>
<string name="open_in_popup_mode">Apri in modalità Popup</string>
<string name="popup_mode_share_menu_title">Modalità Popup di NewPipe</string>
<string name="popup_playing_toast">Riproduzione in modalità Popup</string>
<string name="disabled">Disattivato</string>
<string name="use_external_video_player_summary">L\'audio potrebbe non essere disponibile per ALCUNE risoluzioni</string>
<string name="controls_background_title">In sottofondo</string>
<string name="controls_background_title">In Sottofondo</string>
<string name="controls_popup_title">Popup</string>
<string name="default_popup_resolution_title">Risoluzione Predefinita Popup</string>
<string name="show_higher_resolutions_title">Mostra Altre Risoluzioni</string>
<string name="show_higher_resolutions_summary">Solo alcuni dispositivi supportano la riproduzione video in 2K e 4K</string>
<string name="default_video_format_title">Formato Video Predefinito</string>
<string name="popup_remember_size_pos_title">Ricorda Dimensione e Posizione Popup</string>
<string name="popup_remember_size_pos_summary">Ricorda l\'ultima dimensione e posizione della finestra popup</string>
<string name="popup_remember_size_pos_summary">Ricorda dimensione e posizione della finestra Popup</string>
<string name="player_gesture_controls_title">Controllo Movimenti Lettore Multimediale</string>
<string name="player_gesture_controls_summary">Usa i movimenti per controllare luminosità e volume del lettore multimediale</string>
<string name="show_search_suggestions_title">Suggerimenti Ricerca</string>
@ -140,8 +140,8 @@
<string name="clear">Cancella</string>
<string name="popup_resizing_indicator_title">Ridimensionamento</string>
<string name="best_resolution">Risoluzione migliore</string>
<string name="msg_popup_permission">Questo permesso è necessario
\nper riprodurre in modalità popup</string>
<string name="msg_popup_permission">Questo permesso è necessario
\nper utilizzare il lettore Popup</string>
<string name="action_settings">Impostazioni</string>
<string name="action_about">Informazioni</string>
<string name="title_licenses">Licenze di Terze Parti</string>
@ -191,7 +191,7 @@
<string name="playlist">Playlist</string>
<string name="undo">Annulla</string>
<string name="notification_channel_name">Notifiche NewPipe</string>
<string name="notification_channel_description">Notifiche per NewPipe in background e per il lettore a comparsa</string>
<string name="notification_channel_description">Notifiche per lettore in Sottofondo e Popup</string>
<string name="search_no_results">Nessun risultato</string>
<string name="no_subscribers">Nessun iscritto</string>
<plurals name="subscribers">
@ -225,25 +225,25 @@
<string name="top_50">Top 50</string>
<string name="new_and_hot">New &amp; hot</string>
<string name="show_hold_to_append_title">Mostra Suggerimento \"Tieni Premuto per Accocodare\"</string>
<string name="show_hold_to_append_summary">Mostra suggerimento quando il pulsante per la riproduzione \"popup\" o \"in sottofondo\" viene premuto nella pagina dei dettagli del video</string>
<string name="background_player_append">In Coda in Sottofondo</string>
<string name="popup_playing_append">In Coda in Modalità Popup</string>
<string name="show_hold_to_append_summary">Nella pagina dei dettagli del video, mostra un suggerimento alla pressione dei pulsanti per la riproduzione Popup o in Sottofondo</string>
<string name="background_player_append">Accoda in Sottofondo</string>
<string name="popup_playing_append">Accodato in Popup</string>
<string name="play_all">Riproduci tutto</string>
<string name="player_stream_failure">Impossibile riprodurre questo flusso</string>
<string name="player_unrecoverable_failure">Si è verificato un errore irreversibile</string>
<string name="player_recoverable_failure">Ripristino dell\'errore del lettore multimediale</string>
<string name="title_activity_background_player">Riproduzione in sottofondo</string>
<string name="title_activity_popup_player">Riproduzione in modalità a comparsa</string>
<string name="title_activity_background_player">Riproduzione in Sottofondo</string>
<string name="title_activity_popup_player">Lettore Popup</string>
<string name="play_queue_remove">Rimuovi</string>
<string name="play_queue_stream_detail">Dettagli</string>
<string name="play_queue_audio_settings">Impostazioni audio</string>
<string name="hold_to_append">Tenere premuto per aggiungere alla coda</string>
<string name="play_queue_audio_settings">Impostazioni Audio</string>
<string name="hold_to_append">Tenere premuto per accodare</string>
<string name="unknown_content">[Sconosciuto]</string>
<string name="enqueue_on_background">In coda in sottofondo</string>
<string name="enqueue_on_popup">In coda nel riproduttore a comparsa</string>
<string name="enqueue_on_background">Accoda in Sottofondo</string>
<string name="enqueue_on_popup">Accoda in Popup</string>
<string name="start_here_on_main">Inizia la riproduzione qui</string>
<string name="start_here_on_background">Avvia riproduzione in sottofondo</string>
<string name="start_here_on_popup">Avvia riproduzione a comparsa</string>
<string name="start_here_on_popup">Avvia subito in Popup</string>
<string name="donation_title">Dona</string>
<string name="website_title">Sito</string>
<string name="website_encouragement">Visita il sito di NewPipe per informazioni e novità.</string>
@ -251,9 +251,9 @@
<string name="give_back">Restituisci</string>
<string name="default_content_country_title">Paese Predefinito per Contenuti</string>
<string name="toggle_orientation">Cambia orientamento</string>
<string name="switch_to_background">Passa alla riproduzione in background</string>
<string name="switch_to_background">Passa in Sottofondo</string>
<string name="switch_to_popup">Passa a Popup</string>
<string name="switch_to_main">Passa alla produzione predefinita</string>
<string name="switch_to_main">Passa a Principale</string>
<string name="service_title">Servizio</string>
<string name="drawer_open">Apri il menu</string>
<string name="drawer_close">Chiudi il menu</string>
@ -265,8 +265,8 @@
<string name="video_streams_empty">Nessun flusso video trovato</string>
<string name="audio_streams_empty">Nessun flusso audio trovato</string>
<string name="video_player">Lettore video</string>
<string name="background_player">Riproduzione in sottofondo</string>
<string name="popup_player">Riproduzione in modalità popup</string>
<string name="background_player">Riproduzione in Sottofondo</string>
<string name="popup_player">Lettore Popup</string>
<string name="preferred_player_fetcher_notification_title">Raccogliendo informazioni…</string>
<string name="preferred_player_fetcher_notification_message">Caricamento del contenuto richiesto</string>
<string name="import_data_title">Importa database</string>
@ -298,13 +298,13 @@
<string name="rename_playlist">Rinomina</string>
<string name="playlist_name_input">Nome</string>
<string name="append_playlist">Aggiunti alla playlist</string>
<string name="set_as_playlist_thumbnail">Imposta come miniatura della playlist</string>
<string name="set_as_playlist_thumbnail">Imposta come Copertina della Playlist</string>
<string name="bookmark_playlist">Segnalibri playlist</string>
<string name="unbookmark_playlist">Rimuovi segnalibro</string>
<string name="delete_playlist_prompt">Eliminare la playlist\?</string>
<string name="playlist_creation_success">Playlist creata</string>
<string name="playlist_add_stream_success">Aggiunto alla Playlist</string>
<string name="playlist_thumbnail_change_success">Miniatura della Playlist cambiata.</string>
<string name="playlist_thumbnail_change_success">Copertina playlist cambiata.</string>
<string name="playlist_delete_failure">Impossibile eliminare la Playlist.</string>
<string name="caption_none">Nessun Sottotitolo</string>
<string name="resize_fit">Rientrato</string>
@ -352,7 +352,7 @@
<string name="import_network_expensive_warning">Tieni presente che questa operazione può consumare una grande quantità di traffico dati.
\n
\nVuoi continuare?</string>
<string name="download_thumbnail_title">Carica Anteprime</string>
<string name="download_thumbnail_title">Carica Copertine</string>
<string name="download_thumbnail_summary">Disabilita per prevenire il caricamento delle anteprime, risparmiando dati e memoria. La modifica di questa opzione cancellerà la cache delle immagini in memoria e sul disco.</string>
<string name="thumbnail_cache_wipe_complete_notice">Cache immagini svuotata</string>
<string name="metadata_cache_wipe_title">Pulisci Cache Metadati</string>
@ -393,11 +393,11 @@
<string name="skip_silence_checkbox">Avanzamento veloce durante il silenzio</string>
<string name="playback_step">Step</string>
<string name="playback_reset">Reset</string>
<string name="minimize_on_exit_title">Minimizza al cambio dell\'applicazione</string>
<string name="minimize_on_exit_summary">Azione quando si passa ad un\'altra app dal lettore video principale — %s</string>
<string name="minimize_on_exit_none_description">Nessuna</string>
<string name="minimize_on_exit_background_description">Minimizza al lettore in sottofondo</string>
<string name="minimize_on_exit_popup_description">Minimizza al lettore popup</string>
<string name="minimize_on_exit_title">Riduci Cambiando App</string>
<string name="minimize_on_exit_summary">Azione da eseguire cambiando app dal lettore video principale — %s</string>
<string name="minimize_on_exit_none_description">Niente</string>
<string name="minimize_on_exit_background_description">Riduci in Sottofondo</string>
<string name="minimize_on_exit_popup_description">Riduci a Popup</string>
<string name="channels">Canali</string>
<string name="playlists">Playlist</string>
<string name="tracks">Tracce</string>
@ -423,7 +423,7 @@
<string name="selection">Selezione</string>
<string name="updates_setting_title">Aggiornamenti</string>
<string name="updates_setting_description">Mostra una notifica per suggerire l\'aggiornamento dell\'app se una nuova versione è disponibile</string>
<string name="list_view_mode">Visualizzazione a lista</string>
<string name="list_view_mode">Modalità Visualizzazione Lista</string>
<string name="list">Lista</string>
<string name="grid">Griglia</string>
<string name="auto">Automatica</string>
@ -433,14 +433,14 @@
<string name="missions_header_finished">Finito</string>
<string name="missions_header_pending">In attesa</string>
<string name="paused">in pausa</string>
<string name="queued">in coda</string>
<string name="queued">accodato</string>
<string name="post_processing">post-processo</string>
<string name="enqueue">Accoda</string>
<string name="permission_denied">Azione negata dal sistema</string>
<string name="download_failed">Download fallito</string>
<string name="download_finished">Download terminato</string>
<string name="download_finished_more">%s download terminati</string>
<string name="generate_unique_name">Genera un nome unico</string>
<string name="generate_unique_name">Genera Nome Univoco</string>
<string name="overwrite">Sovrascrivi</string>
<string name="overwrite_finished_warning">Esiste già un file scaricato con lo stesso nome</string>
<string name="download_already_running">C\'è un download in corso con questo nome</string>
@ -484,11 +484,11 @@
<string name="missing_file">File spostato o cancellato</string>
<string name="overwrite_unrelated_warning">Esiste già un file con questo nome</string>
<string name="overwrite_failed">impossibile sovrascrivere il file</string>
<string name="download_already_pending">C\'è un download in corso con questo nome</string>
<string name="download_already_pending">C\'è un download in attesa con questo nome</string>
<string name="error_postprocessing_stopped">NewPipe è stato chiuso mentre lavorava sul file</string>
<string name="error_insufficient_storage">Spazio insufficiente sul dispositivo</string>
<string name="error_progress_lost">Progresso perso poiché il file è stato eliminato</string>
<string name="confirm_prompt">Sei sicuro\?</string>
<string name="confirm_prompt">Pulire la cronologia dei download o eliminare tutti i file scaricati\?</string>
<string name="enable_queue_limit_desc">Sarà avviato un solo dowload per volta</string>
<string name="start_downloads">Avvia downloads</string>
<string name="pause_downloads">Metti in pausa i downloads</string>
@ -519,10 +519,10 @@
<string name="default_kiosk_page_summary">Contenuti in Evidenza Predefiniti</string>
<string name="seek_duration_title">Durata Avanzamento e Riavvolgimento Rapidi</string>
<string name="peertube_instance_url_title">Istanze PeerTube</string>
<string name="peertube_instance_url_summary">Imposta le tue istanze PeerTube preferite</string>
<string name="peertube_instance_url_help">Trova le istanze più adatte a te su https://joinpeertube.org/instances#instances-list</string>
<string name="peertube_instance_url_summary">Seleziona le istanze PeerTube preferite</string>
<string name="peertube_instance_url_help">Trova le istanze più adatte a te su %s</string>
<string name="peertube_instance_add_title">Aggiungi Istanza</string>
<string name="peertube_instance_add_help">Inserisci URL Istanza</string>
<string name="peertube_instance_add_help">Inserisci URL istanza</string>
<string name="peertube_instance_add_fail">Impossibile convalidare l\'istanza</string>
<string name="peertube_instance_add_https_only">Sono supportati solo gli URL HTTPS</string>
<string name="peertube_instance_add_exists">L\'istanza esiste già</string>
@ -533,4 +533,14 @@
<string name="recovering">recupero</string>
<string name="error_download_resource_gone">Impossibile recuperare questo download</string>
<string name="choose_instance_prompt">Scegli un\'Istanza</string>
<string name="enable_lock_screen_video_thumbnail_title">Abilita Copertine sulla Schermata di Blocco</string>
<string name="enable_lock_screen_video_thumbnail_summary">Durante la riproduzione in sottofondo, verrà mostrata la copertina del video sulla schermata di blocco</string>
<string name="clear_download_history">Svuota Cronologia Download</string>
<string name="delete_downloaded_files">Elimina File Scaricati</string>
<string name="deleted_downloads">%1$s download eliminati</string>
<string name="permission_display_over_apps">Consentire la visualizzazione sopra altre applicazioni</string>
<string name="app_language_title">Lingua Applicazione</string>
<string name="systems_language">Predefinita di Sistema</string>
<string name="subtitle_activity_recaptcha">Premere \"Fatto\" quando risolto</string>
<string name="recaptcha_done_button">Fatto</string>
</resources>

View File

@ -106,8 +106,8 @@
<string name="could_not_load_image">画像を読み込みできません</string>
<string name="app_ui_crash">アプリ/UI がクラッシュしました</string>
<string name="info_labels">何:\\\\n提案:\\\\nコンテンツ言語:\\\\nサービス:\\\\nGMT 時間:\\\\nパッケージ:\\\\nバージョン:\\\\nOSバージョン:</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
<string name="reCaptcha_title">reCAPTCHA の要求</string>
<string name="recaptcha">reCAPTCHA</string>
<string name="title_activity_recaptcha">reCAPTCHA の要求</string>
<string name="recaptcha_request_toast">reCAPTCHA を要求しました</string>
<string name="black_theme_title">ブラック</string>
<string name="all">すべて</string>
@ -212,7 +212,7 @@
<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="no_channel_subscribed_yet">登録しているチャンネルはありません</string>
<string name="select_a_kiosk">Kioskを選択</string>
<string name="kiosk">Kiosk</string>
<string name="trending">人気</string>
@ -232,8 +232,8 @@
<string name="just_once">一度だけ</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="import_data_summary">既存の履歴と登録リストは上書きされます</string>
<string name="export_data_summary">履歴や登録リスト、プレイリストをエクスポートします</string>
<string name="player_recoverable_failure">再生エラーからの回復中</string>
<string name="external_player_unsupported_link_type">外部プレイヤーは、これらのタイプのリンクをサポートしていません</string>
<string name="invalid_url_toast">無効なURL</string>
@ -254,7 +254,7 @@
<string name="preferred_player_fetcher_notification_message">コンテンツを読み込んでいます</string>
<string name="controls_download_desc">動画ファイルをダウンロード</string>
<string name="show_info">情報を表示</string>
<string name="tab_bookmarks">ブックマーク</string>
<string name="tab_bookmarks">プレイリスト</string>
<string name="download_thumbnail_title">サムネイルを読み込む</string>
<string name="thumbnail_cache_wipe_complete_notice">画像キャッシュを消去しました</string>
<string name="metadata_cache_wipe_title">キャッシュを消去</string>
@ -301,8 +301,8 @@
<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="subscriptions_import_unsuccessful">登録リストがインポートできませんでした</string>
<string name="subscriptions_export_unsuccessful">登録リストがエクスポートできませんでした</string>
<string name="playback_tempo">速度</string>
<string name="playback_pitch">音程</string>
<string name="playback_default">デフォルト</string>
@ -330,7 +330,7 @@
<string name="delete_search_history_alert">すべての検索履歴を削除しますか?</string>
<string name="invalid_source">このファイル/コンテンツはありません</string>
<plurals name="subscribers">
<item quantity="other">登録者数 %s 人</item>
<item quantity="other">%s を登録しています</item>
</plurals>
<string name="no_views">視聴なし</string>
<plurals name="views">
@ -339,7 +339,7 @@
<string name="one_item_deleted">1 つのアイテムが削除されました。</string>
<string name="give_back">支援する</string>
<string name="privacy_policy_encouragement">NewPipe プロジェクトはあなたのプライバシーを非常に大切にしています。あなたの同意がない限り、アプリはいかなるデータも収集しません。NewPipe のプライバシー・ポリシーでは、クラッシュリポート送信時にどのような種類のデータが送信・記録されるかを詳細に説明しています。</string>
<string name="app_license">NewPipe は著作権が自由のソフトウェアです。あなたは自由にそれを使用し、研究し、そして改善することができます。あなたは、GNU フリーソフトウェア財団が公開する GNU General Public ライセンス バージョン3以降の下に、自由に再配布・修正を行うことができます。</string>
<string name="app_license">NewPipe はコピーレフトなソフトウェアです。あなたは自由にそれを使用し、研究し、そして改善することができます。あなたは、GNU フリーソフトウェア財団が公開する GNU General Public ライセンス バージョン3以降の下に、自由に再配布・修正を行うことができます。</string>
<string name="title_last_played">最終再生日時</string>
<string name="title_most_played">最も再生した動画</string>
<string name="resize_zoom">ズーム</string>
@ -360,10 +360,10 @@
<string name="caption_auto_generated">自動生成</string>
<string name="caption_setting_description">プレーヤーのキャプションテキストの縮尺と背景スタイルを変更します。有効にするには、アプリの再起動が必要です。</string>
<string name="empty_subscription_feed_subtitle">何もありません</string>
<string name="import_youtube_instructions">保存したエクスポートファイルからYouTubeの購読をインポート:
\n
\n1. このURLを開きます: %1$s
\n2. ログインしていなければログインします
<string name="import_youtube_instructions">保存したエクスポートファイルからYouTubeの登録をインポート:
\n
\n1. このURLを開きます: %1$s
\n2. ログインしていなければログインします
\n3. ダウンロードが始まります (これがエクスポートファイルです)</string>
<string name="playback_reset">リセット</string>
<string name="accept">同意する</string>
@ -393,7 +393,7 @@
<string name="unhook_checkbox">速度と音程を連動せずに変更 (歪むかもしれません)</string>
<string name="skip_silence_checkbox">無音の間に早送り</string>
<string name="playback_step">音程幅</string>
<string name="unsubscribe">購読解除</string>
<string name="unsubscribe">登録解除</string>
<string name="tab_new">新しいタブ</string>
<string name="tab_choose">タブを選択</string>
<string name="settings_category_updates_title">アプリの更新</string>
@ -402,7 +402,7 @@
<string name="download_to_sdcard_error_title">外部記憶装置は利用できません</string>
<string name="restore_defaults">既定値に戻す</string>
<string name="restore_defaults_confirmation">既定の設定を復元しますか\?</string>
<string name="subscribers_count_not_available">登録者数は表示できません</string>
<string name="subscribers_count_not_available">登録者数は利用できません</string>
<string name="selection">選択</string>
<string name="conferences">会議</string>
<string name="start_accept_privacy_policy">ヨーロッパの一般データ保護規制GDPRに準拠するために、NewPipeの個人情報保護方針にご注意ください。よく読んでください。
@ -415,7 +415,7 @@
<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_finished">完了</string>
<string name="missions_header_pending">保留中</string>
<string name="paused">一時停止</string>
<string name="queued">順番待ちに追加しました</string>
@ -480,7 +480,7 @@
<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="confirm_prompt">ダウンロード履歴、またはダウンロードしたファイルを消去しますか\?</string>
<string name="enable_queue_limit">ダウンロード キューの制限</string>
<string name="enable_queue_limit_desc">同時に1つのダウンロードが実行されます</string>
<string name="start_downloads">ダウンロードの開始</string>
@ -498,16 +498,42 @@
<string name="download_choose_new_path">ダウンロードフォルダーを変更して有効にします</string>
<string name="drawer_header_description">サービスの切り替え、現在の選択:</string>
<plurals name="videos">
<item quantity="other">動画</item>
<item quantity="other">%s つの動画</item>
</plurals>
<string name="default_kiosk_page_summary">デフォルトのキオスク</string>
<string name="no_one_watching">誰も見ていません</string>
<plurals name="watching">
<item quantity="other">%s 見ています</item>
<item quantity="other">%s 視聴中</item>
</plurals>
<string name="no_one_listening">誰も聞いていません</string>
<plurals name="listening">
<item quantity="other">%s リスナー</item>
</plurals>
<string name="localization_changes_requires_app_restart">アプリを再起動すると、言語が変更されます。</string>
<string name="seek_duration_title">高速早送り/巻き戻し時間</string>
<string name="peertube_instance_url_title">PeerTube インスタンス</string>
<string name="peertube_instance_url_summary">PeerTube インスタンスを選択する</string>
<string name="peertube_instance_url_help">あなたに最適なインスタンスを探せます: %s</string>
<string name="peertube_instance_add_title">インスタンスを追加</string>
<string name="peertube_instance_add_help">インスタンスの URL を入力</string>
<string name="peertube_instance_add_fail">インスタンスを検証することができませんでした</string>
<string name="peertube_instance_add_https_only">HTTPS な URL のみがサポートされています</string>
<string name="peertube_instance_add_exists">インスタンスはすでに存在しています</string>
<string name="local">ローカル</string>
<string name="recently_added">最近追加された</string>
<string name="most_liked">高評価</string>
<string name="recovering">修復中</string>
<string name="error_download_resource_gone">ダウンロードが修復できません</string>
<string name="choose_instance_prompt">インスタンスを選択</string>
<string name="enable_lock_screen_video_thumbnail_title">ロック画面の動画サムネイルを有効にする</string>
<string name="enable_lock_screen_video_thumbnail_summary">バックグラウンドプレイヤーを使用中、ロック画面に動画のサムネイルが表示されるようになります</string>
<string name="clear_download_history">ダウンロード履歴を消去</string>
<string name="delete_downloaded_files">ダウンロードしたファイルを消去</string>
<string name="deleted_downloads">%1$s 個削除しました</string>
<string name="playlist_no_uploader">自動生成 (アップローダーが見つかりません)</string>
<string name="permission_display_over_apps">他のアプリの上に表示する権限を与えてください</string>
<string name="app_language_title">アプリの言語</string>
<string name="systems_language">システムの既定</string>
<string name="subtitle_activity_recaptcha">解けたら \"完了\" を押してください</string>
<string name="recaptcha_done_button">完了</string>
</resources>

View File

@ -180,7 +180,7 @@
<string name="no_available_dir">다운로드 할 폴더를 설정에서 지정하세요</string>
<string name="msg_popup_permission">이 권한은 팝업 모드에서
\n열기 위해 필요합니다</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
<string name="recaptcha">reCAPTCHA</string>
<string name="recaptcha_request_toast">reCAPTCHA 확인 요청됨</string>
<string name="settings_category_downloads_title">다운로드</string>
<string name="settings_file_charset_title">파일명에 허용되는 문자</string>
@ -274,7 +274,7 @@
<string name="delete_all">모두 삭제하기</string>
<string name="dismiss">취소</string>
<string name="rename">이름 바꾸기</string>
<string name="reCaptcha_title">reCAPTCHA 확인</string>
<string name="title_activity_recaptcha">reCAPTCHA 확인</string>
<string name="delete_stream_history_prompt">이 항목을 시청 기록에서 삭제하시겠습니까?</string>
<string name="delete_all_history_prompt">모든 항목을 시청 기록에서 삭제하시겠습니까?</string>
<string name="title_last_played">마지막으로 재생</string>
@ -482,7 +482,7 @@
<string name="error_insufficient_storage">남은 저장공간이 없습니다</string>
<string name="error_progress_lost">파일이 삭제되어 진행이 중지되었습니다</string>
<string name="error_timeout">연결시간 초과</string>
<string name="confirm_prompt">확실합니까\?</string>
<string name="confirm_prompt">모든 다운로드 기록과 파일을 삭제합니다.확실합니까\?</string>
<string name="enable_queue_limit">다운로드 대기 제한</string>
<string name="start_downloads">다운로드 시작</string>
<string name="pause_downloads">다운로드 일시정지</string>
@ -497,10 +497,40 @@
<string name="downloads_storage_ask_summary_kitkat">매 다운로드 마다 저장경로를 묻습니다.
\n외장 SD카드에 다운로드 하고자 한다면 SAF를 선택하십시오</string>
<plurals name="videos">
<item quantity="other">%s개의 동영상</item>
<item quantity="other">동영상</item>
</plurals>
<string name="enable_queue_limit_desc">하나의 다운로드가 동시에 진행됩니다</string>
<string name="download_choose_new_path">적용하려면 다운로드 폴더를 변경하세요</string>
<string name="drawer_header_description">서비스 토글, 현재 선택된 서비스:</string>
<string name="default_kiosk_page_summary">기본 키오스크</string>
<string name="no_one_watching">시청자가 없습니다.</string>
<plurals name="watching">
<item quantity="other">%s 시청</item>
</plurals>
<string name="no_one_listening">듣고 있는 사람이 없습니다.</string>
<plurals name="listening">
<item quantity="other">%s 듣는사람</item>
</plurals>
<string name="localization_changes_requires_app_restart">앱을 재시작하면 언어가 변경됩니다.</string>
<string name="seek_duration_title">빠른-감기/되감기 찾는 시간</string>
<string name="peertube_instance_url_title">피어튜브 인스턴스</string>
<string name="peertube_instance_url_summary">당신이 선호하는 피어튜브 인스턴스를 선택하세요.</string>
<string name="peertube_instance_url_help">%s에서 당신에게 가장 잘 어울리는 인스턴스를 찾으세요.</string>
<string name="peertube_instance_add_title">인스턴스 추가하기</string>
<string name="peertube_instance_add_help">인스턴스 URL을 입력하세요.</string>
<string name="peertube_instance_add_fail">인스턴스를 검증할 수 없습니다.</string>
<string name="peertube_instance_add_https_only">오직 HTTPS URL들만 지원합니다.</string>
<string name="peertube_instance_add_exists">인스턴스가 이미 존재합니다.</string>
<string name="local">로컬</string>
<string name="recently_added">최근에 추가됨.</string>
<string name="most_liked">가장 선호하는</string>
<string name="playlist_no_uploader">자동생성된(업로더를 찾지못함)</string>
<string name="recovering">복구하기</string>
<string name="error_download_resource_gone">이 다운로드를 복구할 수 없습니다</string>
<string name="choose_instance_prompt">인스턴스를 선택하세요</string>
<string name="enable_lock_screen_video_thumbnail_title">비디어 썸네일 화면 고정을 가능하게 한다</string>
<string name="enable_lock_screen_video_thumbnail_summary">백그라운드 플레이어를 사용하는 경우 비디오 썸네일은 고정된 스크린 위에 표시됩니다.</string>
<string name="clear_download_history">다운로드 기록 삭제</string>
<string name="delete_downloaded_files">다운로드된 파일 삭제</string>
<string name="deleted_downloads">%1$s 다운로드 삭제</string>
</resources>

View File

@ -3,20 +3,20 @@
<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="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="did_you_mean">مەبەستت ئەمەیە:
\n%1$s\?</string>
<string name="share_dialog_title">"هاوبه‌شپێكردن له‌گه‌ڵ "</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>
@ -31,7 +31,7 @@
<string name="show_info">پیشاندانی زانیاری</string>
<string name="tab_main">سه‌ره‌كی</string>
<string name="tab_subscriptions">به‌شدارییه‌كان</string>
<string name="tab_bookmarks">لیستی کارپێکردنەکان نیشانەکران</string>
<string name="tab_bookmarks">خشتەی کارپێکردنەکان نیشانەکران</string>
<string name="fragment_whats_new">چی نوێ هه‌یه‌</string>
<string name="controls_background_title">لە پاشبنەما</string>
<string name="controls_popup_title">په‌نجه‌ره‌ی بچووک</string>
@ -215,8 +215,8 @@
<string name="no_available_dir">تکایە فۆڵدەرێک بۆ شوێنی داگرتن دیاریبکە لە ڕێکخستنەکان</string>
<string name="msg_popup_permission">ئەم دەسەڵاتە پێویستە بۆ
\nکردنەوەی پەنجەرەی بچووک</string>
<string name="reCaptchaActivity" translatable="false">reCAPTCHA</string>
<string name="reCaptcha_title">reCAPTCHA داواکاری</string>
<string name="recaptcha" translatable="false">reCAPTCHA</string>
<string name="title_activity_recaptcha">reCAPTCHA داواکاری</string>
<string name="recaptcha_request_toast">reCAPTCHA داواکراوە</string>
<string name="settings_category_downloads_title">داگرتن</string>
<string name="charset_letters_and_digits">پیت و ژمارەکان</string>
@ -497,8 +497,8 @@
<string name="default_kiosk_page_summary">کیۆسکی بنەڕەتی</string>
<string name="seek_duration_title">خێرا بردنە پێشەوە\\ گێڕانەوە بۆکاتی سەرەتا</string>
<string name="peertube_instance_url_title">دۆخی PeerTube</string>
<string name="peertube_instance_url_summary">ئارەزوومەندییەکانی دۆخی PeerTube ڕێکبخە</string>
<string name="peertube_instance_url_help">ئەو دۆخانە بدۆزەرەوە کە لەگەڵ خۆتدا دەگونجێن لە https://joinpeertube.org/instances#instances-list</string>
<string name="peertube_instance_url_summary">ئارەزوومەندییەکانی دۆخی پێرتوبی ڕێکبخە</string>
<string name="peertube_instance_url_help">ئەو دۆخانە بدۆزەرەوە کە لەگەڵ خۆتدا دەگونجێن لە %s</string>
<string name="peertube_instance_add_title">زیادکردنی دۆخ</string>
<string name="peertube_instance_add_help">بەستەری دۆخ دابنێ</string>
<string name="peertube_instance_add_fail">ناتوانرێ پشتگیری دۆخەکە بکرێ</string>
@ -517,7 +517,7 @@
<string name="error_insufficient_storage">بیرگەی ناوەکیت پڕبووە</string>
<string name="error_progress_lost">کردارەکە شکستی هێنا, چونکە ئەو فایلە سڕاوەتەوە</string>
<string name="error_timeout">هێڵی ئینتەرنێت نەما</string>
<string name="confirm_prompt">ئایا دڵنیای؟</string>
<string name="confirm_prompt">ئایا دەتەوێ مێژووی داگرتنەکانت بسڕدرێنەوە یان هەموو فایلە داگیراوەکان بسڕدرێنەوە؟</string>
<string name="enable_queue_limit">سنوری ڕیزبوونی داگرتنەکان</string>
<string name="enable_queue_limit_desc">تەنها یەک داگرتن کاردەکات لەیەک کاتدا</string>
<string name="start_downloads">دەستپێکردنەوەی داگرتنەکان</string>
@ -536,4 +536,14 @@
<string name="recovering">دەگەڕێنرێتەوە</string>
<string name="error_download_resource_gone">ناتوانرێ ئەم داگرتنە بهێنرێتەوە</string>
<string name="choose_instance_prompt">دۆخێک هەڵبژێرە</string>
<string name="enable_lock_screen_video_thumbnail_title">چالاککردنی وێنۆچکەی ڤیدیۆی داخستنی ڕوونما</string>
<string name="enable_lock_screen_video_thumbnail_summary">کاتێ کارپێکەری پاشبنەما کاردەکات ئەوا وێنۆچکەی ڤیدیۆکە لە ڕوونما داخراوەکەدا نیشاندەدرێت</string>
<string name="clear_download_history">سڕینەوەی مێژووی داگرتن</string>
<string name="delete_downloaded_files">سڕینەوەی فایلە داگیراوەکان</string>
<string name="deleted_downloads">%1$ لە داگرتنەکان سڕانەوە</string>
<string name="permission_display_over_apps">دەسەڵاتی پێبدە بۆ پیشاندان لەسەرووی ئەپەکانیترەوە</string>
<string name="app_language_title">زمانی ئەپ</string>
<string name="systems_language">بنەڕەتی سیستەم</string>
<string name="subtitle_activity_recaptcha">گرتە بکە لەسەر ”تەواو” کاتێ کە چارەسەرکرا</string>
<string name="recaptcha_done_button">تەواو</string>
</resources>

View File

@ -153,8 +153,8 @@
<string name="no_available_dir">Prašome pasirinkti galimą atsisiuntimų aplankalą</string>
<string name="msg_popup_permission">Šis leidimas nereikalingas, kad atidarytiviššokančio lango rėžime</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
<string name="reCaptcha_title">reCAPTCHA iššūkis</string>
<string name="recaptcha">reCAPTCHA</string>
<string name="title_activity_recaptcha">reCAPTCHA iššūkis</string>
<string name="recaptcha_request_toast">reCAPTCHA prašomas iššūkis</string>
<string name="subscribe_button_title">Prenumeruoti</string>

View File

@ -230,8 +230,8 @@
<string name="no_available_dir">Одберете достапна локација за превземања</string>
<string name="msg_popup_permission">Оваа привилегија е потребна за
\nотворање во подпрозорче</string>
<string name="reCaptchaActivity">„reCAPTCHA“</string>
<string name="reCaptcha_title">reCAPTCHA Предизвик</string>
<string name="recaptcha">„reCAPTCHA“</string>
<string name="title_activity_recaptcha">reCAPTCHA Предизвик</string>
<string name="recaptcha_request_toast">Потребен е reCAPTCHA предизвик</string>
<string name="settings_category_downloads_title">Превземања</string>
<string name="settings_file_charset_title">Дозволени знаци во имињата на датотеките</string>

View File

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources><string name="main_bg_subtitle">Tekan carian untuk bermula</string>
<resources>
<string name="main_bg_subtitle">Tekan carian untuk bermula</string>
<string name="view_count_text">%1$s tontonan</string>
<string name="upload_date_text">Diterbitkan pada %1$s</string>
<string name="no_player_found">Tiada pemain strim ditemui. Adakah anda mahu memasang VLC\?</string>
@ -27,7 +28,6 @@
<string name="subscription_change_failed">Tidak dapat menukar langganan</string>
<string name="subscription_update_failed">Tidak dapat mengemaskini langganan</string>
<string name="show_info">Papar maklumat</string>
<string name="tab_main">Utama</string>
<string name="tab_subscriptions">Langganan</string>
<string name="tab_bookmarks">Penanda halaman Senarai main</string>
@ -38,12 +38,12 @@
<string name="controls_background_title">Latar Belakang</string>
<string name="controls_popup_title">Popup</string>
<string name="controls_add_to_playlist_title">Tambahkan Ke</string>
<string name="download_path_title">Lokasi muat turun video</string>
<string name="download_path_summary">Lokasi untuk menyimpan video yang dimuat turun</string>
<string name="download_path_dialog_title">Memasukkan lokasi muat turun video</string>
<string name="download_path_title">Folder muat turun video</string>
<string name="download_path_summary">Fail video yang dimuat turun disimpan di sini</string>
<string name="download_path_dialog_title">Pilih folder muat turun untuk fail video</string>
<string name="download_path_audio_title">Lokasi muat turun audio</string>
<string name="download_path_audio_summary">Audio yang dimuat turun disimpan sini</string>
<string name="download_path_audio_dialog_title">Memasukkan lokasi muat turun fail audio</string>
<string name="download_path_audio_summary">Fail audio yang dimuat turun disimpan di sini</string>
<string name="download_path_audio_dialog_title">Pilih folder muat turun untuk fail audio</string>
<string name="autoplay_by_calling_app_title">Main secara automatik</string>
<string name="autoplay_by_calling_app_summary">Memain video apabila NewPipe dipanggil dari app lain</string>
<string name="default_resolution_title">Resolusi utama</string>
@ -224,13 +224,13 @@
<string name="short_billion">B</string>
<string name="no_subscribers">Tiada pelanggan</string>
<plurals name="subscribers">
<item quantity="other">%s pelanggan</item>
</plurals>
<item quantity="other">%s pelanggan</item>
</plurals>
<string name="subscribers_count_not_available">Kira pelanggan tidak tersedia</string>
<string name="no_views">Tiada tontonan</string>
<plurals name="views">
<item quantity="other">%s tontonan</item>
</plurals>
<item quantity="other">%s tontonan</item>
</plurals>
<string name="no_videos">Tiada video</string>
<string name="start">Mula</string>
<string name="pause">Jeda</string>
@ -258,8 +258,8 @@
<string name="msg_popup_permission">Kebenaran ini diperlukan untuk
\nbuka dalam mod popup</string>
<string name="one_item_deleted">1 item dipadamkan.</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
<string name="reCaptcha_title">Cabaran reCAPTCHA</string>
<string name="recaptcha">reCAPTCHA</string>
<string name="title_activity_recaptcha">Cabaran reCAPTCHA</string>
<string name="recaptcha_request_toast">Meminta kod reCAPTCHA</string>
<string name="settings_category_downloads_title">Muat turun</string>
<string name="settings_file_charset_title">Karakter yang dibenarkan dalam nama fail</string>
@ -459,4 +459,6 @@
<string name="pause_downloads_on_mobile">Jeda semasa beralih ke data mudah alih</string>
<string name="pause_downloads_on_mobile_desc">Muat turun yang tidak dapat dihentikan akan dimulakan semula</string>
<string name="missions_header_pending">Menunggu</string>
<string name="download_choose_new_path">Ubah folder muat turun untuk melihat kesan</string>
<string name="enable_lock_screen_video_thumbnail_title">Dayakan lakaran kecil video skrin kunci</string>
</resources>

View File

@ -106,8 +106,8 @@
<string name="add">Nytt mål</string>
<string name="msg_url_malform">Feilaktig nettadresse eller manglende internettilknytning</string>
<string name="no_available_dir">Definer en nedlastingsmappe senere i innstillingene</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
<string name="reCaptcha_title">reCAPTCHA-oppgave</string>
<string name="recaptcha">reCAPTCHA</string>
<string name="title_activity_recaptcha">reCAPTCHA-oppgave</string>
<string name="open_in_popup_mode">Åpne i oppsprettsmodus</string>
<string name="popup_mode_share_menu_title">NewPipe oppsprettsmodus</string>
<string name="default_popup_resolution_title">Forvalgt oppsprettsoppløsning</string>
@ -516,4 +516,30 @@
</plurals>
<string name="localization_changes_requires_app_restart">Språk vil ikke bli endret før programmet startes på ny.</string>
<string name="default_kiosk_page_summary">Forvalgt kiosk</string>
<string name="peertube_instance_url_title">PeerTube-instanser</string>
<string name="local">Lokal</string>
<string name="recently_added">Nylig lagt til</string>
<string name="most_liked">Mest likt</string>
<string name="choose_instance_prompt">Velg en instans</string>
<string name="clear_download_history">Tøm nedlastingshistorikk</string>
<string name="delete_downloaded_files">Slett nedlastede filer</string>
<string name="deleted_downloads">Slettet %1$s nedlastninger</string>
<string name="enable_lock_screen_video_thumbnail_title">Aktiver videominiatyrbilde på låseskjerm</string>
<string name="enable_lock_screen_video_thumbnail_summary">Når du bruker bakgrunnsspilleren, vises ent videominiatyrbilde på låseskjermen</string>
<string name="peertube_instance_url_summary">Velg dine favoritter blandt PeerTube-instansene</string>
<string name="peertube_instance_url_help">Finn instansene som passer deg best på %s</string>
<string name="peertube_instance_add_title">Legg til instans</string>
<string name="peertube_instance_add_help">Skriv inn nettadresse til instans</string>
<string name="peertube_instance_add_fail">Kunne ikke bekrefte instans</string>
<string name="peertube_instance_add_https_only">Kun HTTPS-nettadresser støttes</string>
<string name="peertube_instance_add_exists">Instansen finnes allerede</string>
<string name="playlist_no_uploader">Autogenerert (fant ingen opplaster)</string>
<string name="recovering">gjenoppretter</string>
<string name="error_download_resource_gone">Kan ikke gjenopprette denne nedlastingen</string>
<string name="seek_duration_title">Hurtigframoverspoling/-tilbakeblafringsvarighet</string>
<string name="permission_display_over_apps">Gi tilgang til visning over andre programmer</string>
<string name="app_language_title">Programspråk</string>
<string name="systems_language">Systemforvalg</string>
<string name="subtitle_activity_recaptcha">Trykk \"Ferdig\" når den er løst</string>
<string name="recaptcha_done_button">Ferdig</string>
</resources>

View File

@ -230,8 +230,8 @@
<string name="msg_copied">Gekopieerd naar klembord</string>
<string name="no_available_dir">Kies een beschikbare downloadmap</string>
<string name="msg_popup_permission">Deze toestemming is vereist voor te openen in pop-upmodus</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
<string name="reCaptcha_title">reCAPTCHA-uitdaging</string>
<string name="recaptcha">reCAPTCHA</string>
<string name="title_activity_recaptcha">reCAPTCHA-uitdaging</string>
<string name="recaptcha_request_toast">reCAPTCHA-uitdaging gevraagd</string>
<string name="settings_category_downloads_title">Download</string>
<string name="settings_file_charset_title">Toegelaten tekens in bestandsnamen</string>

View File

@ -107,8 +107,8 @@
<string name="msg_copied">Gekopieerd naar klembord</string>
<string name="no_available_dir">Kies een beschikbare downloadmap</string>
<string name="black_theme_title">Zwart</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
<string name="reCaptcha_title">reCAPTCHA-uitdaging</string>
<string name="recaptcha">reCAPTCHA</string>
<string name="title_activity_recaptcha">reCAPTCHA-uitdaging</string>
<string name="recaptcha_request_toast">reCAPTCHA-uitdaging gevraagd</string>
<string name="open_in_popup_mode">Openen in pop-upmodus</string>
<string name="all">Alles</string>

View File

@ -1,2 +1,76 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources></resources>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="view_count_text">%1$s vistas</string>
<string name="upload_date_text">Publicat lo %1$s</string>
<string name="no_player_found">Cap de legidor de flus trobat. Volètz installar VLC\?</string>
<string name="no_player_found_toast">Cap de legidor de flus trobat (podètz installar VLC per lo legir).</string>
<string name="install">Installar</string>
<string name="cancel">Anullar</string>
<string name="open_in_browser">Dobrir dins lo navegador</string>
<string name="open_in_popup_mode">Dobrir en mòde fenestron</string>
<string name="share">Partejar</string>
<string name="download">Telecargar</string>
<string name="controls_download_desc">Telecargar lo fichièr de flus</string>
<string name="search">Recercar</string>
<string name="settings">Paramètres</string>
<string name="did_you_mean">Voliatz dire: %1$s\?</string>
<string name="share_dialog_title">Partejar amb</string>
<string name="choose_browser">Causir un navegador</string>
<string name="screen_rotation">rotacion</string>
<string name="use_external_video_player_title">Utilizar un legidor de vidèo extèrne</string>
<string name="popup_mode_share_menu_title">Mòde fenestron de NewPipe</string>
<string name="subscribe_button_title">S\'abonar</string>
<string name="subscribed_button_title">Abonat</string>
<string name="unsubscribe">Anullar abonament</string>
<string name="subscription_change_failed">Impossible de cambiar l\'abonament</string>
<string name="subscription_update_failed">Impossible d\'actualizar l\'abonament</string>
<string name="show_info">Afichar las informacions</string>
<string name="tab_main">Principal</string>
<string name="tab_subscriptions">Abonaments</string>
<string name="main_bg_subtitle">Clicatz sul boton de recèrca per començar</string>
<string name="use_external_video_player_summary">Lèva l\'àudio per CÈRTAS resolucions</string>
<string name="use_external_audio_player_title">Utilizar lo legidor àudio extèrne</string>
<string name="channel_unsubscribed">Abonament a la cadena anullat</string>
<string name="tab_bookmarks">Listas de lectura enregistradas</string>
<string name="tab_new">Onglet novèl</string>
<string name="tab_choose">Causir un onglet</string>
<string name="fragment_whats_new">Çò novèl</string>
<string name="controls_background_title">Rèireplan</string>
<string name="controls_popup_title">Fenestron</string>
<string name="controls_add_to_playlist_title">Apondre a</string>
<string name="download_path_title">Dorsièr de telecargament de vidèos</string>
<string name="download_path_summary">Los fichièrs vidèo telecargats son aquí</string>
<string name="download_path_dialog_title">Causissètz lo dorsièr de telecargament de las vidèos</string>
<string name="download_path_audio_title">Dorsièr de telecargament dels àudios</string>
<string name="download_path_audio_summary">Los fichièrs àudio telecargats son estremats aicí</string>
<string name="download_path_audio_dialog_title">Causissètz lo dorsièr de telecargament pels àudios</string>
<string name="download_choose_new_path">Cambiatz los dorsièrs de telecargament per venga efectiu</string>
<string name="autoplay_by_calling_app_title">Lectura automatica</string>
<string name="autoplay_by_calling_app_summary">Legís una vidèo quand NewPIpe es apelat dempuèi una autra aplicacion</string>
<string name="default_resolution_title">Resolucion per defaut</string>
<string name="default_popup_resolution_title">Resolucion per defaut dels fenestrons</string>
<string name="show_higher_resolutions_title">Afichar de resolucions mai nautas</string>
<string name="show_higher_resolutions_summary">Totes los dispositius pòdon pas legir de vidèos 2K/4K</string>
<string name="play_with_kodi_title">Jogar amb Kodi</string>
<string name="kore_not_found">Trobam pas l\'aplicacion Kore. La volètz installar\?</string>
<string name="show_play_with_kodi_title">Afichar l\'opcion \"Legir amb Kodi\"</string>
<string name="enable_lock_screen_video_thumbnail_title">Activar la vidèo miniatura sus l\'ecran de blocatge</string>
<string name="show_play_with_kodi_summary">Afichar una opcion per legir una vidèo dempuèi Kodi</string>
<string name="enable_lock_screen_video_thumbnail_summary">En utilizant lo legidor de rèireplan, una vidèo miniatura s\'aficharà sus l\'ecran de blocatge</string>
<string name="play_audio">Àudio</string>
<string name="default_audio_format_title">Format àudio per defaut</string>
<string name="default_video_format_title">Format vidèo per defaut</string>
<string name="theme_title">Tèma</string>
<string name="light_theme_title">Clar</string>
<string name="dark_theme_title">Escur</string>
<string name="black_theme_title">Negre</string>
<string name="popup_remember_size_pos_title">Se remembrar la talha e la posicion del fenestron</string>
<string name="popup_remember_size_pos_summary">Se remembrar las darrièras talha e posicion del fenestron</string>
<string name="use_inexact_seek_title">Utilzar la recèrca rapida inexacta</string>
<string name="use_inexact_seek_summary">La recèrca inexacta permet a l\'utilizaire de recercar mai rapidament una posicion amb mens de precision</string>
<string name="seek_duration_title">Durada d\'avançada/reculada rapida</string>
<string name="download_thumbnail_title">Cargar las miniaturas</string>
<string name="show_comments_title">Afichar los comentaris</string>
<string name="show_comments_summary">Desactivar per afichar pas mai los comentaris</string>
<string name="auto_queue_title">Apondre la vidèo seguenta dins la coa de lectura</string>
</resources>

View File

@ -237,8 +237,8 @@
<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">ReCaptcha</string>
<string name="title_activity_recaptcha">ReCaptcha ਚੁਣੌਤੀ</string>
<string name="recaptcha_request_toast">ReCaptcha ਚੁਣੌਤੀ ਲਈ ਬੇਨਤੀ</string>
<string name="settings_category_downloads_title">ਡਾਊਨਲੋਡ</string>
<string name="settings_file_charset_title">ਫਾਈਲ ਨਾਮ ਵਿੱਚ ਪ੍ਰਵਾਨਿਤ ਅੱਖਰ</string>

View File

@ -106,8 +106,8 @@
<string name="app_ui_crash">Awaria aplikacji/interfejsu</string>
<string name="use_tor_summary">(Eksperymentalne) Wymuś pobieranie przez Tora w celu zwiększenia prywatności (strumieniowe wideo nie jest jeszcze obsługiwane).</string>
<string name="start">Start</string>
<string name="reCaptchaActivity">CAPTCHA</string>
<string name="reCaptcha_title">Wyzwanie reCAPTCHA</string>
<string name="recaptcha">CAPTCHA</string>
<string name="title_activity_recaptcha">Wyzwanie reCAPTCHA</string>
<string name="recaptcha_request_toast">Wymagane wyzwanie dotyczące reCAPTCHA</string>
<string name="use_external_video_player_summary">Usuwa dźwięk w niektórych rozdzielczościach</string>
<string name="controls_background_title">Tło</string>
@ -491,7 +491,7 @@
<string name="error_postprocessing_stopped">NewPipe został zamknięty podczas pracy nad plikiem</string>
<string name="error_insufficient_storage">Brak miejsca na urządzeniu</string>
<string name="error_progress_lost">Postęp został utracony ze wzgledu na usunięcie pliku</string>
<string name="confirm_prompt">Czy jesteś pewien\?</string>
<string name="confirm_prompt">Czy chcesz wyczyścić historię pobierania lub usunąć wszystkie pobrane pliki\?</string>
<string name="enable_queue_limit">Ogranicz kolejkę pobierania</string>
<string name="enable_queue_limit_desc">Tylko jedno pobieranie będzie realizowane jednocześnie</string>
<string name="start_downloads">Rozpocznij pobieranie</string>
@ -525,12 +525,12 @@
<string name="localization_changes_requires_app_restart">Język zmieni się po ponownym uruchomieniu aplikacji.</string>
<string name="seek_duration_title">Krok czasu przewijania</string>
<string name="peertube_instance_url_title">Wystąpienia PeerTube</string>
<string name="peertube_instance_url_summary">Ustaw swoje ulubione instancje peertube</string>
<string name="peertube_instance_url_help">Znajdź instancje, które najbardziej Ci odpowiadają, na https://joinpeertube.org/instances#instances-list</string>
<string name="peertube_instance_url_summary">Wybierz swoje ulubione instancje PeerTube</string>
<string name="peertube_instance_url_help">Znajdź wystąpienia, które najbardziej Ci odpowiadają na %s</string>
<string name="peertube_instance_add_title">Dodaj instancję</string>
<string name="peertube_instance_add_help">Wprowadź adres URL instancji</string>
<string name="peertube_instance_add_fail">Nie udało się sprawdzić poprawności instancji</string>
<string name="peertube_instance_add_https_only">Obsługiwane są tylko adresy URL https</string>
<string name="peertube_instance_add_fail">Nie można sprawdzić poprawności instancji</string>
<string name="peertube_instance_add_https_only">Obsługiwane są tylko adresy URL HTTPS</string>
<string name="peertube_instance_add_exists">Instancja już istnieje</string>
<string name="local">Lokalny</string>
<string name="recently_added">Ostatnio dodane</string>
@ -539,4 +539,14 @@
<string name="recovering">odzyskiwanie</string>
<string name="error_download_resource_gone">Nie można odzyskać tego pobrania</string>
<string name="choose_instance_prompt">Wybierz instancję</string>
<string name="enable_lock_screen_video_thumbnail_title">Włącz miniaturę wideo na ekranie blokady</string>
<string name="enable_lock_screen_video_thumbnail_summary">Podczas korzystania z odtwarzacza w tle na ekranie blokady zostanie wyświetlona miniatura filmu</string>
<string name="clear_download_history">Wyczyść historię pobierania</string>
<string name="delete_downloaded_files">Usuń pobrane pliki</string>
<string name="deleted_downloads">Usunięte %1$s pobrania</string>
<string name="permission_display_over_apps">Zezwól na wyświetlanie w innych aplikacjach</string>
<string name="app_language_title">Język aplikacji</string>
<string name="systems_language">Domyślny systemu</string>
<string name="subtitle_activity_recaptcha">Po rozwiązaniu naciśnij „Gotowe”</string>
<string name="recaptcha_done_button">Gotowe</string>
</resources>

View File

@ -23,7 +23,7 @@
<string name="dark_theme_title">Noite</string>
<string name="default_audio_format_title">Formato de áudio padrão</string>
<string name="default_resolution_title">Resolução padrão</string>
<string name="delete">Excluir</string>
<string name="delete">Apagar</string>
<string name="detail_dislikes_img_view_description">Não curtidas</string>
<string name="detail_likes_img_view_description">Curtidas</string>
<string name="download">Baixar</string>
@ -50,8 +50,8 @@
<string name="next_video_title">Próximo</string>
<string name="open_in_browser">Abrir no navegador</string>
<string name="pause">Pausar</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
<string name="reCaptcha_title">Desafio reCAPTCHA</string>
<string name="recaptcha">reCAPTCHA</string>
<string name="title_activity_recaptcha">Desafio reCAPTCHA</string>
<string name="recaptcha_request_toast">Desafio reCAPTCHA solicitado</string>
<string name="report_error">Reportar um erro</string>
<string name="retry">Tentar novamente</string>
@ -134,7 +134,7 @@ abrir em modo popup</string>
<string name="controls_popup_title">Popup</string>
<string name="controls_background_title">Segundo plano</string>
<string name="popup_remember_size_pos_title">Lembrar tamanho e posição do popup</string>
<string name="popup_remember_size_pos_summary">Lembrar do último tamanho e posição definido para o popup</string>
<string name="popup_remember_size_pos_summary">Lembra da última posição e o tamanho usado no popup</string>
<string name="settings_category_popup_title">Popup</string>
<string name="popup_resizing_indicator_title">Redimensionando</string>
<string name="use_external_video_player_summary">Remove o áudio em ALGUMAS resoluções</string>
@ -256,7 +256,7 @@ abrir em modo popup</string>
<string name="always">Sempre</string>
<string name="just_once">Uma vez</string>
<string name="toggle_orientation">Alterar orientação</string>
<string name="switch_to_background">Alterar para segundo plano</string>
<string name="switch_to_background">Trocar para segundo plano</string>
<string name="switch_to_popup">Trocar para popup</string>
<string name="switch_to_main">Trocar para principal</string>
<string name="external_player_unsupported_link_type">Players externos não suportam estes tipos de links</string>
@ -271,7 +271,7 @@ abrir em modo popup</string>
<string name="import_data_title">Importar base de dados</string>
<string name="export_data_title">Exportar base de dados</string>
<string name="import_data_summary">Sobrescreve seus dados como históricos e inscrições</string>
<string name="export_data_summary">Exportar históricos, inscrições e playlists</string>
<string name="export_data_summary">Exporta históricos, inscrições e playlists</string>
<string name="export_complete_toast">Exportado</string>
<string name="import_complete_toast">Importado</string>
<string name="no_valid_zip_file">Não há nenhum arquivo ZIP válido</string>
@ -318,7 +318,7 @@ abrir em modo popup</string>
<string name="use_inexact_seek_title">Usar pesquisa rápida</string>
<string name="use_inexact_seek_summary">A pesquisa rápida permite que o player procure resultados mais rapidamente porém com precisão reduzida</string>
<string name="auto_queue_title">Adicionar o próximo vídeo à fila automaticamente</string>
<string name="auto_queue_summary">Adicionar automaticamente um vídeo relacionado ao último da lista quando a repetição estiver desativada</string>
<string name="auto_queue_summary">Adiciona automaticamente um vídeo relacionado ao último da lista quando a repetição estiver desativada</string>
<string name="file">Arquivo</string>
<string name="invalid_directory">Pasta não encontrada</string>
<string name="invalid_source">Origem do arquivo/conteúdo não encontrada</string>
@ -361,7 +361,7 @@ abrir em modo popup</string>
<string name="download_thumbnail_title">Carregar capas</string>
<string name="thumbnail_cache_wipe_complete_notice">Cache de imagens limpo</string>
<string name="metadata_cache_wipe_title">Limpar metadados em cache</string>
<string name="metadata_cache_wipe_summary">Exclui todos os dados de páginas em cache</string>
<string name="metadata_cache_wipe_summary">Apaga todos os dados de páginas em cache</string>
<string name="metadata_cache_wipe_complete_notice">Cache de metadados limpo</string>
<string name="playback_speed_control">Controles de velocidade de reprodução</string>
<string name="playback_tempo">"Tempo "</string>
@ -377,7 +377,7 @@ abrir em modo popup</string>
<string name="caption_setting_description">Altere o tamanho da legenda e o estilo da tela de fundo. É necessário reiniciar o aplicativo para ter efeito.</string>
<string name="toast_no_player">Nenhum player instalado para reproduzir este arquivo</string>
<string name="clear_views_history_title">Limpar histórico de assistidos</string>
<string name="clear_views_history_summary">Apaga o histórico de vídeos assistidos e a lista de reprodução</string>
<string name="clear_views_history_summary">Apaga o histórico de vídeos assistidos e a posição nas reproduções</string>
<string name="delete_view_history_alert">Apagar todo o histórico de assistidos\?</string>
<string name="watch_history_deleted">Histórico de assistidos limpo.</string>
<string name="clear_search_history_title">Limpar histórico de pesquisas</string>
@ -485,9 +485,9 @@ abrir em modo popup</string>
<string name="enable_playback_resume_title">Retomar a reprodução</string>
<string name="enable_playback_resume_summary">Retorna para a última posição em reprodução</string>
<string name="enable_playback_state_lists_title">Posições em listas</string>
<string name="enable_playback_state_lists_summary">Mostrar indicadores de posição em listas</string>
<string name="enable_playback_state_lists_summary">Mostra indicadores de posiçã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="watch_history_states_deleted">Posição nas reproduções apagadas.</string>
<string name="missing_file">Arquivo movido ou excluído</string>
<string name="overwrite_unrelated_warning">Já existe um arquivo com este nome</string>
<string name="overwrite_failed">Não foi possível sobrescrever o arquivo</string>
@ -496,7 +496,7 @@ abrir em modo popup</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="confirm_prompt">Apagar todo o histórico de downloads ou excluir todos os arquivos baixados\?</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>
@ -508,9 +508,9 @@ abrir em modo popup</string>
<string name="downloads_storage_use_saf_title">Usar SAF</string>
<string name="downloads_storage_use_saf_summary">A Estrutura de Acesso ao Armazenamento permite baixar para um cartão SD.
\nAviso: alguns dispositivos não são compatíveis</string>
<string name="clear_playback_states_title">Apagar lista de reprodução</string>
<string name="clear_playback_states_summary">Deletar todo o histórico de reprodução</string>
<string name="delete_playback_states_alert">Deletar todo o histórico de reprodução\?</string>
<string name="clear_playback_states_title">Limpar posição nas reproduções</string>
<string name="clear_playback_states_summary">Apaga o histórico de posição nas reproduções</string>
<string name="delete_playback_states_alert">Apagar toda posição nas reproduções\?</string>
<string name="download_choose_new_path">Mude as pastas de download para surtir efeito</string>
<string name="drawer_header_description">Alterar serviço, selecionados:</string>
<string name="default_kiosk_page_summary">Quiosque Padrão</string>
@ -527,4 +527,28 @@ abrir em modo popup</string>
<string name="localization_changes_requires_app_restart">O idioma será atualizado assim que o aplicativo for reiniciado.</string>
<string name="seek_duration_title">Duração do avançar/retroceder rápido</string>
<string name="peertube_instance_url_title">Instâncias PeerTube</string>
<string name="peertube_instance_url_summary">Selecione instâncias PeerTube favoritas</string>
<string name="peertube_instance_url_help">Encontre instâncias PeerTube em %s</string>
<string name="peertube_instance_add_title">Adicionar instância</string>
<string name="peertube_instance_add_help">Insira o link aqui</string>
<string name="peertube_instance_add_fail">Não foi possível acessá-la</string>
<string name="peertube_instance_add_https_only">Apenas HTTPS são suportados</string>
<string name="peertube_instance_add_exists">Instância já existe</string>
<string name="local">Local</string>
<string name="recently_added">Recentes</string>
<string name="most_liked">Em alta</string>
<string name="playlist_no_uploader">Gerado automaticamente (sem criador)</string>
<string name="recovering">recuperando</string>
<string name="error_download_resource_gone">Não foi possível recuperar o download</string>
<string name="choose_instance_prompt">Escolha uma instância</string>
<string name="enable_lock_screen_video_thumbnail_title">Ativar capa do vídeo na tela de bloqueio</string>
<string name="enable_lock_screen_video_thumbnail_summary">Mostra capa do vídeo na tela de bloqueio ao usar player em segundo plano</string>
<string name="clear_download_history">Limpar histórico de downloads</string>
<string name="delete_downloaded_files">Excluir arquivos baixados</string>
<string name="deleted_downloads">%1$s arquivos excluídos</string>
<string name="permission_display_over_apps">Permita sobreposição a outros aplicativos</string>
<string name="app_language_title">Idioma do aplicativo</string>
<string name="systems_language">Padrão do sistema</string>
<string name="subtitle_activity_recaptcha">Toque em \"Feito\" ao resolver</string>
<string name="recaptcha_done_button">Feito</string>
</resources>

View File

@ -23,7 +23,7 @@
<string name="play_with_kodi_title">Reproduzir no Kodi</string>
<string name="kore_not_found">Aplicação Kore não encontrada. Instalar?</string>
<string name="show_play_with_kodi_title">Mostrar opção \"Reproduzir no Kodi\"</string>
<string name="show_play_with_kodi_summary">Exibe uma opção para reproduzir o vídeo no Kodi</string>
<string name="show_play_with_kodi_summary">Exibir uma opção para reproduzir o vídeo via Kodi media center</string>
<string name="play_audio">Áudio</string>
<string name="default_audio_format_title">Formato de áudio predefinido</string>
<string name="download_dialog_title">Transferir</string>
@ -109,7 +109,7 @@
<string name="open_in_popup_mode">Abrir no modo de janela autónoma</string>
<string name="black_theme_title">Preto</string>
<string name="all">Tudo</string>
<string name="channel">Canais</string>
<string name="channel">Canal</string>
<string name="yes">Sim</string>
<string name="later">Depois</string>
<string name="short_thousand">k</string>
@ -117,8 +117,8 @@
<string name="short_billion">B</string>
<string name="msg_popup_permission">Esta permissão é necessária
\npara o modo de janela</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
<string name="reCaptcha_title">Desafio reCAPTCHA</string>
<string name="recaptcha">reCAPTCHA</string>
<string name="title_activity_recaptcha">Desafio reCAPTCHA</string>
<string name="recaptcha_request_toast">Desafio reCAPTCHA solicitado</string>
<string name="popup_mode_share_menu_title">Modo de janela autónoma do NewPipe</string>
<string name="popup_playing_toast">Reproduzir no modo de janela autónoma</string>
@ -152,7 +152,7 @@
<string name="tab_about">Sobre</string>
<string name="tab_contributors">Colaboradores</string>
<string name="tab_licenses">Licenças</string>
<string name="app_description">Aplicação de reprodução de emissões livre para Android.</string>
<string name="app_description">Aplicação livre de reprodução de emissões para Android.</string>
<string name="view_on_github">Ver no GitHub</string>
<string name="app_license_title">Licença do NewPipe</string>
<string name="contribution_encouragement">Se tem ideias para: tradução, alterações de desenho, limpeza de código, ou alterações significativas no código fonte - todas as ajudas são bem-vindas. Quanto mais se faz, melhor ficará!</string>
@ -217,7 +217,7 @@
<string name="player_recoverable_failure">A recuperar de um erro do reprodutor</string>
<string name="main_page_content">Conteúdo da página principal</string>
<string name="blank_page_summary">Página vazia</string>
<string name="subscription_page_summary">Página de subscrições</string>
<string name="subscription_page_summary">Subscrições</string>
<string name="channel_page_summary">Página do canal</string>
<string name="select_a_channel">Selecione um canal</string>
<string name="no_channel_subscribed_yet">Não existem canais subscritos</string>
@ -225,7 +225,7 @@
<string name="kiosk">Kiosk</string>
<string name="trending">Tendências</string>
<string name="top_50">Top 50</string>
<string name="new_and_hot">Novo e popular</string>
<string name="new_and_hot">Tendências</string>
<string name="title_activity_background_player">Reprodutor em segundo plano</string>
<string name="title_activity_popup_player">Reprodutor \'popup\'</string>
<string name="play_queue_remove">Remover</string>
@ -266,7 +266,7 @@
<string name="download_thumbnail_title">Carregar miniaturas</string>
<string name="download_thumbnail_summary">Desative para parar o carregamento das miniaturas, poupar dados e utilização da memória. As alterações limpam a cache de imagem do disco e da memória.</string>
<string name="thumbnail_cache_wipe_complete_notice">Cache de imagens limpa</string>
<string name="default_content_country_title">País do conteúdo predefinido</string>
<string name="default_content_country_title">País predefinido dos conteúdos</string>
<string name="settings_category_debug_title">Depuração</string>
<string name="video_streams_empty">Não foram encontradas emissões de vídeo</string>
<string name="audio_streams_empty">Não foram encontradas emissões de áudio</string>
@ -279,7 +279,7 @@
<string name="dismiss">Rejeitar</string>
<string name="website_title">Site</string>
<string name="website_encouragement">Visite ao site NewPipe para obter mais informação e novidades.</string>
<string name="kiosk_page_summary">Página \"kiosk\"</string>
<string name="kiosk_page_summary">Página de Quiosque</string>
<string name="feed_page_summary">Página de \"Feed\"</string>
<string name="export_complete_toast">Exportados</string>
<string name="import_complete_toast">Importados</string>
@ -372,8 +372,8 @@
<string name="enqueue_on_background">Colocar em fila em segundo plano</string>
<string name="enqueue_on_popup">Colocar em fila num nova janela</string>
<string name="preferred_open_action_settings_title">Ação de \'abrir\' preferida</string>
<string name="preferred_open_action_settings_summary">Ação predefinida para abrir o conteúdo — %s</string>
<string name="set_as_playlist_thumbnail">Definir como miniatura da lista de reprodução</string>
<string name="preferred_open_action_settings_summary">Ação predefinida ao abrir o conteúdo — %s</string>
<string name="set_as_playlist_thumbnail">Definir como Miniatura da Lista de Reprodução</string>
<string name="playlist_delete_failure">Não foi possível eliminar a lista de reprodução.</string>
<string name="resize_fit">Ajustar</string>
<string name="resize_fill">Preencher</string>
@ -487,7 +487,7 @@
<string name="error_insufficient_storage">Não há espaço disponível no dispositivo</string>
<string name="error_progress_lost">Progresso perdido, porque o ficheiro foi eliminado</string>
<string name="error_timeout">Tempo limite de conexão</string>
<string name="confirm_prompt">Tem a certeza\?</string>
<string name="confirm_prompt">Quer limpar o seu histórico de descarregamentos ou apagar todos os ficheiros descarregados\?</string>
<string name="enable_queue_limit">Limitar a fila de transferências</string>
<string name="enable_queue_limit_desc">Uma transferências será executada ao mesmo tempo</string>
<string name="start_downloads">Iniciar transferências</string>
@ -518,12 +518,12 @@
<string name="localization_changes_requires_app_restart">O idioma mudará quando a app for reiniciada.</string>
<string name="seek_duration_title">Duração da busca de avanço/retrocesso rápido</string>
<string name="peertube_instance_url_title">Instâncias do PeerTube</string>
<string name="peertube_instance_url_summary">Defina as suas instâncias favoritas de peertube</string>
<string name="peertube_instance_url_help">Encontre as instâncias que lhe melhor convêm em https://joinpeertube.org/instances#instances-list</string>
<string name="peertube_instance_url_summary">Defina as suas instâncias favoritas de PeerTube</string>
<string name="peertube_instance_url_help">Encontre as instâncias que lhe melhor convêm em %s</string>
<string name="peertube_instance_add_title">Adicionar instância</string>
<string name="peertube_instance_add_help">Digite o URL da instância</string>
<string name="peertube_instance_add_fail">Falha ao validar a instância</string>
<string name="peertube_instance_add_https_only">Somente URLs HTTPS são suportadas</string>
<string name="peertube_instance_add_https_only">Somente URLs HTTPS são suportada</string>
<string name="peertube_instance_add_exists">A instância já existe</string>
<string name="local">Local</string>
<string name="recently_added">Recentemente adicionado</string>
@ -532,4 +532,14 @@
<string name="recovering">recuperando</string>
<string name="error_download_resource_gone">Não é possível recuperar este descarregamento</string>
<string name="choose_instance_prompt">Escolha uma instância</string>
<string name="enable_lock_screen_video_thumbnail_title">Ativar miniatura do vídeo no ecrã de bloqueio</string>
<string name="enable_lock_screen_video_thumbnail_summary">Ao usar o reprodutor de fundo, uma miniatura de vídeo será exibida no ecrã de bloqueio</string>
<string name="clear_download_history">Limpar histórico de descarregamentos</string>
<string name="delete_downloaded_files">Apagar ficheiros descarregados</string>
<string name="deleted_downloads">%1$s descarregamentos apagados</string>
<string name="permission_display_over_apps">Permitir sobreposição da janela sobre outras aplicações</string>
<string name="app_language_title">Idioma da aplicação</string>
<string name="systems_language">Predefinição do sistema</string>
<string name="subtitle_activity_recaptcha">Pressionar \"Aceitar\" quando terminar</string>
<string name="recaptcha_done_button">Aceitar</string>
</resources>

View File

@ -106,8 +106,8 @@
<string name="open_in_popup_mode">Deschide in modul popup</string>
<string name="msg_popup_permission">Aceasta permisiune este necesara
pentru a deschide în mod pop-up</string>
<string name="reCaptchaActivity">ReCAPTCHA</string>
<string name="reCaptcha_title">Provocare reCAPTCHA</string>
<string name="recaptcha">ReCAPTCHA</string>
<string name="title_activity_recaptcha">Provocare reCAPTCHA</string>
<string name="recaptcha_request_toast">reCAPTCHA nouă cerută</string>
<string name="popup_mode_share_menu_title">NewPipe mod pop-up</string>
<string name="default_popup_resolution_title">"Rezoluție pop-up inițială "</string>

View File

@ -124,7 +124,7 @@
<string name="info_labels">Что:\\nЗапрос:\\nЯзык контента:\\nСервис:\\nВремя по Гринвичу:\\nПакет:\\nВерсия:\\nВерсия ОС:</string>
<string name="msg_popup_permission">Это разрешение нужно для
\nвоспроизведения в окне</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
<string name="recaptcha">reCAPTCHA</string>
<string name="open_in_popup_mode">Открыть во всплывающем окне</string>
<string name="show_search_suggestions_summary">Предлагать варианты при поиске</string>
<string name="later">Позже</string>
@ -138,7 +138,7 @@
<string name="popup_remember_size_pos_summary">Помнить последние размер и позицию всплывающего окна</string>
<string name="show_search_suggestions_title">Поисковые предложения</string>
<string name="best_resolution">Лучшее разрешение</string>
<string name="reCaptcha_title">Запрос reCAPTCHA</string>
<string name="title_activity_recaptcha">Запрос reCAPTCHA</string>
<string name="recaptcha_request_toast">Запрошен ввод reCAPTCHA</string>
<string name="show_higher_resolutions_title">Высокие разрешения</string>
<string name="popup_mode_share_menu_title">NewPipe во всплывающем окне</string>
@ -313,7 +313,7 @@
<string name="override_current_data">Текущие данные будут заменены</string>
<string name="drawer_header_action_paceholder_text">Скоро здесь кое-что появится ;D</string>
<string name="always_ask_open_action">Всегда спрашивать</string>
<string name="create_playlist">Создать плейлист</string>
<string name="create_playlist">Новый плейлист</string>
<string name="delete_playlist">Удалить</string>
<string name="rename_playlist">Переименовать</string>
<string name="playlist_name_input">Имя</string>
@ -330,7 +330,7 @@
<string name="resize_fit">Подогнать</string>
<string name="resize_fill">Заполнить</string>
<string name="resize_zoom">Приблизить</string>
<string name="caption_auto_generated">Созданы автоматически</string>
<string name="caption_auto_generated">Создано автоматически</string>
<string name="enable_leak_canary_title">Включить LeakCanary</string>
<string name="enable_leak_canary_summary">Мониторинг утечки памяти может привести к зависанию приложения</string>
<string name="enable_disposed_exceptions_title">Сообщать об ошибках жизненного цикла</string>
@ -492,7 +492,7 @@
<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="confirm_prompt">Действительно удалить историю загрузок и загруженные файлы\?</string>
<string name="enable_queue_limit">Ограничить очередь загрузки</string>
<string name="enable_queue_limit_desc">Только одна одновременная загрузка</string>
<string name="start_downloads">Начать загрузку</string>
@ -522,20 +522,30 @@
<item quantity="many">%s слушателей</item>
</plurals>
<string name="localization_changes_requires_app_restart">Язык будет изменён после перезапуска</string>
<string name="seek_duration_title">Перемотка двойным нажатием</string>
<string name="seek_duration_title">Шаг перемотки</string>
<string name="peertube_instance_url_title">Серверы PeerTube</string>
<string name="peertube_instance_url_summary">Настройте предпочтительные серверы PeerTube</string>
<string name="peertube_instance_url_help">Выберите подходящие серверы на https://joinpeertube.org/instances#instances-list</string>
<string name="peertube_instance_url_summary">Выберите предпочтительные серверы</string>
<string name="peertube_instance_url_help">Каталог серверов: %s</string>
<string name="peertube_instance_add_title">Новый сервер</string>
<string name="peertube_instance_add_help">URL сервера</string>
<string name="peertube_instance_add_fail">Не удалось проверить сервер</string>
<string name="peertube_instance_add_https_only">Поддерживается только https</string>
<string name="peertube_instance_add_https_only">Поддерживается только HTTPS</string>
<string name="peertube_instance_add_exists">Сервер уже существует</string>
<string name="local">Локальное</string>
<string name="recently_added">Новое</string>
<string name="most_liked">Популярное</string>
<string name="playlist_no_uploader">Создан автоматически (автор не найден)</string>
<string name="playlist_no_uploader">Создано автоматически (автор не найден)</string>
<string name="recovering">восстановление</string>
<string name="error_download_resource_gone">Не удалось восстановить загрузку</string>
<string name="choose_instance_prompt">Выберите сервер</string>
<string name="enable_lock_screen_video_thumbnail_title">Миниатюра на экране блокировки</string>
<string name="enable_lock_screen_video_thumbnail_summary">Показать миниатюру видео на экране блокировки при воспроизведении в фоне</string>
<string name="clear_download_history">Очистить историю загрузок</string>
<string name="delete_downloaded_files">Удаление загруженных файлов</string>
<string name="deleted_downloads">Удалено загрузок: %1$s</string>
<string name="permission_display_over_apps">Разрешите отображение поверх приложений</string>
<string name="app_language_title">Язык интерфейса</string>
<string name="systems_language">Как в системе</string>
<string name="subtitle_activity_recaptcha">По завершении нажмите Готово</string>
<string name="recaptcha_done_button">Готово</string>
</resources>

View File

@ -17,11 +17,11 @@
<string name="use_external_video_player_title">Použiť externý prehrávač videa</string>
<string name="use_external_audio_player_title">Použiť externý prehrávač zvuku</string>
<string name="download_path_title">Prevzaté video ukladať do</string>
<string name="download_path_summary">Cesta kam sa budú ukladať prevzaté videá</string>
<string name="download_path_dialog_title">Vložte cestu kam sa budú ukladať videá</string>
<string name="download_path_audio_title">Prevzaté audio ukladať do</string>
<string name="download_path_summary">Tu sú uložené stiahnuté video súbory</string>
<string name="download_path_dialog_title">Vyberte adresár pre ukladanie video súborov</string>
<string name="download_path_audio_title">Adresár pre stiahnuté audio</string>
<string name="download_path_audio_dialog_title">Vložte cestu kam sa budú ukladať zvukové súbory</string>
<string name="download_path_audio_summary">Cesta kam sa bude ukladať prevzaté audio</string>
<string name="download_path_audio_summary">Tu sú uložené stiahnuté audio súbory</string>
<string name="default_resolution_title">Štandardné rozlíšenie</string>
<string name="play_with_kodi_title">Prehrať cez Kodi</string>
<string name="kore_not_found">Aplikácia Kore nie je nainštalovaná. Chcete ju nainštalovať?</string>
@ -49,7 +49,7 @@
<string name="parsing_error">Nemožno analyzovať webovú stránku</string>
<string name="content_not_available">Obsah nie je dostupný</string>
<string name="list_thumbnail_view_description">Náhľad videa</string>
<string name="detail_thumbnail_view_description">Náhľad videa</string>
<string name="detail_thumbnail_view_description">Prehrať video, dĺžka:</string>
<string name="detail_uploader_thumbnail_view_description">Náhľad avataru uploadera</string>
<string name="detail_likes_img_view_description">Lajky</string>
<string name="detail_dislikes_img_view_description">Dislajky</string>
@ -66,7 +66,7 @@
<string name="duration_live">NAŽIVO</string>
<string name="light_parsing_error">Nemožno kompletne zanalyzovať web</string>
<string name="could_not_setup_download_menu">Nemožno nastaviť menu preberania</string>
<string name="live_streams_not_supported">Toto je ŽIVÉ VYSIELANIE, ktoré ešte nie je podporované.</string>
<string name="live_streams_not_supported">Živé vysielanie zatiaľ nie je podporované</string>
<string name="could_not_get_stream">Nemožno získať žiadny stream</string>
<string name="sorry_string">Pardon, toto sa nemalo stať.</string>
<string name="error_report_button_text">Nahlásiť chybu mejlom</string>
@ -99,19 +99,19 @@
<string name="msg_running_detail">Dotykom zobraziť detaily</string>
<string name="msg_wait">Čakajte prosím…</string>
<string name="msg_copied">Skopírované do schránky</string>
<string name="no_available_dir">Vyberte si dostupný adresár na preberanie</string>
<string name="no_available_dir">Priečinok na sťahovanie zadefinujte prosím neskôr v nastaveniach</string>
<string name="downloads">Prevzaté</string>
<string name="downloads_title">Prevzaté</string>
<string name="error_report_title">Hlásenie o chybe</string>
<string name="could_not_load_image">Nemožno načítať obrázok</string>
<string name="app_ui_crash">Aplikácia/UP zlyhalo</string>
<string name="info_labels">Čo:\\nPožiadavka:\\nJazyk obsahu:\\nSlužba:\\nČas v GMT:\\nBalík:\\nVerzia:\\nVerzia OS:</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
<string name="reCaptcha_title">Výzva reCAPTCHA</string>
<string name="recaptcha">reCAPTCHA</string>
<string name="title_activity_recaptcha">Výzva reCAPTCHA</string>
<string name="black_theme_title">Čierna</string>
<string name="all">Všetko</string>
<string name="channel">Kanál</string>
<string name="short_thousand">K</string>
<string name="short_thousand">k</string>
<string name="short_million">M</string>
<string name="short_billion">B</string>
<string name="recaptcha_request_toast">Požiadavka reCAPTCHA</string>
@ -183,7 +183,7 @@
<string name="title_activity_history">História</string>
<string name="title_history_search">Vyhľadávané</string>
<string name="title_history_view">Pozreté</string>
<string name="history_disabled">História je zakázaná</string>
<string name="history_disabled">História je vypnutá</string>
<string name="action_history">História</string>
<string name="history_empty">História je prázdna</string>
<string name="history_cleared">História bola vyčistená</string>
@ -213,7 +213,7 @@
<item quantity="other">%s videí</item>
</plurals>
<string name="item_deleted">Položka bola odstránená</string>
<string name="no_player_found_toast">Nebol nájdený žiadny prehrávač pre stream (môžete si nainštalovať napr. VLC)</string>
<string name="no_player_found_toast">Nebol nájdený žiadny prehrávač pre stream (môžete si nainštalovať napr. VLC).</string>
<string name="controls_download_desc">Stiahnuť súbor stream</string>
<string name="show_info">Zobraziť info</string>
<string name="tab_bookmarks">Uložené zoznamy</string>
@ -266,7 +266,7 @@
<string name="feed_page_summary">Novinky</string>
<string name="channel_page_summary">Kanál</string>
<string name="select_a_channel">Vyberte si kanál</string>
<string name="no_channel_subscribed_yet">Žiadny kanál nie je odoberaný</string>
<string name="no_channel_subscribed_yet">Zatiaľ nemáte žiadne odbery kanálov</string>
<string name="select_a_kiosk">Vyberte si kiosk</string>
<string name="export_complete_toast">Export je dokončený</string>
<string name="import_complete_toast">Import je dokončený</string>
@ -285,9 +285,9 @@
<string name="hold_to_append">Podržaním pridať do zoznamu</string>
<string name="enqueue_on_background">Zaradiť na pozadie</string>
<string name="enqueue_on_popup">Zaradiť do mini okna</string>
<string name="start_here_on_main">Video odtiaľto</string>
<string name="start_here_on_background">Zvuk odtiaľto</string>
<string name="start_here_on_popup">Mini okno odtiaľto</string>
<string name="start_here_on_main">Prehrať odtiaľto</string>
<string name="start_here_on_background">Prehrať (zvuk) odtiaľto na pozadí</string>
<string name="start_here_on_popup">Prehrať odtiaľto v mini-okne</string>
<string name="drawer_open">Otvoriť zásuvku</string>
<string name="drawer_close">Zavrieť zásuvku</string>
<string name="video_player">Prehrávač videa</string>
@ -296,7 +296,7 @@
<string name="always_ask_open_action">Vždy sa opýtať</string>
<string name="preferred_player_fetcher_notification_title">Získavajú sa informácie…</string>
<string name="preferred_player_fetcher_notification_message">Načítanie požadované obsahu</string>
<string name="create_playlist">Vytvoriť nový zoznam skladieb</string>
<string name="create_playlist">Nový zoznam skladieb</string>
<string name="delete_playlist">Vymazať</string>
<string name="rename_playlist">Premenovať</string>
<string name="playlist_name_input">Názov</string>
@ -304,11 +304,11 @@
<string name="set_as_playlist_thumbnail">Nastaviť ako miniatúru zoznamu skladieb</string>
<string name="bookmark_playlist">Záložka zoznamu skladieb</string>
<string name="unbookmark_playlist">Odstrániť Záložku</string>
<string name="delete_playlist_prompt">Chcete odstrániť tento zoznam skladieb?</string>
<string name="delete_playlist_prompt">Odstrániť tento zoznam skladieb\?</string>
<string name="playlist_creation_success">Zoznam skladieb vytvorený</string>
<string name="playlist_add_stream_success">Pridané do zoznamu skladieb</string>
<string name="playlist_thumbnail_change_success">Miniatúra zoznamu skladieb bola zmenená</string>
<string name="playlist_delete_failure">Nemožno odstrániť zoznam skladieb</string>
<string name="playlist_add_stream_success">V playliste</string>
<string name="playlist_thumbnail_change_success">Miniatúra zoznamu skladieb bola zmenená.</string>
<string name="playlist_delete_failure">Zoznam skladieb nemožno zmazať.</string>
<string name="caption_none">Bez titulkov</string>
<string name="resize_fit">Prispôsobiť</string>
<string name="resize_fill">Vyplniť</string>
@ -316,7 +316,7 @@
<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>
<string name="download_thumbnail_summary">Vypnutím tejto funkcie sa nebudú vytvárať miniatúry a tým sa ušetrí miesto a pamäť. Zmena nastavení spôsobuje vyčistenie vyrovnávacej pamäte</string>
<string name="download_thumbnail_summary">Vypnutím tejto funkcie sa nebudú vytvárať miniatúry a tým sa ušetrí miesto a pamäť. Zmena nastavení spôsobuje vyčistenie vyrovnávacej pamäte.</string>
<string name="thumbnail_cache_wipe_complete_notice">Vyrovnávacia pamäť obrázkov vymazaná</string>
<string name="metadata_cache_wipe_title">Vymazať metadáta uložené vo vyrovnávacej pamäti</string>
<string name="metadata_cache_wipe_summary">Odstrániť všetky údaje webových stránok vo vyrovnávacej pamäti</string>
@ -337,12 +337,12 @@
<string name="preferred_open_action_settings_summary">Predvolená akcia pri otváraní obsahu — %s</string>
<string name="caption_auto_generated">Automaticky vygenerované</string>
<string name="caption_setting_title">Titulky</string>
<string name="caption_setting_description">Upravte mierku textu titulkov a štýly pozadia. Vyžaduje reštart prehrávača</string>
<string name="caption_setting_description">Upravte mierku textu titulkov prehrávača a štýly pozadia. Vyžaduje sa reštart aplikácie.</string>
<string name="enable_leak_canary_title">Povoliť službu LeakCanary</string>
<string name="enable_leak_canary_summary">Monitorovanie pretečenia pamäte môže spôsobiť, že aplikácia nebude reagovať</string>
<string name="enable_disposed_exceptions_title">Nahlásiť mimo-cyklické chyby</string>
<string name="enable_disposed_exceptions_summary">Vynútiť hlásenie výnimiek nedoručiteľných Rx mimo časového cyklu fragmentov alebo aktivity po zneškodnení</string>
<string name="import_export_title">Import/Export</string>
<string name="import_export_title">Import/export</string>
<string name="import_title">Import
\n</string>
<string name="import_from">Importovať z
@ -376,12 +376,12 @@
<string name="unhook_checkbox">"Spomalenie (môže spôsobovať skreslenie)"</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>
<string name="delete_view_history_alert">Vymazať celú históriu pozretí.</string>
<string name="clear_views_history_summary">Odstráni históriu a pozície prehrávaných streamov</string>
<string name="delete_view_history_alert">Vymazať celú históriu pozretí\?</string>
<string name="watch_history_deleted">História pozretí bola vymazaná.</string>
<string name="clear_search_history_title">Vymazať históriu vyhľadávania</string>
<string name="clear_search_history_summary">Vymaže históriu vyhľadávania kľúčových slov</string>
<string name="delete_search_history_alert">Vymazať celú históriu vyhľadávania.</string>
<string name="delete_search_history_alert">Vymazať celú históriu vyhľadávania\?</string>
<string name="search_history_deleted">História vyhľadávaní bola vymazaná.</string>
<string name="one_item_deleted">1 položka bola vymazaná.</string>
<string name="app_license">"NewPipe je slobodný softvér pod licenciou copyleft. Môžete ho používať, študovať a vylepšovať ako len chcete. Konkrétne ho môžete šíriť a/alebo upravovať pod podmienkami Všeobecnej verejnej licencie GNU, ako ju publikuje Free Software Foundation, buď verzia 3 licencie, alebo (podľa vašej voľby) ktorákoľvek neskoršia verzia."</string>
@ -420,7 +420,7 @@
<string name="app_update_notification_channel_name">Oznámenie o aktualizácii aplikácie</string>
<string name="app_update_notification_channel_description">Upozornenia na novú verziu NewPipe</string>
<string name="download_to_sdcard_error_title">Externé úložisko je nedostupné</string>
<string name="download_to_sdcard_error_message">Sťahovanie na externú SD kartu ešte nie je možné. Obnoviť umiestnenie priečinka na prevzatie\?</string>
<string name="download_to_sdcard_error_message">Sťahovanie na externú SD kartu nie je možné. Obnoviť umiestnenie priečinka na sťahovanie\?</string>
<string name="saved_tabs_invalid_json">Chyba pri načítavaní uložených kariet, použijú sa predvolené</string>
<string name="restore_defaults">Obnoviť predvolené nastavenia</string>
<string name="restore_defaults_confirmation">Chcete obnoviť predvolené hodnoty\?</string>
@ -454,8 +454,8 @@
<string name="download_already_running">Sťahovanie s týmto názvom už prebieha</string>
<string name="show_error">Zobraziť chybu</string>
<string name="label_code">Kód</string>
<string name="error_path_creation">Súbor sa nedá vytvoriť</string>
<string name="error_file_creation">Cieľový priečinok nie je možné vytvoriť</string>
<string name="error_path_creation">Adresár nemožno vytvoriť</string>
<string name="error_file_creation">Nemožno vytvoriť súbor</string>
<string name="error_permission_denied">Povolenie odmietnuté systémom</string>
<string name="error_ssl_exception">Bezpečnostné pripojenie zlyhalo</string>
<string name="error_unknown_host">Server sa nepodarilo nájsť</string>
@ -469,7 +469,7 @@
<string name="max_retry_msg">Maximum opakovaní</string>
<string name="max_retry_desc">Maximálny počet pokusov pred zrušením stiahnutia</string>
<string name="pause_downloads_on_mobile">Pozastaviť pri prechode na mobilné dáta</string>
<string name="pause_downloads_on_mobile_desc">Preberania, ktoré nie je možné pozastaviť, budú reštartované</string>
<string name="pause_downloads_on_mobile_desc">Je to užitočné pri prechode na mobilné dáta, niektoré sťahovania však nemožno pozastaviť</string>
<string name="show_comments_title">Zobraziť komentáre</string>
<string name="show_comments_summary">Vypnutím tejto funkcie sa nebudú zobrazovať komentáre</string>
<string name="autoplay_title">Automatické prehrávanie</string>
@ -494,7 +494,7 @@
<string name="error_insufficient_storage">Máš plnú pamäť</string>
<string name="error_progress_lost">Nemožno pokračovať, súbor bol vymazaný</string>
<string name="error_timeout">Spojenie vypršalo</string>
<string name="confirm_prompt">Ste si istý\?</string>
<string name="confirm_prompt">Chcete vymazať históriu sťahovania alebo odstrániť všetky stiahnuté súbory\?</string>
<string name="enable_queue_limit">Limitovať počet položiek pri sťahovaní</string>
<string name="enable_queue_limit_desc">Súbory sa budú sťahovať jeden po druhom</string>
<string name="start_downloads">Spustite sťahovanie</string>
@ -512,4 +512,41 @@
<string name="download_choose_new_path">Zmeniť miesto pre stiahnuté súbory</string>
<string name="drawer_header_description">Prepnúť službu, práve vybraté:</string>
<string name="default_kiosk_page_summary">Predvolený kiosk</string>
<string name="no_one_watching">Toto nikto nesleduje</string>
<plurals name="watching">
<item quantity="one">%s sleduje</item>
<item quantity="few">%s sledujú</item>
<item quantity="other">%s sleduje</item>
</plurals>
<string name="no_one_listening">Toto nikto nepočúva</string>
<plurals name="listening">
<item quantity="one">%s poslucháč</item>
<item quantity="few">%s poslucháči</item>
<item quantity="other">%s poslucháčov</item>
</plurals>
<string name="localization_changes_requires_app_restart">Zmena jazyka sa prejaví po reštarte aplikácie.</string>
<string name="seek_duration_title">Dĺžka rýchleho pretáčania</string>
<string name="peertube_instance_url_title">Inštancie PeerTube</string>
<string name="peertube_instance_url_summary">Vyberte si svoje obľúbené inštancie PeerTube</string>
<string name="peertube_instance_url_help">Nájdite najvyhovujúcejšie inštancie na %s</string>
<string name="peertube_instance_add_title">Pridať inštanciu</string>
<string name="peertube_instance_add_help">Vložiť URL inštancie</string>
<string name="peertube_instance_add_fail">Nepodarilo sa overiť inštanciu</string>
<string name="peertube_instance_add_https_only">Podporované sú iba adresy URL s HTTPS</string>
<string name="peertube_instance_add_exists">Inštancia už existuje</string>
<string name="local">Miestne</string>
<string name="recently_added">Nedávno pridané</string>
<string name="most_liked">Najobľúbenejšie</string>
<string name="playlist_no_uploader">Automaticky generované (používateľ sa nenašiel)</string>
<string name="recovering">obnovovanie</string>
<string name="error_download_resource_gone">Sťahovanie nemožno obnoviť</string>
<string name="choose_instance_prompt">Vyberte inštanciu</string>
<string name="enable_lock_screen_video_thumbnail_title">Náhľad videa na uzamknutej obrazovke</string>
<string name="enable_lock_screen_video_thumbnail_summary">Pri videu na pozadí sa na zamknutej obrazovke zobrazí náhľad</string>
<string name="clear_download_history">Vymazať históriu sťahovania</string>
<string name="delete_downloaded_files">Vymazať stiahnuté súbory</string>
<string name="deleted_downloads">%1$s odstránených</string>
<string name="permission_display_over_apps">Súhlas pre zobrazenie cez ďalšie aplikácie</string>
<string name="app_language_title">Jazyk aplikácie</string>
<string name="systems_language">Predvolený</string>
</resources>

View File

@ -124,8 +124,8 @@
<string name="could_not_load_image">Slike ni mogoče naložiti</string>
<string name="app_ui_crash">Program se je sesul!</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
<string name="reCaptcha_title">Izziv reCAPTCHA</string>
<string name="recaptcha">reCAPTCHA</string>
<string name="title_activity_recaptcha">Izziv reCAPTCHA</string>
<string name="recaptcha_request_toast">Zahteva izziva reCAPTCHA</string>
<string name="info_labels">Predmet:\\nZahteva:\\nJezik vsebine:\\nStoritev:\\nČas v GMT:\\nPaket:\\nRazličica:\\nRazličica OS:</string>

View File

@ -14,9 +14,9 @@
<string name="share_dialog_title">Подели помоћу</string>
<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_dialog_title">Унесите путању за преузимање видеа</string>
<string name="download_path_title">Одредиште преузимања снимака</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">Пусти помоћу Кодија</string>
<string name="kore_not_found">Апликација Кор (Kore) није нађена. Инсталирати је?</string>
@ -57,7 +57,6 @@
<string name="youtube_signature_decryption_error">Не могу да дешифрујем потпис видео урл-а</string>
<string name="parsing_error">Не могу да рашчланим веб-сајт</string>
<string name="content_not_available">Садржај није доступан</string>
<string name="content">Садржај</string>
<string name="show_age_restricted_content_title">Прикажи старосно-ограничени садржај</string>
<string name="video_is_age_restricted">Старосно-ограничени видео. Премошћавање је доступно у поставкама.</string>
@ -82,7 +81,7 @@
<string name="duration_live">уживо</string>
<string name="main_bg_subtitle">Тапните на претрагу за почетак</string>
<string name="autoplay_by_calling_app_title">Аутопуштање</string>
<string name="autoplay_by_calling_app_summary">Аутоматско пуштање видеа по позиву друге апликације</string>
<string name="autoplay_by_calling_app_summary">Пушта видео по позиву друге апликације</string>
<string name="start">Почни</string>
<string name="pause">Паузирај</string>
<string name="view">Пусти</string>
@ -107,8 +106,8 @@
<string name="could_not_load_image">Не могох да учитам слику</string>
<string name="app_ui_crash">Апликација/УИ је краховала</string>
<string name="info_labels">Шта:\\nЗахтев:\\nЈезик садржаја:\\nУслуга:\\nГМТ време:\\nПакет:\\nИздање:\\nИздање ОС-а:\\nГлоб. ИП распон:</string>
<string name="reCaptchaActivity">Стопка</string>
<string name="reCaptcha_title">reCAPTCHA стопка</string>
<string name="recaptcha">Стопка</string>
<string name="title_activity_recaptcha">reCAPTCHA стопка</string>
<string name="recaptcha_request_toast">Решите reCAPTCHA стопку</string>
<string name="black_theme_title">Црна</string>
<string name="all">Сви</string>
@ -179,7 +178,7 @@
<string name="error_unable_to_load_license">Не могу да учитам лиценцу</string>
<string name="channel_unsubscribed">Одјављен са канала</string>
<string name="subscription_change_failed">Не могу да изменим претплату</string>
<string name="subscription_update_failed">Не могу да ажурирам претплату</string>
<string name="subscription_update_failed">Није могуће ажурирати претплату</string>
<string name="settings_category_player_title">Плејер</string>
<string name="settings_category_player_behavior_title">Понашање</string>
<string name="settings_category_history_title">Историјат</string>

Some files were not shown because too many files have changed in this diff Show More