mirror of
https://github.com/libre-tube/LibreTube.git
synced 2025-04-29 00:10:32 +05:30
Merge pull request #4405 from andrew-ld/mediasessioncompat
feat: support hardware keys for playback control
This commit is contained in:
commit
34cba50d1d
@ -4,8 +4,8 @@ import android.app.Application
|
||||
import androidx.core.app.NotificationChannelCompat
|
||||
import androidx.core.app.NotificationManagerCompat
|
||||
import androidx.work.ExistingPeriodicWorkPolicy
|
||||
import com.github.libretube.constants.BACKGROUND_CHANNEL_ID
|
||||
import com.github.libretube.constants.DOWNLOAD_CHANNEL_ID
|
||||
import com.github.libretube.constants.PLAYER_CHANNEL_ID
|
||||
import com.github.libretube.constants.PUSH_CHANNEL_ID
|
||||
import com.github.libretube.helpers.ImageHelper
|
||||
import com.github.libretube.helpers.NotificationHelper
|
||||
@ -71,12 +71,12 @@ class LibreTubeApp : Application() {
|
||||
.setName(getString(R.string.download_channel_name))
|
||||
.setDescription(getString(R.string.download_channel_description))
|
||||
.build()
|
||||
val backgroundChannel = NotificationChannelCompat.Builder(
|
||||
BACKGROUND_CHANNEL_ID,
|
||||
val playerChannel = NotificationChannelCompat.Builder(
|
||||
PLAYER_CHANNEL_ID,
|
||||
NotificationManagerCompat.IMPORTANCE_LOW
|
||||
)
|
||||
.setName(getString(R.string.background_channel_name))
|
||||
.setDescription(getString(R.string.background_channel_description))
|
||||
.setName(getString(R.string.player_channel_name))
|
||||
.setDescription(getString(R.string.player_channel_description))
|
||||
.build()
|
||||
val pushChannel = NotificationChannelCompat.Builder(
|
||||
PUSH_CHANNEL_ID,
|
||||
@ -90,8 +90,8 @@ class LibreTubeApp : Application() {
|
||||
notificationManager.createNotificationChannelsCompat(
|
||||
listOf(
|
||||
downloadChannel,
|
||||
backgroundChannel,
|
||||
pushChannel
|
||||
pushChannel,
|
||||
playerChannel
|
||||
)
|
||||
)
|
||||
}
|
||||
|
@ -45,7 +45,7 @@ const val DOWNLOAD_PROGRESS_NOTIFICATION_ID = 2
|
||||
* Notification Channel IDs
|
||||
*/
|
||||
const val DOWNLOAD_CHANNEL_ID = "download_service"
|
||||
const val BACKGROUND_CHANNEL_ID = "background_mode"
|
||||
const val PLAYER_CHANNEL_ID = "player_mode"
|
||||
const val PUSH_CHANNEL_ID = "notification_worker"
|
||||
|
||||
/**
|
||||
|
@ -0,0 +1,58 @@
|
||||
package com.github.libretube.extensions
|
||||
|
||||
import android.graphics.Bitmap
|
||||
import android.support.v4.media.MediaMetadataCompat
|
||||
import androidx.media3.common.C
|
||||
import androidx.media3.common.MediaMetadata
|
||||
import androidx.media3.session.MediaConstants
|
||||
|
||||
@androidx.annotation.OptIn(androidx.media3.common.util.UnstableApi::class)
|
||||
fun MediaMetadata.toMediaMetadataCompat(duration: Long, thumbnail: Bitmap?): MediaMetadataCompat {
|
||||
val builder = MediaMetadataCompat.Builder()
|
||||
|
||||
title?.let {
|
||||
builder.putText(MediaMetadataCompat.METADATA_KEY_TITLE, it)
|
||||
builder.putText(MediaMetadataCompat.METADATA_KEY_DISPLAY_TITLE, it)
|
||||
}
|
||||
|
||||
subtitle?.let {
|
||||
builder.putText(MediaMetadataCompat.METADATA_KEY_DISPLAY_SUBTITLE, it)
|
||||
}
|
||||
|
||||
description?.let {
|
||||
builder.putText(MediaMetadataCompat.METADATA_KEY_DISPLAY_DESCRIPTION, it)
|
||||
}
|
||||
|
||||
artist?.let {
|
||||
builder.putText(MediaMetadataCompat.METADATA_KEY_ARTIST, it)
|
||||
}
|
||||
|
||||
albumTitle?.let {
|
||||
builder.putText(MediaMetadataCompat.METADATA_KEY_ALBUM, it)
|
||||
}
|
||||
|
||||
albumArtist?.let {
|
||||
builder.putText(MediaMetadataCompat.METADATA_KEY_ALBUM_ARTIST, it)
|
||||
}
|
||||
|
||||
recordingYear?.toLong()?.let {
|
||||
builder.putLong(MediaMetadataCompat.METADATA_KEY_YEAR, it)
|
||||
}
|
||||
|
||||
artworkUri?.toString()?.let {
|
||||
builder.putString(MediaMetadataCompat.METADATA_KEY_DISPLAY_ICON_URI, it)
|
||||
builder.putString(MediaMetadataCompat.METADATA_KEY_ALBUM_ART_URI, it)
|
||||
}
|
||||
|
||||
builder.putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART, thumbnail)
|
||||
|
||||
if (duration != C.TIME_UNSET) {
|
||||
builder.putLong(MediaMetadataCompat.METADATA_KEY_DURATION, duration)
|
||||
}
|
||||
|
||||
mediaType?.toLong()?.let {
|
||||
builder.putLong(MediaConstants.EXTRAS_KEY_MEDIA_TYPE_COMPAT, it)
|
||||
}
|
||||
|
||||
return builder.build()
|
||||
}
|
@ -9,8 +9,8 @@ import androidx.lifecycle.lifecycleScope
|
||||
import androidx.media3.common.MediaItem
|
||||
import androidx.media3.exoplayer.ExoPlayer
|
||||
import com.github.libretube.R
|
||||
import com.github.libretube.constants.BACKGROUND_CHANNEL_ID
|
||||
import com.github.libretube.constants.IntentData
|
||||
import com.github.libretube.constants.PLAYER_CHANNEL_ID
|
||||
import com.github.libretube.constants.PLAYER_NOTIFICATION_ID
|
||||
import com.github.libretube.db.DatabaseHolder
|
||||
import com.github.libretube.db.obj.DownloadWithItems
|
||||
@ -35,7 +35,7 @@ class OfflinePlayerService : LifecycleService() {
|
||||
override fun onCreate() {
|
||||
super.onCreate()
|
||||
|
||||
val notification = NotificationCompat.Builder(this, BACKGROUND_CHANNEL_ID)
|
||||
val notification = NotificationCompat.Builder(this, PLAYER_CHANNEL_ID)
|
||||
.setContentTitle(getString(R.string.app_name))
|
||||
.setContentText(getString(R.string.playingOnBackground))
|
||||
.setSmallIcon(R.drawable.ic_launcher_lockscreen)
|
||||
|
@ -23,8 +23,8 @@ import com.github.libretube.api.JsonHelper
|
||||
import com.github.libretube.api.RetrofitInstance
|
||||
import com.github.libretube.api.obj.Segment
|
||||
import com.github.libretube.api.obj.Streams
|
||||
import com.github.libretube.constants.BACKGROUND_CHANNEL_ID
|
||||
import com.github.libretube.constants.IntentData
|
||||
import com.github.libretube.constants.PLAYER_CHANNEL_ID
|
||||
import com.github.libretube.constants.PLAYER_NOTIFICATION_ID
|
||||
import com.github.libretube.db.DatabaseHolder.Database
|
||||
import com.github.libretube.db.obj.WatchPosition
|
||||
@ -106,7 +106,7 @@ class OnlinePlayerService : LifecycleService() {
|
||||
override fun onCreate() {
|
||||
super.onCreate()
|
||||
|
||||
val notification = NotificationCompat.Builder(this, BACKGROUND_CHANNEL_ID)
|
||||
val notification = NotificationCompat.Builder(this, PLAYER_CHANNEL_ID)
|
||||
.setContentTitle(getString(R.string.app_name))
|
||||
.setContentText(getString(R.string.playingOnBackground))
|
||||
.setSmallIcon(R.drawable.ic_launcher_lockscreen)
|
||||
|
@ -11,32 +11,30 @@ import android.graphics.Bitmap
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.support.v4.media.session.MediaSessionCompat
|
||||
import android.support.v4.media.session.PlaybackStateCompat
|
||||
import android.util.Log
|
||||
import androidx.annotation.DrawableRes
|
||||
import androidx.core.app.NotificationCompat
|
||||
import androidx.core.app.PendingIntentCompat
|
||||
import androidx.core.content.getSystemService
|
||||
import androidx.core.graphics.drawable.toBitmap
|
||||
import androidx.core.os.bundleOf
|
||||
import androidx.media.app.NotificationCompat.MediaStyle
|
||||
import androidx.media3.common.MediaMetadata
|
||||
import androidx.media3.common.Player
|
||||
import androidx.media3.exoplayer.ExoPlayer
|
||||
import androidx.media3.session.CommandButton
|
||||
import androidx.media3.session.MediaSession
|
||||
import androidx.media3.session.MediaStyleNotificationHelper
|
||||
import androidx.media3.session.SessionCommand
|
||||
import androidx.media3.session.SessionResult
|
||||
import coil.request.ImageRequest
|
||||
import com.github.libretube.R
|
||||
import com.github.libretube.constants.BACKGROUND_CHANNEL_ID
|
||||
import com.github.libretube.constants.IntentData
|
||||
import com.github.libretube.constants.PLAYER_CHANNEL_ID
|
||||
import com.github.libretube.constants.PLAYER_NOTIFICATION_ID
|
||||
import com.github.libretube.extensions.TAG
|
||||
import com.github.libretube.extensions.seekBy
|
||||
import com.github.libretube.extensions.toMediaMetadataCompat
|
||||
import com.github.libretube.helpers.BackgroundHelper
|
||||
import com.github.libretube.helpers.ImageHelper
|
||||
import com.github.libretube.helpers.PlayerHelper
|
||||
import com.github.libretube.obj.PlayerNotificationData
|
||||
import com.github.libretube.ui.activities.MainActivity
|
||||
import com.google.common.util.concurrent.ListenableFuture
|
||||
|
||||
@androidx.annotation.OptIn(androidx.media3.common.util.UnstableApi::class)
|
||||
class NowPlayingNotification(
|
||||
@ -55,7 +53,7 @@ class NowPlayingNotification(
|
||||
/**
|
||||
* The [MediaSessionCompat] for the [notificationData].
|
||||
*/
|
||||
private lateinit var mediaSession: MediaSession
|
||||
private lateinit var mediaSession: MediaSessionCompat
|
||||
|
||||
/**
|
||||
* The [NotificationCompat.Builder] to load the [mediaSession] content on it.
|
||||
@ -152,12 +150,8 @@ class NowPlayingNotification(
|
||||
private fun createMediaSessionAction(
|
||||
@DrawableRes drawableRes: Int,
|
||||
actionName: String
|
||||
): CommandButton {
|
||||
return CommandButton.Builder()
|
||||
.setDisplayName(actionName)
|
||||
.setSessionCommand(SessionCommand(actionName, bundleOf()))
|
||||
.setIconResId(drawableRes)
|
||||
.build()
|
||||
): PlaybackStateCompat.CustomAction {
|
||||
return PlaybackStateCompat.CustomAction.Builder(actionName, actionName, drawableRes).build()
|
||||
}
|
||||
|
||||
/**
|
||||
@ -166,72 +160,120 @@ class NowPlayingNotification(
|
||||
private fun createMediaSession() {
|
||||
if (this::mediaSession.isInitialized) return
|
||||
|
||||
val sessionCallback = object : MediaSession.Callback {
|
||||
override fun onConnect(
|
||||
session: MediaSession,
|
||||
controller: MediaSession.ControllerInfo
|
||||
): MediaSession.ConnectionResult {
|
||||
val connectionResult = super.onConnect(session, controller)
|
||||
val availableSessionCommands = connectionResult.availableSessionCommands.buildUpon()
|
||||
val availablePlayerCommands =
|
||||
connectionResult.availablePlayerCommands // Player.Commands.Builder().add(Player.COMMAND_PLAY_PAUSE).build()
|
||||
getCustomActions().forEach { button ->
|
||||
button.sessionCommand?.let { availableSessionCommands.add(it) }
|
||||
}
|
||||
session.setAvailableCommands(
|
||||
controller,
|
||||
availableSessionCommands.build(),
|
||||
availablePlayerCommands
|
||||
)
|
||||
return MediaSession.ConnectionResult.accept(
|
||||
availableSessionCommands.build(),
|
||||
availablePlayerCommands
|
||||
)
|
||||
val sessionCallback = object : MediaSessionCompat.Callback() {
|
||||
override fun onSkipToNext() {
|
||||
handlePlayerAction(NEXT)
|
||||
super.onSkipToNext()
|
||||
}
|
||||
|
||||
override fun onCustomCommand(
|
||||
session: MediaSession,
|
||||
controller: MediaSession.ControllerInfo,
|
||||
customCommand: SessionCommand,
|
||||
args: Bundle
|
||||
): ListenableFuture<SessionResult> {
|
||||
handlePlayerAction(customCommand.customAction)
|
||||
return super.onCustomCommand(session, controller, customCommand, args)
|
||||
override fun onSkipToPrevious() {
|
||||
handlePlayerAction(PREV)
|
||||
super.onSkipToPrevious()
|
||||
}
|
||||
|
||||
override fun onPlayerCommandRequest(
|
||||
session: MediaSession,
|
||||
controller: MediaSession.ControllerInfo,
|
||||
playerCommand: Int
|
||||
): Int {
|
||||
if (playerCommand == Player.COMMAND_SEEK_TO_PREVIOUS) {
|
||||
handlePlayerAction(PREV)
|
||||
return SessionResult.RESULT_SUCCESS
|
||||
}
|
||||
return super.onPlayerCommandRequest(session, controller, playerCommand)
|
||||
override fun onRewind() {
|
||||
handlePlayerAction(REWIND)
|
||||
super.onRewind()
|
||||
}
|
||||
|
||||
override fun onPostConnect(
|
||||
session: MediaSession,
|
||||
controller: MediaSession.ControllerInfo
|
||||
) {
|
||||
session.setCustomLayout(getCustomActions())
|
||||
override fun onFastForward() {
|
||||
handlePlayerAction(FORWARD)
|
||||
super.onFastForward()
|
||||
}
|
||||
|
||||
override fun onPlay() {
|
||||
handlePlayerAction(PLAY_PAUSE)
|
||||
super.onPlay()
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
handlePlayerAction(PLAY_PAUSE)
|
||||
super.onPause()
|
||||
}
|
||||
|
||||
override fun onStop() {
|
||||
handlePlayerAction(STOP)
|
||||
super.onStop()
|
||||
}
|
||||
|
||||
override fun onSeekTo(pos: Long) {
|
||||
player.seekTo(pos)
|
||||
super.onSeekTo(pos)
|
||||
}
|
||||
|
||||
override fun onCustomAction(action: String, extras: Bundle?) {
|
||||
handlePlayerAction(action)
|
||||
super.onCustomAction(action, extras)
|
||||
}
|
||||
}
|
||||
|
||||
mediaSession = MediaSession.Builder(context, player)
|
||||
.setCallback(sessionCallback)
|
||||
.build()
|
||||
mediaSession.setCustomLayout(getCustomActions())
|
||||
mediaSession = MediaSessionCompat(context, TAG())
|
||||
mediaSession.setCallback(sessionCallback)
|
||||
|
||||
updateSessionMetadata()
|
||||
updateSessionPlaybackState()
|
||||
|
||||
val playerStateListener = object : Player.Listener {
|
||||
override fun onIsPlayingChanged(isPlaying: Boolean) {
|
||||
super.onIsPlayingChanged(isPlaying)
|
||||
updateSessionPlaybackState(isPlaying = isPlaying)
|
||||
}
|
||||
|
||||
override fun onIsLoadingChanged(isLoading: Boolean) {
|
||||
super.onIsLoadingChanged(isLoading)
|
||||
|
||||
if (!isLoading) {
|
||||
updateSessionMetadata()
|
||||
}
|
||||
|
||||
updateSessionPlaybackState(isLoading = isLoading)
|
||||
}
|
||||
|
||||
override fun onMediaMetadataChanged(mediaMetadata: MediaMetadata) {
|
||||
super.onMediaMetadataChanged(mediaMetadata)
|
||||
updateSessionMetadata(mediaMetadata)
|
||||
}
|
||||
}
|
||||
|
||||
player.addListener(playerStateListener)
|
||||
}
|
||||
|
||||
private fun getCustomActions() = mutableListOf(
|
||||
// disabled and overwritten in onPlayerCommandRequest
|
||||
// createMediaSessionAction(R.drawable.ic_prev_outlined, PREV),
|
||||
createMediaSessionAction(R.drawable.ic_next_outlined, NEXT),
|
||||
createMediaSessionAction(R.drawable.ic_rewind_md, REWIND),
|
||||
createMediaSessionAction(R.drawable.ic_forward_md, FORWARD)
|
||||
)
|
||||
private fun updateSessionMetadata(metadata: MediaMetadata? = null) {
|
||||
val data = metadata ?: player.mediaMetadata
|
||||
val newMetadata = data.toMediaMetadataCompat(player.duration, notificationBitmap)
|
||||
mediaSession.setMetadata(newMetadata)
|
||||
}
|
||||
|
||||
private fun updateSessionPlaybackState(isPlaying: Boolean? = null, isLoading: Boolean? = null) {
|
||||
val loading = isLoading == true || (isPlaying == false && player.isLoading)
|
||||
|
||||
val newPlaybackState = if (loading) {
|
||||
createPlaybackState(PlaybackStateCompat.STATE_BUFFERING)
|
||||
} else if (isPlaying ?: player.isPlaying) {
|
||||
createPlaybackState(PlaybackStateCompat.STATE_PLAYING)
|
||||
} else {
|
||||
createPlaybackState(PlaybackStateCompat.STATE_PAUSED)
|
||||
}
|
||||
|
||||
mediaSession.setPlaybackState(newPlaybackState)
|
||||
}
|
||||
|
||||
private fun createPlaybackState(@PlaybackStateCompat.State state: Int): PlaybackStateCompat {
|
||||
val stateActions = PlaybackStateCompat.ACTION_SKIP_TO_NEXT or
|
||||
PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS or
|
||||
PlaybackStateCompat.ACTION_REWIND or
|
||||
PlaybackStateCompat.ACTION_FAST_FORWARD or
|
||||
PlaybackStateCompat.ACTION_PLAY_PAUSE or
|
||||
PlaybackStateCompat.ACTION_PAUSE or
|
||||
PlaybackStateCompat.ACTION_SEEK_TO
|
||||
|
||||
return PlaybackStateCompat.Builder()
|
||||
.setActions(stateActions)
|
||||
.addCustomAction(createMediaSessionAction(R.drawable.ic_rewind_md, REWIND))
|
||||
.addCustomAction(createMediaSessionAction(R.drawable.ic_forward_md, FORWARD))
|
||||
.setState(state, player.currentPosition, player.playbackParameters.speed)
|
||||
.build()
|
||||
}
|
||||
|
||||
private fun handlePlayerAction(action: String) {
|
||||
when (action) {
|
||||
@ -306,12 +348,13 @@ class NowPlayingNotification(
|
||||
* Initializes the [notificationBuilder] attached to the [player] and shows it.
|
||||
*/
|
||||
private fun createNotificationBuilder() {
|
||||
notificationBuilder = NotificationCompat.Builder(context, BACKGROUND_CHANNEL_ID)
|
||||
notificationBuilder = NotificationCompat.Builder(context, PLAYER_CHANNEL_ID)
|
||||
.setSmallIcon(R.drawable.ic_launcher_lockscreen)
|
||||
.setContentIntent(createCurrentContentIntent())
|
||||
.setDeleteIntent(createDeleteIntent())
|
||||
.setStyle(
|
||||
MediaStyleNotificationHelper.MediaStyle(mediaSession)
|
||||
MediaStyle()
|
||||
.setMediaSession(mediaSession.sessionToken)
|
||||
.setShowActionsInCompactView(1)
|
||||
)
|
||||
}
|
||||
@ -329,6 +372,7 @@ class NowPlayingNotification(
|
||||
}
|
||||
}
|
||||
.build()
|
||||
updateSessionMetadata()
|
||||
nManager.notify(PLAYER_NOTIFICATION_ID, notification)
|
||||
}
|
||||
|
||||
|
@ -274,8 +274,6 @@
|
||||
<string name="local_subscriptions">الاشتراكات المحلية</string>
|
||||
<string name="preferences">التفضيلات</string>
|
||||
<string name="backup_customInstances">مثيلات مخصصة</string>
|
||||
<string name="background_channel_name">وضع الخلفية</string>
|
||||
<string name="background_channel_description">يعرض إشعارا يحتوي على أزرار للتحكم في مشغل الصوت.</string>
|
||||
<string name="push_channel_name">عامل الإخطار</string>
|
||||
<string name="push_channel_description">يظهر إشعارًا عند توفر تدفقات جديدة.</string>
|
||||
<string name="save_feed">تحميل التغذية في الخلفية</string>
|
||||
|
@ -276,10 +276,8 @@
|
||||
<string name="save_feed_summary">Abunəlik axının arxa planda yükləməsin və avtomatik yeniləməsin dayandır.</string>
|
||||
<string name="download_channel_name">Yükləmə Xidməti</string>
|
||||
<string name="download_channel_description">Media yükləyərkən bildiriş göstərir.</string>
|
||||
<string name="background_channel_name">Fon Rejimi</string>
|
||||
<string name="push_channel_name">Bildiriş İşçisi</string>
|
||||
<string name="push_channel_description">Yeni yayımlar mövcuddursa bildiriş göstərir.</string>
|
||||
<string name="background_channel_description">Səs oynadıcını idarə etmək üçün düymələrlə bildiriş göstərir.</string>
|
||||
<string name="play_next">Sonra oynat</string>
|
||||
<string name="navigation_bar">Naviqasiya çubuğu</string>
|
||||
<string name="change_region">Görünür, trendlər hazırkı ölkə üçün əlçatan deyil. Xahiş olunur, tənzimləmələrdə başqasın seç.</string>
|
||||
|
@ -350,8 +350,6 @@
|
||||
<string name="stats_for_nerds">Статыстыка для батанікаў</string>
|
||||
<string name="playing_next">Наступнае прайграванне праз %1$s</string>
|
||||
<string name="download_channel_description">Паказвае апавяшчэнне пры спампоўцы мультымедыя.</string>
|
||||
<string name="background_channel_name">Фонавы рэжым</string>
|
||||
<string name="background_channel_description">Паказвае апавяшчэнне з кнопкамі для кіравання аўдыяплэерам.</string>
|
||||
<string name="push_channel_name">Работнік апавяшчэнняў</string>
|
||||
<string name="push_channel_description">Паказвае апавяшчэнне, калі з\'яўляюцца новыя стрымы.</string>
|
||||
<string name="subscriberAndVideoCounts">%1$s падпісчыкаў • %2$d відэа</string>
|
||||
|
@ -281,10 +281,8 @@
|
||||
<string name="backup_customInstances">কাস্টম ইন্সটেন্সগুলো</string>
|
||||
<string name="playback_pitch">পিচ</string>
|
||||
<string name="download_channel_name">ডাউনলোড সার্ভিস</string>
|
||||
<string name="background_channel_description">অডিও প্লেয়ার নিয়ন্ত্রণের জন্য নোটিফিকেশনে বাটন দেখান।</string>
|
||||
<string name="change_region">বর্তমান এলাকায় ট্রেডিং অ্যাভেলেবল নেই। সেটিংসে গিয়ে অন্যটি বাছুন।</string>
|
||||
<string name="download_channel_description">ডাউনলোডের সময় নোটিফিকেশন দেখান।</string>
|
||||
<string name="background_channel_name">ব্যাকগ্রাউন্ড মোড</string>
|
||||
<string name="filename">ফাইলের নাম</string>
|
||||
<string name="invalid_filename">ইনভ্যালিড ফাইলনেম!</string>
|
||||
<string name="playlists_order">প্লে-লিস্টের অর্ডার</string>
|
||||
|
@ -372,7 +372,6 @@
|
||||
<string name="shuffle">تێکەڵاوکردن</string>
|
||||
<string name="pause_on_quit">ڕاگرتن لەکاتی دەرچوون</string>
|
||||
<string name="fullscreen_gestures">کردن/لابردنی ئاماژەکانی دۆخی پڕ بەشاشە</string>
|
||||
<string name="background_channel_name">دۆخی لێدان لە پشت شاشە</string>
|
||||
<string name="go_to_video">چوون بۆ ڤیدیۆ</string>
|
||||
<string name="disable_proxy">ناچالاککردنی پرۆکسی Pipe</string>
|
||||
<string name="disable_proxy_summary">هێنانی ڤیدیۆ و وێنەکان ڕاستەوخۆ لە سێرڤەرەکانی یوتوبەوە، تەنها کاتێ ئەمە کارابکە کە VPN بەکاربهێنیت!</string>
|
||||
@ -398,7 +397,6 @@
|
||||
<string name="remove_bookmark">لابردنی نیشانەکراو</string>
|
||||
<string name="rewind">داوخستن</string>
|
||||
<string name="forward">پێشخستن</string>
|
||||
<string name="background_channel_description">پیشاندانی ئاگادارکردنەوە لەگەڵ دوگمەکانی کۆنترۆڵکردنی لێدەری دەنگ.</string>
|
||||
<plurals name="months_ago">
|
||||
<item quantity="one">%d مانگ لەمەوپێش</item>
|
||||
<item quantity="other">%d مانگ لەمەوپێش</item>
|
||||
|
@ -267,8 +267,6 @@
|
||||
<string name="wifi">Wi-Fi</string>
|
||||
<string name="mobile_data">Mobilní data</string>
|
||||
<string name="sb_skip_manual">Přeskočit ručně</string>
|
||||
<string name="background_channel_name">Režim na pozadí</string>
|
||||
<string name="background_channel_description">Zobrazí oznámení s tlačítky pro ovládání přehrávače zvuku.</string>
|
||||
<string name="push_channel_name">Pracovník oznámení</string>
|
||||
<string name="download_channel_name">Služba stahování</string>
|
||||
<string name="skip_segment">Přeskočit segment</string>
|
||||
|
@ -247,7 +247,6 @@
|
||||
<string name="sb_skip_manual">Manuell überspringen</string>
|
||||
<string name="navigation_bar">Navigationsleiste</string>
|
||||
<string name="download_channel_name">Download-Service</string>
|
||||
<string name="background_channel_description">Zeigt eine Benachrichtigung mit Schaltflächen zur Steuerung des Audioplayers an.</string>
|
||||
<string name="push_channel_name">Benachrichtigungsdienst</string>
|
||||
<string name="skip_buttons">Überspringen-Buttons</string>
|
||||
<string name="history_size">Maximale Verlaufsgröße</string>
|
||||
@ -279,7 +278,6 @@
|
||||
<string name="backup_customInstances">Benutzerdefinierte Instanzen</string>
|
||||
<string name="save_feed">Feed im Hintergrund laden</string>
|
||||
<string name="play_next">Als nächstes abspielen</string>
|
||||
<string name="background_channel_name">Hintergrundmodus</string>
|
||||
<string name="break_reminder_time">Minuten bis zur Benachrichtigung</string>
|
||||
<string name="player_resize_mode">Skalierungsmodus</string>
|
||||
<string name="maximum_image_cache">Maximale Bild-Cache-Größe</string>
|
||||
|
@ -311,7 +311,6 @@
|
||||
<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>
|
||||
@ -344,7 +343,6 @@
|
||||
<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>
|
||||
|
@ -270,11 +270,9 @@
|
||||
<string name="download_channel_name">Servicio de descarga</string>
|
||||
<string name="skip_segment">Omitir</string>
|
||||
<string name="download_channel_description">Mostrar una notificación al descargar medios.</string>
|
||||
<string name="background_channel_name">Modo de fondo</string>
|
||||
<string name="push_channel_name">Notificador de novedades</string>
|
||||
<string name="sb_skip_manual_summary">No omitir segmentos automáticamente, siempre preguntar antes.</string>
|
||||
<string name="push_channel_description">Mostrar una notificación cuando hay nuevas transmisiones disponibles.</string>
|
||||
<string name="background_channel_description">Mostrar una notificación con botones para controlar el reproductor de audio.</string>
|
||||
<string name="local_subscriptions">Suscripciones locales</string>
|
||||
<string name="preferences">Preferencias</string>
|
||||
<string name="backup_customInstances">Instancias personalizadas</string>
|
||||
|
@ -268,8 +268,6 @@
|
||||
<string name="sb_skip_manual_summary">Ez saltatu segmentuak automatikoki, galdetu beti aurretik.</string>
|
||||
<string name="download_channel_name">Deskarga zerbitzua</string>
|
||||
<string name="download_channel_description">Multimedia deskargatzean jakinarazpen bat erakusten du.</string>
|
||||
<string name="background_channel_name">Atzeko planoko modua</string>
|
||||
<string name="background_channel_description">Audio-erreproduzitzailea maneiatzeko botoiekin jakinarazpen bat erakusten du.</string>
|
||||
<string name="push_channel_name">Jakinarazpenen egilea</string>
|
||||
<string name="local_subscriptions">Tokiko harpidetzak</string>
|
||||
<string name="preferences">Hobespenak</string>
|
||||
|
@ -171,7 +171,6 @@
|
||||
<string name="help">راهنما</string>
|
||||
<string name="faq">پرسشهای پرتکرار</string>
|
||||
<string name="download_channel_name">خدمت بارگیری</string>
|
||||
<string name="background_channel_name">حالت پسزمینه</string>
|
||||
<string name="most_recent">جدیدترین</string>
|
||||
<string name="least_recent">قدیمیترین</string>
|
||||
<string name="player_resize_mode">حالت تغییر اندازه</string>
|
||||
@ -341,7 +340,6 @@
|
||||
<string name="break_reminder_time">دقیقههای پیش از یادآوری</string>
|
||||
<string name="new_videos_badge">نشانگر ویدئوهای جدید</string>
|
||||
<string name="save_feed_summary">فید اشتراک را در پسزمینه بارگیری و از بازخوانی خودکار آن جلوگیری کنید.</string>
|
||||
<string name="background_channel_description">یک اعلان با دکمه هایی برای کنترل پخش کننده صدا نشان می دهد.</string>
|
||||
<string name="autoplay_countdown">شمارش معکوس پخش خودکار</string>
|
||||
<string name="playing_next">پخش بعدی در %1$s</string>
|
||||
<string name="lbry_hls">کتابخانه HLS</string>
|
||||
|
@ -203,7 +203,6 @@
|
||||
<string name="mobile_data">Mobiilidata</string>
|
||||
<string name="disable_proxy">Poista Piped välityspalvelin käytöstä</string>
|
||||
<string name="disable_proxy_summary">Lataa videot ja kuvat suoraan YouTuben palvelimilta. Ota vaihtoehto käyttöön vain, jos käytät VPN:ää! Huomaa, että tämä ei välttämättä toimi YT-musiikin sisällön kanssa.</string>
|
||||
<string name="background_channel_name">Taustatila</string>
|
||||
<string name="navigation_bar">Navigointipalkki</string>
|
||||
<string name="most_recent">Uusin</string>
|
||||
<string name="device_info">Laitetieto</string>
|
||||
@ -218,7 +217,6 @@
|
||||
<string name="added_to_playlist">Lisätty soittolistaan</string>
|
||||
<string name="pause_on_quit">Tauko lopettamisen yhteydessä</string>
|
||||
<string name="autoplay_countdown_summary">Näytä 5 sekunnin lähtölaskenta ennen seuraavan videon automaattista toistoa.</string>
|
||||
<string name="background_channel_description">Näyttää ilmoituksen, jossa on painikkeita audiosoittimen ohjaamiseksi.</string>
|
||||
<string name="exportsuccess">Vietiin.</string>
|
||||
<string name="pinch_control">Nipistysohjaus</string>
|
||||
<string name="pinch_control_summary">Käytä nipistyselettä lähentääksesi/loitontaaksesi.</string>
|
||||
|
@ -272,7 +272,6 @@
|
||||
<string name="backup_customInstances">Instances personnalisées</string>
|
||||
<string name="local_subscriptions">Abonnements locaux</string>
|
||||
<string name="preferences">Préférences</string>
|
||||
<string name="background_channel_description">Affiche une notification avec des boutons pour contrôler le lecteur audio.</string>
|
||||
<string name="push_channel_name">Agent de notification</string>
|
||||
<string name="save_feed">Charger le flux en arrière-plan</string>
|
||||
<string name="save_feed_summary">Charger le flux d\'abonnement en arrière-plan et empêcher son rafraîchissement automatique.</string>
|
||||
@ -281,7 +280,6 @@
|
||||
<string name="download_channel_name">Service de Téléchargement</string>
|
||||
<string name="download_channel_description">Affiche une notification lors du téléchargement de médias.</string>
|
||||
<string name="change_region">La section Populaires semble être indisponible pour la région actuelle. Veuillez en sélectionner une autre dans les paramètres.</string>
|
||||
<string name="background_channel_name">Mode arrière-plan</string>
|
||||
<string name="push_channel_description">Affiche une notification lorsque de nouveaux événements sont disponibles.</string>
|
||||
<string name="playback_pitch">Hauteur</string>
|
||||
<string name="filename">Nom de fichier</string>
|
||||
|
@ -66,7 +66,6 @@
|
||||
<string name="notification_time">સૂચના સમય</string>
|
||||
<string name="notification_time_summary">સમયગાળો જેમાં સૂચનાઓ બતાવવાની મંજૂરી છે.</string>
|
||||
<string name="download_channel_description">જ્યારે મીડિયાને ડાઉનલોડ કરી રહ્યા હોય ત્યારે સૂચના બતાવે છે.</string>
|
||||
<string name="background_channel_name">પાશ્વભાગ સ્થિતિ</string>
|
||||
<string name="push_channel_description">જ્યારે નવી સ્ટ્રીમો ઉપલબ્ધ હોય ત્યારે સૂચનને બતાવે છે.</string>
|
||||
<string name="legacyIcon">ગુમ થયેલ વારસો</string>
|
||||
<string name="gradientIcon">ગ્લિબ ઢાળ</string>
|
||||
@ -233,7 +232,6 @@
|
||||
<string name="app_backup">એપ્લિકેશન બેકઅપ</string>
|
||||
<string name="exportsuccess">નિકાસ કરેલ છે.</string>
|
||||
<string name="username_email">ઇ-મેઇલ સરનામાં સાથે આગળ વધવું કે જેની ભલામણ કરવામાં આવતી નથી\?</string>
|
||||
<string name="background_channel_description">ઓડિયો પ્લેયરને નિયંત્રિત કરવા માટે બટનો સાથે સૂચન બતાવે છે.</string>
|
||||
<string name="play_latest_videos">તાજેતરની વિડિયોને વગાડો</string>
|
||||
<string name="settings">સુયોજનો</string>
|
||||
<string name="instance">નમૂનો</string>
|
||||
|
@ -222,7 +222,6 @@
|
||||
<string name="bookmark">बुकमार्क</string>
|
||||
<string name="bookmarks">बुकमार्कस</string>
|
||||
<string name="clear_bookmarks">बुकमार्कस मिटाएं</string>
|
||||
<string name="background_channel_name">बैकग्राउंड मोड</string>
|
||||
<string name="local_playlists">स्थानीय प्लेलिस्ट</string>
|
||||
<string name="volume">ध्वनि</string>
|
||||
<string name="auto">ऑटो</string>
|
||||
@ -230,7 +229,6 @@
|
||||
<string name="brightness">चमक</string>
|
||||
<string name="swipe_controls">स्वाइप नियंत्रण</string>
|
||||
<string name="swipe_controls_summary">चमक और ध्वनि को समायोजित करने के लिए स्वाइप जेस्चर का उपयोग करें।</string>
|
||||
<string name="background_channel_description">ऑडियो प्लेयर को नियंत्रित करने के लिए बटनों के साथ सूचना दिखाता है।</string>
|
||||
<string name="download_channel_name">डाउनलोड सेवा</string>
|
||||
<string name="download_channel_description">मीडिया डाउनलोड करते समय एक सूचना दिखाता है।</string>
|
||||
<string name="queue_insert_related_videos">संबंधित वीडियो डालें</string>
|
||||
|
@ -271,13 +271,11 @@
|
||||
<string name="backup_customInstances">Egyéni példányok</string>
|
||||
<string name="play_next">Lejátszás következőként</string>
|
||||
<string name="download_channel_name">Letöltő szolgáltatás</string>
|
||||
<string name="background_channel_name">Háttér mód</string>
|
||||
<string name="push_channel_name">Értesítési munkatárs</string>
|
||||
<string name="push_channel_description">Értesítés megjelenítése, amikor új közvetítések érhetők el.</string>
|
||||
<string name="navigation_bar">Navigációs sáv</string>
|
||||
<string name="download_channel_description">Értesítés megjelenítése média letöltésekor.</string>
|
||||
<string name="save_feed_summary">Töltse be az feliratkozott videófolyamot a háttérben, és akadályozza meg az automatikus frissítést.</string>
|
||||
<string name="background_channel_description">Megjelenít egy értesítést a lejátszó vezérlésére szolgáló gombokkal.</string>
|
||||
<string name="skip_segment">Szakasz kihagyása</string>
|
||||
<string name="sb_skip_manual">Manuális kihagyás</string>
|
||||
<string name="sb_skip_manual_summary">Ne hagyja ki a szakaszokat automatikusan, mindig kérdezzen előtte.</string>
|
||||
|
@ -275,8 +275,6 @@
|
||||
<string name="download_channel_description">Menampilkan sebuah notifikasi ketika mengunduh media.</string>
|
||||
<string name="preferences">Preferensi</string>
|
||||
<string name="push_channel_name">Pekerja Notifikasi</string>
|
||||
<string name="background_channel_name">Mode Latar Belakang</string>
|
||||
<string name="background_channel_description">Menampilkan sebuah notifikasi dengan tombol untuk mengatur pemain audio.</string>
|
||||
<string name="push_channel_description">Menampilkan sebuah notifikasi ketika saluran baru telah tersedia.</string>
|
||||
<string name="save_feed">Muat umpan di latar belakang</string>
|
||||
<string name="save_feed_summary">Muat umpan langganan di latar belakang dan cegah dari memuat secara otomatis.</string>
|
||||
|
@ -268,13 +268,11 @@
|
||||
<string name="skip_segment">Salta il segmento</string>
|
||||
<string name="sb_skip_manual">Salta manualmente</string>
|
||||
<string name="sb_skip_manual_summary">Non saltare i segmenti automaticamente, chiedi sempre prima.</string>
|
||||
<string name="background_channel_description">Mostra una notifica con i pulsanti per controllare il lettore audio.</string>
|
||||
<string name="download_channel_description">Mostra una notifica quando si scaricano i media.</string>
|
||||
<string name="local_subscriptions">Iscrizioni locali</string>
|
||||
<string name="preferences">Preferenze</string>
|
||||
<string name="backup_customInstances">Istanze personalizzate</string>
|
||||
<string name="play_next">Riproduci il successivo</string>
|
||||
<string name="background_channel_name">Modalità in sottofondo</string>
|
||||
<string name="download_channel_name">Servizio di Download</string>
|
||||
<string name="push_channel_name">Operatore di notifica</string>
|
||||
<string name="push_channel_description">Mostra una notifica quando sono disponibili nuovi video.</string>
|
||||
|
@ -274,9 +274,7 @@
|
||||
<string name="backup_customInstances">מופעים מותאמים אישית</string>
|
||||
<string name="download_channel_name">שירות ההורדות</string>
|
||||
<string name="download_channel_description">מציג התראה בזמן הורדת מדיה.</string>
|
||||
<string name="background_channel_name">מצב רקע</string>
|
||||
<string name="save_feed">לטעון את ערוץ ההזנות ברקע</string>
|
||||
<string name="background_channel_description">מציג התראה עם כפתורים כדי לשלוט בנגן השמע.</string>
|
||||
<string name="push_channel_name">מתפעל התראות</string>
|
||||
<string name="save_feed_summary">לטעון את ערוץ ההזנה של המינוי ברקע ולמנוע את רענונו מחדש אוטומטית.</string>
|
||||
<string name="push_channel_description">מציג התראה כשתזרימים חדשים זמינים.</string>
|
||||
|
@ -284,11 +284,9 @@
|
||||
<string name="invalid_filename">無効なファイル名です!</string>
|
||||
<string name="playlistNameReversed">プレイリスト名 (逆順)</string>
|
||||
<string name="playlists_order">プレイリストの表示順</string>
|
||||
<string name="background_channel_description">音声プレイヤーを操作するボタン付きの通知を表示します。</string>
|
||||
<string name="livestreams">ライブ配信</string>
|
||||
<string name="alternative_videos_layout">別の動画レイアウト</string>
|
||||
<string name="download_channel_name">ダウンロードサービス</string>
|
||||
<string name="background_channel_name">バックグラウンドモード</string>
|
||||
<string name="push_channel_name">通知の実行</string>
|
||||
<string name="push_channel_description">新着動画があれば通知を表示します。</string>
|
||||
<string name="defaultIconLight">標準 (ライト)</string>
|
||||
|
@ -260,8 +260,6 @@
|
||||
<string name="exportsuccess">내보내기 완료.</string>
|
||||
<string name="app_backup">앱 백업</string>
|
||||
<string name="double_tap_seek_summary">왼쪽이나 오른쪽을 두 번 눌러 플레이어 위치를 되감거나 앞으로 이동합니다.</string>
|
||||
<string name="background_channel_name">백그라운드 모드</string>
|
||||
<string name="background_channel_description">오디오 플레이어 제어 버튼이 있는 알림을 표시한다.</string>
|
||||
<string name="wifi">와이파이</string>
|
||||
<string name="play_all">모두 재생</string>
|
||||
<string name="auto">자동</string>
|
||||
|
@ -154,8 +154,6 @@
|
||||
<string name="download_channel_name">Atsisiuntimo paslauga</string>
|
||||
<string name="download_channel_description">Rodomas pranešimas, kai atsisiunčiama medija.</string>
|
||||
<string name="loggedout">Atsijungta.</string>
|
||||
<string name="background_channel_name">Fono režimas</string>
|
||||
<string name="background_channel_description">Rodomas pranešimas su garso grotuvo valdymo mygtukais.</string>
|
||||
<string name="push_channel_description">Rodo pranešimą, kai pasiekiamos naujos transliacijos.</string>
|
||||
<string name="videos">Vaizdo įrašai</string>
|
||||
<string name="subscribe">Prenumeruoti</string>
|
||||
|
@ -328,7 +328,6 @@
|
||||
<string name="alternative_videos_layout">Alternatīvs video izklājums</string>
|
||||
<string name="hls_instead_of_dash_summary">Izmantot HLS, nevis DASH (lēnak, nav ieteicams)</string>
|
||||
<string name="audio_player">Audio atskaņotājs</string>
|
||||
<string name="background_channel_description">Parāda paziņojumu ar pogām, lai kontrolētu audio atskaņotāju.</string>
|
||||
<string name="push_channel_name">Paziņojumu strādnieks</string>
|
||||
<string name="time">Laiks</string>
|
||||
<string name="start_time">Sākuma laiks</string>
|
||||
@ -366,7 +365,6 @@
|
||||
<string name="export_playlists">Eksportēt atskaņošanas sarakstus</string>
|
||||
<string name="pause_on_quit">Pauzēt aizverot applikāciju</string>
|
||||
<string name="category">Kategorija</string>
|
||||
<string name="background_channel_name">Fona režīms</string>
|
||||
<string name="bookmarks">Grāmatzīmes</string>
|
||||
<string name="bookmark">Grāmatzīme</string>
|
||||
<string name="codecs">Kodeksi</string>
|
||||
|
@ -257,7 +257,6 @@
|
||||
<string name="disable_proxy">पाइप्ड प्रॉक्सी अक्षम करा</string>
|
||||
<string name="disable_proxy_summary">YouTube च्या सर्व्हरवरून थेट व्हिडिओ आणि प्रतिमा लोड करा. तुम्ही VPN वापरत असाल तरच पर्याय सक्षम करा! लक्षात ठेवा की हे YT संगीतातील सामग्रीसह कार्य करू शकत नाही.</string>
|
||||
<string name="push_channel_description">नवीन प्रवाह उपलब्ध असताना सूचना दाखवते.</string>
|
||||
<string name="background_channel_description">सूचनेत ऑडिओ प्लेअर नियंत्रित करण्यासाठी बटणे दाखवते.</string>
|
||||
<string name="added_to_playlist">प्लेलिस्टमध्ये जोडले</string>
|
||||
<string name="app_backup">ॲप बॅकअप</string>
|
||||
<string name="username_email">शिफारस नसलेल्या ई-मेल पत्त्यासह पुढे जायचे\?</string>
|
||||
@ -271,7 +270,6 @@
|
||||
<string name="lbry_hls_summary">उपलब्ध असल्यास प्रवाहासाठी LBRY HLS वापरा.</string>
|
||||
<string name="custom_playback_speed_summary">सामान्य प्लेअरपेक्षा वेगळा प्लेबॅक वेग वापरा.</string>
|
||||
<string name="auto_fullscreen_shorts">शॉर्ट्स व्हिडिओवर ऑटो फुलस्क्रीन</string>
|
||||
<string name="background_channel_name">पार्श्वभूमी मोड</string>
|
||||
<string name="pinch_control">पिंच कंट्रोल</string>
|
||||
<string name="privacy_alert">गोपनीयता सूचना</string>
|
||||
<string name="stats_for_nerds">गीक्ससाठी आकडेवारी</string>
|
||||
|
@ -268,7 +268,6 @@
|
||||
<string name="skip_segment">Hopp over</string>
|
||||
<string name="sb_skip_manual">Hopp over manuelt</string>
|
||||
<string name="sb_skip_manual_summary">Ikke hopp over automatisk, alltid spør.</string>
|
||||
<string name="background_channel_name">Bakgrunnsmodus</string>
|
||||
<string name="local_subscriptions">Lokale abonnementer</string>
|
||||
<string name="preferences">Innstillinger</string>
|
||||
<string name="backup_customInstances">Egendefinerte instanser</string>
|
||||
@ -278,7 +277,6 @@
|
||||
<string name="download_channel_name">Nedlastingstjeneste</string>
|
||||
<string name="download_channel_description">Vis en merknad ved nedlasting av media.</string>
|
||||
<string name="push_channel_name">Merknadsarbeider</string>
|
||||
<string name="background_channel_description">Viser en merknad uten knapper for å kontrollere lydspilleren.</string>
|
||||
<string name="push_channel_description">Viser en merknad når nye strømmer er tilgjengelige.</string>
|
||||
<string name="wifi">Wi-Fi</string>
|
||||
<string name="navigation_bar">Navigasjonsfelt</string>
|
||||
|
@ -290,8 +290,6 @@
|
||||
<string name="defaultIconLight">ଡିଫଲ୍ଟ ଉଜ୍ଜଳ</string>
|
||||
<string name="download_channel_name">ଡାଉନଲୋଡ୍ ସେବା</string>
|
||||
<string name="download_channel_description">ମିଡିଆ ଡାଉନଲୋଡ୍ କରିବା ସମୟରେ ଏକ ବିଜ୍ଞପ୍ତି ଦେଖାଏ ।</string>
|
||||
<string name="background_channel_name">ପୃଷ୍ଠଭୂମି ଧାରା</string>
|
||||
<string name="background_channel_description">ଅଡିଓ ପ୍ଲେୟାରକୁ ନିୟନ୍ତ୍ରଣ କରିବା ପାଇଁ ବଟନ୍ ସହିତ ଏକ ବିଜ୍ଞପ୍ତି ଦେଖାଏ ।</string>
|
||||
<string name="push_channel_name">ବିଜ୍ଞପ୍ତି କର୍ମୀ</string>
|
||||
<string name="push_channel_description">ନୂତନ ଷ୍ଟ୍ରିମ୍ ଉପଲବ୍ଧ ହେଲେ ଏକ ବିଜ୍ଞପ୍ତି ଦେଖାଏ ।</string>
|
||||
<string name="playlistCloned">ପ୍ଲେଲିଷ୍ଟ କ୍ଲୋନ ହୋଇଛି</string>
|
||||
|
@ -115,7 +115,6 @@
|
||||
<string name="update_available">ਸੰਸਕਰਣ %1$s ਉਪਲਬਧ ਹੈ</string>
|
||||
<string name="appearance">ਦਿੱਖ</string>
|
||||
<string name="failed_fetching_instances">ਉਪਲੱਬਧ ਉਦਾਹਰਨਾਂ ਪ੍ਰਾਪਤ ਨਹੀਂ ਕਰ ਸਕਿਆ।</string>
|
||||
<string name="background_channel_description">ਆਡੀਓ ਪਲੇਅਰ ਨੂੰ ਨਿਯੰਤਰਿਤ ਕਰਨ ਲਈ ਬਟਨਾਂ ਨਾਲ ਇੱਕ ਸੂਚਨਾ ਦਿਖਾਉਂਦਾ ਹੈ।</string>
|
||||
<string name="hide_watched_from_feed">ਫੀਡ ਤੋਂ ਦੇਖੇ ਗਏ ਵੀਡੀਓ ਨੂੰ ਲੁਕਾਓ</string>
|
||||
<string name="shapedIcon">ਮੂਰਖ ਆਕਾਰ</string>
|
||||
<string name="flameIcon">ਉੱਡਦੀ ਲਾਟ</string>
|
||||
@ -329,7 +328,6 @@
|
||||
<string name="clear_bookmarks">ਬੁੱਕਮਾਰਕਸ ਸਾਫ਼ ਕਰੋ</string>
|
||||
<string name="auto_quality">ਆਟੋ</string>
|
||||
<string name="hls_instead_of_dash_summary">DASH ਦੀ ਬਜਾਏ HLS ਦੀ ਵਰਤੋਂ ਕਰੋ (ਹੌਲੀ ਹੋਵੇਗੀ, ਸਿਫ਼ਾਰਸ਼ ਨਹੀਂ ਕੀਤੀ ਗਈ)</string>
|
||||
<string name="background_channel_name">ਬੈਕਗਰਾਊਂਡ ਮੋਡ</string>
|
||||
<string name="notification_time">ਨੋਟੀਫਿਕੇਸ਼ਨ ਸਮਾਂ ਸੀਮਿਤ ਕਰੋ</string>
|
||||
<string name="layout">ਲੇਆਊਟ</string>
|
||||
<string name="notification_time_summary">ਸਮਾਂ ਸੀਮਤ ਕਰੋ ਜਿਸ ਵਿੱਚ ਸਟ੍ਰੀਮ ਸੂਚਨਾਵਾਂ ਦਿਖਾਈਆਂ ਜਾਂਦੀਆਂ ਹਨ।</string>
|
||||
|
@ -273,8 +273,6 @@
|
||||
<string name="preferences">Ustawienia</string>
|
||||
<string name="backup_customInstances">Instancje niestandardowe</string>
|
||||
<string name="download_channel_name">Usługa pobierania</string>
|
||||
<string name="background_channel_name">Tryb w tle</string>
|
||||
<string name="background_channel_description">Pokazuje powiadomienie z przyciskami do sterowania odtwarzaczem audio.</string>
|
||||
<string name="push_channel_description">Pokazuje powiadomienie, gdy dostępne są nowe filmy.</string>
|
||||
<string name="push_channel_name">Powiadomienie Push</string>
|
||||
<string name="download_channel_description">Pokazuje powiadomienie podczas pobierania mediów.</string>
|
||||
|
@ -262,7 +262,6 @@
|
||||
<string name="push_channel_description">Exibe uma notificação quando novos vídeos estão disponíveis.</string>
|
||||
<string name="push_channel_name">Serviço de notificações</string>
|
||||
<string name="play_next">Reproduzir a seguir</string>
|
||||
<string name="background_channel_name">Modo de segundo plano</string>
|
||||
<string name="navigation_bar">Barra de navegação</string>
|
||||
<string name="download_channel_description">Exibe uma notificação ao baixar mídia.</string>
|
||||
<string name="export_subscriptions">Exportar inscrições</string>
|
||||
@ -283,7 +282,6 @@
|
||||
<string name="filename">Nome do arquivo</string>
|
||||
<string name="invalid_filename">Nome de arquivo inválido!</string>
|
||||
<string name="playlists_order">Ordem das playlists</string>
|
||||
<string name="background_channel_description">Exibe uma notificação com botões para controlar o reprodutor de áudio.</string>
|
||||
<string name="unlimited">Ilimitado</string>
|
||||
<string name="copied_to_clipboard">Copiado para a área de transferência</string>
|
||||
<string name="wifi">Wi-Fi</string>
|
||||
|
@ -259,8 +259,6 @@
|
||||
<string name="new_videos_badge">Indicador para novos vídeos</string>
|
||||
<string name="new_videos_badge_summary">Mostrar indicador com o número de novos vídeos, se existentes.</string>
|
||||
<string name="download_channel_description">Mostrar notificação ao descarregar dados.</string>
|
||||
<string name="background_channel_name">Modo de segundo plano</string>
|
||||
<string name="background_channel_description">Mostrar notificação com botões para controlar a reprodução.</string>
|
||||
<string name="push_channel_name">Serviço de notificações</string>
|
||||
<string name="push_channel_description">Mostrar notificação se existirem novos fluxos multimédia.</string>
|
||||
<string name="skip_segment">Ignorar segmento</string>
|
||||
|
@ -291,7 +291,6 @@
|
||||
<string name="change_region">Tendințele par să fie indisponibile pentru regiunea actuală. Vă rugăm să selectați o altă regiune în setări.</string>
|
||||
<string name="playlistCloned">Playlist clonat</string>
|
||||
<string name="lbry_hls">LBRY HLS</string>
|
||||
<string name="background_channel_name">Modul de fundal</string>
|
||||
<string name="play_all">Redați toate</string>
|
||||
<string name="notification_time_summary">Limitați intervalul de timp în care sunt afișate notificările de flux.</string>
|
||||
<string name="queue_insert_related_videos">Inserați videoclipuri similare</string>
|
||||
@ -310,7 +309,6 @@
|
||||
<string name="clear_bookmarks">Ștergeți marcajele</string>
|
||||
<string name="volume">Volum</string>
|
||||
<string name="swipe_controls_summary">Folosiți gestul de glisare pentru a regla luminozitatea și volumul.</string>
|
||||
<string name="background_channel_description">Afișați o notificare cu butoane pentru a controla player-ul audio.</string>
|
||||
<string name="rewind">Înapoi</string>
|
||||
<string name="alternative_pip_controls">Controale suprapunere alternative</string>
|
||||
<string name="failed_fetching_instances">Nu s-au putut prelua instanțele disponibile.</string>
|
||||
|
@ -263,10 +263,8 @@
|
||||
<string name="new_videos_badge_summary">Показывать значок, если появились новые видео.</string>
|
||||
<string name="download_channel_name">Служба загрузки</string>
|
||||
<string name="sb_skip_manual">Ручной пропуск</string>
|
||||
<string name="background_channel_description">Показывать уведомление с кнопками для управления аудиоплеером.</string>
|
||||
<string name="skip_segment">Пропустить отрывок</string>
|
||||
<string name="download_channel_description">Показывать уведомление при загрузке медиа.</string>
|
||||
<string name="background_channel_name">Фоновый режим</string>
|
||||
<string name="push_channel_name">Агент уведомлениий</string>
|
||||
<string name="break_reminder_time">Минут до напоминания</string>
|
||||
<string name="legacy_subscriptions">Старый вид отображения подписок</string>
|
||||
|
@ -265,7 +265,6 @@
|
||||
<string name="alternative_pip_controls">විකල්ප PiP පාලන</string>
|
||||
<string name="audio_only_mode">ශ්රව්ය පමණක් ප්රකාරය</string>
|
||||
<string name="download_channel_description">මාධ්ය බාගත කිරීමේදී දැනුම්දීමක් පෙන්වයි.</string>
|
||||
<string name="background_channel_name">පසුබිම් ප්රකාරය</string>
|
||||
<string name="push_channel_description">නව ප්රවාහ පවතින විට දැනුම්දීමක් පෙන්වයි.</string>
|
||||
<string name="all_caught_up">ඹබ සියල්ල බලා ඇත</string>
|
||||
<string name="startpage">මුල්</string>
|
||||
@ -365,7 +364,6 @@
|
||||
<string name="playlistNameReversed">වාදන ලැයිස්තුවේ නම (ප්රතිලෝම)</string>
|
||||
<string name="playlistCreated">වාදන ලැයිස්තුව සාදන ලදී.</string>
|
||||
<string name="addToPlaylist">වාදන ලැයිස්තුවට එක් කරන්න</string>
|
||||
<string name="background_channel_description">ශ්රව්ය ධාවකය පාලනය කිරීමට බොත්තම් සහිත දැනුම්දීමක් පෙන්වයි.</string>
|
||||
<string name="remove_bookmark">පොත් සලකුණ ඉවත් කරන්න</string>
|
||||
<string name="download_channel_name">බාගත කිරීමේ සේවාව</string>
|
||||
<string name="push_channel_name">දැනුම්දීම් සේවකයා</string>
|
||||
|
@ -261,7 +261,6 @@
|
||||
<string name="save_feed">Учитај фид у позадини</string>
|
||||
<string name="save_feed_summary">Учитај фид претплате у позадини и спречи његово аутоматско освежавање.</string>
|
||||
<string name="navigation_bar">Трака за навигацију</string>
|
||||
<string name="background_channel_description">Приказује обавештење са дугмадима за контролу аудио плејера.</string>
|
||||
<string name="push_channel_description">Приказује обавештење када су нови стримови доступни.</string>
|
||||
<string name="push_channel_name">Нотификацијски радник</string>
|
||||
<string name="device_info">О уређају</string>
|
||||
@ -284,7 +283,6 @@
|
||||
<string name="playlistNameReversed">Назив листе (обрнуто)</string>
|
||||
<string name="download_channel_name">Преузми услугу</string>
|
||||
<string name="download_channel_description">Приказује обавештење приликом преузимања медија.</string>
|
||||
<string name="background_channel_name">Позадински режим</string>
|
||||
<string name="renamePlaylist">Преименујте плејлисту</string>
|
||||
<string name="legacy_subscriptions">Застарели приказ претплата</string>
|
||||
<string name="audio_video_summary">Квалитет и формат</string>
|
||||
|
@ -272,8 +272,6 @@
|
||||
<string name="local_subscriptions">Yerel abonelikler</string>
|
||||
<string name="preferences">Tercihler</string>
|
||||
<string name="backup_customInstances">Özel Oluşumlar</string>
|
||||
<string name="background_channel_name">Arka Plan Modu</string>
|
||||
<string name="background_channel_description">Müzik çaları kontrol etmek için düğmeleri olan bir bildirim gösterir.</string>
|
||||
<string name="save_feed">Akışı arka planda yükle</string>
|
||||
<string name="save_feed_summary">Abonelik akışının arka planda yüklenmesini ve otomatik olarak yenilenmesini önleyin.</string>
|
||||
<string name="download_channel_name">İndirme Hizmeti</string>
|
||||
|
@ -228,8 +228,6 @@
|
||||
<string name="play_next">Відтворити наступне</string>
|
||||
<string name="download_channel_name">Служба завантаження</string>
|
||||
<string name="download_channel_description">Показує сповіщення під час завантаження медіа.</string>
|
||||
<string name="background_channel_name">Фоновий режим</string>
|
||||
<string name="background_channel_description">Показує сповіщення з кнопками для керування аудіопрогравачем.</string>
|
||||
<string name="navigation_bar">Панель навігації</string>
|
||||
<string name="push_channel_name">Обробник сповіщень</string>
|
||||
<string name="error_occurred">Помилка</string>
|
||||
|
@ -232,8 +232,6 @@
|
||||
<string name="sb_skip_manual">Bỏ qua thủ công</string>
|
||||
<string name="sb_skip_manual_summary">Đừng tự động bỏ qua các phân đoạn, hãy luôn nhắc trước đó.</string>
|
||||
<string name="download_channel_description">Hiển thị thông báo khi tải xuống phương tiện.</string>
|
||||
<string name="background_channel_name">Chế độ background</string>
|
||||
<string name="background_channel_description">Hiển thị thông báo với các nút để điều khiển trình phát âm thanh.</string>
|
||||
<string name="push_channel_description">Hiển thị thông báo khi có luồng phát mới.</string>
|
||||
<string name="push_channel_name">Nguồn cấp thông báo</string>
|
||||
<string name="local_subscriptions">Đăng ký cục bộ</string>
|
||||
|
@ -272,8 +272,6 @@
|
||||
<string name="sb_skip_manual_summary">跳过片段前始终先提示。</string>
|
||||
<string name="download_channel_name">下载服务</string>
|
||||
<string name="download_channel_description">下载媒体文件时显示通知。</string>
|
||||
<string name="background_channel_name">后台模式</string>
|
||||
<string name="background_channel_description">显示控制音频播放器按钮的通知。</string>
|
||||
<string name="push_channel_name">通知 Worker</string>
|
||||
<string name="local_subscriptions">本地订阅</string>
|
||||
<string name="backup_customInstances">自定义实例</string>
|
||||
|
@ -185,7 +185,6 @@
|
||||
<string name="auto">自動</string>
|
||||
<string name="swipe_controls">滑動控制</string>
|
||||
<string name="swipe_controls_summary">使用滑動手勢調整亮度和音量。</string>
|
||||
<string name="background_channel_description">在通知欄顯示附有按鈕的音訊播放器。</string>
|
||||
<string name="history_empty">尚無歷史紀錄。</string>
|
||||
<string name="notifications">通知</string>
|
||||
<string name="notify_new_streams">顯示新串流通知</string>
|
||||
@ -336,7 +335,6 @@
|
||||
<string name="general">一般</string>
|
||||
<string name="audio_player">音訊播放器</string>
|
||||
<string name="playlistUrl">播放清單網址</string>
|
||||
<string name="background_channel_name">背景模式</string>
|
||||
<string name="download_channel_description">在下載媒體檔案時顯示通知。</string>
|
||||
<string name="push_channel_name">通知工作器</string>
|
||||
<string name="time_code">時間戳 (秒)</string>
|
||||
|
@ -467,12 +467,12 @@
|
||||
<!-- Notification channel strings -->
|
||||
<string name="download_channel_name">Download Service</string>
|
||||
<string name="download_channel_description">Shows a notification when downloading media.</string>
|
||||
<string name="background_channel_name">Background Mode</string>
|
||||
<string name="background_channel_description">Shows a notification with buttons to control the audio player.</string>
|
||||
<string name="push_channel_name">Notification Worker</string>
|
||||
<string name="push_channel_description">Shows a notification when new streams are available.</string>
|
||||
<string name="unlimited_search_history">Unlimited search history</string>
|
||||
<string name="chapters_videoHighlight">Video Highlight</string>
|
||||
<string name="player_channel_name">Player Service</string>
|
||||
<string name="player_channel_description">Shows a notification when playing</string>
|
||||
<!-- Relative time formatting strings (remove when setting the minSdk to 24) -->
|
||||
<plurals name="years_ago">
|
||||
<item quantity="one">%d year ago</item>
|
||||
|
Loading…
x
Reference in New Issue
Block a user