playback: move drag helper to list

Move most of QueueDragCallback to the list module.

This is planned to be re-used with the playlist view, so it should be
shared.
This commit is contained in:
Alexander Capehart 2023-05-18 20:13:33 -06:00
parent a153a41f8d
commit 33381f463a
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47
29 changed files with 222 additions and 169 deletions

View file

@ -158,6 +158,8 @@ constructor(
val playlistInstructions: Event<UpdateInstructions> val playlistInstructions: Event<UpdateInstructions>
get() = _playlistInstructions get() = _playlistInstructions
private var isEditingPlaylist = false
/** The current [Sort] used for [Song]s in [playlistList]. */ /** The current [Sort] used for [Song]s in [playlistList]. */
var playlistSongSort: Sort var playlistSongSort: Sort
get() = musicSettings.playlistSongSort get() = musicSettings.playlistSongSort
@ -412,7 +414,7 @@ constructor(
val list = mutableListOf<Item>() val list = mutableListOf<Item>()
if (playlist.songs.isNotEmpty()) { if (playlist.songs.isNotEmpty()) {
val header = SortHeader(R.string.lbl_songs) val header = BasicHeader(R.string.lbl_songs)
list.add(Divider(header)) list.add(Divider(header))
list.add(header) list.add(header)
if (replace) { if (replace) {

View file

@ -0,0 +1,150 @@
/*
* Copyright (c) 2021 Auxio Project
* ExtendedDragCallback.kt is part of Auxio.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.list.recycler
import android.graphics.Canvas
import android.graphics.drawable.Drawable
import android.view.View
import android.view.animation.AccelerateDecelerateInterpolator
import androidx.core.view.isInvisible
import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.RecyclerView
import org.oxycblt.auxio.R
import org.oxycblt.auxio.util.getDimen
import org.oxycblt.auxio.util.getInteger
import org.oxycblt.auxio.util.logD
/**
* A highly customized [ItemTouchHelper.Callback] that enables some extra eye candy in editable UIs,
* such as an animation when lifting items. Note that this requires a [ViewHolder] implementation in
* order to function.
*
* @author Alexander Capehart (OxygenCobalt)
*/
abstract class MaterialDragCallback : ItemTouchHelper.Callback() {
private var shouldLift = true
final override fun getMovementFlags(
recyclerView: RecyclerView,
viewHolder: RecyclerView.ViewHolder
) =
if (viewHolder is ViewHolder) {
makeFlag(
ItemTouchHelper.ACTION_STATE_DRAG, ItemTouchHelper.UP or ItemTouchHelper.DOWN) or
makeFlag(ItemTouchHelper.ACTION_STATE_SWIPE, ItemTouchHelper.START)
} else {
0
}
final override fun onChildDraw(
c: Canvas,
recyclerView: RecyclerView,
viewHolder: RecyclerView.ViewHolder,
dX: Float,
dY: Float,
actionState: Int,
isCurrentlyActive: Boolean
) {
val holder = viewHolder as ViewHolder
// Hook drag events to "lifting" the item (i.e raising it's elevation). Make sure
// this is only done once when the item is initially picked up.
// TODO: I think this is possible to improve with a raw ValueAnimator.
if (shouldLift && isCurrentlyActive && actionState == ItemTouchHelper.ACTION_STATE_DRAG) {
logD("Lifting item")
val bg = holder.background
val elevation = recyclerView.context.getDimen(R.dimen.elevation_normal)
holder.root
.animate()
.translationZ(elevation)
.setDuration(
recyclerView.context.getInteger(R.integer.anim_fade_exit_duration).toLong())
.setUpdateListener {
bg.alpha = ((holder.root.translationZ / elevation) * 255).toInt()
}
.setInterpolator(AccelerateDecelerateInterpolator())
.start()
shouldLift = false
}
// We show a background with a delete icon behind the item each time one is swiped
// away. To avoid working with canvas, this is simply placed behind the body.
// That comes with a couple of problems, however. For one, the background view will always
// lag behind the body view, resulting in a noticeable pixel offset when dragging. To fix
// this, we make this a separate view and make this view invisible whenever the item is
// not being swiped. This issue is also the reason why the background is not merged with
// the FrameLayout within the item.
if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) {
holder.delete.isInvisible = dX == 0f
}
// Update other translations. We do not call the default implementation, so we must do
// this ourselves.
holder.body.translationX = dX
holder.root.translationY = dY
}
final override fun clearView(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder) {
// When an elevated item is cleared, we reset the elevation using another animation.
val holder = viewHolder as ViewHolder
// This function can be called multiple times, so only start the animation when the view's
// translationZ is already non-zero.
if (holder.root.translationZ != 0f) {
logD("Dropping item")
val bg = holder.background
val elevation = recyclerView.context.getDimen(R.dimen.elevation_normal)
holder.root
.animate()
.translationZ(0f)
.setDuration(
recyclerView.context.getInteger(R.integer.anim_fade_exit_duration).toLong())
.setUpdateListener {
bg.alpha = ((holder.root.translationZ / elevation) * 255).toInt()
}
.setInterpolator(AccelerateDecelerateInterpolator())
.start()
}
shouldLift = true
// Reset translations. We do not call the default implementation, so we must do
// this ourselves.
holder.body.translationX = 0f
holder.root.translationY = 0f
}
// Long-press events are too buggy, only allow dragging with the handle.
final override fun isLongPressDragEnabled() = false
/** Required [RecyclerView.ViewHolder] implementation that exposes the following. */
interface ViewHolder {
/** The root view containing the delete scrim and information. */
val root: View
/** The body view containing music information. */
val body: View
/** The scrim view showing the delete icon. Should be behind [body]. */
val delete: View
/** The drawable of the [body] background that can be elevated. */
val background: Drawable
}
}

View file

@ -26,9 +26,10 @@ import androidx.core.view.isInvisible
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.shape.MaterialShapeDrawable import com.google.android.material.shape.MaterialShapeDrawable
import org.oxycblt.auxio.R import org.oxycblt.auxio.R
import org.oxycblt.auxio.databinding.ItemQueueSongBinding import org.oxycblt.auxio.databinding.ItemEditableSongBinding
import org.oxycblt.auxio.list.EditableListListener import org.oxycblt.auxio.list.EditableListListener
import org.oxycblt.auxio.list.adapter.* import org.oxycblt.auxio.list.adapter.*
import org.oxycblt.auxio.list.recycler.MaterialDragCallback
import org.oxycblt.auxio.list.recycler.SongViewHolder import org.oxycblt.auxio.list.recycler.SongViewHolder
import org.oxycblt.auxio.music.Song import org.oxycblt.auxio.music.Song
import org.oxycblt.auxio.music.resolveNames import org.oxycblt.auxio.music.resolveNames
@ -96,34 +97,32 @@ class QueueAdapter(private val listener: EditableListListener<Song>) :
} }
/** /**
* A [PlayingIndicatorAdapter.ViewHolder] that displays a queue [Song]. Use [from] to create an * A [PlayingIndicatorAdapter.ViewHolder] that displays an editable [Song] which can be re-ordered
* instance. * and removed. Use [from] to create an instance.
* *
* @author Alexander Capehart (OxygenCobalt) * @author Alexander Capehart (OxygenCobalt)
*/ */
class QueueSongViewHolder private constructor(private val binding: ItemQueueSongBinding) : class QueueSongViewHolder private constructor(private val binding: ItemEditableSongBinding) :
PlayingIndicatorAdapter.ViewHolder(binding.root) { PlayingIndicatorAdapter.ViewHolder(binding.root), MaterialDragCallback.ViewHolder {
/** The "body" view of this [QueueSongViewHolder] that shows the [Song] information. */ override val root: View
val bodyView: View get() = binding.root
override val body: View
get() = binding.body get() = binding.body
/** The background view of this [QueueSongViewHolder] that shows the delete icon. */ override val delete: View
val backgroundView: View
get() = binding.background get() = binding.background
/** The actual background drawable of this [QueueSongViewHolder] that can be manipulated. */ override val background =
val backgroundDrawable =
MaterialShapeDrawable.createWithElevationOverlay(binding.root.context).apply { MaterialShapeDrawable.createWithElevationOverlay(binding.root.context).apply {
fillColor = binding.context.getAttrColorCompat(R.attr.colorSurface) fillColor = binding.context.getAttrColorCompat(R.attr.colorSurface)
elevation = binding.context.getDimen(R.dimen.elevation_normal) * 5 elevation = binding.context.getDimen(R.dimen.elevation_normal) * 5
alpha = 0 alpha = 0
} }
/** If this queue item is considered "in the future" (i.e has not played yet). */
var isFuture: Boolean var isFuture: Boolean
get() = binding.songAlbumCover.isEnabled get() = binding.songAlbumCover.isEnabled
set(value) { set(value) {
// Don't want to disable clicking, just indicate the body and handle is disabled
binding.songAlbumCover.isEnabled = value binding.songAlbumCover.isEnabled = value
binding.songName.isEnabled = value binding.songName.isEnabled = value
binding.songInfo.isEnabled = value binding.songInfo.isEnabled = value
@ -137,7 +136,7 @@ class QueueSongViewHolder private constructor(private val binding: ItemQueueSong
fillColor = binding.context.getAttrColorCompat(R.attr.colorSurface) fillColor = binding.context.getAttrColorCompat(R.attr.colorSurface)
elevation = binding.context.getDimen(R.dimen.elevation_normal) elevation = binding.context.getDimen(R.dimen.elevation_normal)
}, },
backgroundDrawable)) background))
} }
/** /**
@ -148,7 +147,7 @@ class QueueSongViewHolder private constructor(private val binding: ItemQueueSong
*/ */
@SuppressLint("ClickableViewAccessibility") @SuppressLint("ClickableViewAccessibility")
fun bind(song: Song, listener: EditableListListener<Song>) { fun bind(song: Song, listener: EditableListListener<Song>) {
listener.bind(song, this, bodyView, binding.songDragHandle) listener.bind(song, this, body, binding.songDragHandle)
binding.songAlbumCover.bind(song) binding.songAlbumCover.bind(song)
binding.songName.text = song.name.resolve(binding.context) binding.songName.text = song.name.resolve(binding.context)
binding.songInfo.text = song.artists.resolveNames(binding.context) binding.songInfo.text = song.artists.resolveNames(binding.context)
@ -170,7 +169,7 @@ class QueueSongViewHolder private constructor(private val binding: ItemQueueSong
* @return A new instance. * @return A new instance.
*/ */
fun from(parent: View) = fun from(parent: View) =
QueueSongViewHolder(ItemQueueSongBinding.inflate(parent.context.inflater)) QueueSongViewHolder(ItemEditableSongBinding.inflate(parent.context.inflater))
/** A comparator that can be used with DiffUtil. */ /** A comparator that can be used with DiffUtil. */
val DIFF_CALLBACK = SongViewHolder.DIFF_CALLBACK val DIFF_CALLBACK = SongViewHolder.DIFF_CALLBACK

View file

@ -18,15 +18,9 @@
package org.oxycblt.auxio.playback.queue package org.oxycblt.auxio.playback.queue
import android.graphics.Canvas
import android.view.animation.AccelerateDecelerateInterpolator
import androidx.core.view.isInvisible
import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import org.oxycblt.auxio.R import org.oxycblt.auxio.list.recycler.MaterialDragCallback
import org.oxycblt.auxio.util.getDimen
import org.oxycblt.auxio.util.getInteger
import org.oxycblt.auxio.util.logD
/** /**
* A highly customized [ItemTouchHelper.Callback] that enables some extra eye candy in the queue UI, * A highly customized [ItemTouchHelper.Callback] that enables some extra eye candy in the queue UI,
@ -34,108 +28,16 @@ import org.oxycblt.auxio.util.logD
* *
* @author Alexander Capehart (OxygenCobalt) * @author Alexander Capehart (OxygenCobalt)
*/ */
class QueueDragCallback(private val playbackModel: QueueViewModel) : ItemTouchHelper.Callback() { class QueueDragCallback(private val queueModel: QueueViewModel) : MaterialDragCallback() {
private var shouldLift = true
override fun getMovementFlags(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder) =
makeFlag(ItemTouchHelper.ACTION_STATE_DRAG, ItemTouchHelper.UP or ItemTouchHelper.DOWN) or
makeFlag(ItemTouchHelper.ACTION_STATE_SWIPE, ItemTouchHelper.START)
override fun onChildDraw(
c: Canvas,
recyclerView: RecyclerView,
viewHolder: RecyclerView.ViewHolder,
dX: Float,
dY: Float,
actionState: Int,
isCurrentlyActive: Boolean
) {
val holder = viewHolder as QueueSongViewHolder
// Hook drag events to "lifting" the queue item (i.e raising it's elevation). Make sure
// this is only done once when the item is initially picked up.
// TODO: I think this is possible to improve with a raw ValueAnimator.
if (shouldLift && isCurrentlyActive && actionState == ItemTouchHelper.ACTION_STATE_DRAG) {
logD("Lifting queue item")
val bg = holder.backgroundDrawable
val elevation = recyclerView.context.getDimen(R.dimen.elevation_normal)
holder.itemView
.animate()
.translationZ(elevation)
.setDuration(
recyclerView.context.getInteger(R.integer.anim_fade_exit_duration).toLong())
.setUpdateListener {
bg.alpha = ((holder.itemView.translationZ / elevation) * 255).toInt()
}
.setInterpolator(AccelerateDecelerateInterpolator())
.start()
shouldLift = false
}
// We show a background with a delete icon behind the queue song each time one is swiped
// away. To avoid working with canvas, this is simply placed behind the queue body.
// That comes with a couple of problems, however. For one, the background view will always
// lag behind the body view, resulting in a noticeable pixel offset when dragging. To fix
// this, we make this a separate view and make this view invisible whenever the item is
// not being swiped. This issue is also the reason why the background is not merged with
// the FrameLayout within the queue item.
if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) {
holder.backgroundView.isInvisible = dX == 0f
}
// Update other translations. We do not call the default implementation, so we must do
// this ourselves.
holder.bodyView.translationX = dX
holder.itemView.translationY = dY
}
override fun clearView(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder) {
// When an elevated item is cleared, we reset the elevation using another animation.
val holder = viewHolder as QueueSongViewHolder
// This function can be called multiple times, so only start the animation when the view's
// translationZ is already non-zero.
if (holder.itemView.translationZ != 0f) {
logD("Dropping queue item")
val bg = holder.backgroundDrawable
val elevation = recyclerView.context.getDimen(R.dimen.elevation_normal)
holder.itemView
.animate()
.translationZ(0f)
.setDuration(
recyclerView.context.getInteger(R.integer.anim_fade_exit_duration).toLong())
.setUpdateListener {
bg.alpha = ((holder.itemView.translationZ / elevation) * 255).toInt()
}
.setInterpolator(AccelerateDecelerateInterpolator())
.start()
}
shouldLift = true
// Reset translations. We do not call the default implementation, so we must do
// this ourselves.
holder.bodyView.translationX = 0f
holder.itemView.translationY = 0f
}
override fun onMove( override fun onMove(
recyclerView: RecyclerView, recyclerView: RecyclerView,
viewHolder: RecyclerView.ViewHolder, viewHolder: RecyclerView.ViewHolder,
target: RecyclerView.ViewHolder target: RecyclerView.ViewHolder
): Boolean { ) =
logD("${viewHolder.bindingAdapterPosition} ${target.bindingAdapterPosition}") queueModel.moveQueueDataItems(
return playbackModel.moveQueueDataItems(
viewHolder.bindingAdapterPosition, target.bindingAdapterPosition) viewHolder.bindingAdapterPosition, target.bindingAdapterPosition)
}
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) { override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
playbackModel.removeQueueDataItem(viewHolder.bindingAdapterPosition) queueModel.removeQueueDataItem(viewHolder.bindingAdapterPosition)
} }
// Long-press events are too buggy, only allow dragging with the handle.
override fun isLongPressDragEnabled() = false
} }

View file

@ -10,7 +10,7 @@
style="@style/Widget.Auxio.RecyclerView.Linear" style="@style/Widget.Auxio.RecyclerView.Linear"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
tools:listitem="@layout/item_queue_song" /> tools:listitem="@layout/item_editable_song" />
<com.google.android.material.divider.MaterialDivider <com.google.android.material.divider.MaterialDivider
android:id="@+id/queue_divider" android:id="@+id/queue_divider"

View file

@ -18,7 +18,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="end|center_vertical" android:layout_gravity="end|center_vertical"
android:layout_marginEnd="@dimen/spacing_small" android:layout_marginEnd="@dimen/spacing_small"
android:contentDescription="@string/desc_clear_queue_item" android:contentDescription="@string/desc_remove_song"
android:padding="@dimen/spacing_medium" android:padding="@dimen/spacing_medium"
android:src="@drawable/ic_delete_24" android:src="@drawable/ic_delete_24"
app:tint="?attr/colorOnError" /> app:tint="?attr/colorOnError" />
@ -79,7 +79,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/spacing_mid_medium" android:layout_marginEnd="@dimen/spacing_mid_medium"
android:contentDescription="@string/desc_queue_handle" android:contentDescription="@string/desc_song_handle"
app:icon="@drawable/ic_handle_24" app:icon="@drawable/ic_handle_24"
app:layout_constraintBottom_toBottomOf="@+id/song_album_cover" app:layout_constraintBottom_toBottomOf="@+id/song_album_cover"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"

View file

@ -89,8 +89,8 @@
<string name="desc_change_repeat">تغيير وضع التكرار</string> <string name="desc_change_repeat">تغيير وضع التكرار</string>
<string name="desc_shuffle">تشغيل او اطفاء الخلط</string> <string name="desc_shuffle">تشغيل او اطفاء الخلط</string>
<string name="desc_shuffle_all">خلط جميع الاغاني</string> <string name="desc_shuffle_all">خلط جميع الاغاني</string>
<string name="desc_clear_queue_item">إزالة اغنية من الطابور</string> <string name="desc_remove_song">إزالة اغنية من الطابور</string>
<string name="desc_queue_handle">نقل اغنية من الطابور</string> <string name="desc_song_handle">نقل اغنية من الطابور</string>
<string name="desc_tab_handle">تحريك التبويت</string> <string name="desc_tab_handle">تحريك التبويت</string>
<string name="desc_clear_search">إزالة كلمة البحث</string> <string name="desc_clear_search">إزالة كلمة البحث</string>
<string name="desc_music_dir_delete">إزالة المجلد المستبعد</string> <string name="desc_music_dir_delete">إزالة المجلد المستبعد</string>

View file

@ -144,7 +144,7 @@
<string name="err_bad_dir">Гэтая папка не падтрымліваецца</string> <string name="err_bad_dir">Гэтая папка не падтрымліваецца</string>
<string name="err_did_not_restore">Немагчыма аднавіць стан</string> <string name="err_did_not_restore">Немагчыма аднавіць стан</string>
<string name="desc_track_number">Кампазіцыя %d</string> <string name="desc_track_number">Кампазіцыя %d</string>
<string name="desc_queue_handle">Перамясціць песню ў чаргу</string> <string name="desc_song_handle">Перамясціць песню ў чаргу</string>
<string name="err_no_app">Не знойдзена прыкладання, якое можа справіцца з гэтай задачай</string> <string name="err_no_app">Не знойдзена прыкладання, якое можа справіцца з гэтай задачай</string>
<string name="desc_play_pause">Прайграванне або прыпыненне</string> <string name="desc_play_pause">Прайграванне або прыпыненне</string>
<string name="err_did_not_save">Немагчыма захаваць стан</string> <string name="err_did_not_save">Немагчыма захаваць стан</string>
@ -153,7 +153,7 @@
<string name="desc_change_repeat">Змяніць рэжым паўтору</string> <string name="desc_change_repeat">Змяніць рэжым паўтору</string>
<string name="desc_auxio_icon">Значок Auxio</string> <string name="desc_auxio_icon">Значок Auxio</string>
<string name="desc_shuffle">Уключыце або выключыце перамешванне</string> <string name="desc_shuffle">Уключыце або выключыце перамешванне</string>
<string name="desc_clear_queue_item">Выдаліць гэтую песню з чаргі</string> <string name="desc_remove_song">Выдаліць гэтую песню з чаргі</string>
<string name="desc_shuffle_all">Перамяшаць усе песні</string> <string name="desc_shuffle_all">Перамяшаць усе песні</string>
<string name="desc_exit">Спыніць прайграванне</string> <string name="desc_exit">Спыніць прайграванне</string>
<string name="desc_queue_bar">Адкрыйце чаргу</string> <string name="desc_queue_bar">Адкрыйце чаргу</string>

View file

@ -109,8 +109,8 @@
<string name="desc_change_repeat">Změnit režim opakování</string> <string name="desc_change_repeat">Změnit režim opakování</string>
<string name="desc_shuffle">Vypnout nebo zapnout náhodné přehrávání</string> <string name="desc_shuffle">Vypnout nebo zapnout náhodné přehrávání</string>
<string name="desc_shuffle_all">Náhodně přehrávat vše</string> <string name="desc_shuffle_all">Náhodně přehrávat vše</string>
<string name="desc_clear_queue_item">Odebrat tuto skladbu z fronty</string> <string name="desc_remove_song">Odebrat tuto skladbu z fronty</string>
<string name="desc_queue_handle">Přesunout tuto skladbu ve frontě</string> <string name="desc_song_handle">Přesunout tuto skladbu ve frontě</string>
<string name="desc_tab_handle">Přesunout tuto kartu</string> <string name="desc_tab_handle">Přesunout tuto kartu</string>
<string name="desc_clear_search">Vymazat hledání</string> <string name="desc_clear_search">Vymazat hledání</string>
<string name="desc_music_dir_delete">Odebrat složku</string> <string name="desc_music_dir_delete">Odebrat složku</string>

View file

@ -125,7 +125,7 @@
<string name="set_repeat_pause">Pause bei Wiederholung</string> <string name="set_repeat_pause">Pause bei Wiederholung</string>
<string name="set_repeat_pause_desc">Pausieren, wenn ein Song wiederholt wird</string> <string name="set_repeat_pause_desc">Pausieren, wenn ein Song wiederholt wird</string>
<string name="desc_shuffle">Zufällig an- oder ausschalten</string> <string name="desc_shuffle">Zufällig an- oder ausschalten</string>
<string name="desc_queue_handle">Lied in der Warteschlange verschieben</string> <string name="desc_song_handle">Lied in der Warteschlange verschieben</string>
<string name="desc_music_dir_delete">Verzechnis entfernen</string> <string name="desc_music_dir_delete">Verzechnis entfernen</string>
<string name="desc_no_cover">Albumcover</string> <string name="desc_no_cover">Albumcover</string>
<string name="def_playback">Keine Musik wird gespielt</string> <string name="def_playback">Keine Musik wird gespielt</string>
@ -133,7 +133,7 @@
<string name="set_lib_tabs_desc">Sichtbarkeit und Ordnung der Bibliotheksregisterkarten ändern</string> <string name="set_lib_tabs_desc">Sichtbarkeit und Ordnung der Bibliotheksregisterkarten ändern</string>
<string name="lbl_name">Name</string> <string name="lbl_name">Name</string>
<string name="desc_shuffle_all">Alle Lieder zufällig</string> <string name="desc_shuffle_all">Alle Lieder zufällig</string>
<string name="desc_clear_queue_item">Lied in der Warteschlange löschen</string> <string name="desc_remove_song">Lied in der Warteschlange löschen</string>
<string name="desc_tab_handle">Tab versetzen</string> <string name="desc_tab_handle">Tab versetzen</string>
<string name="def_artist">Unbekannter Künstler</string> <string name="def_artist">Unbekannter Künstler</string>
<string name="lbl_duration">Dauer</string> <string name="lbl_duration">Dauer</string>

View file

@ -91,8 +91,8 @@
<string name="desc_change_repeat">Cambiar modo de repetición</string> <string name="desc_change_repeat">Cambiar modo de repetición</string>
<string name="desc_shuffle">Act/des mezcla</string> <string name="desc_shuffle">Act/des mezcla</string>
<string name="desc_shuffle_all">Mezclar todo</string> <string name="desc_shuffle_all">Mezclar todo</string>
<string name="desc_clear_queue_item">Quitar canción de la cola</string> <string name="desc_remove_song">Quitar canción de la cola</string>
<string name="desc_queue_handle">Mover canción en la cola</string> <string name="desc_song_handle">Mover canción en la cola</string>
<string name="desc_tab_handle">Mover pestaña</string> <string name="desc_tab_handle">Mover pestaña</string>
<string name="desc_clear_search">Borrar historial de búsqueda</string> <string name="desc_clear_search">Borrar historial de búsqueda</string>
<string name="desc_music_dir_delete">Quitar carpeta</string> <string name="desc_music_dir_delete">Quitar carpeta</string>

View file

@ -203,8 +203,8 @@
<string name="cdc_aac">Advanced Audio Coding (AAC)</string> <string name="cdc_aac">Advanced Audio Coding (AAC)</string>
<string name="cdc_flac">Free Lossless Audio Codec (FLAC)</string> <string name="cdc_flac">Free Lossless Audio Codec (FLAC)</string>
<string name="clr_red">Vermello</string> <string name="clr_red">Vermello</string>
<string name="desc_clear_queue_item">Quitar esta canción da cola</string> <string name="desc_remove_song">Quitar esta canción da cola</string>
<string name="desc_queue_handle">Mover está canción na cola</string> <string name="desc_song_handle">Mover está canción na cola</string>
<string name="desc_tab_handle">Mover esta pestana</string> <string name="desc_tab_handle">Mover esta pestana</string>
<string name="clr_pink">Rosa</string> <string name="clr_pink">Rosa</string>
<string name="clr_purple">Morado</string> <string name="clr_purple">Morado</string>

View file

@ -107,8 +107,8 @@
<string name="desc_track_number">Zvučni zapis %d</string> <string name="desc_track_number">Zvučni zapis %d</string>
<string name="desc_shuffle">Omogućite ili onemogućite miješanje</string> <string name="desc_shuffle">Omogućite ili onemogućite miješanje</string>
<string name="desc_shuffle_all">Izmiješaj sve pjesme</string> <string name="desc_shuffle_all">Izmiješaj sve pjesme</string>
<string name="desc_clear_queue_item">Ukoni ovu pjesmu iz popisa pjesama</string> <string name="desc_remove_song">Ukoni ovu pjesmu iz popisa pjesama</string>
<string name="desc_queue_handle">Premjesti ovu pjesmu u popisu pjesama</string> <string name="desc_song_handle">Premjesti ovu pjesmu u popisu pjesama</string>
<string name="desc_tab_handle">Pomakni ovu pločicu</string> <string name="desc_tab_handle">Pomakni ovu pločicu</string>
<string name="desc_clear_search">Izbriši pretražene pojmove</string> <string name="desc_clear_search">Izbriši pretražene pojmove</string>
<string name="desc_music_dir_delete">Ukloni mapu</string> <string name="desc_music_dir_delete">Ukloni mapu</string>

View file

@ -139,7 +139,7 @@
<string name="desc_artist_image">Gambar Artis untuk %s</string> <string name="desc_artist_image">Gambar Artis untuk %s</string>
<string name="set_detail_song_playback_mode">Saat diputar dari keterangan item</string> <string name="set_detail_song_playback_mode">Saat diputar dari keterangan item</string>
<string name="set_dirs_mode_exclude_desc">Musik <b>tidak</b> akan dimuat dari folder yang Anda tambahkan.</string> <string name="set_dirs_mode_exclude_desc">Musik <b>tidak</b> akan dimuat dari folder yang Anda tambahkan.</string>
<string name="desc_clear_queue_item">Hapus lagu antrian ini</string> <string name="desc_remove_song">Hapus lagu antrian ini</string>
<string name="desc_clear_search">Hapus kueri pencarian</string> <string name="desc_clear_search">Hapus kueri pencarian</string>
<string name="set_pre_amp_without">Penyesuaian tanpa tag</string> <string name="set_pre_amp_without">Penyesuaian tanpa tag</string>
<string name="set_dirs">Folder musik</string> <string name="set_dirs">Folder musik</string>
@ -159,7 +159,7 @@
<string name="desc_auxio_icon">Ikon Auxio</string> <string name="desc_auxio_icon">Ikon Auxio</string>
<string name="desc_no_cover">Sampul album</string> <string name="desc_no_cover">Sampul album</string>
<string name="desc_shuffle">Aktifkan atau nonaktifkan acak</string> <string name="desc_shuffle">Aktifkan atau nonaktifkan acak</string>
<string name="desc_queue_handle">Pindahkan lagu antrian ini</string> <string name="desc_song_handle">Pindahkan lagu antrian ini</string>
<string name="def_playback">Tidak ada musik yang diputar</string> <string name="def_playback">Tidak ada musik yang diputar</string>
<string name="cdc_ogg">Audio Ogg</string> <string name="cdc_ogg">Audio Ogg</string>
<string name="clr_brown">Cokelat</string> <string name="clr_brown">Cokelat</string>

View file

@ -94,8 +94,8 @@
<string name="desc_change_repeat">Cambia modalità ripetizione</string> <string name="desc_change_repeat">Cambia modalità ripetizione</string>
<string name="desc_shuffle">Attiva o disattiva mescolamento</string> <string name="desc_shuffle">Attiva o disattiva mescolamento</string>
<string name="desc_shuffle_all">Mescola tutte le canzoni</string> <string name="desc_shuffle_all">Mescola tutte le canzoni</string>
<string name="desc_clear_queue_item">Rimuove questa canzone della coda</string> <string name="desc_remove_song">Rimuove questa canzone della coda</string>
<string name="desc_queue_handle">Muove questa canzone della coda</string> <string name="desc_song_handle">Muove questa canzone della coda</string>
<string name="desc_tab_handle">Muove questa scheda</string> <string name="desc_tab_handle">Muove questa scheda</string>
<string name="desc_clear_search">Cancella la query di ricerca</string> <string name="desc_clear_search">Cancella la query di ricerca</string>
<string name="desc_music_dir_delete">Rimuovi cartella</string> <string name="desc_music_dir_delete">Rimuovi cartella</string>

View file

@ -8,7 +8,7 @@
<string name="lbl_duration">曲の長さ</string> <string name="lbl_duration">曲の長さ</string>
<string name="set_save_desc">現在の再生状態を保存</string> <string name="set_save_desc">現在の再生状態を保存</string>
<string name="desc_tab_handle">このタブを移動</string> <string name="desc_tab_handle">このタブを移動</string>
<string name="desc_queue_handle">この再生待ちの曲を移動</string> <string name="desc_song_handle">この再生待ちの曲を移動</string>
<string name="def_date">日付けがありません</string> <string name="def_date">日付けがありません</string>
<string name="lbl_songs"></string> <string name="lbl_songs"></string>
<string name="lbl_all_songs">すべての曲</string> <string name="lbl_all_songs">すべての曲</string>
@ -91,7 +91,7 @@
<string name="err_did_not_restore">再生状態を復元できません</string> <string name="err_did_not_restore">再生状態を復元できません</string>
<string name="desc_track_number">トラック %d</string> <string name="desc_track_number">トラック %d</string>
<string name="desc_play_pause">再生またはポーズ</string> <string name="desc_play_pause">再生またはポーズ</string>
<string name="desc_clear_queue_item">再生待ちの曲を除去</string> <string name="desc_remove_song">再生待ちの曲を除去</string>
<string name="desc_music_dir_delete">フォルダを除去</string> <string name="desc_music_dir_delete">フォルダを除去</string>
<string name="desc_auxio_icon">Auxio アイコン</string> <string name="desc_auxio_icon">Auxio アイコン</string>
<string name="desc_no_cover">アルバムカバー</string> <string name="desc_no_cover">アルバムカバー</string>

View file

@ -107,8 +107,8 @@
<string name="desc_change_repeat">반복 방식 변경</string> <string name="desc_change_repeat">반복 방식 변경</string>
<string name="desc_shuffle">무작위 재생 켜기 또는 끄기</string> <string name="desc_shuffle">무작위 재생 켜기 또는 끄기</string>
<string name="desc_shuffle_all">모든 곡 무작위 재생</string> <string name="desc_shuffle_all">모든 곡 무작위 재생</string>
<string name="desc_clear_queue_item">이 대기열의 곡 제거</string> <string name="desc_remove_song">이 대기열의 곡 제거</string>
<string name="desc_queue_handle">이 대기열의 곡 이동</string> <string name="desc_song_handle">이 대기열의 곡 이동</string>
<string name="desc_tab_handle">이 탭 이동</string> <string name="desc_tab_handle">이 탭 이동</string>
<string name="desc_clear_search">검색 기록 삭제</string> <string name="desc_clear_search">검색 기록 삭제</string>
<string name="desc_music_dir_delete">폴더 제거</string> <string name="desc_music_dir_delete">폴더 제거</string>

View file

@ -138,7 +138,7 @@
<string name="set_replay_gain_mode_dynamic">Pageidaujamas albumui, jei vienas groja</string> <string name="set_replay_gain_mode_dynamic">Pageidaujamas albumui, jei vienas groja</string>
<string name="err_no_app">Jokių programų nerasta, kurios galėtų atlikti šią užduotį</string> <string name="err_no_app">Jokių programų nerasta, kurios galėtų atlikti šią užduotį</string>
<string name="desc_auxio_icon">„Auxio“ piktograma</string> <string name="desc_auxio_icon">„Auxio“ piktograma</string>
<string name="desc_queue_handle">Perkelti šią eilės dainą</string> <string name="desc_song_handle">Perkelti šią eilės dainą</string>
<string name="desc_tab_handle">Perkelti šį skirtuką</string> <string name="desc_tab_handle">Perkelti šį skirtuką</string>
<string name="err_index_failed">Muzikos krovimas nepavyko</string> <string name="err_index_failed">Muzikos krovimas nepavyko</string>
<string name="err_no_perms">„Auxio“ reikia leidimo skaityti jūsų muzikos biblioteką</string> <string name="err_no_perms">„Auxio“ reikia leidimo skaityti jūsų muzikos biblioteką</string>
@ -173,7 +173,7 @@
<string name="desc_clear_search">Išvalyti paieškos užklausą</string> <string name="desc_clear_search">Išvalyti paieškos užklausą</string>
<string name="set_dirs_mode_exclude_desc">Muzika <b>nebus</b> įkeliama iš pridėtų aplankų jūs pridėsite.</string> <string name="set_dirs_mode_exclude_desc">Muzika <b>nebus</b> įkeliama iš pridėtų aplankų jūs pridėsite.</string>
<string name="set_dirs_mode_include">Įtraukti</string> <string name="set_dirs_mode_include">Įtraukti</string>
<string name="desc_clear_queue_item">Pašalinti šią eilės dainą</string> <string name="desc_remove_song">Pašalinti šią eilės dainą</string>
<string name="set_playback_mode_songs">Groti iš visų dainų</string> <string name="set_playback_mode_songs">Groti iš visų dainų</string>
<string name="set_playback_mode_none">Groti iš parodyto elemento</string> <string name="set_playback_mode_none">Groti iš parodyto elemento</string>
<string name="set_playback_mode_album">Groti iš albumo</string> <string name="set_playback_mode_album">Groti iš albumo</string>

View file

@ -65,8 +65,8 @@
<string name="def_playback">സംഗീതം കളിക്കുന്നില്ല</string> <string name="def_playback">സംഗീതം കളിക്കുന്നില്ല</string>
<string name="clr_yellow">മഞ്ഞ</string> <string name="clr_yellow">മഞ്ഞ</string>
<string name="fmt_selected">%d തിരഞ്ഞെടുത്തു</string> <string name="fmt_selected">%d തിരഞ്ഞെടുത്തു</string>
<string name="desc_clear_queue_item">വരിയിലെ ഈ ഗാനം നീക്കം ചെയ്യുക</string> <string name="desc_remove_song">വരിയിലെ ഈ ഗാനം നീക്കം ചെയ്യുക</string>
<string name="desc_queue_handle">വരിയിലെ ഈ ഗാനം നീക്കുക</string> <string name="desc_song_handle">വരിയിലെ ഈ ഗാനം നീക്കുക</string>
<string name="lbl_reset">പുനഃസജ്ജമാക്കുക</string> <string name="lbl_reset">പുനഃസജ്ജമാക്കുക</string>
<string name="clr_brown">തവിട്ട്</string> <string name="clr_brown">തവിട്ട്</string>
<string name="fmt_list">%1$s, %2$s</string> <string name="fmt_list">%1$s, %2$s</string>

View file

@ -162,8 +162,8 @@
<string name="set_restore_state">Afspeelstatus herstellen</string> <string name="set_restore_state">Afspeelstatus herstellen</string>
<string name="set_restore_desc">Herstel de eerder opgeslagen afspeelstatus (indien aanwezig)</string> <string name="set_restore_desc">Herstel de eerder opgeslagen afspeelstatus (indien aanwezig)</string>
<string name="err_did_not_restore">Geen staat kan hersteld worden</string> <string name="err_did_not_restore">Geen staat kan hersteld worden</string>
<string name="desc_clear_queue_item">Verwijder dit wachtrij liedje</string> <string name="desc_remove_song">Verwijder dit wachtrij liedje</string>
<string name="desc_queue_handle">Verplaats dit wachtrij liedje</string> <string name="desc_song_handle">Verplaats dit wachtrij liedje</string>
<string name="desc_tab_handle">Verplaats deze tab</string> <string name="desc_tab_handle">Verplaats deze tab</string>
<string name="desc_no_cover">Album cover</string> <string name="desc_no_cover">Album cover</string>
<string name="def_track">Geen tracknummer</string> <string name="def_track">Geen tracknummer</string>

View file

@ -196,8 +196,8 @@
<string name="set_library">ਲਾਇਬ੍ਰੇਰੀ</string> <string name="set_library">ਲਾਇਬ੍ਰੇਰੀ</string>
<string name="set_dirs">ਸੰਗੀਤ ਫੋਲਡਰ</string> <string name="set_dirs">ਸੰਗੀਤ ਫੋਲਡਰ</string>
<string name="desc_queue_bar">ਕਤਾਰ ਖੋਲ੍ਹੋ</string> <string name="desc_queue_bar">ਕਤਾਰ ਖੋਲ੍ਹੋ</string>
<string name="desc_clear_queue_item">ਇਸ ਕਤਾਰ ਗੀਤ ਨੂੰ ਹਟਾਓ</string> <string name="desc_remove_song">ਇਸ ਕਤਾਰ ਗੀਤ ਨੂੰ ਹਟਾਓ</string>
<string name="desc_queue_handle">ਇਸ ਕਤਾਰ ਗੀਤ ਨੂੰ ਮੂਵ ਕਰੋ</string> <string name="desc_song_handle">ਇਸ ਕਤਾਰ ਗੀਤ ਨੂੰ ਮੂਵ ਕਰੋ</string>
<string name="desc_change_repeat">ਦੁਹਰਾਓ ਮੋਡ ਬਦਲੋ</string> <string name="desc_change_repeat">ਦੁਹਰਾਓ ਮੋਡ ਬਦਲੋ</string>
<string name="desc_shuffle">ਸ਼ਫਲ ਚਾਲੂ ਜਾਂ ਬੰਦ ਕਰੋ</string> <string name="desc_shuffle">ਸ਼ਫਲ ਚਾਲੂ ਜਾਂ ਬੰਦ ਕਰੋ</string>
<string name="desc_shuffle_all">ਸਾਰੇ ਗੀਤਾਂ ਨੂੰ ਸ਼ਫਲ ਕਰੋ</string> <string name="desc_shuffle_all">ਸਾਰੇ ਗੀਤਾਂ ਨੂੰ ਸ਼ਫਲ ਕਰੋ</string>

View file

@ -137,7 +137,7 @@
<string name="set_headset_autoplay_desc">Automatycznie odtwórz muzykę po podłączeniu słuchawek (może nie działać na wszystkich urządzeniach)</string> <string name="set_headset_autoplay_desc">Automatycznie odtwórz muzykę po podłączeniu słuchawek (może nie działać na wszystkich urządzeniach)</string>
<string name="set_reindex">Odśwież muzykę</string> <string name="set_reindex">Odśwież muzykę</string>
<string name="set_reindex_desc">Odśwież bibliotekę muzyczną używając tagów z pamięci cache, jeśli są dostępne</string> <string name="set_reindex_desc">Odśwież bibliotekę muzyczną używając tagów z pamięci cache, jeśli są dostępne</string>
<string name="desc_clear_queue_item">Usuń utwór z kolejki</string> <string name="desc_remove_song">Usuń utwór z kolejki</string>
<string name="set_replay_gain_mode_album">Preferuj album</string> <string name="set_replay_gain_mode_album">Preferuj album</string>
<string name="set_observing">Automatycznie odśwież</string> <string name="set_observing">Automatycznie odśwież</string>
<string name="cdc_flac">FLAC</string> <string name="cdc_flac">FLAC</string>
@ -173,7 +173,7 @@
<string name="set_observing_desc">Automatycznie odśwież bibliotekę po wykryciu zmian (wymaga stałego powiadomienia)</string> <string name="set_observing_desc">Automatycznie odśwież bibliotekę po wykryciu zmian (wymaga stałego powiadomienia)</string>
<string name="set_dirs_mode_exclude">Wyklucz</string> <string name="set_dirs_mode_exclude">Wyklucz</string>
<string name="set_dirs_mode_include">Zawrzyj</string> <string name="set_dirs_mode_include">Zawrzyj</string>
<string name="desc_queue_handle">Zmień pozycję utworu w kolejce</string> <string name="desc_song_handle">Zmień pozycję utworu w kolejce</string>
<string name="desc_tab_handle">Przesuń kartę</string> <string name="desc_tab_handle">Przesuń kartę</string>
<string name="desc_artist_image">Wizerunek wykonawcy dla %s</string> <string name="desc_artist_image">Wizerunek wykonawcy dla %s</string>
<string name="lng_indexing">Ładuję bibliotekę muzyczną…</string> <string name="lng_indexing">Ładuję bibliotekę muzyczną…</string>

View file

@ -123,7 +123,7 @@
<string name="desc_skip_prev">Pular para a música anterior</string> <string name="desc_skip_prev">Pular para a música anterior</string>
<string name="desc_change_repeat">Alterar o modo de repetição</string> <string name="desc_change_repeat">Alterar o modo de repetição</string>
<string name="desc_shuffle_all">Aleatorizar todas das músicas</string> <string name="desc_shuffle_all">Aleatorizar todas das músicas</string>
<string name="desc_clear_queue_item">Remover esta música da fila</string> <string name="desc_remove_song">Remover esta música da fila</string>
<string name="desc_clear_search">Limpar histórico de pesquisa</string> <string name="desc_clear_search">Limpar histórico de pesquisa</string>
<string name="desc_album_cover">Capa do álbum para %s</string> <string name="desc_album_cover">Capa do álbum para %s</string>
<string name="desc_tab_handle">Mover esta aba</string> <string name="desc_tab_handle">Mover esta aba</string>
@ -147,7 +147,7 @@
<string name="cdc_mka">Áudio Matroska</string> <string name="cdc_mka">Áudio Matroska</string>
<string name="cdc_aac">Codificação de Audio Avançada (AAC)</string> <string name="cdc_aac">Codificação de Audio Avançada (AAC)</string>
<string name="cdc_flac">Free Lossless Audio Codec (FLAC)</string> <string name="cdc_flac">Free Lossless Audio Codec (FLAC)</string>
<string name="desc_queue_handle">Mover esta música da fila</string> <string name="desc_song_handle">Mover esta música da fila</string>
<string name="clr_dynamic">Dinâmico</string> <string name="clr_dynamic">Dinâmico</string>
<string name="fmt_lib_total_duration">Duração total: %s</string> <string name="fmt_lib_total_duration">Duração total: %s</string>
<string name="fmt_indexing">Carregando sua biblioteca de músicas… (%1$d/%2$d)</string> <string name="fmt_indexing">Carregando sua biblioteca de músicas… (%1$d/%2$d)</string>

View file

@ -98,7 +98,7 @@
<string name="err_no_perms">O Auxio precisa de permissão para ler a sua biblioteca de músicas</string> <string name="err_no_perms">O Auxio precisa de permissão para ler a sua biblioteca de músicas</string>
<string name="err_no_dirs">Sem pastas</string> <string name="err_no_dirs">Sem pastas</string>
<string name="err_bad_dir">Esta pasta não é compatível</string> <string name="err_bad_dir">Esta pasta não é compatível</string>
<string name="desc_queue_handle">Mover esta música da fila</string> <string name="desc_song_handle">Mover esta música da fila</string>
<string name="desc_music_dir_delete">Remover pasta</string> <string name="desc_music_dir_delete">Remover pasta</string>
<string name="lbl_compilation_remix">Compilações de remix</string> <string name="lbl_compilation_remix">Compilações de remix</string>
<string name="lbl_compilation_live">Compilação ao vivo</string> <string name="lbl_compilation_live">Compilação ao vivo</string>
@ -195,7 +195,7 @@
<string name="set_restore_desc">Restaurar o estado de reprodução salvo anteriormente (se houver)</string> <string name="set_restore_desc">Restaurar o estado de reprodução salvo anteriormente (se houver)</string>
<string name="desc_shuffle">Ativar ou desativar a reprodução aleatória</string> <string name="desc_shuffle">Ativar ou desativar a reprodução aleatória</string>
<string name="desc_shuffle_all">Embaralhar todas as músicas</string> <string name="desc_shuffle_all">Embaralhar todas as músicas</string>
<string name="desc_clear_queue_item">Remover esta música de fila</string> <string name="desc_remove_song">Remover esta música de fila</string>
<string name="cdc_mka">Áudio Matroska</string> <string name="cdc_mka">Áudio Matroska</string>
<string name="cdc_aac">Codificação de Audio Avançada (AAC)</string> <string name="cdc_aac">Codificação de Audio Avançada (AAC)</string>
<string name="lbl_album">Álbum</string> <string name="lbl_album">Álbum</string>

View file

@ -93,8 +93,8 @@
<string name="desc_change_repeat">Режим повтора</string> <string name="desc_change_repeat">Режим повтора</string>
<string name="desc_shuffle">Перемешивание</string> <string name="desc_shuffle">Перемешивание</string>
<string name="desc_shuffle_all">Перемешать все треки</string> <string name="desc_shuffle_all">Перемешать все треки</string>
<string name="desc_clear_queue_item">Удалить трек из очереди</string> <string name="desc_remove_song">Удалить трек из очереди</string>
<string name="desc_queue_handle">Переместить трек в очереди</string> <string name="desc_song_handle">Переместить трек в очереди</string>
<string name="desc_tab_handle">Переместить вкладку</string> <string name="desc_tab_handle">Переместить вкладку</string>
<string name="desc_clear_search">Очистить поисковый запрос</string> <string name="desc_clear_search">Очистить поисковый запрос</string>
<string name="desc_music_dir_delete">Удалить папку</string> <string name="desc_music_dir_delete">Удалить папку</string>

View file

@ -192,7 +192,7 @@
<string name="lbl_date_added">Eklendiği tarih</string> <string name="lbl_date_added">Eklendiği tarih</string>
<string name="lbl_album_remix">Remix albüm</string> <string name="lbl_album_remix">Remix albüm</string>
<string name="lbl_album_live">Canlı albüm</string> <string name="lbl_album_live">Canlı albüm</string>
<string name="desc_clear_queue_item">Bu şarkıyı kuyruktan kaldır</string> <string name="desc_remove_song">Bu şarkıyı kuyruktan kaldır</string>
<string name="lbl_singles">Tekliler</string> <string name="lbl_singles">Tekliler</string>
<string name="lbl_single">Tekli</string> <string name="lbl_single">Tekli</string>
<string name="lbl_mixtape">Karışık kaset</string> <string name="lbl_mixtape">Karışık kaset</string>
@ -254,7 +254,7 @@
<string name="set_exclude_non_music">Müzik olmayanları hariç tut</string> <string name="set_exclude_non_music">Müzik olmayanları hariç tut</string>
<string name="err_did_not_wipe">Durum temizlenemedi</string> <string name="err_did_not_wipe">Durum temizlenemedi</string>
<string name="set_replay_gain_mode">ReplayGain stratejisi</string> <string name="set_replay_gain_mode">ReplayGain stratejisi</string>
<string name="desc_queue_handle">Bu şarkıyı kuyrukta taşı</string> <string name="desc_song_handle">Bu şarkıyı kuyrukta taşı</string>
<string name="fmt_list">%1$s, %2$s</string> <string name="fmt_list">%1$s, %2$s</string>
<string name="set_content_desc">Müzik ve görüntülerin nasıl yükleneceğini denetleyin</string> <string name="set_content_desc">Müzik ve görüntülerin nasıl yükleneceğini denetleyin</string>
<string name="set_music">Müzik</string> <string name="set_music">Müzik</string>

View file

@ -218,8 +218,8 @@
<string name="def_genre">Невідомий жанр</string> <string name="def_genre">Невідомий жанр</string>
<string name="desc_queue_bar">Відкрити чергу</string> <string name="desc_queue_bar">Відкрити чергу</string>
<string name="clr_yellow">Жовтий</string> <string name="clr_yellow">Жовтий</string>
<string name="desc_queue_handle">Перемістити пісню в черзі</string> <string name="desc_song_handle">Перемістити пісню в черзі</string>
<string name="desc_clear_queue_item">Видалити пісню з черги</string> <string name="desc_remove_song">Видалити пісню з черги</string>
<string name="clr_cyan">Блакитний</string> <string name="clr_cyan">Блакитний</string>
<string name="clr_teal">Зеленувато-блакитний</string> <string name="clr_teal">Зеленувато-блакитний</string>
<string name="clr_purple">Фіолетовий</string> <string name="clr_purple">Фіолетовий</string>

View file

@ -93,8 +93,8 @@
<string name="desc_change_repeat">更改重复播放模式</string> <string name="desc_change_repeat">更改重复播放模式</string>
<string name="desc_shuffle">开启或关闭随机播放模式</string> <string name="desc_shuffle">开启或关闭随机播放模式</string>
<string name="desc_shuffle_all">随机播放所有曲目</string> <string name="desc_shuffle_all">随机播放所有曲目</string>
<string name="desc_clear_queue_item">移除队列曲目</string> <string name="desc_remove_song">移除队列曲目</string>
<string name="desc_queue_handle">移动队列曲目</string> <string name="desc_song_handle">移动队列曲目</string>
<string name="desc_tab_handle">移动该标签</string> <string name="desc_tab_handle">移动该标签</string>
<string name="desc_clear_search">清除搜索队列</string> <string name="desc_clear_search">清除搜索队列</string>
<string name="desc_music_dir_delete">移除文件夹</string> <string name="desc_music_dir_delete">移除文件夹</string>

View file

@ -311,8 +311,8 @@
<string name="desc_new_playlist">Create a new playlist</string> <string name="desc_new_playlist">Create a new playlist</string>
<string name="desc_exit">Stop playback</string> <string name="desc_exit">Stop playback</string>
<string name="desc_clear_queue_item">Remove this queue song</string> <string name="desc_remove_song">Remove this song</string>
<string name="desc_queue_handle">Move this queue song</string> <string name="desc_song_handle">Move this song</string>
<string name="desc_queue_bar">Open the queue</string> <string name="desc_queue_bar">Open the queue</string>
<string name="desc_tab_handle">Move this tab</string> <string name="desc_tab_handle">Move this tab</string>
<string name="desc_clear_search">Clear search query</string> <string name="desc_clear_search">Clear search query</string>