Merge pull request #3113 from TeamNewPipe/dev

Release v0.18.4
This commit is contained in:
Tobias Groza 2020-02-22 00:44:21 +01:00 committed by GitHub
commit e1cc84ab5f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
121 changed files with 2778 additions and 2576 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>

2
app/.gitignore vendored
View File

@ -1,3 +1,3 @@
.gitignore
/build
app.iml
*.iml

View File

@ -11,8 +11,8 @@ android {
applicationId "org.schabi.newpipe"
minSdkVersion 19
targetSdkVersion 28
versionCode 830
versionName "0.18.3"
versionCode 840
versionName "0.18.4"
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:33961b20'
implementation 'com.github.TeamNewPipe:NewPipeExtractor:v0.18.4'
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"

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 androidx.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() {
@ -1070,7 +1074,7 @@ public class VideoDetailFragment
if (info.getStreamType().equals(StreamType.AUDIO_LIVE_STREAM)) {
videoCountView.setText(Localization.listeningCount(activity, info.getViewCount()));
} else if (info.getStreamType().equals(StreamType.LIVE_STREAM)) {
videoCountView.setText(Localization.watchingCount(activity, info.getViewCount()));
videoCountView.setText(Localization.localizeWatchingCount(activity, info.getViewCount()));
} else {
videoCountView.setText(Localization.localizeViewCount(activity, info.getViewCount()));
}

View File

@ -370,7 +370,7 @@ public class ChannelFragment extends BaseListInfoFragment<ChannelInfo> {
headerSubscribersTextView.setVisibility(View.VISIBLE);
if (result.getSubscriberCount() >= 0) {
headerSubscribersTextView.setText(Localization.localizeSubscribersCount(activity, result.getSubscriberCount()));
headerSubscribersTextView.setText(Localization.shortSubscriberCount(activity, result.getSubscriberCount()));
} else {
headerSubscribersTextView.setText(R.string.subscribers_count_not_available);
}

View File

@ -190,7 +190,7 @@ public class SearchFragment
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity);
isSuggestionsEnabled = preferences.getBoolean(getString(R.string.show_search_suggestions_key), true);
contentCountry = preferences.getString(getString(R.string.content_country_key), getString(R.string.default_country_value));
contentCountry = preferences.getString(getString(R.string.content_country_key), getString(R.string.default_localization_key));
}
@Override

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

@ -60,7 +60,7 @@ public class StreamInfoItemHolder extends StreamMiniInfoItemHolder {
if (infoItem.getStreamType().equals(StreamType.AUDIO_LIVE_STREAM)) {
viewsAndDate = Localization.listeningCount(itemBuilder.getContext(), infoItem.getViewCount());
} else if (infoItem.getStreamType().equals(StreamType.LIVE_STREAM)) {
viewsAndDate = Localization.watchingCount(itemBuilder.getContext(), infoItem.getViewCount());
viewsAndDate = Localization.shortWatchingCount(itemBuilder.getContext(), infoItem.getViewCount());
} else {
viewsAndDate = Localization.shortViewCount(itemBuilder.getContext(), infoItem.getViewCount());
}

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) {
@ -882,6 +909,18 @@ public final class MainVideoPlayer extends AppCompatActivity
final float currentVolumeNormalized = (float) getAudioReactor().getVolume() / getAudioReactor().getMaxVolume();
volumeProgressBar.setProgress((int) (volumeProgressBar.getMax() * currentVolumeNormalized));
}
float screenBrightness = getWindow().getAttributes().screenBrightness;
if (screenBrightness < 0)
screenBrightness = Settings.System.getInt(getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS, 0) / 255.0f;
brightnessProgressBar.setProgress((int) (brightnessProgressBar.getMax() * screenBrightness));
if (DEBUG) Log.d(TAG, "setInitialGestureValues: volumeProgressBar.getProgress() ["
+ volumeProgressBar.getProgress() + "] "
+ "brightnessProgressBar.getProgress() ["
+ brightnessProgressBar.getProgress() + "]");
}
@Override

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

@ -43,9 +43,12 @@ import java.io.StringWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.TimeZone;
import java.util.Vector;
import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage;
/*
* Created by Christian Schabesberger on 24.10.15.
*
@ -91,7 +94,7 @@ public class ErrorActivity extends AppCompatActivity {
if (rootView != null) {
Snackbar.make(rootView, R.string.error_snackbar_message, 3 * 1000)
.setActionTextColor(Color.YELLOW)
.setAction(R.string.error_snackbar_action, v ->
.setAction(context.getString(R.string.error_snackbar_action).toUpperCase(), v ->
startErrorActivity(returnActivity, context, errorInfo, el)).show();
} else {
startErrorActivity(returnActivity, context, errorInfo, el);
@ -171,6 +174,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);
@ -374,8 +378,12 @@ public class ErrorActivity extends AppCompatActivity {
}
private String getContentLangString() {
return PreferenceManager.getDefaultSharedPreferences(this)
String contentLanguage = PreferenceManager.getDefaultSharedPreferences(this)
.getString(this.getString(R.string.content_country_key), "none");
if (contentLanguage.equals(getString(R.string.default_localization_key))) {
contentLanguage = Locale.getDefault().toString();
}
return contentLanguage;
}
private String getOsString() {

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,83 @@
package org.schabi.newpipe.settings;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
import androidx.annotation.Nullable;
import androidx.preference.ListPreference;
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);
//initializing R.array.seek_duration_description to display the translation of seconds
Resources res = getResources();
String[] durationsValues = res.getStringArray(R.array.seek_duration_value);
String[] durationsDescriptions = res.getStringArray(R.array.seek_duration_description);
int currentDurationValue;
for (int i = 0; i < durationsDescriptions.length; i++) {
currentDurationValue = Integer.parseInt(durationsValues[i]) / 1000;
try {
durationsDescriptions[i] = String.format(
res.getQuantityString(R.plurals.dynamic_seek_duration_description, currentDurationValue),
currentDurationValue);
} catch (Resources.NotFoundException ignored) {
//if this happens, the translation is missing, and the english string will be displayed instead
}
}
ListPreference durations = (ListPreference) findPreference(getString(R.string.seek_duration_key));
durations.setEntries(durationsDescriptions);
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,9 @@ public class Mp4FromDashWriter {
sampleCount[i] = 1;// the index is not base zero
sampleExtra[i] = -1;
}
if (tablesInfo[i].sbgp > 0) {
writeEntryArray(tablesInfo[i].sbgp, 1, sampleCount[i]);
}
}
if (auxBuffer == null) {
@ -314,8 +303,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 +318,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 +331,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 +380,6 @@ public class Mp4FromDashWriter {
} else {
tablesInfo[i].stco = writeEntryArray(tablesInfo[i].stco, 1, (int) chunkOffset);
}
if (singleChunk) {
tablesInfo[i].stco = -1;
}
}
outRestore();
@ -470,7 +456,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 +606,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 +771,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 +796,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 +819,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 +851,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 +904,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.
*
@ -44,14 +48,14 @@ import androidx.annotation.StringRes;
public class Localization {
private static PrettyTime prettyTime;
private static final String DOT_SEPARATOR = "";
private static PrettyTime prettyTime;
private Localization() {
}
public static void init() {
initPrettyTime();
public static void init(Context context) {
initPrettyTime(context);
}
@NonNull
@ -79,14 +83,20 @@ public class Localization {
public static org.schabi.newpipe.extractor.localization.Localization getPreferredLocalization(final Context context) {
final String contentLanguage = PreferenceManager
.getDefaultSharedPreferences(context)
.getString(context.getString(R.string.content_language_key), context.getString(R.string.default_language_value));
.getString(context.getString(R.string.content_language_key), context.getString(R.string.default_localization_key));
if (contentLanguage.equals(context.getString(R.string.default_localization_key))) {
return org.schabi.newpipe.extractor.localization.Localization.fromLocale(Locale.getDefault());
}
return org.schabi.newpipe.extractor.localization.Localization.fromLocalizationCode(contentLanguage);
}
public static ContentCountry getPreferredContentCountry(final Context context) {
final String contentCountry = PreferenceManager
.getDefaultSharedPreferences(context)
.getString(context.getString(R.string.content_country_key), context.getString(R.string.default_country_value));
.getString(context.getString(R.string.content_country_key), context.getString(R.string.default_localization_key));
if (contentCountry.equals(context.getString(R.string.default_localization_key))) {
return new ContentCountry(Locale.getDefault().getCountry());
}
return new ContentCountry(contentCountry);
}
@ -94,7 +104,7 @@ public class Localization {
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
String languageCode = sp.getString(context.getString(R.string.content_language_key),
context.getString(R.string.default_language_value));
context.getString(R.string.default_localization_key));
try {
if (languageCode.length() == 2) {
@ -110,31 +120,31 @@ public class Localization {
}
public static String localizeNumber(Context context, long number) {
Locale locale = getPreferredLocale(context);
NumberFormat nf = NumberFormat.getInstance(locale);
NumberFormat nf = NumberFormat.getInstance(getAppLocale(context));
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) {
return getQuantity(context, R.plurals.views, R.string.no_views, viewCount, localizeNumber(context, viewCount));
}
public static String localizeSubscribersCount(Context context, long subscriberCount) {
return getQuantity(context, R.plurals.subscribers, R.string.no_subscribers, subscriberCount, localizeNumber(context, subscriberCount));
}
public static String localizeStreamCount(Context context, long streamCount) {
return getQuantity(context, R.plurals.videos, R.string.no_videos, streamCount, localizeNumber(context, streamCount));
}
public static String localizeWatchingCount(Context context, long watchingCount) {
return getQuantity(context, R.plurals.watching, R.string.no_one_watching, watchingCount, localizeNumber(context, watchingCount));
}
public static String shortCount(Context context, long count) {
if (count >= 1000000000) {
return Long.toString(count / 1000000000) + context.getString(R.string.short_billion);
@ -151,7 +161,7 @@ public class Localization {
return getQuantity(context, R.plurals.listening, R.string.no_one_listening, listeningCount, shortCount(context, listeningCount));
}
public static String watchingCount(Context context, long watchingCount) {
public static String shortWatchingCount(Context context, long watchingCount) {
return getQuantity(context, R.plurals.watching, R.string.no_one_watching, watchingCount, shortCount(context, watchingCount));
}
@ -199,21 +209,49 @@ 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);
String time = getPrettyTime().formatUnrounded(calendarTime);
return time.startsWith("-") ? time.substring(1) : time;
//workaround fix for russian showing -1 day ago, -19hrs ago
}
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 = PreferenceManager.getDefaultSharedPreferences(context);
String lang = prefs.getString(context.getString(R.string.app_language_key), "en");
Locale loc;
if (lang.equals(context.getString(R.string.default_localization_key))) {
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

@ -44,7 +44,7 @@ public class ServiceHelper {
public static String getTranslatedFilterString(String filter, Context c) {
switch (filter) {
case "all": return c.getString(R.string.all);
case "videos": return c.getString(R.string.videos);
case "videos": return c.getString(R.string.videos_string);
case "channels": return c.getString(R.string.channels);
case "playlists": return c.getString(R.string.playlists);
case "tracks": return c.getString(R.string.tracks);

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

@ -534,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();

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

@ -304,10 +304,9 @@
android:paddingLeft="4dp"
android:paddingRight="4dp"
android:gravity="center"
android:text="@string/duration_live_button"
android:text="@string/duration_live"
android:textAllCaps="true"
android:textColor="?attr/colorAccent"
android:maxLength="4"
android:background="?attr/selectableItemBackground"
android:visibility="gone"/>
</LinearLayout>

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"
@ -423,10 +442,9 @@
android:paddingLeft="4dp"
android:paddingRight="4dp"
android:gravity="center"
android:text="@string/duration_live_button"
android:text="@string/duration_live"
android:textAllCaps="true"
android:textColor="@android:color/white"
android:maxLength="4"
android:visibility="gone"
android:background="?attr/selectableItemBackground"
tools:ignore="HardcodedText,RtlHardcoded,RtlSymmetry" />

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"
@ -421,10 +440,9 @@
android:paddingLeft="4dp"
android:paddingRight="4dp"
android:gravity="center"
android:text="@string/duration_live_button"
android:text="@string/duration_live"
android:textAllCaps="true"
android:textColor="@android:color/white"
android:maxLength="4"
android:visibility="gone"
android:background="?attr/selectableItemBackground"
tools:ignore="HardcodedText,RtlHardcoded,RtlSymmetry" />

View File

@ -154,10 +154,9 @@
android:paddingLeft="4dp"
android:paddingRight="4dp"
android:gravity="center"
android:text="@string/duration_live_button"
android:text="@string/duration_live"
android:textAllCaps="true"
android:textColor="?attr/colorAccent"
android:maxLength="4"
android:background="?attr/selectableItemBackground"
android:visibility="gone"/>
</LinearLayout>

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

@ -208,10 +208,9 @@
android:paddingLeft="4dp"
android:paddingRight="4dp"
android:gravity="center_vertical"
android:text="@string/duration_live_button"
android:text="@string/duration_live"
android:textAllCaps="true"
android:textColor="@android:color/white"
android:maxLength="4"
android:visibility="gone"
android:background="?attr/selectableItemBackground"
tools:ignore="HardcodedText,RtlHardcoded,RtlSymmetry" />

View File

@ -27,8 +27,4 @@
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

@ -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>
@ -207,7 +207,7 @@
<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_playing_toast">在悬浮窗中播放</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>
@ -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,12 +504,12 @@
<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"/>
@ -519,9 +519,9 @@
<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,9 +531,10 @@
<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="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>
</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

@ -1,12 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="main_bg_subtitle">শুরু করতে অনুসন্ধান এ আলতো চাপ</string>
<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">কোন স্ট্রিম প্লেয়ার পাওয়া যায়নি। VLC ইনস্টল করতে চাও\?</string>
<string name="install">ইনস্টল</string>
<string name="cancel">বাদ দিন</string>
<!-- <string name="fdroid_vlc_url" translatable="false">https://f-droid.org/repository/browse/?fdfilter=vlc&amp;fdid=org.videolan.vlc</string> -->
<string name="open_in_browser">ব্রাউজারে ওপেন করো</string>
<string name="open_in_popup_mode">পপ-আপ মোডে ওপেন করো</string>
<string name="share">শেয়ার</string>
@ -16,13 +15,13 @@
<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="screen_rotation">ঘূর্ণ</string>
<string name="use_external_video_player_title">বাইরের ভিডিও প্লেয়ার ব্যবহার করুন</string>
<string name="use_external_audio_player_title">বহির্গত অডিও প্লেয়ার ব্যবহার করুন</string>
<string name="popup_mode_share_menu_title">NewPipe পপআপ মোড</string>
<string name="popup_mode_share_menu_title">পপআপ মোড</string>
<string name="controls_background_title">ব্যাকগ্রাউন্ড</string>
<string name="controls_popup_title">পপআপ</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_title">অডিও ডাউনলোড পাথ</string>
@ -36,7 +35,6 @@
<string name="show_higher_resolutions_summary">শুধুমাত্র কিছু ডিভাইস 2k / 4k ভিডিও চালানোয় সমর্থন</string>
<string name="play_with_kodi_title">Kodi এর মাধ্যমে চালাও</string>
<string name="kore_not_found">Kore অ্যাপ্লিকেশন খুঁজে পাওয়া যায়নি। Kore ইনস্টল করবে?</string>
<!-- <string name="fdroid_kore_url" translatable="false">https://f-droid.org/repository/browse/?fdfilter=Kore&amp;fdid=org.xbmc.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>
@ -57,10 +55,8 @@
<string name="settings_category_popup_title">পপআপ</string>
<string name="settings_category_appearance_title">অ্যাপিয়ারেন্স</string>
<string name="settings_category_other_title">অন্যান্য</string>
<!-- <string name="background_player_time_text" translatable="false">%1$s - NewPipe</string> -->
<string name="background_player_playing_toast">ব্যাকগ্রাউন্ডে চলছে</string>
<string name="popup_playing_toast">পপআপ মোডে চলছে</string>
<!-- <string name="c3s_url" translatable="false">https://www.c3s.cc/</string> -->
<string name="play_btn_text">চালাও</string>
<string name="content">কন্টেন্ট</string>
<string name="show_age_restricted_content_title">বয়স সীমাবদ্ধ কন্টেন্ট দেখাও</string>
@ -93,7 +89,6 @@
<string name="app_ui_crash">অ্যাপ / UI ক্র্যাশ করেছে</string>
<!-- error activity -->
<string name="sorry_string">দুঃখিত, এটা ঘটা উচিত ছিল না।</string>
<!-- <string name="guru_meditation" translatable="false">Guru Meditation.</string> -->
<string name="error_report_button_text">মেইলের মাধ্যমে ত্রুটি প্রতিবেদন করো</string>
<string name="error_snackbar_message">দুঃখিত, কিছু ত্রুটি ঘটেছে।</string>
<string name="error_snackbar_action">প্রতিবেদন</string>
@ -142,11 +137,8 @@
<string name="msg_copied">ক্লিপবোর্ডে অনুলিপি করা হয়েছে।</string>
<string name="no_available_dir">অনুগ্রহ করে একটি উপলব্ধ ডাউনলোড ডিরেক্টরি নির্বাচন করো।</string>
<string name="msg_popup_permission">এই অনুমতিটি পপআপ মোডে খুলতে প্রয়োজন</string>
<!-- 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>
@ -171,7 +163,7 @@
<string name="action_open_website">ওয়েব সাইট খুলুন</string>
<string name="website_title">ওয়েব সাইট</string>
<string name="no_player_found_toast">কোন স্ট্রিম প্লেয়ার পাওয়া যায়নি (প্লে করতে VLC ইন্সটল করতে পারেন)</string>
<string name="use_external_video_player_summary">কিছু রেজোলিউশনে ভিডিওর অডিও কাজ করে না</string>
<string name="use_external_video_player_summary">কিছু কিছু রেজোলিউশনে অডিও বন্ধ করে দেয়</string>
<string name="subscribe_button_title">সাবস্ক্রাইব</string>
<string name="subscribed_button_title">সাবস্ক্রাইব করা আছে</string>
<string name="channel_unsubscribed">চ্যানেল থেকে আনসাবস্ক্রাইব্ড</string>
@ -183,4 +175,5 @@
<string name="use_inexact_seek_title">দ্রুত টানা ব্যাবহার করুন</string>
<string name="unsubscribe">আনসাবস্ক্রাইব</string>
<string name="tab_new">নতুন ট্যাব</string>
<string name="tab_choose">ট্যাব পছন্দ করুন</string>
</resources>

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

@ -20,7 +20,7 @@
<string name="download_path_audio_title">Složka pro stažené audio</string>
<string name="default_resolution_title">Výchozí rozlišení</string>
<string name="play_with_kodi_title">Přehrát pomocí Kodi</string>
<string name="kore_not_found">Aplikace Kore nenalezena. Chcete ji nainstalovat?</string>
<string name="kore_not_found">Nainstalovat chybějící aplikaci Kore\?</string>
<string name="view_count_text">%1$s zhlédnutí</string>
<string name="download_path_title">Adresář pro stažená videa</string>
<string name="download_path_summary">Stažená videa jsou uložena tady</string>
@ -61,10 +61,10 @@
<string name="autoplay_by_calling_app_summary">Přehrává video, když je NewPipe otevřen z jiné aplikace</string>
<string name="content">Obsah</string>
<string name="show_age_restricted_content_title">Věkově omezený obsah</string>
<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="video_is_age_restricted">Zobrazit video s věkovým omezením. Změnit tuto volbu v budoucnu 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>
@ -84,9 +84,9 @@
<string name="report_error">Nahlásit chybu</string>
<string name="error_details_headline">Podrobnosti:</string>
<string name="what_happened_headline">Co se stalo:</string>
<string name="error_snackbar_action">NAHLÁSIT</string>
<string name="error_snackbar_action">Nahlásit</string>
<string name="sorry_string">Omlouváme se, tohle se nemělo stát.</string>
<string name="error_report_button_text">Nahlásit chybu přes e-mail</string>
<string name="error_report_button_text">Nahlásit tuto chybu přes e-mail</string>
<string name="error_snackbar_message">Omlouváme se, nastaly určité chyby.</string>
<string name="could_not_load_image">Nepodařilo se nahrát obrázek</string>
<string name="app_ui_crash">Aplikace/UI spadlo</string>
@ -98,12 +98,12 @@
<string name="downloads_title">Stažené soubory</string>
<string name="what_device_headline">Info:</string>
<string name="your_comment">Vaše poznámky (anglicky):</string>
<string name="storage_permission_denied">Oprávnění přístupu do úložiště zamítnuto</string>
<string name="storage_permission_denied">Nejdříve udělit oprávnění přístupu k úložišti</string>
<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>
@ -121,11 +121,11 @@
otevření ve vyskakovacím okně</string>
<string name="use_external_video_player_summary">Odstraňuje zvuk v některých rozlišeních</string>
<string name="show_higher_resolutions_title">Zobrazovat vyšší rozlišení</string>
<string name="show_higher_resolutions_summary">Pouze některá zařízení podporují přehrávání 2K/4K videí</string>
<string name="show_higher_resolutions_summary">Pouze některá zařízení dokáží přehrát 2K/4K videa</string>
<string name="default_video_format_title">Výchozí formát videa</string>
<string name="popup_remember_size_pos_title">Pamatovat si velikost a pozici vyskakovacího okna</string>
<string name="popup_remember_size_pos_summary">Pamatovat si poslední velikost a pozici vyskakovacího okna</string>
<string name="popup_mode_share_menu_title">NewPipe režim vyskakovacího okna</string>
<string name="popup_mode_share_menu_title">Režim vyskakovacího okna</string>
<string name="subscribe_button_title">Odebírat</string>
<string name="subscribed_button_title">Odebíráno</string>
<string name="channel_unsubscribed">Odběr zrušen</string>
@ -138,14 +138,14 @@ otevření ve vyskakovacím okně</string>
<string name="controls_popup_title">V okně</string>
<string name="default_popup_resolution_title">Výchozí rozlišení vyskakovacího okna</string>
<string name="player_gesture_controls_title">Ovládání přehrávače gesty</string>
<string name="player_gesture_controls_summary">Používat gesta pro nastavení jasu a hlasitosti přehrávače</string>
<string name="player_gesture_controls_summary">Používat gesta pro ovládání jasu a hlasitosti přehrávače</string>
<string name="show_search_suggestions_title">Návrhy vyhledávání</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_title">Obnovit přehrávání</string>
<string name="resume_on_audio_focus_gain_summary">Pokračovat v přehrávání po přerušení (např. hovor)</string>
<string name="settings_category_player_title">Přehrávač</string>
<string name="settings_category_player_behavior_title">Chování</string>
@ -179,9 +179,9 @@ otevření ve vyskakovacím okně</string>
</plurals>
<string name="no_videos">Žádná videa</string>
<plurals name="videos">
<item quantity="one">%s video</item>
<item quantity="few">%s videa</item>
<item quantity="other">%s videí</item>
<item quantity="one">%s Video</item>
<item quantity="few">%s Videa</item>
<item quantity="other">%s Videí</item>
</plurals>
<string name="settings_category_downloads_title">Stahování</string>
<string name="settings_file_charset_title">Povolené znaky v názvech souborů</string>
@ -214,7 +214,7 @@ otevření ve vyskakovacím okně</string>
<string name="history_cleared">Historie vymazána</string>
<string name="item_deleted">Položka byla odstraněna</string>
<string name="show_hold_to_append_title">Zobrazovat tip \"Podržet pro přidání\"</string>
<string name="show_hold_to_append_summary">Zobrazí se po stisku tlačítek přehrát na pozadí nebo přehrát v okně na stránce s videem</string>
<string name="show_hold_to_append_summary">Ukázat tip po stisku na pozadí nebo na popup tlačítko v \"Podrobnostech\" o videu</string>
<string name="background_player_append">Ve frontě přehrávače na pozadí</string>
<string name="popup_playing_append">Ve frontě přehrávače v okně</string>
<string name="play_all">Přehrát vše</string>
@ -248,7 +248,7 @@ otevření ve vyskakovacím okně</string>
<string name="start_here_on_background">Začít přehrávat na pozadí</string>
<string name="start_here_on_popup">Začít přehrávat v okně</string>
<string name="donation_title">Donate</string>
<string name="donation_encouragement">NewPipe je vyvíjen dobrovolníky, kteří tráví svůj čas, aby vaše zkušenost s aplikací byla co nejlepší. Vraťte vývojářům něco zpět, aby mohli NewPipe dále zlepšovat a zároveň si vychutnat šálek kávy.</string>
<string name="donation_encouragement">NewPipe je vyvíjen dobrovolníky, kteří tráví svůj volný čas, aby vaše zkušenost s aplikací byla co nejlepší. Vraťte vývojářům něco zpět, aby mohli NewPipe dále zlepšovat a zároveň si vychutnat šálek kávy.</string>
<string name="give_back">Daruj</string>
<string name="website_title">Webová stránka</string>
<string name="website_encouragement">Pro další informace a novinky navštivte webovou stránku NewPipe.</string>
@ -316,10 +316,10 @@ otevření ve vyskakovacím okně</string>
<string name="resize_zoom">Zvětšit</string>
<string name="settings_category_debug_title">Ladění</string>
<string name="caption_auto_generated">"Automaticky generováno "</string>
<string name="enable_leak_canary_title">Povolit službu LeakCanary</string>
<string name="enable_leak_canary_title">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>
@ -329,7 +329,7 @@ otevření ve vyskakovacím okně</string>
<string name="metadata_cache_wipe_summary">Odebrat všechna data uložená v mezipaměti</string>
<string name="metadata_cache_wipe_complete_notice">Mezipaměť metadat vymazána</string>
<string name="auto_queue_title">Automatická fronta dalšího streamu</string>
<string name="auto_queue_summary">Automaticky připojí související stream při přehrávání posledního streamu v neopakující se frontě</string>
<string name="auto_queue_summary">Pokračovat konečnou (neopakující se) frontu playbacku připojením souvisejícího streamu</string>
<string name="file">Soubor</string>
<string name="invalid_directory">Neexistující složka</string>
<string name="invalid_source">Neexistující zdroj souboru/obsahu</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>
@ -414,13 +414,13 @@ otevření ve vyskakovacím okně</string>
<string name="volume_gesture_control_title">Ovládání hlasitosti gesty</string>
<string name="volume_gesture_control_summary">Používat gesta pro ovládání hlasitosti přehrávače</string>
<string name="brightness_gesture_control_title">Ovládání jasu gesty</string>
<string name="brightness_gesture_control_summary">Používat gesta pro kontrolu jasu přehrávače</string>
<string name="brightness_gesture_control_summary">Používat gesta pro ovládání jasu přehrávače</string>
<string name="settings_category_updates_title">Aktualizace</string>
<string name="file_deleted">Soubor smazán</string>
<string name="app_update_notification_channel_name">Notifikace aktualizace aplikace</string>
<string name="app_update_notification_channel_description">Notifikace pro novou verzi NewPipe</string>
<string name="download_to_sdcard_error_title">Externí úložiště není k dispozici</string>
<string name="saved_tabs_invalid_json">Chyba při načítání uložených karet, použijí se výchozí karty</string>
<string name="saved_tabs_invalid_json">Nelze načíst uložené karty, takže se použijí výchozí karty</string>
<string name="restore_defaults">Obnovit do výchozího nastavení</string>
<string name="restore_defaults_confirmation">Chcete obnovit výchozí nastavení\?</string>
<string name="subscribers_count_not_available">Počet odběratelů není k dispozici</string>
@ -457,7 +457,7 @@ otevření ve vyskakovacím okně</string>
<string name="error_path_creation">Cílovou složku nelze vytvořit</string>
<string name="error_file_creation">Soubor nelze vytvořit</string>
<string name="error_permission_denied">Oprávnění odepřeno systémem</string>
<string name="error_ssl_exception">Zabezpečené připojení selhalo</string>
<string name="error_ssl_exception">Nelze navázat zabezpečené připojení</string>
<string name="error_unknown_host">Server se nepodařilo najít</string>
<string name="error_connect_host">Nelze se připojit k serveru</string>
<string name="error_http_no_content">Server neposílá data</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>
@ -502,9 +502,9 @@ otevření ve vyskakovacím okně</string>
<string name="downloads_storage_ask_summary_kitkat">Budete dotázáni, kam jednotlivé soubory stáhnout.
\nZvolte SAF, pokud si přejete stahovat na externí SD kartu</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.
<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 instance, které se vám líbí, 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">Náhled videa na zamknuté obrazovce</string>
<string name="enable_lock_screen_video_thumbnail_summary">Při použití přehrávače na pozadí se náhled videa 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

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></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

@ -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>
@ -155,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>
@ -366,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>
@ -392,7 +392,7 @@
<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>
@ -484,7 +484,7 @@
<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>
@ -495,9 +495,9 @@
<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>
@ -506,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>
@ -539,4 +539,9 @@
<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>

View File

@ -4,14 +4,14 @@
<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>
@ -66,11 +66,11 @@
<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="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 ŝprucfenestron modon</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>
@ -87,12 +87,12 @@
<string name="controls_add_to_playlist_title">Aldonu al</string>
<string name="autoplay_by_calling_app_title">Aŭtomata play</string>
<string name="autoplay_by_calling_app_summary">Ludas filmeton kiam NewPipe vokas el alia programo</string>
<string name="default_popup_resolution_title">Defaŭlta rezolucio de la ŝprucfenestro</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">Ludanta 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>
@ -138,14 +138,14 @@
<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_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,53 +156,53 @@
<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="default_content_country_title">Defaŭlta enhava lando</string>
<string name="start_here_on_popup">Komenci ludi en nova ŝprucfenestro</string>
<string name="default_content_country_title">Preferata enhavlando</string>
<string name="toggle_orientation">Ŝangi Orientiĝon</string>
<string name="switch_to_background">Ŝanĝi al Fono</string>
<string name="switch_to_popup">Ŝanĝi al ŝprucfenestro</string>
<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 ludanta la lasta enhavo en malrepetita atendovico</string>
@ -218,7 +218,7 @@
\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 krozilo (la retejo malhaveblas por poŝtelefonoj)
\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>
@ -237,7 +237,7 @@
<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 rezolucio kiam uzanta moveblan datumon</string>
<string name="minimize_on_exit_popup_description">Minimumigi al ŝprucfenestro ludilo</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>
@ -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>
@ -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>
@ -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,7 +341,7 @@
<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="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>
@ -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>
@ -377,10 +377,10 @@
<string name="start_here_on_main">Komenci ludi ĉi tie</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>
@ -440,11 +440,11 @@
<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 serioze respektas vian privatecon. 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 atenton al la privateca politiko de NewPipe. Bonvolu atentive legi ĝin.
\nVi devas akcepti ĝin por sendi nin la cimsignalo.</string>
\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>
@ -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">
@ -525,13 +525,25 @@
<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="videos_string">Filmetoj</string>
<string name="permission_display_over_apps">Doni la permeson por afiŝiĝi supre aliaj apoj</string>
<string name="app_language_title">Preferata aplingvo</string>
<string name="systems_language">Sistemnormo</string>
<string name="subtitle_activity_recaptcha">Premu « Finita » kiam solvita</string>
<string name="recaptcha_done_button">Finita</string>
<plurals name="dynamic_seek_duration_description">
<item quantity="other">%s sekundoj</item>
</plurals>
</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,7 +517,7 @@
<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">Selecciona tus instancias favoritas de PeerTube</string>
@ -525,7 +525,7 @@
<string name="peertube_instance_add_title">Agregar instancia</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">Sólo URLs con HTTPS son soportados</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>
@ -534,4 +534,12 @@
<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>
@ -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>
@ -400,4 +400,6 @@
<string name="unsubscribe">Peru tilaus</string>
<string name="tab_new">Uusi välilehti</string>
<string name="tab_choose">Valitse välilehti</string>
<string name="missions_header_finished">Valmis</string>
<string name="enqueue">Jono</string>
</resources>

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,18 +105,18 @@
<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>
@ -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>
@ -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">
@ -535,4 +535,12 @@
<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

@ -19,7 +19,7 @@
<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="popup_mode_share_menu_title">מצב חלון צף</string>
<string name="controls_background_title">רקע</string>
<string name="controls_popup_title">חלון צף</string>
<string name="download_path_title">תיקייה להורדת סרטונים</string>
@ -33,9 +33,9 @@
<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="show_higher_resolutions_summary">רק חלק מהמכשירים יכולים לנגן סרטונים ב־2K/4K</string>
<string name="play_with_kodi_title">נגינה ב־Kodi</string>
<string name="kore_not_found">היישומון Kore לא נמצא. להתקין אותו\?</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>
@ -65,7 +65,7 @@
<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="video_is_age_restricted">הצגת סרטונים עם הגבלת גיל. ניתן לשנות את זה בעתיד דרך ההגדרות.</string>
<string name="duration_live">חי</string>
<string name="downloads">הורדות</string>
<string name="downloads_title">הורדות</string>
@ -110,10 +110,10 @@
<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_title">להמשיך את הניגון</string>
<string name="resume_on_audio_focus_gain_summary">להמשיך לנגן לאחר הפרעות (למשל: שיחות טלפון)</string>
<string name="show_hold_to_append_title">להציג את העצה „להחזיק כדי להוסיף לרשימת נגינה”</string>
<string name="show_hold_to_append_summary">להציג עצה בעת לחיצה על כפתור בנגן רקע או צף בעמוד פרטי סרטון</string>
<string name="show_hold_to_append_summary">להציג עצה בעת לחיצה על הרקע או על הכפתור של הנגן הצף ב„פרטים:” על הסרטון</string>
<string name="settings_category_player_title">נגן</string>
<string name="settings_category_player_behavior_title">התנהגות</string>
<string name="settings_category_history_title">היסטוריה ומטמון</string>
@ -147,7 +147,7 @@
<string name="video">סרטון</string>
<string name="audio">שמע</string>
<string name="retry">ניסיון חוזר</string>
<string name="storage_permission_denied">הגישה לאחסון נדחתה</string>
<string name="storage_permission_denied">יש להעניק גישה לאחסון תחילה</string>
<string name="short_thousand">ק׳</string>
<string name="short_million">מ׳</string>
<string name="short_billion">מיליארד</string>
@ -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>
@ -216,7 +216,7 @@
<string name="contribution_encouragement">אם יש לך רעיון כלשהו בנוגע לתרגום, שינויי עיצוב, ניקוי הקוד או שינויים מהותיים בקוד - אנו תמיד שמחים לקבל עזרה. ככל שיותר דברים מתבצעים כך היישומון משתפר!</string>
<string name="view_on_github">הצגה ב־GitHub</string>
<string name="donation_title">תרומה</string>
<string name="donation_encouragement">הפיתוח של NewPipe נערך ע״י מתנדבים שמשקיעים את זמנם כדי להגיש לך את החוויה הטובה ביותר. באפשרותך להעניק בחזרה כדי לסייע למפתחים לשפר את NewPipe בעודם נהנים מכוס קפה.</string>
<string name="donation_encouragement">הפיתוח של NewPipe נערך ע״י מתנדבים שמשקיעים את זמנם הפנוי כדי להגיש לך את חווית השימוש הטובה ביותר. באפשרותך להעניק בחזרה כדי לסייע למפתחים לשפר את NewPipe בעודם נהנים מכוס קפה.</string>
<string name="give_back">לתרום בחזרה</string>
<string name="website_title">אתר הבית</string>
<string name="website_encouragement">מומלץ לבקר באתר של NewPipe לפרטים נוספים ולחדשות.</string>
@ -338,7 +338,7 @@
<string name="download_thumbnail_summary">כיבוי האפשרות מונע את טעינת התמונות הממוזערות, חוסך בתקשורת נתונים ובניצולת הזיכרון. שינויים באפשרות זו מוחקים את המטמון בזיכרון ובכונן.</string>
<string name="metadata_cache_wipe_summary">הסרת כל נתוני העמודים שבמטמון</string>
<string name="auto_queue_title">הוספת התזרים הבא לרשימת הנגינה אוטומטית</string>
<string name="auto_queue_summary">להוסיף אוטומטית תזרים דומה בעת נגינת התזרים האחרון בתור שאינו מחזורי</string>
<string name="auto_queue_summary">להמשיך תור נגינה סופית (בלתי מחזורית) על ידי הוספת תזרים קשור</string>
<string name="toggle_orientation">החלפת כיווניות</string>
<string name="switch_to_main">העברה לראשי</string>
<string name="import_data_summary">משכתב את ההיסטוריה והמינויים הנוכחיים שלך</string>
@ -377,7 +377,7 @@
<string name="resize_fit">התאמה</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_title">LeakCanary</string>
<string name="enable_leak_canary_summary">מעקב אחר זליגת זיכרון עשויה לגרום ליישומון להיות בלתי זמין בזמן העתקת תוכן הזיכרון לקובץ</string>
<string name="import_soundcloud_instructions_hint">המזהה שלך, soundcloud.com/המזהה שלך</string>
<string name="import_network_expensive_warning">נא לשים לב כי פעולה זו עשויה להעמיס על תקשורת הנתונים.
@ -399,18 +399,18 @@
<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="volume_gesture_control_summary">שימוש במחוות כדי לשלוט בעצמת השמע של הנגן</string>
<string name="brightness_gesture_control_title">מחוות בקרת בהירות</string>
<string name="brightness_gesture_control_summary">ניתן להשתמש במחוות כדי לשלוט בבהירות הנגן</string>
<string name="brightness_gesture_control_summary">שימוש במחוות כדי לשלוט בבהירות הנגן</string>
<string name="settings_category_updates_title">עדכונים</string>
<string name="file_deleted">נמחק קובץ</string>
<string name="app_update_notification_channel_name">התראת עדכון יישומון</string>
<string name="app_update_notification_channel_description">התראות על גרסה חדשה של NewPipe</string>
<string name="download_to_sdcard_error_title">האחסון החיצוני אינו זמין</string>
<string name="download_to_sdcard_error_message">אין אפשרות להוריד לכרטיס SD. לאפס את מיקום תיקיית ההורדה\?</string>
<string name="saved_tabs_invalid_json">נעשה שימוש בלשוניות בררת המחדל, אירעה שגיאה בעת קריאת הלשוניות שנשמרו</string>
<string name="saved_tabs_invalid_json">לא ניתן לקרוא לשוניות שמורות, לכן נעשה שימוש באלו של בררת המחדל</string>
<string name="restore_defaults">שחזור בררות מחדל</string>
<string name="restore_defaults_confirmation">לשחזר את בררות המחדל\?</string>
<string name="restore_defaults_confirmation">לשחזר בררות מחדל\?</string>
<string name="subscribers_count_not_available">מספר המנויים אינו זמין</string>
<string name="main_page_content_summary">אילו לשוניות תופענה בעמוד הראשי</string>
<string name="selection">בחירה</string>
@ -456,7 +456,7 @@
<string name="error_file_creation">לא ניתן ליצור את הקובץ</string>
<string name="error_path_creation">לא ניתן ליצור את תיקיית היעד</string>
<string name="error_permission_denied">ההרשאה נדחתה על ידי המערכת</string>
<string name="error_ssl_exception">החיבור המאובטח נכשל</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>
@ -470,7 +470,7 @@
<string name="pause_downloads_on_mobile">לייצר הפרעה ברשתות מדודות</string>
<string name="pause_downloads_on_mobile_desc">שימושי בעת מעבר לחיבור רשת סלולרית, למרות שישנן הורדות שלא ניתן להשהות</string>
<string name="show_comments_title">הצגת תגובות</string>
<string name="show_comments_summary">יש להשבית כדי להפסיק הצגת תגובות</string>
<string name="show_comments_summary">יש להשבית כדי להפסיק הסתרת תגובות</string>
<string name="autoplay_title">ניגון אוטומטי</string>
<plurals name="comments">
<item quantity="one">תגובות</item>
@ -506,7 +506,7 @@
<string name="downloads_storage_ask_summary_kitkat">תוצג שאלה היכן לשמור כל הורדה.
\nיש להפעיל זאת אם ברצונך להוריד לכרטיס SD חיצוני</string>
<string name="downloads_storage_use_saf_title">שימוש ב־SAF</string>
<string name="downloads_storage_use_saf_summary">תשתית גישה לאחסון מאפשרת הורדות לכרטיס SD חיוני.
<string name="downloads_storage_use_saf_summary">תשתית גישה לאחסון מאפשרת הורדות לכרטיס SD חיצוני.
\nלתשומת לבך: חלק מהמכשירים אינם נתמכים</string>
<string name="clear_playback_states_title">מחיקת מיקומי נגינה</string>
<string name="clear_playback_states_summary">מחיקת כל מיקומי הנגינה</string>
@ -532,7 +532,7 @@
<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_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>
@ -545,9 +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="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

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="main_bg_subtitle">Ketuk pencarian untuk memulai</string>
<string name="main_bg_subtitle">Ketuk \"Cari\" untuk memulai</string>
<string name="view_count_text">%1$s ditonton</string>
<string name="upload_date_text">Dipublikasikan tanggal %1$s</string>
<string name="install">Pasang</string>
@ -24,7 +24,7 @@
<string name="autoplay_by_calling_app_summary">Putar video ketika NewPipe dijalankan dari aplikasi lain</string>
<string name="default_resolution_title">Resolusi</string>
<string name="play_with_kodi_title">Putar dengan Kodi</string>
<string name="kore_not_found">Apl Kore tidak ditemukan. Pasang Kore\?</string>
<string name="kore_not_found">Pasang apl Kore\?</string>
<string name="show_play_with_kodi_title">Tampilkan opsi \"Putar dengan Kodi\"</string>
<string name="show_play_with_kodi_summary">Tampilkan opsi untuk memutar video via Kodi</string>
<string name="play_audio">Audio</string>
@ -43,12 +43,12 @@
<string name="play_btn_text">Putar</string>
<string name="content">Konten</string>
<string name="show_age_restricted_content_title">Konten yang dibatasi usia</string>
<string name="video_is_age_restricted">Tampilkan video yang dibatasi usia. Membuka akses konten tersebut bisa dilakukan dari Pengaturan.</string>
<string name="video_is_age_restricted">Tampilkan video yang dibatasi usia. Bisa diubah nanti dari pengaturan.</string>
<string name="network_error">Galat jaringan</string>
<string name="could_not_load_thumbnails">Tidak bisa memuat semua thumbnail</string>
<string name="did_you_mean">Maksud anda: %1$s\?</string>
<string name="screen_rotation">rotasi</string>
<string name="duration_live">LANGSUNG</string>
<string name="duration_live">Langsung</string>
<string name="downloads">Unduhan</string>
<string name="downloads_title">Unduhan</string>
<string name="error_report_title">Laporan galat</string>
@ -60,9 +60,9 @@
<string name="live_streams_not_supported">Siaran langsung belum didukung</string>
<string name="could_not_load_image">Tidak bisa memuat gambar</string>
<string name="sorry_string">Maaf, hal tersebut seharusnya tidak terjadi.</string>
<string name="error_report_button_text">Lapor galat via surel</string>
<string name="error_report_button_text">Laporkan kesalahan via surel</string>
<string name="error_snackbar_message">Maaf, telah terjadi galat.</string>
<string name="error_snackbar_action">LAPOR</string>
<string name="error_snackbar_action">Lapor</string>
<string name="what_device_headline">Info:</string>
<string name="what_happened_headline">Yang terjadi:</string>
<string name="your_comment">Komentar anda (dalam bahasa Inggris):</string>
@ -74,13 +74,13 @@
<string name="detail_dislikes_img_view_description">Tidak suka</string>
<string name="use_tor_title">Gunakan Tor</string>
<string name="use_tor_summary">(Eksperimental) Paksa trafik unduhan melalui Tor untuk meningkatkan privasi (video stream belum didukung).</string>
<string name="report_error">Laporkan Galat</string>
<string name="report_error">Laporkan kesalahan</string>
<string name="err_dir_create">Tidak bisa membuat direktori unduhan \'%1$s\'</string>
<string name="info_dir_created">Direktori unduhan dibuat \'%1$s\'</string>
<string name="video">Video</string>
<string name="audio">Audio</string>
<string name="retry">Ulangi</string>
<string name="storage_permission_denied">Izin akses penyimpanan ditolak</string>
<string name="storage_permission_denied">Izinkan akses penyimpanan terlebih dahulu</string>
<string name="delete">Hapus</string>
<string name="view">Putar</string>
<string name="start">Mulai</string>
@ -98,15 +98,15 @@
<string name="msg_wait">Mohon tunggu…</string>
<string name="msg_copied">Disalin ke papan klip</string>
<string name="no_available_dir">Silakan pilih folder unduhan di pengaturan</string>
<string name="no_player_found">Pemutar stream tidak ditemukan. Apakah anda ingin memasang VLC\?</string>
<string name="no_player_found">Pemutar stream tidak ditemukan. Pasang VLC\?</string>
<string name="youtube_signature_decryption_error">Tidak bisa dekripsi tanda tangan URL video</string>
<string name="app_ui_crash">App/UI rusak</string>
<string name="could_not_get_stream">Tidak bisa mendapatkan stream apapun</string>
<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>
@ -119,19 +119,19 @@
<string name="open_in_popup_mode">Buka di mode popup</string>
<string name="msg_popup_permission">Izin ini dibutuhkan untuk
\nmembuka di mode popup</string>
<string name="popup_mode_share_menu_title">Mode popup NewPipe</string>
<string name="popup_mode_share_menu_title">Mode popup</string>
<string name="popup_playing_toast">Memutar dalam mode popup</string>
<string name="disabled">Dinonaktifkan</string>
<string name="default_video_format_title">Format video</string>
<string name="default_popup_resolution_title">Resolusi popup</string>
<string name="show_higher_resolutions_title">Tampilkan resolusi yang lebih tinggi</string>
<string name="show_higher_resolutions_summary">Hanya perangkat tertentu yang mendukung pemutaran video 2K/4K</string>
<string name="show_higher_resolutions_summary">Hanya perangkat tertentu yang bisa memutar video 2K/4K</string>
<string name="controls_background_title">Latar Belakang</string>
<string name="controls_popup_title">Popup</string>
<string name="refresh">Segarkan</string>
<string name="clear">Bersihkan</string>
<string name="filter">Filter</string>
<string name="use_external_video_player_summary">Menghapus audio pada BEBERAPA resolusi</string>
<string name="use_external_video_player_summary">Menghapus audio pada beberapa resolusi</string>
<string name="popup_remember_size_pos_title">Ingat ukuran dan posisi popup</string>
<string name="popup_remember_size_pos_summary">Ingat ukuran dan posisi terakhir popup</string>
<string name="settings_category_popup_title">Popup</string>
@ -166,8 +166,8 @@
<string name="subscribe_button_title">Subscribe</string>
<string name="subscribed_button_title">Disubscribe</string>
<string name="fragment_whats_new">Apa Yang Baru</string>
<string name="resume_on_audio_focus_gain_title">Lanjutkan saat fokus</string>
<string name="resume_on_audio_focus_gain_summary">Lanjutkan pemutaran setelah interupsi (mis. panggilan telepon)</string>
<string name="resume_on_audio_focus_gain_title">Lanjutkan pemutaran</string>
<string name="resume_on_audio_focus_gain_summary">Melanjutkan pemutaran setelah interupsi (mis. panggilan telepon)</string>
<string name="tab_main">Utama</string>
<string name="enable_search_history_title">Riwayat pencarian</string>
<string name="enable_search_history_summary">Simpan pencarian secara lokal</string>
@ -183,10 +183,10 @@
<string name="metadata_cache_wipe_title">Hapus tembolok metadata</string>
<string name="metadata_cache_wipe_summary">Buang semua data tembolok laman web</string>
<string name="metadata_cache_wipe_complete_notice">Cache metadata dihapus</string>
<string name="auto_queue_summary">Otomatis tambahkan stream terkait ketika memutar stream terakhir dalam antrean tanpa perulangan</string>
<string name="auto_queue_summary">Melanjutkan akhir dari antrean pemutaran (tak berulang) dengan menambahkan stream terkait</string>
<string name="enable_watch_history_summary">Simpan daftar video yang telah ditonton</string>
<string name="show_hold_to_append_title">Tampilkan tip \"Tahan untuk menambahkan\"</string>
<string name="show_hold_to_append_summary">Tampilkan tip ketika tombol latar belakang atau popup disentuh pada halaman detail video</string>
<string name="show_hold_to_append_summary">Tampilkan tip ketika menekan tombol latar belakang atau popup di dalam \"Detail:\" video</string>
<string name="default_content_country_title">Negara konten</string>
<string name="service_title">Layanan</string>
<string name="settings_category_player_title">Pemutar</string>
@ -309,7 +309,7 @@
<string name="resize_fill">Isi</string>
<string name="resize_zoom">Perbesar</string>
<string name="caption_auto_generated">Otomatis dibuat</string>
<string name="enable_leak_canary_title">Aktifkan LeakCanary</string>
<string name="enable_leak_canary_title">LeakCanary</string>
<string name="playback_default">Bawaan</string>
<string name="no_player_found_toast">Pemutar stream tidak ditemukan (anda bisa memasang VLC untuk memutarnya).</string>
<string name="controls_download_desc">Unduh berkas stream</string>
@ -410,10 +410,10 @@
<string name="app_update_notification_channel_description">Notifikasi untuk versi NewPipe baru</string>
<string name="download_to_sdcard_error_title">Penyimpanan eksternal tidak tersedia</string>
<string name="download_to_sdcard_error_message">Tidak bisa mengunduh ke kartu SD eksternal. Atur ulang lokasi folder unduhan\?</string>
<string name="saved_tabs_invalid_json">Menggunakan tab baku, ralat saat membaca tab yang disimpan</string>
<string name="saved_tabs_invalid_json">Tidak bisa membaca tab yang disimpan, beralih menggunakan tab bawaan</string>
<string name="restore_defaults">Kembali ke awal</string>
<string name="restore_defaults_confirmation">Apakah anda ingin kembali ke awal\?</string>
<string name="subscribers_count_not_available">Jumlah pelanggan tidak tersedia</string>
<string name="restore_defaults_confirmation">Apakah anda ingin mengembalikan ke bawaan\?</string>
<string name="subscribers_count_not_available">Jumlah subscriber tidak tersedia</string>
<string name="main_page_content_summary">Tab apa yang ditampilkan di halaman utama</string>
<string name="selection">Pilihan</string>
<string name="conferences">Konferensi</string>
@ -445,7 +445,7 @@
<string name="error_file_creation">File tidak dapat dibuat</string>
<string name="error_path_creation">Folder tujuan tidak dapat dibuat</string>
<string name="error_permission_denied">Izin ditolak oleh sistem</string>
<string name="error_ssl_exception">Koneksi aman gagal</string>
<string name="error_ssl_exception">Tidak bisa membuat koneksi yang aman</string>
<string name="error_unknown_host">Tidak dapat menemukan server</string>
<string name="error_connect_host">Tidak dapat terhubung ke server</string>
<string name="error_http_no_content">Server tidak mengirim data</string>
@ -459,7 +459,7 @@
<string name="pause_downloads_on_mobile">Berhenti pada jaringan terbatas</string>
<string name="pause_downloads_on_mobile_desc">Berguna saat beralih ke data seluler, walaupun beberapa unduhan tidak bisa ditangguhkan</string>
<string name="show_comments_title">Tampilkan komentar</string>
<string name="show_comments_summary">Nonaktifkan untuk berhenti menampilkan komentar</string>
<string name="show_comments_summary">Nonaktifkan untuk menyembunyikan komentar</string>
<string name="autoplay_title">Otomatis putar</string>
<plurals name="comments">
<item quantity="other">Komentar</item>
@ -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>
@ -491,7 +491,7 @@
\nPilih SAF jika anda ingin mengunduh ke kartu SD eksternal</string>
<string name="error_timeout">Batas waktu koneksi</string>
<string name="downloads_storage_use_saf_title">Gunakan SAF</string>
<string name="downloads_storage_use_saf_summary">Storage Access Framework memungkinkan mengunduh ke kartu SD eksternal.
<string name="downloads_storage_use_saf_summary">\'Storage Access Framework\' memungkinkan untuk mengunduh ke kartu SD eksternal.
\nCatatan: beberapa perangkat tidak kompatibel</string>
<string name="clear_playback_states_title">Hapus posisi pemutaran</string>
<string name="clear_playback_states_summary">Hapus semua posisi pemutaran</string>
@ -512,7 +512,7 @@
<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_url_help">Temukan situs yang anda suka 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>
@ -525,6 +525,16 @@
<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="enable_lock_screen_video_thumbnail_title">Thumbnail video layar kunci</string>
<string name="enable_lock_screen_video_thumbnail_summary">Ketika menggunakan pemutar latar belakang, thumbnail video akan ditampilkan pada layar kunci</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>
<string name="seek_duration_title">Durasi maju/mundur cepat</string>
<string name="subtitle_activity_recaptcha">Tekan \"Selesai\" saat 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

@ -1,22 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="main_bg_subtitle">گرته‌ له‌ گه‌ڕان بكه‌ بۆ ده‌ستپێكردن</string>
<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,17 +31,17 @@
<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>
<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_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="download_path_audio_dialog_title">پەڕگەی داگرتنی دەنگەکان هەڵبژێرە</string>
<string name="autoplay_by_calling_app_title">كاركردنی خۆكارانه‌</string>
<string name="default_resolution_title">قه‌باره‌ی بنەڕەتی</string>
<string name="default_popup_resolution_title">قه‌باره‌ی بنەڕەتی په‌نجه‌ره‌ی بچووک</string>
@ -215,8 +215,7 @@
<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="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>
@ -517,7 +516,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>
@ -538,4 +537,12 @@
<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>
@ -524,6 +524,22 @@
<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 med låseskjerm</string>
<string name="enable_lock_screen_video_thumbnail_summary">Når du bruker bakgrunnsspilleren, vises en videominiaturbilde på låseskjermen</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

@ -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

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="main_bg_subtitle">Naciśnij Szukaj, aby zacząć</string>
<string name="main_bg_subtitle">Naciśnij Szukaj, aby zacząć</string>
<string name="install">Zainstaluj</string>
<string name="cancel">Anuluj</string>
<string name="open_in_browser">Otwórz w przeglądarce</string>
@ -16,7 +16,7 @@
<string name="use_external_audio_player_title">Użyj zewnętrznego odtwarzacza audio</string>
<string name="view_count_text">%1$s wyświetleń</string>
<string name="upload_date_text">Opublikowano %1$s</string>
<string name="no_player_found">Nie znaleziono odtwarzacza strumieni. Czy chcesz zainstalować VLC\?</string>
<string name="no_player_found">Nie znaleziono odtwarzacza strumieni. Zainstalować VLC\?</string>
<string name="download_path_title">Folder pobierania wideo</string>
<string name="download_path_summary">Pobrane pliki wideo są przechowywane tutaj</string>
<string name="download_path_dialog_title">Wybierz folder pobierania plików wideo</string>
@ -27,7 +27,7 @@
<string name="autoplay_by_calling_app_summary">Odtwórz wideo, kiedy NewPipe zostanie wywołany z innej aplikacji</string>
<string name="default_resolution_title">Domyślna rozdzielczość</string>
<string name="play_with_kodi_title">Odtwórz w Kodi</string>
<string name="kore_not_found">Nie znaleziono aplikacji Kore. Zainstalować ją\?</string>
<string name="kore_not_found">Zainstalować brakującą aplikację Kore\?</string>
<string name="show_play_with_kodi_title">Pokaż opcję „Odtwórz z Kodi”</string>
<string name="show_play_with_kodi_summary">Wyświetl opcję odtwarzania filmów za pośrednictwem centrum multimedialnego Kodi</string>
<string name="play_audio">Dźwięk</string>
@ -65,7 +65,7 @@
<string name="sorry_string">Przepraszamy, to nie powinno mieć miejsca.</string>
<string name="error_report_button_text">Zgłoś błąd przez e-mail</string>
<string name="error_snackbar_message">Przepraszamy, wystąpiły pewne błędy.</string>
<string name="error_snackbar_action">ZGŁOŚ</string>
<string name="error_snackbar_action">Zgłoś</string>
<string name="what_device_headline">Informacje:</string>
<string name="what_happened_headline">Co się stało:</string>
<string name="info_labels">Co:\\nRequest:\\nJęzyk treści:\\nUsługa:\\nCzas GMT:\\nPakiet:\\nWersja:\\nWersja systemu:</string>
@ -84,7 +84,7 @@
<string name="video">Film</string>
<string name="audio">Dźwięk</string>
<string name="retry">Ponów</string>
<string name="storage_permission_denied">Odmowa dostępu do pamięci</string>
<string name="storage_permission_denied">Najpierw udziel dostępu do pamięci</string>
<string name="pause">Wstrzymaj</string>
<string name="view">Odtwórz</string>
<string name="delete">Usuń</string>
@ -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>
@ -139,7 +139,7 @@
<string name="msg_popup_permission">To pozwolenie jest wymagane, aby
\notworzyć w trybie okienkowym</string>
<string name="open_in_popup_mode">Odtwórz w trybie okienkowym</string>
<string name="popup_mode_share_menu_title">Tryb okienkowy NewPipe</string>
<string name="popup_mode_share_menu_title">Tryb okienkowy</string>
<string name="controls_popup_title">Tryb okienkowy</string>
<string name="best_resolution">Najlepsza rozdzielczość</string>
<string name="settings_category_downloads_title">Pobierz</string>
@ -174,7 +174,7 @@
<string name="enable_search_history_summary">Zapisuj lokalnie historię wyszukiwania</string>
<string name="enable_watch_history_title">Historia oglądanych</string>
<string name="enable_watch_history_summary">Zapisuj historię oglądania</string>
<string name="resume_on_audio_focus_gain_title">Wznów gdy na pierwszym planie</string>
<string name="resume_on_audio_focus_gain_title">Wznów odtwarzanie</string>
<string name="resume_on_audio_focus_gain_summary">Kontynuuj odtwarzanie po przerwaniu (np. po rozmowie telefonicznej)</string>
<string name="notification_channel_name">Powiadomienia NewPipe</string>
<string name="notification_channel_description">Powiadomienia dla NewPipe w tle i trybie wyskakujących okien odtwarzania</string>
@ -222,7 +222,7 @@
</plurals>
<string name="charset_most_special_characters">Większość znaków specjalnych</string>
<string name="donation_title">Dotacja</string>
<string name="donation_encouragement">NewPipe rozwijane jest przez wolontariuszy, którzy poświęcają swój wolny czas, by zapewnić Ci jak najlepsze wrażenia podczas korzystania z aplikacji. To dobry moment, aby wesprzeć programistów i sprawić, by program był jeszcze lepszy, delektując się filiżanką kawy.</string>
<string name="donation_encouragement">NewPipe jest rozwijany przez wolontariuszy, którzy poświęcają swój wolny czas, by zapewnić Ci jak najlepsze wrażenia podczas korzystania z aplikacji. To dobry moment, aby wesprzeć programistów i sprawić, by program był jeszcze lepszy, delektując się filiżanką kawy.</string>
<string name="give_back">Wspomóż</string>
<string name="website_title">Witryna</string>
<string name="website_encouragement">By otrzymać więcej informacji oraz najnowsze wiadomości o NewPipe, odwiedź naszą stronę.</string>
@ -316,7 +316,7 @@
<string name="resize_fill">Wypełnij</string>
<string name="resize_zoom">Powiększ</string>
<string name="caption_auto_generated">Wygenerowane automatycznie</string>
<string name="enable_leak_canary_title">Włącz LeakCanary</string>
<string name="enable_leak_canary_title">LeakCanary</string>
<string name="enable_leak_canary_summary">Monitorowanie wycieków pamięci może powodować niestabilność aplikacji podczas zrzutu pamięci</string>
<string name="enable_disposed_exceptions_title">Zgłaszanie błędów poza cyklem życia</string>
<string name="enable_disposed_exceptions_summary">Wymusza raportowanie niedostarczonych wyjątków Rx poza cyklem życia fragmentu lub aktywności</string>
@ -329,7 +329,7 @@
<string name="metadata_cache_wipe_summary">Wyczyść pamięć podręczną stron</string>
<string name="metadata_cache_wipe_complete_notice">Wyczyszczono pamięć podręczną metadanych</string>
<string name="auto_queue_title">Automatyczne kolejkowanie następnego strumienia</string>
<string name="auto_queue_summary">Automatycznie dodaj kolejny powiązany strumień podczas odtwarzania ostatniego strumienia w niezapętlonej kolejce</string>
<string name="auto_queue_summary">Kontynuuj kończenie (niepowtarzanie) kolejki odtwarzania, dołączając powiązany strumień</string>
<string name="file">Plik</string>
<string name="invalid_directory">Nie ma takiego folderu</string>
<string name="invalid_source">Nie ma takiego źródła plików/treści</string>
@ -409,7 +409,7 @@
<string name="tab_new">Nowa karta</string>
<string name="tab_choose">Wybierz kartę</string>
<string name="volume_gesture_control_title">Kontrola gestów głośności</string>
<string name="volume_gesture_control_summary">Użyj gestów do sterowania głośnośnością odtwarzania</string>
<string name="volume_gesture_control_summary">Użyj gestów do sterowania głośnośnością odtwarzacza</string>
<string name="brightness_gesture_control_title">Kontrola gestów jasności</string>
<string name="brightness_gesture_control_summary">Użyj gestów do sterowania jasnością odtwarzacza</string>
<string name="settings_category_updates_title">Aktualizacje</string>
@ -418,10 +418,10 @@
<string name="app_update_notification_channel_description">Powiadomienia o nowej wersji NewPipe</string>
<string name="download_to_sdcard_error_title">Pamięć zewnętrzna jest niedostępna</string>
<string name="download_to_sdcard_error_message">Pobieranie na zewnętrzną kartę SD nie jest możliwe. Zresetować lokalizację folderu pobierania\?</string>
<string name="saved_tabs_invalid_json">Korzystanie z domyślnych kart, błąd podczas czytania zapisanych kart</string>
<string name="saved_tabs_invalid_json">Nie można odczytać zapisanych kart, więc będzie używana domyślna</string>
<string name="restore_defaults">Przywróć domyślne</string>
<string name="restore_defaults_confirmation">Czy chcesz przywrócić ustawienia domyślne\?</string>
<string name="subscribers_count_not_available">Subskrybenci nie są dostępni</string>
<string name="subscribers_count_not_available">Subskrybent jest niedostępny</string>
<string name="main_page_content_summary">Karty wyświetlane na stronie głównej</string>
<string name="selection">Wybierz</string>
<string name="updates_setting_title">Aktualizacje</string>
@ -451,7 +451,7 @@
<string name="error_file_creation">Nie można utworzyć pliku</string>
<string name="error_path_creation">Nie można utworzyć folderu docelowego</string>
<string name="error_permission_denied">Odmowa dostępu do systemu</string>
<string name="error_ssl_exception">Bezpieczne połączenie nie powiodło się</string>
<string name="error_ssl_exception">Nie można nawiązać bezpiecznego połączenia</string>
<string name="error_unknown_host">Nie można znaleźć serwera</string>
<string name="error_connect_host">Nie można połączyć się z serwerem</string>
<string name="error_http_no_content">Serwer nie wysyła danych</string>
@ -468,7 +468,7 @@
<string name="conferences">Konferencje</string>
<string name="missions_header_pending">Oczekuje</string>
<string name="show_comments_title">Pokaż komentarze</string>
<string name="show_comments_summary">Wyłącz, aby przestać wyświetlać komentarze</string>
<string name="show_comments_summary">Wyłącz, aby ukryć komentarze</string>
<string name="autoplay_title">Automatyczne odtwarzanie</string>
<plurals name="comments">
<item quantity="one">Komentarze</item>
@ -502,7 +502,7 @@
<string name="downloads_storage_ask_summary_kitkat">Zostaniesz zapytany, gdzie zapisać każde pobranie.
\nWybierz SAF, jeśli chcesz pobrać na zewnętrzną kartę SD</string>
<string name="downloads_storage_use_saf_title">Użyj SAF</string>
<string name="downloads_storage_use_saf_summary">Biblioteka dostępu do pamięci pozwala na pobieranie danych na zewnętrzną kartę.
<string name="downloads_storage_use_saf_summary">Struktura dostępu do pamięci masowej umożliwia pobieranie danych na zewnętrzną kartę SD.
\nUwagi: Niektóre urządzenia nie są kompatybilne</string>
<string name="clear_playback_states_title">Usuń pozycje odtwarzania</string>
<string name="clear_playback_states_summary">Usuwa wszystkie pozycje odtwarzania</string>
@ -526,7 +526,7 @@
<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">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_url_help">Znajdź wystąpienia, które lubisz 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 można sprawdzić poprawności instancji</string>
@ -539,9 +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="enable_lock_screen_video_thumbnail_title">Zablokuj miniaturę wideo na ekranie</string>
<string name="enable_lock_screen_video_thumbnail_summary">Podczas korzystania z odtwarzacza w tle na ekranie blokady wyświetlana jest 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="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

@ -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>
@ -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>
@ -543,4 +543,12 @@ abrir em modo popup</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>

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