diff --git a/app/build.gradle b/app/build.gradle
index c2bceab9e..b4df55d4e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -3,16 +3,35 @@ apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
+
+static String getGitWorkingBranch() {
+ try {
+ def gitProcess = "git rev-parse --abbrev-ref HEAD".execute()
+ gitProcess.waitFor()
+ if (gitProcess.exitValue() == 0) {
+ return gitProcess.text.trim()
+ } else {
+ // not a git repository
+ return ""
+ }
+ } catch (IOException ignored) {
+ // git was not found
+ return ""
+ }
+}
+
+
android {
compileSdkVersion 28
buildToolsVersion '28.0.3'
defaultConfig {
applicationId "org.schabi.newpipe"
+ resValue "string", "app_name", "NewPipe"
minSdkVersion 19
targetSdkVersion 28
- versionCode 840
- versionName "0.18.4"
+ versionCode 860
+ versionName "0.18.6"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
@@ -28,7 +47,18 @@ android {
debug {
multiDexEnabled true
debuggable true
- applicationIdSuffix ".debug"
+
+ // suffix the app id and the app name with git branch name
+ def workingBranch = getGitWorkingBranch()
+ def normalizedWorkingBranch = workingBranch.replaceAll("[^A-Za-z]+", "").toLowerCase()
+ if (normalizedWorkingBranch.isEmpty() || workingBranch == "master" || workingBranch == "dev") {
+ // default values when branch name could not be determined or is master or dev
+ applicationIdSuffix ".debug"
+ resValue "string", "app_name", "NewPipe Debug"
+ } else {
+ applicationIdSuffix ".debug." + normalizedWorkingBranch
+ resValue "string", "app_name", "NewPipe " + workingBranch
+ }
}
}
@@ -63,7 +93,7 @@ dependencies {
exclude module: 'support-annotations'
})
- implementation 'com.github.TeamNewPipe:NewPipeExtractor:v0.18.4'
+ implementation 'com.github.TeamNewPipe:NewPipeExtractor:6446abc6d'
testImplementation 'junit:junit:4.12'
testImplementation 'org.mockito:mockito-core:2.23.0'
diff --git a/app/src/debug/AndroidManifest.xml b/app/src/debug/AndroidManifest.xml
deleted file mode 100644
index a16d6796a..000000000
--- a/app/src/debug/AndroidManifest.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index dfd1c4c3c..81ab41cfc 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -65,7 +65,8 @@
android:name=".player.MainVideoPlayer"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:label="@string/app_name"
- android:launchMode="singleTask"/>
+ android:launchMode="singleTask"
+ android:theme="@style/VideoPlayerTheme"/>
(tabsList);
}
+ @NonNull
@Override
public Fragment getItem(int position) {
final Tab tab = internalTabsList.get(position);
diff --git a/app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java
index 25ae17982..b47d78708 100644
--- a/app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java
+++ b/app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java
@@ -723,7 +723,7 @@ public class SearchFragment
showError(getString(R.string.url_not_supported_toast), false)));
return;
}
- } catch (Exception e) {
+ } catch (Exception ignored) {
// Exception occurred, it's not a url
}
diff --git a/app/src/main/java/org/schabi/newpipe/player/BackgroundPlayer.java b/app/src/main/java/org/schabi/newpipe/player/BackgroundPlayer.java
index 9e23d9145..4eaa2a73b 100644
--- a/app/src/main/java/org/schabi/newpipe/player/BackgroundPlayer.java
+++ b/app/src/main/java/org/schabi/newpipe/player/BackgroundPlayer.java
@@ -30,16 +30,16 @@ 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;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.RequiresApi;
+import androidx.core.app.NotificationCompat;
+
import com.google.android.exoplayer2.PlaybackParameters;
import com.google.android.exoplayer2.Player;
import com.google.android.exoplayer2.source.MediaSource;
@@ -341,7 +341,7 @@ public final class BackgroundPlayer extends Service {
@Override
public void handleIntent(final Intent intent) {
super.handleIntent(intent);
-
+
resetNotification();
if (bigNotRemoteView != null)
bigNotRemoteView.setProgressBar(R.id.notificationProgressBar, 100, 0, false);
@@ -389,7 +389,6 @@ public final class BackgroundPlayer extends Service {
@Override
public void onPrepared(boolean playWhenReady) {
super.onPrepared(playWhenReady);
- simpleExoPlayer.setVolume(1f);
}
@Override
@@ -398,6 +397,12 @@ public final class BackgroundPlayer extends Service {
updatePlayback();
}
+ @Override
+ public void onMuteUnmuteButtonClicked() {
+ super.onMuteUnmuteButtonClicked();
+ updatePlayback();
+ }
+
@Override
public void onUpdateProgress(int currentProgress, int duration, int bufferPercent) {
updateProgress(currentProgress, duration, bufferPercent);
diff --git a/app/src/main/java/org/schabi/newpipe/player/BasePlayer.java b/app/src/main/java/org/schabi/newpipe/player/BasePlayer.java
index 343de1ec1..994946b9a 100644
--- a/app/src/main/java/org/schabi/newpipe/player/BasePlayer.java
+++ b/app/src/main/java/org/schabi/newpipe/player/BasePlayer.java
@@ -153,6 +153,8 @@ public abstract class BasePlayer implements
public static final String START_PAUSED = "start_paused";
@NonNull
public static final String SELECT_ON_APPEND = "select_on_append";
+ @NonNull
+ public static final String IS_MUTED = "is_muted";
/*//////////////////////////////////////////////////////////////////////////
// Playback
@@ -275,6 +277,7 @@ public abstract class BasePlayer implements
final float playbackPitch = intent.getFloatExtra(PLAYBACK_PITCH, getPlaybackPitch());
final boolean playbackSkipSilence = intent.getBooleanExtra(PLAYBACK_SKIP_SILENCE,
getPlaybackSkipSilence());
+ final boolean isMuted = intent.getBooleanExtra(IS_MUTED, simpleExoPlayer == null ? false : isMuted());
// seek to timestamp if stream is already playing
if (simpleExoPlayer != null
@@ -283,7 +286,7 @@ public abstract class BasePlayer implements
&& playQueue.getItem() != null
&& queue.getItem().getUrl().equals(playQueue.getItem().getUrl())
&& queue.getItem().getRecoveryPosition() != PlayQueueItem.RECOVERY_UNSET
- ) {
+ ) {
simpleExoPlayer.seekTo(playQueue.getIndex(), queue.getItem().getRecoveryPosition());
return;
@@ -293,7 +296,7 @@ public abstract class BasePlayer implements
stateLoader = recordManager.loadStreamState(item)
.observeOn(AndroidSchedulers.mainThread())
.doFinally(() -> initPlayback(queue, repeatMode, playbackSpeed, playbackPitch, playbackSkipSilence,
- /*playOnInit=*/true))
+ /*playOnInit=*/true, isMuted))
.subscribe(
state -> queue.setRecovery(queue.getIndex(), state.getProgressTime()),
error -> {
@@ -306,7 +309,7 @@ public abstract class BasePlayer implements
}
// Good to go...
initPlayback(queue, repeatMode, playbackSpeed, playbackPitch, playbackSkipSilence,
- /*playOnInit=*/!intent.getBooleanExtra(START_PAUSED, false));
+ /*playOnInit=*/!intent.getBooleanExtra(START_PAUSED, false), isMuted);
}
protected void initPlayback(@NonNull final PlayQueue queue,
@@ -314,7 +317,8 @@ public abstract class BasePlayer implements
final float playbackSpeed,
final float playbackPitch,
final boolean playbackSkipSilence,
- final boolean playOnReady) {
+ final boolean playOnReady,
+ final boolean isMuted) {
destroyPlayer();
initPlayer(playOnReady);
setRepeatMode(repeatMode);
@@ -327,6 +331,8 @@ public abstract class BasePlayer implements
if (playQueueAdapter != null) playQueueAdapter.dispose();
playQueueAdapter = new PlayQueueAdapter(context, playQueue);
+
+ simpleExoPlayer.setVolume(isMuted ? 0 : 1);
}
public void destroyPlayer() {
@@ -532,6 +538,18 @@ public abstract class BasePlayer implements
if (simpleExoPlayer == null) return;
simpleExoPlayer.setShuffleModeEnabled(!simpleExoPlayer.getShuffleModeEnabled());
}
+ /*//////////////////////////////////////////////////////////////////////////
+ // Mute / Unmute
+ //////////////////////////////////////////////////////////////////////////*/
+
+ public void onMuteUnmuteButtonClicked() {
+ if (DEBUG) Log.d(TAG, "onMuteUnmuteButtonClicled() called");
+ simpleExoPlayer.setVolume(isMuted() ? 1 : 0);
+ }
+
+ public boolean isMuted() {
+ return simpleExoPlayer.getVolume() == 0;
+ }
/*//////////////////////////////////////////////////////////////////////////
// Progress Updates
diff --git a/app/src/main/java/org/schabi/newpipe/player/MainVideoPlayer.java b/app/src/main/java/org/schabi/newpipe/player/MainVideoPlayer.java
index 09be8d1ba..1fab28234 100644
--- a/app/src/main/java/org/schabi/newpipe/player/MainVideoPlayer.java
+++ b/app/src/main/java/org/schabi/newpipe/player/MainVideoPlayer.java
@@ -35,21 +35,26 @@ import android.os.Bundle;
import android.os.Handler;
import android.preference.PreferenceManager;
import android.provider.Settings;
+
import androidx.annotation.ColorInt;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.app.ActivityCompat;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.content.res.AppCompatResources;
+import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.ItemTouchHelper;
+
import android.util.DisplayMetrics;
import android.util.Log;
import android.util.TypedValue;
+import android.view.DisplayCutout;
import android.view.GestureDetector;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
+import android.view.WindowInsets;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageButton;
@@ -119,7 +124,8 @@ public final class MainVideoPlayer extends AppCompatActivity
private SharedPreferences defaultPreferences;
- @Nullable private PlayerState playerState;
+ @Nullable
+ private PlayerState playerState;
private boolean isInMultiWindow;
private boolean isBackPressed;
@@ -133,11 +139,13 @@ public final class MainVideoPlayer extends AppCompatActivity
protected void onCreate(@Nullable Bundle savedInstanceState) {
assureCorrectAppLanguage(this);
super.onCreate(savedInstanceState);
- if (DEBUG) Log.d(TAG, "onCreate() called with: savedInstanceState = [" + savedInstanceState + "]");
+ if (DEBUG)
+ Log.d(TAG, "onCreate() called with: savedInstanceState = [" + savedInstanceState + "]");
defaultPreferences = PreferenceManager.getDefaultSharedPreferences(this);
ThemeHelper.setTheme(this);
getWindow().setBackgroundDrawable(new ColorDrawable(Color.BLACK));
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) getWindow().setStatusBarColor(Color.BLACK);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
+ getWindow().setStatusBarColor(Color.BLACK);
setVolumeControlStream(AudioManager.STREAM_MUSIC);
WindowManager.LayoutParams lp = getWindow().getAttributes();
@@ -147,7 +155,7 @@ public final class MainVideoPlayer extends AppCompatActivity
hideSystemUi();
setContentView(R.layout.activity_main_player);
- playerImpl = new VideoPlayerImpl(this);
+ playerImpl = new VideoPlayerImpl(this);
playerImpl.setup(findViewById(android.R.id.content));
if (savedInstanceState != null && savedInstanceState.get(KEY_SAVED_STATE) != null) {
@@ -263,7 +271,7 @@ public final class MainVideoPlayer extends AppCompatActivity
playerImpl.setPlaybackQuality(playerState.getPlaybackQuality());
playerImpl.initPlayback(playerState.getPlayQueue(), playerState.getRepeatMode(),
playerState.getPlaybackSpeed(), playerState.getPlaybackPitch(),
- playerState.isPlaybackSkipSilence(), playerState.wasPlaying());
+ playerState.isPlaybackSkipSilence(), playerState.wasPlaying(), playerImpl.isMuted());
}
}
@@ -291,7 +299,7 @@ public final class MainVideoPlayer extends AppCompatActivity
if (playerImpl == null) return;
playerImpl.setRecovery();
- if(!playerImpl.gotDestroyed()) {
+ if (!playerImpl.gotDestroyed()) {
playerState = createPlayerState();
}
StateSaver.tryToSave(isChangingConfigurations(), null, outState, this);
@@ -439,6 +447,11 @@ public final class MainVideoPlayer extends AppCompatActivity
shuffleButton.setImageAlpha(shuffleAlpha);
}
+ protected void setMuteButton(final ImageButton muteButton, final boolean isMuted) {
+ muteButton.setColorFilter(ContextCompat.getColor(getApplicationContext(), isMuted ? R.color.white : R.color.gray));
+ }
+
+
private boolean isInMultiWindow() {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && isInMultiWindowMode();
}
@@ -491,6 +504,7 @@ public final class MainVideoPlayer extends AppCompatActivity
private ImageButton toggleOrientationButton;
private ImageButton switchPopupButton;
private ImageButton switchBackgroundButton;
+ private ImageButton muteButton;
private RelativeLayout windowRootLayout;
private View secondaryControls;
@@ -527,6 +541,7 @@ public final class MainVideoPlayer extends AppCompatActivity
this.shareButton = rootView.findViewById(R.id.share);
this.toggleOrientationButton = rootView.findViewById(R.id.toggleOrientation);
this.switchBackgroundButton = rootView.findViewById(R.id.switchBackground);
+ this.muteButton = rootView.findViewById(R.id.switchMute);
this.switchPopupButton = rootView.findViewById(R.id.switchPopup);
this.queueLayout = findViewById(R.id.playQueuePanel);
@@ -536,7 +551,7 @@ 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);
+ this.context.getString(R.string.show_play_with_kodi_key), false);
kodiButton.setVisibility(showKodiButton ? View.VISIBLE : View.GONE);
getRootView().setKeepScreenOn(true);
@@ -578,6 +593,7 @@ public final class MainVideoPlayer extends AppCompatActivity
shareButton.setOnClickListener(this);
toggleOrientationButton.setOnClickListener(this);
switchBackgroundButton.setOnClickListener(this);
+ muteButton.setOnClickListener(this);
switchPopupButton.setOnClickListener(this);
getRootView().addOnLayoutChangeListener((view, l, t, r, b, ol, ot, or, ob) -> {
@@ -595,6 +611,19 @@ public final class MainVideoPlayer extends AppCompatActivity
setInitialGestureValues();
}
});
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
+ queueLayout.setOnApplyWindowInsetsListener(new View.OnApplyWindowInsetsListener() {
+ @Override
+ public WindowInsets onApplyWindowInsets(View view, WindowInsets windowInsets) {
+ final DisplayCutout cutout = windowInsets.getDisplayCutout();
+ if (cutout != null)
+ view.setPadding(cutout.getSafeInsetLeft(), cutout.getSafeInsetTop(),
+ cutout.getSafeInsetRight(), cutout.getSafeInsetBottom());
+ return windowInsets;
+ }
+ });
+ }
}
public void minimize() {
@@ -683,7 +712,8 @@ public final class MainVideoPlayer extends AppCompatActivity
this.getPlaybackSkipSilence(),
this.getPlaybackQuality(),
false,
- !isPlaying()
+ !isPlaying(),
+ isMuted()
);
context.startService(intent);
@@ -707,7 +737,8 @@ public final class MainVideoPlayer extends AppCompatActivity
this.getPlaybackSkipSilence(),
this.getPlaybackQuality(),
false,
- !isPlaying()
+ !isPlaying(),
+ isMuted()
);
context.startService(intent);
@@ -716,6 +747,12 @@ public final class MainVideoPlayer extends AppCompatActivity
finish();
}
+ @Override
+ public void onMuteUnmuteButtonClicked() {
+ super.onMuteUnmuteButtonClicked();
+ setMuteButton(muteButton, playerImpl.isMuted());
+ }
+
@Override
public void onClick(View v) {
@@ -753,11 +790,14 @@ public final class MainVideoPlayer extends AppCompatActivity
} else if (v.getId() == switchBackgroundButton.getId()) {
onPlayBackgroundButtonClicked();
+ } else if (v.getId() == muteButton.getId()) {
+ onMuteUnmuteButtonClicked();
+
} else if (v.getId() == closeButton.getId()) {
onPlaybackShutdown();
return;
} else if (v.getId() == kodiButton.getId()) {
- onKodiShare();
+ onKodiShare();
}
if (getCurrentState() != STATE_COMPLETED) {
@@ -800,13 +840,14 @@ public final class MainVideoPlayer extends AppCompatActivity
animateView(secondaryControls, SLIDE_AND_ALPHA, !isMoreControlsVisible,
DEFAULT_CONTROLS_DURATION);
showControls(DEFAULT_CONTROLS_DURATION);
+ setMuteButton(muteButton, playerImpl.isMuted());
}
private void onShareClicked() {
// share video at the current time (youtube.com/watch?v=ID&t=SECONDS)
ShareUtils.shareUrl(MainVideoPlayer.this,
playerImpl.getVideoTitle(),
- playerImpl.getVideoUrl() + "&t=" + String.valueOf(playerImpl.getPlaybackSeekBar().getProgress()/1000));
+ playerImpl.getVideoUrl() + "&t=" + String.valueOf(playerImpl.getPlaybackSeekBar().getProgress() / 1000));
}
private void onScreenRotationClicked() {
@@ -1051,7 +1092,7 @@ public final class MainVideoPlayer extends AppCompatActivity
@Override
public void onSwiped(int index) {
- if(index != -1) playQueue.remove(index);
+ if (index != -1) playQueue.remove(index);
}
};
}
@@ -1116,6 +1157,10 @@ public final class MainVideoPlayer extends AppCompatActivity
return repeatButton;
}
+ public ImageButton getMuteButton() {
+ return muteButton;
+ }
+
public ImageButton getPlayPauseButton() {
return playPauseButton;
}
@@ -1130,7 +1175,8 @@ public final class MainVideoPlayer extends AppCompatActivity
@Override
public boolean onDoubleTap(MotionEvent e) {
- if (DEBUG) Log.d(TAG, "onDoubleTap() called with: e = [" + e + "]" + "rawXy = " + e.getRawX() + ", " + e.getRawY() + ", xy = " + e.getX() + ", " + e.getY());
+ if (DEBUG)
+ Log.d(TAG, "onDoubleTap() called with: e = [" + e + "]" + "rawXy = " + e.getRawX() + ", " + e.getRawY() + ", xy = " + e.getX() + ", " + e.getY());
if (e.getX() > playerImpl.getRootView().getWidth() * 2 / 3) {
playerImpl.onFastForward();
@@ -1227,7 +1273,8 @@ public final class MainVideoPlayer extends AppCompatActivity
layoutParams.screenBrightness = currentProgressPercent;
getWindow().setAttributes(layoutParams);
- if (DEBUG) Log.d(TAG, "onScroll().brightnessControl, currentBrightness = " + currentProgressPercent);
+ if (DEBUG)
+ Log.d(TAG, "onScroll().brightnessControl, currentBrightness = " + currentProgressPercent);
final int resId =
currentProgressPercent < 0.25 ? R.drawable.ic_brightness_low_white_72dp
@@ -1266,7 +1313,8 @@ public final class MainVideoPlayer extends AppCompatActivity
@Override
public boolean onTouch(View v, MotionEvent event) {
//noinspection PointlessBooleanExpression
- if (DEBUG && false) Log.d(TAG, "onTouch() called with: v = [" + v + "], event = [" + event + "]");
+ if (DEBUG && false)
+ Log.d(TAG, "onTouch() called with: v = [" + v + "], event = [" + event + "]");
gestureDetector.onTouchEvent(event);
if (event.getAction() == MotionEvent.ACTION_UP && isMoving) {
isMoving = false;
diff --git a/app/src/main/java/org/schabi/newpipe/player/PopupVideoPlayer.java b/app/src/main/java/org/schabi/newpipe/player/PopupVideoPlayer.java
index fc14e8d51..b7638eda7 100644
--- a/app/src/main/java/org/schabi/newpipe/player/PopupVideoPlayer.java
+++ b/app/src/main/java/org/schabi/newpipe/player/PopupVideoPlayer.java
@@ -571,7 +571,8 @@ public final class PopupVideoPlayer extends Service {
this.getPlaybackSkipSilence(),
this.getPlaybackQuality(),
false,
- !isPlaying()
+ !isPlaying(),
+ isMuted()
);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
@@ -607,6 +608,12 @@ public final class PopupVideoPlayer extends Service {
updatePlayback();
}
+ @Override
+ public void onMuteUnmuteButtonClicked() {
+ super.onMuteUnmuteButtonClicked();
+ updatePlayback();
+ }
+
@Override
public void onUpdateProgress(int currentProgress, int duration, int bufferPercent) {
updateProgress(currentProgress, duration, bufferPercent);
diff --git a/app/src/main/java/org/schabi/newpipe/player/ServicePlayerActivity.java b/app/src/main/java/org/schabi/newpipe/player/ServicePlayerActivity.java
index 7aa2be05d..e7700351e 100644
--- a/app/src/main/java/org/schabi/newpipe/player/ServicePlayerActivity.java
+++ b/app/src/main/java/org/schabi/newpipe/player/ServicePlayerActivity.java
@@ -3,14 +3,19 @@ package org.schabi.newpipe.player;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
+import android.content.res.TypedArray;
+import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.IBinder;
import android.provider.Settings;
+
import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.appcompat.widget.Toolbar;
import androidx.recyclerview.widget.ItemTouchHelper;
+
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
@@ -92,6 +97,8 @@ public abstract class ServicePlayerActivity extends AppCompatActivity
private TextView playbackSpeedButton;
private TextView playbackPitchButton;
+ private Menu menu;
+
////////////////////////////////////////////////////////////////////////////
// Abstracts
////////////////////////////////////////////////////////////////////////////
@@ -145,8 +152,10 @@ public abstract class ServicePlayerActivity extends AppCompatActivity
@Override
public boolean onCreateOptionsMenu(Menu menu) {
+ this.menu = menu;
getMenuInflater().inflate(R.menu.menu_play_queue, menu);
getMenuInflater().inflate(getPlayerOptionMenuResource(), menu);
+ onMaybeMuteChanged();
return true;
}
@@ -162,6 +171,9 @@ public abstract class ServicePlayerActivity extends AppCompatActivity
case R.id.action_append_playlist:
appendAllToPlaylist();
return true;
+ case R.id.action_mute:
+ player.onMuteUnmuteButtonClicked();
+ return true;
case R.id.action_system_audio:
startActivity(new Intent(Settings.ACTION_SOUND_SETTINGS));
return true;
@@ -169,8 +181,8 @@ public abstract class ServicePlayerActivity extends AppCompatActivity
this.player.setRecovery();
getApplicationContext().sendBroadcast(getPlayerShutdownIntent());
getApplicationContext().startActivity(
- getSwitchIntent(MainVideoPlayer.class)
- .putExtra(BasePlayer.START_PAUSED, !this.player.isPlaying())
+ getSwitchIntent(MainVideoPlayer.class)
+ .putExtra(BasePlayer.START_PAUSED, !this.player.isPlaying())
);
return true;
}
@@ -194,7 +206,8 @@ public abstract class ServicePlayerActivity extends AppCompatActivity
this.player.getPlaybackSkipSilence(),
null,
false,
- false
+ false,
+ this.player.isMuted()
).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.putExtra(BasePlayer.START_PAUSED, !this.player.isPlaying());
}
@@ -212,7 +225,7 @@ public abstract class ServicePlayerActivity extends AppCompatActivity
}
private void unbind() {
- if(serviceBound) {
+ if (serviceBound) {
unbindService(serviceConnection);
serviceBound = false;
stopPlayerListener();
@@ -554,6 +567,7 @@ public abstract class ServicePlayerActivity extends AppCompatActivity
onPlayModeChanged(repeatMode, shuffled);
onPlaybackParameterChanged(parameters);
onMaybePlaybackAdapterChanged();
+ onMaybeMuteChanged();
}
@Override
@@ -676,4 +690,21 @@ public abstract class ServicePlayerActivity extends AppCompatActivity
itemsList.setAdapter(maybeNewAdapter);
}
}
+
+ private void onMaybeMuteChanged() {
+ if (menu != null && player != null) {
+ MenuItem item = menu.findItem(R.id.action_mute);
+
+ //Change the mute-button item in ActionBar
+ //1) Text change:
+ item.setTitle(player.isMuted() ? R.string.unmute : R.string.mute);
+
+ //2) Icon change accordingly to current App Theme
+ TypedArray a = getTheme().obtainStyledAttributes(R.style.Theme_AppCompat, new int[]{R.attr.volume_off});
+ int attributeResourceId = a.getResourceId(0, 0);
+ Drawable drawableMuted = getResources().getDrawable(attributeResourceId);
+ Drawable drawableUnmuted = getResources().getDrawable(R.drawable.ic_volume_off_gray_24dp);
+ item.setIcon(player.isMuted() ? drawableMuted : drawableUnmuted);
+ }
+ }
}
diff --git a/app/src/main/java/org/schabi/newpipe/settings/ContentSettingsFragment.java b/app/src/main/java/org/schabi/newpipe/settings/ContentSettingsFragment.java
index 03d48ca5b..0be72d0eb 100644
--- a/app/src/main/java/org/schabi/newpipe/settings/ContentSettingsFragment.java
+++ b/app/src/main/java/org/schabi/newpipe/settings/ContentSettingsFragment.java
@@ -17,6 +17,7 @@ import androidx.preference.Preference;
import com.nononsenseapps.filepicker.Utils;
import com.nostra13.universalimageloader.core.ImageLoader;
+import org.schabi.newpipe.NewPipeDatabase;
import org.schabi.newpipe.R;
import org.schabi.newpipe.extractor.NewPipe;
import org.schabi.newpipe.extractor.localization.ContentCountry;
@@ -168,6 +169,9 @@ public class ContentSettingsFragment extends BasePreferenceFragment {
private void exportDatabase(String path) {
try {
+ //checkpoint before export
+ NewPipeDatabase.checkpoint();
+
ZipOutputStream outZip = new ZipOutputStream(
new BufferedOutputStream(
new FileOutputStream(path)));
diff --git a/app/src/main/java/org/schabi/newpipe/settings/VideoAudioSettingsFragment.java b/app/src/main/java/org/schabi/newpipe/settings/VideoAudioSettingsFragment.java
index d5f46fb22..d4897ecaa 100644
--- a/app/src/main/java/org/schabi/newpipe/settings/VideoAudioSettingsFragment.java
+++ b/app/src/main/java/org/schabi/newpipe/settings/VideoAudioSettingsFragment.java
@@ -6,11 +6,15 @@ import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
+import android.text.format.DateUtils;
+import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.preference.ListPreference;
import com.google.android.material.snackbar.Snackbar;
+import java.util.LinkedList;
+import java.util.List;
import org.schabi.newpipe.R;
import org.schabi.newpipe.util.PermissionHelper;
@@ -22,23 +26,7 @@ public class VideoAudioSettingsFragment extends BasePreferenceFragment {
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- //initializing R.array.seek_duration_description to display the translation of seconds
- Resources res = getResources();
- String[] durationsValues = res.getStringArray(R.array.seek_duration_value);
- String[] durationsDescriptions = res.getStringArray(R.array.seek_duration_description);
- int currentDurationValue;
- for (int i = 0; i < durationsDescriptions.length; i++) {
- currentDurationValue = Integer.parseInt(durationsValues[i]) / 1000;
- try {
- durationsDescriptions[i] = String.format(
- res.getQuantityString(R.plurals.dynamic_seek_duration_description, currentDurationValue),
- currentDurationValue);
- } catch (Resources.NotFoundException ignored) {
- //if this happens, the translation is missing, and the english string will be displayed instead
- }
- }
- ListPreference durations = (ListPreference) findPreference(getString(R.string.seek_duration_key));
- durations.setEntries(durationsDescriptions);
+ updateSeekOptions();
listener = (sharedPreferences, s) -> {
@@ -58,10 +46,59 @@ public class VideoAudioSettingsFragment extends BasePreferenceFragment {
.show();
}
+ } else if (s.equals(getString(R.string.use_inexact_seek_key))) {
+ updateSeekOptions();
}
};
}
+ /**
+ * Update fast-forward/-rewind seek duration options according to language and inexact seek setting.
+ * Exoplayer can't seek 5 seconds in audio when using inexact seek.
+ */
+ private void updateSeekOptions() {
+ //initializing R.array.seek_duration_description to display the translation of seconds
+ final Resources res = getResources();
+ final String[] durationsValues = res.getStringArray(R.array.seek_duration_value);
+ final List displayedDurationValues = new LinkedList<>();
+ final List displayedDescriptionValues = new LinkedList<>();
+ int currentDurationValue;
+ final boolean inexactSeek = getPreferenceManager().getSharedPreferences()
+ .getBoolean(res.getString(R.string.use_inexact_seek_key), false);
+
+ for (String durationsValue : durationsValues) {
+ currentDurationValue =
+ Integer.parseInt(durationsValue) / (int) DateUtils.SECOND_IN_MILLIS;
+ if (inexactSeek && currentDurationValue % 10 == 5) {
+ continue;
+ }
+
+ displayedDurationValues.add(durationsValue);
+ try {
+ displayedDescriptionValues.add(String.format(
+ res.getQuantityString(R.plurals.dynamic_seek_duration_description,
+ currentDurationValue),
+ currentDurationValue));
+ } catch (Resources.NotFoundException ignored) {
+ //if this happens, the translation is missing, and the english string will be displayed instead
+ }
+ }
+
+ final ListPreference durations = (ListPreference) findPreference(getString(R.string.seek_duration_key));
+ durations.setEntryValues(displayedDurationValues.toArray(new CharSequence[0]));
+ durations.setEntries(displayedDescriptionValues.toArray(new CharSequence[0]));
+ final int selectedDuration = Integer.parseInt(durations.getValue());
+ if (selectedDuration / (int) DateUtils.SECOND_IN_MILLIS % 10 == 5) {
+ final int newDuration = selectedDuration / (int) DateUtils.SECOND_IN_MILLIS + 5;
+ durations.setValue(Integer.toString(newDuration * (int) DateUtils.SECOND_IN_MILLIS));
+
+ Toast toast = Toast
+ .makeText(getContext(),
+ getString(R.string.new_seek_duration_toast, newDuration),
+ Toast.LENGTH_LONG);
+ toast.show();
+ }
+ }
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
diff --git a/app/src/main/java/org/schabi/newpipe/util/Localization.java b/app/src/main/java/org/schabi/newpipe/util/Localization.java
index cd66ec3c2..47b914bde 100644
--- a/app/src/main/java/org/schabi/newpipe/util/Localization.java
+++ b/app/src/main/java/org/schabi/newpipe/util/Localization.java
@@ -18,6 +18,8 @@ import org.ocpsoft.prettytime.units.Decade;
import org.schabi.newpipe.R;
import org.schabi.newpipe.extractor.localization.ContentCountry;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.text.DateFormat;
import java.text.NumberFormat;
import java.util.Arrays;
@@ -26,6 +28,7 @@ import java.util.Date;
import java.util.List;
import java.util.Locale;
+
/*
* Created by chschtsch on 12/29/15.
*
@@ -110,7 +113,7 @@ public class Localization {
if (languageCode.length() == 2) {
return new Locale(languageCode);
} else if (languageCode.contains("_")) {
- String country = languageCode.substring(languageCode.indexOf("_"), languageCode.length());
+ String country = languageCode.substring(languageCode.indexOf("_"));
return new Locale(languageCode.substring(0, 2), country);
}
} catch (Exception ignored) {
@@ -120,6 +123,10 @@ public class Localization {
}
public static String localizeNumber(Context context, long number) {
+ return localizeNumber(context, (double) number);
+ }
+
+ public static String localizeNumber(Context context, double number) {
NumberFormat nf = NumberFormat.getInstance(getAppLocale(context));
return nf.format(number);
}
@@ -146,14 +153,15 @@ public class Localization {
}
public static String shortCount(Context context, long count) {
+ double value = (double) count;
if (count >= 1000000000) {
- return Long.toString(count / 1000000000) + context.getString(R.string.short_billion);
+ return localizeNumber(context, round(value / 1000000000, 1)) + context.getString(R.string.short_billion);
} else if (count >= 1000000) {
- return Long.toString(count / 1000000) + context.getString(R.string.short_million);
+ return localizeNumber(context, round(value / 1000000, 1)) + context.getString(R.string.short_million);
} else if (count >= 1000) {
- return Long.toString(count / 1000) + context.getString(R.string.short_thousand);
+ return localizeNumber(context, round(value / 1000, 1)) + context.getString(R.string.short_thousand);
} else {
- return Long.toString(count);
+ return localizeNumber(context, value);
}
}
@@ -254,4 +262,8 @@ public class Localization {
public static void assureCorrectAppLanguage(Context c) {
changeAppLanguage(getAppLocale(c), c.getResources());
}
+
+ private static double round(double value, int places) {
+ return new BigDecimal(value).setScale(places, RoundingMode.HALF_UP).doubleValue();
+ }
}
diff --git a/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java b/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java
index a19aa92ae..98264e1bf 100644
--- a/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java
+++ b/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java
@@ -110,13 +110,15 @@ public class NavigationHelper {
final boolean playbackSkipSilence,
@Nullable final String playbackQuality,
final boolean resumePlayback,
- final boolean startPaused) {
+ final boolean startPaused,
+ final boolean isMuted) {
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.START_PAUSED, startPaused);
+ .putExtra(BasePlayer.START_PAUSED, startPaused)
+ .putExtra(BasePlayer.IS_MUTED, isMuted);
}
public static void playOnMainPlayer(final Context context, final PlayQueue queue, final boolean resumePlayback) {
diff --git a/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java b/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java
index 852c29835..c2d3a9b9e 100644
--- a/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java
+++ b/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java
@@ -341,17 +341,7 @@ public class MissionAdapter extends Adapter implements Handler.Callb
if (BuildConfig.DEBUG)
Log.v(TAG, "Mime: " + mimeType + " package: " + BuildConfig.APPLICATION_ID + ".provider");
- Uri uri;
-
- if (mission.storage.isDirect()) {
- uri = FileProvider.getUriForFile(
- mContext,
- BuildConfig.APPLICATION_ID + ".provider",
- new File(URI.create(mission.storage.getUri().toString()))
- );
- } else {
- uri = mission.storage.getUri();
- }
+ Uri uri = resolveShareableUri(mission);
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
@@ -379,11 +369,30 @@ public class MissionAdapter extends Adapter implements Handler.Callb
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType(resolveMimeType(mission));
- intent.putExtra(Intent.EXTRA_STREAM, mission.storage.getUri());
+ intent.putExtra(Intent.EXTRA_STREAM, resolveShareableUri(mission));
+ intent.addFlags(FLAG_GRANT_READ_URI_PERMISSION);
mContext.startActivity(Intent.createChooser(intent, null));
}
+ /**
+ * Returns an Uri which can be shared to other applications.
+ *
+ * @see
+ * https://stackoverflow.com/questions/38200282/android-os-fileuriexposedexception-file-storage-emulated-0-test-txt-exposed
+ */
+ private Uri resolveShareableUri(Mission mission) {
+ if (mission.storage.isDirect()) {
+ return FileProvider.getUriForFile(
+ mContext,
+ BuildConfig.APPLICATION_ID + ".provider",
+ new File(URI.create(mission.storage.getUri().toString()))
+ );
+ } else {
+ return mission.storage.getUri();
+ }
+ }
+
private static String resolveMimeType(@NonNull Mission mission) {
String mimeType;
diff --git a/app/src/main/res/drawable/ic_volume_off_gray_24dp.xml b/app/src/main/res/drawable/ic_volume_off_gray_24dp.xml
new file mode 100644
index 000000000..ade6bfec2
--- /dev/null
+++ b/app/src/main/res/drawable/ic_volume_off_gray_24dp.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/app/src/main/res/layout-large-land/activity_main_player.xml b/app/src/main/res/layout-large-land/activity_main_player.xml
index a7826f7c2..2e66507ac 100644
--- a/app/src/main/res/layout-large-land/activity_main_player.xml
+++ b/app/src/main/res/layout-large-land/activity_main_player.xml
@@ -395,6 +395,24 @@
android:background="?attr/selectableItemBackground"
android:contentDescription="@string/switch_to_background"
tools:ignore="RtlHardcoded"/>
+
+
+
+
+
+
+
- هل تقصد: %1$s\?
تنزيل
تنزيل
- اختر مجلد التنزيل لملفات الصوت
+ اختر مجلد التنزيل للملفات الصوتية
يتم تخزين الملفات الصوتية التي تم تنزيلها هنا
مسار مجلد الصوتيات المحفوظة
اختر مجلد التنزيل لملفات الفيديو
@@ -22,12 +22,12 @@
"لا يمكن إنشاء مجلد للتنزيلات في '%1$s'"
إنشاء دليل التحميل \'%1$s\'
تثبيت
- تطبيق Kore غير موجود. هل تريد تثبيته ؟
+ تطبيق Kore غير موجود. هل تريد تنصيبه؟
مضيء
صور معاينة الفيديو
خطأ في الشبكة
التالي
- لا يوجد مشغل فيديو. هل تريد تثبيت VLC ؟
+ لا يوجد مشغل فيديو. هل تريد تنصيب VLC؟
افتح في المتصفح
الصوت
تشغيل
@@ -57,7 +57,7 @@
خطأ
تعذرت عملية تحليل الموقع
تعذر فك تشفير توقيع رابط الفيديو
- انقر فوق بحث لتبدأ
+ اضغط فوق \"البحث\" لتبدأ
اشتراك
مشترك
الرئيسية
@@ -80,8 +80,8 @@
التاريخ
التاريخ
فتح في وضع منبثق
- يزيل الصوت في بعض القرارات
- وضع النوافذ المنبثقة NewPipe
+ يزيل الصوت في بعض الجودات
+ وضع النافذة الطافية
تم إلغاء الاشتراك في القناة
تعذر تغيير حالة الاشتراك
تعذر تحديث الاشتراك
@@ -89,7 +89,7 @@
تشغيل مقطع الفيديو عند إستدعاء NewPipe من تطبيق آخر
الدقة الافتراضية لنوافذ المنبثقة
عرض أعلى جودة
- بعض الأجهزة فقط تدعم تشغيل مقاطع الفيديو 2K / 4K
+ بعض الأجهزة فقط تدعم تشغيل مقاطع الفيديو 2K/4K
تنسيق الفيديو الافتراضي
تذكر حجم النافذة و وضعها
تذكر آخر مكان و حجم للنافذة المنبثقة
@@ -100,7 +100,7 @@
سجل البحث
تخزين طلبات البحث محليا
تتبع مقاطع الفيديو التي تمت مشاهدتها
- استئناف عند اكتساب التركيز
+ استئناف التشغيل
متابعة التشغيل بعد المقاطعات (مثل المكالمات الهاتفية)
إظهار التلميحات \"اضغط للتجاهل\"
عرض تلميح على صفحة التفاصيل عند استخدام وضع مشغل الخلفية أو النافذة المنبثقة
@@ -138,9 +138,9 @@
حدث خطأ للمشغل غير قابل للاسترداد
استرداد المشغل من الخطأ
عذرا، لا ينبغي أن يحدث ذلك.
- الإبلاغ عن خطأ عبر البريد الإلكتروني
+ الإبلاغ عن هذا الخطأ عبر البريد الإلكتروني
عذرا، حدثت بعض الأخطاء.
- تقرير
+ أبلِغ
معلومات:
ماذا حدث:
ماذا:\\nطلب:\\nيحتوى اللغة:\\nSالخدمات:\\nتوقيت غرينتش:\\nحزمة:\\nالإصدار:\\nOS إصدار نظام التشغيل:
@@ -152,7 +152,7 @@
لا شيء هنا غير الصراصير
الصوت
إعادة المحاولة
- تم رفض إذن الوصول إلى التخزين
+ ترخيص الوصول إلى التخزين أوّلا
ألف
مليون
B
@@ -477,7 +477,7 @@
"إنقطع الإتصال بالشبكة عند التحويل إلى البيانات المتنقلة"
مفيد عند التبديل إلى بيانات الجوال ، على الرغم من أنه لا يمكن تعليق بعض التنزيلات
إظهار التعليقات
- تعطيل لإيقاف عرض التعليقات
+ عطّله لإخفاء التعليقات
تشغيل تلقائي
- التعليقات
@@ -555,7 +555,7 @@
استرد
لا يمكن استرداد هذا التنزيل
اختيار مثيل
- ابحث عن الحالات التي تناسبك على %s
+ ابحث عن مثيلات الخوادم التي تناسبك على %s
تمكين قفل شاشة الصور المصغرة الفيديو
عند استخدام مشغل الخلفية ، سيتم عرض صورة مصغرة للفيديو على شاشة القفل
تنظيف تاريخ التحميل
@@ -566,4 +566,13 @@
النظام الافتراضي
اضغط على \"تم\" عند حلها
منجز
+ الفيديوهات
+
+ - %s ثوانٍ
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-b+ast/strings.xml b/app/src/main/res/values-b+ast/strings.xml
index 5ddfa7ead..129c5d2eb 100644
--- a/app/src/main/res/values-b+ast/strings.xml
+++ b/app/src/main/res/values-b+ast/strings.xml
@@ -24,7 +24,7 @@
Aspeutu
Conteníu
Conteníu torgáu pola edá
- EN DIREUTO
+ En direuto
Fallu
Nun pudieron cargase toles miniatures
Nun pudo descifrase la robla de la URL del videu
@@ -65,18 +65,18 @@
Ventanu
Resolución predeterminada del ventanu
Amosar resoluciones más altes
- Namái dalgunos preseos sofiten la reproducción de vídeos en 2K/4K
+ Namái dalgunos preseos puen reproducir vídeos en 2K/4K
Llimpiar
- Quita l\'audiu en DALGUNES resoluciones
+ Quita l\'audiu en dalgunes resoluciones
Usa xestos pa controlar el brilléu y volume del reproductor
Guetar suxerencies
Amuesa suxerencies al guetar
Soscribise
Nun pudo anovase la soscripción
Soscripciones
- Qué hai nuevo
+ Novedaes
Historial de gueta
- Siguir al recuperar el focu
+
Sigue cola reproducción dempués de les interrupciones (llamaes telefóniques, por exemplu)
Reproductor
Comportamientu
@@ -187,7 +187,7 @@
Falló la descarga
Hai una descarga en cursu con esti nome
Nun pue crease la carpeta de destín
- Falló la conexón segura
+ Nun pudo afitase una conexón segura
Nun pue coneutase col sirvidor
Llimpiar les descargues finaes
Reintentos máximos
@@ -211,14 +211,14 @@
Nun hai comentarios
Llimpieza de datos
Amosar comentarios
- Toca p\'alternar la so des/activación
+
Pa cumplir cola GDPR (Regulación Xeneral de Proteición de Datos) europea, pidímoste que revises la política de privacidá de NewPipe. Lléila con procuru.
¿Desaniciar tol historial de gueta\?
\nHas aceutala unviándonos un informe de fallos.
Aición al cambiar a otra aplicación dende\'l reproductor de vídeos principal — %s
El númberu máximu d\'intentos enantes d\'encaboxar la descarga
Posiciones nes llistes
- ¿De xuru\?
+ ¿Quies llimpiar l\'historial de descargues o desaniciar tolos ficheros baxaos\?
Esportación anterior
Importar el ficheru
Importa les soscripciones de YouTube baxando\'l ficheru d\'esportación:
@@ -246,8 +246,8 @@
Descargues
Descargues
- - Vídeos
-
+ - %s videu
+ - %s vídeos
Control per xestos del reproductor
Cargando\'l conteníu solicitáu
@@ -257,4 +257,27 @@
El ficheru nun pue crease
El sirvidor nun unvia datos
La llingua va camudar namái que se reanicie l\'aplicación.
+ Guetar
+ Compartir con
+ El ficheru yá esiste
+ Soscribiéstite
+ L\'historial ta desactiváu
+ Nun hai vídeos
+ ¿Desaniciar tol historial de guetes\?
+ ¡Hai un anovamientu disponible pa NewPipe!
+ Toca pa baxalu
+
+ - %s comentariu
+ - %s comentarios
+
+ Perdióse\'l progresu porque se desanició\'l ficheru
+ Instancies de PeerTube
+ La instancia yá esiste
+ Llingua de l\'aplicación
+ La predeterminada del sistema
+ Vídeos
+
+ - %s segundos
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-b+zh+HANS+CN/strings.xml b/app/src/main/res/values-b+zh+HANS+CN/strings.xml
index c5ff40750..e547220c4 100644
--- a/app/src/main/res/values-b+zh+HANS+CN/strings.xml
+++ b/app/src/main/res/values-b+zh+HANS+CN/strings.xml
@@ -70,9 +70,9 @@
更新
文件已删除
无法得知订阅人数
- 每推出新版本时,弹出应用升级通知
+ 发布新版本时,通知我升级应用
网格
- 新版 NewPipe 已可升级!
+ 新版 NewPipe 发布!
服务器不接受 接收 multi-threaded 下载, 以 @string/msg_threads = 1 重试
自动播放
清除数据
@@ -80,7 +80,7 @@
喜欢
不喜欢
使用Tor
- (实验性)通过 Tor 强制下载流量以增强隐私(暂不支持串流视频)。
+ (实验性)通过 Tor 强制播放来增强隐私(暂不支持串流视频)。
报告错误
用户报告
无法创建下载目录\"%1$s\"
@@ -90,7 +90,7 @@
重试
存储访问权限已被拒绝
- - %1$s 次观看
+ - %s 次观看
千
@@ -139,8 +139,8 @@
仅删除一个
全部删除
解除
- 重 命名
- 未安装用于播放此文件的应用程序
+ 重命名
+ 未安装可播放此文件的应用程序
已删除1个项目。
哪些标签需要在主页上展示
列表视图模式
@@ -164,10 +164,10 @@
默认分辨率
找不到Kore。是否安装?
显示“用Kodi播放”选项
- 显示“通过Kodi media center播放视频的选项”
+ 显示“通过Kodi media center播放视频”的选项
音频
默认音频格式
- 显示“下一个”和“类似的”视频
+ 显示“下一个”和“相似”视频
视频和音频
在后台播放
播放
@@ -186,17 +186,17 @@
内容不可用
无法设置下载菜单
暂时不支持观看直播
- 无法获得任何信息流
+ 无法获得任何串流
无法加载图像
App UI 崩溃
- 抱歉,这不应该发生的。
- 通过电子邮件报告错误
+ 抱歉,这本不应该发生。
+ 使用电子邮件报告错误
抱歉,发生了一些错误。
报告
信息:
发生了什么:
详情:\\n请求:\\n内容语言:\\n服务:\\nGMT时间:\\n包:\\n版本:\\n操作系统版本:
- 您的注释(请用英文):
+ 您的附近说明(请用英文):
详细信息:
视频预览缩略图
播放视频,时长:
@@ -221,13 +221,13 @@
调整大小
隐藏部分没有音频的分辨率
播放器手势控制
- 使用手势控制播放器的亮度和音量
+ 允许使用手势控制亮度和音量
显示搜索建议
最佳分辨率
开源小巧的Android媒体播放器。
在GitHub上查看
NewPipe开源许可证
- 你是否有想:翻译、设计、清理或重型代码更改 ——我们始终欢迎你来贡献!
+ 你是否有想:翻译、设计、清理或重构代码更改 ——我们始终欢迎你来贡献!
阅读许可证
贡献
替换字符
@@ -291,7 +291,7 @@
开始在新悬浮窗中播放
捐赠
NewPipe 是由志愿者花费时间为您带来最佳体验开发的。回馈帮助开发人员在享用一杯咖啡的同时,让 NewPipe 变得更好。
- 回馈
+ 反馈
网站
请访问 NewPipe 网站了解更多信息和讯息。
默认国家/地区
@@ -319,17 +319,17 @@
导入成功
没有有效的ZIP文件
警告:无法导入所有文件。
- 这将覆盖当前设置。
+ 此操作会覆盖当前设置。
显示信息
书签
确定要从观看历史记录中删除该项吗?
是否确实要从历史记录中删除所有项目?
最后播放
播放最多
- 总是寻问
+ 总是询问
新建播放列表
删除
- 重 命名
+ 重命名
名称
添加到播放列表
设为播放列表缩略图
@@ -344,7 +344,7 @@
适应屏幕
填充屏幕
缩放
- 敬请等待
+ 敬请期待
调试
自动生成
启用LeakCanary
@@ -375,11 +375,11 @@
\n1. 转到此网站: %1$s
\n2. 登录(如果需要)
\n3. 应该立即开始下载(即导出文件)
- 通过键入网址或你的 ID 导入 SoundCloud 配置文件:
-\n
-\n1. 在浏览器中启用\"电脑模式\"(该网站不适用于移动设备)
-\n2. 转到此 URL: %1$s
-\n3. 登录(如果需要)
+ 通过输入网址或你的 ID 导入 SoundCloud 配置文件:
+\n
+\n1. 在浏览器中启用\"电脑模式\"(该网站不适用于移动设备)
+\n2. 转到此 URL: %1$s
+\n3. 登录(如果需要)
\n4. 复制重定向的配置文件下载地址。
你的 ID:soundcloud.com/[你的ID]
该操作消耗大量流量,
@@ -389,17 +389,17 @@
清空已缓存元数据
清空已缓存的网页数据
清空元数据缓存成功
- 播放速度控制
+ 播放速度
节奏
音调
- 解除关联(可能导致失真)
+ 解除挂钩(可能导致失真)
首选“打开”操作
打开内容时默认操作: = %s
无可下载的串流内容
字幕
修改播放器字幕比例和背景样式。需要重新启动应用程序才能生效。
删除串流的播放历史和播放位置
- 删除全部观看记录?
+ 删除全部观看历史记录?
清除搜索历史记录
清除搜索关键词的历史记录
是否删除全部搜索历史记录?
@@ -460,7 +460,7 @@
清除已完成的下载
停止
最大重试次数
- 取消下载前的最多尝试次数
+ 取消下载前的最多重试着次数
在切换到移动流量网络时中断播放
切换至移动数据时可能有用,尽管一些下载无法被暂停
事件
@@ -468,7 +468,7 @@
显示评论
禁用,以停止显示评论
- - 评论
+ - %s 条评论
无法加载评论
@@ -534,7 +534,16 @@
在锁屏上显示视频缩略图
在后台播放时,锁屏上将会显示视频的缩略图
清除下载历史记录
- 删除下载了的文件
+ 删除已下载的文件
已删除 %1$s 下载
授予在其他应用上层显示的权限
+ Newpipe应用语言
+ [系统默认]
+ 完成后请按\"完成(Done)\"
+ 完成
+ 视频
+
+ - %s秒
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml
index 104ba6695..84d83827f 100644
--- a/app/src/main/res/values-cs/strings.xml
+++ b/app/src/main/res/values-cs/strings.xml
@@ -367,7 +367,7 @@ otevření ve vyskakovacím okně
Ovládání rychlosti přehrávání
Tempo
Výška tónu
- Rozpojit (může způsobit zkreslení)
+ Odpojit (může způsobit zkreslení)
Výchozí nastavení
Ke stažení nejsou dostupné žádné streamy
Preferovaná \'otevřít\' akce
@@ -474,9 +474,9 @@ otevření ve vyskakovacím okně
Deaktivovat zobrazování komentářů
Automatické přehrávání
- - Komentáře
-
-
+ - %s komentář
+ - %s komentáře
+ - %s komentářů
Žádné komentáře
Nelze načíst komentáře
@@ -552,4 +552,10 @@ otevření ve vyskakovacím okně
Jazyk systému
Po vyřešení stiskni \"Hotovo\"
Hotovo
+ Videa
+
+ - %s sekund
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index fbd3f676f..968a892d0 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -2,7 +2,7 @@
%1$s Aufrufe
Veröffentlicht am %1$s
- Keinen Stream-Player gefunden. Möchtest du VLC installieren\?
+ Keinen Stream-Player gefunden. VLC installieren\?
Installieren
Abbrechen
\n
@@ -17,17 +17,17 @@
Bildschirm drehen
Downloadordner für Videos
Heruntergeladene Videodateien werden hier gespeichert
- Wähle den Downloadordner für Videodateien aus
+ Downloadordner für Videodateien wählen
Standardauflösung
Mit Kodi abspielen
- Kore App wurde nicht gefunden. Kore jetzt installieren?
- Option \"Mit Kodi abspielen\" anzeigen
+ Fehlende Kore-App installieren\?
+ Option „Mit Kodi abspielen“ anzeigen
Zeigt eine Option an, über die man Videos mit Kodi abspielen kann
Audio
Bevorzugtes Audioformat
Herunterladen
Nächste
- \"Nächste\" und \"ähnliche\" Videos anzeigen
+ ‚Nächste‘ und ‚ähnliche‘ Videos anzeigen
Nicht unterstützte URL
Video & Audio
Bevorzugte Sprache des Inhalts
@@ -45,7 +45,7 @@
Netzwerkfehler
Downloadordner für Audiodateien
Heruntergeladene Audiodateien werden hier gespeichert
- Wähle den Downloadordner für Audiodateien aus
+ Downloadordner für Audiodateien wählen
Design
Dunkel
Hell
@@ -60,12 +60,12 @@
Inhalt nicht verfügbar
Inhalt
Altersbeschränkte Inhalte
- Altersbeschränktes Video anzeigen. Das Zulassen dieses Materials ist von den Einstellungen aus möglich.
+ Altersbeschränktes Video anzeigen. Spätere Änderungen sind in den Einstellungen möglich.
Konnte Download-Menü nicht einrichten
Live-Streams werden noch nicht unterstützt
Konnte Webseite nicht vollständig analysieren
Fehler via E-Mail melden
- MELDEN
+ Melden
Info:
Dies ist passiert:
Was:\\nAnfrage:\\nSprache des Inhalts:\\nDienst:\\nZeit (GMT):\\nPaket:\\nVersion:\\nOS-Version:
@@ -73,17 +73,17 @@
Video
Audio
Wiederholen
- Zugriff auf den Speicher wurde verweigert
+ Gewähre zuerst Speicherzugriff
Entschuldigung. Dies hätte nicht passieren sollen.
Entschuldigung. Es sind einige Fehler aufgetreten.
Dein Kommentar (auf englisch):
Konnte keinen Stream abrufen
Automatische Wiedergabe
Video abspielen, wenn NewPipe von einer anderen App aufgerufen wird
- Einen Fehler melden
+ Fehler melden
Anwenderbericht
- LIVE
- Suchen antippen, um zu beginnen
+ Live
+ „Suchen“ antippen, um zu beginnen
Downloads
Downloads
Fehlerbericht
@@ -121,17 +121,17 @@
Deaktiviert
Im Pop-up-Modus öffnen
Bevorzugtes Videoformat
- Im Pop-up Modus abspielen
- NewPipe-Pop-up-Modus
+ Im Pop-up-Modus abspielen
+ Pop-up-Modus
Diese Berechtigung ist für das
\nÖffnen im Pop-up-Modus erforderlich
Standardauflösung des Pop-ups
Höhere Auflösungen anzeigen
- Nur manche Geräte unterstützen das Abspielen von 2K-/4K-Videos
+ Nur manche Geräte können Videos in 2K/4K abspielen
Hintergrund
Pop-up
Größe und Position des Pop-ups merken
- Entfernt Tonspur bei MANCHEN Auflösungen
+ Entfernt Tonspur bei manchen Auflösungen
Letzte Größe und Position des Pop-ups merken
Gestensteuerung
Helligkeit und Lautstärke mittels Gesten einstellen
@@ -172,7 +172,7 @@
Suchverlauf
Suchanfragen lokal speichern
Verlauf ansehen
- Speichere den Wiedergabeverlauf
+ Wiedergabeverlauf speichern
Verlauf
Gesucht
Angesehen
@@ -208,7 +208,7 @@
Die meisten Sonderzeichen
Element gelöscht
- Fortsetzen bei erneutem Fokussieren
+ Wiedergabe fortsetzen
Player
Nichts hier außer das Zirpen der Grillen
Möchtest Du dieses Element aus dem Suchverlauf löschen\?
@@ -234,11 +234,11 @@
Kiosk-Seite
Kiosk auswählen
Kiosk
- Tipp anzeigen, wenn der Hintergrundwiedergabe- oder Pop-up-Button auf der Videodetailseite gedrückt gehalten wird
+ Tipp anzeigen, wenn der Hintergrundwiedergabe- oder Pop-up-Button \"Details:\" im Video gedrückt wird
In der Warteschlange der Hintergrundwiedergabe
Neu & Heiß
Halten, um zur Wiedergabeliste hinzuzufügen
- \"Gedrückt halten, um hinzuzufügen\" Tipp anzeigen
+ „Zum Anhängen gedrückt halten“ Tipp anzeigen
[Unbekannt]
In Warteschlange für Hintergrundwiedergabe
In Warteschlange in neuen Pop-up
@@ -305,14 +305,14 @@
Abbrechen
Stream-Datei herunterladen
Schnelle, ungenaue Suche verwenden
- Mit ungenauem Suchen kann die Abspielposition schneller erreicht werden, aber auf Kosten der Genauigkeit
+ Mit ungenauem Suchen kann die ungefähre Abspielposition schneller erreicht werden
Datei
Ordner existiert nicht
Die Datei existiert nicht oder die Rechte zum Lesen oder Schreiben fehlen
Dateiname darf nicht leer sein
Ein Fehler ist aufgetreten: %1$s
Automatisch erzeugt
- LeakCanary aktivieren
+ LeakCanary
Import von
Export nach
Importiere…
@@ -339,11 +339,11 @@
Wiedergabegeschwindigkeitsregler
Geschwindigkeit
Tonhöhe
- Verknüpfung aufheben (kann zu Verzerrungen führen)
+ Entkoppeln (kann zu Verzerrungen führen)
Standard
Abschalten, um das Laden von Miniaturansichten zu verhindern, was Daten- und Speicherverbrauch spart. Änderungen löschen den Bildzwischenspeicher sowohl im Arbeitsspeicher als auch auf dem internen Speicher.
Nächsten Stream automatisch einreihen
- Automatisches Anhängen eines verwandten Streams beim Abspielen des letzten Streams in einer nicht wiederholten Warteschlange
+ Wiedergabe durch Anhängen eines verwandten Streams an die Warteschlange (ohne Wiederholungsschleife) fortsetzen
Hier wird bald etwas stehen ;D
Wiedergabeliste mit Lesezeichen versehen
Anpassen
@@ -361,8 +361,8 @@
\n
\n1. Aktiviere den \"Desktop-Modus\" in einem Web-Browser (die Seite ist für mobile Geräte nicht verfügbar)
\n2. Gehe zu dieser URL: %1$s
-\n3. Melden dich an, falls Du dazu aufgefordert wirst
-\n4. Kopiere die Profil-URL, zu der Du weitergeleitet wurdest.
+\n3. Melde dich an, falls du dazu aufgefordert wirst
+\n4. Kopiere die Profil-URL, zu der du weitergeleitet wurdest.
yourID, soundcloud.com/yourid
Keine Streams zum Download verfügbar
Bevorzugte \"Öffnen\" Aktion
@@ -407,9 +407,9 @@
Neuer Tab
Tab wählen
Gestensteuerung für Lautstärke
- Die Player-Lautstärke über Gesten steuern
+ Player-Lautstärke über Gesten steuern
Gestensteuerung für Helligkeit
- Die Player-Helligkeit über Gesten steuern
+ Player-Helligkeit über Gesten steuern
Aktualisierungen
Datei gelöscht
App Update-Benachrichtigung
@@ -419,7 +419,7 @@
Fehler beim Lesen der gespeicherten Tabs – es werden die Voreinstellungen benutzt
Standardwerte wiederherstellen
Möchtest Du die Standardwerte wiederherstellen\?
- Abonnentenzahl nicht verfügbar
+ Abonnentenzahl nicht abrufbar
Welche Tabs auf der Hauptseite angezeigt werden
Auswahl
Updates
@@ -450,7 +450,7 @@
Die Datei kann nicht erstellt werden
Das Zielverzeichnis kann nicht erstellt werden
System verweigert den Zugriff
- Sichere Verbindung fehlgeschlagen
+ Aufbau einer sicheren Verbindung nicht möglich
Der Server konnte nicht gefunden werden
Kann nicht mit dem Server verbinden
Der Server sendet keine Daten
@@ -467,11 +467,11 @@
Ereignisse
Verbindungszeitüberschreitung
Kommentare anzeigen
- Deaktivieren, um die Anzeige von Kommentaren zu beenden
+ Ausschalten, um Kommentare auszublenden
Autoplay
- - Kommentar
- - Kommentare
+ - %s Kommentar
+ - %s Kommentare
Keine Kommentare
Kommentare konnten nicht geladen werden
@@ -499,7 +499,7 @@
Du wirst gefragt, wohin du jeden Download speichern willst.
\nAktiviere diese Option, wenn du auf die externe SD-Karte herunterladen möchtest
SAF verwenden
- Das Storage Access Framework erlaubt Downloads auf eine externe SD-Karte.
+ Das ‚Storage Access Framework‘ ermöglicht Downloads auf eine externe SD-Karte.
\nHinweis: Manche Geräte sind nicht kompatibel
Wiedergabepositionen löschen
Alle Wiedergabepositionen löschen
@@ -519,7 +519,7 @@
Die Sprache ändert sich, sobald die App neu gestartet wird.
PeerTube-Instanzen
- Finde auf %s die Instanzen, die am besten zu dir passen
+ Finde auf %s die Instanzen, die dir gefallen
Instanz hinzufügen
URL der Instanz eingeben
Validierung der Instanz fehlgeschlagen
@@ -534,8 +534,8 @@
Am beliebtesten
Wiederherstellen
Dieser Download kann nicht wiederhergestellt werden
- Video-Vorschaubild für Sperrbildschirm aktivieren
- Bei Verwendung des Hintergrundplayers wird ein Video-Miniaturbild auf dem Sperrbildschirm angezeigt
+ Video-Vorschaubild auf Sperrbildschirm
+ Ein Video-Miniaturbild wird auf dem Sperrbildschirm angezeigt, wenn der Hintergrundplayer verwendet wird
Downloadverlauf löschen
Heruntergeladene Dateien löschen
%1$s Downloads gelöscht
@@ -544,4 +544,10 @@
Systemstandard
\"Fertig\" drücken, wenn es gelöst wurde
Fertig
+ Live
+ Videos
+
+ - %s Sekunden
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 17ef8b5b7..2fd43edce 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -2,7 +2,7 @@
%1$s vistas
Publicado el %1$s
- No se encontró ningún reproductor de retransmisiones. ¿Quiere instalar VLC\?
+ No se encontró reproductor. ¿Instalar VLC\?
Instalar
Cancelar
Abrir en el navegador
@@ -20,7 +20,7 @@
Cambie las carpetas de descarga para que tenga efecto
Resolución predeterminada
Reproducir con Kodi
- No se encontró la aplicación Kore. ¿Quiere instalarla\?
+ ¿Instalar aplicación Kore faltante\?
Mostrar opción «Reproducir con Kodi»
Mostrar una opción para reproducir vídeo en el centro multimedia Kodi
Audio
@@ -61,11 +61,11 @@
Aún no se admiten las transmisiones en vivo
Contenido
Contenido restringido por edad
- Mostrar vídeo restringido por edad. Se puede permitir este tipo de material desde Ajustes.
- Toque en buscar para empezar
+ Mostrar vídeo restringido por edad. Se pueden realizar más cambios desde los ajustes.
+ Toque \"Buscar\" para comenzar
Reproducción automática
Reproducir un vídeo cuando NewPipe es llamado desde otra app
- EN DIRECTO
+ En directo
Descargas
Descargas
Informe de error
@@ -73,19 +73,19 @@
No se pudo configurar el menú de descarga
No se pudo obtener ninguna transmisión
Lo siento, esto no debería haber ocurrido.
- Reportar error vía email
+ Informar de este error vía email
Lo siento, ocurrieron algunos errores.
- REPORTAR
+ Informar
Información:
Qué ha ocurrido:
Su comentario (en Inglés):
Detalles:
- Reportar un error
+ Informar de un error
Reporte de usuario
Vídeo
Audio
Reintentar
- Permiso de acceso al almacenamiento denegado
+ Conceder permisos de almacenamiento primero
Iniciar
Pausar
Reproducir
@@ -126,7 +126,7 @@
Formato de vídeo predeterminado
Desactivado
Mostrar resoluciones más altas
- Solo algunos dispositivos soportan reproducción de vídeos en 2K/4K
+ Solo algunos dispositivos pueden reproducir vídeos en 2K/4K
Resolución predeterminada de emergente
Segundo plano
Popup
@@ -137,7 +137,7 @@
Recordar el último tamaño y posición del repr. emerg.
Emergente
Redimensionando
- Elimina el audio en ALGUNAS resoluciones
+ Elimina el audio en algunas resoluciones
Controles del reproductor por gestos
Usar gestos para controlar el brillo y volumen del reproductor
Sugerencias de búsqueda
@@ -167,7 +167,7 @@
Principal
Suscripciones
Qué hay de nuevo
- Reanudar al enfocar
+ Reanudar reproducción
Continuar reproduciendo después de las interrupciones (ej. llamadas telefónicas)
Descargar
Caracteres permitidos en los nombres de archivo
@@ -224,7 +224,7 @@
Quiosco
Tendencias
50 mejores
- Mostrar sugerencia cuando se presiona el botón de 2.º plano o emergente en la página de detalles del vídeo
+ Mostrar sugerencia cuando se presiona el botón de segundo plano o emergente en la página \"Detalles:\" del vídeo
En cola en el reproductor de 2.º plano
En cola en el reproductor emergente
Reproducir todo
@@ -246,7 +246,7 @@
Novedades
Mantener presionado para agregar a la cola
Donar
- NewPipe es desarrollado por voluntarios que emplean su tiempo libre para brindarle la mejor experiencia. Haga una aportación para ayudarlos a crear un NewPipe aún mejor mientras disfrutan de una taza de café.
+ NewPipe es desarrollado por voluntarios que emplean su tiempo libre para brindarle la mejor experiencia. Haga una aportación para ayudarlos a crear un NewPipe mejor mientras disfrutan de una taza de café.
Donar
Sitio web
Visite el sitio web de NewPipe para más información y noticias.
@@ -321,7 +321,7 @@
Usar búsqueda rápida inexacta
La búsqueda inexacta permite al reproductor buscar posiciones más rápido con menor precisión
Poner en cola vídeo relacionado siguiente
- Añadir de forma automática un vídeo relacionado con el último reproducido en una cola sin repetición
+ Continuar reproducción sin repetir al añadir de forma automática un vídeo relacionado con el último visto
Archivo
Archivo movido o eliminado
La carpeta no existe
@@ -441,7 +441,7 @@
No se puede crear el archivo
No se puede crear la carpeta de destino
Permiso denegado por el sistema
- Fallo la conexión segura
+ No se pudo establecer una conexión segura
No se pudo encontrar el servidor
No se puede conectar con el servidor
El servidor no devolvio datos
@@ -458,7 +458,8 @@
Se le preguntará dónde guardar cada descarga.
\nHabilite esta opción junto con SAF si quiere descargar en la tarjeta SD
Usar SAF
- El Framework de Acceso al Almacenamiento permite descargar en la tarjeta SD externa.\nNota: Algunos los dispositivos no son compatibles
+ El \'Framework de Acceso al Almacenamiento\' permite descargar en una tarjeta SD externa.
+\nNota: algunos dispositivos no son compatibles
Cancelar suscripción
Pestaña nueva
Elija la pestaña
@@ -472,7 +473,7 @@
Notificaciones de versiones nuevas de NewPipe
Almacenamiento externo no disponible
No es posible descargar a una tarjeta SD externa. \¿Restablecer la ubicación de la carpeta de descarga\?
- Usando las pestañas por defecto, error al leer las pestañas guardadas
+ No se pudo leer las pestañas guardadas, se usarán las pestañas por defecto
Restaurar valores por defecto
¿Quieres restaurar los valores por defecto\?
Número de suscriptores no disponible
@@ -487,11 +488,11 @@
¡Actualización de NewPipe disponible!
Pulsa para descargar
Mostrar comentarios
- Desactívela para ocultar los comentarios
+ Desactivar para ocultar comentarios
Reproducción automática
- - Comentario
- - Comentarios
+ - %s comentario
+ - %s comentarios
Sin comentarios
No se pudo cargar comentarios
@@ -521,7 +522,7 @@
Duración de búsqueda al avanzar y/o retroceder
Instancias de PeerTube
Selecciona tus instancias favoritas de PeerTube
- Encuentra las mejores instancias para ti en %s
+ Encuentra las instancias que te gusten en %s
Agregar instancia
Ingresar URL de la instancia
No se pudo validar la instancia
@@ -532,8 +533,8 @@
Más gustados
Generado automáticamente (no se encontró creador)
Elige una instancia
- Habilitar miniatura de video de la pantalla de bloqueo
- Al usar el reproductor de fondo, se mostrará una miniatura de video en la pantalla de bloqueo
+ Miniatura de vídeo en la pantalla de bloqueo
+ Se mostrará una miniatura del video en la pantalla de bloqueo al usar el reproductor de fondo
Limpiar historial de descargas
Eliminar archivos descargados
Eliminadas %1$s descargas
@@ -542,4 +543,9 @@
Predeterminado del sistema
Pulse en «Hecho» cuando esté resuelto
Hecho
+ Vídeos
+
+ - %s segundos
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml
index 8e74ed126..3b78a974e 100644
--- a/app/src/main/res/values-eu/strings.xml
+++ b/app/src/main/res/values-eu/strings.xml
@@ -14,10 +14,10 @@
biratzea
Bideoak deskargatzeko karpeta
Deskargatutako bideoak hemen gordeko dira
- Hautatu bideoak deskargatzeko karpeta
+ Aukeratu bideoak deskargatzeko karpeta
Lehenetsitako bereizmena
Jo Kodirekin
- Ez da aurkitu Kore aplikazioa. Kore instalatu?
+ Kore aplikazioa instalatu\?
Erakutsi \"Jo Kodirekin\" aukera
Erakutsi bideoa Kodi multimedia zentroarekin erreproduzitzeko aukera
Audioa
@@ -36,14 +36,14 @@
Gustoko dute
Tor erabili
(Esperimentala) Trafikoa Tor bidez deskargatzea behartzen du pribatutasuna hobetzeko (bideo-jarioak ez daude oraindik onartuta).
- Ez da jario erreproduzigailurik aurkitu. VLC instalatu nahi duzu?
+ Ez da jario erreproduzigailurik aurkitu. VLC instalatu\?
Hau esan nahi al zenuen: %1$s?
Erabili kanpo bideo-erreproduzigailua
Erabili kanpo audio-erreproduzigailua
Atzeko planoan erreproduzitzen
- Ukitu bilaketa hasteko
+ Sakatu \"Bilatu\" hasteko
Audioa deskargatzeko karpeta
- Hautatu audio fitxategiak deskargatzeko karpeta
+ Aukeratu audio fitxategiak deskargatzeko karpeta
Deskargatutako audio fitxategiak hemen gordetzen dira
Erreprodukzio automatikoa
Bideoa abiatzen du NewPipe beste aplikazio batek deitu badu
@@ -52,12 +52,12 @@
Itxura
Ireki laster-leiho moduan
Audioa kentzen du bereizmen batzuetan
- NewPipe laster-leiho modua
+ Popup modua
Bigarren planoa
Laster-leihoa
Laster-leihoaren lehenetsitako bereizmena
Erakutsi bereizmen altuagoak
- Gailu batzuk besterik ez dute onartzen 2K/4K bideoak erreproduzitzea
+ Bakarrik gailu batzuk onartzen dituzte 2K/4K bideoak erreproduzitzea
Hobetsitako bideo-formatua
Gaia
Beltza
@@ -72,8 +72,8 @@
Laster-leiho moduan erreproduzitzen
Edukia
Adinez mugatutako edukia
- Erakutsi adinez mugatutako bideoa. Ezarpenetan gaitu daiteke eduki mota hau.
- ZUZENEAN
+ Erakutsi adinez mugatutako bideoa. Ezarpenetan aldaketak egin daitezke gero.
+ Zuzenean
Deskargak
Deskargak
Errore-txostena
@@ -100,22 +100,22 @@
Ezin izan da irudia kargatu
Aplikazioa/interfazea kraskatu da
Hori ez litzateke gertatu behar.
- Eman errorearen berri e-posta bidez
+ Eman errore honen berri e-posta bidez
Erroreak gertatu dira.
- TXOSTENA
+ Salatu
Informazioa:
Zer gertatu da:
Zer:\\nEskaria:\\nEdukiaren hizkuntza:\\nZerbitzua:\\nGMT Ordua:\\nPaketea:\\nBertsioa:\\nSE bertsioa:
Zure iruzkina (Ingelesez):
Xehetasunak:
- Eman errore baten berri
+ Salatu errorea
Erabiltzaile-txostena
Ezin izan da \'%1$s\' karpeta sortu deskargetarako
\'%1$s\' karpeta sortu da deskargetarako
Bideoa
Audioa
Saiatu berriro
- Biltegia atzitzeko baimena ukatu da
+ Eman biltegia atzitzeko baimena lehenengo
k
M
MM
@@ -166,7 +166,7 @@
Nagusia
Harpidetzak
Zer dago berri
- Jarraitu fokua irabaztean
+ Jarraitu erreprodukzioa
Jarraitu etenaldiak eta gero (adib. telefono deiak)
Deskargak
Fitxategi-izenetan baimendutako karaktereak
@@ -199,8 +199,8 @@
Bideorik ez
- - Bideo %
- - % bideo
+ - Bideo %s
+ - %s bideo
Historiala
Bilatuta
@@ -211,7 +211,7 @@
Historiala garbitu da
Elementua ezabatuta
Erakutsi \"mantendu eransteko\" aholkua
- Erakutsi aholkua bigarren planoko eta laster-leihoko botoia sakatzean bideoaren xehetasunen orrian
+ Erakutsi aholkua bigarren planoko eta popup botoia sakatzean bideoaren \"Xehetasunak:\" atalean
Lehenetsitako edukiaren herrialdea
Zerbitzua
Bigarren planoko erreproduzigailuaren ilaran
@@ -226,7 +226,7 @@
Erreproduzigailuaren errore berreskuraezina gertatu da
Erreproduzigailuaren erroretik berreskuratzen
Dohaintza
- NewPipe zuri esperientziarik onena ekartzeko denbora ematen duten boluntarioek garatzen dute. Emaiezu zerbait garatzaileei NewPipe kafe bat hartzen duten bitartean hobetu ahal izan dezaten.
+ NewPipe zuri erabiltzaile esperientziarik onena ekartzeko haien denbora librea ematen duten boluntarioek garatzen dute. Emaiezu zerbait garatzaileei NewPipe kafe bat hartzen duten bitartean hobetu ahal izan dezaten.
Egin dohaintza
Webgunea
Bisitatu NewPipe webgunea informazio gehiagorako eta berriak irakurtzeko.
@@ -280,7 +280,7 @@
Kendu cachetik webguneen datu guztiak
Metadatuen cachea ezabatuta
Gehitu ilarara hurrengo jarioa
- Gehitu erlazionatutako jario bat azken jarioa jo bitartean errepikapenik gabeko ilara batean
+ Jarraitu bukaerako (errepikapenik gabe) ilara erlazionatutako jario bat gehituz
Arazketa
Fitxategia
Inportatu datu-basea
@@ -342,7 +342,7 @@
Automatikoki sortuak
Azpitituluak
Aldatu azpitituluen testuaren eskala eta atzealdeko estiloa. Aplikazioa berrabiarazi behar da aldaketak aplikatzeko.
- Gaitu LeakCanary
+ LeakCanary
Memoria galeren monitorizazioa. Aplikazioak agian ez du erantzungo memoriaren aitortza egin bitartean
Eman bizitza-ziklo kanpoko erroreen berri
Inportatu/esportatu
@@ -373,7 +373,7 @@
Erreprodukzio-abiaduraren kontrolak
Tempoa
Tonua
- Deslotu (distortsioa sor lezake)
+ Desaktibatu (distortsioa sor lezake)
Lehenetsia
Ezarpenak ere inportatu nahi dituzu?
Bilaketa ez zehatzak posizioak azkarrago baina prezisio gutxiagoz bilatzea ahalbidetzen du
@@ -416,10 +416,10 @@
NewPipe aplikazioaren bertsio berrien jakinarazpena
Kanpo biltegiratzea ez dago eskuragarri
Ezin da SD txartel batera deskargatu. Deskargen karpeta berrezarri nahi duzu\?
- Lehenetsitako fitxak erabiltzen, errorea gordetako fitxak irakurtzean
+ Ezin izan dira gordetako fitxak irakurri, lehenetsitako fitxak erabiltzen
Berrezarri lehenetsitakoak
- Lehenetsitakoak berrezarri nahi dituzu\?
- Harpidedunen kontua ez dago eskuragarri
+ Lehenetsiak berrezarri nahi dituzu\?
+ Harpidedun kopurua ez dago eskuragarri
Orri nagusian ikusiko diren fitxak
Hautaketa
Konferentziak
@@ -451,7 +451,7 @@
Ezin da fitxategia sortu
Ezin da helburu karpeta sortu
Sistemak baimena ukatu du
- Konexio seguruak huts egin du
+ Ezin izan da konexio seguru bat ezarri
Ezin izan da zerbitzaria aurkitu
Ezin da zerbitzariarekin konektatu
Zerbitzariak ez du daturik bidaltzen
@@ -466,11 +466,11 @@
Erabilgarria datu mugikorretara aldatzean, hala ere deskarga batzuk ezin dira pausatu
Konexioaren denbora muga
Erakutsi iruzkinak
- Desgaitu iruzkinak erakusteari erakusteko
+ Desgaitu iruzkinak ezkutatzeko
Erreprodukzio automatikoa
- - Iruzkinak
-
+ - Iruzkin %s
+ - %s iruzkin
Iruzkinik ez
Ezin izan dira iruzkinak kargatu
@@ -483,7 +483,7 @@
Erreprodukzio-posizioak ezabatuta.
Fitxategia lekuz aldatu edo ezabatu da
Badago izen bereko fitxategi bat
- ezin da fitxategia gainidatzi
+ Ezin da fitxategia gainidatzi
Badago izen bereko deskarga bat burutzeke
NewPipe itxi egin da fitxategian lanean zegoela
Ez dago lekurik gailuan
@@ -509,7 +509,7 @@
- %s entzule
SAF erabili
- Biltegian Sartzeko Armazoiak kanpoko SD txartel betera jaitsierak egitea ahalbidetzen du.
+ \'Biltegiaren Sarrera Framework\'ak kanpoko SD txartel betera jaistea ahalbidetzen du.
\nOharra: gailu batzuk ez dira bateragarriak
Ezabatu erreprodukziorako kokapenak
Erreprodukziorako kokapen guztiak ezabatzen ditu
@@ -520,7 +520,7 @@
Aurreratze/atzeratze bilaketaren iraupena
PeerTube instantziak
Hautatu zure gogoko PeerTube instantziak
- Aurkitu instantziak hemen: %s
+ Aurkitu gustuko instantziak hemen: %s
Gehitu instantzia
Sartu instantziaren URLa
Ezin izan da instantzia balioztatu
@@ -533,14 +533,19 @@
berreskuratzen
Ezin da deskarga hau berreskuratu
Aukeratu instantzia
- Gaitu bideoaren iruditxoa blokeo pantailan
- Bigarren planoko erreproduzigailua erabiltzean bideoaren iruditxo bat bistaratuko da blokeo pantailan
+ Bideoaren miniatura blokeo pantailan
+ Atzeko planoko bideo erreproduzitzailea erabiltzen den bitartean, bideoaren karatula blokeo pantailan erakutsiko da
Garbitu deskargen historiala
Ezabatu deskargatutako fitxategiak
%1$s deskarga ezabatuta
- Eman beste aplikazioen gainean erakusteko baimena
+ Baimena eman beste aplikazioen gainetik erakusteko
Aplikazioaren hizkuntza
- Sisteman lehenetsia
+ Sistemaren lehenetsia
Sakatu \"Egina\" konponduta dagoenean
Egina
+ Bideoak
+
+ - %s segundu
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index c200b1b8b..e004a8ea1 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -7,11 +7,11 @@
Télécharger
Dossier de téléchargement vidéo
Choisissez le dossier de téléchargement des fichiers vidéo
- Les fichiers vidéo téléchargés sont stockés ici
+ Les vidéos téléchargées sont stockées ici
Installer
- Impossible de trouver Kore. Voulez-vous l’installer \?
- Aucun lecteur de flux multimédias trouvé. Voulez-vous installer VLC \?
- Ouvrir dans le navigateur
+ Installer l\'application Kore manquante \?
+ Aucun lecteur multimédia trouvé. Voulez-vous installer VLC \?
+ Ouvrir dans un navigateur
Lire avec Kodi
rotation
Rechercher
@@ -58,28 +58,28 @@
Désolé, des erreurs sont survenues.
Contenu
Contenu avec limite d’âge
- EN DIRECT
+ En direct
Impossible de charger toutes les miniatures
Impossible de déchiffrer la signature URL de la vidéo
Impossible d’analyser complètement le site web
Les flux en direct ne sont pas encore pris en charge
Désolé, une erreur est survenue.
- Lire la vidéo lorsque NewPipe est appelée par une autre application
- Rapporter l’erreur par courriel
+ Lire la vidéo lorsque NewPipe est lancée depuis une autre application
+ Signaler cette erreur par courriel
Information :
Ce qui s’est passé :
Votre commentaire (en anglais) :
Détails :
- Rapporter une erreur
+ Signaler une erreur
Vidéo
Audio
Réessayer
- Autorisation d’accès au stockage refusée
+ Accordez d\'abord l\'accès au stockage
Appuyer sur la loupe pour commencer
Lecture automatique
Affiche les vidéos soumises à une limite d’âge. Autoriser ce type de contenu est possible depuis les paramètres.
Rapport utilisateur
- RAPPORTER
+ Signaler
Impossible de configurer le menu de téléchargement
Impossible d’obtenir le moindre flux
Téléchargements
@@ -112,7 +112,7 @@
Défi reCAPTCHA
Défi reCAPTCHA demandé
Ouvrir en mode flottant
- Mode flottant NewPipe
+ Mode flottant
Lecture en mode flottant
Oui
Plus tard
@@ -122,21 +122,21 @@
M
Cette autorisation est nécessaire pour
\nutiliser le mode flottant
- Lire l\'audio
- Flottant
+ Lecture audio
+ Lecture flottante
Définition de la fenêtre flottante par défaut
Afficher des définitions plus élevées
Seuls certains appareils prennent en charge les vidéos 2K et 4K
Format vidéo par défaut
Mémoriser les taille et position de la fenêtre flottante
Mémorise les dernières taille et position de la fenêtre flottante
- Fenêtré
+ Flottant
Filtre
Rafraîchir
Effacer
Redimensionner
- Mrd
- Retire l’audio à CERTAINES définitions
+ G
+ Le son peut être supprimé à CERTAINES définitions
Utiliser des gestes pour contrôler la luminosité et le volume du lecteur
Suggestions de recherche
Affiche les suggestions lors d’une recherche
@@ -168,12 +168,12 @@
Que ce soit pour des idées de traductions, de changements de design, de nettoyage de code ou de gros changements de code, une aide est toujours la bienvenue. Plus on contribue, meilleur il devient !
Impossible de modifier l’abonnement
Impossible d’actualiser l’abonnement
- Continue la lecture après les interruptions (ex : appels téléphoniques)
+ Continuer la lecture après les interruptions (ex : appels téléphoniques)
Caractères autorisés dans les noms de fichier
Les caractères invalides sont remplacés par cette valeur
Caractère de remplacement
Historique de recherche
- Stocke l’historique de recheche sur l’appareil
+ Stocke l’historique de recherche sur l’appareil
Voir l’historique
Historique
Recherché
@@ -185,7 +185,7 @@
Notification NewPipe
Annuler
Garde un suivi des vidéos vues
- Reprendre lors du retour dans l\'application
+ Reprendre la lecture
Lecteur
Comportement
Historique et cache
@@ -220,7 +220,7 @@
Tendances
Top 50
Nouveau & populaire
- En file d’attente sur le lecteur en arrière-plan
+ Ajouté à la liste de lecture audio
En file d’attente sur le lecteur flottant
Tout lire
Impossible de lire ce flux
@@ -232,7 +232,7 @@
Détails
Paramètres audios
Afficher l’astuce « Maintenir pour ajouter »
- Affiche l’astuce lors de l’appui du bouton « Arrière-plan » ou « Mode flottant » sur la page de détails d’une vidéo
+ Afficher l’astuce lors de l’appui du bouton « Lecture audio » ou « Lecture flottante » sur la page de détails d’une vidéo
[Inconnu]
Récupération depuis l’erreur du lecteur
Kiosque
@@ -257,7 +257,7 @@
Service
Ouvrir le menu
Fermer le menu
- Aucun lecteur de flux multimédias trouvé (vous pouvez installer VLC pour le lire).
+ Aucun lecteur multimédia trouvé (vous pouvez installer VLC pour continuer).
Toujours
Une seule fois
Les lecteurs externes ne prennent pas en charge ces types de liens
@@ -278,7 +278,7 @@
Fichier ZIP non valide
Avertissement : Impossible d\'importer tous les fichiers.
Cela effacera vos paramètres actuels.
- Afficher les infos
+ Voir les détails
Listes de lecture enregistrées
Ajouter à
Glisser pour réordonner
@@ -310,7 +310,7 @@
Utiliser la recherche rapide approximative
Permet au lecteur d’accéder plus rapidement à une position au détriment de la précision
Charger les miniatures
- Désactivez pour empêcher le chargement des miniatures afin de réduire l’utilisation 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.
+ Désactivez pour empêcher le chargement des miniatures afin de réduire l’utilisation 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.
Images en cache effacées
Effacer les métadonnées en cache
Efface toutes les données de pages Web en cache
@@ -325,11 +325,11 @@
Quelque chose va bientôt apparaître ici ;D
Télécharger le fichier de flux
Vidéo suivante en file d’attente
- Lecture automatique après la file d\'attente
+ Continuer la liste de lecture finie (non répétitive) en ajoutant un flux lié
Débogage
Remplir
Générés automatiquement
- Activer LeakCanary
+ LeakCanary
La surveillance des fuites de mémoire peut geler l’application durant le vidage du tas
Rapporter les erreurs hors cycle de vie
Forcer le rapport des exceptions Rx inlivrables en dehors des fragments ou activités durant le cycle de vie après traitement
@@ -401,7 +401,7 @@
Action lors du basculement à une autre application depuis le lecteur vidéo — %s
Aucune
Minimiser pour lire en arrière-plan
- Basculer vers le mode fenêtré
+ Réduit vers le lecteur flottant
Se désabonner
Nouvel onglet
Sélectionner un onglet
@@ -428,7 +428,7 @@
Grille
Auto
Changer de vue
- Une mise à jour de NewPipe est disponible !
+ Une mise à jour de NewPipe est disponible !
Appuyer pour télécharger
Terminé
En attente
@@ -438,18 +438,18 @@
Conférences
Téléchargement terminé
%s téléchargements terminés
- Ajouté à la file d’attente
+ ajouté à la liste de lecture
Générer un nom unique
Écraser
Un fichier avec ce nom existe déjà
Un fichier téléchargé avec ce nom existe déjà
- Il y a déjà un téléchargement en cours avec ce nom
+ Un téléchargement en cours porte déjà ce nom
Afficher l’erreur
Code
Le dossier de destination ne peut pas être créé
Le fichier ne peut pas être créé
- Autorisation refusée par le système
- La connexion sécurisée a échoué
+ Permission refusée par le système
+ Impossible d’établir une connexion sécurisée
Impossible de trouver le serveur
Impossible de se connecter au serveur
Le serveur n’envoie pas de données
@@ -457,21 +457,21 @@
Effacer les téléchargements terminés
Interrompre sur les connexions limitées
Utile lors du passage aux données mobiles, bien que certains téléchargements ne peuvent pas être suspendus
- Mode d’affichage en liste
+ Mode de vue en liste
post-traitement
- File d’attente
+ Liste de lecture
Action refusée par le système
Le post-traitement a échoué
- Nombre maximum de tentatives
- Nombre maximum de tentatives avant d’annuler le téléchargement
- En utilisation les onglets par défaut, une erreur est survenue en lisant les onglets sauvegardés
- Le serveur n’accepte pas les téléchargements multi-fils, veuillez réessayer avec @string/msg_threads = 1
+ Nombre d’essais maximum
+ Nombre d’essais maximum avant annulation du téléchargement
+ Impossible de lire les onglets enregistrés ; utilisation des onglets par défaut
+ Le serveur n’accepte pas les téléchargements multifils, veuillez réessayer avec @string/msg_threads = 1
Afficher les commentaires
- Désactiver pour ne pas afficher les commentaires
+ Désactiver pour masquer les commentaires
Lecture automatique
- - Commentaire
- - Commentaires
+ - %s commentaire
+ - %s commentaires
Aucun commentaire
Impossible de charger les commentaires
@@ -495,15 +495,15 @@
\nVeuillez choisir ILAF si vous voulez télécharger sur une carte mémoire externe
Reprend la lecture à la dernière position
Positions dans les listes
- Afficher les indicateurs de position de lecture dans les listes
+ Affiche les indicateurs de position de lecture dans les listes
Positions de reprise de lecture supprimées.
Utiliser ILAF
- L\'Infrastructure Logicielle d\'Accès au Stockage permet de télécharger sur une carte mémoire externe.
+ L\' « Infrastructure Logicielle d\'Accès au Stockage » permet de télécharger sur une carte mémoire externe.
\nNote : certains appareils ne sont pas compatibles
Supprimer les positions de reprise de lecture
Supprime toutes les positions de reprise de lecture
Voulez-vous supprimer toutes les positions de reprise de lecture \?
- Changez les dossiers de téléchargement pour que cela prenne effet
+ Modifiez les dossiers de téléchargement pour que cela prenne effet
Activer/Désactiver le service, actuellement sélectionné :
Kiosque par défaut
Personne ne regarde
@@ -517,10 +517,10 @@
- %s auditeurs
La langue changera lors du redémarrage de l\'application.
- Avance/rembobinage rapide sur une durée
+ Durée de l’avance et retour rapide
Instances PeerTube
Choisissez vos instances PeerTube préférées
- Cherchez des instances qui pourraient vous intéresser sur %s
+ Trouvez les instances que vous aimez sur %s
Ajouter une instance
Entrez l’URL de l’instance
Échec de validation de l’instance
@@ -533,8 +533,8 @@
Impossible de récupérer ce téléchargement
Choisissez une instance
Généré automatiquement (pas de téléverseur trouvé)
- Activer la vidéo miniaturisée sur l\'écran de verrouillage
- En utilisant le lecteur audio, la miniature de la vidéo sera affichée sur l\'écran de verrouillage
+ Afficher la miniature de la vidéo sur l\'écran de verrouillage
+ La miniature de la vidéo sera affichée sur l\'écran de verrouillage en utilisant le lecteur audio
Effacer l\'historique de téléchargement
Supprimer les fichiers téléchargés
%1$s téléchargements supprimés
@@ -543,4 +543,10 @@
Prédéfini par le système
Appuyez sur « Terminé » une fois résolu
Terminé
+ En direct
+ Vidéos
+
+ - %s secondes
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-he/strings.xml b/app/src/main/res/values-he/strings.xml
index e0567359b..0adfd72be 100644
--- a/app/src/main/res/values-he/strings.xml
+++ b/app/src/main/res/values-he/strings.xml
@@ -167,10 +167,10 @@
אין סרטונים
- - סרטון
- - סרטונים
- - סרטונים
- - סרטונים
+ - סרטון %s
+ - %s סרטונים
+ - %s סרטונים
+ - %s סרטונים
התחלה
השהיה
@@ -473,10 +473,10 @@
יש להשבית כדי להפסיק הסתרת תגובות
ניגון אוטומטי
- - תגובות
-
-
-
+ - תגובה %s
+ - %s תגובות
+ - %s תגובות
+ - %s תגובות
אין תגובות
לא ניתן לטעון תגובות
@@ -555,4 +555,11 @@
בררת המחדל של המערכת
יש ללחוץ על „סיום” לאחר הפתירה
סיום
+ סרטונים
+
+ - %s שניות
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml
index 59678be19..40a4e65a9 100644
--- a/app/src/main/res/values-in/strings.xml
+++ b/app/src/main/res/values-in/strings.xml
@@ -462,7 +462,7 @@
Nonaktifkan untuk menyembunyikan komentar
Otomatis putar
- - Komentar
+ - %s komentar
Tidak ada komentar
Tidak bisa memuat komentar
@@ -498,7 +498,7 @@
Hapus semua posisi pemutaran\?
Ubah folder unduhan
- - Video
+ - %s video
Aktif/Nonaktifkan layanan, saat ini aktif:
Tidak ada yang menonton
@@ -537,4 +537,8 @@
Selesai
Durasi maju/mundur cepat
Tekan \"Selesai\" saat selesai
+ Video
+
+ - %s detik
+
\ No newline at end of file
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index eef99d93f..2607ab210 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -2,7 +2,7 @@
%1$ visualizzazioni
Pubblicato il %1$s
- Nessun lettore multimediale trovato. Vuoi installare VLC\?
+ Nessun lettore multimediale trovato. Installare VLC\?
Installa
Annulla
Apri nel browser
@@ -19,7 +19,7 @@
Scegli la cartella per i video scaricati
Risoluzione Predefinita
Riproduci con Kodi
- L\'applicazione Kore non è stata trovata. Installarla\?
+ Installare l\'app Kore\?
Mostra l\'opzione \"Riproduci con Kodi\"
Mostra l\'opzione per riprodurre i video tramite Kodi
Audio
@@ -61,27 +61,27 @@
I contenuti in diretta non sono al momento supportati
Contenuti
Contenuti Vietati ai Minori
- Mostra video riservati a un pubblico maggiorenne. Si possono abilitare dalle Impostazioni.
- Tocca Cerca per iniziare
+ Mostra video riservati a un pubblico maggiorenne. Si possono abilitare nelle Impostazioni.
+ Tocca \"Cerca\" per iniziare
Riproduzione Automatica
Riproduci i video quando NewPipe viene aperto da un\'altra app
- IN DIRETTA
+ Diretta
Impossibile analizzare completamente il sito web
Impossibile ottenere alcun flusso
Spiacenti, non sarebbe dovuto succedere.
Segnala l\'errore via e-mail
Spiacenti, si sono verificati degli errori.
- SEGNALA
+ Segnala
Info:
Cosa è successo:
Il tuo commento (in inglese):
Dettagli:
- Segnala un errore
+ Segnala Errore
Segnalazione dell\'utente
Video
Audio
Riprova
- È stato negato il permesso di accesso all\'archiviazione di massa
+ Consentire l\'accesso all\'archiviazione
Download
Download
Segnalazione Errori
@@ -118,15 +118,15 @@
Sì
Più tardi
Apri in modalità Popup
- Modalità Popup di NewPipe
+ Modalità Popup
Riproduzione in modalità Popup
Disattivato
- L\'audio potrebbe non essere disponibile per ALCUNE risoluzioni
+ L\'audio potrebbe non essere disponibile per alcune risoluzioni
In Sottofondo
Popup
Risoluzione Predefinita Popup
Mostra Altre Risoluzioni
- Solo alcuni dispositivi supportano la riproduzione video in 2K e 4K
+ Solo alcuni dispositivi possono riprodurre video 2K/4K
Formato Video Predefinito
Ricorda Dimensione e Posizione Popup
Ricorda dimensione e posizione della finestra Popup
@@ -170,7 +170,7 @@
Cronologia Visualizzazioni
Salva la cronologia dei video visualizzati
Riprendi Riproduzione
- Continua a riprodurre dopo le interruzioni (es. chiamate)
+ Continua a riprodurre dopo le interruzioni (es. telefonate)
Scarica
Caratteri Ammessi per i Nomi dei File
I caratteri non validi vengono sostituiti con
@@ -225,7 +225,7 @@
Top 50
New & hot
Mostra Suggerimento \"Tieni Premuto per Accocodare\"
- Nella pagina dei dettagli del video, mostra un suggerimento alla pressione dei pulsanti per la riproduzione Popup o in Sottofondo
+ Nei \"Dettagli\" dei video, mostra suggerimento alla pressione dei pulsanti per la riproduzione Popup o in Sottofondo
Accoda in Sottofondo
Accodato in Popup
Riproduci tutto
@@ -242,12 +242,12 @@
Accoda in Sottofondo
Accoda in Popup
Inizia la riproduzione qui
- Avvia riproduzione in sottofondo
- Avvia subito in Popup
+ Avvia in Sottofondo
+ Avvia in Popup
Dona
Sito
Visita il sito di NewPipe per informazioni e novità.
- 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è.
+ NewPipe è sviluppato da volontari che impiegano il loro tempo libero per offrire agli utenti un\'esperienza migliore. Restituisci il favore, aiutandoli a rendere NewPipe ancora più piacevole, mentre si gustano una tazza di caffè.
Restituisci
Paese Predefinito per Contenuti
Cambia orientamento
@@ -297,7 +297,7 @@
Elimina
Rinomina
Nome
- Aggiunti alla playlist
+ Aggiungi a Playlist
Imposta come Copertina della Playlist
Segnalibri playlist
Rimuovi segnalibro
@@ -313,14 +313,14 @@
A breve qualcosa apparirà qui ;D
Debug
Generato automaticamente
- Abilita LeakCanary
+ LeakCanary
Il monitoraggio delle perdite di memoria potrebbe causare la mancata risposta dell\'applicazione durante il dumping dell\'heap
Segnala Errori \"Out-of-lifecycle\"
Forza la segnalazione di eccezioni Rx non consegnabili al di fuori del ciclo di vita dell\'attività dopo la chiusura
Usa Ricerca Rapida (Imprecisa)
Consente al lettore multimediale di spostarsi più velocemente, ma con precisione ridotta
Accoda Automaticamente l\'Elemento Successivo
- Accoda un contenuto consigliato quando è in corso la riproduzione dell\'ultimo elemento, in una coda non ripetitiva
+ Riproduzione continua (non ripetititva) quando si accoda un contenuto consigliato
File
Nessuna cartella
Nessun file o cartella che contiene sorgenti
@@ -381,8 +381,8 @@
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.
Vuoi anche importare le impostazioni?
Informativa sulla Privacy
- 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.
+ Il progetto NewPipe tiene molto alla tua privacy. Perciò, l\'app non raccoglie alcun dato senza il tuo consenso.
+\nL\'informativa sulla privacy spiega nel dettaglio quali dati vengono trattati e memorizzati durante l\'invio di segnalazioni per arresti anomali.
Leggi l\'informativa sulla privacy
Per rispettare il regolamento europeo sulla protezione dei dati (GDPR), attiriamo la vostra attenzione riguardo l\'informativa sulla privacy di NewPipe. Si prega di leggerla attentamente.
\nDevi accettarla per inviarci il bug report.
@@ -406,18 +406,18 @@
Nuova scheda
Scegli scheda
Movimenti Controllo Volume
- Utilizza i movimenti per controllare il volume del riproduttore
+ Utilizza i movimenti per controllare il volume del lettore multimediale
Movimenti Controllo Luminosità
- Utilizza i movimenti per controllare la luminosità del riproduttore
+ Utilizza i movimenti per controllare la luminosità del lettore multimediale
Aggiornamenti
File eliminato
Notifiche di aggiornamenti dell\'applicazione
Notifiche per una nuova versione di NewPipe
Archiviazione esterna non disponibile
Impossibile scaricare sulla scheda SD esterna. Ripristinare la cartella dei download\?
- Utilizzando le schede predefinite, c\'è stato un errore durante la lettura delle schede salvate
+ Impossibile leggere le schede salvate, verranno usate quelle predefinite
Ripristina predefiniti
- Davvero ripristinare i predefiniti\?
+ Ripristinare valori predefiniti\?
Contatore degli iscritti non disponibile
Schede mostrate nella pagina principale
Selezione
@@ -449,7 +449,7 @@
Impossibile creare il file
Impossibile creare la cartella di destinazione
Permesso negato dal sistema
- Connessione sicura fallita
+ Impossibile stabilire una connessione sicura
Impossibile trovare il server
Impossibile connettersi al server
Il server non invia dati
@@ -466,11 +466,11 @@
Conferenze
Connesione finita
Mostra Commenti
- Disattiva per non visualizzare i commenti
+ Disattiva per nascondere i commenti
Riproduzione Automatica
- - Commenti
-
+ - %s commento
+ - %s commenti
Nessun commento
Impossibile caricare i commenti
@@ -498,7 +498,7 @@
Limita Coda Download
Ogni volta verrà chiesta la destinazione dei file.
\nScegli SAF se vuoi scaricare su una scheda SD esterna
- Lo Storage Access Framework consente di scaricare su una scheda SD esterna.
+ \"Storage Access Framework\" consente di salvare file su una memoria esterna.
\nNota: alcuni dispositivi non sono compatibili
Elimina posizioni di riproduzione
Elimina tutte le posizioni di riproduzione
@@ -520,7 +520,7 @@
Durata Avanzamento e Riavvolgimento Rapidi
Istanze PeerTube
Seleziona le istanze PeerTube preferite
- Trova le istanze più adatte a te su %s
+ Trova altre istanze su %s
Aggiungi Istanza
Inserisci URL istanza
Impossibile convalidare l\'istanza
@@ -533,8 +533,8 @@
recupero
Impossibile recuperare questo download
Scegli un\'Istanza
- Abilita Copertine sulla Schermata di Blocco
- Durante la riproduzione in sottofondo, verrà mostrata la copertina del video sulla schermata di blocco
+ Copertina sulla Schermata di Blocco
+ La copertina del video verrà mostrata nella schermata di blocco, durante la riproduzione in sottofondo.
Svuota Cronologia Download
Elimina File Scaricati
%1$s download eliminati
@@ -543,4 +543,9 @@
Predefinita di Sistema
Premere \"Fatto\" quando risolto
Fatto
+ Video
+
+ - %s secondi
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-ku/strings.xml b/app/src/main/res/values-ku/strings.xml
index 5c4506365..967a8a795 100644
--- a/app/src/main/res/values-ku/strings.xml
+++ b/app/src/main/res/values-ku/strings.xml
@@ -545,4 +545,9 @@
بنەڕەتی سیستەم
گرتە بکە لەسەر ”تەواو” کاتێ کە چارەسەرکرا
تەواو
+ ڤیدیۆکان
+
+ - %s چرکە
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml
index 9757df2ad..dd2a9fbd2 100644
--- a/app/src/main/res/values-nb-rNO/strings.xml
+++ b/app/src/main/res/values-nb-rNO/strings.xml
@@ -497,7 +497,7 @@
Du vil bli spurt om hvor hver nedlasting skal plasseres.
\nSkru på SAF hvis du vil laste ned til eksternt SD-kort
Bruk SAF
- Lagringstilgangsrammeverk (SAF) tillater nedlastinger til eksternt SD-kort.
+ \"Lagringstilgangsrammeverk\" (SAF) tillater nedlasting til eksternt SD-kort.
\nMerk: Noen enheter er ikke kompatible
Slett avspillingsposisjoner
Sletter alle avspillingsposisjoner
@@ -542,4 +542,9 @@
Systemforvalg
Trykk \"Ferdig\" når den er løst
Ferdig
+ Videoer
+
+ - %s sekunder
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml
index 1cd1391a0..9bde969cb 100644
--- a/app/src/main/res/values-nl/strings.xml
+++ b/app/src/main/res/values-nl/strings.xml
@@ -2,7 +2,7 @@
%1$s keer bekeken
Gepubliceerd op %1$s
- Geen speler met streamondersteuning gevonden. Wil je VLC installeren?
+ Geen speler met streamondersteuning gevonden. VLC installeren\?
Installeren
Annuleren
Openen in browser
@@ -16,7 +16,7 @@
draaiing
Downloadlocatie voor video\'s
Locatie om gedownloade video\'s in op te slaan
- Voer downloadlocatie in voor video\'s
+ Kies de downloadlocatie voor video\'s
Standaardresolutie
Afspelen met Kodi
Kore-app niet gevonden. Installeren?
@@ -38,7 +38,7 @@
Vind-ik-niet-leuks
Downloadfolder voor audio
Gedownloade muziek wordt hier opgeslagen
- Voer downloadlocatie voor audiobestanden in
+ Kies de downloadlocatie voor audiobestanden
Thema
Donker
Licht
@@ -75,7 +75,7 @@
Video
Geluid
Opnieuw proberen
- Druk op zoeken om te beginnen
+ Druk op \"zoeken\" om te beginnen
Automatisch afspelen
Speelt video’s af als NewPipe vanuit een andere app wordt geopend
LIVE
@@ -120,13 +120,13 @@
B
Deze machtiging is vereist om te
\nopenen in pop-upmodus
- NewPipe-pop-upmodus
+ Pop-up-modus
Speelt af in pop-upmodus
Standaard videoformaat
Uitgeschakeld
Standaardresolutie van pop-up
Hogere resoluties tonen
- 2K-/4K-video\'s worden slechts op sommige apparaten ondersteund
+ Slechts enkele toestellen kunnen 2K-/4K-video\'s afspelen
Achtergrond
Pop-up
Filter
@@ -136,7 +136,7 @@
Onthoud laatste grootte en positie van pop-up
Pop-up
Bezig met wijzigen van grootte
- Verwijdert geluid bij SOMMIGE resoluties
+ Verwijdert geluid bij sommige resoluties
Zoeksuggesties
Toon suggesties bij zoeken
Gebaarbesturing
diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml
index 93bb2cd5c..1739b0670 100644
--- a/app/src/main/res/values-pl/strings.xml
+++ b/app/src/main/res/values-pl/strings.xml
@@ -47,7 +47,7 @@
Odtwórz
Zawartość
Treści z ograniczeniem wiekowym
- Pokaż wideo z ograniczeniami wiekowymi. Dopuszczenie takiego materiału jest możliwe z poziomu Ustawienia.
+ Pokaż wideo z ograniczeniami wiekowymi. Przyszłe zmiany są możliwe z poziomu ustawień.
Na żywo
Pobrane
Pobrane
@@ -113,7 +113,7 @@
Tło
Domyślna rozdzielczość dla trybu okienkowego
Pokaż wyższe rozdzielczości
- Tylko niektóre urządzenia obsługują odtwarzanie filmów 2K/4K
+ Tylko niektóre urządzenia mogą odtwarzać filmy 2K/4K
Domyślny format filmu
Czarny
Zapamiętaj rozmiar i pozycję trybu okienkowego
@@ -216,9 +216,9 @@
Brak filmów
- - %s Film
- - %s Filmy
- - %s Filmów
+ - %s film
+ - %s filmy
+ - %s filmów
Większość znaków specjalnych
Dotacja
@@ -471,9 +471,9 @@
Wyłącz, aby ukryć komentarze
Automatyczne odtwarzanie
- - Komentarze
-
-
+ - %s komentarz
+ - %s komentarze
+ - %s komentarzy
Brak komentarzy
Nie można załadować komentarzy
@@ -549,4 +549,10 @@
Domyślny systemu
Po rozwiązaniu naciśnij „Gotowe”
Gotowe
+ Filmy
+
+ - %s sekund
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index 04f73b7e4..98524db43 100644
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -7,7 +7,7 @@
Informações:
%1$s visualizações
Reproduzir
- Contém vídeo com restrição de idade. É possível permitir vídeos com essa restrição em Configurações > Conteúdo.
+ Mostrar vídeo com restrição de idade. É possível alterar esta opção no menu de configurações.
Vídeo
Reproduz um vídeo quando o NewPipe for aberto a partir de outro aplicativo
Reprodução automática
@@ -30,9 +30,9 @@
Baixar
Detalhes:
Não foi possível criar pasta de download \'%1$s\'
- Reportar erro por e-mail
+ Reportar este erro por e-mail
Relatório de erro
- RELATÓRIO
+ Relatório
Desculpe, ocorreram alguns erros.
OK
Erro
@@ -53,7 +53,7 @@
reCAPTCHA
Desafio reCAPTCHA
Desafio reCAPTCHA solicitado
- Reportar um erro
+ Reportar erro
Tentar novamente
Rotação
Idioma favorito de conteúdo
@@ -67,12 +67,12 @@
Mostrar \'Próximo\' e \'Relacionados\'
Desculpe, isto não deveria ter acontecido.
Iniciar
- Permissão para acessar armazenamento negada
+ Permita acesso ao armazenamento primeiramente
Tema
Publicado em %1$s
Link não suportado
pt
- AO VIVO
+ Ao vivo
Downloads
Downloads
Você quis dizer: %1$s\?
@@ -88,7 +88,7 @@
Escolha a pasta de download para vídeos
Os vídeos baixados serão salvos aqui
Pasta para vídeos baixados
- Aplicativo Kore não instalado. Instalar?
+ Instalar o aplicativo faltante Kore\?
Não foi possível interpretar completamente o site
Capa do vídeo
Transmissões ao vivo ainda não são suportadas
@@ -97,7 +97,7 @@
Threads
Link inválido ou internet indisponível
Selecione uma pasta de download posteriormente nas configurações
- Nenhum player de vídeo encontrado. Deseja instalar o VLC\?
+ Nenhum player de vídeo encontrado. Instalar o VLC\?
Não foi possível interpretar o site
Áudio
Reproduzir
@@ -127,7 +127,7 @@
B
Essa permissão é necessária para
abrir em modo popup
- Modo de popup NewPipe
+ Modo popup
Filtro
Atualizar
Limpar
@@ -137,7 +137,7 @@ abrir em modo popup
Lembra da última posição e o tamanho usado no popup
Popup
Redimensionando
- Remove o áudio em ALGUMAS resoluções
+ Remove o áudio em algumas resoluções
Controle por gestos do player
Use gestos para controlar o volume e o brilho do player
Sugestões de pesquisa
@@ -174,7 +174,7 @@ abrir em modo popup
Inscrições
Novidades
Retomar reprodução
- Ative para continuar reproduzindo depois de interrupções (por exemplo: ligações)
+ Continuar reproduzindo depois de interrupções (por exemplo: ligações)
Histórico de pesquisas
Armazena histórico de pesquisas feitas
Histórico de assistidos
@@ -246,7 +246,7 @@ abrir em modo popup
Iniciar a reprodução quando estiver em segundo plano
Reproduzir em novo popup
Doar
- NewPipe é desenvolvido por voluntários que usam seu tempo para trazer a melhor experiência para você. Retribua para ajudar os desenvolvedores a tornarem o NewPipe ainda melhor enquanto desfrutam uma xícara de café.
+ NewPipe é desenvolvido por voluntários que usam seu tempo livre para trazer a melhor experiência para você. Retribua para ajudar os desenvolvedores a tornarem o NewPipe ainda melhor enquanto desfrutam uma xícara de café.
Retribuir
Site oficial
Visite o site do NewPipe para mais informações e novidades.
@@ -311,7 +311,7 @@ abrir em modo popup
Zoom
Algo irá aparecer aqui em breve ;D
Gerado automaticamente
- Habilitar LeakCanary
+ LeakCanary
O monitoramento de vazamento de memória pode fazer com que o aplicativo fique sem responder ao despejar a pilha
Reportar erros fora do ciclo de vida
Forçar reportagem de exceções Rx não entregáveis ocorrendo fora do fragmento ou ciclo de vida da atividade após o descarte
@@ -424,7 +424,7 @@ abrir em modo popup
Notificações para nova versão do NewPipe
Armazenamento externo indisponível
Não foi possível baixar para o cartão SD externo. Redefinir a pasta de download\?
- Usando abas padrões, erro ao ler abas salvas
+ Não foi possível carregar as abas salvas, carregando então as abas padrão
Restaurar padrões
Deseja restaurar os padrões\?
Número de inscritos indisponível
@@ -458,7 +458,7 @@ abrir em modo popup
O arquivo não pode ser criado
Não foi possível criar a pasta de destino
Permissão negada pelo sistema
- Falha na conexão segura
+ Não foi possível estabelecer uma conexão segura
Não foi possível encontrar o servidor
Não foi possível conectar ao servidor
O servidor não envia dados
@@ -476,7 +476,7 @@ abrir em modo popup
Desative para ocultar comentários
Reprodução automática
- - Comentário
+ - %s comentários
- Comentários
Sem comentários
@@ -528,7 +528,7 @@ abrir em modo popup
Duração do avançar/retroceder rápido
Instâncias PeerTube
Selecione instâncias PeerTube favoritas
- Encontre instâncias PeerTube em %s
+ Encontre instâncias que você gosta em %s
Adicionar instância
Insira o link aqui
Não foi possível acessá-la
@@ -541,8 +541,8 @@ abrir em modo popup
recuperando
Não foi possível recuperar o download
Escolha uma instância
- Ativar capa do vídeo na tela de bloqueio
- Mostra capa do vídeo na tela de bloqueio ao usar player em segundo plano
+ Capa do vídeo na tela de bloqueio
+ A capa do vídeo é mostrada na tela de bloqueio ao usar player em segundo plano
Limpar histórico de downloads
Excluir arquivos baixados
%1$s arquivos excluídos
@@ -551,4 +551,9 @@ abrir em modo popup
Padrão do sistema
Toque em \"Feito\" ao resolver
Feito
+ Vídeos
+
+ - %s segundos
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml
index e304e862d..d69ad016e 100644
--- a/app/src/main/res/values-ro/strings.xml
+++ b/app/src/main/res/values-ro/strings.xml
@@ -2,7 +2,7 @@
%1$s vizionări
Încărcat pe %1$s
- Niciun player pentru streaming găsit. Doriți să instalați VLC?
+ Niciun player pentru streaming găsit. Instalați VLC\?
Instalare
Anulare
Deschidere în browser
@@ -18,10 +18,10 @@
Folosește un player audio extern
Locația videoclipurilor descărcate
Videoclipurile descărcate vor fi salvate aici
- Introduceți locația unde se vor descărca videoclipurile
+ Alegeți locația unde se vor descărca videoclipurile
Directorul audio-ului descărcat
Locul în care se vor descărca fișierele audio
- Introduceți locația în care se va descărca fişierele audio
+ Alegeți locația în care se vor descărca fişierele audio
Rezoluție implicită
Redați folosind Kodi
Aplicația Kore nu a fost găsită. Doriți să o instalați?
@@ -45,7 +45,7 @@
Redați
Conținut
Conținut restricționat în funcție de vârstă
- Arată videoclipul restricționat în funcție de vârstă. Permiterea vizionării este posibilă din Setări.
+ Afișează videoclipuri restricționate în funcție de vârstă. Permiterea vizionării este posibilă din Setări.
Eroare
Eroare de rețea
Nu s-au putut încărca toate thumbnail-urile
@@ -65,7 +65,7 @@
Apăsați căutare pentru a începe
Redare automată
Redă un videoclip atunci când NewPipe este deschis din altă aplicație
- În direct
+ Direct
Descărcări
Descărcări
Raport de erori
@@ -109,7 +109,7 @@ pentru a deschide în mod pop-up
ReCAPTCHA
Provocare reCAPTCHA
reCAPTCHA nouă cerută
- NewPipe mod pop-up
+ Mod pop-up
"Rezoluție pop-up inițială "
Afișează rezoluții mai mari
Doar anumite dispozitive suportă redarea videoclipurilor 2K/4K
@@ -127,7 +127,7 @@ pentru a deschide în mod pop-up
K
mil.
mld.
- Elimina sunetul la anumite rezolutii.
+ Sunetul poate lipsi la unele rezoluții
Fundal
Pop-up
Reține dimensiunea și poziția pop-up-ului
@@ -233,12 +233,12 @@ pentru a deschide în mod pop-up
Niciun player pentru streaming găsit. (Totuși, puteți instala VLC).
Descărcați fișierul de streaming
Arată informații
- Marcaje lista de vizionare
+ Playlist-uri salvate
Adaugă La
Folosește parcurgerea inexactă
Derularea inexactă permite player-ului să fie poziţionat mai rapid dar cu o precizie mai redusă
Încarcă miniaturi
- Dezactivați pentru a opri încărcarea miniaturilor, reduce utilizarea datelor și a memoriei. Schimbarea va curăța tot cache-ul din memorie și de pe disc.
+ Dezactivați pentru a preveni încărcarea thumbnail-urilor şi pentru a economisi consumul de date și de memorie. Schimbarea acestei opțiuni va curăța tot cache-ul din memorie și de pe disc.
Cache-ul de imagini a fost curățat
Șterge cache-ul pentru metadata
Șterge cache-ul pentru datele de pagini web
@@ -280,8 +280,8 @@ pentru a deschide în mod pop-up
"Vizitaţi site-ul nostru pentru mai multe informaţi şi ultimele ştiri despre NewPipe."
Doriţi să ştergeţi acest element din istoricul de vizionare ?
Sunteţi sigur că vreţi să ştergeţi toate elementele din istoric ?
- Ultimul cântec ascultat
- "Cel mai ascultat "
+ Ultimele vizionări
+ Cele mai multe vizionări
Exportat
Importat
Nici-un fişier ZIP valid
@@ -313,7 +313,7 @@ pentru a deschide în mod pop-up
Ştergeţi toate elementele
Ignoraţi
"Redenumiţi "
- Nu este instalată nicio aplicație pentru a reda acest fișier
+ Nicio aplicație instalată nu poate reda acest fişier
Donaţi
Ceva va apărea aici în curând ;D
De asemenea, doriți să importați setări?
@@ -377,14 +377,14 @@ pentru a deschide în mod pop-up
Umplere
Mărire
Import/export
- Subtitre
- Modificați scala textului și stilurile de fundal. Necesită repornirea aplicației.
+ Subtitrări
+ Modificați mărimea textului și stilurile de fundal. Necesită repornirea aplicației.
NewPipe este un software copyleft gratuit: îl puteți utiliza, studia, distribui și îl puteți îmbunătăți după bunul plac. În mod special, îl puteți redistribui și/sau modifica în condițiile Licenței publice generale GNU, publicată de Free Software Foundation, fie versiunea 3 a Licenței, fie (la opțiunea dvs.) orice versiune ulterioară.
Politica de confidențialitate a NewPipe
Proiectul NewPipe ia confidențialitatea în serios. Prin urmare, aplicația nu colectează date fără consimțământul dumneavoastră.
\nPolitica de confidențialitate a NewPipe explică în detaliu ce date sunt trimise și stocate atunci când trimiteți un raport de avarie.
Citiți politica de confidențialitate
- Se folosesc filele implicite, eroare la citirea filelor salvate
+ Nu se pot citi filele salvate, se folosesc filele implicite
Restabilire valori implicite
Doriți să restaurați setările implicite\?
Numărul abonaților nu este disponibil
@@ -409,5 +409,8 @@ pentru a deschide în mod pop-up
Pozițiile de redare șterse.
Fișier mutat sau șters
Șterge pozițiile de redare memorate
- Schimbați folderul de descărcări pentru ca setările să aiba efect
+ Schimbați folderul de descărcări pentru ca setările să aibă efect
+ Salvează playlist-ul
+ Activează LeakCanary
+ Limitați rezoluția când folosiți date mobile
\ No newline at end of file
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index bc1720975..7c7965f80 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -19,7 +19,7 @@
Введите путь к папке для скачивания видео
Разрешение по умолчанию
Воспроизвести в Kodi
- Приложение Kore не найдено. Установить его?
+ Приложение Kore не найдено, установить\?
\"Воспроизвести в Kodi\"
Показать опцию воспроизведения через медиацентр Kodi
Аудио
@@ -48,7 +48,7 @@
Использовать Tor
Папка для скачанного аудио
Папка для хранения скачанного аудио
- Введите путь к папке для скачанного аудио
+ Введите путь к папке для скачивания аудио
Начните с поиска
Подождите…
Файл уже существует
@@ -88,7 +88,7 @@
Простите, это не должно было произойти.
Отправить отчёт по e-mail
Простите, произошли ошибки.
- ОТЧЁТ
+ Отчёт
Информация:
Что произошло:
Подробности:
@@ -130,7 +130,7 @@
Позже
Отключено
Изменение размера
- Убирает звук в НЕКОТОРЫХ разрешениях
+ Убирает звук в некоторых разрешениях
" млн"
" млрд"
" тыс."
@@ -331,7 +331,7 @@
Заполнить
Приблизить
Создано автоматически
- Включить LeakCanary
+ LeakCanary
Мониторинг утечки памяти может привести к зависанию приложения
Сообщать об ошибках жизненного цикла
Принудительно сообщать о недоставляемых Rx-исключениях вне фрагмента или жизненного цикла после удаления
@@ -478,9 +478,9 @@
Отключите, чтобы скрыть комментарии
Автовоспроизведение
- - комментарий
- - комментария
- - комментариев
+ - %s комментарий
+ - %s комментария
+ - %s комментариев
Нет комментариев
Не удалось загрузить комментарии
@@ -548,4 +548,11 @@
Как в системе
По завершении нажмите Готово
Готово
+ Трансляция
+ Видео
+
+ - %s секунд
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml
index 0848d9b7a..68aeca87c 100644
--- a/app/src/main/res/values-sv/strings.xml
+++ b/app/src/main/res/values-sv/strings.xml
@@ -1,6 +1,6 @@
- Tryck på sök för att komma igång
+ Tryck på \"Sök\" för att komma igång
Publicerad den %1$s
Ingen strömspelare hittades. Vill du installera VLC?
Installera
diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml
index 6d416c901..7d53054d2 100644
--- a/app/src/main/res/values-tr/strings.xml
+++ b/app/src/main/res/values-tr/strings.xml
@@ -358,7 +358,7 @@
Hız
Öntanımlı
Ses yüksekliği
- Bağlantısız (bozulmaya neden olabilir)
+ Ayır (bozulmaya neden olabilir)
İndirilebilecek akış yok
Yeğlenen \'aç\' eylemi
İçerik açılırken öntanımlı eylem — %s
@@ -464,8 +464,8 @@
Yorumları gizlemek için kapatın
Otomatik oynat
- - Yorum
- - Yorumlar
+ - %s yorum
+ - %s yorum
Yorum yok
Yorumlar yüklenemedi
@@ -543,4 +543,9 @@
Sistem öntanımlısı
Çözüldüğünde \"Bitti\" butonuna basın
Bitti
+ Videolar
+
+ - %s saniye
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-v28/styles.xml b/app/src/main/res/values-v28/styles.xml
new file mode 100644
index 000000000..92c2d9214
--- /dev/null
+++ b/app/src/main/res/values-v28/styles.xml
@@ -0,0 +1,8 @@
+
+
+
+
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index a8cb87458..104266f64 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -354,7 +354,7 @@
播放速度控制
節奏
音高
- 解除連結(可能導致失真)
+ 解除掛鉤(可能導致失真)
預設
偏好的「開啟」動作
開啟內容時的預設動作 — %s
@@ -462,7 +462,8 @@
關閉以隱藏留言
自動播放
- - 留言
+ - %s 條留言
+
沒有留言
無法載入留言
@@ -539,4 +540,9 @@
系統預設值
解決後請按「完成」
完成
+ 影片
+
+ - %s秒
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 42b4b77c5..4fd1ba42c 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,6 +1,5 @@
- NewPipe
Tap \"Search\" to get started
%1$s views
Published on %1$s
@@ -71,7 +70,7 @@
Remember popup size and position
Remember last size and position of popup
Use fast inexact seek
- Inexact seek allows the player to seek to positions faster with reduced precision
+ Inexact seek allows the player to seek to positions faster with reduced precision. Seeking for 5, 15 or 25 seconds doesn\'t work with this.
Fast-forward/-rewind seek duration
Load thumbnails
Show comments
@@ -448,6 +447,8 @@
Rename
Name
Add To Playlist
+ Mute
+ Unmute
Set as Playlist Thumbnail
Bookmark Playlist
Remove Bookmark
@@ -588,11 +589,12 @@
You will be asked where to save each download
You will be asked where to save each download.\nChoose SAF if you want to download to an external SD card
Use SAF
- The \'Storage Access Framework\' allows downloads to an external SD card.\nNote: some devices are incompatible
+ The \'Storage Access Framework\' allows downloads to an external SD card.\nSome devices are incompatible
Choose an instance
App language
System default
%s seconds
+ Due to ExoPlayer constraints the seek duration was set to %d seconds
- %s seconds
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 8047ef7f4..633003092 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -247,4 +247,6 @@
+
+
diff --git a/app/src/main/res/xml/appearance_settings.xml b/app/src/main/res/xml/appearance_settings.xml
index b5f222130..31be267af 100644
--- a/app/src/main/res/xml/appearance_settings.xml
+++ b/app/src/main/res/xml/appearance_settings.xml
@@ -13,12 +13,6 @@
android:summary="%s"
android:title="@string/theme_title"/>
-
-
-
-
diff --git a/app/src/main/res/xml/content_settings.xml b/app/src/main/res/xml/content_settings.xml
index 8fe8a66af..fd87de9ef 100644
--- a/app/src/main/res/xml/content_settings.xml
+++ b/app/src/main/res/xml/content_settings.xml
@@ -31,6 +31,13 @@
android:summary="%s"
android:title="@string/default_content_country_title"/>
+
+
+
+