detail: add metadata to song detail view

Add metadata items to the song detail view. Should provide a useful
view into how Auxio is interpreting song metadata.

Resolves #330.
This commit is contained in:
Alexander Capehart 2023-02-19 21:57:10 -07:00
parent bb704ea3fd
commit 975f239b8b
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47
50 changed files with 440 additions and 494 deletions

View file

@ -5,9 +5,10 @@
#### What's New #### What's New
- Added support for disc subtitles - Added support for disc subtitles
- Added support for ALAC files - Added support for ALAC files
- Song properties view now shows tags
#### What's Improved #### What's Improved
- Auxio will now accept zeroed track/disc numbers in the presence of non-zero total - Will now accept zeroed track/disc numbers in the presence of non-zero total
track/disc fields track/disc fields
- Music loading has been made slightly faster - Music loading has been made slightly faster
- Improved sort menu usability - Improved sort menu usability
@ -17,10 +18,18 @@ track/disc fields
#### What's Fixed #### What's Fixed
- Fixed non-functioning "repeat all" repeat mode - Fixed non-functioning "repeat all" repeat mode
- Fixed visual clipping of shuffle button shadow - Fixed visual clipping of shuffle button shadow
- Fixed SeekBar remaining in a "stuck" state if gesture navigation was used
while selecting it.
#### Dev/Meta #### Dev/Meta
- Started using dependency injection - Started using dependency injection
- Started code obsfucation
- Only bundle audio-related extractors with ExoPlayer
- Switched to Room for database management
- Updated to MDC 1.8.0 alpha-01 - Updated to MDC 1.8.0 alpha-01
- Updated to AGP 7.4.1
- Updated to Gradle 8.0
- Updated to ExoPlayer 2.18.3
## 3.0.2 ## 3.0.2

View file

@ -17,22 +17,28 @@
package org.oxycblt.auxio.detail package org.oxycblt.auxio.detail
import android.content.Context
import android.os.Bundle import android.os.Bundle
import android.text.format.Formatter import android.text.format.Formatter
import android.view.LayoutInflater import android.view.LayoutInflater
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.core.view.isInvisible
import androidx.fragment.app.activityViewModels import androidx.fragment.app.activityViewModels
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs import androidx.navigation.fragment.navArgs
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import org.oxycblt.auxio.R import org.oxycblt.auxio.R
import org.oxycblt.auxio.databinding.DialogSongDetailBinding import org.oxycblt.auxio.databinding.DialogSongDetailBinding
import org.oxycblt.auxio.detail.recycler.SongPropertyAdapter
import org.oxycblt.auxio.detail.recycler.SongProperty
import org.oxycblt.auxio.list.adapter.BasicListInstructions
import org.oxycblt.auxio.music.Music
import org.oxycblt.auxio.music.Song import org.oxycblt.auxio.music.Song
import org.oxycblt.auxio.music.metadata.AudioInfo import org.oxycblt.auxio.music.metadata.AudioInfo
import org.oxycblt.auxio.music.resolveNames
import org.oxycblt.auxio.playback.formatDurationMs import org.oxycblt.auxio.playback.formatDurationMs
import org.oxycblt.auxio.ui.ViewBindingDialogFragment import org.oxycblt.auxio.ui.ViewBindingDialogFragment
import org.oxycblt.auxio.util.collectImmediately import org.oxycblt.auxio.util.collectImmediately
import org.oxycblt.auxio.util.concatLocalized
/** /**
* A [ViewBindingDialogFragment] that shows information about a Song. * A [ViewBindingDialogFragment] that shows information about a Song.
@ -44,6 +50,7 @@ class SongDetailDialog : ViewBindingDialogFragment<DialogSongDetailBinding>() {
// Information about what song to display is initially within the navigation arguments // Information about what song to display is initially within the navigation arguments
// as a UID, as that is the only safe way to parcel an song. // as a UID, as that is the only safe way to parcel an song.
private val args: SongDetailDialogArgs by navArgs() private val args: SongDetailDialogArgs by navArgs()
private val detailAdapter = SongPropertyAdapter()
override fun onCreateBinding(inflater: LayoutInflater) = override fun onCreateBinding(inflater: LayoutInflater) =
DialogSongDetailBinding.inflate(inflater) DialogSongDetailBinding.inflate(inflater)
@ -55,6 +62,7 @@ class SongDetailDialog : ViewBindingDialogFragment<DialogSongDetailBinding>() {
override fun onBindingCreated(binding: DialogSongDetailBinding, savedInstanceState: Bundle?) { override fun onBindingCreated(binding: DialogSongDetailBinding, savedInstanceState: Bundle?) {
super.onBindingCreated(binding, savedInstanceState) super.onBindingCreated(binding, savedInstanceState)
binding.detailProperties.adapter = detailAdapter
// DetailViewModel handles most initialization from the navigation argument. // DetailViewModel handles most initialization from the navigation argument.
detailModel.setSongUid(args.itemUid) detailModel.setSongUid(args.itemUid)
collectImmediately(detailModel.currentSong, detailModel.songAudioInfo, ::updateSong) collectImmediately(detailModel.currentSong, detailModel.songAudioInfo, ::updateSong)
@ -67,35 +75,59 @@ class SongDetailDialog : ViewBindingDialogFragment<DialogSongDetailBinding>() {
return return
} }
val binding = requireBinding()
if (info != null) { if (info != null) {
// Finished loading song audio info, populate and show the list of Song information.
binding.detailLoading.isInvisible = true
binding.detailContainer.isInvisible = false
val context = requireContext() val context = requireContext()
binding.detailFileName.setText(song.path.name) detailAdapter.submitList(
binding.detailRelativeDir.setText(song.path.parent.resolveName(context)) buildList {
binding.detailFormat.setText(info.resolvedMimeType.resolveName(context)) add(SongProperty(R.string.lbl_name, song.zipName(context)))
binding.detailSize.setText(Formatter.formatFileSize(context, song.size)) add(SongProperty(R.string.lbl_album, song.album.zipName(context)))
binding.detailDuration.setText(song.durationMs.formatDurationMs(true)) add(SongProperty(R.string.lbl_artists, song.artists.zipNames(context)))
add(SongProperty(R.string.lbl_genres, song.genres.resolveNames(context)))
if (info.bitrateKbps != null) { song.date?.let { add(SongProperty(R.string.lbl_date, it.resolveDate(context))) }
binding.detailBitrate.setText(getString(R.string.fmt_bitrate, info.bitrateKbps)) song.track?.let {
} else { add(SongProperty(R.string.lbl_track, getString(R.string.fmt_number, it)))
binding.detailBitrate.setText(R.string.def_bitrate) }
} song.disc?.let {
val formattedNumber = getString(R.string.fmt_number, it.number)
if (info.sampleRateHz != null) { val zipped =
binding.detailSampleRate.setText( if (it.name != null) {
getString(R.string.fmt_sample_rate, info.sampleRateHz)) getString(R.string.fmt_zipped_names, it.name, formattedNumber)
} else { } else {
binding.detailSampleRate.setText(R.string.def_sample_rate) formattedNumber
} }
} else { add(SongProperty(R.string.lbl_disc, zipped))
// Loading is still on-going, don't show anything yet. }
binding.detailLoading.isInvisible = false add(SongProperty(R.string.lbl_file_name, song.path.name))
binding.detailContainer.isInvisible = true add(
SongProperty(
R.string.lbl_relative_path, song.path.parent.resolveName(context)))
info.resolvedMimeType.resolveName(context)?.let {
SongProperty(R.string.lbl_format, it)
}
add(
SongProperty(
R.string.lbl_size, Formatter.formatFileSize(context, song.size)))
add(SongProperty(R.string.lbl_duration, song.durationMs.formatDurationMs(true)))
info.bitrateKbps?.let {
add(SongProperty(R.string.lbl_bitrate, getString(R.string.fmt_bitrate, it)))
}
info.sampleRateHz?.let {
add(
SongProperty(
R.string.lbl_sample_rate, getString(R.string.fmt_sample_rate, it)))
}
},
BasicListInstructions.REPLACE)
} }
} }
private fun <T : Music> T.zipName(context: Context) =
if (rawSortName != null) {
getString(R.string.fmt_zipped_names, resolveName(context), rawSortName)
} else {
resolveName(context)
}
private fun <T : Music> List<T>.zipNames(context: Context) =
concatLocalized(context) { it.zipName(context) }
} }

View file

@ -33,7 +33,9 @@ import org.oxycblt.auxio.list.adapter.SelectionIndicatorAdapter
import org.oxycblt.auxio.list.adapter.SimpleDiffCallback import org.oxycblt.auxio.list.adapter.SimpleDiffCallback
import org.oxycblt.auxio.music.Album import org.oxycblt.auxio.music.Album
import org.oxycblt.auxio.music.Song import org.oxycblt.auxio.music.Song
import org.oxycblt.auxio.music.areRawNamesTheSame
import org.oxycblt.auxio.music.metadata.Disc import org.oxycblt.auxio.music.metadata.Disc
import org.oxycblt.auxio.music.resolveNames
import org.oxycblt.auxio.playback.formatDurationMs import org.oxycblt.auxio.playback.formatDurationMs
import org.oxycblt.auxio.util.context import org.oxycblt.auxio.util.context
import org.oxycblt.auxio.util.getPlural import org.oxycblt.auxio.util.getPlural
@ -136,7 +138,7 @@ private class AlbumDetailViewHolder private constructor(private val binding: Ite
// Artist name maps to the subhead text // Artist name maps to the subhead text
binding.detailSubhead.apply { binding.detailSubhead.apply {
text = album.resolveArtistContents(context) text = album.artists.resolveNames(context)
// Add a QoL behavior where navigation to the artist will occur if the artist // Add a QoL behavior where navigation to the artist will occur if the artist
// name is pressed. // name is pressed.
@ -173,7 +175,7 @@ private class AlbumDetailViewHolder private constructor(private val binding: Ite
object : SimpleDiffCallback<Album>() { object : SimpleDiffCallback<Album>() {
override fun areContentsTheSame(oldItem: Album, newItem: Album) = override fun areContentsTheSame(oldItem: Album, newItem: Album) =
oldItem.rawName == newItem.rawName && oldItem.rawName == newItem.rawName &&
oldItem.areArtistContentsTheSame(newItem) && oldItem.artists.areRawNamesTheSame(newItem.artists) &&
oldItem.dates == newItem.dates && oldItem.dates == newItem.dates &&
oldItem.songs.size == newItem.songs.size && oldItem.songs.size == newItem.songs.size &&
oldItem.durationMs == newItem.durationMs && oldItem.durationMs == newItem.durationMs &&

View file

@ -30,10 +30,7 @@ import org.oxycblt.auxio.list.Item
import org.oxycblt.auxio.list.SelectableListListener import org.oxycblt.auxio.list.SelectableListListener
import org.oxycblt.auxio.list.adapter.SelectionIndicatorAdapter import org.oxycblt.auxio.list.adapter.SelectionIndicatorAdapter
import org.oxycblt.auxio.list.adapter.SimpleDiffCallback import org.oxycblt.auxio.list.adapter.SimpleDiffCallback
import org.oxycblt.auxio.music.Album import org.oxycblt.auxio.music.*
import org.oxycblt.auxio.music.Artist
import org.oxycblt.auxio.music.Music
import org.oxycblt.auxio.music.Song
import org.oxycblt.auxio.util.context import org.oxycblt.auxio.util.context
import org.oxycblt.auxio.util.getPlural import org.oxycblt.auxio.util.getPlural
import org.oxycblt.auxio.util.inflater import org.oxycblt.auxio.util.inflater
@ -122,7 +119,7 @@ private class ArtistDetailViewHolder private constructor(private val binding: It
// Information about the artist's genre(s) map to the sub-head text // Information about the artist's genre(s) map to the sub-head text
binding.detailSubhead.apply { binding.detailSubhead.apply {
isVisible = true isVisible = true
text = artist.resolveGenreContents(binding.context) text = artist.genres.resolveNames(context)
} }
// Song and album counts map to the info // Song and album counts map to the info
@ -168,7 +165,7 @@ private class ArtistDetailViewHolder private constructor(private val binding: It
object : SimpleDiffCallback<Artist>() { object : SimpleDiffCallback<Artist>() {
override fun areContentsTheSame(oldItem: Artist, newItem: Artist) = override fun areContentsTheSame(oldItem: Artist, newItem: Artist) =
oldItem.rawName == newItem.rawName && oldItem.rawName == newItem.rawName &&
oldItem.areGenreContentsTheSame(newItem) && oldItem.genres.areRawNamesTheSame(newItem.genres) &&
oldItem.albums.size == newItem.albums.size && oldItem.albums.size == newItem.albums.size &&
oldItem.songs.size == newItem.songs.size oldItem.songs.size == newItem.songs.size
} }

View file

@ -0,0 +1,85 @@
/*
* Copyright (c) 2023 Auxio Project
*
* 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.detail.recycler
import android.view.View
import android.view.ViewGroup
import androidx.annotation.StringRes
import androidx.recyclerview.widget.RecyclerView
import org.oxycblt.auxio.databinding.ItemSongPropertyBinding
import org.oxycblt.auxio.list.Item
import org.oxycblt.auxio.list.adapter.BasicListInstructions
import org.oxycblt.auxio.list.adapter.DiffAdapter
import org.oxycblt.auxio.list.adapter.ListDiffer
import org.oxycblt.auxio.list.adapter.SimpleDiffCallback
import org.oxycblt.auxio.list.recycler.DialogRecyclerView
import org.oxycblt.auxio.util.context
import org.oxycblt.auxio.util.inflater
/**
* An adapter for [SongProperty] instances.
* @author Alexander Capehart (OxygenCobalt)
*/
class SongPropertyAdapter :
DiffAdapter<SongProperty, BasicListInstructions, SongPropertyViewHolder>(
ListDiffer.Blocking(SongPropertyViewHolder.DIFF_CALLBACK)) {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) =
SongPropertyViewHolder.from(parent)
override fun onBindViewHolder(holder: SongPropertyViewHolder, position: Int) {
holder.bind(getItem(position))
}
}
/**
* A property entry for use in [SongPropertyAdapter].
* @param name The contextual title to use for the property.
* @param value The value of the property.
* @author Alexander Capehart (OxygenCobalt)
*/
data class SongProperty(@StringRes val name: Int, val value: String) : Item
/**
* A [RecyclerView.ViewHolder] that displays a [SongProperty]. Use [from] to create an instance.
* @author Alexander Capehart (OxygenCobalt)
*/
class SongPropertyViewHolder private constructor(private val binding: ItemSongPropertyBinding) :
DialogRecyclerView.ViewHolder(binding.root) {
fun bind(property: SongProperty) {
val context = binding.context
binding.propertyName.hint = context.getString(property.name)
binding.propertyValue.setText(property.value)
}
companion object {
/**
* Create a new instance.
* @param parent The parent to inflate this instance from.
* @return A new instance.
*/
fun from(parent: View) =
SongPropertyViewHolder(ItemSongPropertyBinding.inflate(parent.context.inflater))
/** A comparator that can be used with DiffUtil. */
val DIFF_CALLBACK =
object : SimpleDiffCallback<SongProperty>() {
override fun areContentsTheSame(oldItem: SongProperty, newItem: SongProperty) =
oldItem.name == newItem.name && oldItem.value == newItem.value
}
}
}

View file

@ -49,7 +49,7 @@ class SongViewHolder private constructor(private val binding: ItemSongBinding) :
listener.bind(song, this, menuButton = binding.songMenu) listener.bind(song, this, menuButton = binding.songMenu)
binding.songAlbumCover.bind(song) binding.songAlbumCover.bind(song)
binding.songName.text = song.resolveName(binding.context) binding.songName.text = song.resolveName(binding.context)
binding.songInfo.text = song.resolveArtistContents(binding.context) binding.songInfo.text = song.artists.resolveNames(binding.context)
} }
override fun updatePlayingIndicator(isActive: Boolean, isPlaying: Boolean) { override fun updatePlayingIndicator(isActive: Boolean, isPlaying: Boolean) {
@ -76,7 +76,8 @@ class SongViewHolder private constructor(private val binding: ItemSongBinding) :
val DIFF_CALLBACK = val DIFF_CALLBACK =
object : SimpleDiffCallback<Song>() { object : SimpleDiffCallback<Song>() {
override fun areContentsTheSame(oldItem: Song, newItem: Song) = override fun areContentsTheSame(oldItem: Song, newItem: Song) =
oldItem.rawName == newItem.rawName && oldItem.areArtistContentsTheSame(newItem) oldItem.rawName == newItem.rawName &&
oldItem.artists.areRawNamesTheSame(newItem.artists)
} }
} }
} }
@ -96,7 +97,7 @@ class AlbumViewHolder private constructor(private val binding: ItemParentBinding
listener.bind(album, this, menuButton = binding.parentMenu) listener.bind(album, this, menuButton = binding.parentMenu)
binding.parentImage.bind(album) binding.parentImage.bind(album)
binding.parentName.text = album.resolveName(binding.context) binding.parentName.text = album.resolveName(binding.context)
binding.parentInfo.text = album.resolveArtistContents(binding.context) binding.parentInfo.text = album.artists.resolveNames(binding.context)
} }
override fun updatePlayingIndicator(isActive: Boolean, isPlaying: Boolean) { override fun updatePlayingIndicator(isActive: Boolean, isPlaying: Boolean) {
@ -124,7 +125,7 @@ class AlbumViewHolder private constructor(private val binding: ItemParentBinding
object : SimpleDiffCallback<Album>() { object : SimpleDiffCallback<Album>() {
override fun areContentsTheSame(oldItem: Album, newItem: Album) = override fun areContentsTheSame(oldItem: Album, newItem: Album) =
oldItem.rawName == newItem.rawName && oldItem.rawName == newItem.rawName &&
oldItem.areArtistContentsTheSame(newItem) && oldItem.artists.areRawNamesTheSame(newItem.artists) &&
oldItem.releaseType == newItem.releaseType oldItem.releaseType == newItem.releaseType
} }
} }

View file

@ -23,6 +23,7 @@ import android.os.Parcelable
import java.security.MessageDigest import java.security.MessageDigest
import java.text.CollationKey import java.text.CollationKey
import java.util.UUID import java.util.UUID
import kotlin.math.max
import kotlinx.parcelize.IgnoredOnParcel import kotlinx.parcelize.IgnoredOnParcel
import kotlinx.parcelize.Parcelize import kotlinx.parcelize.Parcelize
import org.oxycblt.auxio.list.Item import org.oxycblt.auxio.list.Item
@ -31,6 +32,7 @@ import org.oxycblt.auxio.music.metadata.Disc
import org.oxycblt.auxio.music.metadata.ReleaseType import org.oxycblt.auxio.music.metadata.ReleaseType
import org.oxycblt.auxio.music.storage.MimeType import org.oxycblt.auxio.music.storage.MimeType
import org.oxycblt.auxio.music.storage.Path import org.oxycblt.auxio.music.storage.Path
import org.oxycblt.auxio.util.concatLocalized
import org.oxycblt.auxio.util.toUuidOrNull import org.oxycblt.auxio.util.toUuidOrNull
/** /**
@ -269,28 +271,11 @@ interface Song : Music {
* this field. * this field.
*/ */
val artists: List<Artist> val artists: List<Artist>
/**
* Resolves one or more [Artist]s into a single piece of human-readable names.
* @param context [Context] required for [resolveName]. formatter.
*/
fun resolveArtistContents(context: Context): String
/**
* Checks if the [Artist] *display* of this [Song] and another [Song] are equal. This will only
* compare surface-level names, and not [Music.UID]s.
* @param other The [Song] to compare to.
* @return True if the [Artist] displays are equal, false otherwise
*/
fun areArtistContentsTheSame(other: Song): Boolean
/** /**
* The parent [Genre]s of this [Song]. Is often one, but there can be multiple if more than one * The parent [Genre]s of this [Song]. Is often one, but there can be multiple if more than one
* [Genre] name was specified in the metadata. * [Genre] name was specified in the metadata.
*/ */
val genres: List<Genre> val genres: List<Genre>
/**
* Resolves one or more [Genre]s into a single piece human-readable names.
* @param context [Context] required for [resolveName].
*/
fun resolveGenreContents(context: Context): String
} }
/** /**
@ -321,18 +306,6 @@ interface Album : MusicParent {
* are prioritized for this field. * are prioritized for this field.
*/ */
val artists: List<Artist> val artists: List<Artist>
/**
* Resolves one or more [Artist]s into a single piece of human-readable names.
* @param context [Context] required for [resolveName].
*/
fun resolveArtistContents(context: Context): String
/**
* Checks if the [Artist] *display* of this [Album] and another [Album] are equal. This will
* only compare surface-level names, and not [Music.UID]s.
* @param other The [Album] to compare to.
* @return True if the [Artist] displays are equal, false otherwise
*/
fun areArtistContentsTheSame(other: Album): Boolean
} }
/** /**
@ -359,18 +332,6 @@ interface Artist : MusicParent {
val isCollaborator: Boolean val isCollaborator: Boolean
/** The [Genre]s of this artist. */ /** The [Genre]s of this artist. */
val genres: List<Genre> val genres: List<Genre>
/**
* Resolves one or more [Genre]s into a single piece of human-readable names.
* @param context [Context] required for [resolveName].
*/
fun resolveGenreContents(context: Context): String
/**
* Checks if the [Genre] *display* of this [Artist] and another [Artist] are equal. This will
* only compare surface-level names, and not [Music.UID]s.
* @param other The [Artist] to compare to.
* @return True if the [Genre] displays are equal, false otherwise
*/
fun areGenreContentsTheSame(other: Artist): Boolean
} }
/** /**
@ -385,3 +346,18 @@ interface Genre : MusicParent {
/** The total duration of the songs in this genre, in milliseconds. */ /** The total duration of the songs in this genre, in milliseconds. */
val durationMs: Long val durationMs: Long
} }
fun <T : Music> List<T>.resolveNames(context: Context) =
concatLocalized(context) { it.resolveName(context) }
fun <T : Music> List<T>.areRawNamesTheSame(other: List<T>): Boolean {
for (i in 0 until max(size, other.size)) {
val a = getOrNull(i) ?: return false
val b = other.getOrNull(i) ?: return false
if (a.rawName != b.rawName) {
return false
}
}
return true
}

View file

@ -22,7 +22,6 @@ import androidx.annotation.VisibleForTesting
import java.security.MessageDigest import java.security.MessageDigest
import java.text.CollationKey import java.text.CollationKey
import java.text.Collator import java.text.Collator
import kotlin.math.max
import org.oxycblt.auxio.R import org.oxycblt.auxio.R
import org.oxycblt.auxio.list.Sort import org.oxycblt.auxio.list.Sort
import org.oxycblt.auxio.music.Album import org.oxycblt.auxio.music.Album
@ -124,23 +123,10 @@ class SongImpl(rawSong: RawSong, musicSettings: MusicSettings) : Song {
private val _artists = mutableListOf<ArtistImpl>() private val _artists = mutableListOf<ArtistImpl>()
override val artists: List<Artist> override val artists: List<Artist>
get() = _artists get() = _artists
override fun resolveArtistContents(context: Context) = resolveNames(context, artists)
override fun areArtistContentsTheSame(other: Song): Boolean {
for (i in 0 until max(artists.size, other.artists.size)) {
val a = artists.getOrNull(i) ?: return false
val b = other.artists.getOrNull(i) ?: return false
if (a.rawName != b.rawName) {
return false
}
}
return true
}
private val _genres = mutableListOf<GenreImpl>() private val _genres = mutableListOf<GenreImpl>()
override val genres: List<Genre> override val genres: List<Genre>
get() = _genres get() = _genres
override fun resolveGenreContents(context: Context) = resolveNames(context, genres)
/** /**
* The [RawAlbum] instances collated by the [Song]. This can be used to group [Song]s into an * The [RawAlbum] instances collated by the [Song]. This can be used to group [Song]s into an
@ -268,18 +254,7 @@ class AlbumImpl(val rawAlbum: RawAlbum, override val songs: List<SongImpl>) : Al
private val _artists = mutableListOf<ArtistImpl>() private val _artists = mutableListOf<ArtistImpl>()
override val artists: List<Artist> override val artists: List<Artist>
get() = _artists get() = _artists
override fun resolveArtistContents(context: Context) = resolveNames(context, artists)
override fun areArtistContentsTheSame(other: Album): Boolean {
for (i in 0 until max(artists.size, other.artists.size)) {
val a = artists.getOrNull(i) ?: return false
val b = other.artists.getOrNull(i) ?: return false
if (a.rawName != b.rawName) {
return false
}
}
return true
}
init { init {
var totalDuration: Long = 0 var totalDuration: Long = 0
var earliestDateAdded: Long = Long.MAX_VALUE var earliestDateAdded: Long = Long.MAX_VALUE
@ -361,18 +336,6 @@ class ArtistImpl(private val rawArtist: RawArtist, songAlbums: List<Music>) : Ar
other is ArtistImpl && uid == other.uid && songs == other.songs other is ArtistImpl && uid == other.uid && songs == other.songs
override lateinit var genres: List<Genre> override lateinit var genres: List<Genre>
override fun resolveGenreContents(context: Context) = resolveNames(context, genres)
override fun areGenreContentsTheSame(other: Artist): Boolean {
for (i in 0 until max(genres.size, other.genres.size)) {
val a = genres.getOrNull(i) ?: return false
val b = other.genres.getOrNull(i) ?: return false
if (a.rawName != b.rawName) {
return false
}
}
return true
}
init { init {
val distinctSongs = mutableSetOf<Song>() val distinctSongs = mutableSetOf<Song>()
@ -534,27 +497,6 @@ fun MessageDigest.update(n: Int?) {
} }
} }
/**
* Join a list of [Music]'s resolved names into a string in a localized manner, using
* [R.string.fmt_list].
* @param context [Context] required to obtain localized formatting.
* @param values The list of [Music] to format.
* @return A single string consisting of the values delimited by a localized separator.
*/
private fun resolveNames(context: Context, values: List<Music>): String {
if (values.isEmpty()) {
// Nothing to do.
return ""
}
var joined = values.first().resolveName(context)
for (i in 1..values.lastIndex) {
// Chain all previous values with the next value in the list with another delimiter.
joined = context.getString(R.string.fmt_list, joined, values[i].resolveName(context))
}
return joined
}
/** Cached collator instance re-used with [makeCollationKey]. */ /** Cached collator instance re-used with [makeCollationKey]. */
private val COLLATOR: Collator = Collator.getInstance().apply { strength = Collator.PRIMARY } private val COLLATOR: Collator = Collator.getInstance().apply { strength = Collator.PRIMARY }

View file

@ -142,10 +142,9 @@ data class MimeType(val fromExtension: String, val fromFormat: String?) {
* Resolve the mime type into a human-readable format name, such as "Ogg Vorbis". * Resolve the mime type into a human-readable format name, such as "Ogg Vorbis".
* @param context [Context] required to obtain human-readable strings. * @param context [Context] required to obtain human-readable strings.
* @return A human-readable name for this mime type. Will first try [fromFormat], then falling * @return A human-readable name for this mime type. Will first try [fromFormat], then falling
* back to [fromExtension], then falling back to the extension name, and then finally a * back to [fromExtension], and then null if that fails.
* placeholder "No Format" string.
*/ */
fun resolveName(context: Context): String { fun resolveName(context: Context): String? {
// We try our best to produce a more readable name for the common audio formats. // We try our best to produce a more readable name for the common audio formats.
val formatName = val formatName =
when (fromFormat) { when (fromFormat) {
@ -201,8 +200,6 @@ data class MimeType(val fromExtension: String, val fromFormat: String?) {
} else { } else {
// Fall back to the extension if we can't find a special name for this format. // Fall back to the extension if we can't find a special name for this format.
MimeTypeMap.getSingleton().getExtensionFromMimeType(fromExtension)?.uppercase() MimeTypeMap.getSingleton().getExtensionFromMimeType(fromExtension)?.uppercase()
// Fall back to a placeholder if even that fails.
?: context.getString(R.string.def_codec)
} }
} }
} }

View file

@ -24,6 +24,7 @@ import dagger.hilt.android.AndroidEntryPoint
import org.oxycblt.auxio.R import org.oxycblt.auxio.R
import org.oxycblt.auxio.databinding.FragmentPlaybackBarBinding import org.oxycblt.auxio.databinding.FragmentPlaybackBarBinding
import org.oxycblt.auxio.music.Song import org.oxycblt.auxio.music.Song
import org.oxycblt.auxio.music.resolveNames
import org.oxycblt.auxio.playback.state.RepeatMode import org.oxycblt.auxio.playback.state.RepeatMode
import org.oxycblt.auxio.ui.MainNavigationAction import org.oxycblt.auxio.ui.MainNavigationAction
import org.oxycblt.auxio.ui.NavigationViewModel import org.oxycblt.auxio.ui.NavigationViewModel
@ -122,7 +123,7 @@ class PlaybackBarFragment : ViewBindingFragment<FragmentPlaybackBarBinding>() {
val binding = requireBinding() val binding = requireBinding()
binding.playbackCover.bind(song) binding.playbackCover.bind(song)
binding.playbackSong.text = song.resolveName(context) binding.playbackSong.text = song.resolveName(context)
binding.playbackInfo.text = song.resolveArtistContents(context) binding.playbackInfo.text = song.artists.resolveNames(context)
binding.playbackProgressBar.max = song.durationMs.msToDs().toInt() binding.playbackProgressBar.max = song.durationMs.msToDs().toInt()
} }
} }

View file

@ -34,6 +34,7 @@ import org.oxycblt.auxio.R
import org.oxycblt.auxio.databinding.FragmentPlaybackPanelBinding import org.oxycblt.auxio.databinding.FragmentPlaybackPanelBinding
import org.oxycblt.auxio.music.MusicParent import org.oxycblt.auxio.music.MusicParent
import org.oxycblt.auxio.music.Song import org.oxycblt.auxio.music.Song
import org.oxycblt.auxio.music.resolveNames
import org.oxycblt.auxio.playback.state.RepeatMode import org.oxycblt.auxio.playback.state.RepeatMode
import org.oxycblt.auxio.playback.ui.StyledSeekBar import org.oxycblt.auxio.playback.ui.StyledSeekBar
import org.oxycblt.auxio.ui.MainNavigationAction import org.oxycblt.auxio.ui.MainNavigationAction
@ -184,7 +185,7 @@ class PlaybackPanelFragment :
val context = requireContext() val context = requireContext()
binding.playbackCover.bind(song) binding.playbackCover.bind(song)
binding.playbackSong.text = song.resolveName(context) binding.playbackSong.text = song.resolveName(context)
binding.playbackArtist.text = song.resolveArtistContents(context) binding.playbackArtist.text = song.artists.resolveNames(context)
binding.playbackAlbum.text = song.album.resolveName(context) binding.playbackAlbum.text = song.album.resolveName(context)
binding.playbackSeekBar.durationDs = song.durationMs.msToDs() binding.playbackSeekBar.durationDs = song.durationMs.msToDs()
} }

View file

@ -33,6 +33,7 @@ import org.oxycblt.auxio.list.adapter.ListDiffer
import org.oxycblt.auxio.list.adapter.PlayingIndicatorAdapter import org.oxycblt.auxio.list.adapter.PlayingIndicatorAdapter
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.util.* import org.oxycblt.auxio.util.*
/** /**
@ -149,7 +150,7 @@ class QueueSongViewHolder private constructor(private val binding: ItemQueueSong
listener.bind(song, this, bodyView, binding.songDragHandle) listener.bind(song, this, bodyView, binding.songDragHandle)
binding.songAlbumCover.bind(song) binding.songAlbumCover.bind(song)
binding.songName.text = song.resolveName(binding.context) binding.songName.text = song.resolveName(binding.context)
binding.songInfo.text = song.resolveArtistContents(binding.context) binding.songInfo.text = song.artists.resolveNames(binding.context)
// Not swiping this ViewHolder if it's being re-bound, ensure that the background is // Not swiping this ViewHolder if it's being re-bound, ensure that the background is
// not visible. See QueueDragCallback for why this is done. // not visible. See QueueDragCallback for why this is done.
binding.background.isInvisible = true binding.background.isInvisible = true

View file

@ -35,6 +35,7 @@ import org.oxycblt.auxio.image.BitmapProvider
import org.oxycblt.auxio.image.ImageSettings import org.oxycblt.auxio.image.ImageSettings
import org.oxycblt.auxio.music.MusicParent import org.oxycblt.auxio.music.MusicParent
import org.oxycblt.auxio.music.Song import org.oxycblt.auxio.music.Song
import org.oxycblt.auxio.music.resolveNames
import org.oxycblt.auxio.playback.ActionMode import org.oxycblt.auxio.playback.ActionMode
import org.oxycblt.auxio.playback.PlaybackSettings import org.oxycblt.auxio.playback.PlaybackSettings
import org.oxycblt.auxio.playback.queue.Queue import org.oxycblt.auxio.playback.queue.Queue
@ -285,7 +286,7 @@ constructor(
// Populate MediaMetadataCompat. For efficiency, cache some fields that are re-used // Populate MediaMetadataCompat. For efficiency, cache some fields that are re-used
// several times. // several times.
val title = song.resolveName(context) val title = song.resolveName(context)
val artist = song.resolveArtistContents(context) val artist = song.artists.resolveNames(context)
val builder = val builder =
MediaMetadataCompat.Builder() MediaMetadataCompat.Builder()
.putText(MediaMetadataCompat.METADATA_KEY_TITLE, title) .putText(MediaMetadataCompat.METADATA_KEY_TITLE, title)
@ -295,14 +296,14 @@ constructor(
.putText(MediaMetadataCompat.METADATA_KEY_ARTIST, artist) .putText(MediaMetadataCompat.METADATA_KEY_ARTIST, artist)
.putText( .putText(
MediaMetadataCompat.METADATA_KEY_ALBUM_ARTIST, MediaMetadataCompat.METADATA_KEY_ALBUM_ARTIST,
song.album.resolveArtistContents(context)) song.album.artists.resolveNames(context))
.putText(MediaMetadataCompat.METADATA_KEY_AUTHOR, artist) .putText(MediaMetadataCompat.METADATA_KEY_AUTHOR, artist)
.putText(MediaMetadataCompat.METADATA_KEY_COMPOSER, artist) .putText(MediaMetadataCompat.METADATA_KEY_COMPOSER, artist)
.putText(MediaMetadataCompat.METADATA_KEY_WRITER, artist) .putText(MediaMetadataCompat.METADATA_KEY_WRITER, artist)
.putText( .putText(
METADATA_KEY_PARENT, METADATA_KEY_PARENT,
parent?.resolveName(context) ?: context.getString(R.string.lbl_all_songs)) parent?.resolveName(context) ?: context.getString(R.string.lbl_all_songs))
.putText(MediaMetadataCompat.METADATA_KEY_GENRE, song.resolveGenreContents(context)) .putText(MediaMetadataCompat.METADATA_KEY_GENRE, song.genres.resolveNames(context))
.putText(MediaMetadataCompat.METADATA_KEY_DISPLAY_TITLE, title) .putText(MediaMetadataCompat.METADATA_KEY_DISPLAY_TITLE, title)
.putText(MediaMetadataCompat.METADATA_KEY_DISPLAY_SUBTITLE, artist) .putText(MediaMetadataCompat.METADATA_KEY_DISPLAY_SUBTITLE, artist)
.putText( .putText(
@ -348,7 +349,7 @@ constructor(
// as it's used to request a song to be played from the queue. // as it's used to request a song to be played from the queue.
.setMediaId(song.uid.toString()) .setMediaId(song.uid.toString())
.setTitle(song.resolveName(context)) .setTitle(song.resolveName(context))
.setSubtitle(song.resolveArtistContents(context)) .setSubtitle(song.artists.resolveNames(context))
// Since we usually have to load many songs into the queue, use the // Since we usually have to load many songs into the queue, use the
// MediaStore URI instead of loading a bitmap. // MediaStore URI instead of loading a bitmap.
.setIconUri(song.album.coverUri) .setIconUri(song.album.coverUri)

View file

@ -39,6 +39,7 @@ import androidx.core.content.ContextCompat
import kotlin.reflect.KClass import kotlin.reflect.KClass
import org.oxycblt.auxio.IntegerTable import org.oxycblt.auxio.IntegerTable
import org.oxycblt.auxio.MainActivity import org.oxycblt.auxio.MainActivity
import org.oxycblt.auxio.R
/** /**
* Get a [LayoutInflater] instance from this [Context]. * Get a [LayoutInflater] instance from this [Context].
@ -57,6 +58,25 @@ val Context.isNight
val Context.isLandscape val Context.isLandscape
get() = resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE get() = resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE
/**
* Concatenate values in a list together in a localized manner.
* @param context [Context] require.d
* @param map Function to map the [T] values to a string value to be concatenated.
*/
inline fun <T> List<T>.concatLocalized(context: Context, map: (T) -> String): String {
if (isEmpty()) {
// Nothing to do.
return ""
}
var joined = map(first())
for (i in 1..lastIndex) {
// Chain all previous values with the next value in the list with another delimiter.
joined = context.getString(R.string.fmt_list, joined, map(get(i)))
}
return joined
}
/** /**
* @brief Get a plural resource. * @brief Get a plural resource.
* @param pluralRes A plural resource ID. * @param pluralRes A plural resource ID.

View file

@ -31,6 +31,7 @@ import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject import javax.inject.Inject
import org.oxycblt.auxio.BuildConfig import org.oxycblt.auxio.BuildConfig
import org.oxycblt.auxio.R import org.oxycblt.auxio.R
import org.oxycblt.auxio.music.resolveNames
import org.oxycblt.auxio.playback.state.RepeatMode import org.oxycblt.auxio.playback.state.RepeatMode
import org.oxycblt.auxio.playback.system.PlaybackService import org.oxycblt.auxio.playback.system.PlaybackService
import org.oxycblt.auxio.ui.UISettings import org.oxycblt.auxio.ui.UISettings
@ -265,7 +266,7 @@ class WidgetProvider : AppWidgetProvider() {
): RemoteViews { ): RemoteViews {
setupCover(context, state) setupCover(context, state)
setTextViewText(R.id.widget_song, state.song.resolveName(context)) setTextViewText(R.id.widget_song, state.song.resolveName(context))
setTextViewText(R.id.widget_artist, state.song.resolveArtistContents(context)) setTextViewText(R.id.widget_artist, state.song.artists.resolveNames(context))
return this return this
} }

View file

@ -1,153 +1,12 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" <org.oxycblt.auxio.list.recycler.DialogRecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/detail_properties"
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"
android:orientation="vertical"
<androidx.core.widget.NestedScrollView android:paddingStart="@dimen/spacing_small"
style="@style/Widget.Auxio.Dialog.NestedScrollView" android:paddingEnd="@dimen/spacing_small"
android:layout_width="match_parent" tools:listitem="@layout/item_song_property" />
android:layout_height="match_parent">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:animateLayoutChanges="true">
<com.google.android.material.progressindicator.LinearProgressIndicator
android:id="@+id/detail_loading"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:indeterminate="true"
android:paddingStart="@dimen/spacing_large"
android:paddingEnd="@dimen/spacing_large"
app:indeterminateAnimationType="disjoint" />
<LinearLayout
android:id="@+id/detail_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingStart="@dimen/spacing_large"
android:paddingEnd="@dimen/spacing_large">
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/lbl_file_name"
app:expandedHintEnabled="false">
<org.oxycblt.auxio.detail.ReadOnlyTextInput
android:id="@+id/detail_file_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAlignment="viewStart"
tools:text="file.mp3" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_mid_medium"
android:hint="@string/lbl_relative_path"
app:expandedHintEnabled="false">
<org.oxycblt.auxio.detail.ReadOnlyTextInput
android:id="@+id/detail_relative_dir"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAlignment="viewStart"
tools:text="/path/to" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_mid_medium"
android:hint="@string/lbl_format"
app:expandedHintEnabled="false">
<org.oxycblt.auxio.detail.ReadOnlyTextInput
android:id="@+id/detail_format"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAlignment="viewStart"
tools:text="MP3" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_mid_medium"
android:hint="@string/lbl_size"
app:expandedHintEnabled="false">
<org.oxycblt.auxio.detail.ReadOnlyTextInput
android:id="@+id/detail_size"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAlignment="viewStart"
tools:text="16 MB" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_mid_medium"
android:hint="@string/lbl_sort_duration"
app:expandedHintEnabled="false">
<org.oxycblt.auxio.detail.ReadOnlyTextInput
android:id="@+id/detail_duration"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAlignment="viewStart"
tools:text="3:20" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_mid_medium"
android:hint="@string/lbl_bitrate"
app:expandedHintEnabled="false">
<org.oxycblt.auxio.detail.ReadOnlyTextInput
android:id="@+id/detail_bitrate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAlignment="viewStart"
tools:text="320 kb/s" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_mid_medium"
android:hint="@string/lbl_sample_rate"
app:expandedHintEnabled="false">
<org.oxycblt.auxio.detail.ReadOnlyTextInput
android:id="@+id/detail_sample_rate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAlignment="viewStart"
tools:text="44100 Hz" />
</com.google.android.material.textfield.TextInputLayout>
</LinearLayout>
</FrameLayout>
</androidx.core.widget.NestedScrollView>
</FrameLayout>

View file

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.textfield.TextInputLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/property_name"
android:paddingStart="@dimen/spacing_medium"
android:paddingEnd="@dimen/spacing_medium"
android:paddingTop="@dimen/spacing_small"
android:paddingBottom="@dimen/spacing_small"
tools:hint="@string/lbl_file_name"
app:expandedHintEnabled="false">
<org.oxycblt.auxio.detail.ReadOnlyTextInput
android:id="@+id/property_value"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAlignment="viewStart"
tools:text="file.mp3" />
</com.google.android.material.textfield.TextInputLayout>

View file

@ -4,10 +4,10 @@
android:id="@+id/sort_modes"> android:id="@+id/sort_modes">
<item <item
android:id="@+id/option_sort_disc" android:id="@+id/option_sort_disc"
android:title="@string/lbl_sort_disc" /> android:title="@string/lbl_disc" />
<item <item
android:id="@+id/option_sort_track" android:id="@+id/option_sort_track"
android:title="@string/lbl_sort_track" /> android:title="@string/lbl_track" />
</group> </group>
<group android:checkableBehavior="single" <group android:checkableBehavior="single"
android:id="@+id/sort_direction"> android:id="@+id/sort_direction">

View file

@ -4,16 +4,16 @@
android:id="@+id/sort_modes"> android:id="@+id/sort_modes">
<item <item
android:id="@+id/option_sort_name" android:id="@+id/option_sort_name"
android:title="@string/lbl_sort_name" /> android:title="@string/lbl_name" />
<item <item
android:id="@+id/option_sort_album" android:id="@+id/option_sort_album"
android:title="@string/lbl_album" /> android:title="@string/lbl_album" />
<item <item
android:id="@+id/option_sort_year" android:id="@+id/option_sort_year"
android:title="@string/lbl_sort_date" /> android:title="@string/lbl_date" />
<item <item
android:id="@+id/option_sort_duration" android:id="@+id/option_sort_duration"
android:title="@string/lbl_sort_duration" /> android:title="@string/lbl_duration" />
</group> </group>
<group android:checkableBehavior="single" <group android:checkableBehavior="single"
android:id="@+id/sort_direction"> android:id="@+id/sort_direction">

View file

@ -4,7 +4,7 @@
android:id="@+id/sort_modes"> android:id="@+id/sort_modes">
<item <item
android:id="@+id/option_sort_name" android:id="@+id/option_sort_name"
android:title="@string/lbl_sort_name" /> android:title="@string/lbl_name" />
<item <item
android:id="@+id/option_sort_artist" android:id="@+id/option_sort_artist"
android:title="@string/lbl_artist" /> android:title="@string/lbl_artist" />
@ -13,10 +13,10 @@
android:title="@string/lbl_album" /> android:title="@string/lbl_album" />
<item <item
android:id="@+id/option_sort_year" android:id="@+id/option_sort_year"
android:title="@string/lbl_sort_date" /> android:title="@string/lbl_date" />
<item <item
android:id="@+id/option_sort_duration" android:id="@+id/option_sort_duration"
android:title="@string/lbl_sort_duration" /> android:title="@string/lbl_duration" />
</group> </group>
<group android:checkableBehavior="single" <group android:checkableBehavior="single"
android:id="@+id/sort_direction"> android:id="@+id/sort_direction">

View file

@ -18,7 +18,7 @@
android:id="@+id/sort_modes"> android:id="@+id/sort_modes">
<item <item
android:id="@+id/option_sort_name" android:id="@+id/option_sort_name"
android:title="@string/lbl_sort_name" /> android:title="@string/lbl_name" />
<item <item
android:id="@+id/option_sort_artist" android:id="@+id/option_sort_artist"
android:title="@string/lbl_artist" /> android:title="@string/lbl_artist" />
@ -27,16 +27,16 @@
android:title="@string/lbl_album" /> android:title="@string/lbl_album" />
<item <item
android:id="@+id/option_sort_year" android:id="@+id/option_sort_year"
android:title="@string/lbl_sort_date" /> android:title="@string/lbl_date" />
<item <item
android:id="@+id/option_sort_duration" android:id="@+id/option_sort_duration"
android:title="@string/lbl_sort_duration" /> android:title="@string/lbl_duration" />
<item <item
android:id="@+id/option_sort_count" android:id="@+id/option_sort_count"
android:title="@string/lbl_sort_count" /> android:title="@string/lbl_song_count" />
<item <item
android:id="@+id/option_sort_date_added" android:id="@+id/option_sort_date_added"
android:title="@string/lbl_sort_date_added" /> android:title="@string/lbl_date_added" />
</group> </group>
<group android:checkableBehavior="single" <group android:checkableBehavior="single"
android:id="@+id/sort_direction"> android:id="@+id/sort_direction">

View file

@ -15,10 +15,10 @@
<string name="lbl_filter">تصفية</string> <string name="lbl_filter">تصفية</string>
<string name="lbl_filter_all">الكل</string> <string name="lbl_filter_all">الكل</string>
<string name="lbl_sort">فرز</string> <string name="lbl_sort">فرز</string>
<string name="lbl_sort_name">اسم</string> <string name="lbl_name">اسم</string>
<string name="lbl_artist">فنان</string> <string name="lbl_artist">فنان</string>
<string name="lbl_album">البوم</string> <string name="lbl_album">البوم</string>
<string name="lbl_sort_date">سنة</string> <string name="lbl_date">سنة</string>
<string name="lbl_sort_asc">تصاعدي</string> <string name="lbl_sort_asc">تصاعدي</string>
<string name="lbl_playback">يعمل الآن</string> <string name="lbl_playback">يعمل الآن</string>
<string name="lbl_play">تشغيل</string> <string name="lbl_play">تشغيل</string>

View file

@ -59,16 +59,16 @@
<string name="lbl_search">Пошук</string> <string name="lbl_search">Пошук</string>
<string name="lbl_filter">Фільтр</string> <string name="lbl_filter">Фільтр</string>
<string name="lbl_filter_all">Усе</string> <string name="lbl_filter_all">Усе</string>
<string name="lbl_sort_name">Назва</string> <string name="lbl_name">Назва</string>
<string name="lbl_genres">Жанры</string> <string name="lbl_genres">Жанры</string>
<string name="lbl_sort">Сартаваць</string> <string name="lbl_sort">Сартаваць</string>
<string name="lbl_sort_date_added">Дата дабаўлення</string> <string name="lbl_date_added">Дата дабаўлення</string>
<string name="lbl_state_restored">Дзяржава адноўлена</string> <string name="lbl_state_restored">Дзяржава адноўлена</string>
<string name="lbl_sort_disc">Дыск</string> <string name="lbl_disc">Дыск</string>
<string name="lbl_sort_date">Дата</string> <string name="lbl_date">Дата</string>
<string name="lbl_sort_duration">Працягласць</string> <string name="lbl_duration">Працягласць</string>
<string name="lbl_sort_count">Колькасць песень</string> <string name="lbl_song_count">Колькасць песень</string>
<string name="lbl_sort_track">Кампазіцыя</string> <string name="lbl_track">Кампазіцыя</string>
<string name="lbl_playback">Зараз іграе</string> <string name="lbl_playback">Зараз іграе</string>
<string name="lbl_play">Гуляць</string> <string name="lbl_play">Гуляць</string>
<string name="lbl_shuffle">Ператасаваць</string> <string name="lbl_shuffle">Ператасаваць</string>

View file

@ -17,14 +17,14 @@
<string name="lbl_filter">Filtr</string> <string name="lbl_filter">Filtr</string>
<string name="lbl_filter_all">Vše</string> <string name="lbl_filter_all">Vše</string>
<string name="lbl_sort">Řadit</string> <string name="lbl_sort">Řadit</string>
<string name="lbl_sort_name">Název</string> <string name="lbl_name">Název</string>
<string name="lbl_artist">Umělec</string> <string name="lbl_artist">Umělec</string>
<string name="lbl_album">Album</string> <string name="lbl_album">Album</string>
<string name="lbl_sort_date">Rok</string> <string name="lbl_date">Rok</string>
<string name="lbl_sort_duration">Trvání</string> <string name="lbl_duration">Trvání</string>
<string name="lbl_sort_count">Počet skladeb</string> <string name="lbl_song_count">Počet skladeb</string>
<string name="lbl_sort_disc">Disk</string> <string name="lbl_disc">Disk</string>
<string name="lbl_sort_track">Stopa</string> <string name="lbl_track">Stopa</string>
<string name="lbl_sort_asc">Vzestupně</string> <string name="lbl_sort_asc">Vzestupně</string>
<string name="lbl_playback">Právě hraje</string> <string name="lbl_playback">Právě hraje</string>
<string name="lbl_play">Přehrát</string> <string name="lbl_play">Přehrát</string>
@ -204,7 +204,7 @@
<string name="lng_observing">Sledování změn v hudební knihovně…</string> <string name="lng_observing">Sledování změn v hudební knihovně…</string>
<string name="set_observing_desc">Znovu načíst hudební knihovnu při změně (vyžaduje trvalé oznámení)</string> <string name="set_observing_desc">Znovu načíst hudební knihovnu při změně (vyžaduje trvalé oznámení)</string>
<string name="lbl_indexing">Načítání hudby</string> <string name="lbl_indexing">Načítání hudby</string>
<string name="lbl_sort_date_added">Datum přidání</string> <string name="lbl_date_added">Datum přidání</string>
<string name="lbl_single">Singl</string> <string name="lbl_single">Singl</string>
<string name="lbl_singles">Singly</string> <string name="lbl_singles">Singly</string>
<string name="lbl_ep">EP</string> <string name="lbl_ep">EP</string>

View file

@ -119,7 +119,7 @@
<string name="lng_widget">Musikwiedergabe anzeigen und kontrollieren</string> <string name="lng_widget">Musikwiedergabe anzeigen und kontrollieren</string>
<string name="lbl_artist">Künstler</string> <string name="lbl_artist">Künstler</string>
<string name="lbl_album">Album</string> <string name="lbl_album">Album</string>
<string name="lbl_sort_date">Jahr</string> <string name="lbl_date">Jahr</string>
<string name="set_black_mode">Schwarzes Farbschema</string> <string name="set_black_mode">Schwarzes Farbschema</string>
<string name="set_black_mode_desc">Ein rein schwarzes dunkles Farbschema verwenden</string> <string name="set_black_mode_desc">Ein rein schwarzes dunkles Farbschema verwenden</string>
<string name="set_repeat_pause">Pause bei Wiederholung</string> <string name="set_repeat_pause">Pause bei Wiederholung</string>
@ -131,15 +131,15 @@
<string name="def_playback">Keine Musik wird gespielt</string> <string name="def_playback">Keine Musik wird gespielt</string>
<string name="set_lib_tabs">Bibliotheks-Registerkarten</string> <string name="set_lib_tabs">Bibliotheks-Registerkarten</string>
<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_sort_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_clear_queue_item">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_sort_duration">Dauer</string> <string name="lbl_duration">Dauer</string>
<string name="lbl_sort_count">Anzahl der Lieder</string> <string name="lbl_song_count">Anzahl der Lieder</string>
<string name="lbl_sort_disc">Schallplatte</string> <string name="lbl_disc">Schallplatte</string>
<string name="lbl_sort_track">Titel</string> <string name="lbl_track">Titel</string>
<string name="lbl_ok">OK</string> <string name="lbl_ok">OK</string>
<string name="lbl_library_counts">Bibliotheksstatistiken</string> <string name="lbl_library_counts">Bibliotheksstatistiken</string>
<string name="set_replay_gain_mode_dynamic">Album bevorzugen, wenn eines abgespielt wird</string> <string name="set_replay_gain_mode_dynamic">Album bevorzugen, wenn eines abgespielt wird</string>
@ -190,7 +190,7 @@
<string name="lbl_observing">Überwachen der Musikbibliothek</string> <string name="lbl_observing">Überwachen der Musikbibliothek</string>
<string name="lbl_indexing">Musik wird geladen</string> <string name="lbl_indexing">Musik wird geladen</string>
<string name="lng_observing">Musikbibliothek wird auf Änderungen überwacht…</string> <string name="lng_observing">Musikbibliothek wird auf Änderungen überwacht…</string>
<string name="lbl_sort_date_added">Hinzugefügt am</string> <string name="lbl_date_added">Hinzugefügt am</string>
<string name="set_observing_desc">Musikbibliothek neu laden, sobald es Änderungen gibt (erfordert persistente Benachrichtigung)</string> <string name="set_observing_desc">Musikbibliothek neu laden, sobald es Änderungen gibt (erfordert persistente Benachrichtigung)</string>
<string name="set_observing">Automatisch neuladen</string> <string name="set_observing">Automatisch neuladen</string>
<string name="lbl_state_restored">Zustand wiederhergestellt</string> <string name="lbl_state_restored">Zustand wiederhergestellt</string>

View file

@ -68,13 +68,13 @@
<string name="fmt_db_pos">+%.1f dB</string> <string name="fmt_db_pos">+%.1f dB</string>
<string name="fmt_indexing">Φόρτωση της συλλογής μουσικής σας… (%1$d/%2$d)</string> <string name="fmt_indexing">Φόρτωση της συλλογής μουσικής σας… (%1$d/%2$d)</string>
<string name="fmt_lib_genre_count">Είδη που φορτώθηκαν: %d</string> <string name="fmt_lib_genre_count">Είδη που φορτώθηκαν: %d</string>
<string name="lbl_sort_count">Αριθμός τραγουδιών</string> <string name="lbl_song_count">Αριθμός τραγουδιών</string>
<string name="err_bad_dir">Αυτός ο φάκελος δεν υποστηρίζεται</string> <string name="err_bad_dir">Αυτός ο φάκελος δεν υποστηρίζεται</string>
<string name="fmt_disc_no">Δίσκος %d</string> <string name="fmt_disc_no">Δίσκος %d</string>
<string name="fmt_lib_album_count">Album που φορτώθηκαν: %d</string> <string name="fmt_lib_album_count">Album που φορτώθηκαν: %d</string>
<string name="fmt_lib_artist_count">Καλλιτέχνες που φορτώθηκαν: %d</string> <string name="fmt_lib_artist_count">Καλλιτέχνες που φορτώθηκαν: %d</string>
<string name="lbl_sort_date">Έτος</string> <string name="lbl_date">Έτος</string>
<string name="lbl_sort_disc">Δίσκος</string> <string name="lbl_disc">Δίσκος</string>
<string name="err_no_music">Δεν βρέθηκε καθόλου μουσική</string> <string name="err_no_music">Δεν βρέθηκε καθόλου μουσική</string>
<string name="err_index_failed">Η φόρτωση μουσικής απέτυχε</string> <string name="err_index_failed">Η φόρτωση μουσικής απέτυχε</string>
<string name="fmt_bitrate">%d kbps</string> <string name="fmt_bitrate">%d kbps</string>
@ -93,8 +93,8 @@
<string name="lbl_genre">Είδος</string> <string name="lbl_genre">Είδος</string>
<string name="fmt_db_neg">-%.1f dB</string> <string name="fmt_db_neg">-%.1f dB</string>
<string name="fmt_sample_rate">%d Hz</string> <string name="fmt_sample_rate">%d Hz</string>
<string name="lbl_sort_name">Όνομα</string> <string name="lbl_name">Όνομα</string>
<string name="lbl_sort_duration">Διάρκεια</string> <string name="lbl_duration">Διάρκεια</string>
<string name="fmt_lib_total_duration">Συνολική διάρκεια: %s</string> <string name="fmt_lib_total_duration">Συνολική διάρκεια: %s</string>
<string name="err_no_dirs">Καθόλου φάκελοι</string> <string name="err_no_dirs">Καθόλου φάκελοι</string>
<string name="info_app_desc">Μιά απλή, λογική εφαρμογή αναπαραγωγής μουσικής για Android.</string> <string name="info_app_desc">Μιά απλή, λογική εφαρμογή αναπαραγωγής μουσικής για Android.</string>
@ -104,7 +104,7 @@
<string name="lbl_eps">EP</string> <string name="lbl_eps">EP</string>
<string name="lbl_ep">EP</string> <string name="lbl_ep">EP</string>
<string name="lbl_artist">Καλλιτέχνης</string> <string name="lbl_artist">Καλλιτέχνης</string>
<string name="lbl_sort_date_added">Ημερομηνία πρόσθεσης</string> <string name="lbl_date_added">Ημερομηνία πρόσθεσης</string>
<string name="lbl_format">Μορφή</string> <string name="lbl_format">Μορφή</string>
<string name="set_content">Περιεχομένο</string> <string name="set_content">Περιεχομένο</string>
<string name="lbl_shuffle_shortcut_long">Tυχαία αναπαραγωγή όλων</string> <string name="lbl_shuffle_shortcut_long">Tυχαία αναπαραγωγή όλων</string>

View file

@ -15,10 +15,10 @@
<string name="lbl_filter">Filtrar</string> <string name="lbl_filter">Filtrar</string>
<string name="lbl_filter_all">Todo</string> <string name="lbl_filter_all">Todo</string>
<string name="lbl_sort">Organizar</string> <string name="lbl_sort">Organizar</string>
<string name="lbl_sort_name">Nombre</string> <string name="lbl_name">Nombre</string>
<string name="lbl_artist">Artista</string> <string name="lbl_artist">Artista</string>
<string name="lbl_album">Álbum</string> <string name="lbl_album">Álbum</string>
<string name="lbl_sort_date">Año</string> <string name="lbl_date">Año</string>
<string name="lbl_sort_asc">Ascendente</string> <string name="lbl_sort_asc">Ascendente</string>
<string name="lbl_playback">En reproducción</string> <string name="lbl_playback">En reproducción</string>
<string name="lbl_play">Reproducir</string> <string name="lbl_play">Reproducir</string>
@ -139,9 +139,9 @@
<string name="lbl_size">Tamaño</string> <string name="lbl_size">Tamaño</string>
<string name="lbl_format">Formato</string> <string name="lbl_format">Formato</string>
<string name="lbl_bitrate">Tasa de bits</string> <string name="lbl_bitrate">Tasa de bits</string>
<string name="lbl_sort_duration">Duración</string> <string name="lbl_duration">Duración</string>
<string name="lbl_sort_track">Pista</string> <string name="lbl_track">Pista</string>
<string name="lbl_sort_disc">Disco</string> <string name="lbl_disc">Disco</string>
<string name="lbl_song_detail">Ver propiedades</string> <string name="lbl_song_detail">Ver propiedades</string>
<string name="lbl_shuffle_shortcut_short">Mezclar</string> <string name="lbl_shuffle_shortcut_short">Mezclar</string>
<string name="lbl_shuffle_shortcut_long">Mezclar todo</string> <string name="lbl_shuffle_shortcut_long">Mezclar todo</string>
@ -163,7 +163,7 @@
<string name="fmt_lib_artist_count">Artistas cargados: %d</string> <string name="fmt_lib_artist_count">Artistas cargados: %d</string>
<string name="fmt_lib_genre_count">Géneros cargados: %d</string> <string name="fmt_lib_genre_count">Géneros cargados: %d</string>
<string name="lbl_indexer">Carga de música</string> <string name="lbl_indexer">Carga de música</string>
<string name="lbl_sort_count">Número de canciones</string> <string name="lbl_song_count">Número de canciones</string>
<string name="lbl_state_restored">Estado restaurado</string> <string name="lbl_state_restored">Estado restaurado</string>
<string name="set_observing">Recarga automática</string> <string name="set_observing">Recarga automática</string>
<string name="set_observing_desc">Recargar la biblioteca musical cada vez que cambie (requiere una notificación persistente)</string> <string name="set_observing_desc">Recargar la biblioteca musical cada vez que cambie (requiere una notificación persistente)</string>
@ -174,7 +174,7 @@
<string name="lng_observing">Monitorizando cambios en tu librería de música…</string> <string name="lng_observing">Monitorizando cambios en tu librería de música…</string>
<string name="cdc_ogg">Audio ogg</string> <string name="cdc_ogg">Audio ogg</string>
<string name="set_detail_song_playback_mode">Cuando se reproduce desde los detalles</string> <string name="set_detail_song_playback_mode">Cuando se reproduce desde los detalles</string>
<string name="lbl_sort_date_added">Fecha de añadido</string> <string name="lbl_date_added">Fecha de añadido</string>
<string name="lbl_props">Propiedades de la canción</string> <string name="lbl_props">Propiedades de la canción</string>
<string name="lbl_sample_rate">Frecuencia de muestreo</string> <string name="lbl_sample_rate">Frecuencia de muestreo</string>
<string name="lbl_cancel">Cancelar</string> <string name="lbl_cancel">Cancelar</string>

View file

@ -19,10 +19,10 @@
<string name="lbl_single_remix">Remix single</string> <string name="lbl_single_remix">Remix single</string>
<string name="lbl_compilations">Mga Compilation</string> <string name="lbl_compilations">Mga Compilation</string>
<string name="lbl_sort">Ayusin</string> <string name="lbl_sort">Ayusin</string>
<string name="lbl_sort_name">Pangalan</string> <string name="lbl_name">Pangalan</string>
<string name="lbl_sort_date">Taon</string> <string name="lbl_date">Taon</string>
<string name="lbl_sort_duration">Tagal</string> <string name="lbl_duration">Tagal</string>
<string name="lbl_sort_count">Bilang ng kanta</string> <string name="lbl_song_count">Bilang ng kanta</string>
<string name="lbl_compilation">Compilation</string> <string name="lbl_compilation">Compilation</string>
<string name="lbl_soundtracks">Mga Soundtrack</string> <string name="lbl_soundtracks">Mga Soundtrack</string>
<string name="lbl_soundtrack">Soundtrack</string> <string name="lbl_soundtrack">Soundtrack</string>
@ -32,8 +32,8 @@
<string name="lbl_artists">Mga Artista</string> <string name="lbl_artists">Mga Artista</string>
<string name="lbl_filter">Salain</string> <string name="lbl_filter">Salain</string>
<string name="lbl_filter_all">Lahat</string> <string name="lbl_filter_all">Lahat</string>
<string name="lbl_sort_disc">Disko</string> <string name="lbl_disc">Disko</string>
<string name="lbl_sort_date_added">Petsa ng pagdagdag</string> <string name="lbl_date_added">Petsa ng pagdagdag</string>
<string name="lbl_sort_asc">Pataas</string> <string name="lbl_sort_asc">Pataas</string>
<string name="lbl_playback">Tinutugtog Ngayon</string> <string name="lbl_playback">Tinutugtog Ngayon</string>
<string name="lbl_play">Tugtugin</string> <string name="lbl_play">Tugtugin</string>

View file

@ -95,14 +95,14 @@
<string name="lbl_indexer">Chargement de musique</string> <string name="lbl_indexer">Chargement de musique</string>
<string name="lng_widget">Afficher et contrôler la lecture de la musique</string> <string name="lng_widget">Afficher et contrôler la lecture de la musique</string>
<string name="lng_indexing">Chargement de votre bibliothèque musicale…</string> <string name="lng_indexing">Chargement de votre bibliothèque musicale…</string>
<string name="lbl_sort_name">Nom</string> <string name="lbl_name">Nom</string>
<string name="lbl_artist">Artiste</string> <string name="lbl_artist">Artiste</string>
<string name="lbl_album">Album</string> <string name="lbl_album">Album</string>
<string name="lbl_sort_date">Année</string> <string name="lbl_date">Année</string>
<string name="lbl_sort_duration">Durée</string> <string name="lbl_duration">Durée</string>
<string name="lbl_sort_count">Nombre de chansons</string> <string name="lbl_song_count">Nombre de chansons</string>
<string name="lbl_sort_disc">Disque</string> <string name="lbl_disc">Disque</string>
<string name="lbl_sort_track">Piste</string> <string name="lbl_track">Piste</string>
<string name="lbl_song_detail">Voir les propriétés</string> <string name="lbl_song_detail">Voir les propriétés</string>
<string name="lbl_props">Propriétés de la chanson</string> <string name="lbl_props">Propriétés de la chanson</string>
<string name="lbl_ep_live">EP live</string> <string name="lbl_ep_live">EP live</string>
@ -123,7 +123,7 @@
<string name="lbl_mixtapes">Mixtapes</string> <string name="lbl_mixtapes">Mixtapes</string>
<string name="lbl_mixtape">Mixtape</string> <string name="lbl_mixtape">Mixtape</string>
<string name="lbl_remix_group">Remix</string> <string name="lbl_remix_group">Remix</string>
<string name="lbl_sort_date_added">Date d\'ajout</string> <string name="lbl_date_added">Date d\'ajout</string>
<string name="lbl_album_live">Album live</string> <string name="lbl_album_live">Album live</string>
<string name="lbl_album_remix">Album de remixes</string> <string name="lbl_album_remix">Album de remixes</string>
<string name="lbl_genre">Genre</string> <string name="lbl_genre">Genre</string>

View file

@ -46,7 +46,7 @@
<item quantity="one">%d एल्बम</item> <item quantity="one">%d एल्बम</item>
<item quantity="other">%d एल्बम</item> <item quantity="other">%d एल्बम</item>
</plurals> </plurals>
<string name="lbl_sort_name">नाम</string> <string name="lbl_name">नाम</string>
<string name="lbl_genre">शैली</string> <string name="lbl_genre">शैली</string>
<string name="lbl_playback">अब खेल रहे हैं</string> <string name="lbl_playback">अब खेल रहे हैं</string>
<string name="lbl_compilation">संकलन</string> <string name="lbl_compilation">संकलन</string>
@ -55,5 +55,5 @@
<string name="lbl_size">आकार</string> <string name="lbl_size">आकार</string>
<string name="lbl_ok">ठीक है</string> <string name="lbl_ok">ठीक है</string>
<string name="lbl_artist">कलाकार</string> <string name="lbl_artist">कलाकार</string>
<string name="lbl_sort_date_added">तिथि जोड़ी गई</string> <string name="lbl_date_added">तिथि जोड़ी गई</string>
</resources> </resources>

View file

@ -26,13 +26,13 @@
<string name="lbl_artists">Izvođači</string> <string name="lbl_artists">Izvođači</string>
<string name="lbl_genres">Žanrovi</string> <string name="lbl_genres">Žanrovi</string>
<string name="lbl_sort">Sortiraj</string> <string name="lbl_sort">Sortiraj</string>
<string name="lbl_sort_name">Naziv</string> <string name="lbl_name">Naziv</string>
<string name="lbl_sort_date">Godina</string> <string name="lbl_date">Godina</string>
<string name="lbl_sort_duration">Trajanje</string> <string name="lbl_duration">Trajanje</string>
<string name="lbl_sort_count">Broj pjesama</string> <string name="lbl_song_count">Broj pjesama</string>
<string name="lbl_sort_disc">Disk</string> <string name="lbl_disc">Disk</string>
<string name="lbl_sort_track">Zvučni zapis</string> <string name="lbl_track">Zvučni zapis</string>
<string name="lbl_sort_date_added">Datum dodavanja</string> <string name="lbl_date_added">Datum dodavanja</string>
<string name="lbl_sort_asc">Uzlazno</string> <string name="lbl_sort_asc">Uzlazno</string>
<string name="lbl_playback">Trenutačno svira</string> <string name="lbl_playback">Trenutačno svira</string>
<string name="lbl_play">Reproduciraj</string> <string name="lbl_play">Reproduciraj</string>

View file

@ -70,15 +70,15 @@
<string name="lbl_sample_rate">Tingkat sampel</string> <string name="lbl_sample_rate">Tingkat sampel</string>
<string name="set_lib_tabs">Tab Pustaka</string> <string name="set_lib_tabs">Tab Pustaka</string>
<string name="lng_indexing">Memuat pustaka musik Anda…</string> <string name="lng_indexing">Memuat pustaka musik Anda…</string>
<string name="lbl_sort_name">Nama</string> <string name="lbl_name">Nama</string>
<string name="lbl_artist">Artis</string> <string name="lbl_artist">Artis</string>
<string name="lbl_album">Album</string> <string name="lbl_album">Album</string>
<string name="info_app_desc">Pemutar musik yang sederhana dan rasional untuk android.</string> <string name="info_app_desc">Pemutar musik yang sederhana dan rasional untuk android.</string>
<string name="lbl_indexer">Pemuatan musik</string> <string name="lbl_indexer">Pemuatan musik</string>
<string name="lng_widget">Lihat dan kendalikan pemutaran musik</string> <string name="lng_widget">Lihat dan kendalikan pemutaran musik</string>
<string name="lbl_sort_date">Tanggal</string> <string name="lbl_date">Tanggal</string>
<string name="lbl_sort_duration">Durasi</string> <string name="lbl_duration">Durasi</string>
<string name="lbl_sort_disc">Disk</string> <string name="lbl_disc">Disk</string>
<string name="lbl_song_detail">Lihat properti</string> <string name="lbl_song_detail">Lihat properti</string>
<string name="lbl_format">Format</string> <string name="lbl_format">Format</string>
<string name="lng_author">Dikembangkan oleh Alexander Capehart</string> <string name="lng_author">Dikembangkan oleh Alexander Capehart</string>
@ -179,8 +179,8 @@
<string name="clr_green">Hijau</string> <string name="clr_green">Hijau</string>
<string name="clr_orange">Jingga</string> <string name="clr_orange">Jingga</string>
<string name="fmt_lib_genre_count">Genre yang dimuat: %d</string> <string name="fmt_lib_genre_count">Genre yang dimuat: %d</string>
<string name="lbl_sort_count">Jumlah lagu</string> <string name="lbl_song_count">Jumlah lagu</string>
<string name="lbl_sort_track">Trek</string> <string name="lbl_track">Trek</string>
<string name="clr_pink">Merah muda</string> <string name="clr_pink">Merah muda</string>
<string name="set_replay_gain">ReplayGain</string> <string name="set_replay_gain">ReplayGain</string>
<string name="set_observing">Muat ulang otomatis</string> <string name="set_observing">Muat ulang otomatis</string>
@ -192,7 +192,7 @@
<string name="set_round_mode_desc">Aktifkan sudut yang bundar pada elemen UI tambahan (mewajibkan sampul album bersudut bundar)</string> <string name="set_round_mode_desc">Aktifkan sudut yang bundar pada elemen UI tambahan (mewajibkan sampul album bersudut bundar)</string>
<string name="set_separators_comma">Koma (,)</string> <string name="set_separators_comma">Koma (,)</string>
<string name="set_separators_plus">Tambah (+)</string> <string name="set_separators_plus">Tambah (+)</string>
<string name="lbl_sort_date_added">Tanggal ditambahkan</string> <string name="lbl_date_added">Tanggal ditambahkan</string>
<string name="set_cover_mode_quality">Kualitas tinggi</string> <string name="set_cover_mode_quality">Kualitas tinggi</string>
<string name="set_separators_semicolon">Titik koma (;)</string> <string name="set_separators_semicolon">Titik koma (;)</string>
<string name="lbl_wiki">Wiki</string> <string name="lbl_wiki">Wiki</string>

View file

@ -15,10 +15,10 @@
<string name="lbl_filter">Filtro</string> <string name="lbl_filter">Filtro</string>
<string name="lbl_filter_all">Tutto</string> <string name="lbl_filter_all">Tutto</string>
<string name="lbl_sort">Ordine</string> <string name="lbl_sort">Ordine</string>
<string name="lbl_sort_name">Nome</string> <string name="lbl_name">Nome</string>
<string name="lbl_artist">Artista</string> <string name="lbl_artist">Artista</string>
<string name="lbl_album">Disco</string> <string name="lbl_album">Disco</string>
<string name="lbl_sort_date">Anno</string> <string name="lbl_date">Anno</string>
<string name="lbl_sort_asc">Ascendente</string> <string name="lbl_sort_asc">Ascendente</string>
<string name="lbl_playback">Ora in riproduzione</string> <string name="lbl_playback">Ora in riproduzione</string>
<string name="lbl_play">Riproduci</string> <string name="lbl_play">Riproduci</string>
@ -175,10 +175,10 @@
<string name="fmt_db_neg">-%.1f dB</string> <string name="fmt_db_neg">-%.1f dB</string>
<string name="lbl_indexer">Caricamento musica</string> <string name="lbl_indexer">Caricamento musica</string>
<string name="lng_indexing">Caricamento libreria musicale…</string> <string name="lng_indexing">Caricamento libreria musicale…</string>
<string name="lbl_sort_duration">Durata</string> <string name="lbl_duration">Durata</string>
<string name="lbl_sort_count">Numero canzoni</string> <string name="lbl_song_count">Numero canzoni</string>
<string name="lbl_sort_disc">Disco</string> <string name="lbl_disc">Disco</string>
<string name="lbl_sort_track">Traccia</string> <string name="lbl_track">Traccia</string>
<string name="lbl_ok">OK</string> <string name="lbl_ok">OK</string>
<string name="lbl_sample_rate">Frequenza di campionamento</string> <string name="lbl_sample_rate">Frequenza di campionamento</string>
<string name="lbl_song_detail">Vedi proprietà</string> <string name="lbl_song_detail">Vedi proprietà</string>
@ -196,7 +196,7 @@
<string name="lbl_indexing">Caricamento musica</string> <string name="lbl_indexing">Caricamento musica</string>
<string name="lbl_observing">Monitoraggio libreria musicale</string> <string name="lbl_observing">Monitoraggio libreria musicale</string>
<string name="lbl_state_restored">Stato ripristinato</string> <string name="lbl_state_restored">Stato ripristinato</string>
<string name="lbl_sort_date_added">Data aggiunta</string> <string name="lbl_date_added">Data aggiunta</string>
<string name="set_observing">Ricaricamento automatico</string> <string name="set_observing">Ricaricamento automatico</string>
<string name="set_restore_state">Ripristina stato riproduzione</string> <string name="set_restore_state">Ripristina stato riproduzione</string>
<string name="set_restore_desc">Ripristina lo stato di riproduzione precedentemente salvato (se disponibile)</string> <string name="set_restore_desc">Ripristina lo stato di riproduzione precedentemente salvato (se disponibile)</string>

View file

@ -5,7 +5,7 @@
<string name="lbl_grant">許可する</string> <string name="lbl_grant">許可する</string>
<string name="lbl_artists">アーティスト</string> <string name="lbl_artists">アーティスト</string>
<string name="lbl_genres">ジャンル</string> <string name="lbl_genres">ジャンル</string>
<string name="lbl_sort_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_queue_handle">この再生待ちの曲を移動</string>
@ -13,8 +13,8 @@
<string name="lbl_songs"></string> <string name="lbl_songs"></string>
<string name="lbl_all_songs">すべての曲</string> <string name="lbl_all_songs">すべての曲</string>
<string name="lbl_sort">並べ替え</string> <string name="lbl_sort">並べ替え</string>
<string name="lbl_sort_name">曲名</string> <string name="lbl_name">曲名</string>
<string name="lbl_sort_count">再生回数</string> <string name="lbl_song_count">再生回数</string>
<string name="lbl_cancel">キャンセル</string> <string name="lbl_cancel">キャンセル</string>
<string name="lbl_shuffle_shortcut_short">シャフル</string> <string name="lbl_shuffle_shortcut_short">シャフル</string>
<string name="set_theme_auto">自動</string> <string name="set_theme_auto">自動</string>
@ -24,7 +24,7 @@
<string name="set_keep_shuffle">シャフルを記憶</string> <string name="set_keep_shuffle">シャフルを記憶</string>
<string name="set_repeat_pause_desc">曲の繰り返し時にポーズ</string> <string name="set_repeat_pause_desc">曲の繰り返し時にポーズ</string>
<string name="desc_clear_search">検索クエリを解除</string> <string name="desc_clear_search">検索クエリを解除</string>
<string name="lbl_sort_date">日付け</string> <string name="lbl_date">日付け</string>
<string name="set_cover_mode_quality">高クオリティ</string> <string name="set_cover_mode_quality">高クオリティ</string>
<string name="set_round_mode">ラウンドモード</string> <string name="set_round_mode">ラウンドモード</string>
<string name="err_no_music">音楽が見つかりません</string> <string name="err_no_music">音楽が見つかりません</string>
@ -46,9 +46,9 @@
<string name="lbl_compilation_remix">リミックスオムニバス</string> <string name="lbl_compilation_remix">リミックスオムニバス</string>
<string name="lbl_mixes">DJミックス</string> <string name="lbl_mixes">DJミックス</string>
<string name="lbl_mix">DJミックス</string> <string name="lbl_mix">DJミックス</string>
<string name="lbl_sort_disc">ディスク</string> <string name="lbl_disc">ディスク</string>
<string name="lbl_equalizer">イコライザ</string> <string name="lbl_equalizer">イコライザ</string>
<string name="lbl_sort_track">トラック</string> <string name="lbl_track">トラック</string>
<string name="lbl_sort_asc">昇順</string> <string name="lbl_sort_asc">昇順</string>
<string name="lbl_playback">再生中</string> <string name="lbl_playback">再生中</string>
<string name="set_accent">カラースキーム</string> <string name="set_accent">カラースキーム</string>
@ -58,7 +58,7 @@
<string name="desc_exit">再生停止</string> <string name="desc_exit">再生停止</string>
<string name="clr_red"></string> <string name="clr_red"></string>
<string name="lbl_file_name">ファイル名</string> <string name="lbl_file_name">ファイル名</string>
<string name="lbl_sort_date_added">追加した日付け</string> <string name="lbl_date_added">追加した日付け</string>
<string name="lbl_sample_rate">サンプルレート</string> <string name="lbl_sample_rate">サンプルレート</string>
<string name="lbl_sort_dec">降順</string> <string name="lbl_sort_dec">降順</string>
<string name="lbl_play">再生</string> <string name="lbl_play">再生</string>

View file

@ -15,14 +15,14 @@
<string name="lbl_filter">필터</string> <string name="lbl_filter">필터</string>
<string name="lbl_filter_all">전체</string> <string name="lbl_filter_all">전체</string>
<string name="lbl_sort">정렬</string> <string name="lbl_sort">정렬</string>
<string name="lbl_sort_name">제목</string> <string name="lbl_name">제목</string>
<string name="lbl_artist">아티스트</string> <string name="lbl_artist">아티스트</string>
<string name="lbl_album">앨범</string> <string name="lbl_album">앨범</string>
<string name="lbl_sort_date">연도</string> <string name="lbl_date">연도</string>
<string name="lbl_sort_duration">길이</string> <string name="lbl_duration">길이</string>
<string name="lbl_sort_count">곡 수</string> <string name="lbl_song_count">곡 수</string>
<string name="lbl_sort_disc">디스크</string> <string name="lbl_disc">디스크</string>
<string name="lbl_sort_track">트랙</string> <string name="lbl_track">트랙</string>
<string name="lbl_sort_asc">오름차순</string> <string name="lbl_sort_asc">오름차순</string>
<string name="lbl_playback">지금 재생 중</string> <string name="lbl_playback">지금 재생 중</string>
<string name="lbl_play">재생</string> <string name="lbl_play">재생</string>
@ -196,7 +196,7 @@
<string name="def_bitrate">전송속도 없음</string> <string name="def_bitrate">전송속도 없음</string>
<string name="def_sample_rate">샘플 속도 없음</string> <string name="def_sample_rate">샘플 속도 없음</string>
<string name="cdc_mp3">MPEG-1 오디오</string> <string name="cdc_mp3">MPEG-1 오디오</string>
<string name="lbl_sort_date_added">추가된 날짜</string> <string name="lbl_date_added">추가된 날짜</string>
<string name="lbl_relative_path">상위 경로</string> <string name="lbl_relative_path">상위 경로</string>
<string name="set_bar_action">맞춤형 재생 동작 버튼</string> <string name="set_bar_action">맞춤형 재생 동작 버튼</string>
<string name="set_action_mode_repeat">반복 방식</string> <string name="set_action_mode_repeat">반복 방식</string>

View file

@ -6,12 +6,12 @@
<string name="lbl_filter">Filtruoti</string> <string name="lbl_filter">Filtruoti</string>
<string name="lbl_filter_all">Visos</string> <string name="lbl_filter_all">Visos</string>
<string name="lbl_sort">Rūšiuoti</string> <string name="lbl_sort">Rūšiuoti</string>
<string name="lbl_sort_name">Pavadinimas</string> <string name="lbl_name">Pavadinimas</string>
<string name="lbl_sort_date">Metai</string> <string name="lbl_date">Metai</string>
<string name="lbl_sort_duration">Trukmė</string> <string name="lbl_duration">Trukmė</string>
<string name="lbl_sort_count">Dainų skaičius</string> <string name="lbl_song_count">Dainų skaičius</string>
<string name="lbl_sort_disc">Diskas</string> <string name="lbl_disc">Diskas</string>
<string name="lbl_sort_date_added">Pridėta data</string> <string name="lbl_date_added">Pridėta data</string>
<string name="lbl_sort_asc">Kylantis</string> <string name="lbl_sort_asc">Kylantis</string>
<string name="lbl_play_next">Groti kitą</string> <string name="lbl_play_next">Groti kitą</string>
<string name="lbl_queue_add">Pridėti į eilę</string> <string name="lbl_queue_add">Pridėti į eilę</string>
@ -29,7 +29,7 @@
<string name="set_black_mode">Juodoji tema</string> <string name="set_black_mode">Juodoji tema</string>
<string name="lbl_artists">Atlikėjai</string> <string name="lbl_artists">Atlikėjai</string>
<string name="lbl_albums">Albumai</string> <string name="lbl_albums">Albumai</string>
<string name="lbl_sort_track">Takelis</string> <string name="lbl_track">Takelis</string>
<string name="lbl_playback">Dabar groja</string> <string name="lbl_playback">Dabar groja</string>
<string name="lbl_play">Groti</string> <string name="lbl_play">Groti</string>
<string name="lbl_licenses">Licencijos</string> <string name="lbl_licenses">Licencijos</string>

View file

@ -9,7 +9,7 @@
<string name="def_artist">അജ്ഞാത കലാകാരൻ</string> <string name="def_artist">അജ്ഞാത കലാകാരൻ</string>
<string name="clr_grey">ചാരനിറം</string> <string name="clr_grey">ചാരനിറം</string>
<string name="lbl_single">ഒറ്റയായ</string> <string name="lbl_single">ഒറ്റയായ</string>
<string name="lbl_sort_date">തീയതി</string> <string name="lbl_date">തീയതി</string>
<string name="lbl_all_songs">എല്ലാ പാട്ടുകളും</string> <string name="lbl_all_songs">എല്ലാ പാട്ടുകളും</string>
<string name="lbl_artist">കലാകാരൻ</string> <string name="lbl_artist">കലാകാരൻ</string>
<string name="lbl_artists">കലാകാരന്മാർ</string> <string name="lbl_artists">കലാകാരന്മാർ</string>
@ -17,8 +17,8 @@
<string name="lbl_genre">വിഭാഗം</string> <string name="lbl_genre">വിഭാഗം</string>
<string name="lbl_search">തിരയുക</string> <string name="lbl_search">തിരയുക</string>
<string name="lbl_sort">അടുക്കുക</string> <string name="lbl_sort">അടുക്കുക</string>
<string name="lbl_sort_name">പേര്</string> <string name="lbl_name">പേര്</string>
<string name="lbl_sort_duration">ദൈർഘ്യം</string> <string name="lbl_duration">ദൈർഘ്യം</string>
<string name="lbl_props">പാട്ടിന്റെ സവിശേഷതകൾ</string> <string name="lbl_props">പാട്ടിന്റെ സവിശേഷതകൾ</string>
<string name="lbl_filter_all">എല്ലാം</string> <string name="lbl_filter_all">എല്ലാം</string>
<string name="lbl_play_next">അടുത്തത് കളിക്കുക</string> <string name="lbl_play_next">അടുത്തത് കളിക്കുക</string>
@ -78,8 +78,8 @@
<string name="lbl_retry">വീണ്ടും ശ്രമിക്കുക</string> <string name="lbl_retry">വീണ്ടും ശ്രമിക്കുക</string>
<string name="lbl_grant">അനുവദിക്കുക</string> <string name="lbl_grant">അനുവദിക്കുക</string>
<string name="lbl_songs">ഗാനങ്ങൾ</string> <string name="lbl_songs">ഗാനങ്ങൾ</string>
<string name="lbl_sort_count">പാട്ടുകളുടെ എണ്ണം</string> <string name="lbl_song_count">പാട്ടുകളുടെ എണ്ണം</string>
<string name="lbl_sort_date_added">തീയതി ചേർത്തു</string> <string name="lbl_date_added">തീയതി ചേർത്തു</string>
<string name="lbl_sort_asc">ആരോഹണം</string> <string name="lbl_sort_asc">ആരോഹണം</string>
<string name="lbl_playback">ഇപ്പോൾ കളിക്കുന്നു</string> <string name="lbl_playback">ഇപ്പോൾ കളിക്കുന്നു</string>
<string name="lbl_play">കളിക്കുക</string> <string name="lbl_play">കളിക്കുക</string>

View file

@ -116,11 +116,11 @@
<string name="lng_widget">Muziekweergave bekijken en regelen</string> <string name="lng_widget">Muziekweergave bekijken en regelen</string>
<string name="fmt_sample_rate">%d Hz</string> <string name="fmt_sample_rate">%d Hz</string>
<string name="lbl_song_detail">Bekijk eigenschappen</string> <string name="lbl_song_detail">Bekijk eigenschappen</string>
<string name="lbl_sort_name">Naam</string> <string name="lbl_name">Naam</string>
<string name="lbl_artist">Artiest</string> <string name="lbl_artist">Artiest</string>
<string name="lbl_cancel">@android:string/cancel</string> <string name="lbl_cancel">@android:string/cancel</string>
<string name="set_lib_tabs">Bibliotheek tabbladen</string> <string name="set_lib_tabs">Bibliotheek tabbladen</string>
<string name="lbl_sort_date">Jaar</string> <string name="lbl_date">Jaar</string>
<string name="lbl_relative_path">Ouderpad</string> <string name="lbl_relative_path">Ouderpad</string>
<string name="lbl_props">Lied eigenschappen</string> <string name="lbl_props">Lied eigenschappen</string>
<string name="lbl_file_name">Bestandsnaam</string> <string name="lbl_file_name">Bestandsnaam</string>
@ -181,10 +181,10 @@
<string name="fmt_lib_genre_count">Genres geladen: %d</string> <string name="fmt_lib_genre_count">Genres geladen: %d</string>
<string name="lbl_indexer">Muziek aan het laden</string> <string name="lbl_indexer">Muziek aan het laden</string>
<string name="lbl_album">Album</string> <string name="lbl_album">Album</string>
<string name="lbl_sort_duration">Looptijd</string> <string name="lbl_duration">Looptijd</string>
<string name="lbl_sort_count">Aantal Liedjes</string> <string name="lbl_song_count">Aantal Liedjes</string>
<string name="lbl_sort_disc">Disc</string> <string name="lbl_disc">Disc</string>
<string name="lbl_sort_track">Titel</string> <string name="lbl_track">Titel</string>
<string name="lbl_format">Formaat</string> <string name="lbl_format">Formaat</string>
<string name="lbl_size">Grootte</string> <string name="lbl_size">Grootte</string>
<string name="lbl_bitrate">Bitsnelheid</string> <string name="lbl_bitrate">Bitsnelheid</string>

View file

@ -38,12 +38,12 @@
<string name="lbl_filter">ਫਿਲਟਰ</string> <string name="lbl_filter">ਫਿਲਟਰ</string>
<string name="lbl_filter_all">ਸਾਰੇ</string> <string name="lbl_filter_all">ਸਾਰੇ</string>
<string name="lbl_sort">ਲੜੀਬੱਧ</string> <string name="lbl_sort">ਲੜੀਬੱਧ</string>
<string name="lbl_sort_name">ਨਾਮ</string> <string name="lbl_name">ਨਾਮ</string>
<string name="lbl_sort_date">ਮਿਤੀ</string> <string name="lbl_date">ਮਿਤੀ</string>
<string name="lbl_sort_duration">ਮਿਆਦ</string> <string name="lbl_duration">ਮਿਆਦ</string>
<string name="lbl_sort_disc">ਡਿਸਕ</string> <string name="lbl_disc">ਡਿਸਕ</string>
<string name="lbl_sort_track">ਟਰੈਕ</string> <string name="lbl_track">ਟਰੈਕ</string>
<string name="lbl_sort_date_added">ਮਿਤੀ ਸ਼ਾਮਲ ਕੀਤੀ ਗਈ</string> <string name="lbl_date_added">ਮਿਤੀ ਸ਼ਾਮਲ ਕੀਤੀ ਗਈ</string>
<string name="lbl_sort_asc">ਵੱਧਦੇ ਹੋਏ</string> <string name="lbl_sort_asc">ਵੱਧਦੇ ਹੋਏ</string>
<string name="lbl_playback">ਹੁਣ ਚੱਲ ਰਿਹਾ ਹੈ</string> <string name="lbl_playback">ਹੁਣ ਚੱਲ ਰਿਹਾ ਹੈ</string>
<string name="lbl_equalizer">ਇਕੋਲਾਈਜ਼ਰ</string> <string name="lbl_equalizer">ਇਕੋਲਾਈਜ਼ਰ</string>
@ -74,7 +74,7 @@
<string name="lbl_library_counts">ਲਾਇਬ੍ਰੇਰੀ ਦੇ ਅੰਕੜੇ</string> <string name="lbl_library_counts">ਲਾਇਬ੍ਰੇਰੀ ਦੇ ਅੰਕੜੇ</string>
<string name="info_app_desc">ਐਂਡਰੌਇਡ ਲਈ ਇੱਕ ਸਰਲ, ਤਰਕਸੰਗਤ ਸੰਗੀਤ ਪਲੇਅਰ।</string> <string name="info_app_desc">ਐਂਡਰੌਇਡ ਲਈ ਇੱਕ ਸਰਲ, ਤਰਕਸੰਗਤ ਸੰਗੀਤ ਪਲੇਅਰ।</string>
<string name="lbl_search">ਖੋਜੋ</string> <string name="lbl_search">ਖੋਜੋ</string>
<string name="lbl_sort_count">ਗੀਤ ਦੀ ਗਿਣਤੀ</string> <string name="lbl_song_count">ਗੀਤ ਦੀ ਗਿਣਤੀ</string>
<string name="lbl_sort_dec">ਘਟਦੇ ਹੋਏ</string> <string name="lbl_sort_dec">ਘਟਦੇ ਹੋਏ</string>
<string name="lbl_play_selected">ਚੁਣਿਆ ਹੋਇਆ ਚਲਾਓ</string> <string name="lbl_play_selected">ਚੁਣਿਆ ਹੋਇਆ ਚਲਾਓ</string>
<string name="lbl_go_artist">ਕਲਾਕਾਰ \'ਤੇ ਜਾਓ</string> <string name="lbl_go_artist">ਕਲਾਕਾਰ \'ਤੇ ਜਾਓ</string>

View file

@ -83,7 +83,7 @@
<string name="def_date">Nieznana data</string> <string name="def_date">Nieznana data</string>
<string name="def_sample_rate">Nieznana częstotliwość próbkowania</string> <string name="def_sample_rate">Nieznana częstotliwość próbkowania</string>
<string name="cdc_mp3">MPEG-1 audio</string> <string name="cdc_mp3">MPEG-1 audio</string>
<string name="lbl_sort_track">Utwór</string> <string name="lbl_track">Utwór</string>
<string name="lbl_song_detail">Wyświetl szczegóły</string> <string name="lbl_song_detail">Wyświetl szczegóły</string>
<string name="lbl_props">Szczegóły utworu</string> <string name="lbl_props">Szczegóły utworu</string>
<string name="lbl_sample_rate">Częstotliwość próbkowania</string> <string name="lbl_sample_rate">Częstotliwość próbkowania</string>
@ -98,7 +98,7 @@
<string name="lbl_format">Format</string> <string name="lbl_format">Format</string>
<string name="clr_cyan">Niebieskozielony</string> <string name="clr_cyan">Niebieskozielony</string>
<string name="fmt_disc_no">Płyta %d</string> <string name="fmt_disc_no">Płyta %d</string>
<string name="lbl_sort_date_added">Data dodania</string> <string name="lbl_date_added">Data dodania</string>
<string name="desc_album_cover">Okładka albumu %s</string> <string name="desc_album_cover">Okładka albumu %s</string>
<string name="desc_auxio_icon">Ikona Auxio</string> <string name="desc_auxio_icon">Ikona Auxio</string>
<string name="desc_shuffle">Włącz lub wyłącz odtwarzanie losowe</string> <string name="desc_shuffle">Włącz lub wyłącz odtwarzanie losowe</string>
@ -117,14 +117,14 @@
<string name="set_black_mode">Czarny motyw</string> <string name="set_black_mode">Czarny motyw</string>
<string name="clr_deep_purple">Ciemny fiolet</string> <string name="clr_deep_purple">Ciemny fiolet</string>
<string name="fmt_db_neg">-%.1f dB</string> <string name="fmt_db_neg">-%.1f dB</string>
<string name="lbl_sort_name">Nazwa</string> <string name="lbl_name">Nazwa</string>
<string name="lbl_sort_date">Rok</string> <string name="lbl_date">Rok</string>
<string name="lbl_single">Singiel</string> <string name="lbl_single">Singiel</string>
<string name="lbl_singles">Single</string> <string name="lbl_singles">Single</string>
<string name="lbl_sort_duration">Czas trwania</string> <string name="lbl_duration">Czas trwania</string>
<string name="lbl_mixtape">Składanka</string> <string name="lbl_mixtape">Składanka</string>
<string name="lbl_sort_count">Liczba utworów</string> <string name="lbl_song_count">Liczba utworów</string>
<string name="lbl_sort_disc">Płyta</string> <string name="lbl_disc">Płyta</string>
<string name="lbl_artist">Wykonawca</string> <string name="lbl_artist">Wykonawca</string>
<string name="lbl_save">Zapisz</string> <string name="lbl_save">Zapisz</string>
<string name="lbl_mixtapes">Składanki</string> <string name="lbl_mixtapes">Składanki</string>

View file

@ -98,11 +98,11 @@
<string name="err_no_perms">O Auxio precisa de permissão para ler sua biblioteca de músicas</string> <string name="err_no_perms">O Auxio precisa de permissão para ler sua biblioteca de músicas</string>
<string name="info_app_desc">Um reprodutor de música simples e racional para android.</string> <string name="info_app_desc">Um reprodutor de música simples e racional para android.</string>
<string name="lng_indexing">Carregando sua biblioteca de músicas…</string> <string name="lng_indexing">Carregando sua biblioteca de músicas…</string>
<string name="lbl_sort_date">Ano</string> <string name="lbl_date">Ano</string>
<string name="lbl_sort_duration">Duração</string> <string name="lbl_duration">Duração</string>
<string name="lbl_sort_count">Contagem de músicas</string> <string name="lbl_song_count">Contagem de músicas</string>
<string name="lbl_sort_disc">Disco</string> <string name="lbl_disc">Disco</string>
<string name="lbl_sort_name">Nome</string> <string name="lbl_name">Nome</string>
<string name="lbl_artist">Artista</string> <string name="lbl_artist">Artista</string>
<string name="lbl_album">Álbum</string> <string name="lbl_album">Álbum</string>
<string name="lbl_props">Propriedades da música</string> <string name="lbl_props">Propriedades da música</string>
@ -172,7 +172,7 @@
<string name="set_replay_gain_mode_dynamic">Prefira o álbum se estiver tocando</string> <string name="set_replay_gain_mode_dynamic">Prefira o álbum se estiver tocando</string>
<string name="set_observing">Recarregamento automático</string> <string name="set_observing">Recarregamento automático</string>
<string name="set_observing_desc">Recarrega a biblioteca de músicas sempre que ela mudar (requer notificação fixa)</string> <string name="set_observing_desc">Recarrega a biblioteca de músicas sempre que ela mudar (requer notificação fixa)</string>
<string name="lbl_sort_date_added">Data adicionada</string> <string name="lbl_date_added">Data adicionada</string>
<string name="lbl_cancel">Cancelar</string> <string name="lbl_cancel">Cancelar</string>
<string name="set_replay_gain_mode_track">Preferir faixa</string> <string name="set_replay_gain_mode_track">Preferir faixa</string>
<string name="desc_queue_bar">Abrir fila</string> <string name="desc_queue_bar">Abrir fila</string>
@ -213,7 +213,7 @@
<string name="lbl_compilation">Compilação</string> <string name="lbl_compilation">Compilação</string>
<string name="lbl_single_remix">Single remix</string> <string name="lbl_single_remix">Single remix</string>
<string name="set_content">Conteúdo</string> <string name="set_content">Conteúdo</string>
<string name="lbl_sort_track">Faixa</string> <string name="lbl_track">Faixa</string>
<string name="set_library_song_playback_mode">Ao tocar da biblioteca</string> <string name="set_library_song_playback_mode">Ao tocar da biblioteca</string>
<string name="set_detail_song_playback_mode">Ao tocar a partir dos detalhes do item</string> <string name="set_detail_song_playback_mode">Ao tocar a partir dos detalhes do item</string>
<string name="lbl_mixtapes">Mixtapes</string> <string name="lbl_mixtapes">Mixtapes</string>

View file

@ -78,15 +78,15 @@
<string name="fmt_lib_artist_count">Artistas carregados: %d</string> <string name="fmt_lib_artist_count">Artistas carregados: %d</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="err_index_failed">Falha no carregamento da música</string> <string name="err_index_failed">Falha no carregamento da música</string>
<string name="lbl_sort_name">Nome</string> <string name="lbl_name">Nome</string>
<string name="set_replay_gain_mode_dynamic">Prefira o álbum se estiver tocando</string> <string name="set_replay_gain_mode_dynamic">Prefira o álbum se estiver tocando</string>
<string name="err_no_app">Nenhuma aplicação encontrada que possa lidar com esta tarefa</string> <string name="err_no_app">Nenhuma aplicação encontrada que possa lidar com esta tarefa</string>
<string name="clr_cyan">Ciano</string> <string name="clr_cyan">Ciano</string>
<string name="lbl_sort_count">Contagem de músicas</string> <string name="lbl_song_count">Contagem de músicas</string>
<string name="lbl_format">Formato</string> <string name="lbl_format">Formato</string>
<string name="lbl_library_counts">Estatísticas da biblioteca</string> <string name="lbl_library_counts">Estatísticas da biblioteca</string>
<string name="desc_no_cover">Capa do álbum</string> <string name="desc_no_cover">Capa do álbum</string>
<string name="lbl_sort_date">Ano</string> <string name="lbl_date">Ano</string>
<string name="set_cover_mode_media_store">Rápido</string> <string name="set_cover_mode_media_store">Rápido</string>
<string name="set_cover_mode_quality">Qualidade alta</string> <string name="set_cover_mode_quality">Qualidade alta</string>
<string name="set_bar_action">Ação da barra de reprodução personalizada</string> <string name="set_bar_action">Ação da barra de reprodução personalizada</string>
@ -100,8 +100,8 @@
<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>
<string name="lbl_sort_disc">Disco</string> <string name="lbl_disc">Disco</string>
<string name="lbl_sort_track">Faixa</string> <string name="lbl_track">Faixa</string>
<string name="lbl_bitrate">Taxa de bits</string> <string name="lbl_bitrate">Taxa de bits</string>
<string name="set_action_mode_next">Pular para o próximo</string> <string name="set_action_mode_next">Pular para o próximo</string>
<string name="set_pre_amp_warning">Aviso: Alterar o pré-amplificador para um valor positivo alto pode resultar em picos em algumas faixas de áudio.</string> <string name="set_pre_amp_warning">Aviso: Alterar o pré-amplificador para um valor positivo alto pode resultar em picos em algumas faixas de áudio.</string>
@ -109,7 +109,7 @@
<string name="set_separators_slash">Barra (/)</string> <string name="set_separators_slash">Barra (/)</string>
<string name="set_separators_plus">Mais (+)</string> <string name="set_separators_plus">Mais (+)</string>
<string name="cdc_ogg">Áudio Ogg</string> <string name="cdc_ogg">Áudio Ogg</string>
<string name="lbl_sort_date_added">Data adicionada</string> <string name="lbl_date_added">Data adicionada</string>
<string name="lbl_sample_rate">Taxa de amostragem</string> <string name="lbl_sample_rate">Taxa de amostragem</string>
<string name="lbl_save">Gravar</string> <string name="lbl_save">Gravar</string>
<string name="set_separators">Separadores multi-valor</string> <string name="set_separators">Separadores multi-valor</string>
@ -136,7 +136,7 @@
<string name="lbl_compilations">Compilações</string> <string name="lbl_compilations">Compilações</string>
<string name="lbl_compilation">Compilação</string> <string name="lbl_compilation">Compilação</string>
<string name="lbl_live_group">Ao vivo</string> <string name="lbl_live_group">Ao vivo</string>
<string name="lbl_sort_duration">Duração</string> <string name="lbl_duration">Duração</string>
<string name="lbl_cancel">Cancelar</string> <string name="lbl_cancel">Cancelar</string>
<string name="lng_indexing">A carregar a sua biblioteca de músicas…</string> <string name="lng_indexing">A carregar a sua biblioteca de músicas…</string>
<string name="set_dirs_desc">Gira de onde a música deve ser carregada</string> <string name="set_dirs_desc">Gira de onde a música deve ser carregada</string>

View file

@ -92,17 +92,17 @@
<string name="lbl_shuffle_shortcut_long">Amestecă-le pe toate</string> <string name="lbl_shuffle_shortcut_long">Amestecă-le pe toate</string>
<string name="lbl_ok">Bine</string> <string name="lbl_ok">Bine</string>
<string name="lbl_cancel">Anulează</string> <string name="lbl_cancel">Anulează</string>
<string name="lbl_sort_disc">Disc</string> <string name="lbl_disc">Disc</string>
<string name="lbl_song_detail">Vezi proprietăți</string> <string name="lbl_song_detail">Vezi proprietăți</string>
<string name="lbl_sort_date">Data</string> <string name="lbl_date">Data</string>
<string name="lbl_mix">Mix</string> <string name="lbl_mix">Mix</string>
<string name="lbl_mixes">Mixuri</string> <string name="lbl_mixes">Mixuri</string>
<string name="lbl_sort_track">Piesă</string> <string name="lbl_track">Piesă</string>
<string name="lbl_sort_duration">Durată</string> <string name="lbl_duration">Durată</string>
<string name="lbl_sort_count">Număr de melodii</string> <string name="lbl_song_count">Număr de melodii</string>
<string name="lbl_equalizer">Egalizator</string> <string name="lbl_equalizer">Egalizator</string>
<string name="lbl_bitrate">Bit rate</string> <string name="lbl_bitrate">Bit rate</string>
<string name="lbl_sort_date_added">Data adăugării</string> <string name="lbl_date_added">Data adăugării</string>
<string name="lbl_relative_path">Calea principală</string> <string name="lbl_relative_path">Calea principală</string>
<string name="lbl_format">Format</string> <string name="lbl_format">Format</string>
<string name="lbl_props">Proprietățile cântecului</string> <string name="lbl_props">Proprietățile cântecului</string>
@ -124,7 +124,7 @@
<string name="lbl_artist">Artist</string> <string name="lbl_artist">Artist</string>
<string name="lbl_soundtracks">Coloane sonore</string> <string name="lbl_soundtracks">Coloane sonore</string>
<string name="lbl_soundtrack">Coloană sonoră</string> <string name="lbl_soundtrack">Coloană sonoră</string>
<string name="lbl_sort_name">Nume</string> <string name="lbl_name">Nume</string>
<string name="set_personalize_desc">Personalizați controalele și comportamentul UI</string> <string name="set_personalize_desc">Personalizați controalele și comportamentul UI</string>
<string name="set_black_mode">Tema neagră</string> <string name="set_black_mode">Tema neagră</string>
<string name="set_ui_desc">Schimbați tema și culorile aplicației</string> <string name="set_ui_desc">Schimbați tema și culorile aplicației</string>

View file

@ -15,10 +15,10 @@
<string name="lbl_filter">Фильтр</string> <string name="lbl_filter">Фильтр</string>
<string name="lbl_filter_all">Все</string> <string name="lbl_filter_all">Все</string>
<string name="lbl_sort">Сортировать</string> <string name="lbl_sort">Сортировать</string>
<string name="lbl_sort_name">Название</string> <string name="lbl_name">Название</string>
<string name="lbl_artist">Исполнитель</string> <string name="lbl_artist">Исполнитель</string>
<string name="lbl_album">Альбом</string> <string name="lbl_album">Альбом</string>
<string name="lbl_sort_date">Год</string> <string name="lbl_date">Год</string>
<string name="lbl_sort_asc">По возрастанию</string> <string name="lbl_sort_asc">По возрастанию</string>
<string name="lbl_playback">Сейчас играет</string> <string name="lbl_playback">Сейчас играет</string>
<string name="lbl_play">Играть</string> <string name="lbl_play">Играть</string>
@ -148,10 +148,10 @@
<string name="lbl_ok">ОК</string> <string name="lbl_ok">ОК</string>
<string name="set_detail_song_playback_mode">При воспроизведении из сведений</string> <string name="set_detail_song_playback_mode">При воспроизведении из сведений</string>
<string name="set_playback_mode_none">Воспроизведение с показанного элемента</string> <string name="set_playback_mode_none">Воспроизведение с показанного элемента</string>
<string name="lbl_sort_count">Номер песни</string> <string name="lbl_song_count">Номер песни</string>
<string name="lbl_bitrate">Битрейт</string> <string name="lbl_bitrate">Битрейт</string>
<string name="lbl_sort_disc">Диск</string> <string name="lbl_disc">Диск</string>
<string name="lbl_sort_track">Трек</string> <string name="lbl_track">Трек</string>
<string name="lbl_state_restored">Состояние восстановлено</string> <string name="lbl_state_restored">Состояние восстановлено</string>
<string name="lbl_cancel">Отмена</string> <string name="lbl_cancel">Отмена</string>
<string name="set_pre_amp_warning">Внимание: Изменение предусилителя на большое положительное значение может привести к появлению искажений на некоторых звуковых дорожках.</string> <string name="set_pre_amp_warning">Внимание: Изменение предусилителя на большое положительное значение может привести к появлению искажений на некоторых звуковых дорожках.</string>
@ -164,12 +164,12 @@
<string name="set_pre_amp_desc">Предусилитель применяется к существующей настройке во время воспроизведения</string> <string name="set_pre_amp_desc">Предусилитель применяется к существующей настройке во время воспроизведения</string>
<string name="lbl_library_counts">Статистика библиотеки</string> <string name="lbl_library_counts">Статистика библиотеки</string>
<string name="set_restore_state">Восстановить состояние воспроизведения</string> <string name="set_restore_state">Восстановить состояние воспроизведения</string>
<string name="lbl_sort_duration">Продолжительность</string> <string name="lbl_duration">Продолжительность</string>
<string name="lbl_file_name">Имя файла</string> <string name="lbl_file_name">Имя файла</string>
<string name="lbl_ep">Мини-альбом</string> <string name="lbl_ep">Мини-альбом</string>
<string name="lbl_eps">Мини-альбомы</string> <string name="lbl_eps">Мини-альбомы</string>
<string name="lbl_single">Сингл</string> <string name="lbl_single">Сингл</string>
<string name="lbl_sort_date_added">Дата добавления</string> <string name="lbl_date_added">Дата добавления</string>
<string name="lbl_singles">Синглы</string> <string name="lbl_singles">Синглы</string>
<string name="set_pre_amp">Предусилитель ReplayGain</string> <string name="set_pre_amp">Предусилитель ReplayGain</string>
<string name="set_dirs_mode_exclude">Исключить</string> <string name="set_dirs_mode_exclude">Исключить</string>

View file

@ -64,9 +64,9 @@
<string name="lbl_add">Ekle</string> <string name="lbl_add">Ekle</string>
<string name="lbl_save">Kaydet</string> <string name="lbl_save">Kaydet</string>
<string name="fmt_lib_total_duration">Toplam süre: %s</string> <string name="fmt_lib_total_duration">Toplam süre: %s</string>
<string name="lbl_sort_count">Şarkı sayısı</string> <string name="lbl_song_count">Şarkı sayısı</string>
<string name="lbl_sort_disc">Disk</string> <string name="lbl_disc">Disk</string>
<string name="lbl_sort_track">Parça</string> <string name="lbl_track">Parça</string>
<string name="lbl_size">Boyut</string> <string name="lbl_size">Boyut</string>
<string name="lbl_bitrate">Bit hızı</string> <string name="lbl_bitrate">Bit hızı</string>
<string name="lbl_sample_rate">Örnek hızı</string> <string name="lbl_sample_rate">Örnek hızı</string>
@ -74,11 +74,11 @@
<string name="info_app_desc">Android için basit, rasyonel bir müzik çalar.</string> <string name="info_app_desc">Android için basit, rasyonel bir müzik çalar.</string>
<string name="lbl_indexer">Müzik yükleniyor</string> <string name="lbl_indexer">Müzik yükleniyor</string>
<string name="lng_indexing">Müzik kitaplığınız yükleniyor…</string> <string name="lng_indexing">Müzik kitaplığınız yükleniyor…</string>
<string name="lbl_sort_name">Ad</string> <string name="lbl_name">Ad</string>
<string name="lbl_artist">Sanatçı</string> <string name="lbl_artist">Sanatçı</string>
<string name="lbl_album">Albüm</string> <string name="lbl_album">Albüm</string>
<string name="lbl_sort_date">Yıl</string> <string name="lbl_date">Yıl</string>
<string name="lbl_sort_duration">Süre</string> <string name="lbl_duration">Süre</string>
<string name="lbl_state_saved">Durum kaydedildi</string> <string name="lbl_state_saved">Durum kaydedildi</string>
<string name="lng_author">Alexander Capehart tarafından geliştirildi</string> <string name="lng_author">Alexander Capehart tarafından geliştirildi</string>
<string name="set_black_mode">Siyah tema</string> <string name="set_black_mode">Siyah tema</string>
@ -192,7 +192,7 @@
<string name="lng_observing">Müzik kitaplığı değişiklikler için denetleniyor…</string> <string name="lng_observing">Müzik kitaplığı değişiklikler için denetleniyor…</string>
<string name="set_observing">Otomatik yeniden yükleme</string> <string name="set_observing">Otomatik yeniden yükleme</string>
<string name="set_observing_desc">Müzik kitaplığı her değiştiğinde yeniden yükleyin (kalıcı bildirim gerektirir)</string> <string name="set_observing_desc">Müzik kitaplığı her değiştiğinde yeniden yükleyin (kalıcı bildirim gerektirir)</string>
<string name="lbl_sort_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_clear_queue_item">Bu şarkıyı kuyruktan kaldır</string>

View file

@ -82,7 +82,7 @@
<string name="lbl_album_live">Концертний альбом</string> <string name="lbl_album_live">Концертний альбом</string>
<string name="lbl_relative_path">Шлях до каталогу</string> <string name="lbl_relative_path">Шлях до каталогу</string>
<string name="set_display">Екран</string> <string name="set_display">Екран</string>
<string name="lbl_sort_date">Дата</string> <string name="lbl_date">Дата</string>
<string name="lbl_play_selected">Відтворити вибране</string> <string name="lbl_play_selected">Відтворити вибране</string>
<string name="set_cover_mode">Обкладинки альбомів</string> <string name="set_cover_mode">Обкладинки альбомів</string>
<string name="set_hide_collaborators">Приховати співавторів</string> <string name="set_hide_collaborators">Приховати співавторів</string>
@ -94,7 +94,7 @@
<string name="fmt_lib_total_duration">Загальна тривалість: %s</string> <string name="fmt_lib_total_duration">Загальна тривалість: %s</string>
<string name="lbl_mixtapes">Мікстейпи</string> <string name="lbl_mixtapes">Мікстейпи</string>
<string name="lbl_artist">Виконавець</string> <string name="lbl_artist">Виконавець</string>
<string name="lbl_sort_duration">Тривалість</string> <string name="lbl_duration">Тривалість</string>
<string name="lbl_mixes">Мікси</string> <string name="lbl_mixes">Мікси</string>
<string name="lbl_mix">Мікс</string> <string name="lbl_mix">Мікс</string>
<string name="set_round_mode">Заокруглені обкладинки</string> <string name="set_round_mode">Заокруглені обкладинки</string>
@ -102,7 +102,7 @@
<string name="lbl_props">Властивості пісні</string> <string name="lbl_props">Властивості пісні</string>
<string name="lbl_add">Додати</string> <string name="lbl_add">Додати</string>
<string name="set_repeat_pause_desc">Ставити на паузу при повторенні пісні</string> <string name="set_repeat_pause_desc">Ставити на паузу при повторенні пісні</string>
<string name="lbl_sort_date_added">Дата додавання</string> <string name="lbl_date_added">Дата додавання</string>
<string name="lbl_sample_rate">Частота дискретизації</string> <string name="lbl_sample_rate">Частота дискретизації</string>
<string name="set_cover_mode_quality">Висока якість</string> <string name="set_cover_mode_quality">Висока якість</string>
<string name="set_reindex">Оновити музику</string> <string name="set_reindex">Оновити музику</string>
@ -115,9 +115,9 @@
<string name="set_keep_shuffle">Запам\'ятати перемішування</string> <string name="set_keep_shuffle">Запам\'ятати перемішування</string>
<string name="set_repeat_pause">Пауза при повторенні</string> <string name="set_repeat_pause">Пауза при повторенні</string>
<string name="lbl_genre">Жанр</string> <string name="lbl_genre">Жанр</string>
<string name="lbl_sort_disc">Диск</string> <string name="lbl_disc">Диск</string>
<string name="lbl_sort_asc">За зростанням</string> <string name="lbl_sort_asc">За зростанням</string>
<string name="lbl_sort_name">Назва</string> <string name="lbl_name">Назва</string>
<string name="lbl_song_detail">Переглянути властивості</string> <string name="lbl_song_detail">Переглянути властивості</string>
<string name="set_exclude_non_music_desc">Ігнорувати аудіо файли які не являються музикою, наприклад, подкасти</string> <string name="set_exclude_non_music_desc">Ігнорувати аудіо файли які не являються музикою, наприклад, подкасти</string>
<string name="set_exclude_non_music">Виключити інші звукові файли</string> <string name="set_exclude_non_music">Виключити інші звукові файли</string>
@ -126,7 +126,7 @@
<string name="lbl_compilation_live">Концертна збірка</string> <string name="lbl_compilation_live">Концертна збірка</string>
<string name="lbl_ep">Мініальбом</string> <string name="lbl_ep">Мініальбом</string>
<string name="lbl_eps">Мініальбоми</string> <string name="lbl_eps">Мініальбоми</string>
<string name="lbl_sort_count">Номер пісні</string> <string name="lbl_song_count">Номер пісні</string>
<string name="set_headset_autoplay_desc">Завжди починати відтворення при підключенні гарнітури (може працювати не на всіх пристроях)</string> <string name="set_headset_autoplay_desc">Завжди починати відтворення при підключенні гарнітури (може працювати не на всіх пристроях)</string>
<string name="lbl_ep_remix">Мініальбом реміксів</string> <string name="lbl_ep_remix">Мініальбом реміксів</string>
<string name="lbl_single_live">Концертний сингл</string> <string name="lbl_single_live">Концертний сингл</string>
@ -181,7 +181,7 @@
<string name="set_save_state">Зберегти стан відтворення</string> <string name="set_save_state">Зберегти стан відтворення</string>
<string name="set_wipe_state">Очистити стан відтворення</string> <string name="set_wipe_state">Очистити стан відтворення</string>
<string name="set_restore_state">Відновити стан відтворення</string> <string name="set_restore_state">Відновити стан відтворення</string>
<string name="lbl_sort_track">Пісня</string> <string name="lbl_track">Пісня</string>
<string name="lbl_state_restored">Стан відтворення відновлено</string> <string name="lbl_state_restored">Стан відтворення відновлено</string>
<string name="lng_widget">Перегляд і керування відтворенням музики</string> <string name="lng_widget">Перегляд і керування відтворенням музики</string>
<string name="set_rewind_prev_desc">Перемотайте на початок пісні перед відтворенням попередньої</string> <string name="set_rewind_prev_desc">Перемотайте на початок пісні перед відтворенням попередньої</string>

View file

@ -15,10 +15,10 @@
<string name="lbl_filter">过滤器</string> <string name="lbl_filter">过滤器</string>
<string name="lbl_filter_all">全部</string> <string name="lbl_filter_all">全部</string>
<string name="lbl_sort">排序方式</string> <string name="lbl_sort">排序方式</string>
<string name="lbl_sort_name">名称</string> <string name="lbl_name">名称</string>
<string name="lbl_artist">艺术家</string> <string name="lbl_artist">艺术家</string>
<string name="lbl_album">专辑</string> <string name="lbl_album">专辑</string>
<string name="lbl_sort_date">年份</string> <string name="lbl_date">年份</string>
<string name="lbl_sort_asc">首字符(正序)</string> <string name="lbl_sort_asc">首字符(正序)</string>
<string name="lbl_playback">正在播放</string> <string name="lbl_playback">正在播放</string>
<string name="lbl_play">播放</string> <string name="lbl_play">播放</string>
@ -173,10 +173,10 @@
<string name="def_sample_rate">没有采样率信息</string> <string name="def_sample_rate">没有采样率信息</string>
<string name="lbl_indexer">音乐加载中</string> <string name="lbl_indexer">音乐加载中</string>
<string name="lng_indexing">正在加载您的音乐库……</string> <string name="lng_indexing">正在加载您的音乐库……</string>
<string name="lbl_sort_disc">碟片</string> <string name="lbl_disc">碟片</string>
<string name="lbl_sort_duration">时长</string> <string name="lbl_duration">时长</string>
<string name="lbl_sort_count">歌曲计数</string> <string name="lbl_song_count">歌曲计数</string>
<string name="lbl_sort_track">音轨</string> <string name="lbl_track">音轨</string>
<string name="lbl_song_detail">查看属性</string> <string name="lbl_song_detail">查看属性</string>
<string name="lbl_props">曲目属性</string> <string name="lbl_props">曲目属性</string>
<string name="lbl_file_name">文件名</string> <string name="lbl_file_name">文件名</string>
@ -210,7 +210,7 @@
<string name="lbl_mixtapes">混音带</string> <string name="lbl_mixtapes">混音带</string>
<string name="lbl_mixtape">混音带</string> <string name="lbl_mixtape">混音带</string>
<string name="lbl_remix_group">混音</string> <string name="lbl_remix_group">混音</string>
<string name="lbl_sort_date_added">添加日期</string> <string name="lbl_date_added">添加日期</string>
<string name="lbl_album_remix">混音专辑</string> <string name="lbl_album_remix">混音专辑</string>
<string name="lbl_ep_live">现场 EP</string> <string name="lbl_ep_live">现场 EP</string>
<string name="lbl_album_live">现场专辑</string> <string name="lbl_album_live">现场专辑</string>

View file

@ -55,7 +55,7 @@
<string name="lbl_observing">檢測音樂庫</string> <string name="lbl_observing">檢測音樂庫</string>
<string name="lbl_format">格式</string> <string name="lbl_format">格式</string>
<string name="set_black_mode">黑色主題</string> <string name="set_black_mode">黑色主題</string>
<string name="lbl_sort_duration">時長</string> <string name="lbl_duration">時長</string>
<string name="lbl_size">大小</string> <string name="lbl_size">大小</string>
<string name="lbl_bitrate">位元率</string> <string name="lbl_bitrate">位元率</string>
<string name="lbl_sample_rate">取樣頻率</string> <string name="lbl_sample_rate">取樣頻率</string>

View file

@ -7,6 +7,7 @@
<string name="fmt_two" translatable="false">%1$s • %2$s</string> <string name="fmt_two" translatable="false">%1$s • %2$s</string>
<string name="fmt_three" translatable="false">%1$s • %2$s • %3$s</string> <string name="fmt_three" translatable="false">%1$s • %2$s • %3$s</string>
<string name="fmt_number" translatable="false">%d</string> <string name="fmt_number" translatable="false">%d</string>
<string name="fmt_zipped_names" translatable="false">%1$s (%2$s)</string>
<string name="fmt_date_range" translatable="false">%s - %s</string> <string name="fmt_date_range" translatable="false">%s - %s</string>
<string name="fmt_path">%1$s/%2$s</string> <string name="fmt_path">%1$s/%2$s</string>

View file

@ -83,14 +83,15 @@
<!-- As in to not filter --> <!-- As in to not filter -->
<string name="lbl_filter_all">All</string> <string name="lbl_filter_all">All</string>
<string name="lbl_name">Name</string>
<string name="lbl_date">Date</string>
<string name="lbl_duration">Duration</string>
<string name="lbl_song_count">Song count</string>
<string name="lbl_disc">Disc</string>
<string name="lbl_track">Track</string>
<string name="lbl_date_added">Date added</string>
<string name="lbl_sort">Sort</string> <string name="lbl_sort">Sort</string>
<string name="lbl_sort_name">Name</string>
<string name="lbl_sort_date">Date</string>
<string name="lbl_sort_duration">Duration</string>
<string name="lbl_sort_count">Song count</string>
<string name="lbl_sort_disc">Disc</string>
<string name="lbl_sort_track">Track</string>
<string name="lbl_sort_date_added">Date added</string>
<string name="lbl_sort_asc">Ascending</string> <string name="lbl_sort_asc">Ascending</string>
<string name="lbl_sort_dec">Descending</string> <string name="lbl_sort_dec">Descending</string>
@ -311,11 +312,8 @@
<string name="def_artist">Unknown artist</string> <string name="def_artist">Unknown artist</string>
<string name="def_genre">Unknown genre</string> <string name="def_genre">Unknown genre</string>
<string name="def_date">No date</string> <string name="def_date">No date</string>
<string name="def_track">No track number</string> <string name="def_track">No track</string>
<string name="def_playback">No music playing</string> <string name="def_playback">No music playing</string>
<string name="def_codec">Unknown format</string>
<string name="def_bitrate">No bitrate</string>
<string name="def_sample_rate">No sample rate</string>
<!-- Codec Namespace | Format names --> <!-- Codec Namespace | Format names -->
<eat-comment /> <eat-comment />