Merge pull request #1 from TeamNewPipe/dev

Up to date
This commit is contained in:
Somethingweirdhere 2018-06-05 19:35:47 +02:00 committed by GitHub
commit ee347e3081
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
53 changed files with 1197 additions and 508 deletions

View File

@ -15,6 +15,8 @@ Do not report crashes in the GitHub issue tracker. NewPipe has an automated cras
* If you are an Android/Java developer, you are always welcome to fix/implement an issue/a feature yourself. PRs welcome!
* We use English for development. Issues in other languages will be closed and ignored.
* Please only add *one* issue at a time. Do not put multiple issues into one thread.
* When reporting a bug please give us a context, and a description how to reproduce it.
* Issues that only contain a generated bug report, but no describtion might be closed.
## Bug Fixing
* If you want to help NewPipe to become free of bugs (this is our utopic goal for NewPipe), you can send us an email to tnp@newpipe.schabi.org to let me know that you intend to help. We'll send you further instructions. You may, on request, register at our [Sentry](https://sentry.schabi.org) instance (see section "Crash reporting" for more information.

View File

@ -8,8 +8,8 @@ android {
applicationId "org.schabi.newpipe"
minSdkVersion 15
targetSdkVersion 27
versionCode 62
versionName "0.13.3"
versionCode 64
versionName "0.13.5"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
@ -54,7 +54,7 @@ dependencies {
exclude module: 'support-annotations'
}
implementation 'com.github.TeamNewPipe:NewPipeExtractor:0501a2f543'
implementation 'com.github.TeamNewPipe:NewPipeExtractor:bf1c771'
testImplementation 'junit:junit:4.12'
testImplementation 'org.mockito:mockito-core:1.10.19'

View File

@ -42,3 +42,9 @@
-dontwarn javax.annotation.**
# A resource is loaded with a relative path so the package of this class must be preserved.
-keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
!static !transient <fields>;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
}

View File

@ -128,47 +128,31 @@ public class AboutActivity extends AppCompatActivity {
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_about, container, false);
Context context = this.getContext();
TextView version = rootView.findViewById(R.id.app_version);
version.setText(BuildConfig.VERSION_NAME);
View githubLink = rootView.findViewById(R.id.github_link);
githubLink.setOnClickListener(new OnGithubLinkClickListener());
githubLink.setOnClickListener(nv -> openWebsite(context.getString(R.string.github_url), context));
View donationLink = rootView.findViewById(R.id.donation_link);
donationLink.setOnClickListener(new OnDonationLinkClickListener());
donationLink.setOnClickListener(v -> openWebsite(context.getString(R.string.donation_url), context));
View websiteLink = rootView.findViewById(R.id.website_link);
websiteLink.setOnClickListener(new OnWebsiteLinkClickListener());
websiteLink.setOnClickListener(nv -> openWebsite(context.getString(R.string.website_url), context));
View privacyPolicyLink = rootView.findViewById(R.id.privacy_policy_link);
privacyPolicyLink.setOnClickListener(v -> openWebsite(context.getString(R.string.privacy_policy_url), context));
return rootView;
}
private static class OnGithubLinkClickListener implements View.OnClickListener {
@Override
public void onClick(final View view) {
final Context context = view.getContext();
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(context.getString(R.string.github_url)));
context.startActivity(intent);
}
private void openWebsite(String url, Context context) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
context.startActivity(intent);
}
private static class OnDonationLinkClickListener implements View.OnClickListener {
@Override
public void onClick(final View view) {
final Context context = view.getContext();
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(context.getString(R.string.donation_url)));
context.startActivity(intent);
}
}
private static class OnWebsiteLinkClickListener implements View.OnClickListener {
@Override
public void onClick(final View view) {
final Context context = view.getContext();
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(context.getString(R.string.website_url)));
context.startActivity(intent);
}
}
}

View File

@ -42,7 +42,7 @@ public class LicenseFragmentHelper extends AsyncTask<Object, Void, Integer> {
}
@Override
protected void onPostExecute(Integer result){
protected void onPostExecute(Integer result) {
Activity activity = getActivity();
if (activity == null) {
return;

View File

@ -54,7 +54,7 @@ import org.schabi.newpipe.extractor.InfoItem;
import org.schabi.newpipe.extractor.NewPipe;
import org.schabi.newpipe.extractor.exceptions.ContentNotAvailableException;
import org.schabi.newpipe.extractor.exceptions.ParsingException;
import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor;
import org.schabi.newpipe.extractor.services.youtube.YoutubeStreamExtractor;
import org.schabi.newpipe.extractor.stream.AudioStream;
import org.schabi.newpipe.extractor.stream.StreamInfo;
import org.schabi.newpipe.extractor.stream.StreamInfoItem;

View File

@ -77,8 +77,7 @@ public class KioskFragment extends BaseListInfoFragment<KioskInfo> {
UrlIdHandler kioskTypeUrlIdHandler = service.getKioskList()
.getUrlIdHandlerByType(kioskId);
instance.setInitialData(serviceId,
kioskTypeUrlIdHandler.setId(kioskId).getUrl(),
kioskId);
kioskTypeUrlIdHandler.getUrl(kioskId), kioskId);
instance.kioskId = kioskId;
return instance;
}

View File

@ -271,6 +271,7 @@ public abstract class BasePlayer implements
if (audioReactor != null) audioReactor.dispose();
if (playbackManager != null) playbackManager.dispose();
if (databaseUpdateReactor != null) databaseUpdateReactor.dispose();
if (mediaSessionManager != null) mediaSessionManager.dispose();
if (playQueueAdapter != null) {
playQueueAdapter.unsetSelectedListener();

View File

@ -119,6 +119,10 @@ public final class MainVideoPlayer extends AppCompatActivity
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) getWindow().setStatusBarColor(Color.BLACK);
setVolumeControlStream(AudioManager.STREAM_MUSIC);
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = PlayerHelper.getScreenBrightness(getApplicationContext());
getWindow().setAttributes(lp);
hideSystemUi();
setContentView(R.layout.activity_main_player);
playerImpl = new VideoPlayerImpl(this);
@ -205,6 +209,9 @@ public final class MainVideoPlayer extends AppCompatActivity
if (DEBUG) Log.d(TAG, "onStop() called");
super.onStop();
playerImpl.destroy();
PlayerHelper.setScreenBrightness(getApplicationContext(),
getWindow().getAttributes().screenBrightness);
}
/*//////////////////////////////////////////////////////////////////////////
@ -647,7 +654,7 @@ public final class MainVideoPlayer extends AppCompatActivity
@Override
protected int getOverrideResolutionIndex(final List<VideoStream> sortedVideos,
final String playbackQuality) {
return ListHelper.getDefaultResolutionIndex(context, sortedVideos, playbackQuality);
return ListHelper.getResolutionIndex(context, sortedVideos, playbackQuality);
}
/*//////////////////////////////////////////////////////////////////////////
@ -884,7 +891,9 @@ public final class MainVideoPlayer extends AppCompatActivity
private final boolean isPlayerGestureEnabled = PlayerHelper.isPlayerGestureEnabled(getApplicationContext());
private final float stepsBrightness = 15, stepBrightness = (1f / stepsBrightness), minBrightness = .01f;
private float currentBrightness = .5f;
private float currentBrightness = getWindow().getAttributes().screenBrightness > 0
? getWindow().getAttributes().screenBrightness
: 0.5f;
private int currentVolume, maxVolume = playerImpl.getAudioReactor().getMaxVolume();
private final float stepsVolume = 15, stepVolume = (float) Math.ceil(maxVolume / stepsVolume), minVolume = 0;

View File

@ -517,7 +517,7 @@ public final class PopupVideoPlayer extends Service {
@Override
protected int getOverrideResolutionIndex(final List<VideoStream> sortedVideos,
final String playbackQuality) {
return ListHelper.getPopupDefaultResolutionIndex(context, sortedVideos, playbackQuality);
return ListHelper.getPopupResolutionIndex(context, sortedVideos, playbackQuality);
}
/*//////////////////////////////////////////////////////////////////////////

View File

@ -11,7 +11,6 @@ import android.view.KeyEvent;
import com.google.android.exoplayer2.Player;
import com.google.android.exoplayer2.ext.mediasession.MediaSessionConnector;
import org.schabi.newpipe.player.mediasession.DummyPlaybackPreparer;
import org.schabi.newpipe.player.mediasession.MediaSessionCallback;
import org.schabi.newpipe.player.mediasession.PlayQueueNavigator;
import org.schabi.newpipe.player.mediasession.PlayQueuePlaybackController;
@ -26,10 +25,12 @@ public class MediaSessionManager {
@NonNull final Player player,
@NonNull final MediaSessionCallback callback) {
this.mediaSession = new MediaSessionCompat(context, TAG);
this.mediaSession.setActive(true);
this.sessionConnector = new MediaSessionConnector(mediaSession,
new PlayQueuePlaybackController(callback));
this.sessionConnector.setQueueNavigator(new PlayQueueNavigator(mediaSession, callback));
this.sessionConnector.setPlayer(player, new DummyPlaybackPreparer());
this.sessionConnector.setPlayer(player, null);
}
@Nullable
@ -37,4 +38,11 @@ public class MediaSessionManager {
public KeyEvent handleMediaButtonIntent(final Intent intent) {
return MediaButtonReceiver.handleIntent(mediaSession, intent);
}
public void dispose() {
this.sessionConnector.setPlayer(null, null);
this.sessionConnector.setQueueNavigator(null);
this.mediaSession.setActive(false);
this.mediaSession.release();
}
}

View File

@ -9,9 +9,9 @@ import android.support.annotation.Nullable;
import android.view.accessibility.CaptioningManager;
import com.google.android.exoplayer2.SeekParameters;
import com.google.android.exoplayer2.text.CaptionStyleCompat;
import com.google.android.exoplayer2.trackselection.AdaptiveTrackSelection;
import com.google.android.exoplayer2.trackselection.TrackSelection;
import com.google.android.exoplayer2.text.CaptionStyleCompat;
import com.google.android.exoplayer2.ui.AspectRatioFrameLayout;
import com.google.android.exoplayer2.upstream.BandwidthMeter;
import com.google.android.exoplayer2.util.MimeTypes;
@ -37,6 +37,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import static com.google.android.exoplayer2.ui.AspectRatioFrameLayout.RESIZE_MODE_FILL;
import static com.google.android.exoplayer2.ui.AspectRatioFrameLayout.RESIZE_MODE_FIT;
@ -260,6 +261,16 @@ public class PlayerHelper {
return captioningManager.getFontScale();
}
public static float getScreenBrightness(@NonNull final Context context) {
//a value of less than 0, the default, means to use the preferred screen brightness
return getScreenBrightness(context, -1);
}
public static void setScreenBrightness(@NonNull final Context context, final float setScreenBrightness) {
setScreenBrightness(context, setScreenBrightness, System.currentTimeMillis());
}
////////////////////////////////////////////////////////////////////////////
// Private helpers
////////////////////////////////////////////////////////////////////////////
@ -292,4 +303,23 @@ public class PlayerHelper {
private static boolean isAutoQueueEnabled(@NonNull final Context context, final boolean b) {
return getPreferences(context).getBoolean(context.getString(R.string.auto_queue_key), b);
}
private static void setScreenBrightness(@NonNull final Context context, final float screenBrightness, final long timestamp) {
SharedPreferences.Editor editor = getPreferences(context).edit();
editor.putFloat(context.getString(R.string.screen_brightness_key), screenBrightness);
editor.putLong(context.getString(R.string.screen_brightness_timestamp_key), timestamp);
editor.apply();
}
private static float getScreenBrightness(@NonNull final Context context, final float screenBrightness) {
SharedPreferences sp = getPreferences(context);
long timestamp = sp.getLong(context.getString(R.string.screen_brightness_timestamp_key), 0);
// hypothesis: 4h covers a viewing block, eg evening. External lightning conditions will change in the next
// viewing block so we fall back to the default brightness
if ((System.currentTimeMillis() - timestamp) > TimeUnit.HOURS.toMillis(4)) {
return screenBrightness;
} else {
return sp.getFloat(context.getString(R.string.screen_brightness_key), screenBrightness);
}
}
}

View File

@ -1,45 +0,0 @@
package org.schabi.newpipe.player.mediasession;
import android.net.Uri;
import android.os.Bundle;
import android.os.ResultReceiver;
import com.google.android.exoplayer2.Player;
import com.google.android.exoplayer2.ext.mediasession.MediaSessionConnector;
public class DummyPlaybackPreparer implements MediaSessionConnector.PlaybackPreparer {
@Override
public long getSupportedPrepareActions() {
return 0;
}
@Override
public void onPrepare() {
}
@Override
public void onPrepareFromMediaId(String mediaId, Bundle extras) {
}
@Override
public void onPrepareFromSearch(String query, Bundle extras) {
}
@Override
public void onPrepareFromUri(Uri uri, Bundle extras) {
}
@Override
public String[] getCommands() {
return new String[0];
}
@Override
public void onCommand(Player player, String command, Bundle extras, ResultReceiver cb) {
}
}

View File

@ -13,5 +13,4 @@ public interface MediaSessionCallback {
void onPlay();
void onPause();
void onSetShuffle(final boolean isShuffled);
}

View File

@ -1,7 +1,5 @@
package org.schabi.newpipe.player.mediasession;
import android.support.v4.media.session.PlaybackStateCompat;
import com.google.android.exoplayer2.Player;
import com.google.android.exoplayer2.ext.mediasession.DefaultPlaybackController;
@ -22,10 +20,4 @@ public class PlayQueuePlaybackController extends DefaultPlaybackController {
public void onPause(Player player) {
callback.onPause();
}
@Override
public void onSetShuffleMode(Player player, int shuffleMode) {
callback.onSetShuffle(shuffleMode == PlaybackStateCompat.SHUFFLE_MODE_ALL
|| shuffleMode == PlaybackStateCompat.SHUFFLE_MODE_GROUP);
}
}

View File

@ -69,9 +69,4 @@ public class BasePlayerMediaSession implements MediaSessionCallback {
public void onPause() {
player.onPause();
}
@Override
public void onSetShuffle(boolean isShuffled) {
player.onShuffleModeEnabledChanged(isShuffled);
}
}

View File

@ -1,7 +1,9 @@
package org.schabi.newpipe.report;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color;
import android.net.Uri;
@ -33,10 +35,8 @@ import org.json.JSONArray;
import org.json.JSONObject;
import org.schabi.newpipe.ActivityCommunicator;
import org.schabi.newpipe.BuildConfig;
import org.schabi.newpipe.Downloader;
import org.schabi.newpipe.MainActivity;
import org.schabi.newpipe.R;
import org.schabi.newpipe.extractor.utils.Parser;
import org.schabi.newpipe.util.ThemeHelper;
import java.io.PrintWriter;
@ -44,9 +44,9 @@ import java.io.StringWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.TimeZone;
import java.util.Vector;
import java.util.concurrent.atomic.AtomicBoolean;
/*
* Created by Christian Schabesberger on 24.10.15.
@ -210,12 +210,31 @@ public class ErrorActivity extends AppCompatActivity {
currentTimeStamp = getCurrentTimeStamp();
reportButton.setOnClickListener((View v) -> {
Intent i = new Intent(Intent.ACTION_SENDTO);
i.setData(Uri.parse("mailto:" + ERROR_EMAIL_ADDRESS))
.putExtra(Intent.EXTRA_SUBJECT, ERROR_EMAIL_SUBJECT)
.putExtra(Intent.EXTRA_TEXT, buildJson());
Context context = this;
new AlertDialog.Builder(context)
.setIcon(android.R.drawable.ic_dialog_alert)
.setTitle(R.string.privacy_policy_title)
.setMessage(R.string.start_accept_privacy_policy)
.setCancelable(false)
.setNeutralButton(R.string.read_privacy_policy, (dialog, which) -> {
Intent webIntent = new Intent(Intent.ACTION_VIEW,
Uri.parse(context.getString(R.string.privacy_policy_url))
);
context.startActivity(webIntent);
})
.setPositiveButton(R.string.accept, (dialog, which) -> {
Intent i = new Intent(Intent.ACTION_SENDTO);
i.setData(Uri.parse("mailto:" + ERROR_EMAIL_ADDRESS))
.putExtra(Intent.EXTRA_SUBJECT, ERROR_EMAIL_SUBJECT)
.putExtra(Intent.EXTRA_TEXT, buildJson());
startActivity(Intent.createChooser(i, "Send Email"));
})
.setNegativeButton(R.string.decline, (dialog, which) -> {
// do nothing
})
.show();
startActivity(Intent.createChooser(i, "Send Email"));
});
// normal bugreport

View File

@ -39,7 +39,7 @@ import org.schabi.newpipe.extractor.kiosk.KioskInfo;
import org.schabi.newpipe.extractor.playlist.PlaylistInfo;
import org.schabi.newpipe.extractor.search.SearchEngine;
import org.schabi.newpipe.extractor.search.SearchResult;
import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor;
import org.schabi.newpipe.extractor.services.youtube.YoutubeStreamExtractor;
import org.schabi.newpipe.extractor.stream.StreamInfo;
import org.schabi.newpipe.report.ErrorActivity;
import org.schabi.newpipe.report.UserAction;

View File

@ -2,6 +2,7 @@ package org.schabi.newpipe.util;
import android.content.Context;
import android.content.SharedPreferences;
import android.net.ConnectivityManager;
import android.preference.PreferenceManager;
import android.support.annotation.StringRes;
@ -13,56 +14,38 @@ import org.schabi.newpipe.extractor.stream.VideoStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
@SuppressWarnings("WeakerAccess")
public final class ListHelper {
// Video format in order of quality. 0=lowest quality, n=highest quality
private static final List<MediaFormat> VIDEO_FORMAT_QUALITY_RANKING =
Arrays.asList(MediaFormat.v3GPP, MediaFormat.WEBM, MediaFormat.MPEG_4);
// Audio format in order of quality. 0=lowest quality, n=highest quality
private static final List<MediaFormat> AUDIO_FORMAT_QUALITY_RANKING =
Arrays.asList(MediaFormat.MP3, MediaFormat.WEBMA, MediaFormat.M4A);
// Audio format in order of efficiency. 0=most efficient, n=least efficient
private static final List<MediaFormat> AUDIO_FORMAT_EFFICIENCY_RANKING =
Arrays.asList(MediaFormat.WEBMA, MediaFormat.M4A, MediaFormat.MP3);
private static final List<String> HIGH_RESOLUTION_LIST = Arrays.asList("1440p", "2160p", "1440p60", "2160p60");
/**
* Return the index of the default stream in the list, based on the parameters
* defaultResolution and defaultFormat
*
* @return index of the default resolution&format
*/
public static int getDefaultResolutionIndex(String defaultResolution, String bestResolutionKey, MediaFormat defaultFormat, List<VideoStream> videoStreams) {
if (videoStreams == null || videoStreams.isEmpty()) return -1;
sortStreamList(videoStreams, false);
if (defaultResolution.equals(bestResolutionKey)) {
return 0;
}
int defaultStreamIndex = getDefaultStreamIndex(defaultResolution, defaultFormat, videoStreams);
if (defaultStreamIndex == -1 && defaultResolution.contains("p60")) {
defaultStreamIndex = getDefaultStreamIndex(defaultResolution.replace("p60", "p"), defaultFormat, videoStreams);
}
// this is actually an error,
// but maybe there is really no stream fitting to the default value.
if (defaultStreamIndex == -1) return 0;
return defaultStreamIndex;
}
/**
* @see #getDefaultResolutionIndex(String, String, MediaFormat, List)
*/
public static int getDefaultResolutionIndex(Context context, List<VideoStream> videoStreams) {
SharedPreferences defaultPreferences = PreferenceManager.getDefaultSharedPreferences(context);
if (defaultPreferences == null) return 0;
String defaultResolution = defaultPreferences.getString(context.getString(R.string.default_resolution_key), context.getString(R.string.default_resolution_value));
return getDefaultResolutionIndex(context, videoStreams, defaultResolution);
String defaultResolution = computeDefaultResolution(context,
R.string.default_resolution_key, R.string.default_resolution_value);
return getDefaultResolutionWithDefaultFormat(context, defaultResolution, videoStreams);
}
/**
* @see #getDefaultResolutionIndex(String, String, MediaFormat, List)
*/
public static int getDefaultResolutionIndex(Context context, List<VideoStream> videoStreams, String defaultResolution) {
public static int getResolutionIndex(Context context, List<VideoStream> videoStreams, String defaultResolution) {
return getDefaultResolutionWithDefaultFormat(context, defaultResolution, videoStreams);
}
@ -70,69 +53,29 @@ public final class ListHelper {
* @see #getDefaultResolutionIndex(String, String, MediaFormat, List)
*/
public static int getPopupDefaultResolutionIndex(Context context, List<VideoStream> videoStreams) {
SharedPreferences defaultPreferences = PreferenceManager.getDefaultSharedPreferences(context);
if (defaultPreferences == null) return 0;
String defaultResolution = defaultPreferences.getString(context.getString(R.string.default_popup_resolution_key), context.getString(R.string.default_popup_resolution_value));
return getPopupDefaultResolutionIndex(context, videoStreams, defaultResolution);
String defaultResolution = computeDefaultResolution(context,
R.string.default_popup_resolution_key, R.string.default_popup_resolution_value);
return getDefaultResolutionWithDefaultFormat(context, defaultResolution, videoStreams);
}
/**
* @see #getDefaultResolutionIndex(String, String, MediaFormat, List)
*/
public static int getPopupDefaultResolutionIndex(Context context, List<VideoStream> videoStreams, String defaultResolution) {
public static int getPopupResolutionIndex(Context context, List<VideoStream> videoStreams, String defaultResolution) {
return getDefaultResolutionWithDefaultFormat(context, defaultResolution, videoStreams);
}
public static int getDefaultAudioFormat(Context context, List<AudioStream> audioStreams) {
MediaFormat defaultFormat = getDefaultFormat(context, R.string.default_audio_format_key, R.string.default_audio_format_value);
return getHighestQualityAudioIndex(defaultFormat, audioStreams);
}
MediaFormat defaultFormat = getDefaultFormat(context, R.string.default_audio_format_key,
R.string.default_audio_format_value);
public static int getHighestQualityAudioIndex(List<AudioStream> audioStreams) {
if (audioStreams == null || audioStreams.isEmpty()) return -1;
int highestQualityIndex = 0;
if (audioStreams.size() > 1) for (int i = 1; i < audioStreams.size(); i++) {
AudioStream audioStream = audioStreams.get(i);
if (audioStream.getAverageBitrate() >= audioStreams.get(highestQualityIndex).getAverageBitrate()) highestQualityIndex = i;
// If the user has chosen to limit resolution to conserve mobile data
// usage then we should also limit our audio usage.
if (isLimitingDataUsage(context)) {
return getMostCompactAudioIndex(defaultFormat, audioStreams);
} else {
return getHighestQualityAudioIndex(defaultFormat, audioStreams);
}
return highestQualityIndex;
}
/**
* Get the audio from the list with the highest bitrate
*
* @param audioStreams list the audio streams
* @return audio with highest average bitrate
*/
public static AudioStream getHighestQualityAudio(List<AudioStream> audioStreams) {
if (audioStreams == null || audioStreams.isEmpty()) return null;
return audioStreams.get(getHighestQualityAudioIndex(audioStreams));
}
/**
* Get the audio from the list with the highest bitrate
*
* @param audioStreams list the audio streams
* @return index of the audio with the highest average bitrate of the default format
*/
public static int getHighestQualityAudioIndex(MediaFormat defaultFormat, List<AudioStream> audioStreams) {
if (audioStreams == null || audioStreams.isEmpty() || defaultFormat == null) return -1;
int highestQualityIndex = -1;
for (int i = 0; i < audioStreams.size(); i++) {
AudioStream audioStream = audioStreams.get(i);
if (highestQualityIndex == -1 && audioStream.getFormat() == defaultFormat) highestQualityIndex = i;
if (highestQualityIndex != -1 && audioStream.getFormat() == defaultFormat
&& audioStream.getAverageBitrate() > audioStreams.get(highestQualityIndex).getAverageBitrate()) {
highestQualityIndex = i;
}
}
if (highestQualityIndex == -1) highestQualityIndex = getHighestQualityAudioIndex(audioStreams);
return highestQualityIndex;
}
/**
@ -154,6 +97,50 @@ public final class ListHelper {
return getSortedStreamVideosList(defaultFormat, showHigherResolutions, videoStreams, videoOnlyStreams, ascendingOrder);
}
/*//////////////////////////////////////////////////////////////////////////
// Utils
//////////////////////////////////////////////////////////////////////////*/
private static String computeDefaultResolution(Context context, int key, int value) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
// Load the prefered resolution otherwise the best available
String resolution = preferences != null
? preferences.getString(context.getString(key), context.getString(value))
: context.getString(R.string.best_resolution_key);
String maxResolution = getResolutionLimit(context);
if (maxResolution != null && compareVideoStreamResolution(maxResolution, resolution) < 1){
resolution = maxResolution;
}
return resolution;
}
/**
* Return the index of the default stream in the list, based on the parameters
* defaultResolution and defaultFormat
*
* @return index of the default resolution&format
*/
static int getDefaultResolutionIndex(String defaultResolution, String bestResolutionKey,
MediaFormat defaultFormat, List<VideoStream> videoStreams) {
if (videoStreams == null || videoStreams.isEmpty()) return -1;
sortStreamList(videoStreams, false);
if (defaultResolution.equals(bestResolutionKey)) {
return 0;
}
int defaultStreamIndex = getVideoStreamIndex(defaultResolution, defaultFormat, videoStreams);
// this is actually an error,
// but maybe there is really no stream fitting to the default value.
if (defaultStreamIndex == -1) {
return 0;
}
return defaultStreamIndex;
}
/**
* Join the two lists of video streams (video_only and normal videos), and sort them according with default format
* chosen by the user
@ -165,7 +152,7 @@ public final class ListHelper {
* @param ascendingOrder true -> smallest to greatest | false -> greatest to smallest @return the sorted list
* @return the sorted list
*/
public static List<VideoStream> getSortedStreamVideosList(MediaFormat defaultFormat, boolean showHigherResolutions, List<VideoStream> videoStreams, List<VideoStream> videoOnlyStreams, boolean ascendingOrder) {
static List<VideoStream> getSortedStreamVideosList(MediaFormat defaultFormat, boolean showHigherResolutions, List<VideoStream> videoStreams, List<VideoStream> videoOnlyStreams, boolean ascendingOrder) {
ArrayList<VideoStream> retList = new ArrayList<>();
HashMap<String, VideoStream> hashMap = new HashMap<>();
@ -215,36 +202,138 @@ public final class ListHelper {
* @param videoStreams list that the sorting will be applied
* @param ascendingOrder true -> smallest to greatest | false -> greatest to smallest
*/
public static void sortStreamList(List<VideoStream> videoStreams, final boolean ascendingOrder) {
Collections.sort(videoStreams, new Comparator<VideoStream>() {
@Override
public int compare(VideoStream o1, VideoStream o2) {
int res1 = Integer.parseInt(o1.getResolution().replace("0p60", "1").replaceAll("[^\\d.]", ""));
int res2 = Integer.parseInt(o2.getResolution().replace("0p60", "1").replaceAll("[^\\d.]", ""));
return ascendingOrder ? res1 - res2 : res2 - res1;
}
private static void sortStreamList(List<VideoStream> videoStreams, final boolean ascendingOrder) {
Collections.sort(videoStreams, (o1, o2) -> {
int result = compareVideoStreamResolution(o1, o2, VIDEO_FORMAT_QUALITY_RANKING);
return result == 0 ? 0 : (ascendingOrder ? result : -result);
});
}
/*//////////////////////////////////////////////////////////////////////////
// Utils
//////////////////////////////////////////////////////////////////////////*/
/**
* Get the audio from the list with the highest quality. Format will be ignored if it yields
* no results.
*
* @param audioStreams list the audio streams
* @return index of the audio with the highest average bitrate of the default format
*/
static int getHighestQualityAudioIndex(MediaFormat format, List<AudioStream> audioStreams) {
int result = -1;
if (audioStreams != null) {
while(result == -1) {
AudioStream prevStream = null;
for (int idx = 0; idx < audioStreams.size(); idx++) {
AudioStream stream = audioStreams.get(idx);
if ((format == null || stream.getFormat() == format) &&
(prevStream == null || compareAudioStreamBitrate(prevStream, stream,
AUDIO_FORMAT_QUALITY_RANKING) < 0)) {
prevStream = stream;
result = idx;
}
}
if (result == -1 && format == null) {
break;
}
format = null;
}
}
return result;
}
private static int getDefaultStreamIndex(String defaultResolution, MediaFormat defaultFormat, List<VideoStream> videoStreams) {
int defaultStreamIndex = -1;
for (int i = 0; i < videoStreams.size(); i++) {
VideoStream stream = videoStreams.get(i);
if (defaultStreamIndex == -1 && stream.getResolution().equals(defaultResolution)) defaultStreamIndex = i;
/**
* Get the audio from the list with the lowest bitrate and efficient format. Format will be
* ignored if it yields no results.
*
* @param format The target format type or null if it doesn't matter
* @param audioStreams list the audio streams
* @return index of the audio stream that can produce the most compact results or -1 if not found.
*/
static int getMostCompactAudioIndex(MediaFormat format, List<AudioStream> audioStreams) {
int result = -1;
if (audioStreams != null) {
while(result == -1) {
AudioStream prevStream = null;
for (int idx = 0; idx < audioStreams.size(); idx++) {
AudioStream stream = audioStreams.get(idx);
if ((format == null || stream.getFormat() == format) &&
(prevStream == null || compareAudioStreamBitrate(prevStream, stream,
AUDIO_FORMAT_EFFICIENCY_RANKING) > 0)) {
prevStream = stream;
result = idx;
}
}
if (result == -1 && format == null) {
break;
}
format = null;
}
}
return result;
}
if (stream.getFormat() == defaultFormat && stream.getResolution().equals(defaultResolution)) {
return i;
/**
* Locates a possible match for the given resolution and format in the provided list.
* In this order:
* 1. Find a format and resolution match
* 2. Find a format and resolution match and ignore the refresh
* 3. Find a resolution match
* 4. Find a resolution match and ignore the refresh
* 5. Find a resolution just below the requested resolution and ignore the refresh
* 6. Give up
*/
static int getVideoStreamIndex(String targetResolution, MediaFormat targetFormat,
List<VideoStream> videoStreams) {
int fullMatchIndex = -1;
int fullMatchNoRefreshIndex = -1;
int resMatchOnlyIndex = -1;
int resMatchOnlyNoRefreshIndex = -1;
int lowerResMatchNoRefreshIndex = -1;
String targetResolutionNoRefresh = targetResolution.replaceAll("p\\d+$", "p");
for (int idx = 0; idx < videoStreams.size(); idx++) {
MediaFormat format = targetFormat == null ? null : videoStreams.get(idx).getFormat();
String resolution = videoStreams.get(idx).getResolution();
String resolutionNoRefresh = resolution.replaceAll("p\\d+$", "p");
if (format == targetFormat && resolution.equals(targetResolution)) {
fullMatchIndex = idx;
}
if (format == targetFormat && resolutionNoRefresh.equals(targetResolutionNoRefresh)) {
fullMatchNoRefreshIndex = idx;
}
if (resMatchOnlyIndex == -1 && resolution.equals(targetResolution)) {
resMatchOnlyIndex = idx;
}
if (resMatchOnlyNoRefreshIndex == -1 && resolutionNoRefresh.equals(targetResolutionNoRefresh)) {
resMatchOnlyNoRefreshIndex = idx;
}
if (lowerResMatchNoRefreshIndex == -1 && compareVideoStreamResolution(resolutionNoRefresh, targetResolutionNoRefresh) < 0) {
lowerResMatchNoRefreshIndex = idx;
}
}
return defaultStreamIndex;
if (fullMatchIndex != -1) {
return fullMatchIndex;
}
if (fullMatchNoRefreshIndex != -1) {
return fullMatchNoRefreshIndex;
}
if (resMatchOnlyIndex != -1) {
return resMatchOnlyIndex;
}
if (resMatchOnlyNoRefreshIndex != -1) {
return resMatchOnlyNoRefreshIndex;
}
return lowerResMatchNoRefreshIndex;
}
/**
* Fetches the desired resolution or returns the default if it is not found. The resolution
* will be reduced if video chocking is active.
*/
private static int getDefaultResolutionWithDefaultFormat(Context context, String defaultResolution, List<VideoStream> videoStreams) {
MediaFormat defaultFormat = getDefaultFormat(context, R.string.default_video_format_key, R.string.default_video_format_value);
return getDefaultResolutionIndex(defaultResolution, context.getString(R.string.best_resolution_key), defaultFormat, videoStreams);
@ -280,4 +369,85 @@ public final class ListHelper {
}
return format;
}
// Compares the quality of two audio streams
private static int compareAudioStreamBitrate(AudioStream streamA, AudioStream streamB,
List<MediaFormat> formatRanking) {
if (streamA == null) {
return -1;
}
if (streamB == null) {
return 1;
}
if (streamA.getAverageBitrate() < streamB.getAverageBitrate()) {
return -1;
}
if (streamA.getAverageBitrate() > streamB.getAverageBitrate()) {
return 1;
}
// Same bitrate and format
return formatRanking.indexOf(streamA.getFormat()) - formatRanking.indexOf(streamB.getFormat());
}
private static int compareVideoStreamResolution(String r1, String r2) {
int res1 = Integer.parseInt(r1.replaceAll("0p\\d+$", "1")
.replaceAll("[^\\d.]", ""));
int res2 = Integer.parseInt(r2.replaceAll("0p\\d+$", "1")
.replaceAll("[^\\d.]", ""));
return res1 - res2;
}
// Compares the quality of two video streams.
private static int compareVideoStreamResolution(VideoStream streamA, VideoStream streamB,
List<MediaFormat> formatRanking) {
if (streamA == null) {
return -1;
}
if (streamB == null) {
return 1;
}
int resComp = compareVideoStreamResolution(streamA.getResolution(), streamB.getResolution());
if (resComp != 0) {
return resComp;
}
// Same bitrate and format
return formatRanking.indexOf(streamA.getFormat()) - formatRanking.indexOf(streamB.getFormat());
}
private static boolean isLimitingDataUsage(Context context) {
return getResolutionLimit(context) != null;
}
/**
* The maximum resolution allowed
* @param context App context
* @return maximum resolution allowed or null if there is no maximum
*/
private static String getResolutionLimit(Context context) {
String resolutionLimit = null;
if (!isWifiActive(context)) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
String defValue = context.getString(R.string.limit_data_usage_none_key);
String value = preferences.getString(
context.getString(R.string.limit_mobile_data_usage_key), defValue);
resolutionLimit = value.equals(defValue) ? null : value;
}
return resolutionLimit;
}
/**
* Are we connected to wifi?
* @param context App context
* @return True if connected to wifi
*/
private static boolean isWifiActive(Context context)
{
ConnectivityManager manager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
return manager.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_WIFI;
}
}

View File

@ -5,6 +5,7 @@ import android.os.Looper;
import android.util.Log;
import java.io.File;
import java.io.ObjectInputStream;
import java.io.Serializable;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
@ -312,6 +313,13 @@ public class DownloadMission implements Serializable {
}
}
private void readObject(ObjectInputStream inputStream)
throws java.io.IOException, ClassNotFoundException
{
inputStream.defaultReadObject();
mListeners = new ArrayList<>();
}
private void deleteThisFromFile() {
new File(getMetaFilename()).delete();
}

View File

@ -2,7 +2,6 @@ package us.shandian.giga.get;
import android.util.Log;
import java.io.BufferedInputStream;
import java.io.RandomAccessFile;
import java.net.HttpURLConnection;
import java.net.URL;
@ -104,11 +103,11 @@ public class DownloadRunnable implements Runnable {
RandomAccessFile f = new RandomAccessFile(mMission.location + "/" + mMission.name, "rw");
f.seek(start);
BufferedInputStream ipt = new BufferedInputStream(conn.getInputStream());
byte[] buf = new byte[512];
java.io.InputStream ipt = conn.getInputStream();
byte[] buf = new byte[64*1024];
while (start < end && mMission.running) {
int len = ipt.read(buf, 0, 512);
int len = ipt.read(buf, 0, buf.length);
if (len == -1) {
break;

View File

@ -12,6 +12,7 @@ import android.widget.Toast;
import org.schabi.newpipe.R;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
@ -59,17 +60,17 @@ public class Utility {
ObjectOutputStream objectOutputStream = null;
try {
objectOutputStream = new ObjectOutputStream(new FileOutputStream(fileName));
objectOutputStream = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(fileName)));
objectOutputStream.writeObject(serializable);
} catch (Exception e) {
//nothing to do
}
if(objectOutputStream != null) {
try {
objectOutputStream.close();
} catch (Exception e) {
//nothing to do
} finally {
if(objectOutputStream != null) {
try {
objectOutputStream.close();
} catch (Exception e) {
//nothing to do
}
}
}
}

View File

@ -111,5 +111,26 @@
android:layout_gravity="end"
android:text="@string/open_in_browser" />
<TextView
android:id="@+id/title_privacy_policy"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="10dp"
android:text="@string/privacy_policy_title"
android:textAppearance="@android:style/TextAppearance.Medium" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/privacy_policy_encouragement" />
<Button
android:id="@+id/privacy_policy_link"
style="@style/Base.Widget.AppCompat.Button.Borderless"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:text="@string/read_privacy_policy" />
</LinearLayout>
</android.support.v4.widget.NestedScrollView>

View File

@ -10,15 +10,15 @@
<string name="detail_likes_img_view_description">الإعجابات</string>
<string name="detail_thumbnail_view_description">صور معاينة الفيديو</string>
<string name="detail_uploader_thumbnail_view_description">الصورة المصغرة الشخصية</string>
<string name="did_you_mean">"هل تعني: %1$s ?"</string>
<string name="did_you_mean">هل تقصد: %1$s ?</string>
<string name="download">تنزيل</string>
<string name="download_dialog_title">تنزيل</string>
<string name="download_path_audio_dialog_title">أدخل مسار تنزيل الملفات الصوتية</string>
<string name="download_path_audio_summary">مسار حفظ التنزيلات الصوتية</string>
<string name="download_path_audio_title">مسار تنزيل ملفات الصوت</string>
<string name="download_path_audio_title">مسار ملفات الصوت المحفوظة</string>
<string name="download_path_dialog_title">أدخل مسار التنزيل لملفات الفيديو</string>
<string name="download_path_summary">مسار حفظ تنزيلات الفيديو في</string>
<string name="download_path_title">مسار تنزيل الفيديو</string>
<string name="download_path_title">مسار ملفات الفيديو المحفوظة</string>
<string name="err_dir_create">"لا يمكن إنشاء مجلد للتنزيلات في '%1$s'"</string>
<string name="info_dir_created">"تم إنشاء مجلد تنزيلات في '%1$s'"</string>
<string name="install">تثبيت</string>
@ -38,7 +38,7 @@
<string name="search_language_title">اللغة الإفتراضية للمحتوى</string>
<string name="settings">الإعدادات</string>
<string name="settings_category_appearance_title">المظهر</string>
<string name="settings_category_other_title">أخرئ</string>
<string name="settings_category_other_title">اخرى</string>
<string name="settings_category_video_audio_title">الفيديو والصوتيات</string>
<string name="share">مشاركة</string>
<string name="share_dialog_title">مشاركة بواسطة</string>
@ -46,7 +46,7 @@
<string name="show_play_with_kodi_summary">عرض خيار لتشغيل الفيديو بواسطة Kodi Media Center</string>
<string name="show_play_with_kodi_title">عرض خيار التشغيل بواسطة Kodi</string>
<string name="theme_title">السمة</string>
<string name="upload_date_text">نشرت يوم %1$s</string>
<string name="upload_date_text">تم النشر يوم %1$s</string>
<string name="url_not_supported_toast">الرابط غير مدعوم</string>
<string name="use_external_audio_player_title">استخدام مشغل صوت خارجي</string>
<string name="use_external_video_player_title">استخدام مشغل فيديو خارجي</string>
@ -77,29 +77,29 @@
<string name="downloads">التنزيلات</string>
<string name="downloads_title">التنزيلات</string>
<string name="all">الكل</string>
<string name="channel">قناة</string>
<string name="channel">القناة</string>
<string name="video">فيديو</string>
<string name="settings_category_downloads_title">التنزيل</string>
<string name="action_about">عن التطبيق</string>
<string name="tab_about">عن التطبيق</string>
<string name="title_activity_history">التأريخ</string>
<string name="action_history">التأريخ</string>
<string name="title_activity_history">التاريخ</string>
<string name="action_history">التاريخ</string>
<string name="open_in_popup_mode">فتح في وضع النوافذ المنبثقة</string>
<string name="use_external_video_player_summary">"بعض القرارات لن يكون الصوت عند تمكين هذا الخيار "</string>
<string name="popup_mode_share_menu_title">"وضع النوافذ المنبثقة NewPipe "</string>
<string name="popup_mode_share_menu_title">وضع النوافذ المنبثقة NewPipe</string>
<string name="channel_unsubscribed">تم إلغاء اشتراك القناة</string>
<string name="subscription_change_failed">تعذر تغيير في الاشتراك</string>
<string name="subscription_update_failed">تعذر تحديث الاشتراك</string>
<string name="controls_popup_title">نافذة</string>
<string name="autoplay_by_calling_app_summary">تشغيل مقطع الفيديو عند استدعاء NewPipe من تطبيق آخر</string>
<string name="autoplay_by_calling_app_summary">تشغيل مقطع الفيديو عند إستدعاء NewPipe من تطبيق آخر</string>
<string name="default_popup_resolution_title">"دقة النوافذ المنبثقة الافتراضية "</string>
<string name="show_higher_resolutions_title">"عرض أعلى جودة "</string>
<string name="show_higher_resolutions_summary">بعض الأجهزة فقط تدعم تشغيل مقاطع الفيديو 2K / 4K</string>
<string name="default_video_format_title">تنسيق الفيديو الافتراضي</string>
<string name="popup_remember_size_pos_title">تذكر حجم النافذة و وضعها</string>
<string name="popup_remember_size_pos_summary">تذكر آخر حجم ومكان النافذة</string>
<string name="popup_remember_size_pos_summary">تذكر آخر حجم ومكان للنافذة</string>
<string name="player_gesture_controls_title">اعدادات إيماءة المشغل</string>
<string name="player_gesture_controls_summary">استخدم إيماءات للتحكم في سطوع وحجم المشغل</string>
<string name="show_search_suggestions_title">اقتراحات البحث</string>
@ -107,7 +107,7 @@
<string name="enable_search_history_title">سجل البحث</string>
<string name="enable_search_history_summary">تخزين طلبات البحث محليا</string>
<string name="enable_watch_history_summary">تتبع مقاطع الفيديو التي تمت مشاهدتها</string>
<string name="resume_on_audio_focus_gain_title">استئناف عند اكساب التركيز</string>
<string name="resume_on_audio_focus_gain_title">استئناف عند اكتساب التركيز</string>
<string name="resume_on_audio_focus_gain_summary">متابعة التشغيل بعد المقاطعات (مثل المكالمات الهاتفية)</string>
<string name="show_hold_to_append_title">عرض\"عقد لإلحاق\"عنوان</string>
<string name="show_hold_to_append_summary">عرض تلميح أو زر منبثق عند الضغط على خلفية على صفحة تفاصيل الفيديو</string>
@ -123,7 +123,7 @@
<string name="error_report_title">تقرير الخطأ</string>
<string name="playlist">قائمة التشغيل</string>
<string name="yes">نعم</string>
<string name="later">لاحقًا</string>
<string name="later">لاحقاً</string>
<string name="disabled">مُعطل</string>
<string name="filter">فلتر</string>
<string name="refresh">تحديث</string>
@ -145,7 +145,7 @@
<string name="could_not_load_image">تعذر تحميل الصورة</string>
<string name="app_ui_crash">تعطل التطبيق / واجهة المستخدم</string>
<string name="player_stream_failure">لا يمكن تشغيل هذا البث</string>
<string name="player_unrecoverable_failure">حدث خطأ المشغل غير قابل للاسترداد</string>
<string name="player_unrecoverable_failure">حدث خطأ للمشغل غير قابل للاسترداد</string>
<string name="player_recoverable_failure">استرداد المشغل من الخطأ</string>
<string name="sorry_string">عذرا، لا ينبغي أن يحدث ذلك.</string>
@ -192,7 +192,7 @@
<string name="delete">حذف</string>
<string name="checksum">التوقيع</string>
<string name="add">قطعة</string>
<string name="add">مهمة جديدة</string>
<string name="finish">حسنا</string>
<string name="msg_name">اسم الملف</string>
@ -241,11 +241,11 @@
<string name="title_history_view">شاهد</string>
<string name="history_disabled">تم تعطيل السجل</string>
<string name="history_empty">التاريخ فارغ</string>
<string name="history_cleared">تم تنظيف التأريخ</string>
<string name="history_cleared">تم مسح التاريخ</string>
<string name="item_deleted">تم حذف العنصر</string>
<string name="delete_item_search_history">هل تريد حذف هذا العنصر من سجل البحث؟</string>
<string name="main_page_content">المحتوى</string>
<string name="main_page_content">محتوى الشاشة الرئيسية</string>
<string name="blank_page_summary">صفحة فارغة</string>
<string name="subscription_page_summary">صفحة الاشتراك</string>
<string name="feed_page_summary">صفحة الخلاصة</string>
@ -308,7 +308,7 @@
<string name="no_player_found_toast">لم يتم العثور على مشغل بث (يمكنك تثبيت VLC لتشغيله)</string>
<string name="import_data_title">استيراد قاعدة البيانات</string>
<string name="export_data_title">تصدير قاعدة البيانات</string>
<string name="import_data_summary">"سيتجاوز سجل التاريخ والاشتراكات الحالية "</string>
<string name="import_data_summary">"سيقوم بالكتابة على سجل التاريخ والاشتراكات الحالية "</string>
<string name="export_data_summary">تصدير سجل, الاشتراكات وقوائم التشغيل.</string>
<string name="show_info">عرض المعلومات</string>
@ -333,10 +333,10 @@
<string name="drawer_header_action_paceholder_text">سوف يظهر شيء هنا قريبا ;D</string>
<string name="video_player">قارئ الفيديوهات</string>
<string name="always_ask_open_action">أُطلُب دائمًا</string>
<string name="video_player">مشغل الفديو</string>
<string name="always_ask_open_action">السؤال دائمًا</string>
<string name="preferred_player_fetcher_notification_title">عملية تحميل المعلومات جارية</string>
<string name="preferred_player_fetcher_notification_title">الحصول على المعلومات</string>
<string name="preferred_player_fetcher_notification_message">تحميل المحتوى المطلوب</string>
<string name="create_playlist">إنشاء قائمة تشغيل جديدة</string>
@ -359,12 +359,12 @@
<string name="live_sync">مُزامَنة</string>
<string name="controls_download_desc">تنزيل الملف المتدفق.</string>
<string name="tab_bookmarks">إشارات مرجعية</string>
<string name="controls_download_desc">تنزيل الملف البث.</string>
<string name="tab_bookmarks">الإشارات مرجعية</string>
<string name="use_inexact_seek_title">استعمال التقديم السريع الغير دقيق</string>
<string name="use_inexact_seek_summary">"التقديم الغير دقيق يسمح للمشغل بالإطلاع الى الأماكن بشكل اسرع مع دقة اقل "</string>
<string name="download_thumbnail_title">تحميل الصور الصغيرة</string>
<string name="download_thumbnail_title">تحميل الصور المصغرة</string>
<string name="thumbnail_cache_wipe_complete_notice">تم إفراغ مساحة ذاكرة التخزين المؤقتة الخاصة بالصور</string>
<string name="file">الملف</string>
@ -393,19 +393,19 @@
<string name="metadata_cache_wipe_title">امسح البيانات الوصفية المخزنة مؤقتًا</string>
<string name="metadata_cache_wipe_summary">إزالة جميع بيانات صفحات الويب المخزنة مؤقتًا</string>
<string name="metadata_cache_wipe_complete_notice">تم محو ذاكرة التخزين المؤقت للبيانات الوصفية</string>
<string name="auto_queue_title">صف تيار المقبل تلقائي</string>
<string name="auto_queue_summary">إلحاق تلقائي بالدفق ذي الصلة عند تشغيل آخر مجموعة في قائمة انتظار غير متكررة</string>
<string name="set_as_playlist_thumbnail">إضافة إلى قائمة التشغيل صورة مصغرة</string>
<string name="auto_queue_title">وضع البث القادم تلقائيا في قائمة الإنتظار</string>
<string name="auto_queue_summary">رفض البث المشابه في حال كون البث السابق يعمل في حالة عدم التكرار.</string>
<string name="set_as_playlist_thumbnail">إضافة إلى قائمة التشغيل كصورة مصغرة</string>
<string name="bookmark_playlist">قائمة التشغيل الإشارات المرجعية</string>
<string name="playlist_thumbnail_change_success">تغيير الصورة المصغرة لقائمة التشغيل</string>
<string name="caption_none">لا تعليق</string>
<string name="bookmark_playlist">قائمة التشغيل المخزنة</string>
<string name="playlist_thumbnail_change_success">تم تغيير الصورة المصغرة لقائمة التشغيل</string>
<string name="caption_none">بدون تسميات توضيحية</string>
<string name="caption_setting_title">تسميات توضيحية</string>
<string name="caption_setting_description">تعديل مشغل نص التسمية التوضيحية وأنماط الخلفية. يتطلب إعادة تشغيل التطبيق ليصبح ساري المفعول.</string>
<string name="enable_leak_canary_title">تمكين LeakCanary</string>
<string name="enable_leak_canary_summary">قد يتسبب مراقبة في تسرب الذاكرة في عدم استجابة التطبيق عند تفريغ الكومة</string>
<string name="enable_leak_canary_summary">قد يتسبب مراقبة في تسرب الذاكرة في عدم استجابة التطبيق عند تفريغ السجلات</string>
<string name="enable_disposed_exceptions_title">تقرير الأخطاء خارج دورة الحياة</string>
<string name="enable_disposed_exceptions_summary">فرض الإبلاغ عن استثناءات Rx غير القابلة للتسليم خارج دورة حياة الجزء أو النشاط بعد التخلص منها</string>
@ -427,16 +427,16 @@
<string name="toast_no_player">لم يتم تثبيت أي تطبيق لتشغيل هذا الملف</string>
<string name="app_license">NewPipe هو برنامج مفتوح المصدر حقوق متروكة: يمكنك استخدام حصة الدراسة وتحسينه في إرادتك. على وجه التحديد يمكنك إعادة توزيع و / أو تعديله تحت شروط رخصة تحت شروط GNU والتي نشرتها مؤسسة البرمجيات الحرة، سواء الإصدار 3 من الرخصة، أو (باختيارك) أي إصدار لاحق.</string>
<string name="app_license">NewPipe هو برنامج مفتوح المصدر حقوق متروكة: يمكنك استخدام الكود ودراسته وتحسينه بإرادتك. و على وجه التحديد يمكنك إعادة توزيعه / أو تعديله تحت شروط رخصة GNU العمومية والتي نشرتها مؤسسة البرمجيات الحرة، سواء الإصدار 3 من الرخصة، أو (باختيارك) أي إصدار لاحق.</string>
<string name="delete_stream_history_prompt">هل تريد حذف هذا العنصر من سجل المشاهدة؟</string>
<string name="delete_all_history_prompt">هل أنت متأكد من أنك تريد حذف كل العناصر من السجل؟</string>
<string name="title_last_played">"اخر ما تم تشغيله "</string>
<string name="title_last_played">آخر ما تم تشغيله</string>
<string name="title_most_played">الأكثر تشغيلا</string>
<string name="override_current_data">هذا سوف يتجاوز الإعداد الحالي الخاص بك.</string>
<string name="preferred_open_action_settings_title">المفضل \'لفتح\' العمل</string>
<string name="preferred_open_action_settings_summary">"لإجراء الافتراضي عند فتح المحتوى — %s"</string>
<string name="preferred_open_action_settings_title">طريقة \'التشغيل\' المفضلة</string>
<string name="preferred_open_action_settings_summary">"الإجراء الافتراضي عند فتح المحتوى — %s"</string>
<string name="background_player">مشغل الخلفية</string>
<string name="popup_player">المشغل المنبثق</string>
@ -467,4 +467,15 @@
<string name="playback_nightcore">تعديل الايقاع Nightcore</string>
<string name="import_settings">هل تريد أيضا استيراد الإعدادات؟</string>
<string name="privacy_policy_title">"سياسة الخصوصية في NewPipe "</string>
<string name="privacy_policy_encouragement">يأخذ مشروع NewPipe خصوصيتك على محمل الجد. لذلك ، لا يجمع التطبيق أي بيانات دون موافقتك.
\nتوضح سياسة خصوصية NewPipe بالتفصيل البيانات التي يتم إرسالها وتخزينها عند إرسال تقرير الأعطال.</string>
<string name="read_privacy_policy">قراءة سياسة الخصوصية</string>
<string name="start_accept_privacy_policy">من أجل الامتثال للائحة الأوروبية العامة لحماية البيانات (GDPR) ، فإننا نلفت انتباهك إلى سياسة خصوصية NewPipe. يرجى قراءتها بعناية.
\nو يجب عليك قبولها لإرسال تقرير الأخطاء إلينا.</string>
<string name="accept">قبول</string>
<string name="decline">رفض</string>
<string name="limit_data_usage_none_description">لا حدود</string>
<string name="limit_mobile_data_usage_title">الحد من جودة الفيديو عند استخدام بيانات الهاتف المحمول</string>
</resources>

View File

@ -5,15 +5,15 @@
<string name="upload_date_text">প্রকাশকাল %1$s</string>
<string name="no_player_found">কোন স্ট্রিম প্লেয়ার পাওয়া যায়নি। তুমি কি VLC ইনস্টল করতে চাও?</string>
<string name="install">ইনস্টল</string>
<string name="cancel">বাদ দাও</string>
<string name="cancel">"বাদ দিন "</string>
<!-- <string name="fdroid_vlc_url" translatable="false">https://f-droid.org/repository/browse/?fdfilter=vlc&amp;fdid=org.videolan.vlc</string> -->
<string name="open_in_browser">ব্রাউজারে খোলো</string>
<string name="open_in_popup_mode">পপআপ মোডে খোলো</string>
<string name="open_in_browser">"ব্রাউজারে ওপেন করো "</string>
<string name="open_in_popup_mode">"popup মোডে Open করো "</string>
<string name="share">শেয়ার</string>
<string name="download">ডাউনলোড</string>
<string name="search">খোঁজ</string>
<string name="settings">সেটিং</string>
<string name="did_you_mean">তুমি কি বলতে চাচ্ছ %1$s ?</string>
<string name="settings">"সেটিংস "</string>
<string name="did_you_mean">আপনি কি বুঝিয়েছেনঃ %1$s ?</string>
<string name="share_dialog_title">শেয়ার কর</string>
<string name="choose_browser">ব্রাউজার পছন্দ কর</string>
<string name="screen_rotation">রোটেশন</string>
@ -25,12 +25,12 @@
<string name="controls_popup_title">পপআপ</string>
<string name="download_path_title">ভিডিও ডাউনলোড করার পাথ</string>
<string name="download_path_summary">ডাউনলোড করা ভিডিও সঞ্চয় করার পাথ।</string>
<string name="download_path_summary">ডাউনলোড করা ভিডিওগুলো রাখার ফোল্ডার</string>
<string name="download_path_dialog_title">ভিডিওগুলির জন্য ডাউনলোডের পাথ প্রবেশ করাও</string>
<string name="download_path_audio_title">অডিও ডাউনলোড পাথ</string>
<string name="download_path_audio_summary">ডাউনলোড করা অডিও সঞ্চয় করার পাথ</string>
<string name="download_path_audio_dialog_title">অডিও ফাইলগুলির জন্য ডাউনলোডের পাথ প্রবেশ করাও</string>
<string name="download_path_audio_dialog_title">অডিও ফাইলগুলির জন্য ডাউনলোডের পাথ প্রবেশ করাও</string>
<string name="autoplay_by_calling_app_title">স্বয়ংক্রিয়ভাবে প্লে করো যখন অন্য অ্যাপ্লিকেশন থেকে চালু করা হয়</string>
<string name="autoplay_by_calling_app_summary">স্বয়ংক্রিয়ভাবে একটি ভিডিও প্লে করো যখন NewPipe অন্য অ্যাপ্লিকেশন থেকে চালু করা হয়।</string>
@ -42,7 +42,7 @@
<string name="kore_not_found">Kore অ্যাপ্লিকেশন খুঁজে পাওয়া যায়নি। Kore ইনস্টল করবে?</string>
<!-- <string name="fdroid_kore_url" translatable="false">https://f-droid.org/repository/browse/?fdfilter=Kore&amp;fdid=org.xbmc.kore</string> -->
<string name="show_play_with_kodi_title">দেখাও \"Kodi এর মাধ্যমে চালাও \" বিকল্প</string>
<string name="show_play_with_kodi_summary">Kodi মিডিয়া সেন্টারে এর মাধ্যমে ভিডিও প্লে করার জন্য একটি বিকল্প প্রদর্শন কর</string>
<string name="show_play_with_kodi_summary">Kodi মিডিয়া সেন্টারে এর মাধ্যমে ভিডিও প্লে করার জন্য একটি বিকল্প প্রদর্শন কর</string>
<string name="play_audio">অডিও</string>
<string name="default_audio_format_title">ডিফল্ট অডিও ফরম্যাট</string>
<string name="default_video_format_title">পছন্দসই ভিডিও ফরম্যাট</string>
@ -200,4 +200,16 @@
<string name="action_settings">সেটিংস</string>
<string name="action_open_website">ওয়েব সাইট খুলুন</string>
<string name="website_title">ওয়েব সাইট</string>
<string name="no_player_found_toast">"কোন স্ট্রিম প্লেয়ার পাওয়া যায়নি (প্লে করতে VLC ইন্সটল করতে পারেন) "</string>
<string name="use_external_video_player_summary">যদি এই অপশন অন থাকে তবে কিছু ভিডিওর অডিও কাজ নাও করতে পারে</string>
<string name="subscribe_button_title">সাবস্ক্রাইব</string>
<string name="subscribed_button_title">সাবস্ক্রাইব করা আছে</string>
<string name="channel_unsubscribed">চ্যানেল সাবস্ক্রাইব করা হয়েছে</string>
<string name="subscription_change_failed">সাবস্ক্রিপশন পরিবর্তন করা হয়নি</string>
<string name="subscription_update_failed">সাবস্ক্রিপশন আপডেট করতে ব্যার্থ হয়েছে</string>
<string name="tab_main">প্রধান</string>
<string name="tab_subscriptions">সাবস্ক্রিপশন</string>
<string name="tab_bookmarks">বুকমার্কস</string>
<string name="use_inexact_seek_title">দ্রুত টানা ব্যাবহার করুন</string>
</resources>

View File

@ -442,4 +442,14 @@
<string name="app_license">NewPipe és programari lliure sota llicència copyleft: podeu fer-lo servir, estudiar-lo, compartir-lo i millorar-lo al vostre gust. En concret, podeu redistribuir-lo i/o modificar-lo d\'acord amb els termes de la llicència GNU GPL publicada per la Free Software Foundation, ja sigui la versió 3 o (segons vulgueu) qualsevol altra versió posterior.</string>
<string name="import_settings">Voleu importar també la configuració?</string>
<string name="privacy_policy_title">Política de privacitat del NewPipe</string>
<string name="privacy_policy_encouragement">El projecte NewPipe es pren molt seriosament la vostra privacitat. Per aquesta raó, l\'aplicació no emmagatzema cap mena de dades sense el vostre consentiment.
\nLa política de privacitat del NewPipe descriu detalladament quines dades s\'envien i s\'emmagatzemen quan envieu un informe d\'error.</string>
<string name="read_privacy_policy">Llegeix la política de privacitat</string>
<string name="start_accept_privacy_policy">Per tal de complir amb el Reglament General de Protecció de Dades europeu (GDPR), us demanem que poseu atenció a la política de privacitat del NewPipe. Llegiu-la detingudament.
\nSi voleu enviar-nos un informe d\'error, l\'haureu d\'acceptar.</string>
<string name="accept">Accepta</string>
<string name="decline">Rebutja</string>
<string name="limit_data_usage_none_description">Sense restriccions</string>
<string name="limit_mobile_data_usage_title">Restringeix la resolució quan es facin servir dades mòbils</string>
</resources>

View File

@ -12,14 +12,14 @@
<string name="settings">Einstellungen</string>
<string name="did_you_mean">Meintest du: %1$s ?</string>
<string name="share_dialog_title">Teilen mit</string>
<string name="choose_browser">Browser</string>
<string name="choose_browser">Browser auswählen</string>
<string name="screen_rotation">Drehen des Geräts</string>
<string name="download_path_title">Download-Verzeichnis für Videos</string>
<string name="download_path_summary">Verzeichnis für heruntergeladene Videos</string>
<string name="download_path_dialog_title">Download-Verzeichnis für Videos angeben</string>
<string name="default_resolution_title">Standardauflösung</string>
<string name="play_with_kodi_title">Mit Kodi abspielen</string>
<string name="kore_not_found">Kore App wurde nicht gefunden. Möchten Sie Kore jetzt installieren?</string>
<string name="kore_not_found">Kore App wurde nicht gefunden. Kore jetzt installieren?</string>
<string name="show_play_with_kodi_title">Zeige \"Mit Kodi abspielen\" Option</string>
<string name="show_play_with_kodi_summary">Zeigt eine Option an, über die man Videos mit Kodi abspielen kann</string>
<string name="play_audio">Audio</string>
@ -67,7 +67,7 @@
<string name="content">Inhalt</string>
<string name="show_age_restricted_content_title">Altersbeschränkte Inhalte anzeigen</string>
<string name="video_is_age_restricted">Video ist altersbeschränkt. Schalten Sie erst altersbeschränkte Videos in den Einstellungen ein.</string>
<string name="video_is_age_restricted">Video ist altersbeschränkt. Schalte erst altersbeschränkte Videos in den Einstellungen ein.</string>
<string name="could_not_setup_download_menu">Konnte Download-Menü nicht einrichten</string>
<string name="live_streams_not_supported">Dies ist ein LIVESTREAM. Diese werden noch nicht unterstützt.</string>
@ -115,7 +115,7 @@
<string name="msg_exists">Datei existiert bereits</string>
<string name="msg_wait">Bitte warten…</string>
<string name="msg_copied">In Zwischenablage kopiert</string>
<string name="no_available_dir">Bitte wählen Sie ein verfügbares Download-Verzeichnis</string>
<string name="no_available_dir">Bitte wähle ein verfügbares Download-Verzeichnis</string>
<string name="start">Starten</string>
<string name="pause">Pause</string>
@ -134,7 +134,7 @@
<string name="black_theme_title">Schwarz</string>
<string name="reCaptcha_title">reCAPTCHA-Aufgabe</string>
<string name="recaptcha_request_toast">reCAPTCHA-Herausforderung angefordert</string>
<string name="recaptcha_request_toast">reCAPTCHA-Aufgabe angefordert</string>
<string name="later">Später</string>
@ -185,14 +185,14 @@
<string name="error_unable_to_load_license">Lizenz konnte nicht geladen werden</string>
<string name="copyright" formatted="true">© %1$s von %2$s unter %3$s</string>
<string name="tab_about">Über</string>
<string name="app_description">Eine freie, schlanke Streaming App für Android.</string>
<string name="app_description">Eine freie, schlanke Streaming-App für Android.</string>
<string name="app_license_title">NewPipes Lizenz</string>
<string name="contribution_encouragement">Ob Ideen, Übersetzung, Design-Änderungen, Code-Aufräumung oder richtig große Code-Änderungen - Hilfe ist immer willkommen. Je mehr geholfen wird, desto besser wird NewPipe!</string>
<string name="contribution_encouragement">Ob Ideen, Übersetzungen, Design-Änderungen, Code-Aufräumung oder richtig große Code-Änderungen Hilfe ist immer willkommen. Je mehr geholfen wird, desto besser wird NewPipe!</string>
<string name="title_licenses">Drittanbieter-Lizenzen</string>
<string name="view_on_github">Auf GitHub ansehen</string>
<string name="contribution_title">Beitragen</string>
<string name="settings_category_downloads_title">Download</string>
<string name="settings_file_charset_title">Erlaubt Zeichen im Dateinamen</string>
<string name="settings_file_charset_title">Erlaubte Zeichen im Dateinamen</string>
<string name="settings_file_replacement_character_summary">Ungültige Zeichen werden durch dieses Zeichen ersetzt</string>
<string name="settings_file_replacement_character_title">Ersetzungszeichen</string>
@ -222,7 +222,7 @@
<string name="resume_on_audio_focus_gain_summary">Nach Unterbrechungen (z.B. Telefonaten) Wiedergabe fortsetzen</string>
<string name="notification_channel_name">NewPipe Benachrichtigung</string>
<string name="notification_channel_name">NewPipe-Benachrichtigung</string>
<string name="notification_channel_description">Benachrichtigungen für NewPipe-Hintergrund- und Pop-up Player</string>
<string name="tab_main">Hauptmenü</string>
@ -255,7 +255,7 @@
<string name="item_deleted">Element gelöscht</string>
<string name="resume_on_audio_focus_gain_title">Fortsetzen bei erneutem Fokussieren</string>
<string name="settings_category_player_title">Player</string>
<string name="empty_subscription_feed_subtitle">Nichts hier außer Grillen</string>
<string name="empty_subscription_feed_subtitle">Nichts hier außer das Zirpen der Grillen</string>
<string name="delete_item_search_history">Möchtest du dieses Element aus dem Suchverlauf löschen?</string>
<string name="blank_page_summary">Leere Seite</string>
@ -266,7 +266,7 @@
<string name="play_all">Alles abspielen</string>
<string name="play_queue_remove">Entfernen</string>
<string name="play_queue_audio_settings">Audio Einstellungen</string>
<string name="play_queue_audio_settings">Audio-Einstellungen</string>
<string name="player_stream_failure">Konnte diesen Stream nicht abspielen</string>
<string name="main_page_content">Inhalt der Hauptseite</string>
<string name="subscription_page_summary">Abonnement-Seite</string>
@ -298,10 +298,10 @@
<string name="donation_title">Spenden</string>
<string name="give_back">Zurückgeben</string>
<string name="website_title">Website</string>
<string name="website_encouragement">Besuchen Sie die NewPipe Website für weitere Informationen und Neuigkeiten.</string>
<string name="donation_encouragement">NewPipe wird von Freiwilligen entwickelt, die ihre Freizeit dafür aufbringen, die beste Nutzererfahrung zu bieten. Geben Sie etwas zurück, um Entwicklern zu helfen, NewPipe bei einer Tasse Kaffee noch besser zu machen.</string>
<string name="website_encouragement">Besuche die NewPipe Website für weitere Informationen und Neuigkeiten.</string>
<string name="donation_encouragement">NewPipe wird von Freiwilligen entwickelt, die ihre Freizeit dafür aufbringen, die beste Nutzererfahrung zu bieten. Gib etwas zurück, um Entwicklern zu helfen, NewPipe bei einer Tasse Kaffee noch besser zu machen.</string>
<string name="service_title">Service</string>
<string name="no_player_found_toast">Kein Streamplayer gefunden (Du kannst VLC installieren, um den Stream abzuspielen)</string>
<string name="no_player_found_toast">Keinen Streamplayer gefunden (du kannst VLC installieren, um den Stream abzuspielen)</string>
<string name="default_content_country_title">Standard-Land des Inhalts</string>
<string name="always">Immer</string>
<string name="just_once">Nur einmal</string>
@ -373,8 +373,8 @@
<string name="caption_font_size_settings_title">Schriftgröße der Untertitel</string>
<string name="dismiss">Abbrechen</string>
<string name="normal_caption_font_size">Normale Schriftgröße</string>
<string name="controls_download_desc">Stream-Datei herunterladen</string>
<string name="use_inexact_seek_title">Benutze schnelle ungenaue Suche</string>
<string name="controls_download_desc">Stream-Datei herunterladen.</string>
<string name="use_inexact_seek_title">Benutze schnelle, ungenaue Suche</string>
<string name="use_inexact_seek_summary">Mit ungenauem Suchen kann die Abspielposition schneller erreicht werden, aber auf Kosten der Genauigkeit</string>
<string name="file">Datei</string>
@ -397,13 +397,13 @@
<string name="import_file_title">Datei importieren</string>
<string name="previous_export">Vorheriger Export</string>
<string name="import_network_expensive_warning">Beachten Sie, dass diese Aktion das Netzwerk stark belasten kann.
<string name="import_network_expensive_warning">Beachte, dass diese Aktion das Netzwerk stark belasten kann.
\n
\nMöchten Sie fortfahren?</string>
\nMöchtest du fortfahren?</string>
<string name="download_thumbnail_title">Vorschaubilder laden</string>
<string name="thumbnail_cache_wipe_complete_notice">Bildercache gelöscht</string>
<string name="metadata_cache_wipe_title">Leere die gecachten Metadaten</string>
<string name="metadata_cache_wipe_summary">Entfene alle gecachten Website-Daten</string>
<string name="metadata_cache_wipe_summary">Entferne alle gecachten Website-Daten</string>
<string name="metadata_cache_wipe_complete_notice">Metadatencache gelöscht</string>
<string name="settings_category_debug_title">Debug</string>
<string name="invalid_source">Ungültige Datei-/Inhaltsquelle</string>
@ -421,7 +421,7 @@
<string name="unhook_checkbox">Aushaken (kann zu Verzerrungen führen)</string>
<string name="playback_nightcore">Nightcore</string>
<string name="playback_default">Standard</string>
<string name="download_thumbnail_summary">Deaktivieren Sie diese Option, um das Laden aller Miniaturansichten zu stoppen und Daten und Speicherverbrauch zu sparen. Wenn Sie dies ändern, wird sowohl der In-Memory- als auch der On-Disk-Image-Cache gelöscht.</string>
<string name="download_thumbnail_summary">Deaktiviere diese Option, um das Laden aller Miniaturansichten zu stoppen und Daten und Speicherverbrauch zu sparen. Wenn du dies änderst, wird sowohl der In-Memory- als auch der On-Disk-Image-Cache gelöscht.</string>
<string name="auto_queue_title">Nächsten Stream automatisch einreihen</string>
<string name="auto_queue_summary">Automatisches Anhängen eines verwandten Streams beim Abspielen des letzten Streams in einer nicht wiederholten Warteschlange.</string>
<string name="drawer_header_action_paceholder_text">Hier wird bald etwas stehen ;D</string>
@ -470,7 +470,17 @@
<string name="search_history_deleted">Suchverlauf gelöscht.</string>
<string name="one_item_deleted">1 Element gelöscht.</string>
<string name="app_license">NewPipe ist copyleft libre Software: Sie können es nach Belieben benutzen, studieren, mit anderen teilen und verbessern. Insbesondere können Sie sie unter den Bedingungen der GNU General Public License, wie von der Free Software Foundation veröffentlicht, weitergeben und/oder modifizieren, entweder unter Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren Version.</string>
<string name="import_settings">Möchten Sie auch Einstellungen importieren?</string>
<string name="app_license">NewPipe ist freie Copyleft-Software: Du kannst es nach Belieben benutzen, studieren, mit anderen teilen und verbessern. Insbesondere kannst du sie unter den Bedingungen der GNU General Public License, wie von der Free Software Foundation veröffentlicht, weitergeben und/oder modifizieren, entweder unter Version 3 der Lizenz oder (nach deiner Wahl) jeder späteren Version.</string>
<string name="import_settings">Möchtest du auch Einstellungen importieren?</string>
<string name="privacy_policy_title">NewPipe-Datenschutzbestimmungen</string>
<string name="privacy_policy_encouragement">Dem NewPipe-Projekt ist Datenschutz sehr wichtig. Deshalb sammelt diese App keine Daten ohne deine Zustimmung.
\nNewPipes Datenschutzbestimmungen erklären im Detail, welche Daten beim Absenden eines Absturzberichtes verschickt und gespeichert werden.</string>
<string name="read_privacy_policy">Lies die Datenschutzbestimmungen</string>
<string name="accept">Akzeptieren</string>
<string name="decline">Ablehnen</string>
<string name="start_accept_privacy_policy">Um den Anforderungen der Datenschutz-Grundverordnung (DSGVO) genüge zu tun, möchten wir dich hiermit auf die Datenschutzbedingungen von NewPipe aufmerksam machen. Bitte lies sie sorgfältig durch.
\nDu musst ihr zustimmen, um einen Bugreport an uns zu senden.</string>
<string name="limit_data_usage_none_description">Unbegrenzt</string>
<string name="limit_mobile_data_usage_title">Auflösung bei Verwendung mobiler Daten begrenzen</string>
</resources>

View File

@ -45,7 +45,7 @@
<string name="detail_dislikes_img_view_description">Malŝatoj</string>
<string name="use_tor_title">Uzi la programon Tor</string>
<string name="no_player_found">Neniu elsendlflua ludilo trovita. Ĉu instali la aplikaĵon VLC?</string>
<string name="kore_not_found">La aplikaĵo Kore ne estas trovita. Ĉu instali la aplikaĵon Kore?</string>
<string name="kore_not_found">La aplikaĵo Kore ne estas trovita. Ĉu instali ĝin?</string>
<string name="show_next_and_similar_title">Montri la sekvan videon kaj similajn videojn</string>
<string name="could_not_load_thumbnails">Ĉiuj miniaturoj ne ŝargeblas</string>
<string name="youtube_signature_decryption_error">La subskribo de la ligilo de la video ne malĉifreblas.</string>
@ -59,12 +59,12 @@
<string name="download_path_audio_title">Elŝutujo por muziko</string>
<string name="use_tor_summary">(Eksperimenta) Devigi elŝuttrafikon tra Tor por pli bona privateco (elsendfluaj videoj estas ankoraŭ ne subtenitaj).</string>
<string name="show_play_with_kodi_summary">Montri opcion por ludi videon per la aplikaĵo Kodi.</string>
<string name="download_path_summary">Dosierujo por konservi elŝutitajn videojn.</string>
<string name="show_play_with_kodi_summary">Montri opcion por ludi videon per la aplikaĵo Kodi</string>
<string name="download_path_summary">Dosierujo por konservi elŝutitajn videojn</string>
<string name="download_path_audio_summary">Dosierujo por konservi elŝutitan muzikon</string>
<string name="download_path_dialog_title">Elektu lokon por konservi elŝutitajn videojn</string>
<string name="download_path_audio_dialog_title">Elektu lokon por konservi elŝutitan muzikon.</string>
<string name="download_path_audio_dialog_title">Elektu lokon por konservi elŝutitan muzikon</string>
<string name="content">Enhavo</string>
<string name="error_report_button_text">Raporti eraron per retpoŝto</string>
@ -77,13 +77,39 @@
<string name="report_error">Raporti eraron</string>
<string name="video">Video</string>
<string name="retry">Reprovi</string>
<string name="main_bg_subtitle">Alklaku serĉon por ekkomenci</string>
<string name="main_bg_subtitle">Tapu serĉo por komenci</string>
<string name="no_player_found_toast">Neniu elsendlflua ludilo trovita (instalu VLC por ludi ĝin)</string>
<string name="open_in_popup_mode">Malferu per fenestreta maniero</string>
<string name="use_external_video_player_summary">Iuj rezolucioj NE havos aŭdion kiam ĉi tiu eblo estas ebligita.</string>
<string name="popup_mode_share_menu_title">Fenestreta maniero de NewPipe</string>
<string name="open_in_popup_mode">Malfermi en ŝprucfenestron modon</string>
<string name="use_external_video_player_summary">Iuj rezolucioj NE havos aŭdion kiam ĉi tiu eblo estas ebligita</string>
<string name="popup_mode_share_menu_title">NewPipe ŝprucfenestron modon</string>
<string name="subscribe_button_title">Aboni</string>
<string name="subscribed_button_title">Abonita</string>
<string name="channel_unsubscribed">Kanalo malabonita</string>
<string name="subscription_change_failed">Neebla ŝanĝi abonon</string>
<string name="controls_download_desc">Elŝutu dosieron.</string>
<string name="subscription_update_failed">Ne eblas ĝisdatigi abonon</string>
<string name="show_info">Montri informon</string>
<string name="tab_main">Ĉefa</string>
<string name="tab_subscriptions">Abonoj</string>
<string name="tab_bookmarks">Legosigno</string>
<string name="fragment_whats_new">Kio novas</string>
<string name="controls_background_title">Fono</string>
<string name="controls_popup_title">ŝprucfenestron</string>
<string name="controls_add_to_playlist_title">Aldonu al</string>
<string name="autoplay_by_calling_app_title">Aŭtomata play</string>
<string name="autoplay_by_calling_app_summary">Ludas video kiam NewPipe vokas de alia programo</string>
<string name="default_popup_resolution_title">Defaŭlta popup rezolucio</string>
<string name="show_higher_resolutions_title">Montri pli altajn rezoluciojn</string>
<string name="show_higher_resolutions_summary">Nur kelkaj aparatoj subtenas ludante 2K / 4K filmetojn</string>
<string name="default_video_format_title">Defaŭlta video-formato</string>
<string name="black_theme_title">Nigra</string>
<string name="popup_remember_size_pos_title">Memoru ŝprucfenestron kaj pozicion</string>
<string name="popup_remember_size_pos_summary">Memoru lastan grandecon kaj pozicion de ŝprucfenestro</string>
<string name="use_inexact_seek_title">Uzu rapide, ne preciza serĉon</string>
<string name="use_inexact_seek_summary">Ne preciza serĉo permesas al la ludanto serĉi poziciojn pli rapide kun malalta precizeco</string>
<string name="download_thumbnail_title">Ŝarĝi bildetojn</string>
</resources>

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="view_count_text">%1$s visualizaciones</string>
<string name="view_count_text">%1$s de visualizaciones</string>
<string name="upload_date_text">Publicado el %1$s</string>
<string name="no_player_found">No se encontró ningún reproductor de vídeo. ¿Desea instalar VLC?</string>
<string name="install">Instalar</string>
@ -112,7 +112,7 @@
<string name="finish">OK</string>
<string name="msg_name">Nombre del archivo</string>
<string name="msg_threads">Threads</string>
<string name="msg_threads">Trapos</string>
<string name="msg_error">Error</string>
<string name="msg_server_unsupported">Servidor no soportado</string>
<string name="msg_exists">El archivo ya existe</string>
@ -398,7 +398,7 @@ abrir en modo popup</string>
<string name="enable_leak_canary_summary">La monitorización de fugas de memoria puede causar que la app no responda cuando hay Heap Dump</string>
<string name="enable_disposed_exceptions_title">Reportar errores fuera del ciclo de duración</string>
<string name="enable_disposed_exceptions_summary">Forzar la notificación de excepciones no entregables de RX que ocurren fuera del fragmento o del ciclo de actividad después de disponer</string>
<string name="enable_disposed_exceptions_summary">Forzar reporte de excepciones no entregables de RX fuera del fragmento o del ciclo de actividad después del descarte</string>
<string name="use_inexact_seek_title">Usar búsqueda rápida inexacta</string>
<string name="use_inexact_seek_summary">La búsqueda inexacta permite al reproductor buscar posiciones más rápido con menor precisión</string>
@ -425,22 +425,20 @@ abrir en modo popup</string>
<string name="import_file_title">Importar archivo</string>
<string name="previous_export">Exportación anterior</string>
<string name="subscriptions_import_unsuccessful">Importación de suscripciones fallida</string>
<string name="subscriptions_export_unsuccessful">Exportación de suscripciones fallida</string>
<string name="subscriptions_import_unsuccessful">No se pudo importar suscripciones</string>
<string name="subscriptions_export_unsuccessful">No se pudo exportar suscripciones</string>
<string name="import_youtube_instructions">Para importar sus suscripciones de YouTube, necesitará el archivo de exportación, el cual puede ser descargado siguiendo estas instrucciones:
\n
\n1. Vaya a esta URL: %1$s
\n2. Ingrese a su cuenta cuando se le pida
\n3. Una descarga debería comenzar (ese es el archivo de exportación)</string>
<string name="import_soundcloud_instructions">Para importar sus seguimientos de SoundCloud, debe conocer la URL o el ID de su perfil. Si es así, simplemente escriba cualquiera de ellos en la entrada de abajo y ya está listo para comenzar.
\n
\nSi no es así, puede seguir estos pasos:
\n
\n1. Active el \"modo escritorio\" en algún navegador (el sitio no está disponible para dispositivos móviles)
\n2. Vaya a esta URL: %1$s
\n3. Ingrese a su cuenta cuando se le pida
\n4. Copie la URL a la que fue redireccionado (esa es la URL de su perfil)</string>
<string name="import_youtube_instructions">Importe suscripciones de YouTube descargando el archivo de exportación:
\n
\n1. Vaya a esta URL: %1$s
\n2. Inicie sesión cuando se le pida
\n3. Una descarga debería empezar (ese es el archivo de exportación)</string>
<string name="import_soundcloud_instructions">Importe un perfil de SoundCloud escribiendo la URL o su ID:
\n
\n1. Active el \"modo escritorio\" en un navegador web (el sitio no está disponible para dispositivos móviles)
\n2. Vaya a esta URL: %1$s
\n3. Inicie sesión cuando se le pida
\n4. Copie la URL del perfil a la que fue redireccionado.</string>
<string name="import_soundcloud_instructions_hint">suID, soundcloud.com/suID</string>
<string name="import_network_expensive_warning">Tenga en cuenta que esta operación puede ser costosa para la red.
@ -452,7 +450,7 @@ abrir en modo popup</string>
<string name="metadata_cache_wipe_title">Metadatos eliminados del caché</string>
<string name="metadata_cache_wipe_summary">Eliminar todos los datos de la página web en caché</string>
<string name="metadata_cache_wipe_complete_notice">Metadatos del caché limpiados</string>
<string name="playback_speed_control">Control de velocidad de la reproducción</string>
<string name="playback_speed_control">Controles de velocidad de reproducción</string>
<string name="playback_tempo">Tiempo</string>
<string name="playback_pitch">Tono</string>
<string name="unhook_checkbox">Desenganchar (puede casusar distorsión)</string>
@ -479,4 +477,15 @@ abrir en modo popup</string>
<string name="one_item_deleted">1 elemento eliminado.</string>
<string name="app_license">NewPipe es un software copyleft libre: puedes usarlo, estudiarlo, compartirlo y mejorarlo a tu antojo. Específicamente, puedes redistribuirlo y/o modificarlo bajo los términos de la Licencia Pública General GNU publicada por la Free Software Foundation, ya sea la versión 3 de la Licencia, o (a tu elección) cualquier versión posterior.</string>
<string name="import_settings">¿Desea importar también los ajustes?</string>
<string name="privacy_policy_title">Política de Privacidad de NewPipe</string>
<string name="privacy_policy_encouragement">El proyecto NewPipe toma su privacidad muy en serio. Por lo tanto, la aplicación no recopila ningún dato sin su consentimiento. La política de privacidad de NewPipe explica en detalle qué datos se envían y almacenan cuando envía un informe de fallas.</string>
<string name="read_privacy_policy">Leer la Política de Privacidad</string>
<string name="start_accept_privacy_policy">Para cumplir con el Reglamento general europeo de protección de datos (GDPR), podemos llamar su atención sobre la política de privacidad de NewPipe. Por favor léelo cuidadosamente. Debe aceptarlo para enviarnos el informe de error.</string>
<string name="accept">Aceptar</string>
<string name="decline">Declinar</string>
<string name="limit_data_usage_none_description">Sin límite</string>
<string name="limit_mobile_data_usage_title">Limitar resolución cuando se use Datos Móviles</string>
</resources>

View File

@ -321,7 +321,7 @@
<string name="controls_add_to_playlist_title">Gehitu hona</string>
<string name="use_inexact_seek_title">Erabili gutxi gora beherako bilaketa azkarra</string>
<string name="use_inexact_seek_title">Erabili bilaketa azkar ez zehatza</string>
<string name="download_thumbnail_title">Kargatu iruditxoak</string>
<string name="thumbnail_cache_wipe_complete_notice">Irudien cache-a ezabatuta</string>
<string name="metadata_cache_wipe_title">Ezabatu cache-ko metadatuak</string>
@ -450,4 +450,22 @@
<string name="unhook_checkbox">Deslotu (distortsioa sor lezake)</string>
<string name="playback_nightcore">Nightcore</string>
<string name="playback_default">Lehenetsia</string>
</resources>
<string name="import_settings">Ezarpenak ere inportatu nahi dituzu?</string>
<string name="use_inexact_seek_summary">Bilaketa ez zehatzak posizioak azkarrago baina prezisio gutxiagoz bilatzea ahalbidetzen du</string>
<string name="download_thumbnail_summary">"Desgaitu iruditxoak kargatzea gelditzeko eta datuak eta memoria aurrezteko. Hau aldatzean memoria eta diskoko irudien cache-ak garbituko dira."</string>
<string name="app_license">NewPipe Software Librea eta Copyleft da: Nahi eran erabili, ikertu, partekatu eta hobetu dezakezu. Zehazki, elkarbanatzea eta aldatzea Free Software Foundation-ek argitaratutako GNU General Public License-ren 3. bertsioa edo berriagoren baten terminoen arabera egiteko baimena duzu.</string>
<string name="enable_disposed_exceptions_summary">Behartu aktibitatearen bizitza ziklotik kanpo baztertu eta gero entregatu ezin diren Rx salbuespenen inguruko txostena</string>
<string name="privacy_policy_title">NewPipe pribatutasun politika</string>
<string name="privacy_policy_encouragement">NewPipe proiektuak aintzat hartzen du zure pribatutasuna. Aplikazioak ez du zure baimenik gabe daturik jasotzen.
\nNewPipe pribatutasun politikak azaltzen du zehazki bidali eta gordetako informazioa zein den kraskatze txosten bat bidaltzen duzunean.</string>
<string name="read_privacy_policy">Irakurri pribatutasun politika</string>
<string name="start_accept_privacy_policy">"European General Data Protection Regulation (GDPR) legea betetzeko, NewPipe pribatutasun politika irakurtzera gonbidaatzen zaitugu.
\nAkats txosten bat bidali ahal izateko onartu behar duzu."</string>
<string name="accept">Onartu</string>
<string name="decline">Ukatu</string>
<string name="limit_data_usage_none_description">Mugagabea</string>
<string name="limit_mobile_data_usage_title">Mugatu bereizmena datu mugikorrak erabiltzean</string>
</resources>

View File

@ -296,7 +296,7 @@
<string name="start_here_on_background">Démarrer ici en arrière-plan</string>
<string name="start_here_on_popup">Démarrer ici en fenêtré</string>
<string name="donation_title">Donner</string>
<string name="donation_encouragement">NewPipe est développé par des volontaires sur leur temps libre afin de vous proposer la meilleure expérience possible. Vous pouvez leur offrir un café pour les soutenir dans leurs efforts et rendre NewPipe encore meilleur !</string>
<string name="donation_encouragement">NewPipe est développé par des volontaires sur leur temps libre afin de vous proposer la meilleure expérience possible. Vous pouvez leur offrir un café pour les soutenir dans leurs efforts et rendre NewPipe encore meilleur.</string>
<string name="website_title">Site</string>
<string name="website_encouragement">Visitez le site internet de NewPipe pour plus d\'informations et de nouvelles.</string>
<string name="give_back">Donner en retour</string>
@ -468,9 +468,15 @@
<string name="view_history_deleted">Voir lhistorique supprimé.</string>
<string name="clear_search_history_title">Supprimer l\'historique des recherches</string>
<string name="clear_search_history_summary">Supprimer l\'historique de recherche par mot clef.</string>
<string name="delete_search_history_alert">"Supprimer tout l\'historique de recherche. "</string>
<string name="delete_search_history_alert">Supprimer tout l\'historique de recherche.</string>
<string name="search_history_deleted">Historique des recherches effacé.</string>
<string name="one_item_deleted">1 élément supprimé.</string>
<string name="app_license">"NewPipe est un logiciel sous licence libre : Vous pouvez l\'utiliser, l\'étudier, le partager et l\'améliorer comme bon vous semble. Vous pouvez le redistribuer et/ou le modifier sous les termes de la licence générale publique GNU, comme publiée par la Free Software Foundation, dans sa version 3, ou, à votre convenance, dans une version plus récente. "</string>
</resources>
<string name="app_license">"NewPipe est un logiciel sous licence libre : Vous pouvez l\'utiliser, l\'étudier, le partager et l\'améliorer comme bon vous semble. Vous pouvez le redistribuer et/ou le modifier sous les termes de la licence générale publique GNU, comme publiée par la Free Software Foundation, dans sa version 3, ou, à votre convenance, dans une version plus récente."</string>
<string name="privacy_policy_title">Politique de confidentialité de NewPipe</string>
<string name="read_privacy_policy">Lire la politique de confidentialité</string>
<string name="import_settings">Voulez-vous également importer des paramètres ?</string>
<string name="accept">Accepter</string>
<string name="decline">Refuser</string>
</resources>

View File

@ -76,7 +76,7 @@
<string name="download_path_audio_summary">डाउनलोड किये गए ऑडियो फाइल की जगह</string>
<string name="download_path_audio_dialog_title">ऑडियो फाइल डाउनलोड करने के लिए जगह दर्ज करें</string>
<string name="autoplay_by_calling_app_summary">जब NewPipe को दुसरे एप्प से बुलावा आये तो विडियो अपनी स्वेच्छा से चले</string>
<string name="autoplay_by_calling_app_summary">अन्य अप्प के द्वारा NewPipe के आह्वान पर वीडियो तुरंत चले</string>
<string name="default_resolution_title">वीडियो का डिफ़ॉल्ट रिज़ॉल्यूशन</string>
<string name="default_popup_resolution_title">विडियो पॉपअप का डिफ़ॉल्ट रिज़ॉल्यूशन</string>
<string name="show_higher_resolutions_title">उच्च रिज़ॉल्यूशन दिखाएं</string>
@ -93,8 +93,8 @@
<string name="dark_theme_title">काला</string>
<string name="popup_remember_size_pos_title">विडियो पॉपअप की आकर और उसकी स्थति को याद रखे</string>
<string name="popup_remember_size_pos_summary">विडियो पॉपअप के पहले वाली आकर और उसकी स्थिति को याद रखे</string>
<string name="player_gesture_controls_title">विडियो प्लेयर के gesture कण्ट्रोल</string>
<string name="player_gesture_controls_summary">विडियो प्लेयर की ब्राइटनेस और ध्वनी को नियंत्रण के लिए फ़ोन में gesture से इशारो का प्रयोग करे</string>
<string name="player_gesture_controls_title">प्लेयर इशारा नियंत्रण</string>
<string name="player_gesture_controls_summary">विडियो प्लेयर की ब्राइटनेस और ध्वनी को नियंत्रण के लिए फ़ोन में इशारो का प्रयोग करे</string>
<string name="show_search_suggestions_title">खोज के सुझाव देखे</string>
<string name="show_search_suggestions_summary">जब कुछ ढूंड रहे हो तो सुझाव दिखाये</string>
<string name="enable_search_history_title">खोज के इतिहास को देखे</string>
@ -376,4 +376,16 @@
<string name="enable_leak_canary_summary">हीप डंप करने के दौरान मेमोरी लीक मॉनिटरिंग app को अनुत्तरदायी बना सकता है</string>
<string name="enable_disposed_exceptions_title">Out-of-Lifecycle त्रुटियों की रिपोर्ट करें</string>
<string name="download_thumbnail_title">छायाप्रारुप लोड करें</string>
<string name="use_inexact_seek_title">तेजी से अचूक तलाश का प्रयोग करें</string>
<string name="use_inexact_seek_summary">अचूक खोज प्लेयर को कम परिशुद्धता के साथ तेजी से पदों की तलाश करने की अनुमति देता है</string>
<string name="download_thumbnail_summary">सभी थंबनेल को डेटा और मेमोरी उपयोग पर लोड करने और सहेजने से रोकने के लिए अक्षम करें। इसे बदलने से इन-मेमोरी और ऑन-डिस्क छवि कैश दोनों साफ़ हो जाएंगे।</string>
<string name="thumbnail_cache_wipe_complete_notice">छवि कैश मिटा दिया</string>
<string name="metadata_cache_wipe_title">कैश मेटाडेटा वाइप करें</string>
<string name="metadata_cache_wipe_summary">सभी कैश किए गए वेबपृष्ठ डेटा हटाएं</string>
<string name="metadata_cache_wipe_complete_notice">मेटाडाटा कैश मिटा दिया गया</string>
<string name="auto_queue_title">अगली स्ट्रीम को स्वचालित रूप से जोड़ें</string>
<string name="auto_queue_summary">गैर-दोहराने वाली कतार में अंतिम स्ट्रीम चलाते समय संबंधित स्ट्रीम को स्वतः संलग्न करें।</string>
<string name="file">फाइल</string>
</resources>

View File

@ -50,7 +50,7 @@
<string name="play_btn_text">Putar</string>
<string name="content">Konten</string>
<string name="show_age_restricted_content_title">Tampilkan konten batasan usia</string>
<string name="video_is_age_restricted">Video Dibatasi Usia. Aktifkan video batasan usia bisa lewat Pengaturan.</string>
<string name="video_is_age_restricted">"Video Dibatasi Usia. Memperbolehkan ditonton dapat diatur lewat Pengaturan."</string>
<string name="network_error">Galat jaringan</string>
<string name="could_not_load_thumbnails">Tidak bisa memuat semua Thumbnail</string>
<string name="did_you_mean">Maksud Anda: %1$s ?</string>
@ -66,12 +66,12 @@
<string name="content_not_available">Konten tidak tersedia</string>
<string name="blocked_by_gema">Diblokir oleh GEMA</string>
<string name="could_not_setup_download_menu">Tidak bisa menyiapkan menu unduhan</string>
<string name="live_streams_not_supported">Ini adalah SIARAN LANGSUNG, yang mana ini belum didukung.</string>
<string name="live_streams_not_supported">Ini adalah SIARAN LANGSUNG, yang sekarang ini belum didukung.</string>
<string name="could_not_load_image">Tidak bisa memuat gambar</string>
<string name="sorry_string">Maaf, hal tersebut seharusnya tidak terjadi.</string>
<string name="error_report_button_text">Lapor galat via surat elektronik</string>
<string name="error_snackbar_message">Maaf, telah terjadi galat.</string>
<string name="error_snackbar_action">LAPOR</string>
<string name="error_snackbar_action">LAPORKAN</string>
<string name="what_device_headline">Info:</string>
<string name="what_happened_headline">Yang terjadi:</string>
<string name="your_comment">Komentar Anda (dalam bahasa Inggris):</string>
@ -154,7 +154,7 @@ membuka di mode popup</string>
<string name="default_video_format_title">Format video baku</string>
<string name="default_popup_resolution_title">Resolusi popup bawaan</string>
<string name="default_popup_resolution_title">Resolusi popup baku</string>
<string name="show_higher_resolutions_title">Tampilkan resolusi yang lebih tinggi</string>
<string name="show_higher_resolutions_summary">Hanya perangkat tertentu yang mendukung pemutaran video 2K/4K</string>
<string name="controls_background_title">Latar Belakang</string>
@ -199,11 +199,11 @@ membuka di mode popup</string>
<string name="app_description">Aplikasi streaming gratis dan ringan untuk Android.</string>
<string name="view_on_github">Lihat di Github</string>
<string name="app_license_title">Lisensi NewPipe</string>
<string name="contribution_encouragement">Terlepas apakah Anda memiliki ide, terjemahan, perubahan desain, pembersihan kode, atau perubahan kode yang signifikan, segala bantuan akan selalu diterima. Semakin banyak akan semakin baik jadinya!</string>
<string name="contribution_encouragement">Terlepas apakah Anda memiliki ide untuk; terjemahan, perubahan desain, pembersihan kode, atau perubahan kode yang signifikan, segala bantuan akan selalu diterima. Semakin banyak akan semakin baik jadinya!</string>
<string name="read_full_license">Baca lisensi</string>
<string name="contribution_title">Kontribusi</string>
<string name="subscribe_button_title">Berlangganan</string>
<string name="subscribed_button_title">Langganan</string>
<string name="subscribed_button_title">Masih Berlangganan</string>
<string name="fragment_whats_new">Apa Yang Baru</string>
<string name="resume_on_audio_focus_gain_title">Lanjutkan saat fokus</string>
@ -227,37 +227,37 @@ membuka di mode popup</string>
<string name="auto_queue_summary">Otomatis tambahkan stream yang terkait ketika memutar stream terakhir dalam antrean tanpa perulangan.</string>
<string name="enable_watch_history_summary">Simpan daftar video yang telah ditonton</string>
<string name="show_hold_to_append_title">Tampilkan tip \"tahan untuk menambahkan\"</string>
<string name="show_hold_to_append_summary">Tampilkan tip ketika belakang layar atau tombol popup ditekan pada laman detail video</string>
<string name="show_hold_to_append_summary">Tampilkan tip ketika tombol latar belakang atau popup ditekan pada halaman detail video</string>
<string name="default_content_country_title">Negara konten baku</string>
<string name="service_title">Layanan</string>
<string name="settings_category_player_title">Pemutar</string>
<string name="settings_category_player_behavior_title">Perilaku</string>
<string name="settings_category_history_title">Riwayat &amp; Tembolok</string>
<string name="settings_category_debug_title">Debug</string>
<string name="background_player_append">Mengantri di belakang pemutar</string>
<string name="popup_playing_append">Mengantri di pemutar sembulan</string>
<string name="playlist">Daftar putar</string>
<string name="background_player_append">Mengantre di belakang pemutar</string>
<string name="popup_playing_append">Mengantre di popup pemutar</string>
<string name="playlist">Daftar Putar</string>
<string name="undo">Tidak jadi</string>
<string name="play_all">Putar Semua</string>
<string name="always">Selalu</string>
<string name="just_once">Hanya Sekali</string>
<string name="file">Berkas</string>
<string name="notification_channel_description">Notifikasi untuk Layar Belakang NewPipe dan Pemutar Sembulan</string>
<string name="notification_channel_description">"Notifikasi untuk Latar Belakang NewPipe dan Popup Pemutar "</string>
<string name="unknown_content">[Tidak diketahui]</string>
<string name="toggle_orientation">Ubah Orientasi</string>
<string name="switch_to_background">Kembali ke Layar Belakang</string>
<string name="switch_to_popup">Kembali ke Sembulan</string>
<string name="switch_to_popup">Kembali ke Popup</string>
<string name="switch_to_main">Kembali ke Utama</string>
<string name="import_data_title">Impor basis data</string>
<string name="export_data_title">Ekspor basis data</string>
<string name="import_data_title">Impor database</string>
<string name="export_data_title">Ekspor database</string>
<string name="import_data_summary">Akan menimpa riwayat dan langganan kamu saat ini</string>
<string name="export_data_summary">Ekspor riwayat, langganan dan daftar putar.</string>
<string name="export_data_summary">Ekspor riwayat, daftat langganan dan daftar putar.</string>
<string name="player_stream_failure">Tidak bisa memutar stream ini</string>
<string name="player_unrecoverable_failure">Galat yg tidak bisa dibetulkan terjadi di pemutar</string>
<string name="player_unrecoverable_failure">Galat yg tidak bisa dipulihkan terjadi di pemutar</string>
<string name="player_recoverable_failure">Memulihkan dari galat pemutar</string>
<string name="external_player_unsupported_link_type">Playar eksternal tidak mendukung tipe tautan ini</string>
<string name="invalid_url_toast">URL tidak valid</string>
@ -265,7 +265,7 @@ membuka di mode popup</string>
<string name="audio_streams_empty">Stream audio tidak ditemukan</string>
<string name="invalid_directory">Direktori tidak valid</string>
<string name="invalid_source">Berkas/konten sumber tidak valid</string>
<string name="invalid_file">Berkas tidak ada atau tidak memiliki izin untuk membaca atau menulisnya</string>
<string name="invalid_file">Berkas tid tersedia atau tidak memiliki izin untuk membaca atau menulisnya</string>
<string name="file_name_empty_error">Nama berkas tidak boleh kosong</string>
<string name="error_occurred_detail">Sebuah galat terjadi: %1$s</string>
@ -296,7 +296,7 @@ membuka di mode popup</string>
<string name="donation_title">Donasi</string>
<string name="donation_encouragement">NewPipe dikembangkan oleh relawan yang menyisihkan waktu untuk memberi Anda pengalaman terbaik. Berikan dukungan kepada pengembang membuat NewPipe menjadi lebih baik lagi sembari menikmati secangkir kopi.</string>
<string name="give_back">Beri balik</string>
<string name="give_back">Beri dukungan</string>
<string name="website_title">Situs</string>
<string name="website_encouragement">Kunjungi situs web NewPipe untuk info dan berita.</string>
<string name="title_history_search">Sudah dicari</string>
@ -305,48 +305,48 @@ membuka di mode popup</string>
<string name="delete_item_search_history">Kamu ingin menghapus item ini dari riwayat pencarian?</string>
<string name="delete_stream_history_prompt">Kamu ingin menghapus item ini dari riwayat tontonan?</string>
<string name="delete_all_history_prompt">Kamu yakin ingin menghapus semua item dari riwayat?</string>
<string name="title_last_played">Diputar Terakhir</string>
<string name="title_last_played">Terakhir Diputar</string>
<string name="title_most_played">Paling sering Diputar</string>
<string name="main_page_content">Konten laman utama</string>
<string name="blank_page_summary">Laman Kosong</string>
<string name="kiosk_page_summary">Laman Kiosk</string>
<string name="kiosk_page_summary">Laman Kios</string>
<string name="subscription_page_summary">Laman Langganan</string>
<string name="feed_page_summary">Laman Umpan</string>
<string name="channel_page_summary">Laman Kanal</string>
<string name="select_a_channel">Pilih sebuah kanal</string>
<string name="no_channel_subscribed_yet">Tidak ada kanal yg dilanggani</string>
<string name="select_a_kiosk">Pilih sebuah kiosk</string>
<string name="select_a_kiosk">Pilih sebuah kios</string>
<string name="export_complete_toast">Ekspor berhasil</string>
<string name="import_complete_toast">Impor berhasil</string>
<string name="no_valid_zip_file">Berkas ZIP tidak valid</string>
<string name="could_not_import_all_files">Perhatian: Tidak dapat mengimpor semua berkas.</string>
<string name="override_current_data">Ini akan menimpa pengaturan kamu saat ini.</string>
<string name="kiosk">Kiosk</string>
<string name="kiosk">Kios</string>
<string name="trending">Tren</string>
<string name="top_50">Top 50</string>
<string name="new_and_hot">Baru &amp; Panas</string>
<string name="title_activity_background_player">Pemutar Layar Belakang</string>
<string name="title_activity_popup_player">Pemutar Sembulan</string>
<string name="title_activity_background_player">Pemutar Latar Belakang</string>
<string name="title_activity_popup_player">Popup Pemutar</string>
<string name="play_queue_remove">Hapus</string>
<string name="play_queue_stream_detail">Rincian</string>
<string name="play_queue_audio_settings">Pengaturan Audio</string>
<string name="hold_to_append">Tahan Untuk Mengantri</string>
<string name="enqueue_on_background">Antri di Layar Belakang</string>
<string name="enqueue_on_popup">Antri di Sembulan</string>
<string name="start_here_on_main">Mulai Putar Disini</string>
<string name="start_here_on_background">Mulai Disini di Layar Belakang</string>
<string name="start_here_on_popup">Mulai Disini di Sembulan</string>
<string name="hold_to_append">Tahan Untuk Mengantre</string>
<string name="enqueue_on_background">Antre di Latar Belakang</string>
<string name="enqueue_on_popup">Antre di Popup</string>
<string name="start_here_on_main">Mulai Putar di Sini</string>
<string name="start_here_on_background">Mulai Disini di Latar Belakang</string>
<string name="start_here_on_popup">Mulai Disini dengan Popup</string>
<string name="drawer_open">Bukan Menu</string>
<string name="drawer_open">Buka Menu</string>
<string name="drawer_close">Tutup Menu</string>
<string name="drawer_header_action_paceholder_text">Sesuatu akan muncul di sini segera ;D</string>
<string name="video_player">Pemutar video</string>
<string name="background_player">Pemutar Layar Belakang</string>
<string name="popup_player">Pemutar sembulan</string>
<string name="background_player">Pemutar Latar Belakang</string>
<string name="popup_player">Popup pemutar</string>
<string name="always_ask_open_action">Selalu tanya</string>
<string name="preferred_player_fetcher_notification_title">Mendapatkan info…</string>
@ -368,7 +368,7 @@ membuka di mode popup</string>
<string name="playlist_thumbnail_change_success">Thumbnail daftar putar diubah</string>
<string name="playlist_delete_failure">Tidak bisa menghapus daftar putar</string>
<string name="caption_none">Tidak ada Caption</string>
<string name="caption_none">Tidak Ada Takarir</string>
<string name="resize_fit">Pas</string>
<string name="resize_fill">Isi</string>
@ -381,11 +381,11 @@ membuka di mode popup</string>
<string name="larger_caption_font_size">Fon lebih besar</string>
<string name="enable_leak_canary_title">Aktifkan LeakCanary</string>
<string name="playback_nightcore"/>
<string name="playback_nightcore">Nightcore</string>
<string name="playback_default">Bawaan</string>
<string name="no_player_found_toast">Tidak ada aplikasi pemutar stream (Anda bisa memasang VLC untuk memutarnya)</string>
<string name="controls_download_desc">Unduh berkas stream.</string>
<string name="subscription_change_failed">Tidak bisa merubah langganan</string>
<string name="subscription_change_failed">Tidak bisa mengubah langganan</string>
<string name="show_info">Tampilkan info</string>
<string name="controls_add_to_playlist_title">Tambahkan Ke</string>
@ -408,4 +408,58 @@ membuka di mode popup</string>
<string name="tab_bookmarks">Markah</string>
<string name="auto_queue_title">Antre otomatis stream berikutnya</string>
<string name="channel_unsubscribed">Berhenti langganan channel ini</string>
<string name="subscription_update_failed">Tidak dapat memperbarui langganan</string>
<string name="tab_subscriptions">Langganan</string>
<string name="use_inexact_seek_title">Gunakan pencarian cepat yang tidak beraturan</string>
<string name="use_inexact_seek_summary">Pencarian tidak beraturan memungkinkan pengguna untuk mencari posisi lebih cepat dengan ketepatan yang berkurang</string>
<string name="app_license">NewPipe adalah perangkat lunak libre copyleft: Anda dapat menggunakannya, mempelajarinya, berbagi, dan meningkatkannya sesuai keinginan Anda. Secara khusus Anda dapat mendistribusikan ulang dan/atau memodifikasinya di bawah syarat-syarat Lisensi GNU General Public License yang diterbitkan oleh Free Software Foundation, baik versi 3 dari Lisensi, atau (sesuai pilihan Anda) versi yang lebih baru.</string>
<string name="import_settings">Apa Anda ingin juga mengimpor pengaturan?</string>
<string name="preferred_open_action_settings_title">Tindakan \'buka\' yang disukai</string>
<string name="preferred_open_action_settings_summary">Aksi bawaan ketika membuka konten — %s</string>
<string name="caption_setting_title">Takarir</string>
<string name="caption_setting_description">Mengubah skala keterangan teks pemutar dan gaya latar belakang. Perlu memulai ulang aplikasi untuk melihat hasilnya.</string>
<string name="enable_leak_canary_summary">Pemantauan kebocoran memori dapat menyebabkan aplikasi menjadi tidak responsif saat terjadi dumping</string>
<string name="enable_disposed_exceptions_title">Laporkan Kesalahan di-Luar-Siklus</string>
<string name="enable_disposed_exceptions_summary">Memaksa pelaporan pengecualian Rx yang tidak dapat dikirim di luar kepingan atau siklus hidup aktivitas setelah dibuang</string>
<string name="import_export_title">Impor/Ekspor</string>
<string name="import_title">Impor</string>
<string name="import_from">Impor dari</string>
<string name="export_to">Ekspor ke</string>
<string name="import_ongoing">Mengimpor…</string>
<string name="export_ongoing">Mengekspor…</string>
<string name="import_file_title">Impor file</string>
<string name="previous_export">Ekspor sebelumnya</string>
<string name="subscriptions_import_unsuccessful">Tidak dapat mengimpor langganan</string>
<string name="subscriptions_export_unsuccessful">Tidak dapat mengekspor langganan</string>
<string name="import_youtube_instructions">Impor daftar langganan YouTube dengan mengunduh file ekspor:
\n
\n1. Pergi ke URL ini: %1$s
\n2. Masuk ketika ditanya
\n3. Unduhan akan dimulai (Itulah file ekspornya)</string>
<string name="import_soundcloud_instructions">Untuk mengimpor profil SoundCloud dengan mengetik URL atau ID Anda:
\n
\n1. Nyalakan \"mode desktop\" di web-browser (situsnya tidak tersedia untuk perangkat mobile)
\n2. Pergi ke URL ini: %1$s
\n3. Log in ketika ditanya
\n4. Salin URL profil Anda ketika dialihkan.</string>
<string name="import_soundcloud_instructions_hint">IDanda, soundcloud.com/idanda</string>
<string name="import_network_expensive_warning">Perlu diingat operasi ini bisa menyedot jaringan yang mahal.
\n
\nApakah Anda ingin melanjutkan?</string>
<string name="playback_speed_control">Kontrol Kecepatan Pemutaran</string>
<string name="playback_tempo">Tempo</string>
<string name="playback_pitch">Nada</string>
<string name="unhook_checkbox">Lepas kaitan (dapat menyebabkan distorsi)</string>
</resources>

View File

@ -478,4 +478,17 @@
<string name="one_item_deleted">1 elemento eliminato.</string>
<string name="app_license">NewPipe è un software libero con licenza copyleft: puoi usarlo, studiarlo, condividerlo e migliorarlo a tuo piacimento. In particolare, è possibile ridistribuirlo e/o modificarlo secondo i termini della GNU General Public License pubblicata dalla Free Software Foundation, sia nella versione 3 della Licenza, sia (a propria discrezione) in qualsiasi versione successiva.</string>
<string name="import_settings">Vuoi anche importare le impostazioni?</string>
<string name="privacy_policy_title">Informativa sulla privacy</string>
<string name="privacy_policy_encouragement">Il progetto NewPipe tiene molto alla tua privacy. Perciò, l\'app non raccoglie alcun dato senza il tuo consenso.
\nL\'informativa sulla privacy di NewPipe spiega in dettaglio quali dati vengono inviati e memorizzati quando si invia un rapporto sugli arresti anomali.</string>
<string name="read_privacy_policy">Leggi l\'informativa sulla privacy</string>
<string name="start_accept_privacy_policy">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.</string>
<string name="accept">Accetto</string>
<string name="decline">Rifiuto</string>
<string name="limit_data_usage_none_description">Senza limiti</string>
<string name="limit_mobile_data_usage_title">Limita la risoluzione quando si utilizzano dati mobili</string>
</resources>

View File

@ -47,7 +47,7 @@
<string name="download_path_audio_dialog_title">Внеси локација за зачувување аудио</string>
<string name="autoplay_by_calling_app_title">Автоматско пуштање</string>
<string name="autoplay_by_calling_app_summary">Автоматски пушта видео кога NewPipe е повикана од друга апликација</string>
<string name="autoplay_by_calling_app_summary">Пушта видео кога NewPipe е повикана од друга апликација</string>
<string name="default_resolution_title">Стандардна резолуција</string>
<string name="default_popup_resolution_title">Стандардна резолуција на подпрозорчето</string>
<string name="show_higher_resolutions_title">Покажи повисоки резолуции</string>
@ -83,13 +83,13 @@
<string name="show_search_suggestions_summary">Покажи предлози при пребарување</string>
<string name="enable_search_history_title">Историја на пребарувањата</string>
<string name="enable_search_history_summary">Зачувај ги пребарувањата локално</string>
<string name="enable_watch_history_title">Историја</string>
<string name="enable_watch_history_title">Историја и зачувано</string>
<string name="enable_watch_history_summary">Зачувај ја листата на гледани видеа</string>
<string name="resume_on_audio_focus_gain_title">Продолжи видео при враќање на фокусот</string>
<string name="resume_on_audio_focus_gain_summary">Продолжи го видеото по прекини (пр. телефонски повик)</string>
<string name="download_dialog_title">Превземи</string>
<string name="next_video_title">Следно видео</string>
<string name="show_next_and_similar_title">Покажи следни и слични видеа</string>
<string name="show_next_and_similar_title">Покажи следни и слични видеа</string>
<string name="show_hold_to_append_title">Покажи совет „задржи за прикачување“</string>
<string name="show_hold_to_append_summary">Прикажи совет кога позадината или копче од подпрозорчето се притиснати, на страната за видео детаљи</string>
<string name="url_not_supported_toast">Неподдржана URL врска</string>
@ -106,7 +106,7 @@
<string name="settings_category_debug_title">Дебагирање</string>
<string name="background_player_playing_toast">Пуштено во позадина</string>
<string name="popup_playing_toast">Пуштено во прозорче</string>
<string name="background_player_append">Ставено на листа, за заднинско пуштање</string>
<string name="background_player_append">Ставено на листата за заднинско пуштање</string>
<string name="popup_playing_append">Ставено на листа, за пуштање во прозорче</string>
<string name="play_btn_text">Пушти</string>
<string name="content">Содржина</string>
@ -257,7 +257,7 @@
<string name="msg_popup_permission">Оваа привилегија е потребна за
\nотворање во подпрозорче</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
<string name="reCaptchaActivity">reCAPTCHA</string>
<string name="reCaptcha_title">reCAPTCHA Предизвик</string>
<string name="recaptcha_request_toast">Потребен е reCAPTCHA предизвик</string>
@ -284,10 +284,10 @@
<string name="contribution_encouragement">Ако имаш идеи за; превод, дизајн, чистење или големи промени во кодот - помошта е секогаш добредојдена. Што повеќе се работи, подобра е апликацијата!</string>
<string name="view_on_github">Види на GitHub</string>
<string name="donation_title">Донирај</string>
<string name="donation_encouragement">NewPipe се гради од волонтери кои го вложуваат слободното време за важето задоволство. Време е да им возвратиме за тие да можат да ја подобрат апликацијата, уживајќи во топло кафе!</string>
<string name="donation_encouragement">NewPipe се гради од волонтери кои го вложуваат слободното време за важето задоволство. Време е да им возвратиме за тие да можат да ја подобрат апликацијата, уживајќи во топло кафе.</string>
<string name="give_back">Возврати</string>
<string name="website_title">Вебсајт</string>
<string name="website_encouragement">За повеќе информации и најновите новости за NewPipe посети ја вебстраната.</string>
<string name="website_encouragement">За повеќе информации и новости за NewPipe посети ја вебстраната.</string>
<string name="app_license_title">"Лиценцата на NewPipe "</string>
<string name="read_full_license">Прочитај лиценца</string>
@ -361,16 +361,16 @@
<string name="unbookmark_playlist">Избриши ја белешката</string>
<string name="delete_playlist_prompt">Сакаш да ја избришеш плејлистата?</string>
<string name="playlist_creation_success">Успешно создадена плејлиста</string>
<string name="playlist_creation_success">Листата е создадена</string>
<string name="playlist_add_stream_success">Додадено во плејлиста</string>
<string name="playlist_thumbnail_change_success">Се смени иконата на плејлистата</string>
<string name="playlist_delete_failure">Неуспешно бришење на плејлистата</string>
<string name="playlist_delete_failure">Неуспешно бришење на листата</string>
<string name="caption_none">Без превод</string>
<string name="resize_fit">ВКЛОПИ</string>
<string name="resize_fill">ИСПОЛНИ</string>
<string name="resize_zoom">ЗУМИРАЈ</string>
<string name="resize_fit">Вклопи</string>
<string name="resize_fill">Исполни</string>
<string name="resize_zoom">Зумирај</string>
<string name="caption_auto_generated">Автоматски создадено</string>
<string name="caption_font_size_settings_title">Големина на преводот</string>
@ -398,29 +398,50 @@
<string name="subscriptions_import_unsuccessful">Неуспешно внесување членства</string>
<string name="subscriptions_export_unsuccessful">Неуспешно изнесување членства</string>
<string name="import_youtube_instructions">За да ги внесеш твоите YouTube членства, ти треба фајл кој можеш да го добиеш на следниот начин:
\n
\n1. Оди на оваа врска: %1$s
\n2. Пријави се на твојот профил
<string name="import_youtube_instructions">Внеси YouTube членства, преку симнување на извозен фајл:
\n
\n1. Оди на оваа врска: %1$s
\n2. Пријави се на твојот профил
\n3. Ќе започне превземање (тој фајл ти треба)</string>
<string name="import_soundcloud_instructions">За да ги внесете вашите SoundCloud членства, ви треба URL или ID на профилот. Ако ги знаете, само внесете едно од нив во полето, и готови сте.
\n
\nАко не ги знаете, одете по следните чекори:
\n
\n1. Вклучете „десктоп режим“ во вашиот пребарувач (страната не е достапна за мобилни уреди)
\n2. Одете на оваа врска: %1$s
\n3. Пријавете се на вашиот профил
\n4. Копирајте го URL-то на кое бевте пренасочени (тоа е URL-то на вашиот профил)</string>
<string name="import_soundcloud_instructions">Внеси SoundCloud членства, преку внесување URL или ID на профилот:
\n
\n1. Вклучете „десктоп режим“ во вашиот пребарувач (страната не е достапна за мобилни уреди)
\n2. Одете на оваа врска: %1$s
\n3. Пријавете се на вашиот профил
\n4. Копирајте го URL-то на кое бевте пренасочени (тоа е URL-то на вашиот профил).</string>
<string name="import_soundcloud_instructions_hint">korisnickoime, soundcloud.com/korisnickoime</string>
<string name="import_network_expensive_warning">Треба да знаеш дека оваа операција троши многу интернет.
\n
\nСакаш да продолжиш?</string>
<string name="playback_speed_control">Контрола на брзина на траката</string>
<string name="playback_speed_control">Контрола на брзината на траката</string>
<string name="playback_tempo">Темпо</string>
<string name="playback_pitch">Тон</string>
<string name="unhook_checkbox">Откачи (може да создаде мутации)</string>
<string name="playback_nightcore">Nightcore</string>
<string name="playback_nightcore">Nightcore</string>
<string name="playback_default">Стандардно</string>
</resources>
<string name="clear_views_history_title">Избриши историја на гледаност</string>
<string name="clear_views_history_summary">Ја брише историјата на пуштени видеа.</string>
<string name="delete_view_history_alert">Избриши ја целата историја на гледаност.</string>
<string name="view_history_deleted">Избришана е историјата на гледаност.</string>
<string name="clear_search_history_title">Избриши историја на пребарувања</string>
<string name="clear_search_history_summary">Ја брише историјата на пребарувања.</string>
<string name="delete_search_history_alert">Избриши ја целата историја на пребарувања.</string>
<string name="search_history_deleted">Избришана е историјата на пребарувања.</string>
<string name="no_streams_available_download">Нема стримови за симнување</string>
<string name="one_item_deleted">1 ставка избришана.</string>
<string name="toast_no_player">Нема апликација за пуштање на овој фајл</string>
<string name="app_license">NewPipe е „copyleft“ слободен софтвер: Можеш да ја користиш, истражуваш и подобруваш по твоја желба. Можеш да ја редистрибуираш и/или да ја промениш под условите на GNU GPL лиценцата, публикувана од фондацијата FSF - или верзија 3 од лиценцата, или (по можност) понова верзија.</string>
<string name="import_settings">Дали сакаш да се внесат и подесувањата?</string>
<string name="preferred_open_action_settings_title">Претпочитана акција за „отворање“</string>
<string name="preferred_open_action_settings_summary">Стандардна акција при отворање видеа — %s</string>
<string name="caption_setting_title">Преводи</string>
<string name="caption_setting_description">Смени ја големината и стилот на преводот. Потребен е рестарт за промена.</string>
</resources>

View File

@ -457,4 +457,24 @@
\n1. Skru på \"skrivebordsmodus\" i en nettleser ( siden er ikke tilgjengelig for mobile enheter)
\n2. Logg inn når forespurt
\n4. Kopier profil-nettadressen du ble videresendt til.</string>
<string name="use_inexact_seek_summary">Unøyaktig blafring tillater spilleren å blafre til posisjoner raskere med redusert nøyaktighet</string>
<string name="download_thumbnail_summary">Skru av for å stoppe alle miniatyrbilder fra innlasting og spare data og minnebruke. Endring av dette vil tømme både disk- og minne-hurtiglager.</string>
<string name="auto_queue_summary">Legg til en relatert strøm ved avspilling av forrige strøm i ikke-repeterende kø.</string>
<string name="enable_leak_canary_summary">Minnelekkasjeoppsyn kan forårsake programmet å opptre uresponsivt under haugdumping</string>
<string name="enable_disposed_exceptions_title">Rapporter feil som opptrer utenfor sin levetid</string>
<string name="enable_disposed_exceptions_summary">Tving rapportering av uleverbare Rx-unntak utenom fragment eller aktivitetslevetid etter forkastelse</string>
<string name="unhook_checkbox">Avhekt (kan forårsake forvrenging)</string>
<string name="playback_nightcore">Nightcore</string>
<string name="privacy_policy_title">NewPipes personvernspraksis</string>
<string name="privacy_policy_encouragement">NewPipe-prosjektet tar ditt personvern veldig alvorlig. Derfor samler ikke programmet inn data uten ditt samtykke.
\nNewPipes personvernspraksis forklarer i detalj hvilken deta som sendes og lagres når du sender en kræsjrapport.</string>
<string name="read_privacy_policy">Les personvernspraksis</string>
<string name="start_accept_privacy_policy">For å overholde Europeisk Generell Data Proteksjons-Regularing (GDPR), vil vi rette oppmerksomheten din mot NewPipes personvernspraksis. Les den nøye.
\nDu må godta den for å sende oss feilrapporten.</string>
<string name="accept">Godta</string>
<string name="decline">Avslå</string>
<string name="limit_data_usage_none_description">Ubegrenset</string>
<string name="limit_mobile_data_usage_title">Begrens oppløsning når mobildata brukes</string>
</resources>

View File

@ -438,4 +438,14 @@
<string name="app_license">NewPipe is vrije software: ge kund het gebruiken, bestuderen, delen en verbeteren zoveel als da ge maar wild. Ge kund het opnieuw uitgeven en/of aanpassen volgens de voorwaarden van de GNU General Public License, gepubliceerd door de Free Software Foundation, versie 3 van de licentie, of (indien gewenst) gelijk welke latere versie.</string>
<string name="import_settings">Wild ge dinstellingen ook importeren?</string>
<string name="privacy_policy_title">Privacybeleid van NewPipe</string>
<string name="privacy_policy_encouragement">t NewPipe-project neemt uw privacy ter harte. Daarom verzameld den app geen gegevens zonder uw toestemming.
\nt Privacybeleid van NewPipe legd in detail uit welke gegevens da der worden verzonden en opgeslagen wanneer da geen crashrappor indiend.</string>
<string name="read_privacy_policy">Privacybeleid lezen</string>
<string name="start_accept_privacy_policy">Voor dEuropese privacywet (ook wel GDPR genoemd) na te leven, wijzen wu op t nieuw privacybeleid van NewPipe. Leesd t aandachtig.
\nGe moet t aanvaarden voor ons t bugrapport te sturen.</string>
<string name="accept">Aanvaarden</string>
<string name="decline">Weigeren</string>
<string name="limit_data_usage_none_description">Onbeperkt</string>
<string name="limit_mobile_data_usage_title">Resolutie beperken bij gebruik van mobiele gegevens</string>
</resources>

View File

@ -475,4 +475,14 @@ te openen in pop-upmodus</string>
<string name="app_license">NewPipe is vrije software: je kan het gebruiken, bestuderen, delen en verbeteren zoveel je maar wil. Je kan het opnieuw uitgeven en/of aanpassen volgens de voorwaarden van de GNU General Public License, gepubliceerd door de Free Software Foundation, versie 3 van de licentie, of (indien gewenst) om het even welke latere versie.</string>
<string name="import_settings">Wil je ook de instellingen importeren?</string>
<string name="privacy_policy_title">NewPipe\'s privacybeleid</string>
<string name="privacy_policy_encouragement">Het NewPipe-project neemt privacy serieus. Daarom verzamelt de app geen gegevens zonder jouw toestemming.
\nNewPipe\'s privacybeleid legt gedetailleerd uit welke gegevens verstuurd en opgeslagen worden als je een crashrapport verstuurd.</string>
<string name="read_privacy_policy">Privacybeleid lezen</string>
<string name="start_accept_privacy_policy">Om de Europese Algemene Verordening Gegevensbescherming (ook wel: AVG of GDPR) na te leven, wijzen we je op het nieuwe privacybeleid van NewPipe. Lees dit zorgvuldig.
\nJe moet het beleid accepteren om ons het bugrapport te kunnen sturen.</string>
<string name="accept">Accepteren</string>
<string name="decline">Weigeren</string>
<string name="limit_data_usage_none_description">Ongelimiteerd</string>
<string name="limit_mobile_data_usage_title">Resolutie beperken bij gebruik van mobiele gegevens</string>
</resources>

View File

@ -27,7 +27,7 @@
<string name="download_path_audio_dialog_title">Podaj ścieżkę zapisu audio</string>
<string name="autoplay_by_calling_app_title">Autoodtwarzanie</string>
<string name="autoplay_by_calling_app_summary">Automatycznie odtwórz wideo, kiedy NewPipe zostanie wywołany z innej aplikacji</string>
<string name="autoplay_by_calling_app_summary">Odtwórz wideo, kiedy NewPipe zostanie wywołany z innej aplikacji</string>
<string name="default_resolution_title">Domyślna rozdzielczość</string>
<string name="play_with_kodi_title">Odtwórz w Kodi</string>
<string name="kore_not_found">Aplikacja Kore nie została znaleziona. Zainstalować ją?</string>
@ -43,7 +43,7 @@
<string name="download_dialog_title">Pobrane</string>
<string name="next_video_title">Następny film</string>
<string name="show_next_and_similar_title">Pokaż następne i podobne filmy</string>
<string name="show_next_and_similar_title">Pokaż \'następne\' i \'podobne\' filmy</string>
<string name="url_not_supported_toast">URL nieobsługiwany</string>
<string name="search_language_title">Domyślny język zawartości</string>
<string name="settings_category_video_audio_title">Wideo i audio</string>
@ -180,7 +180,7 @@
<string name="action_open_website">Otwórz stronę</string>
<string name="tab_about">O programie</string>
<string name="tab_licenses">Licencje</string>
<string name="app_description">Darmowa, lekka alternatywa YouTube dla Androida.</string>
<string name="app_description">Wolne, lekkie przesyłanie strumieniowania na Androidzie.</string>
<string name="view_on_github">Zobacz na GitHubie</string>
<string name="app_license_title">Licencja NewPipe</string>
<string name="contribution_encouragement">Jeżeli masz pomysł na tłumaczenie, zmiany w wyglądzie aplikacji, oczyszczenie kodu źródłowego, pomoc jest zawsze mile widziana. Im więcej jest zrobione, tym lepiej!</string>
@ -203,7 +203,7 @@
<string name="enable_search_history_title">Historia wyszukiwania</string>
<string name="enable_search_history_summary">Zapisuj lokalnie historię wyszukiwania</string>
<string name="enable_watch_history_title">Historia</string>
<string name="enable_watch_history_title">Historia i pamięć podręczna</string>
<string name="enable_watch_history_summary">Zapisuj historię oglądania</string>
<string name="resume_on_audio_focus_gain_title">Wznów gdy na pierwszym planie</string>
<string name="resume_on_audio_focus_gain_summary">Kontynuuj odtwarzanie po przerwaniu (np. po rozmowie telefonicznej)</string>
@ -237,7 +237,7 @@
<string name="unknown_content">[Nieznany]</string>
<string name="player_stream_failure">Nie udało się odtworzyć strumienia</string>
<string name="player_stream_failure">Nie można odtworzyć strumienia</string>
<string name="player_unrecoverable_failure">Wystąpił nieodwracalny błąd odtwarzacza</string>
<string name="player_recoverable_failure">Odzyskiwanie po błędzie odtwarzacza</string>
@ -266,7 +266,7 @@
<string name="charset_most_special_characters">Większość znaków specjalnych</string>
<string name="donation_title">Dotacja</string>
<string name="donation_encouragement">NewPipe rozwijane jest przez wolontariuszy, którzy poświęcają swój wolny czas, by zapewnić ci jak najlepsze wrażenia podczas korzystania z aplikacji. To dobry moment aby wesprzeć programistów i sprawić, aby program był jeszcze lepszy, nie przerywając przy tym popijania kawy!</string>
<string name="donation_encouragement">NewPipe rozwijane jest przez wolontariuszy, którzy poświęcają swój wolny czas, by zapewnić ci jak najlepsze wrażenia podczas korzystania z aplikacji. To dobry moment, aby wesprzeć programistów i sprawić, by program był jeszcze lepszy, nie przerywając przy tym popijania kawy!</string>
<string name="give_back">Daj od siebie</string>
<string name="website_title">Witryna</string>
<string name="website_encouragement">By otrzymać więcej informacji oraz najnowsze wiadomości o NewPipe, odwiedź naszą stronę.</string>
@ -298,7 +298,7 @@
<string name="start_here_on_main">Odtwórz teraz</string>
<string name="start_here_on_background">Odtwórz w tle</string>
<string name="start_here_on_popup">Odtwórz w okienku</string>
<string name="no_player_found_toast">Nie znaleziono odtwarzacza strumieniowego (żeby odtworzyć możesz zainstalować VLC)</string>
<string name="no_player_found_toast">Nie znaleziono odtwarzacza strumieniowego (żeby odtworzyć, możesz zainstalować VLC)</string>
<string name="default_content_country_title">Domyślny kraj zawartości</string>
<string name="service_title">Usługa</string>
<string name="always">Zawsze</string>
@ -316,7 +316,7 @@
<string name="always_ask_player">Pytaj za każdym razem</string>
<string name="preferred_player_fetcher_notification_title">Informacje…</string>
<string name="preferred_player_fetcher_notification_message">Ładuję żądaną zawartość</string>
<string name="preferred_player_fetcher_notification_message">Ładowanie żądanej zawartości</string>
<string name="controls_download_desc">Pobierz plik strumienia.</string>
<string name="show_info">Pokaż informacje</string>
@ -370,16 +370,16 @@
<string name="unbookmark_playlist">Usuń z zakładek</string>
<string name="delete_playlist_prompt">Czy chcesz usunąć playlistę?</string>
<string name="playlist_creation_success">Playlista utworzona pomyślnie</string>
<string name="playlist_creation_success">Playlista utworzona</string>
<string name="playlist_add_stream_success">Dodano do playlisty</string>
<string name="playlist_thumbnail_change_success">Miniaturka playlisty zmieniona</string>
<string name="playlist_delete_failure">Błąd podczas usuwania playlisty</string>
<string name="playlist_delete_failure">Nie można usunąć playlisty</string>
<string name="caption_none">Bez napisów</string>
<string name="resize_fit">DOPASUJ</string>
<string name="resize_fill">WYPEŁNIJ</string>
<string name="resize_zoom">POWIĘKSZ</string>
<string name="resize_fit">Dopasuj</string>
<string name="resize_fill">Wypełnij</string>
<string name="resize_zoom">Powiększ</string>
<string name="caption_auto_generated">Wygenerowane automatycznie</string>
<string name="caption_font_size_settings_title">Rozmiar czcionki etykiet</string>
@ -438,24 +438,39 @@
<string name="playback_tempo">Tempo</string>
<string name="playback_pitch">Wysokość dźwięku</string>
<string name="playback_default">Domyślna</string>
<string name="import_soundcloud_instructions_hint">twojeid, soundcloud.com/twojeid</string>
<string name="import_soundcloud_instructions_hint">twojeID, soundcloud.com/twojeid</string>
<string name="unhook_checkbox">Odczep (może powodować zniekształcenia)</string>
<string name="playback_nightcore">Nightcore</string>
<string name="import_soundcloud_instructions">"Aby zaimportować obserwowane z SoundCloud, musisz znać identyfikator lub link do swojego profilu. Jeśli znasz którykolwiek z nich, po prostu wpisz go w polu poniżej.
\n
\nW przeciwnym wypadku spróbuj poniższych kroków:
\n
\n1. Włącz \"tryb stacjonarny\" w przeglądarce (strona z której zaraz skorzystasz nie jest dostępna w trybie mobilnym)
\n2. Odwiedź stronę: %1$s
\n3. Zaloguj się na swoje konto
\n4. Skopiuj adres, na który przeglądarka przekieruje cię po zalogowaniu (to jest adres twojego profilu)"</string>
<string name="import_soundcloud_instructions">Aby zaimportować obserwowane z SoundCloud, musisz znać identyfikator lub link do swojego profilu. Jeśli znasz którykolwiek z nich, po prostu wpisz go w polu poniżej.
\n
\nW przeciwnym wypadku spróbuj poniższych kroków:
\n
\n1. Włącz \"tryb stacjonarny\" w przeglądarce (strona, z której zaraz skorzystasz, nie jest dostępna w trybie mobilnym)
\n2. Odwiedź stronę: %1$s
\n3. Zaloguj się na swoje konto
\n4. Skopiuj adres, na który przeglądarka przekieruje cię po zalogowaniu (to jest adres twojego profilu).</string>
<string name="no_streams_available_download">Brak źródeł do pobrania</string>
<string name="preferred_open_action_settings_title">Preferowana akcja podczas otwierania</string>
<string name="preferred_open_action_settings_title">Preferowana akcja podczas \'otwierania\'</string>
<string name="preferred_open_action_settings_summary">Domyślna akcja podczas otwierania materiału - %s</string>
<string name="caption_setting_title">Napisy</string>
<string name="caption_setting_description">Zmień kolor tekstu i tła napisów. Wymaga restartu odtwarzacza.</string>
<string name="caption_setting_description">Zmień kolor tekstu i tła napisów. Wymaga restartu aplikacji.</string>
<string name="clear_views_history_title">Wyczyść historię oglądania</string>
<string name="clear_views_history_summary">Usuwa historię odtworzonych strumieni.</string>
<string name="delete_view_history_alert">Usuń całą historię oglądania.</string>
<string name="view_history_deleted">Usunięto historię oglądania.</string>
<string name="clear_search_history_title">Wyczyść historię wyszukiwania</string>
<string name="clear_search_history_summary">Usuwa historię wyszukiwania słów kluczowych.</string>
<string name="delete_search_history_alert">Usuń całą historię wyszukiwania.</string>
<string name="search_history_deleted">Usunięto historię wyszukiwania.</string>
<string name="one_item_deleted">Usunięto jedną pozycję.</string>
<string name="toast_no_player">Nie zainstalowano aplikacji do odtworzenia tego pliku</string>
<string name="app_license">NewPipe jest wolnym i bezpłatnym oprogramowaniem: Możesz używać, brać udział oraz udoskonalać je według własnego uznania. W szczególności możesz redystrybuować lub/i modyfikować pod zasadami GNU General Public License opublikowanej przez Free Software Fundation w wersji 3 lub (w zależności od ciebie) dowolnej późniejszej wersji.</string>
<string name="import_settings">Czy chcesz zaimportować również ustawienia?</string>
</resources>

View File

@ -10,7 +10,7 @@
<string name="view">Reproduzir</string>
<string name="video_is_age_restricted">Vídeo com restrição de idade. Permissão para vídeos com essa restrição podem ser feitas no menu configurações.</string>
<string name="video">Vídeo</string>
<string name="autoplay_by_calling_app_summary">Reproduzir o vídeo automaticamente quando o NewPipe for aberto a partir de outro app</string>
<string name="autoplay_by_calling_app_summary">Reproduz o vídeo quando o NewPipe for aberto a partir de outro aplicativo</string>
<string name="autoplay_by_calling_app_title">Reproduzir automaticamente</string>
<string name="black_theme_title">Preto</string>
<string name="blocked_by_gema">Bloqueado pelo GEMA</string>
@ -66,7 +66,7 @@
<string name="share">Compartilhar</string>
<string name="share_dialog_title">Compartilhar com</string>
<string name="show_age_restricted_content_title">Exibir conteúdo com restrição de idade</string>
<string name="show_next_and_similar_title">Exibir próximo vídeo e relacionados</string>
<string name="show_next_and_similar_title">Exibir \'próximo\' vídeo e \'relacionados\'</string>
<string name="sorry_string">Desculpe, isto não deveria ter acontecido.</string>
<string name="start">Iniciar</string>
<string name="storage_permission_denied">Permissão para acessar armazenamento negada</string>
@ -168,7 +168,7 @@ abrir em modo popup</string>
<string name="tab_about">Sobre</string>
<string name="tab_contributors">Contribuintes</string>
<string name="tab_licenses">Licenças</string>
<string name="app_description">Um leve, simples e grátis aplicativo de YouTube para Android.</string>
<string name="app_description">Streaming leve e gratuito no Android.</string>
<string name="view_on_github">Ver no GitHub</string>
<string name="app_license_title">Licença do NewPipe</string>
<string name="contribution_encouragement">Sempre que tiver ideias, traduções, mudanças do design, limpeza de código ou grandes alterações de código, a ajuda é bem vinda. Quanto mais for feito, melhor o aplicativo fica!</string>
@ -200,7 +200,7 @@ abrir em modo popup</string>
<string name="enable_search_history_title">Histórico de pesquisas</string>
<string name="enable_search_history_summary">Armazenar histórico de pesquisa localmente</string>
<string name="enable_watch_history_title">Histórico</string>
<string name="enable_watch_history_title">Histórico &amp; Cache</string>
<string name="enable_watch_history_summary">Armazenar histórico de vídeos assistidos</string>
<string name="title_activity_history">Histórico</string>
<string name="title_history_search">Pesquisado</string>
@ -256,17 +256,17 @@ abrir em modo popup</string>
<string name="trending">Em Alta</string>
<string name="top_50">Top 50</string>
<string name="new_and_hot">Novos e tendências</string>
<string name="show_hold_to_append_title">Mostrar dica para mantenha pressionado para pendurar</string>
<string name="show_hold_to_append_title">"Mostrar dica \"mantenha pressionado\" para enfileirar"</string>
<string name="show_hold_to_append_summary">Mostrar dica quando o botão de plano de fundo ou de popup for pressionado na página de detalhes do vídeo</string>
<string name="background_player_append">Adicionado a fila do reprodutor em plano de fundo</string>
<string name="popup_playing_append">Adicionado a fila no reprodutor popup</string>
<string name="play_all">Reproduzir tudo</string>
<string name="player_stream_failure">Falha ao reproduzir esta stream</string>
<string name="player_stream_failure">Não foi possível reproduzir esta stream</string>
<string name="player_unrecoverable_failure">Ocorreu um erro no reprodutor</string>
<string name="player_recoverable_failure">Recuperando erro do reprodutor</string>
<string name="title_activity_background_player">Reprodutor de plano de fundo</string>
<string name="title_activity_background_player">Reprodutor de Plano de Fundo</string>
<string name="title_activity_popup_player">Reprodutor Popup</string>
<string name="play_queue_remove">Remover</string>
<string name="play_queue_stream_detail">Detalhes</string>
@ -274,16 +274,16 @@ abrir em modo popup</string>
<string name="hold_to_append">Mantenha pressionado para colocar na fila</string>
<string name="unknown_content">[Desconhecido]</string>
<string name="enqueue_on_background">Adicionar a fila em plano de fundo</string>
<string name="enqueue_on_background">Adicionar a fila em Plano de Fundo</string>
<string name="enqueue_on_popup">Adicionar a fila em Popup</string>
<string name="start_here_on_main">Iniciar a reproduzir à partir daqui</string>
<string name="start_here_on_background">Iniciar aqui em plano de fundo</string>
<string name="start_here_on_background">Iniciar aqui em Plano de Fundo</string>
<string name="start_here_on_popup">Iniciar aqui em popup</string>
<string name="donation_title">Doar</string>
<string name="donation_encouragement">NewPipe é desenvolvido por voluntários que gastam seu tempo livre para trazer a melhor experiência para você. Agora é a hora de retribuir o favor e ter certeza que os desenvolvedores podem fazer com que o NewPipe fique ainda melhor enquanto desfrutam uma xícara de café!</string>
<string name="donation_encouragement">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é.</string>
<string name="give_back">Retribuir</string>
<string name="website_title">Site oficial</string>
<string name="website_encouragement">Para obter mais informações e as últimas notícias sobre o NewPipe visite nosso Site.</string>
<string name="website_encouragement">Visite o site do NewPipe para mais informações e novidades.</string>
<string name="no_player_found_toast">Nenhum reprodutor de stream encontrado (você pode instalar o VLC para reproduzir isto)</string>
<string name="default_content_country_title">País do conteúdo padrão</string>
<string name="service_title">Serviço</string>
@ -291,7 +291,7 @@ abrir em modo popup</string>
<string name="just_once">Apenas esta vez</string>
<string name="toggle_orientation">Alterar a orientação</string>
<string name="switch_to_background">Alterar para plano de fundo</string>
<string name="switch_to_background">Alterar para Plano de Fundo</string>
<string name="switch_to_popup">Alterar para Popup</string>
<string name="switch_to_main">Aletar para principal</string>
@ -306,7 +306,7 @@ abrir em modo popup</string>
<string name="always_ask_player">Sempre perguntar</string>
<string name="preferred_player_fetcher_notification_title">Obtendo informações…</string>
<string name="preferred_player_fetcher_notification_message">O conteúdo solicitado está carregando</string>
<string name="preferred_player_fetcher_notification_message">Carregando o conteúdo requisitado</string>
<string name="import_data_title">Importar base de dados</string>
<string name="export_data_title">Exportar base de dados</string>
<string name="import_data_summary">Isso irá sobrescrever seu histórico e inscrições</string>
@ -350,14 +350,14 @@ abrir em modo popup</string>
<string name="unbookmark_playlist">Remover Favorito</string>
<string name="delete_playlist_prompt">Deseja remover esta lista de reprodução?</string>
<string name="playlist_creation_success">Lista de Reprodução Criada</string>
<string name="playlist_creation_success">Lista de Reprodução criada</string>
<string name="playlist_add_stream_success">Adicionado a lista de reprodução</string>
<string name="playlist_thumbnail_change_success">Miniatura para a lista de reprodução alterada</string>
<string name="playlist_delete_failure">Falha ao apagar lista de reprodução</string>
<string name="caption_none">Sem Legenda</string>
<string name="caption_none">Sem Legendas</string>
<string name="resize_fit">FIT</string>
<string name="resize_fit">Ajustar</string>
<string name="resize_fill">Preencher</string>
<string name="resize_zoom">Zoom</string>
@ -371,15 +371,15 @@ abrir em modo popup</string>
<string name="caption_auto_generated">Gerado automaticamente</string>
<string name="enable_leak_canary_title">Habilitar LeakCanary</string>
<string name="enable_leak_canary_summary">Monitoramento de vazamento de memória pode fazer com que o app fique sem responder quando estiver despejando a pilha</string>
<string name="enable_leak_canary_summary">"Monitoramento de vazamento de memória pode fazer com que o app fique sem responder quando estiver despejando a pilha "</string>
<string name="enable_disposed_exceptions_title">Reportar Erros fora do ciclo de vida</string>
<string name="enable_disposed_exceptions_title">Reportar Erros de Fora do Ciclo de Vida</string>
<string name="enable_disposed_exceptions_summary">Forçar o report de exceções Rx não entregáveis ocorrendo fora do fragmento ou ciclo de vida da atividade após o dispose</string>
<string name="use_inexact_seek_title">Usar índice de indexação rápido porém não preciso</string>
<string name="use_inexact_seek_summary">Usar índice de indexação inexato</string>
<string name="auto_queue_title">Adicionar a próxima stream à fila automaticamente</string>
<string name="auto_queue_summary">Anexar automaticamente uma stream relacionada quando a reprodução iniciar na última stream em uma fila não repetitiva.</string>
<string name="auto_queue_summary">Auto anexar uma stream relacionada quando a reprodução iniciar na última stream em uma fila não repetitiva.</string>
<string name="live_sync">Sincronizar</string>
<string name="file">Arquivo</string>
@ -404,20 +404,18 @@ abrir em modo popup</string>
<string name="subscriptions_import_unsuccessful">Importação de inscrições falhou</string>
<string name="subscriptions_export_unsuccessful">Exportação de inscrições falhou</string>
<string name="import_youtube_instructions">"Para importar inscrições do YouTube você vai precisar exportar o arquivo, o que pode ser baixado seguindo estas informações:
\n
\n1. Vá para este link: %1$s
\n2. Faça login na sua conta quando solicitado
\n3. O download deverá começar (isto é exportar arquivo)"</string>
<string name="import_soundcloud_instructions">Para importar as contas que você segue no SoundCloud, você terá que saber o link ou id do seu perfil. Se você souber, basta escrever um deles no campo abaixo e estará tudo pronto.
\n
\nSe você não souber, você pode seguir estas etapas:
\n
\n1. Habilite \"modo desktop\" em algum navegador da internet ( o site não está disponível para dispositivos móveis)
\n2. Vá para esta url: %1$s
\n3. Faça login na sua conta quando solicitado
\n4. Copie o link no qual que você foi redirecionado (este é o link do seu perfil)</string>
<string name="import_soundcloud_instructions_hint">seuid, soundcloud.com/seuid</string>
<string name="import_youtube_instructions">"Importe as inscrições da sua conta no YouTube através do arquivo exportado por ela em:
\n
\n1. Vá para este link: %1$s
\n2. Faça login quando solicitado
\n3. O download deverá começar (isto é o arquivo exportado)"</string>
<string name="import_soundcloud_instructions">Importe uma conta do SoundCloud escrevendo o ID ou a URL no campo abaixo:
\n
\n1. Habilite o \"modo desktop\" em algum navegador da internet (pois essa opção não está disponível para páginas mobile)
\n2. Vá para esta URL: %1$s
\n3. Faça login quando solicitado
\n4. Copie o link no qual você foi redirecionado (este é o link do seu perfil).</string>
<string name="import_soundcloud_instructions_hint">seuID, soundcloud.com/seuid</string>
<string name="import_network_expensive_warning">Tenha em mente que esta operação poderá usar bastante a conexão com a internet.
\n
@ -427,23 +425,46 @@ abrir em modo popup</string>
<string name="metadata_cache_wipe_title">Limpar o cache de metadados</string>
<string name="metadata_cache_wipe_summary">Remover todos os dados de páginas em cache</string>
<string name="metadata_cache_wipe_complete_notice">Cache de metadados foi limpo</string>
<string name="playback_speed_control">Controle de Velocidade de reprodução</string>
<string name="playback_tempo">Tempo</string>
<string name="playback_speed_control">Controles de Velocidade de Reprodução</string>
<string name="playback_tempo">"Tempo "</string>
<string name="download_thumbnail_summary">Desabilite para para de carregar todas as miniaturas e economizar dados e uso de memória. Alterar esta configuração irá limpar o cache de imagens na memória e em disco.</string>
<string name="playback_pitch">Passo</string>
<string name="unhook_checkbox">Desenganchar</string>
<string name="playback_default">Padrão</string>
<string name="preferred_open_action_settings_title">Ação de abrir preferida</string>
<string name="preferred_open_action_settings_title">Ação de \'abrir\' preferida</string>
<string name="preferred_open_action_settings_summary">Ação padrão quando abrir conteúdo — %s</string>
<string name="no_streams_available_download">Sem fontes disponíveis para download</string>
<string name="drawer_open">Abrir gaveta</string>
<string name="drawer_close">Fechar gaveta</string>
<string name="caption_setting_title">Legenda</string>
<string name="caption_setting_title">Legendas</string>
<string name="caption_setting_description">Modifique o tamanho da legenda e o estilo da tela de fundo. Necessário reiniciar o aplicativo para ter efeito.</string>
<string name="playback_nightcore">Night-core</string>
<string name="toast_no_player">Nenhum player foi encontrado para este arquivo</string>
<string name="toast_no_player">Nenhum player instalado para reproduzir este arquivo</string>
<string name="clear_views_history_title">"Limpar histórico de já assistidos "</string>
<string name="clear_views_history_summary">Deleta o histórico de videos já reproduzidos.</string>
<string name="delete_view_history_alert">Deleta todo o histórico de já reproduzidos.</string>
<string name="view_history_deleted">Histórico de já assistidos deletado.</string>
<string name="clear_search_history_title">Limpar histórico de pesquisa</string>
<string name="clear_search_history_summary">Deleta histórico de palavras chave pesquisadas.</string>
<string name="delete_search_history_alert">Deletar todo o histórico de pesquisa.</string>
<string name="search_history_deleted">Histórico de pesquisa deletado.</string>
<string name="one_item_deleted">1 item deletado.</string>
<string name="app_license">NewPipe is copyleft libre software: Você pode usar, estudar, compartilhar e melhorar ele a vontade. Mais especificamente você pode redistribuir e/ou modificar ele sob os termos da GNU General Public License como publicada pela Free Software Foundation, tanto a versão 3 dessa Licença, ou (a sua escolha) qualquer outra versão posterior.</string>
<string name="import_settings">Você também quer importar as configurações?</string>
<string name="privacy_policy_title">Política de privacidade do NewPipe</string>
<string name="privacy_policy_encouragement">O projeto NewPipe leva a sua privacidade muito a sério. Sendo assim, o aplicativo não coleta nenhum dado sem seu consentimento.
\nA polícia de privacidade do NewPipe explica em detalhes qual dado é enviado e salvo quando você envia um relatório de erros.</string>
<string name="read_privacy_policy">Ler a política de privacidade</string>
<string name="start_accept_privacy_policy">A fim de cumprir com o European General Data Protection Regulation (GDPR), em português, Regulamento Geral sobre a Proteção de Dados (RGPD), chamamos sua atenção para a política de privacidade do NewPipe. Por vafor, leia-a cuidadosamente.
\nVocê tem que aceitá-la para nos enviar relatório de erros.</string>
<string name="accept">Aceitar</string>
<string name="decline">Recusar</string>
<string name="limit_data_usage_none_description">Ilimitado</string>
<string name="limit_mobile_data_usage_title">Limitar resolução quando dados móveis estiverem em uso</string>
</resources>

View File

@ -30,7 +30,7 @@
<string name="m4a_description">M4A — melhor qualidade</string>
<string name="download_dialog_title">Descarregar</string>
<string name="next_video_title">Vídeo seguinte</string>
<string name="show_next_and_similar_title">Mostrar vídeos seguintes e semelhantes</string>
<string name="show_next_and_similar_title">Mostrar vídeos \'seguintes\' e \'semelhantes\'</string>
<string name="url_not_supported_toast">URL não suportado</string>
<string name="search_language_title">Idioma padrão do conteúdo</string>
<string name="settings_category_video_audio_title">Vídeo e áudio</string>
@ -89,7 +89,7 @@
<string name="storage_permission_denied">Permissão para aceder ao armazenamento foi negada</string>
<string name="main_bg_subtitle">Toque para iniciar a pesquisa</string>
<string name="autoplay_by_calling_app_title">Reprodução automática</string>
<string name="autoplay_by_calling_app_summary">Reproduzir vídeo automaticamente se o NewPipe for invocado por outra aplicação</string>
<string name="autoplay_by_calling_app_summary">Reproduzir vídeo se o NewPipe for invocado por outra aplicação</string>
<string name="duration_live">direto</string>
<string name="report_error">Reportar um erro</string>
@ -205,7 +205,7 @@
<string name="enable_search_history_title">Histórico de pesquisa</string>
<string name="enable_search_history_summary">Guardar termos de pesquisa localmente</string>
<string name="enable_watch_history_title">Histórico</string>
<string name="enable_watch_history_title">Histórico e Cache</string>
<string name="enable_watch_history_summary">Guardar histórico de vídeos assistidos</string>
<string name="resume_on_audio_focus_gain_title">Retomar ao ganhar foco</string>
<string name="resume_on_audio_focus_gain_summary">Continuar reprodução após interrupções (ex. chamadas)</string>
@ -419,4 +419,5 @@
<string name="playback_tempo">Tempo</string>
<string name="playback_nightcore">Nightcore</string>
<string name="playback_default">Predefinido</string>
</resources>
<string name="clear_views_history_title">Limpar histórico de exibição</string>
</resources>

View File

@ -125,7 +125,7 @@
<string name="controls_background_title">В фоне</string>
<string name="controls_popup_title">В окне</string>
<string name="show_higher_resolutions_summary">Только некоторые устройства могут воспроизводить видео в 2K/4K</string>
<string name="show_higher_resolutions_summary">Только некоторые устройства могут воспроизводить 2K/4K видео</string>
<string name="default_video_format_title">Формат видео по умолчанию</string>
<string name="black_theme_title">Чёрная</string>
<string name="popup_remember_size_pos_title">Запоминать размер и положение всплывающего окна</string>
@ -436,9 +436,9 @@
\n4. Скопируйте адрес из адресной строки.</string>
<string name="import_soundcloud_instructions_hint">вашID, soundcloud.com/вашID</string>
<string name="import_network_expensive_warning">Помните, что за выход в интернет может взиматься плата.
\n
\nВы хотите продолжить?</string>
<string name="import_network_expensive_warning">Эта операция может использовать большие объемы сетевого трафика.
\n
\nПродолжить?</string>
<string name="download_thumbnail_title">Загружать миниатюры</string>
<string name="download_thumbnail_summary">Отключите, чтобы перестать загружать миниатюры и начать экономить трафик и память. Изменение настройки очистит кеш изображений в памяти и на диске.</string>
<string name="thumbnail_cache_wipe_complete_notice">Кеш изображений очищен</string>
@ -472,4 +472,6 @@
<string name="app_license">NewPipe - программное обеспечение copyleft libre: вы можете использовать, изучать и улучшать его по своему усмотрению. В частности, вы можете распространять и/или изменять его в соответствии с GNU General Public License, опубликованным Free Software Foundation, либо версией 3 License, либо (по вашему выбору) любой более поздней версии.</string>
<string name="preferred_open_action_settings_title">Предпочтительное действие \'открытие\'</string>
<string name="import_settings">Желаете ли вы также импортировать настройки?</string>
</resources>

View File

@ -196,4 +196,6 @@
<string name="play_queue_stream_detail">వివరాలు</string>
<string name="play_queue_audio_settings">ఆడియో సెట్టింగ్లు</string>
<string name="hold_to_append">ఎన్క్యూలో పట్టుకోండి</string>
</resources>
<string name="no_player_found">"మీదగార వీడియో కి కావాల్సిన ప్లేయర్ లేదు. VLC ప్లేయర్ ఇన్స్టాల్ చేసుకుంటారా?"</string>
<string name="no_player_found_toast">"మీదగార వీడియో కి కావాల్సిన ప్లేయర్ లేదు (మీరు VLC ఇసన్తాల్ చేసుకోవచ్చు)"</string>
</resources>

View File

@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="main_bg_subtitle">Başlamak için aramaya dokunun</string>
<string name="main_bg_subtitle">Başlamak için aramaya dokun</string>
<string name="view_count_text">%1$s görüntüleme</string>
<string name="upload_date_text">Yayımlanma: %1$s</string>
<string name="no_player_found">Akış oynatıcı bulunamadı. VLC\'yi kurmak ister misiniz?</string>
@ -31,12 +31,12 @@
<string name="default_resolution_title">Öntanımlı çözünürlük</string>
<string name="play_with_kodi_title">Kodi ile oynat</string>
<string name="kore_not_found">Kore uygulaması bulunamadı. Kurulsun mu?</string>
<string name="show_play_with_kodi_title">\"Kodi ile Oynat\" seçeneğini göster</string>
<string name="show_play_with_kodi_title">\"Kodi ile oynat\" seçeneğini göster</string>
<string name="show_play_with_kodi_summary">Kodi ortam merkezi aracılığıyla video oynatmak için bir seçenek görüntüler</string>
<string name="default_audio_format_title">Öntanımlı ses biçimi</string>
<string name="webm_description">WebM — özgür biçim</string>
<string name="m4a_description">M4A — daha iyi nitelik</string>
<string name="theme_title">Gövde</string>
<string name="m4a_description">M4A — daha iyi kalite</string>
<string name="theme_title">Tema</string>
<string name="dark_theme_title">Koyu</string>
<string name="light_theme_title">ık</string>
@ -52,8 +52,8 @@
<string name="background_player_playing_toast">Arka planda oynatıyor</string>
<string name="play_btn_text">Oynat</string>
<string name="content">İçerik</string>
<string name="show_age_restricted_content_title">Yaş kısıtlamalı içerik göster</string>
<string name="video_is_age_restricted">Yaş Kısıtlamalı Video. Bu gibi materyallere Ayarlar\'dan izin verilebilir.</string>
<string name="show_age_restricted_content_title">Yaş sınırlı içeriği göster</string>
<string name="video_is_age_restricted">Yaş Sınırlı Video. Bu gibi materyallere Ayarlar\'dan izin verilebilir.</string>
<string name="duration_live">canlı</string>
<string name="downloads">İndirilenler</string>
<string name="downloads_title">İndirilenler</string>
@ -67,10 +67,10 @@
<string name="light_parsing_error">Web sitesi tümüyle ayrıştırılamadı</string>
<string name="content_not_available">İçerik kullanılabilir değil</string>
<string name="blocked_by_gema">GEMA tarafından engellendi</string>
<string name="live_streams_not_supported">Bu bir CANLI AKIŞ ve henüz desteklenmiyor.</string>
<string name="live_streams_not_supported">Bu, henüz desteklenmeyen, bir CANLI AKIŞ.</string>
<string name="could_not_get_stream">Herhangi bir akış alınamadı</string>
<string name="could_not_load_image">Resim yüklenemedi</string>
<string name="app_ui_crash">Uygulama/Kullanıcı arayüzü çöktü</string>
<string name="app_ui_crash">Uygulama/arayüz çöktü</string>
<string name="sorry_string">Üzgünüz, bu olmamalıydı.</string>
<string name="error_report_button_text">Hatayı e-postayla bildir</string>
<string name="error_snackbar_message">Üzgünüz, bazı hatalar oluştu.</string>
@ -162,8 +162,8 @@
<string name="refresh">Yenile</string>
<string name="clear">Temizle</string>
<string name="popup_remember_size_pos_title">ılır pencere boyutunu ve yerini anımsa</string>
<string name="popup_remember_size_pos_summary">ılır pencerenin ayarlandığı son boyutu ve yeri anımsa</string>
<string name="popup_remember_size_pos_title">ılır pencere boyutunu ve konumunu hatırla</string>
<string name="popup_remember_size_pos_summary">ılır pencerenin ayarlandığı son boyutu ve konumu hatırla</string>
<string name="settings_category_popup_title">ılır Pencere</string>
<string name="popup_resizing_indicator_title">Boyutlandırılıyor</string>
@ -172,7 +172,7 @@
<string name="player_gesture_controls_summary">Oynatıcının parlaklığını ve sesini yönetmek için el hareketlerini kullan</string>
<string name="player_gesture_controls_title">Oynatıcı el hareketi denetimleri</string>
<string name="show_search_suggestions_title">Arama önerileri</string>
<string name="show_search_suggestions_summary">Ararken önerileri göster</string>
<string name="show_search_suggestions_summary">Aramada önerileri göster</string>
<string name="best_resolution">En iyi çözünürlük</string>
@ -186,7 +186,7 @@
<string name="tab_about">Hakkında</string>
<string name="tab_contributors">Katkıda bulunanlar</string>
<string name="tab_licenses">Lisanslar</string>
<string name="app_description">Android için özgür, hafif akış oynatıcı.</string>
<string name="app_description">Android\'de özgür, hafif akış oynatımı.</string>
<string name="view_on_github">GitHub\'da gör</string>
<string name="app_license_title">NewPipe\'ın Lisansı</string>
<string name="contribution_encouragement">Fikirleriniz; çeviri, tasarım değişiklikleri, kod temizliği ya da gerçek köklü kod değişikleri olsun yardımınıza her zaman açığız. Ne kadar çok yapılırsa o kadar iyi olur!</string>
@ -206,13 +206,13 @@
<string name="subscription_change_failed">Abonelik değiştirilemiyor</string>
<string name="subscription_update_failed">Abonelik güncellenemiyor</string>
<string name="tab_main">Temel</string>
<string name="tab_main">Ana</string>
<string name="tab_subscriptions">Abonelikler</string>
<string name="fragment_whats_new">Neler Yeni</string>
<string name="enable_search_history_title">Arama geçmişi</string>
<string name="enable_search_history_summary">Arama sorgularını yerel olarak biriktir</string>
<string name="enable_search_history_summary">Arama sorgularını yerel olarak sakla</string>
<string name="enable_watch_history_title">Geçmiş ve Önbellek</string>
<string name="enable_watch_history_summary">İzlenen videoların kaydını tut</string>
<string name="resume_on_audio_focus_gain_title">Odaklanıldığında sürdür</string>
@ -221,7 +221,7 @@
<string name="settings_category_player_behavior_title">Davranış</string>
<string name="settings_category_history_title">Geçmiş ve Önbellek</string>
<string name="playlist">Oynatma Listesi</string>
<string name="undo">Geri al</string>
<string name="undo">Geri Al</string>
<string name="notification_channel_name">NewPipe Bildirimi</string>
<string name="notification_channel_description">NewPipe Arka Plan ve Açılır Pencere Oynatıcıları için Bildirimler</string>
@ -256,7 +256,7 @@
<string name="history_cleared">Geçmiş temizlendi</string>
<string name="item_deleted">Öge silindi</string>
<string name="delete_item_search_history">Bu içeriği arama geçmişinden silmek istiyor musunuz?</string>
<string name="show_hold_to_append_title">\"Sardırmak için tut\" ipucunu göster</string>
<string name="show_hold_to_append_title">\"Kuyruğa almak İçin bas\" ipucunu göster</string>
<string name="show_hold_to_append_summary">Video ayrıntıları sayfasında arka plan veya açılır pencere düğmesine basıldığında ipucu göster</string>
<string name="background_player_append">Arka plan oynatıcıda kuyruğa eklendi</string>
<string name="popup_playing_append">ılır pencere oynatıcıda kuyruğa eklendi</string>
@ -274,7 +274,7 @@
<string name="subscription_page_summary">Abonelik Sayfası</string>
<string name="feed_page_summary">Besleme Sayfası</string>
<string name="channel_page_summary">Kanal Sayfası</string>
<string name="select_a_channel">Kanal seç</string>
<string name="select_a_channel">Bir kanal seç</string>
<string name="no_channel_subscribed_yet">Henüz abone olunan kanal yok</string>
<string name="select_a_kiosk">Köşk seç</string>
@ -295,7 +295,7 @@
<string name="start_here_on_popup">Burada Açılır Pencerede Başlat</string>
<string name="donation_title">Bağış yapın</string>
<string name="donation_encouragement">NewPipe, size en iyi deneyimi sunmak için zamanını harcayan gönüllüler tarafından geliştirilmiştir. Bir fincan kahveyi yudumlarken NewPipe\'ı daha da iyi yapmaları için geliştiricilere yardımcı olun.</string>
<string name="give_back">Karşılığını ver</string>
<string name="give_back">Geri ver</string>
<string name="website_title">Web sitesi</string>
<string name="website_encouragement">Daha çok bilgi ve haber için NewPipe Web Sitesini ziyaret edin.</string>
<string name="default_content_country_title">Öntanımlı içerik ülkesi</string>
@ -325,13 +325,13 @@
<string name="preferred_player_fetcher_notification_message">İstenen içerik yükleniyor</string>
<string name="import_data_title">Veri tabanını içe aktar</string>
<string name="export_data_title">Veri tabanını dışa aktar</string>
<string name="import_data_summary">Şimdiki geçmişinizi ve aboneliklerinizi geçersiz kılacak</string>
<string name="import_data_summary">Şu anki geçmişinizi ve aboneliklerinizi geçersiz kılar</string>
<string name="export_data_summary">Geçmişi, abonelikleri ve oynatma listelerini dışa aktar.</string>
<string name="export_complete_toast">Dışa aktarım bitti</string>
<string name="import_complete_toast">İçe aktarım bitti</string>
<string name="no_valid_zip_file">Geçerli ZIP dosyası yok</string>
<string name="could_not_import_all_files">Uyarı: Tüm dosyalar içe aktarılamadı.</string>
<string name="override_current_data">Bu şimdiki kurulumunuzu geçersiz kılacak.</string>
<string name="override_current_data">Bu, şu anki kurulumunuzu geçersiz kılacak.</string>
<string name="controls_download_desc">Akış dosyasını indir.</string>
<string name="show_info">Bilgileri göster</string>
@ -382,10 +382,10 @@
<string name="normal_caption_font_size">Normal yazı tipi</string>
<string name="larger_caption_font_size">Daha büyük yazı tipi</string>
<string name="settings_category_debug_title">Hata Ayıklama</string>
<string name="drawer_header_action_paceholder_text">Yakında burada bir şeyler gözükecek ;D</string>
<string name="drawer_header_action_paceholder_text">Yakında burada bir şeyler görünecek ;D</string>
<string name="caption_auto_generated">Kendiliğinden Oluşturulmuş</string>
<string name="caption_auto_generated">Kendiliğinden Üretilmiş</string>
<string name="enable_leak_canary_title">LeakCanary\'i Etkinleştir</string>
<string name="enable_leak_canary_summary">Bellek sızıntı gözlemlemesi, yığın boşaltımı sırasında uygulamanın tepkisiz kalmasına neden olabilir</string>
@ -393,9 +393,9 @@
<string name="enable_disposed_exceptions_summary">Parçanın dışında veya atımdan sonraki etkinlik yaşam döngüsündeki teslim edilemeyen Rx beklentilerinin bildirimini zorla</string>
<string name="use_inexact_seek_title">Hızlı isabetsiz konumlama kullan</string>
<string name="use_inexact_seek_summary">İsabetsiz konumlama, oynatıcının konumları düşürülmüş duyarlıkla saptamasını sağlar</string>
<string name="use_inexact_seek_summary">İsabetsiz konumlama, oynatıcının azaltılmış kesinlikle daha hızlı konumlama yapmasını sağlar</string>
<string name="auto_queue_title">Sonraki akışı kendiliğinden kuyruğa ekle</string>
<string name="auto_queue_summary">Yinelemeyen kuyruktaki son akış oynatılırken ilgili akışı sonuna kendiliğinden ekle.</string>
<string name="auto_queue_summary">Yinelemeyen bir kuyruktaki son akış oynatılırken ilgili bir akışı kendiliğinden sonuna ekle.</string>
<string name="live_sync">EŞZAMANLA</string>
<string name="file">Dosya</string>
@ -433,28 +433,28 @@
\n4. Yönlendirildiğiniz profil URL\'sini kopyalayın.</string>
<string name="import_soundcloud_instructions_hint">kimliginiz, soundcloud.com/kimliginiz</string>
<string name="import_network_expensive_warning">Bu sürecin ağ masrafına neden olabileceğini unutmayın.
\n
<string name="import_network_expensive_warning">Bu sürecin ağa yük olabileceğini unutmayın.
\n
\nDevam etmek istiyor musunuz?</string>
<string name="download_thumbnail_title">Önizlemeleri yükle</string>
<string name="download_thumbnail_summary">Bellek ve veri kullanımını azaltmak için önizleme yüklemelerini devre dışı bırakın. Bunu değiştirmek, hem bellek hem de disk üzerindeki önbelleği temizleyecektir.</string>
<string name="download_thumbnail_title">Küçük resimleri yükle</string>
<string name="download_thumbnail_summary">Küçük resimlerin hepsinin yüklenmesini engellemek ve bellek ve veri kullanımını azaltmak için devre dışı bırakın. Bunu değiştirmek, hem bellekteki hem de diskteki resim önbelleğini temizler.</string>
<string name="thumbnail_cache_wipe_complete_notice">Resim önbelleği temizlendi</string>
<string name="metadata_cache_wipe_title">Önbellek verisini temizle</string>
<string name="metadata_cache_wipe_summary">Önbelleklenmiş tüm web içeriği verisini kaldır</string>
<string name="metadata_cache_wipe_complete_notice">Veri önbelleği temizlendi</string>
<string name="metadata_cache_wipe_title">Önbelleklenmiş üst veriyi temizle</string>
<string name="metadata_cache_wipe_summary">Önbelleklenmiş tüm web sayfası verisini kaldır</string>
<string name="metadata_cache_wipe_complete_notice">Üst veri önbelleği temizlendi</string>
<string name="playback_speed_control">Oynatım Hızı Denetimleri</string>
<string name="playback_tempo">Hız</string>
<string name="playback_default">Varsayılan</string>
<string name="playback_default">Öntanımlı</string>
<string name="playback_pitch">Ses titreşimi</string>
<string name="unhook_checkbox">Çengelini Çıkar (bozukluğa neden olabilir)</string>
<string name="unhook_checkbox">Çengeli Çıkar (bozukluğa neden olabilir)</string>
<string name="playback_nightcore">Nightcore</string>
<string name="no_streams_available_download">İndirmeye uygun akış yok</string>
<string name="preferred_open_action_settings_title">Yeğlenen \'açma\' eylemi</string>
<string name="preferred_open_action_settings_title">Yeğlenen \'aç\' eylemi</string>
<string name="preferred_open_action_settings_summary">İçerik açılırken öntanımlı eylem — %s</string>
<string name="caption_setting_title">Ek Açıklamalar</string>
<string name="caption_setting_description">Oynatıcıdaki ek açıklamalar metninin ölçeğini ve arka plan biçimlerini düzenle. Etki için uygulamayı yeniden başlatmak gerekir.</string>
<string name="caption_setting_description">Oynatıcı ek açıklamalar metin boyutunu ve arka plan biçimlerini düzenle. Etki için uygulamayı yeniden başlatmak gerekir.</string>
<string name="toast_no_player">Bu dosyayı oynatmak için kurulan uygulama yok</string>
@ -469,4 +469,16 @@
<string name="one_item_deleted">1 öge silindi.</string>
<string name="app_license">NewPipe, telif müsaadeli özgür yazılımdır: İstediğiniz gibi kullanabilir, öğrenebilir, paylaşabilir, iyileştirebilirsiniz. Özellikle; Özgür Yazılım Vakfı tarafından yayımlanan GNU Genel Kamu Lisansı\'nın, lisansın 3. sürümüyle veya (isterseniz) daha sonraki sürümünün koşulları altında yeniden dağıtabilir ve/veya düzenleyebilirsiniz.</string>
<string name="import_settings">Ayarları da içe aktarmak istiyor musunuz?</string>
<string name="privacy_policy_title">NewPipe\'ın Gizlilik İlkesi</string>
<string name="privacy_policy_encouragement">NewPipe projesi, gizliliğinizi çok ciddiye alır. Bu nedenle, uygulama sizin izniniz olmadan herhangi bir veri toplamaz.
\nNewPipe\'ın gizlilik ilkesi, bir çökme bildirimi gönderdiğinizde hangi verilerin gönderilip saklandığını ayrıntılı olarak açıklar.</string>
<string name="read_privacy_policy">Gizlilik ilkesini oku</string>
<string name="start_accept_privacy_policy">Avrupa Genel Veri Koruma Yönetmeliğine (GDPR) uymak için, dikkatinizi NewPipe\'ın gizlilik ilkesine çekiyoruz. Lütfen dikkatlice okuyun.
\nBize hata bildirimini göndermek için kabul etmelisiniz.</string>
<string name="accept">Kabul et</string>
<string name="decline">Kabul etme</string>
<string name="limit_data_usage_none_description">Sınırsız</string>
<string name="limit_mobile_data_usage_title">Mobil veri kullanırken çözünürlüğü sınırla</string>
</resources>

View File

@ -461,4 +461,16 @@
<string name="one_item_deleted">Видалено один фраґмент.</string>
<string name="app_license">"NewPipe є вільною копілефт програмою: Ви можете використовувати її, поширювати та вдосконавлювати за власним розсудом. Зокрема ви можете перерозподіляти та/або змінювати її за умов використання GNU General Public License, опублікованою Free Software Foundation, під 3-ю версією ліцензії, або (на ваш вибір) будь-якою пізнішою версією."</string>
<string name="import_settings">Чи ви також бажаєте імпортувати налаштування?</string>
<string name="privacy_policy_title">Політика приватності NewPip\'у</string>
<string name="privacy_policy_encouragement">Проєкт NewPipe дуже серйозно ставиться до вашої приватності. Тому цей застосунок не збирає ніяких даних без вашої згоди
\nПолітика приватності NewPipe поясняє у деталях які дані було відіслано та збережено, під час відсилання крахового звіту.</string>
<string name="read_privacy_policy">Читати політику приватності</string>
<string name="start_accept_privacy_policy">Аби дотриматися Норм загального захисту даних ЄС (General Data Protection Regulation, GDPR), ми просимо звернути вашу увагу на NewPipe\'ову політику приватності. Будь ласка, прочитайте уважно
\nВи маєте підтвердити її аби надіслати нам баґового звіту.</string>
<string name="accept">Ухвалити</string>
<string name="decline">Відхилити</string>
<string name="limit_data_usage_none_description">Безмежно</string>
<string name="limit_mobile_data_usage_title">Обмежити роздільну здатність під час користування мобільним інтернетом</string>
</resources>

View File

@ -8,4 +8,6 @@
<string name="download">ڈاؤن لوڈکریں</string>
<string name="search">تلاش کریں</string>
<string name="did_you_mean">نتائج دکھارہاہےبرائے</string>
<string name="open_in_browser">انٹرنیٹ میں کھولیں</string>
<string name="settings">ترتیبات</string>
</resources>

View File

@ -458,4 +458,14 @@
<string name="app_license">NewPipe 是一個 Copyleft 的自由軟體:您可以隨意使用、研究、分享並改進它。您可以在遵守由自由軟體基金會所發佈的 GNU 通用公共授權條款的狀況下自由地再散佈及/或修改它,授權條款預設使用第三版,但您也可以選擇更新的版本。</string>
<string name="import_settings">您是否同時的匯入設定?</string>
<string name="privacy_policy_title">NewPipe 的隱私政策</string>
<string name="privacy_policy_encouragement">NewPipe 專案非常重視您的隱私。因此,未經您的同意應用程式不會收集任何的資料。
\nNewPipe 的隱私權政策,詳細說明了當您發送錯誤回報時,什麼資料才會進行傳送及儲存。</string>
<string name="read_privacy_policy">閱讀隱私政策</string>
<string name="start_accept_privacy_policy">為了符合歐洲通用資料保護條例 ( GDPR ) ,我們請您注意 NewPipe 的隱私政策。請您務必仔細閱讀。
\n您必須接受它才能向我們發送錯誤報告。</string>
<string name="accept">接受</string>
<string name="decline">下降</string>
<string name="limit_data_usage_none_description">沒有限制</string>
<string name="limit_mobile_data_usage_title">當您使用行動網路時限制解析度</string>
</resources>

View File

@ -22,6 +22,8 @@
<string name="popup_remember_size_pos_key" translatable="false">popup_remember_size_pos_key</string>
<string name="use_inexact_seek_key" translatable="false">use_inexact_seek_key</string>
<string name="auto_queue_key" translatable="false">auto_queue_key</string>
<string name="screen_brightness_key" translatable="false">screen_brightness_key</string>
<string name="screen_brightness_timestamp_key" translatable="false">screen_brightness_timestamp_key</string>
<string name="default_resolution_key" translatable="false">default_resolution</string>
<string name="default_resolution_value" translatable="false">360p</string>
@ -853,4 +855,22 @@
<item>ZM</item>
<item>ZW</item>
</string-array>
<!-- Limit mobile data usage -->
<string name="limit_mobile_data_usage_key" translatable="false">limit_mobile_data_usage</string>
<string name="limit_data_usage_none_key" translatable="false">limit_data_usage_none</string>
<string-array name="limit_data_usage_values_list">
<item>@string/limit_data_usage_none_key</item>
<item>1080p60</item>
<item>1080p</item>
<item>720p60</item>
<item>720p</item>
<item>480p</item>
<item>360p</item>
<item>240p</item>
<item>144p</item>
</string-array>
</resources>

View File

@ -328,6 +328,10 @@
<string name="website_title">Website</string>
<string name="website_encouragement">Visit the NewPipe Website for more info and news.</string>
<string name="website_url" translatable="false">https://newpipe.schabi.org/</string>
<string name="privacy_policy_title">NewPipe\'s Privacy Policy</string>
<string name="privacy_policy_encouragement">The NewPipe project takes your privacy very seriously. Therefore, the app does not collect any data without your consent.\nNewPipe\'s privacy policy explains in detail what data is sent and stored when you send a crash report.</string>
<string name="privacy_policy_url" translatable="false">https://newpipe.schabi.org/legal/privacy/</string>
<string name="read_privacy_policy">Read privacy policy</string>
<string name="app_license_title">NewPipe\'s License</string>
<string name="app_license">NewPipe is copyleft libre software: You can use, study share and improve it at your will. Specifically you can redistribute and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.</string>
<string name="read_full_license">Read license</string>
@ -478,4 +482,26 @@
<string name="unhook_checkbox">Unhook (may cause distortion)</string>
<string name="playback_nightcore">Nightcore</string>
<string name="playback_default">Default</string>
<!-- GDPR dialog -->
<string name="start_accept_privacy_policy">In order to comply with the European General Data Protection Regulation (GDPR), we herby draw your attention to NewPipe\'s privacy policy. Please read it carefully.\nYou must accept it to send us the bug report.</string>
<string name="accept">Accept</string>
<string name="decline">Decline</string>
<!-- Limit mobile data usage -->
<string name="limit_data_usage_none_description">No limit</string>
<string name="limit_mobile_data_usage_title">Limit resolution when using mobile data</string>
<string name="limit_mobile_data_usage_value" translatable="false">@string/limit_data_usage_none_key</string>
<string-array name="limit_data_usage_description_list">
<item>@string/limit_data_usage_none_description</item>
<item>1080p60</item>
<item>1080p</item>
<item>720p60</item>
<item>720p</item>
<item>480p</item>
<item>360p</item>
<item>240p</item>
<item>144p</item>
</string-array>
</resources>

View File

@ -19,6 +19,14 @@
android:summary="%s"
android:title="@string/default_popup_resolution_title"/>
<ListPreference
android:defaultValue="@string/limit_mobile_data_usage_value"
android:entries="@array/limit_data_usage_description_list"
android:entryValues="@array/limit_data_usage_values_list"
android:key="@string/limit_mobile_data_usage_key"
android:summary="%s"
android:title="@string/limit_mobile_data_usage_title" />
<SwitchPreference
android:defaultValue="false"
android:key="@string/show_higher_resolutions_key"
@ -39,7 +47,7 @@
android:entryValues="@array/audio_format_values_list"
android:key="@string/default_audio_format_key"
android:summary="%s"
android:title="@string/default_audio_format_title"/>
android:title="@string/default_audio_format_title" />
<PreferenceCategory
android:layout="@layout/settings_category_header_layout"

View File

@ -129,11 +129,6 @@ public class ListHelperTest {
assertEquals(MediaFormat.MPEG_4, result.getFormat());
}
@Test
public void getHighestQualityAudioTest() throws Exception {
assertEquals(320, ListHelper.getHighestQualityAudio(audioStreamsTestList).average_bitrate);
}
@Test
public void getHighestQualityAudioFormatTest() throws Exception {
AudioStream stream = audioStreamsTestList.get(ListHelper.getHighestQualityAudioIndex(MediaFormat.M4A, audioStreamsTestList));
@ -174,19 +169,20 @@ public class ListHelperTest {
new AudioStream("", MediaFormat.WEBMA, /**/ 192),
new AudioStream("", MediaFormat.M4A, /**/ 192),
new AudioStream("", MediaFormat.WEBMA, /**/ 192),
new AudioStream("", MediaFormat.M4A, /**/ 192)));
// List doesn't contains this format, it should fallback to the highest bitrate audio no matter what format it is
// and as it have multiple with the same high value, the last one wins
new AudioStream("", MediaFormat.M4A, /**/ 192),
new AudioStream("", MediaFormat.WEBMA, /**/ 192)));
// List doesn't contains this format, it should fallback to the highest bitrate audio and
// the highest quality format.
stream = testList.get(ListHelper.getHighestQualityAudioIndex(MediaFormat.MP3, testList));
assertEquals(192, stream.average_bitrate);
assertEquals(MediaFormat.M4A, stream.getFormat());
// Again with a new element
// Adding a new format and bitrate. Adding another stream will have no impact since
// it's not a prefered format.
testList.add(new AudioStream("", MediaFormat.WEBMA, /**/ 192));
stream = testList.get(ListHelper.getHighestQualityAudioIndex(MediaFormat.MP3, testList));
assertEquals(192, stream.average_bitrate);
assertEquals(MediaFormat.WEBMA, stream.getFormat());
assertEquals(MediaFormat.M4A, stream.getFormat());
}
@Test
@ -195,5 +191,111 @@ public class ListHelperTest {
assertEquals(-1, ListHelper.getHighestQualityAudioIndex(null, new ArrayList<AudioStream>()));
}
@Test
public void getLowestQualityAudioFormatTest() throws Exception {
AudioStream stream = audioStreamsTestList.get(ListHelper.getMostCompactAudioIndex(MediaFormat.M4A, audioStreamsTestList));
assertEquals(128, stream.average_bitrate);
assertEquals(MediaFormat.M4A, stream.getFormat());
stream = audioStreamsTestList.get(ListHelper.getMostCompactAudioIndex(MediaFormat.WEBMA, audioStreamsTestList));
assertEquals(64, stream.average_bitrate);
assertEquals(MediaFormat.WEBMA, stream.getFormat());
stream = audioStreamsTestList.get(ListHelper.getMostCompactAudioIndex(MediaFormat.MP3, audioStreamsTestList));
assertEquals(64, stream.average_bitrate);
assertEquals(MediaFormat.MP3, stream.getFormat());
}
@Test
public void getLowestQualityAudioFormatPreferredAbsent() throws Exception {
//////////////////////////////////////////
// Doesn't contain the preferred format //
////////////////////////////////////////
List<AudioStream> testList = new ArrayList<>(Arrays.asList(
new AudioStream("", MediaFormat.M4A, /**/ 128),
new AudioStream("", MediaFormat.WEBMA, /**/ 192)));
// List doesn't contains this format, it should fallback to the most compact audio no matter what format it is.
AudioStream stream = testList.get(ListHelper.getMostCompactAudioIndex(MediaFormat.MP3, testList));
assertEquals(128, stream.average_bitrate);
assertEquals(MediaFormat.M4A, stream.getFormat());
// WEBMA is more compact than M4A
testList.add(new AudioStream("", MediaFormat.WEBMA, /**/ 128));
stream = testList.get(ListHelper.getMostCompactAudioIndex(MediaFormat.MP3, testList));
assertEquals(128, stream.average_bitrate);
assertEquals(MediaFormat.WEBMA, stream.getFormat());
////////////////////////////////////////////////////////
// Multiple not-preferred-formats and equal bitrates //
//////////////////////////////////////////////////////
testList = new ArrayList<>(Arrays.asList(
new AudioStream("", MediaFormat.WEBMA, /**/ 192),
new AudioStream("", MediaFormat.M4A, /**/ 192),
new AudioStream("", MediaFormat.WEBMA, /**/ 256),
new AudioStream("", MediaFormat.M4A, /**/ 192),
new AudioStream("", MediaFormat.WEBMA, /**/ 192),
new AudioStream("", MediaFormat.M4A, /**/ 192)));
// List doesn't contains this format, it should fallback to the most compact audio no matter what format it is.
stream = testList.get(ListHelper.getMostCompactAudioIndex(MediaFormat.MP3, testList));
assertEquals(192, stream.average_bitrate);
assertEquals(MediaFormat.WEBMA, stream.getFormat());
// Should be same as above
stream = testList.get(ListHelper.getMostCompactAudioIndex(null, testList));
assertEquals(192, stream.average_bitrate);
assertEquals(MediaFormat.WEBMA, stream.getFormat());
}
@Test
public void getLowestQualityAudioNull() throws Exception {
assertEquals(-1, ListHelper.getMostCompactAudioIndex(null, null));
assertEquals(-1, ListHelper.getMostCompactAudioIndex(null, new ArrayList<AudioStream>()));
}
@Test
public void getVideoDefaultStreamIndexCombinations() throws Exception {
List<VideoStream> testList = Arrays.asList(
new VideoStream("", MediaFormat.MPEG_4, /**/ "1080p"),
new VideoStream("", MediaFormat.MPEG_4, /**/ "720p60"),
new VideoStream("", MediaFormat.MPEG_4, /**/ "720p"),
new VideoStream("", MediaFormat.WEBM, /**/ "480p"),
new VideoStream("", MediaFormat.MPEG_4, /**/ "360p"),
new VideoStream("", MediaFormat.WEBM, /**/ "360p"),
new VideoStream("", MediaFormat.v3GPP, /**/ "240p60"),
new VideoStream("", MediaFormat.WEBM, /**/ "144p"));
// exact matches
assertEquals(1, ListHelper.getVideoStreamIndex("720p60", MediaFormat.MPEG_4, testList));
assertEquals(2, ListHelper.getVideoStreamIndex("720p", MediaFormat.MPEG_4, testList));
// match but not refresh
assertEquals(0, ListHelper.getVideoStreamIndex("1080p60", MediaFormat.MPEG_4, testList));
assertEquals(6, ListHelper.getVideoStreamIndex("240p", MediaFormat.v3GPP, testList));
// match but not format
assertEquals(1, ListHelper.getVideoStreamIndex("720p60", MediaFormat.WEBM, testList));
assertEquals(2, ListHelper.getVideoStreamIndex("720p", MediaFormat.WEBM, testList));
assertEquals(1, ListHelper.getVideoStreamIndex("720p60", null, testList));
assertEquals(2, ListHelper.getVideoStreamIndex("720p", null, testList));
// match but not format and not refresh
assertEquals(0, ListHelper.getVideoStreamIndex("1080p60", MediaFormat.WEBM, testList));
assertEquals(6, ListHelper.getVideoStreamIndex("240p", MediaFormat.WEBM, testList));
assertEquals(0, ListHelper.getVideoStreamIndex("1080p60", null, testList));
assertEquals(6, ListHelper.getVideoStreamIndex("240p", null, testList));
// match closest lower resolution
assertEquals(7, ListHelper.getVideoStreamIndex("200p", MediaFormat.WEBM, testList));
assertEquals(7, ListHelper.getVideoStreamIndex("200p60", MediaFormat.WEBM, testList));
assertEquals(7, ListHelper.getVideoStreamIndex("200p", MediaFormat.MPEG_4, testList));
assertEquals(7, ListHelper.getVideoStreamIndex("200p60", MediaFormat.MPEG_4, testList));
assertEquals(7, ListHelper.getVideoStreamIndex("200p", null, testList));
assertEquals(7, ListHelper.getVideoStreamIndex("200p60", null, testList));
// Can't find a match
assertEquals(-1, ListHelper.getVideoStreamIndex("100p", null, testList));
}
}

View File

@ -0,0 +1,8 @@
### Improvements
- Import/export settings #1333
- Reduce overdraw (performance improvement) #1371
- Small code improvements #1375
- Add everything about GDPR #1420
### Fixed
- Downloader: Fix crash on loading unfinished downloads from .giga files #1407

View File

@ -0,0 +1,8 @@
### Improvements
- Added the ability to limit video quality if using mobile data. #1339
- Remember brightness for the session #1442
- Improve download performance for weaker CPUs #1431
- add (working) support for media session #1433
### Fix
- Fix crash on opening downloads (fix now available for release builds) #1441