mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2025-08-09 13:50:42 +02:00
Compare commits
50 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
2116f60133 | ||
|
794f0ef42a | ||
|
e510174f12 | ||
|
08c9e8d47d | ||
|
1908ec3df5 | ||
|
df3878d4ca | ||
|
1097de6f1f | ||
|
e408070b19 | ||
|
af67c2e86f | ||
|
6a52d2a968 | ||
|
3337b3af18 | ||
|
835d2c7f36 | ||
|
03f91099e0 | ||
|
c04afd0787 | ||
|
b03bd79f5d | ||
|
79b4042e8e | ||
|
8f718ef91c | ||
|
4053b20623 | ||
|
c4d654635f | ||
|
ef5d0ffa48 | ||
|
6a826cdb36 | ||
|
1d837f5f21 | ||
|
80873b379c | ||
|
82a8f8f126 | ||
|
4725a466da | ||
|
031edc870c | ||
|
625e2445b5 | ||
|
1640af2f1c | ||
|
c76f76cc27 | ||
|
74af212293 | ||
|
e04efb9c6a | ||
|
ee17e7a555 | ||
|
694a852c07 | ||
|
18068bb261 | ||
|
71257f6c6c | ||
|
4d70929d2e | ||
|
578e9559e4 | ||
|
894ea0b80a | ||
|
e54571f011 | ||
|
32da0f1224 | ||
|
2054accdc9 | ||
|
7d8b857c77 | ||
|
0107cb4782 | ||
|
f273eee807 | ||
|
4af21b079a | ||
|
c9eaf2db2d | ||
|
a5fb0d9cdb | ||
|
53c80d9798 | ||
|
832165716b | ||
|
d9f2d8bf1d |
@ -116,7 +116,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="w-full h-12 px-1 py-2 border-t border-black/20 bg-bg absolute left-0" :style="{ bottom: streamLibraryItem ? '224px' : '65px' }">
|
<div class="w-full h-12 px-1 py-2 border-t border-black/20 bg-bg absolute left-0" :style="{ bottom: streamLibraryItem ? '224px' : '65px' }">
|
||||||
<p class="underline font-mono text-xs text-center text-gray-300 leading-3 mb-1" @click="clickChangelog">v{{ $config.version }}</p>
|
<p class="underline font-mono text-xs text-center text-gray-300 leading-3 mb-1 cursor-pointer" @click="clickChangelog">v{{ $config.version }}</p>
|
||||||
<a v-if="hasUpdate" :href="githubTagUrl" target="_blank" class="text-warning text-xxs text-center block leading-3">Update</a>
|
<a v-if="hasUpdate" :href="githubTagUrl" target="_blank" class="text-warning text-xxs text-center block leading-3">Update</a>
|
||||||
<p v-else class="text-xxs text-gray-400 leading-3 text-center italic">{{ Source }}</p>
|
<p v-else class="text-xxs text-gray-400 leading-3 text-center italic">{{ Source }}</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -101,7 +101,8 @@
|
|||||||
<!-- Podcast Episode # -->
|
<!-- Podcast Episode # -->
|
||||||
<div cy-id="podcastEpisodeNumber" v-if="recentEpisodeNumber !== null && !isHovering && !isSelectionMode && !processing" class="absolute rounded-lg bg-black/90 box-shadow-md z-10" :style="{ top: 0.375 + 'em', right: 0.375 + 'em', padding: `${0.1}em ${0.25}em` }">
|
<div cy-id="podcastEpisodeNumber" v-if="recentEpisodeNumber !== null && !isHovering && !isSelectionMode && !processing" class="absolute rounded-lg bg-black/90 box-shadow-md z-10" :style="{ top: 0.375 + 'em', right: 0.375 + 'em', padding: `${0.1}em ${0.25}em` }">
|
||||||
<p :style="{ fontSize: 0.8 + 'em' }">
|
<p :style="{ fontSize: 0.8 + 'em' }">
|
||||||
Episode<span v-if="recentEpisodeNumber"> #{{ recentEpisodeNumber }}</span>
|
Episode
|
||||||
|
<span v-if="recentEpisodeNumber">#{{ recentEpisodeNumber }}</span>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -200,6 +201,9 @@ export default {
|
|||||||
dateFormat() {
|
dateFormat() {
|
||||||
return this.store.getters['getServerSetting']('dateFormat')
|
return this.store.getters['getServerSetting']('dateFormat')
|
||||||
},
|
},
|
||||||
|
timeFormat() {
|
||||||
|
return this.store.getters['getServerSetting']('timeFormat')
|
||||||
|
},
|
||||||
_libraryItem() {
|
_libraryItem() {
|
||||||
return this.libraryItem || {}
|
return this.libraryItem || {}
|
||||||
},
|
},
|
||||||
@ -345,6 +349,10 @@ export default {
|
|||||||
if (this.mediaMetadata.publishedYear) return this.$getString('LabelPublishedDate', [this.mediaMetadata.publishedYear])
|
if (this.mediaMetadata.publishedYear) return this.$getString('LabelPublishedDate', [this.mediaMetadata.publishedYear])
|
||||||
return '\u00A0'
|
return '\u00A0'
|
||||||
}
|
}
|
||||||
|
if (this.orderBy === 'progress') {
|
||||||
|
if (!this.userProgressLastUpdated) return '\u00A0'
|
||||||
|
return this.$getString('LabelLastProgressDate', [this.$formatDatetime(this.userProgressLastUpdated, this.dateFormat, this.timeFormat)])
|
||||||
|
}
|
||||||
return null
|
return null
|
||||||
},
|
},
|
||||||
episodeProgress() {
|
episodeProgress() {
|
||||||
@ -377,6 +385,10 @@ export default {
|
|||||||
let progressPercent = this.itemIsFinished ? 1 : this.booksInSeries ? this.seriesProgressPercent : this.useEBookProgress ? this.userProgress?.ebookProgress || 0 : this.userProgress?.progress || 0
|
let progressPercent = this.itemIsFinished ? 1 : this.booksInSeries ? this.seriesProgressPercent : this.useEBookProgress ? this.userProgress?.ebookProgress || 0 : this.userProgress?.progress || 0
|
||||||
return Math.max(Math.min(1, progressPercent), 0)
|
return Math.max(Math.min(1, progressPercent), 0)
|
||||||
},
|
},
|
||||||
|
userProgressLastUpdated() {
|
||||||
|
if (!this.userProgress) return null
|
||||||
|
return this.userProgress.lastUpdate
|
||||||
|
},
|
||||||
itemIsFinished() {
|
itemIsFinished() {
|
||||||
if (this.booksInSeries) return this.seriesIsFinished
|
if (this.booksInSeries) return this.seriesIsFinished
|
||||||
return this.userProgress ? !!this.userProgress.isFinished : false
|
return this.userProgress ? !!this.userProgress.isFinished : false
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
</span>
|
</span>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<ul v-show="showMenu" class="absolute z-10 mt-1 w-full bg-bg border border-black-200 shadow-lg max-h-96 rounded-md py-1 ring-1 ring-black/5 overflow-auto focus:outline-hidden text-sm" role="menu">
|
<ul v-show="showMenu" class="librarySortMenu absolute z-10 mt-1 w-full bg-bg border border-black-200 shadow-lg max-h-96 rounded-md py-1 ring-1 ring-black/5 overflow-auto focus:outline-hidden text-sm" role="menu">
|
||||||
<template v-for="item in selectItems">
|
<template v-for="item in selectItems">
|
||||||
<li :key="item.value" class="select-none relative py-2 pr-9 cursor-pointer hover:bg-white/5" :class="item.value === selected ? 'bg-white/5 text-yellow-400' : 'text-gray-200 hover:text-white'" role="menuitem" @click="clickedOption(item.value)">
|
<li :key="item.value" class="select-none relative py-2 pr-9 cursor-pointer hover:bg-white/5" :class="item.value === selected ? 'bg-white/5 text-yellow-400' : 'text-gray-200 hover:text-white'" role="menuitem" @click="clickedOption(item.value)">
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
@ -130,6 +130,10 @@ export default {
|
|||||||
text: this.$strings.LabelFileModified,
|
text: this.$strings.LabelFileModified,
|
||||||
value: 'mtimeMs'
|
value: 'mtimeMs'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
text: this.$strings.LabelLibrarySortByProgress,
|
||||||
|
value: 'progress'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
text: this.$strings.LabelRandomly,
|
text: this.$strings.LabelRandomly,
|
||||||
value: 'random'
|
value: 'random'
|
||||||
@ -191,3 +195,9 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.librarySortMenu {
|
||||||
|
max-height: calc(100vh - 125px);
|
||||||
|
}
|
||||||
|
</style>
|
@ -99,22 +99,32 @@ export default {
|
|||||||
return `/api/items/${this.libraryItemId}/ebook`
|
return `/api/items/${this.libraryItemId}/ebook`
|
||||||
},
|
},
|
||||||
themeRules() {
|
themeRules() {
|
||||||
const isDark = this.ereaderSettings.theme === 'dark'
|
const theme = this.ereaderSettings.theme
|
||||||
const fontColor = isDark ? '#fff' : '#000'
|
const isDark = theme === 'dark'
|
||||||
const backgroundColor = isDark ? 'rgb(35 35 35)' : 'rgb(255, 255, 255)'
|
const isSepia = theme === 'sepia'
|
||||||
|
|
||||||
|
const fontColor = isDark
|
||||||
|
? '#fff'
|
||||||
|
: isSepia
|
||||||
|
? '#5b4636'
|
||||||
|
: '#000'
|
||||||
|
|
||||||
|
const backgroundColor = isDark
|
||||||
|
? 'rgb(35 35 35)'
|
||||||
|
: isSepia
|
||||||
|
? 'rgb(244, 236, 216)'
|
||||||
|
: 'rgb(255, 255, 255)'
|
||||||
|
|
||||||
const lineSpacing = this.ereaderSettings.lineSpacing / 100
|
const lineSpacing = this.ereaderSettings.lineSpacing / 100
|
||||||
|
const fontScale = this.ereaderSettings.fontScale / 100
|
||||||
const fontScale = this.ereaderSettings.fontScale / 100
|
const textStroke = this.ereaderSettings.textStroke / 100
|
||||||
|
|
||||||
const textStroke = this.ereaderSettings.textStroke / 100
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'*': {
|
'*': {
|
||||||
color: `${fontColor}!important`,
|
color: `${fontColor}!important`,
|
||||||
'background-color': `${backgroundColor}!important`,
|
'background-color': `${backgroundColor}!important`,
|
||||||
'line-height': lineSpacing * fontScale + 'rem!important',
|
'line-height': `${lineSpacing * fontScale}rem!important`,
|
||||||
'-webkit-text-stroke': textStroke + 'px ' + fontColor + '!important'
|
'-webkit-text-stroke': `${textStroke}px ${fontColor}!important`
|
||||||
},
|
},
|
||||||
a: {
|
a: {
|
||||||
color: `${fontColor}!important`
|
color: `${fontColor}!important`
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div v-if="show" id="reader" :data-theme="ereaderTheme" class="group absolute top-0 left-0 w-full z-60 data-[theme=dark]:bg-primary data-[theme=dark]:text-white data-[theme=light]:bg-white data-[theme=light]:text-black" :class="{ 'reader-player-open': !!streamLibraryItem }">
|
<div v-if="show" id="reader" :data-theme="ereaderTheme" class="group absolute top-0 left-0 w-full z-60 data-[theme=dark]:bg-primary data-[theme=dark]:text-white data-[theme=light]:bg-white data-[theme=light]:text-black data-[theme=sepia]:bg-[rgb(244,236,216)] data-[theme=sepia]:text-[#5b4636]" :class="{ 'reader-player-open': !!streamLibraryItem }">
|
||||||
<div class="absolute top-4 left-4 z-20 flex items-center">
|
<div class="absolute top-4 left-4 z-20 flex items-center">
|
||||||
<button v-if="isEpub" @click="toggleToC" type="button" aria-label="Table of contents menu" class="inline-flex opacity-80 hover:opacity-100">
|
<button v-if="isEpub" @click="toggleToC" type="button" aria-label="Table of contents menu" class="inline-flex opacity-80 hover:opacity-100">
|
||||||
<span class="material-symbols text-2xl">menu</span>
|
<span class="material-symbols text-2xl">menu</span>
|
||||||
@ -27,7 +27,12 @@
|
|||||||
|
|
||||||
<!-- TOC side nav -->
|
<!-- TOC side nav -->
|
||||||
<div v-if="tocOpen" class="w-full h-full overflow-y-scroll absolute inset-0 bg-black/20 z-20" @click.stop.prevent="toggleToC"></div>
|
<div v-if="tocOpen" class="w-full h-full overflow-y-scroll absolute inset-0 bg-black/20 z-20" @click.stop.prevent="toggleToC"></div>
|
||||||
<div v-if="isEpub" class="w-96 h-full max-h-full absolute top-0 left-0 shadow-xl transition-transform z-30 group-data-[theme=dark]:bg-primary group-data-[theme=dark]:text-white group-data-[theme=light]:bg-white group-data-[theme=light]:text-black" :class="tocOpen ? 'translate-x-0' : '-translate-x-96'" @click.stop.prevent>
|
<div
|
||||||
|
v-if="isEpub"
|
||||||
|
class="w-96 h-full max-h-full absolute top-0 left-0 shadow-xl transition-transform z-30 group-data-[theme=dark]:bg-primary group-data-[theme=dark]:text-white group-data-[theme=light]:bg-white group-data-[theme=light]:text-black group-data-[theme=sepia]:bg-[rgb(244,236,216)] group-data-[theme=sepia]:text-[#5b4636]"
|
||||||
|
:class="tocOpen ? 'translate-x-0' : '-translate-x-96'"
|
||||||
|
@click.stop.prevent
|
||||||
|
>
|
||||||
<div class="flex flex-col p-4 h-full">
|
<div class="flex flex-col p-4 h-full">
|
||||||
<div class="flex items-center mb-2">
|
<div class="flex items-center mb-2">
|
||||||
<button @click.stop.prevent="toggleToC" type="button" aria-label="Close table of contents" class="inline-flex opacity-80 hover:opacity-100">
|
<button @click.stop.prevent="toggleToC" type="button" aria-label="Close table of contents" class="inline-flex opacity-80 hover:opacity-100">
|
||||||
@ -37,7 +42,7 @@
|
|||||||
<p class="text-lg font-semibold ml-2">{{ $strings.HeaderTableOfContents }}</p>
|
<p class="text-lg font-semibold ml-2">{{ $strings.HeaderTableOfContents }}</p>
|
||||||
</div>
|
</div>
|
||||||
<form @submit.prevent="searchBook" @click.stop.prevent>
|
<form @submit.prevent="searchBook" @click.stop.prevent>
|
||||||
<ui-text-input clearable ref="input" @clear="searchBook" v-model="searchQuery" :placeholder="$strings.PlaceholderSearch" class="h-8 w-full text-sm flex mb-2" />
|
<ui-text-input clearable ref="input" @clear="searchBook" v-model="searchQuery" :placeholder="$strings.PlaceholderSearch" custom-input-class="text-inherit !bg-inherit" class="h-8 w-full text-sm flex mb-2" />
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<div class="overflow-y-auto">
|
<div class="overflow-y-auto">
|
||||||
@ -181,6 +186,10 @@ export default {
|
|||||||
text: this.$strings.LabelThemeDark,
|
text: this.$strings.LabelThemeDark,
|
||||||
value: 'dark'
|
value: 'dark'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
text: this.$strings.LabelThemeSepia,
|
||||||
|
value: 'sepia'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
text: this.$strings.LabelThemeLight,
|
text: this.$strings.LabelThemeLight,
|
||||||
value: 'light'
|
value: 'light'
|
||||||
|
@ -152,7 +152,7 @@ export default {
|
|||||||
|
|
||||||
this.showingTooltipIndex = index
|
this.showingTooltipIndex = index
|
||||||
this.tooltipEl.style.display = 'block'
|
this.tooltipEl.style.display = 'block'
|
||||||
this.tooltipTextEl.innerHTML = block.value ? `<strong>${this.$elapsedPretty(block.value, true)} listening</strong> on ${block.datePretty}` : `No listening sessions on ${block.datePretty}`
|
this.tooltipTextEl.innerHTML = block.value ? this.$getString('MessageHeatmapListeningTimeTooltip', [this.$elapsedPrettyLocalized(block.value, true), block.datePretty]) : this.$getString('MessageHeatmapNoListeningSessions', [block.datePretty])
|
||||||
|
|
||||||
const calculateRect = this.tooltipEl.getBoundingClientRect()
|
const calculateRect = this.tooltipEl.getBoundingClientRect()
|
||||||
|
|
||||||
|
4
client/package-lock.json
generated
4
client/package-lock.json
generated
@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "audiobookshelf-client",
|
"name": "audiobookshelf-client",
|
||||||
"version": "2.26.3",
|
"version": "2.27.0",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "audiobookshelf-client",
|
"name": "audiobookshelf-client",
|
||||||
"version": "2.26.3",
|
"version": "2.27.0",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@nuxtjs/axios": "^5.13.6",
|
"@nuxtjs/axios": "^5.13.6",
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "audiobookshelf-client",
|
"name": "audiobookshelf-client",
|
||||||
"version": "2.26.3",
|
"version": "2.27.0",
|
||||||
"buildNumber": 1,
|
"buildNumber": 1,
|
||||||
"description": "Self-hosted audiobook and podcast client",
|
"description": "Self-hosted audiobook and podcast client",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
|
@ -572,7 +572,7 @@ export default {
|
|||||||
if (data.error) {
|
if (data.error) {
|
||||||
this.asinError = this.$getString(data.stringKey)
|
this.asinError = this.$getString(data.stringKey)
|
||||||
} else {
|
} else {
|
||||||
console.log('Chapter data', data)
|
console.log('Chapter data', { ...data })
|
||||||
this.chapterData = this.removeBranding ? this.removeBrandingFromData(data) : data
|
this.chapterData = this.removeBranding ? this.removeBrandingFromData(data) : data
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -609,6 +609,11 @@ export default {
|
|||||||
data.chapters.pop()
|
data.chapters.pop()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Remove Branding durations from Runtime totals
|
||||||
|
data.runtimeLengthMs -= introDuration + outroDuration
|
||||||
|
data.runtimeLengthSec = Math.floor(data.runtimeLengthMs / 1000)
|
||||||
|
console.log('Brandless Chapter data', data)
|
||||||
|
|
||||||
return data
|
return data
|
||||||
} catch {
|
} catch {
|
||||||
return data
|
return data
|
||||||
|
@ -131,35 +131,26 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="grow py-2">
|
<div class="grow py-2">
|
||||||
<ui-dropdown :label="$strings.LabelSettingsDateFormat" v-model="newServerSettings.dateFormat" :items="dateFormats" small class="max-w-52" @input="(val) => updateSettingsKey('dateFormat', val)" />
|
<ui-dropdown :label="$strings.LabelSettingsDateFormat" v-model="newServerSettings.dateFormat" :items="dateFormats" small class="max-w-72" @input="(val) => updateSettingsKey('dateFormat', val)" />
|
||||||
<p class="text-xs ml-1 text-white/60">{{ $strings.LabelExample }}: {{ dateExample }}</p>
|
<p class="text-xs ml-1 text-white/60">{{ $strings.LabelExample }}: {{ dateExample }}</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="grow py-2">
|
<div class="grow py-2">
|
||||||
<ui-dropdown :label="$strings.LabelSettingsTimeFormat" v-model="newServerSettings.timeFormat" :items="timeFormats" small class="max-w-52" @input="(val) => updateSettingsKey('timeFormat', val)" />
|
<ui-dropdown :label="$strings.LabelSettingsTimeFormat" v-model="newServerSettings.timeFormat" :items="timeFormats" small class="max-w-72" @input="(val) => updateSettingsKey('timeFormat', val)" />
|
||||||
<p class="text-xs ml-1 text-white/60">{{ $strings.LabelExample }}: {{ timeExample }}</p>
|
<p class="text-xs ml-1 text-white/60">{{ $strings.LabelExample }}: {{ timeExample }}</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="py-2">
|
<div class="py-2">
|
||||||
<ui-dropdown :label="$strings.LabelLanguageDefaultServer" ref="langDropdown" v-model="newServerSettings.language" :items="$languageCodeOptions" small class="max-w-52" @input="updateServerLanguage" />
|
<ui-dropdown :label="$strings.LabelLanguageDefaultServer" ref="langDropdown" v-model="newServerSettings.language" :items="$languageCodeOptions" small class="max-w-72" @input="updateServerLanguage" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- old experimental features -->
|
<div class="pt-4">
|
||||||
<!-- <div class="pt-4">
|
<h2 class="font-semibold">{{ $strings.HeaderSettingsSecurity }}</h2>
|
||||||
<h2 class="font-semibold">{{ $strings.HeaderSettingsExperimental }}</h2>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex items-center py-2">
|
<div class="py-2">
|
||||||
<ui-toggle-switch labeledBy="settings-experimental-features" v-model="showExperimentalFeatures" />
|
<ui-multi-select v-model="newServerSettings.allowedOrigins" :items="newServerSettings.allowedOrigins" :label="$strings.LabelCorsAllowed" class="max-w-72" @input="updateCorsOrigins" />
|
||||||
<ui-tooltip :text="$strings.LabelSettingsExperimentalFeaturesHelp">
|
</div>
|
||||||
<p class="pl-4">
|
|
||||||
<span id="settings-experimental-features">{{ $strings.LabelSettingsExperimentalFeatures }}</span>
|
|
||||||
<a :aria-label="$strings.LabelSettingsExperimentalFeaturesHelp" href="https://github.com/advplyr/audiobookshelf/discussions/75" target="_blank">
|
|
||||||
<span class="material-symbols icon-text">info</span>
|
|
||||||
</a>
|
|
||||||
</p>
|
|
||||||
</ui-tooltip>
|
|
||||||
</div> -->
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</app-settings-content>
|
</app-settings-content>
|
||||||
@ -323,6 +314,27 @@ export default {
|
|||||||
updateServerLanguage(val) {
|
updateServerLanguage(val) {
|
||||||
this.updateSettingsKey('language', val)
|
this.updateSettingsKey('language', val)
|
||||||
},
|
},
|
||||||
|
updateCorsOrigins(val) {
|
||||||
|
const validOrigins = []
|
||||||
|
const invalidOrigins = []
|
||||||
|
|
||||||
|
val.forEach((origin) => {
|
||||||
|
const trimmedOrigin = origin.trim().toLowerCase()
|
||||||
|
try {
|
||||||
|
new URL(trimmedOrigin)
|
||||||
|
validOrigins.push(trimmedOrigin)
|
||||||
|
} catch {
|
||||||
|
invalidOrigins.push(trimmedOrigin)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
if (invalidOrigins.length > 0) {
|
||||||
|
this.$toast.error(this.$strings.ToastInvalidUrls)
|
||||||
|
}
|
||||||
|
|
||||||
|
this.newServerSettings.allowedOrigins = validOrigins
|
||||||
|
this.updateSettingsKey('allowedOrigins', validOrigins)
|
||||||
|
},
|
||||||
updateSettingsKey(key, val) {
|
updateSettingsKey(key, val) {
|
||||||
if (key === 'scannerDisableWatcher') {
|
if (key === 'scannerDisableWatcher') {
|
||||||
this.newServerSettings.scannerDisableWatcher = val
|
this.newServerSettings.scannerDisableWatcher = val
|
||||||
@ -352,6 +364,7 @@ export default {
|
|||||||
initServerSettings() {
|
initServerSettings() {
|
||||||
this.newServerSettings = this.serverSettings ? { ...this.serverSettings } : {}
|
this.newServerSettings = this.serverSettings ? { ...this.serverSettings } : {}
|
||||||
this.newServerSettings.sortingPrefixes = [...(this.newServerSettings.sortingPrefixes || [])]
|
this.newServerSettings.sortingPrefixes = [...(this.newServerSettings.sortingPrefixes || [])]
|
||||||
|
this.newServerSettings.allowedOrigins = [...(this.newServerSettings.allowedOrigins || [])]
|
||||||
this.scannerEnableWatcher = !this.newServerSettings.scannerDisableWatcher
|
this.scannerEnableWatcher = !this.newServerSettings.scannerDisableWatcher
|
||||||
|
|
||||||
this.homepageUseBookshelfView = this.newServerSettings.homeBookshelfView != this.$constants.BookshelfView.DETAIL
|
this.homepageUseBookshelfView = this.newServerSettings.homeBookshelfView != this.$constants.BookshelfView.DETAIL
|
||||||
|
@ -6,80 +6,82 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-if="listeningSessions.length" class="block max-w-full relative">
|
<div v-if="listeningSessions.length" class="block max-w-full relative">
|
||||||
<table class="userSessionsTable">
|
<div class="overflow-x-auto">
|
||||||
<tr class="bg-primary/40">
|
<table class="userSessionsTable">
|
||||||
<th class="w-6 min-w-6 text-left hidden md:table-cell h-11">
|
<tr class="bg-primary/40">
|
||||||
<ui-checkbox v-model="isAllSelected" :partial="numSelected > 0 && !isAllSelected" small checkbox-bg="bg" />
|
<th class="w-6 min-w-6 text-left hidden md:table-cell h-11">
|
||||||
</th>
|
<ui-checkbox v-model="isAllSelected" :partial="numSelected > 0 && !isAllSelected" small checkbox-bg="bg" />
|
||||||
<th v-if="numSelected" class="grow text-left" :colspan="7">
|
</th>
|
||||||
<div class="flex items-center">
|
<th v-if="numSelected" class="grow text-left" :colspan="7">
|
||||||
<p>{{ $getString('MessageSelected', [numSelected]) }}</p>
|
<div class="flex items-center">
|
||||||
<div class="grow" />
|
<p>{{ $getString('MessageSelected', [numSelected]) }}</p>
|
||||||
<ui-btn small color="bg-error" :loading="deletingSessions" @click.stop="removeSessionsClick">{{ $strings.ButtonRemove }}</ui-btn>
|
<div class="grow" />
|
||||||
</div>
|
<ui-btn small color="bg-error" :loading="deletingSessions" @click.stop="removeSessionsClick">{{ $strings.ButtonRemove }}</ui-btn>
|
||||||
</th>
|
</div>
|
||||||
<th v-if="!numSelected" class="grow sm:grow-0 sm:w-48 sm:max-w-48 text-left group cursor-pointer" @click.stop="sortColumn('displayTitle')">
|
</th>
|
||||||
<div class="inline-flex items-center">
|
<th v-if="!numSelected" class="grow sm:grow-0 sm:w-48 sm:max-w-48 text-left group cursor-pointer" @click.stop="sortColumn('displayTitle')">
|
||||||
{{ $strings.LabelItem }} <span :class="{ 'opacity-0 group-hover:opacity-30': !isSortSelected('displayTitle') }" class="material-symbols text-base pl-px">{{ sortDesc ? 'arrow_drop_down' : 'arrow_drop_up' }}</span>
|
<div class="inline-flex items-center">
|
||||||
</div>
|
{{ $strings.LabelItem }} <span :class="{ 'opacity-0 group-hover:opacity-30': !isSortSelected('displayTitle') }" class="material-symbols text-base pl-px">{{ sortDesc ? 'arrow_drop_down' : 'arrow_drop_up' }}</span>
|
||||||
</th>
|
</div>
|
||||||
<th v-if="!numSelected" class="w-20 min-w-20 text-left hidden md:table-cell">{{ $strings.LabelUser }}</th>
|
</th>
|
||||||
<th v-if="!numSelected" class="w-26 min-w-26 text-left hidden md:table-cell group cursor-pointer" @click.stop="sortColumn('playMethod')">
|
<th v-if="!numSelected" class="w-20 min-w-20 text-left hidden md:table-cell">{{ $strings.LabelUser }}</th>
|
||||||
<div class="inline-flex items-center">
|
<th v-if="!numSelected" class="w-26 min-w-26 text-left hidden md:table-cell group cursor-pointer" @click.stop="sortColumn('playMethod')">
|
||||||
{{ $strings.LabelPlayMethod }} <span :class="{ 'opacity-0 group-hover:opacity-30': !isSortSelected('playMethod') }" class="material-symbols text-base pl-px">{{ sortDesc ? 'arrow_drop_down' : 'arrow_drop_up' }}</span>
|
<div class="inline-flex items-center">
|
||||||
</div>
|
{{ $strings.LabelPlayMethod }} <span :class="{ 'opacity-0 group-hover:opacity-30': !isSortSelected('playMethod') }" class="material-symbols text-base pl-px">{{ sortDesc ? 'arrow_drop_down' : 'arrow_drop_up' }}</span>
|
||||||
</th>
|
</div>
|
||||||
<th v-if="!numSelected" class="w-32 min-w-32 text-left hidden sm:table-cell">{{ $strings.LabelDeviceInfo }}</th>
|
</th>
|
||||||
<th v-if="!numSelected" class="w-24 min-w-24 sm:w-32 sm:min-w-32 group cursor-pointer" @click.stop="sortColumn('timeListening')">
|
<th v-if="!numSelected" class="w-32 min-w-32 text-left hidden sm:table-cell">{{ $strings.LabelDeviceInfo }}</th>
|
||||||
<div class="inline-flex items-center">
|
<th v-if="!numSelected" class="w-24 min-w-24 sm:w-32 sm:min-w-32 group cursor-pointer" @click.stop="sortColumn('timeListening')">
|
||||||
{{ $strings.LabelTimeListened }} <span :class="{ 'opacity-0 group-hover:opacity-30': !isSortSelected('timeListening') }" class="material-symbols text-base pl-px hidden sm:inline-block">{{ sortDesc ? 'arrow_drop_down' : 'arrow_drop_up' }}</span>
|
<div class="inline-flex items-center">
|
||||||
</div>
|
{{ $strings.LabelTimeListened }} <span :class="{ 'opacity-0 group-hover:opacity-30': !isSortSelected('timeListening') }" class="material-symbols text-base pl-px hidden sm:inline-block">{{ sortDesc ? 'arrow_drop_down' : 'arrow_drop_up' }}</span>
|
||||||
</th>
|
</div>
|
||||||
<th v-if="!numSelected" class="w-24 min-w-24 group cursor-pointer" @click.stop="sortColumn('currentTime')">
|
</th>
|
||||||
<div class="inline-flex items-center">
|
<th v-if="!numSelected" class="w-24 min-w-24 group cursor-pointer" @click.stop="sortColumn('currentTime')">
|
||||||
{{ $strings.LabelLastTime }} <span :class="{ 'opacity-0 group-hover:opacity-30': !isSortSelected('currentTime') }" class="material-symbols text-base pl-px hidden sm:inline-block">{{ sortDesc ? 'arrow_drop_down' : 'arrow_drop_up' }}</span>
|
<div class="inline-flex items-center">
|
||||||
</div>
|
{{ $strings.LabelLastTime }} <span :class="{ 'opacity-0 group-hover:opacity-30': !isSortSelected('currentTime') }" class="material-symbols text-base pl-px hidden sm:inline-block">{{ sortDesc ? 'arrow_drop_down' : 'arrow_drop_up' }}</span>
|
||||||
</th>
|
</div>
|
||||||
<th v-if="!numSelected" class="grow hidden sm:table-cell cursor-pointer group" @click.stop="sortColumn('updatedAt')">
|
</th>
|
||||||
<div class="inline-flex items-center">
|
<th v-if="!numSelected" class="grow hidden sm:table-cell cursor-pointer group" @click.stop="sortColumn('updatedAt')">
|
||||||
{{ $strings.LabelLastUpdate }} <span :class="{ 'opacity-0 group-hover:opacity-30': !isSortSelected('updatedAt') }" class="material-symbols text-base pl-px">{{ sortDesc ? 'arrow_drop_down' : 'arrow_drop_up' }}</span>
|
<div class="inline-flex items-center">
|
||||||
</div>
|
{{ $strings.LabelLastUpdate }} <span :class="{ 'opacity-0 group-hover:opacity-30': !isSortSelected('updatedAt') }" class="material-symbols text-base pl-px">{{ sortDesc ? 'arrow_drop_down' : 'arrow_drop_up' }}</span>
|
||||||
</th>
|
</div>
|
||||||
</tr>
|
</th>
|
||||||
|
</tr>
|
||||||
|
|
||||||
<tr v-for="session in listeningSessions" :key="session.id" :class="{ selected: session.selected }" class="cursor-pointer" @click="clickSessionRow(session)">
|
<tr v-for="session in listeningSessions" :key="session.id" :class="{ selected: session.selected }" class="cursor-pointer" @click="clickSessionRow(session)">
|
||||||
<td class="hidden md:table-cell py-1 max-w-6 relative">
|
<td class="hidden md:table-cell py-1 max-w-6 relative">
|
||||||
<ui-checkbox v-model="session.selected" small checkbox-bg="bg" />
|
<ui-checkbox v-model="session.selected" small checkbox-bg="bg" />
|
||||||
<!-- overlay of the checkbox so that the entire box is clickable -->
|
<!-- overlay of the checkbox so that the entire box is clickable -->
|
||||||
<div class="absolute inset-0 w-full h-full" @click.stop="session.selected = !session.selected" />
|
<div class="absolute inset-0 w-full h-full" @click.stop="session.selected = !session.selected" />
|
||||||
</td>
|
</td>
|
||||||
<td class="py-1 grow sm:grow-0 sm:w-48 sm:max-w-48">
|
<td class="py-1 grow sm:grow-0 sm:w-48 sm:max-w-48">
|
||||||
<p class="text-xs text-gray-200 truncate">{{ session.displayTitle }}</p>
|
<p class="text-xs text-gray-200 truncate">{{ session.displayTitle }}</p>
|
||||||
<p class="text-xs text-gray-400 truncate">{{ session.displayAuthor }}</p>
|
<p class="text-xs text-gray-400 truncate">{{ session.displayAuthor }}</p>
|
||||||
</td>
|
</td>
|
||||||
<td class="hidden md:table-cell w-20 min-w-20">
|
<td class="hidden md:table-cell w-20 min-w-20">
|
||||||
<p v-if="filteredUserUsername" class="text-xs">{{ filteredUserUsername }}</p>
|
<p v-if="filteredUserUsername" class="text-xs">{{ filteredUserUsername }}</p>
|
||||||
<p v-else class="text-xs">{{ session.user ? session.user.username : 'N/A' }}</p>
|
<p v-else class="text-xs">{{ session.user ? session.user.username : 'N/A' }}</p>
|
||||||
</td>
|
</td>
|
||||||
<td class="hidden md:table-cell w-26 min-w-26">
|
<td class="hidden md:table-cell w-26 min-w-26">
|
||||||
<p class="text-xs">{{ getPlayMethodName(session.playMethod) }}</p>
|
<p class="text-xs">{{ getPlayMethodName(session.playMethod) }}</p>
|
||||||
</td>
|
</td>
|
||||||
<td class="hidden sm:table-cell max-w-32 min-w-32">
|
<td class="hidden sm:table-cell max-w-32 min-w-32">
|
||||||
<p class="text-xs truncate" v-html="getDeviceInfoString(session.deviceInfo)" />
|
<p class="text-xs truncate" v-html="getDeviceInfoString(session.deviceInfo)" />
|
||||||
</td>
|
</td>
|
||||||
<td class="text-center w-24 min-w-24 sm:w-32 sm:min-w-32">
|
<td class="text-center w-24 min-w-24 sm:w-32 sm:min-w-32">
|
||||||
<p class="text-xs font-mono">{{ $elapsedPrettyLocalized(session.timeListening) }}</p>
|
<p class="text-xs font-mono">{{ $elapsedPrettyLocalized(session.timeListening) }}</p>
|
||||||
</td>
|
</td>
|
||||||
<td class="text-center hover:underline w-24 min-w-24" @click.stop="clickCurrentTime(session)">
|
<td class="text-center hover:underline w-24 min-w-24" @click.stop="clickCurrentTime(session)">
|
||||||
<p class="text-xs font-mono">{{ $secondsToTimestamp(session.currentTime) }}</p>
|
<p class="text-xs font-mono">{{ $secondsToTimestamp(session.currentTime) }}</p>
|
||||||
</td>
|
</td>
|
||||||
<td class="text-center hidden sm:table-cell">
|
<td class="text-center hidden sm:table-cell">
|
||||||
<ui-tooltip v-if="session.updatedAt" direction="top" :text="$formatDatetime(session.updatedAt, dateFormat, timeFormat)">
|
<ui-tooltip v-if="session.updatedAt" direction="top" :text="$formatDatetime(session.updatedAt, dateFormat, timeFormat)">
|
||||||
<p class="text-xs text-gray-200">{{ $dateDistanceFromNow(session.updatedAt) }}</p>
|
<p class="text-xs text-gray-200">{{ $dateDistanceFromNow(session.updatedAt) }}</p>
|
||||||
</ui-tooltip>
|
</ui-tooltip>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
</div>
|
||||||
<!-- table bottom options -->
|
<!-- table bottom options -->
|
||||||
<div class="flex items-center my-2">
|
<div class="flex items-center my-2">
|
||||||
<div class="grow" />
|
<div class="grow" />
|
||||||
|
@ -19,39 +19,41 @@
|
|||||||
<div class="py-2">
|
<div class="py-2">
|
||||||
<h1 class="text-lg mb-2 text-white/90 px-2 sm:px-0">{{ $strings.HeaderListeningSessions }}</h1>
|
<h1 class="text-lg mb-2 text-white/90 px-2 sm:px-0">{{ $strings.HeaderListeningSessions }}</h1>
|
||||||
<div v-if="listeningSessions.length">
|
<div v-if="listeningSessions.length">
|
||||||
<table class="userSessionsTable">
|
<div class="overflow-x-auto">
|
||||||
<tr class="bg-primary/40">
|
<table class="userSessionsTable">
|
||||||
<th class="w-48 min-w-48 text-left">{{ $strings.LabelItem }}</th>
|
<tr class="bg-primary/40">
|
||||||
<th class="w-32 min-w-32 text-left hidden md:table-cell">{{ $strings.LabelPlayMethod }}</th>
|
<th class="w-48 min-w-48 text-left">{{ $strings.LabelItem }}</th>
|
||||||
<th class="w-32 min-w-32 text-left hidden sm:table-cell">{{ $strings.LabelDeviceInfo }}</th>
|
<th class="w-32 min-w-32 text-left hidden md:table-cell">{{ $strings.LabelPlayMethod }}</th>
|
||||||
<th class="w-32 min-w-32">{{ $strings.LabelTimeListened }}</th>
|
<th class="w-32 min-w-32 text-left hidden sm:table-cell">{{ $strings.LabelDeviceInfo }}</th>
|
||||||
<th class="w-16 min-w-16">{{ $strings.LabelLastTime }}</th>
|
<th class="w-32 min-w-32">{{ $strings.LabelTimeListened }}</th>
|
||||||
<th class="grow hidden sm:table-cell">{{ $strings.LabelLastUpdate }}</th>
|
<th class="w-16 min-w-16">{{ $strings.LabelLastTime }}</th>
|
||||||
</tr>
|
<th class="grow hidden sm:table-cell">{{ $strings.LabelLastUpdate }}</th>
|
||||||
<tr v-for="session in listeningSessions" :key="session.id" class="cursor-pointer" @click="showSession(session)">
|
</tr>
|
||||||
<td class="py-1 max-w-48">
|
<tr v-for="session in listeningSessions" :key="session.id" class="cursor-pointer" @click="showSession(session)">
|
||||||
<p class="text-xs text-gray-200 truncate">{{ session.displayTitle }}</p>
|
<td class="py-1 max-w-48">
|
||||||
<p class="text-xs text-gray-400 truncate">{{ session.displayAuthor }}</p>
|
<p class="text-xs text-gray-200 truncate">{{ session.displayTitle }}</p>
|
||||||
</td>
|
<p class="text-xs text-gray-400 truncate">{{ session.displayAuthor }}</p>
|
||||||
<td class="hidden md:table-cell">
|
</td>
|
||||||
<p class="text-xs">{{ getPlayMethodName(session.playMethod) }}</p>
|
<td class="hidden md:table-cell">
|
||||||
</td>
|
<p class="text-xs">{{ getPlayMethodName(session.playMethod) }}</p>
|
||||||
<td class="hidden sm:table-cell min-w-32 max-w-32">
|
</td>
|
||||||
<p class="text-xs truncate" v-html="getDeviceInfoString(session.deviceInfo)" />
|
<td class="hidden sm:table-cell min-w-32 max-w-32">
|
||||||
</td>
|
<p class="text-xs truncate" v-html="getDeviceInfoString(session.deviceInfo)" />
|
||||||
<td class="text-center">
|
</td>
|
||||||
<p class="text-xs font-mono">{{ $elapsedPrettyLocalized(session.timeListening) }}</p>
|
<td class="text-center">
|
||||||
</td>
|
<p class="text-xs font-mono">{{ $elapsedPrettyLocalized(session.timeListening) }}</p>
|
||||||
<td class="text-center hover:underline" @click.stop="clickCurrentTime(session)">
|
</td>
|
||||||
<p class="text-xs font-mono">{{ $secondsToTimestamp(session.currentTime) }}</p>
|
<td class="text-center hover:underline" @click.stop="clickCurrentTime(session)">
|
||||||
</td>
|
<p class="text-xs font-mono">{{ $secondsToTimestamp(session.currentTime) }}</p>
|
||||||
<td class="text-center hidden sm:table-cell">
|
</td>
|
||||||
<ui-tooltip v-if="session.updatedAt" direction="top" :text="$formatDatetime(session.updatedAt, dateFormat, timeFormat)">
|
<td class="text-center hidden sm:table-cell">
|
||||||
<p class="text-xs text-gray-200">{{ $dateDistanceFromNow(session.updatedAt) }}</p>
|
<ui-tooltip v-if="session.updatedAt" direction="top" :text="$formatDatetime(session.updatedAt, dateFormat, timeFormat)">
|
||||||
</ui-tooltip>
|
<p class="text-xs text-gray-200">{{ $dateDistanceFromNow(session.updatedAt) }}</p>
|
||||||
</td>
|
</ui-tooltip>
|
||||||
</tr>
|
</td>
|
||||||
</table>
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
<div class="flex items-center justify-end py-1">
|
<div class="flex items-center justify-end py-1">
|
||||||
<ui-icon-btn icon="arrow_back_ios_new" :size="7" icon-font-size="1rem" class="mx-1" :disabled="currentPage === 0" @click="prevPage" />
|
<ui-icon-btn icon="arrow_back_ios_new" :size="7" icon-font-size="1rem" class="mx-1" :disabled="currentPage === 0" @click="prevPage" />
|
||||||
<p class="text-sm mx-1">{{ $getString('LabelPaginationPageXOfY', [currentPage + 1, numPages]) }}</p>
|
<p class="text-sm mx-1">{{ $getString('LabelPaginationPageXOfY', [currentPage + 1, numPages]) }}</p>
|
||||||
|
@ -92,7 +92,7 @@ export const actions = {
|
|||||||
if (state.settings.orderBy == 'media.duration') {
|
if (state.settings.orderBy == 'media.duration') {
|
||||||
settingsUpdate.orderBy = 'media.numTracks'
|
settingsUpdate.orderBy = 'media.numTracks'
|
||||||
}
|
}
|
||||||
if (state.settings.orderBy == 'media.metadata.publishedYear') {
|
if (state.settings.orderBy == 'media.metadata.publishedYear' || state.settings.orderBy == 'progress') {
|
||||||
settingsUpdate.orderBy = 'media.metadata.title'
|
settingsUpdate.orderBy = 'media.metadata.title'
|
||||||
}
|
}
|
||||||
const invalidFilters = ['series', 'authors', 'narrators', 'publishers', 'publishedDecades', 'languages', 'progress', 'issues', 'ebooks', 'abridged']
|
const invalidFilters = ['series', 'authors', 'narrators', 'publishers', 'publishedDecades', 'languages', 'progress', 'issues', 'ebooks', 'abridged']
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"ButtonAdd": "Дадаць",
|
"ButtonAdd": "Дадаць",
|
||||||
|
"ButtonAddApiKey": "Дадаць API-ключ",
|
||||||
"ButtonAddChapters": "Дадаць раздзелы",
|
"ButtonAddChapters": "Дадаць раздзелы",
|
||||||
"ButtonAddDevice": "Дадаць прыладу",
|
"ButtonAddDevice": "Дадаць прыладу",
|
||||||
"ButtonAddLibrary": "Дадаць бібліятэку",
|
"ButtonAddLibrary": "Дадаць бібліятэку",
|
||||||
@ -20,6 +21,7 @@
|
|||||||
"ButtonChooseAFolder": "Выбраць тэчку",
|
"ButtonChooseAFolder": "Выбраць тэчку",
|
||||||
"ButtonChooseFiles": "Выбраць файлы",
|
"ButtonChooseFiles": "Выбраць файлы",
|
||||||
"ButtonClearFilter": "Ачысціць фільтр",
|
"ButtonClearFilter": "Ачысціць фільтр",
|
||||||
|
"ButtonClose": "Закрыць",
|
||||||
"ButtonCloseFeed": "Закрыць стужку",
|
"ButtonCloseFeed": "Закрыць стужку",
|
||||||
"ButtonCloseSession": "Закрыць адкрыты сеанс",
|
"ButtonCloseSession": "Закрыць адкрыты сеанс",
|
||||||
"ButtonCollections": "Калекцыі",
|
"ButtonCollections": "Калекцыі",
|
||||||
@ -69,7 +71,7 @@
|
|||||||
"ButtonQueueAddItem": "Дадаць у чаргу",
|
"ButtonQueueAddItem": "Дадаць у чаргу",
|
||||||
"ButtonQueueRemoveItem": "Выдаліць з чаргі",
|
"ButtonQueueRemoveItem": "Выдаліць з чаргі",
|
||||||
"ButtonQuickEmbed": "Хуткае ўбудаванне",
|
"ButtonQuickEmbed": "Хуткае ўбудаванне",
|
||||||
"ButtonQuickEmbedMetadata": "Хуткае ўбудаванне метаданых",
|
"ButtonQuickEmbedMetadata": "Хуткае ўбудаванне метададзеных",
|
||||||
"ButtonQuickMatch": "Хуткі пошук",
|
"ButtonQuickMatch": "Хуткі пошук",
|
||||||
"ButtonReScan": "Паўторнае сканаванне",
|
"ButtonReScan": "Паўторнае сканаванне",
|
||||||
"ButtonRead": "Чытаць",
|
"ButtonRead": "Чытаць",
|
||||||
@ -98,8 +100,9 @@
|
|||||||
"ButtonSetChaptersFromTracks": "Усталяваць раздзелы з трэкаў",
|
"ButtonSetChaptersFromTracks": "Усталяваць раздзелы з трэкаў",
|
||||||
"ButtonShare": "Падзяліцца",
|
"ButtonShare": "Падзяліцца",
|
||||||
"ButtonShiftTimes": "Карэкцыя часу",
|
"ButtonShiftTimes": "Карэкцыя часу",
|
||||||
|
"ButtonShow": "Паказаць",
|
||||||
"ButtonStartM4BEncode": "Пачаць кадзіраванне ў M4B",
|
"ButtonStartM4BEncode": "Пачаць кадзіраванне ў M4B",
|
||||||
"ButtonStartMetadataEmbed": "Пачаць убудаванне метаданых",
|
"ButtonStartMetadataEmbed": "Пачаць убудаванне метададзеных",
|
||||||
"ButtonStats": "Статыстыка",
|
"ButtonStats": "Статыстыка",
|
||||||
"ButtonSubmit": "Адправіць",
|
"ButtonSubmit": "Адправіць",
|
||||||
"ButtonTest": "Тэст",
|
"ButtonTest": "Тэст",
|
||||||
@ -116,8 +119,9 @@
|
|||||||
"ErrorUploadFetchMetadataNoResults": "Не ўдалося атрымаць метададзеныя – паспрабуйце абнавіць назву і/або аўтара",
|
"ErrorUploadFetchMetadataNoResults": "Не ўдалося атрымаць метададзеныя – паспрабуйце абнавіць назву і/або аўтара",
|
||||||
"ErrorUploadLacksTitle": "Павінна быць назва",
|
"ErrorUploadLacksTitle": "Павінна быць назва",
|
||||||
"HeaderAccount": "Уліковы запіс",
|
"HeaderAccount": "Уліковы запіс",
|
||||||
"HeaderAddCustomMetadataProvider": "Дадаць карыстальніцкага пастаўшчыка метаданных",
|
"HeaderAddCustomMetadataProvider": "Дадаць карыстальніцкага пастаўшчыка метададзенных",
|
||||||
"HeaderAdvanced": "Дадаткова",
|
"HeaderAdvanced": "Дадаткова",
|
||||||
|
"HeaderApiKeys": "API-ключы",
|
||||||
"HeaderAppriseNotificationSettings": "Налады апавяшчэнняў Apprise",
|
"HeaderAppriseNotificationSettings": "Налады апавяшчэнняў Apprise",
|
||||||
"HeaderAudioTracks": "Аўдыядарожкі",
|
"HeaderAudioTracks": "Аўдыядарожкі",
|
||||||
"HeaderAudiobookTools": "Сродкі кіравання файламі аўдыякніг",
|
"HeaderAudiobookTools": "Сродкі кіравання файламі аўдыякніг",
|
||||||
@ -157,9 +161,11 @@
|
|||||||
"HeaderManageGenres": "Кіраванне жанрамі",
|
"HeaderManageGenres": "Кіраванне жанрамі",
|
||||||
"HeaderManageTags": "Кіраванне тэгамі",
|
"HeaderManageTags": "Кіраванне тэгамі",
|
||||||
"HeaderMapDetails": "Падрабязнасці адлюстравання",
|
"HeaderMapDetails": "Падрабязнасці адлюстравання",
|
||||||
|
"HeaderMatch": "Супадзенне",
|
||||||
"HeaderMetadataOrderOfPrecedence": "Парадак прыярытэтнасці метададзеных",
|
"HeaderMetadataOrderOfPrecedence": "Парадак прыярытэтнасці метададзеных",
|
||||||
"HeaderMetadataToEmbed": "Метададзеныя для ўбудавання",
|
"HeaderMetadataToEmbed": "Метададзеныя для ўбудавання",
|
||||||
"HeaderNewAccount": "Новы ўліковы запіс",
|
"HeaderNewAccount": "Новы ўліковы запіс",
|
||||||
|
"HeaderNewApiKey": "Новы API-ключ",
|
||||||
"HeaderNewLibrary": "Новая бібліятэка",
|
"HeaderNewLibrary": "Новая бібліятэка",
|
||||||
"HeaderNotificationCreate": "Стварыць апавяшчэнне",
|
"HeaderNotificationCreate": "Стварыць апавяшчэнне",
|
||||||
"HeaderNotificationUpdate": "Абнавіць апавяшчэнне",
|
"HeaderNotificationUpdate": "Абнавіць апавяшчэнне",
|
||||||
@ -175,9 +181,10 @@
|
|||||||
"HeaderPlaylist": "Спіс прайгравання",
|
"HeaderPlaylist": "Спіс прайгравання",
|
||||||
"HeaderPlaylistItems": "Элементы спіса прайгравання",
|
"HeaderPlaylistItems": "Элементы спіса прайгравання",
|
||||||
"HeaderPodcastsToAdd": "Падкасты для дадання",
|
"HeaderPodcastsToAdd": "Падкасты для дадання",
|
||||||
|
"HeaderPresets": "Прадустаноўкі",
|
||||||
"HeaderPreviewCover": "Прадпрагляд вокладкі",
|
"HeaderPreviewCover": "Прадпрагляд вокладкі",
|
||||||
"HeaderRSSFeedGeneral": "Падрабязнасці RSS",
|
"HeaderRSSFeedGeneral": "Падрабязнасці RSS",
|
||||||
"HeaderRSSFeedIsOpen": "RSS-стужка адкрыта",
|
"HeaderRSSFeedIsOpen": "RSS-стужка адкрытая",
|
||||||
"HeaderRSSFeeds": "RSS-стужкі",
|
"HeaderRSSFeeds": "RSS-стужкі",
|
||||||
"HeaderRemoveEpisode": "Выдаліць эпізод",
|
"HeaderRemoveEpisode": "Выдаліць эпізод",
|
||||||
"HeaderRemoveEpisodes": "Выдаліць {0} эпізодаў",
|
"HeaderRemoveEpisodes": "Выдаліць {0} эпізодаў",
|
||||||
@ -203,6 +210,7 @@
|
|||||||
"HeaderTableOfContents": "Змест",
|
"HeaderTableOfContents": "Змест",
|
||||||
"HeaderTools": "Інструменты",
|
"HeaderTools": "Інструменты",
|
||||||
"HeaderUpdateAccount": "Абнавіць уліковы запіс",
|
"HeaderUpdateAccount": "Абнавіць уліковы запіс",
|
||||||
|
"HeaderUpdateApiKey": "Абнавіць API-ключ",
|
||||||
"HeaderUpdateAuthor": "Абнавіць аўтара",
|
"HeaderUpdateAuthor": "Абнавіць аўтара",
|
||||||
"HeaderUpdateDetails": "Абнавіць падрабязнасці",
|
"HeaderUpdateDetails": "Абнавіць падрабязнасці",
|
||||||
"HeaderUpdateLibrary": "Абнавіць бібліятэку",
|
"HeaderUpdateLibrary": "Абнавіць бібліятэку",
|
||||||
@ -227,10 +235,15 @@
|
|||||||
"LabelAddedDate": "Дададзена {0}",
|
"LabelAddedDate": "Дададзена {0}",
|
||||||
"LabelAdminUsersOnly": "Толькі для адміністратараў",
|
"LabelAdminUsersOnly": "Толькі для адміністратараў",
|
||||||
"LabelAll": "Усе",
|
"LabelAll": "Усе",
|
||||||
|
"LabelAllEpisodesDownloaded": "Усе эпізоды спампаваныя",
|
||||||
"LabelAllUsers": "Усе карыстальнікі",
|
"LabelAllUsers": "Усе карыстальнікі",
|
||||||
"LabelAllUsersExcludingGuests": "Усе карыстальнікі, акрамя гасцей",
|
"LabelAllUsersExcludingGuests": "Усе карыстальнікі, акрамя гасцей",
|
||||||
"LabelAllUsersIncludingGuests": "Усе карыстальнікі, уключаючы гасцей",
|
"LabelAllUsersIncludingGuests": "Усе карыстальнікі, уключаючы гасцей",
|
||||||
"LabelAlreadyInYourLibrary": "Ужо ў вашай бібліятэцы",
|
"LabelAlreadyInYourLibrary": "Ужо ў вашай бібліятэцы",
|
||||||
|
"LabelApiKeyCreated": "API-ключ «{0}» паспяхова створаны.",
|
||||||
|
"LabelApiKeyCreatedDescription": "Пераканайцеся, што вы скапіявалі API-ключ зараз, бо паўторна яго ўбачыць не атрымаецца.",
|
||||||
|
"LabelApiKeyUser": "Дзейнічаць ад імя карыстальніка",
|
||||||
|
"LabelApiKeyUserDescription": "Гэты API-ключ будзе мець тыя ж правы, што і карыстальнік, ад імя якога ён дзейнічае. У журналах гэта будзе выглядаць так, быццам запыт робіць сам карыстальнік.",
|
||||||
"LabelApiToken": "Токен API",
|
"LabelApiToken": "Токен API",
|
||||||
"LabelAppend": "Дадаць",
|
"LabelAppend": "Дадаць",
|
||||||
"LabelAudioBitrate": "Бітрэйт аўдыё (напрыклад, 128к)",
|
"LabelAudioBitrate": "Бітрэйт аўдыё (напрыклад, 128к)",
|
||||||
@ -242,39 +255,106 @@
|
|||||||
"LabelAuthors": "Аўтары",
|
"LabelAuthors": "Аўтары",
|
||||||
"LabelAutoDownloadEpisodes": "Аўтаматычнае спампаванне эпізодаў",
|
"LabelAutoDownloadEpisodes": "Аўтаматычнае спампаванне эпізодаў",
|
||||||
"LabelAutoFetchMetadata": "Аўтаматычнае атрыманне метададзеных",
|
"LabelAutoFetchMetadata": "Аўтаматычнае атрыманне метададзеных",
|
||||||
|
"LabelAutoFetchMetadataHelp": "Атрыманне звестак пра назву, аўтара і серыю для падыходнага фарматавання перад загрузкай. Далей можа быць неабходна дапоўніць метададзеныя.",
|
||||||
|
"LabelAutoLaunch": "Аўтазапуск",
|
||||||
|
"LabelAutoLaunchDescription": "Аўтаматычна перанакіроўваць да пастаўшчыка аўтэнтыфікацыі пры переходзе на старонку ўваходу (ручное пераключэнне праз шлях <code>/login?autoLaunch=0</code>)",
|
||||||
|
"LabelAutoRegister": "Аўтарэгістрацыя",
|
||||||
|
"LabelAutoRegisterDescription": "Аўтаматычна ствараць новых карыстальнікаў пасля ўваходу ў сістэму",
|
||||||
|
"LabelBackToUser": "Вярнуцца да карыстальніка",
|
||||||
"LabelBackupAudioFiles": "Рэзервовае капіраванне аўдыёфайлаў",
|
"LabelBackupAudioFiles": "Рэзервовае капіраванне аўдыёфайлаў",
|
||||||
"LabelBackupLocation": "Месцазнаходжанне рэзервовых копій",
|
"LabelBackupLocation": "Месцазнаходжанне рэзервовых копій",
|
||||||
|
"LabelBackupsEnableAutomaticBackups": "Аўтаматычнае рэзервовае капіраванне",
|
||||||
|
"LabelBackupsEnableAutomaticBackupsHelp": "Рэзервовыя копіі захаваныя ў /metadata/backups",
|
||||||
|
"LabelBackupsMaxBackupSize": "Максімальны памер рэзервовай копіі (у ГБ) (0 — неабмежавана)",
|
||||||
|
"LabelBackupsMaxBackupSizeHelp": "Для таго, каб пазбегнуць няправільных налад, рэзервовыя копіі не будуць створаны, калі іх памер будзе больш за дапушчальны.",
|
||||||
|
"LabelBackupsNumberToKeep": "Колькасць захаваных рэзервовых копій",
|
||||||
"LabelBackupsNumberToKeepHelp": "Адначасова будзе выдаляцца толькі 1 рэзервовая копія, таму, калі ў вас іх больш, вам варта выдаліць іх уручную.",
|
"LabelBackupsNumberToKeepHelp": "Адначасова будзе выдаляцца толькі 1 рэзервовая копія, таму, калі ў вас іх больш, вам варта выдаліць іх уручную.",
|
||||||
|
"LabelBitrate": "Бітрэйт",
|
||||||
|
"LabelBonus": "Бонус",
|
||||||
"LabelBooks": "Кнігі",
|
"LabelBooks": "Кнігі",
|
||||||
|
"LabelButtonText": "Тэкст кнопкі",
|
||||||
|
"LabelByAuthor": "ад {0}",
|
||||||
|
"LabelChangePassword": "Змяніць пароль",
|
||||||
|
"LabelChannels": "Каналы",
|
||||||
|
"LabelChapterCount": "{0} раздзелаў",
|
||||||
|
"LabelChapterTitle": "Назва раздзела",
|
||||||
"LabelChapters": "Раздзелы",
|
"LabelChapters": "Раздзелы",
|
||||||
|
"LabelChaptersFound": "раздзелаў знойдзена",
|
||||||
|
"LabelClickForMoreInfo": "Націсніце для больш падрабязнай інфармацыі",
|
||||||
|
"LabelClickToUseCurrentValue": "Націсніце, каб выкарыстоўваць бягучае значэнне",
|
||||||
"LabelClosePlayer": "Зачыніць прайгравальнік",
|
"LabelClosePlayer": "Зачыніць прайгравальнік",
|
||||||
|
"LabelCodec": "Кодэк",
|
||||||
"LabelCollapseSeries": "Згарнуць серыі",
|
"LabelCollapseSeries": "Згарнуць серыі",
|
||||||
|
"LabelCollapseSubSeries": "Згарнуць падсерыі",
|
||||||
|
"LabelCollection": "Калекцыя",
|
||||||
|
"LabelCollections": "Калекцыі",
|
||||||
"LabelComplete": "Завершана",
|
"LabelComplete": "Завершана",
|
||||||
|
"LabelConfirmPassword": "Пацвердзіце пароль",
|
||||||
"LabelContinueListening": "Працягваць слухаць",
|
"LabelContinueListening": "Працягваць слухаць",
|
||||||
"LabelContinueReading": "Працягнуць чытанне",
|
"LabelContinueReading": "Працягнуць чытанне",
|
||||||
"LabelContinueSeries": "Працягнуць серыі",
|
"LabelContinueSeries": "Працягнуць серыі",
|
||||||
|
"LabelCover": "Вокладка",
|
||||||
|
"LabelCoverImageURL": "URL малюнка вокладкі",
|
||||||
|
"LabelCoverProvider": "Крыніца вокладак",
|
||||||
|
"LabelCreatedAt": "Дата стварэння",
|
||||||
|
"LabelCronExpression": "Запіс Cron",
|
||||||
|
"LabelCurrent": "Бягучы",
|
||||||
|
"LabelCurrently": "Бягучы:",
|
||||||
|
"LabelCustomCronExpression": "Уласны запіс Cron:",
|
||||||
"LabelDatetime": "Дата і час",
|
"LabelDatetime": "Дата і час",
|
||||||
|
"LabelDays": "Дзён",
|
||||||
|
"LabelDeleteFromFileSystemCheckbox": "Выдаліць з файлавай сістэмы (зніміце галачку, каб выдаліць толькі з базы даных)",
|
||||||
"LabelDescription": "Апісанне",
|
"LabelDescription": "Апісанне",
|
||||||
|
"LabelDeselectAll": "Скасаваць выбар усяго",
|
||||||
|
"LabelDevice": "Прылада",
|
||||||
|
"LabelDeviceInfo": "Інфармацыя пра прыладу",
|
||||||
|
"LabelDeviceIsAvailableTo": "Прылада даступная для...",
|
||||||
|
"LabelDirectory": "Дырэкторыя",
|
||||||
"LabelDiscFromFilename": "Дыск з імя файла",
|
"LabelDiscFromFilename": "Дыск з імя файла",
|
||||||
|
"LabelDiscFromMetadata": "Дыск па метададзеных",
|
||||||
"LabelDiscover": "Знайсці",
|
"LabelDiscover": "Знайсці",
|
||||||
"LabelDownload": "Спампаваць",
|
"LabelDownload": "Спампаваць",
|
||||||
"LabelDownloadNEpisodes": "Спампована {0} эпізодаў",
|
"LabelDownloadNEpisodes": "Спампована {0} эпізодаў",
|
||||||
"LabelDownloadable": "Спампоўваецца",
|
"LabelDownloadable": "Спампоўваецца",
|
||||||
"LabelDuration": "Працягласць",
|
"LabelDuration": "Працягласць",
|
||||||
|
"LabelDurationComparisonExactMatch": "(дакладнае супадзенне)",
|
||||||
|
"LabelDurationComparisonLonger": "(на {0} даўжэй)",
|
||||||
|
"LabelDurationComparisonShorter": "(на {0} карацей)",
|
||||||
|
"LabelDurationFound": "Знойдзеная працягласць:",
|
||||||
"LabelEbook": "Электронная кніга",
|
"LabelEbook": "Электронная кніга",
|
||||||
"LabelEbooks": "Электронныя кнігі",
|
"LabelEbooks": "Электронныя кнігі",
|
||||||
|
"LabelEdit": "Рэдагаваць",
|
||||||
|
"LabelEmail": "Электронная пошта",
|
||||||
|
"LabelEmailSettingsFromAddress": "Адрас адпраўніка",
|
||||||
|
"LabelEmailSettingsRejectUnauthorized": "Адхіляць неаўтарызаваныя сертыфікаты",
|
||||||
|
"LabelEmailSettingsRejectUnauthorizedHelp": "Адключэнне праверкі SSL-сертыфіката можа зрабіць ваша злучэнне ўразлівым перад пагрозамі бяспекі, такімі як атакі «чалавек пасярэдзіне». Адключайце гэтую опцыю толькі калі цалкам разумееце наступствы і ўпэўнены ў надзейнасці паштовага сервера.",
|
||||||
|
"LabelEmailSettingsSecure": "Бяспечныя",
|
||||||
|
"LabelEmailSettingsSecureHelp": "Калі ўключана, злучэнне будзе выкарыстоўваць TLS пры падключэнні да сервера. Калі выключана, TLS будзе выкарыстоўвацца толькі ў выпадку падтрымкі пашырэння STARTTLS на серверы. У большасці выпадкаў усталюйце значэнне true пры падключэнні да порта 465. Для партоў 587 або 25 не ўключайце яго. (інфармацыя з nodemailer.com/smtp/#authentication)",
|
||||||
|
"LabelEmailSettingsTestAddress": "Тэставы адрас",
|
||||||
|
"LabelEmbeddedCover": "Убудаваная вокладка",
|
||||||
"LabelEnable": "Уключыць",
|
"LabelEnable": "Уключыць",
|
||||||
"LabelEncodingBackupLocation": "Рэзервовая копія вашых арыгінальных аўдыёфайлаў будзе захавана ў:",
|
"LabelEncodingBackupLocation": "Рэзервовая копія вашых арыгінальных аўдыёфайлаў будзе захавана ў:",
|
||||||
"LabelEncodingChaptersNotEmbedded": "Раздзелы не ўбудаваны ў шматдарожкавыя аўдыякнігі.",
|
"LabelEncodingChaptersNotEmbedded": "Раздзелы не ўбудаваны ў шматдарожкавыя аўдыякнігі.",
|
||||||
|
"LabelEncodingClearItemCache": "Пераканайцеся, што перыядычна ачышчаеце кэш элементаў.",
|
||||||
"LabelEncodingFinishedM4B": "Гатовы файл M4B будзе змешчаны ў вашу тэчку з аўдыякнігамі па адрасе:",
|
"LabelEncodingFinishedM4B": "Гатовы файл M4B будзе змешчаны ў вашу тэчку з аўдыякнігамі па адрасе:",
|
||||||
"LabelEncodingInfoEmbedded": "Метаданыя будуць убудаваны ў аўдыядарожкі ўнутры вашай тэчкі з аўдыякнігамі.",
|
"LabelEncodingInfoEmbedded": "Метададзеныя будуць убудаваны ў аўдыядарожкі ўнутры вашай тэчкі з аўдыякнігамі.",
|
||||||
"LabelEncodingTimeWarning": "Кадаванне можа заняць да 30 хвілін.",
|
"LabelEncodingTimeWarning": "Кадаванне можа заняць да 30 хвілін.",
|
||||||
"LabelEnd": "Канец",
|
"LabelEnd": "Канец",
|
||||||
"LabelEndOfChapter": "Канец раздзела",
|
"LabelEndOfChapter": "Канец раздзела",
|
||||||
"LabelEpisode": "Эпізод",
|
"LabelEpisode": "Эпізод",
|
||||||
"LabelEpisodeNotLinkedToRssFeed": "Эпізод не звязаны з RSS-стужкай",
|
"LabelEpisodeNotLinkedToRssFeed": "Эпізод не звязаны з RSS-стужкай",
|
||||||
"LabelEpisodeUrlFromRssFeed": "URL эпізоду з RSS-стужкі",
|
"LabelEpisodeUrlFromRssFeed": "URL эпізоду з RSS-стужкі",
|
||||||
|
"LabelEpisodic": "Эпізадычны",
|
||||||
|
"LabelExample": "Прыклад",
|
||||||
|
"LabelExpandSeries": "Разгарнуць серыю",
|
||||||
|
"LabelExpandSubSeries": "Разгарнуць падсерыі",
|
||||||
|
"LabelExpired": "Пратэрмінаваны",
|
||||||
|
"LabelExpiresAt": "Тэрмін дзеяння заканчваецца ў",
|
||||||
|
"LabelExpiresInSeconds": "Тэрмін дзеяння заканчваецца праз (секунд)",
|
||||||
|
"LabelExpiresNever": "Ніколі",
|
||||||
|
"LabelExplicit": "Відверты",
|
||||||
"LabelFeedURL": "URL стужкі",
|
"LabelFeedURL": "URL стужкі",
|
||||||
|
"LabelFetchingMetadata": "Атрыманне метададзеных",
|
||||||
"LabelFile": "Файл",
|
"LabelFile": "Файл",
|
||||||
"LabelFileBirthtime": "Час стварэння файла",
|
"LabelFileBirthtime": "Час стварэння файла",
|
||||||
"LabelFileModified": "Час змянення файла",
|
"LabelFileModified": "Час змянення файла",
|
||||||
@ -327,6 +407,8 @@
|
|||||||
"LabelMaxEpisodesToKeepHelp": "Значэнне 0 не ўстанаўлівае максімальнага абмежавання. Пасля аўтаматычнай спампоўкі новага эпізоду будзе выдалены самы стары эпізод, калі ў вас больш за X эпізодаў. Пры кожнай новай спампоўцы будзе выдаляцца толькі 1 эпізод.",
|
"LabelMaxEpisodesToKeepHelp": "Значэнне 0 не ўстанаўлівае максімальнага абмежавання. Пасля аўтаматычнай спампоўкі новага эпізоду будзе выдалены самы стары эпізод, калі ў вас больш за X эпізодаў. Пры кожнай новай спампоўцы будзе выдаляцца толькі 1 эпізод.",
|
||||||
"LabelMediaPlayer": "Медыяпрайгравальнік",
|
"LabelMediaPlayer": "Медыяпрайгравальнік",
|
||||||
"LabelMediaType": "Тып медыя",
|
"LabelMediaType": "Тып медыя",
|
||||||
|
"LabelMetadataOrderOfPrecedenceDescription": "Крыніцы метададзеных з вышэйшым прыярытэтам будуць замяняць крыніцы з ніжэйшым прыярытэтам",
|
||||||
|
"LabelMetadataProvider": "Пастаўшчык метададзеных",
|
||||||
"LabelMissing": "Адсутнічае",
|
"LabelMissing": "Адсутнічае",
|
||||||
"LabelMore": "Больш",
|
"LabelMore": "Больш",
|
||||||
"LabelMoreInfo": "Больш інфармацыі",
|
"LabelMoreInfo": "Больш інфармацыі",
|
||||||
@ -335,6 +417,7 @@
|
|||||||
"LabelNarrators": "Чытальнікі",
|
"LabelNarrators": "Чытальнікі",
|
||||||
"LabelNewestAuthors": "Новыя аўтары",
|
"LabelNewestAuthors": "Новыя аўтары",
|
||||||
"LabelNewestEpisodes": "Новыя эпізоды",
|
"LabelNewestEpisodes": "Новыя эпізоды",
|
||||||
|
"LabelNoCustomMetadataProviders": "Няма карыстацкіх пастаўшчыкоў метададзеных",
|
||||||
"LabelNotFinished": "Не скончана",
|
"LabelNotFinished": "Не скончана",
|
||||||
"LabelNotStarted": "Не пачата",
|
"LabelNotStarted": "Не пачата",
|
||||||
"LabelNotificationsMaxFailedAttemptsHelp": "Апавяшчэнні адключаюцца пасля таго, як не ўдаецца іх адправіць гэтулькі разоў",
|
"LabelNotificationsMaxFailedAttemptsHelp": "Апавяшчэнні адключаюцца пасля таго, як не ўдаецца іх адправіць гэтулькі разоў",
|
||||||
@ -353,7 +436,7 @@
|
|||||||
"LabelPublishedDate": "Апублікавана {0}",
|
"LabelPublishedDate": "Апублікавана {0}",
|
||||||
"LabelRSSFeedCustomOwnerEmail": "Карыстальніцкая электронная пошта ўладальніка",
|
"LabelRSSFeedCustomOwnerEmail": "Карыстальніцкая электронная пошта ўладальніка",
|
||||||
"LabelRSSFeedCustomOwnerName": "Карыстальніцкае імя ўладальніка",
|
"LabelRSSFeedCustomOwnerName": "Карыстальніцкае імя ўладальніка",
|
||||||
"LabelRSSFeedOpen": "RSS-стужка адкрытая",
|
"LabelRSSFeedOpen": "RSS-стужка адкрыта",
|
||||||
"LabelRSSFeedPreventIndexing": "Прадухіліць індэксацыю",
|
"LabelRSSFeedPreventIndexing": "Прадухіліць індэксацыю",
|
||||||
"LabelRSSFeedSlug": "Ідэнтыфікатар RSS-стужкі",
|
"LabelRSSFeedSlug": "Ідэнтыфікатар RSS-стужкі",
|
||||||
"LabelRSSFeedURL": "URL RSS-стужкі",
|
"LabelRSSFeedURL": "URL RSS-стужкі",
|
||||||
@ -392,6 +475,7 @@
|
|||||||
"LabelSettingsAudiobooksOnly": "Толькі аўдыякнігі",
|
"LabelSettingsAudiobooksOnly": "Толькі аўдыякнігі",
|
||||||
"LabelSettingsAudiobooksOnlyHelp": "Уключэнне гэтай налады будзе ігнараваць файлы электронных кніг, калі толькі яны не знаходзяцца ў тэчцы з аўдыякнігамі. У такім выпадку яны будуць пазначаны як дадатковыя электронныя кнігі.",
|
"LabelSettingsAudiobooksOnlyHelp": "Уключэнне гэтай налады будзе ігнараваць файлы электронных кніг, калі толькі яны не знаходзяцца ў тэчцы з аўдыякнігамі. У такім выпадку яны будуць пазначаны як дадатковыя электронныя кнігі.",
|
||||||
"LabelSettingsBookshelfViewHelp": "Рэалістычны дызайн з драўлянымі паліцамі",
|
"LabelSettingsBookshelfViewHelp": "Рэалістычны дызайн з драўлянымі паліцамі",
|
||||||
|
"LabelSettingsEnableWatcherForLibrary": "Аўтаматычна правяраць бібліятэку на змены",
|
||||||
"LabelSettingsEnableWatcherHelp": "Адключае аўтаматычнае дадаванне/абнаўленне элементаў пры выяўленні змен у файлах. *Патрабуецца перазапуск сервера",
|
"LabelSettingsEnableWatcherHelp": "Адключае аўтаматычнае дадаванне/абнаўленне элементаў пры выяўленні змен у файлах. *Патрабуецца перазапуск сервера",
|
||||||
"LabelSettingsEpubsAllowScriptedContent": "Дазволіць скрыптавы кантэнт у EPUB",
|
"LabelSettingsEpubsAllowScriptedContent": "Дазволіць скрыптавы кантэнт у EPUB",
|
||||||
"LabelSettingsEpubsAllowScriptedContentHelp": "Дазволіць EPUB-файлам выконваць скрыпты. Рэкамендуецца пакінуць гэтую наладу выключанай, калі вы не давяраеце крыніцы EPUB-файлаў.",
|
"LabelSettingsEpubsAllowScriptedContentHelp": "Дазволіць EPUB-файлам выконваць скрыпты. Рэкамендуецца пакінуць гэтую наладу выключанай, калі вы не давяраеце крыніцы EPUB-файлаў.",
|
||||||
@ -409,6 +493,11 @@
|
|||||||
"LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "Палка \"Працягнуць серыю\" на галоўнай старонцы паказвае першую не пачатую кнігу ў серыях, дзе завершана хаця б адна кніга і няма кніг у працэсе чытання. Уключэнне гэтай налады дазволіць працягваць серыю з самай апошняй завершанай кнігі замест першай не пачатай.",
|
"LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "Палка \"Працягнуць серыю\" на галоўнай старонцы паказвае першую не пачатую кнігу ў серыях, дзе завершана хаця б адна кніга і няма кніг у працэсе чытання. Уключэнне гэтай налады дазволіць працягваць серыю з самай апошняй завершанай кнігі замест першай не пачатай.",
|
||||||
"LabelSettingsParseSubtitles": "Разабраць падзагалоўкі",
|
"LabelSettingsParseSubtitles": "Разабраць падзагалоўкі",
|
||||||
"LabelSettingsParseSubtitlesHelp": "Выдзяляць падзагаловак з назваў тэчак аўдыякніг.<br>Падзагаловак павінен быць аддзелены знакам \" - \".<br>Напрыклад, \"Назва кнігі - Падзагаловак тут\" мае падзагаловак \"Падзагаловак тут\"",
|
"LabelSettingsParseSubtitlesHelp": "Выдзяляць падзагаловак з назваў тэчак аўдыякніг.<br>Падзагаловак павінен быць аддзелены знакам \" - \".<br>Напрыклад, \"Назва кнігі - Падзагаловак тут\" мае падзагаловак \"Падзагаловак тут\"",
|
||||||
|
"LabelSettingsPreferMatchedMetadata": "Аддаваць перавагу супадаючым метададзеным",
|
||||||
|
"LabelSettingsPreferMatchedMetadataHelp": "Супадаючыя дадзеныя будуць замяняць дэталі элемента пры выкарыстанні функцыі Хуткі пошук. Па змаўчанні Хуткі пошук запаўняе толькі адсутныя дэталі.",
|
||||||
|
"LabelSettingsStoreCoversWithItemHelp": "Па змаўчанні вокладкі захоўваюцца ў /metadata/items, уключэнне гэтай опцыі забяспечыць захоўванне вокладак у тэчцы элемента вашай бібліятэкі. Захоўвацца будзе толькі адзін файл з назвай «cover»",
|
||||||
|
"LabelSettingsStoreMetadataWithItem": "Захоўваць метададзеныя разам з элементам",
|
||||||
|
"LabelSettingsStoreMetadataWithItemHelp": "Па змаўчанні метададзеныя захоўваюцца ў /metadata/items. Уключэнне гэтай опцыі забяспечыць захоўванне файлаў метададзеных у тэчках элементаў вашай бібліятэкі",
|
||||||
"LabelSettingsTimeFormat": "Фармат часу",
|
"LabelSettingsTimeFormat": "Фармат часу",
|
||||||
"LabelShareDownloadableHelp": "Дазваляе карыстальнікам, якія маюць спасылку на доступ, спампаваць ZIP-файл элемента бібліятэкі.",
|
"LabelShareDownloadableHelp": "Дазваляе карыстальнікам, якія маюць спасылку на доступ, спампаваць ZIP-файл элемента бібліятэкі.",
|
||||||
"LabelShowAll": "Паказаць усё",
|
"LabelShowAll": "Паказаць усё",
|
||||||
@ -457,11 +546,14 @@
|
|||||||
"LabelTimeRemaining": "Засталося {0}",
|
"LabelTimeRemaining": "Засталося {0}",
|
||||||
"LabelTimeToShift": "Час зрушэння ў секундах",
|
"LabelTimeToShift": "Час зрушэння ў секундах",
|
||||||
"LabelTitle": "Назва",
|
"LabelTitle": "Назва",
|
||||||
"LabelToolsSplitM4bDescription": "Стварэнне MP3 з M4B, падзеленага па раздзелах, з убудаванымі метаданымі, вокладкай і раздзеламі.",
|
"LabelToolsEmbedMetadata": "Убудаваць метададзеныя",
|
||||||
|
"LabelToolsEmbedMetadataDescription": "Убудаваць метададзеныя ў аўдыёфайлы, уключаючы вокладку і раздзелы.",
|
||||||
|
"LabelToolsMakeM4bDescription": "Стварыць аўдыёкнігу ў фармаце .M4B з убудаванымі метададзенымі, вокладкай і раздзеламі.",
|
||||||
|
"LabelToolsSplitM4bDescription": "Стварэнне MP3 з M4B, падзеленага па раздзелах, з убудаванымі метададзенымі, вокладкай і раздзеламі.",
|
||||||
"LabelTotalDuration": "Агульная працягласць",
|
"LabelTotalDuration": "Агульная працягласць",
|
||||||
"LabelTotalTimeListened": "Агульны час праслухоўвання",
|
"LabelTotalTimeListened": "Агульны час праслухоўвання",
|
||||||
"LabelTrackFromFilename": "Дарожка з імя файла",
|
"LabelTrackFromFilename": "Дарожка з імя файла",
|
||||||
"LabelTrackFromMetadata": "Дарожка з метаданых",
|
"LabelTrackFromMetadata": "Дарожка з метададзеных",
|
||||||
"LabelTracks": "Дарожкі",
|
"LabelTracks": "Дарожкі",
|
||||||
"LabelTracksMultiTrack": "Шматдарожкавы",
|
"LabelTracksMultiTrack": "Шматдарожкавы",
|
||||||
"LabelTracksNone": "Няма дарожак",
|
"LabelTracksNone": "Няма дарожак",
|
||||||
@ -510,19 +602,27 @@
|
|||||||
"MessageBackupsLocationPathEmpty": "Шлях да месцазнаходжання рэзервовых копій не можа быць пустым",
|
"MessageBackupsLocationPathEmpty": "Шлях да месцазнаходжання рэзервовых копій не можа быць пустым",
|
||||||
"MessageBatchEditPopulateMapDetailsAllHelp": "Запоўніце ўключаныя палі дадзенымі з усіх элементаў. Палі з некалькімі значэннямі будуць аб'яднаны",
|
"MessageBatchEditPopulateMapDetailsAllHelp": "Запоўніце ўключаныя палі дадзенымі з усіх элементаў. Палі з некалькімі значэннямі будуць аб'яднаны",
|
||||||
"MessageBatchEditPopulateMapDetailsItemHelp": "Запоўніце ўключаныя палі падрабязнасцей карты дадзенымі з гэтага элемента",
|
"MessageBatchEditPopulateMapDetailsItemHelp": "Запоўніце ўключаныя палі падрабязнасцей карты дадзенымі з гэтага элемента",
|
||||||
|
"MessageBatchQuickMatchDescription": "Хуткі пошук паспрабуе дадаць адсутныя вокладкі і метададзеныя для выбраных элементаў. Уключыце ніжэй выкладзеныя опцыі, каб дазволіць Хуткаму пошуку замяняць існуючыя вокладкі і/або метададзеныя.",
|
||||||
"MessageBookshelfNoRSSFeeds": "Няма адкрытых RSS-стужак",
|
"MessageBookshelfNoRSSFeeds": "Няма адкрытых RSS-стужак",
|
||||||
"MessageChapterErrorStartGteDuration": "Няправільны час пачатку: ён павінен быць меншым за працягласць аўдыякнігі",
|
"MessageChapterErrorStartGteDuration": "Няправільны час пачатку: ён павінен быць меншым за працягласць аўдыякнігі",
|
||||||
"MessageChapterErrorStartLtPrev": "Няправільны час пачатку: ён павінен быць большым або роўным часу пачатку папярэдняга раздзела",
|
"MessageChapterErrorStartLtPrev": "Няправільны час пачатку: ён павінен быць большым або роўным часу пачатку папярэдняга раздзела",
|
||||||
"MessageConfirmCloseFeed": "Вы ўпэўнены, што жадаеце закрыць гэтую стужку?",
|
"MessageConfirmCloseFeed": "Вы ўпэўнены, што жадаеце закрыць гэтую стужку?",
|
||||||
|
"MessageConfirmDeleteMetadataProvider": "Ці ўпэўненыя вы, што жадаеце выдаліць карыстацкага пастаўшчыка метададзеных «{0}»?",
|
||||||
|
"MessageConfirmEmbedMetadataInAudioFiles": "Ці ўпэўненыя вы, што жадаеце ўбудаваць метададзеныя ў {0} аўдыёфайлаў?",
|
||||||
|
"MessageConfirmPurgeCache": "Ачышчэнне кэша выдаліць увесь каталог па адрасе <code>/metadata/cache</code>. <br /><br /> Ці сапраўды вы жадаеце выдаліць каталог кэша?",
|
||||||
|
"MessageConfirmPurgeItemsCache": "Ачышчэнне кэша элементаў выдаліць увесь каталог па адрасе <code>/metadata/cache/items</code>. <br /> Вы ўпэўнены?",
|
||||||
"MessageConfirmRemoveListeningSessions": "Вы ўпэўнены, што жадаеце выдаліць {0} сеансаў праслухоўвання?",
|
"MessageConfirmRemoveListeningSessions": "Вы ўпэўнены, што жадаеце выдаліць {0} сеансаў праслухоўвання?",
|
||||||
|
"MessageConfirmRemoveMetadataFiles": "Ці ўпэўненыя вы, што жадаеце выдаліць усе файлы метададзеных{0} у тэчках элементаў вашай бібліятэкі?",
|
||||||
"MessageConfirmRemovePlaylist": "Вы ўпэўненыя, што жадаеце выдаліць свой спіс прайгравання \"{0}\"?",
|
"MessageConfirmRemovePlaylist": "Вы ўпэўненыя, што жадаеце выдаліць свой спіс прайгравання \"{0}\"?",
|
||||||
"MessageConfirmSendEbookToDevice": "Вы ўпэўнены, што хочаце адправіць {0} электронную кнігу \"{1}\" на прыладу \"{2}\"?",
|
"MessageConfirmSendEbookToDevice": "Вы ўпэўнены, што хочаце адправіць {0} электронную кнігу \"{1}\" на прыладу \"{2}\"?",
|
||||||
"MessageDownloadingEpisode": "Спампоўка эпізоду",
|
"MessageDownloadingEpisode": "Спампоўка эпізоду",
|
||||||
|
"MessageEmbedQueue": "У чарзе на ўбудаванне метададзеных (у чарзе {0})",
|
||||||
"MessageEpisodesQueuedForDownload": "{0} эпізод(аў) у чарзе для спампоўкі",
|
"MessageEpisodesQueuedForDownload": "{0} эпізод(аў) у чарзе для спампоўкі",
|
||||||
"MessageEreaderDevices": "Каб забяспечыць дастаўку электронных кніг, вам можа спатрэбіцца дадаць вышэйзгаданы адрас электроннай пошты як дазволенага адпраўніка для кожнай прылады, пералічанай ніжэй.",
|
"MessageEreaderDevices": "Каб забяспечыць дастаўку электронных кніг, вам можа спатрэбіцца дадаць вышэйзгаданы адрас электроннай пошты як дазволенага адпраўніка для кожнай прылады, пералічанай ніжэй.",
|
||||||
"MessageFeedURLWillBe": "URL стужкі будзе {0}",
|
"MessageFeedURLWillBe": "URL стужкі будзе {0}",
|
||||||
"MessageFetching": "Атрыманне...",
|
"MessageFetching": "Атрыманне...",
|
||||||
"MessageLoading": "Загрузка...",
|
"MessageLoading": "Загрузка...",
|
||||||
|
"MessageLogsDescription": "Журналы захоўваюцца ў каталогу <code>/metadata/logs</code> у фармаце JSON. Журналы памылак захоўваюцца ў файле <code>/metadata/logs/crashlogs.txt</code>.",
|
||||||
"MessageMapChapterTitles": "Супаставіць назвы раздзелаў з вашымі існуючымі раздзеламі аўдыякнігі без змянення часовых метак",
|
"MessageMapChapterTitles": "Супаставіць назвы раздзелаў з вашымі існуючымі раздзеламі аўдыякнігі без змянення часовых метак",
|
||||||
"MessageMarkAsFinished": "Пазначыць як скончана",
|
"MessageMarkAsFinished": "Пазначыць як скончана",
|
||||||
"MessageNoBookmarks": "Няма закладак",
|
"MessageNoBookmarks": "Няма закладак",
|
||||||
@ -543,11 +643,17 @@
|
|||||||
"MessagePlaylistCreateFromCollection": "Стварыць спіс прайгравання з калекцыі",
|
"MessagePlaylistCreateFromCollection": "Стварыць спіс прайгравання з калекцыі",
|
||||||
"MessagePodcastHasNoRSSFeedForMatching": "У падкаста няма URL RSS-стужкі для супадзення",
|
"MessagePodcastHasNoRSSFeedForMatching": "У падкаста няма URL RSS-стужкі для супадзення",
|
||||||
"MessagePodcastSearchField": "Увядзіце пошукавы запыт або URL RSS-стужкі",
|
"MessagePodcastSearchField": "Увядзіце пошукавы запыт або URL RSS-стужкі",
|
||||||
|
"MessageQuickMatchDescription": "Запоўніць пустыя дэталі элемента і вокладку першым вынікам супадзення з «{0}». Не замяняе дэталі, калі опцыя «Аддаваць перавагу супадаючым метададзеным» на серверы не ўключана.",
|
||||||
"MessageReportBugsAndContribute": "Паведамляйце пра памылкі, прапануйце новыя функцыі і ўдзельнічайце на",
|
"MessageReportBugsAndContribute": "Паведамляйце пра памылкі, прапануйце новыя функцыі і ўдзельнічайце на",
|
||||||
|
"MessageRestoreBackupWarning": "Аднаўленне рэзервовай копіі перазапіша ўсю базу даных, размешчаную ў /config, а таксама вокладкі ў /metadata/items і /metadata/authors. <br /><br /> Рэзервовыя копіі не змяняюць файлы ў вашых тэчках бібліятэкі. Калі вы ўключылі наладкі сервера для захоўвання воклак і метададзеных у тэчках бібліятэкі, гэтыя файлы не будуць захаваныя ў рэзервовых копіях і не зменяцца. <br /><br /> Усе кліенты, якія карыстаюцца вашым серверам, будуць аўтаматычна абноўлены.",
|
||||||
"MessageScheduleRunEveryWeekdayAtTime": "Выконваць кожныя {0} у {1}",
|
"MessageScheduleRunEveryWeekdayAtTime": "Выконваць кожныя {0} у {1}",
|
||||||
"MessageStartPlaybackAtTime": "Пачаць прайграванне для \"{0}\" з {1}?",
|
"MessageStartPlaybackAtTime": "Пачаць прайграванне для \"{0}\" з {1}?",
|
||||||
"MessageTaskCanceledByUser": "Задача скасавана карыстальнікам",
|
"MessageTaskCanceledByUser": "Задача скасавана карыстальнікам",
|
||||||
"MessageTaskDownloadingEpisodeDescription": "Спампоўка эпізоду \"{0}\"",
|
"MessageTaskDownloadingEpisodeDescription": "Спампоўка эпізоду \"{0}\"",
|
||||||
|
"MessageTaskEmbeddingMetadata": "Убудаванне метададзеных",
|
||||||
|
"MessageTaskEmbeddingMetadataDescription": "Убудаванне метададзеных у аўдыёкнігу «{0}»",
|
||||||
|
"MessageTaskFailedToEmbedMetadataInFile": "Не ўдалося ўбудаваць метададзеныя ў файл «{0}»",
|
||||||
|
"MessageTaskFailedToWriteMetadataFile": "Не ўдалося захаваць файл метададзеных",
|
||||||
"MessageTaskOpmlImportDescription": "Стварэнне падкастаў з {0} RSS-стужак",
|
"MessageTaskOpmlImportDescription": "Стварэнне падкастаў з {0} RSS-стужак",
|
||||||
"MessageTaskOpmlImportFeed": "Імпарт стужкі з OPML",
|
"MessageTaskOpmlImportFeed": "Імпарт стужкі з OPML",
|
||||||
"MessageTaskOpmlImportFeedDescription": "Імпартаванне RSS-стужкі \"{0}\"",
|
"MessageTaskOpmlImportFeedDescription": "Імпартаванне RSS-стужкі \"{0}\"",
|
||||||
@ -602,6 +708,8 @@
|
|||||||
"ToastPlaylistCreateSuccess": "Спіс прайгравання створаны",
|
"ToastPlaylistCreateSuccess": "Спіс прайгравання створаны",
|
||||||
"ToastPlaylistRemoveSuccess": "Спіс прайгравання выдалены",
|
"ToastPlaylistRemoveSuccess": "Спіс прайгравання выдалены",
|
||||||
"ToastPlaylistUpdateSuccess": "Спіс прайгравання абноўлены",
|
"ToastPlaylistUpdateSuccess": "Спіс прайгравання абноўлены",
|
||||||
|
"ToastPodcastCreateFailed": "Не ўдалося стварыць падкаст",
|
||||||
|
"ToastPodcastCreateSuccess": "Падкаст паспяхова створаны",
|
||||||
"ToastPodcastGetFeedFailed": "Не ўдалося атрымаць стужку падкаста",
|
"ToastPodcastGetFeedFailed": "Не ўдалося атрымаць стужку падкаста",
|
||||||
"ToastPodcastNoEpisodesInFeed": "У RSS-стужцы не знойдзена эпізодаў",
|
"ToastPodcastNoEpisodesInFeed": "У RSS-стужцы не знойдзена эпізодаў",
|
||||||
"ToastPodcastNoRssFeed": "У падкаста няма RSS-стужкі",
|
"ToastPodcastNoRssFeed": "У падкаста няма RSS-стужкі",
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"ButtonAdd": "Tilføj",
|
"ButtonAdd": "Tilføj",
|
||||||
|
"ButtonAddApiKey": "Tilføj API-nøgle",
|
||||||
"ButtonAddChapters": "Tilføj kapitler",
|
"ButtonAddChapters": "Tilføj kapitler",
|
||||||
"ButtonAddDevice": "Tilføj enhed",
|
"ButtonAddDevice": "Tilføj enhed",
|
||||||
"ButtonAddLibrary": "Tilføj Bibliotek",
|
"ButtonAddLibrary": "Tilføj Bibliotek",
|
||||||
@ -20,6 +21,7 @@
|
|||||||
"ButtonChooseAFolder": "Vælg en mappe",
|
"ButtonChooseAFolder": "Vælg en mappe",
|
||||||
"ButtonChooseFiles": "Vælg filer",
|
"ButtonChooseFiles": "Vælg filer",
|
||||||
"ButtonClearFilter": "Ryd filter",
|
"ButtonClearFilter": "Ryd filter",
|
||||||
|
"ButtonClose": "Luk",
|
||||||
"ButtonCloseFeed": "Luk feed",
|
"ButtonCloseFeed": "Luk feed",
|
||||||
"ButtonCloseSession": "Luk Åben Session",
|
"ButtonCloseSession": "Luk Åben Session",
|
||||||
"ButtonCollections": "Samlinger",
|
"ButtonCollections": "Samlinger",
|
||||||
@ -119,6 +121,7 @@
|
|||||||
"HeaderAccount": "Konto",
|
"HeaderAccount": "Konto",
|
||||||
"HeaderAddCustomMetadataProvider": "Tilføj Brugerdefineret Metadataudbyder",
|
"HeaderAddCustomMetadataProvider": "Tilføj Brugerdefineret Metadataudbyder",
|
||||||
"HeaderAdvanced": "Avanceret",
|
"HeaderAdvanced": "Avanceret",
|
||||||
|
"HeaderApiKeys": "API-nøgler",
|
||||||
"HeaderAppriseNotificationSettings": "Apprise Notifikationsindstillinger",
|
"HeaderAppriseNotificationSettings": "Apprise Notifikationsindstillinger",
|
||||||
"HeaderAudioTracks": "Lydspor",
|
"HeaderAudioTracks": "Lydspor",
|
||||||
"HeaderAudiobookTools": "Audiobog Filhåndteringsværktøjer",
|
"HeaderAudiobookTools": "Audiobog Filhåndteringsværktøjer",
|
||||||
@ -162,6 +165,7 @@
|
|||||||
"HeaderMetadataOrderOfPrecedence": "Metadata-prioritet",
|
"HeaderMetadataOrderOfPrecedence": "Metadata-prioritet",
|
||||||
"HeaderMetadataToEmbed": "Metadata til indlejring",
|
"HeaderMetadataToEmbed": "Metadata til indlejring",
|
||||||
"HeaderNewAccount": "Ny Konto",
|
"HeaderNewAccount": "Ny Konto",
|
||||||
|
"HeaderNewApiKey": "Ny API-nøgle",
|
||||||
"HeaderNewLibrary": "Nyt Bibliotek",
|
"HeaderNewLibrary": "Nyt Bibliotek",
|
||||||
"HeaderNotificationCreate": "Opret Notifikation",
|
"HeaderNotificationCreate": "Opret Notifikation",
|
||||||
"HeaderNotificationUpdate": "Updater Notifikation",
|
"HeaderNotificationUpdate": "Updater Notifikation",
|
||||||
@ -206,6 +210,7 @@
|
|||||||
"HeaderTableOfContents": "Indholdsfortegnelse",
|
"HeaderTableOfContents": "Indholdsfortegnelse",
|
||||||
"HeaderTools": "Værktøjer",
|
"HeaderTools": "Værktøjer",
|
||||||
"HeaderUpdateAccount": "Opdater Konto",
|
"HeaderUpdateAccount": "Opdater Konto",
|
||||||
|
"HeaderUpdateApiKey": "Opdater API-nøgle",
|
||||||
"HeaderUpdateAuthor": "Opdater Forfatter",
|
"HeaderUpdateAuthor": "Opdater Forfatter",
|
||||||
"HeaderUpdateDetails": "Opdater Detaljer",
|
"HeaderUpdateDetails": "Opdater Detaljer",
|
||||||
"HeaderUpdateLibrary": "Opdater Bibliotek",
|
"HeaderUpdateLibrary": "Opdater Bibliotek",
|
||||||
@ -235,6 +240,10 @@
|
|||||||
"LabelAllUsersExcludingGuests": "Alle bruger eksklusiv gæster",
|
"LabelAllUsersExcludingGuests": "Alle bruger eksklusiv gæster",
|
||||||
"LabelAllUsersIncludingGuests": "Alle bruger inklusiv gæster",
|
"LabelAllUsersIncludingGuests": "Alle bruger inklusiv gæster",
|
||||||
"LabelAlreadyInYourLibrary": "Allerede i dit bibliotek",
|
"LabelAlreadyInYourLibrary": "Allerede i dit bibliotek",
|
||||||
|
"LabelApiKeyCreated": "API-nøgle\"{0}\" oprettet succesfuldt.",
|
||||||
|
"LabelApiKeyCreatedDescription": "Sørg for at kopiere API-nøglen nu, da du ikke vil kunne se den igen.",
|
||||||
|
"LabelApiKeyUser": "Ret på vegne af brugeren",
|
||||||
|
"LabelApiKeyUserDescription": "Denne API-nøgle vil have de samme tilladelser som den bruger, den handler på vegne af. Dette vil fremgå på samme måde i logfiler, som hvis brugeren foretog anmodningen.",
|
||||||
"LabelApiToken": "API Token",
|
"LabelApiToken": "API Token",
|
||||||
"LabelAppend": "Tilføj",
|
"LabelAppend": "Tilføj",
|
||||||
"LabelAudioBitrate": "Lydbitrate (f.eks. 128k)",
|
"LabelAudioBitrate": "Lydbitrate (f.eks. 128k)",
|
||||||
@ -287,7 +296,7 @@
|
|||||||
"LabelCover": "Omslag",
|
"LabelCover": "Omslag",
|
||||||
"LabelCoverImageURL": "Omslagsbillede URL",
|
"LabelCoverImageURL": "Omslagsbillede URL",
|
||||||
"LabelCoverProvider": "Cover billede udbyder",
|
"LabelCoverProvider": "Cover billede udbyder",
|
||||||
"LabelCreatedAt": "Oprettet Kl.",
|
"LabelCreatedAt": "Oprettet d.",
|
||||||
"LabelCronExpression": "Cron Udtryk",
|
"LabelCronExpression": "Cron Udtryk",
|
||||||
"LabelCurrent": "Aktuel",
|
"LabelCurrent": "Aktuel",
|
||||||
"LabelCurrently": "Aktuelt:",
|
"LabelCurrently": "Aktuelt:",
|
||||||
@ -346,6 +355,10 @@
|
|||||||
"LabelExample": "Eksempel",
|
"LabelExample": "Eksempel",
|
||||||
"LabelExpandSeries": "Udfold serie",
|
"LabelExpandSeries": "Udfold serie",
|
||||||
"LabelExpandSubSeries": "Udfold underserie",
|
"LabelExpandSubSeries": "Udfold underserie",
|
||||||
|
"LabelExpired": "Udløbet",
|
||||||
|
"LabelExpiresAt": "Udløbsdato",
|
||||||
|
"LabelExpiresInSeconds": "Udløber om (seconds)",
|
||||||
|
"LabelExpiresNever": "Aldrig",
|
||||||
"LabelExplicit": "Eksplisit",
|
"LabelExplicit": "Eksplisit",
|
||||||
"LabelExplicitChecked": "Eksplicit (markeret)",
|
"LabelExplicitChecked": "Eksplicit (markeret)",
|
||||||
"LabelExplicitUnchecked": "Ikke eksplicit (ikke markeret)",
|
"LabelExplicitUnchecked": "Ikke eksplicit (ikke markeret)",
|
||||||
@ -455,6 +468,7 @@
|
|||||||
"LabelNewestEpisodes": "Nyeste episoder",
|
"LabelNewestEpisodes": "Nyeste episoder",
|
||||||
"LabelNextBackupDate": "Næste sikkerhedskopi dato",
|
"LabelNextBackupDate": "Næste sikkerhedskopi dato",
|
||||||
"LabelNextScheduledRun": "Næste planlagte kørsel",
|
"LabelNextScheduledRun": "Næste planlagte kørsel",
|
||||||
|
"LabelNoApiKeys": "Ingen API-nøgler",
|
||||||
"LabelNoCustomMetadataProviders": "Ingen brugerdefinerede metadata udbydere",
|
"LabelNoCustomMetadataProviders": "Ingen brugerdefinerede metadata udbydere",
|
||||||
"LabelNoEpisodesSelected": "Ingen episoder valgt",
|
"LabelNoEpisodesSelected": "Ingen episoder valgt",
|
||||||
"LabelNotFinished": "Ikke færdig",
|
"LabelNotFinished": "Ikke færdig",
|
||||||
@ -544,6 +558,7 @@
|
|||||||
"LabelSelectAll": "Vælg alle",
|
"LabelSelectAll": "Vælg alle",
|
||||||
"LabelSelectAllEpisodes": "Vælg alle episoder",
|
"LabelSelectAllEpisodes": "Vælg alle episoder",
|
||||||
"LabelSelectEpisodesShowing": "Vælg {0} episoder vist",
|
"LabelSelectEpisodesShowing": "Vælg {0} episoder vist",
|
||||||
|
"LabelSelectUser": "Vælg bruger",
|
||||||
"LabelSelectUsers": "Valgte brugere",
|
"LabelSelectUsers": "Valgte brugere",
|
||||||
"LabelSendEbookToDevice": "Send e-bog til...",
|
"LabelSendEbookToDevice": "Send e-bog til...",
|
||||||
"LabelSequence": "Sekvens",
|
"LabelSequence": "Sekvens",
|
||||||
@ -577,14 +592,14 @@
|
|||||||
"LabelSettingsLibraryMarkAsFinishedPercentComplete": "Procent gennemført er større end",
|
"LabelSettingsLibraryMarkAsFinishedPercentComplete": "Procent gennemført er større end",
|
||||||
"LabelSettingsLibraryMarkAsFinishedTimeRemaining": "Tid tilbage er mindre end (sekunder)",
|
"LabelSettingsLibraryMarkAsFinishedTimeRemaining": "Tid tilbage er mindre end (sekunder)",
|
||||||
"LabelSettingsLibraryMarkAsFinishedWhen": "Marker medie indhold som færdigt når",
|
"LabelSettingsLibraryMarkAsFinishedWhen": "Marker medie indhold som færdigt når",
|
||||||
"LabelSettingsOnlyShowLaterBooksInContinueSeries": "Spring til tidligere bøger i Fortsæt serie",
|
"LabelSettingsOnlyShowLaterBooksInContinueSeries": "Spring tidligere bøger i Fortsæt serie over",
|
||||||
"LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "Fortsæt Serien siden hylde viser de første bøger som ikke er startet i serier med mindst en bog som ikke er startet og ingen bøger i gang. Aktivering af denne indstilling vil fortsætte serien fra den sidst gennemførte bog modsat den først ikke startede bog.",
|
"LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "Fortsæt Serien siden viser den første bog som ikke er startet i serier med mindst en bog som ikke er startet og hvor ingen bøger i gang. Aktivering af denne indstilling vil fortsætte serien fra den sidst gennemførte bog i stedet for fra den første ikke startede bog.",
|
||||||
"LabelSettingsParseSubtitles": "Fortolk undertitler",
|
"LabelSettingsParseSubtitles": "Fortolk undertitler",
|
||||||
"LabelSettingsParseSubtitlesHelp": "Udtræk undertekster fra lydbogsmappenavne.<br>Undertitler skal adskilles af \" - \"<br>f.eks. \"Bogtitel - En undertitel her\" har undertitlen \"En undertitel her\"",
|
"LabelSettingsParseSubtitlesHelp": "Udtræk undertekster fra lydbogsmappenavne.<br>Undertitler skal adskilles af \" - \"<br>f.eks. \"Bogtitel - En undertitel her\" har undertitlen \"En undertitel her\"",
|
||||||
"LabelSettingsPreferMatchedMetadata": "Foretræk matchede metadata",
|
"LabelSettingsPreferMatchedMetadata": "Foretræk matchede metadata",
|
||||||
"LabelSettingsPreferMatchedMetadataHelp": "Matchede data vil tilsidesætte elementdetaljer ved brug af Hurtig Match. Som standard udfylder Hurtig Match kun manglende detaljer.",
|
"LabelSettingsPreferMatchedMetadataHelp": "Matchede data vil tilsidesætte elementdetaljer ved brug af Hurtig Match. Som standard udfylder Hurtig Match kun manglende detaljer.",
|
||||||
"LabelSettingsSkipMatchingBooksWithASIN": "Spring over matchende bøger, der allerede har en ASIN",
|
"LabelSettingsSkipMatchingBooksWithASIN": "Ignorer matchende bøger, der allerede har en ASIN",
|
||||||
"LabelSettingsSkipMatchingBooksWithISBN": "Spring matchende bøger over, som allerede har et ISBN-nummer",
|
"LabelSettingsSkipMatchingBooksWithISBN": "Ignorer matchende bøger, som allerede har et ISBN-nummer",
|
||||||
"LabelSettingsSortingIgnorePrefixes": "Ignorer præfikser ved sortering",
|
"LabelSettingsSortingIgnorePrefixes": "Ignorer præfikser ved sortering",
|
||||||
"LabelSettingsSortingIgnorePrefixesHelp": "f.eks. for præfikset \"the\" vil bogtitlen \"The Book Title\" blive sorteret som \"Book Title, The\"",
|
"LabelSettingsSortingIgnorePrefixesHelp": "f.eks. for præfikset \"the\" vil bogtitlen \"The Book Title\" blive sorteret som \"Book Title, The\"",
|
||||||
"LabelSettingsSquareBookCovers": "Brug kvadratiske bogomslag",
|
"LabelSettingsSquareBookCovers": "Brug kvadratiske bogomslag",
|
||||||
@ -708,7 +723,9 @@
|
|||||||
"MessageAddToPlayerQueue": "Tilføj til afspilningskø",
|
"MessageAddToPlayerQueue": "Tilføj til afspilningskø",
|
||||||
"MessageAppriseDescription": "For at bruge denne funktion skal du have en instans af <a href=\"https://github.com/caronc/apprise-api\" target=\"_blank\">Apprise API</a> kørende eller en API, der håndterer de samme anmodninger. <br /> Apprise API-webadressen skal være den fulde URL-sti for at sende underretningen, f.eks. hvis din API-instans er tilgængelig på <code>http://192.168.1.1:8337</code>, så skal du bruge <code>http://192.168.1.1:8337/notify</code>.",
|
"MessageAppriseDescription": "For at bruge denne funktion skal du have en instans af <a href=\"https://github.com/caronc/apprise-api\" target=\"_blank\">Apprise API</a> kørende eller en API, der håndterer de samme anmodninger. <br /> Apprise API-webadressen skal være den fulde URL-sti for at sende underretningen, f.eks. hvis din API-instans er tilgængelig på <code>http://192.168.1.1:8337</code>, så skal du bruge <code>http://192.168.1.1:8337/notify</code>.",
|
||||||
"MessageAsinCheck": "Sikr dig at du bruger ASIN fra den korrekte Audible region, ikke Amazon.",
|
"MessageAsinCheck": "Sikr dig at du bruger ASIN fra den korrekte Audible region, ikke Amazon.",
|
||||||
|
"MessageAuthenticationLegacyTokenWarning": "Ældre API tokens vil blive fjernet i fremtiden. Brug <a href=\"/config/api-keys\">API-nøgler</a> i stedet.",
|
||||||
"MessageAuthenticationOIDCChangesRestart": "Genstart sin server efter du har gemt for at bekræfte OIDC ændringer.",
|
"MessageAuthenticationOIDCChangesRestart": "Genstart sin server efter du har gemt for at bekræfte OIDC ændringer.",
|
||||||
|
"MessageAuthenticationSecurityMessage": "Autentificeringen er blevet forbedret af sikkerhedsmæssige årsager. Alle brugere skal logge ind igen.",
|
||||||
"MessageBackupsDescription": "Backups inkluderer brugere, brugerfremskridt, biblioteksvareoplysninger, serverindstillinger og billeder gemt i <code>/metadata/items</code> og <code>/metadata/authors</code>. Backups inkluderer <strong>ikke</strong> nogen filer gemt i dine biblioteksmapper.",
|
"MessageBackupsDescription": "Backups inkluderer brugere, brugerfremskridt, biblioteksvareoplysninger, serverindstillinger og billeder gemt i <code>/metadata/items</code> og <code>/metadata/authors</code>. Backups inkluderer <strong>ikke</strong> nogen filer gemt i dine biblioteksmapper.",
|
||||||
"MessageBackupsLocationEditNote": "Note: Opdatering af backup sti vil ikke fjerne eller modificere eksisterende backups",
|
"MessageBackupsLocationEditNote": "Note: Opdatering af backup sti vil ikke fjerne eller modificere eksisterende backups",
|
||||||
"MessageBackupsLocationNoEditNote": "Note: Backup sti er sat igennem miljøvariabel og kan ikke ændres her.",
|
"MessageBackupsLocationNoEditNote": "Note: Backup sti er sat igennem miljøvariabel og kan ikke ændres her.",
|
||||||
@ -730,6 +747,7 @@
|
|||||||
"MessageChaptersNotFound": "Kapitler ikke fundet",
|
"MessageChaptersNotFound": "Kapitler ikke fundet",
|
||||||
"MessageCheckingCron": "Tjekker cron...",
|
"MessageCheckingCron": "Tjekker cron...",
|
||||||
"MessageConfirmCloseFeed": "Er du sikker på, at du vil lukke dette feed?",
|
"MessageConfirmCloseFeed": "Er du sikker på, at du vil lukke dette feed?",
|
||||||
|
"MessageConfirmDeleteApiKey": "Er du sikker på at du vil slette API-nøglen \"{0}\"?",
|
||||||
"MessageConfirmDeleteBackup": "Er du sikker på, at du vil slette backup for {0}?",
|
"MessageConfirmDeleteBackup": "Er du sikker på, at du vil slette backup for {0}?",
|
||||||
"MessageConfirmDeleteDevice": "Er du sikker på at du vil fjerne elæser enhed \"{0}\"?",
|
"MessageConfirmDeleteDevice": "Er du sikker på at du vil fjerne elæser enhed \"{0}\"?",
|
||||||
"MessageConfirmDeleteFile": "Dette vil slette filen fra dit filsystem. Er du sikker?",
|
"MessageConfirmDeleteFile": "Dette vil slette filen fra dit filsystem. Er du sikker?",
|
||||||
@ -998,6 +1016,7 @@
|
|||||||
"ToastEpisodeDownloadQueueClearSuccess": "Afsnit download kø renset",
|
"ToastEpisodeDownloadQueueClearSuccess": "Afsnit download kø renset",
|
||||||
"ToastEpisodeUpdateSuccess": "{0} afsnit opdateret",
|
"ToastEpisodeUpdateSuccess": "{0} afsnit opdateret",
|
||||||
"ToastErrorCannotShare": "Kan ikke dele på denne enhed",
|
"ToastErrorCannotShare": "Kan ikke dele på denne enhed",
|
||||||
|
"ToastFailedToCreate": "Oprettelsen mislykkedes",
|
||||||
"ToastFailedToLoadData": "Fejlede at indlæse data",
|
"ToastFailedToLoadData": "Fejlede at indlæse data",
|
||||||
"ToastFailedToMatch": "Fejlet match",
|
"ToastFailedToMatch": "Fejlet match",
|
||||||
"ToastFailedToShare": "Fejlet deling",
|
"ToastFailedToShare": "Fejlet deling",
|
||||||
@ -1014,11 +1033,11 @@
|
|||||||
"ToastItemMarkedAsNotFinishedFailed": "Mislykkedes markering som ikke afsluttet",
|
"ToastItemMarkedAsNotFinishedFailed": "Mislykkedes markering som ikke afsluttet",
|
||||||
"ToastItemMarkedAsNotFinishedSuccess": "Vare markeret som ikke afsluttet",
|
"ToastItemMarkedAsNotFinishedSuccess": "Vare markeret som ikke afsluttet",
|
||||||
"ToastItemUpdateSuccess": "Genstand opdateret",
|
"ToastItemUpdateSuccess": "Genstand opdateret",
|
||||||
"ToastLibraryCreateFailed": "Mislykkedes oprettelse af bibliotek",
|
"ToastLibraryCreateFailed": "Oprettelse af bibliotek mislykkedes",
|
||||||
"ToastLibraryCreateSuccess": "Bibliotek \"{0}\" oprettet",
|
"ToastLibraryCreateSuccess": "Bibliotek \"{0}\" oprettet",
|
||||||
"ToastLibraryDeleteFailed": "Mislykkedes sletning af bibliotek",
|
"ToastLibraryDeleteFailed": "Sletning af bibliotek mislykkedes",
|
||||||
"ToastLibraryDeleteSuccess": "Bibliotek slettet",
|
"ToastLibraryDeleteSuccess": "Bibliotek slettet",
|
||||||
"ToastLibraryScanFailedToStart": "Mislykkedes start af skanning",
|
"ToastLibraryScanFailedToStart": "Start af skanning mislykkedes",
|
||||||
"ToastLibraryScanStarted": "Biblioteksskanning startet",
|
"ToastLibraryScanStarted": "Biblioteksskanning startet",
|
||||||
"ToastLibraryUpdateSuccess": "Bibliotek \"{0}\" opdateret",
|
"ToastLibraryUpdateSuccess": "Bibliotek \"{0}\" opdateret",
|
||||||
"ToastMatchAllAuthorsFailed": "Fejlede at matche alle forfattere",
|
"ToastMatchAllAuthorsFailed": "Fejlede at matche alle forfattere",
|
||||||
@ -1097,7 +1116,7 @@
|
|||||||
"ToastUnlinkOpenIdFailed": "Fejlede i af afkoble bruger fra OpenID",
|
"ToastUnlinkOpenIdFailed": "Fejlede i af afkoble bruger fra OpenID",
|
||||||
"ToastUnlinkOpenIdSuccess": "Bruger afkoblet fra OpenID",
|
"ToastUnlinkOpenIdSuccess": "Bruger afkoblet fra OpenID",
|
||||||
"ToastUploaderFilepathExistsError": "Filsti \"{0}\" findes allerede på serveren",
|
"ToastUploaderFilepathExistsError": "Filsti \"{0}\" findes allerede på serveren",
|
||||||
"ToastUploaderItemExistsInSubdirectoryError": "Genstand \"{0}\" benytter en undermappe af upload stien",
|
"ToastUploaderItemExistsInSubdirectoryError": "Genstand \"{0}\" benytter en undermappe af upload stien.",
|
||||||
"ToastUserDeleteFailed": "Mislykkedes sletning af bruger",
|
"ToastUserDeleteFailed": "Mislykkedes sletning af bruger",
|
||||||
"ToastUserDeleteSuccess": "Bruger slettet",
|
"ToastUserDeleteSuccess": "Bruger slettet",
|
||||||
"ToastUserPasswordChangeSuccess": "Password ændret",
|
"ToastUserPasswordChangeSuccess": "Password ændret",
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
"ButtonBatchEditPopulateMapDetails": "Kartendetails auffüllen",
|
"ButtonBatchEditPopulateMapDetails": "Kartendetails auffüllen",
|
||||||
"ButtonBrowseForFolder": "Ordnersuche",
|
"ButtonBrowseForFolder": "Ordnersuche",
|
||||||
"ButtonCancel": "Abbrechen",
|
"ButtonCancel": "Abbrechen",
|
||||||
"ButtonCancelEncode": "Codierung abbrechen",
|
"ButtonCancelEncode": "Konvertierung abbrechen",
|
||||||
"ButtonChangeRootPassword": "Hauptpasswort ändern",
|
"ButtonChangeRootPassword": "Hauptpasswort ändern",
|
||||||
"ButtonCheckAndDownloadNewEpisodes": "Überprüfe & lade neue Episoden herunter",
|
"ButtonCheckAndDownloadNewEpisodes": "Überprüfe & lade neue Episoden herunter",
|
||||||
"ButtonChooseAFolder": "Wähle einen Ordner",
|
"ButtonChooseAFolder": "Wähle einen Ordner",
|
||||||
@ -438,7 +438,7 @@
|
|||||||
"LabelLogLevelWarn": "Warnungen",
|
"LabelLogLevelWarn": "Warnungen",
|
||||||
"LabelLookForNewEpisodesAfterDate": "Suche nach neuen Episoden nach diesem Datum",
|
"LabelLookForNewEpisodesAfterDate": "Suche nach neuen Episoden nach diesem Datum",
|
||||||
"LabelLowestPriority": "Niedrigste Priorität",
|
"LabelLowestPriority": "Niedrigste Priorität",
|
||||||
"LabelMatchConfidence": "Zuversicht",
|
"LabelMatchConfidence": "Vertrauenswert",
|
||||||
"LabelMatchExistingUsersBy": "Zuordnen existierender Benutzer mit",
|
"LabelMatchExistingUsersBy": "Zuordnen existierender Benutzer mit",
|
||||||
"LabelMatchExistingUsersByDescription": "Wird zum Verbinden vorhandener Benutzer verwendet. Sobald die Verbindung hergestellt ist, wird den Benutzern eine eindeutige ID vom SSO-Anbieter zugeordnet",
|
"LabelMatchExistingUsersByDescription": "Wird zum Verbinden vorhandener Benutzer verwendet. Sobald die Verbindung hergestellt ist, wird den Benutzern eine eindeutige ID vom SSO-Anbieter zugeordnet",
|
||||||
"LabelMaxEpisodesToDownload": "Max. Anzahl an Episoden zum Herunterladen, 0 für unbegrenzte Episoden.",
|
"LabelMaxEpisodesToDownload": "Max. Anzahl an Episoden zum Herunterladen, 0 für unbegrenzte Episoden.",
|
||||||
@ -447,7 +447,7 @@
|
|||||||
"LabelMaxEpisodesToKeepHelp": "0 setzt keine Begrenzung. Wenn eine neue Episode automatisch heruntergeladen wird, wird die älteste Episode gelöscht, wenn du mehr als X Episoden gespeichert hast. Es wird nur eine Episode pro neuem Download gelöscht.",
|
"LabelMaxEpisodesToKeepHelp": "0 setzt keine Begrenzung. Wenn eine neue Episode automatisch heruntergeladen wird, wird die älteste Episode gelöscht, wenn du mehr als X Episoden gespeichert hast. Es wird nur eine Episode pro neuem Download gelöscht.",
|
||||||
"LabelMediaPlayer": "Mediaplayer",
|
"LabelMediaPlayer": "Mediaplayer",
|
||||||
"LabelMediaType": "Medientyp",
|
"LabelMediaType": "Medientyp",
|
||||||
"LabelMetaTag": "Meta Schlagwort",
|
"LabelMetaTag": "Meta Tag",
|
||||||
"LabelMetaTags": "Meta Tags",
|
"LabelMetaTags": "Meta Tags",
|
||||||
"LabelMetadataOrderOfPrecedenceDescription": "Höher priorisierte Quellen für Metadaten überschreiben Metadaten aus Quellen mit niedrigerer Priorität",
|
"LabelMetadataOrderOfPrecedenceDescription": "Höher priorisierte Quellen für Metadaten überschreiben Metadaten aus Quellen mit niedrigerer Priorität",
|
||||||
"LabelMetadataProvider": "Metadatenanbieter",
|
"LabelMetadataProvider": "Metadatenanbieter",
|
||||||
@ -656,6 +656,7 @@
|
|||||||
"LabelTheme": "Farbschema",
|
"LabelTheme": "Farbschema",
|
||||||
"LabelThemeDark": "Dunkel",
|
"LabelThemeDark": "Dunkel",
|
||||||
"LabelThemeLight": "Hell",
|
"LabelThemeLight": "Hell",
|
||||||
|
"LabelThemeSepia": "Sepia",
|
||||||
"LabelTimeBase": "Basiszeit",
|
"LabelTimeBase": "Basiszeit",
|
||||||
"LabelTimeDurationXHours": "{0} Stunden",
|
"LabelTimeDurationXHours": "{0} Stunden",
|
||||||
"LabelTimeDurationXMinutes": "{0} Minuten",
|
"LabelTimeDurationXMinutes": "{0} Minuten",
|
||||||
|
@ -199,6 +199,7 @@
|
|||||||
"HeaderSettingsExperimental": "Experimental Features",
|
"HeaderSettingsExperimental": "Experimental Features",
|
||||||
"HeaderSettingsGeneral": "General",
|
"HeaderSettingsGeneral": "General",
|
||||||
"HeaderSettingsScanner": "Scanner",
|
"HeaderSettingsScanner": "Scanner",
|
||||||
|
"HeaderSettingsSecurity": "Security",
|
||||||
"HeaderSettingsWebClient": "Web Client",
|
"HeaderSettingsWebClient": "Web Client",
|
||||||
"HeaderSleepTimer": "Sleep Timer",
|
"HeaderSleepTimer": "Sleep Timer",
|
||||||
"HeaderStatsLargestItems": "Largest Items",
|
"HeaderStatsLargestItems": "Largest Items",
|
||||||
@ -293,6 +294,7 @@
|
|||||||
"LabelContinueListening": "Continue Listening",
|
"LabelContinueListening": "Continue Listening",
|
||||||
"LabelContinueReading": "Continue Reading",
|
"LabelContinueReading": "Continue Reading",
|
||||||
"LabelContinueSeries": "Continue Series",
|
"LabelContinueSeries": "Continue Series",
|
||||||
|
"LabelCorsAllowed": "Allowed CORS Origins",
|
||||||
"LabelCover": "Cover",
|
"LabelCover": "Cover",
|
||||||
"LabelCoverImageURL": "Cover Image URL",
|
"LabelCoverImageURL": "Cover Image URL",
|
||||||
"LabelCoverProvider": "Cover Provider",
|
"LabelCoverProvider": "Cover Provider",
|
||||||
@ -418,6 +420,7 @@
|
|||||||
"LabelLanguages": "Languages",
|
"LabelLanguages": "Languages",
|
||||||
"LabelLastBookAdded": "Last Book Added",
|
"LabelLastBookAdded": "Last Book Added",
|
||||||
"LabelLastBookUpdated": "Last Book Updated",
|
"LabelLastBookUpdated": "Last Book Updated",
|
||||||
|
"LabelLastProgressDate": "Last progress: {0}",
|
||||||
"LabelLastSeen": "Last Seen",
|
"LabelLastSeen": "Last Seen",
|
||||||
"LabelLastTime": "Last Time",
|
"LabelLastTime": "Last Time",
|
||||||
"LabelLastUpdate": "Last Update",
|
"LabelLastUpdate": "Last Update",
|
||||||
@ -430,6 +433,7 @@
|
|||||||
"LabelLibraryFilterSublistEmpty": "No {0}",
|
"LabelLibraryFilterSublistEmpty": "No {0}",
|
||||||
"LabelLibraryItem": "Library Item",
|
"LabelLibraryItem": "Library Item",
|
||||||
"LabelLibraryName": "Library Name",
|
"LabelLibraryName": "Library Name",
|
||||||
|
"LabelLibrarySortByProgress": "Progress Updated",
|
||||||
"LabelLimit": "Limit",
|
"LabelLimit": "Limit",
|
||||||
"LabelLineSpacing": "Line spacing",
|
"LabelLineSpacing": "Line spacing",
|
||||||
"LabelListenAgain": "Listen Again",
|
"LabelListenAgain": "Listen Again",
|
||||||
@ -656,6 +660,7 @@
|
|||||||
"LabelTheme": "Theme",
|
"LabelTheme": "Theme",
|
||||||
"LabelThemeDark": "Dark",
|
"LabelThemeDark": "Dark",
|
||||||
"LabelThemeLight": "Light",
|
"LabelThemeLight": "Light",
|
||||||
|
"LabelThemeSepia": "Sepia",
|
||||||
"LabelTimeBase": "Time Base",
|
"LabelTimeBase": "Time Base",
|
||||||
"LabelTimeDurationXHours": "{0} hours",
|
"LabelTimeDurationXHours": "{0} hours",
|
||||||
"LabelTimeDurationXMinutes": "{0} minutes",
|
"LabelTimeDurationXMinutes": "{0} minutes",
|
||||||
@ -802,6 +807,8 @@
|
|||||||
"MessageFeedURLWillBe": "Feed URL will be {0}",
|
"MessageFeedURLWillBe": "Feed URL will be {0}",
|
||||||
"MessageFetching": "Fetching...",
|
"MessageFetching": "Fetching...",
|
||||||
"MessageForceReScanDescription": "will scan all files again like a fresh scan. Audio file ID3 tags, OPF files, and text files will be scanned as new.",
|
"MessageForceReScanDescription": "will scan all files again like a fresh scan. Audio file ID3 tags, OPF files, and text files will be scanned as new.",
|
||||||
|
"MessageHeatmapListeningTimeTooltip": "<strong>{0} listening</strong> on {1}",
|
||||||
|
"MessageHeatmapNoListeningSessions": "No listening sessions on {0}",
|
||||||
"MessageImportantNotice": "Important Notice!",
|
"MessageImportantNotice": "Important Notice!",
|
||||||
"MessageInsertChapterBelow": "Insert chapter below",
|
"MessageInsertChapterBelow": "Insert chapter below",
|
||||||
"MessageInvalidAsin": "Invalid ASIN",
|
"MessageInvalidAsin": "Invalid ASIN",
|
||||||
@ -1029,6 +1036,7 @@
|
|||||||
"ToastInvalidImageUrl": "Invalid image URL",
|
"ToastInvalidImageUrl": "Invalid image URL",
|
||||||
"ToastInvalidMaxEpisodesToDownload": "Invalid max episodes to download",
|
"ToastInvalidMaxEpisodesToDownload": "Invalid max episodes to download",
|
||||||
"ToastInvalidUrl": "Invalid URL",
|
"ToastInvalidUrl": "Invalid URL",
|
||||||
|
"ToastInvalidUrls": "One or more URLs are invalid",
|
||||||
"ToastItemCoverUpdateSuccess": "Item cover updated",
|
"ToastItemCoverUpdateSuccess": "Item cover updated",
|
||||||
"ToastItemDeletedFailed": "Failed to delete item",
|
"ToastItemDeletedFailed": "Failed to delete item",
|
||||||
"ToastItemDeletedSuccess": "Deleted item",
|
"ToastItemDeletedSuccess": "Deleted item",
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"ButtonAdd": "הוסף",
|
"ButtonAdd": "הוסף",
|
||||||
|
"ButtonAddApiKey": "הוסף מפתח ממשק תכנות (API)",
|
||||||
"ButtonAddChapters": "הוסף פרקים",
|
"ButtonAddChapters": "הוסף פרקים",
|
||||||
"ButtonAddDevice": "הוסף התקן",
|
"ButtonAddDevice": "הוסף התקן",
|
||||||
"ButtonAddLibrary": "הוסף ספרייה",
|
"ButtonAddLibrary": "הוסף ספרייה",
|
||||||
@ -20,6 +21,7 @@
|
|||||||
"ButtonChooseAFolder": "בחר תיקייה",
|
"ButtonChooseAFolder": "בחר תיקייה",
|
||||||
"ButtonChooseFiles": "בחר קבצים",
|
"ButtonChooseFiles": "בחר קבצים",
|
||||||
"ButtonClearFilter": "נקה סינון",
|
"ButtonClearFilter": "נקה סינון",
|
||||||
|
"ButtonClose": "סגור",
|
||||||
"ButtonCloseFeed": "סגור ערוץ",
|
"ButtonCloseFeed": "סגור ערוץ",
|
||||||
"ButtonCloseSession": "סגור סשן פתוח",
|
"ButtonCloseSession": "סגור סשן פתוח",
|
||||||
"ButtonCollections": "אוספים",
|
"ButtonCollections": "אוספים",
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"ButtonAdd": "Hozzáadás",
|
"ButtonAdd": "Hozzáadás",
|
||||||
|
"ButtonAddApiKey": "API kulcs hozzáadása",
|
||||||
"ButtonAddChapters": "Fejezetek hozzáadása",
|
"ButtonAddChapters": "Fejezetek hozzáadása",
|
||||||
"ButtonAddDevice": "Eszköz hozzáadása",
|
"ButtonAddDevice": "Eszköz hozzáadása",
|
||||||
"ButtonAddLibrary": "Könyvtár hozzáadása",
|
"ButtonAddLibrary": "Könyvtár hozzáadása",
|
||||||
@ -20,6 +21,7 @@
|
|||||||
"ButtonChooseAFolder": "Válassz egy mappát",
|
"ButtonChooseAFolder": "Válassz egy mappát",
|
||||||
"ButtonChooseFiles": "Fájlok kiválasztása",
|
"ButtonChooseFiles": "Fájlok kiválasztása",
|
||||||
"ButtonClearFilter": "Szűrő törlése",
|
"ButtonClearFilter": "Szűrő törlése",
|
||||||
|
"ButtonClose": "Bezár",
|
||||||
"ButtonCloseFeed": "Hírcsatorna bezárása",
|
"ButtonCloseFeed": "Hírcsatorna bezárása",
|
||||||
"ButtonCloseSession": "Nyitott munkamenet bezárása",
|
"ButtonCloseSession": "Nyitott munkamenet bezárása",
|
||||||
"ButtonCollections": "Gyűjtemények",
|
"ButtonCollections": "Gyűjtemények",
|
||||||
@ -119,6 +121,7 @@
|
|||||||
"HeaderAccount": "Fiók",
|
"HeaderAccount": "Fiók",
|
||||||
"HeaderAddCustomMetadataProvider": "Egyedi metaadat szolgáltató hozzáadása",
|
"HeaderAddCustomMetadataProvider": "Egyedi metaadat szolgáltató hozzáadása",
|
||||||
"HeaderAdvanced": "Haladó",
|
"HeaderAdvanced": "Haladó",
|
||||||
|
"HeaderApiKeys": "API kulcsok",
|
||||||
"HeaderAppriseNotificationSettings": "Apprise értesítési beállítások",
|
"HeaderAppriseNotificationSettings": "Apprise értesítési beállítások",
|
||||||
"HeaderAudioTracks": "Audiósávok",
|
"HeaderAudioTracks": "Audiósávok",
|
||||||
"HeaderAudiobookTools": "Hangoskönyv fájlkezelő eszközök",
|
"HeaderAudiobookTools": "Hangoskönyv fájlkezelő eszközök",
|
||||||
@ -162,6 +165,7 @@
|
|||||||
"HeaderMetadataOrderOfPrecedence": "Metaadatok előnyben részesítési sorrendje",
|
"HeaderMetadataOrderOfPrecedence": "Metaadatok előnyben részesítési sorrendje",
|
||||||
"HeaderMetadataToEmbed": "Beágyazandó metaadatok",
|
"HeaderMetadataToEmbed": "Beágyazandó metaadatok",
|
||||||
"HeaderNewAccount": "Új fiók",
|
"HeaderNewAccount": "Új fiók",
|
||||||
|
"HeaderNewApiKey": "Új API kulcs",
|
||||||
"HeaderNewLibrary": "Új könyvtár",
|
"HeaderNewLibrary": "Új könyvtár",
|
||||||
"HeaderNotificationCreate": "Értesítés készítése",
|
"HeaderNotificationCreate": "Értesítés készítése",
|
||||||
"HeaderNotificationUpdate": "Értesítés frissítése",
|
"HeaderNotificationUpdate": "Értesítés frissítése",
|
||||||
@ -206,6 +210,7 @@
|
|||||||
"HeaderTableOfContents": "Tartalomjegyzék",
|
"HeaderTableOfContents": "Tartalomjegyzék",
|
||||||
"HeaderTools": "Eszközök",
|
"HeaderTools": "Eszközök",
|
||||||
"HeaderUpdateAccount": "Fiók frissítése",
|
"HeaderUpdateAccount": "Fiók frissítése",
|
||||||
|
"HeaderUpdateApiKey": "API kulcs frissítése",
|
||||||
"HeaderUpdateAuthor": "Szerző frissítése",
|
"HeaderUpdateAuthor": "Szerző frissítése",
|
||||||
"HeaderUpdateDetails": "Részletek frissítése",
|
"HeaderUpdateDetails": "Részletek frissítése",
|
||||||
"HeaderUpdateLibrary": "Könyvtár frissítése",
|
"HeaderUpdateLibrary": "Könyvtár frissítése",
|
||||||
@ -235,6 +240,10 @@
|
|||||||
"LabelAllUsersExcludingGuests": "Minden felhasználó, vendégek kivételével",
|
"LabelAllUsersExcludingGuests": "Minden felhasználó, vendégek kivételével",
|
||||||
"LabelAllUsersIncludingGuests": "Minden felhasználó, beleértve a vendégeket is",
|
"LabelAllUsersIncludingGuests": "Minden felhasználó, beleértve a vendégeket is",
|
||||||
"LabelAlreadyInYourLibrary": "Már a könyvtárában van",
|
"LabelAlreadyInYourLibrary": "Már a könyvtárában van",
|
||||||
|
"LabelApiKeyCreated": "\"{0}\" API kulcs sikeresen létrehozva.",
|
||||||
|
"LabelApiKeyCreatedDescription": "Feltétlenül másolja le az API kulcsot, mert később már nem fogja látni.",
|
||||||
|
"LabelApiKeyUser": "Felhasználó nevében eljárva",
|
||||||
|
"LabelApiKeyUserDescription": "Ez az API-kulcs ugyanazokkal a jogosultságokkal rendelkezik, mint az a felhasználó, akinek a nevében működik. A naplófájlokban ez úgy jelenik meg, mintha a felhasználó maga küldte volna a kérést.",
|
||||||
"LabelApiToken": "API Token",
|
"LabelApiToken": "API Token",
|
||||||
"LabelAppend": "Hozzáfűzés",
|
"LabelAppend": "Hozzáfűzés",
|
||||||
"LabelAudioBitrate": "Audió bitráta (pl.128k)",
|
"LabelAudioBitrate": "Audió bitráta (pl.128k)",
|
||||||
@ -264,7 +273,7 @@
|
|||||||
"LabelBonus": "Bónusz",
|
"LabelBonus": "Bónusz",
|
||||||
"LabelBooks": "Könyvek",
|
"LabelBooks": "Könyvek",
|
||||||
"LabelButtonText": "Gomb szövege",
|
"LabelButtonText": "Gomb szövege",
|
||||||
"LabelByAuthor": "{} által",
|
"LabelByAuthor": "{0} által",
|
||||||
"LabelChangePassword": "Jelszó megváltoztatása",
|
"LabelChangePassword": "Jelszó megváltoztatása",
|
||||||
"LabelChannels": "Csatornák",
|
"LabelChannels": "Csatornák",
|
||||||
"LabelChapterCount": "{0} Fejezet",
|
"LabelChapterCount": "{0} Fejezet",
|
||||||
@ -346,6 +355,10 @@
|
|||||||
"LabelExample": "Példa",
|
"LabelExample": "Példa",
|
||||||
"LabelExpandSeries": "Sorozat kinyitása",
|
"LabelExpandSeries": "Sorozat kinyitása",
|
||||||
"LabelExpandSubSeries": "Alsorozat kinyitása",
|
"LabelExpandSubSeries": "Alsorozat kinyitása",
|
||||||
|
"LabelExpired": "Lejárt",
|
||||||
|
"LabelExpiresAt": "Lejár",
|
||||||
|
"LabelExpiresInSeconds": "Lejár (másodpercben)",
|
||||||
|
"LabelExpiresNever": "Soha",
|
||||||
"LabelExplicit": "Szókimondó",
|
"LabelExplicit": "Szókimondó",
|
||||||
"LabelExplicitChecked": "Explicit (ellenőrizve)",
|
"LabelExplicitChecked": "Explicit (ellenőrizve)",
|
||||||
"LabelExplicitUnchecked": "Nem explicit (nem ellenőrzött)",
|
"LabelExplicitUnchecked": "Nem explicit (nem ellenőrzött)",
|
||||||
@ -405,6 +418,7 @@
|
|||||||
"LabelLanguages": "Nyelvek",
|
"LabelLanguages": "Nyelvek",
|
||||||
"LabelLastBookAdded": "Utolsó hozzáadott könyv",
|
"LabelLastBookAdded": "Utolsó hozzáadott könyv",
|
||||||
"LabelLastBookUpdated": "Utolsó frissített könyv",
|
"LabelLastBookUpdated": "Utolsó frissített könyv",
|
||||||
|
"LabelLastProgressDate": "Legutóbbi haladás: {0}",
|
||||||
"LabelLastSeen": "Utolsó látogatás",
|
"LabelLastSeen": "Utolsó látogatás",
|
||||||
"LabelLastTime": "Utolsó alkalom",
|
"LabelLastTime": "Utolsó alkalom",
|
||||||
"LabelLastUpdate": "Utolsó frissítés",
|
"LabelLastUpdate": "Utolsó frissítés",
|
||||||
@ -417,6 +431,7 @@
|
|||||||
"LabelLibraryFilterSublistEmpty": "Nem {0}",
|
"LabelLibraryFilterSublistEmpty": "Nem {0}",
|
||||||
"LabelLibraryItem": "Könyvtári elem",
|
"LabelLibraryItem": "Könyvtári elem",
|
||||||
"LabelLibraryName": "Könyvtár neve",
|
"LabelLibraryName": "Könyvtár neve",
|
||||||
|
"LabelLibrarySortByProgress": "Haladás frissítve",
|
||||||
"LabelLimit": "Korlát",
|
"LabelLimit": "Korlát",
|
||||||
"LabelLineSpacing": "Sorköz",
|
"LabelLineSpacing": "Sorköz",
|
||||||
"LabelListenAgain": "Újrahallgatás",
|
"LabelListenAgain": "Újrahallgatás",
|
||||||
@ -425,6 +440,7 @@
|
|||||||
"LabelLogLevelWarn": "Figyelmeztetés",
|
"LabelLogLevelWarn": "Figyelmeztetés",
|
||||||
"LabelLookForNewEpisodesAfterDate": "Új epizódok keresése ezen a dátum után",
|
"LabelLookForNewEpisodesAfterDate": "Új epizódok keresése ezen a dátum után",
|
||||||
"LabelLowestPriority": "Legalacsonyabb prioritás",
|
"LabelLowestPriority": "Legalacsonyabb prioritás",
|
||||||
|
"LabelMatchConfidence": "Bizalom",
|
||||||
"LabelMatchExistingUsersBy": "Meglévő felhasználók egyeztetése",
|
"LabelMatchExistingUsersBy": "Meglévő felhasználók egyeztetése",
|
||||||
"LabelMatchExistingUsersByDescription": "Meglévő felhasználók összekapcsolására használt. Egyszer összekapcsolva, a felhasználók egyedülálló azonosítóval lesznek egyeztetve az Ön SSO szolgáltatójától",
|
"LabelMatchExistingUsersByDescription": "Meglévő felhasználók összekapcsolására használt. Egyszer összekapcsolva, a felhasználók egyedülálló azonosítóval lesznek egyeztetve az Ön SSO szolgáltatójától",
|
||||||
"LabelMaxEpisodesToDownload": "Letölthető epizódok maximális száma. Használja a 0-t a korlátlan letöltéshez.",
|
"LabelMaxEpisodesToDownload": "Letölthető epizódok maximális száma. Használja a 0-t a korlátlan letöltéshez.",
|
||||||
@ -455,6 +471,7 @@
|
|||||||
"LabelNewestEpisodes": "Legújabb epizódok",
|
"LabelNewestEpisodes": "Legújabb epizódok",
|
||||||
"LabelNextBackupDate": "Következő biztonsági másolat dátuma",
|
"LabelNextBackupDate": "Következő biztonsági másolat dátuma",
|
||||||
"LabelNextScheduledRun": "Következő ütemezett futtatás",
|
"LabelNextScheduledRun": "Következő ütemezett futtatás",
|
||||||
|
"LabelNoApiKeys": "Nincs API kulcs",
|
||||||
"LabelNoCustomMetadataProviders": "Nincsenek egyedi metaadat szolgáltatók",
|
"LabelNoCustomMetadataProviders": "Nincsenek egyedi metaadat szolgáltatók",
|
||||||
"LabelNoEpisodesSelected": "Nincsenek kiválasztott epizódok",
|
"LabelNoEpisodesSelected": "Nincsenek kiválasztott epizódok",
|
||||||
"LabelNotFinished": "Nem befejezett",
|
"LabelNotFinished": "Nem befejezett",
|
||||||
@ -544,6 +561,7 @@
|
|||||||
"LabelSelectAll": "Minden kiválasztása",
|
"LabelSelectAll": "Minden kiválasztása",
|
||||||
"LabelSelectAllEpisodes": "Összes epizód kiválasztása",
|
"LabelSelectAllEpisodes": "Összes epizód kiválasztása",
|
||||||
"LabelSelectEpisodesShowing": "Kiválasztás {0} megjelenített epizód",
|
"LabelSelectEpisodesShowing": "Kiválasztás {0} megjelenített epizód",
|
||||||
|
"LabelSelectUser": "Felhasználó kiválasztása",
|
||||||
"LabelSelectUsers": "Felhasználók kiválasztása",
|
"LabelSelectUsers": "Felhasználók kiválasztása",
|
||||||
"LabelSendEbookToDevice": "E-könyv küldése...",
|
"LabelSendEbookToDevice": "E-könyv küldése...",
|
||||||
"LabelSequence": "Sorozat",
|
"LabelSequence": "Sorozat",
|
||||||
@ -640,6 +658,7 @@
|
|||||||
"LabelTheme": "Téma",
|
"LabelTheme": "Téma",
|
||||||
"LabelThemeDark": "Sötét",
|
"LabelThemeDark": "Sötét",
|
||||||
"LabelThemeLight": "Világos",
|
"LabelThemeLight": "Világos",
|
||||||
|
"LabelThemeSepia": "Szépia",
|
||||||
"LabelTimeBase": "Időalap",
|
"LabelTimeBase": "Időalap",
|
||||||
"LabelTimeDurationXHours": "{0} óra",
|
"LabelTimeDurationXHours": "{0} óra",
|
||||||
"LabelTimeDurationXMinutes": "{0} perc",
|
"LabelTimeDurationXMinutes": "{0} perc",
|
||||||
@ -708,7 +727,9 @@
|
|||||||
"MessageAddToPlayerQueue": "Hozzáadás a lejátszó sorhoz",
|
"MessageAddToPlayerQueue": "Hozzáadás a lejátszó sorhoz",
|
||||||
"MessageAppriseDescription": "Ennek a funkció használatához futtatnia kell egy <a href=\"https://github.com/caronc/apprise-api\" target=\"_blank\">Apprise API</a> példányt vagy egy olyan API-t, amely kezeli ezeket a kéréseket. <br />Az Apprise API URL-nek a teljes URL útvonalat kell tartalmaznia az értesítés elküldéséhez, például, ha az API példánya a <code>http://192.168.1.1:8337</code> címen szolgáltatva, akkor <code>http://192.168.1.1:8337/notify</code> értéket kell megadnia.",
|
"MessageAppriseDescription": "Ennek a funkció használatához futtatnia kell egy <a href=\"https://github.com/caronc/apprise-api\" target=\"_blank\">Apprise API</a> példányt vagy egy olyan API-t, amely kezeli ezeket a kéréseket. <br />Az Apprise API URL-nek a teljes URL útvonalat kell tartalmaznia az értesítés elküldéséhez, például, ha az API példánya a <code>http://192.168.1.1:8337</code> címen szolgáltatva, akkor <code>http://192.168.1.1:8337/notify</code> értéket kell megadnia.",
|
||||||
"MessageAsinCheck": "Győződjön meg róla, hogy az ASIN-t a megfelelő Audible régióból használja, nem az Amazonból.",
|
"MessageAsinCheck": "Győződjön meg róla, hogy az ASIN-t a megfelelő Audible régióból használja, nem az Amazonból.",
|
||||||
|
"MessageAuthenticationLegacyTokenWarning": "A régi API-tokenek a jövőben eltávolításra kerülnek. Helyette használja az <a href=\"/config/api-keys\">API-kulcsokat</a>.",
|
||||||
"MessageAuthenticationOIDCChangesRestart": "A mentés után indítsa újra a szervert az OIDC módosítások alkalmazásához.",
|
"MessageAuthenticationOIDCChangesRestart": "A mentés után indítsa újra a szervert az OIDC módosítások alkalmazásához.",
|
||||||
|
"MessageAuthenticationSecurityMessage": "A biztonság érdekében a hitelesítés folyamatát továbbfejlesztettük. Minden felhasználónak újra be kell jelentkeznie.",
|
||||||
"MessageBackupsDescription": "A biztonsági másolatok tartalmazzák a felhasználókat, a felhasználói haladást, a könyvtári elem részleteit, a szerver beállításait és a képeket, amelyek a <code>/metadata/items</code> és <code>/metadata/authors</code> mappákban vannak tárolva. A biztonsági másolatok <strong>nem</strong> tartalmazzák a könyvtári mappákban tárolt fájlokat.",
|
"MessageBackupsDescription": "A biztonsági másolatok tartalmazzák a felhasználókat, a felhasználói haladást, a könyvtári elem részleteit, a szerver beállításait és a képeket, amelyek a <code>/metadata/items</code> és <code>/metadata/authors</code> mappákban vannak tárolva. A biztonsági másolatok <strong>nem</strong> tartalmazzák a könyvtári mappákban tárolt fájlokat.",
|
||||||
"MessageBackupsLocationEditNote": "Megjegyzés: A biztonsági mentés helyének frissítése nem mozgatja vagy módosítja a meglévő biztonsági mentéseket",
|
"MessageBackupsLocationEditNote": "Megjegyzés: A biztonsági mentés helyének frissítése nem mozgatja vagy módosítja a meglévő biztonsági mentéseket",
|
||||||
"MessageBackupsLocationNoEditNote": "Megjegyzés: A biztonsági mentés helye egy környezeti változóval van beállítva, és itt nem módosítható.",
|
"MessageBackupsLocationNoEditNote": "Megjegyzés: A biztonsági mentés helye egy környezeti változóval van beállítva, és itt nem módosítható.",
|
||||||
@ -730,6 +751,7 @@
|
|||||||
"MessageChaptersNotFound": "Fejezetek nem találhatók",
|
"MessageChaptersNotFound": "Fejezetek nem találhatók",
|
||||||
"MessageCheckingCron": "Cron ellenőrzése...",
|
"MessageCheckingCron": "Cron ellenőrzése...",
|
||||||
"MessageConfirmCloseFeed": "Biztosan be szeretné zárni ezt a hírcsatornát?",
|
"MessageConfirmCloseFeed": "Biztosan be szeretné zárni ezt a hírcsatornát?",
|
||||||
|
"MessageConfirmDeleteApiKey": "Biztosan törölni szeretné az \"{0}\" API kulcsot?",
|
||||||
"MessageConfirmDeleteBackup": "Biztosan törölni szeretné a(z) {0} biztonsági másolatot?",
|
"MessageConfirmDeleteBackup": "Biztosan törölni szeretné a(z) {0} biztonsági másolatot?",
|
||||||
"MessageConfirmDeleteDevice": "Biztos, hogy törölni szeretné a „{0}” e-olvasó eszközt?",
|
"MessageConfirmDeleteDevice": "Biztos, hogy törölni szeretné a „{0}” e-olvasó eszközt?",
|
||||||
"MessageConfirmDeleteFile": "Ez törölni fogja a fájlt a fájlrendszerből. Biztos benne?",
|
"MessageConfirmDeleteFile": "Ez törölni fogja a fájlt a fájlrendszerből. Biztos benne?",
|
||||||
@ -1001,6 +1023,8 @@
|
|||||||
"ToastEpisodeDownloadQueueClearSuccess": "Epizód letöltési várólista törölve",
|
"ToastEpisodeDownloadQueueClearSuccess": "Epizód letöltési várólista törölve",
|
||||||
"ToastEpisodeUpdateSuccess": "{0} epizód frissítve",
|
"ToastEpisodeUpdateSuccess": "{0} epizód frissítve",
|
||||||
"ToastErrorCannotShare": "Ezen az eszközön nem lehet natívan megosztani",
|
"ToastErrorCannotShare": "Ezen az eszközön nem lehet natívan megosztani",
|
||||||
|
"ToastFailedToCreate": "Sikertelen létrehozás",
|
||||||
|
"ToastFailedToDelete": "Sikertelen törlés",
|
||||||
"ToastFailedToLoadData": "Sikertelen adatbetöltés",
|
"ToastFailedToLoadData": "Sikertelen adatbetöltés",
|
||||||
"ToastFailedToMatch": "Nem sikerült egyezőséget találni",
|
"ToastFailedToMatch": "Nem sikerült egyezőséget találni",
|
||||||
"ToastFailedToShare": "Nem sikerült megosztani",
|
"ToastFailedToShare": "Nem sikerült megosztani",
|
||||||
@ -1032,6 +1056,7 @@
|
|||||||
"ToastMustHaveAtLeastOnePath": "Legalább egy elérési útvonalnak kell lennie",
|
"ToastMustHaveAtLeastOnePath": "Legalább egy elérési útvonalnak kell lennie",
|
||||||
"ToastNameEmailRequired": "Név és e-mail cím megadása kötelező",
|
"ToastNameEmailRequired": "Név és e-mail cím megadása kötelező",
|
||||||
"ToastNameRequired": "A név megadása kötelező",
|
"ToastNameRequired": "A név megadása kötelező",
|
||||||
|
"ToastNewApiKeyUserError": "Ki kell választani egy felhasználót",
|
||||||
"ToastNewEpisodesFound": "{0} új epizód",
|
"ToastNewEpisodesFound": "{0} új epizód",
|
||||||
"ToastNewUserCreatedFailed": "Nem sikerült a fiókot létrehozni: „{0}”",
|
"ToastNewUserCreatedFailed": "Nem sikerült a fiókot létrehozni: „{0}”",
|
||||||
"ToastNewUserCreatedSuccess": "Új fiók létrehozva",
|
"ToastNewUserCreatedSuccess": "Új fiók létrehozva",
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"ButtonAdd": "Toevoegen",
|
"ButtonAdd": "Toevoegen",
|
||||||
|
"ButtonAddApiKey": "API Key toevoegen",
|
||||||
"ButtonAddChapters": "Hoofdstukken toevoegen",
|
"ButtonAddChapters": "Hoofdstukken toevoegen",
|
||||||
"ButtonAddDevice": "Toestel toevoegen",
|
"ButtonAddDevice": "Toestel toevoegen",
|
||||||
"ButtonAddLibrary": "Bibliotheek toevoegen",
|
"ButtonAddLibrary": "Bibliotheek toevoegen",
|
||||||
@ -10,7 +11,7 @@
|
|||||||
"ButtonApplyChapters": "Hoofdstukken toepassen",
|
"ButtonApplyChapters": "Hoofdstukken toepassen",
|
||||||
"ButtonAuthors": "Auteurs",
|
"ButtonAuthors": "Auteurs",
|
||||||
"ButtonBack": "Terug",
|
"ButtonBack": "Terug",
|
||||||
"ButtonBatchEditPopulateFromExisting": "Vullen vanuit bestaande",
|
"ButtonBatchEditPopulateFromExisting": "Vul in met huidige",
|
||||||
"ButtonBatchEditPopulateMapDetails": "Kaartgegevens invullen",
|
"ButtonBatchEditPopulateMapDetails": "Kaartgegevens invullen",
|
||||||
"ButtonBrowseForFolder": "Bladeren naar map",
|
"ButtonBrowseForFolder": "Bladeren naar map",
|
||||||
"ButtonCancel": "Annuleren",
|
"ButtonCancel": "Annuleren",
|
||||||
@ -20,6 +21,7 @@
|
|||||||
"ButtonChooseAFolder": "Map kiezen",
|
"ButtonChooseAFolder": "Map kiezen",
|
||||||
"ButtonChooseFiles": "Bestanden kiezen",
|
"ButtonChooseFiles": "Bestanden kiezen",
|
||||||
"ButtonClearFilter": "Filter verwijderen",
|
"ButtonClearFilter": "Filter verwijderen",
|
||||||
|
"ButtonClose": "Sluiten",
|
||||||
"ButtonCloseFeed": "Feed sluiten",
|
"ButtonCloseFeed": "Feed sluiten",
|
||||||
"ButtonCloseSession": "Sluit Sessie",
|
"ButtonCloseSession": "Sluit Sessie",
|
||||||
"ButtonCollections": "Collecties",
|
"ButtonCollections": "Collecties",
|
||||||
@ -32,8 +34,8 @@
|
|||||||
"ButtonEditChapters": "Hoofdstukken wijzigen",
|
"ButtonEditChapters": "Hoofdstukken wijzigen",
|
||||||
"ButtonEditPodcast": "Podcast wijzigen",
|
"ButtonEditPodcast": "Podcast wijzigen",
|
||||||
"ButtonEnable": "Aanzetten",
|
"ButtonEnable": "Aanzetten",
|
||||||
"ButtonFireAndFail": "Fire and Fail",
|
"ButtonFireAndFail": "Uitvoeren en falen",
|
||||||
"ButtonFireOnTest": "Fire onTest event",
|
"ButtonFireOnTest": "Test-Event uitvoeren",
|
||||||
"ButtonForceReScan": "Forceer nieuwe scan",
|
"ButtonForceReScan": "Forceer nieuwe scan",
|
||||||
"ButtonFullPath": "Volledig pad",
|
"ButtonFullPath": "Volledig pad",
|
||||||
"ButtonHide": "Verberg",
|
"ButtonHide": "Verberg",
|
||||||
@ -119,6 +121,7 @@
|
|||||||
"HeaderAccount": "Account",
|
"HeaderAccount": "Account",
|
||||||
"HeaderAddCustomMetadataProvider": "Aangepaste Metadataprovider Toevoegen",
|
"HeaderAddCustomMetadataProvider": "Aangepaste Metadataprovider Toevoegen",
|
||||||
"HeaderAdvanced": "Geavanceerd",
|
"HeaderAdvanced": "Geavanceerd",
|
||||||
|
"HeaderApiKeys": "API Key",
|
||||||
"HeaderAppriseNotificationSettings": "Apprise-notificatie instellingen",
|
"HeaderAppriseNotificationSettings": "Apprise-notificatie instellingen",
|
||||||
"HeaderAudioTracks": "Audiotracks",
|
"HeaderAudioTracks": "Audiotracks",
|
||||||
"HeaderAudiobookTools": "Audioboekbestandbeheer tools",
|
"HeaderAudiobookTools": "Audioboekbestandbeheer tools",
|
||||||
@ -162,6 +165,7 @@
|
|||||||
"HeaderMetadataOrderOfPrecedence": "Metadata volgorde",
|
"HeaderMetadataOrderOfPrecedence": "Metadata volgorde",
|
||||||
"HeaderMetadataToEmbed": "In te sluiten metadata",
|
"HeaderMetadataToEmbed": "In te sluiten metadata",
|
||||||
"HeaderNewAccount": "Nieuwe account",
|
"HeaderNewAccount": "Nieuwe account",
|
||||||
|
"HeaderNewApiKey": "Nieuwe API Key",
|
||||||
"HeaderNewLibrary": "Nieuwe bibliotheek",
|
"HeaderNewLibrary": "Nieuwe bibliotheek",
|
||||||
"HeaderNotificationCreate": "Notificatie Aanmaken",
|
"HeaderNotificationCreate": "Notificatie Aanmaken",
|
||||||
"HeaderNotificationUpdate": "Update Notificatie",
|
"HeaderNotificationUpdate": "Update Notificatie",
|
||||||
@ -206,6 +210,7 @@
|
|||||||
"HeaderTableOfContents": "Inhoudsopgave",
|
"HeaderTableOfContents": "Inhoudsopgave",
|
||||||
"HeaderTools": "Gereedschap",
|
"HeaderTools": "Gereedschap",
|
||||||
"HeaderUpdateAccount": "Account bijwerken",
|
"HeaderUpdateAccount": "Account bijwerken",
|
||||||
|
"HeaderUpdateApiKey": "API Key updaten",
|
||||||
"HeaderUpdateAuthor": "Auteur bijwerken",
|
"HeaderUpdateAuthor": "Auteur bijwerken",
|
||||||
"HeaderUpdateDetails": "Details bijwerken",
|
"HeaderUpdateDetails": "Details bijwerken",
|
||||||
"HeaderUpdateLibrary": "Bibliotheek bijwerken",
|
"HeaderUpdateLibrary": "Bibliotheek bijwerken",
|
||||||
@ -235,6 +240,10 @@
|
|||||||
"LabelAllUsersExcludingGuests": "Alle gebruikers exclusief gasten",
|
"LabelAllUsersExcludingGuests": "Alle gebruikers exclusief gasten",
|
||||||
"LabelAllUsersIncludingGuests": "Alle gebruikers inclusief gasten",
|
"LabelAllUsersIncludingGuests": "Alle gebruikers inclusief gasten",
|
||||||
"LabelAlreadyInYourLibrary": "Reeds in je bibliotheek",
|
"LabelAlreadyInYourLibrary": "Reeds in je bibliotheek",
|
||||||
|
"LabelApiKeyCreated": "API Key \"{0}\" succesvol aangemaakt.",
|
||||||
|
"LabelApiKeyCreatedDescription": "Zorg ervoor dat je de API key nu kopieert, je kan deze later niet meer bekijken.",
|
||||||
|
"LabelApiKeyUser": "Uitvoeren namens de gebruiker",
|
||||||
|
"LabelApiKeyUserDescription": "Deze API key krijgt dezelfde rechten als de gebruiker waar deze zich tot voordoet. In de logs zullen de requests ook op naam van de gebruiker staan.",
|
||||||
"LabelApiToken": "API Token",
|
"LabelApiToken": "API Token",
|
||||||
"LabelAppend": "Achteraan toevoegen",
|
"LabelAppend": "Achteraan toevoegen",
|
||||||
"LabelAudioBitrate": "Audio Bitrate (b.v. 128k)",
|
"LabelAudioBitrate": "Audio Bitrate (b.v. 128k)",
|
||||||
@ -312,7 +321,7 @@
|
|||||||
"LabelDurationComparisonLonger": "({0} langer)",
|
"LabelDurationComparisonLonger": "({0} langer)",
|
||||||
"LabelDurationComparisonShorter": "({0} korter)",
|
"LabelDurationComparisonShorter": "({0} korter)",
|
||||||
"LabelDurationFound": "Gevonden duur:",
|
"LabelDurationFound": "Gevonden duur:",
|
||||||
"LabelEbook": "Ebook",
|
"LabelEbook": "E-boek",
|
||||||
"LabelEbooks": "Eboeken",
|
"LabelEbooks": "Eboeken",
|
||||||
"LabelEdit": "Wijzig",
|
"LabelEdit": "Wijzig",
|
||||||
"LabelEmail": "Email",
|
"LabelEmail": "Email",
|
||||||
@ -346,6 +355,10 @@
|
|||||||
"LabelExample": "Voorbeeld",
|
"LabelExample": "Voorbeeld",
|
||||||
"LabelExpandSeries": "Serie Uitvouwen",
|
"LabelExpandSeries": "Serie Uitvouwen",
|
||||||
"LabelExpandSubSeries": "Subserie Uitvouwen",
|
"LabelExpandSubSeries": "Subserie Uitvouwen",
|
||||||
|
"LabelExpired": "Verlopen",
|
||||||
|
"LabelExpiresAt": "Loopt af op",
|
||||||
|
"LabelExpiresInSeconds": "Loopt af in (seconds) seconden",
|
||||||
|
"LabelExpiresNever": "Nooit",
|
||||||
"LabelExplicit": "Expliciet",
|
"LabelExplicit": "Expliciet",
|
||||||
"LabelExplicitChecked": "Expliciet (gechecked)",
|
"LabelExplicitChecked": "Expliciet (gechecked)",
|
||||||
"LabelExplicitUnchecked": "Niet Expliciet (niet gechecked)",
|
"LabelExplicitUnchecked": "Niet Expliciet (niet gechecked)",
|
||||||
@ -364,7 +377,7 @@
|
|||||||
"LabelFolder": "Map",
|
"LabelFolder": "Map",
|
||||||
"LabelFolders": "Mappen",
|
"LabelFolders": "Mappen",
|
||||||
"LabelFontBold": "Vetgedrukt",
|
"LabelFontBold": "Vetgedrukt",
|
||||||
"LabelFontBoldness": "Font Boldness",
|
"LabelFontBoldness": "Lettertype Dikte",
|
||||||
"LabelFontFamily": "Lettertypefamilie",
|
"LabelFontFamily": "Lettertypefamilie",
|
||||||
"LabelFontItalic": "Cursief",
|
"LabelFontItalic": "Cursief",
|
||||||
"LabelFontScale": "Lettertype schaal",
|
"LabelFontScale": "Lettertype schaal",
|
||||||
@ -372,7 +385,7 @@
|
|||||||
"LabelFormat": "Formaat",
|
"LabelFormat": "Formaat",
|
||||||
"LabelFull": "Vol",
|
"LabelFull": "Vol",
|
||||||
"LabelGenre": "Genre",
|
"LabelGenre": "Genre",
|
||||||
"LabelGenres": "Genres",
|
"LabelGenres": "Categorieën",
|
||||||
"LabelHardDeleteFile": "Bestand permanent verwijderen",
|
"LabelHardDeleteFile": "Bestand permanent verwijderen",
|
||||||
"LabelHasEbook": "Heeft Ebook",
|
"LabelHasEbook": "Heeft Ebook",
|
||||||
"LabelHasSupplementaryEbook": "Heeft aanvullend Ebook",
|
"LabelHasSupplementaryEbook": "Heeft aanvullend Ebook",
|
||||||
@ -405,6 +418,7 @@
|
|||||||
"LabelLanguages": "Talen",
|
"LabelLanguages": "Talen",
|
||||||
"LabelLastBookAdded": "Laatst toegevoegde boek",
|
"LabelLastBookAdded": "Laatst toegevoegde boek",
|
||||||
"LabelLastBookUpdated": "Laatst bijgewerkte boek",
|
"LabelLastBookUpdated": "Laatst bijgewerkte boek",
|
||||||
|
"LabelLastProgressDate": "Laatste vooruitgang: {0}",
|
||||||
"LabelLastSeen": "Laatst gezien",
|
"LabelLastSeen": "Laatst gezien",
|
||||||
"LabelLastTime": "Laatste keer",
|
"LabelLastTime": "Laatste keer",
|
||||||
"LabelLastUpdate": "Laatste wijziging",
|
"LabelLastUpdate": "Laatste wijziging",
|
||||||
@ -417,6 +431,7 @@
|
|||||||
"LabelLibraryFilterSublistEmpty": "Nee {0}",
|
"LabelLibraryFilterSublistEmpty": "Nee {0}",
|
||||||
"LabelLibraryItem": "Bibliotheekonderdeel",
|
"LabelLibraryItem": "Bibliotheekonderdeel",
|
||||||
"LabelLibraryName": "Bibliotheeknaam",
|
"LabelLibraryName": "Bibliotheeknaam",
|
||||||
|
"LabelLibrarySortByProgress": "Voortuigang geüpdatet",
|
||||||
"LabelLimit": "Limiet",
|
"LabelLimit": "Limiet",
|
||||||
"LabelLineSpacing": "Regelruimte",
|
"LabelLineSpacing": "Regelruimte",
|
||||||
"LabelListenAgain": "Opnieuw Beluisteren",
|
"LabelListenAgain": "Opnieuw Beluisteren",
|
||||||
@ -425,6 +440,7 @@
|
|||||||
"LabelLogLevelWarn": "Waarschuwing",
|
"LabelLogLevelWarn": "Waarschuwing",
|
||||||
"LabelLookForNewEpisodesAfterDate": "Zoek naar nieuwe afleveringen na deze datum",
|
"LabelLookForNewEpisodesAfterDate": "Zoek naar nieuwe afleveringen na deze datum",
|
||||||
"LabelLowestPriority": "Laagste Prioriteit",
|
"LabelLowestPriority": "Laagste Prioriteit",
|
||||||
|
"LabelMatchConfidence": "Vertrouwen",
|
||||||
"LabelMatchExistingUsersBy": "Bestaande gebruikers matchen op",
|
"LabelMatchExistingUsersBy": "Bestaande gebruikers matchen op",
|
||||||
"LabelMatchExistingUsersByDescription": "Wordt gebruikt om bestaande gebruikers te verbinden. Zodra ze verbonden zijn, worden gebruikers gekoppeld aan een unieke id van uw SSO-provider",
|
"LabelMatchExistingUsersByDescription": "Wordt gebruikt om bestaande gebruikers te verbinden. Zodra ze verbonden zijn, worden gebruikers gekoppeld aan een unieke id van uw SSO-provider",
|
||||||
"LabelMaxEpisodesToDownload": "Maximale # afleveringen om te downloaden. Gebruik 0 voor ongelimiteerd.",
|
"LabelMaxEpisodesToDownload": "Maximale # afleveringen om te downloaden. Gebruik 0 voor ongelimiteerd.",
|
||||||
@ -455,6 +471,7 @@
|
|||||||
"LabelNewestEpisodes": "Nieuwste Afleveringen",
|
"LabelNewestEpisodes": "Nieuwste Afleveringen",
|
||||||
"LabelNextBackupDate": "Volgende back-up datum",
|
"LabelNextBackupDate": "Volgende back-up datum",
|
||||||
"LabelNextScheduledRun": "Volgende geplande run",
|
"LabelNextScheduledRun": "Volgende geplande run",
|
||||||
|
"LabelNoApiKeys": "Geen API keys",
|
||||||
"LabelNoCustomMetadataProviders": "Geen custom metadata bronnen",
|
"LabelNoCustomMetadataProviders": "Geen custom metadata bronnen",
|
||||||
"LabelNoEpisodesSelected": "Geen afleveringen geselecteerd",
|
"LabelNoEpisodesSelected": "Geen afleveringen geselecteerd",
|
||||||
"LabelNotFinished": "Niet Voltooid",
|
"LabelNotFinished": "Niet Voltooid",
|
||||||
@ -514,7 +531,7 @@
|
|||||||
"LabelPublishers": "Uitgevers",
|
"LabelPublishers": "Uitgevers",
|
||||||
"LabelRSSFeedCustomOwnerEmail": "Aangepast e-mailadres eigenaar",
|
"LabelRSSFeedCustomOwnerEmail": "Aangepast e-mailadres eigenaar",
|
||||||
"LabelRSSFeedCustomOwnerName": "Aangepaste naam eigenaar",
|
"LabelRSSFeedCustomOwnerName": "Aangepaste naam eigenaar",
|
||||||
"LabelRSSFeedOpen": "RSS Feed Open",
|
"LabelRSSFeedOpen": "RSS Feed open",
|
||||||
"LabelRSSFeedPreventIndexing": "Voorkom indexering",
|
"LabelRSSFeedPreventIndexing": "Voorkom indexering",
|
||||||
"LabelRSSFeedSlug": "RSS-feed slug",
|
"LabelRSSFeedSlug": "RSS-feed slug",
|
||||||
"LabelRSSFeedURL": "RSS-feed URL",
|
"LabelRSSFeedURL": "RSS-feed URL",
|
||||||
@ -544,6 +561,7 @@
|
|||||||
"LabelSelectAll": "Alles selecteren",
|
"LabelSelectAll": "Alles selecteren",
|
||||||
"LabelSelectAllEpisodes": "Selecteer alle afleveringen",
|
"LabelSelectAllEpisodes": "Selecteer alle afleveringen",
|
||||||
"LabelSelectEpisodesShowing": "Selecteer {0} afleveringen laten zien",
|
"LabelSelectEpisodesShowing": "Selecteer {0} afleveringen laten zien",
|
||||||
|
"LabelSelectUser": "Gebruiker kiezen",
|
||||||
"LabelSelectUsers": "Selecteer gebruikers",
|
"LabelSelectUsers": "Selecteer gebruikers",
|
||||||
"LabelSendEbookToDevice": "Stuur ebook naar...",
|
"LabelSendEbookToDevice": "Stuur ebook naar...",
|
||||||
"LabelSequence": "Sequentie",
|
"LabelSequence": "Sequentie",
|
||||||
@ -636,10 +654,11 @@
|
|||||||
"LabelTextEditorBulletedList": "Opgesomde lijst",
|
"LabelTextEditorBulletedList": "Opgesomde lijst",
|
||||||
"LabelTextEditorLink": "Link",
|
"LabelTextEditorLink": "Link",
|
||||||
"LabelTextEditorNumberedList": "Genummerde lijst",
|
"LabelTextEditorNumberedList": "Genummerde lijst",
|
||||||
"LabelTextEditorUnlink": "Unlink",
|
"LabelTextEditorUnlink": "Ontkoppelen",
|
||||||
"LabelTheme": "Thema",
|
"LabelTheme": "Thema",
|
||||||
"LabelThemeDark": "Donker",
|
"LabelThemeDark": "Donker",
|
||||||
"LabelThemeLight": "Licht",
|
"LabelThemeLight": "Licht",
|
||||||
|
"LabelThemeSepia": "Sepia",
|
||||||
"LabelTimeBase": "Tijdsbasis",
|
"LabelTimeBase": "Tijdsbasis",
|
||||||
"LabelTimeDurationXHours": "{0} Uren",
|
"LabelTimeDurationXHours": "{0} Uren",
|
||||||
"LabelTimeDurationXMinutes": "{0} minuten",
|
"LabelTimeDurationXMinutes": "{0} minuten",
|
||||||
@ -708,7 +727,9 @@
|
|||||||
"MessageAddToPlayerQueue": "Toevoegen aan wachtrij",
|
"MessageAddToPlayerQueue": "Toevoegen aan wachtrij",
|
||||||
"MessageAppriseDescription": "Om deze functie te gebruiken heb je een draaiende instantie van <a href=\"https://github.com/caronc/apprise-api\" target=\"_blank\">Apprise API</a> nodig of een api die dezelfde requests afhandelt. <br />De Apprise API Url moet het volledige URL-pad zijn om de notificatie te verzenden, b.v., als je API-instantie draait op <code>http://192.168.1.1:8337</code> dan zou je <code>http://192.168.1.1:8337/notify</code> gebruiken.",
|
"MessageAppriseDescription": "Om deze functie te gebruiken heb je een draaiende instantie van <a href=\"https://github.com/caronc/apprise-api\" target=\"_blank\">Apprise API</a> nodig of een api die dezelfde requests afhandelt. <br />De Apprise API Url moet het volledige URL-pad zijn om de notificatie te verzenden, b.v., als je API-instantie draait op <code>http://192.168.1.1:8337</code> dan zou je <code>http://192.168.1.1:8337/notify</code> gebruiken.",
|
||||||
"MessageAsinCheck": "Zorg ervoor dat u de ASIN van de juiste Audible-regio gebruikt, niet die van Amazon.",
|
"MessageAsinCheck": "Zorg ervoor dat u de ASIN van de juiste Audible-regio gebruikt, niet die van Amazon.",
|
||||||
|
"MessageAuthenticationLegacyTokenWarning": "API tokens zijn verouderd en worden in de toekomst niet meer ondersteund. Gebruik inplaats daarvan <a href=\"/config/api-keys\">API keys</a> .",
|
||||||
"MessageAuthenticationOIDCChangesRestart": "Start uw server opnieuw op nadat u het opslaan hebt uitgevoerd, om de OIDC-wijzigingen toe te passen.",
|
"MessageAuthenticationOIDCChangesRestart": "Start uw server opnieuw op nadat u het opslaan hebt uitgevoerd, om de OIDC-wijzigingen toe te passen.",
|
||||||
|
"MessageAuthenticationSecurityMessage": "Authenticatie is verbeterd omwille van veiligheid. Alle gebruikers moeten opnieuw inloggen.",
|
||||||
"MessageBackupsDescription": "Back-ups omvatten gebruikers, gebruikers' voortgang, bibliotheekonderdeeldetails, serverinstellingen en afbeeldingen bewaard in <code>/metadata/items</code> & <code>/metadata/authors</code>. Back-ups <strong>bevatten niet</strong> de bestanden bewaard in je bibliotheekmappen.",
|
"MessageBackupsDescription": "Back-ups omvatten gebruikers, gebruikers' voortgang, bibliotheekonderdeeldetails, serverinstellingen en afbeeldingen bewaard in <code>/metadata/items</code> & <code>/metadata/authors</code>. Back-ups <strong>bevatten niet</strong> de bestanden bewaard in je bibliotheekmappen.",
|
||||||
"MessageBackupsLocationEditNote": "Let op: het bijwerken van de back-uplocatie zal bestaande back-ups niet verplaatsen of wijzigen",
|
"MessageBackupsLocationEditNote": "Let op: het bijwerken van de back-uplocatie zal bestaande back-ups niet verplaatsen of wijzigen",
|
||||||
"MessageBackupsLocationNoEditNote": "Let op: De back-uplocatie wordt ingesteld via een omgevingsvariabele en kan hier niet worden gewijzigd.",
|
"MessageBackupsLocationNoEditNote": "Let op: De back-uplocatie wordt ingesteld via een omgevingsvariabele en kan hier niet worden gewijzigd.",
|
||||||
@ -730,6 +751,7 @@
|
|||||||
"MessageChaptersNotFound": "Hoofdstukken niet gevonden",
|
"MessageChaptersNotFound": "Hoofdstukken niet gevonden",
|
||||||
"MessageCheckingCron": "Cron aan het checken...",
|
"MessageCheckingCron": "Cron aan het checken...",
|
||||||
"MessageConfirmCloseFeed": "Ben je zeker dat je deze feed wil sluiten?",
|
"MessageConfirmCloseFeed": "Ben je zeker dat je deze feed wil sluiten?",
|
||||||
|
"MessageConfirmDeleteApiKey": "Weet je zeker dat je deze API key \"{0}\" wil verwijderen?",
|
||||||
"MessageConfirmDeleteBackup": "Weet je zeker dat je de backup voor {0} wil verwijderen?",
|
"MessageConfirmDeleteBackup": "Weet je zeker dat je de backup voor {0} wil verwijderen?",
|
||||||
"MessageConfirmDeleteDevice": "Ben je zeker dat je e-reader apparaat \"{0}\" wil verwijderen?",
|
"MessageConfirmDeleteDevice": "Ben je zeker dat je e-reader apparaat \"{0}\" wil verwijderen?",
|
||||||
"MessageConfirmDeleteFile": "Dit verwijdert het bestand uit het bestandssysteem. Weet je het zeker?",
|
"MessageConfirmDeleteFile": "Dit verwijdert het bestand uit het bestandssysteem. Weet je het zeker?",
|
||||||
@ -762,7 +784,7 @@
|
|||||||
"MessageConfirmRemoveListeningSessions": "Weet je zeker dat je {0} luistersessies wilt verwijderen?",
|
"MessageConfirmRemoveListeningSessions": "Weet je zeker dat je {0} luistersessies wilt verwijderen?",
|
||||||
"MessageConfirmRemoveMetadataFiles": "Bent u zeker dat u alle metadata wil verwijderen. {0} bestanden in uw bibliotheel item folders?",
|
"MessageConfirmRemoveMetadataFiles": "Bent u zeker dat u alle metadata wil verwijderen. {0} bestanden in uw bibliotheel item folders?",
|
||||||
"MessageConfirmRemoveNarrator": "Weet je zeker dat je verteller \"{0}\" wil verwijderen?",
|
"MessageConfirmRemoveNarrator": "Weet je zeker dat je verteller \"{0}\" wil verwijderen?",
|
||||||
"MessageConfirmRemovePlaylist": "Weet je zeker dat je je afspeellijst \"{0}\" wil verwijderen?",
|
"MessageConfirmRemovePlaylist": "Weet je zeker dat je afspeellijst \"{0}\" wil verwijderen?",
|
||||||
"MessageConfirmRenameGenre": "Weet je zeker dat je genre \"{0}\" wil hernoemen naar \"{1}\" voor alle onderdelen?",
|
"MessageConfirmRenameGenre": "Weet je zeker dat je genre \"{0}\" wil hernoemen naar \"{1}\" voor alle onderdelen?",
|
||||||
"MessageConfirmRenameGenreMergeNote": "Opmerking: Dit genre bestaat al, dus zullen ze worden samengevoegd.",
|
"MessageConfirmRenameGenreMergeNote": "Opmerking: Dit genre bestaat al, dus zullen ze worden samengevoegd.",
|
||||||
"MessageConfirmRenameGenreWarning": "Waarschuwing! Een gelijknamig genre met ander hoofdlettergebruik bestaat al: \"{0}\".",
|
"MessageConfirmRenameGenreWarning": "Waarschuwing! Een gelijknamig genre met ander hoofdlettergebruik bestaat al: \"{0}\".",
|
||||||
@ -1001,6 +1023,8 @@
|
|||||||
"ToastEpisodeDownloadQueueClearSuccess": "Aflevering download-wachtrij geleegt",
|
"ToastEpisodeDownloadQueueClearSuccess": "Aflevering download-wachtrij geleegt",
|
||||||
"ToastEpisodeUpdateSuccess": "{0} afleveringen bijgewerkt",
|
"ToastEpisodeUpdateSuccess": "{0} afleveringen bijgewerkt",
|
||||||
"ToastErrorCannotShare": "Kan niet native delen op dit apparaat",
|
"ToastErrorCannotShare": "Kan niet native delen op dit apparaat",
|
||||||
|
"ToastFailedToCreate": "Fout tijdens creëren",
|
||||||
|
"ToastFailedToDelete": "Fout tijdens verwijderen",
|
||||||
"ToastFailedToLoadData": "Data laden mislukt",
|
"ToastFailedToLoadData": "Data laden mislukt",
|
||||||
"ToastFailedToMatch": "Match mislukt",
|
"ToastFailedToMatch": "Match mislukt",
|
||||||
"ToastFailedToShare": "Delen mislukt",
|
"ToastFailedToShare": "Delen mislukt",
|
||||||
@ -1032,6 +1056,7 @@
|
|||||||
"ToastMustHaveAtLeastOnePath": "Moet ten minste een pad hebben",
|
"ToastMustHaveAtLeastOnePath": "Moet ten minste een pad hebben",
|
||||||
"ToastNameEmailRequired": "Naam en email zijn vereist",
|
"ToastNameEmailRequired": "Naam en email zijn vereist",
|
||||||
"ToastNameRequired": "Naam is vereist",
|
"ToastNameRequired": "Naam is vereist",
|
||||||
|
"ToastNewApiKeyUserError": "Selecteer een gebruiker",
|
||||||
"ToastNewEpisodesFound": "{0} nieuwe afleveringen gevonden",
|
"ToastNewEpisodesFound": "{0} nieuwe afleveringen gevonden",
|
||||||
"ToastNewUserCreatedFailed": "Account: \"{0}\" aanmaken mislukt",
|
"ToastNewUserCreatedFailed": "Account: \"{0}\" aanmaken mislukt",
|
||||||
"ToastNewUserCreatedSuccess": "Nieuw account aangemaakt",
|
"ToastNewUserCreatedSuccess": "Nieuw account aangemaakt",
|
||||||
|
@ -334,9 +334,12 @@
|
|||||||
"LabelEncodingClearItemCache": "Pamiętaj o okresowym czyszczeniu pamięci podręcznej elementów.",
|
"LabelEncodingClearItemCache": "Pamiętaj o okresowym czyszczeniu pamięci podręcznej elementów.",
|
||||||
"LabelEncodingFinishedM4B": "Ukończony plik M4B zostanie umieszczony w folderze audiobooka pod adresem:",
|
"LabelEncodingFinishedM4B": "Ukończony plik M4B zostanie umieszczony w folderze audiobooka pod adresem:",
|
||||||
"LabelEncodingInfoEmbedded": "Metadane zostaną osadzone w ścieżkach audio w folderze z audiobookiem.",
|
"LabelEncodingInfoEmbedded": "Metadane zostaną osadzone w ścieżkach audio w folderze z audiobookiem.",
|
||||||
|
"LabelEncodingWatcherDisabled": "Jeśli monitorowanie folderów jest wyłączone, należy ponownie przeskanować audiobooka.",
|
||||||
"LabelEnd": "Zakończ",
|
"LabelEnd": "Zakończ",
|
||||||
"LabelEndOfChapter": "Koniec rozdziału",
|
"LabelEndOfChapter": "Koniec rozdziału",
|
||||||
"LabelEpisode": "Odcinek",
|
"LabelEpisode": "Odcinek",
|
||||||
|
"LabelEpisodeNotLinkedToRssFeed": "Odcinek nie jest powiązany z kanałem RSS",
|
||||||
|
"LabelEpisodeNumber": "Odcinek #{0}",
|
||||||
"LabelEpisodeTitle": "Tytuł odcinka",
|
"LabelEpisodeTitle": "Tytuł odcinka",
|
||||||
"LabelEpisodeType": "Typ odcinka",
|
"LabelEpisodeType": "Typ odcinka",
|
||||||
"LabelEpisodeUrlFromRssFeed": "Adres URL odcinka z kanału RSS",
|
"LabelEpisodeUrlFromRssFeed": "Adres URL odcinka z kanału RSS",
|
||||||
@ -345,6 +348,8 @@
|
|||||||
"LabelExample": "Przykład",
|
"LabelExample": "Przykład",
|
||||||
"LabelExpandSeries": "Rozwiń serie",
|
"LabelExpandSeries": "Rozwiń serie",
|
||||||
"LabelExpandSubSeries": "Rozwiń podserie",
|
"LabelExpandSubSeries": "Rozwiń podserie",
|
||||||
|
"LabelExpiresInSeconds": "Wygasa za (sekund)",
|
||||||
|
"LabelExpiresNever": "Nigdy",
|
||||||
"LabelExplicit": "Nieprzyzwoite",
|
"LabelExplicit": "Nieprzyzwoite",
|
||||||
"LabelExplicitChecked": "Nieprzyzwoite (sprawdzone)",
|
"LabelExplicitChecked": "Nieprzyzwoite (sprawdzone)",
|
||||||
"LabelExplicitUnchecked": "Przyzwoite (niesprawdzone)",
|
"LabelExplicitUnchecked": "Przyzwoite (niesprawdzone)",
|
||||||
@ -404,6 +409,7 @@
|
|||||||
"LabelLanguages": "Języki",
|
"LabelLanguages": "Języki",
|
||||||
"LabelLastBookAdded": "Ostatnio dodana książka",
|
"LabelLastBookAdded": "Ostatnio dodana książka",
|
||||||
"LabelLastBookUpdated": "Ostatnio modyfikowana książka",
|
"LabelLastBookUpdated": "Ostatnio modyfikowana książka",
|
||||||
|
"LabelLastProgressDate": "Ostatni postęp: {0}",
|
||||||
"LabelLastSeen": "Ostatnio widziany",
|
"LabelLastSeen": "Ostatnio widziany",
|
||||||
"LabelLastTime": "Ostatni czas",
|
"LabelLastTime": "Ostatni czas",
|
||||||
"LabelLastUpdate": "Ostatnia aktualizacja",
|
"LabelLastUpdate": "Ostatnia aktualizacja",
|
||||||
@ -416,6 +422,7 @@
|
|||||||
"LabelLibraryFilterSublistEmpty": "Brak {0}",
|
"LabelLibraryFilterSublistEmpty": "Brak {0}",
|
||||||
"LabelLibraryItem": "Element biblioteki",
|
"LabelLibraryItem": "Element biblioteki",
|
||||||
"LabelLibraryName": "Nazwa biblioteki",
|
"LabelLibraryName": "Nazwa biblioteki",
|
||||||
|
"LabelLibrarySortByProgress": "Postęp zaktualizowany",
|
||||||
"LabelLimit": "Limit",
|
"LabelLimit": "Limit",
|
||||||
"LabelLineSpacing": "Odstęp między wierszami",
|
"LabelLineSpacing": "Odstęp między wierszami",
|
||||||
"LabelListenAgain": "Słuchaj ponownie",
|
"LabelListenAgain": "Słuchaj ponownie",
|
||||||
@ -427,6 +434,7 @@
|
|||||||
"LabelMatchExistingUsersBy": "Dopasuje istniejących użytkowników poprzez",
|
"LabelMatchExistingUsersBy": "Dopasuje istniejących użytkowników poprzez",
|
||||||
"LabelMatchExistingUsersByDescription": "Służy do łączenia istniejących użytkowników. Po połączeniu użytkownicy zostaną dopasowani za pomocą unikalnego identyfikatora od dostawcy SSO",
|
"LabelMatchExistingUsersByDescription": "Służy do łączenia istniejących użytkowników. Po połączeniu użytkownicy zostaną dopasowani za pomocą unikalnego identyfikatora od dostawcy SSO",
|
||||||
"LabelMaxEpisodesToDownload": "Maksymalna liczba odcinków do pobrania. Użyj 0, aby wyłączyć ograniczenie.",
|
"LabelMaxEpisodesToDownload": "Maksymalna liczba odcinków do pobrania. Użyj 0, aby wyłączyć ograniczenie.",
|
||||||
|
"LabelMaxEpisodesToDownloadPerCheck": "Maksymalna liczba nowych odcinków do pobrania na jedno sprawdzenie",
|
||||||
"LabelMaxEpisodesToKeep": "Maksymalna liczba odcinków do zachowania",
|
"LabelMaxEpisodesToKeep": "Maksymalna liczba odcinków do zachowania",
|
||||||
"LabelMaxEpisodesToKeepHelp": "Wartość 0 wyłącza maksymalny limit. Po automatycznym pobraniu nowego odcinka, najstarszy odcinek zostanie usunięty, jeśli masz ich więcej niż X. Spowoduje to usunięcie tylko 1 odcinka na nowe pobieranie.",
|
"LabelMaxEpisodesToKeepHelp": "Wartość 0 wyłącza maksymalny limit. Po automatycznym pobraniu nowego odcinka, najstarszy odcinek zostanie usunięty, jeśli masz ich więcej niż X. Spowoduje to usunięcie tylko 1 odcinka na nowe pobieranie.",
|
||||||
"LabelMediaPlayer": "Odtwarzacz",
|
"LabelMediaPlayer": "Odtwarzacz",
|
||||||
@ -453,6 +461,7 @@
|
|||||||
"LabelNewestEpisodes": "Najnowsze odcinki",
|
"LabelNewestEpisodes": "Najnowsze odcinki",
|
||||||
"LabelNextBackupDate": "Data kolejnej kopii zapasowej",
|
"LabelNextBackupDate": "Data kolejnej kopii zapasowej",
|
||||||
"LabelNextScheduledRun": "Następne uruchomienie",
|
"LabelNextScheduledRun": "Następne uruchomienie",
|
||||||
|
"LabelNoApiKeys": "Brak kluczy API",
|
||||||
"LabelNoCustomMetadataProviders": "Brak niestandardowych dostawców metadanych",
|
"LabelNoCustomMetadataProviders": "Brak niestandardowych dostawców metadanych",
|
||||||
"LabelNoEpisodesSelected": "Nie wybrano żadnych odcinków",
|
"LabelNoEpisodesSelected": "Nie wybrano żadnych odcinków",
|
||||||
"LabelNotFinished": "Nieukończone",
|
"LabelNotFinished": "Nieukończone",
|
||||||
@ -469,6 +478,8 @@
|
|||||||
"LabelNotificationsMaxQueueSizeHelp": "Zdarzenia są ograniczone do 1 na sekundę. Zdarzenia będą ignorowane jeśli kolejka ma maksymalny rozmiar. Zapobiega to spamowaniu powiadomieniami.",
|
"LabelNotificationsMaxQueueSizeHelp": "Zdarzenia są ograniczone do 1 na sekundę. Zdarzenia będą ignorowane jeśli kolejka ma maksymalny rozmiar. Zapobiega to spamowaniu powiadomieniami.",
|
||||||
"LabelNumberOfBooks": "Liczba książek",
|
"LabelNumberOfBooks": "Liczba książek",
|
||||||
"LabelNumberOfEpisodes": "# Odcinków",
|
"LabelNumberOfEpisodes": "# Odcinków",
|
||||||
|
"LabelOpenIDAdvancedPermsClaimDescription": "Nazwa deklaracji OpenID zawierającej zaawansowane uprawnienia do działań użytkownika w aplikacji, które będą miały zastosowanie do ról innych niż administracyjne (<b>jeśli skonfigurowano</b>). Jeśli deklaracja nie zostanie uwzględniona w odpowiedzi, dostęp do ABS zostanie zablokowany. Brak jednej opcji zostanie uznany za <code>fałsz</code>. Upewnij się, że deklaracja dostawcy tożsamości jest zgodna z oczekiwaną strukturą:",
|
||||||
|
"LabelOpenIDClaims": "Pozostaw poniższe opcje puste, aby wyłączyć zaawansowane przypisywanie grup i uprawnień. Automatycznie zostanie przypisana grupa „Użytkownik”.",
|
||||||
"LabelOpenRSSFeed": "Otwórz kanał RSS",
|
"LabelOpenRSSFeed": "Otwórz kanał RSS",
|
||||||
"LabelOverwrite": "Nadpisz",
|
"LabelOverwrite": "Nadpisz",
|
||||||
"LabelPaginationPageXOfY": "Strona {0} z {1}",
|
"LabelPaginationPageXOfY": "Strona {0} z {1}",
|
||||||
@ -486,6 +497,7 @@
|
|||||||
"LabelPersonalYearReview": "Podsumowanie twojego roku ({0})",
|
"LabelPersonalYearReview": "Podsumowanie twojego roku ({0})",
|
||||||
"LabelPhotoPathURL": "Scieżka/URL do zdjęcia",
|
"LabelPhotoPathURL": "Scieżka/URL do zdjęcia",
|
||||||
"LabelPlayMethod": "Metoda odtwarzania",
|
"LabelPlayMethod": "Metoda odtwarzania",
|
||||||
|
"LabelPlaybackRateIncrementDecrement": "Zwiększenie/zmniejszenie szybkości odtwarzania",
|
||||||
"LabelPlayerChapterNumberMarker": "{0} z {1}",
|
"LabelPlayerChapterNumberMarker": "{0} z {1}",
|
||||||
"LabelPlaylists": "Listy odtwarzania",
|
"LabelPlaylists": "Listy odtwarzania",
|
||||||
"LabelPodcast": "Podcast",
|
"LabelPodcast": "Podcast",
|
||||||
@ -502,10 +514,15 @@
|
|||||||
"LabelPubDate": "Data publikacji",
|
"LabelPubDate": "Data publikacji",
|
||||||
"LabelPublishYear": "Rok publikacji",
|
"LabelPublishYear": "Rok publikacji",
|
||||||
"LabelPublishedDate": "Opublikowano {0}",
|
"LabelPublishedDate": "Opublikowano {0}",
|
||||||
|
"LabelPublishedDecade": "Dekada publikacji",
|
||||||
|
"LabelPublishedDecades": "Dekada publikacji",
|
||||||
"LabelPublisher": "Wydawca",
|
"LabelPublisher": "Wydawca",
|
||||||
"LabelPublishers": "Wydawcy",
|
"LabelPublishers": "Wydawcy",
|
||||||
|
"LabelRSSFeedCustomOwnerEmail": "Email właściciela",
|
||||||
|
"LabelRSSFeedCustomOwnerName": "Nazwa właściciela",
|
||||||
"LabelRSSFeedOpen": "Otwarty Kanał RSS",
|
"LabelRSSFeedOpen": "Otwarty Kanał RSS",
|
||||||
"LabelRSSFeedPreventIndexing": "Zapobiegaj indeksowaniu",
|
"LabelRSSFeedPreventIndexing": "Zapobiegaj indeksowaniu",
|
||||||
|
"LabelRSSFeedSlug": "Numer Kanału RSS",
|
||||||
"LabelRSSFeedURL": "URL kanały RSS",
|
"LabelRSSFeedURL": "URL kanały RSS",
|
||||||
"LabelRandomly": "Losowo",
|
"LabelRandomly": "Losowo",
|
||||||
"LabelReAddSeriesToContinueListening": "Ponownie Dodaj Serię do sekcji Kontunuuj Odtwarzanie",
|
"LabelReAddSeriesToContinueListening": "Ponownie Dodaj Serię do sekcji Kontunuuj Odtwarzanie",
|
||||||
@ -520,6 +537,7 @@
|
|||||||
"LabelReleaseDate": "Data wydania",
|
"LabelReleaseDate": "Data wydania",
|
||||||
"LabelRemoveAllMetadataAbs": "Usuń wszystkie pliki metadata.abs",
|
"LabelRemoveAllMetadataAbs": "Usuń wszystkie pliki metadata.abs",
|
||||||
"LabelRemoveAllMetadataJson": "Usuń wszystkie pliki metadata.json",
|
"LabelRemoveAllMetadataJson": "Usuń wszystkie pliki metadata.json",
|
||||||
|
"LabelRemoveAudibleBranding": "Usuń Audible intro i outro z rozdziałów",
|
||||||
"LabelRemoveCover": "Usuń okładkę",
|
"LabelRemoveCover": "Usuń okładkę",
|
||||||
"LabelRemoveMetadataFile": "Usuń pliki metadanych z folderów biblioteki",
|
"LabelRemoveMetadataFile": "Usuń pliki metadanych z folderów biblioteki",
|
||||||
"LabelRemoveMetadataFileHelp": "Usuń wszystkie pliki metadata.json i metadata.abs z {0} folderów.",
|
"LabelRemoveMetadataFileHelp": "Usuń wszystkie pliki metadata.json i metadata.abs z {0} folderów.",
|
||||||
@ -532,6 +550,7 @@
|
|||||||
"LabelSelectAll": "Wybierz wszystko",
|
"LabelSelectAll": "Wybierz wszystko",
|
||||||
"LabelSelectAllEpisodes": "Wybierz wszystkie odcinki",
|
"LabelSelectAllEpisodes": "Wybierz wszystkie odcinki",
|
||||||
"LabelSelectEpisodesShowing": "Wybierz {0} wyświetlanych odcinków",
|
"LabelSelectEpisodesShowing": "Wybierz {0} wyświetlanych odcinków",
|
||||||
|
"LabelSelectUser": "Wybierz użytkownika",
|
||||||
"LabelSelectUsers": "Wybór użytkowników",
|
"LabelSelectUsers": "Wybór użytkowników",
|
||||||
"LabelSendEbookToDevice": "Wyślij ebook do...",
|
"LabelSendEbookToDevice": "Wyślij ebook do...",
|
||||||
"LabelSequence": "Kolejność",
|
"LabelSequence": "Kolejność",
|
||||||
@ -541,6 +560,7 @@
|
|||||||
"LabelServerYearReview": "Podsumowanie serwera w roku ({0})",
|
"LabelServerYearReview": "Podsumowanie serwera w roku ({0})",
|
||||||
"LabelSetEbookAsPrimary": "Ustaw jako pierwszy",
|
"LabelSetEbookAsPrimary": "Ustaw jako pierwszy",
|
||||||
"LabelSetEbookAsSupplementary": "Ustaw jako dodatkowy",
|
"LabelSetEbookAsSupplementary": "Ustaw jako dodatkowy",
|
||||||
|
"LabelSettingsAllowIframe": "Zezwól na osadzanie w ramce iframe",
|
||||||
"LabelSettingsAudiobooksOnly": "Wyłącznie audiobooki",
|
"LabelSettingsAudiobooksOnly": "Wyłącznie audiobooki",
|
||||||
"LabelSettingsAudiobooksOnlyHelp": "Włączenie tej funkcji spowoduje ignorowanie plików ebooków, chyba że znajdują się wewnątrz folderu audiobooka kiedy to będą pokazywane jako dodatkowe ebooki",
|
"LabelSettingsAudiobooksOnlyHelp": "Włączenie tej funkcji spowoduje ignorowanie plików ebooków, chyba że znajdują się wewnątrz folderu audiobooka kiedy to będą pokazywane jako dodatkowe ebooki",
|
||||||
"LabelSettingsBookshelfViewHelp": "Widok półki z książkami",
|
"LabelSettingsBookshelfViewHelp": "Widok półki z książkami",
|
||||||
@ -559,6 +579,8 @@
|
|||||||
"LabelSettingsHideSingleBookSeriesHelp": "Serie, które posiadają tylko jedną książkę, nie będą pokazywane na stronie z seriami i na stronie domowej z półkami.",
|
"LabelSettingsHideSingleBookSeriesHelp": "Serie, które posiadają tylko jedną książkę, nie będą pokazywane na stronie z seriami i na stronie domowej z półkami.",
|
||||||
"LabelSettingsHomePageBookshelfView": "Widok półki z książkami na stronie głównej",
|
"LabelSettingsHomePageBookshelfView": "Widok półki z książkami na stronie głównej",
|
||||||
"LabelSettingsLibraryBookshelfView": "Widok półki z książkami na stronie biblioteki",
|
"LabelSettingsLibraryBookshelfView": "Widok półki z książkami na stronie biblioteki",
|
||||||
|
"LabelSettingsLibraryMarkAsFinishedPercentComplete": "Procent ukończenia jest większy niż",
|
||||||
|
"LabelSettingsLibraryMarkAsFinishedTimeRemaining": "Pozostały czas jest mniejszy niż (sekund)",
|
||||||
"LabelSettingsLibraryMarkAsFinishedWhen": "Oznacz element multimedialny jako ukończony, gdy",
|
"LabelSettingsLibraryMarkAsFinishedWhen": "Oznacz element multimedialny jako ukończony, gdy",
|
||||||
"LabelSettingsOnlyShowLaterBooksInContinueSeries": "Pomiń poprzednie książki przy kontynuacji serii",
|
"LabelSettingsOnlyShowLaterBooksInContinueSeries": "Pomiń poprzednie książki przy kontynuacji serii",
|
||||||
"LabelSettingsParseSubtitles": "Przetwarzaj podtytuły",
|
"LabelSettingsParseSubtitles": "Przetwarzaj podtytuły",
|
||||||
|
@ -656,7 +656,8 @@
|
|||||||
"LabelTheme": "Тема",
|
"LabelTheme": "Тема",
|
||||||
"LabelThemeDark": "Темная",
|
"LabelThemeDark": "Темная",
|
||||||
"LabelThemeLight": "Светлая",
|
"LabelThemeLight": "Светлая",
|
||||||
"LabelTimeBase": "Временная база",
|
"LabelThemeSepia": "Сепия",
|
||||||
|
"LabelTimeBase": "Основное время",
|
||||||
"LabelTimeDurationXHours": "{0} часов",
|
"LabelTimeDurationXHours": "{0} часов",
|
||||||
"LabelTimeDurationXMinutes": "{0} минут",
|
"LabelTimeDurationXMinutes": "{0} минут",
|
||||||
"LabelTimeDurationXSeconds": "{0} секунд",
|
"LabelTimeDurationXSeconds": "{0} секунд",
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"ButtonAdd": "Dodaj",
|
"ButtonAdd": "Dodaj",
|
||||||
|
"ButtonAddApiKey": "Dodaj API ključ",
|
||||||
"ButtonAddChapters": "Dodaj poglavja",
|
"ButtonAddChapters": "Dodaj poglavja",
|
||||||
"ButtonAddDevice": "Dodaj napravo",
|
"ButtonAddDevice": "Dodaj napravo",
|
||||||
"ButtonAddLibrary": "Dodaj knjižnico",
|
"ButtonAddLibrary": "Dodaj knjižnico",
|
||||||
@ -20,6 +21,7 @@
|
|||||||
"ButtonChooseAFolder": "Izberite mapo",
|
"ButtonChooseAFolder": "Izberite mapo",
|
||||||
"ButtonChooseFiles": "Izberite datoteke",
|
"ButtonChooseFiles": "Izberite datoteke",
|
||||||
"ButtonClearFilter": "Počisti filter",
|
"ButtonClearFilter": "Počisti filter",
|
||||||
|
"ButtonClose": "Zapri",
|
||||||
"ButtonCloseFeed": "Zapri vir",
|
"ButtonCloseFeed": "Zapri vir",
|
||||||
"ButtonCloseSession": "Zapri odprto sejo",
|
"ButtonCloseSession": "Zapri odprto sejo",
|
||||||
"ButtonCollections": "Zbirke",
|
"ButtonCollections": "Zbirke",
|
||||||
@ -119,6 +121,7 @@
|
|||||||
"HeaderAccount": "Račun",
|
"HeaderAccount": "Račun",
|
||||||
"HeaderAddCustomMetadataProvider": "Dodaj ponudnika metapodatkov po meri",
|
"HeaderAddCustomMetadataProvider": "Dodaj ponudnika metapodatkov po meri",
|
||||||
"HeaderAdvanced": "Napredno",
|
"HeaderAdvanced": "Napredno",
|
||||||
|
"HeaderApiKeys": "API ključi",
|
||||||
"HeaderAppriseNotificationSettings": "Nastavitve obvestil Apprise",
|
"HeaderAppriseNotificationSettings": "Nastavitve obvestil Apprise",
|
||||||
"HeaderAudioTracks": "Zvočni posnetki",
|
"HeaderAudioTracks": "Zvočni posnetki",
|
||||||
"HeaderAudiobookTools": "Orodja za upravljanje datotek zvočnih knjig",
|
"HeaderAudiobookTools": "Orodja za upravljanje datotek zvočnih knjig",
|
||||||
@ -162,6 +165,7 @@
|
|||||||
"HeaderMetadataOrderOfPrecedence": "Vrstni red metapodatkov",
|
"HeaderMetadataOrderOfPrecedence": "Vrstni red metapodatkov",
|
||||||
"HeaderMetadataToEmbed": "Metapodatki za vdelavo",
|
"HeaderMetadataToEmbed": "Metapodatki za vdelavo",
|
||||||
"HeaderNewAccount": "Nov račun",
|
"HeaderNewAccount": "Nov račun",
|
||||||
|
"HeaderNewApiKey": "Nov API ključ",
|
||||||
"HeaderNewLibrary": "Nova knjižnica",
|
"HeaderNewLibrary": "Nova knjižnica",
|
||||||
"HeaderNotificationCreate": "Ustvari obvestilo",
|
"HeaderNotificationCreate": "Ustvari obvestilo",
|
||||||
"HeaderNotificationUpdate": "Posodobi obvestilo",
|
"HeaderNotificationUpdate": "Posodobi obvestilo",
|
||||||
@ -206,6 +210,7 @@
|
|||||||
"HeaderTableOfContents": "Kazalo",
|
"HeaderTableOfContents": "Kazalo",
|
||||||
"HeaderTools": "Orodja",
|
"HeaderTools": "Orodja",
|
||||||
"HeaderUpdateAccount": "Posodobi račun",
|
"HeaderUpdateAccount": "Posodobi račun",
|
||||||
|
"HeaderUpdateApiKey": "Posodobi API ključ",
|
||||||
"HeaderUpdateAuthor": "Posodobi avtorja",
|
"HeaderUpdateAuthor": "Posodobi avtorja",
|
||||||
"HeaderUpdateDetails": "Posodobi podrobnosti",
|
"HeaderUpdateDetails": "Posodobi podrobnosti",
|
||||||
"HeaderUpdateLibrary": "Posodobi knjižnico",
|
"HeaderUpdateLibrary": "Posodobi knjižnico",
|
||||||
@ -235,6 +240,10 @@
|
|||||||
"LabelAllUsersExcludingGuests": "Vsi uporabniki razen gosti",
|
"LabelAllUsersExcludingGuests": "Vsi uporabniki razen gosti",
|
||||||
"LabelAllUsersIncludingGuests": "Vsi uporabniki vključno z gosti",
|
"LabelAllUsersIncludingGuests": "Vsi uporabniki vključno z gosti",
|
||||||
"LabelAlreadyInYourLibrary": "Že v tvoji knjižnici",
|
"LabelAlreadyInYourLibrary": "Že v tvoji knjižnici",
|
||||||
|
"LabelApiKeyCreated": "API ključ \"{0}\" je uspešno ustvarjen.",
|
||||||
|
"LabelApiKeyCreatedDescription": "Ne pozabite takoj kopirati API ključ, saj ga kasneje ne boste mogli več videti.",
|
||||||
|
"LabelApiKeyUser": "Izvedi v imenu uporabnika",
|
||||||
|
"LabelApiKeyUserDescription": "Ta API ključ bo imel enaka dovoljenja kot uporabnik, v imenu katerega deluje. V dnevnikih bo to prikazano enako, kot če bi zahtevo oddal uporabnik.",
|
||||||
"LabelApiToken": "API žeton",
|
"LabelApiToken": "API žeton",
|
||||||
"LabelAppend": "Priloži",
|
"LabelAppend": "Priloži",
|
||||||
"LabelAudioBitrate": "Avdio bitna hitrost (npr. 128k)",
|
"LabelAudioBitrate": "Avdio bitna hitrost (npr. 128k)",
|
||||||
@ -346,6 +355,10 @@
|
|||||||
"LabelExample": "Primer",
|
"LabelExample": "Primer",
|
||||||
"LabelExpandSeries": "Razširi serije",
|
"LabelExpandSeries": "Razširi serije",
|
||||||
"LabelExpandSubSeries": "Razširi podserije",
|
"LabelExpandSubSeries": "Razširi podserije",
|
||||||
|
"LabelExpired": "Potekel",
|
||||||
|
"LabelExpiresAt": "Peteče ob",
|
||||||
|
"LabelExpiresInSeconds": "Poteče čez (sekunde)",
|
||||||
|
"LabelExpiresNever": "Nikoli",
|
||||||
"LabelExplicit": "Eksplicitno",
|
"LabelExplicit": "Eksplicitno",
|
||||||
"LabelExplicitChecked": "Eksplicitno (omogočeno)",
|
"LabelExplicitChecked": "Eksplicitno (omogočeno)",
|
||||||
"LabelExplicitUnchecked": "Ne eksplicitno (onemogočeno)",
|
"LabelExplicitUnchecked": "Ne eksplicitno (onemogočeno)",
|
||||||
@ -405,6 +418,7 @@
|
|||||||
"LabelLanguages": "Jeziki",
|
"LabelLanguages": "Jeziki",
|
||||||
"LabelLastBookAdded": "Zadnja dodana knjiga",
|
"LabelLastBookAdded": "Zadnja dodana knjiga",
|
||||||
"LabelLastBookUpdated": "Zadnja posodobljena knjiga",
|
"LabelLastBookUpdated": "Zadnja posodobljena knjiga",
|
||||||
|
"LabelLastProgressDate": "Zadnji napredek: {0}",
|
||||||
"LabelLastSeen": "Nazadnje viden",
|
"LabelLastSeen": "Nazadnje viden",
|
||||||
"LabelLastTime": "Nazadnje",
|
"LabelLastTime": "Nazadnje",
|
||||||
"LabelLastUpdate": "Zadnja posodobitev",
|
"LabelLastUpdate": "Zadnja posodobitev",
|
||||||
@ -417,6 +431,7 @@
|
|||||||
"LabelLibraryFilterSublistEmpty": "Ne {0}",
|
"LabelLibraryFilterSublistEmpty": "Ne {0}",
|
||||||
"LabelLibraryItem": "Element knjižnice",
|
"LabelLibraryItem": "Element knjižnice",
|
||||||
"LabelLibraryName": "Ime knjižnice",
|
"LabelLibraryName": "Ime knjižnice",
|
||||||
|
"LabelLibrarySortByProgress": "Napredek posodobljen",
|
||||||
"LabelLimit": "Omejitev",
|
"LabelLimit": "Omejitev",
|
||||||
"LabelLineSpacing": "Vrstični razmak",
|
"LabelLineSpacing": "Vrstični razmak",
|
||||||
"LabelListenAgain": "Poslušaj znova",
|
"LabelListenAgain": "Poslušaj znova",
|
||||||
@ -425,6 +440,7 @@
|
|||||||
"LabelLogLevelWarn": "Opozoritve",
|
"LabelLogLevelWarn": "Opozoritve",
|
||||||
"LabelLookForNewEpisodesAfterDate": "Poiščite nove epizode po tem datumu",
|
"LabelLookForNewEpisodesAfterDate": "Poiščite nove epizode po tem datumu",
|
||||||
"LabelLowestPriority": "Najnižja prioriteta",
|
"LabelLowestPriority": "Najnižja prioriteta",
|
||||||
|
"LabelMatchConfidence": "Zaupanje",
|
||||||
"LabelMatchExistingUsersBy": "Poveži obstoječe uporabnike po",
|
"LabelMatchExistingUsersBy": "Poveži obstoječe uporabnike po",
|
||||||
"LabelMatchExistingUsersByDescription": "Uporablja se za povezovanje obstoječih uporabnikov. Ko se vzpostavi povezava, se bodo uporabniki ujemali z enoličnim ID-jem vašega ponudnika SSO",
|
"LabelMatchExistingUsersByDescription": "Uporablja se za povezovanje obstoječih uporabnikov. Ko se vzpostavi povezava, se bodo uporabniki ujemali z enoličnim ID-jem vašega ponudnika SSO",
|
||||||
"LabelMaxEpisodesToDownload": "Največje število epizod za prenos. Uporabite 0 za neomejeno.",
|
"LabelMaxEpisodesToDownload": "Največje število epizod za prenos. Uporabite 0 za neomejeno.",
|
||||||
@ -455,6 +471,7 @@
|
|||||||
"LabelNewestEpisodes": "Najnovejše epizode",
|
"LabelNewestEpisodes": "Najnovejše epizode",
|
||||||
"LabelNextBackupDate": "Naslednji datum varnostnega kopiranja",
|
"LabelNextBackupDate": "Naslednji datum varnostnega kopiranja",
|
||||||
"LabelNextScheduledRun": "Naslednji načrtovani zagon",
|
"LabelNextScheduledRun": "Naslednji načrtovani zagon",
|
||||||
|
"LabelNoApiKeys": "Ni API ključev",
|
||||||
"LabelNoCustomMetadataProviders": "Ni ponudnikov metapodatkov po meri",
|
"LabelNoCustomMetadataProviders": "Ni ponudnikov metapodatkov po meri",
|
||||||
"LabelNoEpisodesSelected": "Izbrana ni nobena epizoda",
|
"LabelNoEpisodesSelected": "Izbrana ni nobena epizoda",
|
||||||
"LabelNotFinished": "Ni dokončano",
|
"LabelNotFinished": "Ni dokončano",
|
||||||
@ -544,6 +561,7 @@
|
|||||||
"LabelSelectAll": "Izberite vse",
|
"LabelSelectAll": "Izberite vse",
|
||||||
"LabelSelectAllEpisodes": "Izberite vse epizode",
|
"LabelSelectAllEpisodes": "Izberite vse epizode",
|
||||||
"LabelSelectEpisodesShowing": "Izberi {0} prikazanih epizod",
|
"LabelSelectEpisodesShowing": "Izberi {0} prikazanih epizod",
|
||||||
|
"LabelSelectUser": "Izberi uporabnika",
|
||||||
"LabelSelectUsers": "Izberite uporabnike",
|
"LabelSelectUsers": "Izberite uporabnike",
|
||||||
"LabelSendEbookToDevice": "Pošlji eknjigo k...",
|
"LabelSendEbookToDevice": "Pošlji eknjigo k...",
|
||||||
"LabelSequence": "Zaporedje",
|
"LabelSequence": "Zaporedje",
|
||||||
@ -640,6 +658,7 @@
|
|||||||
"LabelTheme": "Tema",
|
"LabelTheme": "Tema",
|
||||||
"LabelThemeDark": "Temna",
|
"LabelThemeDark": "Temna",
|
||||||
"LabelThemeLight": "Svetla",
|
"LabelThemeLight": "Svetla",
|
||||||
|
"LabelThemeSepia": "Sepija",
|
||||||
"LabelTimeBase": "Osnovni čas",
|
"LabelTimeBase": "Osnovni čas",
|
||||||
"LabelTimeDurationXHours": "{0} ur",
|
"LabelTimeDurationXHours": "{0} ur",
|
||||||
"LabelTimeDurationXMinutes": "{0} minut",
|
"LabelTimeDurationXMinutes": "{0} minut",
|
||||||
@ -708,7 +727,9 @@
|
|||||||
"MessageAddToPlayerQueue": "Dodaj v čakalno vrsto predvajalnika",
|
"MessageAddToPlayerQueue": "Dodaj v čakalno vrsto predvajalnika",
|
||||||
"MessageAppriseDescription": "Če želite uporabljati to funkcijo, morate imeti zagnano namestitev <a href=\"https://github.com/caronc/apprise-api\" target=\"_blank\">API Apprise</a> ali API, ki bo obravnavala te iste zahteve. <br />Url API-ja Apprise mora biti celotna pot URL-ja za pošiljanje obvestila, npr. če je vaša namestitev API-ja postrežena na <code>http://192.168.1.1:8337</code>, bi morali vnesti <code >http://192.168.1.1:8337/notify</code>.",
|
"MessageAppriseDescription": "Če želite uporabljati to funkcijo, morate imeti zagnano namestitev <a href=\"https://github.com/caronc/apprise-api\" target=\"_blank\">API Apprise</a> ali API, ki bo obravnavala te iste zahteve. <br />Url API-ja Apprise mora biti celotna pot URL-ja za pošiljanje obvestila, npr. če je vaša namestitev API-ja postrežena na <code>http://192.168.1.1:8337</code>, bi morali vnesti <code >http://192.168.1.1:8337/notify</code>.",
|
||||||
"MessageAsinCheck": "Prepričajte se, da uporabljate ASIN iz pravilne zvočne regije, ne iz Amazona.",
|
"MessageAsinCheck": "Prepričajte se, da uporabljate ASIN iz pravilne zvočne regije, ne iz Amazona.",
|
||||||
|
"MessageAuthenticationLegacyTokenWarning": "Zastareli API žetoni bodo v prihodnosti odstranjeni. Namesto tega uporabite <a href=\"/config/api-keys\">API ključe</a>.",
|
||||||
"MessageAuthenticationOIDCChangesRestart": "Za uveljavitev OIDC sprememb, po shranjevanju znova zaženite strežnik.",
|
"MessageAuthenticationOIDCChangesRestart": "Za uveljavitev OIDC sprememb, po shranjevanju znova zaženite strežnik.",
|
||||||
|
"MessageAuthenticationSecurityMessage": "Zaradi varnosti je bila izboljšana avtentikacija. Vsi uporabniki se morajo ponovno prijaviti.",
|
||||||
"MessageBackupsDescription": "Varnostne kopije vključujejo uporabnike, napredek uporabnikov, podrobnosti elementov knjižnice, nastavitve strežnika in slike, shranjene v <code>/metadata/items</code> & <code>/metadata/authors</code>. Varnostne kopije <strong>ne</strong> vključujejo datotek, shranjenih v mapah vaše knjižnice.",
|
"MessageBackupsDescription": "Varnostne kopije vključujejo uporabnike, napredek uporabnikov, podrobnosti elementov knjižnice, nastavitve strežnika in slike, shranjene v <code>/metadata/items</code> & <code>/metadata/authors</code>. Varnostne kopije <strong>ne</strong> vključujejo datotek, shranjenih v mapah vaše knjižnice.",
|
||||||
"MessageBackupsLocationEditNote": "Opomba: Posodabljanje lokacije varnostne kopije ne bo premaknilo ali spremenilo obstoječih varnostnih kopij",
|
"MessageBackupsLocationEditNote": "Opomba: Posodabljanje lokacije varnostne kopije ne bo premaknilo ali spremenilo obstoječih varnostnih kopij",
|
||||||
"MessageBackupsLocationNoEditNote": "Opomba: Lokacija varnostne kopije je nastavljena s spremenljivko okolja in je tu ni mogoče spremeniti.",
|
"MessageBackupsLocationNoEditNote": "Opomba: Lokacija varnostne kopije je nastavljena s spremenljivko okolja in je tu ni mogoče spremeniti.",
|
||||||
@ -730,6 +751,7 @@
|
|||||||
"MessageChaptersNotFound": "Poglavij ni bilo najdenih",
|
"MessageChaptersNotFound": "Poglavij ni bilo najdenih",
|
||||||
"MessageCheckingCron": "Preverjam cron...",
|
"MessageCheckingCron": "Preverjam cron...",
|
||||||
"MessageConfirmCloseFeed": "Ali ste prepričani, da želite zapreti ta vir?",
|
"MessageConfirmCloseFeed": "Ali ste prepričani, da želite zapreti ta vir?",
|
||||||
|
"MessageConfirmDeleteApiKey": "Ali ste prepričani, da želite izbrisati API ključ \"{0}\"?",
|
||||||
"MessageConfirmDeleteBackup": "Ali ste prepričani, da želite izbrisati varnostno kopijo za {0}?",
|
"MessageConfirmDeleteBackup": "Ali ste prepričani, da želite izbrisati varnostno kopijo za {0}?",
|
||||||
"MessageConfirmDeleteDevice": "Ali ste prepričani, da želite izbrisati e-bralnik \"{0}\"?",
|
"MessageConfirmDeleteDevice": "Ali ste prepričani, da želite izbrisati e-bralnik \"{0}\"?",
|
||||||
"MessageConfirmDeleteFile": "To bo izbrisalo datoteko iz vašega datotečnega sistema. Ali ste prepričani?",
|
"MessageConfirmDeleteFile": "To bo izbrisalo datoteko iz vašega datotečnega sistema. Ali ste prepričani?",
|
||||||
@ -1001,6 +1023,8 @@
|
|||||||
"ToastEpisodeDownloadQueueClearSuccess": "Čakalna vrsta za prenos epizod je počiščena",
|
"ToastEpisodeDownloadQueueClearSuccess": "Čakalna vrsta za prenos epizod je počiščena",
|
||||||
"ToastEpisodeUpdateSuccess": "Število posodobljenih epizod: {0}",
|
"ToastEpisodeUpdateSuccess": "Število posodobljenih epizod: {0}",
|
||||||
"ToastErrorCannotShare": "V tej napravi ni mogoče dati v skupno rabo",
|
"ToastErrorCannotShare": "V tej napravi ni mogoče dati v skupno rabo",
|
||||||
|
"ToastFailedToCreate": "Ustvarjanje ni bilo uspešno",
|
||||||
|
"ToastFailedToDelete": "Brisanje ni bilo uspešno",
|
||||||
"ToastFailedToLoadData": "Podatkov ni bilo mogoče naložiti",
|
"ToastFailedToLoadData": "Podatkov ni bilo mogoče naložiti",
|
||||||
"ToastFailedToMatch": "Ujemanje ni uspelo",
|
"ToastFailedToMatch": "Ujemanje ni uspelo",
|
||||||
"ToastFailedToShare": "Skupna raba ni uspela",
|
"ToastFailedToShare": "Skupna raba ni uspela",
|
||||||
@ -1032,6 +1056,7 @@
|
|||||||
"ToastMustHaveAtLeastOnePath": "Imeti mora vsaj eno pot",
|
"ToastMustHaveAtLeastOnePath": "Imeti mora vsaj eno pot",
|
||||||
"ToastNameEmailRequired": "Ime in e-pošta sta obvezna",
|
"ToastNameEmailRequired": "Ime in e-pošta sta obvezna",
|
||||||
"ToastNameRequired": "Ime je obvezno",
|
"ToastNameRequired": "Ime je obvezno",
|
||||||
|
"ToastNewApiKeyUserError": "Morate izbrati uporabnika",
|
||||||
"ToastNewEpisodesFound": "Število najdenih novih epizod: {0}",
|
"ToastNewEpisodesFound": "Število najdenih novih epizod: {0}",
|
||||||
"ToastNewUserCreatedFailed": "Računa ni bilo mogoče ustvariti: \"{0}\"",
|
"ToastNewUserCreatedFailed": "Računa ni bilo mogoče ustvariti: \"{0}\"",
|
||||||
"ToastNewUserCreatedSuccess": "Nov račun je bil ustvarjen",
|
"ToastNewUserCreatedSuccess": "Nov račun je bil ustvarjen",
|
||||||
|
@ -436,6 +436,7 @@
|
|||||||
"LabelLogLevelWarn": "Varningar",
|
"LabelLogLevelWarn": "Varningar",
|
||||||
"LabelLookForNewEpisodesAfterDate": "Sök efter nya avsnitt efter detta datum",
|
"LabelLookForNewEpisodesAfterDate": "Sök efter nya avsnitt efter detta datum",
|
||||||
"LabelLowestPriority": "Lägst prioritet",
|
"LabelLowestPriority": "Lägst prioritet",
|
||||||
|
"LabelMatchConfidence": "Förtroende",
|
||||||
"LabelMatchExistingUsersBy": "Matcha befintliga användare med",
|
"LabelMatchExistingUsersBy": "Matcha befintliga användare med",
|
||||||
"LabelMatchExistingUsersByDescription": "Används för att koppla existerande användare. När kopplingen sker kommer användaren att matchas med ett unikt ID från SSO-leverantören.",
|
"LabelMatchExistingUsersByDescription": "Används för att koppla existerande användare. När kopplingen sker kommer användaren att matchas med ett unikt ID från SSO-leverantören.",
|
||||||
"LabelMaxEpisodesToDownload": "Maximalt antal avsnitt att ladda ner (0 = obegränsat).",
|
"LabelMaxEpisodesToDownload": "Maximalt antal avsnitt att ladda ner (0 = obegränsat).",
|
||||||
@ -649,6 +650,7 @@
|
|||||||
"LabelTheme": "Utseende",
|
"LabelTheme": "Utseende",
|
||||||
"LabelThemeDark": "Mörkt",
|
"LabelThemeDark": "Mörkt",
|
||||||
"LabelThemeLight": "Ljust",
|
"LabelThemeLight": "Ljust",
|
||||||
|
"LabelThemeSepia": "Sepia",
|
||||||
"LabelTimeBase": "Tidsbas",
|
"LabelTimeBase": "Tidsbas",
|
||||||
"LabelTimeDurationXHours": "{0} timmar",
|
"LabelTimeDurationXHours": "{0} timmar",
|
||||||
"LabelTimeDurationXMinutes": "{0} minuter",
|
"LabelTimeDurationXMinutes": "{0} minuter",
|
||||||
@ -714,6 +716,8 @@
|
|||||||
"LabelYourProgress": "Framsteg",
|
"LabelYourProgress": "Framsteg",
|
||||||
"MessageAddToPlayerQueue": "Lägg till i spellistan",
|
"MessageAddToPlayerQueue": "Lägg till i spellistan",
|
||||||
"MessageAppriseDescription": "För att använda den här funktionen behöver du ha en instans av <a href=\"https://github.com/caronc/apprise-api\" target=\"_blank\">Apprise API</a> igång eller en API som hanterar dessa begäranden. <br />Apprise API-urlen bör vara hela URL-sökvägen för att skicka meddelandet, t.ex., om din API-instans är tillgänglig på <code>http://192.168.1.1:8337</code>, bör du ange <code>http://192.168.1.1:8337/notify</code>.",
|
"MessageAppriseDescription": "För att använda den här funktionen behöver du ha en instans av <a href=\"https://github.com/caronc/apprise-api\" target=\"_blank\">Apprise API</a> igång eller en API som hanterar dessa begäranden. <br />Apprise API-urlen bör vara hela URL-sökvägen för att skicka meddelandet, t.ex., om din API-instans är tillgänglig på <code>http://192.168.1.1:8337</code>, bör du ange <code>http://192.168.1.1:8337/notify</code>.",
|
||||||
|
"MessageAuthenticationLegacyTokenWarning": "Legacy API-koder kommer att raderas i framtiden. Använd denna istället: <a href=\"/config/api-keys\">API Keys</a>.",
|
||||||
|
"MessageAuthenticationOIDCChangesRestart": "Du måste starta om servern efter att du ändrat eller adderat OIDC (OpenID Connect).",
|
||||||
"MessageAuthenticationSecurityMessage": "Identifieringen av användare har förbättrats av säkerhetsskäl. Alla användare måste därför logga in på nytt.",
|
"MessageAuthenticationSecurityMessage": "Identifieringen av användare har förbättrats av säkerhetsskäl. Alla användare måste därför logga in på nytt.",
|
||||||
"MessageBackupsDescription": "Säkerhetskopior inkluderar användare, användarnas framsteg, biblioteksobjekt,<br>serverinställningar och bilder lagrade i <code>/metadata/items</code> & <code>/metadata/authors</code>.<br>De inkluderar <strong>INTE</strong> några filer lagrade i dina biblioteksmappar.",
|
"MessageBackupsDescription": "Säkerhetskopior inkluderar användare, användarnas framsteg, biblioteksobjekt,<br>serverinställningar och bilder lagrade i <code>/metadata/items</code> & <code>/metadata/authors</code>.<br>De inkluderar <strong>INTE</strong> några filer lagrade i dina biblioteksmappar.",
|
||||||
"MessageBackupsLocationEditNote": "OBS: När du ändrar plats för säkerhetskopiorna så flyttas INTE gamla säkerhetskopior dit",
|
"MessageBackupsLocationEditNote": "OBS: När du ändrar plats för säkerhetskopiorna så flyttas INTE gamla säkerhetskopior dit",
|
||||||
@ -733,6 +737,7 @@
|
|||||||
"MessageChapterErrorStartGteDuration": "Ogiltig starttid, måste vara mindre än ljudbokens längd",
|
"MessageChapterErrorStartGteDuration": "Ogiltig starttid, måste vara mindre än ljudbokens längd",
|
||||||
"MessageChapterErrorStartLtPrev": "Ogiltig starttid, måste vara större än eller lika med föregående kapitlets starttid",
|
"MessageChapterErrorStartLtPrev": "Ogiltig starttid, måste vara större än eller lika med föregående kapitlets starttid",
|
||||||
"MessageChapterStartIsAfter": "Kapitlets start är efter din ljudboks slut",
|
"MessageChapterStartIsAfter": "Kapitlets start är efter din ljudboks slut",
|
||||||
|
"MessageChaptersNotFound": "Inga kapitel kunde hittas",
|
||||||
"MessageCheckingCron": "Kontrollerar cron...",
|
"MessageCheckingCron": "Kontrollerar cron...",
|
||||||
"MessageConfirmCloseFeed": "Är du säker på att du vill stänga detta flöde?",
|
"MessageConfirmCloseFeed": "Är du säker på att du vill stänga detta flöde?",
|
||||||
"MessageConfirmDeleteApiKey": "Är du säker på att du vill radera API-nyckel \"{0}\"?",
|
"MessageConfirmDeleteApiKey": "Är du säker på att du vill radera API-nyckel \"{0}\"?",
|
||||||
@ -775,6 +780,7 @@
|
|||||||
"MessageConfirmRenameTagWarning": "VARNING! En liknande tagg med annat skrivsätt finns redan \"{0}\".",
|
"MessageConfirmRenameTagWarning": "VARNING! En liknande tagg med annat skrivsätt finns redan \"{0}\".",
|
||||||
"MessageConfirmResetProgress": "Är du säker på att du vill nollställa ditt framsteg?",
|
"MessageConfirmResetProgress": "Är du säker på att du vill nollställa ditt framsteg?",
|
||||||
"MessageConfirmSendEbookToDevice": "Är du säker på att du vill skicka {0} e-bok \"{1}\" till enheten \"{2}\"?",
|
"MessageConfirmSendEbookToDevice": "Är du säker på att du vill skicka {0} e-bok \"{1}\" till enheten \"{2}\"?",
|
||||||
|
"MessageConfirmUnlinkOpenId": "Är du säker på att du vill koppla bort denna användare från OpenID?",
|
||||||
"MessageDaysListenedInTheLastYear": "{0} dagars lyssnande det senaste året",
|
"MessageDaysListenedInTheLastYear": "{0} dagars lyssnande det senaste året",
|
||||||
"MessageDownloadingEpisode": "Laddar ner avsnitt",
|
"MessageDownloadingEpisode": "Laddar ner avsnitt",
|
||||||
"MessageDragFilesIntoTrackOrder": "Ändra ordningen genom att klicka och dra filerna till rätt plats",
|
"MessageDragFilesIntoTrackOrder": "Ändra ordningen genom att klicka och dra filerna till rätt plats",
|
||||||
@ -856,8 +862,10 @@
|
|||||||
"MessageScheduleRunEveryWeekdayAtTime": "Startar varje {0} klockan {1}",
|
"MessageScheduleRunEveryWeekdayAtTime": "Startar varje {0} klockan {1}",
|
||||||
"MessageSearchResultsFor": "Sökresultat för",
|
"MessageSearchResultsFor": "Sökresultat för",
|
||||||
"MessageSelected": "{0} valda",
|
"MessageSelected": "{0} valda",
|
||||||
|
"MessageSeriesSequenceCannotContainSpaces": "Ordningsnumret i en serie får inte innehålla ett mellanslag",
|
||||||
"MessageServerCouldNotBeReached": "Servern kunde inte nås",
|
"MessageServerCouldNotBeReached": "Servern kunde inte nås",
|
||||||
"MessageSetChaptersFromTracksDescription": "Använd varje ljudfil som ett kapitel och ljudfilens namn som kapitlets rubrik",
|
"MessageSetChaptersFromTracksDescription": "Använd varje ljudfil som ett kapitel och ljudfilens namn som kapitlets rubrik",
|
||||||
|
"MessageShareExpirationWillBe": "Giltig till kommer att bli <strong>{0}</strong>",
|
||||||
"MessageShareExpiresIn": "Upphör om {0}",
|
"MessageShareExpiresIn": "Upphör om {0}",
|
||||||
"MessageStartPlaybackAtTime": "Starta uppspelning av \"{0}\" vid tidpunkt {1}?",
|
"MessageStartPlaybackAtTime": "Starta uppspelning av \"{0}\" vid tidpunkt {1}?",
|
||||||
"MessageTaskAudioFileNotWritable": "Det går inte att skriva till ljudfilen \"{0}\"",
|
"MessageTaskAudioFileNotWritable": "Det går inte att skriva till ljudfilen \"{0}\"",
|
||||||
@ -935,6 +943,7 @@
|
|||||||
"StatsTotalDuration": "Med den totala längden…",
|
"StatsTotalDuration": "Med den totala längden…",
|
||||||
"StatsYearInReview": "- SAMMANSTÄLLNING AV ÅRET",
|
"StatsYearInReview": "- SAMMANSTÄLLNING AV ÅRET",
|
||||||
"ToastAccountUpdateSuccess": "Kontot har uppdaterats",
|
"ToastAccountUpdateSuccess": "Kontot har uppdaterats",
|
||||||
|
"ToastAppriseUrlRequired": "En adress till Apprise måste anges",
|
||||||
"ToastAsinRequired": "En ASIN-kod krävs",
|
"ToastAsinRequired": "En ASIN-kod krävs",
|
||||||
"ToastAuthorImageRemoveSuccess": "Författarens bild borttagen",
|
"ToastAuthorImageRemoveSuccess": "Författarens bild borttagen",
|
||||||
"ToastAuthorNotFound": "Författaren \"{0}\" kunde inte identifieras",
|
"ToastAuthorNotFound": "Författaren \"{0}\" kunde inte identifieras",
|
||||||
@ -983,6 +992,8 @@
|
|||||||
"ToastEpisodeDownloadQueueClearFailed": "Misslyckades med att tömma kön",
|
"ToastEpisodeDownloadQueueClearFailed": "Misslyckades med att tömma kön",
|
||||||
"ToastEpisodeDownloadQueueClearSuccess": "Kö för nedladdning av avsnitt har tömts",
|
"ToastEpisodeDownloadQueueClearSuccess": "Kö för nedladdning av avsnitt har tömts",
|
||||||
"ToastEpisodeUpdateSuccess": "{0} avsnitt uppdaterades",
|
"ToastEpisodeUpdateSuccess": "{0} avsnitt uppdaterades",
|
||||||
|
"ToastFailedToCreate": "Misslyckades med att addera",
|
||||||
|
"ToastFailedToDelete": "Misslyckades med att radera",
|
||||||
"ToastFailedToLoadData": "Misslyckades med att ladda data",
|
"ToastFailedToLoadData": "Misslyckades med att ladda data",
|
||||||
"ToastFailedToMatch": "Misslyckades med att matcha",
|
"ToastFailedToMatch": "Misslyckades med att matcha",
|
||||||
"ToastFailedToShare": "Misslyckades med att dela",
|
"ToastFailedToShare": "Misslyckades med att dela",
|
||||||
@ -1013,6 +1024,7 @@
|
|||||||
"ToastMetadataFilesRemovedSuccess": "{0} 'metadata.{1}' raderades",
|
"ToastMetadataFilesRemovedSuccess": "{0} 'metadata.{1}' raderades",
|
||||||
"ToastNameEmailRequired": "Ett namn och en e-postadress måste anges",
|
"ToastNameEmailRequired": "Ett namn och en e-postadress måste anges",
|
||||||
"ToastNameRequired": "Ett namn måste anges",
|
"ToastNameRequired": "Ett namn måste anges",
|
||||||
|
"ToastNewApiKeyUserError": "En användare måste väljas",
|
||||||
"ToastNewEpisodesFound": "Hittade {0} nya avsnitt",
|
"ToastNewEpisodesFound": "Hittade {0} nya avsnitt",
|
||||||
"ToastNewUserCreatedFailed": "Misslyckades med att skapa kontot \"{0}\"",
|
"ToastNewUserCreatedFailed": "Misslyckades med att skapa kontot \"{0}\"",
|
||||||
"ToastNewUserCreatedSuccess": "Ett nytt konto har skapats",
|
"ToastNewUserCreatedSuccess": "Ett nytt konto har skapats",
|
||||||
@ -1025,6 +1037,7 @@
|
|||||||
"ToastNoUpdatesNecessary": "Inga uppdateringar var nödvändiga",
|
"ToastNoUpdatesNecessary": "Inga uppdateringar var nödvändiga",
|
||||||
"ToastNotificationCreateFailed": "Misslyckades med att skapa meddelandet",
|
"ToastNotificationCreateFailed": "Misslyckades med att skapa meddelandet",
|
||||||
"ToastNotificationDeleteFailed": "Misslyckades med att radera meddelandet",
|
"ToastNotificationDeleteFailed": "Misslyckades med att radera meddelandet",
|
||||||
|
"ToastNotificationSettingsUpdateSuccess": "Inställningarna för meddelanden har ändrats",
|
||||||
"ToastNotificationUpdateSuccess": "Meddelandet har uppdaterats",
|
"ToastNotificationUpdateSuccess": "Meddelandet har uppdaterats",
|
||||||
"ToastPlaylistCreateFailed": "Det gick inte att skapa spellistan",
|
"ToastPlaylistCreateFailed": "Det gick inte att skapa spellistan",
|
||||||
"ToastPlaylistCreateSuccess": "Spellistan skapad",
|
"ToastPlaylistCreateSuccess": "Spellistan skapad",
|
||||||
@ -1068,6 +1081,8 @@
|
|||||||
"ToastSortingPrefixesUpdateSuccess": "{0} begrepp för sortering har uppdateras",
|
"ToastSortingPrefixesUpdateSuccess": "{0} begrepp för sortering har uppdateras",
|
||||||
"ToastTitleRequired": "En titel måste anges",
|
"ToastTitleRequired": "En titel måste anges",
|
||||||
"ToastUnknownError": "Ett okänt fel inträffade",
|
"ToastUnknownError": "Ett okänt fel inträffade",
|
||||||
|
"ToastUnlinkOpenIdFailed": "Misslyckades med att koppla bort användaren från OpenID",
|
||||||
|
"ToastUnlinkOpenIdSuccess": "Användaren har kopplats bort från OpenID",
|
||||||
"ToastUploaderFilepathExistsError": "En fil med namnet \"{0}\" finns redan på servern",
|
"ToastUploaderFilepathExistsError": "En fil med namnet \"{0}\" finns redan på servern",
|
||||||
"ToastUserDeleteFailed": "Misslyckades med att ta bort användaren",
|
"ToastUserDeleteFailed": "Misslyckades med att ta bort användaren",
|
||||||
"ToastUserDeleteSuccess": "Användaren borttagen",
|
"ToastUserDeleteSuccess": "Användaren borttagen",
|
||||||
|
@ -418,6 +418,7 @@
|
|||||||
"LabelLanguages": "Мови",
|
"LabelLanguages": "Мови",
|
||||||
"LabelLastBookAdded": "Останню книгу додано",
|
"LabelLastBookAdded": "Останню книгу додано",
|
||||||
"LabelLastBookUpdated": "Останню книгу оновлено",
|
"LabelLastBookUpdated": "Останню книгу оновлено",
|
||||||
|
"LabelLastProgressDate": "Останній прогрес: {0}",
|
||||||
"LabelLastSeen": "Активність",
|
"LabelLastSeen": "Активність",
|
||||||
"LabelLastTime": "Останній час",
|
"LabelLastTime": "Останній час",
|
||||||
"LabelLastUpdate": "Останнє оновлення",
|
"LabelLastUpdate": "Останнє оновлення",
|
||||||
@ -430,6 +431,7 @@
|
|||||||
"LabelLibraryFilterSublistEmpty": "Ні {0}",
|
"LabelLibraryFilterSublistEmpty": "Ні {0}",
|
||||||
"LabelLibraryItem": "Елемент бібліотеки",
|
"LabelLibraryItem": "Елемент бібліотеки",
|
||||||
"LabelLibraryName": "Назва бібліотеки",
|
"LabelLibraryName": "Назва бібліотеки",
|
||||||
|
"LabelLibrarySortByProgress": "Прогрес оновлено",
|
||||||
"LabelLimit": "Обмеження",
|
"LabelLimit": "Обмеження",
|
||||||
"LabelLineSpacing": "Відстань між рядками",
|
"LabelLineSpacing": "Відстань між рядками",
|
||||||
"LabelListenAgain": "Слухати знову",
|
"LabelListenAgain": "Слухати знову",
|
||||||
@ -656,6 +658,7 @@
|
|||||||
"LabelTheme": "Тема",
|
"LabelTheme": "Тема",
|
||||||
"LabelThemeDark": "Темна",
|
"LabelThemeDark": "Темна",
|
||||||
"LabelThemeLight": "Світла",
|
"LabelThemeLight": "Світла",
|
||||||
|
"LabelThemeSepia": "Сепія",
|
||||||
"LabelTimeBase": "Шкала часу",
|
"LabelTimeBase": "Шкала часу",
|
||||||
"LabelTimeDurationXHours": "{0} години",
|
"LabelTimeDurationXHours": "{0} години",
|
||||||
"LabelTimeDurationXMinutes": "{0} хвилини",
|
"LabelTimeDurationXMinutes": "{0} хвилини",
|
||||||
@ -802,6 +805,8 @@
|
|||||||
"MessageFeedURLWillBe": "URL-адреса каналу буде {0}",
|
"MessageFeedURLWillBe": "URL-адреса каналу буде {0}",
|
||||||
"MessageFetching": "Отримання...",
|
"MessageFetching": "Отримання...",
|
||||||
"MessageForceReScanDescription": "Просканує всі файли заново, як при першому скануванні. ID3-мітки, OPF-файли та текстові файли будуть проскановані як нові.",
|
"MessageForceReScanDescription": "Просканує всі файли заново, як при першому скануванні. ID3-мітки, OPF-файли та текстові файли будуть проскановані як нові.",
|
||||||
|
"MessageHeatmapListeningTimeTooltip": "<strong>{0} прослуховування</strong> на {1}",
|
||||||
|
"MessageHeatmapNoListeningSessions": "Немає сеансів прослуховування на {0}",
|
||||||
"MessageImportantNotice": "Важливе повідомлення!",
|
"MessageImportantNotice": "Важливе повідомлення!",
|
||||||
"MessageInsertChapterBelow": "Введіть главу нижче",
|
"MessageInsertChapterBelow": "Введіть главу нижче",
|
||||||
"MessageInvalidAsin": "Невірний ASIN",
|
"MessageInvalidAsin": "Невірний ASIN",
|
||||||
@ -838,7 +843,7 @@
|
|||||||
"MessageNoItems": "Елементи відсутні",
|
"MessageNoItems": "Елементи відсутні",
|
||||||
"MessageNoItemsFound": "Елементів не знайдено",
|
"MessageNoItemsFound": "Елементів не знайдено",
|
||||||
"MessageNoListeningSessions": "Сеанси прослуховування відсутні",
|
"MessageNoListeningSessions": "Сеанси прослуховування відсутні",
|
||||||
"MessageNoLogs": "Немає журналів'",
|
"MessageNoLogs": "Немає Журнали",
|
||||||
"MessageNoMediaProgress": "Прогрес відсутній",
|
"MessageNoMediaProgress": "Прогрес відсутній",
|
||||||
"MessageNoNotifications": "Сповіщення відсутні",
|
"MessageNoNotifications": "Сповіщення відсутні",
|
||||||
"MessageNoPodcastFeed": "Некоректний подкаст: немає каналу",
|
"MessageNoPodcastFeed": "Некоректний подкаст: немає каналу",
|
||||||
|
@ -418,6 +418,7 @@
|
|||||||
"LabelLanguages": "语言",
|
"LabelLanguages": "语言",
|
||||||
"LabelLastBookAdded": "最后添加的书",
|
"LabelLastBookAdded": "最后添加的书",
|
||||||
"LabelLastBookUpdated": "最后更新的书",
|
"LabelLastBookUpdated": "最后更新的书",
|
||||||
|
"LabelLastProgressDate": "上次阅读时间: {0}",
|
||||||
"LabelLastSeen": "上次查看时间",
|
"LabelLastSeen": "上次查看时间",
|
||||||
"LabelLastTime": "最近一次",
|
"LabelLastTime": "最近一次",
|
||||||
"LabelLastUpdate": "最近更新",
|
"LabelLastUpdate": "最近更新",
|
||||||
@ -430,6 +431,7 @@
|
|||||||
"LabelLibraryFilterSublistEmpty": "没有 {0}",
|
"LabelLibraryFilterSublistEmpty": "没有 {0}",
|
||||||
"LabelLibraryItem": "媒体库项目",
|
"LabelLibraryItem": "媒体库项目",
|
||||||
"LabelLibraryName": "媒体库名称",
|
"LabelLibraryName": "媒体库名称",
|
||||||
|
"LabelLibrarySortByProgress": "进度更新时间",
|
||||||
"LabelLimit": "限制",
|
"LabelLimit": "限制",
|
||||||
"LabelLineSpacing": "行间距",
|
"LabelLineSpacing": "行间距",
|
||||||
"LabelListenAgain": "再次收听",
|
"LabelListenAgain": "再次收听",
|
||||||
@ -656,6 +658,7 @@
|
|||||||
"LabelTheme": "主题",
|
"LabelTheme": "主题",
|
||||||
"LabelThemeDark": "黑暗",
|
"LabelThemeDark": "黑暗",
|
||||||
"LabelThemeLight": "明亮",
|
"LabelThemeLight": "明亮",
|
||||||
|
"LabelThemeSepia": "棕褐色",
|
||||||
"LabelTimeBase": "时间基准",
|
"LabelTimeBase": "时间基准",
|
||||||
"LabelTimeDurationXHours": "{0} 小时",
|
"LabelTimeDurationXHours": "{0} 小时",
|
||||||
"LabelTimeDurationXMinutes": "{0} 分钟",
|
"LabelTimeDurationXMinutes": "{0} 分钟",
|
||||||
@ -802,6 +805,8 @@
|
|||||||
"MessageFeedURLWillBe": "源 URL 将改为 {0}",
|
"MessageFeedURLWillBe": "源 URL 将改为 {0}",
|
||||||
"MessageFetching": "正在获取...",
|
"MessageFetching": "正在获取...",
|
||||||
"MessageForceReScanDescription": "将像重新扫描一样再次扫描所有文件. 音频文件 ID3 标签, OPF 文件和文本文件将被扫描为新文件.",
|
"MessageForceReScanDescription": "将像重新扫描一样再次扫描所有文件. 音频文件 ID3 标签, OPF 文件和文本文件将被扫描为新文件.",
|
||||||
|
"MessageHeatmapListeningTimeTooltip": "{1} <strong>收听了 {0}</strong>",
|
||||||
|
"MessageHeatmapNoListeningSessions": "{0} 没有收听",
|
||||||
"MessageImportantNotice": "重要通知!",
|
"MessageImportantNotice": "重要通知!",
|
||||||
"MessageInsertChapterBelow": "在下面插入章节",
|
"MessageInsertChapterBelow": "在下面插入章节",
|
||||||
"MessageInvalidAsin": "无效的 ASIN",
|
"MessageInvalidAsin": "无效的 ASIN",
|
||||||
|
4
package-lock.json
generated
4
package-lock.json
generated
@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "audiobookshelf",
|
"name": "audiobookshelf",
|
||||||
"version": "2.26.3",
|
"version": "2.27.0",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "audiobookshelf",
|
"name": "audiobookshelf",
|
||||||
"version": "2.26.3",
|
"version": "2.27.0",
|
||||||
"license": "GPL-3.0",
|
"license": "GPL-3.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"axios": "^0.27.2",
|
"axios": "^0.27.2",
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "audiobookshelf",
|
"name": "audiobookshelf",
|
||||||
"version": "2.26.3",
|
"version": "2.27.0",
|
||||||
"buildNumber": 1,
|
"buildNumber": 1,
|
||||||
"description": "Self-hosted audiobook and podcast server",
|
"description": "Self-hosted audiobook and podcast server",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
|
@ -240,8 +240,8 @@ class Server {
|
|||||||
* Running in development allows cors to allow testing the mobile apps in the browser
|
* Running in development allows cors to allow testing the mobile apps in the browser
|
||||||
* or env variable ALLOW_CORS = '1'
|
* or env variable ALLOW_CORS = '1'
|
||||||
*/
|
*/
|
||||||
if (global.AllowCors || Logger.isDev || req.path.match(/\/api\/items\/([a-z0-9-]{36})\/(ebook|cover)(\/[0-9]+)?/)) {
|
if (global.AllowCors || Logger.isDev || req.path.match(/\/api\/items\/([a-z0-9-]{36})\/(ebook|cover)(\/[0-9]+)?/) || global.ServerSettings.allowedOrigins?.length) {
|
||||||
const allowedOrigins = ['capacitor://localhost', 'http://localhost']
|
const allowedOrigins = ['capacitor://localhost', 'http://localhost', ...(global.ServerSettings.allowedOrigins ? global.ServerSettings.allowedOrigins : [])]
|
||||||
if (global.AllowCors || Logger.isDev || allowedOrigins.some((o) => o === req.get('origin'))) {
|
if (global.AllowCors || Logger.isDev || allowedOrigins.some((o) => o === req.get('origin'))) {
|
||||||
res.header('Access-Control-Allow-Origin', req.get('origin'))
|
res.header('Access-Control-Allow-Origin', req.get('origin'))
|
||||||
res.header('Access-Control-Allow-Methods', 'GET, POST, PATCH, PUT, DELETE, OPTIONS')
|
res.header('Access-Control-Allow-Methods', 'GET, POST, PATCH, PUT, DELETE, OPTIONS')
|
||||||
|
@ -450,7 +450,7 @@ class MeController {
|
|||||||
if (updated) {
|
if (updated) {
|
||||||
await Database.updateSetting(Database.emailSettings)
|
await Database.updateSetting(Database.emailSettings)
|
||||||
SocketAuthority.clientEmitter(req.user.id, 'ereader-devices-updated', {
|
SocketAuthority.clientEmitter(req.user.id, 'ereader-devices-updated', {
|
||||||
ereaderDevices: Database.emailSettings.ereaderDevices
|
ereaderDevices: Database.emailSettings.getEReaderDevices(req.user)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
res.json({
|
res.json({
|
||||||
|
@ -4,6 +4,7 @@ const Logger = require('../Logger')
|
|||||||
const Database = require('../Database')
|
const Database = require('../Database')
|
||||||
const { toNumber, isUUID } = require('../utils/index')
|
const { toNumber, isUUID } = require('../utils/index')
|
||||||
const { getAudioMimeTypeFromExtname, encodeUriPath } = require('../utils/fileUtils')
|
const { getAudioMimeTypeFromExtname, encodeUriPath } = require('../utils/fileUtils')
|
||||||
|
const { PlayMethod } = require('../utils/constants')
|
||||||
|
|
||||||
const ShareManager = require('../managers/ShareManager')
|
const ShareManager = require('../managers/ShareManager')
|
||||||
|
|
||||||
@ -299,6 +300,18 @@ class SessionController {
|
|||||||
return res.sendStatus(404)
|
return res.sendStatus(404)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Redirect transcode requests to the HLS router
|
||||||
|
// Handles bug introduced in android v0.10.0-beta where transcode requests are made to this endpoint
|
||||||
|
if (playbackSession.playMethod === PlayMethod.TRANSCODE && audioTrack.contentUrl) {
|
||||||
|
Logger.debug(`[SessionController] Redirecting transcode request to "${audioTrack.contentUrl}"`)
|
||||||
|
return res.redirect(audioTrack.contentUrl)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!audioTrack.metadata?.path) {
|
||||||
|
Logger.error(`[SessionController] Invalid audio track "${audioTrack.index}" for session "${req.params.id}"`)
|
||||||
|
return res.sendStatus(500)
|
||||||
|
}
|
||||||
|
|
||||||
const user = await Database.userModel.getUserById(playbackSession.userId)
|
const user = await Database.userModel.getUserById(playbackSession.userId)
|
||||||
Logger.debug(`[SessionController] Serving audio track ${audioTrack.index} for session "${req.params.id}" belonging to user "${user.username}"`)
|
Logger.debug(`[SessionController] Serving audio track ${audioTrack.index} for session "${req.params.id}" belonging to user "${user.username}"`)
|
||||||
|
|
||||||
|
@ -53,6 +53,7 @@ class ServerSettings {
|
|||||||
this.dateFormat = 'MM/dd/yyyy'
|
this.dateFormat = 'MM/dd/yyyy'
|
||||||
this.timeFormat = 'HH:mm'
|
this.timeFormat = 'HH:mm'
|
||||||
this.language = 'en-us'
|
this.language = 'en-us'
|
||||||
|
this.allowedOrigins = []
|
||||||
|
|
||||||
this.logLevel = Logger.logLevel
|
this.logLevel = Logger.logLevel
|
||||||
|
|
||||||
@ -120,6 +121,7 @@ class ServerSettings {
|
|||||||
this.dateFormat = settings.dateFormat || 'MM/dd/yyyy'
|
this.dateFormat = settings.dateFormat || 'MM/dd/yyyy'
|
||||||
this.timeFormat = settings.timeFormat || 'HH:mm'
|
this.timeFormat = settings.timeFormat || 'HH:mm'
|
||||||
this.language = settings.language || 'en-us'
|
this.language = settings.language || 'en-us'
|
||||||
|
this.allowedOrigins = settings.allowedOrigins || []
|
||||||
this.logLevel = settings.logLevel || Logger.logLevel
|
this.logLevel = settings.logLevel || Logger.logLevel
|
||||||
this.version = settings.version || null
|
this.version = settings.version || null
|
||||||
this.buildNumber = settings.buildNumber || 0 // Added v2.4.5
|
this.buildNumber = settings.buildNumber || 0 // Added v2.4.5
|
||||||
@ -231,6 +233,7 @@ class ServerSettings {
|
|||||||
dateFormat: this.dateFormat,
|
dateFormat: this.dateFormat,
|
||||||
timeFormat: this.timeFormat,
|
timeFormat: this.timeFormat,
|
||||||
language: this.language,
|
language: this.language,
|
||||||
|
allowedOrigins: this.allowedOrigins,
|
||||||
logLevel: this.logLevel,
|
logLevel: this.logLevel,
|
||||||
version: this.version,
|
version: this.version,
|
||||||
buildNumber: this.buildNumber,
|
buildNumber: this.buildNumber,
|
||||||
|
@ -399,9 +399,6 @@ module.exports = {
|
|||||||
if (filterGroup !== 'series' && sortBy === 'sequence') {
|
if (filterGroup !== 'series' && sortBy === 'sequence') {
|
||||||
sortBy = 'media.metadata.title'
|
sortBy = 'media.metadata.title'
|
||||||
}
|
}
|
||||||
if (filterGroup !== 'progress' && sortBy === 'progress') {
|
|
||||||
sortBy = 'media.metadata.title'
|
|
||||||
}
|
|
||||||
const includeRSSFeed = include.includes('rssfeed')
|
const includeRSSFeed = include.includes('rssfeed')
|
||||||
const includeMediaItemShare = !!user?.isAdminOrUp && include.includes('share')
|
const includeMediaItemShare = !!user?.isAdminOrUp && include.includes('share')
|
||||||
|
|
||||||
@ -532,6 +529,18 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// When sorting by progress but not filtering by progress, include media progresses
|
||||||
|
if (filterGroup !== 'progress' && sortBy === 'progress') {
|
||||||
|
bookIncludes.push({
|
||||||
|
model: Database.mediaProgressModel,
|
||||||
|
attributes: ['id', 'isFinished', 'currentTime', 'ebookProgress', 'updatedAt'],
|
||||||
|
where: {
|
||||||
|
userId: user.id
|
||||||
|
},
|
||||||
|
required: false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
let { mediaWhere, replacements } = this.getMediaGroupQuery(filterGroup, filterValue)
|
let { mediaWhere, replacements } = this.getMediaGroupQuery(filterGroup, filterValue)
|
||||||
let bookWhere = Array.isArray(mediaWhere) ? mediaWhere : [mediaWhere]
|
let bookWhere = Array.isArray(mediaWhere) ? mediaWhere : [mediaWhere]
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user