Merge branch 'master' into SparseBooleanArray

This commit is contained in:
Bnyro 2023-02-06 15:33:01 +01:00 committed by GitHub
commit 6cd8792b9a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 207 additions and 43 deletions

View File

@ -6,7 +6,6 @@ import android.os.StrictMode.VmPolicy
import androidx.core.app.NotificationChannelCompat import androidx.core.app.NotificationChannelCompat
import androidx.core.app.NotificationManagerCompat import androidx.core.app.NotificationManagerCompat
import androidx.work.ExistingPeriodicWorkPolicy import androidx.work.ExistingPeriodicWorkPolicy
import com.github.libretube.api.CronetHelper
import com.github.libretube.api.RetrofitInstance import com.github.libretube.api.RetrofitInstance
import com.github.libretube.constants.BACKGROUND_CHANNEL_ID import com.github.libretube.constants.BACKGROUND_CHANNEL_ID
import com.github.libretube.constants.DOWNLOAD_CHANNEL_ID import com.github.libretube.constants.DOWNLOAD_CHANNEL_ID
@ -22,6 +21,7 @@ import com.github.libretube.util.ExceptionHandler
class LibreTubeApp : Application() { class LibreTubeApp : Application() {
override fun onCreate() { override fun onCreate() {
super.onCreate() super.onCreate()
instance = this
/** /**
* Initialize the needed notification channels for DownloadService and BackgroundMode * Initialize the needed notification channels for DownloadService and BackgroundMode
@ -48,7 +48,6 @@ class LibreTubeApp : Application() {
* Set the api and the auth api url * Set the api and the auth api url
*/ */
RetrofitInstance.initialize() RetrofitInstance.initialize()
CronetHelper.initCronet(this)
ImageHelper.initializeImageLoader(this) ImageHelper.initializeImageLoader(this)
/** /**
@ -112,4 +111,8 @@ class LibreTubeApp : Application() {
) )
) )
} }
companion object {
lateinit var instance: LibreTubeApp
}
} }

View File

@ -1,28 +1,16 @@
package com.github.libretube.api package com.github.libretube.api
import android.content.Context import com.github.libretube.LibreTubeApp
import com.google.net.cronet.okhttptransport.CronetCallFactory import com.google.net.cronet.okhttptransport.CronetCallFactory
import org.chromium.net.CronetEngine import org.chromium.net.CronetEngine
class CronetHelper { object CronetHelper {
companion object { val cronetEngine: CronetEngine = CronetEngine.Builder(LibreTubeApp.instance)
private lateinit var engine: CronetEngine .enableHttp2(true)
lateinit var callFactory: CronetCallFactory .enableQuic(true)
.enableBrotli(true)
.enableHttpCache(CronetEngine.Builder.HTTP_CACHE_IN_MEMORY, 1024L * 1024L) // 1MiB
.build()
fun initCronet(context: Context) { val callFactory: CronetCallFactory = CronetCallFactory.newBuilder(cronetEngine).build()
engine = CronetEngine.Builder(context)
.enableHttp2(true)
.enableQuic(true)
.enableBrotli(true)
.enableHttpCache(CronetEngine.Builder.HTTP_CACHE_IN_MEMORY, 1024L * 1024L) // 1MiB
.build()
callFactory = CronetCallFactory.newBuilder(engine)
.build()
}
fun getCronetEngine(): CronetEngine {
return engine
}
}
} }

View File

@ -5,12 +5,12 @@ import android.app.PendingIntent
import android.app.Service import android.app.Service
import android.content.Intent import android.content.Intent
import android.os.Binder import android.os.Binder
import android.os.Build
import android.os.IBinder import android.os.IBinder
import android.util.SparseBooleanArray import android.util.SparseBooleanArray
import androidx.core.app.NotificationCompat import androidx.core.app.NotificationCompat
import androidx.core.util.set import androidx.core.util.set
import androidx.core.util.valueIterator import androidx.core.util.valueIterator
import androidx.core.app.ServiceCompat
import com.github.libretube.R import com.github.libretube.R
import com.github.libretube.api.CronetHelper import com.github.libretube.api.CronetHelper
import com.github.libretube.api.RetrofitInstance import com.github.libretube.api.RetrofitInstance
@ -181,7 +181,7 @@ class DownloadService : Service() {
try { try {
// Set start range where last downloading was held. // Set start range where last downloading was held.
val con = CronetHelper.getCronetEngine().openConnection(url) as HttpURLConnection val con = CronetHelper.cronetEngine.openConnection(url) as HttpURLConnection
con.requestMethod = "GET" con.requestMethod = "GET"
con.setRequestProperty("Range", "bytes=$totalRead-") con.setRequestProperty("Range", "bytes=$totalRead-")
con.connectTimeout = DownloadHelper.DEFAULT_TIMEOUT con.connectTimeout = DownloadHelper.DEFAULT_TIMEOUT
@ -319,9 +319,7 @@ class DownloadService : Service() {
// Stop the service if no downloads are active. // Stop the service if no downloads are active.
if (downloadQueue.valueIterator().asSequence().none { it }) { if (downloadQueue.valueIterator().asSequence().none { it }) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { ServiceCompat.stopForeground(this, ServiceCompat.STOP_FOREGROUND_DETACH)
stopForeground(STOP_FOREGROUND_DETACH)
}
sendBroadcast(Intent(ACTION_SERVICE_STOPPED)) sendBroadcast(Intent(ACTION_SERVICE_STOPPED))
stopSelf() stopSelf()
} }

View File

@ -123,7 +123,6 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.datetime.LocalDate import kotlinx.datetime.LocalDate
import kotlinx.serialization.encodeToString import kotlinx.serialization.encodeToString
import org.chromium.net.CronetEngine
import retrofit2.HttpException import retrofit2.HttpException
class PlayerFragment : BaseFragment(), OnlinePlayerOptions { class PlayerFragment : BaseFragment(), OnlinePlayerOptions {
@ -1300,14 +1299,11 @@ class PlayerFragment : BaseFragment(), OnlinePlayerOptions {
} }
private fun createExoPlayer() { private fun createExoPlayer() {
val cronetEngine: CronetEngine = CronetHelper.getCronetEngine() val cronetDataSourceFactory = CronetDataSource.Factory(
val cronetDataSourceFactory: CronetDataSource.Factory = CronetHelper.cronetEngine,
CronetDataSource.Factory(cronetEngine, Executors.newCachedThreadPool()) Executors.newCachedThreadPool()
val dataSourceFactory = DefaultDataSource.Factory(
requireContext(),
cronetDataSourceFactory
) )
val dataSourceFactory = DefaultDataSource.Factory(requireContext(), cronetDataSourceFactory)
// control for the track sources like subtitles and audio source // control for the track sources like subtitles and audio source
trackSelector = DefaultTrackSelector(requireContext()) trackSelector = DefaultTrackSelector(requireContext())

View File

@ -16,7 +16,7 @@
<string name="dlisinprogress">Μια άλλη λήψη είναι ήδη σε εξέλιξη, περιμένετε μέχρι να ολοκληρωθεί.</string> <string name="dlisinprogress">Μια άλλη λήψη είναι ήδη σε εξέλιξη, περιμένετε μέχρι να ολοκληρωθεί.</string>
<string name="downloadfailed">Η λήψη απέτυχε.</string> <string name="downloadfailed">Η λήψη απέτυχε.</string>
<string name="vlc">Άνοιγμα στο VLC</string> <string name="vlc">Άνοιγμα στο VLC</string>
<string name="vlcerror">Δεν μπορεί να ανοίξει στο VLC. Μπορεί να μην έχει εγκατασταθεί.</string> <string name="vlcerror">Δεν ήταν δυνατό το άνοιγμα σε VLC. Ενδέχεται να μην εγκαταστάθηκε.</string>
<string name="import_from_yt">Εισαγωγή εγγραφών</string> <string name="import_from_yt">Εισαγωγή εγγραφών</string>
<string name="import_from_yt_summary">Από το YouTube ή το NewPipe</string> <string name="import_from_yt_summary">Από το YouTube ή το NewPipe</string>
<string name="app_theme">Θέμα</string> <string name="app_theme">Θέμα</string>
@ -108,7 +108,7 @@
<string name="color_green">Αυλό πράσινο</string> <string name="color_green">Αυλό πράσινο</string>
<string name="color_purple">Ευχάριστο μοβ</string> <string name="color_purple">Ευχάριστο μοβ</string>
<string name="color_red">Κόκκινο για ξεκούραση</string> <string name="color_red">Κόκκινο για ξεκούραση</string>
<string name="material_you">Μυστικό Υλικό 3</string> <string name="material_you">\"Μυστικό Υλικό 3\"</string>
<string name="sponsorblock_notifications">Ειδοποιήσεις</string> <string name="sponsorblock_notifications">Ειδοποιήσεις</string>
<string name="app_icon">Εικονίδιο</string> <string name="app_icon">Εικονίδιο</string>
<string name="piped">Piped</string> <string name="piped">Piped</string>
@ -127,7 +127,7 @@
<string name="download_directory_summary">Πού αποθηκεύονται τα ληφθέντα μέσα.</string> <string name="download_directory_summary">Πού αποθηκεύονται τα ληφθέντα μέσα.</string>
<string name="donate">Δωρεά</string> <string name="donate">Δωρεά</string>
<string name="update">Αναζητήστε νέα έκδοση</string> <string name="update">Αναζητήστε νέα έκδοση</string>
<string name="update_summary">Πατήστε για να μάθετε αν η εφαρμογή είναι ενημερωμένη.</string> <string name="update_summary">Έλεγχος για ενημερώσεις</string>
<string name="no_update_available">Εκτελείτε την τελευταία έκδοση.</string> <string name="no_update_available">Εκτελείτε την τελευταία έκδοση.</string>
<string name="contributing">Συμβάλοντας</string> <string name="contributing">Συμβάλοντας</string>
<string name="appearance_summary">Προσαρμόστε την εφαρμογή σύμφωνα με τις προτιμήσεις σας.</string> <string name="appearance_summary">Προσαρμόστε την εφαρμογή σύμφωνα με τις προτιμήσεις σας.</string>
@ -189,7 +189,7 @@
<string name="instance_frontend_url">Διεύθυνση URL στη σελίδα του διακομιστή</string> <string name="instance_frontend_url">Διεύθυνση URL στη σελίδα του διακομιστή</string>
<string name="quality">Ποιότητα</string> <string name="quality">Ποιότητα</string>
<string name="behavior">Συμπεριφορά</string> <string name="behavior">Συμπεριφορά</string>
<string name="player_summary">Ποιότητα και συμπεριφορά του αναπαραγωγέα</string> <string name="player_summary">Προεπιλογές ποιότητας και και συμπεριφοράς αναπαραγωγέα</string>
<string name="seek_increment">Προσαύξηση αναπήδησης</string> <string name="seek_increment">Προσαύξηση αναπήδησης</string>
<string name="reset">Επαναφορά προεπιλογών</string> <string name="reset">Επαναφορά προεπιλογών</string>
<string name="reset_message">Επαναφορά όλων των ρυθμίσεων και αποσύνδεση;</string> <string name="reset_message">Επαναφορά όλων των ρυθμίσεων και αποσύνδεση;</string>
@ -207,7 +207,7 @@
<string name="auth_instance">Διακομιστής αυθεντικοποίησης</string> <string name="auth_instance">Διακομιστής αυθεντικοποίησης</string>
<string name="auth_instance_summary">Χρησιμοποιήστε ένα διαφορετικό διακομιστή για αυθεντικοποιημένες κλήσεις.</string> <string name="auth_instance_summary">Χρησιμοποιήστε ένα διαφορετικό διακομιστή για αυθεντικοποιημένες κλήσεις.</string>
<string name="auth_instances">Επιλέξτε ενα διακομιστή αυθεντικοποίησης</string> <string name="auth_instances">Επιλέξτε ενα διακομιστή αυθεντικοποίησης</string>
<string name="hls">Αυτόματο</string> <string name="hls">HLS</string>
<string name="github">GitHub</string> <string name="github">GitHub</string>
<string name="audio_video">Ήχος και βίντεο</string> <string name="audio_video">Ήχος και βίντεο</string>
<string name="fullscreen_orientation">Προσανατολισμός πλήρους οθόνης</string> <string name="fullscreen_orientation">Προσανατολισμός πλήρους οθόνης</string>
@ -271,7 +271,7 @@
<string name="translate">Μετάφραση</string> <string name="translate">Μετάφραση</string>
<string name="no_search_result">Δεν υπάρχουν αποτελέσματα.</string> <string name="no_search_result">Δεν υπάρχουν αποτελέσματα.</string>
<string name="downloadsucceeded">Λήψη επιτυχής</string> <string name="downloadsucceeded">Λήψη επιτυχής</string>
<string name="share_with_time">Μοιραστείτε με την ώρα έναρξης</string> <string name="share_with_time">Μοιραστείτε με συγκεκριμένο χρόνο έναρξης</string>
<string name="chapters">Κεφάλαια</string> <string name="chapters">Κεφάλαια</string>
<string name="change_playback_speed">Ταχύτητα αναπαραγωγής</string> <string name="change_playback_speed">Ταχύτητα αναπαραγωγής</string>
<string name="export_subscriptions">Εξαγωγή εγγραφών</string> <string name="export_subscriptions">Εξαγωγή εγγραφών</string>
@ -294,7 +294,7 @@
<string name="open_copied">Άνοιγμα</string> <string name="open_copied">Άνοιγμα</string>
<string name="resize_mode_fit">Προσαρμογή</string> <string name="resize_mode_fit">Προσαρμογή</string>
<string name="turnInternetOn">Ενεργοποιήστε το Wi-Fi ή τα δεδομένα κινητής τηλεφωνίας για να συνδεθείτε στο διαδίκτυο.</string> <string name="turnInternetOn">Ενεργοποιήστε το Wi-Fi ή τα δεδομένα κινητής τηλεφωνίας για να συνδεθείτε στο διαδίκτυο.</string>
<string name="require_restart_message">Επανεκκίνηση της εφαρμογής;</string> <string name="require_restart_message">Επανεκκινήστε την εφαρμογή για να χρησιμοποιήσετε τις νέες αλλαγές.</string>
<string name="autoRotatePlayer">Αυτόματη πλήρης οθόνη</string> <string name="autoRotatePlayer">Αυτόματη πλήρης οθόνη</string>
<string name="autoRotatePlayer_summary">Αναπαραγωγή πλήρους οθόνης όταν η συσκευή γυρίζει.</string> <string name="autoRotatePlayer_summary">Αναπαραγωγή πλήρους οθόνης όταν η συσκευή γυρίζει.</string>
<string name="no_player_found">Δεν βρέθηκε εξωτερικό πρόγραμμα αναπαραγωγής. Βεβαιωθείτε ότι έχετε εγκαταστήσει ένα.</string> <string name="no_player_found">Δεν βρέθηκε εξωτερικό πρόγραμμα αναπαραγωγής. Βεβαιωθείτε ότι έχετε εγκαταστήσει ένα.</string>
@ -305,4 +305,141 @@
<string name="general">Γενικά</string> <string name="general">Γενικά</string>
<string name="playerAudioFormat">Μορφή ήχου για τον αναπαραγωγέα</string> <string name="playerAudioFormat">Μορφή ήχου για τον αναπαραγωγέα</string>
<string name="playerAudioQuality">Ποιότητα ήχου</string> <string name="playerAudioQuality">Ποιότητα ήχου</string>
<string name="confirm_unsubscribing">Επιβεβαιώστε την απεγγραφή</string>
<string name="local_playlists">Τοπικές λίστες αναπαραγωγής</string>
<string name="select_other_start_tab">Επιλέξτε πρώτα μια άλλη καρτέλα έναρξης!</string>
<string name="play_all">Αναπαραγωγή όλων</string>
<string name="brightness">Φωτεινότητα</string>
<string name="volume">Ένταση ήχου</string>
<string name="auto">Αυτόματο</string>
<string name="swipe_controls">Στοιχεία ελέγχου ολίσθησης</string>
<string name="swipe_controls_summary">Χρησιμοποιήστε το σήμα ολίσθησης για να προσαρμόσετε τη φωτεινότητα και την ένταση.</string>
<string name="wifi">Wi-Fi</string>
<string name="break_reminder_time">Λεπτά πριν την υπενθύμιση</string>
<string name="device_info">Πληροφορίες συσκευής</string>
<string name="audio_video_summary">Ποιότητα και μορφή</string>
<string name="trending_layout">Εναλλακτική διάταξη τάσεων</string>
<string name="mobile_data">Δεδομένα κινητού</string>
<string name="new_videos_badge">Ένδειξη για νέα βίντεο</string>
<string name="new_videos_badge_summary">Δείξε ένα σήμα με τον αριθμό των νέων βίντεο, εάν υπάρχουν κάποια.</string>
<string name="play_next">Παίξε το επόμενο</string>
<string name="navigation_bar">Μπάρα πλοήγησης</string>
<string name="select_at_least_one">Επιλέξτε τουλάχιστον ένα στοιχείο</string>
<string name="progressive_load_interval">Μέγεθος διαστήματος προοδευτικού φορτίου</string>
<string name="default_load_interval">Προκαθορισμένο</string>
<string name="filename">Όνομα αρχείου</string>
<string name="invalid_filename">Άκυρο όνομα αρχείου!</string>
<string name="playback_pitch">Τόνος</string>
<string name="recentlyUpdatedReversed">Πρόσφατα ενημερώθηκε (αντίστροφα)</string>
<string name="added_to_playlist">Προστέθηκε στη λίστα αναπαραγωγής</string>
<string name="playing_queue">Αναπαράγεται στην ουρά</string>
<string name="defaultIconLight">Προεπιλεγμένο φως</string>
<string name="confirm_unsubscribe">Είστε βέβαιοι ότι θέλετε να καταργήσετε την εγγραφή %1$s;</string>
<string name="confirm_unsubscribing_summary">Εμφάνιση διαλόγου επιβεβαίωσης πριν από την κατάργηση της εγγραφής.</string>
<string name="time">Χρόνος</string>
<string name="start_time">Χρόνος έναρξης</string>
<string name="end_time">Χρόνος λήξης</string>
<string name="notification_time">Χρόνος ειδοποίησης</string>
<string name="notification_time_summary">Χρονικό διάστημα κατά το οποίο επιτρέπεται η εμφάνιση ειδοποιήσεων.</string>
<string name="alternative_trending_layout">Εναλλακτική διάταξη τάσεων</string>
<string name="layout">Διάταξη</string>
<string name="alternative_player_layout">Εναλλακτική διάταξη αναπαραγωγής</string>
<string name="alternative_player_layout_summary">Εμφανίστε τα σχετικά βίντεο ως μια σειρά πάνω από τα σχόλια αντί για παρακάτω.</string>
<string name="hls_instead_of_dash_summary">Χρησιμοποιήστε HLS αντί για DASH (πιο αργό, δεν συνιστάται)</string>
<string name="auto_quality">Αυτόματο</string>
<string name="trending">Τι είναι σε τάση τώρα</string>
<string name="not_enabled">Το στοιχείο μενού δεν είναι ενεργοποιημένο!</string>
<string name="defaults">Προεπιλογές</string>
<string name="pop_up">Αναδυόμενο παράθυρο</string>
<string name="theme_monochrome">Μινιμαλιστική Μονόχρωμη</string>
<string name="all_caught_up">Είστε έτοιμοι</string>
<string name="app_backup">Αντίγραφο ασφαλείας εφαρμογής</string>
<string name="privacy_alert">Ειδοποίηση απορρήτου</string>
<string name="color_violet">Ευέλικτο βιολετί</string>
<string name="playlistUrl">URL λίστας αναπαραγωγής</string>
<string name="pause_on_quit">Παύση κατά τη διακοπή</string>
<string name="shuffle">Ανακάτεμα</string>
<string name="remove_bookmark">Αφαίρεση σελιδοδείκτη</string>
<string name="forward">Εμπρός</string>
<string name="alternative_pip_controls">Εναλλακτικά στοιχεία ελέγχου PiP</string>
<string name="alternative_pip_controls_summary">Εμφάνιση μόνο ήχου και παράβλεψη στοιχείων ελέγχου στο PiP αντί για εμπρός και πίσω</string>
<string name="audio_only_mode">Λειτουργία μόνο ήχου</string>
<string name="sleep_timer">Χρονοδιακόπτης ύπνου</string>
<string name="skip_silence">Παράλειψη σιωπής</string>
<string name="help">Βοήθεια</string>
<string name="faq">FAQ</string>
<string name="download_channel_description">Εμφανίζει μια ειδοποίηση κατά τη λήψη πολυμέσων.</string>
<string name="background_channel_name">Λειτουργία φόντου</string>
<string name="push_channel_description">Εμφανίζει μια ειδοποίηση όταν είναι διαθέσιμες νέες ροές.</string>
<string name="no_comments_available">Αυτό το βίντεο δεν έχει διαθέσιμα σχόλια.</string>
<string name="comments_disabled">Τα σχόλια είναι απενεργοποιημένα από τον χρήστη.</string>
<string name="captions_size">Μέγεθος υπότιτλων</string>
<string name="pause">Παύση</string>
<string name="rewind">Πίσω</string>
<string name="double_tap_seek">Πατήστε δύο φορές για αναζήτηση</string>
<string name="all_caught_up_summary">Έχετε δει όλα τα νέα βίντεο</string>
<string name="hide_watched_from_feed">Απόκρυψη βίντεο που παρακολουθήσατε από τη ροή</string>
<string name="hide_watched_from_feed_summary">Μην εμφανίζεις βίντεο που παρακολουθούνται περισσότερο από το 90% στην καρτέλα συνδρομές.</string>
<string name="views_placeholder">προβολές</string>
<string name="local_subscriptions">Τοπικές συνδρομές</string>
<string name="download_channel_name">Υπηρεσία λήψης</string>
<string name="navbar_order">Σειρά</string>
<string name="change_region">Οι τάσεις φαίνεται να μην είναι διαθέσιμες για την τρέχουσα περιοχή. Επιλέξτε άλλη στις ρυθμίσεις.</string>
<string name="legacy_subscriptions">Προβολή συνδρομών παλαιού τύπου</string>
<string name="nothing_selected">Τίποτα επιλεγμένο!</string>
<string name="no_subtitle">Χωρίς υποτίτλους</string>
<string name="download_paused">Το κατέβασμα τέθηκε σε παύση</string>
<string name="progressive_load_interval_summary">Μια χαμηλότερη τιμή μπορεί να επιταχύνει την αρχική φόρτωση βίντεο.</string>
<string name="limit_hls">Περιορίστε το HLS στα 1080p</string>
<string name="skip_segment">Παράλειψη τμήματος</string>
<string name="sb_skip_manual">Παράβλεψη χειροκίνητα</string>
<string name="sb_skip_manual_summary">Μην παραλείψεις τμήματα αυτόματα, πάντα ζήτα προτροπή.</string>
<string name="playlistNameReversed">Όνομα λίστας αναπαραγωγής (αντίστροφο)</string>
<string name="recentlyUpdated">Ενημερώθηκε πρόσφατα</string>
<string name="time_code">Κωδικός χρόνου (δευτερόλεπτα)</string>
<string name="playlistCloned">Η λίστα αναπαραγωγής κλωνοποιήθηκε</string>
<string name="limit_to_runtime">Περιορισμός χρόνου εκτέλεσης</string>
<string name="trends">Τάσεις</string>
<string name="featured">Προτεινόμενα</string>
<string name="double_tap_seek_summary">Πατήστε δύο φορές αριστερά ή δεξιά για να μετακινήσετε προς τα πίσω ή προς τα εμπρός τη θέση του αναπαραγωγέα.</string>
<string name="backup_restore_summary">Εισαγωγή και εξαγωγή συνδρομών, playlist,…</string>
<string name="play_latest_videos">Αναπαραγωγή των πιο πρόσφατων βίντεο</string>
<string name="proceed">Συνέχιση</string>
<string name="add_to_bookmarks">Προσθήκη στους σελιδοδείκτες</string>
<string name="background_channel_description">Εμφανίζει μια ειδοποίηση με κουμπιά για τον έλεγχο του προγράμματος αναπαραγωγής ήχου.</string>
<string name="delete">Διαγραφή από λήψεις</string>
<string name="playlists_order">Σειρά λιστών αναπαραγωγής</string>
<string name="username_email">Συνέχιση με μια διεύθυνση e-mail που δεν συνιστάται;</string>
<string name="exportsuccess">Εξήχθη.</string>
<string name="sb_markers">Σημάδι</string>
<string name="sb_markers_summary">Σημειώστε τα τμήματα στη γραμμή χρόνου.</string>
<string name="preferences">Προτιμήσεις</string>
<string name="backup_customInstances">Προσαρμοσμένες περιπτώσεις</string>
<string name="save_feed">Φόρτωση ροής στο παρασκήνιο</string>
<string name="save_feed_summary">Φορτώστε τη ροή της συνδρομής στο παρασκήνιο και αποτρέψτε την αυτόματη ανανέωσή της.</string>
<string name="queue">Ουρά</string>
<string name="livestreams">Ζωντανές Ροές</string>
<string name="alternative_videos_layout">Εναλλακτική διάταξη βίντεο</string>
<string name="hls_instead_of_dash">Χρησιμοποίησε HLS</string>
<string name="replies">Απαντήσεις</string>
<string name="audio_only_mode_summary">Μετατρέψτε το LibreTube σε πρόγραμμα αναπαραγωγής μουσικής.</string>
<string name="concurrent_downloads_limit_reached">Το μέγιστο όριο ταυτόχρονων λήψεων έχει συμπληρωθεί.</string>
<string name="unknown">Άγνωστος</string>
<string name="resume">Συνέχιση</string>
<string name="import_playlists">Εισαγωγή λιστών αναπαραγωγής</string>
<string name="export_playlists">Εξαγωγή λιστών αναπαραγωγής</string>
<string name="audio_track">Ηχητικό κομμάτι</string>
<string name="default_audio_track">Προεπιλογή</string>
<string name="unsupported_file_format">Μη υποστηριζόμενη μορφή αρχείου!</string>
<string name="audio_player">Αναπαραγωγή ήχου</string>
<string name="open_queue_from_notification">Άνοιγμα ουράς από την ειδοποίηση</string>
<string name="show_more">Δείτε περισσότερα</string>
<string name="renamePlaylist">Μετονομασία λίστας αναπαραγωγής</string>
<string name="queue_insert_related_videos">Εισαγάγετε σχετικά βίντεο</string>
<string name="bookmarks">Σελιδοδείκτες</string>
<string name="bookmark">Σελιδοδείκτης</string>
<string name="clear_bookmarks">Εκκαθάριση σελιδοδεικτών</string>
<string name="bookmarks_empty">Δεν υπάρχουν ακόμα σελιδοδείκτες!</string>
<string name="download_completed">Το κατέβασμα ολοκληρώθηκε</string>
<string name="concurrent_downloads">Μέγιστος αριθμός ταυτοχρόνων λήψεων</string>
</resources> </resources>

View File

@ -140,4 +140,44 @@
<string name="pause">توقف کریں</string> <string name="pause">توقف کریں</string>
<string name="hideTrendingPage">رجحان ساز صفحہ چھپائیں</string> <string name="hideTrendingPage">رجحان ساز صفحہ چھپائیں</string>
<string name="pauseOnScreenOff">خودکار توقف</string> <string name="pauseOnScreenOff">خودکار توقف</string>
<string name="app_behavior">رویہ</string>
<string name="downloads">ڈاؤن لوڈز</string>
<string name="video_format">ویڈیو کی شکل</string>
<string name="video_format_summary">فائلوں کی تبدیلی اگر آڈیو اور ویڈیو دونوں ڈاؤن لوڈ ہوں۔</string>
<string name="download_directory">پر ڈاؤن لوڈ کریں</string>
<string name="download_directory_summary">جہاں ڈاؤن لوڈ کردہ میڈیا کو محفوظ کیا جاتا ہے۔</string>
<string name="contributing">تعاون کرنا</string>
<string name="donate">عطیہ کریں</string>
<string name="update">نیا ورژن تلاش کریں</string>
<string name="update_summary">اپ ڈیٹ کے لیے چیک کریں</string>
<string name="app_uptodate">تازہ ترین ورژن چل رہا ہے۔</string>
<string name="playback_speed">پلے بیک کی رفتار</string>
<string name="advanced">اعلی درجے کی</string>
<string name="player">پلیئر</string>
<string name="advanced_summary">ڈاؤن لوڈز، اور ری سیٹ کریں</string>
<string name="live">لائیو</string>
<string name="no_replies">اس تبصرے کا کوئی جواب نہیں ہے۔</string>
<string name="authors">مصنفین</string>
<string name="download_folder">نام</string>
<string name="internal_storage">اندرونی سٹوریج</string>
<string name="downloads_directory">ڈونلوڈ فولڈر</string>
<string name="sdcard">SD کارڈ</string>
<string name="music_directory">میوزک فولڈر</string>
<string name="movies_directory">مووی فولڈر</string>
<string name="shareTo">اس کے ساتھ URL کا اشتراک کریں</string>
<string name="defaultIcon">ڈیفالٹ</string>
<string name="legacyIcon">گم شدہ میراث</string>
<string name="gradientIcon">Glib میلان</string>
<string name="fireIcon">فیشن ایبل آگ</string>
<string name="torchIcon">جدید ٹارچ</string>
<string name="shapedIcon">بے وقوف شکل</string>
<string name="flameIcon">اڑتا ہوا شعلہ</string>
<string name="customInstance_summary">شامل کریں…</string>
<string name="no_update_available">آپ تازہ ترین ورژن چلا رہے ہیں۔</string>
<string name="appearance_summary">ایپ کو اپنی پسند کے مطابق ایڈجسٹ کریں۔</string>
<string name="download_folder_summary">ڈاؤن لوڈ کردہ فولڈر کا نام جہاں میڈیا محفوظ ہے۔</string>
<string name="views_placeholder">بار دیکھا گیا</string>
<string name="views">%1$s بار دیکھا گیا</string>
<string name="instance_summary">پائپ، لاگ ان، اور سبسکرپشنز</string>
<string name="birdIcon">بڑھا ہوا پرندہ</string>
</resources> </resources>

View File

@ -84,4 +84,6 @@
<string name="sponsorblock_state"></string> <string name="sponsorblock_state"></string>
<string name="category_sponsor">Sponsor</string> <string name="category_sponsor">Sponsor</string>
<string name="customization">較嘢</string> <string name="customization">較嘢</string>
<string name="startpage">主頁</string>
<string name="library">拉把</string>
</resources> </resources>