mirror of
https://github.com/TeamNewPipe/NewPipe
synced 2025-09-24 08:40:51 +02:00
Compare commits
27 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
aa06e3490d | ||
![]() |
ece889b36b | ||
![]() |
9848f19ce6 | ||
![]() |
e59b087057 | ||
![]() |
5b451d1ac7 | ||
![]() |
f050c05b3c | ||
![]() |
06b8edefbf | ||
![]() |
f3a2a28398 | ||
![]() |
9b0a1fc2ec | ||
![]() |
c87ab234eb | ||
![]() |
68468756a8 | ||
![]() |
9016df0195 | ||
![]() |
7acece9705 | ||
![]() |
d1896c23c0 | ||
![]() |
dae19f03e0 | ||
![]() |
9dafccf0f7 | ||
![]() |
5f270c41ae | ||
![]() |
f9f80e9003 | ||
![]() |
c5063d4269 | ||
![]() |
ccbe18ec1c | ||
![]() |
321a8a8b25 | ||
![]() |
77a9560376 | ||
![]() |
058a039a82 | ||
![]() |
7c744703e4 | ||
![]() |
a934cbb085 | ||
![]() |
cf4158c0d0 | ||
![]() |
dc56eab9b6 |
@@ -8,8 +8,8 @@ android {
|
||||
applicationId "org.schabi.newpipe"
|
||||
minSdkVersion 15
|
||||
targetSdkVersion 23
|
||||
versionCode 11
|
||||
versionName "0.7.2"
|
||||
versionCode 12
|
||||
versionName "0.7.3"
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
|
@@ -1,20 +1,29 @@
|
||||
package org.schabi.newpipe;
|
||||
|
||||
import android.Manifest;
|
||||
import android.app.Activity;
|
||||
import android.app.Dialog;
|
||||
import android.app.DownloadManager;
|
||||
import android.app.Notification;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.os.Environment;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v4.app.ActivityCompat;
|
||||
import android.support.v4.app.DialogFragment;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.util.Log;
|
||||
import android.widget.Toast;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by Christian Schabesberger on 21.09.15.
|
||||
@@ -51,6 +60,8 @@ public class DownloadDialog extends DialogFragment {
|
||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||
arguments = getArguments();
|
||||
super.onCreateDialog(savedInstanceState);
|
||||
if(ContextCompat.checkSelfPermission(this.getContext(),Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED)
|
||||
ActivityCompat.requestPermissions(getActivity(),new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},0);
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
|
||||
builder.setTitle(R.string.download_dialog_title)
|
||||
.setItems(R.array.download_options, new DialogInterface.OnClickListener() {
|
||||
@@ -61,53 +72,83 @@ public class DownloadDialog extends DialogFragment {
|
||||
String suffix = "";
|
||||
String title = arguments.getString(TITLE);
|
||||
String url = "";
|
||||
String downloadFolder = Environment.DIRECTORY_DOWNLOADS;
|
||||
File downloadDir = NewPipeSettings.getDownloadFolder();
|
||||
switch(which) {
|
||||
case 0: // Video
|
||||
suffix = arguments.getString(FILE_SUFFIX_VIDEO);
|
||||
url = arguments.getString(VIDEO_URL);
|
||||
downloadFolder = Environment.DIRECTORY_MOVIES;
|
||||
downloadDir = NewPipeSettings.getVideoDownloadFolder(context);
|
||||
break;
|
||||
case 1:
|
||||
suffix = arguments.getString(FILE_SUFFIX_AUDIO);
|
||||
url = arguments.getString(AUDIO_URL);
|
||||
downloadFolder = Environment.DIRECTORY_MUSIC;
|
||||
downloadDir = NewPipeSettings.getAudioDownloadFolder(context);
|
||||
break;
|
||||
default:
|
||||
Log.d(TAG, "lolz");
|
||||
}
|
||||
//to avoid hard-coded string like "/storage/emulated/0/Movies"
|
||||
String downloadPath = prefs.getString(getString(R.string.download_path_key),
|
||||
Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + downloadFolder);
|
||||
final File dir = new File(downloadPath);
|
||||
if(!dir.exists()) {
|
||||
if(!downloadDir.exists()) {
|
||||
//attempt to create directory
|
||||
boolean mkdir = dir.mkdir();
|
||||
if(!mkdir && !dir.isDirectory()) {
|
||||
Log.e(TAG, "Cant' create directory named " + dir.toString());
|
||||
//TODO notify user "download directory should be changed" ?
|
||||
boolean mkdir = downloadDir.mkdirs();
|
||||
if(!mkdir && !downloadDir.isDirectory()) {
|
||||
String message = context.getString(R.string.err_dir_create,downloadDir.toString());
|
||||
Log.e(TAG, message);
|
||||
Toast.makeText(context,message , Toast.LENGTH_LONG).show();
|
||||
|
||||
return;
|
||||
}
|
||||
String message = context.getString(R.string.info_dir_created,downloadDir.toString());
|
||||
Log.e(TAG, message);
|
||||
Toast.makeText(context,message , Toast.LENGTH_LONG).show();
|
||||
}
|
||||
|
||||
String saveFilePath = dir + "/" + title + suffix;
|
||||
File saveFilePath = new File(downloadDir,createFileName(title) + suffix);
|
||||
|
||||
long id = 0;
|
||||
if (App.isUsingTor()) {
|
||||
// if using Tor, do not use DownloadManager because the proxy cannot be set
|
||||
Downloader.downloadFile(getContext(), url, saveFilePath);
|
||||
Downloader.downloadFile(getContext(), url, saveFilePath, title);
|
||||
} else {
|
||||
DownloadManager dm = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
|
||||
DownloadManager.Request request = new DownloadManager.Request(
|
||||
Uri.parse(url));
|
||||
request.setDestinationUri(Uri.fromFile(new File(saveFilePath)));
|
||||
request.setDestinationUri(Uri.fromFile(saveFilePath));
|
||||
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
|
||||
|
||||
request.setTitle(title);
|
||||
request.setDescription("'" + url +
|
||||
"' => '" + saveFilePath + "'");
|
||||
request.allowScanningByMediaScanner();
|
||||
|
||||
try {
|
||||
dm.enqueue(request);
|
||||
id = dm.enqueue(request);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
Log.i(TAG,"Started downloading '" + url +
|
||||
"' => '" + saveFilePath + "' #" + id);
|
||||
}
|
||||
});
|
||||
return builder.create();
|
||||
}
|
||||
|
||||
/**
|
||||
* #143 #44 #42 #22: make shure that the filename does not contain illegal chars.
|
||||
* This should fix some of the "cannot download" problems.
|
||||
* */
|
||||
private String createFileName(String fName) {
|
||||
// from http://eng-przemelek.blogspot.de/2009/07/how-to-create-valid-file-name.html
|
||||
|
||||
List<String> forbiddenCharsPatterns = new ArrayList<String> ();
|
||||
forbiddenCharsPatterns.add("[:]+"); // Mac OS, but it looks that also Windows XP
|
||||
forbiddenCharsPatterns.add("[\\*\"/\\\\\\[\\]\\:\\;\\|\\=\\,]+"); // Windows
|
||||
forbiddenCharsPatterns.add("[^\\w\\d\\.]+"); // last chance... only latin letters and digits
|
||||
String nameToTest = fName;
|
||||
for (String pattern : forbiddenCharsPatterns) {
|
||||
nameToTest = nameToTest.replaceAll(pattern, "_");
|
||||
}
|
||||
return nameToTest;
|
||||
}
|
||||
}
|
||||
|
@@ -13,6 +13,7 @@ import android.util.Log;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
@@ -45,10 +46,32 @@ import info.guardianproject.netcipher.NetCipher;
|
||||
* along with NewPipe. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
public class Downloader {
|
||||
public class Downloader extends AsyncTask<Void, Integer, Void> {
|
||||
public static final String TAG = "Downloader";
|
||||
private static final String USER_AGENT = "Mozilla/5.0";
|
||||
|
||||
private NotificationManager nm;
|
||||
private NotificationCompat.Builder builder;
|
||||
private int notifyId = 0x1234;
|
||||
private int fileSize = 0xffffffff;
|
||||
|
||||
private final Context context;
|
||||
private final String fileURL;
|
||||
private final File saveFilePath;
|
||||
private final String title;
|
||||
|
||||
private final String debugContext;
|
||||
|
||||
public Downloader(Context context, String fileURL, File saveFilePath, String title) {
|
||||
this.context = context;
|
||||
this.fileURL = fileURL;
|
||||
this.saveFilePath = saveFilePath;
|
||||
this.title = title;
|
||||
|
||||
this.debugContext = "'" + fileURL +
|
||||
"' => '" + saveFilePath + "'";
|
||||
}
|
||||
|
||||
/**Download the text file at the supplied URL as in download(String),
|
||||
* but set the HTTP header field "Accept-Language" to the supplied string.
|
||||
* @param siteUrl the URL of the text file to return the contents of
|
||||
@@ -118,86 +141,96 @@ public class Downloader {
|
||||
*
|
||||
* @param fileURL HTTP URL of the file to be downloaded
|
||||
* @param saveFilePath path of the directory to save the file
|
||||
* @param title
|
||||
* @throws IOException
|
||||
*/
|
||||
public static void downloadFile(final Context context, final String fileURL, final String saveFilePath) {
|
||||
new AsyncTask<Void, Integer, Void>() {
|
||||
public static void downloadFile(final Context context, final String fileURL, final File saveFilePath, String title) {
|
||||
new Downloader(context, fileURL, saveFilePath, title).execute();
|
||||
}
|
||||
|
||||
private NotificationManager nm;
|
||||
private NotificationCompat.Builder builder;
|
||||
private int notifyId = 0x1234;
|
||||
private int fileSize = 0xffffffff;
|
||||
/** AsyncTask impl: executed in gui thread */
|
||||
@Override
|
||||
protected void onPreExecute() {
|
||||
super.onPreExecute();
|
||||
nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
Drawable icon = context.getResources().getDrawable(R.mipmap.ic_launcher);
|
||||
builder = new NotificationCompat.Builder(context)
|
||||
.setSmallIcon(android.R.drawable.stat_sys_download)
|
||||
.setLargeIcon(((BitmapDrawable) icon).getBitmap())
|
||||
.setContentTitle(saveFilePath.getName())
|
||||
.setContentText(saveFilePath.getAbsolutePath())
|
||||
.setProgress(fileSize, 0, false);
|
||||
nm.notify(notifyId, builder.build());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPreExecute() {
|
||||
super.onPreExecute();
|
||||
nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
Drawable icon = context.getResources().getDrawable(R.mipmap.ic_launcher);
|
||||
builder = new NotificationCompat.Builder(context)
|
||||
.setSmallIcon(android.R.drawable.stat_sys_download)
|
||||
.setLargeIcon(((BitmapDrawable) icon).getBitmap())
|
||||
.setContentTitle(saveFilePath.substring(saveFilePath.lastIndexOf('/') + 1))
|
||||
.setContentText(saveFilePath)
|
||||
.setProgress(fileSize, 0, false);
|
||||
nm.notify(notifyId, builder.build());
|
||||
}
|
||||
/** AsyncTask impl: executed in background thread does the download */
|
||||
@Override
|
||||
protected Void doInBackground(Void... voids) {
|
||||
HttpsURLConnection con = null;
|
||||
InputStream inputStream = null;
|
||||
FileOutputStream outputStream = null;
|
||||
try {
|
||||
con = NetCipher.getHttpsURLConnection(fileURL);
|
||||
int responseCode = con.getResponseCode();
|
||||
|
||||
@Override
|
||||
protected Void doInBackground(Void... voids) {
|
||||
HttpsURLConnection con = null;
|
||||
try {
|
||||
con = NetCipher.getHttpsURLConnection(fileURL);
|
||||
int responseCode = con.getResponseCode();
|
||||
// always check HTTP response code first
|
||||
if (responseCode == HttpURLConnection.HTTP_OK) {
|
||||
fileSize = con.getContentLength();
|
||||
inputStream = new BufferedInputStream(con.getInputStream());
|
||||
outputStream = new FileOutputStream(saveFilePath);
|
||||
|
||||
// always check HTTP response code first
|
||||
if (responseCode == HttpURLConnection.HTTP_OK) {
|
||||
fileSize = con.getContentLength();
|
||||
InputStream inputStream = new BufferedInputStream(con.getInputStream());
|
||||
FileOutputStream outputStream = new FileOutputStream(saveFilePath);
|
||||
int bufferSize = 8192;
|
||||
int downloaded = 0;
|
||||
|
||||
int bufferSize = 8192;
|
||||
int downloaded = 0;
|
||||
|
||||
int bytesRead = -1;
|
||||
byte[] buffer = new byte[bufferSize];
|
||||
while ((bytesRead = inputStream.read(buffer)) != -1) {
|
||||
outputStream.write(buffer, 0, bytesRead);
|
||||
downloaded += bytesRead;
|
||||
if (downloaded % 50000 < bufferSize) {
|
||||
publishProgress(downloaded);
|
||||
}
|
||||
}
|
||||
|
||||
outputStream.close();
|
||||
inputStream.close();
|
||||
publishProgress(bufferSize);
|
||||
|
||||
} else {
|
||||
Log.i(TAG, "No file to download. Server replied HTTP code: " + responseCode);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
if (con != null) {
|
||||
con.disconnect();
|
||||
con = null;
|
||||
int bytesRead = -1;
|
||||
byte[] buffer = new byte[bufferSize];
|
||||
while ((bytesRead = inputStream.read(buffer)) != -1) {
|
||||
outputStream.write(buffer, 0, bytesRead);
|
||||
downloaded += bytesRead;
|
||||
if (downloaded % 50000 < bufferSize) {
|
||||
publishProgress(downloaded);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onProgressUpdate(Integer... progress) {
|
||||
builder.setProgress(fileSize, progress[0], false);
|
||||
nm.notify(notifyId, builder.build());
|
||||
}
|
||||
publishProgress(bufferSize);
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(Void aVoid) {
|
||||
super.onPostExecute(aVoid);
|
||||
nm.cancel(notifyId);
|
||||
} else {
|
||||
Log.i(TAG, "No file to download. Server replied HTTP code: " + responseCode);
|
||||
}
|
||||
}.execute();
|
||||
} catch (IOException e) {
|
||||
Log.e(TAG, "No file to download. Server replied HTTP code: ", e);
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
try {
|
||||
if (outputStream != null) {
|
||||
outputStream.close();
|
||||
outputStream = null;
|
||||
}
|
||||
if (inputStream != null) {
|
||||
inputStream.close();
|
||||
inputStream = null;
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
if (con != null) {
|
||||
con.disconnect();
|
||||
con = null;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onProgressUpdate(Integer... progress) {
|
||||
builder.setProgress(fileSize, progress[0], false);
|
||||
nm.notify(notifyId, builder.build());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(Void aVoid) {
|
||||
super.onPostExecute(aVoid);
|
||||
nm.cancel(notifyId);
|
||||
}
|
||||
|
||||
}
|
||||
|
72
app/src/main/java/org/schabi/newpipe/NewPipeSettings.java
Normal file
72
app/src/main/java/org/schabi/newpipe/NewPipeSettings.java
Normal file
@@ -0,0 +1,72 @@
|
||||
/**
|
||||
* Created by k3b on 07.01.2016.
|
||||
*
|
||||
* Copyright (C) Christian Schabesberger 2015 <chris.schabesberger@mailbox.org>
|
||||
* NewPipeSettings.java is part of NewPipe.
|
||||
*
|
||||
* NewPipe is free software: you can redistribute it 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.
|
||||
*
|
||||
* NewPipe is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with NewPipe. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package org.schabi.newpipe;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Environment;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.util.Log;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
/**
|
||||
* Helper for global settings
|
||||
*/
|
||||
public class NewPipeSettings {
|
||||
public static void initSettings(Context context) {
|
||||
PreferenceManager.setDefaultValues(context, R.xml.settings, false);
|
||||
getVideoDownloadFolder(context);
|
||||
getAudioDownloadFolder(context);
|
||||
}
|
||||
|
||||
public static File getDownloadFolder() {
|
||||
return getFolder(Environment.DIRECTORY_DOWNLOADS);
|
||||
}
|
||||
|
||||
public static File getVideoDownloadFolder(Context context) {
|
||||
return getFolder(context, R.string.download_path_key, Environment.DIRECTORY_MOVIES);
|
||||
}
|
||||
|
||||
public static File getAudioDownloadFolder(Context context) {
|
||||
return getFolder(context, R.string.download_path_audio_key, Environment.DIRECTORY_MUSIC);
|
||||
}
|
||||
|
||||
private static File getFolder(Context context, int keyID, String defaultDirectoryName) {
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
final String key = context.getString(keyID);
|
||||
String downloadPath = prefs.getString(key, null);
|
||||
if ((downloadPath != null) && (!downloadPath.isEmpty())) return new File(downloadPath.trim());
|
||||
|
||||
final File folder = getFolder(defaultDirectoryName);
|
||||
SharedPreferences.Editor spEditor = prefs.edit();
|
||||
spEditor.putString(key
|
||||
, new File(folder,"NewPipe").getAbsolutePath());
|
||||
spEditor.apply();
|
||||
return folder;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
private static File getFolder(String defaultDirectoryName) {
|
||||
return new File(Environment.getExternalStorageDirectory(),defaultDirectoryName);
|
||||
}
|
||||
}
|
@@ -71,12 +71,14 @@ public class SettingsActivity extends PreferenceActivity {
|
||||
String DEFAULT_AUDIO_FORMAT_PREFERENCE;
|
||||
String SEARCH_LANGUAGE_PREFERENCE;
|
||||
String DOWNLOAD_PATH_PREFERENCE;
|
||||
String DOWNLOAD_PATH_AUDIO_PREFERENCE;
|
||||
String USE_TOR_KEY;
|
||||
|
||||
private ListPreference defaultResolutionPreference;
|
||||
private ListPreference defaultAudioFormatPreference;
|
||||
private ListPreference searchLanguagePreference;
|
||||
private EditTextPreference downloadPathPreference;
|
||||
private EditTextPreference downloadPathAudioPreference;
|
||||
private CheckBoxPreference useTorCheckBox;
|
||||
private SharedPreferences defaultPreferences;
|
||||
|
||||
@@ -95,6 +97,7 @@ public class SettingsActivity extends PreferenceActivity {
|
||||
DEFAULT_AUDIO_FORMAT_PREFERENCE =getString(R.string.default_audio_format_key);
|
||||
SEARCH_LANGUAGE_PREFERENCE =getString(R.string.search_language_key);
|
||||
DOWNLOAD_PATH_PREFERENCE = getString(R.string.download_path_key);
|
||||
DOWNLOAD_PATH_AUDIO_PREFERENCE = getString(R.string.download_path_audio_key);
|
||||
USE_TOR_KEY = getString(R.string.use_tor_key);
|
||||
|
||||
// get pref objects
|
||||
@@ -106,6 +109,8 @@ public class SettingsActivity extends PreferenceActivity {
|
||||
(ListPreference) findPreference(SEARCH_LANGUAGE_PREFERENCE);
|
||||
downloadPathPreference =
|
||||
(EditTextPreference) findPreference(DOWNLOAD_PATH_PREFERENCE);
|
||||
downloadPathAudioPreference =
|
||||
(EditTextPreference) findPreference(DOWNLOAD_PATH_AUDIO_PREFERENCE);
|
||||
useTorCheckBox = (CheckBoxPreference) findPreference(USE_TOR_KEY);
|
||||
|
||||
prefListener = new SharedPreferences.OnSharedPreferenceChangeListener() {
|
||||
@@ -147,6 +152,9 @@ public class SettingsActivity extends PreferenceActivity {
|
||||
downloadPathPreference.setSummary(
|
||||
defaultPreferences.getString(DOWNLOAD_PATH_PREFERENCE,
|
||||
getString(R.string.download_path_summary)));
|
||||
downloadPathAudioPreference.setSummary(
|
||||
defaultPreferences.getString(DOWNLOAD_PATH_AUDIO_PREFERENCE,
|
||||
getString(R.string.download_path_audio_summary)));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -246,15 +254,6 @@ public class SettingsActivity extends PreferenceActivity {
|
||||
}
|
||||
|
||||
public static void initSettings(Context context) {
|
||||
PreferenceManager.setDefaultValues(context, R.xml.settings, false);
|
||||
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
if(sp.getString(context.getString(R.string.download_path_key), "").isEmpty()){
|
||||
SharedPreferences.Editor spEditor = sp.edit();
|
||||
String newPipeDownloadStorage =
|
||||
Environment.getExternalStorageDirectory().getAbsolutePath() + "/NewPipe";
|
||||
spEditor.putString(context.getString(R.string.download_path_key)
|
||||
, newPipeDownloadStorage);
|
||||
spEditor.apply();
|
||||
}
|
||||
NewPipeSettings.initSettings(context);
|
||||
}
|
||||
}
|
||||
|
@@ -2,7 +2,7 @@
|
||||
<resources>
|
||||
<string name="view_count_text">%1$s Aufrufe</string>
|
||||
<string name="upload_date_text">Hochgeladen am %1$s</string>
|
||||
<string name="no_player_found">Keinen Streamplayer gefunden. Vielleicht möchtest du einen installieren.</string>
|
||||
<string name="no_player_found">Keinen Streamplayer gefunden. Möchtest du VLC installieren?</string>
|
||||
<string name="install">Jetzt installieren</string>
|
||||
<string name="cancel">Abbrechen</string>
|
||||
<string name="open_in_browser">In Browser öffnen</string>
|
||||
@@ -30,8 +30,8 @@
|
||||
<string name="show_play_with_kodi_summary">Zeigt eine Option an, über die man Videos mit dem Kodi Mediacenter abspielen kann.</string>
|
||||
<string name="play_audio">Audio</string>
|
||||
<string name="default_audio_format_title">Bevorzugtes Audio Format</string>
|
||||
<string name="webm_description">WebM — freies Format</string>
|
||||
<string name="m4a_description">m4a — bessere Qualität</string>
|
||||
<string name="webm_description">WebM — freies Format</string>
|
||||
<string name="m4a_description">m4a — bessere Qualität</string>
|
||||
<string name="download_dialog_title">Herunterladen</string>
|
||||
<string-array name="downloadOptions">
|
||||
<item>Video</item>
|
||||
@@ -56,4 +56,7 @@
|
||||
|
||||
<string name="use_tor_title">Benutze TOR</string>
|
||||
<string name="use_tor_summary">Erzwinge das Herunterladen durch TOR für verbesserte Privatsphäre (Videostream noch nicht unterstützt)</string>
|
||||
</resources>
|
||||
<string name="background_player_name">NewPipe Hintergrundwiedergabe</string>
|
||||
<string name="network_error">Netzwerk Fehler</string>
|
||||
|
||||
</resources>
|
||||
|
@@ -17,7 +17,7 @@
|
||||
<string name="screen_rotation">rotación</string>
|
||||
<string name="settings_activity_title">Ajustes</string>
|
||||
<string name="useExternalPlayerTitle">Usar reproductor externo</string>
|
||||
<string name="download_path_title">Descargar en…</string>
|
||||
<string name="download_path_title">Descargar en…</string>
|
||||
<string name="download_path_summary">Ruta donde guardar los vídeos descargados.</string>
|
||||
<string name="download_path_dialog_title">Localización del directorio de descargas</string>
|
||||
<string name="autoplay_through_intent_title">Reproducción automática</string>
|
||||
@@ -30,10 +30,12 @@
|
||||
<string name="show_play_with_kodi_summary">Muestra una opción para reproducir el vídeo con Kodi media center.</string>
|
||||
<string name="play_audio">Audio</string>
|
||||
<string name="default_audio_format_title">Formato de audio por defecto</string>
|
||||
<string name="webm_description">WebM — formato libre</string>
|
||||
<string name="m4a_description">m4a — mejor calidad</string>
|
||||
<string name="webm_description">WebM — formato libre</string>
|
||||
<string name="m4a_description">m4a — mejor calidad</string>
|
||||
<string name="download_dialog_title">Descargar</string>
|
||||
<string name="next_video_title">Siguiente vídeo</string>
|
||||
<string name="url_not_supported_toast">URL no soportada.</string>
|
||||
<string name="similar_videos_btn_text">Vídeos similares</string>
|
||||
</resources>
|
||||
<string name="background_player_name">Reproductor de fondo NewPipe</string>
|
||||
<string name="loading">Cargando</string>
|
||||
</resources>
|
||||
|
@@ -1,6 +1,6 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<string name="autoplay_through_intent_summary">Démarrer automatiquement la vidéo si elle a été appelée depuis une autre application.</string>
|
||||
<string name="autoplay_through_intent_summary">Lire automatiquement une vidéo si elle a été appelée depuis une autre application</string>
|
||||
<string name="cancel">Annuler</string>
|
||||
<string name="choose_browser">Choisir un navigateur :</string>
|
||||
<string name="default_resolution_title">Résolution par défaut</string>
|
||||
@@ -8,11 +8,11 @@
|
||||
<string name="download">Télécharger</string>
|
||||
<string name="download_path_title">Emplacement des téléchargements</string>
|
||||
<string name="download_path_dialog_title">Entrez l\'emplacement du téléchargement</string>
|
||||
<string name="download_path_summary">Emplacement des vidéos téléchargées.</string>
|
||||
<string name="download_path_summary">Chemin des vidéos téléchargées</string>
|
||||
<string name="install">Installer</string>
|
||||
<string name="installeKore">Installer Kore</string>
|
||||
<string name="kore_not_found">L\'application Kore est introuvable. Kore est nécessaire afin de lire des vidéos dans Kodi media center.</string>
|
||||
<string name="no_player_found">Aucun lecteur de streaming détecté. Vous devriez en installer un.</string>
|
||||
<string name="kore_not_found">L\'application Kore est introuvable. Installer Kore ?</string>
|
||||
<string name="no_player_found">Aucun lecteur streaming trouvé. Installer VLC ?</string>
|
||||
<string name="open_in_browser">Ouvrir dans le navigateur</string>
|
||||
<string name="autoplay_through_intent_title">Lecture automatique via Intent</string>
|
||||
<string name="play_with_kodi_title">Lire avec Kodi</string>
|
||||
@@ -22,7 +22,7 @@
|
||||
<string name="settings">Paramètres</string>
|
||||
<string name="share">Partager</string>
|
||||
<string name="share_dialog_title">Partager avec :</string>
|
||||
<string name="show_play_with_kodi_summary">Afficher une option pour lire la vidéo avec Kodi media center.</string>
|
||||
<string name="show_play_with_kodi_summary">Afficher une option pour lire la vidéo via Kodi media center</string>
|
||||
<string name="show_play_with_kodi_title">Afficher l\'option \"Lire avec Kodi\"</string>
|
||||
<string name="settings_activity_title">Paramètres</string>
|
||||
<string name="upload_date_text">Mise en ligne le %1$s</string>
|
||||
@@ -30,12 +30,12 @@
|
||||
<string name="view_count_text">%1$s vues</string>
|
||||
<string name="play_audio">Audio</string>
|
||||
<string name="default_audio_format_title">Format audio par défaut</string>
|
||||
<string name="webm_description">WebM — format libre</string>
|
||||
<string name="m4a_description">m4a — meilleur qualité</string>
|
||||
<string name="webm_description">WebM — format libre</string>
|
||||
<string name="m4a_description">m4a — meilleure qualité</string>
|
||||
<string name="download_dialog_title">Télécharger</string>
|
||||
<string name="next_video_title">Vidéo suivante</string>
|
||||
<string name="show_next_and_similar_title">Afficher les vidéos suivantes et similaires</string>
|
||||
<string name="url_not_supported_toast">URL non supportée.</string>
|
||||
<string name="url_not_supported_toast">URL non supportée</string>
|
||||
<string name="similar_videos_btn_text">Vidéos similaires</string>
|
||||
<string name="settings_category_video_audio_title">Vidéo & Audio</string>
|
||||
<string name="settings_category_other_title">Divers</string>
|
||||
@@ -55,4 +55,11 @@
|
||||
|
||||
<string name="use_tor_title">Utiliser Tor</string>
|
||||
<string name="use_tor_summary">Forcer le trafic de téléchargement via Tor pour plus de confidentialité (vidéos streaming non supporté)</string>
|
||||
</resources>
|
||||
<string name="theme_title">Thème</string>
|
||||
<string name="dark_theme_title">Sombre</string>
|
||||
<string name="light_theme_title">Clair</string>
|
||||
|
||||
<string name="settings_category_appearance_title">Apparence</string>
|
||||
<string name="network_error">Erreur réseau</string>
|
||||
|
||||
</resources>
|
||||
|
@@ -29,8 +29,8 @@
|
||||
<string name="show_play_with_kodi_summary">Kodi メディアセンター経由で動画を再生するための設定を表示します.</string>
|
||||
<string name="play_audio">オーディオ</string>
|
||||
<string name="default_audio_format_title">基本のオーディオフォーマット</string>
|
||||
<string name="webm_description">WebM — フリーフォーマット</string>
|
||||
<string name="m4a_description">m4a — より良い品質</string>
|
||||
<string name="webm_description">WebM — フリーフォーマット</string>
|
||||
<string name="m4a_description">m4a — より良い品質</string>
|
||||
<string name="download_dialog_title">ダウンロード</string>
|
||||
<string name="next_video_title">次の動画</string>
|
||||
<string name="show_next_and_similar_title">次の同様の動画を表示します。</string>
|
||||
@@ -54,4 +54,12 @@
|
||||
|
||||
<string name="use_tor_title">Tor を使用する</string>
|
||||
<string name="use_tor_summary">強制的に Tor を経由したプライバシーを高めたトラフィックでダウンロードします (ビデオのストリーミングはまだサポートされていません)</string>
|
||||
</resources>
|
||||
<string name="theme_title">テーマ</string>
|
||||
<string name="dark_theme_title">ダーク</string>
|
||||
<string name="light_theme_title">ライト</string>
|
||||
|
||||
<string name="settings_category_appearance_title">外観</string>
|
||||
<string name="settings_category_other_title">その他</string>
|
||||
<string name="network_error">ネットワーク エラー</string>
|
||||
|
||||
</resources>
|
||||
|
@@ -1,7 +1,7 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources><string name="view_count_text">%1$s visualizações</string>
|
||||
<string name="upload_date_text">Carregado em %1$s</string>
|
||||
<string name="no_player_found">Reprodutor não disponível. Deve instalar um reprodutor.</string>
|
||||
<string name="no_player_found">Reprodutor não disponível. Instalar o VLC?</string>
|
||||
<string name="install">Instalar</string>
|
||||
<string name="cancel">Cancelar</string>
|
||||
<string name="open_in_browser">Abrir no navegador</string>
|
||||
@@ -18,24 +18,24 @@
|
||||
<string name="use_external_video_player_title">Utilizar reprodutor de vídeo externo</string>
|
||||
<string name="use_external_audio_player_title">Utilizar reprodutor de áudio externo</string>
|
||||
<string name="download_path_title">Local para a descarga</string>
|
||||
<string name="download_path_summary">Local para guardar os vídeos descarregados.</string>
|
||||
<string name="download_path_summary">Local para guardar os vídeos descarregados</string>
|
||||
<string name="download_path_dialog_title">Digite o caminho</string>
|
||||
<string name="autoplay_through_intent_title">Reproduzir via Intent</string>
|
||||
<string name="autoplay_through_intent_summary">Iniciar automaticamente o vídeo se for invocado por outra aplicação.</string>
|
||||
<string name="autoplay_through_intent_summary">Iniciar automaticamente o vídeo se for invocado por outra aplicação</string>
|
||||
<string name="default_resolution_title">Resolução padrão</string>
|
||||
<string name="play_with_kodi_title">Reproduzir com Kodi</string>
|
||||
<string name="kore_not_found">Aplicação não encontrada. Necessita do Kore para reproduzir vídeos no Kodi.</string>
|
||||
<string name="kore_not_found">Aplicação não encontrada. Instalar o Kore?</string>
|
||||
<string name="installeKore">Instalar o Kore</string>
|
||||
<string name="show_play_with_kodi_title">Mostrar opção \"Reproduzir com Kodi\"</string>
|
||||
<string name="show_play_with_kodi_summary">Mostra uma opção para reproduzir o vídeo com o Kodi.</string>
|
||||
<string name="show_play_with_kodi_summary">Mostra uma opção para reproduzir o vídeo com o Kodi</string>
|
||||
<string name="play_audio">Áudio</string>
|
||||
<string name="default_audio_format_title">Formato áudio padrão</string>
|
||||
<string name="webm_description">WebM — formato livre</string>
|
||||
<string name="m4a_description">m4a — melhor qualidade</string>
|
||||
<string name="webm_description">WebM — formato livre</string>
|
||||
<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 similares</string>
|
||||
<string name="url_not_supported_toast">URL não suportado.</string>
|
||||
<string name="url_not_supported_toast">URL não suportado</string>
|
||||
<string name="similar_videos_btn_text">Vídeos similares</string>
|
||||
<string name="search_language_title">Idioma preferencial do conteúdo</string>
|
||||
<string name="settings_category_video_audio_title">Vídeo e áudio</string>
|
||||
@@ -47,4 +47,18 @@
|
||||
<string name="detail_uploader_thumbnail_view_description">Carregador de miniaturas</string>
|
||||
<string name="detail_dislikes_img_view_description">Não gosto</string>
|
||||
<string name="detail_likes_img_view_description">Gosto</string>
|
||||
<string name="background_player_name">Reprodutor de fundo NewPipe</string>
|
||||
<string name="loading">A carregar</string>
|
||||
<string name="theme_title">Tema</string>
|
||||
<string name="dark_theme_title">Escuro</string>
|
||||
<string name="light_theme_title">Claro</string>
|
||||
|
||||
<string name="settings_category_appearance_title">Aparência</string>
|
||||
<string name="settings_category_other_title">Outra</string>
|
||||
<string name="background_player_playing_toast">A reproduzir em segundo plano</string>
|
||||
<string name="play_btn_text">Reproduzir</string>
|
||||
<string name="network_error">Erro de rede</string>
|
||||
|
||||
<string name="use_tor_title">Utilizar Tor</string>
|
||||
<string name="use_tor_summary">Utilizar a rede Tor para ter mais privacidade (ainda não é suportada a transmissão de vídeos)</string>
|
||||
</resources>
|
||||
|
@@ -18,27 +18,27 @@
|
||||
<string name="settings_activity_title">Настройки</string>
|
||||
<string name="useExternalPlayerTitle">Использовать внешний проигрыватель</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="autoplay_through_intent_title">Автопроигрывание через интернет</string>
|
||||
<string name="autoplay_through_intent_summary">Автоматически воспроизводить видео когда оно открыто через другое приложение.</string>
|
||||
<string name="autoplay_through_intent_summary">Автоматически воспроизводить видео, открытое через другое приложение</string>
|
||||
<string name="default_resolution_title">Разрешение по-умолчанию</string>
|
||||
<string name="play_with_kodi_title">Воспроизвести с помощью Kodi</string>
|
||||
<string name="kore_not_found">Приложение Kore не наидено. Чтобы проигрывать видео через Kodi media center, нужен Kore.</string>
|
||||
<string name="kore_not_found">Приложение Kore не наидено. Установить Kore?</string>
|
||||
<string name="installeKore">Установить Kore</string>
|
||||
<string name="show_play_with_kodi_title">Показывать опцию \"Воспроизвести с помощью Kodi\"</string>
|
||||
<string name="show_play_with_kodi_summary">Показать опцию воспроизведения видео через Kodi media center.</string>
|
||||
<string name="show_play_with_kodi_summary">Показать опцию воспроизведения видео через Kodi media center</string>
|
||||
<string name="play_audio">Аудио</string>
|
||||
<string name="default_audio_format_title">Формат аудио по-умолчанию</string>
|
||||
<string name="webm_description">WebM — свободный формат</string>
|
||||
<string name="m4a_description">m4a — лучшее качество</string>
|
||||
<string name="webm_description">WebM — свободный формат</string>
|
||||
<string name="m4a_description">m4a — лучшее качество</string>
|
||||
<string name="download_dialog_title">Скачать</string>
|
||||
<string-array name="downloadOptions">
|
||||
<item>Видео</item>
|
||||
<item>Аудио</item>
|
||||
</string-array>
|
||||
<string name="next_video_title">Следующее видео</string>
|
||||
<string name="url_not_supported_toast">URL не поддерживается.</string>
|
||||
<string name="url_not_supported_toast">URL не поддерживается</string>
|
||||
<string name="similar_videos_btn_text">Похожие видео</string>
|
||||
<string name="show_next_and_similar_title">Показывать следующее и предложенные видео</string>
|
||||
<string name="search_language_title">Предпочитаемый язык контента</string>
|
||||
@@ -54,4 +54,14 @@
|
||||
<string name="use_external_video_player_title">Использовать внешний проигрыватель для видео</string>
|
||||
<string name="use_external_audio_player_title">Использовать внешний проигрыватель для аудио</string>
|
||||
<string name="background_player_playing_toast">Проигрывание в фоновом режиме</string>
|
||||
<string name="background_player_name">Фоновый проигрыватель NewPipe</string>
|
||||
<string name="loading">Загрузка</string>
|
||||
<string name="theme_title">Тема</string>
|
||||
<string name="dark_theme_title">Темная</string>
|
||||
<string name="light_theme_title">Светлая</string>
|
||||
|
||||
<string name="play_btn_text">Воспроизвести</string>
|
||||
<string name="network_error">Ошибка сети</string>
|
||||
|
||||
<string name="use_tor_title">Использовать Tor</string>
|
||||
</resources>
|
||||
|
60
app/src/main/res/values-zh-rCN/strings.xml
Normal file
60
app/src/main/res/values-zh-rCN/strings.xml
Normal file
@@ -0,0 +1,60 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources><string name="background_player_name">NewPipe 背景播放器</string>
|
||||
<string name="view_count_text">%1$s 次观看</string>
|
||||
<string name="upload_date_text">于 %1$s 发布</string>
|
||||
<string name="no_player_found">找不到任何串流播放器。您是否要安装 VLC?</string>
|
||||
<string name="install">安装</string>
|
||||
<string name="cancel">取消</string>
|
||||
<string name="open_in_browser">在浏览器打开</string>
|
||||
<string name="share">分享</string>
|
||||
<string name="loading">载入中</string>
|
||||
<string name="download">下载</string>
|
||||
<string name="search">搜索</string>
|
||||
<string name="settings">设置</string>
|
||||
<string name="did_you_mean">"您是不是要找: "</string>
|
||||
<string name="search_page">"搜索页面: "</string>
|
||||
<string name="share_dialog_title">分享视频:</string>
|
||||
<string name="choose_browser">选择浏览器:</string>
|
||||
<string name="screen_rotation">旋转</string>
|
||||
<string name="settings_activity_title">设置</string>
|
||||
<string name="use_external_video_player_title">使用外置视频播放器</string>
|
||||
<string name="use_external_audio_player_title">使用外置音频播放器</string>
|
||||
<string name="download_path_title">下载路径</string>
|
||||
<string name="download_path_summary">存放已下载视频的路径</string>
|
||||
<string name="download_path_dialog_title">输入下载路径</string>
|
||||
<string name="autoplay_through_intent_title">刻意自动播放</string>
|
||||
<string name="autoplay_through_intent_summary">当另一个程式发出要求时自动播放视频</string>
|
||||
<string name="default_resolution_title">默认分辨率</string>
|
||||
<string name="play_with_kodi_title">用 Kodi 播放</string>
|
||||
<string name="kore_not_found">找不到 Kore 应用程式,您要安装 Kore 吗?</string>
|
||||
<string name="show_play_with_kodi_title">显示 “用 Kodi 播放” 的选项</string>
|
||||
<string name="show_play_with_kodi_summary">显示以 Kodi 媒体中心播放视频的选项</string>
|
||||
<string name="play_audio">音频</string>
|
||||
<string name="default_audio_format_title">默认音频格式</string>
|
||||
<string name="webm_description">WebM — 开放格式</string>
|
||||
<string name="m4a_description">m4a — 更佳品质</string>
|
||||
<string name="theme_title">主题</string>
|
||||
<string name="dark_theme_title">暗色系</string>
|
||||
<string name="light_theme_title">明亮色系</string>
|
||||
|
||||
<string name="download_dialog_title">下载</string>
|
||||
<string name="next_video_title">即将播放</string>
|
||||
<string name="show_next_and_similar_title">显示下一部和相近的视频</string>
|
||||
<string name="url_not_supported_toast">不支援此网址</string>
|
||||
<string name="similar_videos_btn_text">相近的视频</string>
|
||||
<string name="search_language_title">内容位置</string>
|
||||
<string name="settings_category_video_audio_title">视频和音频</string>
|
||||
<string name="settings_category_appearance_title">外观</string>
|
||||
<string name="settings_category_other_title">其他</string>
|
||||
<string name="background_player_playing_toast">背景播放</string>
|
||||
<string name="play_btn_text">播放</string>
|
||||
<string name="network_error">网络错误</string>
|
||||
|
||||
<string name="list_thumbnail_view_description">视频预览缩图</string>
|
||||
<string name="detail_thumbnail_view_description">视频预览缩图</string>
|
||||
<string name="detail_uploader_thumbnail_view_description">上传者的头像缩图</string>
|
||||
<string name="detail_likes_img_view_description">顶</string>
|
||||
<string name="detail_dislikes_img_view_description">踩</string>
|
||||
<string name="use_tor_title">使用 Tor</string>
|
||||
<string name="use_tor_summary">强迫下载流量通过 Tor 加强隐私(暂时不支援串流视频)</string>
|
||||
</resources>
|
60
app/src/main/res/values-zh-rHK/strings.xml
Normal file
60
app/src/main/res/values-zh-rHK/strings.xml
Normal file
@@ -0,0 +1,60 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources><string name="install">安裝</string>
|
||||
<string name="cancel">取消</string>
|
||||
<string name="upload_date_text">於 %1$s 發佈</string>
|
||||
<string name="share">分享</string>
|
||||
<string name="loading">加載中</string>
|
||||
<string name="download">下載</string>
|
||||
<string name="search">搜尋</string>
|
||||
<string name="settings">設置</string>
|
||||
<string name="did_you_mean">"您是不是要查: "</string>
|
||||
<string name="search_page">"搜尋頁面: "</string>
|
||||
<string name="choose_browser">選擇瀏覽器:</string>
|
||||
<string name="screen_rotation">旋轉</string>
|
||||
<string name="settings_activity_title">設置</string>
|
||||
<string name="use_external_video_player_title">使用外置影片播放器</string>
|
||||
<string name="use_external_audio_player_title">使用外置聲音播放器</string>
|
||||
<string name="download_path_title">下載路徑</string>
|
||||
<string name="download_path_summary">存放已下載影片的路徑</string>
|
||||
<string name="download_path_dialog_title">輸入下載路徑</string>
|
||||
<string name="autoplay_through_intent_title">刻意自動播放</string>
|
||||
<string name="autoplay_through_intent_summary">當另一個程式發出要求時自動播放影片</string>
|
||||
<string name="default_resolution_title">預設解析度</string>
|
||||
<string name="play_with_kodi_title">用 Kodi 播放</string>
|
||||
<string name="kore_not_found">找不到 Kore 應用程式,您要安裝 Kore 嗎?</string>
|
||||
<string name="show_play_with_kodi_title">顯示「用 Kodi 播放」的選項</string>
|
||||
<string name="show_play_with_kodi_summary">顯示以 Kodi 媒體中心播放影片的選項</string>
|
||||
<string name="play_audio">聲音</string>
|
||||
<string name="default_audio_format_title">預設聲音檔案格式</string>
|
||||
<string name="webm_description">WebM — 開放格式</string>
|
||||
<string name="m4a_description">m4a — 更佳畫質</string>
|
||||
<string name="theme_title">主題</string>
|
||||
<string name="dark_theme_title">暗色系</string>
|
||||
<string name="light_theme_title">明亮色系</string>
|
||||
|
||||
<string name="download_dialog_title">下載</string>
|
||||
<string name="next_video_title">下一部影片</string>
|
||||
<string name="show_next_and_similar_title">顯示下一部及相關的影片</string>
|
||||
<string name="url_not_supported_toast">不支援此網址</string>
|
||||
<string name="similar_videos_btn_text">相關影片</string>
|
||||
<string name="search_language_title">內容位置</string>
|
||||
<string name="settings_category_video_audio_title">影片及聲音</string>
|
||||
<string name="settings_category_appearance_title">外觀</string>
|
||||
<string name="settings_category_other_title">其他</string>
|
||||
<string name="background_player_playing_toast">背景播放</string>
|
||||
<string name="play_btn_text">播放</string>
|
||||
<string name="network_error">網絡故障</string>
|
||||
|
||||
<string name="list_thumbnail_view_description">影片預覽縮圖</string>
|
||||
<string name="detail_thumbnail_view_description">影片預覽縮圖</string>
|
||||
<string name="detail_uploader_thumbnail_view_description">上載者的個人頭像縮圖</string>
|
||||
<string name="detail_likes_img_view_description">讚好</string>
|
||||
<string name="detail_dislikes_img_view_description">討厭</string>
|
||||
<string name="use_tor_title">使用 Tor</string>
|
||||
<string name="use_tor_summary">強迫下載流量通過 Tor 加強私隱 (暫時不支援串流影片)</string>
|
||||
<string name="background_player_name">NewPipe 背景播放器</string>
|
||||
<string name="view_count_text">觀看次數:%1$s</string>
|
||||
<string name="no_player_found">找不到任何串流播放器,您要安裝 VLC 嗎?</string>
|
||||
<string name="open_in_browser">在瀏覽器開啟</string>
|
||||
<string name="share_dialog_title">分享影片:</string>
|
||||
</resources>
|
60
app/src/main/res/values-zh-rTW/strings.xml
Normal file
60
app/src/main/res/values-zh-rTW/strings.xml
Normal file
@@ -0,0 +1,60 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources><string name="background_player_name">NewPipe 背景播放器</string>
|
||||
<string name="view_count_text">觀看次數:%1$s</string>
|
||||
<string name="upload_date_text">發佈日期:%1$s</string>
|
||||
<string name="no_player_found">找不到任何串流播放器,您要否安裝 VLC?</string>
|
||||
<string name="install">安裝</string>
|
||||
<string name="cancel">取消</string>
|
||||
<string name="open_in_browser">在瀏覽器開啟</string>
|
||||
<string name="share">分享</string>
|
||||
<string name="loading">加載中</string>
|
||||
<string name="download">下載</string>
|
||||
<string name="search">搜尋</string>
|
||||
<string name="settings">設定</string>
|
||||
<string name="did_you_mean">"您是不是要查: "</string>
|
||||
<string name="search_page">"搜尋頁面: "</string>
|
||||
<string name="share_dialog_title">分享影片:</string>
|
||||
<string name="choose_browser">選擇瀏覽器:</string>
|
||||
<string name="screen_rotation">旋轉</string>
|
||||
<string name="settings_activity_title">設定</string>
|
||||
<string name="use_external_video_player_title">使用外置影片播放器</string>
|
||||
<string name="use_external_audio_player_title">使用外置聲音播放器</string>
|
||||
<string name="download_path_title">下載路徑</string>
|
||||
<string name="download_path_summary">存放已下載影片的路徑</string>
|
||||
<string name="download_path_dialog_title">輸入下載路徑</string>
|
||||
<string name="autoplay_through_intent_title">刻意自動播放</string>
|
||||
<string name="autoplay_through_intent_summary">當另一個程式發出要求時自動播放影片</string>
|
||||
<string name="default_resolution_title">預設解析度</string>
|
||||
<string name="play_with_kodi_title">用 Kodi 播放</string>
|
||||
<string name="show_play_with_kodi_summary">顯示以 Kodi 媒體中心播放影片的選項</string>
|
||||
<string name="play_audio">聲音</string>
|
||||
<string name="kore_not_found">找不到 Kore 應用程式,您要安裝 Kore 嗎?</string>
|
||||
<string name="show_play_with_kodi_title">顯示「用 Kodi 播放」的選項</string>
|
||||
<string name="default_audio_format_title">預設聲音檔案格式</string>
|
||||
<string name="webm_description">WebM — 開放格式</string>
|
||||
<string name="m4a_description">m4a — 更佳畫質</string>
|
||||
<string name="theme_title">主題</string>
|
||||
<string name="dark_theme_title">暗色系</string>
|
||||
<string name="light_theme_title">明亮色系</string>
|
||||
|
||||
<string name="download_dialog_title">下載</string>
|
||||
<string name="next_video_title">下一部影片</string>
|
||||
<string name="show_next_and_similar_title">顯示下一部和相關的影片</string>
|
||||
<string name="url_not_supported_toast">不支援此網址</string>
|
||||
<string name="similar_videos_btn_text">相關影片</string>
|
||||
<string name="search_language_title">內容位置</string>
|
||||
<string name="settings_category_video_audio_title">影片和聲音</string>
|
||||
<string name="settings_category_appearance_title">外觀</string>
|
||||
<string name="settings_category_other_title">其他</string>
|
||||
<string name="background_player_playing_toast">背景播放</string>
|
||||
<string name="play_btn_text">播放</string>
|
||||
<string name="network_error">網絡錯誤</string>
|
||||
|
||||
<string name="list_thumbnail_view_description">影片預覽縮圖</string>
|
||||
<string name="detail_thumbnail_view_description">影片預覽縮圖</string>
|
||||
<string name="detail_uploader_thumbnail_view_description">發佈者的個人頭像縮圖</string>
|
||||
<string name="detail_likes_img_view_description">喜歡</string>
|
||||
<string name="detail_dislikes_img_view_description">不喜歡</string>
|
||||
<string name="use_tor_title">使用 Tor</string>
|
||||
<string name="use_tor_summary">強迫下載流量通過 Tor 以加強隱私 (暫時不支援串流影片)</string>
|
||||
</resources>
|
@@ -6,6 +6,7 @@
|
||||
<string name="settings_category_other">settings_category_other</string>
|
||||
<!-- Key values -->
|
||||
<string name="download_path_key">download_path</string>
|
||||
<string name="download_path_audio_key">download_path_audio</string>
|
||||
<string name="use_external_video_player_key">use_external_video_player</string>
|
||||
<string name="use_external_audio_player_key">use_external_audio_player</string>
|
||||
<string name="autoplay_through_intent_key">autoplay_through_intent</string>
|
||||
|
@@ -23,9 +23,15 @@
|
||||
<string name="settings_activity_title">Settings</string>
|
||||
<string name="use_external_video_player_title">Use external video player</string>
|
||||
<string name="use_external_audio_player_title">Use external audio player</string>
|
||||
<string name="download_path_title">Download path</string>
|
||||
|
||||
<string name="download_path_title">Download path video</string>
|
||||
<string name="download_path_summary">Path to store downloaded videos in</string>
|
||||
<string name="download_path_dialog_title">Enter download path</string>
|
||||
<string name="download_path_dialog_title">Enter download path for videos</string>
|
||||
|
||||
<string name="download_path_audio_title">Download path audio</string>
|
||||
<string name="download_path_audio_summary">Path to store downloaded audio in</string>
|
||||
<string name="download_path_audio_dialog_title">Enter download path for audios</string>
|
||||
|
||||
<string name="autoplay_through_intent_title">Autoplay through Intent</string>
|
||||
<string name="autoplay_through_intent_summary">Automatically play a video when it\'s called from another app</string>
|
||||
<string name="default_resolution_title">Default Resolution</string>
|
||||
@@ -36,8 +42,8 @@
|
||||
<string name="show_play_with_kodi_summary">Display an option to play a video via Kodi media center</string>
|
||||
<string name="play_audio">Audio</string>
|
||||
<string name="default_audio_format_title">Default audio format</string>
|
||||
<string name="webm_description">WebM — free format</string>
|
||||
<string name="m4a_description">m4a — better quality</string>
|
||||
<string name="webm_description">WebM — free format</string>
|
||||
<string name="m4a_description">m4a — better quality</string>
|
||||
<string name="theme_title">Theme</string>
|
||||
<string name="dark_theme_title">Dark</string>
|
||||
<string name="light_theme_title">Light</string>
|
||||
@@ -59,7 +65,7 @@
|
||||
<string name="background_player_playing_toast">Playing in background</string>
|
||||
<string name="c3s_url" translatable="false">https://www.c3s.cc/</string>
|
||||
<string name="play_btn_text">Play</string>
|
||||
<string name="network_error">Network Error</string>
|
||||
<string name="network_error">Network error</string>
|
||||
|
||||
<!-- Content descriptions (for better accessibility) -->
|
||||
<string name="list_thumbnail_view_description">Video preview thumbnail</string>
|
||||
@@ -69,4 +75,7 @@
|
||||
<string name="detail_dislikes_img_view_description">Dislikes</string>
|
||||
<string name="use_tor_title">Use Tor</string>
|
||||
<string name="use_tor_summary">Force download traffic through Tor for increased privacy (streaming videos not yet supported)</string>
|
||||
|
||||
<string name="err_dir_create">Cannot create download directory \'%1$s\'</string>
|
||||
<string name="info_dir_created">Created download directory \'%1$s\'</string>
|
||||
</resources>
|
||||
|
@@ -81,6 +81,12 @@
|
||||
android:summary="@string/download_path_summary"
|
||||
android:dialogTitle="@string/download_path_dialog_title" />
|
||||
|
||||
<EditTextPreference
|
||||
android:key="@string/download_path_audio_key"
|
||||
android:title="@string/download_path_audio_title"
|
||||
android:summary="@string/download_path_audio_summary"
|
||||
android:dialogTitle="@string/download_path_audio_dialog_title" />
|
||||
|
||||
<CheckBoxPreference
|
||||
android:key="@string/autoplay_through_intent_key"
|
||||
android:title="@string/autoplay_through_intent_title"
|
||||
|
Reference in New Issue
Block a user