[Backup & Restore] Better Backup & Restore

Removed Playing Queue, Most Played, History, etc. from Backup. Better Backup & Restore for Playlists & Custom Artist Images.
This commit is contained in:
Prathamesh More 2021-12-31 02:25:41 +05:30
parent 076fc1d9c5
commit 1d77b3155a
40 changed files with 96 additions and 114 deletions

View file

@ -62,7 +62,7 @@ class MainActivity : AbsCastActivity(), OnSharedPreferenceChangeListener {
if (!hasPermissions()) { if (!hasPermissions()) {
findNavController(R.id.fragment_container).navigate(R.id.permissionFragment) findNavController(R.id.fragment_container).navigate(R.id.permissionFragment)
} }
if (BuildConfig.VERSION_CODE > PreferenceUtil.lastVersion){ if (BuildConfig.VERSION_CODE > PreferenceUtil.lastVersion && !BuildConfig.DEBUG){
NavigationUtil.gotoWhatNews(this) NavigationUtil.gotoWhatNews(this)
} }
} }

View file

@ -29,7 +29,8 @@ class BackupViewModel : ViewModel() {
suspend fun restoreBackup(activity: Activity, inputStream: InputStream?, contents: List<BackupContent>) { suspend fun restoreBackup(activity: Activity, inputStream: InputStream?, contents: List<BackupContent>) {
BackupHelper.restoreBackup(activity, inputStream, contents) BackupHelper.restoreBackup(activity, inputStream, contents)
if (contents.contains(BackupContent.SETTINGS)) { if (contents.contains(BackupContent.SETTINGS) or contents.contains(BackupContent.CUSTOM_ARTIST_IMAGES)) {
// We have to restart App when Preferences i.e. Settings or Artist Images are to be restored
withContext(Dispatchers.Main) { withContext(Dispatchers.Main) {
val intent = Intent( val intent = Intent(
activity, activity,

View file

@ -3,9 +3,11 @@ package code.name.monkey.retromusic.fragments.backup
import android.net.Uri import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.provider.MediaStore import android.provider.MediaStore
import android.view.ViewGroup
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate import androidx.appcompat.app.AppCompatDelegate
import androidx.core.view.updateLayoutParams
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import code.name.monkey.retromusic.databinding.ActivityRestoreBinding import code.name.monkey.retromusic.databinding.ActivityRestoreBinding
import code.name.monkey.retromusic.helper.BackupContent import code.name.monkey.retromusic.helper.BackupContent
@ -27,6 +29,7 @@ class RestoreActivity : AppCompatActivity() {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
binding = ActivityRestoreBinding.inflate(layoutInflater) binding = ActivityRestoreBinding.inflate(layoutInflater)
setContentView(binding.root) setContentView(binding.root)
setWidth()
val backupUri = intent?.data val backupUri = intent?.data
binding.backupName.setText(getFileName(backupUri)) binding.backupName.setText(getFileName(backupUri))
binding.cancelButton.setOnClickListener { binding.cancelButton.setOnClickListener {
@ -35,7 +38,6 @@ class RestoreActivity : AppCompatActivity() {
binding.restoreButton.setOnClickListener { binding.restoreButton.setOnClickListener {
val backupContents = mutableListOf<BackupContent>() val backupContents = mutableListOf<BackupContent>()
if (binding.checkSettings.isChecked) backupContents.add(SETTINGS) if (binding.checkSettings.isChecked) backupContents.add(SETTINGS)
if (binding.checkQueue.isChecked) backupContents.add(QUEUE)
if (binding.checkDatabases.isChecked) backupContents.add(PLAYLISTS) if (binding.checkDatabases.isChecked) backupContents.add(PLAYLISTS)
if (binding.checkArtistImages.isChecked) backupContents.add(CUSTOM_ARTIST_IMAGES) if (binding.checkArtistImages.isChecked) backupContents.add(CUSTOM_ARTIST_IMAGES)
if (binding.checkUserImages.isChecked) backupContents.add(USER_IMAGES) if (binding.checkUserImages.isChecked) backupContents.add(USER_IMAGES)
@ -82,4 +84,9 @@ class RestoreActivity : AppCompatActivity() {
} }
return "Backup" return "Backup"
} }
private fun setWidth() {
val width = resources.displayMetrics.widthPixels * 0.8
binding.root.updateLayoutParams<ViewGroup.LayoutParams> { this.width = width.toInt() }
}
} }

View file

@ -29,6 +29,7 @@ import android.widget.Toast
import androidx.core.view.doOnPreDraw import androidx.core.view.doOnPreDraw
import androidx.core.view.updateLayoutParams import androidx.core.view.updateLayoutParams
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import code.name.monkey.retromusic.Constants.USER_BANNER import code.name.monkey.retromusic.Constants.USER_BANNER
import code.name.monkey.retromusic.Constants.USER_PROFILE import code.name.monkey.retromusic.Constants.USER_PROFILE
@ -50,7 +51,6 @@ import com.bumptech.glide.request.target.Target
import com.github.dhaval2404.imagepicker.ImagePicker import com.github.dhaval2404.imagepicker.ImagePicker
import com.github.dhaval2404.imagepicker.constant.ImageProvider import com.github.dhaval2404.imagepicker.constant.ImageProvider
import com.google.android.material.transition.MaterialContainerTransform import com.google.android.material.transition.MaterialContainerTransform
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
@ -202,15 +202,15 @@ class UserInfoFragment : Fragment() {
} }
private fun saveImage(bitmap: Bitmap, fileName: String) { private fun saveImage(bitmap: Bitmap, fileName: String) {
CoroutineScope(Dispatchers.IO).launch { lifecycleScope.launch(Dispatchers.IO) {
val appDir = requireContext().filesDir val appDir = requireContext().filesDir
val file = File(appDir, fileName) val file = File(appDir, fileName)
var successful = false var successful = false
runCatching { runCatching {
val os = BufferedOutputStream(FileOutputStream(file)) BufferedOutputStream(FileOutputStream(file)).use {
successful = ImageUtil.resizeBitmap(bitmap, 2048) successful = ImageUtil.resizeBitmap(bitmap, 2048)
.compress(Bitmap.CompressFormat.WEBP, 100, os) .compress(Bitmap.CompressFormat.WEBP, 100, it)
withContext(Dispatchers.IO) { os.close() } }
}.onFailure { }.onFailure {
it.printStackTrace() it.printStackTrace()
} }

View file

@ -2,21 +2,28 @@ package code.name.monkey.retromusic.helper
import android.content.Context import android.content.Context
import android.os.Environment import android.os.Environment
import android.util.Log
import android.widget.Toast import android.widget.Toast
import androidx.core.content.edit
import androidx.preference.PreferenceManager
import code.name.monkey.retromusic.App import code.name.monkey.retromusic.App
import code.name.monkey.retromusic.BuildConfig import code.name.monkey.retromusic.BuildConfig
import code.name.monkey.retromusic.db.PlaylistEntity
import code.name.monkey.retromusic.db.toSongEntity
import code.name.monkey.retromusic.helper.BackupContent.* import code.name.monkey.retromusic.helper.BackupContent.*
import code.name.monkey.retromusic.model.Song
import code.name.monkey.retromusic.repository.Repository
import code.name.monkey.retromusic.repository.SongRepository
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import org.koin.core.component.KoinComponent
import org.koin.core.component.inject
import java.io.* import java.io.*
import java.util.zip.ZipEntry import java.util.zip.ZipEntry
import java.util.zip.ZipInputStream import java.util.zip.ZipInputStream
import java.util.zip.ZipOutputStream import java.util.zip.ZipOutputStream
object BackupHelper { object BackupHelper : KoinComponent {
private val repository by inject<Repository>()
private val songRepository by inject<SongRepository>()
suspend fun createBackup(context: Context, name: String) { suspend fun createBackup(context: Context, name: String) {
val backupFile = val backupFile =
File(backupRootPath + File.separator + name + APPEND_EXTENSION) File(backupRootPath + File.separator + name + APPEND_EXTENSION)
@ -24,17 +31,18 @@ object BackupHelper {
backupFile.parentFile?.mkdirs() backupFile.parentFile?.mkdirs()
} }
val zipItems = mutableListOf<ZipItem>() val zipItems = mutableListOf<ZipItem>()
zipItems.addAll(getDatabaseZipItems(context)) zipItems.addAll(getPlaylistZipItems(context))
zipItems.addAll(getSettingsZipItems(context)) zipItems.addAll(getSettingsZipItems(context))
getUserImageZipItems(context)?.let { zipItems.addAll(it) } getUserImageZipItems(context)?.let { zipItems.addAll(it) }
zipItems.addAll(getCustomArtistZipItems(context)) zipItems.addAll(getCustomArtistZipItems(context))
zipItems.addAll(getQueueZipItems(context))
zipAll(zipItems, backupFile) zipAll(zipItems, backupFile)
// Clean Cache Playlist Directory
File(context.filesDir, PLAYLISTS_PATH).deleteRecursively()
} }
private suspend fun zipAll(zipItems: List<ZipItem>, backupFile: File) = private suspend fun zipAll(zipItems: List<ZipItem>, backupFile: File) =
withContext(Dispatchers.IO) { withContext(Dispatchers.IO) {
kotlin.runCatching { runCatching {
ZipOutputStream(BufferedOutputStream(FileOutputStream(backupFile))).use { out -> ZipOutputStream(BufferedOutputStream(FileOutputStream(backupFile))).use { out ->
for (zipItem in zipItems) { for (zipItem in zipItems) {
FileInputStream(zipItem.filePath).use { fi -> FileInputStream(zipItem.filePath).use { fi ->
@ -51,7 +59,6 @@ object BackupHelper {
Toast.makeText(App.getContext(), "Couldn't create backup", Toast.LENGTH_SHORT) Toast.makeText(App.getContext(), "Couldn't create backup", Toast.LENGTH_SHORT)
.show() .show()
} }
throw Exception(it)
}.onSuccess { }.onSuccess {
withContext(Dispatchers.Main) { withContext(Dispatchers.Main) {
Toast.makeText( Toast.makeText(
@ -62,26 +69,31 @@ object BackupHelper {
.show() .show()
} }
} }
} }
private fun getDatabaseZipItems(context: Context): List<ZipItem> { private suspend fun getPlaylistZipItems(context: Context): List<ZipItem> {
return context.databaseList().filter { val playlistZipItems = mutableListOf<ZipItem>()
it.endsWith(".db") && it != queueDatabase // Cache Playlist files in App storage
}.map { val playlistFolder = File(context.filesDir, PLAYLISTS_PATH)
ZipItem(context.getDatabasePath(it).absolutePath, "$DATABASES_PATH${File.separator}$it") if (!playlistFolder.exists()) {
playlistFolder.mkdirs()
} }
} for (playlist in repository.fetchPlaylistWithSongs()) {
runCatching {
private fun getQueueZipItems(context: Context): List<ZipItem> { M3UWriter.writeIO(playlistFolder, playlist)
Log.d("RetroMusic", context.getDatabasePath(queueDatabase).absolutePath) }.onSuccess { playlistFile ->
return listOf( if (playlistFile.exists()) {
playlistZipItems.add(
ZipItem( ZipItem(
context.getDatabasePath(queueDatabase).absolutePath, playlistFile.absolutePath,
"$QUEUE_PATH${File.separator}$queueDatabase" PLAYLISTS_PATH + File.separator + playlistFile.name
) )
) )
} }
}
}
return playlistZipItems
}
private fun getSettingsZipItems(context: Context): List<ZipItem> { private fun getSettingsZipItems(context: Context): List<ZipItem> {
val sharedPrefPath = context.filesDir.parentFile?.absolutePath + "/shared_prefs/" val sharedPrefPath = context.filesDir.parentFile?.absolutePath + "/shared_prefs/"
@ -124,8 +136,6 @@ object BackupHelper {
) )
} }
} }
return zipItemList return zipItemList
} }
@ -138,22 +148,19 @@ object BackupHelper {
ZipInputStream(inputStream).use { ZipInputStream(inputStream).use {
var entry = it.nextEntry var entry = it.nextEntry
while (entry != null) { while (entry != null) {
if (entry.isDatabaseEntry() && contents.contains(PLAYLISTS)) { if (entry.isPlaylistEntry() && contents.contains(PLAYLISTS)) {
restoreDatabase(context, it, entry) restorePlaylists(it, entry)
} else if (entry.isPreferenceEntry() && contents.contains(SETTINGS)) { } else if (entry.isPreferenceEntry() && contents.contains(SETTINGS)) {
restorePreferences(context, it, entry) restorePreferences(context, it, entry)
} else if (entry.isImageEntry() && contents.contains(USER_IMAGES)) { } else if (entry.isImageEntry() && contents.contains(USER_IMAGES)) {
restoreImages(context, it, entry) restoreImages(context, it, entry)
} else if (entry.isCustomArtistImageEntry() && contents.contains( } else if (entry.isCustomArtistEntry() && contents.contains(CUSTOM_ARTIST_IMAGES)) {
CUSTOM_ARTIST_IMAGES if (entry.isCustomArtistPrefEntry()) {
)
) {
restoreCustomArtistImages(context, it, entry)
restoreCustomArtistPrefs(context, it, entry) restoreCustomArtistPrefs(context, it, entry)
} else if (entry.isQueueEntry() && contents.contains(QUEUE)) { } else if (entry.isCustomArtistImageEntry()) {
restoreQueueDatabase(context, it, entry) restoreCustomArtistImages(context, it, entry)
}
} }
entry = it.nextEntry entry = it.nextEntry
} }
} }
@ -183,22 +190,33 @@ object BackupHelper {
} }
} }
private fun restoreDatabase(context: Context, zipIn: ZipInputStream, zipEntry: ZipEntry) { private suspend fun restorePlaylists(
val filePath = zipIn: ZipInputStream,
context.filesDir.parent!! + File.separator + DATABASES_PATH + File.separator + zipEntry.getFileName() zipEntry: ZipEntry
BufferedOutputStream(FileOutputStream(filePath)).use { bos -> ) {
zipIn.copyTo(bos) val playlistName = zipEntry.getFileName().substringBeforeLast(".")
} val songs = mutableListOf<Song>()
}
private fun restoreQueueDatabase(context: Context, zipIn: ZipInputStream, zipEntry: ZipEntry) { // Get songs from m3u playlist files
PreferenceManager.getDefaultSharedPreferences(context).edit(commit = true) { zipIn.bufferedReader().lineSequence().forEach { line ->
putInt("POSITION", 0) if (line.startsWith(File.separator)) {
if (File(line).exists()) {
songs.addAll(songRepository.songsByFilePath(line))
} }
val filePath = }
context.filesDir.parent!! + File.separator + DATABASES_PATH + File.separator + zipEntry.getFileName() }
BufferedOutputStream(FileOutputStream(filePath)).use { bos -> val playlistEntity = repository.checkPlaylistExists(playlistName).firstOrNull()
zipIn.copyTo(bos) if (playlistEntity != null) {
val songEntities = songs.map {
it.toSongEntity(playlistEntity.playListId)
}
repository.insertSongs(songEntities)
} else {
val playListId = repository.createPlaylist(PlaylistEntity(playlistName = playlistName))
val songEntities = songs.map {
it.toSongEntity(playListId)
}
repository.insertSongs(songEntities)
} }
} }
@ -241,16 +259,14 @@ object BackupHelper {
.toString() + "/RetroMusic/Backups/" .toString() + "/RetroMusic/Backups/"
const val BACKUP_EXTENSION = "rmbak" const val BACKUP_EXTENSION = "rmbak"
const val APPEND_EXTENSION = ".$BACKUP_EXTENSION" const val APPEND_EXTENSION = ".$BACKUP_EXTENSION"
private const val DATABASES_PATH = "databases" private const val PLAYLISTS_PATH = "Playlists"
private const val QUEUE_PATH = "queue"
private const val SETTINGS_PATH = "prefs" private const val SETTINGS_PATH = "prefs"
private const val IMAGES_PATH = "userImages" private const val IMAGES_PATH = "userImages"
private const val CUSTOM_ARTISTS_PATH = "artistImages" private const val CUSTOM_ARTISTS_PATH = "artistImages"
private const val THEME_PREFS_KEY_DEFAULT = "[[kabouzeid_app-theme-helper]]" private const val THEME_PREFS_KEY_DEFAULT = "[[kabouzeid_app-theme-helper]]"
private const val queueDatabase = "music_playback_state.db"
private fun ZipEntry.isDatabaseEntry(): Boolean { private fun ZipEntry.isPlaylistEntry(): Boolean {
return name.startsWith(DATABASES_PATH) return name.startsWith(PLAYLISTS_PATH)
} }
private fun ZipEntry.isPreferenceEntry(): Boolean { private fun ZipEntry.isPreferenceEntry(): Boolean {
@ -261,6 +277,10 @@ object BackupHelper {
return name.startsWith(IMAGES_PATH) return name.startsWith(IMAGES_PATH)
} }
private fun ZipEntry.isCustomArtistEntry(): Boolean {
return name.startsWith(CUSTOM_ARTISTS_PATH)
}
private fun ZipEntry.isCustomArtistImageEntry(): Boolean { private fun ZipEntry.isCustomArtistImageEntry(): Boolean {
return name.startsWith(CUSTOM_ARTISTS_PATH) && name.contains("custom_artist_images") return name.startsWith(CUSTOM_ARTISTS_PATH) && name.contains("custom_artist_images")
} }
@ -269,12 +289,8 @@ object BackupHelper {
return name.startsWith(CUSTOM_ARTISTS_PATH) && name.contains("prefs") return name.startsWith(CUSTOM_ARTISTS_PATH) && name.contains("prefs")
} }
private fun ZipEntry.isQueueEntry(): Boolean {
return name.startsWith(QUEUE_PATH)
}
private fun ZipEntry.getFileName(): String { private fun ZipEntry.getFileName(): String {
return name.substring(name.lastIndexOf(File.separator)) return name.substring(name.lastIndexOf(File.separator) + 1)
} }
} }
@ -297,6 +313,5 @@ enum class BackupContent {
SETTINGS, SETTINGS,
USER_IMAGES, USER_IMAGES,
CUSTOM_ARTIST_IMAGES, CUSTOM_ARTIST_IMAGES,
PLAYLISTS, PLAYLISTS
QUEUE
} }

View file

@ -38,14 +38,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:minHeight="48dp" android:minHeight="48dp"
android:text="@string/databases_description" /> android:text="@string/playlists" />
<com.google.android.material.checkbox.MaterialCheckBox
android:id="@+id/check_queue"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="48dp"
android:text="@string/now_playing_queue" />
<com.google.android.material.checkbox.MaterialCheckBox <com.google.android.material.checkbox.MaterialCheckBox
android:id="@+id/check_user_images" android:id="@+id/check_user_images"

View file

@ -146,7 +146,6 @@
<string name="currently_listening_to_x_by_x">يستمع حالياً إلى %1$s لـ %2$s</string> <string name="currently_listening_to_x_by_x">يستمع حالياً إلى %1$s لـ %2$s</string>
<string name="custom_artist_images">Custom Artist Images</string> <string name="custom_artist_images">Custom Artist Images</string>
<string name="dark_theme_name">أسود قليلاً</string> <string name="dark_theme_name">أسود قليلاً</string>
<string name="databases_description">Databases (Playlists, History, Most Played, etc.)</string>
<string name="delete_playlist_title">حذف قائمة التشغيل</string> <string name="delete_playlist_title">حذف قائمة التشغيل</string>
<string name="delete_playlist_x"><![CDATA[حذف قائمة التشغيل <b>%1$s</b>؟]]></string> <string name="delete_playlist_x"><![CDATA[حذف قائمة التشغيل <b>%1$s</b>؟]]></string>
<string name="delete_playlists_title">حذف قوائم التشغيل</string> <string name="delete_playlists_title">حذف قوائم التشغيل</string>

View file

@ -140,7 +140,6 @@
<string name="currently_listening_to_x_by_x">Aktuálně posloucháš %1$s od %2$s.</string> <string name="currently_listening_to_x_by_x">Aktuálně posloucháš %1$s od %2$s.</string>
<string name="custom_artist_images">Custom Artist Images</string> <string name="custom_artist_images">Custom Artist Images</string>
<string name="dark_theme_name">Tmavá</string> <string name="dark_theme_name">Tmavá</string>
<string name="databases_description">Databases (Playlists, History, Most Played, etc.)</string>
<string name="delete_playlist_title">Smazat seznam skladeb</string> <string name="delete_playlist_title">Smazat seznam skladeb</string>
<string name="delete_playlist_x"><![CDATA[Smazat seznam skladeb <b>%1$s</b>?]]></string> <string name="delete_playlist_x"><![CDATA[Smazat seznam skladeb <b>%1$s</b>?]]></string>
<string name="delete_playlists_title">Smazat seznamy skladeb</string> <string name="delete_playlists_title">Smazat seznamy skladeb</string>

View file

@ -136,7 +136,6 @@
<string name="currently_listening_to_x_by_x">Spielt zur Zeit %1$s von %2$s.</string> <string name="currently_listening_to_x_by_x">Spielt zur Zeit %1$s von %2$s.</string>
<string name="custom_artist_images">Custom Artist Images</string> <string name="custom_artist_images">Custom Artist Images</string>
<string name="dark_theme_name">Dunkel</string> <string name="dark_theme_name">Dunkel</string>
<string name="databases_description">Databases (Playlists, History, Most Played, etc.)</string>
<string name="delete_playlist_title">Playlist löschen</string> <string name="delete_playlist_title">Playlist löschen</string>
<string name="delete_playlist_x"><![CDATA[Playlist <b>%1$s</b> löschen?]]></string> <string name="delete_playlist_x"><![CDATA[Playlist <b>%1$s</b> löschen?]]></string>
<string name="delete_playlists_title">Playlisten löschen</string> <string name="delete_playlists_title">Playlisten löschen</string>

View file

@ -136,7 +136,6 @@
<string name="currently_listening_to_x_by_x">Παίζει το %1$s από τους %2$s.</string> <string name="currently_listening_to_x_by_x">Παίζει το %1$s από τους %2$s.</string>
<string name="custom_artist_images">Custom Artist Images</string> <string name="custom_artist_images">Custom Artist Images</string>
<string name="dark_theme_name">Κάπως Σκούρο</string> <string name="dark_theme_name">Κάπως Σκούρο</string>
<string name="databases_description">Databases (Playlists, History, Most Played, etc.)</string>
<string name="delete_playlist_title">Διαγραφή playlist</string> <string name="delete_playlist_title">Διαγραφή playlist</string>
<string name="delete_playlist_x"><![CDATA[Διαγραφή της λίστα αναπαραγωγής <b>%1$s</b>?]]></string> <string name="delete_playlist_x"><![CDATA[Διαγραφή της λίστα αναπαραγωγής <b>%1$s</b>?]]></string>
<string name="delete_playlists_title">Διαγραφή αυτών των λιστών αναπαραγωγής</string> <string name="delete_playlists_title">Διαγραφή αυτών των λιστών αναπαραγωγής</string>

View file

@ -136,7 +136,6 @@
<string name="currently_listening_to_x_by_x">Actualmente estás escuchando %1$s de %2$s.</string> <string name="currently_listening_to_x_by_x">Actualmente estás escuchando %1$s de %2$s.</string>
<string name="custom_artist_images">Custom Artist Images</string> <string name="custom_artist_images">Custom Artist Images</string>
<string name="dark_theme_name">Un poco Oscuro</string> <string name="dark_theme_name">Un poco Oscuro</string>
<string name="databases_description">Databases (Playlists, History, Most Played, etc.)</string>
<string name="delete_playlist_title">Eliminar lista de reproducción</string> <string name="delete_playlist_title">Eliminar lista de reproducción</string>
<string name="delete_playlist_x"><![CDATA[¿Eliminar la lista de reproducción <b>%1$s</b>?]]></string> <string name="delete_playlist_x"><![CDATA[¿Eliminar la lista de reproducción <b>%1$s</b>?]]></string>
<string name="delete_playlists_title">Eliminar listas de reproducción</string> <string name="delete_playlists_title">Eliminar listas de reproducción</string>

View file

@ -136,7 +136,6 @@
<string name="currently_listening_to_x_by_x">در حال حاضر شما به s$1% از s$2% گوش می‌دهید.</string> <string name="currently_listening_to_x_by_x">در حال حاضر شما به s$1% از s$2% گوش می‌دهید.</string>
<string name="custom_artist_images">Custom Artist Images</string> <string name="custom_artist_images">Custom Artist Images</string>
<string name="dark_theme_name">تقریبا مشکی</string> <string name="dark_theme_name">تقریبا مشکی</string>
<string name="databases_description">Databases (Playlists, History, Most Played, etc.)</string>
<string name="delete_playlist_title">حذف کردن پلی لیست</string> <string name="delete_playlist_title">حذف کردن پلی لیست</string>
<string name="delete_playlist_x"><![CDATA[حذف پلی لیست <b>%1$s</b>?<b>?]]></string> <string name="delete_playlist_x"><![CDATA[حذف پلی لیست <b>%1$s</b>?<b>?]]></string>
<string name="delete_playlists_title">حذف کردن پلی لیست ها</string> <string name="delete_playlists_title">حذف کردن پلی لیست ها</string>

View file

@ -136,7 +136,6 @@
<string name="currently_listening_to_x_by_x">Kasalukuyang nakikinig sa %1$s ni %2$s.</string> <string name="currently_listening_to_x_by_x">Kasalukuyang nakikinig sa %1$s ni %2$s.</string>
<string name="custom_artist_images">Custom Artist Images</string> <string name="custom_artist_images">Custom Artist Images</string>
<string name="dark_theme_name">Medyo Madilim</string> <string name="dark_theme_name">Medyo Madilim</string>
<string name="databases_description">Databases (Playlists, History, Most Played, etc.)</string>
<string name="delete_playlist_title">Tanggalin ang playlist</string> <string name="delete_playlist_title">Tanggalin ang playlist</string>
<string name="delete_playlist_x"><![CDATA[Tanggalin ang playlist na <b>%1$s</b>?]]></string> <string name="delete_playlist_x"><![CDATA[Tanggalin ang playlist na <b>%1$s</b>?]]></string>
<string name="delete_playlists_title">Tanggalin ang mga playlist</string> <string name="delete_playlists_title">Tanggalin ang mga playlist</string>

View file

@ -136,7 +136,6 @@
<string name="currently_listening_to_x_by_x">Vous écoutez actuellement %1$s par %2$s.</string> <string name="currently_listening_to_x_by_x">Vous écoutez actuellement %1$s par %2$s.</string>
<string name="custom_artist_images">Custom Artist Images</string> <string name="custom_artist_images">Custom Artist Images</string>
<string name="dark_theme_name">Plutôt Sombre</string> <string name="dark_theme_name">Plutôt Sombre</string>
<string name="databases_description">Databases (Playlists, History, Most Played, etc.)</string>
<string name="delete_playlist_title">Supprimer la liste de lecture</string> <string name="delete_playlist_title">Supprimer la liste de lecture</string>
<string name="delete_playlist_x"><![CDATA[Supprimer la liste <b>%1$s</b> ?]]></string> <string name="delete_playlist_x"><![CDATA[Supprimer la liste <b>%1$s</b> ?]]></string>
<string name="delete_playlists_title">Supprimer les listes de lecture</string> <string name="delete_playlists_title">Supprimer les listes de lecture</string>

View file

@ -136,7 +136,6 @@
<string name="currently_listening_to_x_by_x">Currently listening to %1$s by %2$s.</string> <string name="currently_listening_to_x_by_x">Currently listening to %1$s by %2$s.</string>
<string name="custom_artist_images">Custom Artist Images</string> <string name="custom_artist_images">Custom Artist Images</string>
<string name="dark_theme_name">Kinda Dark</string> <string name="dark_theme_name">Kinda Dark</string>
<string name="databases_description">Databases (Playlists, History, Most Played, etc.)</string>
<string name="delete_playlist_title">Delete playlist</string> <string name="delete_playlist_title">Delete playlist</string>
<string name="delete_playlist_x"><![CDATA[Delete the playlist <b>%1$s</b>?]]></string> <string name="delete_playlist_x"><![CDATA[Delete the playlist <b>%1$s</b>?]]></string>
<string name="delete_playlists_title">Delete playlists</string> <string name="delete_playlists_title">Delete playlists</string>

View file

@ -138,7 +138,6 @@
<string name="currently_listening_to_x_by_x">Currently listening to %1$s by %2$s.</string> <string name="currently_listening_to_x_by_x">Currently listening to %1$s by %2$s.</string>
<string name="custom_artist_images">Custom Artist Images</string> <string name="custom_artist_images">Custom Artist Images</string>
<string name="dark_theme_name">Kinda Dark</string> <string name="dark_theme_name">Kinda Dark</string>
<string name="databases_description">Databases (Playlists, History, Most Played, etc.)</string>
<string name="delete_playlist_title">Delete playlist</string> <string name="delete_playlist_title">Delete playlist</string>
<string name="delete_playlist_x"><![CDATA[Delete the playlist <b>%1$s</b>?]]></string> <string name="delete_playlist_x"><![CDATA[Delete the playlist <b>%1$s</b>?]]></string>
<string name="delete_playlists_title">Delete playlists</string> <string name="delete_playlists_title">Delete playlists</string>

View file

@ -136,7 +136,6 @@
<string name="currently_listening_to_x_by_x">Jelenleg %1$s hallgatása %2$s által.</string> <string name="currently_listening_to_x_by_x">Jelenleg %1$s hallgatása %2$s által.</string>
<string name="custom_artist_images">Custom Artist Images</string> <string name="custom_artist_images">Custom Artist Images</string>
<string name="dark_theme_name">Kissé sötét</string> <string name="dark_theme_name">Kissé sötét</string>
<string name="databases_description">Databases (Playlists, History, Most Played, etc.)</string>
<string name="delete_playlist_title">Lejátszási lista törlése</string> <string name="delete_playlist_title">Lejátszási lista törlése</string>
<string name="delete_playlist_x"><![CDATA[Törli a <b>%1$s</b> lejátszási listát?]]></string> <string name="delete_playlist_x"><![CDATA[Törli a <b>%1$s</b> lejátszási listát?]]></string>
<string name="delete_playlists_title">Lejátszási listák törlése</string> <string name="delete_playlists_title">Lejátszási listák törlése</string>

View file

@ -137,7 +137,6 @@ https://play.google.com/store/apps/details?id=%s</string>
<string name="currently_listening_to_x_by_x">Ascoltando attualmente %1$s di %2$s.</string> <string name="currently_listening_to_x_by_x">Ascoltando attualmente %1$s di %2$s.</string>
<string name="custom_artist_images">Immagini dell\'Artista Personalizzate</string> <string name="custom_artist_images">Immagini dell\'Artista Personalizzate</string>
<string name="dark_theme_name">Scuro</string> <string name="dark_theme_name">Scuro</string>
<string name="databases_description">Database (Playlist, Cronologia, Più riprodotti, ecc.)</string>
<string name="delete_playlist_title">Elimina playlist</string> <string name="delete_playlist_title">Elimina playlist</string>
<string name="delete_playlist_x"><![CDATA[Elimina la playlist <b>%1$s</b>?]]></string> <string name="delete_playlist_x"><![CDATA[Elimina la playlist <b>%1$s</b>?]]></string>
<string name="delete_playlists_title">Elimina playlist</string> <string name="delete_playlists_title">Elimina playlist</string>

View file

@ -135,7 +135,6 @@
<string name="currently_listening_to_x_by_x">現在、 %1$s によって %2$s で聴いています。</string> <string name="currently_listening_to_x_by_x">現在、 %1$s によって %2$s で聴いています。</string>
<string name="custom_artist_images">Custom Artist Images</string> <string name="custom_artist_images">Custom Artist Images</string>
<string name="dark_theme_name">ダーク</string> <string name="dark_theme_name">ダーク</string>
<string name="databases_description">Databases (Playlists, History, Most Played, etc.)</string>
<string name="delete_playlist_title">プレイリストを削除</string> <string name="delete_playlist_title">プレイリストを削除</string>
<string name="delete_playlist_x"><![CDATA[プレイリスト <b>%1$s</b> を削除しますか?]]></string> <string name="delete_playlist_x"><![CDATA[プレイリスト <b>%1$s</b> を削除しますか?]]></string>
<string name="delete_playlists_title">プレイリストを削除</string> <string name="delete_playlists_title">プレイリストを削除</string>

View file

@ -134,7 +134,6 @@
<string name="currently_listening_to_x_by_x">현재 %2$s의 %1$s를 듣는 중입니다.</string> <string name="currently_listening_to_x_by_x">현재 %2$s의 %1$s를 듣는 중입니다.</string>
<string name="custom_artist_images">Custom Artist Images</string> <string name="custom_artist_images">Custom Artist Images</string>
<string name="dark_theme_name">카인다 다크</string> <string name="dark_theme_name">카인다 다크</string>
<string name="databases_description">Databases (Playlists, History, Most Played, etc.)</string>
<string name="delete_playlist_title">재생목록 삭제</string> <string name="delete_playlist_title">재생목록 삭제</string>
<string name="delete_playlist_x"><![CDATA[<b>%1$s</b> 재생목록을 삭제하시겠습니까?]]></string> <string name="delete_playlist_x"><![CDATA[<b>%1$s</b> 재생목록을 삭제하시겠습니까?]]></string>
<string name="delete_playlists_title">재생목록 삭제</string> <string name="delete_playlists_title">재생목록 삭제</string>

View file

@ -136,7 +136,6 @@
<string name="currently_listening_to_x_by_x">Currently listening to %1$s by %2$s.</string> <string name="currently_listening_to_x_by_x">Currently listening to %1$s by %2$s.</string>
<string name="custom_artist_images">Custom Artist Images</string> <string name="custom_artist_images">Custom Artist Images</string>
<string name="dark_theme_name">Kinda Dark</string> <string name="dark_theme_name">Kinda Dark</string>
<string name="databases_description">Databases (Playlists, History, Most Played, etc.)</string>
<string name="delete_playlist_title">Delete playlist</string> <string name="delete_playlist_title">Delete playlist</string>
<string name="delete_playlist_x"><![CDATA[Delete the playlist <b>%1$s</b>?]]></string> <string name="delete_playlist_x"><![CDATA[Delete the playlist <b>%1$s</b>?]]></string>
<string name="delete_playlists_title">Delete playlists</string> <string name="delete_playlists_title">Delete playlists</string>

View file

@ -134,7 +134,6 @@
<string name="currently_listening_to_x_by_x">%2$s သီဆိုထားသော %1$s ကိုယခုနားထောင်နေသည်</string> <string name="currently_listening_to_x_by_x">%2$s သီဆိုထားသော %1$s ကိုယခုနားထောင်နေသည်</string>
<string name="custom_artist_images">Custom Artist Images</string> <string name="custom_artist_images">Custom Artist Images</string>
<string name="dark_theme_name">အနက်ရောင်ဆန်ဆန်</string> <string name="dark_theme_name">အနက်ရောင်ဆန်ဆန်</string>
<string name="databases_description">Databases (Playlists, History, Most Played, etc.)</string>
<string name="delete_playlist_title">Playlist ဖျက်ခြင်း</string> <string name="delete_playlist_title">Playlist ဖျက်ခြင်း</string>
<string name="delete_playlist_x"><![CDATA[<b>%1$s</b> Playlist ကိုဖျက်မှာလား]]></string> <string name="delete_playlist_x"><![CDATA[<b>%1$s</b> Playlist ကိုဖျက်မှာလား]]></string>
<string name="delete_playlists_title">Playlist များဖျက်ခြင်း</string> <string name="delete_playlists_title">Playlist များဖျက်ခြင်း</string>

View file

@ -136,7 +136,6 @@
<string name="currently_listening_to_x_by_x">Nu luisterend naar %1$s van %2$s.</string> <string name="currently_listening_to_x_by_x">Nu luisterend naar %1$s van %2$s.</string>
<string name="custom_artist_images">Custom Artist Images</string> <string name="custom_artist_images">Custom Artist Images</string>
<string name="dark_theme_name">Soort van donker</string> <string name="dark_theme_name">Soort van donker</string>
<string name="databases_description">Databases (Playlists, History, Most Played, etc.)</string>
<string name="delete_playlist_title">Afspeellijst verwijderen</string> <string name="delete_playlist_title">Afspeellijst verwijderen</string>
<string name="delete_playlist_x"><![CDATA[Afspellijst <b>%1$s</b> verwijderen?]]></string> <string name="delete_playlist_x"><![CDATA[Afspellijst <b>%1$s</b> verwijderen?]]></string>
<string name="delete_playlists_title">Afspeellijsten verwijderen</string> <string name="delete_playlists_title">Afspeellijsten verwijderen</string>

View file

@ -136,7 +136,6 @@
<string name="currently_listening_to_x_by_x">Currently listening to %1$s by %2$s.</string> <string name="currently_listening_to_x_by_x">Currently listening to %1$s by %2$s.</string>
<string name="custom_artist_images">Custom Artist Images</string> <string name="custom_artist_images">Custom Artist Images</string>
<string name="dark_theme_name">Kinda Dark</string> <string name="dark_theme_name">Kinda Dark</string>
<string name="databases_description">Databases (Playlists, History, Most Played, etc.)</string>
<string name="delete_playlist_title">Delete playlist</string> <string name="delete_playlist_title">Delete playlist</string>
<string name="delete_playlist_x"><![CDATA[Delete the playlist <b>%1$s</b>?]]></string> <string name="delete_playlist_x"><![CDATA[Delete the playlist <b>%1$s</b>?]]></string>
<string name="delete_playlists_title">Delete playlists</string> <string name="delete_playlists_title">Delete playlists</string>

View file

@ -136,7 +136,6 @@
<string name="currently_listening_to_x_by_x">Currently listening to %1$s by %2$s.</string> <string name="currently_listening_to_x_by_x">Currently listening to %1$s by %2$s.</string>
<string name="custom_artist_images">Custom Artist Images</string> <string name="custom_artist_images">Custom Artist Images</string>
<string name="dark_theme_name">Kinda Dark</string> <string name="dark_theme_name">Kinda Dark</string>
<string name="databases_description">Databases (Playlists, History, Most Played, etc.)</string>
<string name="delete_playlist_title">Delete playlist</string> <string name="delete_playlist_title">Delete playlist</string>
<string name="delete_playlist_x"><![CDATA[Delete the playlist <b>%1$s</b>?]]></string> <string name="delete_playlist_x"><![CDATA[Delete the playlist <b>%1$s</b>?]]></string>
<string name="delete_playlists_title">Delete playlists</string> <string name="delete_playlists_title">Delete playlists</string>

View file

@ -140,7 +140,6 @@
<string name="currently_listening_to_x_by_x">Aktualnie odtwarzane %1$s wykonawcy %2$s.</string> <string name="currently_listening_to_x_by_x">Aktualnie odtwarzane %1$s wykonawcy %2$s.</string>
<string name="custom_artist_images">Custom Artist Images</string> <string name="custom_artist_images">Custom Artist Images</string>
<string name="dark_theme_name">Dość ciemny</string> <string name="dark_theme_name">Dość ciemny</string>
<string name="databases_description">Databases (Playlists, History, Most Played, etc.)</string>
<string name="delete_playlist_title">Usuń playlistę</string> <string name="delete_playlist_title">Usuń playlistę</string>
<string name="delete_playlist_x"><![CDATA[Usunąć playlistę <b>%1$s</b>?]]></string> <string name="delete_playlist_x"><![CDATA[Usunąć playlistę <b>%1$s</b>?]]></string>
<string name="delete_playlists_title">Usuń playlisty</string> <string name="delete_playlists_title">Usuń playlisty</string>

View file

@ -136,7 +136,6 @@
<string name="currently_listening_to_x_by_x">Atualmente ouvindo %1$s por %2$s.</string> <string name="currently_listening_to_x_by_x">Atualmente ouvindo %1$s por %2$s.</string>
<string name="custom_artist_images">Custom Artist Images</string> <string name="custom_artist_images">Custom Artist Images</string>
<string name="dark_theme_name">Meio escuro</string> <string name="dark_theme_name">Meio escuro</string>
<string name="databases_description">Databases (Playlists, History, Most Played, etc.)</string>
<string name="delete_playlist_title">Excluir playlist</string> <string name="delete_playlist_title">Excluir playlist</string>
<string name="delete_playlist_x"><![CDATA[Excluir a playlist <b>%1$s</b>?]]></string> <string name="delete_playlist_x"><![CDATA[Excluir a playlist <b>%1$s</b>?]]></string>
<string name="delete_playlists_title">Excluir playlists</string> <string name="delete_playlists_title">Excluir playlists</string>

View file

@ -136,7 +136,6 @@
<string name="currently_listening_to_x_by_x">A ouvir %1$s de %2$s.</string> <string name="currently_listening_to_x_by_x">A ouvir %1$s de %2$s.</string>
<string name="custom_artist_images">Custom Artist Images</string> <string name="custom_artist_images">Custom Artist Images</string>
<string name="dark_theme_name">Meio escuro</string> <string name="dark_theme_name">Meio escuro</string>
<string name="databases_description">Databases (Playlists, History, Most Played, etc.)</string>
<string name="delete_playlist_title">Eliminar lista</string> <string name="delete_playlist_title">Eliminar lista</string>
<string name="delete_playlist_x"><![CDATA[Eliminar a lista <b>%1$s</b>?]]></string> <string name="delete_playlist_x"><![CDATA[Eliminar a lista <b>%1$s</b>?]]></string>
<string name="delete_playlists_title">Eliminar listas</string> <string name="delete_playlists_title">Eliminar listas</string>

View file

@ -138,7 +138,6 @@
<string name="currently_listening_to_x_by_x">Acum ascultați %1$s de %2$s.</string> <string name="currently_listening_to_x_by_x">Acum ascultați %1$s de %2$s.</string>
<string name="custom_artist_images">Custom Artist Images</string> <string name="custom_artist_images">Custom Artist Images</string>
<string name="dark_theme_name">Suriu</string> <string name="dark_theme_name">Suriu</string>
<string name="databases_description">Databases (Playlists, History, Most Played, etc.)</string>
<string name="delete_playlist_title">Șterge playlist</string> <string name="delete_playlist_title">Șterge playlist</string>
<string name="delete_playlist_x"><![CDATA[Doriți să ștergeți playlist-ul <b>%1$s</b>?]]></string> <string name="delete_playlist_x"><![CDATA[Doriți să ștergeți playlist-ul <b>%1$s</b>?]]></string>
<string name="delete_playlists_title">Șterge playlist-uri</string> <string name="delete_playlists_title">Șterge playlist-uri</string>

View file

@ -140,7 +140,6 @@
<string name="currently_listening_to_x_by_x">Сейчас играет %1$s от %2$s.</string> <string name="currently_listening_to_x_by_x">Сейчас играет %1$s от %2$s.</string>
<string name="custom_artist_images">Custom Artist Images</string> <string name="custom_artist_images">Custom Artist Images</string>
<string name="dark_theme_name">Тёмная</string> <string name="dark_theme_name">Тёмная</string>
<string name="databases_description">Databases (Playlists, History, Most Played, etc.)</string>
<string name="delete_playlist_title">Удалить плейлист</string> <string name="delete_playlist_title">Удалить плейлист</string>
<string name="delete_playlist_x"><![CDATA[Удалить плейлист <b>%1$s</b>?]]></string> <string name="delete_playlist_x"><![CDATA[Удалить плейлист <b>%1$s</b>?]]></string>
<string name="delete_playlists_title">Удалить плейлисты</string> <string name="delete_playlists_title">Удалить плейлисты</string>

View file

@ -138,7 +138,6 @@
<string name="currently_listening_to_x_by_x">Trenutno se reprodukuje %1$s izvodjaca %2$s</string> <string name="currently_listening_to_x_by_x">Trenutno se reprodukuje %1$s izvodjaca %2$s</string>
<string name="custom_artist_images">Custom Artist Images</string> <string name="custom_artist_images">Custom Artist Images</string>
<string name="dark_theme_name">Kao tamno</string> <string name="dark_theme_name">Kao tamno</string>
<string name="databases_description">Databases (Playlists, History, Most Played, etc.)</string>
<string name="delete_playlist_title">Izbrisi plejlistu</string> <string name="delete_playlist_title">Izbrisi plejlistu</string>
<string name="delete_playlist_x"><![CDATA[Izbrisi <b>%1$s</b> plejlistu?]]></string> <string name="delete_playlist_x"><![CDATA[Izbrisi <b>%1$s</b> plejlistu?]]></string>
<string name="delete_playlists_title">Izbrisi plejlistu</string> <string name="delete_playlists_title">Izbrisi plejlistu</string>

View file

@ -136,7 +136,6 @@
<string name="currently_listening_to_x_by_x">Lyssnar just nu på %1$s av %2$s.</string> <string name="currently_listening_to_x_by_x">Lyssnar just nu på %1$s av %2$s.</string>
<string name="custom_artist_images">Custom Artist Images</string> <string name="custom_artist_images">Custom Artist Images</string>
<string name="dark_theme_name">Ganska mörkt</string> <string name="dark_theme_name">Ganska mörkt</string>
<string name="databases_description">Databases (Playlists, History, Most Played, etc.)</string>
<string name="delete_playlist_title">Radera spellista</string> <string name="delete_playlist_title">Radera spellista</string>
<string name="delete_playlist_x"><![CDATA[Radera spellistan <b>%1$s</b>?]]></string> <string name="delete_playlist_x"><![CDATA[Radera spellistan <b>%1$s</b>?]]></string>
<string name="delete_playlists_title">Radera spellistor</string> <string name="delete_playlists_title">Radera spellistor</string>

View file

@ -136,7 +136,6 @@
<string name="currently_listening_to_x_by_x">Currently listening to %1$s by %2$s.</string> <string name="currently_listening_to_x_by_x">Currently listening to %1$s by %2$s.</string>
<string name="custom_artist_images">Custom Artist Images</string> <string name="custom_artist_images">Custom Artist Images</string>
<string name="dark_theme_name">Kinda Dark</string> <string name="dark_theme_name">Kinda Dark</string>
<string name="databases_description">Databases (Playlists, History, Most Played, etc.)</string>
<string name="delete_playlist_title">Delete playlist</string> <string name="delete_playlist_title">Delete playlist</string>
<string name="delete_playlist_x"><![CDATA[Delete the playlist <b>%1$s</b>?]]></string> <string name="delete_playlist_x"><![CDATA[Delete the playlist <b>%1$s</b>?]]></string>
<string name="delete_playlists_title">Delete playlists</string> <string name="delete_playlists_title">Delete playlists</string>

View file

@ -134,7 +134,6 @@
<string name="currently_listening_to_x_by_x">กำลังฟัง %1$s ของ %2$s</string> <string name="currently_listening_to_x_by_x">กำลังฟัง %1$s ของ %2$s</string>
<string name="custom_artist_images">Custom Artist Images</string> <string name="custom_artist_images">Custom Artist Images</string>
<string name="dark_theme_name">Kinda Dark</string> <string name="dark_theme_name">Kinda Dark</string>
<string name="databases_description">Databases (Playlists, History, Most Played, etc.)</string>
<string name="delete_playlist_title">ลบเพลย์ลิสต์</string> <string name="delete_playlist_title">ลบเพลย์ลิสต์</string>
<string name="delete_playlist_x"><![CDATA[ลบเพลย์ลิสต์ <b>%1$s</b>?]]></string> <string name="delete_playlist_x"><![CDATA[ลบเพลย์ลิสต์ <b>%1$s</b>?]]></string>
<string name="delete_playlists_title">ลบเพลย์ลิสต์</string> <string name="delete_playlists_title">ลบเพลย์ลิสต์</string>

View file

@ -136,7 +136,6 @@
<string name="currently_listening_to_x_by_x">Şu anda %2$s şarkıcısından %1$s dinleniyor.</string> <string name="currently_listening_to_x_by_x">Şu anda %2$s şarkıcısından %1$s dinleniyor.</string>
<string name="custom_artist_images">Custom Artist Images</string> <string name="custom_artist_images">Custom Artist Images</string>
<string name="dark_theme_name">Koyu</string> <string name="dark_theme_name">Koyu</string>
<string name="databases_description">Databases (Playlists, History, Most Played, etc.)</string>
<string name="delete_playlist_title">Çalma listesini sil</string> <string name="delete_playlist_title">Çalma listesini sil</string>
<string name="delete_playlist_x"><![CDATA[Oynatma listesi <b>%1$s</b> silinsin mi?]]></string> <string name="delete_playlist_x"><![CDATA[Oynatma listesi <b>%1$s</b> silinsin mi?]]></string>
<string name="delete_playlists_title">Çalma listelerini sil</string> <string name="delete_playlists_title">Çalma listelerini sil</string>

View file

@ -140,7 +140,6 @@
<string name="currently_listening_to_x_by_x">Зараз грає %1$s від %2$s.</string> <string name="currently_listening_to_x_by_x">Зараз грає %1$s від %2$s.</string>
<string name="custom_artist_images">Custom Artist Images</string> <string name="custom_artist_images">Custom Artist Images</string>
<string name="dark_theme_name">Майже темна</string> <string name="dark_theme_name">Майже темна</string>
<string name="databases_description">Databases (Playlists, History, Most Played, etc.)</string>
<string name="delete_playlist_title">Видалити список відтворення</string> <string name="delete_playlist_title">Видалити список відтворення</string>
<string name="delete_playlist_x"><![CDATA[Видалити список відтворення <b>%1$s</b>?]]></string> <string name="delete_playlist_x"><![CDATA[Видалити список відтворення <b>%1$s</b>?]]></string>
<string name="delete_playlists_title">Видалити списки відтворення</string> <string name="delete_playlists_title">Видалити списки відтворення</string>

View file

@ -135,7 +135,6 @@ tiếp tục xảy ra hãy \"Xóa dữ liệu ứng dụng\"</string>
<string name="currently_listening_to_x_by_x">Đang nghe %1$s bởi %2$s.</string> <string name="currently_listening_to_x_by_x">Đang nghe %1$s bởi %2$s.</string>
<string name="custom_artist_images">Custom Artist Images</string> <string name="custom_artist_images">Custom Artist Images</string>
<string name="dark_theme_name">Xám đen</string> <string name="dark_theme_name">Xám đen</string>
<string name="databases_description">Databases (Playlists, History, Most Played, etc.)</string>
<string name="delete_playlist_title">Xoá danh sách phát</string> <string name="delete_playlist_title">Xoá danh sách phát</string>
<string name="delete_playlist_x"><![CDATA[Xoá danh sách phát <b>%1$s</b>?]]></string> <string name="delete_playlist_x"><![CDATA[Xoá danh sách phát <b>%1$s</b>?]]></string>
<string name="delete_playlists_title">Xoá danh sách phát</string> <string name="delete_playlists_title">Xoá danh sách phát</string>

View file

@ -134,7 +134,6 @@
<string name="currently_listening_to_x_by_x">正在收听 %2$s 的 %1$s。</string> <string name="currently_listening_to_x_by_x">正在收听 %2$s 的 %1$s。</string>
<string name="custom_artist_images">自定义艺术家图像</string> <string name="custom_artist_images">自定义艺术家图像</string>
<string name="dark_theme_name">深色</string> <string name="dark_theme_name">深色</string>
<string name="databases_description">数据库(播放列表、播放历史、最多播放等)</string>
<string name="delete_playlist_title">删除播放列表</string> <string name="delete_playlist_title">删除播放列表</string>
<string name="delete_playlist_x"><![CDATA[确定删除播放列表 <b>%1$s</b> 吗?]]></string> <string name="delete_playlist_x"><![CDATA[确定删除播放列表 <b>%1$s</b> 吗?]]></string>
<string name="delete_playlists_title">删除播放列表</string> <string name="delete_playlists_title">删除播放列表</string>

View file

@ -134,7 +134,6 @@
<string name="currently_listening_to_x_by_x">我正在聽 %2$s 的 %1$s</string> <string name="currently_listening_to_x_by_x">我正在聽 %2$s 的 %1$s</string>
<string name="custom_artist_images">Custom Artist Images</string> <string name="custom_artist_images">Custom Artist Images</string>
<string name="dark_theme_name">暗沉</string> <string name="dark_theme_name">暗沉</string>
<string name="databases_description">Databases (Playlists, History, Most Played, etc.)</string>
<string name="delete_playlist_title">刪除播放清單</string> <string name="delete_playlist_title">刪除播放清單</string>
<string name="delete_playlist_x"><![CDATA[確定要刪除播放清單 <b>%1$s</b> 嗎?]]></string> <string name="delete_playlist_x"><![CDATA[確定要刪除播放清單 <b>%1$s</b> 嗎?]]></string>
<string name="delete_playlists_title">刪除多個播放清單</string> <string name="delete_playlists_title">刪除多個播放清單</string>

View file

@ -138,7 +138,6 @@
<string name="currently_listening_to_x_by_x">Currently listening to %1$s by %2$s.</string> <string name="currently_listening_to_x_by_x">Currently listening to %1$s by %2$s.</string>
<string name="custom_artist_images">Custom Artist Images</string> <string name="custom_artist_images">Custom Artist Images</string>
<string name="dark_theme_name">Kinda Dark</string> <string name="dark_theme_name">Kinda Dark</string>
<string name="databases_description">Databases (Playlists, History, Most Played, etc.)</string>
<string name="delete_playlist_title">Delete playlist</string> <string name="delete_playlist_title">Delete playlist</string>
<string name="delete_playlist_x"> <string name="delete_playlist_x">
<![CDATA[Delete the playlist <b>%1$s</b>?]]> <![CDATA[Delete the playlist <b>%1$s</b>?]]>