mirror of
https://github.com/ultrasonic/ultrasonic
synced 2025-02-16 11:41:16 +01:00
Merge branch 'develop' into ready/LRUCache
This commit is contained in:
commit
ca9ba68a5e
4
fastlane/metadata/android/en-US/changelogs/100.txt
Normal file
4
fastlane/metadata/android/en-US/changelogs/100.txt
Normal file
@ -0,0 +1,4 @@
|
||||
Others
|
||||
|
||||
- #671: Bump versions.mockito from 4.1.0 to 4.3.1.
|
||||
- Update translations.
|
4
fastlane/metadata/android/es-ES/changelogs/100.txt
Normal file
4
fastlane/metadata/android/es-ES/changelogs/100.txt
Normal file
@ -0,0 +1,4 @@
|
||||
Otros
|
||||
|
||||
- #671: Actualizado versions.mockito de 4.1.0 a 4.3.1.
|
||||
- Traducciones actualizadas.
|
@ -9,8 +9,8 @@ android {
|
||||
|
||||
defaultConfig {
|
||||
applicationId "org.moire.ultrasonic"
|
||||
versionCode 99
|
||||
versionName "3.0.0"
|
||||
versionCode 100
|
||||
versionName "3.0.1"
|
||||
|
||||
minSdkVersion versions.minSdk
|
||||
targetSdkVersion versions.targetSdk
|
||||
|
@ -208,8 +208,8 @@ class NavigationActivity : AppCompatActivity() {
|
||||
selectServerButton?.text = getString(R.string.main_setup_server, activeServer.name)
|
||||
else selectServerButton?.text = activeServer.name
|
||||
|
||||
val foregroundColor = ServerColor.getForegroundColor(this, null)
|
||||
val backgroundColor = ServerColor.getBackgroundColor(this, null)
|
||||
val foregroundColor = ServerColor.getForegroundColor(this, activeServer.color)
|
||||
val backgroundColor = ServerColor.getBackgroundColor(this, activeServer.color)
|
||||
|
||||
if (activeServer.index == 0)
|
||||
selectServerButton?.icon =
|
||||
|
@ -108,8 +108,8 @@ internal class ServerRowAdapter(
|
||||
}
|
||||
|
||||
// Set colors
|
||||
icon?.setTint(ServerColor.getForegroundColor(context, null))
|
||||
background?.setTint(ServerColor.getBackgroundColor(context, null))
|
||||
icon?.setTint(ServerColor.getForegroundColor(context, setting?.color))
|
||||
background?.setTint(ServerColor.getBackgroundColor(context, setting?.color))
|
||||
|
||||
// Set the final drawables
|
||||
image?.setImageDrawable(icon)
|
||||
|
@ -9,7 +9,7 @@ import androidx.sqlite.db.SupportSQLiteDatabase
|
||||
* Room Database to be used to store global data for the whole app.
|
||||
* This could be settings or data that are not specific to any remote music database
|
||||
*/
|
||||
@Database(entities = [ServerSetting::class], version = 3)
|
||||
@Database(entities = [ServerSetting::class], version = 4)
|
||||
abstract class AppDatabase : RoomDatabase() {
|
||||
|
||||
/**
|
||||
|
@ -23,6 +23,7 @@ data class ServerSetting(
|
||||
@ColumnInfo(name = "index") var index: Int,
|
||||
@ColumnInfo(name = "name") var name: String,
|
||||
@ColumnInfo(name = "url") var url: String,
|
||||
@ColumnInfo(name = "color") var color: Int? = null,
|
||||
@ColumnInfo(name = "userName") var userName: String,
|
||||
@ColumnInfo(name = "password") var password: String,
|
||||
@ColumnInfo(name = "jukeboxByDefault") var jukeboxByDefault: Boolean,
|
||||
@ -36,9 +37,9 @@ data class ServerSetting(
|
||||
@ColumnInfo(name = "podcastSupport") var podcastSupport: Boolean? = null
|
||||
) {
|
||||
constructor() : this (
|
||||
-1, 0, "", "", "", "", false, false, false, null, null
|
||||
-1, 0, "", "", null, "", "", false, false, false, null, null
|
||||
)
|
||||
constructor(name: String, url: String) : this(
|
||||
-1, 0, name, url, "", "", false, false, false, null, null
|
||||
-1, 0, name, url, null, "", "", false, false, false, null, null
|
||||
)
|
||||
}
|
||||
|
@ -6,13 +6,15 @@ import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.Button
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import com.google.android.material.switchmaterial.SwitchMaterial
|
||||
import com.google.android.material.textfield.TextInputLayout
|
||||
import com.skydoves.colorpickerview.ColorPickerDialog
|
||||
import com.skydoves.colorpickerview.flag.BubbleFlag
|
||||
import com.skydoves.colorpickerview.flag.FlagMode
|
||||
import com.skydoves.colorpickerview.listeners.ColorEnvelopeListener
|
||||
import java.io.IOException
|
||||
import java.net.MalformedURLException
|
||||
import java.net.URL
|
||||
@ -41,6 +43,8 @@ import org.moire.ultrasonic.util.Util
|
||||
import retrofit2.Response
|
||||
import timber.log.Timber
|
||||
|
||||
private const val DIALOG_PADDING = 12
|
||||
|
||||
/**
|
||||
* Displays a form where server settings can be created / edited
|
||||
*/
|
||||
@ -68,8 +72,6 @@ class EditServerFragment : Fragment(), OnBackPressedHandler {
|
||||
private var currentColor: Int = 0
|
||||
private var selectedColor: Int? = null
|
||||
|
||||
private var editServerColorText: TextView? = null
|
||||
|
||||
@Override
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
Util.applyTheme(this.context)
|
||||
@ -97,7 +99,6 @@ class EditServerFragment : Fragment(), OnBackPressedHandler {
|
||||
jukeboxSwitch = view.findViewById(R.id.edit_jukebox)
|
||||
saveButton = view.findViewById(R.id.edit_save)
|
||||
testButton = view.findViewById(R.id.edit_test)
|
||||
editServerColorText = view.findViewById(R.id.edit_server_color_text)
|
||||
|
||||
val index = arguments?.getInt(
|
||||
EDIT_SERVER_INTENT_INDEX,
|
||||
@ -146,7 +147,7 @@ class EditServerFragment : Fragment(), OnBackPressedHandler {
|
||||
} else {
|
||||
// Creating a new server
|
||||
FragmentTitle.setTitle(this, R.string.server_editor_new_label)
|
||||
// updateColor(null)
|
||||
updateColor(null)
|
||||
currentServerSetting = ServerSetting()
|
||||
saveButton!!.setOnClickListener {
|
||||
if (getFields()) {
|
||||
@ -162,37 +163,33 @@ class EditServerFragment : Fragment(), OnBackPressedHandler {
|
||||
}
|
||||
}
|
||||
|
||||
// serverColorImageView!!.setOnClickListener {
|
||||
// val bubbleFlag = BubbleFlag(context)
|
||||
// bubbleFlag.flagMode = FlagMode.LAST
|
||||
// ColorPickerDialog.Builder(context).apply {
|
||||
// this.colorPickerView.setInitialColor(currentColor)
|
||||
// this.colorPickerView.flagView = bubbleFlag
|
||||
// }
|
||||
// .attachAlphaSlideBar(false)
|
||||
// .setPositiveButton(
|
||||
// getString(R.string.common_ok),
|
||||
// ColorEnvelopeListener { envelope, _ ->
|
||||
// selectedColor = envelope.color
|
||||
// updateColor(envelope.color)
|
||||
// }
|
||||
// )
|
||||
// .setNegativeButton(getString(R.string.common_cancel)) {
|
||||
// dialogInterface, _ ->
|
||||
// dialogInterface.dismiss()
|
||||
// }
|
||||
// .setBottomSpace(DIALOG_PADDING)
|
||||
// .show()
|
||||
// }
|
||||
|
||||
serverColorImageView?.isVisible = false
|
||||
editServerColorText?.isVisible = false
|
||||
serverColorImageView!!.setOnClickListener {
|
||||
val bubbleFlag = BubbleFlag(context)
|
||||
bubbleFlag.flagMode = FlagMode.LAST
|
||||
ColorPickerDialog.Builder(context).apply {
|
||||
this.colorPickerView.setInitialColor(currentColor)
|
||||
this.colorPickerView.flagView = bubbleFlag
|
||||
}
|
||||
.attachAlphaSlideBar(false)
|
||||
.setPositiveButton(
|
||||
getString(R.string.common_ok),
|
||||
ColorEnvelopeListener { envelope, _ ->
|
||||
selectedColor = envelope.color
|
||||
updateColor(envelope.color)
|
||||
}
|
||||
)
|
||||
.setNegativeButton(getString(R.string.common_cancel)) {
|
||||
dialogInterface, _ ->
|
||||
dialogInterface.dismiss()
|
||||
}
|
||||
.setBottomSpace(DIALOG_PADDING)
|
||||
.show()
|
||||
}
|
||||
}
|
||||
|
||||
@Suppress("unused")
|
||||
private fun updateColor() {
|
||||
private fun updateColor(color: Int?) {
|
||||
val image = ContextCompat.getDrawable(requireContext(), R.drawable.thumb_drawable)
|
||||
currentColor = ServerColor.getBackgroundColor(requireContext(), null)
|
||||
currentColor = ServerColor.getBackgroundColor(requireContext(), color)
|
||||
image?.setTint(currentColor)
|
||||
serverColorImageView?.background = image
|
||||
}
|
||||
@ -257,7 +254,7 @@ class EditServerFragment : Fragment(), OnBackPressedHandler {
|
||||
selfSignedSwitch!!.isChecked = savedInstanceState.getBoolean(::selfSignedSwitch.name)
|
||||
ldapSwitch!!.isChecked = savedInstanceState.getBoolean(::ldapSwitch.name)
|
||||
jukeboxSwitch!!.isChecked = savedInstanceState.getBoolean(::jukeboxSwitch.name)
|
||||
// updateColor(savedInstanceState.getInt(::serverColorImageView.name))
|
||||
updateColor(savedInstanceState.getInt(::serverColorImageView.name))
|
||||
if (savedInstanceState.containsKey(::selectedColor.name))
|
||||
selectedColor = savedInstanceState.getInt(::selectedColor.name)
|
||||
isInstanceStateSaved = savedInstanceState.getBoolean(::isInstanceStateSaved.name)
|
||||
@ -276,7 +273,7 @@ class EditServerFragment : Fragment(), OnBackPressedHandler {
|
||||
selfSignedSwitch!!.isChecked = currentServerSetting!!.allowSelfSignedCertificate
|
||||
ldapSwitch!!.isChecked = currentServerSetting!!.ldapSupport
|
||||
jukeboxSwitch!!.isChecked = currentServerSetting!!.jukeboxByDefault
|
||||
// updateColor(currentServerSetting!!.color)
|
||||
updateColor(currentServerSetting!!.color)
|
||||
}
|
||||
|
||||
/**
|
||||
@ -325,7 +322,7 @@ class EditServerFragment : Fragment(), OnBackPressedHandler {
|
||||
if (isValid) {
|
||||
currentServerSetting!!.name = serverNameEditText!!.editText?.text.toString()
|
||||
currentServerSetting!!.url = serverAddressEditText!!.editText?.text.toString()
|
||||
// currentServerSetting!!.color = selectedColor
|
||||
currentServerSetting!!.color = selectedColor
|
||||
currentServerSetting!!.userName = userNameEditText!!.editText?.text.toString()
|
||||
currentServerSetting!!.password = passwordEditText!!.editText?.text.toString()
|
||||
currentServerSetting!!.allowSelfSignedCertificate = selfSignedSwitch!!.isChecked
|
||||
|
@ -212,6 +212,7 @@ class ServerSettingsModel(
|
||||
serverId,
|
||||
settings.getString(PREFERENCES_KEY_SERVER_NAME + preferenceId, "")!!,
|
||||
url,
|
||||
null,
|
||||
userName,
|
||||
settings.getString(PREFERENCES_KEY_PASSWORD + preferenceId, "")!!,
|
||||
settings.getBoolean(PREFERENCES_KEY_JUKEBOX_BY_DEFAULT + preferenceId, false),
|
||||
|
@ -29,14 +29,14 @@
|
||||
<string name="chat.send_a_message">Nachricht senden</string>
|
||||
<string name="common.album">Album</string>
|
||||
<string name="common.appname">Ultrasonic</string>
|
||||
<string name="common.artist">Künstler*in</string>
|
||||
<string name="common.artist">Künstler</string>
|
||||
<string name="common.cancel">Abbrechen</string>
|
||||
<string name="common.comment">Kommentar</string>
|
||||
<string name="common.confirm">Bestätigen</string>
|
||||
<string name="common.delete">Löschen</string>
|
||||
<string name="common.download">Herunterladen</string>
|
||||
<string name="common.info">Details</string>
|
||||
<string name="common.multiple_genres">Mehrere Genre</string>
|
||||
<string name="common.multiple_genres">Mehrere Genres</string>
|
||||
<string name="common.name">Name</string>
|
||||
<string name="common.ok">OK</string>
|
||||
<string name="common.pin">Anheften</string>
|
||||
@ -44,15 +44,14 @@
|
||||
<string name="common.play">Abspielen</string>
|
||||
<string name="common.play_last">Zuletzt spielen</string>
|
||||
<string name="common.play_next">Als nächstes spielen</string>
|
||||
<string name="common.play_previous">Vorheriges abspielen
|
||||
</string>
|
||||
<string name="common.play_previous">Vorheriges abspielen</string>
|
||||
<string name="common.play_now">Jetzt spielen</string>
|
||||
<string name="common.play_shuffled">Zufällig spielen</string>
|
||||
<string name="common.public">Öffentlich</string>
|
||||
<string name="common.save">Speichern</string>
|
||||
<string name="common.title">Titel</string>
|
||||
<string name="common.unpin">Lösen</string>
|
||||
<string name="common.various_artists">Verschiedene Künstler*innen</string>
|
||||
<string name="common.various_artists">Verschiedene Künstler</string>
|
||||
<string name="delete_playlist">Möchtest du %1$s löschen</string>
|
||||
<string name="download.bookmark_removed" formatted="false">Lesezeichen entfernt</string>
|
||||
<string name="download.bookmark_set_at_position" formatted="false">Lesezeichen gesetzt als %s.</string>
|
||||
@ -94,7 +93,7 @@
|
||||
<string name="help.url">file:///android_asset/html/de/index.html</string>
|
||||
<string name="jukebox.is_default">Jukebox als Standard</string>
|
||||
<string name="lyrics.nomatch">Keine Liedtexte gefunden</string>
|
||||
<string name="main.albums_alphaByArtist">Nach Künstler*innen</string>
|
||||
<string name="main.albums_alphaByArtist">Nach Künstler</string>
|
||||
<string name="main.albums_alphaByName">Nach Namen</string>
|
||||
<string name="main.albums_frequent">Am häufigsten gespielt</string>
|
||||
<string name="main.albums_highest">Am besten bewertet</string>
|
||||
@ -103,10 +102,11 @@
|
||||
<string name="main.albums_recent">Kürzlich gespielt</string>
|
||||
<string name="main.albums_starred">Mit Stern</string>
|
||||
<string name="main.albums_title">Alben</string>
|
||||
<string name="main.artists_title">Künstler*innen</string>
|
||||
<string name="main.artists_title">Künstler</string>
|
||||
<string name="main.genres_title">Genres</string>
|
||||
<string name="main.music">Musik</string>
|
||||
<string name="main.offline">Offline</string>
|
||||
<string name="main.setup_server">%s - Server einrichten</string>
|
||||
<string name="main.shuffle">Gemischte Wiedergabe</string>
|
||||
<string name="main.songs_random">Zufällig</string>
|
||||
<string name="main.songs_starred">Mit Stern</string>
|
||||
@ -125,7 +125,7 @@
|
||||
<string name="music_library.label">Medienbibliothek</string>
|
||||
<string name="music_library.label_offline">Offline Medien</string>
|
||||
<string name="music_service.retry">Netzwerkfehler. Neuer Versuch %1$d von %2$d.</string>
|
||||
<string name="parser.artist_count">%d Künstler*in gefunden</string>
|
||||
<string name="parser.artist_count">%d Künstler gefunden</string>
|
||||
<string name="parser.reading">Lese vom Server.</string>
|
||||
<string name="parser.reading_done">Lese vom Server. Fertig!</string>
|
||||
<string name="playlist.label">Wiedergabelisten</string>
|
||||
@ -134,7 +134,7 @@
|
||||
<string name="playlist.updated_info_error">Aktualisierung der Wiedergabeliste %s ist fehlgeschlagen</string>
|
||||
<string name="progress.wait">Bitte warten…</string>
|
||||
<string name="search.albums">Alben</string>
|
||||
<string name="search.artists">Künstler*innen</string>
|
||||
<string name="search.artists">Künstler</string>
|
||||
<string name="search.label">Suche</string>
|
||||
<string name="search.more">Zeige mehr</string>
|
||||
<string name="search.no_match">Keine Treffer, bitte erneut versuchen</string>
|
||||
@ -149,7 +149,7 @@
|
||||
<string name="select_artist.folder">Ordner wählen</string>
|
||||
<string name="select_genre.empty">Keine Genres gefunden</string>
|
||||
<string name="select_playlist.empty">Keine Wiedergabelisten auf dem Server</string>
|
||||
<string name="service.connecting">Kontaktierse Server, bitte warten.</string>
|
||||
<string name="service.connecting">Kontaktiere Server, bitte warten.</string>
|
||||
<string name="settings.appearance_title">Aussehen</string>
|
||||
<string name="settings.buffer_length">Puffer-Länge</string>
|
||||
<string name="settings.buffer_length_0">Deaktiviert</string>
|
||||
@ -218,7 +218,7 @@
|
||||
<string name="settings.invalid_url">Bitte eine gültige URL angeben.</string>
|
||||
<string name="settings.invalid_username">Bitte einen gültigen Benutzernamen eingeben (ohne führende Leerzeichen).</string>
|
||||
<string name="settings.max_albums">Maximale Alben</string>
|
||||
<string name="settings.max_artists">Maximale Künstler*innen</string>
|
||||
<string name="settings.max_artists">Max Künstler</string>
|
||||
<string name="settings.max_bitrate_112">112 Kbps</string>
|
||||
<string name="settings.max_bitrate_128">128 Kbps</string>
|
||||
<string name="settings.max_bitrate_160">160 Kbps</string>
|
||||
@ -229,12 +229,12 @@
|
||||
<string name="settings.max_bitrate_64">64 Kbps</string>
|
||||
<string name="settings.max_bitrate_80">80 Kbps</string>
|
||||
<string name="settings.max_bitrate_96">96 Kbps</string>
|
||||
<string name="settings.max_bitrate_mobile">Maximale Bitragte - Mobil</string>
|
||||
<string name="settings.max_bitrate_mobile">Max Bitrate - Mobil</string>
|
||||
<string name="settings.max_bitrate_unlimited">Unbegrenzt</string>
|
||||
<string name="settings.max_bitrate_wifi">Maximale Bitrate - WLAN</string>
|
||||
<string name="settings.max_bitrate_wifi">Max Bitrate - WLAN</string>
|
||||
<string name="settings.max_songs">Maximale Titel</string>
|
||||
<string name="settings.media_button_summary">Auf Telefon, Headset und Bluetooth-Media-Tasten reagieren</string>
|
||||
<string name="settings.media_button_title">Media Tasten</string>
|
||||
<string name="settings.media_button_title">Medien Tasten</string>
|
||||
<string name="settings.network_timeout">Netzwerk Zeitüberschreitung</string>
|
||||
<string name="settings.network_timeout_105000">105 Sekunden</string>
|
||||
<string name="settings.network_timeout_120000">120 Sekunden</string>
|
||||
@ -257,6 +257,7 @@
|
||||
<string name="settings.preload_unlimited">Unbegrenzt</string>
|
||||
<string name="settings.playback.resume_play_on_headphones_plug.title">Fortsetzen mit Kopfhörer</string>
|
||||
<string name="settings.playback.resume_play_on_headphones_plug.summary">Die App setzt eine pausierte Wiedergabe beim Anschließen der Kopfhörer fort.</string>
|
||||
<string name="settings.scrobble_title">Gespielte Musik scrobbeln</string>
|
||||
<string name="settings.search_1">1</string>
|
||||
<string name="settings.search_10">10</string>
|
||||
<string name="settings.search_100">100</string>
|
||||
@ -301,6 +302,7 @@
|
||||
<string name="settings.testing_unlicensed">Verbindung OK, Server nicht lizensiert.</string>
|
||||
<string name="settings.theme_light">Hell</string>
|
||||
<string name="settings.theme_dark">Dunkel</string>
|
||||
<string name="settings.theme_black">Schwarz</string>
|
||||
<string name="settings.theme_title">Thema</string>
|
||||
<string name="settings.title.allow_self_signed_certificate">Selbst-signierte HTTPS Zertifikate erlauben</string>
|
||||
<string name="settings.title.enable_ldap_users_support">LDAP Benutzeranmeldung aktivieren</string>
|
||||
@ -310,6 +312,8 @@
|
||||
<string name="settings.use_id3">Durchsuchen von ID3-Tags</string>
|
||||
<string name="settings.use_id3_summary">Nutze ID3 Tag Methode anstatt Dateisystem-Methode</string>
|
||||
<string name="main.video" tools:ignore="UnusedResources">Film</string>
|
||||
<string name="settings.wifi_required_summary">Medien nur über gebührenfreie Verbindungen herunterladen</string>
|
||||
<string name="settings.wifi_required_title">Nur über WLAN herunterladen</string>
|
||||
<string name="song_details.all">%1$s%2$s</string>
|
||||
<string name="song_details.kbps">%d kbps</string>
|
||||
<string name="util.bytes_format.byte">0 B</string>
|
||||
@ -322,11 +326,13 @@
|
||||
<string name="widget.sdcard_busy">SD Karte nicht verfügbar</string>
|
||||
<string name="widget.sdcard_missing">Keine SD Karte</string>
|
||||
<string name="settings.share_description_default">Standard Beschreibung einer Freigabe</string>
|
||||
<string name="settings.sharing_title">Teilen</string>
|
||||
<string name="settings.sharing_title">Freigaben</string>
|
||||
<string name="settings.sharing_always_ask_for_details">Immer nach Details fragen</string>
|
||||
<string name="settings.share_expiration_default">Standard Ablaufzeit</string>
|
||||
<string name="do_not_show_dialog_again">Dialog nicht wieder anzeigen</string>
|
||||
<string name="share_set_share_options">Ferigabeoptionen</string>
|
||||
<string name="share_set_share_options">Freigabeoptionen</string>
|
||||
<string name="share_on_server">Freigabe auf Server erstellen</string>
|
||||
<string name="settings.share_on_server_summary">Teilen erzeugt eine Freigabe auf dem Server und sendet die URL. Wenn ausgeschaltet, werden nur die Lied-Details geteilt.</string>
|
||||
<string name="no_expiration">Kein Ablaufdatum</string>
|
||||
<string name="download.toggle_playlist">Wiedergabeliste umschalten</string>
|
||||
<string name="download.bookmark_set">Lesezeichen setzen</string>
|
||||
@ -350,13 +356,13 @@
|
||||
<string name="download_song_removed">%s wurde von der Wiedergabeliste entfernt</string>
|
||||
<string name="download.share_playlist">Wiedergabeliste teilen</string>
|
||||
<string name="download.share_song">Aktuelles Lied teilen</string>
|
||||
<string name="settings.share_greeting_default">Standard Begrüßung beim Teilen</string>
|
||||
<string name="settings.share_greeting_default">Standard Freigabe-Begrüßung</string>
|
||||
<string name="share_default_greeting">Hör dir mal die Musik an, die ich mit dir über %s geteilt habe.</string>
|
||||
<string name="share_via">Titel teilen über</string>
|
||||
<string name="menu.share">Freigabe</string>
|
||||
<string name="settings.show_all_songs_by_artist">Alle Titel nach Künstler*innen sortieren</string>
|
||||
<string name="settings.show_all_songs_by_artist">Alle Titel nach Künstler sortieren</string>
|
||||
<string name="settings.show_all_songs_by_artist_summary">Einen neuen Eintrag in der Künstleransicht hinzufügen, um auf alle Lieder eines Künstlers zuzugreifen</string>
|
||||
<string name="download.menu_show_artist">Künstler*in zeigen</string>
|
||||
<string name="download.menu_show_artist">Künstler zeigen</string>
|
||||
<string name="common_multiple_years">Mehrere Jahre</string>
|
||||
<string name="settings.playback.resume_on_bluetooth_device">Wiedergabe fortsetzen, wenn ein Bluetooth Gerät verbunden wurde</string>
|
||||
<string name="settings.playback.pause_on_bluetooth_device">Wiedergabe pausieren, wenn ein Bluetooth Gerät getrennt wurde</string>
|
||||
@ -379,4 +385,9 @@
|
||||
<string name="api.subsonic.upgrade_client">Inkompatible Versionen. Bitte die Ultrasonic App aktualisieren.</string>
|
||||
<string name="api.subsonic.upgrade_server">Inkompatible Versionen. Bitte den subsonic Server aktualisieren.</string>
|
||||
|
||||
</resources>
|
||||
<!-- Subsonic features -->
|
||||
<string name="settings.features_title">Besonderheiten</string>
|
||||
<string name="settings.five_star_rating_title">Fünf-Stern Bewertung</string>
|
||||
<string name="settings.five_star_rating_description">Benutze Bewertungssystem mit fünf Sternen anstatt Lieder mit bloß einem Stern zu markieren.</string>
|
||||
|
||||
</resources>
|
||||
|
Loading…
x
Reference in New Issue
Block a user