Merge branch 'main' into fea/libass-android-support

This commit is contained in:
Damontecres 2026-04-14 10:38:37 -04:00
commit bcd00065fd
No known key found for this signature in database
40 changed files with 1191 additions and 143 deletions

View file

@ -71,8 +71,6 @@ jobs:
echo "$line => $short_name" echo "$line => $short_name"
cp "$line" "$short_name" cp "$line" "$short_name"
done done
apks=$(find app/build/outputs/apk -name '*.apk' -print0 | tr '\0' ',' | sed 's/,$//')
echo "apks=$apks" >> "$GITHUB_OUTPUT"
- name: Checksums - name: Checksums
run: | run: |
echo "SHA256 checksums:" echo "SHA256 checksums:"

View file

@ -36,7 +36,7 @@ jobs:
ORG_GRADLE_PROJECT_WholphinExtensionsUsername: "${{ secrets.EXTENSIONS_USERNAME }}" ORG_GRADLE_PROJECT_WholphinExtensionsUsername: "${{ secrets.EXTENSIONS_USERNAME }}"
ORG_GRADLE_PROJECT_WholphinExtensionsPassword: "${{ secrets.EXTENSIONS_PASSWORD }}" ORG_GRADLE_PROJECT_WholphinExtensionsPassword: "${{ secrets.EXTENSIONS_PASSWORD }}"
run: | run: |
./gradlew clean assembleDefaultRelease bundleAppstoreRelease --no-daemon ./gradlew clean assembleDefaultRelease bundleAppstoreRelease bundleFiretvRelease --no-daemon
- name: Verify signatures - name: Verify signatures
run: | run: |
@ -53,11 +53,6 @@ jobs:
echo "$line => $short_name" echo "$line => $short_name"
cp "$line" "$short_name" cp "$line" "$short_name"
done done
apks=$(find app/build/outputs/apk -name '*.apk' -print0 | tr '\0' ',' | sed 's/,$//')
echo "apks=$apks" >> "$GITHUB_OUTPUT"
aab=$(find app/build/outputs -name '*.aab')
echo "aab=$aab" >> "$GITHUB_OUTPUT"
- name: Checksums - name: Checksums
run: | run: |
echo "SHA256 checksums:" echo "SHA256 checksums:"

View file

@ -49,6 +49,8 @@ Wholphin uses several native components for extra playback compatibility. This i
If you want to include these in a local build, see the [instructions here](https://github.com/damontecres/wholphin-extensions?tab=readme-ov-file#usage) for configuring the repository. If you want to include these in a local build, see the [instructions here](https://github.com/damontecres/wholphin-extensions?tab=readme-ov-file#usage) for configuring the repository.
You can also build the extensions locally from https://github.com/damontecres/wholphin-extensions and include them in `app/libs`. The gradle build dependency resolution prefers these local files over fetching from the remote maven registry.
### App settings ### App settings
App settings are available with the `AppPreferences` object and defined by different `AppPreference` objects (note the `s` differences). App settings are available with the `AppPreferences` object and defined by different `AppPreference` objects (note the `s` differences).

View file

@ -1,3 +1,4 @@
import com.android.build.api.dsl.ProductFlavor
import com.google.protobuf.gradle.id import com.google.protobuf.gradle.id
import com.mikepenz.aboutlibraries.plugin.DuplicateMode import com.mikepenz.aboutlibraries.plugin.DuplicateMode
import com.mikepenz.aboutlibraries.plugin.DuplicateRule import com.mikepenz.aboutlibraries.plugin.DuplicateRule
@ -112,16 +113,34 @@ android {
} }
flavorDimensions += "version" flavorDimensions += "version"
productFlavors { productFlavors {
val featureLeanback = "leanback"
val featureUpdate = "UPDATING_ENABLED"
val featureDiscover = "DISCOVER_ENABLED"
fun ProductFlavor.setFeatureFlag(
name: String,
enabled: Boolean,
) {
this.buildConfigField("boolean", name, "Boolean.parseBoolean(\"${enabled}\")")
}
create("default") { create("default") {
dimension = "version" dimension = "version"
isDefault = true isDefault = true
manifestPlaceholders += mapOf("leanback" to false) manifestPlaceholders += mapOf(featureLeanback to false)
buildConfigField("boolean", "UPDATING_ENABLED", "true") setFeatureFlag(featureUpdate, true)
setFeatureFlag(featureDiscover, true)
} }
create("appstore") { create("appstore") {
dimension = "version" dimension = "version"
manifestPlaceholders += mapOf("leanback" to true) manifestPlaceholders += mapOf(featureLeanback to true)
buildConfigField("boolean", "UPDATING_ENABLED", "false") setFeatureFlag(featureUpdate, false)
setFeatureFlag(featureDiscover, true)
}
create("firetv") {
dimension = "version"
manifestPlaceholders += mapOf(featureLeanback to true)
setFeatureFlag(featureUpdate, false)
setFeatureFlag(featureDiscover, false)
} }
} }
compileOptions { compileOptions {

View file

@ -5,6 +5,7 @@ import androidx.annotation.ArrayRes
import androidx.annotation.StringRes import androidx.annotation.StringRes
import androidx.core.content.edit import androidx.core.content.edit
import androidx.preference.PreferenceManager import androidx.preference.PreferenceManager
import com.github.damontecres.wholphin.BuildConfig
import com.github.damontecres.wholphin.R import com.github.damontecres.wholphin.R
import com.github.damontecres.wholphin.WholphinApplication import com.github.damontecres.wholphin.WholphinApplication
import com.github.damontecres.wholphin.services.UpdateChecker import com.github.damontecres.wholphin.services.UpdateChecker
@ -1087,10 +1088,12 @@ val basicPreferences =
PreferenceGroup( PreferenceGroup(
title = R.string.more, title = R.string.more,
preferences = preferences =
listOf( buildList {
AppPreference.SeerrIntegration, if (BuildConfig.DISCOVER_ENABLED) {
AppPreference.AdvancedSettings, add(AppPreference.SeerrIntegration)
), }
add(AppPreference.AdvancedSettings)
},
), ),
) )

View file

@ -279,6 +279,7 @@ class MusicService
onMain { player.addMediaItems(mediaItems) } onMain { player.addMediaItems(mediaItems) }
} }
updateQueueSize() updateQueueSize()
start()
} }
/** /**

View file

@ -1,5 +1,6 @@
package com.github.damontecres.wholphin.services package com.github.damontecres.wholphin.services
import com.github.damontecres.wholphin.BuildConfig
import com.github.damontecres.wholphin.api.seerr.SeerrApiClient import com.github.damontecres.wholphin.api.seerr.SeerrApiClient
import com.github.damontecres.wholphin.ui.isNotNullOrBlank import com.github.damontecres.wholphin.ui.isNotNullOrBlank
import com.github.damontecres.wholphin.ui.setup.seerr.createSeerrApiUrl import com.github.damontecres.wholphin.ui.setup.seerr.createSeerrApiUrl
@ -19,7 +20,7 @@ class SeerrApi(
) )
private set private set
val active: Boolean get() = api.baseUrl.isNotNullOrBlank() val active: Boolean get() = api.baseUrl.isNotNullOrBlank() && BuildConfig.DISCOVER_ENABLED
fun update( fun update(
baseUrl: String, baseUrl: String,

View file

@ -4,6 +4,7 @@ import android.content.Context
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.asFlow import androidx.lifecycle.asFlow
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.github.damontecres.wholphin.BuildConfig
import com.github.damontecres.wholphin.api.seerr.SeerrApiClient import com.github.damontecres.wholphin.api.seerr.SeerrApiClient
import com.github.damontecres.wholphin.api.seerr.model.AuthJellyfinPostRequest import com.github.damontecres.wholphin.api.seerr.model.AuthJellyfinPostRequest
import com.github.damontecres.wholphin.api.seerr.model.AuthLocalPostRequest import com.github.damontecres.wholphin.api.seerr.model.AuthLocalPostRequest
@ -292,6 +293,7 @@ class UserSwitchListener
launchIO { launchIO {
homeSettingsService.loadCurrentSettings(user.id) homeSettingsService.loadCurrentSettings(user.id)
} }
if (BuildConfig.DISCOVER_ENABLED) {
// Check for seerr server // Check for seerr server
launchIO { launchIO {
seerrServerDao seerrServerDao
@ -333,6 +335,7 @@ class UserSwitchListener
} }
} }
} }
}
fun CurrentSeerr?.imageUrlBuilder( fun CurrentSeerr?.imageUrlBuilder(
imageType: ImageType, imageType: ImageType,

View file

@ -65,7 +65,7 @@ class UpdateChecker
private val NOTE_REGEX = Regex("<!-- app-note:(.+) -->") private val NOTE_REGEX = Regex("<!-- app-note:(.+) -->")
const val ACTIVE = BuildConfig.UPDATING_ENABLED val ACTIVE = BuildConfig.UPDATING_ENABLED
} }
/** /**

View file

@ -64,6 +64,7 @@ import com.github.damontecres.wholphin.services.BackdropService
import com.github.damontecres.wholphin.services.FavoriteWatchManager import com.github.damontecres.wholphin.services.FavoriteWatchManager
import com.github.damontecres.wholphin.services.MediaManagementService import com.github.damontecres.wholphin.services.MediaManagementService
import com.github.damontecres.wholphin.services.MediaReportService import com.github.damontecres.wholphin.services.MediaReportService
import com.github.damontecres.wholphin.services.MusicService
import com.github.damontecres.wholphin.services.NavigationManager import com.github.damontecres.wholphin.services.NavigationManager
import com.github.damontecres.wholphin.services.ThemeSongPlayer import com.github.damontecres.wholphin.services.ThemeSongPlayer
import com.github.damontecres.wholphin.services.UserPreferencesService import com.github.damontecres.wholphin.services.UserPreferencesService
@ -80,6 +81,7 @@ import com.github.damontecres.wholphin.ui.detail.MoreDialogActions
import com.github.damontecres.wholphin.ui.detail.PlaylistDialog import com.github.damontecres.wholphin.ui.detail.PlaylistDialog
import com.github.damontecres.wholphin.ui.detail.PlaylistLoadingState import com.github.damontecres.wholphin.ui.detail.PlaylistLoadingState
import com.github.damontecres.wholphin.ui.detail.buildMoreDialogItemsForHome import com.github.damontecres.wholphin.ui.detail.buildMoreDialogItemsForHome
import com.github.damontecres.wholphin.ui.detail.music.addToQueue
import com.github.damontecres.wholphin.ui.equalsNotNull import com.github.damontecres.wholphin.ui.equalsNotNull
import com.github.damontecres.wholphin.ui.launchDefault import com.github.damontecres.wholphin.ui.launchDefault
import com.github.damontecres.wholphin.ui.launchIO import com.github.damontecres.wholphin.ui.launchIO
@ -139,6 +141,7 @@ class CollectionFolderViewModel
private val themeSongPlayer: ThemeSongPlayer, private val themeSongPlayer: ThemeSongPlayer,
private val userPreferencesService: UserPreferencesService, private val userPreferencesService: UserPreferencesService,
private val mediaManagementService: MediaManagementService, private val mediaManagementService: MediaManagementService,
private val musicService: MusicService,
val mediaReportService: MediaReportService, val mediaReportService: MediaReportService,
@Assisted itemId: String, @Assisted itemId: String,
@Assisted initialSortAndDirection: SortAndDirection?, @Assisted initialSortAndDirection: SortAndDirection?,
@ -532,6 +535,11 @@ class CollectionFolderViewModel
item: BaseItem, item: BaseItem,
appPreferences: AppPreferences, appPreferences: AppPreferences,
): Boolean = mediaManagementService.canDelete(item, appPreferences) ): Boolean = mediaManagementService.canDelete(item, appPreferences)
fun addToQueue(
item: BaseItem,
index: Int,
) = addToQueue(api, musicService, item, index)
} }
/** /**
@ -776,6 +784,9 @@ fun CollectionFolderGrid(
onClickGoTo = { onClickGoTo = {
onClickItem.invoke(position, it) onClickItem.invoke(position, it)
}, },
onClickAddToQueue = {
viewModel.addToQueue(it, 0)
},
), ),
), ),
onDismissRequest = { moreDialog.makeAbsent() }, onDismissRequest = { moreDialog.makeAbsent() },

View file

@ -76,6 +76,8 @@ import kotlinx.coroutines.launch
import org.jellyfin.sdk.model.api.MediaSourceInfo import org.jellyfin.sdk.model.api.MediaSourceInfo
import org.jellyfin.sdk.model.api.MediaStream import org.jellyfin.sdk.model.api.MediaStream
import org.jellyfin.sdk.model.api.MediaStreamType import org.jellyfin.sdk.model.api.MediaStreamType
import org.jellyfin.sdk.model.serializer.toUUIDOrNull
import java.util.UUID
/** /**
* Parameters for rendering a [DialogPopup] * Parameters for rendering a [DialogPopup]
@ -597,6 +599,7 @@ fun ConfirmDeleteDialog(
fun chooseVersionParams( fun chooseVersionParams(
context: Context, context: Context,
sources: List<MediaSourceInfo>, sources: List<MediaSourceInfo>,
chosenSourceId: UUID?,
onClick: (Int) -> Unit, onClick: (Int) -> Unit,
): DialogParams = ): DialogParams =
DialogParams( DialogParams(
@ -604,6 +607,7 @@ fun chooseVersionParams(
title = context.getString(R.string.choose_stream, context.getString(R.string.version)), title = context.getString(R.string.choose_stream, context.getString(R.string.version)),
items = items =
sources.filter { it.id.isNotNullOrBlank() }.mapIndexed { index, source -> sources.filter { it.id.isNotNullOrBlank() }.mapIndexed { index, source ->
val uuid = source.id?.toUUIDOrNull()
val videoStream = val videoStream =
source.mediaStreams?.firstOrNull { it.type == MediaStreamType.VIDEO } source.mediaStreams?.firstOrNull { it.type == MediaStreamType.VIDEO }
val title = source.name ?: source.path ?: source.id ?: "" val title = source.name ?: source.path ?: source.id ?: ""
@ -611,6 +615,9 @@ fun chooseVersionParams(
headlineContent = { headlineContent = {
Text(text = title) Text(text = title)
}, },
leadingContent = {
SelectedLeadingContent(uuid != null && uuid == chosenSourceId)
},
supportingContent = { supportingContent = {
videoStream?.displayTitle?.let { Text(text = it) } videoStream?.displayTitle?.let { Text(text = it) }
}, },

View file

@ -26,6 +26,7 @@ import com.github.damontecres.wholphin.services.BackdropService
import com.github.damontecres.wholphin.services.FavoriteWatchManager import com.github.damontecres.wholphin.services.FavoriteWatchManager
import com.github.damontecres.wholphin.services.MediaManagementService import com.github.damontecres.wholphin.services.MediaManagementService
import com.github.damontecres.wholphin.services.MediaReportService import com.github.damontecres.wholphin.services.MediaReportService
import com.github.damontecres.wholphin.services.MusicService
import com.github.damontecres.wholphin.services.NavigationManager import com.github.damontecres.wholphin.services.NavigationManager
import com.github.damontecres.wholphin.services.deleteItem import com.github.damontecres.wholphin.services.deleteItem
import com.github.damontecres.wholphin.ui.OneTimeLaunchedEffect import com.github.damontecres.wholphin.ui.OneTimeLaunchedEffect
@ -35,6 +36,7 @@ import com.github.damontecres.wholphin.ui.detail.MoreDialogActions
import com.github.damontecres.wholphin.ui.detail.PlaylistDialog import com.github.damontecres.wholphin.ui.detail.PlaylistDialog
import com.github.damontecres.wholphin.ui.detail.PlaylistLoadingState import com.github.damontecres.wholphin.ui.detail.PlaylistLoadingState
import com.github.damontecres.wholphin.ui.detail.buildMoreDialogItemsForHome import com.github.damontecres.wholphin.ui.detail.buildMoreDialogItemsForHome
import com.github.damontecres.wholphin.ui.detail.music.addToQueue
import com.github.damontecres.wholphin.ui.launchDefault import com.github.damontecres.wholphin.ui.launchDefault
import com.github.damontecres.wholphin.ui.launchIO import com.github.damontecres.wholphin.ui.launchIO
import com.github.damontecres.wholphin.ui.main.HomePageContent import com.github.damontecres.wholphin.ui.main.HomePageContent
@ -48,6 +50,7 @@ import kotlinx.coroutines.Deferred
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.async import kotlinx.coroutines.async
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
import org.jellyfin.sdk.api.client.ApiClient
import org.jellyfin.sdk.model.api.MediaType import org.jellyfin.sdk.model.api.MediaType
import java.util.UUID import java.util.UUID
@ -56,9 +59,11 @@ import java.util.UUID
*/ */
abstract class RecommendedViewModel( abstract class RecommendedViewModel(
@param:ApplicationContext val context: Context, @param:ApplicationContext val context: Context,
val api: ApiClient,
val navigationManager: NavigationManager, val navigationManager: NavigationManager,
val favoriteWatchManager: FavoriteWatchManager, val favoriteWatchManager: FavoriteWatchManager,
val mediaReportService: MediaReportService, val mediaReportService: MediaReportService,
private val musicService: MusicService,
private val backdropService: BackdropService, private val backdropService: BackdropService,
private val mediaManagementService: MediaManagementService, private val mediaManagementService: MediaManagementService,
) : ViewModel() { ) : ViewModel() {
@ -147,6 +152,11 @@ abstract class RecommendedViewModel(
item: BaseItem, item: BaseItem,
appPreferences: AppPreferences, appPreferences: AppPreferences,
): Boolean = mediaManagementService.canDelete(item, appPreferences) ): Boolean = mediaManagementService.canDelete(item, appPreferences)
fun addToQueue(
item: BaseItem,
index: Int,
) = addToQueue(api, musicService, item, index)
} }
@Composable @Composable
@ -244,6 +254,9 @@ fun RecommendedContent(
}, },
onSendMediaInfo = viewModel.mediaReportService::sendReportFor, onSendMediaInfo = viewModel.mediaReportService::sendReportFor,
onClickDelete = { showDeleteDialog = RowColumnItem(position, item) }, onClickDelete = { showDeleteDialog = RowColumnItem(position, item) },
onClickAddToQueue = {
viewModel.addToQueue(it, 0)
},
), ),
), ),
onDismissRequest = { moreDialog.makeAbsent() }, onDismissRequest = { moreDialog.makeAbsent() },

View file

@ -16,6 +16,7 @@ import com.github.damontecres.wholphin.services.BackdropService
import com.github.damontecres.wholphin.services.FavoriteWatchManager import com.github.damontecres.wholphin.services.FavoriteWatchManager
import com.github.damontecres.wholphin.services.MediaManagementService import com.github.damontecres.wholphin.services.MediaManagementService
import com.github.damontecres.wholphin.services.MediaReportService import com.github.damontecres.wholphin.services.MediaReportService
import com.github.damontecres.wholphin.services.MusicService
import com.github.damontecres.wholphin.services.NavigationManager import com.github.damontecres.wholphin.services.NavigationManager
import com.github.damontecres.wholphin.services.SuggestionService import com.github.damontecres.wholphin.services.SuggestionService
import com.github.damontecres.wholphin.services.SuggestionsResource import com.github.damontecres.wholphin.services.SuggestionsResource
@ -55,7 +56,8 @@ class RecommendedMovieViewModel
@AssistedInject @AssistedInject
constructor( constructor(
@ApplicationContext context: Context, @ApplicationContext context: Context,
private val api: ApiClient, api: ApiClient,
musicService: MusicService,
private val serverRepository: ServerRepository, private val serverRepository: ServerRepository,
private val preferencesDataStore: DataStore<AppPreferences>, private val preferencesDataStore: DataStore<AppPreferences>,
private val suggestionService: SuggestionService, private val suggestionService: SuggestionService,
@ -67,9 +69,11 @@ class RecommendedMovieViewModel
mediaManagementService: MediaManagementService, mediaManagementService: MediaManagementService,
) : RecommendedViewModel( ) : RecommendedViewModel(
context, context,
api,
navigationManager, navigationManager,
favoriteWatchManager, favoriteWatchManager,
mediaReportService, mediaReportService,
musicService,
backdropService, backdropService,
mediaManagementService, mediaManagementService,
) { ) {

View file

@ -17,6 +17,7 @@ import com.github.damontecres.wholphin.services.BackdropService
import com.github.damontecres.wholphin.services.FavoriteWatchManager import com.github.damontecres.wholphin.services.FavoriteWatchManager
import com.github.damontecres.wholphin.services.MediaManagementService import com.github.damontecres.wholphin.services.MediaManagementService
import com.github.damontecres.wholphin.services.MediaReportService import com.github.damontecres.wholphin.services.MediaReportService
import com.github.damontecres.wholphin.services.MusicService
import com.github.damontecres.wholphin.services.NavigationManager import com.github.damontecres.wholphin.services.NavigationManager
import com.github.damontecres.wholphin.services.SuggestionService import com.github.damontecres.wholphin.services.SuggestionService
import com.github.damontecres.wholphin.services.SuggestionsResource import com.github.damontecres.wholphin.services.SuggestionsResource
@ -54,7 +55,8 @@ class RecommendedMusicViewModel
@AssistedInject @AssistedInject
constructor( constructor(
@ApplicationContext context: Context, @ApplicationContext context: Context,
private val api: ApiClient, api: ApiClient,
musicService: MusicService,
private val serverRepository: ServerRepository, private val serverRepository: ServerRepository,
private val preferencesDataStore: DataStore<AppPreferences>, private val preferencesDataStore: DataStore<AppPreferences>,
private val suggestionService: SuggestionService, private val suggestionService: SuggestionService,
@ -66,9 +68,11 @@ class RecommendedMusicViewModel
mediaManagementService: MediaManagementService, mediaManagementService: MediaManagementService,
) : RecommendedViewModel( ) : RecommendedViewModel(
context, context,
api,
navigationManager, navigationManager,
favoriteWatchManager, favoriteWatchManager,
mediaReportService, mediaReportService,
musicService,
backdropService, backdropService,
mediaManagementService, mediaManagementService,
) { ) {

View file

@ -16,6 +16,7 @@ import com.github.damontecres.wholphin.services.FavoriteWatchManager
import com.github.damontecres.wholphin.services.LatestNextUpService import com.github.damontecres.wholphin.services.LatestNextUpService
import com.github.damontecres.wholphin.services.MediaManagementService import com.github.damontecres.wholphin.services.MediaManagementService
import com.github.damontecres.wholphin.services.MediaReportService import com.github.damontecres.wholphin.services.MediaReportService
import com.github.damontecres.wholphin.services.MusicService
import com.github.damontecres.wholphin.services.NavigationManager import com.github.damontecres.wholphin.services.NavigationManager
import com.github.damontecres.wholphin.services.SuggestionService import com.github.damontecres.wholphin.services.SuggestionService
import com.github.damontecres.wholphin.services.SuggestionsResource import com.github.damontecres.wholphin.services.SuggestionsResource
@ -58,7 +59,8 @@ class RecommendedTvShowViewModel
@AssistedInject @AssistedInject
constructor( constructor(
@ApplicationContext context: Context, @ApplicationContext context: Context,
private val api: ApiClient, api: ApiClient,
musicService: MusicService,
private val serverRepository: ServerRepository, private val serverRepository: ServerRepository,
private val preferencesDataStore: DataStore<AppPreferences>, private val preferencesDataStore: DataStore<AppPreferences>,
private val lastestNextUpService: LatestNextUpService, private val lastestNextUpService: LatestNextUpService,
@ -71,9 +73,11 @@ class RecommendedTvShowViewModel
mediaManagementService: MediaManagementService, mediaManagementService: MediaManagementService,
) : RecommendedViewModel( ) : RecommendedViewModel(
context, context,
api,
navigationManager, navigationManager,
favoriteWatchManager, favoriteWatchManager,
mediaReportService, mediaReportService,
musicService,
backdropService, backdropService,
mediaManagementService, mediaManagementService,
) { ) {

View file

@ -3,6 +3,7 @@ package com.github.damontecres.wholphin.ui.detail
import android.content.Context import android.content.Context
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowForward import androidx.compose.material.icons.automirrored.filled.ArrowForward
import androidx.compose.material.icons.filled.Add
import androidx.compose.material.icons.filled.ArrowForward import androidx.compose.material.icons.filled.ArrowForward
import androidx.compose.material.icons.filled.Delete import androidx.compose.material.icons.filled.Delete
import androidx.compose.material.icons.filled.Info import androidx.compose.material.icons.filled.Info
@ -32,6 +33,7 @@ data class MoreDialogActions(
val onClickDelete: (BaseItem) -> Unit, val onClickDelete: (BaseItem) -> Unit,
val onClickGoTo: (BaseItem) -> Unit = { navigateTo(it.destination()) }, val onClickGoTo: (BaseItem) -> Unit = { navigateTo(it.destination()) },
val onClickRemoveFromNextUp: (BaseItem) -> Unit = {}, val onClickRemoveFromNextUp: (BaseItem) -> Unit = {},
val onClickAddToQueue: (BaseItem) -> Unit = {},
) )
enum class ClearChosenStreams { enum class ClearChosenStreams {
@ -331,6 +333,16 @@ fun buildMoreDialogItemsForHome(
) )
} }
} }
if (item.type == BaseItemKind.MUSIC_ALBUM) {
add(
DialogItem(
context.getString(R.string.add_to_queue),
Icons.Default.Add,
) {
actions.onClickAddToQueue(item)
},
)
}
add( add(
DialogItem( DialogItem(
text = R.string.add_to_playlist, text = R.string.add_to_playlist,

View file

@ -430,6 +430,7 @@ fun PlaylistDetails(
}, },
onSendMediaInfo = viewModel::sendMediaReport, onSendMediaInfo = viewModel::sendMediaReport,
onClickDelete = { showDeleteDialog = it }, onClickDelete = { showDeleteDialog = it },
onClickAddToQueue = { viewModel.addToQueue(it, 0) },
) )
PlaylistDetailsContent( PlaylistDetailsContent(

View file

@ -124,6 +124,7 @@ fun CollectionDetails(
}, },
onSendMediaInfo = viewModel.mediaReportService::sendReportFor, onSendMediaInfo = viewModel.mediaReportService::sendReportFor,
onClickDelete = { item -> showDeleteDialog = Pair(position, item) }, onClickDelete = { item -> showDeleteDialog = Pair(position, item) },
onClickAddToQueue = { viewModel.addToQueue(it, 0) },
), ),
) )
moreDialog = moreDialog =
@ -244,6 +245,7 @@ fun CollectionDetails(
}, },
onSendMediaInfo = viewModel.mediaReportService::sendReportFor, onSendMediaInfo = viewModel.mediaReportService::sendReportFor,
onClickDelete = { item -> showDeleteDialog = Pair(null, item) }, onClickDelete = { item -> showDeleteDialog = Pair(null, item) },
onClickAddToQueue = { viewModel.addToQueue(it, 0) },
), ),
) )
moreDialog = moreDialog =

View file

@ -19,6 +19,7 @@ import com.github.damontecres.wholphin.services.ImageUrlService
import com.github.damontecres.wholphin.services.KeyValueService import com.github.damontecres.wholphin.services.KeyValueService
import com.github.damontecres.wholphin.services.MediaManagementService import com.github.damontecres.wholphin.services.MediaManagementService
import com.github.damontecres.wholphin.services.MediaReportService import com.github.damontecres.wholphin.services.MediaReportService
import com.github.damontecres.wholphin.services.MusicService
import com.github.damontecres.wholphin.services.NavigationManager import com.github.damontecres.wholphin.services.NavigationManager
import com.github.damontecres.wholphin.services.ThemeSongPlayer import com.github.damontecres.wholphin.services.ThemeSongPlayer
import com.github.damontecres.wholphin.services.UserPreferencesService import com.github.damontecres.wholphin.services.UserPreferencesService
@ -27,6 +28,7 @@ import com.github.damontecres.wholphin.ui.SlimItemFields
import com.github.damontecres.wholphin.ui.collectLatestIn import com.github.damontecres.wholphin.ui.collectLatestIn
import com.github.damontecres.wholphin.ui.data.RowColumn import com.github.damontecres.wholphin.ui.data.RowColumn
import com.github.damontecres.wholphin.ui.data.SortAndDirection import com.github.damontecres.wholphin.ui.data.SortAndDirection
import com.github.damontecres.wholphin.ui.detail.music.addToQueue
import com.github.damontecres.wholphin.ui.formatTypeName import com.github.damontecres.wholphin.ui.formatTypeName
import com.github.damontecres.wholphin.ui.launchDefault import com.github.damontecres.wholphin.ui.launchDefault
import com.github.damontecres.wholphin.ui.launchIO import com.github.damontecres.wholphin.ui.launchIO
@ -86,6 +88,7 @@ class CollectionViewModel
private val keyValueService: KeyValueService, private val keyValueService: KeyValueService,
private val libraryDisplayInfoDao: LibraryDisplayInfoDao, private val libraryDisplayInfoDao: LibraryDisplayInfoDao,
private val imageUrlService: ImageUrlService, private val imageUrlService: ImageUrlService,
private val musicService: MusicService,
val mediaReportService: MediaReportService, val mediaReportService: MediaReportService,
@Assisted private val itemId: UUID, @Assisted private val itemId: UUID,
) : ViewModel() { ) : ViewModel() {
@ -462,6 +465,11 @@ class CollectionViewModel
} }
} }
fun addToQueue(
item: BaseItem,
index: Int,
) = addToQueue(api, musicService, item, index)
companion object { companion object {
val typesInCollection = val typesInCollection =
listOf( listOf(

View file

@ -176,6 +176,7 @@ fun EpisodeDetails(
chooseVersionParams( chooseVersionParams(
context, context,
ep.data.mediaSources!!, ep.data.mediaSources!!,
chosenStreams?.source?.id?.toUUIDOrNull(),
) { idx -> ) { idx ->
val source = ep.data.mediaSources!![idx] val source = ep.data.mediaSources!![idx]
viewModel.savePlayVersion( viewModel.savePlayVersion(

View file

@ -210,6 +210,7 @@ fun MovieDetails(
chooseVersionParams( chooseVersionParams(
context, context,
movie.data.mediaSources!!, movie.data.mediaSources!!,
chosenStreams?.source?.id?.toUUIDOrNull(),
) { idx -> ) { idx ->
val source = movie.data.mediaSources!![idx] val source = movie.data.mediaSources!![idx]
viewModel.savePlayVersion( viewModel.savePlayVersion(

View file

@ -81,35 +81,7 @@ abstract class MusicViewModel(
fun addToQueue( fun addToQueue(
item: BaseItem, item: BaseItem,
index: Int, index: Int,
) { ) = addToQueue(api, musicService, item, index)
viewModelScope.launchIO {
Timber.v("addToQueue %s %s", item.type, item.id)
when (item.type) {
BaseItemKind.AUDIO -> {
musicService.addAllToQueue(BlockingList.of(listOf(item)), 0)
}
BaseItemKind.MUSIC_ALBUM -> {
val pager = getPagerForAlbum(api, item.id)
musicService.addAllToQueue(pager, 0)
}
BaseItemKind.MUSIC_ARTIST -> {
val pager = getPagerForArtist(api, item.id)
musicService.addAllToQueue(pager, 0)
}
BaseItemKind.PLAYLIST -> {
val pager = getPagerForPlaylist(api, item.id)
musicService.addAllToQueue(pager, 0)
}
else -> {
Timber.w("Unknown item type to queue for music: %s", item.type)
}
}
}
}
fun startInstantMix(itemId: UUID) { fun startInstantMix(itemId: UUID) {
viewModelScope.launchIO { viewModelScope.launchIO {
@ -140,3 +112,38 @@ abstract class MusicViewModel(
internal abstract fun init() internal abstract fun init()
} }
fun ViewModel.addToQueue(
api: ApiClient,
musicService: MusicService,
item: BaseItem,
index: Int,
) {
viewModelScope.launchIO {
Timber.v("addToQueue %s %s", item.type, item.id)
when (item.type) {
BaseItemKind.AUDIO -> {
musicService.addAllToQueue(BlockingList.of(listOf(item)), 0)
}
BaseItemKind.MUSIC_ALBUM -> {
val pager = getPagerForAlbum(api, item.id)
musicService.addAllToQueue(pager, 0)
}
BaseItemKind.MUSIC_ARTIST -> {
val pager = getPagerForArtist(api, item.id)
musicService.addAllToQueue(pager, 0)
}
BaseItemKind.PLAYLIST -> {
val pager = getPagerForPlaylist(api, item.id)
musicService.addAllToQueue(pager, 0)
}
else -> {
Timber.w("Unknown item type to queue for music: %s", item.type)
}
}
}
}

View file

@ -225,6 +225,7 @@ fun SeriesOverview(
chooseVersionParams( chooseVersionParams(
context, context,
ep.data.mediaSources!!, ep.data.mediaSources!!,
chosenStreams?.source?.id?.toUUIDOrNull(),
) { idx -> ) { idx ->
val source = ep.data.mediaSources!![idx] val source = ep.data.mediaSources!![idx]
viewModel.savePlayVersion( viewModel.savePlayVersion(

View file

@ -287,8 +287,7 @@ class SeriesViewModel
item.value?.let { item -> item.value?.let { item ->
if (loading.value == LoadingState.Success) { if (loading.value == LoadingState.Success) {
viewModelScope.launchIO { viewModelScope.launchIO {
val seasons = getSeasons(item, null).await() (seasons.value as? ApiRequestPager<*>)?.refresh()
this@SeriesViewModel.seasons.setValueOnMain(seasons)
} }
} }
} }

View file

@ -107,6 +107,13 @@ abstract class RequestPager<T>(
} }
} }
suspend fun refresh() {
cachedPages.asMap().keys.forEachIndexed { index, pageNum ->
if (DEBUG) Timber.v("refresh: pageNum=%s", pageNum)
fetchPageBlocking(pageNum * pageSize, index == 0)
}
}
protected abstract suspend fun fetchPage( protected abstract suspend fun fetchPage(
pageNumber: Int, pageNumber: Int,
includeTotalCount: Boolean, includeTotalCount: Boolean,

View file

@ -578,4 +578,5 @@
<string name="continue_string">Fortfahren</string> <string name="continue_string">Fortfahren</string>
<string name="separate_types">Verschiedene Arten</string> <string name="separate_types">Verschiedene Arten</string>
<string name="prefer_logos">Logos anstatt Titelnamen anzeigen</string> <string name="prefer_logos">Logos anstatt Titelnamen anzeigen</string>
<string name="updated_toast">Wholphin aktualisiert auf %s</string>
</resources> </resources>

View file

@ -573,7 +573,7 @@
<string name="show_album_cover">Mostrar portada del álbum</string> <string name="show_album_cover">Mostrar portada del álbum</string>
<string name="show_visualizer">Mostrar visualizador</string> <string name="show_visualizer">Mostrar visualizador</string>
<string name="show_backdrop">Mostrar imagen de fondo</string> <string name="show_backdrop">Mostrar imagen de fondo</string>
<string name="play_as_type">Reproducir en</string> <string name="play_as_type">Reproducir como...</string>
<string name="visualizer_rationale">Para visualizar el audio en reproducción, se requiere permiso para grabar audio.</string> <string name="visualizer_rationale">Para visualizar el audio en reproducción, se requiere permiso para grabar audio.</string>
<string name="continue_string">Continuar</string> <string name="continue_string">Continuar</string>
<string name="albums">Álbumes</string> <string name="albums">Álbumes</string>
@ -596,4 +596,12 @@
<string name="remove_from_queue">Eliminar de la cola</string> <string name="remove_from_queue">Eliminar de la cola</string>
<string name="separate_types">Separar por tipos</string> <string name="separate_types">Separar por tipos</string>
<string name="prefer_logos">Preferir logotipos para los títulos</string> <string name="prefer_logos">Preferir logotipos para los títulos</string>
<string name="updated_toast">Wholphin se ha actualizado a la versión %s</string>
<string name="view_more">Ver más</string>
<string name="discover_tv">Descubrir series</string>
<string name="discover_movies">Descubrir películas</string>
<string name="remove_continue_watching">Eliminar de \"Continuar viendo\"</string>
<string name="remove_next_up">Eliminar de \"Siguiente\"</string>
<string name="view_removed_next_up">Ver series eliminadas de \"Siguiente\"</string>
<string name="studios_in">Estudios en %1$s</string>
</resources> </resources>

View file

@ -552,4 +552,38 @@
<string name="next_up_outro">Lõputiitrite ja lõpuklipi ajal</string> <string name="next_up_outro">Lõputiitrite ja lõpuklipi ajal</string>
<string name="series_continueing">Jätkuv sari</string> <string name="series_continueing">Jätkuv sari</string>
<string name="include_types_summary">Mis tüüpi objekte peaks piltide kontekstis näitama</string> <string name="include_types_summary">Mis tüüpi objekte peaks piltide kontekstis näitama</string>
<string name="albums">Albumid</string>
<string name="artists">Esitajad</string>
<string name="songs">Lood</string>
<string name="go_to_artist">Mine esitaja juurde</string>
<string name="now_playing">Hetkel esitamisel</string>
<string name="instant_mix">Kiirmiks</string>
<string name="go_to_album">Mine albumi juurde</string>
<string name="add_to_queue">Lisa esitusjärjekorda</string>
<string name="album_artist">Albumi esitaja</string>
<string name="album">Album</string>
<string name="popular_songs">Populaarsed lood</string>
<string name="play_next">Esita järgmisena</string>
<string name="music_videos">Muusikavideod</string>
<string name="lyrics">Laulusõnad</string>
<string name="hide_lyrics">Peida laulusõnad</string>
<string name="show_lyrics">Näita laulusõnu</string>
<string name="song_has_lyrics">Laulusõnad on olemas</string>
<string name="remove_from_queue">Eemalda esitusjärjekorrast</string>
<string name="show_album_cover">Näita albumi kaanepilti</string>
<string name="show_visualizer">Näita visualiseerijat</string>
<string name="show_backdrop">Näita tausta</string>
<string name="play_as_type">Kas esitad kui?</string>
<string name="visualizer_rationale">Hetkel esitamisel heliriba visualiseerimine toimib, kui rakendusel on õigus heli salvestada.</string>
<string name="continue_string">Jätka</string>
<string name="separate_types">Eraldi tüübid</string>
<string name="prefer_logos">Pealkirjade puhul eelista logode kuvamist</string>
<string name="updated_toast">Wholphin on uuendatud versioonini %s</string>
<string name="remove_continue_watching">Eemalda „Jätka vaatamist“ valikust</string>
<string name="remove_next_up">Eemalda sari valikust „Järgmisena esitamisel“</string>
<string name="view_removed_next_up">Vaata sarja, mis sai eemaldatud valikust „Järgmisena esitamisel“</string>
<string name="view_more">Vaata veel</string>
<string name="discover_tv">Leia telesaateid</string>
<string name="discover_movies">Leia filme</string>
<string name="studios_in">Stuudiod: %1$s</string>
</resources> </resources>

View file

@ -35,7 +35,7 @@
<string name="file_size">Taille</string> <string name="file_size">Taille</string>
<string name="forced_track">Forcé</string> <string name="forced_track">Forcé</string>
<string name="genres">Genres</string> <string name="genres">Genres</string>
<string name="go_to_series">Aller à la série</string> <string name="go_to_series">Voir la série</string>
<string name="go_to">Aller à</string> <string name="go_to">Aller à</string>
<string name="hide">Masquer</string> <string name="hide">Masquer</string>
<string name="home">Accueil</string> <string name="home">Accueil</string>
@ -197,7 +197,7 @@
<string name="global_content_scale">Échelle de contenu par défaut</string> <string name="global_content_scale">Échelle de contenu par défaut</string>
<string name="install_update">Installer la mise à jour</string> <string name="install_update">Installer la mise à jour</string>
<string name="installed_version">Version installée</string> <string name="installed_version">Version installée</string>
<string name="max_homepage_items">Eléments sur les lignes de la page d\'accueil</string> <string name="max_homepage_items">Éléments sur les lignes de la page d\'accueil</string>
<string name="nav_drawer_pins_summary">Choisissez les éléments à afficher par défaut, les autres seront masqués</string> <string name="nav_drawer_pins_summary">Choisissez les éléments à afficher par défaut, les autres seront masqués</string>
<string name="nav_drawer_pins">Personnaliser les éléments du menu de navigation</string> <string name="nav_drawer_pins">Personnaliser les éléments du menu de navigation</string>
<string name="nav_drawer_switch_on_focus_summary_off">Cliquez pour changer de page</string> <string name="nav_drawer_switch_on_focus_summary_off">Cliquez pour changer de page</string>
@ -289,7 +289,7 @@
<item quantity="many"/> <item quantity="many"/>
<item quantity="other"/> <item quantity="other"/>
</plurals> </plurals>
<string name="combine_continue_next"><![CDATA[Combiner \"Continuer à regarder\" & \"À suivre\"]]></string> <string name="combine_continue_next"><![CDATA[Combiner "Continuer à regarder" & "À suivre"]]></string>
<string name="download_and_update"><![CDATA[Télécharger & Mettre à jour]]></string> <string name="download_and_update"><![CDATA[Télécharger & Mettre à jour]]></string>
<string name="search_and_download"><![CDATA[Rechercher & Télécharger]]></string> <string name="search_and_download"><![CDATA[Rechercher & Télécharger]]></string>
<string name="tv_dvr_schedule">Calendrier du DVR</string> <string name="tv_dvr_schedule">Calendrier du DVR</string>
@ -315,7 +315,7 @@
<string name="require_pin_code">Code PIN requis pour le profil</string> <string name="require_pin_code">Code PIN requis pour le profil</string>
<string name="confirm_pin">Confirmer le code PIN</string> <string name="confirm_pin">Confirmer le code PIN</string>
<string name="incorrect">Erroné</string> <string name="incorrect">Erroné</string>
<string name="pin_too_short">Le code PIN doit comporter au moins 4 éléments</string> <string name="pin_too_short">Le code PIN doit comporter au moins 4 chiffres</string>
<string name="will_remove_pin">Supprimera le code PIN</string> <string name="will_remove_pin">Supprimera le code PIN</string>
<string name="image_cache_size">Taille du cache disque de l\'image (Mo)</string> <string name="image_cache_size">Taille du cache disque de l\'image (Mo)</string>
<string name="view_options">Options d\'affichage</string> <string name="view_options">Options d\'affichage</string>
@ -424,7 +424,7 @@
<string name="software_decoding_av1">Décodage logiciel AV1</string> <string name="software_decoding_av1">Décodage logiciel AV1</string>
<string name="upgrade_mpv_toast">MPV est désormais le lecteur par défaut, sauf pour HDR.\nVous pouvez modifier cela dans les paramètres.</string> <string name="upgrade_mpv_toast">MPV est désormais le lecteur par défaut, sauf pour HDR.\nVous pouvez modifier cela dans les paramètres.</string>
<string name="hdr_subtitle_style">Style de sous-titres HDR</string> <string name="hdr_subtitle_style">Style de sous-titres HDR</string>
<string name="image_subtitle_opacity">opacité du sous-titre de l\'image</string> <string name="image_subtitle_opacity">Opacité du sous-titre de l\'image</string>
<string name="brightness">Luminosité</string> <string name="brightness">Luminosité</string>
<string name="contrast">Contraste</string> <string name="contrast">Contraste</string>
<string name="saturation">Saturation</string> <string name="saturation">Saturation</string>
@ -475,7 +475,7 @@
<string name="suggestions_for">Suggestions pour %1$s</string> <string name="suggestions_for">Suggestions pour %1$s</string>
<string name="increase_all_cards_size">Augmenter la taille pour toutes les cartes</string> <string name="increase_all_cards_size">Augmenter la taille pour toutes les cartes</string>
<string name="decrease_all_cards_size">Diminuer la taille pour toutes les cartes</string> <string name="decrease_all_cards_size">Diminuer la taille pour toutes les cartes</string>
<string name="use_thumb_images">Utilisez des images de miniatures</string> <string name="use_thumb_images">Utiliser des miniatures</string>
<string name="settings_saved">Paramètres enregistrés</string> <string name="settings_saved">Paramètres enregistrés</string>
<string name="display_presets">Afficher les préréglages</string> <string name="display_presets">Afficher les préréglages</string>
<string name="display_presets_description">Préréglages intégrés pour styliser rapidement toutes les lignes</string> <string name="display_presets_description">Préréglages intégrés pour styliser rapidement toutes les lignes</string>
@ -511,18 +511,18 @@
<string name="volume_lowest">Le plus bas</string> <string name="volume_lowest">Le plus bas</string>
<string name="volume_low">Faible</string> <string name="volume_low">Faible</string>
<string name="volume_medium">Moyen</string> <string name="volume_medium">Moyen</string>
<string name="volume_high">Haute</string> <string name="volume_high">Haut</string>
<string name="volume_full">Complet</string> <string name="volume_full">Maximum</string>
<string name="purple">Violet</string> <string name="purple">Violet</string>
<string name="orange">Orange</string> <string name="orange">Orange</string>
<string name="bold_blue">Bleu gras</string> <string name="bold_blue">Bleu vif</string>
<string name="black">Noir</string> <string name="black">Noir</string>
<string name="skip_ignore">Ignorer</string> <string name="skip_ignore">Ignorer</string>
<string name="skip_automatically">Passer automatiquement</string> <string name="skip_automatically">Passer automatiquement</string>
<string name="skip_ask">Demander à passer</string> <string name="skip_ask">Demander à passer</string>
<string name="ffmpeg_fallback">N\'utilisez FFmpeg que si aucun décodeur intégré n\'existe</string> <string name="ffmpeg_fallback">N\'utiliser FFmpeg que si aucun décodeur intégré n\'existe</string>
<string name="ffmpeg_prefer">Préférez utiliser FFmpeg plutôt que les décodeurs intégrés</string> <string name="ffmpeg_prefer">Préférer l\'utilisation de FFmpeg plutôt que les décodeurs intégrés</string>
<string name="ffmpeg_never">N\'utilisez jamais les décodeurs FFmpeg</string> <string name="ffmpeg_never">Ne jamais utiliser les décodeurs FFmpeg</string>
<string name="next_up_playback_end">À la fin de la lecture</string> <string name="next_up_playback_end">À la fin de la lecture</string>
<string name="next_up_outro">Pendant le générique de fin/outro</string> <string name="next_up_outro">Pendant le générique de fin/outro</string>
<string name="white">Blanc</string> <string name="white">Blanc</string>
@ -545,29 +545,59 @@
<string name="image_type_thumb">Miniature</string> <string name="image_type_thumb">Miniature</string>
<string name="backdrop_style_dynamic">Image avec couleur dynamique</string> <string name="backdrop_style_dynamic">Image avec couleur dynamique</string>
<string name="backdrop_style_image">Image uniquement</string> <string name="backdrop_style_image">Image uniquement</string>
<string name="enter_url_api_key">Entrez l\'URL et la clé API</string> <string name="enter_url_api_key">Saisir l\'URL et la clé API</string>
<string name="api_key">Clé API</string> <string name="api_key">Clé API</string>
<string name="seerr_login">Se connecter au serveur Seerr</string> <string name="seerr_login">Se connecter au serveur Seerr</string>
<string name="seerr_jellyfin_user">Utilisateur Jellyfin</string> <string name="seerr_jellyfin_user">Utilisateur Jellyfin</string>
<string name="seerr_local_user">Utilisateur local</string> <string name="seerr_local_user">Utilisateur local</string>
<string name="search_and_download_subtitles">Rechercher et télécharger des sous-titres</string> <string name="search_and_download_subtitles">Rechercher et télécharger des sous-titres</string>
<string name="no_subtitles_found">Aucun sous-titre distant n\'a été trouvé</string> <string name="no_subtitles_found">Aucun sous-titre distant n\'a été trouvé</string>
<string name="series_continueing">Présent</string> <string name="series_continueing">En cours</string>
<string name="in_app_screensaver">Utiliser l\'économiseur d\'écran intégré</string> <string name="in_app_screensaver">Utiliser l\'économiseur d\'écran intégré</string>
<string name="actor">Acteur</string> <string name="actor">Acteur</string>
<string name="composer">Compositeur</string> <string name="composer">Compositeur</string>
<string name="writer">Écrivain</string> <string name="writer">Scénariste</string>
<string name="guest_star">Invité spécial</string> <string name="guest_star">Invité spécial</string>
<string name="producer">Producteur</string> <string name="producer">Producteur</string>
<string name="conductor">Conducteur</string> <string name="conductor">Chef d\'orchestre</string>
<string name="lyricist">Parolier</string> <string name="lyricist">Parolier</string>
<string name="arranger">Arrangeur</string> <string name="arranger">Arrangeur</string>
<string name="engineer">Ingénieur</string> <string name="engineer">Ingénieur</string>
<string name="mixer">Mélangeur</string> <string name="mixer">Mixeur</string>
<string name="creator">Créateur</string> <string name="creator">Créateur</string>
<string name="artist">Artiste</string> <string name="artist">Artiste</string>
<string name="delete_item">Êtes-vous sûr de vouloir supprimer cet élément ?</string> <string name="delete_item">Êtes-vous sûr de vouloir supprimer cet élément ?</string>
<string name="show_media_management">Afficher les options de gestion des médias</string> <string name="show_media_management">Afficher les options de gestion des médias</string>
<string name="search_for">Recherche %s</string> <string name="search_for">Recherche %s</string>
<string name="select_all">Tout sélectionner</string> <string name="select_all">Tout sélectionner</string>
<string name="albums">Albums</string>
<string name="artists">Artistes</string>
<string name="songs">Chansons</string>
<string name="go_to_artist">Voir l\'artiste</string>
<string name="now_playing">Lecture en cours</string>
<string name="instant_mix">Mix instantané</string>
<string name="go_to_album">Voir l\'album</string>
<string name="add_to_queue">Ajouter à la file</string>
<string name="album_artist">Artiste de l\'album</string>
<string name="album">Album</string>
<string name="popular_songs">Titres populaires</string>
<string name="play_next">Lire ensuite</string>
<string name="music_videos">Clips</string>
<string name="lyrics">Paroles</string>
<string name="hide_lyrics">Masquer les paroles</string>
<string name="show_lyrics">Afficher les paroles</string>
<string name="song_has_lyrics">Contient des paroles</string>
<string name="remove_from_queue">Retirer de la file</string>
<string name="show_album_cover">Afficher la pochette</string>
<string name="show_visualizer">Afficher le visualiseur</string>
<string name="show_backdrop">Afficher l\'arrière-plan</string>
<string name="play_as_type">Qui écoute ?</string>
<string name="visualizer_rationale">L\'affichage du visualiseur nécessite l\'autorisation d\'enregistrer du contenu audio.</string>
<string name="continue_string">Suivant</string>
<string name="separate_types">Séparer par types</string>
<string name="prefer_logos">Préférer les logos pour les titres</string>
<string name="updated_toast">Wholphin a été mis à jour vers la version %s</string>
<string name="view_more">Voir plus</string>
<string name="discover_tv">Parcourir les séries</string>
<string name="discover_movies">Parcourir les films</string>
</resources> </resources>

View file

@ -41,7 +41,7 @@
<string name="disabled">Nonaktif</string> <string name="disabled">Nonaktif</string>
<string name="enabled">Aktif</string> <string name="enabled">Aktif</string>
<string name="genres">Genre</string> <string name="genres">Genre</string>
<string name="go_to_series">Masuk ke serial</string> <string name="go_to_series">Buka serial</string>
<string name="go_to">Masuk ke</string> <string name="go_to">Masuk ke</string>
<string name="forced_track">Paksa</string> <string name="forced_track">Paksa</string>
<string name="hide_controller_timeout">Sembunyikan kontrol pemutaran</string> <string name="hide_controller_timeout">Sembunyikan kontrol pemutaran</string>
@ -534,4 +534,30 @@
<string name="content_scale_fill">Layar penuh</string> <string name="content_scale_fill">Layar penuh</string>
<string name="content_scale_fill_width">Lebar penuh</string> <string name="content_scale_fill_width">Lebar penuh</string>
<string name="content_scale_fill_height">Tinggi penuh</string> <string name="content_scale_fill_height">Tinggi penuh</string>
<string name="prefer_logos">Utamakan logo untuk judul</string>
<string name="albums">Album</string>
<string name="artists">Artis</string>
<string name="songs">Lagu</string>
<string name="now_playing">Sedang diputar</string>
<string name="instant_mix">Campuran instan</string>
<string name="add_to_queue">Tambahkan ke antrean</string>
<string name="album_artist">Artis album</string>
<string name="album">Album</string>
<string name="popular_songs">Lagu populer</string>
<string name="play_next">Putar berikutnya</string>
<string name="music_videos">Video musik</string>
<string name="lyrics">Lirik</string>
<string name="hide_lyrics">Sembunyikan lirik</string>
<string name="show_lyrics">Tampilkan lirik</string>
<string name="song_has_lyrics">Tersedia lirik</string>
<string name="remove_from_queue">Hapus dari antrean</string>
<string name="show_album_cover">Tampilkan sampul album</string>
<string name="show_visualizer">Tampilkan visualisator</string>
<string name="show_backdrop">Tampilkan backdrop</string>
<string name="play_as_type">Putar sebagai?</string>
<string name="visualizer_rationale">Memvisualisasikan audio yang sedang diputar memerlukan izin untuk merekam audio.</string>
<string name="continue_string">Lanjutkan</string>
<string name="separate_types">Pisahkan jenis</string>
<string name="go_to_artist">Buka artis</string>
<string name="go_to_album">Buka album</string>
</resources> </resources>

View file

@ -442,8 +442,8 @@
<string name="rotate_right">Ruota a destra</string> <string name="rotate_right">Ruota a destra</string>
<string name="zoom_in">Ingrandisci</string> <string name="zoom_in">Ingrandisci</string>
<string name="zoom_out">Rimpicciolisci</string> <string name="zoom_out">Rimpicciolisci</string>
<string name="slideshow_duration">Durata slideshow</string> <string name="slideshow_duration">Durata dello slideshow</string>
<string name="play_videos_during_slideshow">Riproduci video durante lo slideshow</string> <string name="play_videos_during_slideshow">Riproduci i video durante lo slideshow</string>
<string name="send_media_info_log_to_server">Invia log informazioni media al server</string> <string name="send_media_info_log_to_server">Invia log informazioni media al server</string>
<plurals name="days"> <plurals name="days">
<item quantity="one">%s giorno</item> <item quantity="one">%s giorno</item>
@ -570,4 +570,31 @@
<string name="delete_item">Sei sicuro di voler cancellare questo elemento?</string> <string name="delete_item">Sei sicuro di voler cancellare questo elemento?</string>
<string name="show_media_management">Mostra opzioni di gestione dei media</string> <string name="show_media_management">Mostra opzioni di gestione dei media</string>
<string name="select_all">Seleziona tutti</string> <string name="select_all">Seleziona tutti</string>
<string name="albums">Album</string>
<string name="artists">Artisti</string>
<string name="songs">Canzoni</string>
<string name="go_to_artist">Vai all\'artista</string>
<string name="now_playing">In riproduzione</string>
<string name="instant_mix">Mix istantaneo</string>
<string name="go_to_album">Vai all\'album</string>
<string name="add_to_queue">Aggiungi alla coda</string>
<string name="album_artist">Album artista</string>
<string name="album">Album</string>
<string name="popular_songs">Canzoni popolari</string>
<string name="play_next">Riproduci successivo</string>
<string name="music_videos">Video musicali</string>
<string name="lyrics">Testi</string>
<string name="hide_lyrics">Nascondi testi</string>
<string name="show_lyrics">Mostra testi</string>
<string name="song_has_lyrics">La canzone ha i testi</string>
<string name="remove_from_queue">Rimuovi dalla coda</string>
<string name="show_album_cover">Mostra copertina album</string>
<string name="show_visualizer">Mostra visualizzatore</string>
<string name="show_backdrop">Mostra sfondo</string>
<string name="play_as_type">Riproduci come?</string>
<string name="visualizer_rationale">Per visualizzare laudio in riproduzione è necessario il permesso di registrare laudio.</string>
<string name="continue_string">Continua</string>
<string name="separate_types">Tipi separati</string>
<string name="prefer_logos">Preferisci mostrare i loghi per i titoli</string>
<string name="updated_toast">Wholphin aggiornato a %s</string>
</resources> </resources>

View file

@ -13,7 +13,7 @@
<string name="cancel_series_recording">Serieopname afbreken</string> <string name="cancel_series_recording">Serieopname afbreken</string>
<string name="cancel">Annuleren</string> <string name="cancel">Annuleren</string>
<string name="chapters">Hoofdstukken</string> <string name="chapters">Hoofdstukken</string>
<string name="choose_stream">%1$s kiezen</string> <string name="choose_stream">%1$s kiezen</string>
<string name="clear_image_cache">Afbeeldingscache wissen</string> <string name="clear_image_cache">Afbeeldingscache wissen</string>
<string name="collection">Collectie</string> <string name="collection">Collectie</string>
<string name="collections">Collecties</string> <string name="collections">Collecties</string>
@ -23,7 +23,7 @@
<string name="confirm">Bevestigen</string> <string name="confirm">Bevestigen</string>
<string name="continue_watching">Verder kijken</string> <string name="continue_watching">Verder kijken</string>
<string name="critic_rating">Beoordeling (recensie)</string> <string name="critic_rating">Beoordeling (recensie)</string>
<string name="decimal_seconds">%.1f seconden</string> <string name="decimal_seconds">%.2f seconden</string>
<string name="default_track">Standaard</string> <string name="default_track">Standaard</string>
<string name="delete">Verwijderen</string> <string name="delete">Verwijderen</string>
<string name="died">Overleden</string> <string name="died">Overleden</string>
@ -57,8 +57,8 @@
<string name="loading">Bezig met laden…</string> <string name="loading">Bezig met laden…</string>
<string name="mark_entire_series_as_played">Serie als bekeken markeren?</string> <string name="mark_entire_series_as_played">Serie als bekeken markeren?</string>
<string name="mark_entire_series_as_unplayed">Serie als niet-bekeken markeren?</string> <string name="mark_entire_series_as_unplayed">Serie als niet-bekeken markeren?</string>
<string name="mark_unwatched">Markeren als niet-bekeken</string> <string name="mark_unwatched">Als niet-bekeken markeren</string>
<string name="mark_watched">Markeren als bekeken</string> <string name="mark_watched">Als bekeken markeren</string>
<string name="max_bitrate">Max. bitsnelheid</string> <string name="max_bitrate">Max. bitsnelheid</string>
<string name="more_like_this">Soortgelijk</string> <string name="more_like_this">Soortgelijk</string>
<string name="more">Meer</string> <string name="more">Meer</string>
@ -88,7 +88,7 @@
<string name="recently_added_in">Onlangs toegevoegd aan %1$s</string> <string name="recently_added_in">Onlangs toegevoegd aan %1$s</string>
<string name="recently_added">Onlangs toegevoegd</string> <string name="recently_added">Onlangs toegevoegd</string>
<string name="recently_recorded">Onlangs opgenomen</string> <string name="recently_recorded">Onlangs opgenomen</string>
<string name="recently_released">Onlangs uitgebracht</string> <string name="recently_released">Onlangs verschenen</string>
<string name="recommended">Aanbevolen</string> <string name="recommended">Aanbevolen</string>
<string name="record_program">Programma opnemen</string> <string name="record_program">Programma opnemen</string>
<string name="record_series">Serie opnemen</string> <string name="record_series">Serie opnemen</string>
@ -109,28 +109,28 @@
<string name="sort_by_date_added">Toegevoegd</string> <string name="sort_by_date_added">Toegevoegd</string>
<string name="sort_by_date_episode_added">Toegevoegd (aflevering)</string> <string name="sort_by_date_episode_added">Toegevoegd (aflevering)</string>
<string name="sort_by_date_played">Bekeken</string> <string name="sort_by_date_played">Bekeken</string>
<string name="sort_by_date_released">Uitgebracht</string> <string name="sort_by_date_released">Verschenen</string>
<string name="sort_by_name">Naam</string> <string name="sort_by_name">Naam</string>
<string name="sort_by_random">Willekeurig</string> <string name="sort_by_random">Willekeurig</string>
<string name="studios">Studio\'s</string> <string name="studios">Studio\'s</string>
<string name="submit">Versturen</string> <string name="submit">Versturen</string>
<string name="subtitle_download_too_long">Het downloaden duurt erg lang - het kan zijn dat je opnieuw moet beginnen met afspelen</string> <string name="subtitle_download_too_long">Het downloaden duurt erg lang - het kan zijn dat je opnieuw moet beginnen met afspelen</string>
<string name="subtitle">Ondertiteling</string> <string name="subtitle">Onderschrift</string>
<string name="subtitles">Ondertiteling</string> <string name="subtitles">Ondertiteling</string>
<string name="suggestions">Suggesties</string> <string name="suggestions">Suggesties</string>
<string name="switch_servers">Andere server kiezen</string> <string name="switch_servers">Andere server kiezen</string>
<string name="switch_user">Kiezen</string> <string name="switch_user">Kiezen</string>
<string name="top_unwatched">Best beoordeeld, niet-bekeken</string> <string name="top_unwatched">Best beoordeeld niet-bekeken</string>
<string name="trailer">Trailer</string> <string name="trailer">Trailer</string>
<plurals name="trailers"> <plurals name="trailers">
<item quantity="one">Trailers</item> <item quantity="one">Trailer</item>
<item quantity="other"/> <item quantity="other">Trailers</item>
</plurals> </plurals>
<string name="tv_dvr_schedule">DVR-schema</string> <string name="tv_dvr_schedule">DVR-schema</string>
<string name="tv_guide">Gids</string> <string name="tv_guide">Gids</string>
<string name="tv_season">Seizoen</string> <string name="tv_season">Seizoen</string>
<string name="tv_seasons">Seizoenen</string> <string name="tv_seasons">Seizoenen</string>
<string name="tv_shows">Afleveringen</string> <string name="tv_shows">Series</string>
<string name="ui_interface">Vormgeving</string> <string name="ui_interface">Vormgeving</string>
<string name="unknown">Onbekend</string> <string name="unknown">Onbekend</string>
<string name="updates">Updates</string> <string name="updates">Updates</string>
@ -311,7 +311,7 @@
<string name="cast_and_crew"><![CDATA[Cast en crew]]></string> <string name="cast_and_crew"><![CDATA[Cast en crew]]></string>
<string name="guest_stars">Gastrollen</string> <string name="guest_stars">Gastrollen</string>
<string name="edge_size">Randbreedte</string> <string name="edge_size">Randbreedte</string>
<string name="refresh_rate_switching">Automatische ververssnelheid toepassen</string> <string name="refresh_rate_switching">Beeldfrequentie omschakelen</string>
<string name="automatic">Automatisch</string> <string name="automatic">Automatisch</string>
<string name="username_or_password">Gebruikersnaam/wachtwoord gebruiken</string> <string name="username_or_password">Gebruikersnaam/wachtwoord gebruiken</string>
<string name="login">Inloggen</string> <string name="login">Inloggen</string>
@ -325,7 +325,7 @@
<string name="level">Niveau</string> <string name="level">Niveau</string>
<string name="resolution">Resolutie</string> <string name="resolution">Resolutie</string>
<string name="anamorphic">Anamorfisch</string> <string name="anamorphic">Anamorfisch</string>
<string name="interlaced">Met interlatie</string> <string name="interlaced">Geïnterlinieerd</string>
<string name="framerate">Framesnelheid</string> <string name="framerate">Framesnelheid</string>
<string name="bit_depth">Bitdiepte</string> <string name="bit_depth">Bitdiepte</string>
<string name="video_range">Videobereik</string> <string name="video_range">Videobereik</string>
@ -374,12 +374,12 @@
<string name="seerr_login">Login bij Seerr server</string> <string name="seerr_login">Login bij Seerr server</string>
<string name="search_for">Zoek %s</string> <string name="search_for">Zoek %s</string>
<string name="actor">Acteur</string> <string name="actor">Acteur</string>
<string name="clear_track_choices">Afspeel voorkeuren wissen</string> <string name="clear_track_choices">Afspeelvoorkeuren wissen</string>
<string name="display_preset_episode_thumbnails">Aflevering thumbnails</string> <string name="display_preset_episode_thumbnails">Aflevering thumbnails</string>
<string name="writer">Auteur</string> <string name="writer">Auteur</string>
<string name="for_episodes">Voor afleveringen</string> <string name="for_episodes">Voor afleveringen</string>
<string name="start_after">Start na</string> <string name="start_after">Start na</string>
<string name="add_to_queue">Toevoegen aan wachtrij</string> <string name="add_to_queue">Aan wachtrij toevoegen</string>
<string name="composer">Componist</string> <string name="composer">Componist</string>
<string name="display_preset_series_thumb">Serie thumbnails</string> <string name="display_preset_series_thumb">Serie thumbnails</string>
<string name="delete_item">Weet u zeker dat u dit item wilt verwijderen?</string> <string name="delete_item">Weet u zeker dat u dit item wilt verwijderen?</string>
@ -399,9 +399,9 @@
<string name="password">Wachtwoord</string> <string name="password">Wachtwoord</string>
<string name="upcoming_movies">Verwachte films</string> <string name="upcoming_movies">Verwachte films</string>
<string name="upcoming_tv">Verwachte series</string> <string name="upcoming_tv">Verwachte series</string>
<string name="request_4k">Verzoek in 4K</string> <string name="request_4k">Aanvragen in 4K</string>
<string name="brightness">Helderheid</string> <string name="brightness">Helderheid</string>
<string name="send_media_info_log_to_server">Stuur media-info log naar server</string> <string name="send_media_info_log_to_server">Media-info log naar server</string>
<string name="resolution_switching">Resolutie schakelen</string> <string name="resolution_switching">Resolutie schakelen</string>
<string name="local">Lokaal</string> <string name="local">Lokaal</string>
<string name="backdrop_display">Achtergrondstijl</string> <string name="backdrop_display">Achtergrondstijl</string>
@ -432,7 +432,7 @@
<string name="no_limit">Geen limiet</string> <string name="no_limit">Geen limiet</string>
<string name="customize_home">Startscherm aanpassen</string> <string name="customize_home">Startscherm aanpassen</string>
<string name="home_rows">Startrijen</string> <string name="home_rows">Startrijen</string>
<string name="suggestions_for">"Aanbevelingen voor %1$s"</string> <string name="suggestions_for">Aanbevelingen voor %1$s</string>
<string name="volume_lowest">Laagst</string> <string name="volume_lowest">Laagst</string>
<string name="skip_automatically">Automatisch overslaan</string> <string name="skip_automatically">Automatisch overslaan</string>
<string name="conductor">Dirigent</string> <string name="conductor">Dirigent</string>
@ -441,4 +441,94 @@
<item quantity="one">%s dag</item> <item quantity="one">%s dag</item>
<item quantity="other">%s dagen</item> <item quantity="other">%s dagen</item>
</plurals> </plurals>
<plurals name="minutes">
<item quantity="one">%s minuut</item>
<item quantity="other">%s minuten</item>
</plurals>
<string name="quick_connect_summary">Een ander apparaat toestaan om in te loggen op uw account</string>
<string name="quick_connect_code">Quick Connect code invoeren</string>
<string name="quick_connect_code_error">Code moet 6 cijfers bevatten</string>
<string name="quick_connect_success">Apparaat succesvol geautoriseerd</string>
<string name="upgrade_mpv_toast">MPV is nu de standaard speler behalve voor HDR. \nU kunt dit in de instellingen wijzigen.</string>
<string name="save_for_album">Bewaar voor album</string>
<string name="play_slideshow">Diavoorstelling afspelen</string>
<string name="stop_slideshow">Diavoorstelling stoppen</string>
<string name="slideshow_at_beginning">Aan het begin</string>
<string name="no_more_images">Geen foto\'s meer</string>
<string name="slideshow_duration">Duur diavoorstelling</string>
<string name="play_videos_during_slideshow">Speel video\'s tijdens diavoorstelling</string>
<string name="artists">Artiesten</string>
<string name="songs">Nummers</string>
<string name="increase_all_cards_size">Alle kaarten vergroten</string>
<string name="decrease_all_cards_size">Alle kaarten verkleinen</string>
<string name="use_thumb_images">Kleine afbeeldingen gebruiken</string>
<string name="display_presets">Weergavevoorkeuren</string>
<string name="display_presets_description">Ingebouwde presets om snel alle rijen te stijlen</string>
<string name="customize_home_summary">Kies rijen en afbeeldingen op startscherm</string>
<string name="animate">Animeer</string>
<string name="max_age_rating">Max leeftijdsclassificatie</string>
<string name="no_max">Geen max</string>
<string name="screensaver">Schermbeveiliging</string>
<string name="screensaver_settings">Instellingen schermbeveiliging</string>
<string name="start_screensaver">Start schermbeveiliging</string>
<string name="photos">Foto\'s</string>
<string name="include_types">Soort toevoegen</string>
<string name="include_types_summary">Welke soorten afbeeldingen moeten worden getoond</string>
<string name="content_scale_fit">Passend</string>
<string name="content_scale_crop">Bijsnijden</string>
<string name="content_scale_fill">Vullen</string>
<string name="content_scale_fill_width">Vulbreedte</string>
<string name="content_scale_fill_height">Vulhoogte</string>
<string name="display_preset_default">Wholphin standaard</string>
<string name="display_preset_compact">Wholphin compact</string>
<string name="volume_low">Laag</string>
<string name="volume_medium">Middel</string>
<string name="volume_high">Hoog</string>
<string name="volume_full">Volledig</string>
<string name="purple">Paars</string>
<string name="orange">Oranje</string>
<string name="bold_blue">Felblauw</string>
<string name="black">Zwart</string>
<string name="ffmpeg_fallback">Alleen FFmpeg gebruiken als er geen ingebouwde decoder is</string>
<string name="ffmpeg_prefer">Voorkeur voor FFmpeg boven ingebouwde decoders</string>
<string name="ffmpeg_never">Nooit FFmpeg decoders gebruiken</string>
<string name="next_up_playback_end">Aan het einde van de weergave</string>
<string name="next_up_outro">Tijdens aftiteling/outro</string>
<string name="white">Wit</string>
<string name="light_gray">Lichtgrijs</string>
<string name="dark_gray">Donkergrijs</string>
<string name="yellow">Geel</string>
<string name="cyan">Cyaan</string>
<string name="subtitle_edge_outline">Omtrek</string>
<string name="subtitle_edge_shadow">Schaduw</string>
<string name="prefer_mpv">Voorkeur voor MPV</string>
<string name="player_backend_options_subtitles_prefer_mpv">ExoPlayer voor HDR gebruiken</string>
<string name="aspect_ratios_square">Vierkant (1:1)</string>
<string name="image_type_primary">Primair</string>
<string name="image_type_thumb">Miniatuur</string>
<string name="backdrop_style_dynamic">Afbeelding met dynamische kleuren</string>
<string name="backdrop_style_image">Alleen afbeelding</string>
<string name="seerr_jellyfin_user">Jellyfin gebruiker</string>
<string name="seerr_local_user">Lokale gebruiker</string>
<string name="no_subtitles_found">Geen externe ondertiteling gevonden</string>
<string name="series_continueing">Huidig</string>
<string name="in_app_screensaver">In-app schermbeveiliging gebruiken</string>
<string name="show_media_management">Media-management opties tonen</string>
<string name="lyricist">Tekstschrijver</string>
<string name="arranger">Arrangeur</string>
<string name="engineer">Technicus</string>
<string name="creator">Bedenker</string>
<string name="artist">Artiest</string>
<string name="album_artist">Album artiest</string>
<string name="popular_songs">Populaire nummers</string>
<string name="play_next">Volgende afspelen</string>
<string name="lyrics">Tekst</string>
<string name="hide_lyrics">Tekst verbergen</string>
<string name="show_lyrics">Tekst tonen</string>
<string name="song_has_lyrics">Nummer bevat tekst</string>
<string name="show_album_cover">Albumhoes tonen</string>
<string name="show_visualizer">Visualisatie tonen</string>
<string name="show_backdrop">Achtergrond tonen</string>
<string name="play_as_type">Afspelen als?</string>
<string name="visualizer_rationale">Visualisatie van de huidig afspelende audio vereist toestemming voor opname.</string>
</resources> </resources>

View file

@ -253,7 +253,7 @@
<string name="playlist">Playlista</string> <string name="playlist">Playlista</string>
<string name="recap">Streszczenie</string> <string name="recap">Streszczenie</string>
<string name="record_series">Zapisz serial</string> <string name="record_series">Zapisz serial</string>
<string name="search_and_download"><![CDATA[Search & Download]]></string> <string name="search_and_download"><![CDATA[Znajdź i pobierz]]></string>
<string name="show">Pokaż</string> <string name="show">Pokaż</string>
<string name="subtitle_download_too_long">Pobieranie napisów trwa zbyt długo, może być konieczne ponowne uruchomienie odtwarzacza</string> <string name="subtitle_download_too_long">Pobieranie napisów trwa zbyt długo, może być konieczne ponowne uruchomienie odtwarzacza</string>
<string name="tv_dvr_schedule">Harmonogram nagrywania</string> <string name="tv_dvr_schedule">Harmonogram nagrywania</string>
@ -298,4 +298,55 @@
<string name="skip_back_on_resume_preference">Cofnij gdy wznawiasz odtwarzanie</string> <string name="skip_back_on_resume_preference">Cofnij gdy wznawiasz odtwarzanie</string>
<string name="player_backend">Player odtwarzający</string> <string name="player_backend">Player odtwarzający</string>
<string name="pass_out_protection">Ochrona przed uśpieniem</string> <string name="pass_out_protection">Ochrona przed uśpieniem</string>
<string name="ends_at">Kończy się o %1$s</string>
<string name="enter_server_address">Wprowadź adres serwera</string>
<string name="immediate">Natychmiastowo</string>
<string name="no_servers_found">Nie znaleziono serwerów</string>
<string name="only_forced_subtitles">Tylko wymuszone napisy</string>
<string name="voice_search">Wyszukiwanie głosowe</string>
<string name="voice_starting">Uruchamianie</string>
<string name="voice_search_prompt">Mów żeby wyszukać</string>
<string name="processing">Przetwarzanie</string>
<string name="press_back_to_cancel">Wciśnij wstecz aby anulować</string>
<string name="voice_error_audio">Błąd nagrywania dźwięku</string>
<string name="voice_error_client">Błąd rozpoznawania mowy</string>
<string name="voice_error_permissions">Wymagane uprawnienia mikrofonu</string>
<string name="voice_error_network">Błąd sieci</string>
<string name="voice_error_server">Błąd serwera</string>
<string name="retry">Ponów</string>
<string name="video">Wideo</string>
<string name="videos">Filmy</string>
<string name="watch_live">Oglądanie na żywo</string>
<string name="quick_connect_success">Urządzenie uwierzytelniono pomyślnie</string>
<string name="password">Hasło</string>
<string name="username">Nazwa użytkownika</string>
<string name="url">URL</string>
<string name="trending">Popularne</string>
<string name="upcoming_movies">Nadchodzące filmy</string>
<string name="upcoming_tv">Nadchodzące seriale</string>
<string name="request_4k">Poproś o 4K</string>
<string name="software_decoding_av1">AV1 dekodowanie programowe</string>
<string name="upgrade_mpv_toast">MPV jest teraz domyślnym odtwarzaczem, z wyjątkiem HDR.\nMożesz to zmienić w ustawieniach.</string>
<string name="hdr_subtitle_style">Styl napisów HDR</string>
<string name="rotate_left">Obróć w lewo</string>
<string name="rotate_right">Obróć w prawo</string>
<string name="zoom_in">Powiększ</string>
<string name="zoom_out">Pomniejsz</string>
<string name="send_media_info_log_to_server">Wyślij dane dziennika mediów do serwera</string>
<string name="no_limit">Bez limitu</string>
<string name="max_days_next_up">Maksymalna ilość dni w \"Do obejrzenia\"</string>
<string name="albums">Albumy</string>
<string name="artists">Artyści</string>
<string name="songs">Utwory</string>
<string name="go_to_artist">Przejdź do artysty</string>
<string name="now_playing">Teraz odtwarzane</string>
<string name="go_to_album">Przejdź do albumu</string>
<string name="add_to_queue">Dodaj do kolejki</string>
<string name="add_row">Dodaj wiersz</string>
<string name="height">Wysokość</string>
<string name="apply_all_rows">Zastosuj do wszystkich wierszy</string>
<string name="customize_home">Personalizacja strony głównej</string>
<string name="load_from_server">Wczytaj profil użytkownika z serwera</string>
<string name="save_to_server">Zapisz do profilu użytkownika na serwerze</string>
<string name="load_from_web_client">Wczytaj z klienta webowego</string>
</resources> </resources>

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string name="about">Despre</string> <string name="about">Despre</string>
<string name="add_favorite">Favorite</string> <string name="add_favorite">Favorit</string>
<string name="add_server">Adaugă server</string> <string name="add_server">Adaugă server</string>
<string name="add_user">Adaugă utilizator</string> <string name="add_user">Adaugă utilizator</string>
<string name="audio">Audio</string> <string name="audio">Audio</string>
@ -42,8 +42,8 @@
<string name="no_update_available">Nu este disponibilă nicio actualizare</string> <string name="no_update_available">Nu este disponibilă nicio actualizare</string>
<plurals name="movies"> <plurals name="movies">
<item quantity="one">Filme</item> <item quantity="one">Filme</item>
<item quantity="few"></item> <item quantity="few"/>
<item quantity="other"></item> <item quantity="other"/>
</plurals> </plurals>
<string name="library">Librărie</string> <string name="library">Librărie</string>
<string name="go_to">Mergi la</string> <string name="go_to">Mergi la</string>
@ -55,8 +55,8 @@
<string name="mark_watched">Marchează ca vizionat</string> <string name="mark_watched">Marchează ca vizionat</string>
<plurals name="people"> <plurals name="people">
<item quantity="one">Persoane</item> <item quantity="one">Persoane</item>
<item quantity="few"></item> <item quantity="few"/>
<item quantity="other"></item> <item quantity="other"/>
</plurals> </plurals>
<string name="play_count">Număr de redări</string> <string name="play_count">Număr de redări</string>
<string name="more">Mai mult</string> <string name="more">Mai mult</string>
@ -173,7 +173,7 @@
<string name="api_key">Cheie API</string> <string name="api_key">Cheie API</string>
<string name="seerr_login">Conectează-te la serverul Seerr</string> <string name="seerr_login">Conectează-te la serverul Seerr</string>
<string name="discovered_servers">Servere descoperite</string> <string name="discovered_servers">Servere descoperite</string>
<string name="download_and_update"><![CDATA[Descarcă & Utilizează]]></string> <string name="download_and_update"><![CDATA[Descarcă & Actualizează]]></string>
<string name="commercial">Reclamă</string> <string name="commercial">Reclamă</string>
<string name="community_rating">Evaluarea comunității</string> <string name="community_rating">Evaluarea comunității</string>
<string name="compose_error_message_title">A apărut o eroare! Apasă butonul pentru a trimite jurnalele către serverul tău.</string> <string name="compose_error_message_title">A apărut o eroare! Apasă butonul pentru a trimite jurnalele către serverul tău.</string>
@ -215,8 +215,8 @@
<string name="tv_seasons">Sezoane</string> <string name="tv_seasons">Sezoane</string>
<plurals name="tv_shows"> <plurals name="tv_shows">
<item quantity="one">Seriale TV</item> <item quantity="one">Seriale TV</item>
<item quantity="few"></item> <item quantity="few"/>
<item quantity="other"></item> <item quantity="other"/>
</plurals> </plurals>
<string name="ui_interface">Interfață</string> <string name="ui_interface">Interfață</string>
<string name="unknown">Necunoscut</string> <string name="unknown">Necunoscut</string>
@ -228,8 +228,8 @@
<string name="one_click_pause">Pauză cu un click</string> <string name="one_click_pause">Pauză cu un click</string>
<plurals name="interviews"> <plurals name="interviews">
<item quantity="one">Interviuri</item> <item quantity="one">Interviuri</item>
<item quantity="few"></item> <item quantity="few"/>
<item quantity="other"></item> <item quantity="other"/>
</plurals> </plurals>
<string name="background">Fundal</string> <string name="background">Fundal</string>
<plurals name="downloads"> <plurals name="downloads">
@ -306,4 +306,95 @@
<string name="song_has_lyrics">Cântecul are versuri</string> <string name="song_has_lyrics">Cântecul are versuri</string>
<string name="select_all">Selectează tot</string> <string name="select_all">Selectează tot</string>
<string name="play_as_type">Redă ca?</string> <string name="play_as_type">Redă ca?</string>
<string name="cancel_series_recording">Anulează înregistrarea seriei</string>
<string name="license_info">Informații privind licența</string>
<string name="forced_track">Forțat</string>
<string name="hide_debug_info">Ascunde informațiile de depanare</string>
<string name="immediate">Imediat</string>
<string name="none">Niciuna</string>
<string name="play_from_here">Redă de aici</string>
<string name="playback_speed">Viteza de redare</string>
<string name="playback">Redare</string>
<string name="playlist">Listă de redare</string>
<string name="playback_debug_info">Afișează informații de depanare privind redarea</string>
<string name="only_forced_subtitles">Doar subtitrări forțate</string>
<string name="save">Salvează</string>
<string name="search_and_download"><![CDATA[Caută & Descarcă]]></string>
<string name="resume">Reia</string>
<string name="voice_starting">Începe</string>
<string name="voice_search_prompt">Vorbește pentru a căuta</string>
<string name="restart">Repornire</string>
<string name="voice_error_network">Eroare rețea</string>
<string name="shuffle">Amestecă</string>
<string name="top_unwatched">Cele mai bine cotate, nevizionate</string>
<plurals name="trailers">
<item quantity="one">Trailere</item>
<item quantity="few"></item>
<item quantity="other"></item>
</plurals>
<string name="play_with_transcoding">Redă cu transcodare</string>
<string name="media_information">Informații media</string>
<string name="create_playlist">Creează o listă noua de redare</string>
<string name="add_to_playlist">Adaugă în lista de redare</string>
<plurals name="other_extras">
<item quantity="one">Altele</item>
<item quantity="few"></item>
<item quantity="other"></item>
</plurals>
<plurals name="behind_the_scenes">
<item quantity="one">În spatele scenelor</item>
<item quantity="few"></item>
<item quantity="other"></item>
</plurals>
<plurals name="theme_songs">
<item quantity="one">Melodii tematice</item>
<item quantity="few"></item>
<item quantity="other"></item>
</plurals>
<plurals name="deleted_scenes">
<item quantity="one">Scene șterse</item>
<item quantity="few"></item>
<item quantity="other"></item>
</plurals>
<string name="official_rating">Evaluare parentală</string>
<string name="runtime_sort">Timp de execuție</string>
<string name="extras">Extra</string>
<plurals name="clips">
<item quantity="one">Clipuri</item>
<item quantity="few"></item>
<item quantity="other"></item>
</plurals>
<string name="favorite_items">%s favorit</string>
<string name="app_theme">Temă aplicație</string>
<string name="auto_check_for_updates">Verifică automat dacă există actualizări</string>
<string name="ac3_supported">Dispozitivul acceptă formatele AC3/Dolby Digital</string>
<string name="advanced_settings">Setări avansate</string>
<string name="advanced_ui">Interfață avansată</string>
<string name="auto_play_next">Redă automat următorul</string>
<string name="combine_continue_next_summary">Se aplică numai serialelor TV</string>
<string name="nav_drawer_switch_on_focus_summary_off">Faceți clic pentru a schimba paginile</string>
<string name="skip_segment_unknown">Sări peste segment</string>
<string name="skip_segment_outro">Sări peste final</string>
<string name="use_server_credentials">Autentificare prin server</string>
<string name="press_enter_to_confirm">Apăsați în centru pentru a confirma</string>
<string name="require_pin_code">Solicită codul PIN pentru profil</string>
<string name="view_options">Opțiuni de vizualizare</string>
<string name="login">Autentificare</string>
<string name="layout">Aspect</string>
<string name="rotate_left">Rotește la stânga</string>
<string name="overwrite_server_settings">Suprascrie setările pe server?</string>
<string name="overwrite_local_settings">Suprascrie setările locale?</string>
<string name="start_after">Începe după</string>
<string name="include_types_summary">Pentru ce tipuri de articole să se afișeze imagini</string>
<string name="black">Negru</string>
<string name="skip_ignore">Ignoră</string>
<string name="next_up_playback_end">La sfârșitul redării</string>
<string name="next_up_outro">În timpul genericului de final/outro</string>
<string name="bold_blue">Albastru aldin</string>
<string name="bold_font">Font aldin</string>
<string name="player_backend">Motorul de redare</string>
<string name="mpv_hardware_decoding">MPV: Utilizează decodarea hardware</string>
<string name="disable_if_crash">Dezactivează această opțiune dacă aplicația se blochează</string>
<string name="background_opacity">Opacitatea fundalului</string>
<string name="profile">Profil</string>
</resources> </resources>

View file

@ -0,0 +1,551 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="about">เกี่ยวกับแอปนี้</string>
<string name="active_recordings">การบันทึกที่ใช้งานอยู่</string>
<string name="add_favorite">ชื่นชอบ</string>
<string name="add_server">เพิ่มเซิร์ฟเวอร์</string>
<string name="add_user">เพิ่มผู้ใช้</string>
<string name="audio">เสียง</string>
<string name="birthplace">บ้านเกิด</string>
<string name="bitrate">บิตเรท</string>
<string name="born">เกิด</string>
<string name="cancel_recording">ยกเลิกการบันทึก</string>
<string name="cancel_series_recording">ยกเลิกการบันทึกซีรีส์</string>
<string name="cancel">ยกเลิก</string>
<string name="chapters">ฉาก</string>
<string name="choose_stream">เลือก %1$s</string>
<string name="clear_image_cache">ล้างแคชภาพ</string>
<string name="collection">คอลเลคชัน</string>
<string name="collections">คอลเลกชัน</string>
<string name="commercial">ทางการค้า</string>
<string name="community_rating">การให้คะแนนของชุมชน</string>
<string name="compose_error_message_title">เกิดข้อผิดพลาด! กดปุ่มเพื่อส่งบันทึกไปยังเซิร์ฟเวอร์ของคุณ</string>
<string name="confirm">ตกลง</string>
<string name="continue_watching">ดูต่อครับ</string>
<string name="critic_rating">การจัดอันดับนักวิจารณ์</string>
<string name="decimal_seconds">%.2f วินาที</string>
<string name="default_track">ค่าเริ่มต้น</string>
<string name="delete">ลบ\"</string>
<string name="died">เสียชีวิต</string>
<string name="directed_by">กำกับโดย %1$s</string>
<string name="director">ผู้กำกับ</string>
<string name="disabled">ปิดใช้งาน</string>
<string name="discovered_servers">เซิร์ฟเวอร์ที่ค้นพบ</string>
<string name="download_and_update">ดาวน์โหลดและอัปเดต</string>
<string name="downloading">กำลังดาวน์โหลด…</string>
<string name="enabled">ใช้งาน</string>
<string name="ends_at">จบที่ %1$s</string>
<string name="enter_server_url">ป้อนที่อยู่ IP หรือ URL ของเซิร์ฟเวอร์</string>
<string name="enter_server_address">ป้อนที่อยู่เซิร์ฟเวอร์</string>
<string name="episodes">ตอน</string>
<string name="error_loading_collection">เกิดข้อผิดพลาดในการโหลดคอลเล็กชัน %1$s</string>
<string name="external_track">ภายนอก</string>
<string name="favorites">ชื่นชอบ</string>
<string name="file_size">ขนาด</string>
<string name="forced_track">บังคับ</string>
<string name="genres">ประเภทเพลง</string>
<string name="go_to_series">ไปซีรีย์</string>
<string name="go_to">ไปที่</string>
<string name="hide_controller_timeout">ซ่อนการควบคุมการเล่น</string>
<string name="hide_debug_info">ซ่อนข้อมูลการแก้ไขข้อบกพร่อง</string>
<string name="hide">ซ่อน</string>
<string name="home">หน้าหลัก</string>
<string name="immediate">ทันที</string>
<string name="intro">บทนำ</string>
<string name="jump_letters">#ABCDEFGHIJKLMNOPQRSTUVWXYZ</string>
<string name="library">คลังเพลง</string>
<string name="license_info">ข้อมูลใบอนุญาต</string>
<string name="live_tv">ทีวี สด</string>
<string name="loading">กำลังโหลด…</string>
<string name="mark_entire_series_as_played">ทำเครื่องหมายว่าเล่นซีรีส์ทั้งหมดแล้วหรือไม่?</string>
<string name="mark_entire_series_as_unplayed">ทำเครื่องหมายซีรีส์ทั้งหมดว่ายังไม่ได้เล่น?</string>
<string name="mark_unwatched">ทำเครื่องหมายว่ายังไม่ได้ดู</string>
<string name="mark_watched">ทำเครื่องหมายว่าดูแล้ว</string>
<string name="max_bitrate">บิตเรตสูงสุด</string>
<string name="more_like_this">เช่นนี้มากขึ้น</string>
<string name="more">เพิ่มเติม</string>
<plurals name="movies">
<item quantity="other">ภาพยนตร์</item>
</plurals>
<string name="name">ชื่อ</string>
<string name="next_up">ถัดไปขึ้นมา</string>
<string name="no_data">ไม่มีข้อมูล</string>
<string name="no_results">ไม่มีผลลัพธ์</string>
<string name="no_servers_found">ไม่พบเซิร์ฟเวอร์</string>
<string name="no_scheduled_recordings">ไม่มีการบันทึกตามกำหนดเวลา</string>
<string name="no_update_available">ไม่มีการอัปเดต</string>
<string name="none">ไม่มี</string>
<string name="only_forced_subtitles">คำบรรยายแบบบังคับเท่านั้น</string>
<string name="outro">เอาท์โตร</string>
<string name="path">เส้นทาง</string>
<plurals name="people">
<item quantity="other">ผู้คน</item>
</plurals>
<string name="play_count">จำนวนครั้งที่เล่น</string>
<string name="play_from_here">เล่นจากที่นี่</string>
<string name="play">เล่น</string>
<string name="playback_debug_info">แสดงข้อมูลการแก้ไขข้อผิดพลาดในการเล่น</string>
<string name="playback_speed">ความเร็วในการเล่น</string>
<string name="playback">การเล่น</string>
<string name="playlist">เพลย์ลิสต์</string>
<string name="playlists">เพลย์ลิสต์</string>
<string name="preview">ดูตัวอย่าง</string>
<string name="profile_specific_settings">การตั้งค่าโปรไฟล์ผู้ใช้</string>
<string name="queue">คิว</string>
<string name="recap">สรุป</string>
<string name="recently_added_in">ที่เพิ่งเพิ่ม %1$s</string>
<string name="recently_added">ที่เพิ่งเพิ่ม</string>
<string name="recently_recorded">บันทึกล่าสุด</string>
<string name="recently_released">ที่เพิ่งวางขาย</string>
<string name="recommended">แนะนำ</string>
<string name="record_program">โปรแกรมบันทึก</string>
<string name="record_series">บันทึกซีรีส์</string>
<string name="remove_favorite">ไม่เป็นที่ชื่นชอบ</string>
<string name="restart">เริ่มใหม่</string>
<string name="resume">เล่นเกมต่อ</string>
<string name="save">บันทึก</string>
<string name="search_and_download">ค้นหาและดาวน์โหลด</string>
<string name="search">ค้นหา</string>
<string name="searching">ค้นหา…</string>
<string name="voice_search">ค้นหาด้วยเสียง</string>
<string name="voice_starting">กำลังเริ่มต้น</string>
<string name="voice_search_prompt">พูดเพื่อค้นหา</string>
<string name="processing">กำลังประมวลผล</string>
<string name="press_back_to_cancel">กดกลับเพื่อยกเลิก</string>
<string name="voice_error_audio">ข้อผิดพลาดในการบันทึกเสียง</string>
<string name="voice_error_client">ข้อผิดพลาดในการจดจำเสียง</string>
<string name="voice_error_permissions">ต้องได้รับอนุญาตจากไมโครโฟน</string>
<string name="voice_error_network">ข้อผิดพลาดของเครือข่าย</string>
<string name="voice_error_network_timeout">หมดเวลาเครือข่าย</string>
<string name="voice_error_no_match">ไม่มีคำพูดใดที่ได้รับการยอมรับ</string>
<string name="voice_error_busy">การจดจำเสียงไม่ว่าง</string>
<string name="voice_error_server">ข้อผิดพลาดของเซิร์ฟเวอร์</string>
<string name="voice_error_speech_timeout">ไม่พบคำพูด</string>
<string name="voice_error_unknown">ข้อผิดพลาดที่ไม่รู้จัก</string>
<string name="voice_error_start_failed">ไม่สามารถเริ่มการจดจำเสียงได้</string>
<string name="voice_error_timeout">การจดจำเสียงหมดเวลา</string>
<string name="retry">ทำซ้ำ</string>
<string name="select_server">เลือกเซิร์ฟเวอร์</string>
<string name="select_user">เลือกผู้ใช้งาน</string>
<string name="show_debug_info">แสดงข้อมูลการแก้ไขข้อบกพร่อง</string>
<string name="show_next_up_when">แสดงต่อไป</string>
<string name="show">แสดง</string>
<string name="shuffle">สุ่ม</string>
<string name="skip">ข้าม</string>
<string name="sort_by_date_added">บันทึกวันที่แล้ว</string>
<string name="sort_by_date_episode_added">วันที่เพิ่มตอน</string>
<string name="sort_by_date_played">วันที่เล่น</string>
<string name="sort_by_date_released">วันที่เผยแพร่</string>
<string name="sort_by_name">ชื่อ</string>
<string name="sort_by_random">สุ่ม</string>
<string name="studios">สตูดิโอ</string>
<string name="submit">ยืนยัน</string>
<string name="subtitle_download_too_long">การดาวน์โหลดใช้เวลานาน คุณอาจต้องเริ่มเล่นใหม่</string>
<string name="subtitle">คำบรรยาย</string>
<string name="subtitles">คำบรรยาย</string>
<string name="suggestions">คำแนะนำ</string>
<string name="switch_servers">สลับเซิร์ฟเวอร์</string>
<string name="switch_user">สวิตช์</string>
<string name="top_unwatched">เรตติ้งสูงสุด (ยังไม่มีคนดู)</string>
<string name="trailer">ตัวอย่าง</string>
<plurals name="trailers">
<item quantity="other">รถพ่วง</item>
</plurals>
<string name="tv_dvr_schedule">กำหนดการ DVR</string>
<string name="tv_guide">แนะนำ</string>
<string name="tv_season">ฤดูกาล</string>
<string name="tv_seasons">ฤดูกาล</string>
<plurals name="tv_shows">
<item quantity="other">รายการทีวี</item>
</plurals>
<string name="ui_interface">อินเทอร์เฟซ</string>
<string name="unknown">ไม่มีข้อมูล</string>
<string name="updates">มีอัพเดต</string>
<string name="version">เวอร์ชัน</string>
<string name="video_scale">สเกลวิดีโอ</string>
<string name="video">วิดีโอ</string>
<string name="videos">วิดีโอ</string>
<string name="watch_live">ชมสด</string>
<string name="years_old">%1$d ปี</string>
<string name="play_with_transcoding">เล่นกับการแปลงรหัส</string>
<string name="media_information">ข้อมูลสื่อ</string>
<string name="show_clock">แสดงนาฬิกา</string>
<string name="aired_episode_order">ลำดับตอนที่ออกอากาศ</string>
<string name="create_playlist">สร้างเพลย์ลิสต์ใหม่</string>
<string name="add_to_playlist">เพิ่มชื่อเพลย์ลิสต์</string>
<string name="one_click_pause">หยุดเกมด้วยการคลิกเพียงครั้งเดียว</string>
<string name="one_click_pause_summary_on">กดปุ่ม D-Pad ตรงกลางเพื่อหยุด/เล่น</string>
<string name="italic_font">ทำตัวเอียง</string>
<string name="font">ฟ้อนต์</string>
<string name="background">พื้นหลัง</string>
<string name="success">สำเร็จ</string>
<string name="official_rating">การให้คะแนนโดยผู้ปกครอง</string>
<string name="runtime_sort">รันไทม์</string>
<string name="extras">บริการพิเศษ</string>
<plurals name="other_extras">
<item quantity="other">อื่นๆ</item>
</plurals>
<plurals name="behind_the_scenes">
<item quantity="other">เบื้องหลัง</item>
</plurals>
<plurals name="theme_songs">
<item quantity="other">เพลงธีม</item>
</plurals>
<plurals name="theme_videos">
<item quantity="other">วิดีโอธีม</item>
</plurals>
<plurals name="clips">
<item quantity="other">คลิป</item>
</plurals>
<plurals name="deleted_scenes">
<item quantity="other">ฉากที่ถูกลบ</item>
</plurals>
<plurals name="interviews">
<item quantity="other">สัมภาษณ์</item>
</plurals>
<plurals name="scenes">
<item quantity="other">ซีน</item>
</plurals>
<plurals name="samples">
<item quantity="other">ตัวอย่าง</item>
</plurals>
<plurals name="featurettes">
<item quantity="other">สารคดี</item>
</plurals>
<plurals name="shorts">
<item quantity="other">กางเกงขาสั้น</item>
</plurals>
<string name="favorite_items">ชื่นชอบ %s</string>
<string name="ac3_supported">อุปกรณ์รองรับระบบเสียง AC3/Dolby Digital</string>
<string name="advanced_settings">การตั้งค่าขั้นสูง</string>
<string name="advanced_ui">UI ขั้นสูง</string>
<string name="app_theme">ธีมแอปพลิเคชัน</string>
<string name="auto_check_for_updates">ตรวจสอบการอัปเดตโดยอัตโนมัติ</string>
<string name="auto_play_next_delay">หน่วงเวลาก่อนเล่นเพลงถัดไป</string>
<string name="auto_play_next">เล่นอัตโนมัติถัดไป</string>
<string name="check_for_updates">ตรวจสอบอัปเดต</string>
<string name="combine_continue_next_summary">ใช้ได้กับซีรีส์โทรทัศน์เท่านั้น</string>
<string name="combine_continue_next">รวมตัวเลือก \"ดูต่อ\" และ \"รายการถัดไป\" เข้าด้วยกัน</string>
<string name="direct_play_ass">เล่นคำบรรยาย ASS โดยตรง</string>
<string name="direct_play_pgs">เล่นคำบรรยาย PGS โดยตรง</string>
<string name="downmix_stereo">ลดระดับเสียงลงเป็นสเตอริโอเสมอ</string>
<string name="ffmpeg_extension_pref">ใช้โมดูลถอดรหัส FFmpeg</string>
<string name="global_content_scale">ขนาดเนื้อหาเริ่มต้น</string>
<string name="install_update">ติดตั้งอัปเดต</string>
<string name="installed_version">เวอร์ชันที่ติดตั้ง</string>
<string name="max_homepage_items">จำนวนรายการสูงสุดในแถวหน้าแรก</string>
<string name="nav_drawer_pins_summary">เลือกรายการเริ่มต้นที่จะแสดง รายการอื่นๆ จะถูกซ่อนไว้</string>
<string name="nav_drawer_pins">ปรับแต่งรายการเมนูนำทาง</string>
<string name="nav_drawer_switch_on_focus_summary_off">คลิกเพื่อสลับหน้า</string>
<string name="nav_drawer_switch_on_focus">สลับหน้าเมนูนำทางเมื่อโฟกัส</string>
<string name="pass_out_protection">การป้องกันการส่งผ่าน</string>
<string name="play_theme_music">เล่นเพลงธีม</string>
<string name="playback_overrides">การเล่นจะแทนที่</string>
<string name="remember_selected_tab">จำแท็บที่เลือก</string>
<string name="rewatch_next_up">เปิดใช้งานการรับชมซ้ำในครั้งต่อไป</string>
<string name="seek_bar_steps">ค้นหาขั้นบันได</string>
<string name="send_app_logs_summary">มีประโยชน์สำหรับการแก้ไขข้อผิดพลาด</string>
<string name="send_app_logs">ส่งบันทึกแอปไปยังเซิร์ฟเวอร์ปัจจุบัน</string>
<string name="send_crash_reports_summary">จะพยายามส่งไปยังเซิร์ฟเวอร์ที่เชื่อมต่อล่าสุด</string>
<string name="send_crash_reports">ส่งรายงานข้อขัดข้อง</string>
<string name="settings">ตั้งค่า</string>
<string name="skip_back_on_resume_preference">ย้อนกลับเมื่อกลับมาเล่นต่อ</string>
<string name="skip_back_preference">ข้ามกลับ</string>
<string name="skip_commercials_behavior">พฤติกรรมการข้ามโฆษณา</string>
<string name="skip_forward_preference">ข้ามไปข้างหน้า</string>
<string name="skip_intro_behavior">ข้ามพฤติกรรมการแนะนำ</string>
<string name="skip_outro_behavior">ข้ามพฤติกรรมตอนจบ</string>
<string name="skip_previews_behavior">ข้ามพฤติกรรมการแสดงตัวอย่าง</string>
<string name="skip_recap_behavior">ข้ามพฤติกรรมการสรุป</string>
<string name="update_available">มีอัปเดตใหม่</string>
<string name="update_url_summary">URL ที่ใช้ตรวจสอบการอัปเดตแอป</string>
<string name="update_url">อัปเดต URL</string>
<string name="font_size">ขนาดตัวอักษร</string>
<string name="font_color">สีตัวอักษร</string>
<string name="font_opacity">ความทึบของตัวอักษร</string>
<string name="edge_style">สไตล์ขอบ</string>
<string name="edge_color">สีขอบ</string>
<string name="background_opacity">ความเข้มจางของพื้นหลัง</string>
<string name="background_style">สไตล์พื้นหลัง</string>
<string name="subtitle_style">สไตล์คำบรรยาย</string>
<string name="background_color">สีพื้นหลัง</string>
<string name="reset">รีเซ็ต</string>
<string name="bold_font">ตัวอักษรตัวหนา</string>
<string name="player_backend">การเล่นแบ็กเอนด์</string>
<string name="mpv_hardware_decoding">MPV: ใช้การถอดรหัสฮาร์ดแวร์</string>
<string name="disable_if_crash">ปิดใช้งานหากพบปัญหาโปรแกรมหยุดทำงาน</string>
<string name="mpv_options">MPV ตัวเลือก</string>
<string name="exoplayer_options">ตัวเลือก ExoPlayer</string>
<string name="skip_segment_unknown">ข้ามส่วน</string>
<string name="skip_segment_commercial">ข้ามโฆษณา</string>
<string name="skip_segment_preview">ข้ามการแสดงตัวอย่าง</string>
<string name="skip_segment_recap">ข้ามสรุป</string>
<string name="skip_segment_outro">ข้ามเอาท์โทร</string>
<string name="skip_segment_intro">ข้ามบทนำ</string>
<string name="played">เล่นแล้ว</string>
<string name="filter">ตัวกรอง</string>
<string name="year">ปี</string>
<string name="decade">ทศวรรษ</string>
<string name="remove">ลบ</string>
<string name="dolby_vision">Dolby Vision</string>
<string name="discard_change">ทิ้งการเปลี่ยนแปลง?</string>
<string name="subtitle_margin">ขอบ</string>
<string name="verbose_logging">การบันทึกข้อมูลแบบละเอียด</string>
<string name="enter_pin">ป้อนรหัส PIN</string>
<string name="sign_in_auto">ลงชื่อเข้าใช้โดยอัตโนมัติ</string>
<string name="use_server_credentials">เข้าสู่ระบบผ่านเซิร์ฟเวอร์</string>
<string name="press_enter_to_confirm">กดตรงกลางเพื่อยืนยัน</string>
<string name="require_pin_code">ต้องใส่รหัส PIN สำหรับโปรไฟล์</string>
<string name="confirm_pin">ยืนยันรหัส PIN</string>
<string name="incorrect">ไม่ถูกต้อง</string>
<string name="pin_too_short">รหัส PIN ต้องมีอย่างน้อย 4 ปุ่ม</string>
<string name="will_remove_pin">จะลบ PIN</string>
<string name="image_cache_size">ขนาดแคชดิสก์รูปภาพ (เมกะไบต์)</string>
<string name="view_options">ตัวเลือกการดู</string>
<string name="columns">คอลัมน์</string>
<string name="spacing">ระยะห่าง</string>
<string name="aspect_ratio">อัตราส่วนภาพ</string>
<string name="show_details">แสดงรายละเอียด</string>
<string name="image_type">ประเภทรูปภาพ</string>
<string name="cast_and_crew">นักแสดงและทีมงาน</string>
<string name="guest_stars">ดารารับเชิญ</string>
<string name="edge_size">ขนาดขอบ</string>
<string name="refresh_rate_switching">การสลับอัตราการรีเฟรช</string>
<string name="automatic">อัตโนมัติ</string>
<string name="username_or_password">ใช้ชื่อผู้ใช้/รหัสผ่าน</string>
<string name="login">เข้าสู่ระบบ</string>
<string name="general">ทั่วไป</string>
<string name="container">คอนเทนเนอร์</string>
<string name="title">ชื่อเรื่อง</string>
<string name="codec">Codec</string>
<string name="profile">โปรไฟล์</string>
<string name="level">เลเวล</string>
<string name="resolution">ความละเอียด</string>
<string name="anamorphic">อะนามอร์ฟิก</string>
<string name="interlaced">อินเทอร์เลซ</string>
<string name="framerate">อัตราเฟรม</string>
<string name="bit_depth">ความคมชัดสี</string>
<string name="video_range">ช่วงวิดีโอ</string>
<string name="video_range_type">ประเภทช่วงวิดีโอ</string>
<string name="color_space">พื้นที่สี</string>
<string name="color_transfer">การถ่ายโอนสี</string>
<string name="color_primaries">แม่สี</string>
<string name="pixel_format">รูปแบบพิกเซล</string>
<string name="ref_frames">เฟรมอ้างอิง</string>
<string name="nal">NAL</string>
<string name="language">ภาษา</string>
<string name="layout">การจัดวาง</string>
<string name="channels">ช่อง</string>
<string name="sample_rate">อัตราการสุ่มตัวอย่าง</string>
<string name="avc">AVC</string>
<string name="yes">ใช่</string>
<string name="no">ไม่</string>
<string name="sdr">SDR</string>
<string name="hdr">HDR</string>
<string name="hdr10">HDR10</string>
<string name="hdr10_plus">HDR10+</string>
<string name="hlg">HLG</string>
<string name="bit_unit">bit</string>
<string name="sample_rate_unit">Hz</string>
<string name="show_titles">แสดงชื่อเรื่อง</string>
<string name="live_tv_repeat">ทำซ้ำ</string>
<string name="favorite_channels_at_beginning">แสดงช่องโปรดก่อน</string>
<string name="sort_channels_recently_watched">เรียงลำดับช่องตามลำดับการรับชมล่าสุด</string>
<string name="color_code_programs">โปรแกรมรหัสสี</string>
<string name="subtitle_delay">คำบรรยายล่าช้า</string>
<string name="backdrop_display">สไตล์ฉากหลัง</string>
<string name="resolution_switching">การสลับความละเอียด</string>
<string name="local">ท้องถิ่น</string>
<string name="play_trailer">เล่นตัวอย่าง</string>
<string name="no_trailers">ไม่มีรถพ่วง</string>
<string name="clear_track_choices">ล้างตัวเลือกแทร็ก</string>
<string name="dts_x">DTS:X</string>
<string name="dts_hd">DTS:HD</string>
<string name="dts_hd_ma">DTS:HD MA</string>
<string name="truehd">TrueHD</string>
<string name="dolby_digital">DD</string>
<string name="dolby_digital_plus">DD+</string>
<string name="dts">DTS</string>
<string name="force_dovi_profile_7">Direct play Dolby Vision Profile 7</string>
<string name="force_dovi_profile_7_summary">ไม่สนใจการตรวจสอบความเข้ากันได้ของอุปกรณ์</string>
<string name="discover">ค้นพบ</string>
<string name="request">คำขอ</string>
<string name="pending">รอดำเนินการ</string>
<string name="seerr_integration">การผสานรวม Seerr</string>
<string name="remove_seerr_server">ลบเซิร์ฟเวอร์ Seerr</string>
<string name="seerr_server_added">เพิ่มเซิร์ฟเวอร์ Seerr แล้ว</string>
<string name="quick_connect">เชื่อมต่อด่วน</string>
<string name="quick_connect_summary">อนุญาตให้อุปกรณ์อื่นเข้าสู่ระบบบัญชีของคุณ</string>
<string name="quick_connect_code">ป้อนรหัสการเชื่อมต่อด่วน</string>
<string name="quick_connect_code_error">รหัสต้องมี 6 หลัก</string>
<string name="quick_connect_success">อนุญาตอุปกรณ์สำเร็จแล้ว</string>
<string name="password">รหัสผ่าน</string>
<string name="username">ชื่อผู้ใช้</string>
<string name="url">URL</string>
<string name="trending">เทรนด์</string>
<string name="upcoming_movies">ภาพยนตร์ที่จะเกิดขึ้น</string>
<string name="upcoming_tv">รายการทีวีที่จะออกอากาศเร็วๆ นี้</string>
<string name="request_4k">ขอในความละเอียด 4K</string>
<string name="software_decoding_av1">AV1 software decoding</string>
<string name="upgrade_mpv_toast">ขณะนี้ MPV เป็นโปรแกรมเล่นวิดีโอเริ่มต้น ยกเว้นวิดีโอ HDR\nคุณสามารถเปลี่ยนการตั้งค่านี้ได้ในเมนูการตั้งค่า</string>
<string name="hdr_subtitle_style">รูปแบบคำบรรยาย HDR</string>
<string name="image_subtitle_opacity">ความทึบของคำบรรยายภาพ</string>
<string name="brightness">ความสว่าง</string>
<string name="contrast">คอนทราสต์</string>
<string name="saturation">ท้องอิ่ม</string>
<string name="hue">เนื้อสี</string>
<string name="red">แดง</string>
<string name="green">เขียว</string>
<string name="blue">น้ำเงิน</string>
<string name="blur">เบลอ</string>
<string name="save_for_album">บันทึกไว้ในอัลบั้ม</string>
<string name="play_slideshow">เล่นสไลด์โชว์</string>
<string name="stop_slideshow">หยุดสไลด์โชว์</string>
<string name="slideshow_at_beginning">เมื่อเริ่มต้น</string>
<string name="no_more_images">ไม่มีรูปถ่ายอีกต่อไป</string>
<string name="rotate_left">หมุนไปทางซ้าย</string>
<string name="rotate_right">หมุนไปทางขวา</string>
<string name="zoom_in">ขยายเข้า</string>
<string name="zoom_out">ซูมออก</string>
<string name="slideshow_duration">ระยะเวลาการแสดงภาพสไลด์</string>
<string name="play_videos_during_slideshow">เล่นวิดีโอระหว่างการนำเสนอสไลด์</string>
<string name="send_media_info_log_to_server">ส่งบันทึกข้อมูลสื่อไปยังเซิร์ฟเวอร์</string>
<string name="no_limit">ไม่มีขีดจำกัด</string>
<string name="max_days_next_up">จำนวนวันสูงสุดใน Next Up</string>
<string name="albums">อัลบั้ม</string>
<string name="artists">ศิลปิน</string>
<string name="songs">เพลง</string>
<string name="go_to_artist">ไปยังศิลปิน</string>
<string name="now_playing">ขณะนี้กำลังเล่น</string>
<string name="instant_mix">ผสมทันที</string>
<string name="go_to_album">ไปยังอัลบัม</string>
<string name="add_to_queue">เพิ่มเข้าคิวเพลง</string>
<string name="add_row">เพิ่มแถว</string>
<string name="dolby_atmos">Dolby Atmos</string>
<string name="mpv_use_gpu_next">MPV: ใช้ gpu-next</string>
<string name="mpv_conf">แก้ไข mpv.conf</string>
<string name="genres_in">ประเภทใน %1$s</string>
<string name="recently_released_in">เพิ่งเปิดตัวใน %1$s</string>
<string name="height">ความสูง</string>
<string name="apply_all_rows">นำไปใช้กับทุกแถว</string>
<string name="customize_home">ปรับแต่งหน้าแรก</string>
<string name="home_rows">แถวบ้าน</string>
<string name="load_from_server">โหลดจากโปรไฟล์ผู้ใช้เซิร์ฟเวอร์</string>
<string name="save_to_server">ดาวน์โหลดจากโปรไฟล์ผู้ใช้คืนนี้</string>
<string name="load_from_web_client">โหลดจากเว็บไคลเอ็นต์</string>
<string name="use_series">ใช้ภาพชุด</string>
<string name="add_row_for">เพิ่มแถวสำหรับ %1$s</string>
<string name="overwrite_server_settings">ตั้งค่าทับบนเซิร์ฟเวอร์หรือไม่?</string>
<string name="overwrite_local_settings">แทนที่การตั้งค่าในเครื่องหรือไม่?</string>
<string name="for_episodes">สำหรับตอนต่างๆ</string>
<string name="suggestions_for">คำแนะนำสำหรับ %1$s</string>
<string name="increase_all_cards_size">เพิ่มขนาดสำหรับการ์ดทุกใบ</string>
<string name="decrease_all_cards_size">ลดขนาดการ์ดทั้งหมด</string>
<string name="use_thumb_images">ใช้ภาพขนาดย่อ</string>
<string name="settings_saved">บันทึกการตั้งค่าแล้ว</string>
<string name="display_presets">แสดงค่าที่ตั้งไว้ล่วงหน้า</string>
<string name="display_presets_description">มีค่าที่ตั้งไว้ล่วงหน้าเพื่อจัดสไตล์ทุกแถวได้อย่างรวดเร็ว</string>
<string name="customize_home_summary">เลือกแถวและรูปภาพบนหน้าแรก</string>
<string name="start_after">เริ่มทีหลัง</string>
<string name="animate">เคลื่อนไหว</string>
<string name="max_age_rating">ระดับอายุสูงสุด</string>
<string name="no_max">ไม่มีสูงสุด</string>
<string name="for_all_ages">สำหรับทุกเพศทุกวัย</string>
<string name="up_to_age">อายุไม่เกิน %s</string>
<string name="screensaver">รักษาหน้าจอ</string>
<string name="screensaver_settings">การตั้งค่าโปรแกรมรักษาหน้าจอ</string>
<string name="start_screensaver">เริ่มโปรแกรมรักษาหน้าจอ</string>
<string name="duration">ระยะเวลา</string>
<string name="photos">ภาพถ่าย</string>
<string name="include_types">รวมประเภท</string>
<string name="include_types_summary">ควรแสดงภาพสินค้าประเภทใดบ้าง</string>
<string name="content_scale_fit">Fit</string>
<string name="content_scale_crop">ครอบตัด</string>
<string name="content_scale_fill">สีพื้น</string>
<string name="content_scale_fill_width">เติมความกว้าง</string>
<string name="content_scale_fill_height">เติมความสูง</string>
<string name="display_preset_default">Wholphin ค่าเริ่มต้น</string>
<string name="display_preset_compact">Wholphin คอมแพค</string>
<string name="display_preset_series_thumb">ภาพขนาดย่อของซีรี่ส์</string>
<string name="display_preset_episode_thumbnails">ภาพขนาดย่อของตอน</string>
<string name="volume_lowest">ต่ำสุด</string>
<string name="volume_low">ต่ำ</string>
<string name="volume_medium">ปานกลาง</string>
<string name="volume_high">สูง</string>
<string name="volume_full">เต็มดาว</string>
<string name="purple">สีม่วง</string>
<string name="orange">สีส้ม</string>
<string name="bold_blue">ฟ้าใส</string>
<string name="black">ดำ</string>
<string name="skip_ignore">ไม่สนใจ</string>
<string name="skip_automatically">ข้ามโดยอัตโนมัติ</string>
<string name="skip_ask">ขอให้ข้ามไป</string>
<string name="ffmpeg_fallback">ใช้ FFmpeg เฉพาะในกรณีที่ไม่มีตัวถอดรหัสในตัวเท่านั้น</string>
<string name="ffmpeg_prefer">ควรเลือกใช้ FFmpeg มากกว่าตัวถอดรหัสในตัว</string>
<string name="ffmpeg_never">ห้ามใช้ตัวถอดรหัส FFmpeg เด็ดขาด</string>
<string name="next_up_playback_end">เมื่อการเล่นจบลง</string>
<string name="next_up_outro">ระหว่างเครดิตท้ายเรื่อง/ฉากจบ</string>
<string name="white">ขาว</string>
<string name="light_gray">สีเทาอ่อน</string>
<string name="dark_gray">สีเทาเข้ม</string>
<string name="yellow">เหลือง</string>
<string name="cyan">น้ำเงินเขียว</string>
<string name="magenta">บานเย็น</string>
<string name="subtitle_edge_outline">โครงร่าง</string>
<string name="subtitle_edge_shadow">เงา</string>
<string name="background_style_wrap">ห่อ</string>
<string name="background_style_boxed">ชนิดบรรจุกล่อง</string>
<string name="prefer_mpv">เลือกใช้ MPV</string>
<string name="player_backend_options_subtitles_prefer_mpv">ใช้ ExoPlayer สำหรับการเล่นวิดีโอ HDR</string>
<string name="aspect_ratios_poster">โปสเตอร์ (2:3)</string>
<string name="aspect_ratios_16_9">16:9</string>
<string name="aspect_ratios_4_3">4:3</string>
<string name="aspect_ratios_square">สี่เหลี่ยมจัตุรัส (1:1)</string>
<string name="image_type_primary">หลัก</string>
<string name="image_type_thumb">นิ้วหัวแม่มือ</string>
<string name="backdrop_style_dynamic">ภาพที่มีสีแบบไดนามิก</string>
<string name="backdrop_style_image">รูปภาพเท่านั้น</string>
<string name="enter_url_api_key">ป้อน URL และ API Key</string>
<string name="api_key">คีย์ API</string>
<string name="seerr_login">เข้าสู่ระบบเซิร์ฟเวอร์ Seerr</string>
<string name="seerr_jellyfin_user">Jellyfin ผู้ใช้</string>
<string name="seerr_local_user">ผู้ใช้ท้องถิ่น</string>
<string name="search_and_download_subtitles">ค้นหาและดาวน์โหลดคำบรรยาย</string>
<string name="no_subtitles_found">ไม่พบคำบรรยายระยะไกล</string>
<string name="series_continueing">ปัจจุบัน</string>
<string name="in_app_screensaver">ใช้โปรแกรมรักษาหน้าจอในแอป</string>
<string name="delete_item">คุณแน่ใจหรือไม่ว่าต้องการลบรายการนี้?</string>
<string name="show_media_management">แสดงตัวเลือกการจัดการสื่อ</string>
<string name="search_for">ค้นหา %s</string>
<string name="actor">ผู้ดำเนินการ</string>
<string name="composer">ผู้แต่ง</string>
<string name="writer">นักเขียน</string>
<string name="guest_star">ดารารับเชิญ</string>
<string name="producer">ผู้ผลิต</string>
<string name="conductor">คอนดักเตอร์</string>
<string name="lyricist">นักแต่งเพลง</string>
<string name="arranger">ผู้จัด</string>
<string name="engineer">วิศวกร</string>
<string name="mixer">มิกเซอร์</string>
<string name="creator">ผู้สร้าง</string>
<string name="artist">ศิลปิน</string>
<string name="album_artist">อัลบัมศิลปิน</string>
<string name="album">อัลบัม</string>
<string name="popular_songs">เพลงฮิต</string>
<string name="play_next">เล่นถัดไป</string>
<string name="music_videos">มิวสิควิดีโอ</string>
<string name="lyrics">เนื้อเพลง</string>
<string name="hide_lyrics">ซ่อนเนื้อเพลง</string>
<string name="show_lyrics">แสดงเนื้อเพลง</string>
<string name="song_has_lyrics">เพลงมีเนื้อเพลง</string>
<string name="remove_from_queue">เอาออกจากคิว</string>
<string name="show_album_cover">แสดงรูปปกอัลบัม</string>
<string name="show_visualizer">แสดงวิชวลไลเซอร์</string>
<string name="show_backdrop">แสดงฉากหลัง</string>
<string name="play_as_type">เล่นเป็น?</string>
<string name="visualizer_rationale">การแสดงภาพเสียงที่กำลังเล่นอยู่จำเป็นต้องได้รับอนุญาตในการบันทึกเสียง</string>
<string name="continue_string">ต่อไป</string>
<string name="select_all">เลือกทั้งหมด</string>
<string name="separate_types">แยกประเภท</string>
<string name="prefer_logos">ควรแสดงโลโก้แทนชื่อเรื่อง</string>
</resources>

View file

@ -585,4 +585,14 @@
<string name="play_as_type">Nasıl çalınsın?</string> <string name="play_as_type">Nasıl çalınsın?</string>
<string name="visualizer_rationale">Çalan sesi görselleştirmek için ses kaydetme izni gerekiyor.</string> <string name="visualizer_rationale">Çalan sesi görselleştirmek için ses kaydetme izni gerekiyor.</string>
<string name="continue_string">Devam et</string> <string name="continue_string">Devam et</string>
<string name="separate_types">Farklı türler</string>
<string name="prefer_logos">Başlık yerine logo göster</string>
<string name="updated_toast">Wholphin %s sürümüne güncellendi</string>
<string name="view_more">Daha fazla göster</string>
<string name="discover_tv">Dizileri Keşfet</string>
<string name="discover_movies">Filmleri Keşfet</string>
<string name="remove_continue_watching">İzlemeye devam et listesinden kaldır</string>
<string name="remove_next_up">Sıradaki bölümlerden kaldır</string>
<string name="view_removed_next_up">Sıradaki bölümlerden kaldırılan dizileri göster</string>
<string name="studios_in">Stüdyolar: %1$s</string>
</resources> </resources>

View file

@ -559,4 +559,13 @@
<string name="visualizer_rationale">可视化当前播放的音频需要录音权限。</string> <string name="visualizer_rationale">可视化当前播放的音频需要录音权限。</string>
<string name="continue_string">继续</string> <string name="continue_string">继续</string>
<string name="separate_types">分开类型</string> <string name="separate_types">分开类型</string>
<string name="prefer_logos">优先显示标题图标</string>
<string name="updated_toast">Wholphin 已更新至 %s</string>
<string name="view_more">查看更多</string>
<string name="discover_tv">发现电视节目</string>
<string name="discover_movies">发现电影</string>
<string name="remove_continue_watching">从继续观看中移除</string>
<string name="remove_next_up">从即将播放中移除剧集</string>
<string name="view_removed_next_up">查看已从即将播放中移除的剧集</string>
<string name="studios_in">%1$s 制片公司</string>
</resources> </resources>

View file

@ -199,7 +199,7 @@
<string name="remove_favorite">移出我的最愛</string> <string name="remove_favorite">移出我的最愛</string>
<string name="resume">繼續播放</string> <string name="resume">繼續播放</string>
<string name="search_and_download"><![CDATA[搜尋並下載]]></string> <string name="search_and_download"><![CDATA[搜尋並下載]]></string>
<string name="studios">公司</string> <string name="studios">公司</string>
<string name="top_unwatched">高評分未觀看</string> <string name="top_unwatched">高評分未觀看</string>
<string name="tv_dvr_schedule">錄影排程</string> <string name="tv_dvr_schedule">錄影排程</string>
<string name="tv_shows">電視劇</string> <string name="tv_shows">電視劇</string>
@ -560,4 +560,12 @@
<string name="instant_mix">即時混播</string> <string name="instant_mix">即時混播</string>
<string name="separate_types">依類型分開顯示</string> <string name="separate_types">依類型分開顯示</string>
<string name="prefer_logos">優先顯示圖像標題</string> <string name="prefer_logos">優先顯示圖像標題</string>
<string name="updated_toast">Wholphin 已更新至 %s</string>
<string name="view_more">查看更多</string>
<string name="discover_tv">探索電視劇</string>
<string name="discover_movies">探索電影</string>
<string name="remove_continue_watching">從繼續觀看中移除</string>
<string name="remove_next_up">從接下來播放中移除劇集</string>
<string name="view_removed_next_up">查看從接下來播放中移除的劇集</string>
<string name="studios_in">%1$s 製作公司</string>
</resources> </resources>

View file

@ -1,5 +1,5 @@
[versions] [versions]
aboutLibraries = "13.2.1" aboutLibraries = "14.0.0"
acra = "5.13.1" acra = "5.13.1"
agp = "9.0.1" agp = "9.0.1"
auto-service = "1.1.1" auto-service = "1.1.1"
@ -15,7 +15,7 @@ appcompat = "1.7.1"
composeBom = "2026.03.01" composeBom = "2026.03.01"
mockk = "1.14.9" mockk = "1.14.9"
robolectric = "4.16.1" robolectric = "4.16.1"
multiplatformMarkdownRenderer = "0.39.2" multiplatformMarkdownRenderer = "0.40.2"
okhttpBom = "5.3.2" okhttpBom = "5.3.2"
programguide = "1.6.0" programguide = "1.6.0"
slf4j2Timber = "1.2" slf4j2Timber = "1.2"
@ -45,7 +45,7 @@ kotlinxCoroutinesTest = "1.10.2"
coreTesting = "2.2.0" coreTesting = "2.2.0"
openapi-generator = "7.21.0" openapi-generator = "7.21.0"
runner = "1.7.0" runner = "1.7.0"
wholphin-extensions = "0.1.0" wholphin-extensions = "0.1.1"
[libraries] [libraries]
wholphin-extensions-mpv = { module = "com.github.damontecres.wholphin.mpv:wholphin-mpv", version.ref = "wholphin-extensions" } wholphin-extensions-mpv = { module = "com.github.damontecres.wholphin.mpv:wholphin-mpv", version.ref = "wholphin-extensions" }

View file

@ -23,7 +23,8 @@
"groupName": "Jellyfin SDK", "groupName": "Jellyfin SDK",
"matchPackageNames": [ "matchPackageNames": [
"org.jellyfin.sdk:**" "org.jellyfin.sdk:**"
] ],
"enabled": false
}, },
{ {
"groupName": "AGP", "groupName": "AGP",
@ -36,6 +37,13 @@
"matchPackageNames": [ "matchPackageNames": [
"org.jetbrains.kotlin**" "org.jetbrains.kotlin**"
] ]
},
{
"groupName": "Internal dependencies",
"matchPackageNames": [
"com.github.damontecres.wholphin**"
],
"enabled": false
} }
] ]
} }