Merge branch 'develop' into 'master'

Release v1.0.51

See merge request sschueller/peertube!10
This commit is contained in:
Stefan Schüller 2021-01-14 19:24:33 +01:00
commit f72c7c9499
37 changed files with 327 additions and 99 deletions

View File

@ -1,3 +1,10 @@
### Version 1.0.51 Tag: v1.0.51 (2021-01-14)
- fixed default app language on first start (@kosharskiy)
- Settings screen translations uk and ru languages (@kosharskiy)
- cleanup app/build.gradle file (@kosharskiy)
- fixed video meta data display issue (@kosharskiy)
- updated translations
### Version 1.0.50 Tag: v1.0.50 (2020-11-22) ### Version 1.0.50 Tag: v1.0.50 (2020-11-22)
- add support for disabling SSL - add support for disabling SSL
- translations - translations

View File

@ -33,6 +33,8 @@ else {
android { android {
compileSdkVersion 29 compileSdkVersion 29
buildToolsVersion "29.0.3"
defaultConfig { defaultConfig {
applicationId "net.schueller.peertube" applicationId "net.schueller.peertube"
minSdkVersion 21 minSdkVersion 21
@ -41,11 +43,7 @@ android {
versionName System.getenv("VERSION_NAME") + "-" + System.getenv("VERSION_SHA") versionName System.getenv("VERSION_NAME") + "-" + System.getenv("VERSION_SHA")
buildConfigField "long", "BUILD_TIME", readPropertyWithDefault('buildTimestamp', System.currentTimeMillis()) + 'L' buildConfigField "long", "BUILD_TIME", readPropertyWithDefault('buildTimestamp', System.currentTimeMillis()) + 'L'
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
ext {
libVersions = [
exoplayer: '2.11.6'
]
}
javaCompileOptions { javaCompileOptions {
annotationProcessorOptions { annotationProcessorOptions {
arguments = [ arguments = [
@ -54,58 +52,6 @@ android {
"room.expandProjection": "true"] "room.expandProjection": "true"]
} }
} }
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
// Layouts and design
implementation 'androidx.constraintlayout:constraintlayout:2.0.1'
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'androidx.legacy:legacy-support-v13:1.0.0'
implementation 'com.google.android.material:material:1.2.0'
implementation 'de.hdodenhof:circleimageview:3.0.0'
// font awesome
implementation "com.mikepenz:iconics-core:3.1.0"
implementation 'com.mikepenz:fontawesome-typeface:5.3.1.1@aar'
// http client / REST
implementation 'com.squareup.okhttp3:okhttp:4.8.0'
implementation 'com.squareup.retrofit2:retrofit:2.5.0'
// image downloading and caching library
implementation 'com.squareup.picasso:picasso:2.71828'
// json decoder/encoder
implementation 'com.google.code.gson:gson:2.8.6'
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
// Torrents and WebRTC
implementation 'com.github.TorrentStream:TorrentStream-Android:2.6.1'
// implementation "com.github.TorrentStream:TorrentStreamServer-Android:1.0.1"
// implementation 'org.webrtc:google-webrtc:1.0.+'
// video player repo:jcenter()
implementation "com.google.android.exoplayer:exoplayer-core:$libVersions.exoplayer"
implementation "com.google.android.exoplayer:exoplayer-dash:$libVersions.exoplayer"
implementation "com.google.android.exoplayer:exoplayer-ui:$libVersions.exoplayer"
implementation "com.google.android.exoplayer:exoplayer-hls:$libVersions.exoplayer"
implementation "com.google.android.exoplayer:exoplayer-smoothstreaming:$libVersions.exoplayer"
implementation "com.google.android.exoplayer:extension-mediasession:$libVersions.exoplayer"
implementation "com.google.android.exoplayer:extension-okhttp:$libVersions.exoplayer"
// date formatter
implementation 'org.ocpsoft.prettytime:prettytime:4.0.4.Final'
// Version comparison
implementation 'org.apache.maven:maven-artifact:3.5.0'
// testing
testImplementation 'junit:junit:4.13'
androidTestImplementation 'androidx.test:runner:1.3.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}
} }
signingConfigs { signingConfigs {
release { release {
@ -136,26 +82,70 @@ android {
} }
} }
def room_version = "2.2.6"
def lifecycleVersion = '2.2.0'
def exoplayer = '2.12.3'
dependencies { dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
def room_version = "2.2.5" // Layouts and design
def archLifecycleVersion = '2.1.0' implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation 'androidx.constraintlayout:constraintlayout:2.0.1'
implementation 'androidx.appcompat:appcompat:1.2.0' implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.1' implementation 'com.google.android.material:material:1.2.1'
implementation 'com.google.android.material:material:1.2.0' implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
implementation 'de.hdodenhof:circleimageview:3.0.0'
// font awesome
implementation "com.mikepenz:iconics-core:3.1.0"
implementation 'com.mikepenz:fontawesome-typeface:5.3.1.1@aar'
// http client / REST
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
// image downloading and caching library
implementation 'com.squareup.picasso:picasso:2.71828'
// json decoder/encoder
implementation 'com.google.code.gson:gson:2.8.6'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
// Torrents and WebRTC
implementation 'com.github.TorrentStream:TorrentStream-Android:2.7.0'
// implementation "com.github.TorrentStream:TorrentStreamServer-Android:1.0.1"
// implementation 'org.webrtc:google-webrtc:1.0.+'
// video player repo:jcenter()
implementation "com.google.android.exoplayer:exoplayer-core:$exoplayer"
implementation "com.google.android.exoplayer:exoplayer-dash:$exoplayer"
implementation "com.google.android.exoplayer:exoplayer-ui:$exoplayer"
implementation "com.google.android.exoplayer:exoplayer-hls:$exoplayer"
implementation "com.google.android.exoplayer:exoplayer-smoothstreaming:$exoplayer"
implementation "com.google.android.exoplayer:extension-mediasession:$exoplayer"
implementation "com.google.android.exoplayer:extension-okhttp:$exoplayer"
// date formatter
implementation 'org.ocpsoft.prettytime:prettytime:4.0.4.Final'
// Version comparison
implementation 'org.apache.maven:maven-artifact:3.5.0'
// database lib // database lib
implementation "androidx.room:room-runtime:$room_version" implementation "androidx.room:room-runtime:$room_version"
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
annotationProcessor "androidx.room:room-compiler:$room_version" annotationProcessor "androidx.room:room-compiler:$room_version"
androidTestImplementation "androidx.room:room-testing:$room_version" androidTestImplementation "androidx.room:room-testing:$room_version"
// Lifecycle components // Lifecycle components
implementation "androidx.lifecycle:lifecycle-extensions:$archLifecycleVersion" implementation "androidx.lifecycle:lifecycle-extensions:$lifecycleVersion"
annotationProcessor "androidx.lifecycle:lifecycle-common-java8:$archLifecycleVersion" annotationProcessor "androidx.lifecycle:lifecycle-common-java8:$lifecycleVersion"
implementation 'androidx.preference:preference:1.1.1' implementation 'androidx.preference:preference:1.1.1'
// testing
testImplementation 'junit:junit:4.13'
androidTestImplementation 'androidx.test:runner:1.3.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
} }

View File

@ -19,16 +19,17 @@ package net.schueller.peertube.activity;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.Bundle; import android.os.Bundle;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.app.AppCompatDelegate;
import net.schueller.peertube.R; import net.schueller.peertube.R;
import java.util.Locale; import java.util.Locale;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.app.AppCompatDelegate;
public class CommonActivity extends AppCompatActivity { public class CommonActivity extends AppCompatActivity {
@Override @Override
@ -51,21 +52,31 @@ public class CommonActivity extends AppCompatActivity {
); );
// Set language // Set language
String countryCode = sharedPref.getString(getString(R.string.pref_language_app_key), "en"); String countryCode = sharedPref.getString(getString(R.string.pref_language_app_key), null);
assert countryCode != null;
Locale locale = new Locale(countryCode); if (countryCode == null) {
return;
}
setLocale(countryCode);
}
public void setLocale(String languageCode) {
Locale locale = new Locale(languageCode);
//Neither Chinese language choice was working, found this fix on stack overflow //Neither Chinese language choice was working, found this fix on stack overflow
if (countryCode.equals("zh-rCN")) if (languageCode.equals("zh-rCN"))
locale = Locale.SIMPLIFIED_CHINESE; locale = Locale.SIMPLIFIED_CHINESE;
if (countryCode.equals("zh-rTW")) if (languageCode.equals("zh-rTW"))
locale = Locale.TRADITIONAL_CHINESE; locale = Locale.TRADITIONAL_CHINESE;
Locale.setDefault(locale); Locale.setDefault(locale);
Configuration config = getBaseContext().getResources().getConfiguration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
}
Resources resources = getResources();
Configuration config = resources.getConfiguration();
config.setLocale(locale);
resources.updateConfiguration(config, resources.getDisplayMetrics());
}
} }

View File

@ -70,6 +70,8 @@ import net.schueller.peertube.service.VideoPlayerService;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet;
import java.util.Locale;
import java.util.Set; import java.util.Set;
import retrofit2.Call; import retrofit2.Call;
@ -321,7 +323,14 @@ public class VideoListActivity extends CommonActivity {
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
String nsfw = sharedPref.getBoolean(getString(R.string.pref_show_nsfw_key), false) ? "both" : "false"; String nsfw = sharedPref.getBoolean(getString(R.string.pref_show_nsfw_key), false) ? "both" : "false";
Set<String> languages = sharedPref.getStringSet(getString(R.string.pref_video_language_key), null);
Locale locale = getResources().getConfiguration().locale;
String country = locale.getLanguage();
HashSet<String> countries = new HashSet<>(1);
countries.add(country);
Set<String> languages = sharedPref.getStringSet(getString(R.string.pref_video_language_key), countries);
String apiBaseURL = APIUrlHelper.getUrlWithVersion(this); String apiBaseURL = APIUrlHelper.getUrlWithVersion(this);
GetVideoDataService service = RetrofitInstance.getRetrofitInstance(apiBaseURL, APIUrlHelper.useInsecureConnection(this)).create(GetVideoDataService.class); GetVideoDataService service = RetrofitInstance.getRetrofitInstance(apiBaseURL, APIUrlHelper.useInsecureConnection(this)).create(GetVideoDataService.class);

View File

@ -1,10 +1,11 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="6dp"> android:padding="6dp">
<de.hdodenhof.circleimageview.CircleImageView xmlns:app="http://schemas.android.com/apk/res-auto" <de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/avatar" android:id="@+id/avatar"
android:layout_width="72dp" android:layout_width="72dp"
android:layout_height="72dp" android:layout_height="72dp"
@ -210,7 +211,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="12dp" android:layout_marginTop="12dp"
android:gravity="bottom"
android:orientation="horizontal"> android:orientation="horizontal">
<TextView <TextView
@ -229,8 +230,10 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center|start" android:gravity="center|start"
android:text="" android:textAppearance="@style/Base.TextAppearance.AppCompat.Caption"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Caption" /> tools:text="@tools:sample/lorem/random"
android:lines="2"
/>
</LinearLayout> </LinearLayout>
@ -239,7 +242,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="12dp" android:layout_marginTop="12dp"
android:gravity="bottom"
android:orientation="horizontal"> android:orientation="horizontal">
<TextView <TextView
@ -258,8 +261,10 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center|start" android:gravity="center|start"
android:text="" android:textAppearance="@style/Base.TextAppearance.AppCompat.Caption"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Caption" /> tools:text="@tools:sample/lorem/random"
android:lines="2"
/>
</LinearLayout> </LinearLayout>
@ -267,7 +272,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="12dp" android:layout_marginTop="12dp"
android:gravity="bottom"
android:orientation="horizontal"> android:orientation="horizontal">
<TextView <TextView
@ -286,8 +291,10 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center|start" android:gravity="center|start"
android:text="" android:textAppearance="@style/Base.TextAppearance.AppCompat.Caption"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Caption" /> tools:text="@tools:sample/lorem"
android:lines="2"
/>
</LinearLayout> </LinearLayout>
@ -296,7 +303,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="12dp" android:layout_marginTop="12dp"
android:gravity="bottom"
android:orientation="horizontal"> android:orientation="horizontal">
<TextView <TextView
@ -315,8 +322,10 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center|start" android:gravity="center|start"
android:text="" android:textAppearance="@style/Base.TextAppearance.AppCompat.Caption"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Caption" /> tools:text="@tools:sample/lorem/random"
android:lines="2"
/>
</LinearLayout> </LinearLayout>
@ -324,7 +333,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="12dp" android:layout_marginTop="12dp"
android:gravity="bottom"
android:orientation="horizontal"> android:orientation="horizontal">
<TextView <TextView
@ -343,7 +352,8 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center|start" android:gravity="center|start"
android:text="" tools:text="@tools:sample/lorem/random"
android:lines="2"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Caption" /> android:textAppearance="@style/Base.TextAppearance.AppCompat.Caption" />
</LinearLayout> </LinearLayout>

View File

@ -114,4 +114,64 @@
<string name="video_speed_125">1,25×</string> <string name="video_speed_125">1,25×</string>
<string name="video_speed_075">0,75×</string> <string name="video_speed_075">0,75×</string>
<string name="pref_language_app">Idioma de la aplicación</string> <string name="pref_language_app">Idioma de la aplicación</string>
<string name="me_help_and_feedback_button">Ayuda y feedback</string>
<string name="me_logout_button">Cerrar sesión</string>
<string name="server_book_valid_url_is_required">Una URL válida es requerida</string>
<string name="server_book_label_is_required">La etiqueta de servidor es requerida</string>
<string name="rsl">Ruso (Lenguaje de señas)</string>
<string name="ru">Ruso</string>
<string name="ro">Romano</string>
<string name="pt">Portugués</string>
<string name="pl">Polaco</string>
<string name="no">Noruego</string>
<string name="pks">Pakistaní (Lenguaje de señas)</string>
<string name="fsl">Francés (Lenguaje de señas)</string>
<string name="fr">Francés</string>
<string name="fi">Finlandés</string>
<string name="eo">Esperanto</string>
<string name="en">Inglés</string>
<string name="dsl">Danés (Lenguaje de señas)</string>
<string name="da">Danés</string>
<string name="cse">Checo (Lenguaje de señas)</string>
<string name="cs">Checo</string>
<string name="hr">Croata</string>
<string name="eu">Vasco</string>
<string name="bn">Bengali</string>
<string name="be">Bieloruso</string>
<string name="ba">Bashkir</string>
<string name="bm">Bambara</string>
<string name="ay">Aymara</string>
<string name="av">Avaric</string>
<string name="as">Assamese</string>
<string name="am">Amharic</string>
<string name="ak">Akan</string>
<string name="af">Afrikaans</string>
<string name="ab">Abkhazian</string>
<string name="authentication_token_refresh_success">Token refrescado</string>
<string name="authentication_token_refresh_failed">No se pudo refrescar el token</string>
<string name="settings_activity_video_playback_category_title">Reproducción de video</string>
<string name="settings_activity_video_list_category_title">Lista de video</string>
<string name="title_activity_me">Cuenta</string>
<string name="title_activity_select_server">Buscar servidor</string>
<string name="server_book_del_alert_msg">¿Estás seguro de que deseas eliminar este servidor de la libreta de direcciones\?</string>
<string name="server_book_del_alert_title">Quitar servidor</string>
<string name="title_activity_server_address_book">Libreta de direcciones</string>
<string name="login_current_server_hint">Servidor actual</string>
<string name="server_book_add_password">Contraseña</string>
<string name="server_book_add_username">Usuario</string>
<string name="server_book_add_pick_server_button">Buscar</string>
<string name="server_book_add_server_url">URL del servidor</string>
<string name="server_book_add_label">Etiqueta</string>
<string name="server_book_add_add_button">Añadir</string>
<string name="authentication_login_failed">Error en el inicio de sesión!</string>
<string name="clear_search_history_prompt">¿Deseas eliminar de forma permanente tu historial de búsqueda\?</string>
<string name="clear_search_history">Limpiar el historial de búsquedas</string>
<string name="settings_permissions_error_float">El permiso para modo picture-in-picture está desactivado para esta aplicación en los Ajustes de Android</string>
<string name="settings_api_error_float">Versión de Android no soporta ventanas flotantes</string>
<string name="pref_background_behavior">Configuración de reproducción en segundo plano</string>
<string name="pref_background_float">Continuar reproduciendo en ventana flotante</string>
<string name="pref_background_stop">Detener todas las reproducciones</string>
<string name="pref_background_audio">Continuar como audio en segundo plano</string>
<string name="pref_description_language_app">Selecciona el idioma de la interfaz de la aplicación. Reinicia para que los cambios se apliquen.</string>
<string name="pref_title_back_pause">Pausar con el botón de retroceso</string>
</resources> </resources>

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@ -300,4 +300,22 @@
<string name="pref_title_license">Licencja</string> <string name="pref_title_license">Licencja</string>
<string name="video_speed_125">1,25×</string> <string name="video_speed_125">1,25×</string>
<string name="video_speed_075">0,75×</string> <string name="video_speed_075">0,75×</string>
<string name="settings_activity_video_playback_category_title">Odtwarzanie Wideo</string>
<string name="settings_activity_video_list_category_title">Lista Wideo</string>
<string name="title_activity_me">Konto</string>
<string name="server_book_add_add_button">Dodaj</string>
<string name="server_book_add_password">Hasło</string>
<string name="server_book_add_pick_server_button">Wyszukaj</string>
<string name="server_book_add_server_url">Serwer URL</string>
<string name="me_help_and_feedback_button">Pomoc i Opinie</string>
<string name="me_logout_button">Wyloguj</string>
<string name="authentication_login_success">Pomyślnie zalogowano</string>
<string name="network_error">Błąd dostępu do sieci, sprawdź swoje połączenie</string>
<string name="server_selection_filter_hint">Lista filtrów</string>
<string name="bn_rBD">Bengalski (Bangladesz)</string>
<string name="clear_search_history_prompt">Czy chcesz trwale usunąć historię wyszukiwań\?</string>
<string name="clear_search_history">Usuń historię wyszukiwań</string>
<string name="pref_background_behavior">Ustawienia odtwarzania w tle</string>
<string name="pref_background_float">Kontynuuj odtwarzanie w ruchomym oknie</string>
<string name="pref_language_app">Język Aplikacji</string>
</resources> </resources>

View File

@ -353,4 +353,11 @@
<string name="pref_title_back_pause">Пауза на кнопку Назад</string> <string name="pref_title_back_pause">Пауза на кнопку Назад</string>
<string name="network_error">Ошибка доступа к сети, проверьте подключение</string> <string name="network_error">Ошибка доступа к сети, проверьте подключение</string>
<string name="server_selection_filter_hint">Список фильтров</string> <string name="server_selection_filter_hint">Список фильтров</string>
<string name="pref_insecure_confirm_yes">Да</string>
<string name="pref_insecure_confirm_no">Нет</string>
<string name="pref_title_accept_insecure">Отключить проверку SSL сертификата</string>
<string name="settings_activity_advanced_category_title">Дополнительно</string>
<string name="pref_insecure_confirm_title">Внимание!</string>
<string name="pref_description_accept_insecure">Игнорировать незащищенные соединения. Используйте только если знаете сервер к которому подключаетесь. Требуется перезапуск приложения.</string>
<string name="pref_insecure_confirm_message">"Вы собираетесь отключить валидацию всех SSL сертификатов в Thorium. Это может быть очень опасно если peertube сервер вами не контролируется, потому что \"атака посредника\" может направить трафик на другой сервер. Злоумышленник может записывать пароли и другие личные данные."</string>
</resources> </resources>

View File

@ -347,4 +347,11 @@
<string name="prompt_server">Сервер</string> <string name="prompt_server">Сервер</string>
<string name="title_activity_login">Увійти</string> <string name="title_activity_login">Увійти</string>
<string name="title_activity_settings">Параметри</string> <string name="title_activity_settings">Параметри</string>
<string name="pref_title_accept_insecure">Вимкнути перевірку SSL сертифіката</string>
<string name="pref_description_accept_insecure">Ігнорувати незахищені з\'єднання. Використовуйте це лише якщо знаєте сервер до якого підключаєтесь. Перезапустіть застосунок, щоб зміни набули чинності.</string>
<string name="pref_insecure_confirm_yes">Так</string>
<string name="pref_insecure_confirm_no">Ні</string>
<string name="pref_insecure_confirm_title">Увага!</string>
<string name="pref_insecure_confirm_message">"Ви збираєтеся вимкнути всі перевірки сертифікації SSL у Thorium. Це може бути дуже небезпечно якщо peertube сервер вами не контролюється, оскільки атака \"людина посередині\" може направити трафік на інший сервер без вашого відома. Зловмисник може записувати паролі та інші особисті дані. "</string>
<string name="settings_activity_advanced_category_title">Додатково</string>
</resources> </resources>

View File

@ -534,6 +534,7 @@
<item>ru</item> <item>ru</item>
<item>sv</item> <item>sv</item>
<item>tr</item> <item>tr</item>
<item>uk</item>
<item>zh-rCN</item> <item>zh-rCN</item>
<item>zh-rTW</item> <item>zh-rTW</item>
</string-array> </string-array>
@ -560,6 +561,7 @@
<item>@string/ru</item> <item>@string/ru</item>
<item>@string/sv</item> <item>@string/sv</item>
<item>@string/tr</item> <item>@string/tr</item>
<item>@string/uk</item>
<item>@string/zh</item> <item>@string/zh</item>
<item>@string/tw</item> <item>@string/tw</item>
</string-array> </string-array>

View File

@ -4,7 +4,6 @@
<PreferenceCategory app:title="@string/settings_activity_look_and_feel_category_title" app:iconSpaceReserved="false"> <PreferenceCategory app:title="@string/settings_activity_look_and_feel_category_title" app:iconSpaceReserved="false">
<ListPreference <ListPreference
app:defaultValue="@array/empty_array"
app:entries="@array/supportedLanguagesArray" app:entries="@array/supportedLanguagesArray"
app:entryValues="@array/supportedLanguagesValues" app:entryValues="@array/supportedLanguagesValues"
app:key="@string/pref_language_app_key" app:key="@string/pref_language_app_key"
@ -40,7 +39,6 @@
app:iconSpaceReserved="false"/> app:iconSpaceReserved="false"/>
<MultiSelectListPreference <MultiSelectListPreference
app:defaultValue="@array/empty_array"
app:entries="@array/languageArray" app:entries="@array/languageArray"
app:entryValues="@array/languageValues" app:entryValues="@array/languageValues"
app:key="@string/pref_video_language_key" app:key="@string/pref_video_language_key"

View File

@ -0,0 +1 @@
- প্রমাণীকরণ রিফ্রেশ

View File

@ -0,0 +1 @@
- স্বয়ংক্রিয় নিয়োগ ঠিক করতে f-droid রিলিজ

View File

@ -0,0 +1,7 @@
- বর্ণনায় হাইপারটেক্সট পুনঃনির্দেশনার সমর্থন যোগ করো (@freeboub)
- বিভিন্ন ক্র্যাশ ফিক্স (@freeboub)
- শেয়ার বাটনের কারণে অ্যাপ ছাড়ার সময় পিপ-এ যাওয়া এড়িয়ে চলো (@freeboub)
- সার্ভার তালিকা ফিল্টার করার ক্ষমতা যোগ করো (@freeboub)
- নেটওয়ার্ক ত্রুটি বিভক্ত করতে টোস্ট ত্রুটি ব্যবস্থাপনা রিফ্যাক্টর করো (@freeboub)
- পিপের জন্য ভিডিও অ্যাসপেক্ট রেশিও ঠিক রাখো (@freeboub)
- ল্যান্ডস্কেপ মোড (@freeboub) ছাড়ার সময় নেভিগেশন বার পুনর্বহাল করা হয়নি

View File

@ -0,0 +1,33 @@
থোরিয়াম একটি পিয়ারটিউব ক্লায়েন্ট যা যে কোন পিয়ারটিউব সার্ভারের চলমান সংস্করণ স১.১.-আলফা.২ বা তার বেশি সংযোগ করতে পারে।
পিয়ারটিউব একটি ফেডারেটেড (অ্যাক্টিভিটিপাব) ভিডিও স্ট্রিমিং প্ল্যাটফর্ম যা সরাসরি ওয়েব ব্রাউজারেপ পিটুপি(বিটটরেন্ট) ব্যবহার করে। আরও তথ্যের জন্য অনুগ্রহ করে https://joinpeertube.org/ এবং সার্ভারের একটি তালিকা দেখুন।
এই ক্লায়েন্ট অ্যাপ্লিকেশন নির্মাতা দ্বারা পরিচালিত একটি পিয়ারটিউব সার্ভার দ্বারা প্রি-কনফিগার করা হয় - পিয়ারটিউব প্রকল্প নিজে নয়, যা http://instances.joinpeertube.org/ আরো তালিকাভুক্ত করে - ক্লায়েন্ট কি করতে সক্ষম তার স্বাদ পেতে তোমাকে অনুমতি দেয়. তোমার অভিজ্ঞতা টিউন করতে তোমার সার্ভার পছন্দ করো!
বর্তমান বৈশিষ্ট্য:
- যেকোন পিয়ারটিউব সার্ভারে সংযোগ করো
- টরেন্ট ভিডিও অথবা সরাসরি প্লেব্যাক
- পিয়ারটিউব অনুসন্ধান করো
- ডাউনলোড / শেয়ার ভিডিও
- থিম / ডার্ক মোড
- ব্যাকগ্রাউন্ড প্লেব্যাক
- প্রাকৃতিক দৃশ্যে ফুলস্ক্রিন প্লেব্যাক
- প্লেব্যাক এর গতি
- অশ্লীল বিষয়বস্তু ফিল্টার করো
- প্রমাণীকরণ / লগইন
- লাইক/অপছন্দ ভিডিও
শীঘ্রই যোগাযোগ:
- মন্তব্য ভিডিও
- রেজিস্টার করুন
- ব্যবহারকারী / চ্যানেল ওভারভিউ পৃষ্ঠা
- ভিডিও রিপোর্ট করুন
অনুমতি:
- টরেন্ট ডাউনলোড বা ভিডিও ডাউনলোডের জন্য স্টোরেজ অ্যাক্সেস প্রয়োজন।
GNU Affero সাধারণ পাবলিক লাইসেন্স সং৩. এর অধীনে লাইসেন্সপ্রাপ্ত
এই শক্তিশালী অনুমতিপত্র বাম লাইসেন্সের অনুমতি লাইসেন্সকৃত কাজ এবং সংশোধনের সম্পূর্ণ সোর্স কোড তৈরি করার শর্ত দেওয়া হয়, যার মধ্যে একই লাইসেন্সের অধীনে একটি লাইসেন্সপ্রাপ্ত কাজ ব্যবহার করে বৃহত্তর কাজ অন্তর্ভুক্ত করা হয়। কপিরাইট এবং লাইসেন্স বিজ্ঞপ্তি অবশ্যই সংরক্ষণ করতে হবে। অবদানকারীরা পেটেন্ট অধিকারের একটি এক্সপ্রেস অনুদান প্রদান করে। যখন একটি নেটওয়ার্কের উপর একটি সেবা প্রদান করতে একটি পরিবর্তিত সংস্করণ ব্যবহার করা হয়, পরিবর্তিত সংস্করণের সম্পূর্ণ উৎস কোড উপলব্ধ করতে হবে।
সোর্স কোড: https://github.com/sschueller/peertube-android/

View File

@ -0,0 +1 @@
থোরিয়াম একটি অনানুষ্ঠানিক পিয়ারটিউব প্লেয়ার

View File

@ -0,0 +1 @@
Thorium an unofficial PeerTube client

View File

@ -0,0 +1 @@
https://www.youtube.com/watch?v=PJIsiuSdpq8

View File

@ -0,0 +1 @@
- Renovació de l'autenticació

View File

@ -0,0 +1 @@
- fes servir la versió de f-droid per corretgir el desplegament automatic

View File

@ -0,0 +1,7 @@
- Afegir suport de hypertext redirection en la descripció (@freeboub)
- Correcció de diversos errors fatals (@freeboub)
- Eludir anar a pip quan surts de l'app pel share button (@freeboub)
- Afegida la possibilitat de filtrar el llistat de servidors (@freeboub)
- Refactor Toast error management to split network error (@freeboub)
- Mantenir la relació d'aspecte per a pip(@freeboub)
- La barra de navegació no va ser restaurada en sortir del mode horitzontal(@freeboub)

View File

@ -0,0 +1 @@
Thorium es un reproductor de PeerTube no oficial

View File

@ -0,0 +1 @@
Thorium es un reproductor de PeerTube no oficial

View File

@ -0,0 +1 @@
Thorium an unofficial PeerTube client

View File

@ -0,0 +1 @@
https://www.youtube.com/watch?v=PJIsiuSdpq8

View File

@ -0,0 +1,5 @@
- fixed default app language on first start (@kosharskiy)
- Settings screen translations uk and ru languages (@kosharskiy)
- cleanup app/build.gradle file (@kosharskiy)
- fixed video meta data display issue (@kosharskiy)
- updated translations

View File

@ -0,0 +1 @@
- Refresh Otentikasi

View File

@ -0,0 +1 @@
Thorium adalah unoffical pemutar PeerTube

View File

@ -0,0 +1 @@
Thorium adalah unoffical pemutar PeerTube

View File

@ -0,0 +1 @@
Thorium adalah unofficial Klien PeerTube

View File

@ -0,0 +1 @@
https://www.youtube.com/watch?v=PJIsiuSdpq8

View File

@ -0,0 +1,36 @@
Thorium jest platformą PeerTube'a, która może połączyć się z każdym serwerem PeerTube'a działającym na wersji v1.1.0-alpha.2 lub nowszej.
PeerTube jest sfederowaną (ActivityPub) platformą do streamowania wideo, używającą P2P (BitTorrent) bezpośrednio w przeglądarce. Po więcej informacji i listę serwerów odwiedź: https://joinpeertube.org/
Platforma jest z góry wyposażona w jeden serwer PeerTube zarządzany przez twórcę aplikacji, a nie przez ogólny projekt PeerTube. Listę instancji znajdziesz pod: https://instances.joinpeertube.org/instances - by móc zobaczyć do czego zdolna jest platforma. Wybierz dowolny serwer, by dopasować go do oczekiwań!
Obecne Właściwości:
- Możliwość połączenia z jakimkolwiek serwerem PeerTube
- Pobierz wideo przez torrent lub odtwarzaj bezpośrednio
- Przeszukuj PeerTube
- Pobierz / Udostępnij film
- Różne skórki, w tym ciemna
- Odtwarzanie w tle
- Odtwarzanie pełnoekranowe w trybie krajobrazowym
- Dostosowywanie prędkości odtwarzania
- Filtrowanie treści dla dorosłych
- Logowanie
- Łapkowanie filmów
Wkrótce:
- Komentowanie filmów
- Rejestracja
- Pogląd Użytkowanika / Kanału
- Zgłaszanie materiału
Wymagane pozwolenia:
- Dostęp do przechowywania, potrzebnego do pobierania.
Permissions:
- Storage access, required for torrent download or video download.
Wydane pod certyfikatem GNU Affero General Public License v3.0
Warunki ww. polityki praw autorskich ustalone są, by udostępniać pełen kod źródłowy certyfikowanych prac i ich modyfikacji zawierających większe prace wydane pod tym samym certyfikatem. Prawa autorskie i certyfikat muszą zostać zachowane. Współautorzy zapewniają wyraźne zrzeczenie się praw patentowych. Gdy zmodyfikowana wersja zostanie użyta do świadczenia usługi przez sieć, pełen kod źródłowy musi zostać udostępniony publicznie.
Link do kodu źródłowego: https://github.com/sschueller/peertube-android/

View File

@ -0,0 +1 @@
Thorium jest nieoficjalnym odtwarzaczem PeerTuber Player

View File

@ -0,0 +1 @@
Thorium an unofficial PeerTube client

View File

@ -0,0 +1 @@
https://www.youtube.com/watch?v=PJIsiuSdpq8

View File

@ -1,6 +1,6 @@
#Sun Nov 22 12:39:32 CET 2020 #Wed Jan 13 22:22:53 EET 2021
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-6.8-all.zip