Merge remote-tracking branch 'newpipe/dev' into rebase

This commit is contained in:
Alexander-- 2020-01-29 03:10:16 +06:59
commit fac13fb8cb
69 changed files with 1878 additions and 827 deletions

View File

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

View File

@ -11,8 +11,8 @@ android {
applicationId "org.schabi.newpipe"
minSdkVersion 19
targetSdkVersion 28
versionCode 800
versionName "0.18.0"
versionCode 820
versionName "0.18.2"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
@ -62,7 +62,7 @@ dependencies {
exclude module: 'support-annotations'
})
implementation 'com.github.TeamNewPipe:NewPipeExtractor:8e53fda'
implementation 'com.github.TeamNewPipe:NewPipeExtractor:ff61e284'
testImplementation 'junit:junit:4.12'
testImplementation 'org.mockito:mockito-core:2.23.0'

View File

@ -157,6 +157,7 @@
<!-- channel prefix -->
<data android:pathPrefix="/channel/"/>
<data android:pathPrefix="/user/"/>
<data android:pathPrefix="/c/"/>
<!-- playlist prefix -->
<data android:pathPrefix="/playlist"/>
</intent-filter>

View File

@ -458,6 +458,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
@ -567,8 +577,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();
@ -590,14 +598,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

@ -99,11 +99,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

@ -84,11 +84,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

@ -559,8 +559,16 @@ public class DownloadDialog extends DialogFragment implements RadioGroup.OnCheck
case R.id.audio_button:
mainStorage = mainStorageAudio;
format = audioStreamsAdapter.getItem(selectedAudioIndex).getFormat();
mime = format.mimeType;
filename += format.suffix;
switch(format) {
case WEBMA_OPUS:
mime = "audio/ogg";
filename += "opus";
break;
default:
mime = format.mimeType;
filename += format.suffix;
break;
}
break;
case R.id.video_button:
mainStorage = mainStorageVideo;
@ -824,7 +832,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

@ -30,6 +30,7 @@ import org.schabi.newpipe.settings.tabs.Tab;
import org.schabi.newpipe.settings.tabs.TabsManager;
import org.schabi.newpipe.util.NavigationHelper;
import org.schabi.newpipe.util.ServiceHelper;
import org.schabi.newpipe.views.ScrollableTabLayout;
import java.util.ArrayList;
import java.util.List;
@ -37,7 +38,7 @@ import java.util.List;
public class MainFragment extends BaseFragment implements TabLayout.OnTabSelectedListener {
private ViewPager viewPager;
private SelectedTabsPagerAdapter pagerAdapter;
private TabLayout tabLayout;
private ScrollableTabLayout tabLayout;
private List<Tab> tabsList = new ArrayList<>();
private TabsManager tabsManager;

View File

@ -79,6 +79,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;
@ -627,7 +628,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:
@ -635,16 +636,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");

View File

@ -1,15 +1,16 @@
package org.schabi.newpipe.local.dialog;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import org.schabi.newpipe.NewPipeDatabase;
import org.schabi.newpipe.R;
import org.schabi.newpipe.database.LocalItem;
@ -152,6 +153,12 @@ public final class PlaylistAppendDialog extends PlaylistDialog {
final Toast successToast = Toast.makeText(getContext(),
R.string.playlist_add_stream_success, Toast.LENGTH_SHORT);
if (playlist.thumbnailUrl.equals("drawable://" + R.drawable.dummy_thumbnail_playlist)) {
playlistDisposables.add(manager.changePlaylistThumbnail(playlist.uid, streams.get(0).getThumbnailUrl())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(ignored -> successToast.show()));
}
playlistDisposables.add(manager.appendToPlaylist(playlist.uid, streams)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(ignored -> successToast.show()));

View File

@ -4,11 +4,6 @@ import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Parcelable;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.ItemTouchHelper;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
@ -18,6 +13,12 @@ import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.recyclerview.widget.ItemTouchHelper;
import androidx.recyclerview.widget.RecyclerView;
import org.reactivestreams.Subscriber;
import org.reactivestreams.Subscription;
import org.schabi.newpipe.NewPipeDatabase;
@ -413,10 +414,25 @@ public class LocalPlaylistFragment extends BaseLocalListFragment<List<PlaylistSt
disposables.add(disposable);
}
private void updateThumbnailUrl() {
String newThumbnailUrl;
if (!itemListAdapter.getItemsList().isEmpty()) {
newThumbnailUrl = ((PlaylistStreamEntry) itemListAdapter.getItemsList().get(0)).thumbnailUrl;
} else {
newThumbnailUrl = "drawable://" + R.drawable.dummy_thumbnail_playlist;
}
changeThumbnailUrl(newThumbnailUrl);
}
private void deleteItem(final PlaylistStreamEntry item) {
if (itemListAdapter == null) return;
itemListAdapter.removeItem(item);
if (playlistManager.getPlaylistThumbnail(playlistId).equals(item.thumbnailUrl))
updateThumbnailUrl();
setVideoCount(itemListAdapter.getItemsList().size());
saveChanges();
}

View File

@ -103,6 +103,10 @@ public class LocalPlaylistManager {
return modifyPlaylist(playlistId, null, thumbnailUrl);
}
public String getPlaylistThumbnail(final long playlistId) {
return playlistTable.getPlaylist(playlistId).blockingFirst().get(0).getThumbnailUrl();
}
private Maybe<Integer> modifyPlaylist(final long playlistId,
@Nullable final String name,
@Nullable final String thumbnailUrl) {

View File

@ -25,12 +25,17 @@ import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.os.Build;
import android.os.IBinder;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.core.app.NotificationCompat;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.View;
import android.widget.RemoteViews;
@ -48,6 +53,7 @@ import org.schabi.newpipe.player.helper.LockManager;
import org.schabi.newpipe.player.playqueue.PlayQueueItem;
import org.schabi.newpipe.player.resolver.AudioPlaybackResolver;
import org.schabi.newpipe.player.resolver.MediaSourceTag;
import org.schabi.newpipe.util.BitmapUtils;
import org.schabi.newpipe.util.NavigationHelper;
import org.schabi.newpipe.util.ThemeHelper;
@ -75,6 +81,7 @@ public final class BackgroundPlayer extends Service {
private BasePlayerImpl basePlayerImpl;
private LockManager lockManager;
private SharedPreferences sharedPreferences;
/*//////////////////////////////////////////////////////////////////////////
// Service-Activity Binder
@ -95,6 +102,9 @@ public final class BackgroundPlayer extends Service {
private boolean shouldUpdateOnProgress;
private static final int NOTIFICATION_UPDATES_BEFORE_RESET = 60;
private int timesNotificationUpdated;
/*//////////////////////////////////////////////////////////////////////////
// Service's LifeCycle
//////////////////////////////////////////////////////////////////////////*/
@ -104,6 +114,7 @@ public final class BackgroundPlayer extends Service {
if (DEBUG) Log.d(TAG, "onCreate() called");
notificationManager = ((NotificationManager) getSystemService(NOTIFICATION_SERVICE));
lockManager = new LockManager(this);
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
ThemeHelper.setTheme(this);
basePlayerImpl = new BasePlayerImpl(this);
@ -180,6 +191,7 @@ public final class BackgroundPlayer extends Service {
private void resetNotification() {
notBuilder = createNotification();
timesNotificationUpdated = 0;
}
private NotificationCompat.Builder createNotification() {
@ -195,12 +207,45 @@ public final class BackgroundPlayer extends Service {
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
.setCustomContentView(notRemoteView)
.setCustomBigContentView(bigNotRemoteView);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
setLockScreenThumbnail(builder);
}
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
builder.setPriority(NotificationCompat.PRIORITY_MAX);
}
return builder;
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
private void setLockScreenThumbnail(NotificationCompat.Builder builder) {
boolean isLockScreenThumbnailEnabled = sharedPreferences.getBoolean(
getString(R.string.enable_lock_screen_video_thumbnail_key),
true
);
if (isLockScreenThumbnailEnabled) {
basePlayerImpl.mediaSessionManager.setLockScreenArt(
builder,
getCenteredThumbnailBitmap()
);
} else {
basePlayerImpl.mediaSessionManager.clearLockScreenArt(builder);
}
}
@Nullable
private Bitmap getCenteredThumbnailBitmap() {
int screenWidth = Resources.getSystem().getDisplayMetrics().widthPixels;
int screenHeight = Resources.getSystem().getDisplayMetrics().heightPixels;
return BitmapUtils.centerCrop(
basePlayerImpl.getThumbnail(),
screenWidth,
screenHeight);
}
private void setupNotification(RemoteViews remoteViews) {
if (basePlayerImpl == null) return;
@ -248,10 +293,13 @@ public final class BackgroundPlayer extends Service {
//if (DEBUG) Log.d(TAG, "updateNotification() called with: drawableId = [" + drawableId + "]");
if (notBuilder == null) return;
if (drawableId != -1) {
if (notRemoteView != null) notRemoteView.setImageViewResource(R.id.notificationPlayPause, drawableId);
if (bigNotRemoteView != null) bigNotRemoteView.setImageViewResource(R.id.notificationPlayPause, drawableId);
if (notRemoteView != null)
notRemoteView.setImageViewResource(R.id.notificationPlayPause, drawableId);
if (bigNotRemoteView != null)
bigNotRemoteView.setImageViewResource(R.id.notificationPlayPause, drawableId);
}
notificationManager.notify(NOTIFICATION_ID, notBuilder.build());
timesNotificationUpdated++;
}
/*//////////////////////////////////////////////////////////////////////////
@ -275,7 +323,8 @@ public final class BackgroundPlayer extends Service {
protected class BasePlayerImpl extends BasePlayer {
@NonNull final private AudioPlaybackResolver resolver;
@NonNull
final private AudioPlaybackResolver resolver;
private int cachedDuration;
private String cachedDurationString;
@ -294,8 +343,10 @@ public final class BackgroundPlayer extends Service {
super.handleIntent(intent);
resetNotification();
if (bigNotRemoteView != null) bigNotRemoteView.setProgressBar(R.id.notificationProgressBar, 100, 0, false);
if (notRemoteView != null) notRemoteView.setProgressBar(R.id.notificationProgressBar, 100, 0, false);
if (bigNotRemoteView != null)
bigNotRemoteView.setProgressBar(R.id.notificationProgressBar, 100, 0, false);
if (notRemoteView != null)
notRemoteView.setProgressBar(R.id.notificationProgressBar, 100, 0, false);
startForeground(NOTIFICATION_ID, notBuilder.build());
}
@ -330,6 +381,7 @@ public final class BackgroundPlayer extends Service {
updateNotificationThumbnail();
updateNotification(-1);
}
/*//////////////////////////////////////////////////////////////////////////
// States Implementation
//////////////////////////////////////////////////////////////////////////*/
@ -351,10 +403,15 @@ public final class BackgroundPlayer extends Service {
updateProgress(currentProgress, duration, bufferPercent);
if (!shouldUpdateOnProgress) return;
resetNotification();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O /*Oreo*/) updateNotificationThumbnail();
if (timesNotificationUpdated > NOTIFICATION_UPDATES_BEFORE_RESET) {
resetNotification();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O /*Oreo*/) {
updateNotificationThumbnail();
}
}
if (bigNotRemoteView != null) {
if(cachedDuration != duration) {
if (cachedDuration != duration) {
cachedDuration = duration;
cachedDurationString = getTimeString(duration);
}
@ -382,8 +439,10 @@ public final class BackgroundPlayer extends Service {
@Override
public void destroy() {
super.destroy();
if (notRemoteView != null) notRemoteView.setImageViewBitmap(R.id.notificationCover, null);
if (bigNotRemoteView != null) bigNotRemoteView.setImageViewBitmap(R.id.notificationCover, null);
if (notRemoteView != null)
notRemoteView.setImageViewBitmap(R.id.notificationCover, null);
if (bigNotRemoteView != null)
bigNotRemoteView.setImageViewBitmap(R.id.notificationCover, null);
}
/*//////////////////////////////////////////////////////////////////////////

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

@ -29,6 +29,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;
@ -78,6 +79,7 @@ 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.FireTvUtils;
import org.schabi.newpipe.util.KoreUtil;
import org.schabi.newpipe.util.ListHelper;
import org.schabi.newpipe.util.NavigationHelper;
import org.schabi.newpipe.util.PermissionHelper;
@ -480,6 +482,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;
@ -516,6 +519,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);
@ -527,6 +531,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);
}
@ -563,6 +570,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);
@ -633,6 +641,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
//////////////////////////////////////////////////////////////////////////*/
@ -659,7 +678,8 @@ public final class MainVideoPlayer extends AppCompatActivity
this.getPlaybackPitch(),
this.getPlaybackSkipSilence(),
this.getPlaybackQuality(),
false
false,
!isPlaying()
);
context.startService(intent);
@ -682,7 +702,8 @@ public final class MainVideoPlayer extends AppCompatActivity
this.getPlaybackPitch(),
this.getPlaybackSkipSilence(),
this.getPlaybackQuality(),
false
false,
!isPlaying()
);
context.startService(intent);
@ -731,6 +752,8 @@ public final class MainVideoPlayer extends AppCompatActivity
} else if (v.getId() == closeButton.getId()) {
onPlaybackShutdown();
return;
} else if (v.getId() == kodiButton.getId()) {
onKodiShare();
}
if (getCurrentState() != STATE_COMPLETED) {

View File

@ -567,7 +567,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 +1124,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

@ -157,18 +157,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 +182,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

@ -2,12 +2,19 @@ package org.schabi.newpipe.player.helper;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.media.MediaMetadata;
import android.os.Build;
import android.support.v4.media.MediaMetadataCompat;
import android.support.v4.media.session.MediaSessionCompat;
import android.view.KeyEvent;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.core.app.NotificationCompat;
import androidx.media.session.MediaButtonReceiver;
import androidx.media.app.NotificationCompat.MediaStyle;
import com.google.android.exoplayer2.Player;
import com.google.android.exoplayer2.ext.mediasession.MediaSessionConnector;
@ -19,8 +26,10 @@ import org.schabi.newpipe.player.mediasession.PlayQueuePlaybackController;
public class MediaSessionManager {
private static final String TAG = "MediaSessionManager";
@NonNull private final MediaSessionCompat mediaSession;
@NonNull private final MediaSessionConnector sessionConnector;
@NonNull
private final MediaSessionCompat mediaSession;
@NonNull
private final MediaSessionConnector sessionConnector;
public MediaSessionManager(@NonNull final Context context,
@NonNull final Player player,
@ -40,13 +49,45 @@ public class MediaSessionManager {
return MediaButtonReceiver.handleIntent(mediaSession, intent);
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public void setLockScreenArt(NotificationCompat.Builder builder, @Nullable Bitmap thumbnailBitmap) {
if (thumbnailBitmap == null || !mediaSession.isActive()) {
return;
}
mediaSession.setMetadata(
new MediaMetadataCompat.Builder()
.putBitmap(MediaMetadata.METADATA_KEY_ALBUM_ART, thumbnailBitmap)
.build()
);
MediaStyle mediaStyle = new MediaStyle()
.setMediaSession(mediaSession.getSessionToken());
builder.setStyle(mediaStyle);
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public void clearLockScreenArt(NotificationCompat.Builder builder) {
mediaSession.setMetadata(
new MediaMetadataCompat.Builder()
.putBitmap(MediaMetadata.METADATA_KEY_ALBUM_ART, null)
.build()
);
MediaStyle mediaStyle = new MediaStyle()
.setMediaSession(mediaSession.getSessionToken());
builder.setStyle(mediaStyle);
}
/**
* Should be called on player destruction to prevent leakage.
* */
*/
public void dispose() {
this.sessionConnector.setPlayer(null);
this.sessionConnector.setQueueNavigator(null);
this.mediaSession.setActive(false);
this.mediaSession.release();
}
}
}

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

@ -0,0 +1,43 @@
package org.schabi.newpipe.util;
import android.graphics.Bitmap;
import androidx.annotation.Nullable;
public class BitmapUtils {
@Nullable
public static Bitmap centerCrop(Bitmap inputBitmap, int newWidth, int newHeight) {
if (inputBitmap == null || inputBitmap.isRecycled()) {
return null;
}
float sourceWidth = inputBitmap.getWidth();
float sourceHeight = inputBitmap.getHeight();
float xScale = newWidth / sourceWidth;
float yScale = newHeight / sourceHeight;
float newXScale;
float newYScale;
if (yScale > xScale) {
newXScale = xScale / yScale;
newYScale = 1.0f;
} else {
newXScale = 1.0f;
newYScale = yScale / xScale;
}
float scaledWidth = newXScale * sourceWidth;
float scaledHeight = newYScale * sourceHeight;
int left = (int) ((sourceWidth - scaledWidth) / 2);
int top = (int) ((sourceHeight - scaledHeight) / 2);
int width = (int) scaledWidth;
int height = (int) scaledHeight;
return Bitmap.createBitmap(inputBitmap, left, top, width, height);
}
}

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

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

@ -140,7 +140,15 @@ public class StreamItemAdapter<T extends Stream, U extends Stream> extends BaseA
if (stream instanceof SubtitlesStream) {
formatNameView.setText(((SubtitlesStream) stream).getLanguageTag());
} else {
formatNameView.setText(stream.getFormat().getName());
switch (stream.getFormat()) {
case WEBMA_OPUS:
// noinspection AndroidLintSetTextI18n
formatNameView.setText("opus");
break;
default:
formatNameView.setText(stream.getFormat().getName());
break;
}
}
qualityView.setText(qualityString);

View File

@ -0,0 +1,128 @@
package org.schabi.newpipe.views;
import android.content.Context;
import android.os.Build;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import androidx.annotation.NonNull;
import com.google.android.material.tabs.TabLayout;
import com.google.android.material.tabs.TabLayout.Tab;
/**
* A TabLayout that is scrollable when tabs exceed its width.
* Hides when there are less than 2 tabs.
*/
public class ScrollableTabLayout extends TabLayout {
private static final String TAG = ScrollableTabLayout.class.getSimpleName();
private int layoutWidth = 0;
private int prevVisibility = View.GONE;
public ScrollableTabLayout(Context context) {
super(context);
}
public ScrollableTabLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ScrollableTabLayout(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, l, t, r, b);
remeasureTabs();
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
layoutWidth = w;
}
@Override
public void addTab(@NonNull Tab tab, int position, boolean setSelected) {
super.addTab(tab, position, setSelected);
hasMultipleTabs();
// Adding a tab won't decrease total tabs' width so tabMode won't have to change to FIXED
if (getTabMode() != MODE_SCROLLABLE) {
remeasureTabs();
}
}
@Override
public void removeTabAt(int position) {
super.removeTabAt(position);
hasMultipleTabs();
// Removing a tab won't increase total tabs' width so tabMode won't have to change to SCROLLABLE
if (getTabMode() != MODE_FIXED) {
remeasureTabs();
}
}
@Override
protected void onVisibilityChanged(View changedView, int visibility) {
super.onVisibilityChanged(changedView, visibility);
// Recheck content width in case some tabs have been added or removed while ScrollableTabLayout was invisible
// We don't have to check if it was GONE because then requestLayout() will be called
if (changedView == this) {
if (prevVisibility == View.INVISIBLE) {
remeasureTabs();
}
prevVisibility = visibility;
}
}
private void setMode(int mode) {
if (mode == getTabMode()) return;
setTabMode(mode);
}
/**
* Make ScrollableTabLayout not visible if there are less than two tabs
*/
private void hasMultipleTabs() {
if (getTabCount() > 1) {
setVisibility(View.VISIBLE);
} else {
setVisibility(View.GONE);
}
}
/**
* Calculate minimal width required by tabs and set tabMode accordingly
*/
private void remeasureTabs() {
if (prevVisibility != View.VISIBLE) return;
if (layoutWidth == 0) return;
final int count = getTabCount();
int contentWidth = 0;
for (int i = 0; i < count; i++) {
View child = getTabAt(i).view;
if (child.getVisibility() == View.VISIBLE) {
// Use tab's minimum requested width should actual content be too small
contentWidth += Math.max(child.getMinimumWidth(), child.getMeasuredWidth());
}
}
if (contentWidth > layoutWidth) {
setMode(TabLayout.MODE_SCROLLABLE);
} else {
setMode(TabLayout.MODE_FIXED);
}
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -6,12 +6,13 @@
android:layout_height="match_parent">
<com.google.android.material.tabs.TabLayout
<org.schabi.newpipe.views.ScrollableTabLayout
android:id="@+id/main_tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:background="?attr/colorPrimary"
app:tabMinWidth="60dp"
app:tabGravity="fill"/>
<androidx.viewpager.widget.ViewPager

View File

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

View File

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

View File

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

View File

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

View File

@ -541,18 +541,18 @@
<item quantity="other">مستمعين</item>
</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_title">مثيلات خوادم پيرتيوب</string>
<string name="peertube_instance_url_summary">عيّن مثيلات خوادم پيرتيوب التي تُفضّلها</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_help">أدخل رابط مثيل الخادم</string>
<string name="peertube_instance_add_fail">فشل في التحقق من مثيل الخادم</string>
<string name="peertube_instance_add_https_only">فقط عناوين https المدعومة</string>
<string name="peertube_instance_add_exists">نموذج موجود بالفعل</string>
<string name="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="choose_instance_prompt">اختيار مثيل خادم</string>
</resources>

View File

@ -206,7 +206,7 @@
<string name="caption_setting_title">Sotítulos</string>
<string name="accept">Aceutar</string>
<string name="restore_defaults_confirmation">¿Quies reafitar los valores\?</string>
<string name="error_unknown_host"></string>
<string name="error_unknown_host"/>
<string name="error_http_unsupported_range">El sirvidor nun aceuta descargues multifilu, volvi probar con @string/msg_threads = 1</string>
<string name="no_comments">Nun hai comentarios</string>
<string name="settings_category_clear_data_title">Llimpieza de datos</string>
@ -243,4 +243,18 @@
<string name="enable_playback_resume_title">Siguir cola reproducción</string>
<string name="main_page_content_summary">Les llingüetes que s\'amuesen na páxina principal</string>
<string name="downloads_storage_ask_title">Entrugar ánde baxar</string>
</resources>
<string name="downloads">Descargues</string>
<string name="downloads_title">Descargues</string>
<plurals name="videos">
<item quantity="one">Vídeos</item>
<item quantity="other"></item>
</plurals>
<string name="player_gesture_controls_title">Control per xestos del reproductor</string>
<string name="preferred_player_fetcher_notification_message">Cargando\'l conteníu solicitáu</string>
<string name="privacy_policy_title">Política de Privacidá de NewPipe</string>
<string name="volume_gesture_control_title">Control per xestos del volume</string>
<string name="brightness_gesture_control_title">Control per xestos del brilléu</string>
<string name="error_file_creation">El ficheru nun pue crease</string>
<string name="error_http_no_content">El sirvidor nun unvia datos</string>
<string name="localization_changes_requires_app_restart">La llingua va camudar namái que se reanicie l\'aplicación.</string>
</resources>

View File

@ -6,7 +6,7 @@
<string name="open_in_browser">在浏览器中打开</string>
<string name="open_in_popup_mode">在悬浮窗模式下打开</string>
<string name="did_you_mean">您是不是要找:%1$s</string>
<string name="no_player_found_toast">找不到串流播放器 (您可以安裝并使用VLC播放)。</string>
<string name="no_player_found_toast">找不到串流播放器 (您可以安装 VLC 进行播放)。</string>
<string name="controls_download_desc">下载串流文件</string>
<string name="install">安装</string>
<string name="cancel">取消</string>
@ -16,7 +16,7 @@
<string name="settings">设置</string>
<string name="share_dialog_title">分享给...</string>
<string name="choose_browser">选择浏览器</string>
<string name="download_path_title">视频下载文件夹</string>
<string name="download_path_title">视频下载路径</string>
<string name="download_path_summary">已下载的视频存储在这里</string>
<string name="download_path_dialog_title">请选择下载视频的保存位置</string>
<string name="download_path_audio_summary">已下载的音频存储在这里</string>
@ -39,10 +39,10 @@
<string name="network_error">网络错误</string>
<plurals name="videos">
<item quantity="one">视频</item>
<item quantity="other"></item>
<item quantity="other"/>
</plurals>
<string name="disabled">禁用</string>
<string name="controls_background_title">背景</string>
<string name="controls_background_title">后台播放</string>
<string name="filter">过滤器</string>
<string name="refresh">刷新</string>
<string name="show_search_suggestions_title">搜索建议</string>
@ -157,10 +157,10 @@
<string name="drawer_header_description">切换服务,当前选择:</string>
<string name="no_player_found">找不到串流播放器。您想安装 VLC 吗?</string>
<string name="screen_rotation">旋转</string>
<string name="use_external_video_player_title">使用第三方视频播放器</string>
<string name="use_external_audio_player_title">使用第三方视频播放器</string>
<string name="use_external_video_player_title">使用外部视频播放器</string>
<string name="use_external_audio_player_title">使用外部音频播放器</string>
<string name="download_path_audio_title">音频下载文件夹</string>
<string name="autoplay_by_calling_app_summary">从其他应用打开 NewPipe 时就播放视频</string>
<string name="autoplay_by_calling_app_summary">从其他应用调用 NewPipe 时播放视频</string>
<string name="default_resolution_title">默认分辨率</string>
<string name="kore_not_found">找不到Kore。是否安装</string>
<string name="show_play_with_kodi_title">显示“用Kodi播放”选项</string>
@ -180,7 +180,7 @@
<string name="error_report_title">错误报告</string>
<string name="general_error">错误</string>
<string name="could_not_load_thumbnails">无法加载所有缩略图</string>
<string name="youtube_signature_decryption_error">无法解密视频 URL 签名</string>
<string name="youtube_signature_decryption_error">无法解密视频 URL 签名</string>
<string name="parsing_error">无法解析网址</string>
<string name="light_parsing_error">无法完全解析网址</string>
<string name="content_not_available">内容不可用</string>
@ -209,7 +209,7 @@
\n需要此权限</string>
<string name="reCaptcha_title">reCAPTCHA验证</string>
<string name="recaptcha_request_toast">请求的新的CAPTCHA验证</string>
<string name="popup_mode_share_menu_title">NewPipe悬浮窗模式</string>
<string name="popup_mode_share_menu_title">NewPipe 悬浮窗模式</string>
<string name="popup_playing_toast">在悬浮窗中播放</string>
<string name="default_popup_resolution_title">默认悬浮窗分辨率</string>
<string name="show_higher_resolutions_title">使用更高的分辨率</string>
@ -219,7 +219,7 @@
<string name="popup_remember_size_pos_summary">记住最后一次使用悬浮窗的大小和位置</string>
<string name="settings_category_popup_title">悬浮窗</string>
<string name="popup_resizing_indicator_title">调整大小</string>
<string name="use_external_video_player_summary">删除“某些”分辨率的音频</string>
<string name="use_external_video_player_summary">部分分辨率的视频将没有声音</string>
<string name="player_gesture_controls_title">播放器手势控制</string>
<string name="player_gesture_controls_summary">使用手势控制播放器的亮度和音量</string>
<string name="show_search_suggestions_summary">显示搜索建议</string>
@ -234,9 +234,9 @@
<string name="channel_unsubscribed">取消订阅频道</string>
<string name="subscription_change_failed">无法修改订阅</string>
<string name="subscription_update_failed">无法更新订阅</string>
<string name="tab_main">主页</string>
<string name="tab_main">主页</string>
<string name="tab_subscriptions">订阅</string>
<string name="fragment_whats_new">增功能</string>
<string name="fragment_whats_new"></string>
<string name="resume_on_audio_focus_gain_title">恢复前台焦点</string>
<string name="resume_on_audio_focus_gain_summary">中断后继续播放(例如突然来电后)</string>
<string name="enable_search_history_title">搜索历史记录</string>
@ -321,7 +321,7 @@
<string name="could_not_import_all_files">警告:无法导入所有文件。</string>
<string name="override_current_data">这将覆盖当前设置。</string>
<string name="show_info">显示信息</string>
<string name="tab_bookmarks">已收藏</string>
<string name="tab_bookmarks">书签</string>
<string name="delete_stream_history_prompt">确定要从观看历史记录中删除该项吗?</string>
<string name="delete_all_history_prompt">是否确实要从历史记录中删除所有项目?</string>
<string name="title_last_played">最后播放</string>
@ -483,7 +483,7 @@
<string name="overwrite_finished_warning">命名冲突,已存在具有此名称文件</string>
<string name="overwrite_failed">无法覆盖文件</string>
<string name="download_already_pending">有此名称的已暂停下载</string>
<string name="error_postprocessing_stopped">处理文件时NewPipe 已关闭</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>
@ -507,12 +507,33 @@
<string name="no_one_watching">无人在线观看</string>
<plurals name="watching">
<item quantity="one">%s 人在观看</item>
<item quantity="other"></item>
<item quantity="other"/>
</plurals>
<string name="no_one_listening">没人在听</string>
<plurals name="listening">
<item quantity="one">s个听众</item>
<item quantity="one">s 人在听</item>
<item quantity="other"/>
</plurals>
<string name="localization_changes_requires_app_restart">重新启动应用后,语言将更改。</string>
<string name="peertube_instance_url_title">PeerTube 服务器</string>
<string name="peertube_instance_url_summary">设置自己喜欢的PeerTube服务器</string>
<string name="peertube_instance_url_help">查找最适合你的服务器%s</string>
<string name="peertube_instance_add_title">添加服务器</string>
<string name="peertube_instance_add_help">输入服务器网址</string>
<string name="peertube_instance_add_fail">无法验证服务器</string>
<string name="peertube_instance_add_https_only">仅支持 https 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="seek_duration_title">快进 / 快退的单位时间</string>
<string name="enable_lock_screen_video_thumbnail_title">在锁屏界面显示视频缩略图</string>
<string name="enable_lock_screen_video_thumbnail_summary">在后台播放时,锁屏界面将会显示视频的缩略图</string>
<string name="clear_download_history">清除下载历史记录</string>
<string name="delete_downloaded_files">删除下载了的文件</string>
<string name="deleted_downloads">已删除 %1$s 下载</string>
</resources>

View File

@ -14,7 +14,7 @@
<string name="did_you_mean">Meintest du: %1$s\?</string>
<string name="share_dialog_title">Teilen mit</string>
<string name="choose_browser">Browser auswählen</string>
<string name="screen_rotation">Drehen des Geräts</string>
<string name="screen_rotation">Bildschirm drehen</string>
<string name="download_path_title">Downloadordner für Videos</string>
<string name="download_path_summary">Heruntergeladene Videodateien werden hier gespeichert</string>
<string name="download_path_dialog_title">Wähle den Downloadordner für Videodateien aus</string>
@ -79,7 +79,7 @@
<string name="your_comment">Dein Kommentar (auf englisch):</string>
<string name="could_not_get_stream">Konnte keinen Stream abrufen</string>
<string name="autoplay_by_calling_app_title">Automatische Wiedergabe</string>
<string name="autoplay_by_calling_app_summary">Wiedergabe eines Videos, wenn NewPipe von einer anderen App aufgerufen wurde</string>
<string name="autoplay_by_calling_app_summary">Video abspielen, wenn NewPipe von einer anderen App aufgerufen wird</string>
<string name="report_error">Einen Fehler melden</string>
<string name="user_report">Anwenderbericht</string>
<string name="duration_live">LIVE</string>
@ -123,7 +123,8 @@
<string name="default_video_format_title">Bevorzugtes Videoformat</string>
<string name="popup_playing_toast">Im Pop-up Modus abspielen</string>
<string name="popup_mode_share_menu_title">NewPipe-Pop-up-Modus</string>
<string name="msg_popup_permission">Diese Berechtigung ist für das Öffnen im Pop-up-Modus erforderlich</string>
<string name="msg_popup_permission">Diese Berechtigung ist für das
\nÖffnen im Pop-up-Modus erforderlich</string>
<string name="default_popup_resolution_title">Standardauflösung des Pop-ups</string>
<string name="show_higher_resolutions_title">Höhere Auflösungen anzeigen</string>
<string name="show_higher_resolutions_summary">Nur manche Geräte unterstützen das Abspielen von 2K-/4K-Videos</string>
@ -202,8 +203,8 @@
</plurals>
<string name="no_videos">Keine Videos</string>
<plurals name="videos">
<item quantity="one">Video</item>
<item quantity="other">Videos</item>
<item quantity="one">%s Video</item>
<item quantity="other">%s Videos</item>
</plurals>
<string name="charset_most_special_characters">Die meisten Sonderzeichen</string>
<string name="item_deleted">Element gelöscht</string>
@ -278,7 +279,7 @@
<string name="override_current_data">Dies wird deine aktuellen Einstellungen überschreiben.</string>
<string name="show_info">Infos anzeigen</string>
<string name="tab_bookmarks">Lesezeichen für Wiedergabelisten</string>
<string name="controls_add_to_playlist_title">Hinzufügen zu</string>
<string name="controls_add_to_playlist_title">Hinzufügen</string>
<string name="detail_drag_description">Zum Neuordnen ziehen</string>
<string name="create">Erstellen</string>
<string name="delete_one">Einen löschen</string>
@ -395,7 +396,7 @@
<string name="minimize_on_exit_none_description">Keine</string>
<string name="minimize_on_exit_background_description">Zum Hintergrund-Player minimieren</string>
<string name="minimize_on_exit_popup_description">Zum Popup-Player minimieren</string>
<string name="skip_silence_checkbox">Vorspulen während der Stille</string>
<string name="skip_silence_checkbox">Vorspulen bei Stille</string>
<string name="playback_step">Schritt</string>
<string name="playback_reset">Zurücksetzen</string>
<string name="channels">Kanäle</string>
@ -488,7 +489,7 @@
<string name="error_postprocessing_stopped">NewPipe wurde während der Verarbeitung der Datei geschlossen</string>
<string name="error_insufficient_storage">Kein Speicherplatz mehr auf dem Gerät</string>
<string name="error_progress_lost">Vorgang abgebrochen, da die Datei gelöscht wurde</string>
<string name="confirm_prompt">Bist Du sicher\?</string>
<string name="confirm_prompt">Möchtest du deinen Downloadverlauf oder alle heruntergeladenen Dateien löschen\?</string>
<string name="enable_queue_limit">Downloadwarteschlange begrenzen</string>
<string name="enable_queue_limit_desc">Ein Download wird zur gleichen Zeit ausgeführt</string>
<string name="start_downloads">Downloads starten</string>
@ -517,4 +518,25 @@
<item quantity="other">%s Zuhörer</item>
</plurals>
<string name="localization_changes_requires_app_restart">Die Sprache ändert sich, sobald die App neu gestartet wird.</string>
<string name="peertube_instance_url_title">PeerTube-Instanzen</string>
<string name="peertube_instance_url_help">Finde auf %s die Instanzen, die am besten zu dir passen</string>
<string name="peertube_instance_add_title">Instanz hinzufügen</string>
<string name="peertube_instance_add_help">URL der Instanz eingeben</string>
<string name="peertube_instance_add_fail">Validierung der Instanz fehlgeschlagen</string>
<string name="peertube_instance_add_exists">Instanz existiert bereits</string>
<string name="local">Lokal</string>
<string name="recently_added">Kürzlich hinzugefügt</string>
<string name="playlist_no_uploader">Auto-generiert (kein Uploader gefunden)</string>
<string name="choose_instance_prompt">Wähle eine Instanz</string>
<string name="peertube_instance_url_summary">Bevorzugte Peertube-Instanzen auswählen</string>
<string name="peertube_instance_add_https_only">Es werden nur HTTPS-Adressen unterstützt</string>
<string name="seek_duration_title">Dauer der Suche bei schnellem Vor-/Zurückspulen</string>
<string name="most_liked">Am beliebtesten</string>
<string name="recovering">Wiederherstellen</string>
<string name="error_download_resource_gone">Dieser Download kann nicht wiederhergestellt werden</string>
<string name="enable_lock_screen_video_thumbnail_title">Video-Vorschaubild für Sperrbildschirm aktivieren</string>
<string name="enable_lock_screen_video_thumbnail_summary">Bei Verwendung des Hintergrundplayers wird ein Video-Miniaturbild auf dem Sperrbildschirm angezeigt</string>
<string name="clear_download_history">Downloadverlauf löschen</string>
<string name="delete_downloaded_files">Heruntergeladene Dateien löschen</string>
<string name="deleted_downloads">%1$s Downloads gelöscht</string>
</resources>

View File

@ -206,7 +206,7 @@
<string name="sorry_string">Λυπούμαστε, αυτό δεν έπρεπε να έχει συμβεί.</string>
<string name="error_report_button_text">Αναφορά σφάλματος με ηλεκτρονικό ταχυδρομίο</string>
<string name="error_snackbar_message">Λυπούμαστε, συνέβησαν κάποια σφάλματα.</string>
<string name="info_labels">What:\\nΑίτημα:\\nΓλώσσα περιεχομένου:\\nΥπηρεσία:\\nΏρα GMT:\\nΠακέτο:\\nΈκδοση:\\nΈκδοση λειτουργικού:</string>
<string name="info_labels">Τι:\\nΑίτημα:\\nΓλώσσα περιεχομένου:\\nΥπηρεσία:\\nΏρα GMT:\\nΠακέτο:\\nΈκδοση:\\nΈκδοση λειτουργικού συστήματος:</string>
<string name="user_report">Αναφορά χρήστη</string>
<string name="search_no_results">Κανένα αποτέλεσμα</string>
<string name="empty_subscription_feed_subtitle">Δεν υπάρχει τίποτα εδώ</string>
@ -516,4 +516,12 @@
</plurals>
<string name="localization_changes_requires_app_restart">Η γλώσσα θα αλλάξει μόλις θα επανεκκινηθεί η εφαρμογή.</string>
<string name="default_kiosk_page_summary">Προεπιλεγμένο περίπτερο</string>
<string name="peertube_instance_add_https_only">Υποστηρίζονται μόνο διευθύνσεις URL HTTPS</string>
<string name="local">Τοπικό</string>
<string name="recently_added">Προστέθηκε πρόσφατα</string>
<string name="playlist_no_uploader">Δημιουργήθηκε αυτόματα (δεν βρέθηκε χρήστης μεταφόρτωσης)</string>
<string name="recovering">Ανάκτηση</string>
<string name="error_download_resource_gone">Δεν είναι δυνατή η ανάκτηση αυτής της λήψης</string>
<string name="enable_lock_screen_video_thumbnail_title">Ενεργοποίηση μικρογραφίας βίντεο στην οθόνη κλειδώματος</string>
<string name="enable_lock_screen_video_thumbnail_summary">Όταν χρησιμοποιείται αναπαραγωγή παρασκηνίου μια μικρογραφία βίντεο θα εμφανίζεται στην οθόνη κλειδώματος</string>
</resources>

View File

@ -15,9 +15,9 @@
<string name="screen_rotation">turno</string>
<string name="use_external_video_player_title">Uzi eksteran filmetoludilon</string>
<string name="use_external_audio_player_title">Uzi eksteran sonludilon</string>
<string name="default_resolution_title">Defaŭlta distingivo</string>
<string name="play_with_kodi_title">Legi per Kodi</string>
<string name="show_play_with_kodi_title">Montri \"Legi per Kodi\"-opcion</string>
<string name="default_resolution_title">Defaŭlta rezolucio</string>
<string name="play_with_kodi_title">Ludi per Kodi</string>
<string name="show_play_with_kodi_title">Montri \"Ludi per Kodi\"-opcion</string>
<string name="play_audio">Sono</string>
<string name="default_audio_format_title">Defaŭlta sondosierformo</string>
<string name="theme_title">Etoso</string>
@ -30,8 +30,8 @@
<string name="settings_category_video_audio_title">Filmeto kaj sono</string>
<string name="settings_category_appearance_title">Apero</string>
<string name="settings_category_other_title">Alia</string>
<string name="background_player_playing_toast">Ludado fone</string>
<string name="play_btn_text">Legi</string>
<string name="background_player_playing_toast">Ludanta fone</string>
<string name="play_btn_text">Ludi</string>
<string name="general_error">Eraro</string>
<string name="network_error">Reteraro</string>
<string name="content_not_available">Enhavo malhavebla</string>
@ -41,12 +41,12 @@
<string name="no_player_found">Neniu elsendlflua ludilo trovita. Ĉu vi volas instali la aplikaĵon VLC\?</string>
<string name="kore_not_found">La aplikaĵo Kore ne estas trovita. Ĉu instali ĝin?</string>
<string name="show_next_and_similar_title">Montri la sekvan filmeton kaj similajn filmetojn</string>
<string name="could_not_load_thumbnails">Ĉiuj miniaturoj ne ŝargeblas</string>
<string name="could_not_load_thumbnails">Ĉiuj bildetoj ne ŝargeblas</string>
<string name="youtube_signature_decryption_error">La subskribo de la ligilo de la filmeto ne malĉifreblas</string>
<string name="parsing_error">La retejo ne analizeblas</string>
<string name="list_thumbnail_view_description">Miniaturo de la antaŭrigardo de la filmeto</string>
<string name="detail_thumbnail_view_description">Legi filmeton, daŭro:</string>
<string name="detail_uploader_thumbnail_view_description">Miniaturo de la bildo de la alŝutinto</string>
<string name="list_thumbnail_view_description">Bildeto de la antaŭrigardo de la filmeto</string>
<string name="detail_thumbnail_view_description">Ludi filmeton, daŭro:</string>
<string name="detail_uploader_thumbnail_view_description">Bildeto de la alŝutinto</string>
<string name="err_dir_create">La elŝutujo \'%1$s\' ne kreeblas</string>
<string name="info_dir_created">Elŝutujo \'%1$s\' kreita</string>
<string name="download_path_title">Elŝutujo por filmetoj</string>
@ -61,7 +61,7 @@
<string name="error_report_button_text">Signali eraron per retpoŝto</string>
<string name="error_snackbar_action">SIGNALI</string>
<string name="what_device_headline">Informoj:</string>
<string name="your_comment">Via komento (en la angla):</string>
<string name="your_comment">Vian komenton (angle):</string>
<string name="error_details_headline">Detaloj:</string>
<string name="report_error">Signali eraron</string>
<string name="video">Filmeto</string>
@ -69,9 +69,9 @@
<string name="main_bg_subtitle">Premu serĉo por komenci</string>
<string name="no_player_found_toast">Neniu elsendlflua ludilo trovita (instalu VLC por ludi ĝin).</string>
<string name="open_in_popup_mode">Malfermi en ŝprucfenestron modon</string>
<string name="use_external_video_player_summary">Forigas aŭdion ĉe KELKAJ distingivoj</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="subscribe_button_title">Abonu</string>
<string name="subscribe_button_title">Aboni</string>
<string name="subscribed_button_title">Abonita</string>
<string name="channel_unsubscribed">Kanalo malabonita</string>
<string name="subscription_change_failed">Ne povis ŝanĝi abonon</string>
@ -80,16 +80,16 @@
<string name="show_info">Montri informojn</string>
<string name="tab_main">Ĉefa</string>
<string name="tab_subscriptions">Abonoj</string>
<string name="tab_bookmarks">Legosigno</string>
<string name="tab_bookmarks">Konservitaj ludlistoj</string>
<string name="fragment_whats_new">Kio novas</string>
<string name="controls_background_title">Fono</string>
<string name="controls_popup_title">Ŝprucfenestro</string>
<string name="controls_add_to_playlist_title">Aldonu al</string>
<string name="autoplay_by_calling_app_title">Aŭtomata play</string>
<string name="autoplay_by_calling_app_summary">Legas filmeton kiam NewPipe vokas de alia programo</string>
<string name="default_popup_resolution_title">Defaŭlta distingivo de la ŝprucfenestro</string>
<string name="show_higher_resolutions_title">Montri pli altajn distingivojn</string>
<string name="show_higher_resolutions_summary">Nur kelkaj aparatoj subtenas legante 2K / 4K filmetojn</string>
<string name="autoplay_by_calling_app_summary">Ludas filmeton kiam NewPipe vokas el alia programo</string>
<string name="default_popup_resolution_title">Defaŭlta rezolucio de la ŝprucfenestro</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>
@ -122,7 +122,7 @@
<string name="later">Poste</string>
<string name="msg_popup_permission">Tiu permeso estas necesa por
\nmalfermi en ŝprucfenestro modo</string>
<string name="popup_playing_toast">Leganta en ŝprucfenestro modo</string>
<string name="popup_playing_toast">Ludanta en ŝprucfenestro modo</string>
<string name="disabled">Malaktiva</string>
<string name="filter">Filtri</string>
<string name="refresh">Aktualigi</string>
@ -133,13 +133,13 @@
<string name="player_gesture_controls_summary">Uzu gestojn por kontroli la brilon kaj volumenon de la ludilo</string>
<string name="show_search_suggestions_title">Serĉi sugestojn</string>
<string name="show_search_suggestions_summary">Montri sugestojn kiam serĉanto</string>
<string name="best_resolution">Plej bona distingivo</string>
<string name="best_resolution">Plej bona rezolucio</string>
<string name="app_description">Libera malpeza torentado ĉe Android.</string>
<string name="settings_category_downloads_title">Elŝuti</string>
<string name="charset_letters_and_digits">Leteroj kaj ciferoj</string>
<string name="charset_most_special_characters">Plej specialaj karakteroj</string>
<string name="resume_on_audio_focus_gain_title">Rekomencu en fokusa gajno</string>
<string name="resume_on_audio_focus_gain_summary">Daŭrigi la legon post la interrompaĵoj (ekzemple telefonadoj)</string>
<string name="resume_on_audio_focus_gain_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>
@ -205,21 +205,21 @@
<string name="playlist_delete_failure">Ne povis forigi ludlisto.</string>
<string name="settings_category_debug_title">Malcimigi</string>
<string name="auto_queue_title">Auto-vico sekva fluo</string>
<string name="auto_queue_summary">Aŭto-aldoni rilatan enhavon kiam leganta la lasta enhavo en malrepetita atendovico</string>
<string name="auto_queue_summary">Aŭto-aldoni rilatan enhavon kiam ludanta la lasta enhavo en malrepetita atendovico</string>
<string name="file">Dosiero</string>
<string name="invalid_directory">Tia dosierujo ne ekzistas</string>
<string name="invalid_source">Tia dosiero/enhavo ne ekzistas</string>
<string name="file_name_empty_error">Dosiernomo ne povas esti malplena</string>
<string name="error_occurred_detail">Eraro okazis : %1$s</string>
<string name="import_youtube_instructions">Importu Jutubajn abonaĵojn per elŝuti la dosieron de eksporto :
\n
\n1. Iru ĉe tie retpaĝo : %1$s
\n2. Ensalutu kiam oni petas vin
<string name="error_occurred_detail">Eraro okazis: %1$s</string>
<string name="import_youtube_instructions">Importu Jutubajn abonaĵojn per elŝuti la dosieron de eksporto :
\n
\n1. Iru ĉe tiu retpaĝo: %1$s
\n2. Ensalutu kiam oni petas vin
\n3. Elŝuto devus komenci (ĝi estas la dosiero de eksporto)</string>
<string name="import_soundcloud_instructions">Importu Soundcloud-n profilon per elŝuti la dosieron de eksporto :
<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)
\n2. Iru al tie retpaĝo : %1$s
\n2. Iru tien: %1$s
\n3. Ensalutu kiam oni petas vin
\n4. Kopiu la ligilon de profilo ke oni kondikis vin.</string>
<string name="download_thumbnail_summary">Malŝaltu por malebligi ŝarĝajn bildetojn, konservi datumojn kaj uzadon de memoro. Ŝanĝoj forviŝas ambaŭ en-memoro kaj sur-disko bildo kaŝmemoro.</string>
@ -236,13 +236,13 @@
<string name="clear_search_history_summary">Forviŝi la serĉajn ŝlosilvortojn</string>
<string name="delete_search_history_alert">Ĉu vi volas forviŝi la totalon de la historio de serĉo \?</string>
<string name="search_history_deleted">Historio de serĉo forviŝita.</string>
<string name="limit_mobile_data_usage_title">Limigi distingivo kiam uzanta moveblan datumon</string>
<string name="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="channels">Kanaloj</string>
<string name="playlists">Ludlistoj</string>
<string name="tracks">Spuroj</string>
<string name="users">Uzantoj</string>
<string name="unsubscribe">Malabonu</string>
<string name="unsubscribe">Malaboni</string>
<string name="tab_new">Nova ongleto</string>
<string name="tab_choose">Elektu ongleton</string>
<string name="volume_gesture_control_title">Kontrolo de volumena gesto</string>
@ -265,7 +265,7 @@
<string name="conferences">Konferencoj</string>
<string name="show_comments_title">Montri komentojn</string>
<string name="show_comments_summary">Malebligu por malvidigi komentojn</string>
<string name="autoplay_title">Aŭtolego</string>
<string name="autoplay_title">Aŭtoludo</string>
<plurals name="comments">
<item quantity="one">Komentoj</item>
<item quantity="other"/>
@ -291,8 +291,8 @@
<string name="downloads_storage_ask_summary_kitkat">Oni petos vin kie konservi ĉion elŝutaĵon.
\nElektu AFM se vi volas elŝuti al ekstera SD-karto</string>
<string name="downloads_storage_use_saf_title">Uzu AFM</string>
<string name="downloads_storage_use_saf_summary">La Atinga Framo al la Memoro ebligas elŝuti al ekstera SD-karto.
\nKomento : kelkaj aparatoj ne kongruas</string>
<string name="downloads_storage_use_saf_summary">La Atinga Framo al la Memoro ebligas elŝuti al ekstera SD-karto.
\nKomento: kelkaj aparatoj ne kongruas</string>
<string name="clear_playback_states_title">Forviŝi ludajn poziciojn</string>
<string name="clear_playback_states_summary">Forviŝi la totalon de ludaj pozicioj</string>
<string name="delete_playback_states_alert">Ĉu vi volas forviŝi ĉiujn ludajn poziciojn \?</string>
@ -342,7 +342,7 @@
<string name="view_on_github">Rigardu ĉe GitHub</string>
<string name="app_license_title">Permesilo de NewPipe</string>
<string name="contribution_encouragement">Ĉu vi havas ideojn pri; traduko, desegnaĵoj ŝanĝoj, purigado de kodo, aŭ realaj masivaj ŝanĝoj—helpo estas ĉiam bonvena. Ju pli oni faras, des pli bonas!</string>
<string name="read_full_license">Legu permesilon</string>
<string name="read_full_license">Legi permesilon</string>
<string name="contribution_title">Kontribui</string>
<string name="settings_file_charset_title">Permesitaj karakteroj en dosiernomoj</string>
<string name="settings_file_replacement_character_summary">Nevalidaj karakteroj estas anstataŭigita kun ĉi tiu valoro</string>
@ -375,7 +375,7 @@
<string name="no_channel_subscribed_yet">Neniuj kanalaj abonoj ankoraŭ</string>
<string name="select_a_kiosk">Elekti kioskon</string>
<string name="start_here_on_main">Komenci ludi ĉi tie</string>
<string name="start_here_on_background">Komenci ludi en la fono</string>
<string name="start_here_on_background">Komenci ludi fone</string>
<string name="donation_title">Donaci</string>
<string name="donation_encouragement">NewPipe estas programada par volontuoj, elspezante tempo por alporti vin la plej bona sperto. Redonu por helpi programistojn plibonigi NewPipe dum ĝuante tason da kafo.</string>
<string name="give_back">Redoni</string>
@ -413,7 +413,7 @@
<string name="enable_leak_canary_summary">La monitorado de la memorlikadoj povas frostigi la apon dum la hejta dumpingo</string>
<string name="enable_disposed_exceptions_title">Signali ekster-vivciklajn erarojn</string>
<string name="enable_disposed_exceptions_summary">Perforti signalante neenretigaj Rx esceptoj eksere la fragmento aŭ aktiveco vivciklo post dispono</string>
<string name="invalid_file">La dosiero ne ekzistas aŭ la legopermeso mankas</string>
<string name="invalid_file">La dosiero ne ekzistas aŭ la ludopermeso mankas</string>
<string name="import_export_title">Importi/eksporti</string>
<string name="import_title">Importi</string>
<string name="import_from">Importi el</string>
@ -437,13 +437,13 @@
<string name="caption_setting_title">Subtitoloj</string>
<string name="caption_setting_description">Modifi la dimension de la teksto kaj la fonajn stilojn de la subtitoloj de la ludilo. Ĝi bezonas restarto de la apo por efektiviĝi.</string>
<string name="one_item_deleted">1 ero forviŝita.</string>
<string name="app_license">NewPipe estas programaro sub rajtoceda permesilo: Vi povas uzi, studi, komuniki kaj plibonigi ĝin kiel vi volas. Precize, vi povas redistribui kaj/aŭ modifi ĝin sub la kondiĉojn de la Ĝenerala Publika Permesilo de GNU, kiel publikigita per la Free Software Foundation, ĉu en la versio 3, ĉu (se vi volas) ajna posta versio.</string>
<string name="app_license">NewPipe estas programaro sub rajtoceda permesilo: Vi povas uzi, studi, komuniki kaj plibonigi ĝin kiel vi volas. Precize, vi povas redistribui kaj/aŭ modifi ĝin sub la kondiĉoj de la Ĝenerala Publika Permesilo de GNU, kiel publikigita per la Free Software Foundation, ĉu en la versio 3, ĉu (se vi volas) ajna posta versio.</string>
<string name="import_settings">Ĉu vi volas ankaŭ importi agordojn\?</string>
<string name="privacy_policy_title">Privateca politiko de NewPipe</string>
<string name="privacy_policy_encouragement">La NewPipe projekto respektas vian privatecon serioze. Konsekvence, la apo ne kolektas ajnan datumo sen via konsento.
<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="read_privacy_policy">Legi la privatecan politikon</string>
<string name="start_accept_privacy_policy">Por konformiĝi al la Ĝenerala Datum-Protekta Regularon (GDPR), ni allogas vian atento al la privateca politiko de NewPipe. Bonvolu legi ĝin atentive.
<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>
<string name="accept">Akcepti</string>
<string name="decline">Rifuzi</string>
@ -455,7 +455,7 @@
<string name="skip_silence_checkbox">Plirapidigi dum silentoj</string>
<string name="playback_step">Paŝo</string>
<string name="playback_reset">Restarigi</string>
<string name="saved_tabs_invalid_json">Uzante defaŭltajn ongletojn, eraro dum leganta savajn ongletojn</string>
<string name="saved_tabs_invalid_json">Uzante defaŭltajn ongletojn, eraro ludante savajn ongletojn</string>
<string name="restore_defaults">Restaŭri la defaŭltojn</string>
<string name="restore_defaults_confirmation">Ĉu vi volas restaŭri la defaŭltojn \?</string>
<string name="subscribers_count_not_available">Kalkulo de abonantoj malhavebla</string>
@ -516,4 +516,22 @@
<item quantity="other">%s aŭskultantoj</item>
</plurals>
<string name="localization_changes_requires_app_restart">La lingvo ŝanĝos kiam la apo restartos.</string>
<string name="seek_duration_title">Rapida antaŭen / posten daŭron</string>
<string name="peertube_instance_url_title">Instancoj de PeerTube</string>
<string name="peertube_instance_url_summary">Elekti viajn preferitajn instancojn de PeerTube</string>
<string name="peertube_instance_url_help">Trovu la instancojn kiu vi povus ŝati ĉe %s</string>
<string name="peertube_instance_add_title">Aldoni instanco</string>
<string name="peertube_instance_add_help">Eniri la ligilon de la instanco</string>
<string name="peertube_instance_add_fail">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="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>
</resources>

View File

@ -518,4 +518,20 @@
<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="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>
<string name="peertube_instance_url_help">Encuentra las mejores instancias para ti en %s</string>
<string name="peertube_instance_add_title">Agregar instancia</string>
<string name="peertube_instance_add_help">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_exists">La instancia ya existe</string>
<string name="local">Local</string>
<string name="recently_added">Agregados recientemente</string>
<string name="most_liked">Más gustados</string>
<string name="playlist_no_uploader">Generado automáticamente (no se encontró creador)</string>
<string name="choose_instance_prompt">Elige una instancia</string>
<string name="enable_lock_screen_video_thumbnail_title">Habilitar miniatura de video de la pantalla de bloqueo</string>
<string name="enable_lock_screen_video_thumbnail_summary">Al usar el reproductor de fondo, se mostrará una miniatura de video en la pantalla de bloqueo</string>
</resources>

View File

@ -500,13 +500,13 @@
<string name="download_choose_new_path">Aldatu deskargen karpetak indarrean jartzeko</string>
<string name="no_one_watching">Ez dago inor ikusten</string>
<plurals name="watching">
<item quantity="one">%s ikusten</item>
<item quantity="other">%s ikusten</item>
<item quantity="one">ikusle %s</item>
<item quantity="other">%s ikusle</item>
</plurals>
<string name="no_one_listening">Ez dago inor entzuten</string>
<plurals name="listening">
<item quantity="one">%s entzuten</item>
<item quantity="other">%s entzuten</item>
<item quantity="one">entzule %s</item>
<item quantity="other">%s entzule</item>
</plurals>
<string name="downloads_storage_use_saf_title">SAF erabili</string>
<string name="downloads_storage_use_saf_summary">Biltegian Sartzeko Armazoiak kanpoko SD txartel betera jaitsierak egitea ahalbidetzen du.
@ -517,4 +517,20 @@
<string name="drawer_header_description">Aktibatu zerbitzua, orain hautatua:</string>
<string name="localization_changes_requires_app_restart">Hizkuntza aldatuko da aplikazioa berrabiarazterakoan.</string>
<string name="default_kiosk_page_summary">Kiosko Lehenetsia</string>
<string name="seek_duration_title">Aurreratze/atzeratze bilaketaren iraupena</string>
<string name="peertube_instance_url_title">PeerTube instantziak</string>
<string name="peertube_instance_url_summary">Hautatu zure gogoko PeerTube instantziak</string>
<string name="peertube_instance_url_help">Aurkitu instantziak hemen: %s</string>
<string name="peertube_instance_add_title">Gehitu instantzia</string>
<string name="peertube_instance_add_help">Sartu instantziaren URLa</string>
<string name="peertube_instance_add_fail">Ezin izan da instantzia balioztatu</string>
<string name="peertube_instance_add_https_only">HTTPS URLak onartzen dira soilik</string>
<string name="peertube_instance_add_exists">Instantzia badago aurretik</string>
<string name="local">Lokala</string>
<string name="recently_added">Berriki gehitua</string>
<string name="most_liked">Gogokoenak</string>
<string name="playlist_no_uploader">Automatikoki sortua (igotzailea ez da aurkitu)</string>
<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>
</resources>

View File

@ -122,7 +122,7 @@
<string name="short_million">M</string>
<string name="msg_popup_permission">Cette autorisation est nécessaire pour
\nutiliser le mode flottant</string>
<string name="controls_background_title">Arrière-plan</string>
<string name="controls_background_title">Lire l\'audio</string>
<string name="controls_popup_title">Flottant</string>
<string name="default_popup_resolution_title">Définition de la fenêtre flottante par défaut</string>
<string name="show_higher_resolutions_title">Afficher des définitions plus élevées</string>
@ -185,7 +185,7 @@
<string name="notification_channel_name">Notification NewPipe</string>
<string name="undo">Annuler</string>
<string name="enable_watch_history_summary">Garde un suivi des vidéos vues</string>
<string name="resume_on_audio_focus_gain_title">Reprendre à lobtention de la cible de saisie</string>
<string name="resume_on_audio_focus_gain_title">Reprendre lors du retour dans l\'application</string>
<string name="settings_category_player_title">Lecteur</string>
<string name="settings_category_player_behavior_title">Comportement</string>
<string name="settings_category_history_title">Historique et cache</string>
@ -310,7 +310,7 @@
<string name="use_inexact_seek_title">Utiliser la recherche rapide approximative</string>
<string name="use_inexact_seek_summary">Permet au lecteur daccéder plus rapidement à une position au détriment de la précision</string>
<string name="download_thumbnail_title">Charger les miniatures</string>
<string name="download_thumbnail_summary">Désactiver pour empêcher le chargement des miniatures afin d\'économiser vos données. Modifier cette option vide le cache en mémoire vive et sur le disque.</string>
<string name="download_thumbnail_summary">Désactivez pour empêcher le chargement des miniatures afin de réduire lutilisation de la bande passante et de la mémoire. La modification de cette option, vide le cache en mémoire vive et sur le disque.</string>
<string name="thumbnail_cache_wipe_complete_notice">Images en cache effacées</string>
<string name="metadata_cache_wipe_title">Effacer les métadonnées en cache</string>
<string name="metadata_cache_wipe_summary">Efface toutes les données de pages Web en cache</string>
@ -517,4 +517,22 @@
<item quantity="other">%s auditeurs</item>
</plurals>
<string name="localization_changes_requires_app_restart">La langue changera lors du redémarrage de l\'application.</string>
<string name="seek_duration_title">Avance/rembobinage rapide sur une durée</string>
<string name="peertube_instance_url_title">Instances PeerTube</string>
<string name="peertube_instance_url_summary">Choisissez vos instances PeerTube préférées</string>
<string name="peertube_instance_url_help">Cherchez des instances qui pourraient vous intéresser sur %s</string>
<string name="peertube_instance_add_title">Ajouter une instance</string>
<string name="peertube_instance_add_help">Entrez lURL de linstance</string>
<string name="peertube_instance_add_fail">Échec de validation de linstance</string>
<string name="peertube_instance_add_https_only">Sont prises en charge uniquement les URLs en HTTPS</string>
<string name="peertube_instance_add_exists">Linstance existe déjà</string>
<string name="local">Local</string>
<string name="recently_added">Ajoutées récemment</string>
<string name="most_liked">Les plus aimées</string>
<string name="recovering">récupération</string>
<string name="error_download_resource_gone">Impossible de récupérer ce téléchargement</string>
<string name="choose_instance_prompt">Choisissez une instance</string>
<string name="playlist_no_uploader">Généré automatiquement (pas de téléverseur trouvé)</string>
<string name="enable_lock_screen_video_thumbnail_title">Activer la vidéo miniaturisée sur l\'écran de verrouillage</string>
<string name="enable_lock_screen_video_thumbnail_summary">En utilisant le lecteur audio, la miniature de la vidéo sera affichée sur l\'écran de verrouillage</string>
</resources>

View File

@ -254,7 +254,7 @@
<string name="enqueue_on_popup">הוספה לתור בנגן צף חדש</string>
<string name="start_here_on_main">להתחיל לנגן מכאן</string>
<string name="start_here_on_background">להתחיל לנגן ברקע</string>
<string name="start_here_on_popup">להתחיל לנגן בחלון צף חדש</string>
<string name="start_here_on_popup">להתחיל לנגן בנגן צף חדש</string>
<string name="controls_download_desc">הורדת קובץ הזרמה</string>
<string name="show_info">הצגת מידע</string>
<string name="tab_bookmarks">רשימות נגינה מסומנות</string>
@ -490,13 +490,13 @@
<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="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="confirm_prompt">למחוק את היסטוריית ההורדות שלך או למחוק את כל הקבצים שהורדת\?</string>
<string name="enable_queue_limit">הגבלת תור ההורדה</string>
<string name="enable_queue_limit_desc">רק הורדה אחת תרוץ בו־זמנית</string>
<string name="start_downloads">התחלת הורדות</string>
@ -529,4 +529,25 @@
</plurals>
<string name="localization_changes_requires_app_restart">השפה תוחלף עם הפעלת היישומון מחדש.</string>
<string name="default_kiosk_page_summary">קיוסק בררת מחדל</string>
<string name="seek_duration_title">משך קפיצה מהירה קדימה/אחורה</string>
<string name="peertube_instance_url_title">מופעים של PeerTube</string>
<string name="peertube_instance_url_summary">נא לבחור את מופעי ה־PeerTube המועדפים עליך</string>
<string name="peertube_instance_url_help">איתור המופעים שהכי מתאימים לך תחת %s</string>
<string name="peertube_instance_add_title">הוספת מופע</string>
<string name="peertube_instance_add_help">נא להכניס כתובת מופע</string>
<string name="peertube_instance_add_fail">לא ניתן לאמת את המופע</string>
<string name="peertube_instance_add_https_only">יש תמיכה בכתובות HTTPS בלבד</string>
<string name="peertube_instance_add_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

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="install">Installar</string>
<string name="open_in_browser">Aperir in le navigator</string>
<string name="share">Compartir</string>
<string name="download">Discargar</string>
<string name="search">Cercar</string>
<string name="settings">Configurationes</string>
<string name="share_dialog_title">Compartir con</string>
<string name="choose_browser">Seliger un navigator</string>
<string name="subscribed_button_title">Subscribite</string>
<string name="unsubscribe">Cancellar le subscription</string>
<string name="subscription_change_failed">Non poteva cambiar le subscription</string>
<string name="subscription_update_failed">Non poteva actualisar le subscription</string>
<string name="show_info">Monstrar information</string>
<string name="tab_main">Principal</string>
<string name="tab_subscriptions">Subscriptiones</string>
<string name="tab_new">Nove scheda</string>
<string name="tab_choose">Seliger le scheda</string>
<string name="fragment_whats_new">Novitates</string>
<string name="controls_background_title">Fundo</string>
<string name="controls_popup_title">Emergente</string>
<string name="controls_add_to_playlist_title">Adder a</string>
<string name="download_path_title">Dossier de discarga de video</string>
<string name="download_path_dialog_title">Selige le dossier de discarga pro files de video</string>
<string name="download_path_audio_title">Dossier de discarga de audio</string>
<string name="cancel">Cancellar</string>
<string name="subscribe_button_title">Subscriber</string>
<string name="download_path_audio_dialog_title">Selige le dossier de discarga pro files de audio</string>
<string name="theme_title">Thema</string>
<string name="show_comments_title">Monstrar le commentos</string>
<string name="start_downloads">Initiar discargas</string>
<string name="pause_downloads">Pausar le discargas</string>
<string name="choose_instance_prompt">Seliger un instantia</string>
<string name="error_connect_host">Non poteva connecter con le servitor</string>
<string name="view_count_text">%1$s vistas</string>
</resources>

View File

@ -510,4 +510,21 @@
<item quantity="other">%s mendengarkan</item>
</plurals>
<string name="localization_changes_requires_app_restart">Bahasa akan diterapkan setelah aplikasi dimulai ulang.</string>
<string name="peertube_instance_url_title">Situs PeerTube</string>
<string name="peertube_instance_url_summary">Pilih situs PeerTube favorit anda</string>
<string name="peertube_instance_url_help">Temukan situs yang sesuai dengan anda di %s</string>
<string name="peertube_instance_add_title">Tambah situs</string>
<string name="peertube_instance_add_help">Masukkan URL situs</string>
<string name="peertube_instance_add_fail">Tidak bisa memvalidasi situs</string>
<string name="peertube_instance_add_https_only">Hanya mendukung URL HTTPS</string>
<string name="peertube_instance_add_exists">Situs sudah ada</string>
<string name="local">Lokal</string>
<string name="recently_added">Baru-baru ini ditambahkan</string>
<string name="most_liked">Disukai terbanyak</string>
<string name="playlist_no_uploader">Dibuat otomatis (pengunggah tidak ditemukan)</string>
<string name="recovering">memulihkan</string>
<string name="error_download_resource_gone">Tidak bisa memulihkan unduhan ini</string>
<string name="choose_instance_prompt">Pilih situs</string>
<string name="enable_lock_screen_video_thumbnail_title">Aktifkan kunci layar thumbnail video</string>
<string name="enable_lock_screen_video_thumbnail_summary">Ketika menggunakan pemutar latar belakang, thumbnail video akan ditampilkan di tampilan kunci layar</string>
</resources>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="view_count_text">%1$s visualizzazioni</string>
<string name="view_count_text">%1$ visualizzazioni</string>
<string name="upload_date_text">Pubblicato il %1$s</string>
<string name="no_player_found">Nessun lettore multimediale trovato. Vuoi installare VLC\?</string>
<string name="install">Installa</string>
@ -14,21 +14,21 @@
<string name="share_dialog_title">Condividi con</string>
<string name="choose_browser">Scegli browser</string>
<string name="screen_rotation">rotazione</string>
<string name="download_path_title">Cartella dei video scaricati</string>
<string name="download_path_title">Cartella Video Scaricati</string>
<string name="download_path_summary">I video scaricati saranno salvati qui</string>
<string name="download_path_dialog_title">Scegli la cartella per i video scaricati</string>
<string name="default_resolution_title">Risoluzione predefinita</string>
<string name="default_resolution_title">Risoluzione Predefinita</string>
<string name="play_with_kodi_title">Riproduci con Kodi</string>
<string name="kore_not_found">L\'applicazione Kore non è stata trovata. Vuoi installarla?</string>
<string name="kore_not_found">L\'applicazione Kore non è stata trovata. Installarla\?</string>
<string name="show_play_with_kodi_title">Mostra l\'opzione \"Riproduci con Kodi\"</string>
<string name="show_play_with_kodi_summary">Mostra l\'opzione per riprodurre i video tramite Kodi</string>
<string name="play_audio">Audio</string>
<string name="default_audio_format_title">Formato audio predefinito</string>
<string name="default_audio_format_title">Formato Audio Predefinito</string>
<string name="download_dialog_title">Scarica</string>
<string name="next_video_title">Prossimo</string>
<string name="show_next_and_similar_title">Mostra video \'Prossimo\' e \'Simili\'</string>
<string name="show_next_and_similar_title">Mostra video \"Prossimo\" e \"Simili\"</string>
<string name="url_not_supported_toast">URL non supportato</string>
<string name="content_language_title">Lingua predefinita per i contenuti</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="detail_thumbnail_view_description">Riproduci video, durata:</string>
@ -39,7 +39,7 @@
<string name="info_dir_created">Creata la cartella per i download \'%1$s\'</string>
<string name="use_external_video_player_title">Usa un lettore video esterno</string>
<string name="use_external_audio_player_title">Usa un lettore audio esterno</string>
<string name="download_path_audio_title">Cartella degli audio scaricati</string>
<string name="download_path_audio_title">Cartella Audio Scaricati</string>
<string name="download_path_audio_summary">Gli audio scaricati saranno salvati qui</string>
<string name="download_path_audio_dialog_title">Scegli la cartella per gli audio scaricati</string>
<string name="theme_title">Tema</string>
@ -47,7 +47,7 @@
<string name="light_theme_title">Chiaro</string>
<string name="settings_category_appearance_title">Aspetto</string>
<string name="settings_category_other_title">Altro</string>
<string name="background_player_playing_toast">Riproduzione in sottofondo</string>
<string name="background_player_playing_toast">Riproduzione in Sottofondo</string>
<string name="play_btn_text">Riproduci</string>
<string name="general_error">Errore</string>
<string name="network_error">Errore di connessione</string>
@ -60,10 +60,10 @@
<string name="could_not_setup_download_menu">Impossibile impostare il menu di download</string>
<string name="live_streams_not_supported">I contenuti in diretta non sono al momento supportati</string>
<string name="content">Contenuti</string>
<string name="show_age_restricted_content_title">Contenuti vietati ai minori</string>
<string name="show_age_restricted_content_title">Contenuti Vietati ai Minori</string>
<string name="video_is_age_restricted">Mostra video riservati a un pubblico maggiorenne. Si possono abilitare dalle Impostazioni.</string>
<string name="main_bg_subtitle">Tocca Cerca per iniziare</string>
<string name="autoplay_by_calling_app_title">Riproduzione automatica</string>
<string name="autoplay_by_calling_app_title">Riproduzione Automatica</string>
<string name="autoplay_by_calling_app_summary">Riproduci i video quando NewPipe viene aperto da un\'altra app</string>
<string name="duration_live">IN DIRETTA</string>
<string name="light_parsing_error">Impossibile analizzare completamente il sito web</string>
@ -84,7 +84,7 @@
<string name="storage_permission_denied">È stato negato il permesso di accesso all\'archiviazione di massa</string>
<string name="downloads">Download</string>
<string name="downloads_title">Download</string>
<string name="error_report_title">Segnalazione errori</string>
<string name="error_report_title">Segnalazione Errori</string>
<string name="start">Inizia</string>
<string name="pause">Pausa</string>
<string name="view">Riproduci</string>
@ -102,7 +102,7 @@
<string name="msg_running_detail">Tocca per maggiori dettagli</string>
<string name="msg_wait">Attendi…</string>
<string name="msg_copied">Copiato negli appunti</string>
<string name="no_available_dir">Nelle impostazioni seleziona una cartella per i download</string>
<string name="no_available_dir">Seleziona una cartella per i download</string>
<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>
@ -119,21 +119,21 @@
<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="popup_playing_toast">Riproduzione in Modalità Popup</string>
<string name="disabled">Disattivato</string>
<string name="use_external_video_player_summary">Non riproduce l\'audio con ALCUNE risoluzioni</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_popup_title">Popup</string>
<string name="default_popup_resolution_title">Risoluzione predefinita per la modalità popup</string>
<string name="show_higher_resolutions_title">Mostra risoluzioni più alte</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 del popup</string>
<string name="popup_remember_size_pos_summary">Ricorda l\'ultima dimensione e posizione del popup</string>
<string name="player_gesture_controls_title">Controlli gestuali del lettore multimediale</string>
<string name="player_gesture_controls_summary">Usa i gesti per controllare la luminosità e il volume del lettore multimediale</string>
<string name="show_search_suggestions_title">Suggerimenti di ricerca</string>
<string name="show_search_suggestions_summary">Mostra i suggerimenti durante la ricerca</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="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>
<string name="show_search_suggestions_summary">Mostra suggerimenti durante la ricerca</string>
<string name="settings_category_popup_title">Popup</string>
<string name="filter">Filtra i risultati</string>
<string name="refresh">Ricarica</string>
@ -144,18 +144,18 @@
\nper riprodurre in modalità popup</string>
<string name="action_settings">Impostazioni</string>
<string name="action_about">Informazioni</string>
<string name="title_licenses">Licenze di terze parti</string>
<string name="title_licenses">Licenze di Terze Parti</string>
<string name="copyright" formatted="true">© %1$s di %2$s protetto da licenza %3$s</string>
<string name="error_unable_to_load_license">Impossible caricare la licenza</string>
<string name="action_open_website">Visita il sito</string>
<string name="action_open_website">Visita il Sito</string>
<string name="tab_about">Informazioni</string>
<string name="tab_contributors">Contributori</string>
<string name="tab_licenses">Licenze</string>
<string name="app_description">Streaming libero e leggero su Android.</string>
<string name="view_on_github">Mostra su GitHub</string>
<string name="app_license_title">Licenza di NewPipe</string>
<string name="contribution_encouragement">Un aiuto è sempre il benvenuto: nuove idee e funzionalità, traduzioni, modifiche al design o cambiamenti radicali del codice rendono l\'applicazione sempre migliore!</string>
<string name="read_full_license">Leggi la licenza</string>
<string name="contribution_encouragement">Un aiuto è sempre gradito: traduzioni, modifiche al design, pulizia del codice, cambiamenti radicali. Più si fa, meglio è!</string>
<string name="read_full_license">Leggi la Licenza</string>
<string name="contribution_title">Contribuisci</string>
<string name="title_activity_about">Informazioni su NewPipe</string>
<string name="subscribe_button_title">Iscriviti</string>
@ -165,18 +165,18 @@
<string name="subscription_update_failed">Impossibile aggiornare l\'iscrizione</string>
<string name="tab_subscriptions">Iscrizioni</string>
<string name="fragment_whats_new">Novità</string>
<string name="enable_search_history_title">Cronologia ricerche</string>
<string name="enable_search_history_summary">Salva le ricerche</string>
<string name="enable_watch_history_title">Visualizza storico</string>
<string name="enable_search_history_title">Cronologia Ricerche</string>
<string name="enable_search_history_summary">Salva le ricerche localmente</string>
<string name="enable_watch_history_title">Cronologia Visualizzazioni</string>
<string name="enable_watch_history_summary">Salva la cronologia dei video visualizzati</string>
<string name="resume_on_audio_focus_gain_title">Riprendi tornando in primo piano</string>
<string name="resume_on_audio_focus_gain_title">Riprendi Riproduzione</string>
<string name="resume_on_audio_focus_gain_summary">Continua a riprodurre dopo le interruzioni (es. chiamate)</string>
<string name="settings_category_downloads_title">Scarica</string>
<string name="settings_file_charset_title">Caratteri ammessi nei nomi dei file</string>
<string name="settings_file_charset_title">Caratteri Ammessi per i Nomi dei File</string>
<string name="settings_file_replacement_character_summary">I caratteri non validi vengono sostituiti con</string>
<string name="settings_file_replacement_character_title">Carattere sostitutivo</string>
<string name="charset_letters_and_digits">Lettere e cifre</string>
<string name="charset_most_special_characters">Caratteri speciali</string>
<string name="settings_file_replacement_character_title">Carattere Sostitutivo</string>
<string name="charset_letters_and_digits">Lettere e Cifre</string>
<string name="charset_most_special_characters">La Maggio Parte dei Caratteri Speciali</string>
<string name="title_activity_history">Cronologia</string>
<string name="title_history_search">Ricerche effettuate</string>
<string name="title_history_view">Visualizzati</string>
@ -185,9 +185,9 @@
<string name="history_empty">La cronologia è vuota</string>
<string name="history_cleared">Cronologia cancellata</string>
<string name="tab_main">Principale</string>
<string name="settings_category_player_title">Lettore multimediale</string>
<string name="settings_category_player_title">Lettore Multimediale</string>
<string name="settings_category_player_behavior_title">Comportamento</string>
<string name="settings_category_history_title">Cronologia e cache</string>
<string name="settings_category_history_title">Cronologia e Cache</string>
<string name="playlist">Playlist</string>
<string name="undo">Annulla</string>
<string name="notification_channel_name">Notifiche NewPipe</string>
@ -211,23 +211,23 @@
<string name="item_deleted">Elemento eliminato</string>
<string name="empty_subscription_feed_subtitle">Nulla da mostrare</string>
<string name="delete_item_search_history">Vuoi eliminare questo elemento dalla cronologia?</string>
<string name="main_page_content">Contenuto della pagina principale</string>
<string name="blank_page_summary">Pagina vuota</string>
<string name="kiosk_page_summary">Locandina</string>
<string name="subscription_page_summary">Pagina iscrizione</string>
<string name="feed_page_summary">Pagina feed</string>
<string name="channel_page_summary">Pagina del canale</string>
<string name="select_a_channel">Seleziona un canale</string>
<string name="no_channel_subscribed_yet">Nessuna iscrizione ad un canale</string>
<string name="select_a_kiosk">Seleziona una locandina</string>
<string name="main_page_content">Contenuto della Pagina Principale</string>
<string name="blank_page_summary">Pagina Vuota</string>
<string name="kiosk_page_summary">Contenuti in Evidenza Personalizzati</string>
<string name="subscription_page_summary">Iscrizioni</string>
<string name="feed_page_summary">Feed Iscrizioni</string>
<string name="channel_page_summary">Canale Personalizzato</string>
<string name="select_a_channel">Seleziona Canale</string>
<string name="no_channel_subscribed_yet">Nessuna Iscrizione</string>
<string name="select_a_kiosk">Seleziona Contenuto</string>
<string name="kiosk">Locandina</string>
<string name="trending">Tendenze</string>
<string name="top_50">Top 50</string>
<string name="new_and_hot">New &amp; hot</string>
<string name="show_hold_to_append_title">Mostra il suggerimento \"Tenere premuto per aggiungere video alla coda\"</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 al lettore multimediale in sottofondo</string>
<string name="popup_playing_append">In coda al lettore multimediale a comparsa</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="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>
@ -245,14 +245,14 @@
<string name="start_here_on_background">Avvia riproduzione in sottofondo</string>
<string name="start_here_on_popup">Avvia riproduzione a comparsa</string>
<string name="donation_title">Dona</string>
<string name="website_title">Sito web</string>
<string name="website_encouragement">Visita il sito web di NewPipe per maggiori informazioni e novità.</string>
<string name="donation_encouragement">NewPipe è sviluppato da volontari che trascorrono il loro tempo libero per offrire la migliore esperienza. Restituisci il favore per aiutare gli sviluppatori a rendere NewPipe ancora più piacevole mentre si gustano una tazza di caffè.</string>
<string name="website_title">Sito</string>
<string name="website_encouragement">Visita il sito di NewPipe per informazioni e novità.</string>
<string name="donation_encouragement">NewPipe è sviluppato da volontari che impiegano il loro tempo libero per offrire un\'esperienza migliore. Restituisci il favore, aiutandoli a rendere NewPipe ancora più piacevole, mentre si gustano una tazza di caffè.</string>
<string name="give_back">Restituisci</string>
<string name="default_content_country_title">Paese predefinito per i contenuti</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_popup">Passa alla visualizzazione popup</string>
<string name="switch_to_popup">Passa a Popup</string>
<string name="switch_to_main">Passa alla produzione predefinita</string>
<string name="service_title">Servizio</string>
<string name="drawer_open">Apri il menu</string>
@ -292,21 +292,21 @@
<string name="delete_all_history_prompt">Sei sicuro di voler eliminare tutti gli elementi dalla cronologia?</string>
<string name="title_last_played">Ultima riproduzione</string>
<string name="title_most_played">I più riprodotti</string>
<string name="always_ask_open_action">Chiedi sempre</string>
<string name="create_playlist">Nuova scaletta</string>
<string name="delete_playlist">Elimina scaletta</string>
<string name="rename_playlist">Rinomina scaletta</string>
<string name="always_ask_open_action">Chiedi ogni volta</string>
<string name="create_playlist">Nuova Playlist</string>
<string name="delete_playlist">Elimina</string>
<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="bookmark_playlist">Segnalibri playlist</string>
<string name="unbookmark_playlist">Rimuovi segnalibro</string>
<string name="delete_playlist_prompt">Eliminare questa scaletta\?</string>
<string name="delete_playlist_prompt">Eliminare la playlist\?</string>
<string name="playlist_creation_success">Playlist creata</string>
<string name="playlist_add_stream_success">Aggiunti alla scaletta</string>
<string name="playlist_thumbnail_change_success">Miniatura della scaletta cambiata.</string>
<string name="playlist_delete_failure">Impossibile eliminare la scaletta.</string>
<string name="caption_none">No sottotitoli</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_delete_failure">Impossibile eliminare la Playlist.</string>
<string name="caption_none">Nessun Sottotitolo</string>
<string name="resize_fit">Rientrato</string>
<string name="resize_fill">Pieno</string>
<string name="resize_zoom">Ingrandito</string>
@ -317,10 +317,10 @@
<string name="enable_leak_canary_summary">Il monitoraggio delle perdite di memoria potrebbe causare la mancata risposta dell\'applicazione durante il dumping dell\'heap</string>
<string name="enable_disposed_exceptions_title">Segnala Errori \"Out-of-lifecycle\"</string>
<string name="enable_disposed_exceptions_summary">Forza la segnalazione di eccezioni Rx non consegnabili al di fuori del ciclo di vita dell\'attività dopo la chiusura</string>
<string name="use_inexact_seek_title">Usa la ricerca rapida ma imprecisa</string>
<string name="use_inexact_seek_summary">La ricerca imprecisa permette al lettore multimediale di spostarsi nelle posizioni più velocemente con una precisione ridotta</string>
<string name="auto_queue_title">Metti in coda automaticamente il prossimo flusso</string>
<string name="auto_queue_summary">Aggiungi automaticamente un contenuto correlato raggiunta la fine della coda se la ripetizione è disattivata</string>
<string name="use_inexact_seek_title">Usa Ricerca Rapida (Imprecisa)</string>
<string name="use_inexact_seek_summary">Consente al lettore multimediale di spostarsi più velocemente, ma con precisione ridotta</string>
<string name="auto_queue_title">Accoda Automaticamente l\'Elemento Successivo</string>
<string name="auto_queue_summary">Accoda un contenuto consigliato quando è in corso la riproduzione dell\'ultimo elemento, in una coda non ripetitiva</string>
<string name="file">File</string>
<string name="invalid_directory">Nessuna cartella</string>
<string name="invalid_source">Nessun file o cartella che contiene sorgenti</string>
@ -352,12 +352,12 @@
<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 miniature</string>
<string name="download_thumbnail_summary">Disabilita per prevenire il caricamento delle miniature, 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">Pulizia della cache delle immagini completata</string>
<string name="metadata_cache_wipe_title">Pulisci la cache dei metadati</string>
<string name="metadata_cache_wipe_summary">Rimuovi tutti i dati delle pagine web memorizzati nella cache</string>
<string name="metadata_cache_wipe_complete_notice">Pulizia della cache dei metadati completata</string>
<string name="download_thumbnail_title">Carica Anteprime</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>
<string name="metadata_cache_wipe_summary">Rimuovi i dati delle pagine web memorizzati nella cache</string>
<string name="metadata_cache_wipe_complete_notice">Cache metadati svuotata</string>
<string name="playback_speed_control">Controlli della velocità di riproduzione</string>
<string name="playback_tempo">Tempo</string>
<string name="playback_pitch">Tono</string>
@ -367,7 +367,7 @@
<string name="preferred_open_action_settings_title">\'Apri\' preferibilmente con</string>
<string name="preferred_open_action_settings_summary">Azione predefinita all\'apertura del contenuto — %s</string>
<string name="caption_setting_title">Sottotitoli</string>
<string name="caption_setting_description">Modifica la dimensione e gli stili di sfondo dei sottotitoli. Per applicare le modifiche è richesto un riavvio.</string>
<string name="caption_setting_description">Modifica dimensione e stile dei sottotitoli. Riavviare per applicare le modifiche.</string>
<string name="toast_no_player">Nessuna app installata per riprodurre questo file</string>
<string name="clear_views_history_title">Pulisci cronologia visualizzazioni</string>
<string name="clear_views_history_summary">Elimina la cronologia dei flussi riprodotti e la posizione di riproduzione</string>
@ -378,9 +378,9 @@
<string name="delete_search_history_alert">Elimina l\'intera cronologia delle ricerche\?</string>
<string name="search_history_deleted">Cronologia delle ricerche eliminata.</string>
<string name="one_item_deleted">1 elemento eliminato.</string>
<string name="app_license">NewPipe è un software libero con licenza copyleft: si può utilizzarlo, studiarlo, condividerlo e migliorarlo a proprio piacimento. In particolare, è possibile ridistribuirlo e/o modificarlo secondo i termini della GNU General Public License pubblicata dalla Free Software Foundation, sia nella versione 3 della Licenza, sia (a propria discrezione) in qualsiasi versione successiva.</string>
<string name="app_license">NewPipe è un software libero con licenza copyleft: si può utilizzare, studiare, condividere e migliorare a proprio piacimento. In particolare, è possibile ridistribuirlo e/o modificarlo secondo i termini della GNU General Public License (Free Software Foundation), nella versione 3 o successiva, a propria discrezione.</string>
<string name="import_settings">Vuoi anche importare le impostazioni?</string>
<string name="privacy_policy_title">Informativa sulla privacy</string>
<string name="privacy_policy_title">Informativa sulla Privacy</string>
<string name="privacy_policy_encouragement">Il progetto NewPipe tiene molto alla tua privacy. Perciò, l\'app non raccoglie alcun dato senza il tuo consenso.
\nL\'informativa sulla privacy di NewPipe spiega in dettaglio quali dati vengono inviati e memorizzati quando si invia un rapporto sugli arresti anomali.</string>
<string name="read_privacy_policy">Leggi l\'informativa sulla privacy</string>
@ -405,45 +405,45 @@
<string name="unsubscribe">Disiscriviti</string>
<string name="tab_new">Nuova scheda</string>
<string name="tab_choose">Scegli scheda</string>
<string name="volume_gesture_control_title">Movimenti per il controllo del volume</string>
<string name="volume_gesture_control_title">Movimenti Controllo Volume</string>
<string name="volume_gesture_control_summary">Utilizza i movimenti per controllare il volume del riproduttore</string>
<string name="brightness_gesture_control_title">Movimenti per la gestione della luminosità</string>
<string name="brightness_gesture_control_title">Movimenti Controllo Luminosità</string>
<string name="brightness_gesture_control_summary">Utilizza i movimenti per controllare la luminosità del riproduttore</string>
<string name="settings_category_updates_title">Aggiornamenti</string>
<string name="file_deleted">File eliminato</string>
<string name="app_update_notification_channel_name">Notifiche di aggiornamenti dell\'applicazione</string>
<string name="app_update_notification_channel_description">Notifiche per una nuova versione di NewPipe</string>
<string name="download_to_sdcard_error_title">Archiviazione esterna non disponibile</string>
<string name="download_to_sdcard_error_message">Impossibile effettuare il download sulla memoria esterna SD. Reimpostare la posizione della cartella di download\?</string>
<string name="download_to_sdcard_error_message">Impossibile scaricare sulla scheda SD esterna. Ripristinare la cartella dei download\?</string>
<string name="saved_tabs_invalid_json">Utilizzando le schede predefinite, c\'è stato un errore durante la lettura delle schede salvate</string>
<string name="restore_defaults">Ripristina predefiniti</string>
<string name="restore_defaults_confirmation">Davvero ripristinare i predefiniti\?</string>
<string name="subscribers_count_not_available">Contatore degli iscritti non disponibile</string>
<string name="main_page_content_summary">Quali schede sono mostrate nella pagina principale</string>
<string name="main_page_content_summary">Schede mostrate nella pagina principale</string>
<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">Lista</string>
<string name="grid">Griglia</string>
<string name="auto">Automatico</string>
<string name="switch_view">Cambia vista</string>
<string name="auto">Automatica</string>
<string name="switch_view">Cambia Visualizzazione</string>
<string name="app_update_notification_content_title">Aggiornamento di NewPipe disponibile!</string>
<string name="app_update_notification_content_text">Premi per scaricare</string>
<string name="missions_header_finished">Finito</string>
<string name="missions_header_pending">In attesa di</string>
<string name="missions_header_pending">In attesa</string>
<string name="paused">in pausa</string>
<string name="queued">in coda</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 finito</string>
<string name="download_finished_more">%s download finiti</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="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 progresso con questo nome</string>
<string name="download_already_running">C\'è un download in corso con questo nome</string>
<string name="show_error">Mostra errore</string>
<string name="label_code">Codice</string>
<string name="error_file_creation">Impossibile creare il file</string>
@ -458,16 +458,16 @@
<string name="error_postprocessing_failed">Post-processing fallito</string>
<string name="clear_finished_download">Pulisci i download completati</string>
<string name="stop">Ferma</string>
<string name="max_retry_msg">Tentativi massimi</string>
<string name="max_retry_desc">Tentativi massimi prima di cancellare il download</string>
<string name="max_retry_msg">Numero Massimo Tentativi</string>
<string name="max_retry_desc">Quante volte provare prima di annullare il download</string>
<string name="pause_downloads_on_mobile">Interrompi con le connessioni a consumo</string>
<string name="pause_downloads_on_mobile_desc">Utile quando si passa alla connessione dati mobile, altrimenti alcuni download potrebbero essere sospesi</string>
<string name="events">Eventi</string>
<string name="conferences">Conferenze</string>
<string name="error_timeout">Connesione finita</string>
<string name="show_comments_title">Mostra commenti</string>
<string name="show_comments_title">Mostra Commenti</string>
<string name="show_comments_summary">Disattiva per non visualizzare i commenti</string>
<string name="autoplay_title">Riproduzione automatica</string>
<string name="autoplay_title">Riproduzione Automatica</string>
<plurals name="comments">
<item quantity="one">Commenti</item>
<item quantity="other"/>
@ -475,11 +475,11 @@
<string name="no_comments">Nessun commento</string>
<string name="error_unable_to_load_comments">Impossibile caricare i commenti</string>
<string name="close">Chiudi</string>
<string name="enable_playback_resume_title">Recupera riproduzione</string>
<string name="enable_playback_resume_title">Riprendi la Riproduzione</string>
<string name="enable_playback_resume_summary">Recupera l\'ultima posizione di riproduzione</string>
<string name="enable_playback_state_lists_title">Posizioni in lista</string>
<string name="enable_playback_state_lists_summary">Mostra l indicatore di posizione di riproduzione nelle liste</string>
<string name="settings_category_clear_data_title">Pulisci dati</string>
<string name="enable_playback_state_lists_title">Posizioni nelle Liste</string>
<string name="enable_playback_state_lists_summary">Mostra indicatore di posizione di riproduzione nelle liste</string>
<string name="settings_category_clear_data_title">Pulisci Dati</string>
<string name="watch_history_states_deleted">Posizione di riproduzione eliminata.</string>
<string name="missing_file">File spostato o cancellato</string>
<string name="overwrite_unrelated_warning">Esiste già un file con questo nome</string>
@ -489,16 +489,16 @@
<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="enable_queue_limit_desc">Un download si avvierà allo stesso tempo</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>
<string name="downloads_storage_ask_title">Chiedi dove scaricare</string>
<string name="downloads_storage_ask_summary">Ti sarà chiesto dove salvare i file ogni volta</string>
<string name="downloads_storage_ask_title">Chiedi Dove Scaricare</string>
<string name="downloads_storage_ask_summary">Ogni volta verrà chiesta la destinazione dei file</string>
<string name="downloads_storage_use_saf_title">Utilizza SAF</string>
<string name="enable_queue_limit">Limite download coda</string>
<string name="downloads_storage_ask_summary_kitkat">Ti verrà chiesto dove salvare ogni download.
<string name="enable_queue_limit">Limita Coda Download</string>
<string name="downloads_storage_ask_summary_kitkat">Ogni volta verrà chiesta la destinazione dei file.
\nScegli SAF se vuoi scaricare su una scheda SD esterna</string>
<string name="downloads_storage_use_saf_summary">Lo Storage Access Framework permette scaricamenti su una scheda SD esterna.
<string name="downloads_storage_use_saf_summary">Lo Storage Access Framework consente di scaricare su una scheda SD esterna.
\nNota: alcuni dispositivi non sono compatibili</string>
<string name="clear_playback_states_title">Elimina posizioni di riproduzione</string>
<string name="clear_playback_states_summary">Elimina tutte le posizioni di riproduzione</string>
@ -516,5 +516,21 @@
<item quantity="other">%s ascoltatori</item>
</plurals>
<string name="localization_changes_requires_app_restart">La lingua verrà cambiata al riavvio dell\'applicazione.</string>
<string name="default_kiosk_page_summary">Pagina predefinita</string>
<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_add_title">Aggiungi 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>
<string name="local">Locale</string>
<string name="recently_added">Aggiunti di Recente</string>
<string name="most_liked">Più Piaciuti</string>
<string name="playlist_no_uploader">Generato Automaticamente (nessun uploader trovato)</string>
<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>
</resources>

View File

@ -1,71 +1,541 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources><string name="main_bg_subtitle">گرته‌ له‌ گه‌ڕان بكه‌ بۆ ده‌ستپێكردن</string>
<?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="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="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">مه‌به‌ستت ئه‌مه‌یه‌: %1$s</string>
<string name="did_you_mean">مەبەستت ئەمەیە:
\n%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_video_player_summary">هه‌نێ له‌ قه‌باره‌كان ده‌نگیان تێدا نابێت له‌حاڵه‌تی كارا كردنی ئه‌م بژارده‌یه‌</string>
<string name="use_external_video_player_summary">هه‌نێ له‌ قه‌باره‌كان ده‌نگیان تێدا نابێت</string>
<string name="use_external_audio_player_title">به‌كارهێنانی كارپێكه‌ری ده‌نگی ده‌ره‌كی</string>
<string name="popup_mode_share_menu_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="channel_unsubscribed">به‌شداریت نەما له‌ كه‌ناڵ</string>
<string name="subscription_change_failed">ناتوانیت گۆڕانكاری له‌م به‌شدارییه‌دا بكه‌یت</string>
<string name="subscription_update_failed">ناتوانرێت به‌شداریكردنه‌كه‌ نوێبكرێته‌وه‌</string>
<string name="show_info">پیشاندانی زانیاری</string>
<string name="tab_main">سه‌ره‌كی</string>
<string name="tab_subscriptions">به‌شدارییه‌كان</string>
<string name="tab_bookmarks">نیشانكردنه‌كان</string>
<string name="tab_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="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="default_resolution_title">قه‌باره‌ی سه‌ره‌كی</string>
<string name="default_popup_resolution_title">قه‌باره‌ی سه‌ره‌كی په‌نجه‌ره‌</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">نه‌رمه‌واڵا نه‌دۆزرایه‌وه‌. دابمه‌زرێت؟</string>
<string name="show_play_with_kodi_title">پیشاندانی بژارده‌ی “كاركردن به‌ Kodi”</string>
<string name="show_higher_resolutions_summary">تەنها چەند مۆبایلێک پشتگیری کارپێکردنی ڤیدیۆی 2K/4K دەکەن</string>
<string name="play_with_kodi_title">كارپێكردن به‌ Kodi</string>
<string name="kore_not_found">ئەپەکە نه‌دۆزرایه‌وه‌. دابمه‌زرێت؟</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="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="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_title">بیرهاتنه‌وه‌ی شوێن و قه‌باره‌ی په‌نجه‌ره‌ی بچووک</string>
<string name="popup_remember_size_pos_summary">بیرهاتنه‌وه‌ی كۆتا قه‌باره‌ و شوێنی په‌نجه‌ره‌ی بچووك</string>
<string name="download_thumbnail_title">باركردنی وێنۆچكه‌كان</string>
<string name="download_thumbnail_summary">ناچالاكی بكه‌ بۆ ڕاگرتنی وێنۆچكه‌كان له‌ باركردن و پاشه‌كه‌وتبوون له‌سه‌ر بیرگه‌ی ئامێره‌كه‌ت.
\nگۆڕینی ئه‌مه‌ ده‌بێته‌ هۆی سڕینه‌وه‌یان له‌سه‌ر بیرگه‌ی مۆبایله‌كه‌ت.</string>
<string name="thumbnail_cache_wipe_complete_notice">پاشماوه‌ی وێنۆچكه‌كان سڕایه‌وه‌</string>
</resources>
<string name="autoplay_by_calling_app_summary">ڤیدیۆ کارپێبکرێ کاتێ NewPipe لە ئەپێکیتر کرایەوە</string>
<string name="use_inexact_seek_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="auto_queue_title">ڕیزکردنی خۆکاری کارپێکردنی دواتر</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_watch_history_title">مێژووی تەماشاکردن</string>
<string name="enable_watch_history_summary">هێشتنەوەی تراکی ڤیدیۆ کارپێکراوەکان</string>
<string name="resume_on_audio_focus_gain_summary">بەردەوام بوونی ڤیدیۆ لەدوای هەبوونی هەر بڕینێک (وەک پەیوەندی تەلەفۆنی)</string>
<string name="download_dialog_title">داگرتن</string>
<string name="next_video_title">دواتر</string>
<string name="show_next_and_similar_title">پیشاندانی ’دواتر’ و ڤیدیۆ ’هاوشێوەکان’</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_video_audio_title">ڤیدیۆ &amp; دەنگ</string>
<string name="settings_category_history_title">مێژوو &amp; پاشماوە</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="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="playlist">لیستی کارپێکردن</string>
<string name="yes">بەڵێ</string>
<string name="later">دواتر</string>
<string name="disabled">ناچالاککراوە</string>
<string name="filter">فلتەر</string>
<string name="refresh">نوێکردنەوە</string>
<string name="clear">سڕینەوە</string>
<string name="popup_resizing_indicator_title">قەبارە دانانەوە</string>
<string name="best_resolution">باشترین قەبارە</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="general_error">هەڵەیەک ڕوویدا</string>
<string name="network_error">کێشە لە هێڵەکەتدا هەیە</string>
<string name="could_not_load_thumbnails">ناتوانرێ هەموو وێنۆچکەکان باربکرێن</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="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_file">ئەو فایلە بوونی نییە یان دەسەڵاتی خوێندنەوە و نوسینی لاوازە</string>
<string name="file_name_empty_error">ناوی فایل ناکرێ بەتاڵ بێت</string>
<string name="error_occurred_detail">هەڵەیەک ڕوویدا : %1$s</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="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="report_error">سکاڵا لەبوونی کێشە</string>
<string name="user_report">سکاڵا لەبەکاربەر</string>
<string name="search_no_results">هیچ ئەنجامێک نییە</string>
<string name="empty_subscription_feed_subtitle">هیچ شتێک لێرەدا نییە</string>
<string name="detail_drag_description">ڕاکێشان بۆ دووبارە داواکردنەوە</string>
<string name="err_dir_create">ناتوانرێ شوێنی داگرتن دروستبکرێ \'%1$s\'</string>
<string name="info_dir_created">شوێنی داگرتن دانرا \'%1$s\'</string>
<string name="video">ڤیدیۆ</string>
<string name="audio">دەنگ</string>
<string name="retry">هەوڵدانەوە</string>
<string name="storage_permission_denied">دەسەڵاتی گەیشتن بە بیرگە نەدرا</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">%s بەشداربوون</item>
</plurals>
<string name="no_views">هیچ بینراوێک نییە</string>
<plurals name="views">
<item quantity="one">%s بینرااو</item>
<item quantity="other">%s بینراو</item>
</plurals>
<string name="no_videos">هیچ ڤیدیۆیەک نییە</string>
<plurals name="videos">
<item quantity="one">ڤیدیۆ</item>
<item quantity="other">ڤیدیۆکان</item>
</plurals>
<string name="start">دەستپێکردن</string>
<string name="pause">ڕاگرتن</string>
<string name="view">کارپێکردن</string>
<string name="create">دروستکردن</string>
<string name="delete">سڕینەوە</string>
<string name="delete_one">سڕینەوەی یەک دانە</string>
<string name="delete_all">سڕینەوەی هەمووی</string>
<string name="checksum">تاقیکردنەوەی هێڵێک</string>
<string name="dismiss">ڕێپێنەدان</string>
<string name="rename">دانانەوەی ناو</string>
<string name="add">ئەرکی نوێ</string>
<string name="finish">باشە</string>
<string name="msg_name">ناوی فایل</string>
<string name="msg_threads">دابەشکراوەکان</string>
<string name="msg_error">کێشە ڕوویدا</string>
<string name="msg_server_unsupported">سێرڤەر پشتگیرینەکراوە</string>
<string name="msg_exists">فایل بوونی هەیە</string>
<string name="msg_running">داگرتنەکانی NewPipe</string>
<string name="msg_running_detail">گرتەبکە بۆ وردەکاری</string>
<string name="msg_wait">تکایە چاوەڕێبکە…</string>
<string name="msg_copied">لەبەرگیرایەوە</string>
<string name="no_available_dir">تکایە فۆڵدەرێک بۆ شوێنی داگرتن دیاریبکە لە ڕێکخستنەکان</string>
<string name="msg_popup_permission">ئەم دەسەڵاتە پێویستە بۆ
\nکردنەوەی پەنجەرەی بچووک</string>
<string name="reCaptchaActivity" translatable="false">reCAPTCHA</string>
<string name="reCaptcha_title">reCAPTCHA داواکاری</string>
<string name="recaptcha_request_toast">reCAPTCHA داواکراوە</string>
<string name="settings_category_downloads_title">داگرتن</string>
<string name="charset_letters_and_digits">پیت و ژمارەکان</string>
<string name="charset_most_special_characters">هێما تایبەتییەکان</string>
<string name="title_activity_about">دەربارەی NewPipe</string>
<string name="action_settings">ڕێکخستنەکان</string>
<string name="action_about">دەربارە</string>
<string name="copyright" formatted="true">© %1$s لەلایەن %2$s لەژێر %3$s</string>
<string name="error_unable_to_load_license">ناتوانرێ مۆڵەت باربکرێ</string>
<string name="action_open_website">کردنەوەی ماڵپەڕ</string>
<string name="tab_about">دەربارە</string>
<string name="tab_contributors">هاوبەشەکان</string>
<string name="tab_licenses">مۆڵەتەکان</string>
<string name="contribution_title">هاوبەشبوون</string>
<string name="contribution_encouragement">هەرکاتێ بیرۆکەیەکت هەبوو وەک ; وەرگێڕان، گۆڕینی دیزاین ، سڕینەوەی کۆد ،یان هەر گۆڕانکارییەکیتر ئەوا یارمەتییەکەت لەسەرچاوانمانە. ئێمە هەمیشە دەمانەوێ ئەپەکە زیاتر بەرەوپێش ببەین!</string>
<string name="view_on_github">بینین لە GitHub</string>
<string name="donation_title">بەخشین</string>
<string name="donation_encouragement">ئەم ئەپە لەلایەن چەند خۆبەخشێکەوە دروستکراوە کەکاتی خۆیان پێ بەخشیووە تاکو باشترین خزمەتگوزاریت پێشکەش بکەن. هیچ نەبێت بە کڕینی کوپێک قاوە یارمەتی گەشەپێدەرەکانمان بدە بۆ ئەوەی کاتی زیاتر تەرخان بکەین بۆ بەرەوپێشبردنی NewPipe.</string>
<string name="give_back">پێدانەوە</string>
<string name="website_title">ماڵپەڕ</string>
<string name="website_encouragement">سەردانی ماڵپەڕی NewPipe بکە بۆ زانیاری و هەواڵی نوێ.</string>
<string name="read_full_license">خوێندنەوەی مۆڵەتنامە</string>
<string name="title_activity_history">مێژوو</string>
<string name="title_history_search">گەڕا</string>
<string name="title_history_view">تەماشاکراوە</string>
<string name="history_disabled">مێژوو ناچالاکە</string>
<string name="action_history">مێژوو</string>
<string name="history_empty">مێژوو بەتاڵە</string>
<string name="history_cleared">مێژوو سڕایەوە</string>
<string name="item_deleted">بابەت سڕایەوە</string>
<string name="delete_item_search_history">ئایا دەتەوێ ئەم بابەتە لە مێژووی گەڕان بسڕدرێتەوە؟</string>
<string name="delete_stream_history_prompt">ئایا دەتەوێ ئەم بابەتە لە مێژووی تەماشاکردن بسڕدرێتەوە؟</string>
<string name="delete_all_history_prompt">ئایا دڵنیای لە سڕینەوەی هەموو بابەتەکان لە مێژوودا؟</string>
<string name="title_last_played">دواین کارپێکراو</string>
<string name="title_most_played">زۆرترین کارپێکردن</string>
<string name="main_page_content">ناوەڕۆکی پەڕەی سەرەکی</string>
<string name="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="start_here_on_main">دەستپێکردنی لێدان لێرەوە</string>
<string name="start_here_on_background">دەستپێکردنی لێدان لە پاشبنەماوە</string>
<string name="start_here_on_popup">دەستپێکردنی لێدان لە پەنجەرەی بچووکەوە</string>
<string name="drawer_header_action_paceholder_text">بەمزووانە شتێک لێرەدا دەردەکەوێ :D</string>
<string name="video_player">کارپێکەری ڤیدیۆیی</string>
<string name="background_player">کارپێکەری پاشبنەما</string>
<string name="popup_player">کارپێکەری پەنجەرەی بچووک</string>
<string name="always_ask_open_action">هەمیشە بپرسە</string>
<string name="preferred_player_fetcher_notification_title">دەستکەوتنی زانیاری…</string>
<string name="preferred_player_fetcher_notification_message">بارکردنی ناوەڕۆکی داواکراو</string>
<string name="create_playlist">لیستی نوێ</string>
<string name="delete_playlist">سڕینەوە</string>
<string name="rename_playlist">ناوںْوسینەوە</string>
<string name="playlist_name_input">ناو</string>
<string name="append_playlist">زیادکردن بۆ لیست</string>
<string name="set_as_playlist_thumbnail">دانان لەسەر وێنۆچکەی لیست</string>
<string name="bookmark_playlist">لیستی نیشانەکراو</string>
<string name="unbookmark_playlist">لادانی نیشانەکراو</string>
<string name="delete_playlist_prompt">ئەم لیستە بسڕدرێتەوە؟</string>
<string name="playlist_creation_success">لیست دروستکرا</string>
<string name="playlist_add_stream_success">لیست دانرا</string>
<string name="playlist_thumbnail_change_success">وێنۆچکەی لیست گۆڕدرا.</string>
<string name="playlist_delete_failure">ناتوانی ئەم لیستە بسڕیتەوە.</string>
<string name="caption_none">هیچ ژێرنووسێک نییە</string>
<string name="resize_fit">گونجاو بە ڕونما</string>
<string name="resize_fill">پڕ بە ڕونما</string>
<string name="resize_zoom">هێنانەپێش</string>
<string name="caption_auto_generated">دانانی خۆکاری</string>
<string name="enable_leak_canary_title">چالاککردنی LeakCanary</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">بۆ هێنانەوەی بەشداربوونەکانی یوتوب پێویستە فایلی خەزن بوو بگەڕێنیتەوە:
\n
\n1. ئەم بەستەرە بکەوە: %1$
\n2. بچۆرەژوورەوە گەر داوای‌ کرد
\n3. داگرتنێک دەست پێدەکات (ئەمە فایلی خەزنکراوە)</string>
<string name="import_soundcloud_instructions">هێنانەوەی پەڕەی کەسی SoundCloud بەدانانی بەستەر یاخوود ئایدی:
\n
\n1. دۆخی ”Desktop mode” لە وێبگەرەکەتدا چالاک بکە (ئەم ماڵپەڕە بۆ وێبگەری مۆبایلەکان بەردەست نییە)
\n2. ئەم بەستەرە بکەرەوە : %1$s
\n3. بچۆرە ژوورەوە گەر داواکرا
\n4. بەستەری پەڕەی کەسییەکەت دابنێ.</string>
<string name="import_soundcloud_instructions_hint">ئایدییەکەت , soundcloud.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="no_streams_available_download">هیچ پەخشێک نییە بۆ داگرتن</string>
<string name="caption_setting_title">ژێرنووس</string>
<string name="caption_setting_description">بەهۆی گۆڕانکاری لە شێوەی ژێرنووسکردنەکە. پێویستە ئەپەکە دابخەیت و دیسانەوە بیکەیتەوە.</string>
<string name="toast_no_player">هیچ ئەپێک دانەمەزراوە بۆ کارپێکردنی ئەم فایلە</string>
<string name="clear_views_history_title">سڕینەوەی مێژووی تەماشاکردن</string>
<string name="clear_views_history_summary">مێژوو دەسڕێتەوە لەگەڵ ڤیدیۆ کارپێکراوەکان و شوێنی لیستە ڤیدیۆییەکان</string>
<string name="delete_view_history_alert">سڕینەوەی تەواوی مێژووی تەماشاکردن؟</string>
<string name="clear_search_history_title">سڕینەوەی مێژووی گەڕان</string>
<string name="clear_search_history_summary">مێژووی گەڕانەکانت دەسڕێتەوە</string>
<string name="delete_search_history_alert">تەواوی گەڕانەکانت بسڕدرێنەوە؟</string>
<string name="search_history_deleted">مێژووی گەڕانەکانت سڕانەوە.</string>
<string name="one_item_deleted">1 بابەت سڕایەوە.</string>
<string name="app_license">ئەم ئەپە سەرچاوە کراوەیە : دەتوانی بەکاریبهێنی، بیخوێنیتەوە و هاوبەشی پێبکەیت و بەرەوپێشی ببەیت.
\nبەتایبەتی دەتوانی دابەشیبکەیتەوە یاخوود بگۆڕیت بەپێی مەرجەکانی GNU مۆڵەتنامەی گشتی وەک ئەپێکی بڵاوی خۆڕایی!</string>
<string name="privacy_policy_title">سیاسەتی تایبەتی NewPipe</string>
<string name="privacy_policy_encouragement">پڕۆژەی NewPipe زانیارییە تایبەتییەکانت بەوردی دەپارێزێ. هەروەها ئەپەکە هیچ داتایەک بەبێ ئاگاداری تۆ بەکارنابات.
\nسیاسەتی تایبەتی NewPipe بەوردەکاری ڕوونکردنەوەت دەداتێ لەسەر ئەو داتایانەی وەریاندەگرێ و بەکاریاندەبات.</string>
<string name="read_privacy_policy">خوێندنەوەی سیاسەتی تایبەتی</string>
<string name="channels">کەناڵەکان</string>
<string name="playlists">لیستی کارپێکردنەکان</string>
<string name="tracks">تراکەکان</string>
<string name="users">بەکاربەرەکان</string>
<string name="unsubscribe">بەشدارنەبوون</string>
<string name="tab_new">پەڕەیەکی نوێ</string>
<string name="tab_choose">هەڵبژاردنی پەڕە</string>
<string name="volume_gesture_control_title">کۆنترۆڵی دەنگ بەجوڵەی پەنجە</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">داگرتن لە بیرگەی دەرەکی ناکرێت.
\nشوێنی فۆڵدەری داگرتنەکان دابنرێتەوە؟</string>
<string name="restore_defaults">گێڕانەوە بۆ بنەڕەتی</string>
<string name="restore_defaults_confirmation">ئایا دەتەوێ بگەڕێنرێتەوە بۆ شێوازی بنەڕەتی؟</string>
<string name="subscribers_count_not_available">ژمارەی بەشداربووان نادیارە</string>
<string name="download_already_running">داگرتنێکیترت هەیە بەهەمان ناو</string>
<string name="show_error">پیشاندانی کێشە</string>
<string name="label_code">کۆد</string>
<string name="error_path_creation">فۆڵدەری مەبەست ناتوانرێ دروست بکرێ</string>
<string name="error_file_creation">فایل ناتوانرێ دروستبکرێ</string>
<string name="error_permission_denied">ڕێگەپێدان ڕەتکرایەوە لەلایەن سیستەمەوە</string>
<string name="error_ssl_exception">پەیوەستبوونی پارێزراو شکستی هێنا</string>
<string name="error_unknown_host">ناتوانرێ ڕاژە بدۆزرێتەوە</string>
<string name="error_connect_host">ناتوانرێ بە ڕاژەوە پەیوەست بیت</string>
<string name="error_http_no_content">ڕاژەکە هیچ داتایەک نانێرێت</string>
<string name="error_http_unsupported_range">ئەم ڕاژەیە ناتوانێ چەندین داگرتن لەیەک کاتدا بکات</string>
<string name="events">ڕووداوەکان</string>
<string name="show_comments_title">پیشاندانی لێدوانەکان</string>
<string name="show_comments_summary">ناچالاککردن بۆ پیشان نەدانی لێدوانەکان</string>
<string name="autoplay_title">کارپێکردنی خۆکاری</string>
<plurals name="comments">
<item quantity="one">لێدوان</item>
<item quantity="other">لێدوانەکان</item>
</plurals>
<string name="no_comments">هیچ لێدوانێک نییە</string>
<string name="enable_playback_resume_title">کارپێکردنەوەی لیست</string>
<string name="enable_playback_resume_summary">گێڕانەوەی لیست بۆ شوێنی پێشووتر</string>
<string name="enable_playback_state_lists_title">شوێنەکان لە لیستدا</string>
<string name="settings_category_clear_data_title">سڕینەوەی داتا</string>
<string name="watch_history_deleted">مێژووی تەماشاکردن سڕایەوە.</string>
<string name="watch_history_states_deleted">شوێنی کارپێکراوەکان سڕانەوە.</string>
<string name="missing_file">شوێنی فایل گۆڕدراوە یان سڕاوەتەوە</string>
<string name="download_already_pending">داگرتنێکیتر هەیە بەهەمان ناو</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>
<string name="drawer_header_description">خزمەتگوزاری چەسپاو، ئێستا هەڵبژێردراو:</string>
<string name="no_one_watching">هیچ کەسێک تەماشای ناکات</string>
<plurals name="watching">
<item quantity="one">%s تەماشا دەکات</item>
<item quantity="other">%s تەماشا دەکەن</item>
</plurals>
<string name="no_one_listening">هیچ کەسێ گوێی لێ ناگرێ</string>
<plurals name="listening">
<item quantity="one">%s گوێی لێدەگرێ</item>
<item quantity="other">%s گوێی لێدەگرن</item>
</plurals>
<string name="use_inexact_seek_summary">داواکردنی ناتەواو وا لە کارپێکەرەکە دەکات زۆر بەخێرایی شوێنەکان بگۆڕێت لەگەڵ وردییەکی داشکێنراو</string>
<string name="auto_queue_summary">پاشکۆی خۆکاری پەخشێکی بەستراوە لەکاتی کارپێکردنی کۆتا پەخشدا</string>
<string name="enable_search_history_summary">کۆگای گەڕانی نێوخۆیی</string>
<string name="resume_on_audio_focus_gain_title">گێڕانەوە لەدۆخی سەرنج</string>
<string name="show_hold_to_append_title">پیشاندانی ڕێنمایی ”داگرتن تا پاشکۆ”</string>
<string name="show_hold_to_append_summary">پیشاندانی ڕێنمایی کاتێ لە پاشبنەما یاخوود پەنجەرەی بچووکدا گرتە دەکرێ لەسەر وردەکاری ڤیدیۆیەک</string>
<string name="settings_category_player_behavior_title">ڕەفتار</string>
<string name="video_is_age_restricted">پیشاندانی ئەو ڤیدیۆیانەی سنوری تەمەنیان بۆ دانراوە. لە ڕێکخستنەکانەوە ڕێگەی پێدەدرێت.</string>
<string name="youtube_signature_decryption_error">ناتوانرێ واژووی بەستەری ڤیدیۆ بخوێنرێتەوە</string>
<string name="player_unrecoverable_failure">نەگێڕانەوەی کارپێکەر بۆ پێش کێشە ڕوویدا</string>
<string name="player_recoverable_failure">گێڕانەوەی کارپێکەر بۆکاتی پێش کێشە</string>
<string name="invalid_directory">هەمان فۆڵدەر بوونی نییە</string>
<string name="invalid_source">هەمان فایل/بابەت بوونی نییە</string>
<string name="info_labels">چی:\\nداواکراو:\\nناوەڕۆک:\\nلانگ:\\nخزمەتگوزاری:\\nGMT:\\nکات:\\nپاکێج:\\nوەشان:\\nوەشانی سیستەم:</string>
<string name="use_tor_summary">|(تاقیکاری) داگرتنی خێرا بەبەکارهێنانی Tor بۆ زیادکردنی تایبەتێتی (پشتگیری پەخشە ڕاستەوخۆکان ناکات) .</string>
<string name="msg_url_malform">بەستەر هەڵەیە یاخوود بەئینتەرنێتەوە پەیوەست نەبوویت</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="title_licenses">مۆڵەتنامەی ئەپ</string>
<string name="app_description">ئەپێکی خۆڕایی و کێشی کەم بۆ پەخشی ڕاستەوخۆ لەسەر ئەندرۆید.</string>
<string name="app_license_title">مۆڵەتنامەی NewPipe</string>
<string name="blank_page_summary">پەڕەی بەتاڵ</string>
<string name="kiosk_page_summary">پەڕەی کیۆسک</string>
<string name="subscription_page_summary">پەڕەی بەشدارییەکان</string>
<string name="feed_page_summary">پەڕەی نوێترینەکان</string>
<string name="channel_page_summary">پەڕەی کەناڵەکان</string>
<string name="select_a_channel">هەڵبژاردنی کەناڵ</string>
<string name="no_channel_subscribed_yet">هیچ کەناڵێکی بەشداری نییە</string>
<string name="select_a_kiosk">هەڵبژاردنی کیۆسک</string>
<string name="export_complete_toast">خەزنکرا</string>
<string name="import_complete_toast">هێنرایەوە</string>
<string name="no_valid_zip_file">فایلی ZIP دروست نییە</string>
<string name="could_not_import_all_files">ئاگاداربە: ناتوانرێ هەمان فایلەکان بهێنرێنەوە.</string>
<string name="override_current_data">ئەمە لەسەر ڕێکخستنەکانی ئێستات جێگیردەبێت.</string>
<string name="kiosk">کیۆسک</string>
<string name="trending">پڕبینەرەکان</string>
<string name="top_50">باشترین 50</string>
<string name="new_and_hot">نوێ &amp; چالاک</string>
<string name="title_activity_background_player">کارپێکەری پاشبنەما</string>
<string name="hold_to_append">پەنجەت داگرە بۆ ڕیزنەبوون</string>
<string name="enqueue_on_background">ڕیزنەبوون لە پاشبنەما</string>
<string name="enqueue_on_popup">ڕیزنەبوون لە پەنجەرەی بچووک</string>
<string name="drawer_open">کردنەوەی پلیکانە</string>
<string name="drawer_close">داخستنی پلیکانە</string>
<string name="enable_leak_canary_summary">چاودێری دزەکردنی بیرگە ڕەنگە ببێتە هۆی وەڵامنەدانەوەی لەکاتی گەرمبوون</string>
<string name="preferred_open_action_settings_title">کرداری ’کردنەوە’ی پێشنیارکراو</string>
<string name="preferred_open_action_settings_summary">کرداری بنەڕەتی لەکاتی کردنەوەی بابەت — %s</string>
<string name="import_settings">ئایا دەتەوێت ڕێکخستنەکانیش بهێنرێنەوە؟</string>
<string name="start_accept_privacy_policy">بۆ جێبەجێکردنی فرمانەکان لەگەڵ یاسای پاراستنی داتای گشتی ئەوروپیدا (GDPR) , ئێمە سەرنجت ڕادەکێشین بۆ سیاسەتە تایبەتییەکانی ئەپەکەمان. تکایە بەئاگادارییەوە بیخوێنەوە.
\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="minimize_on_exit_popup_description">بچووککردنەوە بۆ پەنجەرەی بچووک</string>
<string name="skip_silence_checkbox">بردنەپێشەوەی خێرا لەکاتی بێدەنگکردن</string>
<string name="playback_step">هەنگاو</string>
<string name="playback_reset">ڕێکخستنەوە</string>
<string name="saved_tabs_invalid_json">پەڕە بنەڕەتییەکان بەکاردەبردرێن, ناتوانرێ پەڕە پاشەکەوتکراوەکان بخوێنرێنەوە</string>
<string name="main_page_content_summary">چ پەڕەیەک نیشانبدرێ لە پەڕەی سەرەکی</string>
<string name="selection">هەڵبژاردن</string>
<string name="updates_setting_title">نوێکارییەکان</string>
<string name="updates_setting_description">پیشاندانی ئاگانامەیەک بۆ ئامادەبوونی ئەپ لەکاتی بەردەست بوونی وەشانی نوێ</string>
<string name="list_view_mode">لیستی شێوازی بینین</string>
<string name="list">لیست</string>
<string name="grid">چوار خانە</string>
<string name="auto">خۆکار</string>
<string name="switch_view">گۆڕینی شێواز</string>
<string name="app_update_notification_content_title">وەشانی نوێی ئەپ بەردەستە!</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="conferences">کۆنفرانسەکان</string>
<string name="error_unable_to_load_comments">ناتوانرێ لێدوانەکان باربکرێ</string>
<string name="enable_playback_state_lists_summary">پیشاندانی نیشانەکەری شوێنی کارپێکراو لە لیستەکان</string>
<string name="overwrite_unrelated_warning">فایلێک بەهەمان ناو هەیە</string>
<string name="overwrite_finished_warning">فایلێکی داگیراو بەم ناوەوە هەیە</string>
<string name="overwrite_failed">ناتوانرێ لەسەر ئەو فایلە جێگیربکرێ</string>
<string name="localization_changes_requires_app_restart">زمان دەگۆڕدرێ لەدوای داخستن و پاشان کردنەوەی ئەپ.</string>
<string name="default_kiosk_page_summary">کیۆسکی بنەڕەتی</string>
<string name="seek_duration_title">خێرا بردنە پێشەوە\\ گێڕانەوە بۆکاتی سەرەتا</string>
<string name="peertube_instance_url_title">دۆخی PeerTube</string>
<string name="peertube_instance_url_summary">ئارەزوومەندییەکانی دۆخی پێرتوبی ڕێکبخە</string>
<string name="peertube_instance_url_help">ئەو دۆخانە بدۆزەرەوە کە لەگەڵ خۆتدا دەگونجێن لە %s</string>
<string name="peertube_instance_add_title">زیادکردنی دۆخ</string>
<string name="peertube_instance_add_help">بەستەری دۆخ دابنێ</string>
<string name="peertube_instance_add_fail">ناتوانرێ پشتگیری دۆخەکە بکرێ</string>
<string name="peertube_instance_add_https_only">تەنها بەستەرەکانی https پشتگیریکراون</string>
<string name="peertube_instance_add_exists">هەمان دۆخ کاراکراوە</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="pause_downloads_on_mobile_desc">بەسوودە بۆ کاتی گۆڕینی هێڵ بۆ داتای مۆبایل, لەگەڵ ئەوەشدا زۆربەی داگرتنەکان ڕاناگرێت</string>
<string name="close">داخستن</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دەتوانیت SAF بەکاربهێنیت گەر دەتەوێ لە بیرگەی دەرەکیدا فایلەکان دابگریت</string>
<string name="downloads_storage_use_saf_title">بەکارهێنانی SAF</string>
<string name="downloads_storage_use_saf_summary">چوارچێوەی گەیشتن بە بیرگە ڕێگەدەدات بە داگرتنی فایلەکان لە بیرگەی دەرەکیدا.
\nتێبینی: هەندێ لە مۆبایلەکان پشتگیری ناکرێن</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>
</resources>

View File

@ -516,4 +516,14 @@
</plurals>
<string name="localization_changes_requires_app_restart">Språk vil ikke bli endret før programmet startes på ny.</string>
<string name="default_kiosk_page_summary">Forvalgt kiosk</string>
<string name="peertube_instance_url_title">PeerTube-instanser</string>
<string name="local">Lokal</string>
<string name="recently_added">Nylig lagt til</string>
<string name="most_liked">Mest likt</string>
<string name="choose_instance_prompt">Velg en instans</string>
<string name="clear_download_history">Tøm nedlastingshistorikk</string>
<string name="delete_downloaded_files">Slett nedlastede filer</string>
<string name="deleted_downloads">Slettet %1$s nedlastninger</string>
<string name="enable_lock_screen_video_thumbnail_title">Aktiver videominiatyrbilde med låseskjerm</string>
<string name="enable_lock_screen_video_thumbnail_summary">Når du bruker bakgrunnsspilleren, vises en videominiaturbilde på låseskjermen</string>
</resources>

View File

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

View File

@ -491,7 +491,7 @@
<string name="error_postprocessing_stopped">NewPipe został zamknięty podczas pracy nad plikiem</string>
<string name="error_insufficient_storage">Brak miejsca na urządzeniu</string>
<string name="error_progress_lost">Postęp został utracony ze wzgledu na usunięcie pliku</string>
<string name="confirm_prompt">Czy jesteś pewien\?</string>
<string name="confirm_prompt">Czy chcesz wyczyścić historię pobierania lub usunąć wszystkie pobrane pliki\?</string>
<string name="enable_queue_limit">Ogranicz kolejkę pobierania</string>
<string name="enable_queue_limit_desc">Tylko jedno pobieranie będzie realizowane jednocześnie</string>
<string name="start_downloads">Rozpocznij pobieranie</string>
@ -523,4 +523,25 @@
<item quantity="many">%s słuchaczy</item>
</plurals>
<string name="localization_changes_requires_app_restart">Język zmieni się po ponownym uruchomieniu aplikacji.</string>
<string name="seek_duration_title">Krok czasu przewijania</string>
<string name="peertube_instance_url_title">Wystąpienia PeerTube</string>
<string name="peertube_instance_url_summary">Wybierz swoje ulubione instancje PeerTube</string>
<string name="peertube_instance_url_help">Znajdź wystąpienia, które najbardziej Ci odpowiadają na %s</string>
<string name="peertube_instance_add_title">Dodaj instancję</string>
<string name="peertube_instance_add_help">Wprowadź adres URL instancji</string>
<string name="peertube_instance_add_fail">Nie można sprawdzić poprawności instancji</string>
<string name="peertube_instance_add_https_only">Obsługiwane są tylko adresy URL HTTPS</string>
<string name="peertube_instance_add_exists">Instancja już istnieje</string>
<string name="local">Lokalny</string>
<string name="recently_added">Ostatnio dodane</string>
<string name="most_liked">Ulubione</string>
<string name="playlist_no_uploader">Generowane automatycznie (nie znaleziono uploadera)</string>
<string name="recovering">odzyskiwanie</string>
<string name="error_download_resource_gone">Nie można odzyskać tego pobrania</string>
<string name="choose_instance_prompt">Wybierz instancję</string>
<string name="enable_lock_screen_video_thumbnail_title">Włącz miniaturę wideo na ekranie blokady</string>
<string name="enable_lock_screen_video_thumbnail_summary">Podczas korzystania z odtwarzacza w tle na ekranie blokady zostanie wyświetlona miniatura filmu</string>
<string name="clear_download_history">Wyczyść historię pobierania</string>
<string name="delete_downloaded_files">Usuń pobrane pliki</string>
<string name="deleted_downloads">Usunięte% 1$s pobrania</string>
</resources>

View File

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

View File

@ -516,4 +516,22 @@
<item quantity="other">%s ouvintes</item>
</plurals>
<string name="localization_changes_requires_app_restart">O idioma mudará quando a app for reiniciada.</string>
<string name="seek_duration_title">Duração da busca de avanço/retrocesso rápido</string>
<string name="peertube_instance_url_title">Instâncias do PeerTube</string>
<string name="peertube_instance_url_summary">Defina as suas instâncias favoritas de PeerTube</string>
<string name="peertube_instance_url_help">Encontre as instâncias que lhe melhor convêm em %s</string>
<string name="peertube_instance_add_title">Adicionar instância</string>
<string name="peertube_instance_add_help">Digite o URL da instância</string>
<string name="peertube_instance_add_fail">Falha ao validar a instância</string>
<string name="peertube_instance_add_https_only">Somente URLs HTTPS são suportada</string>
<string name="peertube_instance_add_exists">A instância já existe</string>
<string name="local">Local</string>
<string name="recently_added">Recentemente adicionado</string>
<string name="most_liked">Os mais apreciados</string>
<string name="playlist_no_uploader">Geração automática (não foi encontrado nenhum enviador)</string>
<string name="recovering">recuperando</string>
<string name="error_download_resource_gone">Não é possível recuperar este descarregamento</string>
<string name="choose_instance_prompt">Escolha uma instância</string>
<string name="enable_lock_screen_video_thumbnail_title">Ativar miniatura do vídeo no ecrã de bloqueio</string>
<string name="enable_lock_screen_video_thumbnail_summary">Ao usar o reprodutor de fundo, uma miniatura de vídeo será exibida no ecrã de bloqueio</string>
</resources>

View File

@ -265,7 +265,7 @@
<string name="invalid_url_toast">Неверная ссылка</string>
<string name="video_streams_empty">Видеопотоки не найдены</string>
<string name="audio_streams_empty">Аудиопотоки не найдены</string>
<string name="donation_title">Пожертвовать</string>
<string name="donation_title">Пожертвование</string>
<string name="donation_encouragement">Разработчики NewPipe ценой своего свободного времени делают вашу жизнь чуть удобнее. Отплатите им тем же — наслаждаясь чашечкой кофе, они смогут сделать NewPipe ещё круче.</string>
<string name="give_back">Воздать должное</string>
<string name="website_title">Веб-сайт</string>
@ -326,7 +326,7 @@
<string name="playlist_add_stream_success">Добавлено в плейлист</string>
<string name="playlist_thumbnail_change_success">Миниатюра плейлиста изменена</string>
<string name="playlist_delete_failure">Не удалось удалить плейлист</string>
<string name="caption_none">Без титров</string>
<string name="caption_none">Без субтитров</string>
<string name="resize_fit">Подогнать</string>
<string name="resize_fill">Заполнить</string>
<string name="resize_zoom">Приблизить</string>
@ -372,9 +372,9 @@
<string name="metadata_cache_wipe_summary">Удалить все загруженные данные веб-страниц</string>
<string name="preferred_open_action_settings_summary">При открытии ссылки на контент — %s</string>
<string name="no_streams_available_download">Нет потоков для загрузки</string>
<string name="caption_setting_title">Титры</string>
<string name="caption_setting_title">Субтитры</string>
<string name="toast_no_player">Приложение для воспроизведения этого файла не установлено</string>
<string name="caption_setting_description">Изменить размер текста и стиль титров. Нужен перезапуск</string>
<string name="caption_setting_description">Изменить размер текста и стиль субтитров. Нужен перезапуск</string>
<string name="clear_views_history_title">Очистить историю</string>
<string name="delete_view_history_alert">Удалить всю историю просмотров\?</string>
<string name="watch_history_deleted">История просмотров удалена</string>
@ -492,7 +492,7 @@
<string name="error_postprocessing_stopped">NewPipe была закрыта во время работы над файлом</string>
<string name="error_insufficient_storage">Закончилось свободное место на устройстве</string>
<string name="error_progress_lost">Прогресс потерян, так как файл был удалён</string>
<string name="confirm_prompt">Вы уверены\?</string>
<string name="confirm_prompt">Действительно удалить историю загрузок и загруженные файлы\?</string>
<string name="enable_queue_limit">Ограничить очередь загрузки</string>
<string name="enable_queue_limit_desc">Только одна одновременная загрузка</string>
<string name="start_downloads">Начать загрузку</string>
@ -522,4 +522,25 @@
<item quantity="many">%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">Выберите предпочтительные серверы</string>
<string name="peertube_instance_url_help">Каталог серверов: %s</string>
<string name="peertube_instance_add_title">Новый сервер</string>
<string name="peertube_instance_add_help">URL сервера</string>
<string name="peertube_instance_add_fail">Не удалось проверить сервер</string>
<string name="peertube_instance_add_https_only">Поддерживается только HTTPS</string>
<string name="peertube_instance_add_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

@ -5,7 +5,7 @@
<string name="upload_date_text">Yayınlanma: %1$s</string>
<string name="no_player_found">Akış oynatıcısı bulunamadı. VLC\'yi yüklemek ister misiniz\?</string>
<string name="install">Yükle</string>
<string name="cancel">İptal et</string>
<string name="cancel">Vazgeç</string>
<string name="open_in_browser">Tarayıcıda aç</string>
<string name="share">Paylaş</string>
<string name="download">İndir</string>
@ -15,7 +15,7 @@
<string name="share_dialog_title">Şununla paylaş</string>
<string name="choose_browser">Tarayıcı seçin</string>
<string name="screen_rotation">döndürme</string>
<string name="use_external_video_player_title">Harici video oynatıcı kullanın</string>
<string name="use_external_video_player_title">Harici video oynatıcı kullan</string>
<string name="use_external_audio_player_title">Harici ses oynatıcı kullanın</string>
<string name="download_path_title">Video indirme dizini</string>
<string name="download_path_summary">İndirilen video dosyaları burada depolanır</string>
@ -29,7 +29,7 @@
<string name="play_with_kodi_title">Kodi ile oynat</string>
<string name="kore_not_found">Kore uygulaması bulunamadı. Yüklensin mi\?</string>
<string name="show_play_with_kodi_title">\"Kodi ile oynat\" seçeneğini göster</string>
<string name="show_play_with_kodi_summary">Kodi ortam merkezi üzerinden video oynatmak için bir seçenek görüntüleyin</string>
<string name="show_play_with_kodi_summary">Kodi ortam merkezi üzerinden video oynatmak için bir seçenek göster</string>
<string name="default_audio_format_title">Varsayılan ses formatı</string>
<string name="theme_title">Tema</string>
<string name="dark_theme_title">Koyu</string>
@ -175,7 +175,7 @@
<string name="enable_search_history_title">Arama geçmişi</string>
<string name="enable_search_history_summary">Arama sorgularını yerel olarak saklayın</string>
<string name="enable_watch_history_title">İzleme geçmişi</string>
<string name="enable_watch_history_summary">İzlenen videoların kaydını tutun</string>
<string name="enable_watch_history_summary">İzlenen videoların kaydını tut</string>
<string name="resume_on_audio_focus_gain_title">Odaklanıldığında sürdür</string>
<string name="resume_on_audio_focus_gain_summary">Kesintilerden sonra (örneğin telefon çağrısı) oynatmaya devam et</string>
<string name="settings_category_player_title">Oynatıcı</string>
@ -208,7 +208,7 @@
<string name="item_deleted">Öge silindi</string>
<string name="delete_item_search_history">Bu ögeyi arama geçmişinden silmek istiyor musunuz\?</string>
<string name="show_hold_to_append_title">\"Eklemek için basılı tutun\" ipucunu göster</string>
<string name="show_hold_to_append_summary">Vidyo ayrıntıları sayfasında arka plan veya açılır pencere düğmesine basıldığında ipucu gösterilir</string>
<string name="show_hold_to_append_summary">Video ayrıntıları sayfasında arka plan veya açılır pencere düğmesine basıldığında ipucu göster</string>
<string name="background_player_append">Arka plan oynatıcısı kuyruğuna eklendi</string>
<string name="popup_playing_append">ılır pencere oynatıcısı kuyruğuna eklendi</string>
<string name="play_all">Tümünü Oynat</string>
@ -484,7 +484,7 @@
<string name="error_insufficient_storage">Aygıt üzerinde yer yok</string>
<string name="error_progress_lost">İlerleme kaybedildi, çünkü dosya silinmiş</string>
<string name="error_timeout">Bağlantı zaman aşımı</string>
<string name="confirm_prompt">Emin misiniz\?</string>
<string name="confirm_prompt">İndirme geçmişinizi temizlemek veya indirilen tüm dosyaları silmek istiyor musunuz\?</string>
<string name="enable_queue_limit">İndirme kuyruğunu sınırla</string>
<string name="enable_queue_limit_desc">Aynı anda yalnızca bir indirme yürütülecek</string>
<string name="start_downloads">İndirmeleri başlat</string>
@ -517,4 +517,25 @@
<item quantity="other">%s dinleyici</item>
</plurals>
<string name="localization_changes_requires_app_restart">Uygulama yeniden başlatıldıktan sonra dil değişecektir.</string>
<string name="seek_duration_title">Hızlı ileri/geri sarma süresi</string>
<string name="peertube_instance_url_title">PeerTube örnekleri</string>
<string name="peertube_instance_url_summary">Favori PeerTube örneklerinizi seçin</string>
<string name="peertube_instance_url_help">%s adresinde size en uygun örnekleri bulun</string>
<string name="peertube_instance_add_title">Örnek ekle</string>
<string name="peertube_instance_add_help">Örnek URL\'sini girin</string>
<string name="peertube_instance_add_fail">Örnek doğrulanamadı</string>
<string name="peertube_instance_add_https_only">Yalnızca HTTPS URL\'leri desteklenmektedir</string>
<string name="peertube_instance_add_exists">Örnek zaten var</string>
<string name="local">Yerel</string>
<string name="recently_added">Son eklenen</string>
<string name="most_liked">En çok beğenilen</string>
<string name="playlist_no_uploader">Otomatik oluşturulan (yükleyen bulunamadı)</string>
<string name="recovering">kurtarılıyor</string>
<string name="error_download_resource_gone">Bu indirme kurtarılamıyor</string>
<string name="choose_instance_prompt">Bir örnek seçin</string>
<string name="enable_lock_screen_video_thumbnail_title">Kilit ekranı video küçük resmini etkinleştir</string>
<string name="enable_lock_screen_video_thumbnail_summary">Arka plan oynatıcıyı kullanırken kilit ekranında bir video küçük resmi görüntülenecektir</string>
<string name="clear_download_history">İndirme geçmişini temizle</string>
<string name="delete_downloaded_files">İndirilen dosyaları sil</string>
<string name="deleted_downloads">%1$s indirme silindi</string>
</resources>

View File

@ -522,4 +522,10 @@
<item quantity="many">%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">Оберіть ваш улюблений екземпляр peertube.</string>
<string name="peertube_instance_url_help">Знайдіть екземпляри, які найбільше підходять вам на https://joinpeertube.org/instance#instance-list</string>
<string name="peertube_instance_add_title">Додати екземпляр</string>
<string name="peertube_instance_add_help">Введіть посилання на екземпляр</string>
</resources>

View File

@ -8,7 +8,7 @@
<string name="share">بانٹیں</string>
<string name="download">ڈاؤن لوڈکریں</string>
<string name="search">تلاش کریں</string>
<string name="did_you_mean">کیا آپ کا مطلب تھا: %1$s \?</string>
<string name="did_you_mean">کیا آپ کا مطلب تھا: s$1%\?</string>
<string name="open_in_browser">انٹرنیٹ میں کھولیں</string>
<string name="settings">ترتیبات</string>
<string name="no_player_found">کوئیstream پلیئر نہیں ملا.کیا آپ VLC انسٹال کرنا چاہتے ہیں؟</string>
@ -159,7 +159,7 @@
<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="error_occurred_detail">ایک خامی پیش آگئی: s$1%</string>
<string name="no_streams_available_download">کوئی اسٹریمز ڈاؤن لوڈ کرنے کے لئے دستیاب نہیں</string>
<string name="sorry_string">معذرت ، ایسا نہیں ہونا چاہئے تھا۔</string>
<string name="error_report_button_text">ای میل کے ذریعے غلطی کی اطلاع دیں</string>
@ -182,8 +182,8 @@
<string name="search_no_results">کوئی نتیجہ نہیں</string>
<string name="empty_subscription_feed_subtitle">یہاں کچھ نہیں مگر اداسی کے</string>
<string name="detail_drag_description">دوبارہ ترتیب دینے کیلئے کھینچں</string>
<string name="err_dir_create">ڈاؤن لوڈ ڈائریکٹری \'٪ 1 $ s\' تشکیل نہیں دے سکتے</string>
<string name="info_dir_created">ڈاؤن لوڈ ڈائریکٹری \'٪ 1 $ s\' بن گئی</string>
<string name="err_dir_create">ڈاؤن لوڈ ڈائریکٹری \'s$1%\' تشکیل نہیں دے سکتے</string>
<string name="info_dir_created">ڈاؤن لوڈ ڈائریکٹری \'s$1%\' بن گئی</string>
<string name="video">ویڈیو</string>
<string name="audio">آڈیو</string>
<string name="retry">دوبارہ کوشش کریں</string>
@ -193,18 +193,18 @@
<string name="short_billion">بی</string>
<string name="no_subscribers">کوئی صارفین نہیں</string>
<plurals name="subscribers">
<item quantity="one">% s صارف</item>
<item quantity="other">% s صارفین</item>
<item quantity="one">s% صارف</item>
<item quantity="other">s% صارفین</item>
</plurals>
<string name="no_views">کوئی مناظر نہیں</string>
<plurals name="views">
<item quantity="one">% s منظر</item>
<item quantity="other">% s مناظر</item>
<item quantity="one">s% منظر</item>
<item quantity="other">s% مناظر</item>
</plurals>
<string name="no_videos">ویڈیوز دستیاب نہیں</string>
<plurals name="videos">
<item quantity="one">ویڈیوز</item>
<item quantity="other"></item>
<item quantity="other"/>
</plurals>
<string name="start">شروع کریں</string>
<string name="pause">توقف</string>
@ -306,7 +306,7 @@
<string name="drawer_close">دراز بند کریں</string>
<string name="drawer_header_action_paceholder_text">یہاں جلد ہی کچھ نظر آئے گا D D</string>
<string name="preferred_open_action_settings_title">ترجیح \' کھلی \' عمل</string>
<string name="preferred_open_action_settings_summary">مواد کھولنے پر ڈیفالٹ کارروائی -٪ s</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>
@ -345,16 +345,16 @@
<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. جب پوچھا جائے تو لاگ ان کریں
<string name="import_youtube_instructions">برآمد فائل کو ڈاؤن لوڈ کرکے YouTube کی رکنیت کو درآمد کریں:
\n
\n1. اس یو آر ایل پر جائیں:s$1%
\n2. جب پوچھا جائے تو لاگ ان کریں
\nA. ڈاؤن لوڈ شروع ہونا چاہئے (یہ برآمد فائل ہے)</string>
<string name="import_soundcloud_instructions">URL یا آپ کی ID ٹائپ کرکے ایک SoundCloud پروفائل درآمد کریں:
\n
\n1. ویب براؤزر میں \"ڈیسک ٹاپ موڈ\" کو فعال کریں (سائٹ موبائل آلات کے لئے دستیاب نہیں ہے)
\n2. اس URL پر جائیں: %1 $ s
\n3. پوچھا گیا میں لاگ ان کریں
<string name="import_soundcloud_instructions">URL یا آپ کی ID ٹائپ کرکے ایک SoundCloud پروفائل درآمد کریں:
\n
\n1. ویب براؤزر میں \"ڈیسک ٹاپ موڈ\" کو فعال کریں (سائٹ موبائل آلات کے لئے دستیاب نہیں ہے)
\n2. اس URL پر جائیں: s$1%
\n3. پوچھا گیا میں لاگ ان کریں
\n4. پروفائل یو آر ایل کاپی کریں جو آپ کو ہدایت کی گئی تھی.</string>
<string name="import_soundcloud_instructions_hint">yourID، soundcloud.com/yourid</string>
<string name="import_network_expensive_warning">یاد رکھیں کہ یہ آپریشن نیٹ ورک مہنگا ہوسکتا ہے۔
@ -388,7 +388,7 @@
<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_summary">اہم ویڈیو پلیئر سے دوسرے ایپ میں سوئچنگ کرتے وقت کارروائی — %s</string>
<string name="minimize_on_exit_none_description">کوئی نہیں</string>
<string name="minimize_on_exit_background_description">پس منظری پلیر میں کم کریں</string>
<string name="minimize_on_exit_popup_description">پاپ اپ پلیر میں کم کریں</string>
@ -437,7 +437,7 @@
<string name="permission_denied">سسٹم نےکارروائی سے انکار کیا گیا</string>
<string name="download_failed">ڈاؤن لوڈ ناکام</string>
<string name="download_finished">ڈاؤن لوڈ تکمیل</string>
<string name="download_finished_more">٪ s ڈاؤن لوڈ مکمل ہوگئے</string>
<string name="download_finished_more">s% ڈاؤن لوڈ مکمل ہوگئے</string>
<string name="generate_unique_name">منفرد نام بنائیں</string>
<string name="overwrite">برتحریر</string>
<string name="download_already_running">اس نام کے ساتھ ایک ڈاؤن لوڈ جاری ہے</string>
@ -466,7 +466,7 @@
<string name="autoplay_title">آٹوپلے</string>
<plurals name="comments">
<item quantity="one">تبصرے</item>
<item quantity="other"></item>
<item quantity="other"/>
</plurals>
<string name="no_comments">کوئی تبصرہ نہیں</string>
<string name="error_unable_to_load_comments">تبصرے لوڈ نہیں ہوسکے</string>

View File

@ -513,4 +513,22 @@
<item quantity="other"/>
</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="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>
</resources>

View File

@ -175,6 +175,7 @@
<string name="main_page_content_key" translatable="false">main_page_content</string>
<string name="enable_playback_resume_key" translatable="false">enable_playback_resume</string>
<string name="enable_playback_state_lists_key" translatable="false">enable_playback_state_lists</string>
<string name="enable_lock_screen_video_thumbnail_key" translatable="false">enable_lock_screen_video_thumbnail</string>
<string name="import_data" translatable="false">import_data</string>
<string name="export_data" translatable="false">export_data</string>

View File

@ -58,7 +58,9 @@
<string name="kore_not_found">Kore app not found. Install it?</string>
<string name="kore_package" translatable="false">org.xbmc.kore</string>
<string name="show_play_with_kodi_title">Show \"Play with Kodi\" option</string>
<string name="enable_lock_screen_video_thumbnail_title">Enable lock screen video thumbnail</string>
<string name="show_play_with_kodi_summary">Display an option to play a video via Kodi media center</string>
<string name="enable_lock_screen_video_thumbnail_summary">When using the background player a video thumbnail will be displayed on the lock screen</string>
<string name="play_audio">Audio</string>
<string name="default_audio_format_title">Default audio format</string>
<string name="default_video_format_title">Default video format</string>
@ -111,13 +113,13 @@
<string name="service_title">Service</string>
<string name="content_language_title">Default content language</string>
<string name="peertube_instance_url_title">PeerTube instances</string>
<string name="peertube_instance_url_summary">Set your favorite peertube instances</string>
<string name="peertube_instance_url_summary">Select your favorite PeerTube instances</string>
<string name="peertube_instance_url_help">Find the instances that best suit you on %s</string>
<string name="peertube_instance_list_url" translatable="false">https://joinpeertube.org/instances#instances-list</string>
<string name="peertube_instance_add_title">Add instance</string>
<string name="peertube_instance_add_help">Enter instance url</string>
<string name="peertube_instance_add_fail">Failed to validate instance</string>
<string name="peertube_instance_add_https_only">Only https urls are supported</string>
<string name="peertube_instance_add_help">Enter instance URL</string>
<string name="peertube_instance_add_fail">Could not validate instance</string>
<string name="peertube_instance_add_https_only">Only HTTPS URLs are supported</string>
<string name="peertube_instance_add_exists">Instance already exists</string>
<string name="settings_category_player_title">Player</string>
<string name="settings_category_player_behavior_title">Behavior</string>
@ -567,8 +569,10 @@
<string name="error_progress_lost">Progress lost, because the file was deleted</string>
<string name="error_timeout">Connection timeout</string>
<string name="error_download_resource_gone">Cannot recover this download</string>
<string name="clear_finished_download">Clear finished downloads</string>
<string name="confirm_prompt">Are you sure?</string>
<string name="clear_download_history">Clear download history</string>
<string name="confirm_prompt">Do you want to clear your download history or delete all downloaded files?</string>
<string name="delete_downloaded_files">Delete downloaded files</string>
<string name="deleted_downloads">Deleted %1$s downloads</string>
<string name="stop">Stop</string>
<string name="max_retry_msg">Maximum retries</string>
<string name="max_retry_desc">Maximum number of attempts before canceling the download</string>
@ -585,5 +589,4 @@
<string name="downloads_storage_use_saf_title">Use SAF</string>
<string name="downloads_storage_use_saf_summary">The Storage Access Framework allows downloads to an external SD card.\nNote: some devices are not compatible</string>
<string name="choose_instance_prompt">Choose an instance</string>
</resources>

View File

@ -81,6 +81,13 @@
android:summary="@string/show_play_with_kodi_summary"
android:title="@string/show_play_with_kodi_title"/>
<SwitchPreference
app:iconSpaceReserved="false"
android:defaultValue="true"
android:key="@string/enable_lock_screen_video_thumbnail_key"
android:summary="@string/enable_lock_screen_video_thumbnail_summary"
android:title="@string/enable_lock_screen_video_thumbnail_title"/>
</PreferenceCategory>
<PreferenceCategory

View File

@ -0,0 +1,19 @@
New
• Show video thumbnail on the lock screen when playing in the background
Improved
• Add local playlist to queue when long pressing on background / popup button
• Make main page tabs scrollable and hide when there is only a single tab
• Limit amount of notification thumbnail updates in background player
• Add dummy thumbnail for empty local playlists
• Use *.opus file extension instead of *.webm and show "opus" in format label instead of "WebM Opus" in the download dropdown
• Add button to delete downloaded files or download history in "Downloads"
• [YouTube] Add support to /c/shortened_url channel links
Fixed
• Fixed multiple issues when sharing a video to NewPipe and downloading its streams directly
• Fixed player access out of its creation thread
• Fixed search result paging
• [YouTube] Fixed switching on null causing NPE
• [YouTube] Fixed viewing comments when opening an invidio.us url
• [SoundCloud] Updated client_id

View File

@ -0,0 +1 @@
Fixed decrypt function name regex making YouTube unusable.