mirror of
https://github.com/TeamNewPipe/NewPipe
synced 2025-09-20 11:20:52 +02:00
Compare commits
22 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
1bef7fbbf3 | ||
![]() |
381f054daf | ||
![]() |
c05d9303a9 | ||
![]() |
cca72a9e4e | ||
![]() |
d4463e5f30 | ||
![]() |
92155e2154 | ||
![]() |
287fd0bf1e | ||
![]() |
9e910d5501 | ||
![]() |
ff54b4d0c9 | ||
![]() |
af0b841bc3 | ||
![]() |
665ea85613 | ||
![]() |
de635392c6 | ||
![]() |
7814cca3d5 | ||
![]() |
6c7204eae0 | ||
![]() |
834d647011 | ||
![]() |
d872263b55 | ||
![]() |
4f8e4ca0ad | ||
![]() |
2abc9d0210 | ||
![]() |
36fb942ce6 | ||
![]() |
56476b35e3 | ||
![]() |
38b3835891 | ||
![]() |
ccf5be116a |
@@ -8,8 +8,8 @@ android {
|
||||
applicationId "org.schabi.newpipe"
|
||||
minSdkVersion 15
|
||||
targetSdkVersion 23
|
||||
versionCode 16
|
||||
versionName "0.7.7"
|
||||
versionCode 17
|
||||
versionName "0.7.8"
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
@@ -42,6 +42,5 @@ dependencies {
|
||||
compile 'de.hdodenhof:circleimageview:2.0.0'
|
||||
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
|
||||
compile 'com.github.nirhart:parallaxscroll:1.0'
|
||||
compile 'org.apache.directory.studio:org.apache.commons.lang:2.6'
|
||||
compile 'com.google.android.exoplayer:exoplayer:r1.5.5'
|
||||
}
|
||||
|
@@ -57,7 +57,7 @@ public class App extends Application {
|
||||
/**
|
||||
* Set the proxy settings based on whether Tor should be enabled or not.
|
||||
*/
|
||||
static void configureTor(boolean enabled) {
|
||||
public static void configureTor(boolean enabled) {
|
||||
useTor = enabled;
|
||||
if (useTor) {
|
||||
NetCipher.useTor();
|
||||
@@ -66,13 +66,13 @@ public class App extends Application {
|
||||
}
|
||||
}
|
||||
|
||||
static void checkStartTor(Context context) {
|
||||
public static void checkStartTor(Context context) {
|
||||
if (useTor) {
|
||||
OrbotHelper.requestStartTor(context);
|
||||
}
|
||||
}
|
||||
|
||||
static boolean isUsingTor() {
|
||||
public static boolean isUsingTor() {
|
||||
return useTor;
|
||||
}
|
||||
}
|
||||
|
@@ -7,7 +7,6 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Color;
|
||||
import android.net.Uri;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Build;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.design.widget.Snackbar;
|
||||
@@ -23,13 +22,13 @@ import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import org.apache.commons.lang.exception.ExceptionUtils;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONObject;
|
||||
import org.schabi.newpipe.extractor.Parser;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.io.StringWriter;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
@@ -237,12 +236,19 @@ public class ErrorActivity extends AppCompatActivity {
|
||||
return false;
|
||||
}
|
||||
|
||||
private static String getStackTrace(final Throwable throwable) {
|
||||
final StringWriter sw = new StringWriter();
|
||||
final PrintWriter pw = new PrintWriter(sw, true);
|
||||
throwable.printStackTrace(pw);
|
||||
return sw.getBuffer().toString();
|
||||
}
|
||||
|
||||
private String formErrorText(List<Exception> el) {
|
||||
String text = "";
|
||||
if(el != null) {
|
||||
for (Exception e : el) {
|
||||
text += "-------------------------------------\n"
|
||||
+ ExceptionUtils.getStackTrace(e);
|
||||
+ getStackTrace(e);
|
||||
}
|
||||
}
|
||||
text += "-------------------------------------";
|
||||
@@ -299,7 +305,7 @@ public class ErrorActivity extends AppCompatActivity {
|
||||
JSONArray exceptionArray = new JSONArray();
|
||||
if(errorList != null) {
|
||||
for (Exception e : errorList) {
|
||||
exceptionArray.put(ExceptionUtils.getStackTrace(e));
|
||||
exceptionArray.put(getStackTrace(e));
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -25,7 +25,6 @@ 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;
|
||||
|
||||
@@ -43,10 +42,6 @@ public class NewPipeSettings {
|
||||
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);
|
||||
}
|
||||
|
@@ -48,6 +48,7 @@ import java.util.ArrayList;
|
||||
import java.util.Vector;
|
||||
|
||||
|
||||
import org.schabi.newpipe.download.DownloadDialog;
|
||||
import org.schabi.newpipe.extractor.AudioStream;
|
||||
import org.schabi.newpipe.extractor.MediaFormat;
|
||||
import org.schabi.newpipe.extractor.ParsingException;
|
||||
|
@@ -102,6 +102,8 @@ public class VideoItemListActivity extends AppCompatActivity
|
||||
} catch(Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
View bg = findViewById(R.id.mainBG);
|
||||
bg.setVisibility(View.GONE);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -200,6 +202,9 @@ public class VideoItemListActivity extends AppCompatActivity
|
||||
setContentView(R.layout.activity_videoitem_list);
|
||||
StreamingService streamingService = null;
|
||||
|
||||
View bg = findViewById(R.id.mainBG);
|
||||
bg.setVisibility(View.VISIBLE);
|
||||
|
||||
try {
|
||||
//------ todo: remove this line when multiservice support is implemented ------
|
||||
currentStreamingServiceId = ServiceList.getIdOfService("Youtube");
|
||||
|
@@ -1,4 +1,4 @@
|
||||
package org.schabi.newpipe;
|
||||
package org.schabi.newpipe.download;
|
||||
|
||||
import android.Manifest;
|
||||
import android.app.Dialog;
|
||||
@@ -16,6 +16,10 @@ import android.support.v7.app.AlertDialog;
|
||||
import android.util.Log;
|
||||
import android.widget.Toast;
|
||||
|
||||
import org.schabi.newpipe.App;
|
||||
import org.schabi.newpipe.NewPipeSettings;
|
||||
import org.schabi.newpipe.R;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -71,7 +75,8 @@ public class DownloadDialog extends DialogFragment {
|
||||
case 0: // Video
|
||||
download(arguments.getString(VIDEO_URL),
|
||||
title,
|
||||
arguments.getString(FILE_SUFFIX_VIDEO), context);
|
||||
arguments.getString(FILE_SUFFIX_VIDEO),
|
||||
NewPipeSettings.getVideoDownloadFolder(context),context);
|
||||
break;
|
||||
default:
|
||||
Log.d(TAG, "lolz");
|
||||
@@ -89,7 +94,8 @@ public class DownloadDialog extends DialogFragment {
|
||||
case 0: // Audio
|
||||
download(arguments.getString(AUDIO_URL),
|
||||
title,
|
||||
arguments.getString(FILE_SUFFIX_AUDIO), context);
|
||||
arguments.getString(FILE_SUFFIX_AUDIO),
|
||||
NewPipeSettings.getAudioDownloadFolder(context),context);
|
||||
break;
|
||||
default:
|
||||
Log.d(TAG, "lolz");
|
||||
@@ -107,12 +113,14 @@ public class DownloadDialog extends DialogFragment {
|
||||
case 0: // Video
|
||||
download(arguments.getString(VIDEO_URL),
|
||||
title,
|
||||
arguments.getString(FILE_SUFFIX_VIDEO), context);
|
||||
arguments.getString(FILE_SUFFIX_VIDEO),
|
||||
NewPipeSettings.getVideoDownloadFolder(context), context);
|
||||
break;
|
||||
case 1:
|
||||
download(arguments.getString(AUDIO_URL),
|
||||
title,
|
||||
arguments.getString(FILE_SUFFIX_AUDIO), context);
|
||||
arguments.getString(FILE_SUFFIX_AUDIO),
|
||||
NewPipeSettings.getAudioDownloadFolder(context), context);
|
||||
break;
|
||||
default:
|
||||
Log.d(TAG, "lolz");
|
||||
@@ -141,8 +149,8 @@ public class DownloadDialog extends DialogFragment {
|
||||
return nameToTest;
|
||||
}
|
||||
|
||||
private void download(String url, String title, String fileSuffix, Context context) {
|
||||
File downloadDir = NewPipeSettings.getDownloadFolder();
|
||||
private void download(String url, String title,
|
||||
String fileSuffix, File downloadDir, Context context) {
|
||||
|
||||
if(!downloadDir.exists()) {
|
||||
//attempt to create directory
|
||||
@@ -162,6 +170,8 @@ public class DownloadDialog extends DialogFragment {
|
||||
File saveFilePath = new File(downloadDir,createFileName(title) + fileSuffix);
|
||||
|
||||
long id = 0;
|
||||
|
||||
|
||||
if (App.isUsingTor()) {
|
||||
// if using Tor, do not use DownloadManager because the proxy cannot be set
|
||||
FileDownloader.downloadFile(getContext(), url, saveFilePath, title);
|
@@ -1,26 +1,21 @@
|
||||
package org.schabi.newpipe;
|
||||
|
||||
package org.schabi.newpipe.download;
|
||||
|
||||
import android.app.NotificationManager;
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.AsyncTask;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.v4.app.NotificationCompat;
|
||||
import android.util.Log;
|
||||
|
||||
import org.schabi.newpipe.R;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
import java.net.UnknownHostException;
|
||||
|
||||
import javax.net.ssl.HttpsURLConnection;
|
||||
|
||||
@@ -46,6 +41,8 @@ import info.guardianproject.netcipher.NetCipher;
|
||||
* along with NewPipe. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
// TODO: FOR HEVEN SAKE !!! DO NOT SIMPLY USE ASYNCTASK. MAKE THIS A PROPER SERVICE !!!
|
||||
public class FileDownloader extends AsyncTask<Void, Integer, Void> {
|
||||
public static final String TAG = "FileDownloader";
|
||||
|
||||
@@ -165,5 +162,4 @@ public class FileDownloader extends AsyncTask<Void, Integer, Void> {
|
||||
super.onPostExecute(aVoid);
|
||||
nm.cancel(notifyId);
|
||||
}
|
||||
|
||||
}
|
@@ -28,6 +28,8 @@
|
||||
android:focusable="false"
|
||||
tools:ignore="InconsistentLayout" />
|
||||
|
||||
<include layout="@layout/main_bg" />
|
||||
|
||||
<fragment android:id="@+id/videoitem_list"
|
||||
android:name="org.schabi.newpipe.VideoItemListFragment"
|
||||
android:layout_width="match_parent"
|
||||
|
@@ -1,8 +1,11 @@
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<include layout="@layout/main_bg" />
|
||||
|
||||
<fragment
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/videoitem_list"
|
||||
|
29
app/src/main/res/layout/main_bg.xml
Normal file
29
app/src/main/res/layout/main_bg.xml
Normal file
@@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:orientation="vertical" android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:id="@+id/mainBG"
|
||||
tools:context=".VideoItemDetailActivity"
|
||||
tools:showIn="@layout/activity_videoitem_list">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAppearance="?android:attr/textAppearanceLarge"
|
||||
android:text="@string/app_name"
|
||||
android:textSize="40sp"
|
||||
android:fontFamily="sans-serif-condensed"
|
||||
android:layout_marginTop="30dp"
|
||||
android:id="@+id/mainBGTitle"
|
||||
android:layout_gravity="center_horizontal" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||
android:text="@string/main_bg_subtitle"
|
||||
android:id="@+id/mainBGSubtitle"
|
||||
android:layout_gravity="center_horizontal" />
|
||||
|
||||
</LinearLayout>
|
@@ -9,7 +9,7 @@
|
||||
<string name="download">Stáhnout</string>
|
||||
<string name="search">Vyhledat</string>
|
||||
<string name="settings">Nastavení</string>
|
||||
<string name="did_you_mean">"Měli jste na mysli: "</string>
|
||||
<string name="did_you_mean">Měli jste na mysli: %1$s?</string>
|
||||
<string name="search_page">"Vyhledat stránku: "</string>
|
||||
<string name="share_dialog_title">Sdílet s:</string>
|
||||
<string name="choose_browser">Vybrat prohlížeč:</string>
|
||||
@@ -72,4 +72,12 @@
|
||||
|
||||
<string name="err_dir_create">Nebylo možné vytvořit složku pro stažené soubory \'%1$s\'</string>
|
||||
<string name="info_dir_created">Vytvořena složka pro stažené soubory \'%1$s\'</string>
|
||||
</resources>
|
||||
<string name="autoplay_by_calling_app_title">Automaticky přehrávat při otevření z jiné aplikace.</string>
|
||||
<string name="autoplay_by_calling_app_summary">Automaticky přehrát video, když je NewPipe otevřen z jiné aplikace.</string>
|
||||
<string name="content">Obsah</string>
|
||||
<string name="show_age_restricted_content_title">Zobrazovat věkově omezený obsah</string>
|
||||
<string name="video_is_age_restricted">Toto video je věkově omezeno. Povolte věkově omezená video v nastavení.</string>
|
||||
<string name="duration_live">živě</string>
|
||||
|
||||
<string name="light_parsing_error">Nemůžu kompletně parsovat web.</string>
|
||||
</resources>
|
||||
|
@@ -125,4 +125,6 @@
|
||||
<string name="report_error">Einen Fehler melden</string>
|
||||
<string name="user_report">Anwenderbericht</string>
|
||||
|
||||
<string name="duration_live">live</string>
|
||||
|
||||
</resources>
|
||||
|
@@ -73,4 +73,14 @@
|
||||
<string name="content_not_available">Contenu non disponible.</string>
|
||||
<string name="blocked_by_gema">Bloqué par GEMA.</string>
|
||||
|
||||
<string name="error_snackbar_message">Désolé, des erreurs se sont produites</string>
|
||||
<string name="content">Contenu</string>
|
||||
<string name="show_age_restricted_content_title">Afficher le contenu restreint</string>
|
||||
<string name="duration_live">En direct</string>
|
||||
|
||||
<string name="could_not_load_thumbnails">Impossible de charger toutes les miniatures</string>
|
||||
<string name="youtube_signature_decryption_error">Erreur lors du décryptage du lien</string>
|
||||
<string name="light_parsing_error">Erreur lors de la récupération des informations</string>
|
||||
<string name="live_streams_not_supported">Il s\'agit un direct. Non supporté pour le moment.</string>
|
||||
<string name="sorry_string">Désolé, ça devrait pas arriver</string>
|
||||
</resources>
|
||||
|
@@ -1,4 +1,4 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<resources>
|
||||
<string name="view_count_text">%1$s megtekintés</string>
|
||||
<string name="upload_date_text">Feltöltve: %1$s</string>
|
||||
@@ -27,7 +27,7 @@
|
||||
<string name="kore_not_found">A Kore alkalmazás nem található. Feltelepíti a Kore lejátszót?</string>
|
||||
<string name="installeKore">Kore telepítése</string>
|
||||
<string name="show_play_with_kodi_title">\"Lejátszás Kodi-val\" opció mutatása</string>
|
||||
<string name="show_play_with_kodi_summary">Mutat egy opciót a videók Kodi médiaközponttal való lejátszására</string>
|
||||
<string name="show_play_with_kodi_summary">Mutat egy opciót a videók Kodi médiaközponttal való lejátszására.</string>
|
||||
<string name="play_audio">Hang</string>
|
||||
<string name="default_audio_format_title">Alapértelmezett hang formátum</string>
|
||||
<string name="webm_description">WebM — szabad formátum</string>
|
||||
@@ -72,4 +72,10 @@
|
||||
<string name="detail_uploader_thumbnail_view_description">Fetöltő profilképe</string>
|
||||
<string name="err_dir_create">Nem lehet létrehozni a letöltés mappát \'%1$s\'</string>
|
||||
<string name="info_dir_created">Letöltés mappa létrehozása \'%1$s\'</string>
|
||||
</resources>
|
||||
<string name="content">Tartalom</string>
|
||||
<string name="show_age_restricted_content_title">Mutassa korhatáros tartalmat is</string>
|
||||
<string name="general_error">Hiba</string>
|
||||
<string name="content_not_available">A tartalom nem elérhetö.</string>
|
||||
<string name="blocked_by_gema">A GEMA által blokkolva.</string>
|
||||
<string name="live_streams_not_supported">Ez egy élö közvetités. Még nem támogatva.</string>
|
||||
</resources>
|
||||
|
@@ -124,4 +124,6 @@
|
||||
<string name="report_error">エラーを報告</string>
|
||||
<string name="user_report">ユーザー報告</string>
|
||||
|
||||
<string name="duration_live">ライブ</string>
|
||||
|
||||
</resources>
|
||||
|
@@ -1,6 +1,6 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<resources><string name="view_count_text">%1$s pogledov</string>
|
||||
<string name="upload_date_text">Poslano %1$s</string>
|
||||
<string name="upload_date_text">Objavljeno %1$s</string>
|
||||
<string name="no_player_found">Predvajalnika pretoka ni mogoče najti. Ali želite namestiti program VLC?</string>
|
||||
<string name="install">Namesti</string>
|
||||
<string name="cancel">Prekliči</string>
|
||||
@@ -123,4 +123,6 @@
|
||||
<string name="report_error">Pošlji poročilo o napaki</string>
|
||||
<string name="user_report">Poročilo uporabnika</string>
|
||||
|
||||
<string name="duration_live">v živo</string>
|
||||
|
||||
</resources>
|
||||
|
83
app/src/main/res/values-uk/strings.xml
Normal file
83
app/src/main/res/values-uk/strings.xml
Normal file
@@ -0,0 +1,83 @@
|
||||
<?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">Ви мали на увазі: %1$s ?</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_dialog_title">Вкажіть шлях для завантаження відео</string>
|
||||
|
||||
<string name="download_path_audio_dialog_title">Вкажіть шлях для завантаження аудіо файлів.</string>
|
||||
|
||||
<string name="download_path_summary">Шлях де будуть зберігатись завантажені відео.</string>
|
||||
<string name="download_path_audio_title">Шлях для завантаження аудіо</string>
|
||||
<string name="download_path_audio_summary">Шлях де будуть зберігатись завантажені аудіо файли.</string>
|
||||
<string name="autoplay_by_calling_app_title">Автоматично відтворювати при виклику з іншого додатку.</string>
|
||||
<string name="autoplay_by_calling_app_summary">Автоматично відтворювати відео коли NewPipe викликано з іншого додатку.</string>
|
||||
<string name="default_resolution_title">Роздільна здатність за замовчуванням</string>
|
||||
<string name="play_with_kodi_title">Відтворювати за допомогою Kodi</string>
|
||||
<string name="kore_not_found">Додаток Kore не знайдено. Встановити?</string>
|
||||
<string name="show_play_with_kodi_title">Показувати опцію \"Програвати за допомогою Kodi\"</string>
|
||||
<string name="show_play_with_kodi_summary">Показувати опцію відтворення відео за допомогою Kodi 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="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">URL не підтримується</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="storage_permission_denied">В доступі відмовлено</string>
|
||||
<string name="use_exoplayer_title">Використовувати ExoPlayer</string>
|
||||
<string name="use_exoplayer_summary">Експериментальний</string>
|
||||
<string name="content">Контент</string>
|
||||
<string name="show_age_restricted_content_title">Показувати контент з віковим обмеженням</string>
|
||||
<string name="video_is_age_restricted">Відео має вікові обмеження. Спершу активуйте опцію для відображення таких відео в налаштуваннях.</string>
|
||||
<string name="duration_live">наживо</string>
|
||||
|
||||
<string name="general_error">Помилка</string>
|
||||
<string name="network_error">Помилка мережі</string>
|
||||
<string name="could_not_load_thumbnails">Не вдалося завантажити всі ескізи</string>
|
||||
<string name="youtube_signature_decryption_error">Не вдалося розшифрувати підпис url відео.</string>
|
||||
<string name="parsing_error">Не вдалося проаналізувати веб-сайт.</string>
|
||||
<string name="light_parsing_error">Не вдалося повністю проаналізувати веб-сайт.</string>
|
||||
<string name="content_not_available">Контент не доступний.</string>
|
||||
<string name="blocked_by_gema">Заблоковано GEMA.</string>
|
||||
<string name="could_not_setup_download_menu">Не вдалося налаштувати меню завантаження.</string>
|
||||
<string name="live_streams_not_supported">Це пряма трансляція. Це ще не підтримується.</string>
|
||||
<string name="could_not_get_stream">Не вдалося отримати ніякий потік.</string>
|
||||
<string name="sorry_string">Шкода, цього не повинно було статися.</string>
|
||||
<string name="error_report_button_text">Звіт про помилку за допомогою пошти</string>
|
||||
<string name="error_snackbar_message">На жаль сталася помилка.</string>
|
||||
<string name="error_snackbar_action">ЗВІТУВАТИ</string>
|
||||
<string name="what_device_headline">Інформація:</string>
|
||||
<string name="what_happened_headline">Що сталося:</string>
|
||||
<string name="info_labels">Що:\\nЗапит:\\nМова контенту:\\nСервіс:\\nЧас GMT:\\nВерсія:\\nВерсія ОС:\\nДіапазон IP:</string>
|
||||
</resources>
|
@@ -1,4 +1,4 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<?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>
|
||||
@@ -46,21 +46,73 @@
|
||||
<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="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="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="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="use_tor_summary">(实验性)强制下载流量使用 Tor 加强隐私(暂不支援流媒体视频)。</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="err_dir_create">未能建立下载路径 “%1$s”</string>
|
||||
<string name="info_dir_created">已建立下载路径 “%1$s”</string>
|
||||
</resources>
|
||||
<string name="content">内容</string>
|
||||
<string name="show_age_restricted_content_title">显示年龄限制内容</string>
|
||||
<string name="video_is_age_restricted">视频有年龄限制。请先在设置中启用年龄限制视频。</string>
|
||||
<string name="general_error">错误</string>
|
||||
<string name="could_not_load_thumbnails">无法加载所有缩略图</string>
|
||||
<string name="youtube_signature_decryption_error">无法解密视频网址签名。</string>
|
||||
<string name="parsing_error">无法解析网站。</string>
|
||||
<string name="light_parsing_error">无法解析网站完成。</string>
|
||||
<string name="content_not_available">内容不可用。</string>
|
||||
<string name="blocked_by_gema">已被 GEMA 屏蔽。</string>
|
||||
<string name="could_not_setup_download_menu">无法设置下载菜单。</string>
|
||||
<string name="live_streams_not_supported">这是一个在线流媒体。这尚不支持。</string>
|
||||
<string name="could_not_get_stream">无法获取任何流媒体。</string>
|
||||
<string name="sorry_string">抱歉,这不应该发生。</string>
|
||||
<string name="error_report_button_text">使用邮件报告错误</string>
|
||||
<string name="error_snackbar_message">抱歉,发生一些错误。</string>
|
||||
<string name="error_snackbar_action">报告</string>
|
||||
<string name="what_device_headline">信息:</string>
|
||||
<string name="what_happened_headline">发生什么:</string>
|
||||
<string name="info_searched_lbl">搜索:</string>
|
||||
<string name="info_requested_stream_lbl">已请求流:</string>
|
||||
<string name="your_comment">您的注释(英文):</string>
|
||||
<string name="error_details_headline">详细信息:</string>
|
||||
|
||||
|
||||
<string name="info_labels">什么:\\n请求:\\n内容语言:\\n服务:\\nGMT 时间:\\n版本:\\nOS 版本:\\nGlob. IP 范围:</string>
|
||||
<string name="report_error">报告错误</string>
|
||||
<string name="user_report">用户报告</string>
|
||||
|
||||
<string name="enable_background_audio">在后台播放</string>
|
||||
<string name="video">视频</string>
|
||||
<string name="audio">音频</string>
|
||||
<string name="text">文本</string>
|
||||
<string name="logging">日志记录</string>
|
||||
<string name="logging_normal">正常</string>
|
||||
<string name="logging_verbose">详细</string>
|
||||
<string name="retry">重试</string>
|
||||
<string name="off">[关]</string>
|
||||
<string name="error_drm_not_supported">已保护内容在 API 级别低于 18 时不支持</string>
|
||||
<string name="error_drm_unsupported_scheme">此设备不支持 DRM 模式</string>
|
||||
<string name="error_drm_unknown">发生未知 DRM 错误</string>
|
||||
<string xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2" name="error_no_decoder">此设备未提供一个 <xliff:g id="mime_type">%1$s</xliff:g> 的解码器</string>
|
||||
<string xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2" name="error_no_secure_decoder">此设备未提供一个 <xliff:g id="mime_type">%1$s</xliff:g> 的安全解码器</string>
|
||||
<string name="error_querying_decoders">无法查询设备解码器</string>
|
||||
<string xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2" name="error_instantiating_decoder">无法实例化解码器 <xliff:g id="decoder_name">%1$s</xliff:g></string>
|
||||
<string name="storage_permission_denied">访问存储的权限被拒绝</string>
|
||||
<string name="use_exoplayer_summary">实验性</string>
|
||||
<string name="use_exoplayer_title">使用 ExoPlayer</string>
|
||||
<string name="autoplay_by_calling_app_title">另一应用调用时自动播放。</string>
|
||||
<string name="autoplay_by_calling_app_summary">NewPipe 是被另一应用调用时自动开始播放视频。</string>
|
||||
<string name="duration_live">直播</string>
|
||||
|
||||
</resources>
|
||||
|
@@ -1,6 +1,7 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="app_name" translatable="false">NewPipe</string>
|
||||
<string name="main_bg_subtitle">Tap search to get started</string>
|
||||
<string name="background_player_name">NewPipe Background Player</string>
|
||||
<string name="title_videoitem_detail" translatable="false">NewPipe</string>
|
||||
<string name="view_count_text">%1$s views</string>
|
||||
|
Reference in New Issue
Block a user