\ No newline at end of file
+
diff --git a/client/components/cards/AuthorSearchCard.vue b/client/components/cards/AuthorSearchCard.vue
index 76e795439..f3693a5a8 100644
--- a/client/components/cards/AuthorSearchCard.vue
+++ b/client/components/cards/AuthorSearchCard.vue
@@ -5,6 +5,7 @@
- Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt earum doloremque aliquam culpa dolor nostrum consequatur quas dicta? Molestias repellendus minima pariatur libero vel, reiciendis optio magnam rerum, labore corporis.
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/client/components/cards/GenreSearchCard.vue b/client/components/cards/GenreSearchCard.vue
new file mode 100644
index 000000000..73e8bbacf
--- /dev/null
+++ b/client/components/cards/GenreSearchCard.vue
@@ -0,0 +1,36 @@
+
+
\ No newline at end of file
+
diff --git a/client/components/cards/NarratorSearchCard.vue b/client/components/cards/NarratorSearchCard.vue
index e147e0798..51d0258b5 100644
--- a/client/components/cards/NarratorSearchCard.vue
+++ b/client/components/cards/NarratorSearchCard.vue
@@ -1,10 +1,11 @@
- record_voice_over
+
{{ narrator }}
+
{{ $getString('LabelXBooks', [numBooks]) }}
@@ -12,7 +13,8 @@
\ No newline at end of file
+
diff --git a/client/components/cards/TagSearchCard.vue b/client/components/cards/TagSearchCard.vue
index c4068a284..456ba3991 100644
--- a/client/components/cards/TagSearchCard.vue
+++ b/client/components/cards/TagSearchCard.vue
@@ -1,10 +1,11 @@
- local_offer
+ local_offer
{{ tag }}
+
{{ $getString('LabelXItems', [numItems]) }}
@@ -12,7 +13,8 @@
\ No newline at end of file
+
diff --git a/client/components/controls/FilterSelect.vue b/client/components/controls/FilterSelect.vue
index 5b4243e93..4ce4cd3f6 100644
--- a/client/components/controls/FilterSelect.vue
+++ b/client/components/controls/FilterSelect.vue
@@ -10,7 +10,7 @@
@@ -111,18 +108,12 @@ export default {
},
isEncodeTaskRunning() {
return this.encodeTask && !this.encodeTask?.isFinished
- },
- isWindowsInstall() {
- return this.Source == 'windows'
- },
- Source() {
- return this.$store.state.Source
}
},
methods: {
quickEmbed() {
const payload = {
- message: 'Warning! Quick embed will not backup your audio files. Make sure that you have a backup of your audio files.
Would you like to continue?',
+ message: this.$strings.MessageConfirmQuickEmbed,
callback: (confirmed) => {
if (confirmed) {
this.$axios
@@ -141,4 +132,4 @@ export default {
}
}
}
-
\ No newline at end of file
+
diff --git a/client/components/modals/libraries/EditLibrary.vue b/client/components/modals/libraries/EditLibrary.vue
index d29d79298..6eca4c809 100644
--- a/client/components/modals/libraries/EditLibrary.vue
+++ b/client/components/modals/libraries/EditLibrary.vue
@@ -19,12 +19,12 @@
{{ $strings.LabelFolders }}
- folder
+ folder
- close
+ close
- folder
+ folder
@@ -169,4 +169,4 @@ export default {
max-height: calc(80vh - 292px);
}
}
-
\ No newline at end of file
+
diff --git a/client/components/modals/libraries/EditModal.vue b/client/components/modals/libraries/EditModal.vue
index 27e3ec6de..6733b7b86 100644
--- a/client/components/modals/libraries/EditModal.vue
+++ b/client/components/modals/libraries/EditModal.vue
@@ -111,7 +111,6 @@ export default {
},
updateLibrary(library) {
this.mapLibraryToCopy(library)
- console.log('Updated library', this.libraryCopy)
},
getNewLibraryData() {
return {
@@ -128,7 +127,9 @@ export default {
autoScanCronExpression: null,
hideSingleBookSeries: false,
onlyShowLaterBooksInContinueSeries: false,
- metadataPrecedence: ['folderStructure', 'audioMetatags', 'nfoFile', 'txtFiles', 'opfFile', 'absMetadata']
+ metadataPrecedence: ['folderStructure', 'audioMetatags', 'nfoFile', 'txtFiles', 'opfFile', 'absMetadata'],
+ markAsFinishedPercentComplete: null,
+ markAsFinishedTimeRemaining: 10
}
}
},
@@ -156,11 +157,11 @@ export default {
},
validate() {
if (!this.libraryCopy.name) {
- this.$toast.error('Library must have a name')
+ this.$toast.error(this.$strings.ToastNameRequired)
return false
}
if (!this.libraryCopy.folders.length) {
- this.$toast.error('Library must have at least 1 path')
+ this.$toast.error(this.$strings.ToastMustHaveAtLeastOnePath)
return false
}
@@ -205,7 +206,7 @@ export default {
submitUpdateLibrary() {
var newLibraryPayload = this.getLibraryUpdatePayload()
if (!Object.keys(newLibraryPayload).length) {
- this.$toast.info('No updates are necessary')
+ this.$toast.info(this.$strings.ToastNoUpdatesNecessary)
return
}
@@ -222,7 +223,7 @@ export default {
if (error.response && error.response.data) {
this.$toast.error(error.response.data)
} else {
- this.$toast.error(this.$strings.ToastLibraryUpdateFailed)
+ this.$toast.error(this.$strings.ToastFailedToUpdate)
}
this.processing = false
})
@@ -236,7 +237,6 @@ export default {
this.show = false
this.$toast.success(this.$getString('ToastLibraryCreateSuccess', [res.name]))
if (!this.$store.state.libraries.currentLibraryId) {
- console.log('Setting initially library id', res.id)
// First library added
this.$store.dispatch('libraries/fetch', res.id)
}
@@ -264,4 +264,4 @@ export default {
.tab.tab-selected {
height: 41px;
}
-
\ No newline at end of file
+
diff --git a/client/components/modals/libraries/LazyFolderChooser.vue b/client/components/modals/libraries/LazyFolderChooser.vue
index 74a81a977..eb152c286 100644
--- a/client/components/modals/libraries/LazyFolderChooser.vue
+++ b/client/components/modals/libraries/LazyFolderChooser.vue
@@ -1,7 +1,7 @@
- arrow_back
+ arrow_back
{{ $strings.HeaderChooseAFolder }}
@@ -10,18 +10,18 @@
- folder
+ folder
..
- folder
+ folder
{{ dir.dirname }}
- arrow_right
+ arrow_right
- folder
+ folder
{{ dir.dirname }}
@@ -162,7 +162,7 @@ export default {
})
.catch((error) => {
console.error('Failed to get filesystem paths', error)
- this.$toast.error('Failed to get filesystem paths')
+ this.$toast.error(this.$strings.ToastFailedToLoadData)
return []
})
.finally(() => {
@@ -199,4 +199,4 @@ export default {
height: calc(100% - 130px);
min-height: calc(100% - 130px);
}
-
\ No newline at end of file
+
diff --git a/client/components/modals/libraries/LibraryScannerSettings.vue b/client/components/modals/libraries/LibraryScannerSettings.vue
index 43938f9cf..51cebcc4d 100644
--- a/client/components/modals/libraries/LibraryScannerSettings.vue
+++ b/client/components/modals/libraries/LibraryScannerSettings.vue
@@ -9,7 +9,7 @@
Metadata will be embedded in the audio tracks inside your audiobook folder.
+ star
+
{{ $strings.LabelEncodingInfoEmbedded }}
- star
+ star
- Finished M4B will be put into your audiobook folder at .../{{ libraryItemRelPath }}/.
+ {{ $strings.LabelEncodingFinishedM4B }} .../{{ libraryItemRelPath }}/.
- star
+ star
- A backup of your original audio files will be stored in /metadata/cache/items/{{ libraryItemId }}/. Make sure to periodically purge items cache.
+ {{ $strings.LabelEncodingBackupLocation }} /metadata/cache/items/{{ libraryItemId }}/. {{ $strings.LabelEncodingClearItemCache }}
- star
-
Chapters are not embedded in multi-track audiobooks.
+ star
+
{{ $strings.LabelEncodingChaptersNotEmbedded }}
- star
-
Encoding can take up to 30 minutes.
+ star
+
{{ $strings.LabelEncodingTimeWarning }}
- star
-
If you have the watcher disabled you will need to re-scan this audiobook afterwards.
+ star
+
{{ $strings.LabelEncodingWatcherDisabled }}
- star
-
Once the task is started you can navigate away from this page.
@@ -384,12 +384,6 @@ export default {
else itemsFailed++
this.updateItemCardStatus(item.index, result ? 'success' : 'failed')
}
- if (itemsUploaded) {
- this.$toast.success(`Successfully uploaded ${itemsUploaded} item${itemsUploaded > 1 ? 's' : ''}`)
- }
- if (itemsFailed) {
- this.$toast.success(`Failed to upload ${itemsFailed} item${itemsFailed > 1 ? 's' : ''}`)
- }
this.processing = false
this.uploadFinished = true
}
diff --git a/client/players/AudioTrack.js b/client/players/AudioTrack.js
index f364dad89..9627d3cda 100644
--- a/client/players/AudioTrack.js
+++ b/client/players/AudioTrack.js
@@ -23,10 +23,6 @@ export default class AudioTrack {
get relativeContentUrl() {
if (!this.contentUrl || this.contentUrl.startsWith('http')) return this.contentUrl
- if (process.env.NODE_ENV === 'development') {
- return `${process.env.serverUrl}${this.contentUrl}?token=${this.userToken}`
- }
-
return this.contentUrl + `?token=${this.userToken}`
}
-}
\ No newline at end of file
+}
diff --git a/client/players/LocalAudioPlayer.js b/client/players/LocalAudioPlayer.js
index eb1484bb6..7fc17e7aa 100644
--- a/client/players/LocalAudioPlayer.js
+++ b/client/players/LocalAudioPlayer.js
@@ -147,7 +147,7 @@ export default class LocalAudioPlayer extends EventEmitter {
timeoutRetry: {
maxNumRetry: 4,
retryDelayMs: 0,
- maxRetryDelayMs: 0,
+ maxRetryDelayMs: 0
},
errorRetry: {
maxNumRetry: 8,
@@ -160,7 +160,7 @@ export default class LocalAudioPlayer extends EventEmitter {
}
return retry
}
- },
+ }
}
}
}
@@ -194,7 +194,7 @@ export default class LocalAudioPlayer extends EventEmitter {
setDirectPlay() {
// Set initial track and track time offset
- var trackIndex = this.audioTracks.findIndex(t => this.startTime >= t.startOffset && this.startTime < (t.startOffset + t.duration))
+ var trackIndex = this.audioTracks.findIndex((t) => this.startTime >= t.startOffset && this.startTime < t.startOffset + t.duration)
this.currentTrackIndex = trackIndex >= 0 ? trackIndex : 0
this.loadCurrentTrack()
@@ -270,7 +270,7 @@ export default class LocalAudioPlayer extends EventEmitter {
// Seeking Direct play
if (time < this.currentTrack.startOffset || time > this.currentTrack.startOffset + this.currentTrack.duration) {
// Change Track
- var trackIndex = this.audioTracks.findIndex(t => time >= t.startOffset && time < (t.startOffset + t.duration))
+ var trackIndex = this.audioTracks.findIndex((t) => time >= t.startOffset && time < t.startOffset + t.duration)
if (trackIndex >= 0) {
this.startTime = time
this.currentTrackIndex = trackIndex
@@ -293,7 +293,6 @@ export default class LocalAudioPlayer extends EventEmitter {
this.player.volume = volume
}
-
// Utils
isValidDuration(duration) {
if (duration && !isNaN(duration) && duration !== Number.POSITIVE_INFINITY && duration !== Number.NEGATIVE_INFINITY) {
@@ -338,4 +337,4 @@ export default class LocalAudioPlayer extends EventEmitter {
var last = bufferedRanges[bufferedRanges.length - 1]
return last.end
}
-}
\ No newline at end of file
+}
diff --git a/client/players/LocalVideoPlayer.js b/client/players/LocalVideoPlayer.js
deleted file mode 100644
index 128f070b0..000000000
--- a/client/players/LocalVideoPlayer.js
+++ /dev/null
@@ -1,260 +0,0 @@
-import Hls from 'hls.js'
-import EventEmitter from 'events'
-
-export default class LocalVideoPlayer extends EventEmitter {
- constructor(ctx) {
- super()
-
- this.ctx = ctx
- this.player = null
-
- this.libraryItem = null
- this.videoTrack = null
- this.isHlsTranscode = null
- this.hlsInstance = null
- this.usingNativeplayer = false
- this.startTime = 0
- this.playWhenReady = false
- this.defaultPlaybackRate = 1
-
- this.playableMimeTypes = []
-
- this.initialize()
- }
-
- initialize() {
- if (document.getElementById('video-player')) {
- document.getElementById('video-player').remove()
- }
- var videoEl = document.createElement('video')
- videoEl.id = 'video-player'
- // videoEl.style.display = 'none'
- videoEl.className = 'absolute bg-black z-50'
- videoEl.style.height = '216px'
- videoEl.style.width = '384px'
- videoEl.style.bottom = '80px'
- videoEl.style.left = '16px'
- document.body.appendChild(videoEl)
- this.player = videoEl
-
- this.player.addEventListener('play', this.evtPlay.bind(this))
- this.player.addEventListener('pause', this.evtPause.bind(this))
- this.player.addEventListener('progress', this.evtProgress.bind(this))
- this.player.addEventListener('ended', this.evtEnded.bind(this))
- this.player.addEventListener('error', this.evtError.bind(this))
- this.player.addEventListener('loadedmetadata', this.evtLoadedMetadata.bind(this))
- this.player.addEventListener('timeupdate', this.evtTimeupdate.bind(this))
-
- var mimeTypes = ['video/mp4']
- var mimeTypeCanPlayMap = {}
- mimeTypes.forEach((mt) => {
- var canPlay = this.player.canPlayType(mt)
- mimeTypeCanPlayMap[mt] = canPlay
- if (canPlay) this.playableMimeTypes.push(mt)
- })
- console.log(`[LocalVideoPlayer] Supported mime types`, mimeTypeCanPlayMap, this.playableMimeTypes)
- }
-
- evtPlay() {
- this.emit('stateChange', 'PLAYING')
- }
- evtPause() {
- this.emit('stateChange', 'PAUSED')
- }
- evtProgress() {
- var lastBufferTime = this.getLastBufferedTime()
- this.emit('buffertimeUpdate', lastBufferTime)
- }
- evtEnded() {
- console.log(`[LocalVideoPlayer] Ended`)
- this.emit('finished')
- }
- evtError(error) {
- console.error('Player error', error)
- this.emit('error', error)
- }
- evtLoadedMetadata(data) {
- if (!this.isHlsTranscode) {
- this.player.currentTime = this.startTime
- }
-
- this.emit('stateChange', 'LOADED')
- if (this.playWhenReady) {
- this.playWhenReady = false
- this.play()
- }
- }
- evtTimeupdate() {
- if (this.player.paused) {
- this.emit('timeupdate', this.getCurrentTime())
- }
- }
-
- destroy() {
- this.destroyHlsInstance()
- if (this.player) {
- this.player.remove()
- }
- }
-
- set(libraryItem, videoTrack, isHlsTranscode, startTime, playWhenReady = false) {
- this.libraryItem = libraryItem
- this.videoTrack = videoTrack
- this.isHlsTranscode = isHlsTranscode
- this.playWhenReady = playWhenReady
- this.startTime = startTime
-
- if (this.hlsInstance) {
- this.destroyHlsInstance()
- }
-
- if (this.isHlsTranscode) {
- this.setHlsStream()
- } else {
- this.setDirectPlay()
- }
- }
-
- setHlsStream() {
- // iOS does not support Media Elements but allows for HLS in the native video player
- if (!Hls.isSupported()) {
- console.warn('HLS is not supported - fallback to using video element')
- this.usingNativeplayer = true
- this.player.src = this.videoTrack.relativeContentUrl
- this.player.currentTime = this.startTime
- return
- }
-
- var hlsOptions = {
- startPosition: this.startTime || -1
- // No longer needed because token is put in a query string
- // xhrSetup: (xhr) => {
- // xhr.setRequestHeader('Authorization', `Bearer ${this.token}`)
- // }
- }
- this.hlsInstance = new Hls(hlsOptions)
-
- this.hlsInstance.attachMedia(this.player)
- this.hlsInstance.on(Hls.Events.MEDIA_ATTACHED, () => {
- this.hlsInstance.loadSource(this.videoTrack.relativeContentUrl)
-
- this.hlsInstance.on(Hls.Events.MANIFEST_PARSED, () => {
- console.log('[HLS] Manifest Parsed')
- })
-
- this.hlsInstance.on(Hls.Events.ERROR, (e, data) => {
- console.error('[HLS] Error', data.type, data.details, data)
- if (data.details === Hls.ErrorDetails.BUFFER_STALLED_ERROR) {
- console.error('[HLS] BUFFER STALLED ERROR')
- }
- })
- this.hlsInstance.on(Hls.Events.DESTROYING, () => {
- console.log('[HLS] Destroying HLS Instance')
- })
- })
- }
-
- setDirectPlay() {
- this.player.src = this.videoTrack.relativeContentUrl
- console.log(`[LocalVideoPlayer] Loading track src ${this.videoTrack.relativeContentUrl}`)
- this.player.load()
- }
-
- destroyHlsInstance() {
- if (!this.hlsInstance) return
- if (this.hlsInstance.destroy) {
- var temp = this.hlsInstance
- temp.destroy()
- }
- this.hlsInstance = null
- }
-
- async resetStream(startTime) {
- this.destroyHlsInstance()
- await new Promise((resolve) => setTimeout(resolve, 1000))
- this.set(this.libraryItem, this.videoTrack, this.isHlsTranscode, startTime, true)
- }
-
- playPause() {
- if (!this.player) return
- if (this.player.paused) this.play()
- else this.pause()
- }
-
- play() {
- if (this.player) this.player.play()
- }
-
- pause() {
- if (this.player) this.player.pause()
- }
-
- getCurrentTime() {
- return this.player ? this.player.currentTime : 0
- }
-
- getDuration() {
- return this.videoTrack.duration
- }
-
- setPlaybackRate(playbackRate) {
- if (!this.player) return
- this.defaultPlaybackRate = playbackRate
- this.player.playbackRate = playbackRate
- }
-
- seek(time) {
- if (!this.player) return
- this.player.currentTime = Math.max(0, time)
- }
-
- setVolume(volume) {
- if (!this.player) return
- this.player.volume = volume
- }
-
- // Utils
- isValidDuration(duration) {
- if (duration && !isNaN(duration) && duration !== Number.POSITIVE_INFINITY && duration !== Number.NEGATIVE_INFINITY) {
- return true
- }
- return false
- }
-
- getBufferedRanges() {
- if (!this.player) return []
- const ranges = []
- const seekable = this.player.buffered || []
-
- let offset = 0
-
- for (let i = 0, length = seekable.length; i < length; i++) {
- let start = seekable.start(i)
- let end = seekable.end(i)
- if (!this.isValidDuration(start)) {
- start = 0
- }
- if (!this.isValidDuration(end)) {
- end = 0
- continue
- }
-
- ranges.push({
- start: start + offset,
- end: end + offset
- })
- }
- return ranges
- }
-
- getLastBufferedTime() {
- var bufferedRanges = this.getBufferedRanges()
- if (!bufferedRanges.length) return 0
-
- var buff = bufferedRanges.find((buff) => buff.start < this.player.currentTime && buff.end > this.player.currentTime)
- if (buff) return buff.end
-
- var last = bufferedRanges[bufferedRanges.length - 1]
- return last.end
- }
-}
\ No newline at end of file
diff --git a/client/players/PlayerHandler.js b/client/players/PlayerHandler.js
index 660ca2c17..ba71fc6c7 100644
--- a/client/players/PlayerHandler.js
+++ b/client/players/PlayerHandler.js
@@ -1,8 +1,6 @@
import LocalAudioPlayer from './LocalAudioPlayer'
-import LocalVideoPlayer from './LocalVideoPlayer'
import CastPlayer from './CastPlayer'
import AudioTrack from './AudioTrack'
-import VideoTrack from './VideoTrack'
export default class PlayerHandler {
constructor(ctx) {
@@ -16,8 +14,6 @@ export default class PlayerHandler {
this.player = null
this.playerState = 'IDLE'
this.isHlsTranscode = false
- this.isVideo = false
- this.isMusic = false
this.currentSessionId = null
this.startTimeOverride = undefined // Used for starting playback at a specific time (i.e. clicking bookmark from library item page)
this.startTime = 0
@@ -36,10 +32,10 @@ export default class PlayerHandler {
return this.libraryItem ? this.libraryItem.id : null
}
get isPlayingCastedItem() {
- return this.libraryItem && (this.player instanceof CastPlayer)
+ return this.libraryItem && this.player instanceof CastPlayer
}
get isPlayingLocalItem() {
- return this.libraryItem && (this.player instanceof LocalAudioPlayer)
+ return this.libraryItem && this.player instanceof LocalAudioPlayer
}
get userToken() {
return this.ctx.$store.getters['user/getToken']
@@ -49,7 +45,13 @@ export default class PlayerHandler {
}
get episode() {
if (!this.episodeId) return null
- return this.libraryItem.media.episodes.find(ep => ep.id === this.episodeId)
+ return this.libraryItem.media.episodes.find((ep) => ep.id === this.episodeId)
+ }
+ get jumpForwardAmount() {
+ return this.ctx.$store.getters['user/getUserSetting']('jumpForwardAmount')
+ }
+ get jumpBackwardAmount() {
+ return this.ctx.$store.getters['user/getUserSetting']('jumpBackwardAmount')
}
setSessionId(sessionId) {
@@ -59,14 +61,12 @@ export default class PlayerHandler {
load(libraryItem, episodeId, playWhenReady, playbackRate, startTimeOverride = undefined) {
this.libraryItem = libraryItem
- this.isVideo = libraryItem.mediaType === 'video'
- this.isMusic = libraryItem.mediaType === 'music'
this.episodeId = episodeId
this.playWhenReady = playWhenReady
- this.initialPlaybackRate = this.isMusic ? 1 : playbackRate
+ this.initialPlaybackRate = playbackRate
- this.startTimeOverride = (startTimeOverride == null || isNaN(startTimeOverride)) ? undefined : Number(startTimeOverride)
+ this.startTimeOverride = startTimeOverride == null || isNaN(startTimeOverride) ? undefined : Number(startTimeOverride)
if (!this.player) this.switchPlayer(playWhenReady)
else this.prepare()
@@ -91,7 +91,7 @@ export default class PlayerHandler {
this.playWhenReady = playWhenReady
this.prepare()
}
- } else if (!this.isCasting && !(this.player instanceof LocalAudioPlayer) && !(this.player instanceof LocalVideoPlayer)) {
+ } else if (!this.isCasting && !(this.player instanceof LocalAudioPlayer)) {
console.log('[PlayerHandler] Switching to local player')
this.stopPlayInterval()
@@ -101,11 +101,7 @@ export default class PlayerHandler {
this.player.destroy()
}
- if (this.isVideo) {
- this.player = new LocalVideoPlayer(this.ctx)
- } else {
- this.player = new LocalAudioPlayer(this.ctx)
- }
+ this.player = new LocalAudioPlayer(this.ctx)
this.setPlayerListeners()
@@ -127,7 +123,7 @@ export default class PlayerHandler {
playerError() {
// Switch to HLS stream on error
- if (!this.isCasting && (this.player instanceof LocalAudioPlayer)) {
+ if (!this.isCasting && this.player instanceof LocalAudioPlayer) {
console.log(`[PlayerHandler] Audio player error switching to HLS stream`)
this.prepare(true)
}
@@ -197,7 +193,7 @@ export default class PlayerHandler {
supportedMimeTypes: this.player.playableMimeTypes,
mediaPlayer: this.isCasting ? 'chromecast' : 'html5',
forceTranscode,
- forceDirectPlay: this.isCasting || this.isVideo // TODO: add transcode support for chromecast
+ forceDirectPlay: this.isCasting // TODO: add transcode support for chromecast
}
const path = this.episodeId ? `/api/items/${this.libraryItem.id}/play/${this.episodeId}` : `/api/items/${this.libraryItem.id}/play`
@@ -207,11 +203,11 @@ export default class PlayerHandler {
this.prepareSession(session)
}
- prepareOpenSession(session, playbackRate) { // Session opened on init socket
+ prepareOpenSession(session, playbackRate) {
+ // Session opened on init socket
if (!this.player) this.switchPlayer() // Must set player first for open sessions
this.libraryItem = session.libraryItem
- this.isVideo = session.libraryItem.mediaType === 'video'
this.playWhenReady = false
this.initialPlaybackRate = playbackRate
this.startTimeOverride = undefined
@@ -230,28 +226,16 @@ export default class PlayerHandler {
console.log('[PlayerHandler] Preparing Session', session)
- if (session.videoTrack) {
- var videoTrack = new VideoTrack(session.videoTrack, this.userToken)
+ var audioTracks = session.audioTracks.map((at) => new AudioTrack(at, this.userToken))
- this.ctx.playerLoading = true
- this.isHlsTranscode = true
- if (session.playMethod === this.ctx.$constants.PlayMethod.DIRECTPLAY) {
- this.isHlsTranscode = false
- }
-
- this.player.set(this.libraryItem, videoTrack, this.isHlsTranscode, this.startTime, this.playWhenReady)
- } else {
- var audioTracks = session.audioTracks.map(at => new AudioTrack(at, this.userToken))
-
- this.ctx.playerLoading = true
- this.isHlsTranscode = true
- if (session.playMethod === this.ctx.$constants.PlayMethod.DIRECTPLAY) {
- this.isHlsTranscode = false
- }
-
- this.player.set(this.libraryItem, audioTracks, this.isHlsTranscode, this.startTime, this.playWhenReady)
+ this.ctx.playerLoading = true
+ this.isHlsTranscode = true
+ if (session.playMethod === this.ctx.$constants.PlayMethod.DIRECTPLAY) {
+ this.isHlsTranscode = false
}
+ this.player.set(this.libraryItem, audioTracks, this.isHlsTranscode, this.startTime, this.playWhenReady)
+
// browser media session api
this.ctx.setMediaSession()
}
@@ -295,7 +279,7 @@ export default class PlayerHandler {
const currentTime = this.player.getCurrentTime()
this.ctx.setCurrentTime(currentTime)
- const exactTimeElapsed = ((Date.now() - lastTick) / 1000)
+ const exactTimeElapsed = (Date.now() - lastTick) / 1000
lastTick = Date.now()
this.listeningTimeSinceSync += exactTimeElapsed
const TimeToWaitBeforeSync = this.lastSyncTime > 0 ? 10 : 20
@@ -313,21 +297,18 @@ export default class PlayerHandler {
if (listeningTimeToAdd > 20) {
syncData = {
timeListened: listeningTimeToAdd,
- duration: this.getDuration(),
currentTime: this.getCurrentTime()
}
}
}
this.listeningTimeSinceSync = 0
this.lastSyncTime = 0
- return this.ctx.$axios.$post(`/api/session/${this.currentSessionId}/close`, syncData, { timeout: 6000 }).catch((error) => {
+ return this.ctx.$axios.$post(`/api/session/${this.currentSessionId}/close`, syncData, { timeout: 6000, progress: false }).catch((error) => {
console.error('Failed to close session', error)
})
}
sendProgressSync(currentTime) {
- if (this.isMusic) return
-
const diffSinceLastSync = Math.abs(this.lastSyncTime - currentTime)
if (diffSinceLastSync < 1) return
@@ -335,22 +316,24 @@ export default class PlayerHandler {
const listeningTimeToAdd = Math.max(0, Math.floor(this.listeningTimeSinceSync))
const syncData = {
timeListened: listeningTimeToAdd,
- duration: this.getDuration(),
currentTime
}
this.listeningTimeSinceSync = 0
- this.ctx.$axios.$post(`/api/session/${this.currentSessionId}/sync`, syncData, { timeout: 9000 }).then(() => {
- this.failedProgressSyncs = 0
- }).catch((error) => {
- console.error('Failed to update session progress', error)
- // After 4 failed sync attempts show an alert toast
- this.failedProgressSyncs++
- if (this.failedProgressSyncs >= 4) {
- this.ctx.showFailedProgressSyncs()
+ this.ctx.$axios
+ .$post(`/api/session/${this.currentSessionId}/sync`, syncData, { timeout: 9000, progress: false })
+ .then(() => {
this.failedProgressSyncs = 0
- }
- })
+ })
+ .catch((error) => {
+ console.error('Failed to update session progress', error)
+ // After 4 failed sync attempts show an alert toast
+ this.failedProgressSyncs++
+ if (this.failedProgressSyncs >= 4) {
+ this.ctx.showFailedProgressSyncs()
+ this.failedProgressSyncs = 0
+ }
+ })
}
stopPlayInterval() {
@@ -381,13 +364,15 @@ export default class PlayerHandler {
jumpBackward() {
if (!this.player) return
var currentTime = this.getCurrentTime()
- this.seek(Math.max(0, currentTime - 10))
+ const jumpAmount = this.jumpBackwardAmount
+ this.seek(Math.max(0, currentTime - jumpAmount))
}
jumpForward() {
if (!this.player) return
var currentTime = this.getCurrentTime()
- this.seek(Math.min(currentTime + 10, this.getDuration()))
+ const jumpAmount = this.jumpForwardAmount
+ this.seek(Math.min(currentTime + jumpAmount, this.getDuration()))
}
setVolume(volume) {
@@ -411,4 +396,4 @@ export default class PlayerHandler {
this.sendProgressSync(time)
}
}
-}
\ No newline at end of file
+}
diff --git a/client/players/VideoTrack.js b/client/players/VideoTrack.js
deleted file mode 100644
index 92bec5eb5..000000000
--- a/client/players/VideoTrack.js
+++ /dev/null
@@ -1,32 +0,0 @@
-export default class VideoTrack {
- constructor(track, userToken) {
- this.index = track.index || 0
- this.startOffset = track.startOffset || 0 // Total time of all previous tracks
- this.duration = track.duration || 0
- this.title = track.title || ''
- this.contentUrl = track.contentUrl || null
- this.mimeType = track.mimeType
- this.metadata = track.metadata || {}
-
- this.userToken = userToken
- }
-
- get fullContentUrl() {
- if (!this.contentUrl || this.contentUrl.startsWith('http')) return this.contentUrl
-
- if (process.env.NODE_ENV === 'development') {
- return `${process.env.serverUrl}${this.contentUrl}?token=${this.userToken}`
- }
- return `${window.location.origin}${this.contentUrl}?token=${this.userToken}`
- }
-
- get relativeContentUrl() {
- if (!this.contentUrl || this.contentUrl.startsWith('http')) return this.contentUrl
-
- if (process.env.NODE_ENV === 'development') {
- return `${process.env.serverUrl}${this.contentUrl}?token=${this.userToken}`
- }
-
- return this.contentUrl + `?token=${this.userToken}`
- }
-}
\ No newline at end of file
diff --git a/client/players/castUtils.js b/client/players/castUtils.js
index 666fcb2c6..3d8e3ee86 100644
--- a/client/players/castUtils.js
+++ b/client/players/castUtils.js
@@ -1,13 +1,22 @@
-
function getMediaInfoFromTrack(libraryItem, castImage, track) {
- // https://developers.google.com/cast/docs/reference/web_sender/chrome.cast.media.AudiobookChapterMediaMetadata
- var metadata = new chrome.cast.media.AudiobookChapterMediaMetadata()
- metadata.bookTitle = libraryItem.media.metadata.title
- metadata.chapterNumber = track.index
- metadata.chapterTitle = track.title
- metadata.images = [castImage]
- metadata.title = track.title
- metadata.subtitle = libraryItem.media.metadata.title
+ let metadata = null
+ if (libraryItem.mediaType === 'podcast') {
+ metadata = new chrome.cast.media.MusicTrackMediaMetadata()
+ metadata.albumArtist = libraryItem.media.metadata.author
+ metadata.artist = libraryItem.media.metadata.author
+ metadata.title = track.title
+ metadata.albumName = libraryItem.media.metadata.title
+ metadata.images = [castImage]
+ } else {
+ // https://developers.google.com/cast/docs/reference/web_sender/chrome.cast.media.AudiobookChapterMediaMetadata
+ metadata = new chrome.cast.media.AudiobookChapterMediaMetadata()
+ metadata.bookTitle = libraryItem.media.metadata.title
+ metadata.chapterNumber = track.index
+ metadata.chapterTitle = track.title
+ metadata.images = [castImage]
+ metadata.title = track.title
+ metadata.subtitle = libraryItem.media.metadata.title
+ }
var trackurl = track.fullContentUrl
var mimeType = track.mimeType
@@ -20,17 +29,25 @@ function getMediaInfoFromTrack(libraryItem, castImage, track) {
function buildCastMediaInfo(libraryItem, coverUrl, tracks) {
const castImage = new chrome.cast.Image(coverUrl)
- return tracks.map(t => getMediaInfoFromTrack(libraryItem, castImage, t))
+ return tracks.map((t) => getMediaInfoFromTrack(libraryItem, castImage, t))
}
function buildCastQueueRequest(libraryItem, coverUrl, tracks, startTime) {
var mediaInfoItems = buildCastMediaInfo(libraryItem, coverUrl, tracks)
- var containerMetadata = new chrome.cast.media.AudiobookContainerMetadata()
- containerMetadata.authors = libraryItem.media.metadata.authors.map(a => a.name)
- containerMetadata.narrators = libraryItem.media.metadata.narrators || []
- containerMetadata.publisher = libraryItem.media.metadata.publisher || undefined
- containerMetadata.title = libraryItem.media.metadata.title
+ let containerMetadata = null
+ let queueType = chrome.cast.media.QueueType.AUDIOBOOK
+ if (libraryItem.mediaType === 'podcast') {
+ queueType = chrome.cast.media.QueueType.PODCAST_SERIES
+ containerMetadata = new chrome.cast.media.ContainerMetadata(chrome.cast.media.ContainerType.GENERIC_CONTAINER)
+ containerMetadata.title = libraryItem.media.metadata.title
+ } else {
+ containerMetadata = new chrome.cast.media.AudiobookContainerMetadata()
+ containerMetadata.authors = libraryItem.media.metadata.authors?.map((a) => a.name)
+ containerMetadata.narrators = libraryItem.media.metadata.narrators || []
+ containerMetadata.publisher = libraryItem.media.metadata.publisher || undefined
+ containerMetadata.title = libraryItem.media.metadata.title
+ }
var mediaQueueItems = mediaInfoItems.map((mi) => {
var queueItem = new chrome.cast.media.QueueItem(mi)
@@ -38,23 +55,25 @@ function buildCastQueueRequest(libraryItem, coverUrl, tracks, startTime) {
})
// Find track to start playback and calculate track start offset
- var track = tracks.find(at => at.startOffset <= startTime && at.startOffset + at.duration > startTime)
+ var track = tracks.find((at) => at.startOffset <= startTime && at.startOffset + at.duration > startTime)
var trackStartIndex = track ? track.index - 1 : 0
var trackStartTime = Math.floor(track ? startTime - track.startOffset : 0)
var queueData = new chrome.cast.media.QueueData(libraryItem.id, libraryItem.media.metadata.title, '', false, mediaQueueItems, trackStartIndex, trackStartTime)
queueData.containerMetadata = containerMetadata
- queueData.queueType = chrome.cast.media.QueueType.AUDIOBOOK
+ queueData.queueType = queueType
return queueData
}
function castLoadMedia(castSession, request) {
return new Promise((resolve) => {
- castSession.loadMedia(request)
- .then(() => resolve(true), (reason) => {
+ castSession.loadMedia(request).then(
+ () => resolve(true),
+ (reason) => {
console.error('Load media failed', reason)
resolve(false)
- })
+ }
+ )
})
}
@@ -69,7 +88,4 @@ function buildCastLoadRequest(libraryItem, coverUrl, tracks, startTime, autoplay
return request
}
-export {
- buildCastLoadRequest,
- castLoadMedia
-}
\ No newline at end of file
+export { buildCastLoadRequest, castLoadMedia }
diff --git a/client/plugins/axios.js b/client/plugins/axios.js
index 4ea9b85b4..c2ce8dad6 100644
--- a/client/plugins/axios.js
+++ b/client/plugins/axios.js
@@ -1,5 +1,5 @@
export default function ({ $axios, store, $config }) {
- $axios.onRequest(config => {
+ $axios.onRequest((config) => {
if (!config.url) {
console.error('Axios request invalid config', config)
return
@@ -13,14 +13,13 @@ export default function ({ $axios, store, $config }) {
}
if (process.env.NODE_ENV === 'development') {
- config.url = `/dev${config.url}`
console.log('Making request to ' + config.url)
}
})
- $axios.onError(error => {
+ $axios.onError((error) => {
const code = parseInt(error.response && error.response.status)
const message = error.response ? error.response.data || 'Unknown Error' : 'Unknown Error'
console.error('Axios error', code, message)
})
-}
\ No newline at end of file
+}
diff --git a/client/plugins/constants.js b/client/plugins/constants.js
index f001f6ced..90c40b8c4 100644
--- a/client/plugins/constants.js
+++ b/client/plugins/constants.js
@@ -1,6 +1,6 @@
const SupportedFileTypes = {
image: ['png', 'jpg', 'jpeg', 'webp'],
- audio: ['m4b', 'mp3', 'm4a', 'flac', 'opus', 'ogg', 'oga', 'mp4', 'aac', 'wma', 'aiff', 'wav', 'webm', 'webma', 'mka', 'awb', 'caf'],
+ audio: ['m4b', 'mp3', 'm4a', 'flac', 'opus', 'ogg', 'oga', 'mp4', 'aac', 'wma', 'aiff', 'wav', 'webm', 'webma', 'mka', 'awb', 'caf', 'mpeg', 'mpg'],
ebook: ['epub', 'pdf', 'mobi', 'azw3', 'cbr', 'cbz'],
info: ['nfo'],
text: ['txt'],
@@ -32,12 +32,18 @@ const PlayMethod = {
LOCAL: 3
}
+const SleepTimerTypes = {
+ COUNTDOWN: 'countdown',
+ CHAPTER: 'chapter'
+}
+
const Constants = {
SupportedFileTypes,
DownloadStatus,
BookCoverAspectRatio,
BookshelfView,
- PlayMethod
+ PlayMethod,
+ SleepTimerTypes
}
const KeyNames = {
@@ -75,11 +81,9 @@ const Hotkeys = {
}
}
-export {
- Constants
-}
+export { Constants }
export default ({ app }, inject) => {
inject('constants', Constants)
inject('keynames', KeyNames)
inject('hotkeys', Hotkeys)
-}
\ No newline at end of file
+}
diff --git a/client/plugins/i18n.js b/client/plugins/i18n.js
index 3caf48a88..0ec5cccee 100644
--- a/client/plugins/i18n.js
+++ b/client/plugins/i18n.js
@@ -1,36 +1,38 @@
-import Vue from "vue"
+import Vue from 'vue'
import enUsStrings from '../strings/en-us.json'
import { supplant } from './utils'
const defaultCode = 'en-us'
const languageCodeMap = {
- 'bg': { label: 'Български', dateFnsLocale: 'bg' },
- 'bn': { label: 'বাংলা', dateFnsLocale: 'bn' },
- 'cs': { label: 'Čeština', dateFnsLocale: 'cs' },
- 'da': { label: 'Dansk', dateFnsLocale: 'da' },
- 'de': { label: 'Deutsch', dateFnsLocale: 'de' },
+ bg: { label: 'Български', dateFnsLocale: 'bg' },
+ bn: { label: 'বাংলা', dateFnsLocale: 'bn' },
+ cs: { label: 'Čeština', dateFnsLocale: 'cs' },
+ da: { label: 'Dansk', dateFnsLocale: 'da' },
+ de: { label: 'Deutsch', dateFnsLocale: 'de' },
'en-us': { label: 'English', dateFnsLocale: 'enUS' },
- 'es': { label: 'Español', dateFnsLocale: 'es' },
- 'et': { label: 'Eesti', dateFnsLocale: 'et' },
- 'fr': { label: 'Français', dateFnsLocale: 'fr' },
- 'he': { label: 'עברית', dateFnsLocale: 'he' },
- 'hr': { label: 'Hrvatski', dateFnsLocale: 'hr' },
- 'it': { label: 'Italiano', dateFnsLocale: 'it' },
- 'lt': { label: 'Lietuvių', dateFnsLocale: 'lt' },
- 'hu': { label: 'Magyar', dateFnsLocale: 'hu' },
- 'nl': { label: 'Nederlands', dateFnsLocale: 'nl' },
- 'no': { label: 'Norsk', dateFnsLocale: 'no' },
- 'pl': { label: 'Polski', dateFnsLocale: 'pl' },
+ es: { label: 'Español', dateFnsLocale: 'es' },
+ et: { label: 'Eesti', dateFnsLocale: 'et' },
+ fi: { label: 'Suomi', dateFnsLocale: 'fi' },
+ fr: { label: 'Français', dateFnsLocale: 'fr' },
+ he: { label: 'עברית', dateFnsLocale: 'he' },
+ hr: { label: 'Hrvatski', dateFnsLocale: 'hr' },
+ it: { label: 'Italiano', dateFnsLocale: 'it' },
+ lt: { label: 'Lietuvių', dateFnsLocale: 'lt' },
+ hu: { label: 'Magyar', dateFnsLocale: 'hu' },
+ nl: { label: 'Nederlands', dateFnsLocale: 'nl' },
+ no: { label: 'Norsk', dateFnsLocale: 'no' },
+ pl: { label: 'Polski', dateFnsLocale: 'pl' },
'pt-br': { label: 'Português (Brasil)', dateFnsLocale: 'ptBR' },
- 'ru': { label: 'Русский', dateFnsLocale: 'ru' },
- 'sv': { label: 'Svenska', dateFnsLocale: 'sv' },
- 'uk': { label: 'Українська', dateFnsLocale: 'uk' },
+ ru: { label: 'Русский', dateFnsLocale: 'ru' },
+ sl: { label: 'Slovenščina', dateFnsLocale: 'sl' },
+ sv: { label: 'Svenska', dateFnsLocale: 'sv' },
+ uk: { label: 'Українська', dateFnsLocale: 'uk' },
'vi-vn': { label: 'Tiếng Việt', dateFnsLocale: 'vi' },
'zh-cn': { label: '简体中文 (Simplified Chinese)', dateFnsLocale: 'zhCN' },
'zh-tw': { label: '正體中文 (Traditional Chinese)', dateFnsLocale: 'zhTW' }
}
-Vue.prototype.$languageCodeOptions = Object.keys(languageCodeMap).map(code => {
+Vue.prototype.$languageCodeOptions = Object.keys(languageCodeMap).map((code) => {
return {
text: languageCodeMap[code].label,
value: code
@@ -39,34 +41,34 @@ Vue.prototype.$languageCodeOptions = Object.keys(languageCodeMap).map(code => {
// iTunes search API uses ISO 3166 country codes: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
const podcastSearchRegionMap = {
- 'br': { label: 'Brasil' },
- 'be': { label: 'België / Belgique / Belgien' },
- 'cz': { label: 'Česko' },
- 'dk': { label: 'Danmark' },
- 'de': { label: 'Deutschland' },
- 'ee': { label: 'Eesti' },
- 'es': { label: 'España / Espanya / Espainia' },
- 'fr': { label: 'France' },
- 'hr': { label: 'Hrvatska' },
- 'il': { label: 'ישראל / إسرائيل' },
- 'it': { label: 'Italia' },
- 'lu': { label: 'Luxembourg / Luxemburg / Lëtezebuerg' },
- 'hu': { label: 'Magyarország' },
- 'nl': { label: 'Nederland' },
- 'no': { label: 'Norge' },
- 'at': { label: 'Österreich' },
- 'pl': { label: 'Polska' },
- 'pt': { label: 'Portugal' },
- 'ru': { label: 'Россия' },
- 'ch': { label: 'Schweiz / Suisse / Svizzera' },
- 'se': { label: 'Sverige' },
- 'vn': { label: 'Việt Nam' },
- 'ua': { label: 'Україна' },
- 'gb': { label: 'United Kingdom' },
- 'us': { label: 'United States' },
- 'cn': { label: '中国' }
+ br: { label: 'Brasil' },
+ be: { label: 'België / Belgique / Belgien' },
+ cz: { label: 'Česko' },
+ dk: { label: 'Danmark' },
+ de: { label: 'Deutschland' },
+ ee: { label: 'Eesti' },
+ es: { label: 'España / Espanya / Espainia' },
+ fr: { label: 'France' },
+ hr: { label: 'Hrvatska' },
+ il: { label: 'ישראל / إسرائيل' },
+ it: { label: 'Italia' },
+ lu: { label: 'Luxembourg / Luxemburg / Lëtezebuerg' },
+ hu: { label: 'Magyarország' },
+ nl: { label: 'Nederland' },
+ no: { label: 'Norge' },
+ at: { label: 'Österreich' },
+ pl: { label: 'Polska' },
+ pt: { label: 'Portugal' },
+ ru: { label: 'Россия' },
+ ch: { label: 'Schweiz / Suisse / Svizzera' },
+ se: { label: 'Sverige' },
+ vn: { label: 'Việt Nam' },
+ ua: { label: 'Україна' },
+ gb: { label: 'United Kingdom' },
+ us: { label: 'United States' },
+ cn: { label: '中国' }
}
-Vue.prototype.$podcastSearchRegionOptions = Object.keys(podcastSearchRegionMap).map(code => {
+Vue.prototype.$podcastSearchRegionOptions = Object.keys(podcastSearchRegionMap).map((code) => {
return {
text: podcastSearchRegionMap[code].label,
value: code
@@ -85,12 +87,12 @@ Vue.prototype.$strings = { ...enUsStrings }
/**
* Get string and substitute
- *
- * @param {string} key
- * @param {string[]} subs
+ *
+ * @param {string} key
+ * @param {string[]} [subs=[]]
* @returns {string}
*/
-Vue.prototype.$getString = (key, subs) => {
+Vue.prototype.$getString = (key, subs = []) => {
if (!Vue.prototype.$strings[key]) return ''
if (subs?.length && Array.isArray(subs)) {
return supplant(Vue.prototype.$strings[key], subs)
@@ -108,12 +110,14 @@ const translations = {
function loadTranslationStrings(code) {
return new Promise((resolve) => {
- import(`../strings/${code}`).then((fileContents) => {
- resolve(fileContents.default)
- }).catch((error) => {
- console.error('Failed to load i18n strings', code, error)
- resolve(null)
- })
+ import(`../strings/${code}`)
+ .then((fileContents) => {
+ resolve(fileContents.default)
+ })
+ .catch((error) => {
+ console.error('Failed to load i18n strings', code, error)
+ resolve(null)
+ })
})
}
@@ -124,7 +128,7 @@ async function loadi18n(code) {
return false
}
- const strings = translations[code] || await loadTranslationStrings(code)
+ const strings = translations[code] || (await loadTranslationStrings(code))
if (!strings) {
console.warn(`Invalid lang code ${code}`)
return false
@@ -174,4 +178,3 @@ async function initialize() {
}
}
initialize()
-
diff --git a/client/plugins/init.client.js b/client/plugins/init.client.js
index cbf514fd1..984ec9d0d 100644
--- a/client/plugins/init.client.js
+++ b/client/plugins/init.client.js
@@ -6,7 +6,6 @@ import * as locale from 'date-fns/locale'
Vue.directive('click-outside', vClickOutside.directive)
-
Vue.prototype.$setDateFnsLocale = (localeString) => {
if (!locale[localeString]) return 0
return setDefaultOptions({ locale: locale[localeString] })
@@ -112,14 +111,15 @@ Vue.prototype.$sanitizeSlug = (str) => {
str = str.toLowerCase()
// remove accents, swap ñ for n, etc
- var from = "àáäâèéëêìíïîòóöôùúüûñçěščřžýúůďťň·/,:;"
- var to = "aaaaeeeeiiiioooouuuuncescrzyuudtn-----"
+ var from = 'àáäâèéëêìíïîòóöôùúüûñçěščřžýúůďťň·/,:;'
+ var to = 'aaaaeeeeiiiioooouuuuncescrzyuudtn-----'
for (var i = 0, l = from.length; i < l; i++) {
str = str.replace(new RegExp(from.charAt(i), 'g'), to.charAt(i))
}
- str = str.replace('.', '-') // replace a dot by a dash
+ str = str
+ .replace('.', '-') // replace a dot by a dash
.replace(/[^a-z0-9 -_]/g, '') // remove invalid chars
.replace(/\s+/g, '-') // collapse whitespace and replace by a dash
.replace(/-+/g, '-') // collapse dashes
@@ -131,13 +131,16 @@ Vue.prototype.$sanitizeSlug = (str) => {
Vue.prototype.$copyToClipboard = (str, ctx) => {
return new Promise((resolve) => {
if (navigator.clipboard) {
- navigator.clipboard.writeText(str).then(() => {
- if (ctx) ctx.$toast.success('Copied to clipboard')
- resolve(true)
- }, (err) => {
- console.error('Clipboard copy failed', str, err)
- resolve(false)
- })
+ navigator.clipboard.writeText(str).then(
+ () => {
+ if (ctx) ctx.$toast.success('Copied to clipboard')
+ resolve(true)
+ },
+ (err) => {
+ console.error('Clipboard copy failed', str, err)
+ resolve(false)
+ }
+ )
} else {
const el = document.createElement('textarea')
el.value = str
@@ -160,26 +163,18 @@ function xmlToJson(xml) {
for (const res of xml.matchAll(/(?:<(\w*)(?:\s[^>]*)*>)((?:(?!<\1).)*)(?:<\/\1>)|<(\w*)(?:\s*)*\/>/gm)) {
const key = res[1] || res[3]
const value = res[2] && xmlToJson(res[2])
- json[key] = ((value && Object.keys(value).length) ? value : res[2]) || null
-
+ json[key] = (value && Object.keys(value).length ? value : res[2]) || null
}
return json
}
Vue.prototype.$xmlToJson = xmlToJson
-Vue.prototype.$encodeUriPath = (path) => {
- return path.replace(/\\/g, '/').replace(/%/g, '%25').replace(/#/g, '%23')
-}
-
const encode = (text) => encodeURIComponent(Buffer.from(text).toString('base64'))
Vue.prototype.$encode = encode
const decode = (text) => Buffer.from(decodeURIComponent(text), 'base64').toString()
Vue.prototype.$decode = decode
-export {
- encode,
- decode
-}
+export { encode, decode }
export default ({ app, store }, inject) => {
app.$decode = decode
app.$encode = encode
diff --git a/client/plugins/utils.js b/client/plugins/utils.js
index 495a14ef0..ad08ebf6a 100644
--- a/client/plugins/utils.js
+++ b/client/plugins/utils.js
@@ -2,20 +2,26 @@ import Vue from 'vue'
import cronParser from 'cron-parser'
import { nanoid } from 'nanoid'
-Vue.prototype.$randomId = () => nanoid()
+Vue.prototype.$randomId = (len = null) => {
+ if (len && !isNaN(len)) return nanoid(len)
+ return nanoid()
+}
Vue.prototype.$bytesPretty = (bytes, decimals = 2) => {
if (isNaN(bytes) || bytes == 0) {
return '0 Bytes'
}
- const k = 1024
+ const k = 1000
const dm = decimals < 0 ? 0 : decimals
const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']
const i = Math.floor(Math.log(bytes) / Math.log(k))
return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i]
}
-Vue.prototype.$elapsedPretty = (seconds, useFullNames = false) => {
+Vue.prototype.$elapsedPretty = (seconds, useFullNames = false, useMilliseconds = false) => {
+ if (useMilliseconds && seconds > 0 && seconds < 1) {
+ return `${Math.floor(seconds * 1000)} ms`
+ }
if (seconds < 60) {
return `${Math.floor(seconds)} sec${useFullNames ? 'onds' : ''}`
}
@@ -119,7 +125,7 @@ Vue.prototype.$parseCronExpression = (expression) => {
value: '* * * * *'
}
]
- const patternMatch = commonPatterns.find(p => p.value === expression)
+ const patternMatch = commonPatterns.find((p) => p.value === expression)
if (patternMatch) {
return {
description: patternMatch.text
@@ -132,13 +138,17 @@ Vue.prototype.$parseCronExpression = (expression) => {
if (pieces[2] !== '*' || pieces[3] !== '*') {
return null
}
- if (pieces[4] !== '*' && pieces[4].split(',').some(p => isNaN(p))) {
+ if (pieces[4] !== '*' && pieces[4].split(',').some((p) => isNaN(p))) {
return null
}
const weekdays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
var weekdayText = 'day'
- if (pieces[4] !== '*') weekdayText = pieces[4].split(',').map(p => weekdays[p]).join(', ')
+ if (pieces[4] !== '*')
+ weekdayText = pieces[4]
+ .split(',')
+ .map((p) => weekdays[p])
+ .join(', ')
return {
description: `Run every ${weekdayText} at ${pieces[1]}:${pieces[0].padStart(2, '0')}`
@@ -146,7 +156,7 @@ Vue.prototype.$parseCronExpression = (expression) => {
}
Vue.prototype.$getNextScheduledDate = (expression) => {
- const interval = cronParser.parseExpression(expression);
+ const interval = cronParser.parseExpression(expression)
return interval.next().toDate()
}
@@ -171,10 +181,8 @@ Vue.prototype.$downloadFile = (url, filename = null, openInNewTab = false) => {
export function supplant(str, subs) {
// source: http://crockford.com/javascript/remedial.html
- return str.replace(/{([^{}]*)}/g,
- function (a, b) {
- var r = subs[b]
- return typeof r === 'string' || typeof r === 'number' ? r : a
- }
- )
+ return str.replace(/{([^{}]*)}/g, function (a, b) {
+ var r = subs[b]
+ return typeof r === 'string' || typeof r === 'number' ? r : a
+ })
}
diff --git a/client/plugins/version.js b/client/plugins/version.js
index 75b948c8c..488404c64 100644
--- a/client/plugins/version.js
+++ b/client/plugins/version.js
@@ -11,6 +11,7 @@ function parseSemver(ver) {
return null
}
return {
+ name: ver,
total,
version: groups[2],
major: Number(groups[3]),
@@ -24,47 +25,61 @@ function parseSemver(ver) {
return null
}
+function getReleases() {
+ return axios
+ .get(`https://api.github.com/repos/advplyr/audiobookshelf/releases`)
+ .then((res) => {
+ return res.data
+ .map((release) => {
+ const tagName = release.tag_name
+ const verObj = parseSemver(tagName)
+ if (verObj) {
+ verObj.pubdate = new Date(release.published_at)
+ verObj.changelog = release.body
+ return verObj
+ }
+ return null
+ })
+ .filter((verObj) => verObj)
+ })
+ .catch((error) => {
+ console.error('Failed to get releases', error)
+ return []
+ })
+}
+
export const currentVersion = packagejson.version
export async function checkForUpdate() {
if (!packagejson.version) {
return null
}
- var currVerObj = parseSemver('v' + packagejson.version)
- if (!currVerObj) {
- console.error('Invalid version', packagejson.version)
+
+ const releases = await getReleases()
+ if (!releases.length) {
+ console.error('No releases found')
return null
}
- var largestVer = null
- await axios.get(`https://api.github.com/repos/advplyr/audiobookshelf/releases`).then((res) => {
- var releases = res.data
- if (releases && releases.length) {
- releases.forEach((release) => {
- var tagName = release.tag_name
- var verObj = parseSemver(tagName)
- if (verObj) {
- if (!largestVer || largestVer.total < verObj.total) {
- largestVer = verObj
- }
- }
- if (verObj.version == currVerObj.version) {
- currVerObj.changelog = release.body
- }
- })
- }
+ const currentVersion = releases.find((release) => release.version == packagejson.version)
+ if (!currentVersion) {
+ console.error('Current version not found in releases')
+ return null
+ }
+ const latestVersion = releases[0]
+ const currentVersionMinor = currentVersion.minor
+ const currentVersionMajor = currentVersion.major
+ // Show all releases with the same minor version and lower or equal total version
+ const releasesToShow = releases.filter((release) => {
+ return release.major == currentVersionMajor && release.minor == currentVersionMinor && release.total <= currentVersion.total
})
- if (!largestVer) {
- console.error('No valid version tags to compare with')
- return null
- }
return {
- hasUpdate: largestVer.total > currVerObj.total,
- latestVersion: largestVer.version,
- githubTagUrl: `https://github.com/advplyr/audiobookshelf/releases/tag/v${largestVer.version}`,
- currentVersion: currVerObj.version,
- currentVersionChangelog: currVerObj.changelog
+ hasUpdate: latestVersion.total > currentVersion.total,
+ latestVersion: latestVersion.version,
+ githubTagUrl: `https://github.com/advplyr/audiobookshelf/releases/tag/v${latestVersion.version}`,
+ currentVersion: currentVersion.version,
+ releasesToShow
}
-}
\ No newline at end of file
+}
diff --git a/client/static/fonts/MaterialIcons.woff2 b/client/static/fonts/MaterialIcons.woff2
deleted file mode 100644
index 28fc9e48d..000000000
Binary files a/client/static/fonts/MaterialIcons.woff2 and /dev/null differ
diff --git a/client/static/fonts/MaterialIconsOutlined.woff2 b/client/static/fonts/MaterialIconsOutlined.woff2
deleted file mode 100644
index aa2ef9c1b..000000000
Binary files a/client/static/fonts/MaterialIconsOutlined.woff2 and /dev/null differ
diff --git a/client/static/fonts/MaterialSymbolsRounded.woff2 b/client/static/fonts/MaterialSymbolsRounded.woff2
new file mode 100644
index 000000000..88a9a81ff
Binary files /dev/null and b/client/static/fonts/MaterialSymbolsRounded.woff2 differ
diff --git a/client/store/globals.js b/client/store/globals.js
index 4435318b2..c0e7d7885 100644
--- a/client/store/globals.js
+++ b/client/store/globals.js
@@ -10,6 +10,7 @@ export const state = () => ({
showEditPodcastEpisode: false,
showViewPodcastEpisodeModal: false,
showRSSFeedOpenCloseModal: false,
+ showShareModal: false,
showConfirmPrompt: false,
showRawCoverPreviewModal: false,
confirmPromptOptions: null,
@@ -22,6 +23,7 @@ export const state = () => ({
selectedAuthor: null,
selectedMediaItems: [],
selectedRawCoverUrl: null,
+ selectedMediaItemShare: null,
isCasting: false, // Actively casting
isChromecastInitialized: false, // Script loadeds
showBatchQuickMatchModal: false,
@@ -70,13 +72,13 @@ export const state = () => ({
}
],
podcastTypes: [
- { text: 'Episodic', value: 'episodic' },
- { text: 'Serial', value: 'serial' }
+ { text: 'Episodic', value: 'episodic', descriptionKey: 'LabelEpisodic' },
+ { text: 'Serial', value: 'serial', descriptionKey: 'LabelSerial' }
],
episodeTypes: [
- { text: 'Full', value: 'full' },
- { text: 'Trailer', value: 'trailer' },
- { text: 'Bonus', value: 'bonus' }
+ { text: 'Full', value: 'full', descriptionKey: 'LabelFull' },
+ { text: 'Trailer', value: 'trailer', descriptionKey: 'LabelTrailer' },
+ { text: 'Bonus', value: 'bonus', descriptionKey: 'LabelBonus' }
],
libraryIcons: ['database', 'audiobookshelf', 'books-1', 'books-2', 'book-1', 'microphone-1', 'microphone-3', 'radio', 'podcast', 'rss', 'headphones', 'music', 'file-picture', 'rocket', 'power', 'star', 'heart']
})
@@ -96,12 +98,6 @@ export const getters = {
const userToken = rootGetters['user/getToken']
const lastUpdate = libraryItem.updatedAt || Date.now()
const libraryItemId = libraryItem.libraryItemId || libraryItem.id // Workaround for /users/:id page showing media progress covers
-
- if (process.env.NODE_ENV !== 'production') {
- // Testing
- return `http://localhost:3333${rootState.routerBasePath}/api/items/${libraryItemId}/cover?token=${userToken}&ts=${lastUpdate}${raw ? '&raw=1' : ''}`
- }
-
return `${rootState.routerBasePath}/api/items/${libraryItemId}/cover?token=${userToken}&ts=${lastUpdate}${raw ? '&raw=1' : ''}`
},
getLibraryItemCoverSrcById:
@@ -110,10 +106,6 @@ export const getters = {
const placeholder = `${rootState.routerBasePath}/book_placeholder.jpg`
if (!libraryItemId) return placeholder
const userToken = rootGetters['user/getToken']
- if (process.env.NODE_ENV !== 'production') {
- // Testing
- return `http://localhost:3333${rootState.routerBasePath}/api/items/${libraryItemId}/cover?token=${userToken}${raw ? '&raw=1' : ''}${timestamp ? `&ts=${timestamp}` : ''}`
- }
return `${rootState.routerBasePath}/api/items/${libraryItemId}/cover?token=${userToken}${raw ? '&raw=1' : ''}${timestamp ? `&ts=${timestamp}` : ''}`
},
getIsBatchSelectingMediaItems: (state) => {
@@ -157,6 +149,13 @@ export const mutations = {
state.rssFeedEntity = entity
state.showRSSFeedOpenCloseModal = true
},
+ setShowShareModal(state, val) {
+ state.showShareModal = val
+ },
+ setShareModal(state, mediaItemShare) {
+ state.selectedMediaItemShare = mediaItemShare
+ state.showShareModal = true
+ },
setShowConfirmPrompt(state, val) {
state.showConfirmPrompt = val
},
diff --git a/client/store/index.js b/client/store/index.js
index ed7c35b61..acd03eb46 100644
--- a/client/store/index.js
+++ b/client/store/index.js
@@ -32,33 +32,33 @@ export const state = () => ({
})
export const getters = {
- getServerSetting: state => key => {
+ getServerSetting: (state) => (key) => {
if (!state.serverSettings) return null
return state.serverSettings[key]
},
- getLibraryItemIdStreaming: state => {
+ getLibraryItemIdStreaming: (state) => {
return state.streamLibraryItem?.id || null
},
getIsStreamingFromDifferentLibrary: (state, getters, rootState) => {
if (!state.streamLibraryItem) return false
return state.streamLibraryItem.libraryId !== rootState.libraries.currentLibraryId
},
- getIsMediaStreaming: state => (libraryItemId, episodeId) => {
+ getIsMediaStreaming: (state) => (libraryItemId, episodeId) => {
if (!state.streamLibraryItem) return null
if (!episodeId) return state.streamLibraryItem.id == libraryItemId
return state.streamLibraryItem.id == libraryItemId && state.streamEpisodeId == episodeId
},
- getIsMediaQueued: state => (libraryItemId, episodeId) => {
- return state.playerQueueItems.some(i => {
+ getIsMediaQueued: (state) => (libraryItemId, episodeId) => {
+ return state.playerQueueItems.some((i) => {
if (!episodeId) return i.libraryItemId === libraryItemId
return i.libraryItemId === libraryItemId && i.episodeId === episodeId
})
},
- getBookshelfView: state => {
+ getBookshelfView: (state) => {
if (!state.serverSettings || isNaN(state.serverSettings.bookshelfView)) return Constants.BookshelfView.STANDARD
return state.serverSettings.bookshelfView
},
- getHomeBookshelfView: state => {
+ getHomeBookshelfView: (state) => {
if (!state.serverSettings || isNaN(state.serverSettings.homeBookshelfView)) return Constants.BookshelfView.STANDARD
return state.serverSettings.homeBookshelfView
}
@@ -69,17 +69,20 @@ export const actions = {
const updatePayload = {
...payload
}
- return this.$axios.$patch('/api/settings', updatePayload).then((result) => {
- if (result.success) {
- commit('setServerSettings', result.serverSettings)
- return true
- } else {
+ return this.$axios
+ .$patch('/api/settings', updatePayload)
+ .then((result) => {
+ if (result.success) {
+ commit('setServerSettings', result.serverSettings)
+ return true
+ } else {
+ return false
+ }
+ })
+ .catch((error) => {
+ console.error('Failed to update server settings', error)
return false
- }
- }).catch((error) => {
- console.error('Failed to update server settings', error)
- return false
- })
+ })
},
checkForUpdate({ commit }) {
const VERSION_CHECK_BUFF = 1000 * 60 * 5 // 5 minutes
@@ -96,7 +99,7 @@ export const actions = {
}
var shouldCheckForUpdate = Date.now() - Number(lastVerCheck) > VERSION_CHECK_BUFF
- if (!shouldCheckForUpdate && savedVersionData && savedVersionData.version !== currentVersion) {
+ if (!shouldCheckForUpdate && savedVersionData && (savedVersionData.version !== currentVersion || !savedVersionData.releasesToShow)) {
// Version mismatch between saved data so check for update anyway
shouldCheckForUpdate = true
}
@@ -180,7 +183,7 @@ export const mutations = {
})
},
addItemToQueue(state, item) {
- const exists = state.playerQueueItems.some(i => {
+ const exists = state.playerQueueItems.some((i) => {
if (!i.episodeId) return i.libraryItemId === item.libraryItemId
return i.libraryItemId === item.libraryItemId && i.episodeId === item.episodeId
})
diff --git a/client/store/libraries.js b/client/store/libraries.js
index f56bdad67..8964d9f19 100644
--- a/client/store/libraries.js
+++ b/client/store/libraries.js
@@ -166,22 +166,6 @@ export const actions = {
commit('set', [])
})
return true
- },
- loadLibraryFilterData({ state, commit, rootState }) {
- if (!rootState.user || !rootState.user.user) {
- console.error('libraries/loadLibraryFilterData - User not set')
- return false
- }
-
- this.$axios
- .$get(`/api/libraries/${state.currentLibraryId}/filterdata`)
- .then((data) => {
- commit('setLibraryFilterData', data)
- })
- .catch((error) => {
- console.error('Failed', error)
- commit('setLibraryFilterData', null)
- })
}
}
@@ -256,7 +240,8 @@ export const mutations = {
series: [],
narrators: [],
languages: [],
- publishers: []
+ publishers: [],
+ publishedDecades: []
}
*/
const mediaMetadata = libraryItem.media.metadata
@@ -323,6 +308,16 @@ export const mutations = {
state.filterData.publishers.sort((a, b) => a.localeCompare(b))
}
+ // Add publishedDecades
+ if (mediaMetadata.publishedYear && !isNaN(mediaMetadata.publishedYear)) {
+ const publishedYear = parseInt(mediaMetadata.publishedYear, 10)
+ const decade = (Math.floor(publishedYear / 10) * 10).toString()
+ if (!state.filterData.publishedDecades.includes(decade)) {
+ state.filterData.publishedDecades.push(decade)
+ state.filterData.publishedDecades.sort((a, b) => a - b)
+ }
+ }
+
// Add language
if (mediaMetadata.language && !state.filterData.languages.includes(mediaMetadata.language)) {
state.filterData.languages.push(mediaMetadata.language)
diff --git a/client/store/tasks.js b/client/store/tasks.js
index 96e7e5b82..24a7517a9 100644
--- a/client/store/tasks.js
+++ b/client/store/tasks.js
@@ -1,34 +1,60 @@
+import Vue from 'vue'
export const state = () => ({
tasks: [],
- queuedEmbedLIds: []
+ queuedEmbedLIds: [],
+ audioFilesEncoding: {},
+ audioFilesFinished: {},
+ taskProgress: {}
})
export const getters = {
getTasksByLibraryItemId: (state) => (libraryItemId) => {
- return state.tasks.filter(t => t.data?.libraryItemId === libraryItemId)
+ return state.tasks.filter((t) => t.data?.libraryItemId === libraryItemId)
},
getRunningLibraryScanTask: (state) => (libraryId) => {
const libraryScanActions = ['library-scan', 'library-match-all']
- return state.tasks.find(t => libraryScanActions.includes(t.action) && t.data?.libraryId === libraryId && !t.isFinished)
+ return state.tasks.find((t) => libraryScanActions.includes(t.action) && t.data?.libraryId === libraryId && !t.isFinished)
+ },
+ getAudioFilesEncoding: (state) => (libraryItemId) => {
+ return state.audioFilesEncoding[libraryItemId]
+ },
+ getAudioFilesFinished: (state) => (libraryItemId) => {
+ return state.audioFilesFinished[libraryItemId]
+ },
+ getTaskProgress: (state) => (libraryItemId) => {
+ return state.taskProgress[libraryItemId]
}
}
-export const actions = {
-
-}
+export const actions = {}
export const mutations = {
+ updateAudioFilesEncoding(state, payload) {
+ if (!state.audioFilesEncoding[payload.libraryItemId]) {
+ Vue.set(state.audioFilesEncoding, payload.libraryItemId, {})
+ }
+ Vue.set(state.audioFilesEncoding[payload.libraryItemId], payload.ino, payload.progress)
+ },
+ updateAudioFilesFinished(state, payload) {
+ if (!state.audioFilesFinished[payload.libraryItemId]) {
+ Vue.set(state.audioFilesFinished, payload.libraryItemId, {})
+ }
+ Vue.set(state.audioFilesFinished[payload.libraryItemId], payload.ino, payload.finished)
+ },
+ updateTaskProgress(state, payload) {
+ Vue.set(state.taskProgress, payload.libraryItemId, payload.progress)
+ },
setTasks(state, tasks) {
state.tasks = tasks
},
addUpdateTask(state, task) {
- const index = state.tasks.findIndex(d => d.id === task.id)
+ const index = state.tasks.findIndex((d) => d.id === task.id)
if (index >= 0) {
state.tasks.splice(index, 1, task)
} else {
// Remove duplicate (only have one library item per action)
- state.tasks = state.tasks.filter(_task => {
+ state.tasks = state.tasks.filter((_task) => {
if (!_task.data?.libraryItemId || _task.action !== task.action) return true
return _task.data.libraryItemId !== task.data.libraryItemId
})
@@ -37,17 +63,17 @@ export const mutations = {
}
},
removeTask(state, task) {
- state.tasks = state.tasks.filter(d => d.id !== task.id)
+ state.tasks = state.tasks.filter((d) => d.id !== task.id)
},
setQueuedEmbedLIds(state, libraryItemIds) {
state.queuedEmbedLIds = libraryItemIds
},
addQueuedEmbedLId(state, libraryItemId) {
- if (!state.queuedEmbedLIds.some(lid => lid === libraryItemId)) {
+ if (!state.queuedEmbedLIds.some((lid) => lid === libraryItemId)) {
state.queuedEmbedLIds.push(libraryItemId)
}
},
removeQueuedEmbedLId(state, libraryItemId) {
- state.queuedEmbedLIds = state.queuedEmbedLIds.filter(lid => lid !== libraryItemId)
+ state.queuedEmbedLIds = state.queuedEmbedLIds.filter((lid) => lid !== libraryItemId)
}
-}
\ No newline at end of file
+}
diff --git a/client/store/user.js b/client/store/user.js
index a69ee058a..0e4cc0ccf 100644
--- a/client/store/user.js
+++ b/client/store/user.js
@@ -8,12 +8,15 @@ export const state = () => ({
bookshelfCoverSize: 120,
collapseSeries: false,
collapseBookSeries: false,
+ showSubtitles: false,
useChapterTrack: false,
seriesSortBy: 'name',
seriesSortDesc: false,
seriesFilterBy: 'all',
authorSortBy: 'name',
- authorSortDesc: false
+ authorSortDesc: false,
+ jumpForwardAmount: 10,
+ jumpBackwardAmount: 10
}
})
@@ -23,16 +26,18 @@ export const getters = {
getToken: (state) => {
return state.user?.token || null
},
- getUserMediaProgress: (state) => (libraryItemId, episodeId = null) => {
- if (!state.user.mediaProgress) return null
- return state.user.mediaProgress.find(li => {
- if (episodeId && li.episodeId !== episodeId) return false
- return li.libraryItemId == libraryItemId
- })
- },
+ getUserMediaProgress:
+ (state) =>
+ (libraryItemId, episodeId = null) => {
+ if (!state.user.mediaProgress) return null
+ return state.user.mediaProgress.find((li) => {
+ if (episodeId && li.episodeId !== episodeId) return false
+ return li.libraryItemId == libraryItemId
+ })
+ },
getUserBookmarksForItem: (state) => (libraryItemId) => {
if (!state.user.bookmarks) return []
- return state.user.bookmarks.filter(bm => bm.libraryItemId === libraryItemId)
+ return state.user.bookmarks.filter((bm) => bm.libraryItemId === libraryItemId)
},
getUserSetting: (state) => (key) => {
return state.settings?.[key] || null
@@ -65,6 +70,9 @@ export const getters = {
getIsSeriesRemovedFromContinueListening: (state) => (seriesId) => {
if (!state.user || !state.user.seriesHideFromContinueListening || !state.user.seriesHideFromContinueListening.length) return false
return state.user.seriesHideFromContinueListening.includes(seriesId)
+ },
+ getSizeMultiplier: (state) => {
+ return state.settings.bookshelfCoverSize / 120
}
}
@@ -82,7 +90,7 @@ export const actions = {
if (state.settings.orderBy == 'media.metadata.publishedYear') {
settingsUpdate.orderBy = 'media.metadata.title'
}
- const invalidFilters = ['series', 'authors', 'narrators', 'publishers', 'languages', 'progress', 'issues', 'ebooks', 'abridged']
+ const invalidFilters = ['series', 'authors', 'narrators', 'publishers', 'publishedDecades', 'languages', 'progress', 'issues', 'ebooks', 'abridged']
const filterByFirstPart = (state.settings.filterBy || '').split('.').shift()
if (invalidFilters.includes(filterByFirstPart)) {
settingsUpdate.filterBy = 'all'
@@ -147,14 +155,14 @@ export const mutations = {
},
setUserToken(state, token) {
state.user.token = token
- localStorage.setItem('token', user.token)
+ localStorage.setItem('token', token)
},
updateMediaProgress(state, { id, data }) {
if (!state.user) return
if (!data) {
- state.user.mediaProgress = state.user.mediaProgress.filter(lip => lip.id != id)
+ state.user.mediaProgress = state.user.mediaProgress.filter((lip) => lip.id != id)
} else {
- var indexOf = state.user.mediaProgress.findIndex(lip => lip.id == id)
+ var indexOf = state.user.mediaProgress.findIndex((lip) => lip.id == id)
if (indexOf >= 0) {
state.user.mediaProgress.splice(indexOf, 1, data)
} else {
@@ -167,4 +175,4 @@ export const mutations = {
localStorage.setItem('userSettings', JSON.stringify(settings))
state.settings = settings
}
-}
\ No newline at end of file
+}
diff --git a/client/strings/bg.json b/client/strings/bg.json
index 0858856e4..8e124d063 100644
--- a/client/strings/bg.json
+++ b/client/strings/bg.json
@@ -9,6 +9,7 @@
"ButtonApply": "Приложи",
"ButtonApplyChapters": "Приложи Глави",
"ButtonAuthors": "Автори",
+ "ButtonBack": "Назад",
"ButtonBrowseForFolder": "Прегледай за папка",
"ButtonCancel": "Откажи",
"ButtonCancelEncode": "Откажи закодирането",
@@ -43,7 +44,6 @@
"ButtonMatchAllAuthors": "Съвпадение на Всички Автори",
"ButtonMatchBooks": "Съвпадение на Книги",
"ButtonNevermind": "Няма значение",
- "ButtonNext": "Next",
"ButtonNextChapter": "Следваща Глава",
"ButtonOk": "Добре",
"ButtonOpenFeed": "Отвори Feed",
@@ -52,25 +52,23 @@
"ButtonPlay": "Пусни",
"ButtonPlaying": "Пуска се",
"ButtonPlaylists": "Плейлисти",
- "ButtonPrevious": "Previous",
"ButtonPreviousChapter": "Предишна Глава",
"ButtonPurgeAllCache": "Изчисти Всички Кешове",
"ButtonPurgeItemsCache": "Изчисти Кеша на Елементи",
- "ButtonPurgeMediaProgress": "Изчисти Прогреса на Медията",
"ButtonQueueAddItem": "Добави към опашката",
"ButtonQueueRemoveItem": "Премахни от опашката",
"ButtonQuickMatch": "Бързо Съпоставяне",
+ "ButtonReScan": "Пресканирай",
"ButtonRead": "Прочети",
- "ButtonReadLess": "Read less",
- "ButtonReadMore": "Read more",
- "ButtonRefresh": "Refresh",
+ "ButtonReadLess": "Покажи по-малко",
+ "ButtonReadMore": "Покажи повече",
+ "ButtonRefresh": "Обнови",
"ButtonRemove": "Премахни",
"ButtonRemoveAll": "Премахни Всички",
"ButtonRemoveAllLibraryItems": "Премахни Всички Елементи от Библиотеката",
"ButtonRemoveFromContinueListening": "Премахни от Продължаване на Слушане",
"ButtonRemoveFromContinueReading": "Премахни от Продължаване на Четене",
"ButtonRemoveSeriesFromContinueSeries": "Премахни Серия от Продължаване на Серии",
- "ButtonReScan": "Пресканирай",
"ButtonReset": "Нулиране",
"ButtonResetToDefault": "Нулиране до стойност по подразбиране",
"ButtonRestore": "Възстанови",
@@ -83,7 +81,7 @@
"ButtonSelectFolderPath": "Избери Път на Папка",
"ButtonSeries": "Серии",
"ButtonSetChaptersFromTracks": "Задай Глави от Песни",
- "ButtonShare": "Share",
+ "ButtonShare": "Сподели",
"ButtonShiftTimes": "Измести Времената",
"ButtonShow": "Покажи",
"ButtonStartM4BEncode": "Започни M4B Кодиране",
@@ -98,16 +96,16 @@
"ButtonUserEdit": "Редактирай Потребител {0}",
"ButtonViewAll": "Виж Всички",
"ButtonYes": "Да",
- "ErrorUploadFetchMetadataAPI": "Грешка при Взимане на Метаданни ",
+ "ErrorUploadFetchMetadataAPI": "Грешка при Взимане на Метаданни",
"ErrorUploadFetchMetadataNoResults": "Метаданните не могат да бъдат взети - опитайте да обновите заглавието и/или автора",
"ErrorUploadLacksTitle": "Трябва да има Заглавие",
"HeaderAccount": "Профил",
"HeaderAdvanced": "Разширени",
"HeaderAppriseNotificationSettings": "Apprise Notification Опции",
- "HeaderAudiobookTools": "Инструмент за Менижиране на Аудиокниги ",
"HeaderAudioTracks": "Звуков Канал",
+ "HeaderAudiobookTools": "Инструмент за Менижиране на Аудиокниги",
"HeaderAuthentication": "Аутентикация",
- "HeaderBackups": "Backups",
+ "HeaderBackups": "Архив",
"HeaderChangePassword": "Промяна на Парола",
"HeaderChapters": "Глави",
"HeaderChooseAFolder": "Избети Папка",
@@ -115,6 +113,7 @@
"HeaderCollectionItems": "Елементи на Колекция",
"HeaderCover": "Корица",
"HeaderCurrentDownloads": "Текущи Сваляния",
+ "HeaderCustomMessageOnLogin": "Потребителско съобщение при влизане",
"HeaderCustomMetadataProviders": "Потребителски Доставчици на Метаданни",
"HeaderDetails": "Детайли",
"HeaderDownloadQueue": "Опашка за Сваляне",
@@ -157,11 +156,11 @@
"HeaderPlaylistItems": "Елементи на Плейлист",
"HeaderPodcastsToAdd": "Подкасти за Добавяне",
"HeaderPreviewCover": "Преглед на Корица",
- "HeaderRemoveEpisode": "Премахни Епизод",
- "HeaderRemoveEpisodes": "Премахни {0} Епизоди",
"HeaderRSSFeedGeneral": "RSS Детайли",
"HeaderRSSFeedIsOpen": "RSS Feed е Отворен",
"HeaderRSSFeeds": "RSS Feed-ове",
+ "HeaderRemoveEpisode": "Премахни Епизод",
+ "HeaderRemoveEpisodes": "Премахни {0} Епизоди",
"HeaderSavedMediaProgress": "Запазен Прогрес на Медията",
"HeaderSchedule": "График",
"HeaderScheduleLibraryScans": "График за Автоматично Сканиране на Библиотека",
@@ -186,23 +185,22 @@
"HeaderUpdateDetails": "Обнови Детайли",
"HeaderUpdateLibrary": "Обнови Библиотека",
"HeaderUsers": "Потребители",
- "HeaderYearReview": "Year {0} in Review",
+ "HeaderYearReview": "Преглед на {0} Година",
"HeaderYourStats": "Твоята Статистика",
"LabelAbridged": "Съкратен",
- "LabelAbridgedChecked": "Abridged (checked)",
- "LabelAbridgedUnchecked": "Unabridged (unchecked)",
- "LabelAccessibleBy": "Accessible by",
+ "LabelAbridgedChecked": "Съкратена (отбелязано)",
+ "LabelAbridgedUnchecked": "Несъкратена (не отбелязано)",
+ "LabelAccessibleBy": "Достъпно от",
"LabelAccountType": "Тип на Профила",
"LabelAccountTypeAdmin": "Администратор",
"LabelAccountTypeGuest": "Гост",
"LabelAccountTypeUser": "Потребител",
"LabelActivity": "Дейност",
- "LabelAdded": "Добавени",
- "LabelAddedAt": "Добавени На",
"LabelAddToCollection": "Добави в Колекция",
"LabelAddToCollectionBatch": "Добави {0} Книги в Колекция",
"LabelAddToPlaylist": "Добави в Плейлист",
"LabelAddToPlaylistBatch": "Добави {0} Елемент в Плейлист",
+ "LabelAddedAt": "Добавени На",
"LabelAdminUsersOnly": "Само за Администратори",
"LabelAll": "Всички",
"LabelAllUsers": "Всички Потребители",
@@ -232,12 +230,11 @@
"LabelBitrate": "Битрейт",
"LabelBooks": "Книги",
"LabelButtonText": "Текст на Бутон",
- "LabelByAuthor": "by {0}",
"LabelChangePassword": "Промени Парола",
"LabelChannels": "Канали",
+ "LabelChapterTitle": "Заглавие на Глава",
"LabelChapters": "Глави",
"LabelChaptersFound": "намерени глави",
- "LabelChapterTitle": "Заглавие на Глава",
"LabelClickForMoreInfo": "Кликни за повече информация",
"LabelClosePlayer": "Затвори Плейъра",
"LabelCodec": "Кодек",
@@ -252,7 +249,6 @@
"LabelCover": "Корица",
"LabelCoverImageURL": "URL на Корица",
"LabelCreatedAt": "Създадено на",
- "LabelCronExpression": "Cron Expression",
"LabelCurrent": "Текущо",
"LabelCurrently": "Текущо:",
"LabelCustomCronExpression": "Потребителски Cron Expression:",
@@ -270,15 +266,16 @@
"LabelDownload": "Сваляне",
"LabelDownloadNEpisodes": "Свали {0} епизоди",
"LabelDuration": "Продължителност",
- "LabelDurationComparisonExactMatch": "(exact match)",
- "LabelDurationComparisonLonger": "({0} longer)",
- "LabelDurationComparisonShorter": "({0} shorter)",
+ "LabelDurationComparisonExactMatch": "(точно съвпадение)",
+ "LabelDurationComparisonLonger": "({0} по-дълго)",
+ "LabelDurationComparisonShorter": "({0} по-късо)",
"LabelDurationFound": "Намерена продължителност:",
"LabelEbook": "Електронна книга",
"LabelEbooks": "Електронни книги",
"LabelEdit": "Редакция",
- "LabelEmail": "Email",
"LabelEmailSettingsFromAddress": "От Адрес",
+ "LabelEmailSettingsRejectUnauthorized": "Отхвърли неавторизирани сертификати",
+ "LabelEmailSettingsRejectUnauthorizedHelp": "Спирането на валидацията на SSL сертификате може да изложи връзката ви на рискове, като man-in-the-middle атака. Спираите тази опция само ако знете имоликацийте от това и се доверявате на mail сървъра към който се свързвате.",
"LabelEmailSettingsSecure": "Сигурна",
"LabelEmailSettingsSecureHelp": "Ако е вярно възката ще изполва TLS когате се свързва със сървъра. Ако не е то TLS ще се използва ако сървъра поддържа разширението STARTTLS. В повечето случаи задайте тази стойност на истина ако се свързвате към порт 465. За порт 587 или 25 оставете я на лъжа. (от nodemailer.com/smtp/#authentication)",
"LabelEmailSettingsTestAddress": "Тестов Адрес",
@@ -290,9 +287,6 @@
"LabelEpisodeType": "Тип на Епизод",
"LabelExample": "Пример",
"LabelExplicit": "Експлицитно",
- "LabelExplicitChecked": "Explicit (checked)",
- "LabelExplicitUnchecked": "Not Explicit (unchecked)",
- "LabelFeedURL": "Feed URL",
"LabelFetchingMetadata": "Взимане на Метаданни",
"LabelFile": "Файл",
"LabelFileBirthtime": "Дата на създаване на файла",
@@ -304,6 +298,7 @@
"LabelFolder": "Папка",
"LabelFolders": "Папки",
"LabelFontBold": "Получерно",
+ "LabelFontBoldness": "Плътност на шрифта",
"LabelFontFamily": "Шрифт",
"LabelFontItalic": "Курсив",
"LabelFontScale": "Мащаб на Шрифта",
@@ -319,9 +314,9 @@
"LabelHour": "Час",
"LabelIcon": "Икона",
"LabelImageURLFromTheWeb": "URL на Изображение от Интернет",
+ "LabelInProgress": "В Прогрес",
"LabelIncludeInTracklist": "Включи в Списъка с Канали",
"LabelIncomplete": "Незавършено",
- "LabelInProgress": "В Прогрес",
"LabelInterval": "Интервал",
"LabelIntervalCustomDailyWeekly": "Потребително дневно/седмично",
"LabelIntervalEvery12Hours": "Всеки 12 часа",
@@ -335,6 +330,7 @@
"LabelItem": "Елемент",
"LabelLanguage": "Език",
"LabelLanguageDefaultServer": "Език по подразбиране на сървъра",
+ "LabelLanguages": "Езици",
"LabelLastBookAdded": "Последно Добавена Книга",
"LabelLastBookUpdated": "Последно Обновена Книга",
"LabelLastSeen": "Последно Видян",
@@ -360,14 +356,14 @@
"LabelMatchExistingUsersByDescription": "Използва се за свързване на съществуващи потребители. След свързване потребителите ще бъдат съпоставени по уникален идентификатор от вашия доставчик на SSO",
"LabelMediaPlayer": "Медия Плейър",
"LabelMediaType": "Тип на Медията",
- "LabelMetadataOrderOfPrecedenceDescription": "По-високите източници на метаданни ще заменят по-ниските",
- "LabelMetadataProvider": "Доставчик на Метаданни",
"LabelMetaTag": "Мета Таг",
"LabelMetaTags": "Мета Тагове",
+ "LabelMetadataOrderOfPrecedenceDescription": "По-високите източници на метаданни ще заменят по-ниските",
+ "LabelMetadataProvider": "Доставчик на Метаданни",
"LabelMinute": "Минута",
"LabelMissing": "Липсващо",
- "LabelMissingEbook": "Has no ebook",
- "LabelMissingSupplementaryEbook": "Has no supplementary ebook",
+ "LabelMissingEbook": "Няма електронна книга",
+ "LabelMissingSupplementaryEbook": "Няма допълнителна електронна книга",
"LabelMobileRedirectURIs": "Позволени URI за Мобилно Пренасочване",
"LabelMobileRedirectURIsDescription": "Това е whitelist на валидни URI за пренасочване за мобилни приложения. По подразбиране е audiobookshelf://oauth, който може да премахнете или допълните с допълнителни URI за интеграция на приложения от трети страни. Използването на звезда (*) като единствен запис позволява всеки URI.",
"LabelMore": "Повече",
@@ -376,29 +372,27 @@
"LabelNarrator": "Разказвач",
"LabelNarrators": "Разказвачи",
"LabelNew": "Нови",
+ "LabelNewPassword": "Нова Парола",
"LabelNewestAuthors": "Най-нови Автори",
"LabelNewestEpisodes": "Най-нови Епизоди",
- "LabelNewPassword": "Нова Парола",
"LabelNextBackupDate": "Следваща Дата на Архивиране",
"LabelNextScheduledRun": "Следващо Планирано Изпълнение",
+ "LabelNoCustomMetadataProviders": "Няма потребителски доставчици на метаданни",
"LabelNoEpisodesSelected": "Няма избрани епизоди",
- "LabelNotes": "Бележки",
"LabelNotFinished": "Не е завършено",
+ "LabelNotStarted": "Не е започнато",
+ "LabelNotes": "Бележки",
"LabelNotificationAppriseURL": "Apprise URL-и",
"LabelNotificationAvailableVariables": "Налични променливи",
"LabelNotificationBodyTemplate": "Тяло на Шаблона",
"LabelNotificationEvent": "Събитие за Известие",
+ "LabelNotificationTitleTemplate": "Заглавие на Шаблона",
"LabelNotificationsMaxFailedAttempts": "Максимален брой неуспешни опити за известия",
"LabelNotificationsMaxFailedAttemptsHelp": "Известията се деактивират след като не успеят да бъдат изпратени толкова пъти",
"LabelNotificationsMaxQueueSize": "Максимален размер на опашката за известия",
"LabelNotificationsMaxQueueSizeHelp": "Събитията са ограничени до изстрелване на 1 на секунда. Събитията ще бъдат игнорирани ако опашката е на максимален размер. Това предотвратява спамирането на известия.",
- "LabelNotificationTitleTemplate": "Заглавие на Шаблона",
- "LabelNotStarted": "Не е започнато",
"LabelNumberOfBooks": "Брой на Книги",
"LabelNumberOfEpisodes": "# Епизоди",
- "LabelOpenIDAdvancedPermsClaimDescription": "Name of the OpenID claim that contains advanced permissions for user actions within the application which will apply to non-admin roles (if configured). If the claim is missing from the response, access to ABS will be denied. If a single option is missing, it will be treated as false. Ensure the identity provider's claim matches the expected structure:",
- "LabelOpenIDClaims": "Leave the following options empty to disable advanced group and permissions assignment, automatically assigning 'User' group then.",
- "LabelOpenIDGroupClaimDescription": "Name of the OpenID claim that contains a list of the user's groups. Commonly referred to as groups. If configured, the application will automatically assign roles based on the user's group memberships, provided that these groups are named case-insensitively 'admin', 'user', or 'guest' in the claim. The claim should contain a list, and if a user belongs to multiple groups, the application will assign the role corresponding to the highest level of access. If no group matches, access will be denied.",
"LabelOpenRSSFeed": "Отвори RSS Feed",
"LabelOverwrite": "Презапиши",
"LabelPassword": "Парола",
@@ -410,14 +404,14 @@
"LabelPermissionsDownload": "Може да сваля",
"LabelPermissionsUpdate": "Може да обновява",
"LabelPermissionsUpload": "Може да качва",
- "LabelPersonalYearReview": "Your Year in Review ({0})",
+ "LabelPersonalYearReview": "Преглед на годината Ви ({0})",
"LabelPhotoPathURL": "Път/URL на Снимка",
- "LabelPlaylists": "Плейлисти",
"LabelPlayMethod": "Метод на Пускане",
+ "LabelPlaylists": "Плейлисти",
"LabelPodcast": "Подкаст",
- "LabelPodcasts": "Подкасти",
"LabelPodcastSearchRegion": "Регион за Търсене на Подкасти",
"LabelPodcastType": "Тип на Подкаст",
+ "LabelPodcasts": "Подкасти",
"LabelPort": "Порт",
"LabelPrefixesToIgnore": "Префикси за Игнориране (без значение за главни/малки букви)",
"LabelPreventIndexing": "Предотврати индексирането на вашия feed от iTunes и Google podcast директории",
@@ -425,30 +419,30 @@
"LabelProgress": "Прогрес",
"LabelProvider": "Доставчик",
"LabelPubDate": "Дата на Издаване",
- "LabelPublisher": "Издател",
"LabelPublishYear": "Година на Издаване",
+ "LabelPublisher": "Издател",
+ "LabelPublishers": "Издателство",
+ "LabelRSSFeedCustomOwnerEmail": "Потребителски собственик Email",
+ "LabelRSSFeedCustomOwnerName": "Потребителски собственик Име",
+ "LabelRSSFeedOpen": "RSS Feed Оптворен",
+ "LabelRSSFeedPreventIndexing": "Предотврати индексиране",
+ "LabelRSSFeedSlug": "RSS Feed слъг",
"LabelRead": "Прочети",
"LabelReadAgain": "Прочети Отново",
"LabelReadEbookWithoutProgress": "Прочети електронната книга без записване прогрес",
- "LabelRecentlyAdded": "Наскоро Добавени",
"LabelRecentSeries": "Скорошни Серии",
+ "LabelRecentlyAdded": "Наскоро Добавени",
"LabelRecommended": "Препоръчано",
"LabelRedo": "Повтори",
"LabelRegion": "Регион",
"LabelReleaseDate": "Дата на Издаване",
"LabelRemoveCover": "Премахни Корица",
"LabelRowsPerPage": "Редове на Страница",
- "LabelRSSFeedCustomOwnerEmail": "Потребителски собственик Email",
- "LabelRSSFeedCustomOwnerName": "Потребителски собственик Име",
- "LabelRSSFeedOpen": "RSS Feed Оптворен",
- "LabelRSSFeedPreventIndexing": "Предотврати индексиране",
- "LabelRSSFeedSlug": "RSS Feed слъг",
- "LabelRSSFeedURL": "RSS Feed URL",
"LabelSearchTerm": "Търси Термин",
"LabelSearchTitle": "Търси Заглавие",
"LabelSearchTitleOrASIN": "Търси Заглавие или ASIN",
"LabelSeason": "Сезон",
- "LabelSelectAll": "Select all",
+ "LabelSelectAll": "Избери всичко",
"LabelSelectAllEpisodes": "Избери всички епизоди",
"LabelSelectEpisodesShowing": "Избери {0} епизоди показани",
"LabelSelectUsers": "Избери Потребители",
@@ -457,7 +451,7 @@
"LabelSeries": "Серия",
"LabelSeriesName": "Име на Серия",
"LabelSeriesProgress": "Прогрес на Серия",
- "LabelServerYearReview": "Server Year in Review ({0})",
+ "LabelServerYearReview": "Преглед на годината на сървъра ({0})",
"LabelSetEbookAsPrimary": "Задай като основна",
"LabelSetEbookAsSupplementary": "Задай като допълнителна",
"LabelSettingsAudiobooksOnly": "Само аудиокниги",
@@ -471,8 +465,8 @@
"LabelSettingsEnableWatcher": "Включи наблюдателя",
"LabelSettingsEnableWatcherForLibrary": "Включи наблюдателя за библиотека",
"LabelSettingsEnableWatcherHelp": "Включва автоматичното добавяне/обновяване на елементи, когато се открият промени във файловете. *Изисква рестарт на сървъра",
- "LabelSettingsEpubsAllowScriptedContent": "Allow scripted content in epubs",
- "LabelSettingsEpubsAllowScriptedContentHelp": "Allow epub files to execute scripts. It is recommended to keep this setting disabled unless you trust the source of the epub files.",
+ "LabelSettingsEpubsAllowScriptedContent": "Позволи скриптово съдържание в epub-и",
+ "LabelSettingsEpubsAllowScriptedContentHelp": "Позволи epub файловете да изпълняват скриптове. Препоръчително е да бъде изключено освен ако не се доверявате на източника на epub файловете.",
"LabelSettingsExperimentalFeatures": "Експериментални Функции",
"LabelSettingsExperimentalFeaturesHelp": "Функции в разработка, които могат да изискват вашето мнение и помощ за тестване. Кликнете за да отворите дискусия в github.",
"LabelSettingsFindCovers": "Намери Корици",
@@ -481,8 +475,7 @@
"LabelSettingsHideSingleBookSeriesHelp": "Сериите с една книга ще бъдат скрити от страницата на серията и рафтовете на началната страница.",
"LabelSettingsHomePageBookshelfView": "Начална страница изглед на рафт",
"LabelSettingsLibraryBookshelfView": "Библиотека изглед на рафт",
- "LabelSettingsOnlyShowLaterBooksInContinueSeries": "Skip earlier books in Continue Series",
- "LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "The Continue Series home page shelf shows the first book not started in series that have at least one book finished and no books in progress. Enabling this setting will continue series from the furthest completed book instead of the first book not started.",
+ "LabelSettingsOnlyShowLaterBooksInContinueSeries": "Пропусни предишни книги в Продължи Поредица",
"LabelSettingsParseSubtitles": "Извлечи подзаглавия",
"LabelSettingsParseSubtitlesHelp": "Извлича подзаглавия от имената на папките на аудиокнигите. Подзаглавията трябва да бъдат разделени с \" - \" например \"Заглавие на Книга - Тук е Подзаглавито\" има подзаглавие \"Тук е Подзаглавито\"",
"LabelSettingsPreferMatchedMetadata": "Предпочети съвпадащи метаданни",
@@ -499,14 +492,13 @@
"LabelSettingsStoreMetadataWithItemHelp": "По подразбиране метаданните се съхраняват в /metadata/items, като активирате тази настройка метаданните ще се съхраняват в папката на елемента на вашата библиотека",
"LabelSettingsTimeFormat": "Формат на Време",
"LabelShowAll": "Покажи Всички",
- "LabelShowSeconds": "Show seconds",
"LabelSize": "Размер",
"LabelSleepTimer": "Таймер за Сън",
"LabelSlug": "Слъг",
"LabelStart": "Старт",
+ "LabelStartTime": "Начално Време",
"LabelStarted": "Стартирано",
"LabelStartedAt": "Стартирано на",
- "LabelStartTime": "Начално Време",
"LabelStatsAudioTracks": "Аудио Канали",
"LabelStatsAuthors": "Автори",
"LabelStatsBestDay": "Най-добър Ден",
@@ -562,9 +554,9 @@
"LabelUnknown": "Неизвестно",
"LabelUpdateCover": "Обнови Корица",
"LabelUpdateCoverHelp": "Позволи презаписване на съществуващите корици за избраните книги, когато се намери съвпадение",
- "LabelUpdatedAt": "Обновено на",
"LabelUpdateDetails": "Обнови Детайли",
"LabelUpdateDetailsHelp": "Позволи презаписване на съществуващите детайли за избраните книги, когато се намери съвпадение",
+ "LabelUpdatedAt": "Обновено на",
"LabelUploaderDragAndDrop": "Плъзни и Пусни Файлове или Папки",
"LabelUploaderDropFiles": "Пусни Файлове",
"LabelUploaderItemFetchMetadataHelp": "Автоматично вземи заглавие, автор и серия",
@@ -579,19 +571,16 @@
"LabelViewQueue": "Виж Опашка",
"LabelVolume": "Сила на Звука",
"LabelWeekdaysToRun": "Делници за изпълнение",
- "LabelYearReviewHide": "Hide Year in Review",
- "LabelYearReviewShow": "See Year in Review",
"LabelYourAudiobookDuration": "Продължителност на вашата аудиокнига",
"LabelYourBookmarks": "Вашите Отметки",
"LabelYourPlaylists": "Вашите Плейлисти",
"LabelYourProgress": "Вашият Прогрес",
"MessageAddToPlayerQueue": "Добави към опашката на плейъра",
"MessageAppriseDescription": "За да ползвате тази функция трябва да имате активна инстанция на Apprise API или на друго АПИ което да обработва тези заявки. The Apprise API Url-а трябва дае пълния URL път за изпращане на известията, например, ако вашето АПИ ве подава от http://192.168.1.1:8337 трябва да сложитев http://192.168.1.1:8337/notify.",
- "MessageBackupsDescription": "Backups include users, user progress, library item details, server settings, and images stored in /metadata/items & /metadata/authors. Backups do not include any files stored in your library folders.",
"MessageBatchQuickMatchDescription": "Бързото Съпоставяне ще опита да добави липсващи корици и метаданни за избраните елементи. Активирайте опциите по-долу, за да позволите на Бързото съпоставяне да презапише съществуващите корици и/или метаданни.",
"MessageBookshelfNoCollections": "Все още нямате създадени колекции",
- "MessageBookshelfNoResultsForFilter": "Няма резултат за филтер \"{0}: {1}\"",
"MessageBookshelfNoRSSFeeds": "Няма отворени RSS feed-ове",
+ "MessageBookshelfNoResultsForFilter": "Няма резултат за филтер \"{0}: {1}\"",
"MessageBookshelfNoSeries": "Нямаш сеЗЙ",
"MessageChapterEndIsAfter": "Краят на главата е след края на вашата аудиокнига",
"MessageChapterErrorFirstNotZero": "Първата глава трябва да започва от 0",
@@ -611,8 +600,8 @@
"MessageConfirmMarkAllEpisodesNotFinished": "Сигурни ли сте, че искате да маркирате всички епизоди като незавършени?",
"MessageConfirmMarkSeriesFinished": "Сигурни ли сте, че искате да маркирате всички книги в тази серия като завършени?",
"MessageConfirmMarkSeriesNotFinished": "Сигурни ли сте, че искате да маркирате всички книги в тази серия като незавършени?",
- "MessageConfirmPurgeCache": "Purge cache will delete the entire directory at /metadata/cache.
Are you sure you want to remove the cache directory?",
"MessageConfirmQuickEmbed": "Внимание! Бързото вграждане няма да архивира вашите аудио файлове. Уверете се, че имате резервно копие на вашите аудио файлове.
Искате ли да продължите?",
+ "MessageConfirmReScanLibraryItems": "Сигурни ли сте, че искате да сканирате отново {0} елемента?",
"MessageConfirmRemoveAllChapters": "Сигурни ли сте, че искате да премахнете всички глави?",
"MessageConfirmRemoveAuthor": "Сигурни ли сте, че искате да премахнете автор \"{0}\"?",
"MessageConfirmRemoveCollection": "Сигурни ли сте, че искате да премахнете колекция \"{0}\"?",
@@ -627,13 +616,11 @@
"MessageConfirmRenameTag": "Сигурни ли сте, че искате да преименувате таг \"{0}\" на \"{1}\" за всички елементи?",
"MessageConfirmRenameTagMergeNote": "Забележка: Този таг вече съществува и ще бъде слято.",
"MessageConfirmRenameTagWarning": "Внимание! Вече съществува подобен таг с различно писане \"{0}\".",
- "MessageConfirmReScanLibraryItems": "Сигурни ли сте, че искате да сканирате отново {0} елемента?",
"MessageConfirmSendEbookToDevice": "Сигурни ли сте, че искате да изпратите {0} електронна книга \"{1}\" до устройство \"{2}\"?",
"MessageDownloadingEpisode": "Изтегляне на епизод",
"MessageDragFilesIntoTrackOrder": "Плъзнете файлове в правилния ред на каналите",
"MessageEmbedFinished": "Вграждането завърши!",
"MessageEpisodesQueuedForDownload": "{0} епизод(и) в опашка за изтегляне",
- "MessageEreaderDevices": "To ensure delivery of ebooks, you may need to add the above email address as a valid sender for each device listed below.",
"MessageFeedURLWillBe": "Feed URL-a ще бъде {0}",
"MessageFetching": "Взимане...",
"MessageForceReScanDescription": "ще сканира всички файлове отново като прясно сканиране. Аудио файлове ID3 тагове, OPF файлове и текстови файлове ще бъдат сканирани като нови.",
@@ -645,7 +632,6 @@
"MessageListeningSessionsInTheLastYear": "{0} слушателски сесии през последната година",
"MessageLoading": "Зареждане...",
"MessageLoadingFolders": "Зареждане на Папки...",
- "MessageLogsDescription": "Logs are stored in /metadata/logs as JSON files. Crash logs are stored in /metadata/logs/crash_logs.txt.",
"MessageM4BFailed": "M4B Провалено!",
"MessageM4BFinished": "M4B Завършено!",
"MessageMapChapterTitles": "Съпостави заглавията на главите със съществуващите глави на аудиокнигата без да променяш времената",
@@ -681,10 +667,9 @@
"MessageNoSeries": "Няма Серии",
"MessageNoTags": "Няма Тагове",
"MessageNoTasksRunning": "Няма вършещи се задачи",
- "MessageNotYetImplemented": "Още не е изпълнено",
- "MessageNoUpdateNecessary": "Не е необходимо обновяване",
"MessageNoUpdatesWereNecessary": "Не бяха необходими обновления",
"MessageNoUserPlaylists": "Няма плейлисти на потребителя",
+ "MessageNotYetImplemented": "Още не е изпълнено",
"MessageOr": "или",
"MessagePauseChapter": "Пауза на глава",
"MessagePlayChapter": "Пусни налчалото на глава",
@@ -726,11 +711,8 @@
"PlaceholderNewPlaylist": "Ново име на плейлиста",
"PlaceholderSearch": "Търсене...",
"PlaceholderSearchEpisode": "Търсене на Епизоди...",
- "ToastAccountUpdateFailed": "Неуспешно обновяване на акаунта",
"ToastAccountUpdateSuccess": "Успешно обновяване на акаунта",
- "ToastAuthorImageRemoveFailed": "Неуспешно премахване на авторска снимка",
"ToastAuthorImageRemoveSuccess": "Авторската снимка е премахната",
- "ToastAuthorUpdateFailed": "Неуспешно обновяване на автора",
"ToastAuthorUpdateMerged": "Обновяване на автора сливано",
"ToastAuthorUpdateSuccess": "Автора обновен",
"ToastAuthorUpdateSuccessNoImageFound": "Автор обновен (не е намерена снимка)",
@@ -741,32 +723,17 @@
"ToastBackupRestoreFailed": "Неуспешно възстановяване на архив",
"ToastBackupUploadFailed": "Неуспешно качване на архив",
"ToastBackupUploadSuccess": "Архивът е качен",
- "ToastBatchUpdateFailed": "Batch update failed",
- "ToastBatchUpdateSuccess": "Batch update success",
"ToastBookmarkCreateFailed": "Неуспешно създаване на отметка",
"ToastBookmarkCreateSuccess": "Отметката е създадена",
- "ToastBookmarkRemoveFailed": "Неуспешно премахване на отметка",
"ToastBookmarkRemoveSuccess": "Отметката е премахната",
- "ToastBookmarkUpdateFailed": "Неуспешно обновяване на отметка",
"ToastBookmarkUpdateSuccess": "Отметката е обновена",
- "ToastCachePurgeFailed": "Failed to purge cache",
- "ToastCachePurgeSuccess": "Cache purged successfully",
"ToastChaptersHaveErrors": "Главите имат грешки",
"ToastChaptersMustHaveTitles": "Главите трябва да имат заглавия",
- "ToastCollectionItemsRemoveFailed": "Неуспешно премахване на елемент(и) от колекция",
"ToastCollectionItemsRemoveSuccess": "Елемент(и) премахнати от колекция",
- "ToastCollectionRemoveFailed": "Неуспешно премахване на колекция",
"ToastCollectionRemoveSuccess": "Колекцията е премахната",
- "ToastCollectionUpdateFailed": "Неуспешно обновяване на колекция",
"ToastCollectionUpdateSuccess": "Колекцията е обновена",
- "ToastDeleteFileFailed": "Failed to delete file",
- "ToastDeleteFileSuccess": "File deleted",
- "ToastFailedToLoadData": "Failed to load data",
- "ToastItemCoverUpdateFailed": "Неуспешно обновяване на корица на елемент",
"ToastItemCoverUpdateSuccess": "Корицата на елемента е обновена",
- "ToastItemDetailsUpdateFailed": "Неуспешно обновяване на детайли на елемент",
"ToastItemDetailsUpdateSuccess": "Детайлите на елемента са обновени",
- "ToastItemDetailsUpdateUnneeded": "Не са необходими обновления на детайлите на елемента",
"ToastItemMarkedAsFinishedFailed": "Неуспешно маркиране като завършено",
"ToastItemMarkedAsFinishedSuccess": "Елементът е маркиран като завършен",
"ToastItemMarkedAsNotFinishedFailed": "Неуспешно маркиране като незавършено",
@@ -777,34 +744,26 @@
"ToastLibraryDeleteSuccess": "Библиотеката е изтрита",
"ToastLibraryScanFailedToStart": "Неуспешно стартиране на сканиране",
"ToastLibraryScanStarted": "Сканирането на библиотеката е стартирано",
- "ToastLibraryUpdateFailed": "Неуспешно обновяване на библиотека",
"ToastLibraryUpdateSuccess": "Библиотеката \"{0}\" е обновена",
"ToastPlaylistCreateFailed": "Неуспешно създаване на плейлист",
"ToastPlaylistCreateSuccess": "Плейлистът е създаден",
- "ToastPlaylistRemoveFailed": "Неуспешно премахване на плейлист",
"ToastPlaylistRemoveSuccess": "Плейлистът е премахнат",
- "ToastPlaylistUpdateFailed": "Неуспешно обновяване на плейлист",
"ToastPlaylistUpdateSuccess": "Плейлистът е обновен",
"ToastPodcastCreateFailed": "Неуспешно създаване на подкаст",
"ToastPodcastCreateSuccess": "Подкастът е създаден",
- "ToastRemoveItemFromCollectionFailed": "Неуспешно премахване на елемент от колекция",
- "ToastRemoveItemFromCollectionSuccess": "Елементът е премахнат от колекция",
"ToastRSSFeedCloseFailed": "Неуспешно затваряне на RSS feed",
"ToastRSSFeedCloseSuccess": "RSS feed затворен",
+ "ToastRemoveItemFromCollectionFailed": "Неуспешно премахване на елемент от колекция",
+ "ToastRemoveItemFromCollectionSuccess": "Елементът е премахнат от колекция",
"ToastSendEbookToDeviceFailed": "Неуспешно изпращане на електронна книга до устройство",
"ToastSendEbookToDeviceSuccess": "Електронната книга е изпратена до устройство \"{0}\"",
"ToastSeriesUpdateFailed": "Неуспешно обновяване на серия",
"ToastSeriesUpdateSuccess": "Серията е обновена",
- "ToastServerSettingsUpdateFailed": "Failed to update server settings",
- "ToastServerSettingsUpdateSuccess": "Server settings updated",
"ToastSessionDeleteFailed": "Неуспешно изтриване на сесия",
"ToastSessionDeleteSuccess": "Сесията е изтрита",
"ToastSocketConnected": "Свързан сокет",
"ToastSocketDisconnected": "Сокетът е прекъснат",
"ToastSocketFailedToConnect": "Неуспешно свързване на сокет",
- "ToastSortingPrefixesEmptyError": "Must have at least 1 sorting prefix",
- "ToastSortingPrefixesUpdateFailed": "Failed to update sorting prefixes",
- "ToastSortingPrefixesUpdateSuccess": "Sorting prefixes updated ({0} items)",
"ToastUserDeleteFailed": "Неуспешно изтриване на потребител",
"ToastUserDeleteSuccess": "Потребителят е изтрит"
-}
\ No newline at end of file
+}
diff --git a/client/strings/bn.json b/client/strings/bn.json
index 89fe78fef..b705a802e 100644
--- a/client/strings/bn.json
+++ b/client/strings/bn.json
@@ -8,7 +8,8 @@
"ButtonAddYourFirstLibrary": "আপনার প্রথম লাইব্রেরি যোগ করুন",
"ButtonApply": "প্রয়োগ করুন",
"ButtonApplyChapters": "অধ্যায় প্রয়োগ করুন",
- "ButtonAuthors": "লেখক",
+ "ButtonAuthors": "লেখকগণ",
+ "ButtonBack": "পেছনে যান",
"ButtonBrowseForFolder": "ফোল্ডারের জন্য ব্রাউজ করুন",
"ButtonCancel": "বাতিল করুন",
"ButtonCancelEncode": "এনকোড বাতিল করুন",
@@ -18,6 +19,7 @@
"ButtonChooseFiles": "ফাইল চয়ন করুন",
"ButtonClearFilter": "ফিল্টার পরিষ্কার করুন",
"ButtonCloseFeed": "ফিড বন্ধ করুন",
+ "ButtonCloseSession": "খোলা সেশন বন্ধ করুন",
"ButtonCollections": "সংগ্রহ",
"ButtonConfigureScanner": "স্ক্যানার কনফিগার করুন",
"ButtonCreate": "তৈরি করুন",
@@ -27,6 +29,9 @@
"ButtonEdit": "সম্পাদনা করুন",
"ButtonEditChapters": "অধ্যায় সম্পাদনা করুন",
"ButtonEditPodcast": "পডকাস্ট সম্পাদনা করুন",
+ "ButtonEnable": "সক্রিয় করুন",
+ "ButtonFireAndFail": "সক্রিয় এবং ব্যর্থ",
+ "ButtonFireOnTest": "পরীক্ষামূলক ইভেন্টে সক্রিয় করুন",
"ButtonForceReScan": "জোরপূর্বক পুনরায় স্ক্যান করুন",
"ButtonFullPath": "সম্পূর্ণ পথ",
"ButtonHide": "লুকান",
@@ -45,24 +50,28 @@
"ButtonNevermind": "কিছু মনে করবেন না",
"ButtonNext": "পরবর্তী",
"ButtonNextChapter": "পরবর্তী অধ্যায়",
+ "ButtonNextItemInQueue": "সারিতে পরের আইটেম",
"ButtonOk": "ঠিক আছে",
"ButtonOpenFeed": "ফিড খুলুন",
"ButtonOpenManager": "ম্যানেজার খুলুন",
"ButtonPause": "বিরতি",
"ButtonPlay": "বাজান",
+ "ButtonPlayAll": "সব চালান",
"ButtonPlaying": "বাজছে",
"ButtonPlaylists": "প্লেলিস্ট",
"ButtonPrevious": "পূর্ববর্তী",
"ButtonPreviousChapter": "আগের অধ্যায়",
+ "ButtonProbeAudioFile": "প্রোব অডিও ফাইল",
"ButtonPurgeAllCache": "সমস্ত ক্যাশে পরিষ্কার করুন",
"ButtonPurgeItemsCache": "আইটেম ক্যাশে পরিষ্কার করুন",
- "ButtonPurgeMediaProgress": "মিডিয়া ক্যাশে পরিষ্কার করুন",
"ButtonQueueAddItem": "সারিতে যোগ করুন",
"ButtonQueueRemoveItem": "সারি থেকে মুছে ফেলুন",
+ "ButtonQuickEmbedMetadata": "মেটাডেটা দ্রুত এম্বেড করুন",
"ButtonQuickMatch": "দ্রুত ম্যাচ",
+ "ButtonReScan": "পুনরায় স্ক্যান",
"ButtonRead": "পড়ুন",
- "ButtonReadLess": "Read less",
- "ButtonReadMore": "Read more",
+ "ButtonReadLess": "সংক্ষিপ্ত",
+ "ButtonReadMore": "বিস্তারিত পড়ুন",
"ButtonRefresh": "রিফ্রেশ",
"ButtonRemove": "মুছে ফেলুন",
"ButtonRemoveAll": "সব মুছে ফেলুন",
@@ -70,7 +79,6 @@
"ButtonRemoveFromContinueListening": "শোনা চালিয়ে যাওয়া থেকে মুছে ফেলুন",
"ButtonRemoveFromContinueReading": "পঠন চালিয়ে যান থেকে মুছে ফেলুন",
"ButtonRemoveSeriesFromContinueSeries": "কন্টিনিউ সিরিজ থেকে সিরিজ মুছে ফেলুন",
- "ButtonReScan": "পুনরায় স্ক্যান",
"ButtonReset": "রিসেট",
"ButtonResetToDefault": "ডিফল্টে পুনরায় সেট করুন",
"ButtonRestore": "পুনরুদ্ধার করুন",
@@ -88,8 +96,10 @@
"ButtonShow": "দেখান",
"ButtonStartM4BEncode": "M4B এনকোড শুরু করুন",
"ButtonStartMetadataEmbed": "মেটাডেটা এম্বেড শুরু করুন",
+ "ButtonStats": "পরিসংখ্যান",
"ButtonSubmit": "জমা দিন",
"ButtonTest": "পরীক্ষা",
+ "ButtonUnlinkOpenId": "ওপেন আইডি লিঙ্কমুক্ত করুন",
"ButtonUpload": "আপলোড",
"ButtonUploadBackup": "আপলোড ব্যাকআপ",
"ButtonUploadCover": "কভার আপলোড করুন",
@@ -102,10 +112,11 @@
"ErrorUploadFetchMetadataNoResults": "মেটাডেটা আনা যায়নি - শিরোনাম এবং/অথবা লেখক আপডেট করার চেষ্টা করুন",
"ErrorUploadLacksTitle": "একটি শিরোনাম থাকতে হবে",
"HeaderAccount": "অ্যাকাউন্ট",
+ "HeaderAddCustomMetadataProvider": "কাস্টম মেটাডেটা সরবরাহকারী যোগ করুন",
"HeaderAdvanced": "অ্যাডভান্সড",
"HeaderAppriseNotificationSettings": "বিজ্ঞপ্তি সেটিংস অবহিত করুন",
+ "HeaderAudioTracks": "অডিও ট্র্যাকসগুলো",
"HeaderAudiobookTools": "অডিওবই ফাইল ম্যানেজমেন্ট টুলস",
- "HeaderAudioTracks": "অডিও ট্র্যাকস",
"HeaderAuthentication": "প্রমাণীকরণ",
"HeaderBackups": "ব্যাকআপ",
"HeaderChangePassword": "পাসওয়ার্ড পরিবর্তন করুন",
@@ -115,6 +126,7 @@
"HeaderCollectionItems": "সংগ্রহ আইটেম",
"HeaderCover": "কভার",
"HeaderCurrentDownloads": "বর্তমান ডাউনলোডগুলি",
+ "HeaderCustomMessageOnLogin": "লগইন এ কাস্টম বার্তা",
"HeaderCustomMetadataProviders": "কাস্টম মেটাডেটা প্রদানকারী",
"HeaderDetails": "বিস্তারিত",
"HeaderDownloadQueue": "ডাউনলোড সারি",
@@ -146,6 +158,8 @@
"HeaderMetadataToEmbed": "এম্বেড করার জন্য মেটাডেটা",
"HeaderNewAccount": "নতুন অ্যাকাউন্ট",
"HeaderNewLibrary": "নতুন লাইব্রেরি",
+ "HeaderNotificationCreate": "বিজ্ঞপ্তি তৈরি করুন",
+ "HeaderNotificationUpdate": "বিজ্ঞপ্তি আপডেট করুন",
"HeaderNotifications": "বিজ্ঞপ্তি",
"HeaderOpenIDConnectAuthentication": "ওপেনআইডি সংযোগ প্রমাণীকরণ",
"HeaderOpenRSSFeed": "আরএসএস ফিড খুলুন",
@@ -153,15 +167,16 @@
"HeaderPasswordAuthentication": "পাসওয়ার্ড প্রমাণীকরণ",
"HeaderPermissions": "অনুমতি",
"HeaderPlayerQueue": "প্লেয়ার সারি",
+ "HeaderPlayerSettings": "প্লেয়ার সেটিংস",
"HeaderPlaylist": "প্লেলিস্ট",
"HeaderPlaylistItems": "প্লেলিস্ট আইটেম",
"HeaderPodcastsToAdd": "যোগ করার জন্য পডকাস্ট",
"HeaderPreviewCover": "কভার ্দেখুন",
- "HeaderRemoveEpisode": "পর্বটি সরান",
- "HeaderRemoveEpisodes": "{0}টি পর্ব সরান",
"HeaderRSSFeedGeneral": "আরএসএস বিবরণ",
"HeaderRSSFeedIsOpen": "আরএসএস ফিড খোলা আছে",
"HeaderRSSFeeds": "আরএসএস ফিড",
+ "HeaderRemoveEpisode": "পর্বটি সরান",
+ "HeaderRemoveEpisodes": "{0}টি পর্ব সরান",
"HeaderSavedMediaProgress": "মিডিয়া সংরক্ষণের অগ্রগতি",
"HeaderSchedule": "সময়সূচী",
"HeaderScheduleLibraryScans": "স্বয়ংক্রিয় লাইব্রেরি স্ক্যানের সময়সূচী",
@@ -189,20 +204,20 @@
"HeaderYearReview": "বাৎসরিক পর্যালোচনা {0}",
"HeaderYourStats": "আপনার পরিসংখ্যান",
"LabelAbridged": "সংক্ষিপ্ত",
- "LabelAbridgedChecked": "Abridged (checked)",
- "LabelAbridgedUnchecked": "Unabridged (unchecked)",
- "LabelAccessibleBy": "Accessible by",
+ "LabelAbridgedChecked": "সংক্ষিপ্ত (চেক)",
+ "LabelAbridgedUnchecked": "অসংক্ষেপিত (চেক করা হয়নি)",
+ "LabelAccessibleBy": "দ্বারা প্রবেশযোগ্য",
"LabelAccountType": "অ্যাকাউন্টের প্রকার",
"LabelAccountTypeAdmin": "প্রশাসন",
"LabelAccountTypeGuest": "অতিথি",
"LabelAccountTypeUser": "ব্যবহারকারী",
"LabelActivity": "ক্রিয়াকলাপ",
- "LabelAdded": "যোগ করা হয়েছে",
- "LabelAddedAt": "এতে যোগ করা হয়েছে",
"LabelAddToCollection": "সংগ্রহে যোগ করুন",
"LabelAddToCollectionBatch": "সংগ্রহে {0}টি বই যোগ করুন",
"LabelAddToPlaylist": "প্লেলিস্টে যোগ করুন",
"LabelAddToPlaylistBatch": "প্লেলিস্টে {0}টি আইটেম যোগ করুন",
+ "LabelAddedAt": "এতে যোগ করা হয়েছে",
+ "LabelAddedDate": "যোগ করা হয়েছে {0}",
"LabelAdminUsersOnly": "শুধু অ্যাডমিন ব্যবহারকারী",
"LabelAll": "সব",
"LabelAllUsers": "সমস্ত ব্যবহারকারী",
@@ -225,23 +240,24 @@
"LabelBackupLocation": "ব্যাকআপ অবস্থান",
"LabelBackupsEnableAutomaticBackups": "স্বয়ংক্রিয় ব্যাকআপ সক্ষম করুন",
"LabelBackupsEnableAutomaticBackupsHelp": "ব্যাকআপগুলি /মেটাডাটা/ব্যাকআপে সংরক্ষিত",
- "LabelBackupsMaxBackupSize": "সর্বোচ্চ ব্যাকআপ আকার (GB-তে)",
+ "LabelBackupsMaxBackupSize": "সর্বোচ্চ ব্যাকআপ আকার (GB-তে) (অসীমের জন্য 0)",
"LabelBackupsMaxBackupSizeHelp": "ভুল কনফিগারেশনের বিরুদ্ধে সুরক্ষা হিসেবে ব্যাকআপগুলি ব্যর্থ হবে যদি তারা কনফিগার করা আকার অতিক্রম করে।",
"LabelBackupsNumberToKeep": "ব্যাকআপের সংখ্যা রাখুন",
"LabelBackupsNumberToKeepHelp": "এক সময়ে শুধুমাত্র ১ টি ব্যাকআপ সরানো হবে তাই যদি আপনার কাছে ইতিমধ্যে এর চেয়ে বেশি ব্যাকআপ থাকে তাহলে আপনাকে ম্যানুয়ালি সেগুলি সরিয়ে ফেলতে হবে।",
"LabelBitrate": "বিটরেট",
"LabelBooks": "বইগুলো",
"LabelButtonText": "ঘর পাঠ্য",
- "LabelByAuthor": "by {0}",
+ "LabelByAuthor": "দ্বারা {0}",
"LabelChangePassword": "পাসওয়ার্ড পরিবর্তন করুন",
"LabelChannels": "চ্যানেল",
+ "LabelChapterTitle": "অধ্যায়ের শিরোনাম",
"LabelChapters": "অধ্যায়",
"LabelChaptersFound": "অধ্যায় পাওয়া গেছে",
- "LabelChapterTitle": "অধ্যায়ের শিরোনাম",
"LabelClickForMoreInfo": "আরো তথ্যের জন্য ক্লিক করুন",
"LabelClosePlayer": "প্লেয়ার বন্ধ করুন",
"LabelCodec": "কোডেক",
"LabelCollapseSeries": "সিরিজ সঙ্কুচিত করুন",
+ "LabelCollapseSubSeries": "উপ-সিরিজ সঙ্কুচিত করুন",
"LabelCollection": "সংগ্রহ",
"LabelCollections": "সংগ্রহ",
"LabelComplete": "সম্পূর্ণ",
@@ -257,6 +273,7 @@
"LabelCurrently": "বর্তমানে:",
"LabelCustomCronExpression": "কাস্টম Cron এক্সপ্রেশন:",
"LabelDatetime": "তারিখ সময়",
+ "LabelDays": "দিনগুলো",
"LabelDeleteFromFileSystemCheckbox": "ফাইল সিস্টেম থেকে মুছে ফেলুন (শুধু ডাটাবেস থেকে সরাতে টিক চিহ্ন মুক্ত করুন)",
"LabelDescription": "বিবরণ",
"LabelDeselectAll": "সমস্ত অনির্বাচিত করুন",
@@ -270,33 +287,42 @@
"LabelDownload": "ডাউনলোড করুন",
"LabelDownloadNEpisodes": "{0}টি পর্ব ডাউনলোড করুন",
"LabelDuration": "সময়কাল",
- "LabelDurationComparisonExactMatch": "(exact match)",
- "LabelDurationComparisonLonger": "({0} longer)",
- "LabelDurationComparisonShorter": "({0} shorter)",
+ "LabelDurationComparisonExactMatch": "(সঠিক মিল)",
+ "LabelDurationComparisonLonger": "({0} দীর্ঘ)",
+ "LabelDurationComparisonShorter": "({0} ছোট)",
"LabelDurationFound": "সময়কাল পাওয়া গেছে:",
"LabelEbook": "ই-বই",
"LabelEbooks": "ই-বইগুলো",
"LabelEdit": "সম্পাদনা করুন",
"LabelEmail": "ইমেইল",
"LabelEmailSettingsFromAddress": "ঠিকানা থেকে",
+ "LabelEmailSettingsRejectUnauthorized": "অননুমোদিত সার্টিফিকেট প্রত্যাখ্যান করুন",
+ "LabelEmailSettingsRejectUnauthorizedHelp": "SSL প্রমাণপত্রের বৈধতা নিষ্ক্রিয় করা আপনার সংযোগকে নিরাপত্তা ঝুঁকিতে ফেলতে পারে, যেমন ম্যান-ইন-দ্য-মিডল আক্রমণ। শুধুমাত্র এই বিকল্পটি নিষ্ক্রিয় করুন যদি আপনি এর প্রভাবগুলি বুঝতে পারেন এবং আপনি যে মেইল সার্ভারের সাথে সংযোগ করছেন তাকে বিশ্বাস করেন।",
"LabelEmailSettingsSecure": "নিরাপদ",
"LabelEmailSettingsSecureHelp": "যদি সত্য হয় সার্ভারের সাথে সংযোগ করার সময় সংযোগটি TLS ব্যবহার করবে। মিথ্যা হলে TLS ব্যবহার করা হবে যদি সার্ভার STARTTLS এক্সটেনশন সমর্থন করে। বেশিরভাগ ক্ষেত্রে এই মানটিকে সত্য হিসাবে সেট করুন যদি আপনি পোর্ট 465-এর সাথে সংযোগ করছেন। পোর্ট 587 বা পোর্টের জন্য 25 এটি মিথ্যা রাখুন। (nodemailer.com/smtp/#authentication থেকে)",
"LabelEmailSettingsTestAddress": "পরীক্ষার ঠিকানা",
"LabelEmbeddedCover": "এম্বেডেড কভার",
"LabelEnable": "সক্ষম করুন",
"LabelEnd": "সমাপ্ত",
+ "LabelEndOfChapter": "অধ্যায়ের সমাপ্তি",
"LabelEpisode": "পর্ব",
"LabelEpisodeTitle": "পর্বের শিরোনাম",
"LabelEpisodeType": "পর্বের ধরন",
+ "LabelEpisodes": "পর্বগুলো",
"LabelExample": "উদাহরণ",
+ "LabelExpandSeries": "সিরিজ প্রসারিত করুন",
+ "LabelExpandSubSeries": "সাব সিরিজ প্রসারিত করুন",
"LabelExplicit": "বিশদ",
- "LabelExplicitChecked": "Explicit (checked)",
- "LabelExplicitUnchecked": "Not Explicit (unchecked)",
+ "LabelExplicitChecked": "সুস্পষ্ট (পরীক্ষিত)",
+ "LabelExplicitUnchecked": "অস্পষ্ট (অপরিক্ষীত)",
+ "LabelExportOPML": "OPML এক্সপোর্ট করুন",
"LabelFeedURL": "ফিড ইউআরএল",
"LabelFetchingMetadata": "মেটাডেটা আনা হচ্ছে",
"LabelFile": "ফাইল",
"LabelFileBirthtime": "ফাইল জন্মের সময়",
+ "LabelFileBornDate": "জন্ম {0}",
"LabelFileModified": "ফাইল পরিবর্তিত",
+ "LabelFileModifiedDate": "পরিবর্তিত {0}",
"LabelFilename": "ফাইলের নাম",
"LabelFilterByUser": "ব্যবহারকারী দ্বারা ফিল্টারকৃত",
"LabelFindEpisodes": "পর্বগুলো খুঁজুন",
@@ -304,7 +330,8 @@
"LabelFolder": "ফোল্ডার",
"LabelFolders": "ফোল্ডারগুলো",
"LabelFontBold": "বোল্ড",
- "LabelFontFamily": "ফন্ট পরিবার",
+ "LabelFontBoldness": "হরফ বোল্ডনেস",
+ "LabelFontFamily": "হরফ পরিবার",
"LabelFontItalic": "ইটালিক",
"LabelFontScale": "ফন্ট স্কেল",
"LabelFontStrikethrough": "অবচ্ছেদন রেখা",
@@ -314,14 +341,16 @@
"LabelHardDeleteFile": "জোরপূর্বক ফাইল মুছে ফেলুন",
"LabelHasEbook": "ই-বই আছে",
"LabelHasSupplementaryEbook": "পরিপূরক ই-বই আছে",
+ "LabelHideSubtitles": "সাবটাইটেল লুকান",
"LabelHighestPriority": "সর্বোচ্চ অগ্রাধিকার",
"LabelHost": "নিমন্ত্রণকর্তা",
"LabelHour": "ঘন্টা",
+ "LabelHours": "ঘন্টা",
"LabelIcon": "আইকন",
"LabelImageURLFromTheWeb": "ওয়েব থেকে ছবির ইউআরএল",
+ "LabelInProgress": "প্রগতিতে আছে",
"LabelIncludeInTracklist": "ট্র্যাকলিস্টে অন্তর্ভুক্ত করুন",
"LabelIncomplete": "অসম্পূর্ণ",
- "LabelInProgress": "প্রগতিতে আছে",
"LabelInterval": "বিরতি",
"LabelIntervalCustomDailyWeekly": "কাস্টম দৈনিক/সাপ্তাহিক",
"LabelIntervalEvery12Hours": "প্রতি ১২ ঘন্টায়",
@@ -333,8 +362,11 @@
"LabelIntervalEveryHour": "প্রতি ঘন্টা",
"LabelInvert": "উল্টানো",
"LabelItem": "আইটেম",
+ "LabelJumpBackwardAmount": "পিছন দিকে ঝাঁপের পরিমাণ",
+ "LabelJumpForwardAmount": "সামনের দিকে ঝাঁপের পরিমাণ",
"LabelLanguage": "ভাষা",
"LabelLanguageDefaultServer": "সার্ভারের ডিফল্ট ভাষা",
+ "LabelLanguages": "ভাষাসমূহ",
"LabelLastBookAdded": "শেষ বই যোগ করা হয়েছে",
"LabelLastBookUpdated": "শেষ বই আপডেট করা হয়েছে",
"LabelLastSeen": "শেষ দেখা",
@@ -346,6 +378,7 @@
"LabelLess": "কম",
"LabelLibrariesAccessibleToUser": "ব্যবহারকারীর কাছে অ্যাক্সেসযোগ্য লাইব্রেরি",
"LabelLibrary": "লাইব্রেরি",
+ "LabelLibraryFilterSublistEmpty": "না {0}",
"LabelLibraryItem": "লাইব্রেরি আইটেম",
"LabelLibraryName": "লাইব্রেরির নাম",
"LabelLimit": "সীমা",
@@ -360,11 +393,12 @@
"LabelMatchExistingUsersByDescription": "বিদ্যমান ব্যবহারকারীদের সংযোগ করার জন্য ব্যবহৃত হয়। একবার সংযুক্ত হলে, ব্যবহারকারীদের আপনার SSO প্রদানকারীর থেকে একটি অনন্য আইডি দ্বারা মিলিত হবে",
"LabelMediaPlayer": "মিডিয়া প্লেয়ার",
"LabelMediaType": "মিডিয়ার ধরন",
- "LabelMetadataOrderOfPrecedenceDescription": "উচ্চ অগ্রাধিকারের মেটাডেটার উৎসগুলো নিম্ন অগ্রাধিকারের মেটাডেটা উৎসগুলোকে ওভাররাইড করবে",
- "LabelMetadataProvider": "মেটাডেটা প্রদানকারী",
"LabelMetaTag": "মেটা ট্যাগ",
"LabelMetaTags": "মেটা ট্যাগগুলো",
+ "LabelMetadataOrderOfPrecedenceDescription": "উচ্চ অগ্রাধিকারের মেটাডেটার উৎসগুলো নিম্ন অগ্রাধিকারের মেটাডেটা উৎসগুলোকে ওভাররাইড করবে",
+ "LabelMetadataProvider": "মেটাডেটা প্রদানকারী",
"LabelMinute": "মিনিট",
+ "LabelMinutes": "মিনিটস",
"LabelMissing": "নিখোঁজ",
"LabelMissingEbook": "কোনও ই-বই নেই",
"LabelMissingSupplementaryEbook": "কোনও সম্পূরক ই-বই নেই",
@@ -376,24 +410,25 @@
"LabelNarrator": "কথক",
"LabelNarrators": "কথক",
"LabelNew": "নতুন",
+ "LabelNewPassword": "নতুন পাসওয়ার্ড",
"LabelNewestAuthors": "নতুন লেখক",
"LabelNewestEpisodes": "নতুনতম পর্ব",
- "LabelNewPassword": "নতুন পাসওয়ার্ড",
"LabelNextBackupDate": "পরবর্তী ব্যাকআপ তারিখ",
"LabelNextScheduledRun": "পরবর্তী নির্ধারিত দৌড়",
+ "LabelNoCustomMetadataProviders": "কোনো কাস্টম মেটাডেটা প্রদানকারী নেই",
"LabelNoEpisodesSelected": "কোন পর্ব নির্বাচন করা হয়নি",
- "LabelNotes": "নোটস",
"LabelNotFinished": "সমাপ্ত হয়নি",
+ "LabelNotStarted": "শুরু হয়নি",
+ "LabelNotes": "নোটস",
"LabelNotificationAppriseURL": "অবহিত URL(গুলি)",
"LabelNotificationAvailableVariables": "ব্যবহারযোগ্য ভেরিয়েবল",
"LabelNotificationBodyTemplate": "বডি টেমপ্লেট",
"LabelNotificationEvent": "ইভেন্ট বিজ্ঞপ্তি",
+ "LabelNotificationTitleTemplate": "শিরোনাম টেমপ্লেট",
"LabelNotificationsMaxFailedAttempts": "সর্বোচ্চ ব্যর্থ প্রচেষ্টা",
"LabelNotificationsMaxFailedAttemptsHelp": "এটি বারবার পাঠাতে ব্যর্থ হলে বিজ্ঞপ্তি অক্ষম করা হবে",
"LabelNotificationsMaxQueueSize": "বিজ্ঞপ্তি ইভেন্টের জন্য সর্বোচ্চ সারির আকার",
"LabelNotificationsMaxQueueSizeHelp": "ইভেন্টগুলি প্রতি সেকেন্ডে ১ বার ইন্ধন করার মধ্যে সীমাবদ্ধ। সারি সর্বাধিক আকারে থাকলে ইভেন্টগুলি উপেক্ষা করা হবে। এটি বিজ্ঞপ্তি স্প্যামিং প্রতিরোধ করে।",
- "LabelNotificationTitleTemplate": "শিরোনাম টেমপ্লেট",
- "LabelNotStarted": "শুরু হয়নি",
"LabelNumberOfBooks": "বইয়ের সংখ্যা",
"LabelNumberOfEpisodes": "# টি পর্ব",
"LabelOpenIDAdvancedPermsClaimDescription": "ওপেনআইডি দাবির নাম যাতে অ্যাপ্লিকেশনের মধ্যে ব্যবহারকারীর ক্রিয়াকলাপের জন্য উন্নত অনুমতি রয়েছে যা অ-প্রশাসক ভূমিকাগুলিতে প্রযোজ্য হবে (যদি কনফিগার করা হয়)। প্রতিক্রিয়া থেকে দাবিটি অনুপস্থিত থাকলে, অ্যাক্সেস করুন ABS-তে অস্বীকার করা হবে। যদি একটি একক বিকল্প অনুপস্থিত থাকে, তাহলে এটিকে false হিসাবে গণ্য করা হবে। নিশ্চিত করুন যে পরিচয় প্রদানকারীর দাবি প্রত্যাশিত কাঠামোর সাথে মেলে:",
@@ -403,6 +438,7 @@
"LabelOverwrite": "পুনঃলিখিত",
"LabelPassword": "পাসওয়ার্ড",
"LabelPath": "পথ",
+ "LabelPermanent": "স্থায়ী",
"LabelPermissionsAccessAllLibraries": "সমস্ত লাইব্রেরি অ্যাক্সেস করতে পারবে",
"LabelPermissionsAccessAllTags": "সমস্ত ট্যাগ অ্যাক্সেস করতে পারবে",
"LabelPermissionsAccessExplicitContent": "স্পষ্ট বিষয়বস্তু অ্যাক্সেস করতে পারে",
@@ -412,43 +448,49 @@
"LabelPermissionsUpload": "আপলোড করতে পারবে",
"LabelPersonalYearReview": "আপনার বছরের পর্যালোচনা ({0})",
"LabelPhotoPathURL": "ছবি পথ/ইউআরএল",
- "LabelPlaylists": "প্লেলিস্ট",
"LabelPlayMethod": "প্লে পদ্ধতি",
+ "LabelPlayerChapterNumberMarker": "{1} এর মধ্যে {0}",
+ "LabelPlaylists": "প্লেলিস্ট",
"LabelPodcast": "পডকাস্ট",
- "LabelPodcasts": "পডকাস্টগুলো",
"LabelPodcastSearchRegion": "পডকাস্ট অনুসন্ধান অঞ্চল",
"LabelPodcastType": "পডকাস্টের ধরন",
+ "LabelPodcasts": "পডকাস্টগুলো",
"LabelPort": "পোর্ট",
"LabelPrefixesToIgnore": "উপেক্ষা করার উপসর্গ (কেস সংবেদনশীল)",
"LabelPreventIndexing": "আইটিউনস এবং গুগল পডকাস্ট ডিরেক্টরি দ্বারা আপনার ফিডকে ইন্ডেক্স করা থেকে বিরত রাখুন",
"LabelPrimaryEbook": "প্রাথমিক ই-বই",
"LabelProgress": "প্রগতি",
"LabelProvider": "প্রদানকারী",
+ "LabelProviderAuthorizationValue": "অনুমোদন শিরোনামের মান",
"LabelPubDate": "প্রকাশের তারিখ",
- "LabelPublisher": "প্রকাশক",
"LabelPublishYear": "প্রকাশের বছর",
- "LabelRead": "পড়ুন",
- "LabelReadAgain": "আবার পড়ুন",
- "LabelReadEbookWithoutProgress": "প্রগতি না রেখে ই-বই পড়ুন",
- "LabelRecentlyAdded": "সম্প্রতি যোগ করা হয়েছে",
- "LabelRecentSeries": "সাম্প্রতিক সিরিজ",
- "LabelRecommended": "সুপারিশকৃত",
- "LabelRedo": "পুনরায় করুন",
- "LabelRegion": "অঞ্চল",
- "LabelReleaseDate": "উন্মোচনের তারিখ",
- "LabelRemoveCover": "কভার সরান",
- "LabelRowsPerPage": "প্রতি পৃষ্ঠায় সারি",
+ "LabelPublishedDate": "প্রকাশিত {0}",
+ "LabelPublisher": "প্রকাশক",
+ "LabelPublishers": "প্রকাশকরা",
"LabelRSSFeedCustomOwnerEmail": "কাস্টম মালিকের ইমেইল",
"LabelRSSFeedCustomOwnerName": "কাস্টম মালিকের নাম",
"LabelRSSFeedOpen": "আরএসএস ফিড খুলুন",
"LabelRSSFeedPreventIndexing": "সূচীকরণ প্রতিরোধ করুন",
"LabelRSSFeedSlug": "আরএসএস ফিড স্লাগ",
"LabelRSSFeedURL": "আরএসএস ফিড ইউআরএল",
+ "LabelRandomly": "এলোমেলোভাবে",
+ "LabelReAddSeriesToContinueListening": "শোনা চালিয়ে যেতে সিরিজ পুনরায় যোগ করুন",
+ "LabelRead": "পড়ুন",
+ "LabelReadAgain": "আবার পড়ুন",
+ "LabelReadEbookWithoutProgress": "প্রগতি না রেখে ই-বই পড়ুন",
+ "LabelRecentSeries": "সাম্প্রতিক সিরিজ",
+ "LabelRecentlyAdded": "সম্প্রতি যোগ করা হয়েছে",
+ "LabelRecommended": "সুপারিশকৃত",
+ "LabelRedo": "পুনরায় করুন",
+ "LabelRegion": "অঞ্চল",
+ "LabelReleaseDate": "উন্মোচনের তারিখ",
+ "LabelRemoveCover": "কভার সরান",
+ "LabelRowsPerPage": "প্রতি পৃষ্ঠায় সারি",
"LabelSearchTerm": "অনুসন্ধান শব্দ",
"LabelSearchTitle": "অনুসন্ধান শিরোনাম",
"LabelSearchTitleOrASIN": "অনুসন্ধান শিরোনাম বা ASIN",
"LabelSeason": "সেশন",
- "LabelSelectAll": "Select all",
+ "LabelSelectAll": "সব নির্বাচন করুন",
"LabelSelectAllEpisodes": "সমস্ত পর্ব নির্বাচন করুন",
"LabelSelectEpisodesShowing": "দেখানো {0}টি পর্ব নির্বাচন করুন",
"LabelSelectUsers": "ব্যবহারকারী নির্বাচন করুন",
@@ -471,8 +513,8 @@
"LabelSettingsEnableWatcher": "প্রহরী সক্ষম করুন",
"LabelSettingsEnableWatcherForLibrary": "লাইব্রেরির জন্য ফোল্ডার প্রহরী সক্ষম করুন",
"LabelSettingsEnableWatcherHelp": "ফাইলের পরিবর্তন শনাক্ত হলে আইটেমগুলির স্বয়ংক্রিয় যোগ/আপডেট সক্ষম করবে। *সার্ভার পুনরায় চালু করতে হবে",
- "LabelSettingsEpubsAllowScriptedContent": "Allow scripted content in epubs",
- "LabelSettingsEpubsAllowScriptedContentHelp": "Allow epub files to execute scripts. It is recommended to keep this setting disabled unless you trust the source of the epub files.",
+ "LabelSettingsEpubsAllowScriptedContent": "ইপাবে স্ক্রিপ্ট করা বিষয়বস্তুর অনুমতি দিন",
+ "LabelSettingsEpubsAllowScriptedContentHelp": "ইপাব ফাইলগুলিকে স্ক্রিপ্ট চালানোর অনুমতি দিন। আপনি ইপাব ফাইলগুলির উৎসকে বিশ্বাস না করলে এই সেটিংটি নিষ্ক্রিয় রাখার সুপারিশ করা হলো।",
"LabelSettingsExperimentalFeatures": "পরীক্ষামূলক বৈশিষ্ট্য",
"LabelSettingsExperimentalFeaturesHelp": "ফিচারের বৈশিষ্ট্য যা আপনার প্রতিক্রিয়া ব্যবহার করতে পারে এবং পরীক্ষায় সহায়তা করতে পারে। গিটহাব আলোচনা খুলতে ক্লিক করুন।",
"LabelSettingsFindCovers": "কভার খুঁজুন",
@@ -482,7 +524,7 @@
"LabelSettingsHomePageBookshelfView": "নীড় পেজে বুকশেলফ ভিউ ব্যবহার করুন",
"LabelSettingsLibraryBookshelfView": "লাইব্রেরি বুকশেলফ ভিউ ব্যবহার করুন",
"LabelSettingsOnlyShowLaterBooksInContinueSeries": "কন্টিনিউ সিরিজে আগের বইগুলো এড়িয়ে যান",
- "LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "কন্টিনিউ সিরিজের হোম পেজ শেল্ফ প্রথম বইটি দেখায় যেটি সিরিজে শুরু হয়নি যেটিতে অন্তত একটি বই শেষ হয়েছে এবং কোনো বই চলছে না। এই সেটিংটি সক্ষম করা হলে তা শুরু না হওয়া প্রথম বইটির পরিবর্তে সবচেয়ে দূরের সম্পূর্ণ বই থেকে সিরিজ চালিয়ে যাবে। ",
+ "LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "কন্টিনিউ সিরিজের নীড় পেজ শেল্ফ দেখায় যে সিরিজে শুরু হয়নি এমন প্রথম বই যার অন্তত একটি বই শেষ হয়েছে এবং কোনো বই চলছে না। এই সেটিংটি সক্ষম করলে শুরু না হওয়া প্রথম বইটির পরিবর্তে সবচেয়ে দূরের সম্পূর্ণ বই থেকে সিরিজ চলতে থাকবে।",
"LabelSettingsParseSubtitles": "সাবটাইটেল পার্স করুন",
"LabelSettingsParseSubtitlesHelp": "অডিওবুক ফোল্ডারের নাম থেকে সাবটাইটেল বের করুন৷ সাবটাইটেল অবশ্যই \" - \" অর্থাৎ \"বুকের শিরোনাম - এখানে একটি সাবটাইটেল\" এর সাবটাইটেল আছে \"এখানে একটি সাবটাইটেল\"",
"LabelSettingsPreferMatchedMetadata": "মিলিত মেটাডেটা পছন্দ করুন",
@@ -498,15 +540,19 @@
"LabelSettingsStoreMetadataWithItem": "আইটেমের সাথে মেটাডেটা সংরক্ষণ করুন",
"LabelSettingsStoreMetadataWithItemHelp": "ডিফল্টরূপে মেটাডেটা ফাইলগুলি /মেটাডাটা/আইটেমগুলি -এ সংরক্ষণ করা হয়, এই সেটিংটি সক্ষম করলে মেটাডেটা ফাইলগুলি আপনার লাইব্রেরি আইটেম ফোল্ডারে সংরক্ষণ করা হবে",
"LabelSettingsTimeFormat": "সময় বিন্যাস",
+ "LabelShare": "শেয়ার করুন",
+ "LabelShareOpen": "শেয়ার খোলা",
+ "LabelShareURL": "শেয়ার ইউআরএল",
"LabelShowAll": "সব দেখান",
- "LabelShowSeconds": "Show seconds",
+ "LabelShowSeconds": "সেকেন্ড দেখান",
+ "LabelShowSubtitles": "সহ-শিরোনাম দেখান",
"LabelSize": "আকার",
"LabelSleepTimer": "স্লিপ টাইমার",
"LabelSlug": "স্লাগ",
"LabelStart": "শুরু",
+ "LabelStartTime": "শুরুর সময়",
"LabelStarted": "শুরু হয়েছে",
"LabelStartedAt": "এতে শুরু হয়েছে",
- "LabelStartTime": "শুরু করার সময়",
"LabelStatsAudioTracks": "অডিও ট্র্যাক",
"LabelStatsAuthors": "লেখক",
"LabelStatsBestDay": "সেরা দিন",
@@ -537,6 +583,10 @@
"LabelThemeDark": "অন্ধকার",
"LabelThemeLight": "আলো",
"LabelTimeBase": "সময় বেস",
+ "LabelTimeDurationXHours": "{0} ঘণ্টা",
+ "LabelTimeDurationXMinutes": "{0} মিনিট",
+ "LabelTimeDurationXSeconds": "{0} সেকেন্ড",
+ "LabelTimeInMinutes": "মিনিটে সময়",
"LabelTimeListened": "সময় শোনা হয়েছে",
"LabelTimeListenedToday": "আজ শোনার সময়",
"LabelTimeRemaining": "{0}টি অবশিষ্ট",
@@ -560,11 +610,12 @@
"LabelUnabridged": "অসংলগ্ন",
"LabelUndo": "পূর্বাবস্থা",
"LabelUnknown": "অজানা",
+ "LabelUnknownPublishDate": "প্রকাশের তারিখ অজানা",
"LabelUpdateCover": "কভার আপডেট করুন",
"LabelUpdateCoverHelp": "একটি মিল থাকা অবস্থায় নির্বাচিত বইগুলির বিদ্যমান কভারগুলি ওভাররাইট করার অনুমতি দিন",
- "LabelUpdatedAt": "আপডেট করা হয়েছে",
"LabelUpdateDetails": "বিশদ আপডেট করুন",
"LabelUpdateDetailsHelp": "একটি মিল থাকা অবস্থায় নির্বাচিত বইগুলির বিদ্যমান বিবরণ ওভাররাইট করার অনুমতি দিন",
+ "LabelUpdatedAt": "আপডেট করা হয়েছে",
"LabelUploaderDragAndDrop": "ফাইল বা ফোল্ডার টেনে আনুন এবং ফেলে দিন",
"LabelUploaderDropFiles": "ফাইলগুলো ফেলে দিন",
"LabelUploaderItemFetchMetadataHelp": "স্বয়ংক্রিয়ভাবে শিরোনাম, লেখক এবং সিরিজ আনুন",
@@ -576,9 +627,12 @@
"LabelVersion": "সংস্করণ",
"LabelViewBookmarks": "বুকমার্ক দেখুন",
"LabelViewChapters": "অধ্যায় দেখুন",
+ "LabelViewPlayerSettings": "প্লেয়ার সেটিংস দেখুন",
"LabelViewQueue": "প্লেয়ার সারি দেখুন",
"LabelVolume": "ভলিউম",
"LabelWeekdaysToRun": "চলতে হবে সপ্তাহের দিন",
+ "LabelXBooks": "{0}টি বই",
+ "LabelXItems": "{0}টি আইটেম",
"LabelYearReviewHide": "পর্যালোচনার বছর লুকান",
"LabelYearReviewShow": "পর্যালোচনার বছর দেখুন",
"LabelYourAudiobookDuration": "আপনার অডিওবুকের সময়কাল",
@@ -586,12 +640,16 @@
"LabelYourPlaylists": "আপনার প্লেলিস্ট",
"LabelYourProgress": "আপনার অগ্রগতি",
"MessageAddToPlayerQueue": "প্লেয়ার সারিতে যোগ করুন",
- "MessageAppriseDescription": "এই বৈশিষ্ট্যটি ব্যবহার করার জন্য আপনাকে Apprise API-এর একটি উদাহরণ থাকতে হবে a> চলমান বা একটি এপিআই যা সেই একই অনুরোধগুলি পরিচালনা করবে৷ বিজ্ঞপ্তি পাঠানোর জন্য Apprise API Url সম্পূর্ণ URL পাথ হওয়া উচিত, যেমন, যদি আপনার API উদাহরণ http://192.168 এ পরিবেশিত হয়৷ 1.1:8337 তারপর আপনি http://192.168.1.1:8337/notify লিখবেন।",
+ "MessageAppriseDescription": "এই বৈশিষ্ট্যটি ব্যবহার করার জন্য আপনাকে Apprise API চালানোর একটি উদাহরণ বা একটি এপিআই পরিচালনা করতে হবে যে একই অনুরোধ পরিচালনা করবে। অ্যাপ্রাইজ এপিআই ইউআরএলটি বিজ্ঞপ্তি পাঠানোর জন্য সম্পূর্ণ ইউআরএল পথ হওয়া উচিত, যেমন, যদি আপনার API ইনস্ট্যান্স http://192.168.1.1:8337 এ পরিবেশিত হয় তাহলে আপনি রাখবেন >http://192.168.1.1:8337/notify।",
"MessageBackupsDescription": "ব্যাকআপের মধ্যে রয়েছে ব্যবহারকারী, ব্যবহারকারীর অগ্রগতি, লাইব্রেরি আইটেমের বিবরণ, সার্ভার সেটিংস এবং /metadata/items & /metadata/authors-এ সংরক্ষিত ছবি। ব্যাকআপগুলি আপনার লাইব্রেরি ফোল্ডারে সঞ্চিত কোনো ফাইল >অন্তর্ভুক্ত করবেন না।",
+ "MessageBackupsLocationEditNote": "দ্রষ্টব্য: ব্যাকআপ অবস্থান আপডেট করলে বিদ্যমান ব্যাকআপগুলি সরানো বা সংশোধন করা হবে না",
+ "MessageBackupsLocationNoEditNote": "দ্রষ্টব্য: ব্যাকআপ অবস্থান একটি পরিবেশ পরিবর্তনশীল মাধ্যমে স্থির করা হয়েছে এবং এখানে পরিবর্তন করা যাবে না।",
+ "MessageBackupsLocationPathEmpty": "ব্যাকআপ অবস্থানের পথ খালি থাকতে পারবে না",
"MessageBatchQuickMatchDescription": "কুইক ম্যাচ নির্বাচিত আইটেমগুলির জন্য অনুপস্থিত কভার এবং মেটাডেটা যোগ করার চেষ্টা করবে। বিদ্যমান কভার এবং/অথবা মেটাডেটা ওভাররাইট করার জন্য দ্রুত ম্যাচকে অনুমতি দিতে নীচের বিকল্পগুলি সক্ষম করুন।",
"MessageBookshelfNoCollections": "আপনি এখনও কোনো সংগ্রহ করেননি",
- "MessageBookshelfNoResultsForFilter": "ফিল্টার \"{0}: {1}\" এর জন্য কোন ফলাফল নেই",
"MessageBookshelfNoRSSFeeds": "কোনও RSS ফিড খোলা নেই",
+ "MessageBookshelfNoResultsForFilter": "ফিল্টার \"{0}: {1}\" এর জন্য কোন ফলাফল নেই",
+ "MessageBookshelfNoResultsForQuery": "প্রশ্নের জন্য কোন ফলাফল নেই",
"MessageBookshelfNoSeries": "আপনার কোনো সিরিজ নেই",
"MessageChapterEndIsAfter": "অধ্যায়ের সমাপ্তি আপনার অডিওবুকের শেষে",
"MessageChapterErrorFirstNotZero": "প্রথম অধ্যায় 0 এ শুরু হতে হবে",
@@ -601,18 +659,26 @@
"MessageCheckingCron": "ক্রন পরীক্ষা করা হচ্ছে...",
"MessageConfirmCloseFeed": "আপনি কি নিশ্চিত যে আপনি এই ফিডটি বন্ধ করতে চান?",
"MessageConfirmDeleteBackup": "আপনি কি নিশ্চিত যে আপনি {0} এর ব্যাকআপ মুছে ফেলতে চান?",
+ "MessageConfirmDeleteDevice": "আপনি কি নিশ্চিতভাবে ই-রিডার ডিভাইস \"{0}\" মুছতে চান?",
"MessageConfirmDeleteFile": "এটি আপনার ফাইল সিস্টেম থেকে ফাইলটি মুছে দেবে। আপনি কি নিশ্চিত?",
"MessageConfirmDeleteLibrary": "আপনি কি নিশ্চিত যে আপনি স্থায়ীভাবে লাইব্রেরি \"{0}\" মুছে ফেলতে চান?",
"MessageConfirmDeleteLibraryItem": "এটি ডাটাবেস এবং আপনার ফাইল সিস্টেম থেকে লাইব্রেরি আইটেমটি মুছে ফেলবে। আপনি কি নিশ্চিত?",
"MessageConfirmDeleteLibraryItems": "এটি ডাটাবেস এবং আপনার ফাইল সিস্টেম থেকে {0}টি লাইব্রেরি আইটেম মুছে ফেলবে। আপনি কি নিশ্চিত?",
+ "MessageConfirmDeleteMetadataProvider": "আপনি কি নিশ্চিতভাবে কাস্টম মেটাডেটা প্রদানকারী \"{0}\" মুছতে চান?",
+ "MessageConfirmDeleteNotification": "আপনি কি নিশ্চিতভাবে এই বিজ্ঞপ্তিটি মুছতে চান?",
"MessageConfirmDeleteSession": "আপনি কি নিশ্চিত আপনি এই অধিবেশন মুছে দিতে চান?",
"MessageConfirmForceReScan": "আপনি কি নিশ্চিত যে আপনি জোর করে পুনরায় স্ক্যান করতে চান?",
"MessageConfirmMarkAllEpisodesFinished": "আপনি কি নিশ্চিত যে আপনি সমস্ত পর্ব সমাপ্ত হিসাবে চিহ্নিত করতে চান?",
"MessageConfirmMarkAllEpisodesNotFinished": "আপনি কি নিশ্চিত যে আপনি সমস্ত পর্বকে শেষ হয়নি বলে চিহ্নিত করতে চান?",
+ "MessageConfirmMarkItemFinished": "আপনি কি \"{0}\" কে সমাপ্ত হিসাবে চিহ্নিত করার বিষয়ে নিশ্চিত?",
+ "MessageConfirmMarkItemNotFinished": "আপনি কি \"{0}\" শেষ হয়নি বলে চিহ্নিত করার বিষয়ে নিশ্চিত?",
"MessageConfirmMarkSeriesFinished": "আপনি কি নিশ্চিত যে আপনি এই সিরিজের সমস্ত বইকে সমাপ্ত হিসাবে চিহ্নিত করতে চান?",
"MessageConfirmMarkSeriesNotFinished": "আপনি কি নিশ্চিত যে আপনি এই সিরিজের সমস্ত বইকে শেষ হয়নি বলে চিহ্নিত করতে চান?",
- "MessageConfirmPurgeCache": "Purge cache will delete the entire directory at /metadata/cache.
Are you sure you want to remove the cache directory?",
+ "MessageConfirmNotificationTestTrigger": "পরীক্ষার তথ্য দিয়ে এই বিজ্ঞপ্তিটি ট্রিগার করবেন?",
+ "MessageConfirmPurgeCache": "ক্যাশে পরিষ্কারক /metadata/cache-এ সম্পূর্ণ ডিরেক্টরি মুছে ফেলবে।
আপনি কি নিশ্চিত আপনি ক্যাশে ডিরেক্টরি সরাতে চান?",
+ "MessageConfirmPurgeItemsCache": "আইটেম ক্যাশে পরিষ্কারক /metadata/cache/items-এ সম্পূর্ণ ডিরেক্টরি মুছে ফেলবে। আপনি কি নিশ্চিত?",
"MessageConfirmQuickEmbed": "সতর্কতা! দ্রুত এম্বেড আপনার অডিও ফাইলের ব্যাকআপ করবে না। নিশ্চিত করুন যে আপনার অডিও ফাইলগুলির একটি ব্যাকআপ আছে।
আপনি কি চালিয়ে যেতে চান?",
+ "MessageConfirmReScanLibraryItems": "আপনি কি নিশ্চিত যে আপনি {0}টি আইটেম পুনরায় স্ক্যান করতে চান?",
"MessageConfirmRemoveAllChapters": "আপনি কি নিশ্চিত যে আপনি সমস্ত অধ্যায় সরাতে চান?",
"MessageConfirmRemoveAuthor": "আপনি কি নিশ্চিত যে আপনি লেখক \"{0}\" অপসারণ করতে চান?",
"MessageConfirmRemoveCollection": "আপনি কি নিশ্চিত যে আপনি সংগ্রহ \"{0}\" সরাতে চান?",
@@ -627,15 +693,17 @@
"MessageConfirmRenameTag": "আপনি কি সব আইটেমের জন্য \"{0}\" ট্যাগের নাম পরিবর্তন করে \"{1}\" করার বিষয়ে নিশ্চিত?",
"MessageConfirmRenameTagMergeNote": "দ্রষ্টব্য: এই ট্যাগটি আগে থেকেই বিদ্যমান তাই সেগুলিকে একত্র করা হবে।",
"MessageConfirmRenameTagWarning": "সতর্কতা! একটি ভিন্ন কেসিং সহ একটি অনুরূপ ট্যাগ ইতিমধ্যেই বিদ্যমান \"{0}\"।",
- "MessageConfirmReScanLibraryItems": "আপনি কি নিশ্চিত যে আপনি {0}টি আইটেম পুনরায় স্ক্যান করতে চান?",
+ "MessageConfirmResetProgress": "আপনি কি আপনার অগ্রগতি রিসেট করার বিষয়ে নিশ্চিত?",
"MessageConfirmSendEbookToDevice": "আপনি কি নিশ্চিত যে আপনি \"{2}\" ডিভাইসে {0} ইবুক \"{1}\" পাঠাতে চান?",
+ "MessageConfirmUnlinkOpenId": "আপনি কি এই ব্যবহারকারীকে ওপেনআইডি থেকে লিঙ্কমুক্ত করার বিষয়ে নিশ্চিত?",
"MessageDownloadingEpisode": "ডাউনলোডিং পর্ব",
"MessageDragFilesIntoTrackOrder": "সঠিক ট্র্যাক অর্ডারে ফাইল টেনে আনুন",
+ "MessageEmbedFailed": "এম্বেড ব্যর্থ হয়েছে!",
"MessageEmbedFinished": "এম্বেড করা শেষ!",
"MessageEpisodesQueuedForDownload": "{0} পর্ব(গুলি) ডাউনলোডের জন্য সারিবদ্ধ",
- "MessageEreaderDevices": "To ensure delivery of ebooks, you may need to add the above email address as a valid sender for each device listed below.",
+ "MessageEreaderDevices": "ই-বুক সরবরাহ নিশ্চিত করতে, আপনাকে নীচে তালিকাভুক্ত প্রতিটি ডিভাইসের জন্য একটি বৈধ প্রেরক হিসাবে উপরের ইমেল ঠিকানাটি যুক্ত করতে হতে পারে।",
"MessageFeedURLWillBe": "ফিড URL হবে {0}",
- "MessageFetching": "আনয় হচ্ছে...",
+ "MessageFetching": "আনয় হচ্ছে.।",
"MessageForceReScanDescription": "সকল ফাইল আবার নতুন স্ক্যানের মত স্ক্যান করবে। অডিও ফাইল ID3 ট্যাগ, OPF ফাইল, এবং টেক্সট ফাইলগুলি নতুন হিসাবে স্ক্যান করা হবে।",
"MessageImportantNotice": "গুরুত্বপূর্ণ বিজ্ঞপ্তি!",
"MessageInsertChapterBelow": "নীচে অধ্যায় ঢোকান",
@@ -643,9 +711,9 @@
"MessageItemsUpdated": "{0}টি আইটেম আপডেট করা হয়েছে",
"MessageJoinUsOn": "আমাদের সাথে যোগ দিন",
"MessageListeningSessionsInTheLastYear": "গত বছরে {0}টি শোনার সেশন",
- "MessageLoading": "লোড হচ্ছে...",
+ "MessageLoading": "লোড হচ্ছে.।",
"MessageLoadingFolders": "ফোল্ডার লোড হচ্ছে...",
- "MessageLogsDescription": "Logs are stored in /metadata/logs as JSON files. Crash logs are stored in /metadata/logs/crash_logs.txt.",
+ "MessageLogsDescription": "লগগুলি JSON ফাইল হিসাবে /metadata/logs-এ সংরক্ষণ করা হয়। ক্র্যাশ লগগুলি /metadata/logs/crash_logs.txt-এ সংরক্ষণ করা হয়।",
"MessageM4BFailed": "M4B ব্যর্থ!",
"MessageM4BFinished": "M4B সমাপ্ত!",
"MessageMapChapterTitles": "টাইমস্ট্যাম্প সামঞ্জস্য না করে আপনার বিদ্যমান অডিওবুক অধ্যায়গুলিতে অধ্যায়ের শিরোনাম ম্যাপ করুন",
@@ -662,6 +730,7 @@
"MessageNoCollections": "কোন সংগ্রহ নেই",
"MessageNoCoversFound": "কোন কভার পাওয়া যায়নি",
"MessageNoDescription": "কোন বর্ণনা নেই",
+ "MessageNoDevices": "কোনো ডিভাইস নেই",
"MessageNoDownloadsInProgress": "বর্তমানে কোনো ডাউনলোড চলছে না",
"MessageNoDownloadsQueued": "কোনও ডাউনলোড সারি নেই",
"MessageNoEpisodeMatchesFound": "কোন পর্বের মিল পাওয়া যায়নি",
@@ -681,14 +750,15 @@
"MessageNoSeries": "কোন সিরিজ নেই",
"MessageNoTags": "কোন ট্যাগ নেই",
"MessageNoTasksRunning": "কোন টাস্ক চলছে না",
- "MessageNotYetImplemented": "এখনও বাস্তবায়িত হয়নি",
- "MessageNoUpdateNecessary": "কোন আপডেটের প্রয়োজন নেই",
"MessageNoUpdatesWereNecessary": "কোন আপডেটের প্রয়োজন ছিল না",
"MessageNoUserPlaylists": "আপনার কোনো প্লেলিস্ট নেই",
+ "MessageNotYetImplemented": "এখনও বাস্তবায়িত হয়নি",
+ "MessageOpmlPreviewNote": "দ্রষ্টব্য: এটি পার্স করা OPML ফাইলের একটি পূর্বরূপ। প্রকৃত পডকাস্ট শিরোনাম RSS ফিড থেকে নেওয়া হবে।",
"MessageOr": "বা",
"MessagePauseChapter": "পজ অধ্যায় প্লেব্যাক",
"MessagePlayChapter": "অধ্যায়ের শুরুতে শুনুন",
"MessagePlaylistCreateFromCollection": "সংগ্রহ থেকে প্লেলিস্ট তৈরি করুন",
+ "MessagePleaseWait": "অনুগ্রহ করে অপেক্ষা করুন..।",
"MessagePodcastHasNoRSSFeedForMatching": "পডকাস্টের সাথে মিলের জন্য ব্যবহার করার জন্য কোন RSS ফিড ইউআরএল নেই",
"MessageQuickMatchDescription": "খালি আইটেমের বিশদ বিবরণ এবং '{0}' থেকে প্রথম ম্যাচের ফলাফলের সাথে কভার করুন। সার্ভার সেটিং সক্ষম না থাকলে বিশদ ওভাররাইট করে না।",
"MessageRemoveChapter": "অধ্যায় সরান",
@@ -703,7 +773,42 @@
"MessageSelected": "{0}টি নির্বাচিত",
"MessageServerCouldNotBeReached": "সার্ভারে পৌঁছানো যায়নি",
"MessageSetChaptersFromTracksDescription": "প্রতিটি অডিও ফাইলকে অধ্যায় হিসেবে ব্যবহার করে অধ্যায় সেট করুন এবং অডিও ফাইলের নাম হিসেবে অধ্যায়ের শিরোনাম করুন",
+ "MessageShareExpirationWillBe": "মেয়াদ শেষ হবে {0}",
+ "MessageShareExpiresIn": "মেয়াদ শেষ হবে {0}",
+ "MessageShareURLWillBe": "শেয়ার করা ইউআরএল হবে {0}",
"MessageStartPlaybackAtTime": "\"{0}\" এর জন্য {1} এ প্লেব্যাক শুরু করবেন?",
+ "MessageTaskAudioFileNotWritable": "অডিও ফাইল \"{0}\" লেখার যোগ্য নয়",
+ "MessageTaskCanceledByUser": "ব্যবহারকারী দ্বারা টাস্ক বাতিল করা হয়েছে",
+ "MessageTaskDownloadingEpisodeDescription": "\"{0}\" পর্ব ডাউনলোড করা হচ্ছে",
+ "MessageTaskEmbeddingMetadata": "মেটাডেটা এম্বেড করা হচ্ছে",
+ "MessageTaskEmbeddingMetadataDescription": "অডিওবুক \"{0}\" এ মেটাডেটা এম্বেড করা হচ্ছে",
+ "MessageTaskEncodingM4b": "এনকোডিং M4B",
+ "MessageTaskEncodingM4bDescription": "একটি একক m4b ফাইলে অডিওবুক \"{0}\" এনকোড করা হচ্ছে",
+ "MessageTaskFailed": "ব্যর্থ হয়েছে",
+ "MessageTaskFailedToBackupAudioFile": "অডিও ফাইল \"{0}\" ব্যাকআপ করতে ব্যর্থ হয়েছে",
+ "MessageTaskFailedToCreateCacheDirectory": "ক্যাশে ডিরেক্টরি তৈরি করতে ব্যর্থ হয়েছে",
+ "MessageTaskFailedToEmbedMetadataInFile": "\"{0}\" ফাইলে মেটাডেটা এম্বেড করতে ব্যর্থ হয়েছে",
+ "MessageTaskFailedToMergeAudioFiles": "অডিও ফাইল মার্জ করতে ব্যর্থ হয়েছে",
+ "MessageTaskFailedToMoveM4bFile": "m4b ফাইল সরাতে ব্যর্থ হয়েছে",
+ "MessageTaskFailedToWriteMetadataFile": "মেটাডেটা ফাইল লিখতে ব্যর্থ হয়েছে",
+ "MessageTaskMatchingBooksInLibrary": "লাইব্রেরি \"{0}\"-এ বই মিলানো হচ্ছে",
+ "MessageTaskNoFilesToScan": "স্ক্যান করার জন্য কোন ফাইল নেই",
+ "MessageTaskOpmlImport": "OPML আমদানি",
+ "MessageTaskOpmlImportDescription": "{0} RSS ফিড থেকে পডকাস্ট তৈরি করা হচ্ছে",
+ "MessageTaskOpmlImportFeed": "OPML ফিড আমদানি",
+ "MessageTaskOpmlImportFeedDescription": "RSS ফিড \"{0}\" আমদানি করা হচ্ছে",
+ "MessageTaskOpmlImportFeedFailed": "পডকাস্ট ফিড পেতে ব্যর্থ হয়েছে",
+ "MessageTaskOpmlImportFeedPodcastDescription": "পডকাস্ট তৈরি করা হচ্ছে \"{0}\"",
+ "MessageTaskOpmlImportFeedPodcastExists": "পডকাস্ট আগে থেকেই পাথে বিদ্যমান",
+ "MessageTaskOpmlImportFeedPodcastFailed": "পডকাস্ট তৈরি করতে ব্যর্থ",
+ "MessageTaskOpmlImportFinished": "{0}টি পডকাস্ট যোগ করা হয়েছে",
+ "MessageTaskScanItemsAdded": "{0}টি করা হয়েছে",
+ "MessageTaskScanItemsMissing": "{0}টি অনুপস্থিত",
+ "MessageTaskScanItemsUpdated": "{0} টি আপডেট করা হয়েছে",
+ "MessageTaskScanNoChangesNeeded": "কোন পরিবর্তন প্রয়োজন নেই",
+ "MessageTaskScanningFileChanges": "\"{0}\" এ ফাইলের পরিবর্তন স্ক্যান করা হচ্ছে",
+ "MessageTaskScanningLibrary": "\"{0}\" লাইব্রেরি স্ক্যান করা হচ্ছে",
+ "MessageTaskTargetDirectoryNotWritable": "টার্গেট ডিরেক্টরি লেখার যোগ্য নয়",
"MessageThinking": "চিন্তা করছি...",
"MessageUploaderItemFailed": "আপলোড করতে ব্যর্থ",
"MessageUploaderItemSuccess": "সফলভাবে আপলোড হয়েছে!",
@@ -726,85 +831,162 @@
"PlaceholderNewPlaylist": "নতুন প্লেলিস্টের নাম",
"PlaceholderSearch": "অনুসন্ধান..",
"PlaceholderSearchEpisode": "অনুসন্ধান পর্ব..",
- "ToastAccountUpdateFailed": "অ্যাকাউন্ট আপডেট করতে ব্যর্থ",
+ "StatsAuthorsAdded": "লেখক যোগ করা হয়েছে",
+ "StatsBooksAdded": "বই যোগ করা হয়েছে",
+ "StatsBooksAdditional": "কিছু সংযোজনের মধ্যে রয়েছে…",
+ "StatsBooksFinished": "বই সমাপ্ত",
+ "StatsBooksFinishedThisYear": "এ বছর শেষ হওয়া কিছু বই …",
+ "StatsBooksListenedTo": "বই শোনা হয়েছে",
+ "StatsCollectionGrewTo": "আপনার বইয়ের সংগ্রহ বেড়েছে…",
+ "StatsSessions": "অধিবেশনসমূহ",
+ "StatsSpentListening": "শুনে কাটিয়েছেন",
+ "StatsTopAuthor": "শীর্ষস্থানীয় লেখক",
+ "StatsTopAuthors": "শীর্ষস্থানীয় লেখকগণ",
+ "StatsTopGenre": "শীর্ষ ঘরানা",
+ "StatsTopGenres": "শীর্ষ ঘরানাগুলো",
+ "StatsTopMonth": "সেরা মাস",
+ "StatsTopNarrator": "শীর্ষ কথক",
+ "StatsTopNarrators": "শীর্ষ কথকগণ",
+ "StatsTotalDuration": "মোট সময়কাল…",
+ "StatsYearInReview": "বাৎসরিক পর্যালোচনা",
"ToastAccountUpdateSuccess": "অ্যাকাউন্ট আপডেট করা হয়েছে",
- "ToastAuthorImageRemoveFailed": "ছবি সরাতে ব্যর্থ",
+ "ToastAppriseUrlRequired": "একটি Apprise ইউআরএল লিখতে হবে",
"ToastAuthorImageRemoveSuccess": "লেখকের ছবি সরানো হয়েছে",
- "ToastAuthorUpdateFailed": "লেখক আপডেট করতে ব্যর্থ",
+ "ToastAuthorNotFound": "লেখক \"{0}\" খুঁজে পাওয়া যায়নি",
+ "ToastAuthorRemoveSuccess": "লেখক সরানো হয়েছে",
+ "ToastAuthorSearchNotFound": "লেখক পাওয়া যায়নি",
"ToastAuthorUpdateMerged": "লেখক একত্রিত হয়েছে",
"ToastAuthorUpdateSuccess": "লেখক আপডেট করেছেন",
"ToastAuthorUpdateSuccessNoImageFound": "লেখক আপডেট করেছেন (কোন ছবি পাওয়া যায়নি)",
+ "ToastBackupAppliedSuccess": "ব্যাকআপ প্রয়োগ করা হয়েছে",
"ToastBackupCreateFailed": "ব্যাকআপ তৈরি করতে ব্যর্থ",
"ToastBackupCreateSuccess": "ব্যাকআপ তৈরি করা হয়েছে",
"ToastBackupDeleteFailed": "ব্যাকআপ মুছে ফেলতে ব্যর্থ",
"ToastBackupDeleteSuccess": "ব্যাকআপ মুছে ফেলা হয়েছে",
+ "ToastBackupInvalidMaxKeep": "রাখার জন্য অকার্যকর ব্যাকআপের সংখ্যা",
+ "ToastBackupInvalidMaxSize": "অকার্যকর সর্বোচ্চ ব্যাকআপ আকার",
"ToastBackupRestoreFailed": "ব্যাকআপ পুনরুদ্ধার করতে ব্যর্থ",
"ToastBackupUploadFailed": "ব্যাকআপ আপলোড করতে ব্যর্থ",
"ToastBackupUploadSuccess": "ব্যাকআপ আপলোড হয়েছে",
+ "ToastBatchDeleteFailed": "ব্যাচ মুছে ফেলতে ব্যর্থ হয়েছে",
+ "ToastBatchDeleteSuccess": "ব্যাচ মুছে ফেলা সফল হয়েছে",
"ToastBatchUpdateFailed": "ব্যাচ আপডেট ব্যর্থ হয়েছে",
"ToastBatchUpdateSuccess": "ব্যাচ আপডেট সাফল্য",
"ToastBookmarkCreateFailed": "বুকমার্ক তৈরি করতে ব্যর্থ",
"ToastBookmarkCreateSuccess": "বুকমার্ক যোগ করা হয়েছে",
- "ToastBookmarkRemoveFailed": "বুকমার্ক সরাতে ব্যর্থ",
"ToastBookmarkRemoveSuccess": "বুকমার্ক সরানো হয়েছে",
- "ToastBookmarkUpdateFailed": "বুকমার্ক আপডেট করতে ব্যর্থ",
"ToastBookmarkUpdateSuccess": "বুকমার্ক আপডেট করা হয়েছে",
- "ToastCachePurgeFailed": "Failed to purge cache",
- "ToastCachePurgeSuccess": "Cache purged successfully",
+ "ToastCachePurgeFailed": "ক্যাশে পরিষ্কার করতে ব্যর্থ হয়েছে",
+ "ToastCachePurgeSuccess": "ক্যাশে সফলভাবে পরিষ্কার করা হয়েছে",
"ToastChaptersHaveErrors": "অধ্যায়ে ত্রুটি আছে",
"ToastChaptersMustHaveTitles": "অধ্যায়ের শিরোনাম থাকতে হবে",
- "ToastCollectionItemsRemoveFailed": "সংগ্রহ থেকে আইটেম(গুলি) সরাতে ব্যর্থ",
+ "ToastChaptersRemoved": "অধ্যায়গুলো মুছে ফেলা হয়েছে",
+ "ToastCollectionItemsAddFailed": "আইটেম(গুলি) সংগ্রহে যোগ করা ব্যর্থ হয়েছে",
+ "ToastCollectionItemsAddSuccess": "আইটেম(গুলি) সংগ্রহে যোগ করা সফল হয়েছে",
"ToastCollectionItemsRemoveSuccess": "আইটেম(গুলি) সংগ্রহ থেকে সরানো হয়েছে",
- "ToastCollectionRemoveFailed": "সংগ্রহ সরাতে ব্যর্থ",
"ToastCollectionRemoveSuccess": "সংগ্রহ সরানো হয়েছে",
- "ToastCollectionUpdateFailed": "সংগ্রহ আপডেট করতে ব্যর্থ",
"ToastCollectionUpdateSuccess": "সংগ্রহ আপডেট করা হয়েছে",
- "ToastDeleteFileFailed": "Failed to delete file",
- "ToastDeleteFileSuccess": "File deleted",
- "ToastFailedToLoadData": "Failed to load data",
- "ToastItemCoverUpdateFailed": "আইটেম কভার আপডেট করতে ব্যর্থ হয়েছে",
+ "ToastCoverUpdateFailed": "কভার আপডেট ব্যর্থ হয়েছে",
+ "ToastDeleteFileFailed": "ফাইল মুছে ফেলতে ব্যর্থ হয়েছে",
+ "ToastDeleteFileSuccess": "ফাইল মুছে ফেলা হয়েছে",
+ "ToastDeviceAddFailed": "ডিভাইস যোগ করতে ব্যর্থ হয়েছে",
+ "ToastDeviceNameAlreadyExists": "এই নামের ইরিডার ডিভাইস ইতিমধ্যেই বিদ্যমান",
+ "ToastDeviceTestEmailFailed": "পরীক্ষামূলক ইমেল পাঠাতে ব্যর্থ হয়েছে",
+ "ToastDeviceTestEmailSuccess": "পরীক্ষামূলক ইমেল পাঠানো হয়েছে",
+ "ToastEmailSettingsUpdateSuccess": "ইমেল সেটিংস আপডেট করা হয়েছে",
+ "ToastEncodeCancelFailed": "এনকোড বাতিল করতে ব্যর্থ হয়েছে",
+ "ToastEncodeCancelSucces": "এনকোড বাতিল করা হয়েছে",
+ "ToastEpisodeDownloadQueueClearFailed": "সারি সাফ করতে ব্যর্থ হয়েছে",
+ "ToastEpisodeDownloadQueueClearSuccess": "পর্ব ডাউনলোড সারি পরিষ্কার করা হয়েছে",
+ "ToastErrorCannotShare": "এই ডিভাইসে স্থানীয়ভাবে শেয়ার করা যাবে না",
+ "ToastFailedToLoadData": "ডেটা লোড করা যায়নি",
+ "ToastFailedToShare": "শেয়ার করতে ব্যর্থ",
+ "ToastFailedToUpdate": "আপডেট করতে ব্যর্থ হয়েছে",
+ "ToastInvalidImageUrl": "অকার্যকর ছবির ইউআরএল",
+ "ToastInvalidUrl": "অকার্যকর ইউআরএল",
"ToastItemCoverUpdateSuccess": "আইটেম কভার আপডেট করা হয়েছে",
- "ToastItemDetailsUpdateFailed": "আইটেমের বিবরণ আপডেট করতে ব্যর্থ",
+ "ToastItemDeletedFailed": "আইটেম মুছে ফেলতে ব্যর্থ",
+ "ToastItemDeletedSuccess": "মুছে ফেলা আইটেম",
"ToastItemDetailsUpdateSuccess": "আইটেমের বিবরণ আপডেট করা হয়েছে",
- "ToastItemDetailsUpdateUnneeded": "আইটেমের বিবরণের জন্য কোন আপডেটের প্রয়োজন নেই",
"ToastItemMarkedAsFinishedFailed": "সমাপ্ত হিসাবে চিহ্নিত করতে ব্যর্থ",
"ToastItemMarkedAsFinishedSuccess": "আইটেম সমাপ্ত হিসাবে চিহ্নিত",
"ToastItemMarkedAsNotFinishedFailed": "সমাপ্ত হয়নি হিসাবে চিহ্নিত করতে ব্যর্থ",
"ToastItemMarkedAsNotFinishedSuccess": "আইটেম সমাপ্ত হয়নি বলে চিহ্নিত",
+ "ToastItemUpdateSuccess": "আইটেম আপডেট করা হয়েছে",
"ToastLibraryCreateFailed": "লাইব্রেরি তৈরি করতে ব্যর্থ",
"ToastLibraryCreateSuccess": "লাইব্রেরি \"{0}\" তৈরি করা হয়েছে",
"ToastLibraryDeleteFailed": "লাইব্রেরি মুছে ফেলতে ব্যর্থ",
"ToastLibraryDeleteSuccess": "লাইব্রেরি মুছে ফেলা হয়েছে",
"ToastLibraryScanFailedToStart": "স্ক্যান শুরু করতে ব্যর্থ",
"ToastLibraryScanStarted": "লাইব্রেরি স্ক্যান শুরু হয়েছে",
- "ToastLibraryUpdateFailed": "লাইব্রেরি আপডেট করতে ব্যর্থ",
"ToastLibraryUpdateSuccess": "লাইব্রেরি \"{0}\" আপডেট করা হয়েছে",
+ "ToastNameEmailRequired": "নাম এবং ইমেইল আবশ্যক",
+ "ToastNameRequired": "নাম আবশ্যক",
+ "ToastNewUserCreatedFailed": "অ্যাকাউন্ট তৈরি করতে ব্যর্থ: \"{0}\"",
+ "ToastNewUserCreatedSuccess": "নতুন একাউন্ট তৈরি হয়েছে",
+ "ToastNewUserLibraryError": "অন্তত একটি লাইব্রেরি নির্বাচন করতে হবে",
+ "ToastNewUserPasswordError": "অন্তত একটি পাসওয়ার্ড থাকতে হবে, শুধুমাত্র রুট ব্যবহারকারীর একটি খালি পাসওয়ার্ড থাকতে পারে",
+ "ToastNewUserTagError": "অন্তত একটি ট্যাগ নির্বাচন করতে হবে",
+ "ToastNewUserUsernameError": "একটি ব্যবহারকারীর নাম লিখুন",
+ "ToastNoUpdatesNecessary": "কোন আপডেটের প্রয়োজন নেই",
+ "ToastNotificationCreateFailed": "বিজ্ঞপ্তি তৈরি করতে ব্যর্থ",
+ "ToastNotificationDeleteFailed": "বিজ্ঞপ্তি মুছে ফেলতে ব্যর্থ",
+ "ToastNotificationFailedMaximum": "সর্বাধিক ব্যর্থ প্রচেষ্টা >= 0 হতে হবে",
+ "ToastNotificationQueueMaximum": "সর্বাধিক বিজ্ঞপ্তি সারি >= 0 হতে হবে",
+ "ToastNotificationSettingsUpdateSuccess": "বিজ্ঞপ্তি সেটিংস আপডেট করা হয়েছে",
+ "ToastNotificationTestTriggerFailed": "পরীক্ষামূলক বিজ্ঞপ্তি ট্রিগার করতে ব্যর্থ হয়েছে",
+ "ToastNotificationTestTriggerSuccess": "পরীক্ষামুলক বিজ্ঞপ্তি ট্রিগার হয়েছে",
+ "ToastNotificationUpdateSuccess": "বিজ্ঞপ্তি আপডেট হয়েছে",
"ToastPlaylistCreateFailed": "প্লেলিস্ট তৈরি করতে ব্যর্থ",
"ToastPlaylistCreateSuccess": "প্লেলিস্ট তৈরি করা হয়েছে",
- "ToastPlaylistRemoveFailed": "প্লেলিস্ট সরাতে ব্যর্থ",
"ToastPlaylistRemoveSuccess": "প্লেলিস্ট সরানো হয়েছে",
- "ToastPlaylistUpdateFailed": "প্লেলিস্ট আপডেট করতে ব্যর্থ",
"ToastPlaylistUpdateSuccess": "প্লেলিস্ট আপডেট করা হয়েছে",
"ToastPodcastCreateFailed": "পডকাস্ট তৈরি করতে ব্যর্থ",
"ToastPodcastCreateSuccess": "পডকাস্ট সফলভাবে তৈরি করা হয়েছে",
- "ToastRemoveItemFromCollectionFailed": "সংগ্রহ থেকে আইটেম সরাতে ব্যর্থ",
- "ToastRemoveItemFromCollectionSuccess": "সংগ্রহ থেকে আইটেম সরানো হয়েছে",
+ "ToastPodcastGetFeedFailed": "পডকাস্ট ফিড পেতে ব্যর্থ হয়েছে",
+ "ToastPodcastNoEpisodesInFeed": "আরএসএস ফিডে কোনো পর্ব পাওয়া যায়নি",
+ "ToastPodcastNoRssFeed": "পডকাস্টের কোন আরএসএস ফিড নেই",
+ "ToastProviderCreatedFailed": "প্রদানকারী যোগ করতে ব্যর্থ হয়েছে",
+ "ToastProviderCreatedSuccess": "নতুন প্রদানকারী যোগ করা হয়েছে",
+ "ToastProviderNameAndUrlRequired": "নাম এবং ইউআরএল আবশ্যক",
+ "ToastProviderRemoveSuccess": "প্রদানকারী সরানো হয়েছে",
"ToastRSSFeedCloseFailed": "RSS ফিড বন্ধ করতে ব্যর্থ",
"ToastRSSFeedCloseSuccess": "RSS ফিড বন্ধ",
+ "ToastRemoveFailed": "মুছে ফেলতে ব্যর্থ হয়েছে",
+ "ToastRemoveItemFromCollectionFailed": "সংগ্রহ থেকে আইটেম সরাতে ব্যর্থ",
+ "ToastRemoveItemFromCollectionSuccess": "সংগ্রহ থেকে আইটেম সরানো হয়েছে",
+ "ToastRemoveItemsWithIssuesFailed": "সমস্যাযুক্ত লাইব্রেরি আইটেমগুলি সরাতে ব্যর্থ হয়েছে",
+ "ToastRemoveItemsWithIssuesSuccess": "সমস্যাযুক্ত লাইব্রেরি আইটেম সরানো হয়েছে",
+ "ToastRenameFailed": "পুনঃনামকরণ ব্যর্থ হয়েছে",
+ "ToastRescanFailed": "{0} এর জন্য পুনরায় স্ক্যান করা ব্যর্থ হয়েছে",
+ "ToastRescanRemoved": "পুনরায় স্ক্যান সম্পূর্ণ,আইটেম সরানো হয়েছে",
+ "ToastRescanUpToDate": "পুনরায় স্ক্যান সম্পূর্ণ, আইটেম সাম্প্রতিক ছিল",
+ "ToastRescanUpdated": "পুনরায় স্ক্যান সম্পূর্ণ, আইটেম আপডেট করা হয়েছে",
+ "ToastScanFailed": "লাইব্রেরি আইটেম স্ক্যান করতে ব্যর্থ হয়েছে",
+ "ToastSelectAtLeastOneUser": "অন্তত একজন ব্যবহারকারী নির্বাচন করুন",
"ToastSendEbookToDeviceFailed": "ডিভাইসে ইবুক পাঠাতে ব্যর্থ",
"ToastSendEbookToDeviceSuccess": "ইবুক \"{0}\" ডিভাইসে পাঠানো হয়েছে",
"ToastSeriesUpdateFailed": "সিরিজ আপডেট ব্যর্থ হয়েছে",
"ToastSeriesUpdateSuccess": "সিরিজ আপডেট সাফল্য",
- "ToastServerSettingsUpdateFailed": "Failed to update server settings",
- "ToastServerSettingsUpdateSuccess": "Server settings updated",
+ "ToastServerSettingsUpdateSuccess": "সার্ভার সেটিংস আপডেট করা হয়েছে",
+ "ToastSessionCloseFailed": "অধিবেশন বন্ধ করতে ব্যর্থ হয়েছে",
"ToastSessionDeleteFailed": "সেশন মুছে ফেলতে ব্যর্থ",
"ToastSessionDeleteSuccess": "সেশন মুছে ফেলা হয়েছে",
+ "ToastSlugMustChange": "স্লাগে অবৈধ অক্ষর রয়েছে",
+ "ToastSlugRequired": "স্লাগ আবশ্যক",
"ToastSocketConnected": "সকেট সংযুক্ত",
"ToastSocketDisconnected": "সকেট সংযোগ বিচ্ছিন্ন",
"ToastSocketFailedToConnect": "সকেট সংযোগ করতে ব্যর্থ হয়েছে",
- "ToastSortingPrefixesEmptyError": "Must have at least 1 sorting prefix",
- "ToastSortingPrefixesUpdateFailed": "Failed to update sorting prefixes",
- "ToastSortingPrefixesUpdateSuccess": "Sorting prefixes updated ({0} items)",
+ "ToastSortingPrefixesEmptyError": "কমপক্ষে ১ টি সাজানোর উপসর্গ থাকতে হবে",
+ "ToastSortingPrefixesUpdateSuccess": "বাছাই করা উপসর্গ আপডেট করা হয়েছে ({0}টি আইটেম)",
+ "ToastTitleRequired": "শিরোনাম আবশ্যক",
+ "ToastUnknownError": "অজানা ত্রুটি",
+ "ToastUnlinkOpenIdFailed": "OpenID থেকে ব্যবহারকারীকে আনলিঙ্ক করতে ব্যর্থ হয়েছে",
+ "ToastUnlinkOpenIdSuccess": "OpenID থেকে ব্যবহারকারীকে লিঙ্কমুক্ত করা হয়েছে",
"ToastUserDeleteFailed": "ব্যবহারকারী মুছতে ব্যর্থ",
- "ToastUserDeleteSuccess": "ব্যবহারকারী মুছে ফেলা হয়েছে"
-}
\ No newline at end of file
+ "ToastUserDeleteSuccess": "ব্যবহারকারী মুছে ফেলা হয়েছে",
+ "ToastUserPasswordChangeSuccess": "পাসওয়ার্ড সফলভাবে পরিবর্তন করা হয়েছে",
+ "ToastUserPasswordMismatch": "পাসওয়ার্ড মিলছে না",
+ "ToastUserPasswordMustChange": "নতুন পাসওয়ার্ড পুরানো পাসওয়ার্ডের সাথে মিলতে পারবে না",
+ "ToastUserRootRequireName": "একটি রুট ব্যবহারকারীর নাম লিখতে হবে"
+}
diff --git a/client/strings/cs.json b/client/strings/cs.json
index b326996d1..7a898a370 100644
--- a/client/strings/cs.json
+++ b/client/strings/cs.json
@@ -9,6 +9,7 @@
"ButtonApply": "Aplikovat",
"ButtonApplyChapters": "Aplikovat kapitoly",
"ButtonAuthors": "Autoři",
+ "ButtonBack": "Zpět",
"ButtonBrowseForFolder": "Vyhledat složku",
"ButtonCancel": "Zrušit",
"ButtonCancelEncode": "Zrušit kódování",
@@ -18,6 +19,7 @@
"ButtonChooseFiles": "Vybrat soubory",
"ButtonClearFilter": "Vymazat filtr",
"ButtonCloseFeed": "Zavřít kanál",
+ "ButtonCloseSession": "Zavřít otevřenou relaci",
"ButtonCollections": "Kolekce",
"ButtonConfigureScanner": "Konfigurovat Prohledávání",
"ButtonCreate": "Vytvořit",
@@ -27,13 +29,16 @@
"ButtonEdit": "Upravit",
"ButtonEditChapters": "Upravit kapitoly",
"ButtonEditPodcast": "Upravit podcast",
+ "ButtonEnable": "Povolit",
+ "ButtonFireAndFail": "Spustit a selhat",
+ "ButtonFireOnTest": "Spustit událost onTest",
"ButtonForceReScan": "Vynutit opětovné prohledání",
"ButtonFullPath": "Úplná cesta",
"ButtonHide": "Skrýt",
"ButtonHome": "Domů",
"ButtonIssues": "Problémy",
- "ButtonJumpBackward": "Jump Backward",
- "ButtonJumpForward": "Jump Forward",
+ "ButtonJumpBackward": "Skok Zpět",
+ "ButtonJumpForward": "Skok Dopředu",
"ButtonLatest": "Nejnovější",
"ButtonLibrary": "Knihovna",
"ButtonLogout": "Odhlásit",
@@ -43,34 +48,38 @@
"ButtonMatchAllAuthors": "Spárovat všechny autory",
"ButtonMatchBooks": "Spárovat Knihy",
"ButtonNevermind": "Nevadí",
- "ButtonNext": "Next",
- "ButtonNextChapter": "Next Chapter",
+ "ButtonNext": "Další",
+ "ButtonNextChapter": "Další Kapitola",
+ "ButtonNextItemInQueue": "Žádná další položka ve frontě",
"ButtonOk": "Ok",
"ButtonOpenFeed": "Otevřít kanál",
"ButtonOpenManager": "Otevřít správce",
- "ButtonPause": "Pause",
+ "ButtonPause": "Pozastavit",
"ButtonPlay": "Přehrát",
+ "ButtonPlayAll": "Přehrát vše",
"ButtonPlaying": "Hraje",
"ButtonPlaylists": "Seznamy skladeb",
- "ButtonPrevious": "Previous",
- "ButtonPreviousChapter": "Previous Chapter",
+ "ButtonPrevious": "Předchozí",
+ "ButtonPreviousChapter": "Předchozí Kapitola",
+ "ButtonProbeAudioFile": "Prozkoumat audio soubor",
"ButtonPurgeAllCache": "Vyčistit veškerou mezipaměť",
"ButtonPurgeItemsCache": "Vyčistit mezipaměť položek",
- "ButtonPurgeMediaProgress": "Vyčistit průběh médií",
"ButtonQueueAddItem": "Přidat do fronty",
"ButtonQueueRemoveItem": "Odstranit z fronty",
+ "ButtonQuickEmbed": "Rychle Zapsat",
+ "ButtonQuickEmbedMetadata": "Rychle Zapsat Metadata",
"ButtonQuickMatch": "Rychlé přiřazení",
+ "ButtonReScan": "Znovu prohledat",
"ButtonRead": "Číst",
- "ButtonReadLess": "Read less",
- "ButtonReadMore": "Read more",
- "ButtonRefresh": "Refresh",
+ "ButtonReadLess": "Číst méně",
+ "ButtonReadMore": "Číst více",
+ "ButtonRefresh": "Obnovit",
"ButtonRemove": "Odstranit",
"ButtonRemoveAll": "Odstranit vše",
"ButtonRemoveAllLibraryItems": "Odstranit všechny položky knihovny",
"ButtonRemoveFromContinueListening": "Odstranit z Pokračovat v poslechu",
"ButtonRemoveFromContinueReading": "Odstranit z Pokračovat ve čtení",
"ButtonRemoveSeriesFromContinueSeries": "Odstranit sérii z Pokračovat v sérii",
- "ButtonReScan": "Znovu prohledat",
"ButtonReset": "Resetovat",
"ButtonResetToDefault": "Obnovit výchozí",
"ButtonRestore": "Obnovit",
@@ -83,13 +92,15 @@
"ButtonSelectFolderPath": "Vybrat cestu ke složce",
"ButtonSeries": "Série",
"ButtonSetChaptersFromTracks": "Nastavit kapitoly ze stop",
- "ButtonShare": "Share",
+ "ButtonShare": "Sdílet",
"ButtonShiftTimes": "Časy posunu",
"ButtonShow": "Zobrazit",
"ButtonStartM4BEncode": "Spustit kódování M4B",
"ButtonStartMetadataEmbed": "Spustit vkládání metadat",
+ "ButtonStats": "Statistiky",
"ButtonSubmit": "Odeslat",
"ButtonTest": "Test",
+ "ButtonUnlinkOpenId": "Odpojit OpenID",
"ButtonUpload": "Nahrát",
"ButtonUploadBackup": "Nahrát zálohu",
"ButtonUploadCover": "Nahrát obálku",
@@ -98,15 +109,16 @@
"ButtonUserEdit": "Upravit uživatelské {0}",
"ButtonViewAll": "Zobrazit vše",
"ButtonYes": "Ano",
- "ErrorUploadFetchMetadataAPI": "Error fetching metadata",
- "ErrorUploadFetchMetadataNoResults": "Could not fetch metadata - try updating title and/or author",
- "ErrorUploadLacksTitle": "Must have a title",
+ "ErrorUploadFetchMetadataAPI": "Chyba stahování metadat",
+ "ErrorUploadFetchMetadataNoResults": "Nepodařilo se načíst metadata - zkuste aktualizovat název a/nebo autora",
+ "ErrorUploadLacksTitle": "Musí mít titul",
"HeaderAccount": "Účet",
+ "HeaderAddCustomMetadataProvider": "Přidat vlastního poskytovatele metadat",
"HeaderAdvanced": "Pokročilé",
"HeaderAppriseNotificationSettings": "Nastavení oznámení Apprise",
- "HeaderAudiobookTools": "Nástroje pro správu souborů audioknih",
"HeaderAudioTracks": "Zvukové stopy",
- "HeaderAuthentication": "Authentication",
+ "HeaderAudiobookTools": "Nástroje pro správu souborů audioknih",
+ "HeaderAuthentication": "Autentizace",
"HeaderBackups": "Zálohy",
"HeaderChangePassword": "Změnit heslo",
"HeaderChapters": "Kapitoly",
@@ -115,7 +127,8 @@
"HeaderCollectionItems": "Položky kolekce",
"HeaderCover": "Obálka",
"HeaderCurrentDownloads": "Aktuální stahování",
- "HeaderCustomMetadataProviders": "Custom Metadata Providers",
+ "HeaderCustomMessageOnLogin": "Vlastní zpráva při přihlášení",
+ "HeaderCustomMetadataProviders": "Vlastní zprostředkovatelé metadat",
"HeaderDetails": "Podrobnosti",
"HeaderDownloadQueue": "Fronta stahování",
"HeaderEbookFiles": "Soubory elektronických knih",
@@ -130,7 +143,7 @@
"HeaderItemFiles": "Soubory položek",
"HeaderItemMetadataUtils": "Nástroje metadat položek",
"HeaderLastListeningSession": "Poslední poslechová relace",
- "HeaderLatestEpisodes": "Poslední epizody",
+ "HeaderLatestEpisodes": "Nejnovější epizody",
"HeaderLibraries": "Knihovny",
"HeaderLibraryFiles": "Soubory knihovny",
"HeaderLibraryStats": "Statistiky knihovny",
@@ -146,24 +159,28 @@
"HeaderMetadataToEmbed": "Metadata k vložení",
"HeaderNewAccount": "Nový účet",
"HeaderNewLibrary": "Nová knihovna",
+ "HeaderNotificationCreate": "Vytvořit notifikaci",
+ "HeaderNotificationUpdate": "Aktualizovat notifikaci",
"HeaderNotifications": "Oznámení",
- "HeaderOpenIDConnectAuthentication": "OpenID Connect Authentication",
+ "HeaderOpenIDConnectAuthentication": "Ověřování pomocí OpenID Connect",
"HeaderOpenRSSFeed": "Otevřít RSS kanál",
"HeaderOtherFiles": "Ostatní soubory",
- "HeaderPasswordAuthentication": "Password Authentication",
+ "HeaderPasswordAuthentication": "Autentizace heslem",
"HeaderPermissions": "Oprávnění",
"HeaderPlayerQueue": "Fronta přehrávače",
+ "HeaderPlayerSettings": "Nastavení přehrávače",
"HeaderPlaylist": "Seznam skladeb",
"HeaderPlaylistItems": "Položky seznamu přehrávání",
"HeaderPodcastsToAdd": "Podcasty k přidání",
"HeaderPreviewCover": "Náhled obálky",
- "HeaderRemoveEpisode": "Odstranit epizodu",
- "HeaderRemoveEpisodes": "Odstranit {0} epizody",
"HeaderRSSFeedGeneral": "Podrobnosti o RSS",
"HeaderRSSFeedIsOpen": "Informační kanál RSS je otevřený",
"HeaderRSSFeeds": "RSS kanály",
+ "HeaderRemoveEpisode": "Odstranit epizodu",
+ "HeaderRemoveEpisodes": "Odstranit {0} epizody",
"HeaderSavedMediaProgress": "Průběh uložených médií",
"HeaderSchedule": "Plán",
+ "HeaderScheduleEpisodeDownloads": "Naplánovat automatické stahování epizod",
"HeaderScheduleLibraryScans": "Naplánovat automatické prohledávání knihoven",
"HeaderSession": "Relace",
"HeaderSetBackupSchedule": "Nastavit plán zálohování",
@@ -175,7 +192,7 @@
"HeaderSleepTimer": "Časovač vypnutí",
"HeaderStatsLargestItems": "Největší položky",
"HeaderStatsLongestItems": "Nejdelší položky (hod.)",
- "HeaderStatsMinutesListeningChart": "Počet minut poslechu (posledních 7 dní)",
+ "HeaderStatsMinutesListeningChart": "Poslech za posledních 7 dní (min)",
"HeaderStatsRecentSessions": "Poslední relace",
"HeaderStatsTop10Authors": "Top 10 autorů",
"HeaderStatsTop5Genres": "Top 5 žánrů",
@@ -186,62 +203,69 @@
"HeaderUpdateDetails": "Aktualizovat podrobnosti",
"HeaderUpdateLibrary": "Aktualizovat knihovnu",
"HeaderUsers": "Uživatelé",
- "HeaderYearReview": "Year {0} in Review",
+ "HeaderYearReview": "Přehled {0} roku",
"HeaderYourStats": "Vaše statistiky",
"LabelAbridged": "Zkráceno",
- "LabelAbridgedChecked": "Abridged (checked)",
- "LabelAbridgedUnchecked": "Unabridged (unchecked)",
- "LabelAccessibleBy": "Accessible by",
+ "LabelAbridgedChecked": "Zkráceno (zaškrtnuto)",
+ "LabelAbridgedUnchecked": "Nezkrácené (nezaškrtnuté)",
+ "LabelAccessibleBy": "Přístupný prostřednictvím",
"LabelAccountType": "Typ účtu",
"LabelAccountTypeAdmin": "Správce",
"LabelAccountTypeGuest": "Host",
"LabelAccountTypeUser": "Uživatel",
"LabelActivity": "Aktivita",
- "LabelAdded": "Přidáno",
- "LabelAddedAt": "Přidáno v",
"LabelAddToCollection": "Přidat do kolekce",
"LabelAddToCollectionBatch": "Přidat {0} knihy do kolekce",
"LabelAddToPlaylist": "Přidat do seznamu přehrávání",
"LabelAddToPlaylistBatch": "Přidat {0} položky do seznamu přehrávání",
+ "LabelAddedAt": "Přidáno v",
+ "LabelAddedDate": "Přidáno {0}",
"LabelAdminUsersOnly": "Pouze administrátoři",
"LabelAll": "Vše",
"LabelAllUsers": "Všichni uživatelé",
"LabelAllUsersExcludingGuests": "Všichni uživatelé kromě hostů",
"LabelAllUsersIncludingGuests": "Všichni uživatelé včetně hostů",
"LabelAlreadyInYourLibrary": "Již ve vaší knihovně",
+ "LabelApiToken": "API Token",
"LabelAppend": "Připojit",
+ "LabelAudioBitrate": "Bitový tok zvuku (např. 128k)",
+ "LabelAudioChannels": "Zvukové kanály (1 nebo 2)",
+ "LabelAudioCodec": "Kodek audia",
"LabelAuthor": "Autor",
"LabelAuthorFirstLast": "Autor (jméno a příjmení)",
"LabelAuthorLastFirst": "Autor (příjmení a jméno)",
"LabelAuthors": "Autoři",
"LabelAutoDownloadEpisodes": "Automaticky stahovat epizody",
- "LabelAutoFetchMetadata": "Auto Fetch Metadata",
- "LabelAutoFetchMetadataHelp": "Fetches metadata for title, author, and series to streamline uploading. Additional metadata may have to be matched after upload.",
- "LabelAutoLaunch": "Auto Launch",
- "LabelAutoLaunchDescription": "Redirect to the auth provider automatically when navigating to the login page (manual override path /login?autoLaunch=0)",
- "LabelAutoRegister": "Auto Register",
- "LabelAutoRegisterDescription": "Automatically create new users after logging in",
+ "LabelAutoFetchMetadata": "Automatické stahování metadat",
+ "LabelAutoFetchMetadataHelp": "Stáhne metadata pro název, autora a sérii, aby se usnadnilo nahrávání. Další metadata může být nutné spárovat po nahrání.",
+ "LabelAutoLaunch": "Automatické spuštění",
+ "LabelAutoLaunchDescription": "Automaticky přesměrovat na zprostředkovatele ověření při vstupu na přihlašovací stránku (ruční přepsání cesty /login?autoLaunch=0)",
+ "LabelAutoRegister": "Automatická registrace",
+ "LabelAutoRegisterDescription": "Automaticky vytvářet nové uživatele po přihlášení",
"LabelBackToUser": "Zpět k uživateli",
+ "LabelBackupAudioFiles": "Zálohovat zvukové soubory",
"LabelBackupLocation": "Umístění zálohy",
"LabelBackupsEnableAutomaticBackups": "Povolit automatické zálohování",
"LabelBackupsEnableAutomaticBackupsHelp": "Zálohy uložené v /metadata/backups",
- "LabelBackupsMaxBackupSize": "Maximální velikost zálohy (v GB)",
+ "LabelBackupsMaxBackupSize": "Maximální velikost zálohy (v GB) (0 bez omezení)",
"LabelBackupsMaxBackupSizeHelp": "Ochrana proti chybné konfiguraci: Zálohování se nezdaří, pokud překročí nastavenou velikost.",
"LabelBackupsNumberToKeep": "Počet záloh, které se mají uchovat",
"LabelBackupsNumberToKeepHelp": "Najednou bude odstraněna pouze 1 záloha, takže pokud již máte více záloh, měli byste je odstranit ručně.",
"LabelBitrate": "Datový tok",
+ "LabelBonus": "Bonus",
"LabelBooks": "Knihy",
- "LabelButtonText": "Button Text",
- "LabelByAuthor": "by {0}",
+ "LabelButtonText": "Text tlačítka",
+ "LabelByAuthor": "od {0}",
"LabelChangePassword": "Změnit heslo",
"LabelChannels": "Kanály",
+ "LabelChapterTitle": "Název kapitoly",
"LabelChapters": "Kapitoly",
"LabelChaptersFound": "Kapitoly nalezeny",
- "LabelChapterTitle": "Název kapitoly",
"LabelClickForMoreInfo": "Klikněte pro více informací",
"LabelClosePlayer": "Zavřít přehrávač",
"LabelCodec": "Kodek",
"LabelCollapseSeries": "Sbalit sérii",
+ "LabelCollapseSubSeries": "Sbalit podsérie",
"LabelCollection": "Kolekce",
"LabelCollections": "Kolekce",
"LabelComplete": "Dokončeno",
@@ -257,6 +281,7 @@
"LabelCurrently": "Aktuálně:",
"LabelCustomCronExpression": "Vlastní výraz cronu:",
"LabelDatetime": "Datum a čas",
+ "LabelDays": "Dny",
"LabelDeleteFromFileSystemCheckbox": "Smazat ze souborového systému (zrušte zaškrtnutí pro odstranění pouze z databáze)",
"LabelDescription": "Popis",
"LabelDeselectAll": "Odznačit vše",
@@ -269,59 +294,71 @@
"LabelDiscover": "Objevit",
"LabelDownload": "Stáhnout",
"LabelDownloadNEpisodes": "Stáhnout {0} epizody",
- "LabelDuration": "Doba trvání",
- "LabelDurationComparisonExactMatch": "(exact match)",
- "LabelDurationComparisonLonger": "({0} longer)",
- "LabelDurationComparisonShorter": "({0} shorter)",
+ "LabelDuration": "Délka trvání",
+ "LabelDurationComparisonExactMatch": "(přesná shoda)",
+ "LabelDurationComparisonLonger": "({0} delší)",
+ "LabelDurationComparisonShorter": "({0} kratší)",
"LabelDurationFound": "Doba trvání nalezena:",
"LabelEbook": "Elektronická kniha",
"LabelEbooks": "Elektronické knihy",
"LabelEdit": "Upravit",
"LabelEmail": "E-mail",
"LabelEmailSettingsFromAddress": "Z adresy",
+ "LabelEmailSettingsRejectUnauthorized": "Odmítnout neautorizované certifikáty",
+ "LabelEmailSettingsRejectUnauthorizedHelp": "Vypnutím ověřování certifikátů SSL můžete své připojení vystavit bezpečnostním rizikům, například útokům typu man-in-the-middle. Tuto možnost zakažte pouze v případě, že rozumíte důsledkům a důvěřujete poštovnímu serveru, ke kterému se připojujete.",
"LabelEmailSettingsSecure": "Zabezpečené",
"LabelEmailSettingsSecureHelp": "Pokud je true, připojení bude při připojování k serveru používat TLS. Pokud je false, použije se protokol TLS, pokud server podporuje rozšíření STARTTLS. Ve většině případů nastavte tuto hodnotu na true, pokud se připojujete k portu 465. Pro port 587 nebo 25 ponechte hodnotu false. (z nodemailer.com/smtp/#authentication)",
"LabelEmailSettingsTestAddress": "Testovací adresa",
"LabelEmbeddedCover": "Vložená obálka",
"LabelEnable": "Povolit",
"LabelEnd": "Konec",
+ "LabelEndOfChapter": "Konec kapitoly",
"LabelEpisode": "Epizoda",
"LabelEpisodeTitle": "Název epizody",
"LabelEpisodeType": "Typ epizody",
+ "LabelEpisodes": "Epizody",
"LabelExample": "Příklad",
+ "LabelExpandSeries": "Rozbalit série",
+ "LabelExpandSubSeries": "Rozbalit podsérie",
"LabelExplicit": "Explicitní",
- "LabelExplicitChecked": "Explicit (checked)",
- "LabelExplicitUnchecked": "Not Explicit (unchecked)",
+ "LabelExplicitChecked": "Explicitní (zaškrtnuto)",
+ "LabelExplicitUnchecked": "Není explicitní (nezaškrtnuto)",
+ "LabelExportOPML": "Export OPML",
"LabelFeedURL": "URL zdroje",
- "LabelFetchingMetadata": "Fetching Metadata",
+ "LabelFetchingMetadata": "Získávání metadat",
"LabelFile": "Soubor",
"LabelFileBirthtime": "Čas vzniku souboru",
+ "LabelFileBornDate": "Vytvořeno {0}",
"LabelFileModified": "Soubor změněn",
+ "LabelFileModifiedDate": "Změněno {0}",
"LabelFilename": "Název souboru",
"LabelFilterByUser": "Filtrovat podle uživatele",
"LabelFindEpisodes": "Najít epizody",
"LabelFinished": "Dokončeno",
"LabelFolder": "Složka",
"LabelFolders": "Složky",
- "LabelFontBold": "Bold",
+ "LabelFontBold": "Tučně",
+ "LabelFontBoldness": "Výraznost písma",
"LabelFontFamily": "Rodina písem",
- "LabelFontItalic": "Italic",
+ "LabelFontItalic": "Kurzíva",
"LabelFontScale": "Měřítko písma",
- "LabelFontStrikethrough": "Strikethrough",
+ "LabelFontStrikethrough": "Přeškrtnutí",
"LabelFormat": "Formát",
"LabelGenre": "Žánr",
"LabelGenres": "Žánry",
"LabelHardDeleteFile": "Trvale smazat soubor",
"LabelHasEbook": "Obsahuje elektronickou knihu",
"LabelHasSupplementaryEbook": "Obsahuje doplňkovou elektronickou knihu",
- "LabelHighestPriority": "Highest priority",
+ "LabelHideSubtitles": "Skrýt titulky",
+ "LabelHighestPriority": "Nejvyšší priorita",
"LabelHost": "Hostitel",
"LabelHour": "Hodina",
+ "LabelHours": "Hodiny",
"LabelIcon": "Ikona",
"LabelImageURLFromTheWeb": "URL obrázku z webu",
+ "LabelInProgress": "Probíhá",
"LabelIncludeInTracklist": "Zahrnout do seznamu stop",
"LabelIncomplete": "Neúplné",
- "LabelInProgress": "Probíhá",
"LabelInterval": "Interval",
"LabelIntervalCustomDailyWeekly": "Vlastní denně/týdně",
"LabelIntervalEvery12Hours": "Každých 12 hodin",
@@ -333,8 +370,11 @@
"LabelIntervalEveryHour": "Každou hodinu",
"LabelInvert": "Invertovat",
"LabelItem": "Položka",
+ "LabelJumpBackwardAmount": "Přeskočit zpět o",
+ "LabelJumpForwardAmount": "Přeskočit dopředu o",
"LabelLanguage": "Jazyk",
"LabelLanguageDefaultServer": "Výchozí jazyk serveru",
+ "LabelLanguages": "Jazyky",
"LabelLastBookAdded": "Poslední kniha přidána",
"LabelLastBookUpdated": "Poslední kniha aktualizována",
"LabelLastSeen": "Naposledy viděno",
@@ -355,54 +395,57 @@
"LabelLogLevelInfo": "Informace",
"LabelLogLevelWarn": "Varovat",
"LabelLookForNewEpisodesAfterDate": "Hledat nové epizody po tomto datu",
- "LabelLowestPriority": "Lowest Priority",
- "LabelMatchExistingUsersBy": "Match existing users by",
- "LabelMatchExistingUsersByDescription": "Used for connecting existing users. Once connected, users will be matched by a unique id from your SSO provider",
+ "LabelLowestPriority": "Nejnižší priorita",
+ "LabelMatchExistingUsersBy": "Přiřadit stávající uživatele podle",
+ "LabelMatchExistingUsersByDescription": "Slouží k propojení stávajících uživatelů. Po propojení budou uživatelé přiřazeni k jedinečnému ID od poskytovatele SSO.",
"LabelMediaPlayer": "Přehrávač médií",
"LabelMediaType": "Typ média",
- "LabelMetadataOrderOfPrecedenceDescription": "Higher priority metadata sources will override lower priority metadata sources",
- "LabelMetadataProvider": "Poskytovatel metadat",
"LabelMetaTag": "Metaznačka",
"LabelMetaTags": "Metaznačky",
+ "LabelMetadataOrderOfPrecedenceDescription": "Zdroje metadat s vyšší prioritou budou mít přednost před zdroji metadat s nižší prioritou.",
+ "LabelMetadataProvider": "Poskytovatel metadat",
"LabelMinute": "Minuta",
+ "LabelMinutes": "Minuty",
"LabelMissing": "Chybějící",
- "LabelMissingEbook": "Has no ebook",
- "LabelMissingSupplementaryEbook": "Has no supplementary ebook",
- "LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs",
- "LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is audiobookshelf://oauth, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (*) as the sole entry permits any URI.",
+ "LabelMissingEbook": "Nemá elektronickou knihu",
+ "LabelMissingSupplementaryEbook": "Nemá žádnou doplňkovou elektronickou knihu",
+ "LabelMobileRedirectURIs": "Povolené mobilní přesměrování URI",
+ "LabelMobileRedirectURIsDescription": "Toto je seznam povolených přesměrování URI pro mobilní aplikace. Výchozí je audiobookshelf://oauth, který můžete odstranit nebo doplnit o další URI pro integraci aplikací třetích stran. Použití hvězdičky (*) jako jediné položky povoluje libovolný URI.",
"LabelMore": "Více",
"LabelMoreInfo": "Více informací",
"LabelName": "Jméno",
"LabelNarrator": "Interpret",
"LabelNarrators": "Interpreti",
"LabelNew": "Nový",
+ "LabelNewPassword": "Nové heslo",
"LabelNewestAuthors": "Nejnovější autoři",
"LabelNewestEpisodes": "Nejnovější epizody",
- "LabelNewPassword": "Nové heslo",
"LabelNextBackupDate": "Datum příští zálohy",
"LabelNextScheduledRun": "Další naplánované spuštění",
+ "LabelNoCustomMetadataProviders": "Žádní vlastní poskytovatelé metadat",
"LabelNoEpisodesSelected": "Nebyly vybrány žádné epizody",
- "LabelNotes": "Poznámky",
"LabelNotFinished": "Nedokončeno",
+ "LabelNotStarted": "Nezahájeno",
+ "LabelNotes": "Poznámky",
"LabelNotificationAppriseURL": "URL adresy Apprise",
"LabelNotificationAvailableVariables": "Dostupné proměnné",
"LabelNotificationBodyTemplate": "Šablona těla",
"LabelNotificationEvent": "Událost oznámení",
+ "LabelNotificationTitleTemplate": "Šablona názvu",
"LabelNotificationsMaxFailedAttempts": "Maximální počet neúspěšných pokusů",
"LabelNotificationsMaxFailedAttemptsHelp": "Oznámení jsou vypnuta, pokud se jim to nepodaří odeslat",
"LabelNotificationsMaxQueueSize": "Maximální velikost fronty pro oznamovací události",
"LabelNotificationsMaxQueueSizeHelp": "Události jsou omezeny na 1 za sekundu. Události budou ignorovány, pokud je fronta v maximální velikosti. Tím se zabrání spamování oznámení.",
- "LabelNotificationTitleTemplate": "Šablona názvu",
- "LabelNotStarted": "Nezahájeno",
"LabelNumberOfBooks": "Počet knih",
"LabelNumberOfEpisodes": "Počet epizod",
- "LabelOpenIDAdvancedPermsClaimDescription": "Name of the OpenID claim that contains advanced permissions for user actions within the application which will apply to non-admin roles (if configured). If the claim is missing from the response, access to ABS will be denied. If a single option is missing, it will be treated as false. Ensure the identity provider's claim matches the expected structure:",
- "LabelOpenIDClaims": "Leave the following options empty to disable advanced group and permissions assignment, automatically assigning 'User' group then.",
- "LabelOpenIDGroupClaimDescription": "Name of the OpenID claim that contains a list of the user's groups. Commonly referred to as groups. If configured, the application will automatically assign roles based on the user's group memberships, provided that these groups are named case-insensitively 'admin', 'user', or 'guest' in the claim. The claim should contain a list, and if a user belongs to multiple groups, the application will assign the role corresponding to the highest level of access. If no group matches, access will be denied.",
+ "LabelOpenIDAdvancedPermsClaimDescription": "Název požadavku OpenID, který obsahuje rozšířená oprávnění pro akce uživatele v rámci aplikace, která se budou vztahovat na role, které nejsou administrátory (pokud jsou nakonfigurovány). Pokud požadavek v odpovědi chybí, přístup do systému ABS bude zamítnut. Pokud chybí jediná možnost, bude považována za false. Ujistěte se, že deklarace poskytovatele identity odpovídá očekávané struktuře:",
+ "LabelOpenIDClaims": "Následující možnosti ponechte prázdné, abyste zakázali pokročilé přiřazování skupin a oprávnění a automatické přiřazení skupiny \"User\".",
+ "LabelOpenIDGroupClaimDescription": "Název požadavku OpenID, který obsahuje seznam uživatelských skupin. Běžně se označuje jako groups. Je-li nakonfigurováno, plikace automaticky přiřadí role na základě členství uživatele ve skupinách, pokud jsou tyto skupiny v požadavku pojmenovány case-insensitive 'admin', 'user' nebo 'guest'. Požadavek by měl obsahovat seznam, a pokud uživatel patří do více skupin, aplikace přiřadí roli odpovídající nejvyšší úrovni práva přístupu. Pokud žádná skupina není shodná, bude přístup odepřen.",
"LabelOpenRSSFeed": "Otevřít RSS kanál",
"LabelOverwrite": "Přepsat",
"LabelPassword": "Heslo",
"LabelPath": "Cesta",
+ "LabelPermanent": "Trvalé",
"LabelPermissionsAccessAllLibraries": "Má přístup ke všem knihovnám",
"LabelPermissionsAccessAllTags": "Má přístup ke všem značkám",
"LabelPermissionsAccessExplicitContent": "Má přístup k explicitnímu obsahu",
@@ -410,45 +453,51 @@
"LabelPermissionsDownload": "Může stahovat",
"LabelPermissionsUpdate": "Může aktualizovat",
"LabelPermissionsUpload": "Může nahrávat",
- "LabelPersonalYearReview": "Your Year in Review ({0})",
+ "LabelPersonalYearReview": "Váš přehled roku ({0})",
"LabelPhotoPathURL": "Cesta k fotografii/URL",
- "LabelPlaylists": "Seznamy skladeb",
"LabelPlayMethod": "Metoda přehrávání",
+ "LabelPlayerChapterNumberMarker": "{0} z {1}",
+ "LabelPlaylists": "Seznamy skladeb",
"LabelPodcast": "Podcast",
- "LabelPodcasts": "Podcasty",
"LabelPodcastSearchRegion": "Oblast vyhledávání podcastu",
"LabelPodcastType": "Typ podcastu",
+ "LabelPodcasts": "Podcasty",
"LabelPort": "Port",
"LabelPrefixesToIgnore": "Předpony, které se mají ignorovat (nerozlišují se malá a velká písmena)",
"LabelPreventIndexing": "Zabránit indexování vašeho kanálu v adresářích podcastů iTunes a Google",
"LabelPrimaryEbook": "Hlavní e-kniha",
"LabelProgress": "Průběh",
"LabelProvider": "Poskytovatel",
+ "LabelProviderAuthorizationValue": "Hodnota autorizačního headeru",
"LabelPubDate": "Datum vydání",
- "LabelPublisher": "Vydavatel",
"LabelPublishYear": "Rok vydání",
- "LabelRead": "Číst",
- "LabelReadAgain": "Číst znovu",
- "LabelReadEbookWithoutProgress": "Číst e-knihu bez zachování průběhu",
- "LabelRecentlyAdded": "Nedávno přidané",
- "LabelRecentSeries": "Nedávné série",
- "LabelRecommended": "Doporučeno",
- "LabelRedo": "Redo",
- "LabelRegion": "Region",
- "LabelReleaseDate": "Datum vydání",
- "LabelRemoveCover": "Odstranit obálku",
- "LabelRowsPerPage": "Rows per page",
+ "LabelPublishedDate": "Vydáno {0}",
+ "LabelPublisher": "Vydavatel",
+ "LabelPublishers": "Vydavatelé",
"LabelRSSFeedCustomOwnerEmail": "Vlastní e-mail vlastníka",
"LabelRSSFeedCustomOwnerName": "Vlastní jméno vlastníka",
"LabelRSSFeedOpen": "Otevření RSS kanálu",
"LabelRSSFeedPreventIndexing": "Zabránit indexování",
"LabelRSSFeedSlug": "RSS kanál Slug",
"LabelRSSFeedURL": "URL RSS kanálu",
+ "LabelRandomly": "Náhodně",
+ "LabelReAddSeriesToContinueListening": "Znovu přidat sérii k pokračování poslechu",
+ "LabelRead": "Číst",
+ "LabelReadAgain": "Číst znovu",
+ "LabelReadEbookWithoutProgress": "Číst e-knihu bez zachování průběhu",
+ "LabelRecentSeries": "Nedávné série",
+ "LabelRecentlyAdded": "Nedávno přidané",
+ "LabelRecommended": "Doporučeno",
+ "LabelRedo": "Přepracovat",
+ "LabelRegion": "Region",
+ "LabelReleaseDate": "Datum vydání",
+ "LabelRemoveCover": "Odstranit obálku",
+ "LabelRowsPerPage": "Řádky na stránku",
"LabelSearchTerm": "Vyhledat termín",
"LabelSearchTitle": "Vyhledat název",
"LabelSearchTitleOrASIN": "Vyhledat název nebo ASIN",
"LabelSeason": "Sezóna",
- "LabelSelectAll": "Select all",
+ "LabelSelectAll": "Vybrat vše",
"LabelSelectAllEpisodes": "Vybrat všechny epizody",
"LabelSelectEpisodesShowing": "Vyberte {0} epizody, které se zobrazují",
"LabelSelectUsers": "Vybrat uživatele",
@@ -457,7 +506,7 @@
"LabelSeries": "Série",
"LabelSeriesName": "Název série",
"LabelSeriesProgress": "Průběh série",
- "LabelServerYearReview": "Server Year in Review ({0})",
+ "LabelServerYearReview": "Přehled roku na serveru ({0})",
"LabelSetEbookAsPrimary": "Nastavit jako primární",
"LabelSetEbookAsSupplementary": "Nastavit jako doplňkové",
"LabelSettingsAudiobooksOnly": "Pouze audioknihy",
@@ -471,8 +520,8 @@
"LabelSettingsEnableWatcher": "Povolit sledování",
"LabelSettingsEnableWatcherForLibrary": "Povolit sledování složky pro knihovnu",
"LabelSettingsEnableWatcherHelp": "Povoluje automatické přidávání/aktualizaci položek, když jsou zjištěny změny souborů. *Vyžaduje restart serveru",
- "LabelSettingsEpubsAllowScriptedContent": "Allow scripted content in epubs",
- "LabelSettingsEpubsAllowScriptedContentHelp": "Allow epub files to execute scripts. It is recommended to keep this setting disabled unless you trust the source of the epub files.",
+ "LabelSettingsEpubsAllowScriptedContent": "Povolení skriptovaného obsahu v epubu",
+ "LabelSettingsEpubsAllowScriptedContentHelp": "Povolení spouštění skriptů v souborech epub. Doporučujeme toto nastavení vypnout, pokud nedůvěřujete zdroji souborů epub.",
"LabelSettingsExperimentalFeatures": "Experimentální funkce",
"LabelSettingsExperimentalFeaturesHelp": "Funkce ve vývoji, které by mohly využít vaši zpětnou vazbu a pomoc s testováním. Kliknutím otevřete diskuzi na githubu.",
"LabelSettingsFindCovers": "Najít obálky",
@@ -481,10 +530,10 @@
"LabelSettingsHideSingleBookSeriesHelp": "Série, které mají jedinou knihu, budou skryty na stránce série a na domovské stránce.",
"LabelSettingsHomePageBookshelfView": "Domovská stránka používá zobrazení police s knihami",
"LabelSettingsLibraryBookshelfView": "Knihovna používá zobrazení police s knihami",
- "LabelSettingsOnlyShowLaterBooksInContinueSeries": "Skip earlier books in Continue Series",
- "LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "The Continue Series home page shelf shows the first book not started in series that have at least one book finished and no books in progress. Enabling this setting will continue series from the furthest completed book instead of the first book not started.",
+ "LabelSettingsOnlyShowLaterBooksInContinueSeries": "Přeskočit předchozí knihy v pokračování série",
+ "LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "Polička Pokračovat v sérii na domovské stránce zobrazuje první nezačatou knihu v sériích, které mají alespoň jednu knihu dokončenou a žádnou rozečtenou. Povolením tohoto nastavení budou série pokračovat od poslední dokončené knihy namísto první nezačaté knihy.",
"LabelSettingsParseSubtitles": "Analzyovat podtitul",
- "LabelSettingsParseSubtitlesHelp": "Rozparsovat podtitul z názvů složek audioknih. Podtiul musí být oddělen znakem \" - \" tj. \"Název knihy - Zde Podtitul\" má podtitul \"Zde podtitul\"",
+ "LabelSettingsParseSubtitlesHelp": "Rozparsovat podtitul z názvů složek audioknih. Podtiul musí být oddělen znakem \" - \" tj. \"Název knihy - Zde Podtitul\" má podtitul \"Zde podtitul\"",
"LabelSettingsPreferMatchedMetadata": "Preferovat spárovaná metadata",
"LabelSettingsPreferMatchedMetadataHelp": "Spárovaná data budou mít při použití funkce Rychlé párování přednost před údaji o položce. Ve výchozím nastavení funkce Rychlé párování pouze doplní chybějící údaje.",
"LabelSettingsSkipMatchingBooksWithASIN": "Přeskočit párování knih, které již mají ASIN",
@@ -498,15 +547,17 @@
"LabelSettingsStoreMetadataWithItem": "Uložit metadata s položkou",
"LabelSettingsStoreMetadataWithItemHelp": "Ve výchozím nastavení jsou soubory metadat uloženy v adresáři /metadata/items, povolením tohoto nastavení budou soubory metadat uloženy ve složkách položek knihovny",
"LabelSettingsTimeFormat": "Formát času",
+ "LabelShare": "Sdílet",
+ "LabelShareURL": "Sdílet URL",
"LabelShowAll": "Zobrazit vše",
- "LabelShowSeconds": "Show seconds",
+ "LabelShowSeconds": "Zobrazit sekundy",
+ "LabelShowSubtitles": "Zobrazit titulky",
"LabelSize": "Velikost",
"LabelSleepTimer": "Časovač vypnutí",
- "LabelSlug": "Slug",
"LabelStart": "Spustit",
+ "LabelStartTime": "Čas Spuštění",
"LabelStarted": "Spuštěno",
"LabelStartedAt": "Spuštěno v",
- "LabelStartTime": "Čas Spuštění",
"LabelStatsAudioTracks": "Zvukové stopy",
"LabelStatsAuthors": "Autoři",
"LabelStatsBestDay": "Nejlepší den",
@@ -529,14 +580,18 @@
"LabelTagsAccessibleToUser": "Značky přístupné uživateli",
"LabelTagsNotAccessibleToUser": "Značky nepřístupné uživateli",
"LabelTasks": "Spuštěné Úlohy",
- "LabelTextEditorBulletedList": "Bulleted list",
- "LabelTextEditorLink": "Link",
- "LabelTextEditorNumberedList": "Numbered list",
- "LabelTextEditorUnlink": "Unlink",
+ "LabelTextEditorBulletedList": "Seznam s odrážkami",
+ "LabelTextEditorLink": "Odkaz",
+ "LabelTextEditorNumberedList": "Seznam s čísly",
+ "LabelTextEditorUnlink": "Zrušit odkaz",
"LabelTheme": "Téma",
"LabelThemeDark": "Tmavé",
"LabelThemeLight": "Světlé",
"LabelTimeBase": "Časová základna",
+ "LabelTimeDurationXHours": "{0} hodin",
+ "LabelTimeDurationXMinutes": "{0} minut",
+ "LabelTimeDurationXSeconds": "{0} sekund",
+ "LabelTimeInMinutes": "Čas v minutách",
"LabelTimeListened": "Čas poslechu",
"LabelTimeListenedToday": "Čas poslechu dnes",
"LabelTimeRemaining": "{0} zbývá",
@@ -558,16 +613,17 @@
"LabelTracksSingleTrack": "Jedna stopa",
"LabelType": "Typ",
"LabelUnabridged": "Nezkráceno",
- "LabelUndo": "Undo",
+ "LabelUndo": "Zpět",
"LabelUnknown": "Neznámý",
+ "LabelUnknownPublishDate": "Neznámé datum vydání",
"LabelUpdateCover": "Aktualizovat obálku",
"LabelUpdateCoverHelp": "Povolit přepsání existujících obálek pro vybrané knihy, pokud je nalezena shoda",
- "LabelUpdatedAt": "Aktualizováno v",
"LabelUpdateDetails": "Aktualizovat podrobnosti",
"LabelUpdateDetailsHelp": "Povolit přepsání existujících údajů o vybraných knihách, když je nalezena shoda",
+ "LabelUpdatedAt": "Aktualizováno v",
"LabelUploaderDragAndDrop": "Přetáhnout soubory nebo složky",
"LabelUploaderDropFiles": "Odstranit soubory",
- "LabelUploaderItemFetchMetadataHelp": "Automatically fetch title, author, and series",
+ "LabelUploaderItemFetchMetadataHelp": "Automaticky načíst název, autora a sérii",
"LabelUseChapterTrack": "Použít stopu kapitoly",
"LabelUseFullTrack": "Použít celou stopu",
"LabelUser": "Uživatel",
@@ -576,11 +632,14 @@
"LabelVersion": "Verze",
"LabelViewBookmarks": "Zobrazit záložky",
"LabelViewChapters": "Zobrazit kapitoly",
+ "LabelViewPlayerSettings": "Zobrazit nastavení přehrávače",
"LabelViewQueue": "Zobrazit frontu přehrávače",
"LabelVolume": "Hlasitost",
"LabelWeekdaysToRun": "Dny v týdnu ke spuštění",
- "LabelYearReviewHide": "Hide Year in Review",
- "LabelYearReviewShow": "See Year in Review",
+ "LabelXBooks": "{0} knih",
+ "LabelXItems": "{0} položky",
+ "LabelYearReviewHide": "Skrýt rok v přehledu",
+ "LabelYearReviewShow": "Zobrazit rok v přehledu",
"LabelYourAudiobookDuration": "Doba trvání vaší audioknihy",
"LabelYourBookmarks": "Vaše záložky",
"LabelYourPlaylists": "Vaše seznamy přehrávání",
@@ -588,10 +647,14 @@
"MessageAddToPlayerQueue": "Přidat do fronty přehrávače",
"MessageAppriseDescription": "Abyste mohli používat tuto funkci, musíte mít spuštěnou instanci Apprise API nebo API, které bude zpracovávat stejné požadavky. Adresa URL API Apprise by měla být úplná URL cesta pro odeslání oznámení, např. pokud je vaše instance API obsluhována na adrese http://192.168.1.1:8337 pak byste měli zadat http://192.168.1.1:8337/notify.",
"MessageBackupsDescription": "Zálohy zahrnují uživatele, průběh uživatele, podrobnosti o položkách knihovny, nastavení serveru a obrázky uložené v /metadata/items a /metadata/authors. Zálohy ne zahrnují všechny soubory uložené ve složkách knihovny.",
+ "MessageBackupsLocationEditNote": "Poznámka: Změna umístění záloh nepřesune ani nezmění existující zálohy",
+ "MessageBackupsLocationNoEditNote": "Poznámka: Umístění záloh je nastavené z proměnných prostředí a nelze zde změnit.",
+ "MessageBackupsLocationPathEmpty": "Umístění záloh nemůže být prázdné",
"MessageBatchQuickMatchDescription": "Rychlá párování se pokusí přidat chybějící obálky a metadata pro vybrané položky. Povolením níže uvedených možností umožníte funkci Rychlé párování přepsat stávající obálky a/nebo metadata.",
"MessageBookshelfNoCollections": "Ještě jste nevytvořili žádnou sbírku",
- "MessageBookshelfNoResultsForFilter": "Filtr \"{0}: {1}\"",
"MessageBookshelfNoRSSFeeds": "Nejsou otevřeny žádné RSS kanály",
+ "MessageBookshelfNoResultsForFilter": "Filtr \"{0}: {1}\"",
+ "MessageBookshelfNoResultsForQuery": "Žádné výsledky pro dotaz",
"MessageBookshelfNoSeries": "Nemáte žádnou sérii",
"MessageChapterEndIsAfter": "Konec kapitoly přesahuje konec audioknihy",
"MessageChapterErrorFirstNotZero": "První kapitola musí začínat na 0",
@@ -601,24 +664,31 @@
"MessageCheckingCron": "Kontrola cronu...",
"MessageConfirmCloseFeed": "Opravdu chcete zavřít tento kanál?",
"MessageConfirmDeleteBackup": "Opravdu chcete smazat zálohu pro {0}?",
+ "MessageConfirmDeleteDevice": "Opravdu chcete vymazat zařízení e-reader \"{0}\"?",
"MessageConfirmDeleteFile": "Tento krok smaže soubor ze souborového systému. Jsi si jisti?",
"MessageConfirmDeleteLibrary": "Opravdu chcete trvale smazat knihovnu \"{0}\"?",
"MessageConfirmDeleteLibraryItem": "Tento krok odstraní položku knihovny z databáze a vašeho souborového systému. Jste si jisti?",
"MessageConfirmDeleteLibraryItems": "Tímto smažete {0} položkek knihovny z databáze a vašeho souborového systému. Jsi si jisti?",
+ "MessageConfirmDeleteMetadataProvider": "Opravdu chcete vymazat vlastního poskytovatele metadat \"{0}\"?",
+ "MessageConfirmDeleteNotification": "Opravdu chcete vymazat tuto notifikaci?",
"MessageConfirmDeleteSession": "Opravdu chcete smazat tuto relaci?",
"MessageConfirmForceReScan": "Opravdu chcete vynutit opětovné prohledání?",
"MessageConfirmMarkAllEpisodesFinished": "Opravdu chcete označit všechny epizody jako dokončené?",
"MessageConfirmMarkAllEpisodesNotFinished": "Opravdu chcete označit všechny epizody jako nedokončené?",
+ "MessageConfirmMarkItemFinished": "Opravdu chcete označit \"{0}\" jako dokončené?",
+ "MessageConfirmMarkItemNotFinished": "Opravdu chcete označit \"{0}\" jako nedokončené?",
"MessageConfirmMarkSeriesFinished": "Opravdu chcete označit všechny knihy z této série jako dokončené?",
"MessageConfirmMarkSeriesNotFinished": "Opravdu chcete označit všechny knihy z této série jako nedokončené?",
- "MessageConfirmPurgeCache": "Purge cache will delete the entire directory at /metadata/cache.
Are you sure you want to remove the cache directory?",
+ "MessageConfirmPurgeCache": "Vyčistit mezipaměť odstraní celý adresář na adrese /metadata/cache.
Určitě chcete odstranit adresář mezipaměti?",
+ "MessageConfirmPurgeItemsCache": "Vyčištění mezipaměti položek odstraní celý adresář /metadata/cache/items. Jste si jistí?",
"MessageConfirmQuickEmbed": "Varování! Rychlé vložení nezálohuje vaše zvukové soubory. Ujistěte se, že máte zálohu zvukových souborů.
Chcete pokračovat?",
+ "MessageConfirmReScanLibraryItems": "Opravdu chcete znovu prohledat {0} položky?",
"MessageConfirmRemoveAllChapters": "Opravdu chcete odstranit všechny kapitoly?",
"MessageConfirmRemoveAuthor": "Opravdu chcete odstranit autora \"{0}\"?",
"MessageConfirmRemoveCollection": "Opravdu chcete odstranit kolekci \"{0}\"?",
"MessageConfirmRemoveEpisode": "Opravdu chcete odstranit epizodu \"{0}\"?",
"MessageConfirmRemoveEpisodes": "Opravdu chcete odstranit {0} epizody?",
- "MessageConfirmRemoveListeningSessions": "Are you sure you want to remove {0} listening sessions?",
+ "MessageConfirmRemoveListeningSessions": "Opravdu chcete odebrat {0} poslechových relací?",
"MessageConfirmRemoveNarrator": "Opravdu chcete odebrat předčítání \"{0}\"?",
"MessageConfirmRemovePlaylist": "Opravdu chcete odstranit svůj playlist \"{0}\"?",
"MessageConfirmRenameGenre": "Opravdu chcete přejmenovat žánr \"{0}\" na \"{1}\" pro všechny položky?",
@@ -627,15 +697,17 @@
"MessageConfirmRenameTag": "Opravdu chcete přejmenovat tag \"{0}\" na \"{1}\" pro všechny položky?",
"MessageConfirmRenameTagMergeNote": "Poznámka: Tato značka již existuje, takže budou sloučeny.",
"MessageConfirmRenameTagWarning": "Varování! Podobná značka s jinými velkými a malými písmeny již existuje \"{0}\".",
- "MessageConfirmReScanLibraryItems": "Opravdu chcete znovu prohledat {0} položky?",
+ "MessageConfirmResetProgress": "Opravdu chcete zahodit svůj pokrok?",
"MessageConfirmSendEbookToDevice": "Opravdu chcete odeslat e-knihu {0} {1}\" do zařízení \"{2}\"?",
+ "MessageConfirmUnlinkOpenId": "Opravdu chcete odpojit tohoto uživatele z OpenID?",
"MessageDownloadingEpisode": "Stahuji epizodu",
"MessageDragFilesIntoTrackOrder": "Přetáhněte soubory do správného pořadí stop",
+ "MessageEmbedFailed": "Vložení selhalo!",
"MessageEmbedFinished": "Vložení dokončeno!",
- "MessageEpisodesQueuedForDownload": "{0} epizody zařazené do fronty ke stažení",
- "MessageEreaderDevices": "To ensure delivery of ebooks, you may need to add the above email address as a valid sender for each device listed below.",
+ "MessageEpisodesQueuedForDownload": "{0} Epizody zařazené do fronty ke stažení",
+ "MessageEreaderDevices": "Aby bylo zajištěno doručení elektronických knih, může být nutné přidat výše uvedenou e-mailovou adresu jako platného odesílatele pro každé zařízení uvedené níže.",
"MessageFeedURLWillBe": "URL zdroje bude {0}",
- "MessageFetching": "Stahování...",
+ "MessageFetching": "Načítání...",
"MessageForceReScanDescription": "znovu prohledá všechny soubory jako při novém skenování. ID3 tagy zvukových souborů OPF soubory a textové soubory budou skenovány jako nové.",
"MessageImportantNotice": "Důležité upozornění!",
"MessageInsertChapterBelow": "Vložit kapitolu níže",
@@ -645,7 +717,7 @@
"MessageListeningSessionsInTheLastYear": "{0} poslechových relací za poslední rok",
"MessageLoading": "Načítá se...",
"MessageLoadingFolders": "Načítám složky...",
- "MessageLogsDescription": "Logs are stored in /metadata/logs as JSON files. Crash logs are stored in /metadata/logs/crash_logs.txt.",
+ "MessageLogsDescription": "Protokoly se ukládají do souborů JSON v /metadata/logs. Protokoly o pádech jsou uloženy v /metadata/logs/crash_logs.txt.",
"MessageM4BFailed": "M4B se nezdařil!",
"MessageM4BFinished": "M4B dokončen!",
"MessageMapChapterTitles": "Mapování názvů kapitol ke stávajícím kapitolám audioknihy bez úpravy časových razítek",
@@ -662,6 +734,7 @@
"MessageNoCollections": "Žádné kolekce",
"MessageNoCoversFound": "Nebyly nalezeny žádné obálky",
"MessageNoDescription": "Bez popisu",
+ "MessageNoDevices": "Žádná zařízení",
"MessageNoDownloadsInProgress": "Momentálně neprobíhá žádné stahování",
"MessageNoDownloadsQueued": "Žádné stahování ve frontě",
"MessageNoEpisodeMatchesFound": "Nebyly nalezeny žádné odpovídající epizody",
@@ -681,14 +754,15 @@
"MessageNoSeries": "Žádné série",
"MessageNoTags": "Žádné značky",
"MessageNoTasksRunning": "Nejsou spuštěny žádné úlohy",
- "MessageNotYetImplemented": "Ještě není implementováno",
- "MessageNoUpdateNecessary": "Není nutná žádná aktualizace",
"MessageNoUpdatesWereNecessary": "Nebyly nutné žádné aktualizace",
"MessageNoUserPlaylists": "Nemáte žádné seznamy skladeb",
+ "MessageNotYetImplemented": "Ještě není implementováno",
+ "MessageOpmlPreviewNote": "Poznámka: Toto je náhled načteného OMPL souboru. Aktuální název podcastu bude načten z RSS feedu.",
"MessageOr": "nebo",
"MessagePauseChapter": "Pozastavit přehrávání kapitoly",
"MessagePlayChapter": "Poslechnout si začátek kapitoly",
"MessagePlaylistCreateFromCollection": "Vytvořit seznam skladeb z kolekce",
+ "MessagePleaseWait": "Čekejte prosím...",
"MessagePodcastHasNoRSSFeedForMatching": "Podcast nemá žádnou adresu URL kanálu RSS, kterou by mohl použít pro porovnávání",
"MessageQuickMatchDescription": "Vyplňte prázdné detaily položky a obálku prvním výsledkem shody z '{0}'. Nepřepisuje podrobnosti, pokud není povoleno nastavení serveru \"Preferovat párování metadata\".",
"MessageRemoveChapter": "Odstranit kapitolu",
@@ -697,24 +771,56 @@
"MessageRemoveUserWarning": "Opravdu chcete trvale smazat uživatele \"{0}\"?",
"MessageReportBugsAndContribute": "Hlásit chyby, žádat o funkce a přispívat",
"MessageResetChaptersConfirm": "Opravdu chcete resetovat kapitoly a vrátit zpět provedené změny?",
- "MessageRestoreBackupConfirm": "Opravdu chcete obnovit zálohu vytvořenou dne?",
+ "MessageRestoreBackupConfirm": "Opravdu chcete obnovit zálohu vytvořenou dne",
"MessageRestoreBackupWarning": "Obnovení zálohy přepíše celou databázi umístěnou v /config a obálku obrázků v /metadata/items & /metadata/authors.
Backups nezmění žádné soubory ve složkách knihovny. Pokud jste povolili nastavení serveru pro ukládání obrázků obalu a metadat do složek knihovny, nebudou zálohovány ani přepsány.
Všichni klienti používající váš server budou automaticky obnoveni.",
"MessageSearchResultsFor": "Výsledky hledání pro",
- "MessageSelected": "{0} selected",
+ "MessageSelected": "{0} vybráno",
"MessageServerCouldNotBeReached": "Server je nedostupný",
"MessageSetChaptersFromTracksDescription": "Nastavit kapitoly jako kapitolu a název kapitoly jako název zvukového souboru",
+ "MessageShareExpirationWillBe": "Expiruje {0}",
+ "MessageShareExpiresIn": "Expiruje za {0}",
+ "MessageShareURLWillBe": "Sdílené URL bude {0}",
"MessageStartPlaybackAtTime": "Spustit přehrávání pro \"{0}\" v {1}?",
+ "MessageTaskAudioFileNotWritable": "Nelze zapisovat do audio souboru \"{0}\"",
+ "MessageTaskCanceledByUser": "Task zrušen uživatelem",
+ "MessageTaskDownloadingEpisodeDescription": "Stahování epizody \"{0}\"",
+ "MessageTaskEmbeddingMetadata": "Vkládání metadat",
+ "MessageTaskEmbeddingMetadataDescription": "Vkládání metadat do audioknihy \"{0}\"",
+ "MessageTaskEncodingM4b": "Kódování M4B",
+ "MessageTaskEncodingM4bDescription": "Kódování audioknihy \"{0}\" do jednoho m4b souboru",
+ "MessageTaskFailed": "Selhalo",
+ "MessageTaskFailedToBackupAudioFile": "Zálohování audio souboru \"{0}\" se selhalo",
+ "MessageTaskFailedToCreateCacheDirectory": "Vytvoření cache adresáře selhalo",
+ "MessageTaskFailedToEmbedMetadataInFile": "Vkládání metadat do souboru \"{0}\" selhalo",
+ "MessageTaskFailedToMergeAudioFiles": "Spojení audio souborů selhalo",
+ "MessageTaskFailedToMoveM4bFile": "Přesunutí m4b souboru selhalo",
+ "MessageTaskFailedToWriteMetadataFile": "Zápis souboru metadat selhal",
+ "MessageTaskNoFilesToScan": "Žádné soubory ke skenování",
+ "MessageTaskOpmlImport": "Import OPML",
+ "MessageTaskOpmlImportDescription": "Vytváření podcastů z {0} RSS feedů",
+ "MessageTaskOpmlImportFeedDescription": "Importování RSS feedu \"{0}\"",
+ "MessageTaskOpmlImportFeedPodcastDescription": "Vytváření podcastu \"{0}\"",
+ "MessageTaskOpmlImportFeedPodcastExists": "Podcast se stejnou cestou již existuje",
+ "MessageTaskOpmlImportFeedPodcastFailed": "Vytváření podcastu selhalo",
+ "MessageTaskOpmlImportFinished": "Přidáno {0} podcastů",
+ "MessageTaskScanItemsAdded": "{0} přidáno",
+ "MessageTaskScanItemsMissing": "{0} chybí",
+ "MessageTaskScanItemsUpdated": "{0} aktualizováno",
+ "MessageTaskScanNoChangesNeeded": "Žádné změny nejsou nutné",
+ "MessageTaskScanningFileChanges": "Skenování změn souborů v \"{0}\"",
+ "MessageTaskScanningLibrary": "Skenování \"{0}\" knihovny",
+ "MessageTaskTargetDirectoryNotWritable": "Do cílové složky nelze zapisovat",
"MessageThinking": "Přemýšlení...",
- "MessageUploaderItemFailed": "Nahrávání se nezdařilo",
- "MessageUploaderItemSuccess": "Nahráno bylo úspěšně!",
- "MessageUploading": "Odesílám...",
+ "MessageUploaderItemFailed": "Nahrávání selhalo",
+ "MessageUploaderItemSuccess": "Úspěšně nahráno!",
+ "MessageUploading": "Nahrávám...",
"MessageValidCronExpression": "Platný výraz cronu",
"MessageWatcherIsDisabledGlobally": "Hlídač je globálně zakázán v nastavení serveru",
"MessageXLibraryIsEmpty": "{0} knihovna je prázdná!",
- "MessageYourAudiobookDurationIsLonger": "Doba trvání audioknihy je delší než nalezená délka",
- "MessageYourAudiobookDurationIsShorter": "Délka audioknihy je kratší, než byla nalezena.",
+ "MessageYourAudiobookDurationIsLonger": "Délka audioknihy je delší, než byla nalezena",
+ "MessageYourAudiobookDurationIsShorter": "Délka audioknihy je kratší, než byla nalezena",
"NoteChangeRootPassword": "Uživatel root je jediný uživatel, který může mít prázdné heslo",
- "NoteChapterEditorTimes": "Poznámka: Čas začátku první kapitoly musí zůstat v 0:00 a čas začátku poslední kapitoly nesmí překročit tuto dobu trvání audioknihy.",
+ "NoteChapterEditorTimes": "Poznámka: Čas začátku první kapitoly musí zůstat na 0:00 a čas začátku poslední kapitoly nesmí překročit dobu trvání audioknihy.",
"NoteFolderPicker": "Poznámka: složky, které jsou již namapovány, nebudou zobrazeny",
"NoteRSSFeedPodcastAppsHttps": "Upozornění: Většina aplikací pro podcasty bude vyžadovat, aby adresa URL kanálu RSS používala protokol HTTPS",
"NoteRSSFeedPodcastAppsPubDate": "Upozornění: 1 nebo více epizod nemá datum vydání. Některé podcastové aplikace to vyžadují.",
@@ -726,85 +832,109 @@
"PlaceholderNewPlaylist": "Nový název seznamu přehrávání",
"PlaceholderSearch": "Hledat..",
"PlaceholderSearchEpisode": "Hledat epizodu..",
- "ToastAccountUpdateFailed": "Aktualizace účtu se nezdařila",
+ "StatsAuthorsAdded": "autoři přidáni",
+ "StatsBooksAdded": "knihy přidány",
+ "StatsBooksAdditional": "Některé další zahrnují…",
+ "StatsBooksFinished": "dokončené knihy",
+ "StatsBooksFinishedThisYear": "Některé knihy dokončené tento rok…",
+ "StatsCollectionGrewTo": "Vaše kolekce knih se rozrostla na…",
+ "StatsSessions": "sezení",
+ "StatsSpentListening": "stráveno posloucháním",
+ "StatsTopAuthor": "TOP AUTOR",
+ "StatsTopAuthors": "TOP AUTOŘI",
+ "StatsTopGenre": "TOP ŽÁNR",
+ "StatsTopGenres": "TOP ŽÁNRY",
+ "StatsTopMonth": "TOP MĚSÍC",
+ "StatsTotalDuration": "S celkovou dobou…",
+ "StatsYearInReview": "ROK V PŘEHLEDU",
"ToastAccountUpdateSuccess": "Účet aktualizován",
- "ToastAuthorImageRemoveFailed": "Nepodařilo se odstranit obrázek",
+ "ToastAppriseUrlRequired": "Je nutné zadat Apprise URL",
"ToastAuthorImageRemoveSuccess": "Obrázek autora odstraněn",
- "ToastAuthorUpdateFailed": "Aktualizace autora se nezdařila",
+ "ToastAuthorNotFound": "Author \"{0}\" nenalezen",
+ "ToastAuthorRemoveSuccess": "Autor odstraněn",
+ "ToastAuthorSearchNotFound": "Autor nenalezen",
"ToastAuthorUpdateMerged": "Autor sloučen",
"ToastAuthorUpdateSuccess": "Autor aktualizován",
"ToastAuthorUpdateSuccessNoImageFound": "Autor aktualizován (nebyl nalezen žádný obrázek)",
+ "ToastBackupAppliedSuccess": "Záloha obnovena",
"ToastBackupCreateFailed": "Vytvoření zálohy se nezdařilo",
"ToastBackupCreateSuccess": "Záloha vytvořena",
"ToastBackupDeleteFailed": "Nepodařilo se smazat zálohu",
"ToastBackupDeleteSuccess": "Záloha smazána",
+ "ToastBackupInvalidMaxKeep": "Neplatný počet záloh k zachování",
+ "ToastBackupInvalidMaxSize": "Neplatná maximální velikost zálohy",
"ToastBackupRestoreFailed": "Nepodařilo se obnovit zálohu",
"ToastBackupUploadFailed": "Nepodařilo se nahrát zálohu",
"ToastBackupUploadSuccess": "Záloha nahrána",
+ "ToastBatchDeleteFailed": "Hromadné smazání selhalo",
+ "ToastBatchDeleteSuccess": "Hromadné smazání proběhlo úspěšně",
"ToastBatchUpdateFailed": "Dávková aktualizace se nezdařila",
"ToastBatchUpdateSuccess": "Dávková aktualizace proběhla úspěšně",
"ToastBookmarkCreateFailed": "Vytvoření záložky se nezdařilo",
"ToastBookmarkCreateSuccess": "Přidána záložka",
- "ToastBookmarkRemoveFailed": "Nepodařilo se odstranit záložku",
"ToastBookmarkRemoveSuccess": "Záložka odstraněna",
- "ToastBookmarkUpdateFailed": "Aktualizace záložky se nezdařila",
"ToastBookmarkUpdateSuccess": "Záložka aktualizována",
- "ToastCachePurgeFailed": "Failed to purge cache",
- "ToastCachePurgeSuccess": "Cache purged successfully",
+ "ToastCachePurgeFailed": "Nepodařilo se vyčistit mezipaměť",
+ "ToastCachePurgeSuccess": "Vyrovnávací paměť úspěšně vyčištěna",
"ToastChaptersHaveErrors": "Kapitoly obsahují chyby",
"ToastChaptersMustHaveTitles": "Kapitoly musí mít názvy",
- "ToastCollectionItemsRemoveFailed": "Nepodařilo se odstranit položky z kolekce",
+ "ToastChaptersRemoved": "Kapitoly odstraněny",
"ToastCollectionItemsRemoveSuccess": "Položky odstraněny z kolekce",
- "ToastCollectionRemoveFailed": "Nepodařilo se odstranit kolekci",
"ToastCollectionRemoveSuccess": "Kolekce odstraněna",
- "ToastCollectionUpdateFailed": "Aktualizace kolekce se nezdařila",
"ToastCollectionUpdateSuccess": "Kolekce aktualizována",
- "ToastDeleteFileFailed": "Failed to delete file",
- "ToastDeleteFileSuccess": "File deleted",
- "ToastFailedToLoadData": "Failed to load data",
- "ToastItemCoverUpdateFailed": "Aktualizace obálky se nezdařila",
+ "ToastCoverUpdateFailed": "Aktualizace obálky selhala",
+ "ToastDeleteFileFailed": "Nepodařilo se smazat soubor",
+ "ToastDeleteFileSuccess": "Soubor smazán",
+ "ToastDeviceAddFailed": "Přidání zařízení selhalo",
+ "ToastDeviceNameAlreadyExists": "Zařízení se stejným jménem již existuje",
+ "ToastDeviceTestEmailFailed": "Odeslání testovacího emailu selhalo",
+ "ToastDeviceTestEmailSuccess": "Testovací email byl odeslán",
+ "ToastEmailSettingsUpdateSuccess": "Nastavení emailu aktualizována",
+ "ToastEpisodeDownloadQueueClearFailed": "Vyčištění fronty selhalo",
+ "ToastErrorCannotShare": "Na tomto zařízení nelze nativně sdílet",
+ "ToastFailedToLoadData": "Nepodařilo se načíst data",
+ "ToastFailedToShare": "Sdílení selhalo",
+ "ToastFailedToUpdate": "Aktualizace selhala",
+ "ToastInvalidImageUrl": "Neplatná URL obrázku",
+ "ToastInvalidUrl": "Neplatná URL",
"ToastItemCoverUpdateSuccess": "Obálka předmětu byl aktualizována",
- "ToastItemDetailsUpdateFailed": "Nepodařilo se aktualizovat podrobnosti o položce",
+ "ToastItemDeletedFailed": "Smazání položky selhalo",
+ "ToastItemDeletedSuccess": "Položka smazána",
"ToastItemDetailsUpdateSuccess": "Podrobnosti o položce byly aktualizovány",
- "ToastItemDetailsUpdateUnneeded": "Podrobnosti o položce nejsou potřeba aktualizovat",
"ToastItemMarkedAsFinishedFailed": "Nepodařilo se označit jako dokončené",
"ToastItemMarkedAsFinishedSuccess": "Položka označena jako dokončená",
"ToastItemMarkedAsNotFinishedFailed": "Nepodařilo se označit jako nedokončené",
"ToastItemMarkedAsNotFinishedSuccess": "Položka označena jako nedokončená",
+ "ToastItemUpdateSuccess": "Položka aktualizována",
"ToastLibraryCreateFailed": "Vytvoření knihovny se nezdařilo",
"ToastLibraryCreateSuccess": "Knihovna \"{0}\" vytvořena",
"ToastLibraryDeleteFailed": "Nepodařilo se smazat knihovnu",
"ToastLibraryDeleteSuccess": "Knihovna smazána",
"ToastLibraryScanFailedToStart": "Nepodařilo se spustit kontrolu",
"ToastLibraryScanStarted": "Kontrola knihovny spuštěna",
- "ToastLibraryUpdateFailed": "Aktualizace knihovny se nezdařila",
"ToastLibraryUpdateSuccess": "Knihovna \"{0}\" aktualizována",
"ToastPlaylistCreateFailed": "Vytvoření seznamu přehrávání se nezdařilo",
"ToastPlaylistCreateSuccess": "Seznam přehrávání vytvořen",
- "ToastPlaylistRemoveFailed": "Nepodařilo se odstranit seznamu přehrávání",
"ToastPlaylistRemoveSuccess": "Seznam přehrávání odstraněn",
- "ToastPlaylistUpdateFailed": "Aktualizace seznamu přehrávání se nezdařila",
"ToastPlaylistUpdateSuccess": "Seznam přehrávání aktualizován",
"ToastPodcastCreateFailed": "Vytvoření podcastu se nezdařilo",
"ToastPodcastCreateSuccess": "Podcast byl úspěšně vytvořen",
- "ToastRemoveItemFromCollectionFailed": "Nepodařilo se odebrat položku z kolekce",
- "ToastRemoveItemFromCollectionSuccess": "Položka odstraněna z kolekce",
"ToastRSSFeedCloseFailed": "Nepodařilo se zavřít RSS kanál",
"ToastRSSFeedCloseSuccess": "RSS kanál uzavřen",
+ "ToastRemoveItemFromCollectionFailed": "Nepodařilo se odebrat položku z kolekce",
+ "ToastRemoveItemFromCollectionSuccess": "Položka odstraněna z kolekce",
"ToastSendEbookToDeviceFailed": "Odeslání e-knihy do zařízení se nezdařilo",
"ToastSendEbookToDeviceSuccess": "E-kniha odeslána do zařízení \"{0}\"",
"ToastSeriesUpdateFailed": "Aktualizace série se nezdařila",
"ToastSeriesUpdateSuccess": "Aktualizace série byla úspěšná",
- "ToastServerSettingsUpdateFailed": "Failed to update server settings",
- "ToastServerSettingsUpdateSuccess": "Server settings updated",
+ "ToastServerSettingsUpdateSuccess": "Nastavení serveru aktualizováno",
"ToastSessionDeleteFailed": "Nepodařilo se smazat relaci",
"ToastSessionDeleteSuccess": "Relace smazána",
"ToastSocketConnected": "Socket připojen",
"ToastSocketDisconnected": "Socket odpojen",
"ToastSocketFailedToConnect": "Socket se nepodařilo připojit",
- "ToastSortingPrefixesEmptyError": "Must have at least 1 sorting prefix",
- "ToastSortingPrefixesUpdateFailed": "Failed to update sorting prefixes",
- "ToastSortingPrefixesUpdateSuccess": "Sorting prefixes updated ({0} items)",
+ "ToastSortingPrefixesEmptyError": "Musí mít alespoň 1 třídicí předponu",
+ "ToastSortingPrefixesUpdateSuccess": "Aktualizovány předpony třídění ({0} položek)",
"ToastUserDeleteFailed": "Nepodařilo se smazat uživatele",
"ToastUserDeleteSuccess": "Uživatel smazán"
-}
\ No newline at end of file
+}
diff --git a/client/strings/da.json b/client/strings/da.json
index 96a0d04b2..b4b92bc86 100644
--- a/client/strings/da.json
+++ b/client/strings/da.json
@@ -1,14 +1,15 @@
{
"ButtonAdd": "Tilføj",
"ButtonAddChapters": "Tilføj kapitler",
- "ButtonAddDevice": "Add Device",
- "ButtonAddLibrary": "Add Library",
+ "ButtonAddDevice": "Tilføj enhed",
+ "ButtonAddLibrary": "Tilføj Bibliotek",
"ButtonAddPodcasts": "Tilføj podcasts",
- "ButtonAddUser": "Add User",
+ "ButtonAddUser": "Tilføj bruger",
"ButtonAddYourFirstLibrary": "Tilføj din første bibliotek",
"ButtonApply": "Anvend",
"ButtonApplyChapters": "Anvend kapitler",
"ButtonAuthors": "Forfattere",
+ "ButtonBack": "Tilbage",
"ButtonBrowseForFolder": "Gennemse mappe",
"ButtonCancel": "Annuller",
"ButtonCancelEncode": "Annuller kodning",
@@ -27,13 +28,12 @@
"ButtonEdit": "Rediger",
"ButtonEditChapters": "Rediger kapitler",
"ButtonEditPodcast": "Rediger podcast",
+ "ButtonEnable": "Aktiver",
"ButtonForceReScan": "Tvungen genindlæsning",
"ButtonFullPath": "Fuld sti",
"ButtonHide": "Skjul",
"ButtonHome": "Hjem",
"ButtonIssues": "Problemer",
- "ButtonJumpBackward": "Jump Backward",
- "ButtonJumpForward": "Jump Forward",
"ButtonLatest": "Seneste",
"ButtonLibrary": "Bibliotek",
"ButtonLogout": "Log ud",
@@ -43,8 +43,6 @@
"ButtonMatchAllAuthors": "Match alle forfattere",
"ButtonMatchBooks": "Match bøger",
"ButtonNevermind": "Glem det",
- "ButtonNext": "Next",
- "ButtonNextChapter": "Next Chapter",
"ButtonOk": "OK",
"ButtonOpenFeed": "Åbn feed",
"ButtonOpenManager": "Åbn manager",
@@ -52,61 +50,45 @@
"ButtonPlay": "Afspil",
"ButtonPlaying": "Afspiller",
"ButtonPlaylists": "Afspilningslister",
- "ButtonPrevious": "Previous",
- "ButtonPreviousChapter": "Previous Chapter",
"ButtonPurgeAllCache": "Ryd al cache",
"ButtonPurgeItemsCache": "Ryd elementcache",
- "ButtonPurgeMediaProgress": "Ryd Medieforløb",
"ButtonQueueAddItem": "Tilføj til kø",
"ButtonQueueRemoveItem": "Fjern fra kø",
"ButtonQuickMatch": "Hurtig Match",
+ "ButtonReScan": "Gen-scan",
"ButtonRead": "Læs",
- "ButtonReadLess": "Read less",
- "ButtonReadMore": "Read more",
- "ButtonRefresh": "Refresh",
"ButtonRemove": "Fjern",
"ButtonRemoveAll": "Fjern Alle",
"ButtonRemoveAllLibraryItems": "Fjern Alle Bibliotekselementer",
"ButtonRemoveFromContinueListening": "Fjern fra Fortsæt Lytning",
"ButtonRemoveFromContinueReading": "Fjern fra Fortsæt Læsning",
"ButtonRemoveSeriesFromContinueSeries": "Fjern Serie fra Fortsæt Serie",
- "ButtonReScan": "Gen-scan",
"ButtonReset": "Nulstil",
- "ButtonResetToDefault": "Reset to default",
"ButtonRestore": "Gendan",
"ButtonSave": "Gem",
"ButtonSaveAndClose": "Gem & Luk",
"ButtonSaveTracklist": "Gem Sporliste",
- "ButtonScan": "Scan",
"ButtonScanLibrary": "Scan Bibliotek",
"ButtonSearch": "Søg",
"ButtonSelectFolderPath": "Vælg Mappen Sti",
- "ButtonSeries": "Serie",
+ "ButtonSeries": "Serier",
"ButtonSetChaptersFromTracks": "Sæt kapitler fra spor",
- "ButtonShare": "Share",
"ButtonShiftTimes": "Skift Tider",
"ButtonShow": "Vis",
"ButtonStartM4BEncode": "Start M4B Kode",
"ButtonStartMetadataEmbed": "Start Metadata Indlejring",
"ButtonSubmit": "Send",
- "ButtonTest": "Test",
- "ButtonUpload": "Upload",
- "ButtonUploadBackup": "Upload Backup",
"ButtonUploadCover": "Upload Omslag",
"ButtonUploadOPMLFile": "Upload OPML Fil",
"ButtonUserDelete": "Slet bruger {0}",
"ButtonUserEdit": "Rediger bruger {0}",
"ButtonViewAll": "Vis Alle",
"ButtonYes": "Ja",
- "ErrorUploadFetchMetadataAPI": "Error fetching metadata",
- "ErrorUploadFetchMetadataNoResults": "Could not fetch metadata - try updating title and/or author",
- "ErrorUploadLacksTitle": "Must have a title",
"HeaderAccount": "Konto",
"HeaderAdvanced": "Avanceret",
"HeaderAppriseNotificationSettings": "Apprise Notifikationsindstillinger",
- "HeaderAudiobookTools": "Audiobog Filhåndteringsværktøjer",
"HeaderAudioTracks": "Lydspor",
- "HeaderAuthentication": "Authentication",
+ "HeaderAudiobookTools": "Audiobog Filhåndteringsværktøjer",
"HeaderBackups": "Sikkerhedskopier",
"HeaderChangePassword": "Skift Adgangskode",
"HeaderChapters": "Kapitler",
@@ -115,11 +97,9 @@
"HeaderCollectionItems": "Samlingselementer",
"HeaderCover": "Omslag",
"HeaderCurrentDownloads": "Nuværende Downloads",
- "HeaderCustomMetadataProviders": "Custom Metadata Providers",
"HeaderDetails": "Detaljer",
"HeaderDownloadQueue": "Download Kø",
"HeaderEbookFiles": "E-bogsfiler",
- "HeaderEmail": "Email",
"HeaderEmailSettings": "Email Indstillinger",
"HeaderEpisodes": "Episoder",
"HeaderEreaderDevices": "E-læser Enheder",
@@ -137,41 +117,33 @@
"HeaderListeningSessions": "Lyttesessioner",
"HeaderListeningStats": "Lyttestatistik",
"HeaderLogin": "Log ind",
- "HeaderLogs": "Logs",
"HeaderManageGenres": "Administrer Genrer",
"HeaderManageTags": "Administrer Tags",
"HeaderMapDetails": "Kort Detaljer",
- "HeaderMatch": "Match",
- "HeaderMetadataOrderOfPrecedence": "Metadata order of precedence",
"HeaderMetadataToEmbed": "Metadata til indlejring",
"HeaderNewAccount": "Ny Konto",
"HeaderNewLibrary": "Nyt Bibliotek",
"HeaderNotifications": "Meddelelser",
- "HeaderOpenIDConnectAuthentication": "OpenID Connect Authentication",
"HeaderOpenRSSFeed": "Åbn RSS Feed",
"HeaderOtherFiles": "Andre Filer",
- "HeaderPasswordAuthentication": "Password Authentication",
"HeaderPermissions": "Tilladelser",
"HeaderPlayerQueue": "Afspilningskø",
"HeaderPlaylist": "Afspilningsliste",
"HeaderPlaylistItems": "Afspilningsliste Elementer",
"HeaderPodcastsToAdd": "Podcasts til Tilføjelse",
"HeaderPreviewCover": "Forhåndsvis Omslag",
- "HeaderRemoveEpisode": "Fjern Episode",
- "HeaderRemoveEpisodes": "Fjern {0} Episoder",
"HeaderRSSFeedGeneral": "RSS Detaljer",
"HeaderRSSFeedIsOpen": "RSS Feed er Åben",
- "HeaderRSSFeeds": "RSS Feeds",
+ "HeaderRemoveEpisode": "Fjern Episode",
+ "HeaderRemoveEpisodes": "Fjern {0} Episoder",
"HeaderSavedMediaProgress": "Gemt Medieforløb",
"HeaderSchedule": "Planlæg",
"HeaderScheduleLibraryScans": "Planlæg Automatiske Biblioteksscanninger",
- "HeaderSession": "Session",
"HeaderSetBackupSchedule": "Indstil Sikkerhedskopieringsplan",
"HeaderSettings": "Indstillinger",
"HeaderSettingsDisplay": "Skærm",
"HeaderSettingsExperimental": "Eksperimentelle Funktioner",
"HeaderSettingsGeneral": "Generelt",
- "HeaderSettingsScanner": "Scanner",
"HeaderSleepTimer": "Søvntimer",
"HeaderStatsLargestItems": "Største Elementer",
"HeaderStatsLongestItems": "Længste Elementer (timer)",
@@ -186,28 +158,19 @@
"HeaderUpdateDetails": "Opdater Detaljer",
"HeaderUpdateLibrary": "Opdater Bibliotek",
"HeaderUsers": "Brugere",
- "HeaderYearReview": "Year {0} in Review",
"HeaderYourStats": "Dine Statistikker",
- "LabelAbridged": "Abridged",
- "LabelAbridgedChecked": "Abridged (checked)",
- "LabelAbridgedUnchecked": "Unabridged (unchecked)",
- "LabelAccessibleBy": "Accessible by",
"LabelAccountType": "Kontotype",
"LabelAccountTypeAdmin": "Administrator",
"LabelAccountTypeGuest": "Gæst",
"LabelAccountTypeUser": "Bruger",
"LabelActivity": "Aktivitet",
- "LabelAdded": "Tilføjet",
- "LabelAddedAt": "Tilføjet Kl.",
"LabelAddToCollection": "Tilføj til Samling",
"LabelAddToCollectionBatch": "Tilføj {0} Bøger til Samling",
"LabelAddToPlaylist": "Tilføj til Afspilningsliste",
"LabelAddToPlaylistBatch": "Tilføj {0} Elementer til Afspilningsliste",
- "LabelAdminUsersOnly": "Admin users only",
+ "LabelAddedAt": "Tilføjet Kl.",
"LabelAll": "Alle",
"LabelAllUsers": "Alle Brugere",
- "LabelAllUsersExcludingGuests": "All users excluding guests",
- "LabelAllUsersIncludingGuests": "All users including guests",
"LabelAlreadyInYourLibrary": "Allerede i dit bibliotek",
"LabelAppend": "Tilføj",
"LabelAuthor": "Forfatter",
@@ -215,12 +178,6 @@
"LabelAuthorLastFirst": "Forfatter (Efternavn, Fornavn)",
"LabelAuthors": "Forfattere",
"LabelAutoDownloadEpisodes": "Auto Download Episoder",
- "LabelAutoFetchMetadata": "Auto Fetch Metadata",
- "LabelAutoFetchMetadataHelp": "Fetches metadata for title, author, and series to streamline uploading. Additional metadata may have to be matched after upload.",
- "LabelAutoLaunch": "Auto Launch",
- "LabelAutoLaunchDescription": "Redirect to the auth provider automatically when navigating to the login page (manual override path /login?autoLaunch=0)",
- "LabelAutoRegister": "Auto Register",
- "LabelAutoRegisterDescription": "Automatically create new users after logging in",
"LabelBackToUser": "Tilbage til Bruger",
"LabelBackupLocation": "Backup Placering",
"LabelBackupsEnableAutomaticBackups": "Aktivér automatisk sikkerhedskopiering",
@@ -229,26 +186,21 @@
"LabelBackupsMaxBackupSizeHelp": "Som en beskyttelse mod fejlkonfiguration fejler sikkerhedskopier, hvis de overstiger den konfigurerede størrelse.",
"LabelBackupsNumberToKeep": "Antal sikkerhedskopier at beholde",
"LabelBackupsNumberToKeepHelp": "Kun 1 sikkerhedskopi fjernes ad gangen, så hvis du allerede har flere sikkerhedskopier end dette, skal du fjerne dem manuelt.",
- "LabelBitrate": "Bitrate",
"LabelBooks": "Bøger",
- "LabelButtonText": "Button Text",
- "LabelByAuthor": "by {0}",
"LabelChangePassword": "Ændre Adgangskode",
"LabelChannels": "Kanaler",
+ "LabelChapterTitle": "Kapitel Titel",
"LabelChapters": "Kapitler",
"LabelChaptersFound": "fundne kapitler",
- "LabelChapterTitle": "Kapitel Titel",
- "LabelClickForMoreInfo": "Click for more info",
"LabelClosePlayer": "Luk afspiller",
- "LabelCodec": "Codec",
- "LabelCollapseSeries": "Fold Serie Sammen",
+ "LabelCollapseSeries": "Fold Serier Sammen",
"LabelCollection": "Samling",
"LabelCollections": "Samlinger",
"LabelComplete": "Fuldfør",
"LabelConfirmPassword": "Bekræft Adgangskode",
- "LabelContinueListening": "Fortsæt Lytning",
- "LabelContinueReading": "Fortsæt Læsning",
- "LabelContinueSeries": "Fortsæt Serie",
+ "LabelContinueListening": "Fortsæt med at lytte",
+ "LabelContinueReading": "Fortsæt med at læse",
+ "LabelContinueSeries": "Fortsæt Serien",
"LabelCover": "Omslag",
"LabelCoverImageURL": "Omslagsbillede URL",
"LabelCreatedAt": "Oprettet Kl.",
@@ -257,12 +209,10 @@
"LabelCurrently": "Aktuelt:",
"LabelCustomCronExpression": "Brugerdefineret Cron Udtryk:",
"LabelDatetime": "Dato og Tid",
- "LabelDeleteFromFileSystemCheckbox": "Delete from file system (uncheck to only remove from database)",
"LabelDescription": "Beskrivelse",
"LabelDeselectAll": "Fravælg Alle",
"LabelDevice": "Enheds",
"LabelDeviceInfo": "Enhedsinformation",
- "LabelDeviceIsAvailableTo": "Device is available to...",
"LabelDirectory": "Mappe",
"LabelDiscFromFilename": "Disk fra Filnavn",
"LabelDiscFromMetadata": "Disk fra Metadata",
@@ -270,14 +220,10 @@
"LabelDownload": "Download",
"LabelDownloadNEpisodes": "Download {0} episoder",
"LabelDuration": "Varighed",
- "LabelDurationComparisonExactMatch": "(exact match)",
- "LabelDurationComparisonLonger": "({0} longer)",
- "LabelDurationComparisonShorter": "({0} shorter)",
"LabelDurationFound": "Fundet varighed:",
"LabelEbook": "E-bog",
"LabelEbooks": "E-bøger",
"LabelEdit": "Rediger",
- "LabelEmail": "Email",
"LabelEmailSettingsFromAddress": "Fra Adresse",
"LabelEmailSettingsSecure": "Sikker",
"LabelEmailSettingsSecureHelp": "Hvis sandt, vil forbindelsen bruge TLS ved tilslutning til serveren. Hvis falsk, bruges TLS, hvis serveren understøtter STARTTLS-udvidelsen. I de fleste tilfælde skal denne værdi sættes til sandt, hvis du tilslutter til port 465. Til port 587 eller 25 skal du holde det falsk. (fra nodemailer.com/smtp/#authentication)",
@@ -285,17 +231,15 @@
"LabelEmbeddedCover": "Indlejret Omslag",
"LabelEnable": "Aktivér",
"LabelEnd": "Slut",
+ "LabelEndOfChapter": "Slutningen af kapitel",
"LabelEpisode": "Episode",
"LabelEpisodeTitle": "Episodetitel",
"LabelEpisodeType": "Episodetype",
"LabelExample": "Eksempel",
"LabelExplicit": "Eksplisit",
- "LabelExplicitChecked": "Explicit (checked)",
- "LabelExplicitUnchecked": "Not Explicit (unchecked)",
"LabelFeedURL": "Feed URL",
- "LabelFetchingMetadata": "Fetching Metadata",
"LabelFile": "Fil",
- "LabelFileBirthtime": "Fødselstidspunkt for fil",
+ "LabelFileBirthtime": "Oprettelsestidspunkt for fil",
"LabelFileModified": "Fil ændret",
"LabelFilename": "Filnavn",
"LabelFilterByUser": "Filtrér efter bruger",
@@ -303,26 +247,20 @@
"LabelFinished": "Færdig",
"LabelFolder": "Mappe",
"LabelFolders": "Mapper",
- "LabelFontBold": "Bold",
+ "LabelFontBoldness": "Skrift tykkelse",
"LabelFontFamily": "Fontfamilie",
- "LabelFontItalic": "Italic",
"LabelFontScale": "Skriftstørrelse",
- "LabelFontStrikethrough": "Strikethrough",
- "LabelFormat": "Format",
"LabelGenre": "Genre",
"LabelGenres": "Genrer",
"LabelHardDeleteFile": "Permanent slet fil",
"LabelHasEbook": "Har e-bog",
"LabelHasSupplementaryEbook": "Har supplerende e-bog",
- "LabelHighestPriority": "Highest priority",
"LabelHost": "Vært",
"LabelHour": "Time",
"LabelIcon": "Ikon",
- "LabelImageURLFromTheWeb": "Image URL from the web",
+ "LabelInProgress": "I gang",
"LabelIncludeInTracklist": "Inkluder i afspilningsliste",
"LabelIncomplete": "Ufuldstændig",
- "LabelInProgress": "I gang",
- "LabelInterval": "Interval",
"LabelIntervalCustomDailyWeekly": "Tilpasset dagligt/ugentligt",
"LabelIntervalEvery12Hours": "Hver 12. time",
"LabelIntervalEvery15Minutes": "Hver 15. minut",
@@ -355,50 +293,39 @@
"LabelLogLevelInfo": "Information",
"LabelLogLevelWarn": "Advarsel",
"LabelLookForNewEpisodesAfterDate": "Søg efter nye episoder efter denne dato",
- "LabelLowestPriority": "Lowest Priority",
- "LabelMatchExistingUsersBy": "Match existing users by",
- "LabelMatchExistingUsersByDescription": "Used for connecting existing users. Once connected, users will be matched by a unique id from your SSO provider",
"LabelMediaPlayer": "Medieafspiller",
"LabelMediaType": "Medietype",
- "LabelMetadataOrderOfPrecedenceDescription": "Higher priority metadata sources will override lower priority metadata sources",
- "LabelMetadataProvider": "Metadataudbyder",
"LabelMetaTag": "Meta-tag",
"LabelMetaTags": "Meta-tags",
+ "LabelMetadataProvider": "Metadataudbyder",
"LabelMinute": "Minut",
"LabelMissing": "Mangler",
- "LabelMissingEbook": "Has no ebook",
- "LabelMissingSupplementaryEbook": "Has no supplementary ebook",
- "LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs",
- "LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is audiobookshelf://oauth, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (*) as the sole entry permits any URI.",
"LabelMore": "Mere",
"LabelMoreInfo": "Mere info",
"LabelName": "Navn",
"LabelNarrator": "Fortæller",
"LabelNarrators": "Fortællere",
"LabelNew": "Ny",
+ "LabelNewPassword": "Nyt kodeord",
"LabelNewestAuthors": "Nyeste forfattere",
"LabelNewestEpisodes": "Nyeste episoder",
- "LabelNewPassword": "Nyt kodeord",
"LabelNextBackupDate": "Næste sikkerhedskopi dato",
"LabelNextScheduledRun": "Næste planlagte kørsel",
"LabelNoEpisodesSelected": "Ingen episoder valgt",
- "LabelNotes": "Noter",
"LabelNotFinished": "Ikke færdig",
+ "LabelNotStarted": "Ikke påbegyndt",
+ "LabelNotes": "Noter",
"LabelNotificationAppriseURL": "Apprise URL'er",
"LabelNotificationAvailableVariables": "Tilgængelige variabler",
"LabelNotificationBodyTemplate": "Kropsskabelon",
"LabelNotificationEvent": "Meddelelseshændelse",
+ "LabelNotificationTitleTemplate": "Titelskabelon",
"LabelNotificationsMaxFailedAttempts": "Maksimalt antal mislykkede forsøg",
"LabelNotificationsMaxFailedAttemptsHelp": "Meddelelser deaktiveres, når de mislykkes med at sende så mange gange",
"LabelNotificationsMaxQueueSize": "Maksimal køstørrelse for meddelelseshændelser",
"LabelNotificationsMaxQueueSizeHelp": "Hændelser begrænses til at udløse en gang pr. sekund. Hændelser ignoreres, hvis køen er fyldt. Dette forhindrer meddelelsesspam.",
- "LabelNotificationTitleTemplate": "Titelskabelon",
- "LabelNotStarted": "Ikke påbegyndt",
"LabelNumberOfBooks": "Antal bøger",
"LabelNumberOfEpisodes": "Antal episoder",
- "LabelOpenIDAdvancedPermsClaimDescription": "Name of the OpenID claim that contains advanced permissions for user actions within the application which will apply to non-admin roles (if configured). If the claim is missing from the response, access to ABS will be denied. If a single option is missing, it will be treated as false. Ensure the identity provider's claim matches the expected structure:",
- "LabelOpenIDClaims": "Leave the following options empty to disable advanced group and permissions assignment, automatically assigning 'User' group then.",
- "LabelOpenIDGroupClaimDescription": "Name of the OpenID claim that contains a list of the user's groups. Commonly referred to as groups. If configured, the application will automatically assign roles based on the user's group memberships, provided that these groups are named case-insensitively 'admin', 'user', or 'guest' in the claim. The claim should contain a list, and if a user belongs to multiple groups, the application will assign the role corresponding to the highest level of access. If no group matches, access will be denied.",
"LabelOpenRSSFeed": "Åbn RSS-feed",
"LabelOverwrite": "Overskriv",
"LabelPassword": "Kodeord",
@@ -410,54 +337,45 @@
"LabelPermissionsDownload": "Kan downloade",
"LabelPermissionsUpdate": "Kan opdatere",
"LabelPermissionsUpload": "Kan uploade",
- "LabelPersonalYearReview": "Your Year in Review ({0})",
"LabelPhotoPathURL": "Foto sti/URL",
- "LabelPlaylists": "Afspilningslister",
"LabelPlayMethod": "Afspilningsmetode",
- "LabelPodcast": "Podcast",
- "LabelPodcasts": "Podcasts",
+ "LabelPlaylists": "Afspilningslister",
"LabelPodcastSearchRegion": "Podcast søgeområde",
"LabelPodcastType": "Podcast type",
- "LabelPort": "Port",
"LabelPrefixesToIgnore": "Præfikser der skal ignoreres (skal ikke skelne mellem store og små bogstaver)",
"LabelPreventIndexing": "Forhindrer, at dit feed bliver indekseret af iTunes og Google podcastkataloger",
"LabelPrimaryEbook": "Primær e-bog",
"LabelProgress": "Fremskridt",
"LabelProvider": "Udbyder",
"LabelPubDate": "Udgivelsesdato",
- "LabelPublisher": "Forlag",
"LabelPublishYear": "Udgivelsesår",
- "LabelRead": "Læst",
- "LabelReadAgain": "Læs igen",
- "LabelReadEbookWithoutProgress": "Læs e-bog uden at følge fremskridt",
- "LabelRecentlyAdded": "Senest tilføjet",
- "LabelRecentSeries": "Seneste serie",
- "LabelRecommended": "Anbefalet",
- "LabelRedo": "Redo",
- "LabelRegion": "Region",
- "LabelReleaseDate": "Udgivelsesdato",
- "LabelRemoveCover": "Fjern omslag",
- "LabelRowsPerPage": "Rows per page",
+ "LabelPublisher": "Forlag",
"LabelRSSFeedCustomOwnerEmail": "Brugerdefineret ejerens e-mail",
"LabelRSSFeedCustomOwnerName": "Brugerdefineret ejerens navn",
"LabelRSSFeedOpen": "Åben RSS-feed",
"LabelRSSFeedPreventIndexing": "Forhindrer indeksering",
"LabelRSSFeedSlug": "RSS-feed-slug",
"LabelRSSFeedURL": "RSS-feed-URL",
+ "LabelRandomly": "Tilfældigt",
+ "LabelRead": "Læst",
+ "LabelReadAgain": "Læs igen",
+ "LabelReadEbookWithoutProgress": "Læs e-bog uden at følge fremskridt",
+ "LabelRecentSeries": "Seneste serier",
+ "LabelRecentlyAdded": "Senest tilføjet",
+ "LabelRecommended": "Anbefalet",
+ "LabelReleaseDate": "Udgivelsesdato",
+ "LabelRemoveCover": "Fjern omslag",
"LabelSearchTerm": "Søgeterm",
"LabelSearchTitle": "Søg efter titel",
"LabelSearchTitleOrASIN": "Søg efter titel eller ASIN",
"LabelSeason": "Sæson",
- "LabelSelectAll": "Select all",
"LabelSelectAllEpisodes": "Vælg alle episoder",
"LabelSelectEpisodesShowing": "Vælg {0} episoder vist",
- "LabelSelectUsers": "Select users",
"LabelSendEbookToDevice": "Send e-bog til...",
"LabelSequence": "Sekvens",
"LabelSeries": "Serie",
"LabelSeriesName": "Serienavn",
"LabelSeriesProgress": "Seriefremskridt",
- "LabelServerYearReview": "Server Year in Review ({0})",
"LabelSetEbookAsPrimary": "Indstil som primær",
"LabelSetEbookAsSupplementary": "Indstil som supplerende",
"LabelSettingsAudiobooksOnly": "Kun lydbøger",
@@ -471,8 +389,6 @@
"LabelSettingsEnableWatcher": "Aktiver overvågning",
"LabelSettingsEnableWatcherForLibrary": "Aktiver mappeovervågning for bibliotek",
"LabelSettingsEnableWatcherHelp": "Aktiverer automatisk tilføjelse/opdatering af elementer, når filændringer registreres. *Kræver servergenstart",
- "LabelSettingsEpubsAllowScriptedContent": "Allow scripted content in epubs",
- "LabelSettingsEpubsAllowScriptedContentHelp": "Allow epub files to execute scripts. It is recommended to keep this setting disabled unless you trust the source of the epub files.",
"LabelSettingsExperimentalFeatures": "Eksperimentelle funktioner",
"LabelSettingsExperimentalFeaturesHelp": "Funktioner under udvikling, der kunne bruge din feedback og hjælp til test. Klik for at åbne Github-diskussionen.",
"LabelSettingsFindCovers": "Find omslag",
@@ -481,8 +397,6 @@
"LabelSettingsHideSingleBookSeriesHelp": "Serier med en enkelt bog vil blive skjult fra serie-siden og hjemmesidehylder.",
"LabelSettingsHomePageBookshelfView": "Brug bogreolvisning på startside",
"LabelSettingsLibraryBookshelfView": "Brug bogreolvisning i biblioteket",
- "LabelSettingsOnlyShowLaterBooksInContinueSeries": "Skip earlier books in Continue Series",
- "LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "The Continue Series home page shelf shows the first book not started in series that have at least one book finished and no books in progress. Enabling this setting will continue series from the furthest completed book instead of the first book not started.",
"LabelSettingsParseSubtitles": "Fortolk undertekster",
"LabelSettingsParseSubtitlesHelp": "Udtræk undertekster fra lydbogsmappenavne. Undertitler skal adskilles af \" - \" f.eks. \"Bogtitel - En undertitel her\" har undertitlen \"En undertitel her\"",
"LabelSettingsPreferMatchedMetadata": "Foretræk matchede metadata",
@@ -499,14 +413,11 @@
"LabelSettingsStoreMetadataWithItemHelp": "Som standard gemmes metadatafiler i /metadata/items, aktivering af denne indstilling vil gemme metadatafiler i dine bibliotekselementmapper",
"LabelSettingsTimeFormat": "Tidsformat",
"LabelShowAll": "Vis alle",
- "LabelShowSeconds": "Show seconds",
"LabelSize": "Størrelse",
"LabelSleepTimer": "Søvntimer",
- "LabelSlug": "Slug",
- "LabelStart": "Start",
+ "LabelStartTime": "Starttid",
"LabelStarted": "Startet",
"LabelStartedAt": "Startet klokken",
- "LabelStartTime": "Starttid",
"LabelStatsAudioTracks": "Lydspor",
"LabelStatsAuthors": "Forfattere",
"LabelStatsBestDay": "Bedste dag",
@@ -529,10 +440,6 @@
"LabelTagsAccessibleToUser": "Mærker tilgængelige for bruger",
"LabelTagsNotAccessibleToUser": "Mærker ikke tilgængelige for bruger",
"LabelTasks": "Kører opgaver",
- "LabelTextEditorBulletedList": "Bulleted list",
- "LabelTextEditorLink": "Link",
- "LabelTextEditorNumberedList": "Numbered list",
- "LabelTextEditorUnlink": "Unlink",
"LabelTheme": "Tema",
"LabelThemeDark": "Mørk",
"LabelThemeLight": "Lys",
@@ -556,31 +463,25 @@
"LabelTracksMultiTrack": "Flerspors",
"LabelTracksNone": "Ingen spor",
"LabelTracksSingleTrack": "Enkeltspors",
- "LabelType": "Type",
"LabelUnabridged": "Uforkortet",
- "LabelUndo": "Undo",
"LabelUnknown": "Ukendt",
"LabelUpdateCover": "Opdater omslag",
"LabelUpdateCoverHelp": "Tillad overskrivning af eksisterende omslag for de valgte bøger, når der findes en match",
- "LabelUpdatedAt": "Opdateret ved",
"LabelUpdateDetails": "Opdater detaljer",
"LabelUpdateDetailsHelp": "Tillad overskrivning af eksisterende detaljer for de valgte bøger, når der findes en match",
+ "LabelUpdatedAt": "Opdateret ved",
"LabelUploaderDragAndDrop": "Træk og slip filer eller mapper",
"LabelUploaderDropFiles": "Smid filer",
- "LabelUploaderItemFetchMetadataHelp": "Automatically fetch title, author, and series",
"LabelUseChapterTrack": "Brug kapitel-spor",
"LabelUseFullTrack": "Brug fuldt spor",
"LabelUser": "Bruger",
"LabelUsername": "Brugernavn",
"LabelValue": "Værdi",
- "LabelVersion": "Version",
"LabelViewBookmarks": "Se bogmærker",
"LabelViewChapters": "Se kapitler",
"LabelViewQueue": "Se afspilningskø",
"LabelVolume": "Volumen",
"LabelWeekdaysToRun": "Ugedage til kørsel",
- "LabelYearReviewHide": "Hide Year in Review",
- "LabelYearReviewShow": "See Year in Review",
"LabelYourAudiobookDuration": "Din lydbogsvarighed",
"LabelYourBookmarks": "Dine bogmærker",
"LabelYourPlaylists": "Dine spillelister",
@@ -590,8 +491,8 @@
"MessageBackupsDescription": "Backups inkluderer brugere, brugerfremskridt, biblioteksvareoplysninger, serverindstillinger og billeder gemt i /metadata/items og /metadata/authors. Backups inkluderer ikke nogen filer gemt i dine biblioteksmapper.",
"MessageBatchQuickMatchDescription": "Quick Match vil forsøge at tilføje manglende omslag og metadata til de valgte elementer. Aktivér indstillingerne nedenfor for at tillade Quick Match at overskrive eksisterende omslag og/eller metadata.",
"MessageBookshelfNoCollections": "Du har ikke oprettet nogen samlinger endnu",
- "MessageBookshelfNoResultsForFilter": "Ingen resultater for filter \"{0}: {1}\"",
"MessageBookshelfNoRSSFeeds": "Ingen RSS-feeds er åbne",
+ "MessageBookshelfNoResultsForFilter": "Ingen resultater for filter \"{0}: {1}\"",
"MessageBookshelfNoSeries": "Du har ingen serier",
"MessageChapterEndIsAfter": "Kapitelslutningen er efter slutningen af din lydbog",
"MessageChapterErrorFirstNotZero": "Første kapitel skal starte ved 0",
@@ -603,22 +504,17 @@
"MessageConfirmDeleteBackup": "Er du sikker på, at du vil slette backup for {0}?",
"MessageConfirmDeleteFile": "Dette vil slette filen fra dit filsystem. Er du sikker?",
"MessageConfirmDeleteLibrary": "Er du sikker på, at du vil slette biblioteket permanent \"{0}\"?",
- "MessageConfirmDeleteLibraryItem": "This will delete the library item from the database and your file system. Are you sure?",
- "MessageConfirmDeleteLibraryItems": "This will delete {0} library items from the database and your file system. Are you sure?",
"MessageConfirmDeleteSession": "Er du sikker på, at du vil slette denne session?",
"MessageConfirmForceReScan": "Er du sikker på, at du vil tvinge en genindlæsning?",
"MessageConfirmMarkAllEpisodesFinished": "Er du sikker på, at du vil markere alle episoder som afsluttet?",
"MessageConfirmMarkAllEpisodesNotFinished": "Er du sikker på, at du vil markere alle episoder som ikke afsluttet?",
"MessageConfirmMarkSeriesFinished": "Er du sikker på, at du vil markere alle bøger i denne serie som afsluttet?",
"MessageConfirmMarkSeriesNotFinished": "Er du sikker på, at du vil markere alle bøger i denne serie som ikke afsluttet?",
- "MessageConfirmPurgeCache": "Purge cache will delete the entire directory at /metadata/cache.
Are you sure you want to remove the cache directory?",
- "MessageConfirmQuickEmbed": "Warning! Quick embed will not backup your audio files. Make sure that you have a backup of your audio files.
Would you like to continue?",
"MessageConfirmRemoveAllChapters": "Er du sikker på, at du vil fjerne alle kapitler?",
"MessageConfirmRemoveAuthor": "Er du sikker på, at du vil fjerne forfatteren \"{0}\"?",
"MessageConfirmRemoveCollection": "Er du sikker på, at du vil fjerne samlingen \"{0}\"?",
"MessageConfirmRemoveEpisode": "Er du sikker på, at du vil fjerne episoden \"{0}\"?",
"MessageConfirmRemoveEpisodes": "Er du sikker på, at du vil fjerne {0} episoder?",
- "MessageConfirmRemoveListeningSessions": "Are you sure you want to remove {0} listening sessions?",
"MessageConfirmRemoveNarrator": "Er du sikker på, at du vil fjerne fortælleren \"{0}\"?",
"MessageConfirmRemovePlaylist": "Er du sikker på, at du vil fjerne din spilleliste \"{0}\"?",
"MessageConfirmRenameGenre": "Er du sikker på, at du vil omdøbe genre \"{0}\" til \"{1}\" for alle elementer?",
@@ -627,13 +523,11 @@
"MessageConfirmRenameTag": "Er du sikker på, at du vil omdøbe tag \"{0}\" til \"{1}\" for alle elementer?",
"MessageConfirmRenameTagMergeNote": "Bemærk: Dette tag findes allerede, så de vil blive fusioneret.",
"MessageConfirmRenameTagWarning": "Advarsel! Et lignende tag med en anden skrivemåde eksisterer allerede \"{0}\".",
- "MessageConfirmReScanLibraryItems": "Are you sure you want to re-scan {0} items?",
"MessageConfirmSendEbookToDevice": "Er du sikker på, at du vil sende {0} e-bog \"{1}\" til enhed \"{2}\"?",
"MessageDownloadingEpisode": "Downloader episode",
"MessageDragFilesIntoTrackOrder": "Træk filer ind i korrekt spororden",
"MessageEmbedFinished": "Indlejring færdig!",
"MessageEpisodesQueuedForDownload": "{0} episoder er sat i kø til download",
- "MessageEreaderDevices": "To ensure delivery of ebooks, you may need to add the above email address as a valid sender for each device listed below.",
"MessageFeedURLWillBe": "Feed-URL vil være {0}",
"MessageFetching": "Henter...",
"MessageForceReScanDescription": "vil scanne alle filer igen som en frisk scanning. Lydfilens ID3-tags, OPF-filer og tekstfiler scannes som nye.",
@@ -645,7 +539,6 @@
"MessageListeningSessionsInTheLastYear": "{0} lyttesessioner i det sidste år",
"MessageLoading": "Indlæser...",
"MessageLoadingFolders": "Indlæser mapper...",
- "MessageLogsDescription": "Logs are stored in /metadata/logs as JSON files. Crash logs are stored in /metadata/logs/crash_logs.txt.",
"MessageM4BFailed": "M4B mislykkedes!",
"MessageM4BFinished": "M4B afsluttet!",
"MessageMapChapterTitles": "Tilknyt kapiteloverskrifter til dine eksisterende lydbogskapitler uden at justere tidsstempler",
@@ -681,10 +574,9 @@
"MessageNoSeries": "Ingen serier",
"MessageNoTags": "Ingen tags",
"MessageNoTasksRunning": "Ingen opgaver kører",
- "MessageNotYetImplemented": "Endnu ikke implementeret",
- "MessageNoUpdateNecessary": "Ingen opdatering nødvendig",
"MessageNoUpdatesWereNecessary": "Ingen opdateringer var nødvendige",
"MessageNoUserPlaylists": "Du har ingen afspilningslister",
+ "MessageNotYetImplemented": "Endnu ikke implementeret",
"MessageOr": "eller",
"MessagePauseChapter": "Pause kapitelafspilning",
"MessagePlayChapter": "Lyt til begyndelsen af kapitlet",
@@ -700,7 +592,6 @@
"MessageRestoreBackupConfirm": "Er du sikker på, at du vil gendanne sikkerhedskopien oprettet den",
"MessageRestoreBackupWarning": "Gendannelse af en sikkerhedskopi vil overskrive hele databasen, som er placeret på /config, og omslagsbilleder i /metadata/items & /metadata/authors.
Sikkerhedskopier ændrer ikke nogen filer i dine biblioteksmapper. Hvis du har aktiveret serverindstillinger for at gemme omslagskunst og metadata i dine biblioteksmapper, sikkerhedskopieres eller overskrives disse ikke.
Alle klienter, der bruger din server, opdateres automatisk.",
"MessageSearchResultsFor": "Søgeresultater for",
- "MessageSelected": "{0} selected",
"MessageServerCouldNotBeReached": "Serveren kunne ikke nås",
"MessageSetChaptersFromTracksDescription": "Indstil kapitler ved at bruge hver lydfil som et kapitel og kapiteloverskrift som lydfilnavn",
"MessageStartPlaybackAtTime": "Start afspilning for \"{0}\" kl. {1}?",
@@ -726,11 +617,8 @@
"PlaceholderNewPlaylist": "Nyt afspilningslistnavn",
"PlaceholderSearch": "Søg..",
"PlaceholderSearchEpisode": "Søg efter episode..",
- "ToastAccountUpdateFailed": "Mislykkedes opdatering af konto",
"ToastAccountUpdateSuccess": "Konto opdateret",
- "ToastAuthorImageRemoveFailed": "Mislykkedes fjernelse af forfatterbillede",
"ToastAuthorImageRemoveSuccess": "Forfatterbillede fjernet",
- "ToastAuthorUpdateFailed": "Mislykkedes opdatering af forfatter",
"ToastAuthorUpdateMerged": "Forfatter fusioneret",
"ToastAuthorUpdateSuccess": "Forfatter opdateret",
"ToastAuthorUpdateSuccessNoImageFound": "Forfatter opdateret (ingen billede fundet)",
@@ -745,28 +633,15 @@
"ToastBatchUpdateSuccess": "Batchopdatering lykkedes",
"ToastBookmarkCreateFailed": "Mislykkedes oprettelse af bogmærke",
"ToastBookmarkCreateSuccess": "Bogmærke tilføjet",
- "ToastBookmarkRemoveFailed": "Mislykkedes fjernelse af bogmærke",
"ToastBookmarkRemoveSuccess": "Bogmærke fjernet",
- "ToastBookmarkUpdateFailed": "Mislykkedes opdatering af bogmærke",
"ToastBookmarkUpdateSuccess": "Bogmærke opdateret",
- "ToastCachePurgeFailed": "Failed to purge cache",
- "ToastCachePurgeSuccess": "Cache purged successfully",
"ToastChaptersHaveErrors": "Kapitler har fejl",
"ToastChaptersMustHaveTitles": "Kapitler skal have titler",
- "ToastCollectionItemsRemoveFailed": "Mislykkedes fjernelse af element(er) fra samlingen",
"ToastCollectionItemsRemoveSuccess": "Element(er) fjernet fra samlingen",
- "ToastCollectionRemoveFailed": "Mislykkedes fjernelse af samling",
"ToastCollectionRemoveSuccess": "Samling fjernet",
- "ToastCollectionUpdateFailed": "Mislykkedes opdatering af samling",
"ToastCollectionUpdateSuccess": "Samling opdateret",
- "ToastDeleteFileFailed": "Failed to delete file",
- "ToastDeleteFileSuccess": "File deleted",
- "ToastFailedToLoadData": "Failed to load data",
- "ToastItemCoverUpdateFailed": "Mislykkedes opdatering af varens omslag",
"ToastItemCoverUpdateSuccess": "Varens omslag opdateret",
- "ToastItemDetailsUpdateFailed": "Mislykkedes opdatering af varedetaljer",
"ToastItemDetailsUpdateSuccess": "Varedetaljer opdateret",
- "ToastItemDetailsUpdateUnneeded": "Ingen opdateringer er nødvendige for varedetaljer",
"ToastItemMarkedAsFinishedFailed": "Mislykkedes markering som afsluttet",
"ToastItemMarkedAsFinishedSuccess": "Vare markeret som afsluttet",
"ToastItemMarkedAsNotFinishedFailed": "Mislykkedes markering som ikke afsluttet",
@@ -777,34 +652,26 @@
"ToastLibraryDeleteSuccess": "Bibliotek slettet",
"ToastLibraryScanFailedToStart": "Mislykkedes start af skanning",
"ToastLibraryScanStarted": "Biblioteksskanning startet",
- "ToastLibraryUpdateFailed": "Mislykkedes opdatering af bibliotek",
"ToastLibraryUpdateSuccess": "Bibliotek \"{0}\" opdateret",
"ToastPlaylistCreateFailed": "Mislykkedes oprettelse af afspilningsliste",
"ToastPlaylistCreateSuccess": "Afspilningsliste oprettet",
- "ToastPlaylistRemoveFailed": "Mislykkedes fjernelse af afspilningsliste",
"ToastPlaylistRemoveSuccess": "Afspilningsliste fjernet",
- "ToastPlaylistUpdateFailed": "Mislykkedes opdatering af afspilningsliste",
"ToastPlaylistUpdateSuccess": "Afspilningsliste opdateret",
"ToastPodcastCreateFailed": "Mislykkedes oprettelse af podcast",
"ToastPodcastCreateSuccess": "Podcast oprettet med succes",
- "ToastRemoveItemFromCollectionFailed": "Mislykkedes fjernelse af element fra samling",
- "ToastRemoveItemFromCollectionSuccess": "Element fjernet fra samling",
"ToastRSSFeedCloseFailed": "Mislykkedes lukning af RSS-feed",
"ToastRSSFeedCloseSuccess": "RSS-feed lukket",
+ "ToastRemoveItemFromCollectionFailed": "Mislykkedes fjernelse af element fra samling",
+ "ToastRemoveItemFromCollectionSuccess": "Element fjernet fra samling",
"ToastSendEbookToDeviceFailed": "Mislykkedes afsendelse af e-bog til enhed",
"ToastSendEbookToDeviceSuccess": "E-bog afsendt til enhed \"{0}\"",
"ToastSeriesUpdateFailed": "Mislykkedes opdatering af serie",
"ToastSeriesUpdateSuccess": "Serieopdatering lykkedes",
- "ToastServerSettingsUpdateFailed": "Failed to update server settings",
- "ToastServerSettingsUpdateSuccess": "Server settings updated",
"ToastSessionDeleteFailed": "Mislykkedes sletning af session",
"ToastSessionDeleteSuccess": "Session slettet",
"ToastSocketConnected": "Socket forbundet",
"ToastSocketDisconnected": "Socket afbrudt",
"ToastSocketFailedToConnect": "Socket kunne ikke oprettes",
- "ToastSortingPrefixesEmptyError": "Must have at least 1 sorting prefix",
- "ToastSortingPrefixesUpdateFailed": "Failed to update sorting prefixes",
- "ToastSortingPrefixesUpdateSuccess": "Sorting prefixes updated ({0} items)",
"ToastUserDeleteFailed": "Mislykkedes sletning af bruger",
"ToastUserDeleteSuccess": "Bruger slettet"
-}
\ No newline at end of file
+}
diff --git a/client/strings/de.json b/client/strings/de.json
index 50bb4c3b3..a427c2885 100644
--- a/client/strings/de.json
+++ b/client/strings/de.json
@@ -9,6 +9,7 @@
"ButtonApply": "Übernehmen",
"ButtonApplyChapters": "Kapitel anwenden",
"ButtonAuthors": "Autoren",
+ "ButtonBack": "Zurück",
"ButtonBrowseForFolder": "Ordnersuche",
"ButtonCancel": "Abbrechen",
"ButtonCancelEncode": "Codierung abbrechen",
@@ -18,6 +19,7 @@
"ButtonChooseFiles": "Wähle eine Datei",
"ButtonClearFilter": "Filter löschen",
"ButtonCloseFeed": "Feed schließen",
+ "ButtonCloseSession": "Offene Sitzung schließen",
"ButtonCollections": "Sammlungen",
"ButtonConfigureScanner": "Scannereinstellungen",
"ButtonCreate": "Erstellen",
@@ -27,6 +29,9 @@
"ButtonEdit": "Bearbeiten",
"ButtonEditChapters": "Kapitel bearbeiten",
"ButtonEditPodcast": "Podcast bearbeiten",
+ "ButtonEnable": "Aktivieren",
+ "ButtonFireAndFail": "Abfeuern und versagen",
+ "ButtonFireOnTest": "Test-Event abfeuern",
"ButtonForceReScan": "Komplett-Scan (alle Medien)",
"ButtonFullPath": "Vollständiger Pfad",
"ButtonHide": "Ausblenden",
@@ -34,7 +39,7 @@
"ButtonIssues": "Probleme",
"ButtonJumpBackward": "Zurück springen",
"ButtonJumpForward": "Vorwärts springen",
- "ButtonLatest": "Neuste",
+ "ButtonLatest": "Neueste",
"ButtonLibrary": "Bibliothek",
"ButtonLogout": "Abmelden",
"ButtonLookup": "Online-Suche",
@@ -45,32 +50,36 @@
"ButtonNevermind": "Abbrechen",
"ButtonNext": "Vor",
"ButtonNextChapter": "Nächstes Kapitel",
- "ButtonOk": "Ok",
+ "ButtonNextItemInQueue": "Das nächste Element in der Warteschlange",
+ "ButtonOk": "OK",
"ButtonOpenFeed": "Feed öffnen",
"ButtonOpenManager": "Manager öffnen",
- "ButtonPause": "Pause",
+ "ButtonPause": "Pausieren",
"ButtonPlay": "Abspielen",
+ "ButtonPlayAll": "Alles abspielen",
"ButtonPlaying": "Spielt",
"ButtonPlaylists": "Wiedergabelisten",
"ButtonPrevious": "Zurück",
"ButtonPreviousChapter": "Vorheriges Kapitel",
+ "ButtonProbeAudioFile": "Audiodatei untersuchen",
"ButtonPurgeAllCache": "Cache leeren",
"ButtonPurgeItemsCache": "Lösche Medien-Cache",
- "ButtonPurgeMediaProgress": "Lösche Hörfortschritte",
"ButtonQueueAddItem": "Zur Warteschlange hinzufügen",
"ButtonQueueRemoveItem": "Aus der Warteschlange entfernen",
+ "ButtonQuickEmbed": "Schnelles Hinzufügen",
+ "ButtonQuickEmbedMetadata": "Schnelles Hinzufügen von Metadaten",
"ButtonQuickMatch": "Schnellabgleich",
+ "ButtonReScan": "Neu scannen",
"ButtonRead": "Lesen",
"ButtonReadLess": "Weniger anzeigen",
"ButtonReadMore": "Mehr anzeigen",
"ButtonRefresh": "Neu Laden",
- "ButtonRemove": "Löschen",
- "ButtonRemoveAll": "Alles löschen",
- "ButtonRemoveAllLibraryItems": "Lösche alle Bibliothekseinträge",
- "ButtonRemoveFromContinueListening": "Lösche den Eintrag aus der Fortsetzungsliste",
- "ButtonRemoveFromContinueReading": "Lösche die Serie aus der Lesefortsetzungsliste",
- "ButtonRemoveSeriesFromContinueSeries": "Lösche die Serie aus der Serienfortsetzungsliste",
- "ButtonReScan": "Neu scannen",
+ "ButtonRemove": "Entfernen",
+ "ButtonRemoveAll": "Alles entfernen",
+ "ButtonRemoveAllLibraryItems": "Entferne alle Bibliothekseinträge",
+ "ButtonRemoveFromContinueListening": "Entferne den Eintrag aus der Fortsetzungsliste",
+ "ButtonRemoveFromContinueReading": "Entferne die Serie aus der Lesefortsetzungsliste",
+ "ButtonRemoveSeriesFromContinueSeries": "Entferne die Serie aus der Serienfortsetzungsliste",
"ButtonReset": "Zurücksetzen",
"ButtonResetToDefault": "Zurücksetzen auf Standard",
"ButtonRestore": "Wiederherstellen",
@@ -83,13 +92,15 @@
"ButtonSelectFolderPath": "Ordnerpfad auswählen",
"ButtonSeries": "Serien",
"ButtonSetChaptersFromTracks": "Kapitelerstellung aus Audiodateien",
- "ButtonShare": "Teilen",
+ "ButtonShare": "Freigeben",
"ButtonShiftTimes": "Zeitverschiebung",
"ButtonShow": "Anzeigen",
"ButtonStartM4BEncode": "M4B-Kodierung starten",
"ButtonStartMetadataEmbed": "Metadateneinbettung starten",
+ "ButtonStats": "Statistiken",
"ButtonSubmit": "Ok",
"ButtonTest": "Test",
+ "ButtonUnlinkOpenId": "OpenID trennen",
"ButtonUpload": "Hochladen",
"ButtonUploadBackup": "Sicherung hochladen",
"ButtonUploadCover": "Titelbild hochladen",
@@ -102,28 +113,30 @@
"ErrorUploadFetchMetadataNoResults": "Metadaten konnten nicht abgerufen werden. Versuche den Titel und oder den Autor zu aktualisieren",
"ErrorUploadLacksTitle": "Es muss ein Titel eingegeben werden",
"HeaderAccount": "Konto",
+ "HeaderAddCustomMetadataProvider": "Benutzerdefinierten Metadatenanbieter hinzufügen",
"HeaderAdvanced": "Erweitert",
"HeaderAppriseNotificationSettings": "Apprise Benachrichtigungseinstellungen",
- "HeaderAudiobookTools": "Hörbuch-Dateiverwaltungstools",
"HeaderAudioTracks": "Audiodateien",
+ "HeaderAudiobookTools": "Hörbuch-Dateiverwaltungswerkzeuge",
"HeaderAuthentication": "Authentifizierung",
"HeaderBackups": "Sicherungen",
"HeaderChangePassword": "Passwort ändern",
"HeaderChapters": "Kapitel",
"HeaderChooseAFolder": "Wähle einen Ordner",
- "HeaderCollection": "Sammlungen",
+ "HeaderCollection": "Sammlung",
"HeaderCollectionItems": "Sammlungseinträge",
"HeaderCover": "Titelbild",
"HeaderCurrentDownloads": "Aktuelle Downloads",
- "HeaderCustomMetadataProviders": "Benutzerdefinierte Metadata Anbieter",
+ "HeaderCustomMessageOnLogin": "Benutzerdefinierte Nachricht für die Anmeldung",
+ "HeaderCustomMetadataProviders": "Benutzerdefinierte Metadatenanbieter",
"HeaderDetails": "Details",
"HeaderDownloadQueue": "Download Warteschlange",
- "HeaderEbookFiles": "E-Book Dateien",
- "HeaderEmail": "Email",
- "HeaderEmailSettings": "Email Einstellungen",
+ "HeaderEbookFiles": "E-Buch-Dateien",
+ "HeaderEmail": "E-Mail",
+ "HeaderEmailSettings": "E-Mail-Einstellungen",
"HeaderEpisodes": "Episoden",
"HeaderEreaderDevices": "E-Reader Geräte",
- "HeaderEreaderSettings": "E-Reader Einstellungen",
+ "HeaderEreaderSettings": "Einstellungen zum Lesen",
"HeaderFiles": "Dateien",
"HeaderFindChapters": "Kapitel suchen",
"HeaderIgnoredFiles": "Ignorierte Dateien",
@@ -141,29 +154,34 @@
"HeaderManageGenres": "Kategorien verwalten",
"HeaderManageTags": "Tags verwalten",
"HeaderMapDetails": "Stapelverarbeitung",
- "HeaderMatch": "Metadaten",
+ "HeaderMatch": "Treffer",
"HeaderMetadataOrderOfPrecedence": "Metadaten Rangfolge",
"HeaderMetadataToEmbed": "Einzubettende Metadaten",
"HeaderNewAccount": "Neues Konto",
"HeaderNewLibrary": "Neue Bibliothek",
+ "HeaderNotificationCreate": "Benachrichtigung erstellen",
+ "HeaderNotificationUpdate": "Benachrichtigung bearbeiten",
"HeaderNotifications": "Benachrichtigungen",
"HeaderOpenIDConnectAuthentication": "OpenID Connect Authentifizierung",
+ "HeaderOpenListeningSessions": "Aktive Hörbuch-Sitzungen",
"HeaderOpenRSSFeed": "RSS-Feed öffnen",
"HeaderOtherFiles": "Sonstige Dateien",
- "HeaderPasswordAuthentication": "Passwort Authentifizierung",
+ "HeaderPasswordAuthentication": "Passwortauthentifizierung",
"HeaderPermissions": "Berechtigungen",
"HeaderPlayerQueue": "Player Warteschlange",
+ "HeaderPlayerSettings": "Player Einstellungen",
"HeaderPlaylist": "Wiedergabeliste",
"HeaderPlaylistItems": "Einträge in der Wiedergabeliste",
"HeaderPodcastsToAdd": "Podcasts zum Hinzufügen",
"HeaderPreviewCover": "Vorschau Titelbild",
- "HeaderRemoveEpisode": "Episode löschen",
- "HeaderRemoveEpisodes": "Lösche {0} Episoden",
"HeaderRSSFeedGeneral": "RSS Details",
"HeaderRSSFeedIsOpen": "RSS-Feed ist geöffnet",
"HeaderRSSFeeds": "RSS-Feeds",
+ "HeaderRemoveEpisode": "Episode entfernen",
+ "HeaderRemoveEpisodes": "Entferne {0} Episoden",
"HeaderSavedMediaProgress": "Gespeicherte Hörfortschritte",
"HeaderSchedule": "Zeitplan",
+ "HeaderScheduleEpisodeDownloads": "Automatische Episoden-Downloads planen",
"HeaderScheduleLibraryScans": "Automatische Bibliotheksscans",
"HeaderSession": "Sitzung",
"HeaderSetBackupSchedule": "Zeitplan für die Datensicherung festlegen",
@@ -197,19 +215,23 @@
"LabelAccountTypeGuest": "Gast",
"LabelAccountTypeUser": "Benutzer",
"LabelActivity": "Aktivitäten",
- "LabelAdded": "Hinzugefügt",
- "LabelAddedAt": "Hinzugefügt am",
"LabelAddToCollection": "Zur Sammlung hinzufügen",
"LabelAddToCollectionBatch": "Füge {0} Hörbüch(er)/Podcast(s) der Sammlung hinzu",
"LabelAddToPlaylist": "Zur Wiedergabeliste hinzufügen",
"LabelAddToPlaylistBatch": "Füge {0} Hörbüch(er)/Podcast(s) der Wiedergabeliste hinzu",
+ "LabelAddedAt": "Hinzugefügt am",
+ "LabelAddedDate": "Hinzugefügt {0}",
"LabelAdminUsersOnly": "Nur Admin Benutzer",
"LabelAll": "Alle",
"LabelAllUsers": "Alle Benutzer",
"LabelAllUsersExcludingGuests": "Alle Benutzer außer Gästen",
"LabelAllUsersIncludingGuests": "Alle Benutzer und Gäste",
"LabelAlreadyInYourLibrary": "Bereits in der Bibliothek",
+ "LabelApiToken": "API Schlüssel",
"LabelAppend": "Anhängen",
+ "LabelAudioBitrate": "Audiobitrate (z. B. 128 kbit/s)",
+ "LabelAudioChannels": "Audiokanäle (1 oder 2)",
+ "LabelAudioCodec": "Audiocodec",
"LabelAuthor": "Autor",
"LabelAuthorFirstLast": "Autor (Vorname Nachname)",
"LabelAuthorLastFirst": "Autor (Nachname, Vorname)",
@@ -222,26 +244,31 @@
"LabelAutoRegister": "Automatische Registrierung",
"LabelAutoRegisterDescription": "Automatische neue Neutzer anlegen nach dem Registrieren",
"LabelBackToUser": "Zurück zum Benutzer",
+ "LabelBackupAudioFiles": "Audio-Dateien sichern",
"LabelBackupLocation": "Backup-Ort",
"LabelBackupsEnableAutomaticBackups": "Automatische Sicherung aktivieren",
"LabelBackupsEnableAutomaticBackupsHelp": "Backups werden in /metadata/backups gespeichert",
- "LabelBackupsMaxBackupSize": "Maximale Sicherungsgröße (in GB)",
+ "LabelBackupsMaxBackupSize": "Maximale Sicherungsgröße (in GB) (0 gleich ohne Begrenzung)",
"LabelBackupsMaxBackupSizeHelp": "Zum Schutz vor Fehlkonfigurationen schlagen Sicherungen fehl, wenn sie die konfigurierte Größe überschreiten.",
"LabelBackupsNumberToKeep": "Anzahl der aufzubewahrenden Sicherungen",
"LabelBackupsNumberToKeepHelp": "Es wird immer nur 1 Sicherung auf einmal entfernt. Wenn du bereits mehrere Sicherungen als die definierte max. Anzahl hast, solltest du diese manuell entfernen.",
"LabelBitrate": "Bitrate",
+ "LabelBonus": "Bonus",
"LabelBooks": "Bücher",
- "LabelButtonText": "Button Text",
+ "LabelButtonText": "Knopftext",
"LabelByAuthor": "von {0}",
"LabelChangePassword": "Passwort ändern",
"LabelChannels": "Kanäle",
+ "LabelChapterCount": "{0} Kapitel",
+ "LabelChapterTitle": "Kapitelüberschrift",
"LabelChapters": "Kapitel",
"LabelChaptersFound": "Gefundene Kapitel",
- "LabelChapterTitle": "Kapitelüberschrift",
"LabelClickForMoreInfo": "Klicken für mehr Informationen",
+ "LabelClickToUseCurrentValue": "Anklicken um aktuellen Wert zu verwenden",
"LabelClosePlayer": "Player schließen",
"LabelCodec": "Codec",
- "LabelCollapseSeries": "Serien zusammenfassen",
+ "LabelCollapseSeries": "Serien einklappen",
+ "LabelCollapseSubSeries": "Unterserien einklappen",
"LabelCollection": "Sammlung",
"LabelCollections": "Sammlungen",
"LabelComplete": "Vollständig",
@@ -255,9 +282,10 @@
"LabelCronExpression": "Cron-Ausdruck",
"LabelCurrent": "Aktuell",
"LabelCurrently": "Aktuell:",
- "LabelCustomCronExpression": "Benutzerdefinierter Cron-Ausdruck",
+ "LabelCustomCronExpression": "Benutzerdefinierter Cron-Ausdruck:",
"LabelDatetime": "Datum & Uhrzeit",
- "LabelDeleteFromFileSystemCheckbox": "Löschen von der Festplatte + Datenbank (deaktivieren um nur aus der Datenbank zu löschen)",
+ "LabelDays": "Tage",
+ "LabelDeleteFromFileSystemCheckbox": "Löschen von der Festplatte + Datenbank (deaktivieren um nur aus der Datenbank zu entfernen)",
"LabelDescription": "Beschreibung",
"LabelDeselectAll": "Alles abwählen",
"LabelDevice": "Gerät",
@@ -274,29 +302,51 @@
"LabelDurationComparisonLonger": "({0} länger)",
"LabelDurationComparisonShorter": "({0} kürzer)",
"LabelDurationFound": "Gefundene Laufzeit:",
- "LabelEbook": "E-Book",
- "LabelEbooks": "E-Books",
+ "LabelEbook": "E-Buch",
+ "LabelEbooks": "E-Bücher",
"LabelEdit": "Bearbeiten",
- "LabelEmail": "Email",
- "LabelEmailSettingsFromAddress": "Von Adresse",
+ "LabelEmail": "E-Mail",
+ "LabelEmailSettingsFromAddress": "Sender",
+ "LabelEmailSettingsRejectUnauthorized": "Nicht autorisierte Zertifikate ablehnen",
+ "LabelEmailSettingsRejectUnauthorizedHelp": "Durch das Deaktivieren der SSL-Zertifikatsüberprüfung kann deine Verbindung Sicherheitsrisiken wie Man-in-the-Middle-Angriffen ausgesetzt sein. Deaktiviere diese Option nur, wenn due die Auswirkungen verstehst und dem E-Mail-Server vertraust, mit dem eine Verbindung hergestellt wird.",
"LabelEmailSettingsSecure": "Sicher",
- "LabelEmailSettingsSecureHelp": "Wenn \"an\", verwendet die Verbindung TLS, wenn du eine Verbindung zum Server herstellst. Bei \"aus\" wird TLS verwendet, wenn der Server die STARTTLS-Erweiterung unterstützt. In den meisten Fällen solltest du diesen Wert auf \"an\" schalten, wenn du eine Verbindung zu Port 465 herstellst. Für Port 587 oder 25 behalte den Wert \"aus\" bei. (von nodemailer.com/smtp/#authentication)",
- "LabelEmailSettingsTestAddress": "Test Adresse",
+ "LabelEmailSettingsSecureHelp": "Wenn an, verwendet die Verbindung TLS, wenn du eine Verbindung zum Server herstellst. Bei „aus“ wird TLS verwendet, wenn der Server die STARTTLS-Erweiterung unterstützt. In den meisten Fällen solltest du diesen Wert auf „an“ schalten, wenn du eine Verbindung zu Port 465 herstellst. Für Port 587 oder 25 behalte den Wert „aus“ bei. (von nodemailer.com/smtp/#authentication)",
+ "LabelEmailSettingsTestAddress": "Test-Adresse",
"LabelEmbeddedCover": "Eingebettetes Cover",
"LabelEnable": "Aktivieren",
+ "LabelEncodingBackupLocation": "Eine Sicherungskopie der originalen Audiodateien wird gespeichert in:",
+ "LabelEncodingChaptersNotEmbedded": "Kapitel sind in mehrspurigen Hörbüchern nicht eingebettet.",
+ "LabelEncodingClearItemCache": "Stelle sicher, dass der Cache regelmäßig geleert wird.",
+ "LabelEncodingFinishedM4B": "Die fertige M4B-Datei wird im Hörbuch-Ordner unter folgendem Pfad abgelegt:",
+ "LabelEncodingInfoEmbedded": "Metadaten werden in die Audiodateien innerhalb des Audiobook Ordners eingebunden.",
+ "LabelEncodingStartedNavigation": "Sobald die Aufgabe gestartet ist, kann die Seite verlassen werden.",
+ "LabelEncodingTimeWarning": "Kodierung kann bis zu 30 Minuten dauern.",
+ "LabelEncodingWarningAdvancedSettings": "Achtung: Ändere diese Einstellungen nur, wenn du dich mit ffmpeg Kodierung auskennst.",
+ "LabelEncodingWatcherDisabled": "Wenn der Watcher deaktiviert ist musst du das Hörbuch danach erneut scannen.",
"LabelEnd": "Ende",
+ "LabelEndOfChapter": "Ende des Kapitels",
"LabelEpisode": "Episode",
+ "LabelEpisodeNotLinkedToRssFeed": "Episode nicht mit RSS-Feed verknüpft",
+ "LabelEpisodeNumber": "Episode #{0}",
"LabelEpisodeTitle": "Episodentitel",
"LabelEpisodeType": "Episodentyp",
+ "LabelEpisodeUrlFromRssFeed": "Episoden URL vom RSS-Feed",
+ "LabelEpisodes": "Episoden",
+ "LabelEpisodic": "Episodisch",
"LabelExample": "Beispiel",
+ "LabelExpandSeries": "Serie ausklappen",
+ "LabelExpandSubSeries": "Unterserie ausklappen",
"LabelExplicit": "Explizit (Altersbeschränkung)",
"LabelExplicitChecked": "Explicit (Altersbeschränkung) (angehakt)",
"LabelExplicitUnchecked": "Not Explicit (Altersbeschränkung) (nicht angehakt)",
- "LabelFeedURL": "Feed URL",
+ "LabelExportOPML": "OPML exportieren",
+ "LabelFeedURL": "Feed-URL",
"LabelFetchingMetadata": "Abholen der Metadaten",
"LabelFile": "Datei",
"LabelFileBirthtime": "Datei erstellt",
+ "LabelFileBornDate": "Geboren {0}",
"LabelFileModified": "Datei geändert",
+ "LabelFileModifiedDate": "Geändert {0}",
"LabelFilename": "Dateiname",
"LabelFilterByUser": "Nach Benutzern filtern",
"LabelFindEpisodes": "Episoden suchen",
@@ -304,24 +354,28 @@
"LabelFolder": "Ordner",
"LabelFolders": "Verzeichnisse",
"LabelFontBold": "Fett",
+ "LabelFontBoldness": "Schriftstärke",
"LabelFontFamily": "Schriftfamilie",
"LabelFontItalic": "Kursiv",
"LabelFontScale": "Schriftgröße",
"LabelFontStrikethrough": "Durchgestrichen",
"LabelFormat": "Format",
+ "LabelFull": "Voll",
"LabelGenre": "Kategorie",
"LabelGenres": "Kategorien",
"LabelHardDeleteFile": "Datei dauerhaft löschen",
- "LabelHasEbook": "E-Book verfügbar",
- "LabelHasSupplementaryEbook": "Ergänzendes E-Book verfügbar",
+ "LabelHasEbook": "E-Buch verfügbar",
+ "LabelHasSupplementaryEbook": "Ergänzendes E-Buch verfügbar",
+ "LabelHideSubtitles": "Untertitel ausblenden",
"LabelHighestPriority": "Höchste Priorität",
- "LabelHost": "Host",
+ "LabelHost": "Anbieter",
"LabelHour": "Stunde",
+ "LabelHours": "Stunden",
"LabelIcon": "Symbol",
"LabelImageURLFromTheWeb": "Bild-URL vom Internet",
+ "LabelInProgress": "In Bearbeitung",
"LabelIncludeInTracklist": "In die Titelliste aufnehmen",
"LabelIncomplete": "Unvollständig",
- "LabelInProgress": "In Bearbeitung",
"LabelInterval": "Intervall",
"LabelIntervalCustomDailyWeekly": "Benutzerdefiniert Täglich/Wöchentlich",
"LabelIntervalEvery12Hours": "Alle 12 Stunden",
@@ -333,19 +387,23 @@
"LabelIntervalEveryHour": "Jede Stunde",
"LabelInvert": "Umkehren",
"LabelItem": "Medium",
+ "LabelJumpBackwardAmount": "Zurückspringen Zeit",
+ "LabelJumpForwardAmount": "Vorwärtsspringn Zeit",
"LabelLanguage": "Sprache",
"LabelLanguageDefaultServer": "Standard-Server-Sprache",
+ "LabelLanguages": "Sprachen",
"LabelLastBookAdded": "Zuletzt hinzugefügtes Buch",
"LabelLastBookUpdated": "Zuletzt aktualisiertes Buch",
"LabelLastSeen": "Zuletzt gesehen",
"LabelLastTime": "Letztes Mal",
"LabelLastUpdate": "Letzte Aktualisierung",
- "LabelLayout": "Layout",
+ "LabelLayout": "Ansicht",
"LabelLayoutSinglePage": "Eine Seite",
"LabelLayoutSplitPage": "Geteilte Seite",
"LabelLess": "Weniger",
"LabelLibrariesAccessibleToUser": "Für Benutzer zugängliche Bibliotheken",
"LabelLibrary": "Bibliothek",
+ "LabelLibraryFilterSublistEmpty": "Keine {0}",
"LabelLibraryItem": "Bibliothekseintrag",
"LabelLibraryName": "Bibliotheksname",
"LabelLimit": "Begrenzung",
@@ -358,42 +416,48 @@
"LabelLowestPriority": "Niedrigste Priorität",
"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",
+ "LabelMaxEpisodesToDownload": "Max. Anzahl an Episoden zum Herunterladen, 0 für unbegrenzte Episoden.",
+ "LabelMaxEpisodesToDownloadPerCheck": "Max. Anzahl neuer Episoden zum Herunterladen pro Abfrage",
+ "LabelMaxEpisodesToKeep": "Max. Anzahl zu behaltender Episoden",
+ "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",
"LabelMediaType": "Medientyp",
- "LabelMetadataOrderOfPrecedenceDescription": "Höher priorisierte Quellen für Metadaten überschreiben Metadaten aus Quellen die niedriger priorisiert sind.",
- "LabelMetadataProvider": "Metadatenanbieter",
"LabelMetaTag": "Meta Schlagwort",
"LabelMetaTags": "Meta Tags",
+ "LabelMetadataOrderOfPrecedenceDescription": "Höher priorisierte Quellen für Metadaten überschreiben Metadaten aus Quellen mit niedrigerer Priorität",
+ "LabelMetadataProvider": "Metadatenanbieter",
"LabelMinute": "Minute",
+ "LabelMinutes": "Minuten",
"LabelMissing": "Fehlend",
- "LabelMissingEbook": "E-Book fehlt",
- "LabelMissingSupplementaryEbook": "Ergänzendes E-Book fehlt",
+ "LabelMissingEbook": "E-Buch fehlt",
+ "LabelMissingSupplementaryEbook": "Ergänzendes E-Buch fehlt",
"LabelMobileRedirectURIs": "Erlaubte Weiterleitungs-URIs für die mobile App",
- "LabelMobileRedirectURIsDescription": "Dies ist eine Whitelist gültiger Umleitungs-URIs für mobile Apps. Der Standardwert ist audiobookshelf://oauth, den du entfernen oder durch zusätzliche URIs für die Integration von Drittanbieter-Apps ergänzen kannst. Die Verwendung eines Sternchens (*) als alleiniger Eintrag erlaubt jede URI.",
+ "LabelMobileRedirectURIsDescription": "Dies ist eine weiße Liste gültiger Umleitungs-URIs für mobile Apps. Der Standardwert ist audiobookshelf://oauth, den du entfernen oder durch zusätzliche URIs für die Integration von Drittanbieter-Apps ergänzen kannst. Die Verwendung eines Sternchens (*) als alleiniger Eintrag erlaubt jede URI.",
"LabelMore": "Mehr",
"LabelMoreInfo": "Mehr Infos",
"LabelName": "Name",
"LabelNarrator": "Erzähler",
"LabelNarrators": "Erzähler",
"LabelNew": "Neu",
+ "LabelNewPassword": "Neues Passwort",
"LabelNewestAuthors": "Neueste Autoren",
"LabelNewestEpisodes": "Neueste Episoden",
- "LabelNewPassword": "Neues Passwort",
"LabelNextBackupDate": "Nächstes Sicherungsdatum",
"LabelNextScheduledRun": "Nächster planmäßiger Durchlauf",
+ "LabelNoCustomMetadataProviders": "Keine benutzerdefinierten Metadata Anbieter",
"LabelNoEpisodesSelected": "Keine Episoden ausgewählt",
- "LabelNotes": "Notizen",
"LabelNotFinished": "Nicht beendet",
- "LabelNotificationAppriseURL": "Apprise URL(s)",
+ "LabelNotStarted": "Nicht begonnen",
+ "LabelNotes": "Notizen",
+ "LabelNotificationAppriseURL": "Apprise-URL(s)",
"LabelNotificationAvailableVariables": "Verfügbare Variablen",
"LabelNotificationBodyTemplate": "Textvorlage",
"LabelNotificationEvent": "Benachrichtigungs Event",
+ "LabelNotificationTitleTemplate": "Titelvorlage",
"LabelNotificationsMaxFailedAttempts": "Maximale Fehlversuche",
- "LabelNotificationsMaxFailedAttemptsHelp": "Benachrichtigungen werden deaktiviert, wenn sie mehrmals nicht gesendet werden können.",
+ "LabelNotificationsMaxFailedAttemptsHelp": "Benachrichtigungen werden deaktiviert, wenn sie mehrmals nicht gesendet werden können",
"LabelNotificationsMaxQueueSize": "Maximale Größe der Warteschlange für die Benachrichtigungsereignisse",
"LabelNotificationsMaxQueueSizeHelp": "Es wird nur 1 Ereignis pro Sekunde ausgelöst. Ereignisse werden ignoriert, wenn die Warteschlange die maximale Größe erreicht hat. Dies verhindert Benachrichtigungsspamming.",
- "LabelNotificationTitleTemplate": "Titelvorlage",
- "LabelNotStarted": "Nicht begonnen",
"LabelNumberOfBooks": "Anzahl der Hörbücher",
"LabelNumberOfEpisodes": "Anzahl der Episoden",
"LabelOpenIDAdvancedPermsClaimDescription": "Name des OpenID-Claims, der erweiterte Berechtigungen für Benutzeraktionen innerhalb der Anwendung enthält, die auf Nicht-Admin-Rollen angewendet werden (wenn konfiguriert). Wenn der Claim in der Antwort fehlt, wird der Zugang zu ABS verweigert. Fehlt eine einzelne Option, wird sie als false behandelt. Stelle sicher, dass der Claim des Identitätsanbieters der erwarteten Struktur entspricht:",
@@ -401,67 +465,84 @@
"LabelOpenIDGroupClaimDescription": "Name des OpenID-Claims, der eine Liste der Benutzergruppen enthält. Wird häufig als groups bezeichnet. Wenn konfiguriert, wird die Anwendung automatisch Rollen basierend auf den Gruppenmitgliedschaften des Benutzers zuweisen, vorausgesetzt, dass diese Gruppen im Claim als 'admin', 'user' oder 'guest' benannt sind (Groß/Kleinschreibung ist irrelevant). Der Claim eine Liste sein, und wenn ein Benutzer mehreren Gruppen angehört, wird die Anwendung die Rolle zuordnen, die dem höchsten Zugriffslevel entspricht. Wenn keine Gruppe übereinstimmt, wird der Zugang verweigert.",
"LabelOpenRSSFeed": "Öffne RSS-Feed",
"LabelOverwrite": "Überschreiben",
+ "LabelPaginationPageXOfY": "Seite {0} von {1}",
"LabelPassword": "Passwort",
"LabelPath": "Pfad",
+ "LabelPermanent": "Dauerhaft",
"LabelPermissionsAccessAllLibraries": "Zugriff auf alle Bibliotheken",
"LabelPermissionsAccessAllTags": "Zugriff auf alle Schlagwörter",
"LabelPermissionsAccessExplicitContent": "Zugriff auf explizite (alterbeschränkte) Inhalte",
- "LabelPermissionsDelete": "Löschen",
+ "LabelPermissionsCreateEreader": "Kann E-Reader erstellen",
+ "LabelPermissionsDelete": "Darf Löschen",
"LabelPermissionsDownload": "Herunterladen",
"LabelPermissionsUpdate": "Aktualisieren",
"LabelPermissionsUpload": "Hochladen",
"LabelPersonalYearReview": "Dein Jahr in Übersicht ({0})",
"LabelPhotoPathURL": "Foto Pfad/URL",
- "LabelPlaylists": "Wiedergabelisten",
"LabelPlayMethod": "Abspielmethode",
+ "LabelPlayerChapterNumberMarker": "{0} von {1}",
+ "LabelPlaylists": "Wiedergabelisten",
"LabelPodcast": "Podcast",
- "LabelPodcasts": "Podcasts",
"LabelPodcastSearchRegion": "Podcast-Suchregion",
"LabelPodcastType": "Podcast Typ",
+ "LabelPodcasts": "Podcasts",
"LabelPort": "Port",
"LabelPrefixesToIgnore": "Zu ignorierende(s) Vorwort(e) (Groß- und Kleinschreibung wird nicht berücksichtigt)",
"LabelPreventIndexing": "Verhindere, dass dein Feed von iTunes- und Google-Podcast-Verzeichnissen indiziert wird",
- "LabelPrimaryEbook": "Primäres E-Book",
+ "LabelPrimaryEbook": "Primäres E-Buch",
"LabelProgress": "Fortschritt",
"LabelProvider": "Anbieter",
+ "LabelProviderAuthorizationValue": "Autorisierungsheader-Wert",
"LabelPubDate": "Veröffentlichungsdatum",
- "LabelPublisher": "Herausgeber",
"LabelPublishYear": "Jahr",
+ "LabelPublishedDate": "Veröffentlicht {0}",
+ "LabelPublishedDecade": "Jahrzehnt",
+ "LabelPublishedDecades": "Jahrzehnte",
+ "LabelPublisher": "Herausgeber",
+ "LabelPublishers": "Herausgeber",
+ "LabelRSSFeedCustomOwnerEmail": "Benutzerdefinierte Eigentümer-E-Mail",
+ "LabelRSSFeedCustomOwnerName": "Benutzerdefinierter Name des Eigentümers",
+ "LabelRSSFeedOpen": "RSS Feed offen",
+ "LabelRSSFeedPreventIndexing": "Indizierung verhindern",
+ "LabelRSSFeedSlug": "RSS-Feed-Schlagwort",
+ "LabelRSSFeedURL": "RSS-Feed-URL",
+ "LabelRandomly": "Zufällig",
+ "LabelReAddSeriesToContinueListening": "Serien erneut zur Fortsetzungsliste hinzufügen",
"LabelRead": "Lesen",
"LabelReadAgain": "Noch einmal Lesen",
- "LabelReadEbookWithoutProgress": "E-Book lesen und Fortschritt verwerfen",
- "LabelRecentlyAdded": "Kürzlich hinzugefügt",
+ "LabelReadEbookWithoutProgress": "E-Buch lesen und Fortschritt verwerfen",
"LabelRecentSeries": "Aktuelle Serien",
+ "LabelRecentlyAdded": "Kürzlich hinzugefügt",
"LabelRecommended": "Empfohlen",
"LabelRedo": "Wiederholen",
"LabelRegion": "Region",
"LabelReleaseDate": "Veröffentlichungsdatum",
- "LabelRemoveCover": "Lösche Titelbild",
+ "LabelRemoveAllMetadataAbs": "Alle metadata.abs Dateien löschen",
+ "LabelRemoveAllMetadataJson": "Alle metadata.json Dateien löschen",
+ "LabelRemoveCover": "Entferne Titelbild",
+ "LabelRemoveMetadataFile": "Metadaten-Dateien in Bibliotheksordnern löschen",
+ "LabelRemoveMetadataFileHelp": "Alle metadata.json und metadata.abs Dateien aus den Ordnern {0} löschen.",
"LabelRowsPerPage": "Zeilen pro Seite",
- "LabelRSSFeedCustomOwnerEmail": "Benutzerdefinierte Eigentümer-E-Mail",
- "LabelRSSFeedCustomOwnerName": "Benutzerdefinierter Name des Eigentümers",
- "LabelRSSFeedOpen": "RSS Feed Offen",
- "LabelRSSFeedPreventIndexing": "Indizierung verhindern",
- "LabelRSSFeedSlug": "RSS Feed Schlagwort",
- "LabelRSSFeedURL": "RSS Feed URL",
"LabelSearchTerm": "Begriff suchen",
"LabelSearchTitle": "Titel suchen",
"LabelSearchTitleOrASIN": "Titel oder ASIN suchen",
"LabelSeason": "Staffel",
+ "LabelSeasonNumber": "Staffel #{0}",
"LabelSelectAll": "Alles auswählen",
"LabelSelectAllEpisodes": "Alle Episoden auswählen",
"LabelSelectEpisodesShowing": "{0} ausgewählte Episoden werden angezeigt",
"LabelSelectUsers": "Benutzer auswählen",
- "LabelSendEbookToDevice": "E-Book senden an...",
+ "LabelSendEbookToDevice": "E-Buch senden an …",
"LabelSequence": "Reihenfolge",
"LabelSeries": "Serien",
"LabelSeriesName": "Serienname",
"LabelSeriesProgress": "Serienfortschritt",
+ "LabelServerLogLevel": "Server Log Level",
"LabelServerYearReview": "Server Jahr in Übersicht ({0})",
"LabelSetEbookAsPrimary": "Als Hauptbuch setzen",
"LabelSetEbookAsSupplementary": "Als Ergänzung setzen",
"LabelSettingsAudiobooksOnly": "Nur Hörbücher",
- "LabelSettingsAudiobooksOnlyHelp": "Wenn du diese Einstellung aktivierst, werden E-Book-Dateien ignoriert, es sei denn, sie befinden sich in einem Hörbuchordner. In diesem Fall werden sie als zusätzliche E-Books festgelegt",
+ "LabelSettingsAudiobooksOnlyHelp": "Wenn du diese Einstellung aktivierst, werden E-Buch-Dateien ignoriert, es sei denn, sie befinden sich in einem Hörbuchordner. In diesem Fall werden sie als zusätzliche E-Bücher festgelegt",
"LabelSettingsBookshelfViewHelp": "Skeumorphes Design mit Holzeinlegeböden",
"LabelSettingsChromecastSupport": "Chromecastunterstützung",
"LabelSettingsDateFormat": "Datumsformat",
@@ -481,8 +562,11 @@
"LabelSettingsHideSingleBookSeriesHelp": "Serien, die nur ein einzelnes Buch enthalten, werden auf der Startseite und in der Serienansicht ausgeblendet.",
"LabelSettingsHomePageBookshelfView": "Startseite verwendet die Bücherregalansicht",
"LabelSettingsLibraryBookshelfView": "Bibliothek verwendet die Bücherregalansicht",
- "LabelSettingsOnlyShowLaterBooksInContinueSeries": "Skip earlier books in Continue Series",
- "LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "The Continue Series home page shelf shows the first book not started in series that have at least one book finished and no books in progress. Enabling this setting will continue series from the furthest completed book instead of the first book not started.",
+ "LabelSettingsLibraryMarkAsFinishedPercentComplete": "In Prozent gehört größer als",
+ "LabelSettingsLibraryMarkAsFinishedTimeRemaining": "Verbleibende Zeit ist weniger als (Sekunden)",
+ "LabelSettingsLibraryMarkAsFinishedWhen": "Markiere Mediendateien als fertig, wenn",
+ "LabelSettingsOnlyShowLaterBooksInContinueSeries": "Überspringe vorherige Bücher in fortführender Serie",
+ "LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "Die Startseite von \"Fortführende Serien\" zeigt das erste noch nicht begonnene Buch in Serien an, die mindestens ein Buch abgeschlossen und keine Bücher begonnen haben. Wenn diese Einstellung aktiviert wird, werden Serien ab dem letzten abgeschlossenen Buch fortgesetzt und nicht ab dem ersten nicht begonnenen Buch.",
"LabelSettingsParseSubtitles": "Analysiere Untertitel",
"LabelSettingsParseSubtitlesHelp": "Extrahiere den Untertitel von Medium-Ordnernamen. Untertitel müssen vom eigentlichem Titel durch ein \" - \" getrennt sein. Beispiel: \"Titel - Untertitel\"",
"LabelSettingsPreferMatchedMetadata": "Bevorzuge online abgestimmte Metadaten",
@@ -490,23 +574,27 @@
"LabelSettingsSkipMatchingBooksWithASIN": "Überspringe beim Online-Abgleich alle Bücher die bereits eine ASIN haben",
"LabelSettingsSkipMatchingBooksWithISBN": "Überspringe beim Online-Abgleich alle Bücher die bereits eine ISBN haben",
"LabelSettingsSortingIgnorePrefixes": "Vorwort/Artikel beim Sortieren ignorieren",
- "LabelSettingsSortingIgnorePrefixesHelp": "Beispiel: für den Artikel \"der\" würde der Mediumtitel \"Der Buchtitel\" als \"Buchtitel, Der\" sortiert werden.",
+ "LabelSettingsSortingIgnorePrefixesHelp": "Beispiel: für den Artikel \"der\" würde der Mediumtitel \"Der Buchtitel\" als \"Buchtitel, Der\" sortiert werden",
"LabelSettingsSquareBookCovers": "Benutze quadratische Titelbilder",
"LabelSettingsSquareBookCoversHelp": "Bevorzuge quadratische Titelbilder gegenüber den Standardtielbildern im Verhältnis 1,6:1",
"LabelSettingsStoreCoversWithItem": "Titelbilder im Medienordner speichern",
- "LabelSettingsStoreCoversWithItemHelp": "Standardmäßig werden die Titelbilder in /metadata/items gespeichert. Wenn diese Option aktiviert ist, werden die Titelbilder als jpg Datei in dem gleichen Ordner gespeichert in welchem sich auch das Medium befindet. Es wird immer nur eine Datei mit dem Namen \"cover.jpg\" gespeichert.",
+ "LabelSettingsStoreCoversWithItemHelp": "Standardmäßig werden die Titelbilder in /metadata/items gespeichert. Wenn diese Option aktiviert ist, werden die Titelbilder als jpg Datei in dem gleichen Ordner gespeichert in welchem sich auch das Medium befindet. Es wird immer nur eine Datei mit dem Namen \"cover.jpg\" gespeichert",
"LabelSettingsStoreMetadataWithItem": "Metadaten als OPF-Datei im Medienordner speichern",
"LabelSettingsStoreMetadataWithItemHelp": "Standardmäßig werden die Metadaten in /metadata/items gespeichert. Wenn diese Option aktiviert ist, werden die Metadaten als OPF-Datei (Textdatei) in dem gleichen Ordner gespeichert in welchem sich auch das Medium befindet",
"LabelSettingsTimeFormat": "Zeitformat",
+ "LabelShare": "Freigeben",
+ "LabelShareOpen": "Freigabe",
+ "LabelShareURL": "Freigabe URL",
"LabelShowAll": "Alles anzeigen",
"LabelShowSeconds": "Zeige Sekunden",
+ "LabelShowSubtitles": "Untertitel anzeigen",
"LabelSize": "Größe",
"LabelSleepTimer": "Schlummerfunktion",
"LabelSlug": "URL Teil",
"LabelStart": "Start",
+ "LabelStartTime": "Startzeit",
"LabelStarted": "Gestartet",
"LabelStartedAt": "Gestartet am",
- "LabelStartTime": "Startzeit",
"LabelStatsAudioTracks": "Audiodateien",
"LabelStatsAuthors": "Autoren",
"LabelStatsBestDay": "Bester Tag",
@@ -521,7 +609,7 @@
"LabelStatsMinutesListening": "Gehörte Minuten",
"LabelStatsOverallDays": "Gesamte Tage",
"LabelStatsOverallHours": "Gesamte Stunden",
- "LabelStatsWeekListening": "Gehörte Wochen",
+ "LabelStatsWeekListening": "Wochenhördauer",
"LabelSubtitle": "Untertitel",
"LabelSupportedFileTypes": "Unterstützte Dateitypen",
"LabelTag": "Schlagwort",
@@ -533,10 +621,15 @@
"LabelTextEditorLink": "Link",
"LabelTextEditorNumberedList": "nummerierte Liste",
"LabelTextEditorUnlink": "entkoppeln",
- "LabelTheme": "Theme",
+ "LabelTheme": "Farbschema",
"LabelThemeDark": "Dunkel",
"LabelThemeLight": "Hell",
"LabelTimeBase": "Basiszeit",
+ "LabelTimeDurationXHours": "{0} Stunden",
+ "LabelTimeDurationXMinutes": "{0} Minuten",
+ "LabelTimeDurationXSeconds": "{0} Sekunden",
+ "LabelTimeInMinutes": "Zeit in Minuten",
+ "LabelTimeLeft": "{0} verbleibend",
"LabelTimeListened": "Gehörte Zeit",
"LabelTimeListenedToday": "Heute gehörte Zeit",
"LabelTimeRemaining": "{0} verbleibend",
@@ -544,41 +637,49 @@
"LabelTitle": "Titel",
"LabelToolsEmbedMetadata": "Metadaten einbetten",
"LabelToolsEmbedMetadataDescription": "Bettet die Metadaten einschließlich des Titelbildes und der Kapitel in die Audiodatein ein.",
+ "LabelToolsM4bEncoder": "M4B Kodierer",
"LabelToolsMakeM4b": "M4B-Datei erstellen",
"LabelToolsMakeM4bDescription": "Erstellt eine M4B-Datei (Endung \".m4b\") welche mehrere mp3-Dateien in einer einzigen Datei inkl. derer Metadaten (Beschreibung, Titelbild, Kapitel, ...) zusammenfasst. M4B-Datei können darüber hinaus Lesezeichen speichern und mit einem Abspielschutz (Passwort) versehen werden.",
- "LabelToolsSplitM4b": "M4B in MP3's aufteilen",
+ "LabelToolsSplitM4b": "M4B in MP3s aufteilen",
"LabelToolsSplitM4bDescription": "Erstellt aus einer mit Metadaten und nach Kapiteln aufgeteilten M4B-Datei seperate MP3's mit eingebetteten Metadaten, Coverbild und Kapiteln.",
"LabelTotalDuration": "Gesamtdauer",
"LabelTotalTimeListened": "Gehörte Gesamtzeit",
"LabelTrackFromFilename": "Titel aus Dateiname",
"LabelTrackFromMetadata": "Titel aus Metadaten",
- "LabelTracks": "Dateien",
+ "LabelTracks": "Titel",
"LabelTracksMultiTrack": "Mehrfachdatei",
"LabelTracksNone": "Keine Dateien",
"LabelTracksSingleTrack": "Einzeldatei",
+ "LabelTrailer": "Vorschau",
"LabelType": "Typ",
"LabelUnabridged": "Ungekürzt",
"LabelUndo": "Rückgängig machen",
"LabelUnknown": "Unbekannt",
+ "LabelUnknownPublishDate": "Unbekanntes Veröffentlichungsdatum",
"LabelUpdateCover": "Titelbild aktualisieren",
"LabelUpdateCoverHelp": "Erlaube das Überschreiben bestehender Titelbilder für die ausgewählten Hörbücher, wenn eine Übereinstimmung gefunden wird",
- "LabelUpdatedAt": "Aktualisiert am",
"LabelUpdateDetails": "Details aktualisieren",
"LabelUpdateDetailsHelp": "Erlaube das Überschreiben bestehender Details für die ausgewählten Hörbücher, wenn eine Übereinstimmung gefunden wird",
+ "LabelUpdatedAt": "Aktualisiert am",
"LabelUploaderDragAndDrop": "Ziehen und Ablegen von Dateien oder Ordnern",
"LabelUploaderDropFiles": "Dateien löschen",
"LabelUploaderItemFetchMetadataHelp": "Automatisches Aktualisieren von Titel, Autor und Serie",
+ "LabelUseAdvancedOptions": "Nutze Erweiterte Optionen",
"LabelUseChapterTrack": "Kapiteldatei verwenden",
"LabelUseFullTrack": "Gesamte Datei verwenden",
+ "LabelUseZeroForUnlimited": "0 für unbegrenzt",
"LabelUser": "Benutzer",
"LabelUsername": "Benutzername",
"LabelValue": "Wert",
"LabelVersion": "Version",
"LabelViewBookmarks": "Lesezeichen anzeigen",
"LabelViewChapters": "Kapitel anzeigen",
+ "LabelViewPlayerSettings": "Zeige player Einstellungen",
"LabelViewQueue": "Player-Warteschlange anzeigen",
"LabelVolume": "Lautstärke",
"LabelWeekdaysToRun": "Wochentage für die Ausführung",
+ "LabelXBooks": "{0} Bücher",
+ "LabelXItems": "{0} Medien",
"LabelYearReviewHide": "Verstecke Jahr in Übersicht",
"LabelYearReviewShow": "Zeige Jahr in Übersicht",
"LabelYourAudiobookDuration": "Laufzeit deines Mediums",
@@ -588,10 +689,14 @@
"MessageAddToPlayerQueue": "Zur Abspielwarteliste hinzufügen",
"MessageAppriseDescription": "Um diese Funktion nutzen zu können, musst du eine Instanz von Apprise API laufen haben oder eine API verwenden welche dieselbe Anfragen bearbeiten kann. Die Apprise API Url muss der vollständige URL-Pfad sein, an den die Benachrichtigung gesendet werden soll, z.B. wenn Ihre API-Instanz unter http://192.168.1.1:8337 läuft, würdest du http://192.168.1.1:8337/notify eingeben.",
"MessageBackupsDescription": "In einer Sicherung werden Benutzer, Benutzerfortschritte, Details zu den Bibliotheksobjekten, Servereinstellungen und Bilder welche in /metadata/items & /metadata/authors gespeichert sind gespeichert. Sicherungen enthalten keine Dateien welche in den einzelnen Bibliotheksordnern (Medien-Ordnern) gespeichert sind.",
+ "MessageBackupsLocationEditNote": "Hinweis: Durch das Aktualisieren des Backup-Speicherorts werden vorhandene Sicherungen nicht verschoben oder geändert",
+ "MessageBackupsLocationNoEditNote": "Hinweis: Der Sicherungsspeicherort wird über eine Umgebungsvariable festgelegt und kann hier nicht geändert werden.",
+ "MessageBackupsLocationPathEmpty": "Der Backup-Pfad darf nicht leer sein",
"MessageBatchQuickMatchDescription": "Der Schnellabgleich versucht, fehlende Titelbilder und Metadaten für die ausgewählten Artikel hinzuzufügen. Aktiviere die nachstehenden Optionen, damit der Schnellabgleich vorhandene Titelbilder und/oder Metadaten überschreiben kann.",
"MessageBookshelfNoCollections": "Es wurden noch keine Sammlungen erstellt",
- "MessageBookshelfNoResultsForFilter": "Keine Ergebnisse für Filter \"{0}: {1}\"",
"MessageBookshelfNoRSSFeeds": "Keine RSS-Feeds geöffnet",
+ "MessageBookshelfNoResultsForFilter": "Keine Ergebnisse für Filter \"{0}: {1}\"",
+ "MessageBookshelfNoResultsForQuery": "Keine Ergebnisse für die Abfrage",
"MessageBookshelfNoSeries": "Keine Serien vorhanden",
"MessageChapterEndIsAfter": "Ungültige Kapitelendzeit: Kapitelende > Mediumende (Kapitelende liegt nach dem Ende des Mediums)",
"MessageChapterErrorFirstNotZero": "Ungültige Kapitelstartzeit: Das erste Kapitel muss bei 0 beginnen",
@@ -601,25 +706,36 @@
"MessageCheckingCron": "Überprüfe Cron...",
"MessageConfirmCloseFeed": "Feed wird geschlossen! Bist du dir sicher?",
"MessageConfirmDeleteBackup": "Sicherung für {0} wird gelöscht! Bist du dir sicher?",
+ "MessageConfirmDeleteDevice": "Möchtest du das Lesegerät „{0}“ wirklich löschen?",
"MessageConfirmDeleteFile": "Datei wird vom System gelöscht! Bist du dir sicher?",
"MessageConfirmDeleteLibrary": "Bibliothek \"{0}\" wird dauerhaft gelöscht! Bist du dir sicher?",
"MessageConfirmDeleteLibraryItem": "Bibliothekselement wird aus der Datenbank + Festplatte gelöscht? Bist du dir sicher?",
"MessageConfirmDeleteLibraryItems": "{0} Bibliothekselemente werden aus der Datenbank + Festplatte gelöscht? Bist du dir sicher?",
+ "MessageConfirmDeleteMetadataProvider": "Möchtest du den benutzerdefinierten Metadatenanbieter \"{0}\" wirklich löschen?",
+ "MessageConfirmDeleteNotification": "Möchtest du diese Benachrichtigung wirklich löschen?",
"MessageConfirmDeleteSession": "Sitzung wird gelöscht! Bist du dir sicher?",
+ "MessageConfirmEmbedMetadataInAudioFiles": "Bist du dir sicher, dass die Metadaten in {0} Audiodateien eingebettet werden sollen?",
"MessageConfirmForceReScan": "Scanvorgang erzwingen! Bist du dir sicher?",
"MessageConfirmMarkAllEpisodesFinished": "Alle Episoden werden als abgeschlossen markiert! Bist du dir sicher?",
"MessageConfirmMarkAllEpisodesNotFinished": "Alle Episoden werden als nicht abgeschlossen markiert! Bist du dir sicher?",
+ "MessageConfirmMarkItemFinished": "Möchtest du \"{0}\" wirklich als fertig markieren?",
+ "MessageConfirmMarkItemNotFinished": "Möchtest du \"{0}\" wirklich als nicht fertig markieren?",
"MessageConfirmMarkSeriesFinished": "Alle Medien dieser Reihe werden als abgeschlossen markiert! Bist du dir sicher?",
"MessageConfirmMarkSeriesNotFinished": "Alle Medien dieser Reihe werden als nicht abgeschlossen markiert! Bist du dir sicher?",
+ "MessageConfirmNotificationTestTrigger": "Diese Benachrichtigung mit Testdaten abfeuern?",
"MessageConfirmPurgeCache": "Cache leeren wird das ganze Verzeichnis /metadata/cache löschen.
Bist du dir sicher, dass das Cache Verzeichnis gelöscht werden soll?",
+ "MessageConfirmPurgeItemsCache": "Durch Elementcache leeren wird das gesamte Verzeichnis unter /metadata/cache/items gelöscht. Bist du dir sicher?",
"MessageConfirmQuickEmbed": "Warnung! Audiodateien werden bei der Schnelleinbettung nicht gesichert! Achte darauf, dass du eine Sicherungskopie der Audiodateien besitzt.
Möchtest du fortfahren?",
+ "MessageConfirmQuickMatchEpisodes": "Schnelles Zuordnen von Episoden überschreibt die Details, wenn eine Übereinstimmung gefunden wird. Nur nicht zugeordnete Episoden werden aktualisiert. Bist du sicher?",
+ "MessageConfirmReScanLibraryItems": "{0} Elemente werden erneut gescannt! Bist du dir sicher?",
"MessageConfirmRemoveAllChapters": "Alle Kapitel werden entfernt! Bist du dir sicher?",
"MessageConfirmRemoveAuthor": "Autor \"{0}\" wird enfernt! Bist du dir sicher?",
- "MessageConfirmRemoveCollection": "Sammlung \"{0}\" wird gelöscht! Bist du dir sicher?",
- "MessageConfirmRemoveEpisode": "Episode \"{0}\" wird geloscht! Bist du dir sicher?",
- "MessageConfirmRemoveEpisodes": "{0} Episoden werden gelöscht! Bist du dir sicher?",
+ "MessageConfirmRemoveCollection": "Sammlung \"{0}\" wird entfernt! Bist du dir sicher?",
+ "MessageConfirmRemoveEpisode": "Episode \"{0}\" wird entfernt! Bist du dir sicher?",
+ "MessageConfirmRemoveEpisodes": "{0} Episoden werden entfernt! Bist du dir sicher?",
"MessageConfirmRemoveListeningSessions": "Bist du dir sicher, dass du {0} Hörsitzungen enfernen möchtest?",
- "MessageConfirmRemoveNarrator": "Erzähler \"{0}\" wird gelöscht! Bist du dir sicher?",
+ "MessageConfirmRemoveMetadataFiles": "Bist du sicher, dass du alle metadata.{0} Dateien in deinen Bibliotheksordnern löschen willst?",
+ "MessageConfirmRemoveNarrator": "Erzähler \"{0}\" wird entfernt! Bist du dir sicher?",
"MessageConfirmRemovePlaylist": "Wiedergabeliste \"{0}\" wird entfernt! Bist du dir sicher?",
"MessageConfirmRenameGenre": "Kategorie \"{0}\" in \"{1}\" für alle Hörbücher/Podcasts werden umbenannt! Bist du dir sicher?",
"MessageConfirmRenameGenreMergeNote": "Hinweis: Kategorie existiert bereits -> Kategorien werden zusammengelegt.",
@@ -627,15 +743,18 @@
"MessageConfirmRenameTag": "Tag \"{0}\" in \"{1}\" für alle Hörbücher/Podcasts werden umbenannt! Bist du dir sicher?",
"MessageConfirmRenameTagMergeNote": "Hinweis: Tag existiert bereits -> Tags werden zusammengelegt.",
"MessageConfirmRenameTagWarning": "Warnung! Ein ähnlicher Tag mit einem anderen Wortlaut existiert bereits: \"{0}\".",
- "MessageConfirmReScanLibraryItems": "{0} Elemente werden erneut gescannt! Bist du dir sicher?",
- "MessageConfirmSendEbookToDevice": "{0} E-Book \"{1}\" wird auf das Gerät \"{2}\" gesendet! Bist du dir sicher?",
+ "MessageConfirmResetProgress": "Möchtest du Ihren Fortschritt wirklich zurücksetzen?",
+ "MessageConfirmSendEbookToDevice": "{0} E-Buch „{1}“ wird auf das Gerät „{2}“ gesendet! Bist du dir sicher?",
+ "MessageConfirmUnlinkOpenId": "Möchtest du die Verknüpfung dieses Benutzers mit OpenID wirklich löschen?",
"MessageDownloadingEpisode": "Episode wird heruntergeladen",
"MessageDragFilesIntoTrackOrder": "Verschiebe die Dateien in die richtige Reihenfolge",
+ "MessageEmbedFailed": "Einbetten fehlgeschlagen!",
"MessageEmbedFinished": "Einbettung abgeschlossen!",
+ "MessageEmbedQueue": "Eingereiht zum einbinden von Metadaten ({0} in Warteschlange)",
"MessageEpisodesQueuedForDownload": "{0} Episode(n) in der Warteschlange zum Herunterladen",
- "MessageEreaderDevices": "Um die Zustellung von E-Books sicherzustellen, musst du eventuell die oben genannte E-Mail-Adresse als gültigen Absender für jedes unten aufgeführte Gerät hinzufügen.",
+ "MessageEreaderDevices": "Um die Zustellung von E-Büchern sicherzustellen, musst du eventuell die oben genannte E-Mail-Adresse als gültigen Absender für jedes unten aufgeführte Gerät hinzufügen.",
"MessageFeedURLWillBe": "Feed-URL wird {0} sein",
- "MessageFetching": "Abrufen...",
+ "MessageFetching": "Wird abgerufen …",
"MessageForceReScanDescription": "Durchsucht alle Dateien erneut, wie bei einem frischen Scan. ID3-Tags von Audiodateien, OPF-Dateien und Textdateien werden neu durchsucht.",
"MessageImportantNotice": "Wichtiger Hinweis!",
"MessageInsertChapterBelow": "Kapitel unten einfügen",
@@ -643,7 +762,7 @@
"MessageItemsUpdated": "{0} Medien aktualisiert",
"MessageJoinUsOn": "Besuche uns auf",
"MessageListeningSessionsInTheLastYear": "{0} Ereignisse im letzten Jahr",
- "MessageLoading": "Laden...",
+ "MessageLoading": "Wird geladen …",
"MessageLoadingFolders": "Lade Ordner...",
"MessageLogsDescription": "Die Logs werdern in /metadata/logs als JSON Dateien gespeichert. Crash logs werden in /metadata/logs/crash_logs.txt gespeichert.",
"MessageM4BFailed": "M4B fehlgeschlagen!",
@@ -662,6 +781,7 @@
"MessageNoCollections": "Keine Sammlungen",
"MessageNoCoversFound": "Keine Titelbilder gefunden",
"MessageNoDescription": "Keine Beschreibung",
+ "MessageNoDevices": "Keine Geräte",
"MessageNoDownloadsInProgress": "Derzeit keine Downloads in Arbeit",
"MessageNoDownloadsQueued": "Keine Downloads in der Warteschlange",
"MessageNoEpisodeMatchesFound": "Keine Episodenübereinstimmungen gefunden",
@@ -675,25 +795,31 @@
"MessageNoLogs": "Keine Protokolle",
"MessageNoMediaProgress": "Kein Medienfortschritt",
"MessageNoNotifications": "Keine Benachrichtigungen",
+ "MessageNoPodcastFeed": "Ungültiger Podcast: Kein Feed",
"MessageNoPodcastsFound": "Keine Podcasts gefunden",
"MessageNoResults": "Keine Ergebnisse",
"MessageNoSearchResultsFor": "Keine Suchergebnisse für \"{0}\"",
"MessageNoSeries": "Keine Serien",
"MessageNoTags": "Keine Tags",
"MessageNoTasksRunning": "Keine laufenden Aufgaben",
- "MessageNotYetImplemented": "Noch nicht implementiert",
- "MessageNoUpdateNecessary": "Keine Aktualisierung erforderlich",
"MessageNoUpdatesWereNecessary": "Keine Aktualisierungen waren notwendig",
"MessageNoUserPlaylists": "Keine Wiedergabelisten vorhanden",
+ "MessageNotYetImplemented": "Noch nicht implementiert",
+ "MessageOpmlPreviewNote": "Hinweis: Dies ist nur eine Vorschau der geparsten OPML Datei. Der eigentliche Podcast-Titel wird aus dem RSS-Feed übernommen.",
"MessageOr": "Oder",
"MessagePauseChapter": "Kapitelwiedergabe pausieren",
"MessagePlayChapter": "Kapitelanfang anhören",
"MessagePlaylistCreateFromCollection": "Erstelle eine Wiedergabeliste aus der Sammlung",
+ "MessagePleaseWait": "Bitte warten...",
"MessagePodcastHasNoRSSFeedForMatching": "Der Podcast hat keine RSS-Feed-Url welche für den Online-Abgleich verwendet werden kann",
+ "MessagePodcastSearchField": "Suchbegriff oder RSS-Feed URL eingeben",
+ "MessageQuickEmbedInProgress": "Schnellabgleich läuft",
+ "MessageQuickEmbedQueue": "In Warteschlange für Schnelles einbinden ({0} eingereiht)",
+ "MessageQuickMatchAllEpisodes": "Quick Match aller Episoden",
"MessageQuickMatchDescription": "Füllt leere Details und Titelbilder mit dem ersten Treffer aus '{0}'. Überschreibt keine Details, es sei denn, die Server-Einstellung \"Passende Metadaten bevorzugen\" ist aktiviert.",
- "MessageRemoveChapter": "Kapitel löschen",
+ "MessageRemoveChapter": "Kapitel entfernen",
"MessageRemoveEpisodes": "Entferne {0} Episode(n)",
- "MessageRemoveFromPlayerQueue": "Aus der Abspielwarteliste löschen",
+ "MessageRemoveFromPlayerQueue": "Aus der Abspielwarteliste entfernen",
"MessageRemoveUserWarning": "Benutzer \"{0}\" wird dauerhaft gelöscht! Bist du dir sicher?",
"MessageReportBugsAndContribute": "Fehler melden, Funktionen anfordern und mitwirken",
"MessageResetChaptersConfirm": "Kapitel und vorgenommenen Änderungen werden zurückgesetzt und rückgängig gemacht! Bist du dir sicher?",
@@ -703,7 +829,45 @@
"MessageSelected": "{0} ausgewählt",
"MessageServerCouldNotBeReached": "Server kann nicht erreicht werden",
"MessageSetChaptersFromTracksDescription": "Kaitelerstellung basiert auf den existierenden einzelnen Audiodateien. Pro existierende Audiodatei wird 1 Kapitel erstellt, wobei deren Kapitelname aus dem Audiodateinamen extrahiert wird",
+ "MessageShareExpirationWillBe": "Läuft am {0} ab",
+ "MessageShareExpiresIn": "Läuft in {0} ab",
+ "MessageShareURLWillBe": "Der Freigabe Link wird {0} sein.",
"MessageStartPlaybackAtTime": "Start der Wiedergabe für \"{0}\" bei {1}?",
+ "MessageTaskAudioFileNotWritable": "Die Audiodatei \"{0}\" ist schreibgeschützt",
+ "MessageTaskCanceledByUser": "Aufgabe vom Benutzer abgebrochen",
+ "MessageTaskDownloadingEpisodeDescription": "Folge \"{0}\" wird heruntergeladen",
+ "MessageTaskEmbeddingMetadata": "Metadaten werden eingebettet",
+ "MessageTaskEmbeddingMetadataDescription": "Metadaten werden in Hörbuch \"{0}\" eingebettet",
+ "MessageTaskEncodingM4b": "M4B wird encodiert",
+ "MessageTaskEncodingM4bDescription": "Hörbuch \"{0}\" wird in eine einzelne m4b Datei encodiert",
+ "MessageTaskFailed": "Fehlgeschlagen",
+ "MessageTaskFailedToBackupAudioFile": "Sicherung der Audiodatei \"{0}\" fehlgeschlagen",
+ "MessageTaskFailedToCreateCacheDirectory": "Fehler beim erstellen des Cache-Verzeichnisses",
+ "MessageTaskFailedToEmbedMetadataInFile": "Einbetten der Metadaten in die Datei \"{0}\" fehlgeschlagen",
+ "MessageTaskFailedToMergeAudioFiles": "Fehler beim zusammenführen der Audiodateien",
+ "MessageTaskFailedToMoveM4bFile": "Fehler beim verschieben der m4b Datei",
+ "MessageTaskFailedToWriteMetadataFile": "Fehler beim schreiben der Metadaten-Datei",
+ "MessageTaskMatchingBooksInLibrary": "Vergleiche Bücher in Bibliothek \"{0}\"",
+ "MessageTaskNoFilesToScan": "Keine Dateien zum scannen",
+ "MessageTaskOpmlImport": "OPML-Import",
+ "MessageTaskOpmlImportDescription": "Podcasts von {0} RSS-Feeds werden ersrtellt",
+ "MessageTaskOpmlImportFeed": "OPML-Feed importieren",
+ "MessageTaskOpmlImportFeedDescription": "RSS-Feed \"{0}\" wird importiert",
+ "MessageTaskOpmlImportFeedFailed": "Podcast Feed konnte nicht geladen werden",
+ "MessageTaskOpmlImportFeedPodcastDescription": "Podcast \"{0}\" wird erstellt",
+ "MessageTaskOpmlImportFeedPodcastExists": "Der Podcast ist bereits im Pfad vorhanden",
+ "MessageTaskOpmlImportFeedPodcastFailed": "Erstellen des Podcasts fehlgeschlagen",
+ "MessageTaskOpmlImportFinished": "{0} Podcasts hinzugefügt",
+ "MessageTaskOpmlParseFailed": "Fehler beim lesen der OPML Datei",
+ "MessageTaskOpmlParseFastFail": "Ungültie OPML Datei: ODER tag wurde nicht gefunden",
+ "MessageTaskOpmlParseNoneFound": "Keine feeds in der OPML Datei gefunden",
+ "MessageTaskScanItemsAdded": "{0} hinzugefügt",
+ "MessageTaskScanItemsMissing": "{0} fehlend",
+ "MessageTaskScanItemsUpdated": "{0} aktualisiert",
+ "MessageTaskScanNoChangesNeeded": "Keine Änderungen nötig",
+ "MessageTaskScanningFileChanges": "Überprüfe \"{0}\" nach geänderten Dateien",
+ "MessageTaskScanningLibrary": "Bibliothek \"{0}\" wird durchsucht",
+ "MessageTaskTargetDirectoryNotWritable": "Das Zielverzeichnis ist schreibgeschützt",
"MessageThinking": "Nachdenken...",
"MessageUploaderItemFailed": "Hochladen fehlgeschlagen",
"MessageUploaderItemSuccess": "Erfolgreich hochgeladen!",
@@ -715,96 +879,194 @@
"MessageYourAudiobookDurationIsShorter": "Die Dauer deines Mediums ist kürzer als die gefundene Dauer",
"NoteChangeRootPassword": "Der Root-Benutzer (Hauptbenutzer) ist der einzige Benutzer, der ein leeres Passwort haben kann",
"NoteChapterEditorTimes": "Hinweis: Die Anfangszeit des ersten Kapitels muss bei 0:00 beginnen und die Anfangszeit des letzten Kapitels darf die Dauer des Mediums nicht überschreiten.",
- "NoteFolderPicker": "Hinweis: Bereits zugeordnete Ordner werden nicht angezeigt.",
- "NoteRSSFeedPodcastAppsHttps": "Warnung: Die meisten Podcast-Apps verlangen, dass die URL des RSS-Feeds HTTPS verwendet.",
+ "NoteFolderPicker": "Hinweis: Bereits zugeordnete Ordner werden nicht angezeigt",
+ "NoteRSSFeedPodcastAppsHttps": "Warnung: Die meisten Podcast-Apps verlangen, dass die URL des RSS-Feeds HTTPS verwendet",
"NoteRSSFeedPodcastAppsPubDate": "Warnung: 1 oder mehrere deiner Episoden haben kein Veröffentlichungsdatum. Einige Podcast-Apps verlangen dies.",
"NoteUploaderFoldersWithMediaFiles": "Ordner mit Mediendateien werden als separate Bibliothekselemente behandelt.",
"NoteUploaderOnlyAudioFiles": "Wenn du nur Audiodateien hochlädst, wird jede Audiodatei als ein separates Medium behandelt.",
"NoteUploaderUnsupportedFiles": "Nicht unterstützte Dateien werden ignoriert. Bei der Auswahl oder dem Löschen eines Ordners werden andere Dateien, die sich nicht in einem Elementordner befinden, ignoriert.",
+ "NotificationOnBackupCompletedDescription": "Wird ausgeführt wenn ein Backup erstellt wurde",
+ "NotificationOnBackupFailedDescription": "Wird ausgeführt wenn ein Backup fehlgeschlagen ist",
+ "NotificationOnEpisodeDownloadedDescription": "Wird ausgeführt wenn eine Podcast Folge automatisch heruntergeladen wird",
+ "NotificationOnTestDescription": "Wird ausgeführt wenn das Benachrichtigungssystem getestet wird",
"PlaceholderNewCollection": "Neuer Sammlungsname",
"PlaceholderNewFolderPath": "Neuer Ordnerpfad",
"PlaceholderNewPlaylist": "Neuer Wiedergabelistenname",
"PlaceholderSearch": "Suche...",
"PlaceholderSearchEpisode": "Suche Episode...",
- "ToastAccountUpdateFailed": "Aktualisierung des Kontos fehlgeschlagen",
+ "StatsAuthorsAdded": "Autoren hinzugefügt",
+ "StatsBooksAdded": "Bücher hinzugefügt",
+ "StatsBooksAdditional": "Einige der Neuzugänge umfassen…",
+ "StatsBooksFinished": "Beendete Bücher",
+ "StatsBooksFinishedThisYear": "Einige Bücher, die dieses Jahr beendet wurden…",
+ "StatsBooksListenedTo": "gehörte Bücher",
+ "StatsCollectionGrewTo": "Deine Bückersammlung ist gewachsen auf…",
+ "StatsSessions": "Sitzungen",
+ "StatsSpentListening": "zugehört",
+ "StatsTopAuthor": "TOP AUTOR",
+ "StatsTopAuthors": "TOP AUTOREN",
+ "StatsTopGenre": "TOP GENRE",
+ "StatsTopGenres": "TOP GENRES",
+ "StatsTopMonth": "TOP MONAT",
+ "StatsTopNarrator": "TOP SPRECHER",
+ "StatsTopNarrators": "TOP SPRECHER",
+ "StatsTotalDuration": "Mit einer totalen Dauer von…",
+ "StatsYearInReview": "DAS JAHR IM RÜCKBLICK",
"ToastAccountUpdateSuccess": "Konto aktualisiert",
- "ToastAuthorImageRemoveFailed": "Bild konnte nicht entfernt werden",
+ "ToastAppriseUrlRequired": "Eine Apprise-URL ist notwendig",
+ "ToastAsinRequired": "ASIN ist erforderlich",
"ToastAuthorImageRemoveSuccess": "Autorenbild entfernt",
- "ToastAuthorUpdateFailed": "Aktualisierung des Autors fehlgeschlagen",
+ "ToastAuthorNotFound": "Autor \"{0}\" nicht gefunden",
+ "ToastAuthorRemoveSuccess": "Autor entfernt",
+ "ToastAuthorSearchNotFound": "Autor nicht gefunden",
"ToastAuthorUpdateMerged": "Autor zusammengeführt",
"ToastAuthorUpdateSuccess": "Autor aktualisiert",
"ToastAuthorUpdateSuccessNoImageFound": "Autor aktualisiert (kein Bild gefunden)",
+ "ToastBackupAppliedSuccess": "Backup anwenden",
"ToastBackupCreateFailed": "Sicherung konnte nicht erstellt werden",
"ToastBackupCreateSuccess": "Sicherung erstellt",
"ToastBackupDeleteFailed": "Sicherung konnte nicht gelöscht werden",
"ToastBackupDeleteSuccess": "Sicherung gelöscht",
+ "ToastBackupInvalidMaxKeep": "Ungültige Anzahl aufzubewahrender Backups",
+ "ToastBackupInvalidMaxSize": "Ungültige maximale Backupgröße",
"ToastBackupRestoreFailed": "Sicherung konnte nicht wiederhergestellt werden",
"ToastBackupUploadFailed": "Sicherung konnte nicht hochgeladen werden",
"ToastBackupUploadSuccess": "Sicherung hochgeladen",
+ "ToastBatchDeleteFailed": "Batch-Löschen fehlgeschlagen",
+ "ToastBatchDeleteSuccess": "Batch-Löschung erfolgreich",
+ "ToastBatchQuickMatchFailed": "Batch-Schnellabgleich fehlgeschlagen!",
+ "ToastBatchQuickMatchStarted": "Batch-Schnellabgleich für {0} Bücher gestartet!",
"ToastBatchUpdateFailed": "Stapelaktualisierung fehlgeschlagen",
"ToastBatchUpdateSuccess": "Stapelaktualisierung erfolgreich",
"ToastBookmarkCreateFailed": "Lesezeichen konnte nicht erstellt werden",
"ToastBookmarkCreateSuccess": "Lesezeichen hinzugefügt",
- "ToastBookmarkRemoveFailed": "Lesezeichen konnte nicht gelöscht werden",
- "ToastBookmarkRemoveSuccess": "Lesezeichen gelöscht",
- "ToastBookmarkUpdateFailed": "Lesezeichenaktualisierung fehlgeschlagen",
+ "ToastBookmarkRemoveSuccess": "Lesezeichen entfernt",
"ToastBookmarkUpdateSuccess": "Lesezeichen aktualisiert",
"ToastCachePurgeFailed": "Cache leeren fehlgeschlagen",
"ToastCachePurgeSuccess": "Cache geleert",
"ToastChaptersHaveErrors": "Kapitel sind fehlerhaft",
"ToastChaptersMustHaveTitles": "Kapitel benötigen eindeutige Namen",
- "ToastCollectionItemsRemoveFailed": "Fehler beim Entfernen der Medien aus der Sammlung",
+ "ToastChaptersRemoved": "Kapitel entfernt",
+ "ToastChaptersUpdated": "Kapitel aktualisiert",
+ "ToastCollectionItemsAddFailed": "Das Hinzufügen von Element(en) zur Sammlung ist fehlgeschlagen",
+ "ToastCollectionItemsAddSuccess": "Element(e) erfolgreich zur Sammlung hinzugefügt",
"ToastCollectionItemsRemoveSuccess": "Medien aus der Sammlung entfernt",
- "ToastCollectionRemoveFailed": "Sammlung konnte nicht entfernt werden",
- "ToastCollectionRemoveSuccess": "Sammlung gelöscht",
- "ToastCollectionUpdateFailed": "Sammlung konnte nicht aktualisiert werden",
+ "ToastCollectionRemoveSuccess": "Sammlung entfernt",
"ToastCollectionUpdateSuccess": "Sammlung aktualisiert",
+ "ToastCoverUpdateFailed": "Cover-Update fehlgeschlagen",
"ToastDeleteFileFailed": "Die Datei konnte nicht gelöscht werden",
"ToastDeleteFileSuccess": "Datei gelöscht",
+ "ToastDeviceAddFailed": "Gerät konnte nicht hinzugefügt werden",
+ "ToastDeviceNameAlreadyExists": "E-Reader-Gerät mit diesem Namen existiert bereits",
+ "ToastDeviceTestEmailFailed": "Senden der Test-E-Mail fehlgeschlagen",
+ "ToastDeviceTestEmailSuccess": "Test-E-Mail gesendet",
+ "ToastEmailSettingsUpdateSuccess": "E-Mail-Einstellungen aktualisiert",
+ "ToastEncodeCancelFailed": "Das Encoding konnte nicht abgebrochen werden",
+ "ToastEncodeCancelSucces": "Encoding abgebrochen",
+ "ToastEpisodeDownloadQueueClearFailed": "Warteschlange konnte nicht gelöscht werden",
+ "ToastEpisodeDownloadQueueClearSuccess": "Warteschlange für Episoden-Downloads gelöscht",
+ "ToastEpisodeUpdateSuccess": "{0} Episoden aktualisiert",
+ "ToastErrorCannotShare": "Das kann nicht nativ auf diesem Gerät freigegeben werden",
"ToastFailedToLoadData": "Daten laden fehlgeschlagen",
- "ToastItemCoverUpdateFailed": "Fehler bei der Aktualisierung des Titelbildes",
+ "ToastFailedToMatch": "Fehler beim Abgleich",
+ "ToastFailedToShare": "Fehler beim Teilen",
+ "ToastFailedToUpdate": "Aktualisierung ist fehlgeschlagen",
+ "ToastInvalidImageUrl": "Ungültiger Bild URL",
+ "ToastInvalidMaxEpisodesToDownload": "Ungültige Max. Anzahl an Episoden zum Herunterladen",
+ "ToastInvalidUrl": "Ungültiger URL",
"ToastItemCoverUpdateSuccess": "Titelbild aktualisiert",
- "ToastItemDetailsUpdateFailed": "Fehler bei der Aktualisierung der Artikeldetails",
+ "ToastItemDeletedFailed": "Fehler beim löschen des Artikels",
+ "ToastItemDeletedSuccess": "Artikel gelöscht",
"ToastItemDetailsUpdateSuccess": "Artikeldetails aktualisiert",
- "ToastItemDetailsUpdateUnneeded": "Keine Aktualisierung für die Artikeldetails erforderlich",
- "ToastItemMarkedAsFinishedFailed": "Fehler bei der Markierung des Mediums als \"Beendet\"",
- "ToastItemMarkedAsFinishedSuccess": "Medium als \"Beendet\" markiert",
- "ToastItemMarkedAsNotFinishedFailed": "Fehler bei der Markierung des Mediums als \"Nicht Beendet\"",
- "ToastItemMarkedAsNotFinishedSuccess": "Medium als \"Nicht Beendet\" markiert",
+ "ToastItemMarkedAsFinishedFailed": "Fehler bei der Markierung des Artikels als \"Beendet\"",
+ "ToastItemMarkedAsFinishedSuccess": "Artikel als \"Beendet\" markiert",
+ "ToastItemMarkedAsNotFinishedFailed": "Fehler bei der Markierung des Artikels als \"Nicht Beendet\"",
+ "ToastItemMarkedAsNotFinishedSuccess": "Artikel als \"Nicht Beendet\" markiert",
+ "ToastItemUpdateSuccess": "Artikel wurde verändert",
"ToastLibraryCreateFailed": "Bibliothek konnte nicht erstellt werden",
"ToastLibraryCreateSuccess": "Bibliothek \"{0}\" erstellt",
"ToastLibraryDeleteFailed": "Bibliothek konnte nicht gelöscht werden",
"ToastLibraryDeleteSuccess": "Bibliothek gelöscht",
"ToastLibraryScanFailedToStart": "Scan konnte nicht gestartet werden",
"ToastLibraryScanStarted": "Bibliotheksscan gestartet",
- "ToastLibraryUpdateFailed": "Aktualisierung der Bibliothek fehlgeschlagen",
"ToastLibraryUpdateSuccess": "Bibliothek \"{0}\" aktualisiert",
+ "ToastMatchAllAuthorsFailed": "Nicht alle Autoren konnten zugeordnet werden",
+ "ToastMetadataFilesRemovedError": "Fehler beim löschen von metadata.{0} Dateien",
+ "ToastMetadataFilesRemovedNoneFound": "Keine metadata.{0} Dateien in Bibliothek gefunden",
+ "ToastMetadataFilesRemovedNoneRemoved": "Keine metadata.{0} Dateien gelöscht",
+ "ToastMetadataFilesRemovedSuccess": "{0} metadata.{1} Datei(en) gelöscht",
+ "ToastMustHaveAtLeastOnePath": "Es muss mindestens ein Pfad angegeben werden",
+ "ToastNameEmailRequired": "Name und E-Mail sind erforderlich",
+ "ToastNameRequired": "Name ist erforderlich",
+ "ToastNewEpisodesFound": "{0} neue Episoden gefunden",
+ "ToastNewUserCreatedFailed": "Fehler beim erstellen des Accounts: \"{ 0}\"",
+ "ToastNewUserCreatedSuccess": "Neuer Account erstellt",
+ "ToastNewUserLibraryError": "Mindestens eine Bibliothek muss ausgewählt werden",
+ "ToastNewUserPasswordError": "Passwort erforderlich, nur der root Benutzer darf ein leeres Passwort haben",
+ "ToastNewUserTagError": "Mindestens ein Tag muss ausgewählt sein",
+ "ToastNewUserUsernameError": "Nutzername eingeben",
+ "ToastNoNewEpisodesFound": "Keine neuen Episoden gefunden",
+ "ToastNoUpdatesNecessary": "Keine Änderungen nötig",
+ "ToastNotificationCreateFailed": "Fehler beim erstellen der Benachrichtig",
+ "ToastNotificationDeleteFailed": "Fehler beim löschen der Benachrichtigung",
+ "ToastNotificationFailedMaximum": "Maximale Fehlversuche muss >= 0 sein",
+ "ToastNotificationQueueMaximum": "Maximale Benachrichtigungswarteschlange muss >= 0 sein",
+ "ToastNotificationSettingsUpdateSuccess": "Benachrichtigungseinstellungen geändert",
+ "ToastNotificationTestTriggerFailed": "Fehler beim Auslösen der Testbenachrichtigung",
+ "ToastNotificationTestTriggerSuccess": "Testbenachrichtigung ausgelöst",
+ "ToastNotificationUpdateSuccess": "Benachrichtigung geändert",
"ToastPlaylistCreateFailed": "Erstellen der Wiedergabeliste fehlgeschlagen",
"ToastPlaylistCreateSuccess": "Wiedergabeliste erstellt",
- "ToastPlaylistRemoveFailed": "Löschen der Wiedergabeliste fehlgeschlagen",
"ToastPlaylistRemoveSuccess": "Wiedergabeliste gelöscht",
- "ToastPlaylistUpdateFailed": "Aktualisieren der Wiedergabeliste fehlgeschlagen",
"ToastPlaylistUpdateSuccess": "Wiedergabeliste aktualisiert",
"ToastPodcastCreateFailed": "Podcast konnte nicht erstellt werden",
"ToastPodcastCreateSuccess": "Podcast erstellt",
- "ToastRemoveItemFromCollectionFailed": "Löschen des Mediums aus der Sammlung fehlgeschlagen",
- "ToastRemoveItemFromCollectionSuccess": "Medium aus der Sammlung gelöscht",
+ "ToastPodcastGetFeedFailed": "Fehler beim abrufen des Podcast Feeds",
+ "ToastPodcastNoEpisodesInFeed": "Keine Episoden in RSS Feed gefunden",
+ "ToastPodcastNoRssFeed": "Podcast enthält keinen RSS Feed",
+ "ToastProgressIsNotBeingSynced": "Fortschritt wird nicht synchronisiert, Wiedergabe wird neu gestartet",
+ "ToastProviderCreatedFailed": "Fehler beim hinzufügen des Anbieters",
+ "ToastProviderCreatedSuccess": "Neuer Anbieter hinzugefügt",
+ "ToastProviderNameAndUrlRequired": "Name und URL notwendig",
+ "ToastProviderRemoveSuccess": "Anbieter entfernt",
"ToastRSSFeedCloseFailed": "RSS-Feed konnte nicht geschlossen werden",
"ToastRSSFeedCloseSuccess": "RSS-Feed geschlossen",
- "ToastSendEbookToDeviceFailed": "E-Book konnte nicht auf Gerät übertragen werden",
- "ToastSendEbookToDeviceSuccess": "E-Book an Gerät \"{0}\" gesendet",
+ "ToastRemoveFailed": "Fehler beim entfernen",
+ "ToastRemoveItemFromCollectionFailed": "Löschen des Mediums aus der Sammlung fehlgeschlagen",
+ "ToastRemoveItemFromCollectionSuccess": "Medium aus der Sammlung gelöscht",
+ "ToastRemoveItemsWithIssuesFailed": "Entfernen von fehlerhaften Bibliotheksartikeln fehlgeschlagenen",
+ "ToastRemoveItemsWithIssuesSuccess": "Fehlerhafte Bibliotheksartikel entfernt",
+ "ToastRenameFailed": "Umbenennen fehlgeschlagen",
+ "ToastRescanFailed": "Erneut scannen fehlgeschlagen für {0}",
+ "ToastRescanRemoved": "Erneut scannen erledigt, Artikel wurde entfernt",
+ "ToastRescanUpToDate": "Erneut scannen erledigt, Artikel wahr auf dem neusten Stand",
+ "ToastRescanUpdated": "Erneut scannen erledigt, Artikel wurde verändert",
+ "ToastScanFailed": "Fehler beim scannen des Artikels der Bibliothek",
+ "ToastSelectAtLeastOneUser": "Wähle mindestens einen Benutzer aus",
+ "ToastSendEbookToDeviceFailed": "E-Buch konnte nicht auf Gerät übertragen werden",
+ "ToastSendEbookToDeviceSuccess": "E-Buch an Gerät „{0}“ gesendet",
"ToastSeriesUpdateFailed": "Aktualisierung der Serien fehlgeschlagen",
"ToastSeriesUpdateSuccess": "Serien aktualisiert",
- "ToastServerSettingsUpdateFailed": "Die Server-Einstellungen wurden nicht gespeichert.",
"ToastServerSettingsUpdateSuccess": "Die Server-Einstellungen wurden geupdated",
+ "ToastSessionCloseFailed": "Fehler beim schließen der Sitzung",
"ToastSessionDeleteFailed": "Sitzung konnte nicht gelöscht werden",
"ToastSessionDeleteSuccess": "Sitzung gelöscht",
+ "ToastSleepTimerDone": "Einschlaf-Timer aktiviert... zZzzZz",
+ "ToastSlugMustChange": "URL-Schlüssel enthält ungültige Zeichen",
+ "ToastSlugRequired": "URL-Schlüssel erforderlich",
"ToastSocketConnected": "Verbindung zum WebSocket hergestellt",
"ToastSocketDisconnected": "Verbindung zum WebSocket verloren",
"ToastSocketFailedToConnect": "Verbindung zum WebSocket fehlgeschlagen",
"ToastSortingPrefixesEmptyError": "Es muss mindestens ein Sortier-Prefix vorhanden sein",
- "ToastSortingPrefixesUpdateFailed": "Update der Sortier-Prefixe ist fehlgeschlagen",
"ToastSortingPrefixesUpdateSuccess": "Die Sortier-Prefixe wirden geupdated ({0} Einträge)",
+ "ToastTitleRequired": "Titel erforderlich",
+ "ToastUnknownError": "Unbekannter Fehler",
+ "ToastUnlinkOpenIdFailed": "Fehler beim entkoppeln des Benutzers von OpenID",
+ "ToastUnlinkOpenIdSuccess": "Benutzer entkoppelt von OpenID",
"ToastUserDeleteFailed": "Benutzer konnte nicht gelöscht werden",
- "ToastUserDeleteSuccess": "Benutzer gelöscht"
+ "ToastUserDeleteSuccess": "Benutzer gelöscht",
+ "ToastUserPasswordChangeSuccess": "Passwort erfolgreich verändert",
+ "ToastUserPasswordMismatch": "Passwörter stimmen nicht überein",
+ "ToastUserPasswordMustChange": "Neues Passwort muss sich von altem Passwort unterscheiden",
+ "ToastUserRootRequireName": "Root Benutzername muss angegeben werden"
}
diff --git a/client/strings/en-us.json b/client/strings/en-us.json
index dad359ccd..1a1d10eca 100644
--- a/client/strings/en-us.json
+++ b/client/strings/en-us.json
@@ -9,6 +9,7 @@
"ButtonApply": "Apply",
"ButtonApplyChapters": "Apply Chapters",
"ButtonAuthors": "Authors",
+ "ButtonBack": "Back",
"ButtonBrowseForFolder": "Browse for Folder",
"ButtonCancel": "Cancel",
"ButtonCancelEncode": "Cancel Encode",
@@ -18,6 +19,7 @@
"ButtonChooseFiles": "Choose files",
"ButtonClearFilter": "Clear Filter",
"ButtonCloseFeed": "Close Feed",
+ "ButtonCloseSession": "Close Open Session",
"ButtonCollections": "Collections",
"ButtonConfigureScanner": "Configure Scanner",
"ButtonCopyFeedURL": "Copy Feed URL",
@@ -28,6 +30,9 @@
"ButtonEdit": "Edit",
"ButtonEditChapters": "Edit Chapters",
"ButtonEditPodcast": "Edit Podcast",
+ "ButtonEnable": "Enable",
+ "ButtonFireAndFail": "Fire and Fail",
+ "ButtonFireOnTest": "Fire onTest event",
"ButtonForceReCheckFeed": "Force Re-Check Feed",
"ButtonForceReScan": "Force Re-Scan",
"ButtonFullPath": "Full Path",
@@ -47,21 +52,26 @@
"ButtonNevermind": "Nevermind",
"ButtonNext": "Next",
"ButtonNextChapter": "Next Chapter",
+ "ButtonNextItemInQueue": "Next Item in Queue",
"ButtonOk": "Ok",
"ButtonOpenFeed": "Open Feed",
"ButtonOpenManager": "Open Manager",
"ButtonPause": "Pause",
"ButtonPlay": "Play",
+ "ButtonPlayAll": "Play All",
"ButtonPlaying": "Playing",
"ButtonPlaylists": "Playlists",
"ButtonPrevious": "Previous",
"ButtonPreviousChapter": "Previous Chapter",
+ "ButtonProbeAudioFile": "Probe Audio File",
"ButtonPurgeAllCache": "Purge All Cache",
"ButtonPurgeItemsCache": "Purge Items Cache",
- "ButtonPurgeMediaProgress": "Purge Media Progress",
"ButtonQueueAddItem": "Add to queue",
"ButtonQueueRemoveItem": "Remove from queue",
+ "ButtonQuickEmbed": "Quick Embed",
+ "ButtonQuickEmbedMetadata": "Quick Embed Metadata",
"ButtonQuickMatch": "Quick Match",
+ "ButtonReScan": "Re-Scan",
"ButtonRead": "Read",
"ButtonReadLess": "Read less",
"ButtonReadMore": "Read more",
@@ -72,7 +82,6 @@
"ButtonRemoveFromContinueListening": "Remove from Continue Listening",
"ButtonRemoveFromContinueReading": "Remove from Continue Reading",
"ButtonRemoveSeriesFromContinueSeries": "Remove Series from Continue Series",
- "ButtonReScan": "Re-Scan",
"ButtonReset": "Reset",
"ButtonResetToDefault": "Reset to default",
"ButtonRestore": "Restore",
@@ -90,8 +99,10 @@
"ButtonShow": "Show",
"ButtonStartM4BEncode": "Start M4B Encode",
"ButtonStartMetadataEmbed": "Start Metadata Embed",
+ "ButtonStats": "Stats",
"ButtonSubmit": "Submit",
"ButtonTest": "Test",
+ "ButtonUnlinkOpenId": "Unlink OpenID",
"ButtonUpload": "Upload",
"ButtonUploadBackup": "Upload Backup",
"ButtonUploadCover": "Upload Cover",
@@ -104,10 +115,11 @@
"ErrorUploadFetchMetadataNoResults": "Could not fetch metadata - try updating title and/or author",
"ErrorUploadLacksTitle": "Must have a title",
"HeaderAccount": "Account",
+ "HeaderAddCustomMetadataProvider": "Add Custom Metadata Provider",
"HeaderAdvanced": "Advanced",
"HeaderAppriseNotificationSettings": "Apprise Notification Settings",
- "HeaderAudiobookTools": "Audiobook File Management Tools",
"HeaderAudioTracks": "Audio Tracks",
+ "HeaderAudiobookTools": "Audiobook File Management Tools",
"HeaderAuthentication": "Authentication",
"HeaderBackups": "Backups",
"HeaderChangePassword": "Change Password",
@@ -117,6 +129,7 @@
"HeaderCollectionItems": "Collection Items",
"HeaderCover": "Cover",
"HeaderCurrentDownloads": "Current Downloads",
+ "HeaderCustomMessageOnLogin": "Custom Message on Login",
"HeaderCustomMetadataProviders": "Custom Metadata Providers",
"HeaderDetails": "Details",
"HeaderDownloadQueue": "Download Queue",
@@ -150,24 +163,29 @@
"HeaderMetadataToEmbed": "Metadata to embed",
"HeaderNewAccount": "New Account",
"HeaderNewLibrary": "New Library",
+ "HeaderNotificationCreate": "Create Notification",
+ "HeaderNotificationUpdate": "Update Notification",
"HeaderNotifications": "Notifications",
"HeaderOpenIDConnectAuthentication": "OpenID Connect Authentication",
+ "HeaderOpenListeningSessions": "Open Listening Sessions",
"HeaderOpenRSSFeed": "Open RSS Feed",
"HeaderOtherFiles": "Other Files",
"HeaderPasswordAuthentication": "Password Authentication",
"HeaderPermissions": "Permissions",
"HeaderPlayerQueue": "Player Queue",
+ "HeaderPlayerSettings": "Player Settings",
"HeaderPlaylist": "Playlist",
"HeaderPlaylistItems": "Playlist Items",
"HeaderPodcastsToAdd": "Podcasts to Add",
"HeaderPreviewCover": "Preview Cover",
- "HeaderRemoveEpisode": "Remove Episode",
- "HeaderRemoveEpisodes": "Remove {0} Episodes",
"HeaderRSSFeedGeneral": "RSS Details",
"HeaderRSSFeedIsOpen": "RSS Feed is Open",
"HeaderRSSFeeds": "RSS Feeds",
+ "HeaderRemoveEpisode": "Remove Episode",
+ "HeaderRemoveEpisodes": "Remove {0} Episodes",
"HeaderSavedMediaProgress": "Saved Media Progress",
"HeaderSchedule": "Schedule",
+ "HeaderScheduleEpisodeDownloads": "Schedule Automatic Episode Downloads",
"HeaderScheduleLibraryScans": "Schedule Automatic Library Scans",
"HeaderSession": "Session",
"HeaderSetBackupSchedule": "Set Backup Schedule",
@@ -201,19 +219,23 @@
"LabelAccountTypeGuest": "Guest",
"LabelAccountTypeUser": "User",
"LabelActivity": "Activity",
- "LabelAdded": "Added",
- "LabelAddedAt": "Added At",
"LabelAddToCollection": "Add to Collection",
"LabelAddToCollectionBatch": "Add {0} Books to Collection",
"LabelAddToPlaylist": "Add to Playlist",
"LabelAddToPlaylistBatch": "Add {0} Items to Playlist",
+ "LabelAddedAt": "Added At",
+ "LabelAddedDate": "Added {0}",
"LabelAdminUsersOnly": "Admin users only",
"LabelAll": "All",
"LabelAllUsers": "All Users",
"LabelAllUsersExcludingGuests": "All users excluding guests",
"LabelAllUsersIncludingGuests": "All users including guests",
"LabelAlreadyInYourLibrary": "Already in your library",
+ "LabelApiToken": "API Token",
"LabelAppend": "Append",
+ "LabelAudioBitrate": "Audio Bitrate (e.g. 128k)",
+ "LabelAudioChannels": "Audio Channels (1 or 2)",
+ "LabelAudioCodec": "Audio Codec",
"LabelAuthor": "Author",
"LabelAuthorFirstLast": "Author (First Last)",
"LabelAuthorLastFirst": "Author (Last, First)",
@@ -226,26 +248,31 @@
"LabelAutoRegister": "Auto Register",
"LabelAutoRegisterDescription": "Automatically create new users after logging in",
"LabelBackToUser": "Back to User",
+ "LabelBackupAudioFiles": "Backup Audio Files",
"LabelBackupLocation": "Backup Location",
"LabelBackupsEnableAutomaticBackups": "Enable automatic backups",
"LabelBackupsEnableAutomaticBackupsHelp": "Backups saved in /metadata/backups",
- "LabelBackupsMaxBackupSize": "Maximum backup size (in GB)",
+ "LabelBackupsMaxBackupSize": "Maximum backup size (in GB) (0 for unlimited)",
"LabelBackupsMaxBackupSizeHelp": "As a safeguard against misconfiguration, backups will fail if they exceed the configured size.",
"LabelBackupsNumberToKeep": "Number of backups to keep",
"LabelBackupsNumberToKeepHelp": "Only 1 backup will be removed at a time so if you already have more backups than this you should manually remove them.",
"LabelBitrate": "Bitrate",
+ "LabelBonus": "Bonus",
"LabelBooks": "Books",
"LabelButtonText": "Button Text",
"LabelByAuthor": "by {0}",
"LabelChangePassword": "Change Password",
"LabelChannels": "Channels",
+ "LabelChapterCount": "{0} Chapters",
+ "LabelChapterTitle": "Chapter Title",
"LabelChapters": "Chapters",
"LabelChaptersFound": "chapters found",
- "LabelChapterTitle": "Chapter Title",
"LabelClickForMoreInfo": "Click for more info",
+ "LabelClickToUseCurrentValue": "Click to use current value",
"LabelClosePlayer": "Close player",
"LabelCodec": "Codec",
"LabelCollapseSeries": "Collapse Series",
+ "LabelCollapseSubSeries": "Collapse Sub Series",
"LabelCollection": "Collection",
"LabelCollections": "Collections",
"LabelComplete": "Complete",
@@ -261,6 +288,7 @@
"LabelCurrently": "Currently:",
"LabelCustomCronExpression": "Custom Cron Expression:",
"LabelDatetime": "Datetime",
+ "LabelDays": "Days",
"LabelDeleteFromFileSystemCheckbox": "Delete from file system (uncheck to only remove from database)",
"LabelDescription": "Description",
"LabelDeselectAll": "Deselect All",
@@ -284,20 +312,40 @@
"LabelEdit": "Edit",
"LabelEmail": "Email",
"LabelEmailSettingsFromAddress": "From Address",
+ "LabelEmailSettingsRejectUnauthorized": "Reject unauthorized certificates",
+ "LabelEmailSettingsRejectUnauthorizedHelp": "Disabling SSL certificate validation may expose your connection to security risks, such as man-in-the-middle attacks. Only disable this option if you understand the implications and trust the mail server you are connecting to.",
"LabelEmailSettingsSecure": "Secure",
"LabelEmailSettingsSecureHelp": "If true the connection will use TLS when connecting to server. If false then TLS is used if server supports the STARTTLS extension. In most cases set this value to true if you are connecting to port 465. For port 587 or 25 keep it false. (from nodemailer.com/smtp/#authentication)",
"LabelEmailSettingsTestAddress": "Test Address",
"LabelEmbeddedCover": "Embedded Cover",
"LabelEnable": "Enable",
"LabelEnabled": "Enabled",
+ "LabelEncodingBackupLocation": "A backup of your original audio files will be stored in:",
+ "LabelEncodingChaptersNotEmbedded": "Chapters are not embedded in multi-track audiobooks.",
+ "LabelEncodingClearItemCache": "Make sure to periodically purge items cache.",
+ "LabelEncodingFinishedM4B": "Finished M4B will be put into your audiobook folder at:",
+ "LabelEncodingInfoEmbedded": "Metadata will be embedded in the audio tracks inside your audiobook folder.",
+ "LabelEncodingStartedNavigation": "Once the task is started you can navigate away from this page.",
+ "LabelEncodingTimeWarning": "Encoding can take up to 30 minutes.",
+ "LabelEncodingWarningAdvancedSettings": "Warning: Do not update these settings unless you are familiar with ffmpeg encoding options.",
+ "LabelEncodingWatcherDisabled": "If you have the watcher disabled you will need to re-scan this audiobook afterwards.",
"LabelEnd": "End",
+ "LabelEndOfChapter": "End of Chapter",
"LabelEpisode": "Episode",
+ "LabelEpisodeNotLinkedToRssFeed": "Episode not linked to RSS feed",
+ "LabelEpisodeNumber": "Episode #{0}",
"LabelEpisodeTitle": "Episode Title",
"LabelEpisodeType": "Episode Type",
+ "LabelEpisodeUrlFromRssFeed": "Episode URL from RSS feed",
+ "LabelEpisodes": "Episodes",
+ "LabelEpisodic": "Episodic",
"LabelExample": "Example",
+ "LabelExpandSeries": "Expand Series",
+ "LabelExpandSubSeries": "Expand Sub Series",
"LabelExplicit": "Explicit",
"LabelExplicitChecked": "Explicit (checked)",
"LabelExplicitUnchecked": "Not Explicit (unchecked)",
+ "LabelExportOPML": "Export OPML",
"LabelFeedHealthy": "Feed Healthy",
"LabelFeedLastChecked": "Last Checked",
"LabelFeedLastSuccessfulCheck": "Last Successful Check",
@@ -309,7 +357,9 @@
"LabelFetchingMetadata": "Fetching Metadata",
"LabelFile": "File",
"LabelFileBirthtime": "File Birthtime",
+ "LabelFileBornDate": "Born {0}",
"LabelFileModified": "File Modified",
+ "LabelFileModifiedDate": "Modified {0}",
"LabelFilename": "Filename",
"LabelFilterByUser": "Filter by User",
"LabelFindEpisodes": "Find Episodes",
@@ -317,24 +367,28 @@
"LabelFolder": "Folder",
"LabelFolders": "Folders",
"LabelFontBold": "Bold",
+ "LabelFontBoldness": "Font Boldness",
"LabelFontFamily": "Font family",
"LabelFontItalic": "Italic",
"LabelFontScale": "Font scale",
"LabelFontStrikethrough": "Strikethrough",
"LabelFormat": "Format",
+ "LabelFull": "Full",
"LabelGenre": "Genre",
"LabelGenres": "Genres",
"LabelHardDeleteFile": "Hard delete file",
"LabelHasEbook": "Has ebook",
"LabelHasSupplementaryEbook": "Has supplementary ebook",
+ "LabelHideSubtitles": "Hide Subtitles",
"LabelHighestPriority": "Highest priority",
"LabelHost": "Host",
"LabelHour": "Hour",
+ "LabelHours": "Hours",
"LabelIcon": "Icon",
"LabelImageURLFromTheWeb": "Image URL from the web",
+ "LabelInProgress": "In Progress",
"LabelIncludeInTracklist": "Include in Tracklist",
"LabelIncomplete": "Incomplete",
- "LabelInProgress": "In Progress",
"LabelInterval": "Interval",
"LabelIntervalCustomDailyWeekly": "Custom daily/weekly",
"LabelIntervalEvery12Hours": "Every 12 hours",
@@ -346,8 +400,11 @@
"LabelIntervalEveryHour": "Every hour",
"LabelInvert": "Invert",
"LabelItem": "Item",
+ "LabelJumpBackwardAmount": "Jump backward amount",
+ "LabelJumpForwardAmount": "Jump forward amount",
"LabelLanguage": "Language",
"LabelLanguageDefaultServer": "Default Server Language",
+ "LabelLanguages": "Languages",
"LabelLastBookAdded": "Last Book Added",
"LabelLastBookUpdated": "Last Book Updated",
"LabelLastSeen": "Last Seen",
@@ -359,6 +416,7 @@
"LabelLess": "Less",
"LabelLibrariesAccessibleToUser": "Libraries Accessible to User",
"LabelLibrary": "Library",
+ "LabelLibraryFilterSublistEmpty": "No {0}",
"LabelLibraryItem": "Library Item",
"LabelLibraryName": "Library Name",
"LabelLimit": "Limit",
@@ -371,13 +429,18 @@
"LabelLowestPriority": "Lowest Priority",
"LabelMatchExistingUsersBy": "Match existing users by",
"LabelMatchExistingUsersByDescription": "Used for connecting existing users. Once connected, users will be matched by a unique id from your SSO provider",
+ "LabelMaxEpisodesToDownload": "Max # of episodes to download. Use 0 for unlimited.",
+ "LabelMaxEpisodesToDownloadPerCheck": "Max # of new episodes to download per check",
+ "LabelMaxEpisodesToKeep": "Max # of episodes to keep",
+ "LabelMaxEpisodesToKeepHelp": "Value of 0 sets no max limit. After a new episode is auto-downloaded this will delete the oldest episode if you have more than X episodes. This will only delete 1 episode per new download.",
"LabelMediaPlayer": "Media Player",
"LabelMediaType": "Media Type",
- "LabelMetadataOrderOfPrecedenceDescription": "Higher priority metadata sources will override lower priority metadata sources",
- "LabelMetadataProvider": "Metadata Provider",
"LabelMetaTag": "Meta Tag",
"LabelMetaTags": "Meta Tags",
+ "LabelMetadataOrderOfPrecedenceDescription": "Higher priority metadata sources will override lower priority metadata sources",
+ "LabelMetadataProvider": "Metadata Provider",
"LabelMinute": "Minute",
+ "LabelMinutes": "Minutes",
"LabelMissing": "Missing",
"LabelMissingEbook": "Has no ebook",
"LabelMissingSupplementaryEbook": "Has no supplementary ebook",
@@ -389,24 +452,25 @@
"LabelNarrator": "Narrator",
"LabelNarrators": "Narrators",
"LabelNew": "New",
+ "LabelNewPassword": "New Password",
"LabelNewestAuthors": "Newest Authors",
"LabelNewestEpisodes": "Newest Episodes",
- "LabelNewPassword": "New Password",
"LabelNextBackupDate": "Next backup date",
"LabelNextScheduledRun": "Next scheduled run",
+ "LabelNoCustomMetadataProviders": "No custom metadata providers",
"LabelNoEpisodesSelected": "No episodes selected",
- "LabelNotes": "Notes",
"LabelNotFinished": "Not Finished",
+ "LabelNotStarted": "Not Started",
+ "LabelNotes": "Notes",
"LabelNotificationAppriseURL": "Apprise URL(s)",
"LabelNotificationAvailableVariables": "Available variables",
"LabelNotificationBodyTemplate": "Body Template",
"LabelNotificationEvent": "Notification Event",
+ "LabelNotificationTitleTemplate": "Title Template",
"LabelNotificationsMaxFailedAttempts": "Max failed attempts",
"LabelNotificationsMaxFailedAttemptsHelp": "Notifications are disabled once they fail to send this many times",
"LabelNotificationsMaxQueueSize": "Max queue size for notification events",
"LabelNotificationsMaxQueueSizeHelp": "Events are limited to firing 1 per second. Events will be ignored if the queue is at max size. This prevents notification spamming.",
- "LabelNotificationTitleTemplate": "Title Template",
- "LabelNotStarted": "Not Started",
"LabelNumberOfBooks": "Number of Books",
"LabelNumberOfEpisodes": "# of Episodes",
"LabelOpenIDAdvancedPermsClaimDescription": "Name of the OpenID claim that contains advanced permissions for user actions within the application which will apply to non-admin roles (if configured). If the claim is missing from the response, access to ABS will be denied. If a single option is missing, it will be treated as false. Ensure the identity provider's claim matches the expected structure:",
@@ -414,62 +478,80 @@
"LabelOpenIDGroupClaimDescription": "Name of the OpenID claim that contains a list of the user's groups. Commonly referred to as groups. If configured, the application will automatically assign roles based on the user's group memberships, provided that these groups are named case-insensitively 'admin', 'user', or 'guest' in the claim. The claim should contain a list, and if a user belongs to multiple groups, the application will assign the role corresponding to the highest level of access. If no group matches, access will be denied.",
"LabelOpenRSSFeed": "Open RSS Feed",
"LabelOverwrite": "Overwrite",
+ "LabelPaginationPageXOfY": "Page {0} of {1}",
"LabelPassword": "Password",
"LabelPath": "Path",
+ "LabelPermanent": "Permanent",
"LabelPermissionsAccessAllLibraries": "Can Access All Libraries",
"LabelPermissionsAccessAllTags": "Can Access All Tags",
"LabelPermissionsAccessExplicitContent": "Can Access Explicit Content",
+ "LabelPermissionsCreateEreader": "Can Create Ereader",
"LabelPermissionsDelete": "Can Delete",
"LabelPermissionsDownload": "Can Download",
"LabelPermissionsUpdate": "Can Update",
"LabelPermissionsUpload": "Can Upload",
"LabelPersonalYearReview": "Your Year in Review ({0})",
"LabelPhotoPathURL": "Photo Path/URL",
- "LabelPlaylists": "Playlists",
"LabelPlayMethod": "Play Method",
+ "LabelPlayerChapterNumberMarker": "{0} of {1}",
+ "LabelPlaylists": "Playlists",
"LabelPodcast": "Podcast",
- "LabelPodcasts": "Podcasts",
"LabelPodcastSearchRegion": "Podcast search region",
"LabelPodcastType": "Podcast Type",
+ "LabelPodcasts": "Podcasts",
"LabelPort": "Port",
"LabelPrefixesToIgnore": "Prefixes to Ignore (case insensitive)",
"LabelPreventIndexing": "Prevent your feed from being indexed by iTunes and Google podcast directories",
"LabelPrimaryEbook": "Primary ebook",
"LabelProgress": "Progress",
"LabelProvider": "Provider",
+ "LabelProviderAuthorizationValue": "Authorization Header Value",
"LabelPubDate": "Pub Date",
- "LabelPublisher": "Publisher",
"LabelPublishYear": "Publish Year",
- "LabelRead": "Read",
- "LabelReadAgain": "Read Again",
- "LabelReadEbookWithoutProgress": "Read ebook without keeping progress",
- "LabelRecentlyAdded": "Recently Added",
- "LabelRecentSeries": "Recent Series",
- "LabelRecommended": "Recommended",
- "LabelRedo": "Redo",
- "LabelRegion": "Region",
- "LabelReleaseDate": "Release Date",
- "LabelRemoveCover": "Remove cover",
- "LabelRowsPerPage": "Rows per page",
+ "LabelPublishedDate": "Published {0}",
+ "LabelPublishedDecade": "Published Decade",
+ "LabelPublishedDecades": "Published Decades",
+ "LabelPublisher": "Publisher",
+ "LabelPublishers": "Publishers",
"LabelRSSFeedCustomOwnerEmail": "Custom owner Email",
"LabelRSSFeedCustomOwnerName": "Custom owner Name",
"LabelRSSFeedOpen": "RSS Feed Open",
"LabelRSSFeedPreventIndexing": "Prevent Indexing",
"LabelRSSFeedSlug": "RSS Feed Slug",
"LabelRSSFeedURL": "RSS Feed URL",
+ "LabelRandomly": "Randomly",
+ "LabelReAddSeriesToContinueListening": "Re-add series to Continue Listening",
+ "LabelRead": "Read",
+ "LabelReadAgain": "Read Again",
+ "LabelReadEbookWithoutProgress": "Read ebook without keeping progress",
+ "LabelRecentSeries": "Recent Series",
+ "LabelRecentlyAdded": "Recently Added",
+ "LabelRecommended": "Recommended",
+ "LabelRedo": "Redo",
+ "LabelRegion": "Region",
+ "LabelReleaseDate": "Release Date",
+ "LabelRemoveAllMetadataAbs": "Remove all metadata.abs files",
+ "LabelRemoveAllMetadataJson": "Remove all metadata.json files",
+ "LabelRemoveCover": "Remove cover",
+ "LabelRemoveMetadataFile": "Remove metadata files in library item folders",
+ "LabelRemoveMetadataFileHelp": "Remove all metadata.json and metadata.abs files in your {0} folders.",
+ "LabelRowsPerPage": "Rows per page",
"LabelSearchTerm": "Search Term",
"LabelSearchTitle": "Search Title",
"LabelSearchTitleOrASIN": "Search Title or ASIN",
"LabelSeason": "Season",
+ "LabelSeasonNumber": "Season #{0}",
"LabelSelectAll": "Select all",
"LabelSelectAllEpisodes": "Select all episodes",
"LabelSelectEpisodesShowing": "Select {0} episodes showing",
"LabelSelectUsers": "Select users",
"LabelSendEbookToDevice": "Send Ebook to...",
"LabelSequence": "Sequence",
+ "LabelSerial": "Serial",
"LabelSeries": "Series",
"LabelSeriesName": "Series Name",
"LabelSeriesProgress": "Series Progress",
+ "LabelServerLogLevel": "Server Log Level",
"LabelServerYearReview": "Server Year in Review ({0})",
"LabelSetEbookAsPrimary": "Set as primary",
"LabelSetEbookAsSupplementary": "Set as supplementary",
@@ -494,6 +576,9 @@
"LabelSettingsHideSingleBookSeriesHelp": "Series that have a single book will be hidden from the series page and home page shelves.",
"LabelSettingsHomePageBookshelfView": "Home page use bookshelf view",
"LabelSettingsLibraryBookshelfView": "Library use bookshelf view",
+ "LabelSettingsLibraryMarkAsFinishedPercentComplete": "Percent complete is greater than",
+ "LabelSettingsLibraryMarkAsFinishedTimeRemaining": "Time remaining is less than (seconds)",
+ "LabelSettingsLibraryMarkAsFinishedWhen": "Mark media item as finished when",
"LabelSettingsOnlyShowLaterBooksInContinueSeries": "Skip earlier books in Continue Series",
"LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "The Continue Series home page shelf shows the first book not started in series that have at least one book finished and no books in progress. Enabling this setting will continue series from the furthest completed book instead of the first book not started.",
"LabelSettingsParseSubtitles": "Parse subtitles",
@@ -511,15 +596,19 @@
"LabelSettingsStoreMetadataWithItem": "Store metadata with item",
"LabelSettingsStoreMetadataWithItemHelp": "By default metadata files are stored in /metadata/items, enabling this setting will store metadata files in your library item folders",
"LabelSettingsTimeFormat": "Time Format",
+ "LabelShare": "Share",
+ "LabelShareOpen": "Share Open",
+ "LabelShareURL": "Share URL",
"LabelShowAll": "Show All",
"LabelShowSeconds": "Show seconds",
+ "LabelShowSubtitles": "Show Subtitles",
"LabelSize": "Size",
"LabelSleepTimer": "Sleep timer",
"LabelSlug": "Slug",
"LabelStart": "Start",
+ "LabelStartTime": "Start Time",
"LabelStarted": "Started",
"LabelStartedAt": "Started At",
- "LabelStartTime": "Start Time",
"LabelStatsAudioTracks": "Audio Tracks",
"LabelStatsAuthors": "Authors",
"LabelStatsBestDay": "Best Day",
@@ -550,6 +639,11 @@
"LabelThemeDark": "Dark",
"LabelThemeLight": "Light",
"LabelTimeBase": "Time Base",
+ "LabelTimeDurationXHours": "{0} hours",
+ "LabelTimeDurationXMinutes": "{0} minutes",
+ "LabelTimeDurationXSeconds": "{0} seconds",
+ "LabelTimeInMinutes": "Time in minutes",
+ "LabelTimeLeft": "{0} left",
"LabelTimeListened": "Time Listened",
"LabelTimeListenedToday": "Time Listened Today",
"LabelTimeRemaining": "{0} remaining",
@@ -557,6 +651,7 @@
"LabelTitle": "Title",
"LabelToolsEmbedMetadata": "Embed Metadata",
"LabelToolsEmbedMetadataDescription": "Embed metadata into audio files including cover image and chapters.",
+ "LabelToolsM4bEncoder": "M4B Encoder",
"LabelToolsMakeM4b": "Make M4B Audiobook File",
"LabelToolsMakeM4bDescription": "Generate a .M4B audiobook file with embedded metadata, cover image, and chapters.",
"LabelToolsSplitM4b": "Split M4B to MP3's",
@@ -569,29 +664,36 @@
"LabelTracksMultiTrack": "Multi-track",
"LabelTracksNone": "No tracks",
"LabelTracksSingleTrack": "Single-track",
+ "LabelTrailer": "Trailer",
"LabelType": "Type",
"LabelUnabridged": "Unabridged",
"LabelUndo": "Undo",
"LabelUnknown": "Unknown",
+ "LabelUnknownPublishDate": "Unknown publish date",
"LabelUpdateCover": "Update Cover",
"LabelUpdateCoverHelp": "Allow overwriting of existing covers for the selected books when a match is located",
- "LabelUpdatedAt": "Updated At",
"LabelUpdateDetails": "Update Details",
"LabelUpdateDetailsHelp": "Allow overwriting of existing details for the selected books when a match is located",
+ "LabelUpdatedAt": "Updated At",
"LabelUploaderDragAndDrop": "Drag & drop files or folders",
"LabelUploaderDropFiles": "Drop files",
"LabelUploaderItemFetchMetadataHelp": "Automatically fetch title, author, and series",
+ "LabelUseAdvancedOptions": "Use Advanced Options",
"LabelUseChapterTrack": "Use chapter track",
"LabelUseFullTrack": "Use full track",
+ "LabelUseZeroForUnlimited": "Use 0 for unlimited",
"LabelUser": "User",
"LabelUsername": "Username",
"LabelValue": "Value",
"LabelVersion": "Version",
"LabelViewBookmarks": "View bookmarks",
"LabelViewChapters": "View chapters",
+ "LabelViewPlayerSettings": "View player settings",
"LabelViewQueue": "View player queue",
"LabelVolume": "Volume",
"LabelWeekdaysToRun": "Weekdays to run",
+ "LabelXBooks": "{0} books",
+ "LabelXItems": "{0} items",
"LabelYearReviewHide": "Hide Year in Review",
"LabelYearReviewShow": "See Year in Review",
"LabelYourAudiobookDuration": "Your audiobook duration",
@@ -601,10 +703,14 @@
"MessageAddToPlayerQueue": "Add to player queue",
"MessageAppriseDescription": "To use this feature you will need to have an instance of Apprise API running or an api that will handle those same requests. The Apprise API Url should be the full URL path to send the notification, e.g., if your API instance is served at http://192.168.1.1:8337 then you would put http://192.168.1.1:8337/notify.",
"MessageBackupsDescription": "Backups include users, user progress, library item details, server settings, and images stored in /metadata/items & /metadata/authors. Backups do not include any files stored in your library folders.",
+ "MessageBackupsLocationEditNote": "Note: Updating the backup location will not move or modify existing backups",
+ "MessageBackupsLocationNoEditNote": "Note: The backup location is set through an environment variable and cannot be changed here.",
+ "MessageBackupsLocationPathEmpty": "Backup location path cannot be empty",
"MessageBatchQuickMatchDescription": "Quick Match will attempt to add missing covers and metadata for the selected items. Enable the options below to allow Quick Match to overwrite existing covers and/or metadata.",
"MessageBookshelfNoCollections": "You haven't made any collections yet",
- "MessageBookshelfNoResultsForFilter": "No Results for filter \"{0}: {1}\"",
"MessageBookshelfNoRSSFeeds": "No RSS feeds are open",
+ "MessageBookshelfNoResultsForFilter": "No results for filter \"{0}: {1}\"",
+ "MessageBookshelfNoResultsForQuery": "No results for query",
"MessageBookshelfNoSeries": "You have no series",
"MessageChapterEndIsAfter": "Chapter end is after the end of your audiobook",
"MessageChapterErrorFirstNotZero": "First chapter must start at 0",
@@ -614,24 +720,35 @@
"MessageCheckingCron": "Checking cron...",
"MessageConfirmCloseFeed": "Are you sure you want to close this feed?",
"MessageConfirmDeleteBackup": "Are you sure you want to delete backup for {0}?",
+ "MessageConfirmDeleteDevice": "Are you sure you want to delete e-reader device \"{0}\"?",
"MessageConfirmDeleteFile": "This will delete the file from your file system. Are you sure?",
"MessageConfirmDeleteLibrary": "Are you sure you want to permanently delete library \"{0}\"?",
"MessageConfirmDeleteLibraryItem": "This will delete the library item from the database and your file system. Are you sure?",
"MessageConfirmDeleteLibraryItems": "This will delete {0} library items from the database and your file system. Are you sure?",
+ "MessageConfirmDeleteMetadataProvider": "Are you sure you want to delete custom metadata provider \"{0}\"?",
+ "MessageConfirmDeleteNotification": "Are you sure you want to delete this notification?",
"MessageConfirmDeleteSession": "Are you sure you want to delete this session?",
+ "MessageConfirmEmbedMetadataInAudioFiles": "Are you sure you want to embed metadata in {0} audio files?",
"MessageConfirmForceReScan": "Are you sure you want to force re-scan?",
"MessageConfirmMarkAllEpisodesFinished": "Are you sure you want to mark all episodes as finished?",
"MessageConfirmMarkAllEpisodesNotFinished": "Are you sure you want to mark all episodes as not finished?",
+ "MessageConfirmMarkItemFinished": "Are you sure you want to mark \"{0}\" as finished?",
+ "MessageConfirmMarkItemNotFinished": "Are you sure you want to mark \"{0}\" as not finished?",
"MessageConfirmMarkSeriesFinished": "Are you sure you want to mark all books in this series as finished?",
"MessageConfirmMarkSeriesNotFinished": "Are you sure you want to mark all books in this series as not finished?",
+ "MessageConfirmNotificationTestTrigger": "Trigger this notification with test data?",
"MessageConfirmPurgeCache": "Purge cache will delete the entire directory at /metadata/cache.
Are you sure you want to remove the cache directory?",
+ "MessageConfirmPurgeItemsCache": "Purge items cache will delete the entire directory at /metadata/cache/items. Are you sure?",
"MessageConfirmQuickEmbed": "Warning! Quick embed will not backup your audio files. Make sure that you have a backup of your audio files.
Would you like to continue?",
+ "MessageConfirmQuickMatchEpisodes": "Quick matching episodes will overwrite details if a match is found. Only unmatched episodes will be updated. Are you sure?",
+ "MessageConfirmReScanLibraryItems": "Are you sure you want to re-scan {0} items?",
"MessageConfirmRemoveAllChapters": "Are you sure you want to remove all chapters?",
"MessageConfirmRemoveAuthor": "Are you sure you want to remove author \"{0}\"?",
"MessageConfirmRemoveCollection": "Are you sure you want to remove collection \"{0}\"?",
"MessageConfirmRemoveEpisode": "Are you sure you want to remove episode \"{0}\"?",
"MessageConfirmRemoveEpisodes": "Are you sure you want to remove {0} episodes?",
"MessageConfirmRemoveListeningSessions": "Are you sure you want to remove {0} listening sessions?",
+ "MessageConfirmRemoveMetadataFiles": "Are you sure you want to remove all metadata.{0} files in your library item folders?",
"MessageConfirmRemoveNarrator": "Are you sure you want to remove narrator \"{0}\"?",
"MessageConfirmRemovePlaylist": "Are you sure you want to remove your playlist \"{0}\"?",
"MessageConfirmRenameGenre": "Are you sure you want to rename genre \"{0}\" to \"{1}\" for all items?",
@@ -640,11 +757,14 @@
"MessageConfirmRenameTag": "Are you sure you want to rename tag \"{0}\" to \"{1}\" for all items?",
"MessageConfirmRenameTagMergeNote": "Note: This tag already exists so they will be merged.",
"MessageConfirmRenameTagWarning": "Warning! A similar tag with a different casing already exists \"{0}\".",
- "MessageConfirmReScanLibraryItems": "Are you sure you want to re-scan {0} items?",
+ "MessageConfirmResetProgress": "Are you sure you want to reset your progress?",
"MessageConfirmSendEbookToDevice": "Are you sure you want to send {0} ebook \"{1}\" to device \"{2}\"?",
+ "MessageConfirmUnlinkOpenId": "Are you sure you want to unlink this user from OpenID?",
"MessageDownloadingEpisode": "Downloading episode",
"MessageDragFilesIntoTrackOrder": "Drag files into correct track order",
+ "MessageEmbedFailed": "Embed Failed!",
"MessageEmbedFinished": "Embed Finished!",
+ "MessageEmbedQueue": "Queued for metadata embed ({0} in queue)",
"MessageEpisodesQueuedForDownload": "{0} Episode(s) queued for download",
"MessageEreaderDevices": "To ensure delivery of ebooks, you may need to add the above email address as a valid sender for each device listed below.",
"MessageFeedURLWillBe": "Feed URL will be {0}",
@@ -676,6 +796,7 @@
"MessageNoCollections": "No Collections",
"MessageNoCoversFound": "No Covers Found",
"MessageNoDescription": "No description",
+ "MessageNoDevices": "No devices",
"MessageNoDownloadsInProgress": "No downloads currently in progress",
"MessageNoDownloadsQueued": "No downloads queued",
"MessageNoEpisodeMatchesFound": "No episode matches found",
@@ -689,21 +810,27 @@
"MessageNoLogs": "No Logs",
"MessageNoMediaProgress": "No Media Progress",
"MessageNoNotifications": "No Notifications",
+ "MessageNoPodcastFeed": "Invalid podcast: No Feed",
"MessageNoPodcastsFound": "No podcasts found",
"MessageNoResults": "No Results",
"MessageNoSearchResultsFor": "No search results for \"{0}\"",
"MessageNoSeries": "No Series",
"MessageNoTags": "No Tags",
"MessageNoTasksRunning": "No Tasks Running",
- "MessageNotYetImplemented": "Not yet implemented",
- "MessageNoUpdateNecessary": "No update necessary",
"MessageNoUpdatesWereNecessary": "No updates were necessary",
"MessageNoUserPlaylists": "You have no playlists",
+ "MessageNotYetImplemented": "Not yet implemented",
+ "MessageOpmlPreviewNote": "Note: This is a preview of the parsed OPML file. The actual podcast title will be taken from the RSS feed.",
"MessageOr": "or",
"MessagePauseChapter": "Pause chapter playback",
"MessagePlayChapter": "Listen to beginning of chapter",
"MessagePlaylistCreateFromCollection": "Create playlist from collection",
+ "MessagePleaseWait": "Please wait...",
"MessagePodcastHasNoRSSFeedForMatching": "Podcast has no RSS feed url to use for matching",
+ "MessagePodcastSearchField": "Enter search term or RSS feed URL",
+ "MessageQuickEmbedInProgress": "Quick embed in progress",
+ "MessageQuickEmbedQueue": "Queued for quick embed ({0} in queue)",
+ "MessageQuickMatchAllEpisodes": "Quick Match All Episodes",
"MessageQuickMatchDescription": "Populate empty item details & cover with first match result from '{0}'. Does not overwrite details unless 'Prefer matched metadata' server setting is enabled.",
"MessageRemoveChapter": "Remove chapter",
"MessageRemoveEpisodes": "Remove {0} episode(s)",
@@ -717,7 +844,45 @@
"MessageSelected": "{0} selected",
"MessageServerCouldNotBeReached": "Server could not be reached",
"MessageSetChaptersFromTracksDescription": "Set chapters using each audio file as a chapter and chapter title as the audio file name",
+ "MessageShareExpirationWillBe": "Expiration will be {0}",
+ "MessageShareExpiresIn": "Expires in {0}",
+ "MessageShareURLWillBe": "Share URL will be {0}",
"MessageStartPlaybackAtTime": "Start playback for \"{0}\" at {1}?",
+ "MessageTaskAudioFileNotWritable": "Audio file \"{0}\" is not writable",
+ "MessageTaskCanceledByUser": "Task canceled by user",
+ "MessageTaskDownloadingEpisodeDescription": "Downloading episode \"{0}\"",
+ "MessageTaskEmbeddingMetadata": "Embedding metadata",
+ "MessageTaskEmbeddingMetadataDescription": "Embedding metadata in audiobook \"{0}\"",
+ "MessageTaskEncodingM4b": "Encoding M4B",
+ "MessageTaskEncodingM4bDescription": "Encoding audiobook \"{0}\" into a single m4b file",
+ "MessageTaskFailed": "Failed",
+ "MessageTaskFailedToBackupAudioFile": "Failed to backup audio file \"{0}\"",
+ "MessageTaskFailedToCreateCacheDirectory": "Failed to create cache directory",
+ "MessageTaskFailedToEmbedMetadataInFile": "Failed to embed metadata in file \"{0}\"",
+ "MessageTaskFailedToMergeAudioFiles": "Failed to merge audio files",
+ "MessageTaskFailedToMoveM4bFile": "Failed to move m4b file",
+ "MessageTaskFailedToWriteMetadataFile": "Failed to write metadata file",
+ "MessageTaskMatchingBooksInLibrary": "Matching books in library \"{0}\"",
+ "MessageTaskNoFilesToScan": "No files to scan",
+ "MessageTaskOpmlImport": "OPML import",
+ "MessageTaskOpmlImportDescription": "Creating podcasts from {0} RSS feeds",
+ "MessageTaskOpmlImportFeed": "OPML import feed",
+ "MessageTaskOpmlImportFeedDescription": "Importing RSS feed \"{0}\"",
+ "MessageTaskOpmlImportFeedFailed": "Failed to get podcast feed",
+ "MessageTaskOpmlImportFeedPodcastDescription": "Creating podcast \"{0}\"",
+ "MessageTaskOpmlImportFeedPodcastExists": "Podcast already exists at path",
+ "MessageTaskOpmlImportFeedPodcastFailed": "Failed to create podcast",
+ "MessageTaskOpmlImportFinished": "Added {0} podcasts",
+ "MessageTaskOpmlParseFailed": "Failed to parse OPML file",
+ "MessageTaskOpmlParseFastFail": "Invalid OPML file tag not found OR an tag was not found",
+ "MessageTaskOpmlParseNoneFound": "No feeds found in OPML file",
+ "MessageTaskScanItemsAdded": "{0} added",
+ "MessageTaskScanItemsMissing": "{0} missing",
+ "MessageTaskScanItemsUpdated": "{0} updated",
+ "MessageTaskScanNoChangesNeeded": "No changes needed",
+ "MessageTaskScanningFileChanges": "Scanning file changes in \"{0}\"",
+ "MessageTaskScanningLibrary": "Scanning \"{0}\" library",
+ "MessageTaskTargetDirectoryNotWritable": "Target directory is not writable",
"MessageThinking": "Thinking...",
"MessageUploaderItemFailed": "Failed to upload",
"MessageUploaderItemSuccess": "Successfully Uploaded!",
@@ -735,91 +900,190 @@
"NoteUploaderFoldersWithMediaFiles": "Folders with media files will be handled as separate library items.",
"NoteUploaderOnlyAudioFiles": "If uploading only audio files then each audio file will be handled as a separate audiobook.",
"NoteUploaderUnsupportedFiles": "Unsupported files are ignored. When choosing or dropping a folder, other files that are not in an item folder are ignored.",
+ "NotificationOnBackupCompletedDescription": "Triggered when a backup is completed",
+ "NotificationOnBackupFailedDescription": "Triggered when a backup fails",
+ "NotificationOnEpisodeDownloadedDescription": "Triggered when a podcast episode is auto-downloaded",
+ "NotificationOnTestDescription": "Event for testing the notification system",
"PlaceholderNewCollection": "New collection name",
"PlaceholderNewFolderPath": "New folder path",
"PlaceholderNewPlaylist": "New playlist name",
"PlaceholderSearch": "Search..",
"PlaceholderSearchEpisode": "Search episode..",
"PlaceholderSearchTitle": "Search title..",
+ "StatsAuthorsAdded": "authors added",
+ "StatsBooksAdded": "books added",
+ "StatsBooksAdditional": "Some additions include…",
+ "StatsBooksFinished": "books finished",
+ "StatsBooksFinishedThisYear": "Some books finished this year…",
+ "StatsBooksListenedTo": "books listened to",
+ "StatsCollectionGrewTo": "Your book collection grew to…",
+ "StatsSessions": "sessions",
+ "StatsSpentListening": "spent listening",
+ "StatsTopAuthor": "TOP AUTHOR",
+ "StatsTopAuthors": "TOP AUTHORS",
+ "StatsTopGenre": "TOP GENRE",
+ "StatsTopGenres": "TOP GENRES",
+ "StatsTopMonth": "TOP MONTH",
+ "StatsTopNarrator": "TOP NARRATOR",
+ "StatsTopNarrators": "TOP NARRATORS",
+ "StatsTotalDuration": "With a total duration of…",
+ "StatsYearInReview": "YEAR IN REVIEW",
"ToastAccountUpdateFailed": "Failed to update account",
"ToastAccountUpdateSuccess": "Account updated",
- "ToastAuthorImageRemoveFailed": "Failed to remove image",
+ "ToastAppriseUrlRequired": "Must enter an Apprise URL",
+ "ToastAsinRequired": "ASIN is required",
"ToastAuthorImageRemoveSuccess": "Author image removed",
- "ToastAuthorUpdateFailed": "Failed to update author",
+ "ToastAuthorNotFound": "Author \"{0}\" not found",
+ "ToastAuthorRemoveSuccess": "Author removed",
+ "ToastAuthorSearchNotFound": "Author not found",
"ToastAuthorUpdateMerged": "Author merged",
"ToastAuthorUpdateSuccess": "Author updated",
"ToastAuthorUpdateSuccessNoImageFound": "Author updated (no image found)",
+ "ToastBackupAppliedSuccess": "Backup applied",
"ToastBackupCreateFailed": "Failed to create backup",
"ToastBackupCreateSuccess": "Backup created",
"ToastBackupDeleteFailed": "Failed to delete backup",
"ToastBackupDeleteSuccess": "Backup deleted",
+ "ToastBackupInvalidMaxKeep": "Invalid number of backups to keep",
+ "ToastBackupInvalidMaxSize": "Invalid maximum backup size",
"ToastBackupRestoreFailed": "Failed to restore backup",
"ToastBackupUploadFailed": "Failed to upload backup",
"ToastBackupUploadSuccess": "Backup uploaded",
+ "ToastBatchDeleteFailed": "Batch delete failed",
+ "ToastBatchDeleteSuccess": "Batch delete success",
+ "ToastBatchQuickMatchFailed": "Batch Quick Match failed!",
+ "ToastBatchQuickMatchStarted": "Batch Quick Match of {0} books started!",
"ToastBatchUpdateFailed": "Batch update failed",
"ToastBatchUpdateSuccess": "Batch update success",
"ToastBookmarkCreateFailed": "Failed to create bookmark",
"ToastBookmarkCreateSuccess": "Bookmark added",
- "ToastBookmarkRemoveFailed": "Failed to remove bookmark",
"ToastBookmarkRemoveSuccess": "Bookmark removed",
- "ToastBookmarkUpdateFailed": "Failed to update bookmark",
"ToastBookmarkUpdateSuccess": "Bookmark updated",
"ToastCachePurgeFailed": "Failed to purge cache",
"ToastCachePurgeSuccess": "Cache purged successfully",
"ToastChaptersHaveErrors": "Chapters have errors",
"ToastChaptersMustHaveTitles": "Chapters must have titles",
- "ToastCollectionItemsRemoveFailed": "Failed to remove item(s) from collection",
+ "ToastChaptersRemoved": "Chapters removed",
+ "ToastChaptersUpdated": "Chapters updated",
+ "ToastCollectionItemsAddFailed": "Item(s) added to collection failed",
+ "ToastCollectionItemsAddSuccess": "Item(s) added to collection success",
"ToastCollectionItemsRemoveSuccess": "Item(s) removed from collection",
- "ToastCollectionRemoveFailed": "Failed to remove collection",
"ToastCollectionRemoveSuccess": "Collection removed",
- "ToastCollectionUpdateFailed": "Failed to update collection",
"ToastCollectionUpdateSuccess": "Collection updated",
+ "ToastCoverUpdateFailed": "Cover update failed",
"ToastDeleteFileFailed": "Failed to delete file",
"ToastDeleteFileSuccess": "File deleted",
+ "ToastDeviceAddFailed": "Failed to add device",
+ "ToastDeviceNameAlreadyExists": "Ereader device with that name already exists",
+ "ToastDeviceTestEmailFailed": "Failed to send test email",
+ "ToastDeviceTestEmailSuccess": "Test email sent",
+ "ToastEmailSettingsUpdateSuccess": "Email settings updated",
+ "ToastEncodeCancelFailed": "Failed to cancel encode",
+ "ToastEncodeCancelSucces": "Encode canceled",
+ "ToastEpisodeDownloadQueueClearFailed": "Failed to clear queue",
+ "ToastEpisodeDownloadQueueClearSuccess": "Episode download queue cleared",
+ "ToastEpisodeUpdateSuccess": "{0} episodes updated",
+ "ToastErrorCannotShare": "Cannot share natively on this device",
"ToastFailedToLoadData": "Failed to load data",
- "ToastItemCoverUpdateFailed": "Failed to update item cover",
+ "ToastFailedToMatch": "Failed to match",
+ "ToastFailedToShare": "Failed to share",
+ "ToastFailedToUpdate": "Failed to update",
+ "ToastInvalidImageUrl": "Invalid image URL",
+ "ToastInvalidMaxEpisodesToDownload": "Invalid max episodes to download",
+ "ToastInvalidUrl": "Invalid URL",
"ToastItemCoverUpdateSuccess": "Item cover updated",
- "ToastItemDetailsUpdateFailed": "Failed to update item details",
+ "ToastItemDeletedFailed": "Failed to delete item",
+ "ToastItemDeletedSuccess": "Deleted item",
"ToastItemDetailsUpdateSuccess": "Item details updated",
- "ToastItemDetailsUpdateUnneeded": "No updates needed for item details",
"ToastItemMarkedAsFinishedFailed": "Failed to mark as Finished",
"ToastItemMarkedAsFinishedSuccess": "Item marked as Finished",
"ToastItemMarkedAsNotFinishedFailed": "Failed to mark as Not Finished",
"ToastItemMarkedAsNotFinishedSuccess": "Item marked as Not Finished",
+ "ToastItemUpdateSuccess": "Item updated",
"ToastLibraryCreateFailed": "Failed to create library",
"ToastLibraryCreateSuccess": "Library \"{0}\" created",
"ToastLibraryDeleteFailed": "Failed to delete library",
"ToastLibraryDeleteSuccess": "Library deleted",
"ToastLibraryScanFailedToStart": "Failed to start scan",
"ToastLibraryScanStarted": "Library scan started",
- "ToastLibraryUpdateFailed": "Failed to update library",
"ToastLibraryUpdateSuccess": "Library \"{0}\" updated",
+ "ToastMatchAllAuthorsFailed": "Failed to match all authors",
+ "ToastMetadataFilesRemovedError": "Error removing metadata.{0} files",
+ "ToastMetadataFilesRemovedNoneFound": "No metadata.{0} files found in library",
+ "ToastMetadataFilesRemovedNoneRemoved": "No metadata.{0} files removed",
+ "ToastMetadataFilesRemovedSuccess": "{0} metadata.{1} files removed",
+ "ToastMustHaveAtLeastOnePath": "Must have at least one path",
+ "ToastNameEmailRequired": "Name and email are required",
+ "ToastNameRequired": "Name is required",
+ "ToastNewEpisodesFound": "{0} new episodes found",
+ "ToastNewUserCreatedFailed": "Failed to create account: \"{0}\"",
+ "ToastNewUserCreatedSuccess": "New account created",
+ "ToastNewUserLibraryError": "Must select at least one library",
+ "ToastNewUserPasswordError": "Must have a password, only root user can have an empty password",
+ "ToastNewUserTagError": "Must select at least one tag",
+ "ToastNewUserUsernameError": "Enter a username",
+ "ToastNoNewEpisodesFound": "No new episodes found",
+ "ToastNoUpdatesNecessary": "No updates necessary",
+ "ToastNotificationCreateFailed": "Failed to create notification",
+ "ToastNotificationDeleteFailed": "Failed to delete notification",
+ "ToastNotificationFailedMaximum": "Max failed attempts must be >= 0",
+ "ToastNotificationQueueMaximum": "Max notification queue must be >= 0",
+ "ToastNotificationSettingsUpdateSuccess": "Notification settings updated",
+ "ToastNotificationTestTriggerFailed": "Failed to trigger test notification",
+ "ToastNotificationTestTriggerSuccess": "Triggered test notification",
+ "ToastNotificationUpdateSuccess": "Notification updated",
"ToastPlaylistCreateFailed": "Failed to create playlist",
"ToastPlaylistCreateSuccess": "Playlist created",
- "ToastPlaylistRemoveFailed": "Failed to remove playlist",
"ToastPlaylistRemoveSuccess": "Playlist removed",
- "ToastPlaylistUpdateFailed": "Failed to update playlist",
"ToastPlaylistUpdateSuccess": "Playlist updated",
"ToastPodcastCreateFailed": "Failed to create podcast",
"ToastPodcastCreateSuccess": "Podcast created successfully",
- "ToastRemoveItemFromCollectionFailed": "Failed to remove item from collection",
- "ToastRemoveItemFromCollectionSuccess": "Item removed from collection",
+ "ToastPodcastGetFeedFailed": "Failed to get podcast feed",
+ "ToastPodcastNoEpisodesInFeed": "No episodes found in RSS feed",
+ "ToastPodcastNoRssFeed": "Podcast does not have an RSS feed",
+ "ToastProgressIsNotBeingSynced": "Progress is not being synced, restart playback",
+ "ToastProviderCreatedFailed": "Failed to add provider",
+ "ToastProviderCreatedSuccess": "New provider added",
+ "ToastProviderNameAndUrlRequired": "Name and Url required",
+ "ToastProviderRemoveSuccess": "Provider removed",
"ToastRSSFeedCloseFailed": "Failed to close RSS feed",
"ToastRSSFeedCloseSuccess": "RSS feed closed",
+ "ToastRemoveFailed": "Failed to remove",
+ "ToastRemoveItemFromCollectionFailed": "Failed to remove item from collection",
+ "ToastRemoveItemFromCollectionSuccess": "Item removed from collection",
+ "ToastRemoveItemsWithIssuesFailed": "Failed to remove library items with issues",
+ "ToastRemoveItemsWithIssuesSuccess": "Removed library items with issues",
+ "ToastRenameFailed": "Failed to rename",
+ "ToastRescanFailed": "Re-Scan Failed for {0}",
+ "ToastRescanRemoved": "Re-Scan complete item was removed",
+ "ToastRescanUpToDate": "Re-Scan complete item was up to date",
+ "ToastRescanUpdated": "Re-Scan complete item was updated",
+ "ToastScanFailed": "Failed to scan library item",
+ "ToastSelectAtLeastOneUser": "Select at least one user",
"ToastSendEbookToDeviceFailed": "Failed to send ebook to device",
"ToastSendEbookToDeviceSuccess": "Ebook sent to device \"{0}\"",
"ToastSeriesUpdateFailed": "Series update failed",
"ToastSeriesUpdateSuccess": "Series update success",
- "ToastServerSettingsUpdateFailed": "Failed to update server settings",
"ToastServerSettingsUpdateSuccess": "Server settings updated",
+ "ToastSessionCloseFailed": "Failed to close session",
"ToastSessionDeleteFailed": "Failed to delete session",
"ToastSessionDeleteSuccess": "Session deleted",
+ "ToastSleepTimerDone": "Sleep timer done... zZzzZz",
+ "ToastSlugMustChange": "Slug contains invalid characters",
+ "ToastSlugRequired": "Slug is required",
"ToastSocketConnected": "Socket connected",
"ToastSocketDisconnected": "Socket disconnected",
"ToastSocketFailedToConnect": "Socket failed to connect",
"ToastSortingPrefixesEmptyError": "Must have at least 1 sorting prefix",
- "ToastSortingPrefixesUpdateFailed": "Failed to update sorting prefixes",
"ToastSortingPrefixesUpdateSuccess": "Sorting prefixes updated ({0} items)",
+ "ToastTitleRequired": "Title is required",
+ "ToastUnknownError": "Unknown error",
+ "ToastUnlinkOpenIdFailed": "Failed to unlink user from OpenID",
+ "ToastUnlinkOpenIdSuccess": "User unlinked from OpenID",
"ToastUserDeleteFailed": "Failed to delete user",
- "ToastUserDeleteSuccess": "User deleted"
+ "ToastUserDeleteSuccess": "User deleted",
+ "ToastUserPasswordChangeSuccess": "Password changed successfully",
+ "ToastUserPasswordMismatch": "Passwords do not match",
+ "ToastUserPasswordMustChange": "New password cannot match old password",
+ "ToastUserRootRequireName": "Must enter a root username"
}
diff --git a/client/strings/en_US.json b/client/strings/en_US.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/client/strings/en_US.json
@@ -0,0 +1 @@
+{}
diff --git a/client/strings/es.json b/client/strings/es.json
index cead84e25..dbd8bbc6e 100644
--- a/client/strings/es.json
+++ b/client/strings/es.json
@@ -9,6 +9,7 @@
"ButtonApply": "Aplicar",
"ButtonApplyChapters": "Aplicar Capítulos",
"ButtonAuthors": "Autores",
+ "ButtonBack": "Atrás",
"ButtonBrowseForFolder": "Buscar por Carpeta",
"ButtonCancel": "Cancelar",
"ButtonCancelEncode": "Cancelar Codificador",
@@ -16,8 +17,9 @@
"ButtonCheckAndDownloadNewEpisodes": "Verificar y Descargar Nuevos Episodios",
"ButtonChooseAFolder": "Escoger una Carpeta",
"ButtonChooseFiles": "Escoger un Archivo",
- "ButtonClearFilter": "Quitar Filtros",
- "ButtonCloseFeed": "Cerrar Fuente",
+ "ButtonClearFilter": "Quitar filtros",
+ "ButtonCloseFeed": "Cerrar fuente",
+ "ButtonCloseSession": "Cerrar la sesión abierta",
"ButtonCollections": "Colecciones",
"ButtonConfigureScanner": "Configurar Escáner",
"ButtonCreate": "Crear",
@@ -27,6 +29,9 @@
"ButtonEdit": "Editar",
"ButtonEditChapters": "Editar Capítulo",
"ButtonEditPodcast": "Editar Podcast",
+ "ButtonEnable": "Permitir",
+ "ButtonFireAndFail": "Ejecutado y fallido",
+ "ButtonFireOnTest": "Activar evento de prueba",
"ButtonForceReScan": "Forzar Re-Escaneo",
"ButtonFullPath": "Ruta de Acceso Completa",
"ButtonHide": "Esconder",
@@ -43,23 +48,28 @@
"ButtonMatchAllAuthors": "Encontrar Todos los Autores",
"ButtonMatchBooks": "Encontrar Libros",
"ButtonNevermind": "Olvidar",
- "ButtonNext": "Next",
+ "ButtonNext": "Siguiente",
"ButtonNextChapter": "Siguiente Capítulo",
- "ButtonOk": "Ok",
- "ButtonOpenFeed": "Abrir Fuente",
+ "ButtonNextItemInQueue": "El siguiente elemento en cola",
+ "ButtonOk": "De acuerdo",
+ "ButtonOpenFeed": "Abrir fuente",
"ButtonOpenManager": "Abrir Editor",
"ButtonPause": "Pausar",
"ButtonPlay": "Reproducir",
+ "ButtonPlayAll": "Reproducir todo",
"ButtonPlaying": "Reproduciendo",
- "ButtonPlaylists": "Listas de Reproducción",
- "ButtonPrevious": "Previous",
+ "ButtonPlaylists": "Listas de reproducción",
+ "ButtonPrevious": "Anterior",
"ButtonPreviousChapter": "Capítulo Anterior",
+ "ButtonProbeAudioFile": "Examinar archivo de audio",
"ButtonPurgeAllCache": "Purgar Todo el Cache",
"ButtonPurgeItemsCache": "Purgar Elementos de Cache",
- "ButtonPurgeMediaProgress": "Purgar Progreso de Multimedia",
"ButtonQueueAddItem": "Agregar a la Fila",
"ButtonQueueRemoveItem": "Remover de la Fila",
+ "ButtonQuickEmbed": "Inserción rápida",
+ "ButtonQuickEmbedMetadata": "Agregue metadatos rápidamente",
"ButtonQuickMatch": "Encontrar Rápido",
+ "ButtonReScan": "Re-Escanear",
"ButtonRead": "Leer",
"ButtonReadLess": "Lea menos",
"ButtonReadMore": "Lea mas",
@@ -70,7 +80,6 @@
"ButtonRemoveFromContinueListening": "Remover de Continuar Escuchando",
"ButtonRemoveFromContinueReading": "Remover de Continuar Leyendo",
"ButtonRemoveSeriesFromContinueSeries": "Remover Serie de Continuar Series",
- "ButtonReScan": "Re-Escanear",
"ButtonReset": "Reiniciar",
"ButtonResetToDefault": "Restaurar valores por defecto",
"ButtonRestore": "Restaurar",
@@ -88,56 +97,60 @@
"ButtonShow": "Mostrar",
"ButtonStartM4BEncode": "Iniciar Codificación M4B",
"ButtonStartMetadataEmbed": "Iniciar la Inserción de Metadata",
+ "ButtonStats": "Estadísticas",
"ButtonSubmit": "Enviar",
"ButtonTest": "Prueba",
+ "ButtonUnlinkOpenId": "Desvincular OpenID",
"ButtonUpload": "Subir",
"ButtonUploadBackup": "Subir Respaldo",
"ButtonUploadCover": "Subir Portada",
- "ButtonUploadOPMLFile": "Subir Archivo OPML ",
+ "ButtonUploadOPMLFile": "Cargar archivo OPML",
"ButtonUserDelete": "Eliminar Usuario {0}",
"ButtonUserEdit": "Editar Usuario {0}",
"ButtonViewAll": "Ver Todos",
- "ButtonYes": "Aceptar",
+ "ButtonYes": "Sí",
"ErrorUploadFetchMetadataAPI": "Error obteniendo metadatos",
"ErrorUploadFetchMetadataNoResults": "No se pudo obtener metadatos - Intenta actualizar el título y/o autor",
"ErrorUploadLacksTitle": "Se debe tener título",
"HeaderAccount": "Cuenta",
+ "HeaderAddCustomMetadataProvider": "Agregar proveedor de metadatos personalizado",
"HeaderAdvanced": "Avanzado",
"HeaderAppriseNotificationSettings": "Ajustes de Notificaciones de Apprise",
+ "HeaderAudioTracks": "Pistas de audio",
"HeaderAudiobookTools": "Herramientas de Gestión de Archivos de Audiolibro",
- "HeaderAudioTracks": "Pistas de Audio",
"HeaderAuthentication": "Autenticación",
"HeaderBackups": "Respaldos",
"HeaderChangePassword": "Cambiar Contraseña",
"HeaderChapters": "Capítulos",
"HeaderChooseAFolder": "Escoger una Carpeta",
"HeaderCollection": "Colección",
- "HeaderCollectionItems": "Elementos en la Colección",
+ "HeaderCollectionItems": "Elementos en la colección",
"HeaderCover": "Portada",
"HeaderCurrentDownloads": "Descargando Actualmente",
+ "HeaderCustomMessageOnLogin": "Mensaje personalizado al iniciar sesión",
"HeaderCustomMetadataProviders": "Proveedores de metadatos personalizados",
"HeaderDetails": "Detalles",
"HeaderDownloadQueue": "Lista de Descarga",
- "HeaderEbookFiles": "Archivos de Ebook",
- "HeaderEmail": "Email",
+ "HeaderEbookFiles": "Archivos de libros digitales",
+ "HeaderEmail": "Correo electrónico",
"HeaderEmailSettings": "Opciones de Email",
"HeaderEpisodes": "Episodios",
"HeaderEreaderDevices": "Dispositivos Ereader",
- "HeaderEreaderSettings": "Opciones de Ereader",
+ "HeaderEreaderSettings": "Ajustes del lector",
"HeaderFiles": "Elemento",
"HeaderFindChapters": "Buscar Capitulo",
"HeaderIgnoredFiles": "Ignorar Elemento",
"HeaderItemFiles": "Carpetas de Elementos",
"HeaderItemMetadataUtils": "Utilidades de Metadata de Elementos",
"HeaderLastListeningSession": "Ultimas Sesiones",
- "HeaderLatestEpisodes": "Últimos Episodios",
+ "HeaderLatestEpisodes": "Últimos episodios",
"HeaderLibraries": "Bibliotecas",
"HeaderLibraryFiles": "Archivos de Biblioteca",
"HeaderLibraryStats": "Estáticas de Biblioteca",
"HeaderListeningSessions": "Sesión",
"HeaderListeningStats": "Estadísticas de Tiempo Escuchado",
"HeaderLogin": "Iniciar Session",
- "HeaderLogs": "Logs",
+ "HeaderLogs": "Registros",
"HeaderManageGenres": "Administrar Géneros",
"HeaderManageTags": "Administrar Etiquetas",
"HeaderMapDetails": "Asignar Detalles",
@@ -146,6 +159,8 @@
"HeaderMetadataToEmbed": "Metadatos para Insertar",
"HeaderNewAccount": "Nueva Cuenta",
"HeaderNewLibrary": "Nueva Biblioteca",
+ "HeaderNotificationCreate": "Crear notificación",
+ "HeaderNotificationUpdate": "Notificación de actualización",
"HeaderNotifications": "Notificaciones",
"HeaderOpenIDConnectAuthentication": "Autenticación OpenID Connect",
"HeaderOpenRSSFeed": "Abrir fuente RSS",
@@ -153,17 +168,19 @@
"HeaderPasswordAuthentication": "Autenticación por contraseña",
"HeaderPermissions": "Permisos",
"HeaderPlayerQueue": "Fila del Reproductor",
- "HeaderPlaylist": "Lista de Reproducción",
- "HeaderPlaylistItems": "Elementos de Lista de Reproducción",
+ "HeaderPlayerSettings": "Ajustes del reproductor",
+ "HeaderPlaylist": "Lista de reproducción",
+ "HeaderPlaylistItems": "Elementos de lista de reproducción",
"HeaderPodcastsToAdd": "Podcasts para agregar",
"HeaderPreviewCover": "Vista Previa de Portada",
+ "HeaderRSSFeedGeneral": "Detalles RSS",
+ "HeaderRSSFeedIsOpen": "Fuente RSS está abierta",
+ "HeaderRSSFeeds": "Fuentes RSS",
"HeaderRemoveEpisode": "Remover Episodio",
"HeaderRemoveEpisodes": "Remover {0} Episodios",
- "HeaderRSSFeedGeneral": "Detalles RSS",
- "HeaderRSSFeedIsOpen": "Fuente RSS esta abierta",
- "HeaderRSSFeeds": "Fuentes RSS",
"HeaderSavedMediaProgress": "Guardar Progreso de Multimedia",
"HeaderSchedule": "Horario",
+ "HeaderScheduleEpisodeDownloads": "Programar descargas automáticas de episodios",
"HeaderScheduleLibraryScans": "Programar Escaneo Automático de Biblioteca",
"HeaderSession": "Sesión",
"HeaderSetBackupSchedule": "Programar Respaldo",
@@ -172,37 +189,37 @@
"HeaderSettingsExperimental": "Funciones Experimentales",
"HeaderSettingsGeneral": "General",
"HeaderSettingsScanner": "Escáner",
- "HeaderSleepTimer": "Temporizador para Dormir",
+ "HeaderSleepTimer": "Temporizador de apagado",
"HeaderStatsLargestItems": "Artículos mas Grandes",
"HeaderStatsLongestItems": "Artículos mas Largos (h)",
- "HeaderStatsMinutesListeningChart": "Minutos Escuchando (Últimos 7 días)",
- "HeaderStatsRecentSessions": "Sesiones Recientes",
+ "HeaderStatsMinutesListeningChart": "Minutos escuchando (Últimos 7 días)",
+ "HeaderStatsRecentSessions": "Sesiones recientes",
"HeaderStatsTop10Authors": "Top 10 Autores",
"HeaderStatsTop5Genres": "Top 5 Géneros",
- "HeaderTableOfContents": "Tabla de Contenidos",
+ "HeaderTableOfContents": "Tabla de contenidos",
"HeaderTools": "Herramientas",
"HeaderUpdateAccount": "Actualizar Cuenta",
"HeaderUpdateAuthor": "Actualizar Autor",
"HeaderUpdateDetails": "Actualizar Detalles",
"HeaderUpdateLibrary": "Actualizar Biblioteca",
"HeaderUsers": "Usuarios",
- "HeaderYearReview": "Year {0} in Review",
- "HeaderYourStats": "Tus Estadísticas",
+ "HeaderYearReview": "Revisión del año {0}",
+ "HeaderYourStats": "Tus estadísticas",
"LabelAbridged": "Abreviado",
- "LabelAbridgedChecked": "Abridged (checked)",
- "LabelAbridgedUnchecked": "Unabridged (unchecked)",
- "LabelAccessibleBy": "Accessible by",
+ "LabelAbridgedChecked": "Abreviado (comprobado)",
+ "LabelAbridgedUnchecked": "Sin abreviar (sin comprobar)",
+ "LabelAccessibleBy": "Accesible por",
"LabelAccountType": "Tipo de Cuenta",
"LabelAccountTypeAdmin": "Administrador",
"LabelAccountTypeGuest": "Invitado",
"LabelAccountTypeUser": "Usuario",
"LabelActivity": "Actividad",
- "LabelAdded": "Añadido",
- "LabelAddedAt": "Añadido",
"LabelAddToCollection": "Añadido a la Colección",
"LabelAddToCollectionBatch": "Se Añadieron {0} Libros a la Colección",
- "LabelAddToPlaylist": "Añadido a la Lista de Reproducción",
+ "LabelAddToPlaylist": "Añadido a la lista de reproducción",
"LabelAddToPlaylistBatch": "Se Añadieron {0} Artículos a la Lista de Reproducción",
+ "LabelAddedAt": "Añadido",
+ "LabelAddedDate": "Añadido {0}",
"LabelAdminUsersOnly": "Solamente usuarios administradores",
"LabelAll": "Todos",
"LabelAllUsers": "Todos los Usuarios",
@@ -210,11 +227,14 @@
"LabelAllUsersIncludingGuests": "Todos los usuarios e invitados",
"LabelAlreadyInYourLibrary": "Ya existe en la Biblioteca",
"LabelAppend": "Adjuntar",
+ "LabelAudioBitrate": "Tasa de bits del audio (por ejemplo, 128k)",
+ "LabelAudioChannels": "Canales de audio (1 o 2)",
+ "LabelAudioCodec": "Códec de audio",
"LabelAuthor": "Autor",
"LabelAuthorFirstLast": "Autor (Nombre Apellido)",
"LabelAuthorLastFirst": "Autor (Apellido, Nombre)",
"LabelAuthors": "Autores",
- "LabelAutoDownloadEpisodes": "Descargar Episodios Automáticamente",
+ "LabelAutoDownloadEpisodes": "Descargar episodios automáticamente",
"LabelAutoFetchMetadata": "Actualizar Metadatos Automáticamente",
"LabelAutoFetchMetadataHelp": "Obtiene metadatos de título, autor y serie para agilizar la carga. Es posible que haya que cotejar metadatos adicionales después de la carga.",
"LabelAutoLaunch": "Lanzamiento automático",
@@ -222,33 +242,38 @@
"LabelAutoRegister": "Registro automático",
"LabelAutoRegisterDescription": "Crear usuarios automáticamente tras iniciar sesión",
"LabelBackToUser": "Regresar a Usuario",
+ "LabelBackupAudioFiles": "Copia de seguridad de archivos de audio",
"LabelBackupLocation": "Ubicación del Respaldo",
"LabelBackupsEnableAutomaticBackups": "Habilitar Respaldo Automático",
"LabelBackupsEnableAutomaticBackupsHelp": "Respaldo Guardado en /metadata/backups",
- "LabelBackupsMaxBackupSize": "Tamaño Máximo de Respaldos (en GB)",
+ "LabelBackupsMaxBackupSize": "Tamaño máximo de copia de seguridad (en GB) (0 para ilimitado)",
"LabelBackupsMaxBackupSizeHelp": "Como protección contra una configuración errónea, los respaldos fallarán si se excede el tamaño configurado.",
"LabelBackupsNumberToKeep": "Numero de respaldos para conservar",
"LabelBackupsNumberToKeepHelp": "Solamente 1 respaldo se removerá a la vez. Si tiene mas respaldos guardados, debe removerlos manualmente.",
- "LabelBitrate": "Bitrate",
+ "LabelBitrate": "Tasa de bits",
+ "LabelBonus": "Bonus",
"LabelBooks": "Libros",
"LabelButtonText": "Texto del botón",
- "LabelByAuthor": "by {0}",
+ "LabelByAuthor": "por {0}",
"LabelChangePassword": "Cambiar Contraseña",
"LabelChannels": "Canales",
+ "LabelChapterCount": "{0} capítulos",
+ "LabelChapterTitle": "Titulo del Capítulo",
"LabelChapters": "Capítulos",
"LabelChaptersFound": "Capítulo Encontrado",
- "LabelChapterTitle": "Titulo del Capítulo",
"LabelClickForMoreInfo": "Click para más información",
- "LabelClosePlayer": "Cerrar Reproductor",
+ "LabelClickToUseCurrentValue": "Haz clic para utilizar el valor actual",
+ "LabelClosePlayer": "Cerrar reproductor",
"LabelCodec": "Codec",
- "LabelCollapseSeries": "Colapsar Serie",
+ "LabelCollapseSeries": "Colapsar serie",
+ "LabelCollapseSubSeries": "Contraer la subserie",
"LabelCollection": "Colección",
"LabelCollections": "Colecciones",
"LabelComplete": "Completo",
"LabelConfirmPassword": "Confirmar Contraseña",
- "LabelContinueListening": "Continuar Escuchando",
- "LabelContinueReading": "Continuar Leyendo",
- "LabelContinueSeries": "Continuar Serie",
+ "LabelContinueListening": "Seguir escuchando",
+ "LabelContinueReading": "Continuar leyendo",
+ "LabelContinueSeries": "Continuar series",
"LabelCover": "Portada",
"LabelCoverImageURL": "URL de Imagen de Portada",
"LabelCreatedAt": "Creado",
@@ -257,6 +282,7 @@
"LabelCurrently": "En este momento:",
"LabelCustomCronExpression": "Expresión de Cron Personalizada:",
"LabelDatetime": "Hora y Fecha",
+ "LabelDays": "Días",
"LabelDeleteFromFileSystemCheckbox": "Eliminar archivos del sistema (desmarcar para eliminar sólo de la base de datos)",
"LabelDescription": "Descripción",
"LabelDeselectAll": "Deseleccionar Todos",
@@ -274,54 +300,80 @@
"LabelDurationComparisonLonger": "({0} más largo)",
"LabelDurationComparisonShorter": "({0} más corto)",
"LabelDurationFound": "Duración Comprobada:",
- "LabelEbook": "Ebook",
- "LabelEbooks": "Ebooks",
+ "LabelEbook": "Libro electrónico",
+ "LabelEbooks": "Libros electrónicos",
"LabelEdit": "Editar",
- "LabelEmail": "Email",
+ "LabelEmail": "Correo electrónico",
"LabelEmailSettingsFromAddress": "Remitente",
+ "LabelEmailSettingsRejectUnauthorized": "Rechazar certificados no autorizados",
+ "LabelEmailSettingsRejectUnauthorizedHelp": "Deshabilitar la validación de certificados SSL puede exponer tu conexión a riesgos de seguridad, como ataques man-in-the-middle. Desactiva esta opción sólo si conoces las implicaciones y confias en el servidor de correo al que te conectas.",
"LabelEmailSettingsSecure": "Seguridad",
"LabelEmailSettingsSecureHelp": "Si está activado, se usará TLS para conectarse al servidor. Si está apagado, se usará TLS si su servidor tiene soporte para la extensión STARTTLS. En la mayoría de los casos, puede dejar esta opción activada si se está conectando al puerto 465. Apáguela en el caso de usar los puertos 587 o 25. (de nodemailer.com/smtp/#authentication)",
"LabelEmailSettingsTestAddress": "Probar Dirección",
"LabelEmbeddedCover": "Portada Integrada",
"LabelEnable": "Habilitar",
+ "LabelEncodingBackupLocation": "Se guardará una copia de seguridad de tus archivos de audio originales en:",
+ "LabelEncodingChaptersNotEmbedded": "Los capítulos no se incrustan en los audiolibros multipista.",
+ "LabelEncodingClearItemCache": "Asegúrese de purgar periódicamente la caché.",
+ "LabelEncodingFinishedM4B": "El M4B terminado se colocará en su carpeta de audiolibros en:",
+ "LabelEncodingInfoEmbedded": "Los metadatos se integrarán en las pistas de audio dentro de la carpeta de audiolibros.",
+ "LabelEncodingStartedNavigation": "Una vez iniciada la tarea, puedes salir de esta página.",
+ "LabelEncodingTimeWarning": "La codificación puede tardar hasta 30 minutos.",
+ "LabelEncodingWarningAdvancedSettings": "Advertencia: No actualice esta configuración a menos que esté familiarizado con las opciones de codificación de ffmpeg.",
+ "LabelEncodingWatcherDisabled": "Si ha desactivado la supervisión de los archivos, deberá volver a escanear este audiolibro más adelante.",
"LabelEnd": "Fin",
+ "LabelEndOfChapter": "Fin del capítulo",
"LabelEpisode": "Episodio",
+ "LabelEpisodeNotLinkedToRssFeed": "Episodio no enlazado al feed RSS",
+ "LabelEpisodeNumber": "Episodio #{0}",
"LabelEpisodeTitle": "Titulo de Episodio",
"LabelEpisodeType": "Tipo de Episodio",
+ "LabelEpisodeUrlFromRssFeed": "URL del episodio del feed RSS",
+ "LabelEpisodes": "Episodios",
+ "LabelEpisodic": "Episodios",
"LabelExample": "Ejemplo",
+ "LabelExpandSeries": "Ampliar serie",
+ "LabelExpandSubSeries": "Expandir la subserie",
"LabelExplicit": "Explicito",
"LabelExplicitChecked": "Explícito (marcado)",
"LabelExplicitUnchecked": "No Explícito (sin marcar)",
+ "LabelExportOPML": "Exportar OPML",
"LabelFeedURL": "Fuente de URL",
"LabelFetchingMetadata": "Obteniendo metadatos",
"LabelFile": "Archivo",
- "LabelFileBirthtime": "Archivo Creado en",
+ "LabelFileBirthtime": "Archivo creado en",
+ "LabelFileBornDate": "Creado {0}",
"LabelFileModified": "Archivo modificado",
- "LabelFilename": "Nombre del Archivo",
+ "LabelFileModifiedDate": "Modificado {0}",
+ "LabelFilename": "Nombre del archivo",
"LabelFilterByUser": "Filtrar por Usuario",
"LabelFindEpisodes": "Buscar Episodio",
"LabelFinished": "Terminado",
"LabelFolder": "Carpeta",
"LabelFolders": "Carpetas",
"LabelFontBold": "Negrilla",
+ "LabelFontBoldness": "Nivel de negrilla en fuente",
"LabelFontFamily": "Familia tipográfica",
"LabelFontItalic": "Itálica",
- "LabelFontScale": "Tamaño de Fuente",
+ "LabelFontScale": "Tamaño de fuente",
"LabelFontStrikethrough": "Tachado",
"LabelFormat": "Formato",
+ "LabelFull": "Completo",
"LabelGenre": "Genero",
"LabelGenres": "Géneros",
"LabelHardDeleteFile": "Eliminar Definitivamente",
- "LabelHasEbook": "Tiene Ebook",
- "LabelHasSupplementaryEbook": "Tiene Ebook Suplementario",
+ "LabelHasEbook": "Tiene un libro",
+ "LabelHasSupplementaryEbook": "Tiene un libro complementario",
+ "LabelHideSubtitles": "Ocultar subtítulos",
"LabelHighestPriority": "Mayor prioridad",
"LabelHost": "Host",
"LabelHour": "Hora",
+ "LabelHours": "Horas",
"LabelIcon": "Icono",
"LabelImageURLFromTheWeb": "URL de la imagen",
+ "LabelInProgress": "En proceso",
"LabelIncludeInTracklist": "Incluir en la Tracklist",
"LabelIncomplete": "Incompleto",
- "LabelInProgress": "En Proceso",
"LabelInterval": "Intervalo",
"LabelIntervalCustomDailyWeekly": "Personalizar diario/semanal",
"LabelIntervalEvery12Hours": "Cada 12 Horas",
@@ -333,76 +385,84 @@
"LabelIntervalEveryHour": "Cada Hora",
"LabelInvert": "Invertir",
"LabelItem": "Elemento",
- "LabelLanguage": "Lenguaje",
+ "LabelJumpBackwardAmount": "Cantidad de saltos hacia atrás",
+ "LabelJumpForwardAmount": "Cantidad de saltos hacia adelante",
+ "LabelLanguage": "Idioma",
"LabelLanguageDefaultServer": "Lenguaje Predeterminado del Servidor",
+ "LabelLanguages": "Idiomas",
"LabelLastBookAdded": "Último Libro Agregado",
"LabelLastBookUpdated": "Último Libro Actualizado",
"LabelLastSeen": "Última Vez Visto",
"LabelLastTime": "Última Vez",
"LabelLastUpdate": "Última Actualización",
"LabelLayout": "Distribución",
- "LabelLayoutSinglePage": "Una Página",
+ "LabelLayoutSinglePage": "Página única",
"LabelLayoutSplitPage": "Dos Páginas",
"LabelLess": "Menos",
"LabelLibrariesAccessibleToUser": "Bibliotecas Disponibles para el Usuario",
"LabelLibrary": "Biblioteca",
+ "LabelLibraryFilterSublistEmpty": "Sin {0}",
"LabelLibraryItem": "Elemento de Biblioteca",
"LabelLibraryName": "Nombre de Biblioteca",
"LabelLimit": "Limites",
"LabelLineSpacing": "Interlineado",
- "LabelListenAgain": "Escuchar Otra Vez",
- "LabelLogLevelDebug": "Debug",
+ "LabelListenAgain": "Volver a escuchar",
+ "LabelLogLevelDebug": "Depurar",
"LabelLogLevelInfo": "Información",
"LabelLogLevelWarn": "Advertencia",
"LabelLookForNewEpisodesAfterDate": "Buscar Nuevos Episodios a partir de esta Fecha",
"LabelLowestPriority": "Menor prioridad",
"LabelMatchExistingUsersBy": "Emparejar a los usuarios existentes por",
"LabelMatchExistingUsersByDescription": "Se utiliza para conectar usuarios existentes. Una vez conectados, los usuarios serán emparejados por un identificador único de su proveedor de SSO",
+ "LabelMaxEpisodesToDownload": "Número máximo # de episodios para descargar. Usa 0 para descargar una cantidad ilimitada.",
"LabelMediaPlayer": "Reproductor de Medios",
- "LabelMediaType": "Tipo de Multimedia",
- "LabelMetadataOrderOfPrecedenceDescription": "Las fuentes de metadatos de mayor prioridad prevalecerán sobre las de menor prioridad",
- "LabelMetadataProvider": "Proveedor de Metadatos",
+ "LabelMediaType": "Tipo de multimedia",
"LabelMetaTag": "Metaetiqueta",
"LabelMetaTags": "Metaetiquetas",
+ "LabelMetadataOrderOfPrecedenceDescription": "Las fuentes de metadatos de mayor prioridad prevalecerán sobre las de menor prioridad",
+ "LabelMetadataProvider": "Proveedor de Metadatos",
"LabelMinute": "Minuto",
+ "LabelMinutes": "Minutos",
"LabelMissing": "Ausente",
"LabelMissingEbook": "No tiene ebook",
"LabelMissingSupplementaryEbook": "No tiene ebook suplementario",
"LabelMobileRedirectURIs": "URIs de redirección a móviles permitidos",
- "LabelMobileRedirectURIsDescription": "Esta es una lista de URIs válidos para redireccionamiento de apps móviles. La URI por defecto es audiobookshelf://oauth, la cual puedes remover or corroborar con URIs adicionales para la integración con apps de terceros. Utilizando un asterisco (*) como el único punto de entrada permite cualquier URI.",
+ "LabelMobileRedirectURIsDescription": "Esta es una lista blanca de URI de redireccionamiento válidos para aplicaciones móviles. El predeterminado es audiobookshelf , que puede eliminar o complementar con URI adicionales para la integración de aplicaciones de terceros. Usando un asterisco ( * ) como única entrada que permite cualquier URI.",
"LabelMore": "Más",
- "LabelMoreInfo": "Más Información",
+ "LabelMoreInfo": "Más información",
"LabelName": "Nombre",
"LabelNarrator": "Narrador",
"LabelNarrators": "Narradores",
"LabelNew": "Nuevo",
- "LabelNewestAuthors": "Nuevos Autores",
- "LabelNewestEpisodes": "Nuevos Episodios",
"LabelNewPassword": "Nueva Contraseña",
+ "LabelNewestAuthors": "Autores más recientes",
+ "LabelNewestEpisodes": "Episodios más recientes",
"LabelNextBackupDate": "Fecha del Siguiente Respaldo",
"LabelNextScheduledRun": "Próxima Ejecución Programada",
+ "LabelNoCustomMetadataProviders": "Sin proveedores de metadatos personalizados",
"LabelNoEpisodesSelected": "Ningún Episodio Seleccionado",
+ "LabelNotFinished": "No terminado",
+ "LabelNotStarted": "Sin iniciar",
"LabelNotes": "Notas",
- "LabelNotFinished": "No Terminado",
"LabelNotificationAppriseURL": "URL(s) de Apprise",
"LabelNotificationAvailableVariables": "Variables Disponibles",
"LabelNotificationBodyTemplate": "Plantilla de Cuerpo",
"LabelNotificationEvent": "Evento de Notificación",
+ "LabelNotificationTitleTemplate": "Plantilla de Titulo",
"LabelNotificationsMaxFailedAttempts": "Máximo de Intentos Fallidos",
"LabelNotificationsMaxFailedAttemptsHelp": "Las notificaciones se desactivan después de fallar este número de veces",
"LabelNotificationsMaxQueueSize": "Tamaño máximo de la cola de notificaciones",
"LabelNotificationsMaxQueueSizeHelp": "Las notificaciones están limitadas a 1 por segundo. Las notificaciones serán ignoradas si llegan al numero máximo de cola para prevenir spam de eventos.",
- "LabelNotificationTitleTemplate": "Plantilla de Titulo",
- "LabelNotStarted": "Sin Iniciar",
"LabelNumberOfBooks": "Numero de Libros",
"LabelNumberOfEpisodes": "# de Episodios",
- "LabelOpenIDAdvancedPermsClaimDescription": "Name of the OpenID claim that contains advanced permissions for user actions within the application which will apply to non-admin roles (if configured). If the claim is missing from the response, access to ABS will be denied. If a single option is missing, it will be treated as false. Ensure the identity provider's claim matches the expected structure:",
- "LabelOpenIDClaims": "Leave the following options empty to disable advanced group and permissions assignment, automatically assigning 'User' group then.",
- "LabelOpenIDGroupClaimDescription": "Name of the OpenID claim that contains a list of the user's groups. Commonly referred to as groups. If configured, the application will automatically assign roles based on the user's group memberships, provided that these groups are named case-insensitively 'admin', 'user', or 'guest' in the claim. The claim should contain a list, and if a user belongs to multiple groups, the application will assign the role corresponding to the highest level of access. If no group matches, access will be denied.",
+ "LabelOpenIDAdvancedPermsClaimDescription": "Nombre de la notificación de OpenID que contiene permisos avanzados para acciones de usuario dentro de la aplicación que se aplicarán a roles que no sean de administrador (si están configurados). Si el reclamo no aparece en la respuesta, se denegará el acceso a ABS. Si falta una sola opción, se tratará como falsa. Asegúrese de que la notificación del proveedor de identidades coincida con la estructura esperada:",
+ "LabelOpenIDClaims": "Deje las siguientes opciones vacías para deshabilitar la asignación avanzada de grupos y permisos, lo que asignaría de manera automática al grupo 'Usuario'.",
+ "LabelOpenIDGroupClaimDescription": "Nombre de la declaración OpenID que contiene una lista de grupos del usuario. Comúnmente conocidos como grupos. Si se configura, la aplicación asignará automáticamente roles en función de la pertenencia a grupos del usuario, siempre que estos grupos se denominen \"admin\", \"user\" o \"guest\" en la notificación. La solicitud debe contener una lista, y si un usuario pertenece a varios grupos, la aplicación asignará el rol correspondiente al mayor nivel de acceso. Si ningún grupo coincide, se denegará el acceso.",
"LabelOpenRSSFeed": "Abrir Fuente RSS",
"LabelOverwrite": "Sobrescribir",
"LabelPassword": "Contraseña",
- "LabelPath": "Ruta de Carpeta",
+ "LabelPath": "Ruta de carpeta",
+ "LabelPermanent": "Permanente",
"LabelPermissionsAccessAllLibraries": "Puede Accesar a Todas las bibliotecas",
"LabelPermissionsAccessAllTags": "Pueda Accesar a Todas las Etiquetas",
"LabelPermissionsAccessExplicitContent": "Puede Accesar a Contenido Explicito",
@@ -410,45 +470,53 @@
"LabelPermissionsDownload": "Puede Descargar",
"LabelPermissionsUpdate": "Puede Actualizar",
"LabelPermissionsUpload": "Puede Subir",
- "LabelPersonalYearReview": "Your Year in Review ({0})",
+ "LabelPersonalYearReview": "Revisión de tu año ({0})",
"LabelPhotoPathURL": "Ruta de Acceso/URL de Foto",
- "LabelPlaylists": "Lista de Reproducción",
"LabelPlayMethod": "Método de Reproducción",
+ "LabelPlayerChapterNumberMarker": "{0} de {1}",
+ "LabelPlaylists": "Lista de Reproducción",
"LabelPodcast": "Podcast",
- "LabelPodcasts": "Podcasts",
"LabelPodcastSearchRegion": "Región de búsqueda de podcasts",
"LabelPodcastType": "Tipo Podcast",
+ "LabelPodcasts": "Podcasts",
"LabelPort": "Puerto",
"LabelPrefixesToIgnore": "Prefijos para Ignorar (no distingue entre mayúsculas y minúsculas.)",
"LabelPreventIndexing": "Evite que su fuente sea indexada por los directorios de podcasts de iTunes y Google",
"LabelPrimaryEbook": "Ebook principal",
"LabelProgress": "Progreso",
"LabelProvider": "Proveedor",
- "LabelPubDate": "Fecha de Publicación",
+ "LabelProviderAuthorizationValue": "Valor del encabezado de autorización",
+ "LabelPubDate": "Fecha de publicación",
+ "LabelPublishYear": "Año de publicación",
+ "LabelPublishedDate": "Publicado {0}",
+ "LabelPublishedDecade": "Década de publicación",
+ "LabelPublishedDecades": "Décadas publicadas",
"LabelPublisher": "Editor",
- "LabelPublishYear": "Año de Publicación",
+ "LabelPublishers": "Editores",
+ "LabelRSSFeedCustomOwnerEmail": "Correo electrónico de dueño personalizado",
+ "LabelRSSFeedCustomOwnerName": "Nombre de dueño personalizado",
+ "LabelRSSFeedOpen": "Fuente RSS Abierta",
+ "LabelRSSFeedPreventIndexing": "Prevenir indexado",
+ "LabelRSSFeedSlug": "Fuente RSS Slug",
+ "LabelRSSFeedURL": "URL de Fuente RSS",
+ "LabelRandomly": "Aleatorio",
+ "LabelReAddSeriesToContinueListening": "Volver a agregar la serie para continuar escuchándola",
"LabelRead": "Leído",
"LabelReadAgain": "Volver a leer",
"LabelReadEbookWithoutProgress": "Leer Ebook sin guardar progreso",
- "LabelRecentlyAdded": "Agregado Recientemente",
"LabelRecentSeries": "Series Recientes",
+ "LabelRecentlyAdded": "Agregado Recientemente",
"LabelRecommended": "Recomendados",
"LabelRedo": "Rehacer",
"LabelRegion": "Región",
"LabelReleaseDate": "Fecha de Estreno",
"LabelRemoveCover": "Remover Portada",
"LabelRowsPerPage": "Filas por página",
- "LabelRSSFeedCustomOwnerEmail": "Email de dueño personalizado",
- "LabelRSSFeedCustomOwnerName": "Nombre de dueño personalizado",
- "LabelRSSFeedOpen": "Fuente RSS Abierta",
- "LabelRSSFeedPreventIndexing": "Prevenir Indexado",
- "LabelRSSFeedSlug": "Fuente RSS Slug",
- "LabelRSSFeedURL": "URL de Fuente RSS",
"LabelSearchTerm": "Buscar Termino",
"LabelSearchTitle": "Buscar Titulo",
"LabelSearchTitleOrASIN": "Buscar Título o ASIN",
"LabelSeason": "Temporada",
- "LabelSelectAll": "Select all",
+ "LabelSelectAll": "Seleccionar todo",
"LabelSelectAllEpisodes": "Seleccionar todos los episodios",
"LabelSelectEpisodesShowing": "Seleccionar los {0} episodios visibles",
"LabelSelectUsers": "Seleccionar usuarios",
@@ -457,7 +525,8 @@
"LabelSeries": "Series",
"LabelSeriesName": "Nombre de la Serie",
"LabelSeriesProgress": "Progreso de la Serie",
- "LabelServerYearReview": "Server Year in Review ({0})",
+ "LabelServerLogLevel": "Nivel de registro del servidor",
+ "LabelServerYearReview": "Resumen del año del servidor ({0})",
"LabelSetEbookAsPrimary": "Establecer como primario",
"LabelSetEbookAsSupplementary": "Establecer como suplementario",
"LabelSettingsAudiobooksOnly": "Sólo Audiolibros",
@@ -471,8 +540,8 @@
"LabelSettingsEnableWatcher": "Habilitar Watcher",
"LabelSettingsEnableWatcherForLibrary": "Habilitar Watcher para la carpeta de esta biblioteca",
"LabelSettingsEnableWatcherHelp": "Permite agregar/actualizar elementos automáticamente cuando se detectan cambios en los archivos. *Requiere reiniciar el servidor",
- "LabelSettingsEpubsAllowScriptedContent": "Allow scripted content in epubs",
- "LabelSettingsEpubsAllowScriptedContentHelp": "Allow epub files to execute scripts. It is recommended to keep this setting disabled unless you trust the source of the epub files.",
+ "LabelSettingsEpubsAllowScriptedContent": "Permitir scripts en epubs",
+ "LabelSettingsEpubsAllowScriptedContentHelp": "Permitir que los archivos epub ejecuten scripts. Se recomienda mantener esta opción desactivada a menos que confíe en el origen de los archivos epub.",
"LabelSettingsExperimentalFeatures": "Funciones Experimentales",
"LabelSettingsExperimentalFeaturesHelp": "Funciones en desarrollo que se beneficiarían de sus comentarios y experiencias de prueba. Haga click aquí para abrir una conversación en Github.",
"LabelSettingsFindCovers": "Buscar Portadas",
@@ -481,7 +550,7 @@
"LabelSettingsHideSingleBookSeriesHelp": "Las series con un solo libro no aparecerán en la página de series ni la repisa para series de la página principal.",
"LabelSettingsHomePageBookshelfView": "Usar la vista de librero en la página principal",
"LabelSettingsLibraryBookshelfView": "Usar la vista de librero en la biblioteca",
- "LabelSettingsOnlyShowLaterBooksInContinueSeries": "Skip earlier books in Continue Series",
+ "LabelSettingsOnlyShowLaterBooksInContinueSeries": "Saltar libros anteriores de la serie Continuada",
"LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "El estante de la página de inicio de Continuar Serie muestra el primer libro no iniciado de una serie que tenga por lo menos un libro finalizado y no tenga libros en progreso. Habilitar esta opción le permitirá continuar series desde el último libro que ha completado en vez del primer libro que no ha empezado.",
"LabelSettingsParseSubtitles": "Extraer Subtítulos",
"LabelSettingsParseSubtitlesHelp": "Extraer subtítulos de los nombres de las carpetas de los audiolibros. Los subtítulos deben estar separados por \" - \" Por ejemplo: \"Ejemplo de Título - Subtítulo Aquí\" tiene el subtítulo \"Subtítulo Aquí\"",
@@ -490,23 +559,27 @@
"LabelSettingsSkipMatchingBooksWithASIN": "Omitir libros coincidentes que ya tengan un ASIN",
"LabelSettingsSkipMatchingBooksWithISBN": "Omitir libros coincidentes que ya tengan un ISBN",
"LabelSettingsSortingIgnorePrefixes": "Ignorar prefijos al ordenar",
- "LabelSettingsSortingIgnorePrefixesHelp": "Por ejemplo: El prefijo \"el\" del titulo \"El titulo del libro\" se ordenará como \"Titulo del Libro, el\".",
+ "LabelSettingsSortingIgnorePrefixesHelp": "Es decir, para el prefijo \"el\" título del libro, \"El título del libro\" se ordenaría como \"Título del libro, El\"",
"LabelSettingsSquareBookCovers": "Usar portadas cuadradas",
"LabelSettingsSquareBookCoversHelp": "Prefierir usar portadas cuadradas sobre las portadas estándar 1.6:1",
"LabelSettingsStoreCoversWithItem": "Guardar portadas con elementos",
- "LabelSettingsStoreCoversWithItemHelp": "Por defecto, las portadas se almacenan en /metadata/items. Si habilita esta opción, las portadas se almacenarán en la carpeta de elementos de su biblioteca. Se guardará un solo archivo llamado \"cover\".",
+ "LabelSettingsStoreCoversWithItemHelp": "De forma predeterminada, las portadas se almacenan en /metadata/items, activando esta opción almacenará las portadas en la carpeta de elementos de la biblioteca. Sólo se conservará un archivo llamado \"cover\"",
"LabelSettingsStoreMetadataWithItem": "Guardar metadatos con elementos",
"LabelSettingsStoreMetadataWithItemHelp": "Por defecto, los archivos de metadatos se almacenan en /metadata/items. Si habilita esta opción, los archivos de metadatos se guardarán en la carpeta de elementos de su biblioteca",
"LabelSettingsTimeFormat": "Formato de Tiempo",
+ "LabelShare": "Compartir",
+ "LabelShareOpen": "abrir un recurso compartido",
+ "LabelShareURL": "Compartir la URL",
"LabelShowAll": "Mostrar Todos",
"LabelShowSeconds": "Mostrar segundos",
+ "LabelShowSubtitles": "Mostrar subtítulos",
"LabelSize": "Tamaño",
- "LabelSleepTimer": "Temporizador para Dormir",
+ "LabelSleepTimer": "Temporizador de apagado",
"LabelSlug": "Slug",
"LabelStart": "Iniciar",
+ "LabelStartTime": "Tiempo de Inicio",
"LabelStarted": "Iniciado",
"LabelStartedAt": "Iniciado En",
- "LabelStartTime": "Tiempo de Inicio",
"LabelStatsAudioTracks": "Pistas de Audio",
"LabelStatsAuthors": "Autores",
"LabelStatsBestDay": "Mejor Día",
@@ -537,6 +610,10 @@
"LabelThemeDark": "Oscuro",
"LabelThemeLight": "Claro",
"LabelTimeBase": "Tiempo Base",
+ "LabelTimeDurationXHours": "{0} horas",
+ "LabelTimeDurationXMinutes": "{0} minutos",
+ "LabelTimeDurationXSeconds": "{0} segundos",
+ "LabelTimeInMinutes": "Tiempo en minutos",
"LabelTimeListened": "Tiempo Escuchando",
"LabelTimeListenedToday": "Tiempo Escuchando Hoy",
"LabelTimeRemaining": "{0} restante",
@@ -544,6 +621,7 @@
"LabelTitle": "Título",
"LabelToolsEmbedMetadata": "Incrustar Metadatos",
"LabelToolsEmbedMetadataDescription": "Incrusta metadatos en los archivos de audio, incluyendo la portada y capítulos.",
+ "LabelToolsM4bEncoder": "Codificador M4B",
"LabelToolsMakeM4b": "Hacer Archivo de Audiolibro M4B",
"LabelToolsMakeM4bDescription": "Generar archivo de audiolibro .M4B con metadatos, imágenes de portada y capítulos incorporados.",
"LabelToolsSplitM4b": "Dividir M4B en Archivos MP3",
@@ -560,14 +638,16 @@
"LabelUnabridged": "No Abreviado",
"LabelUndo": "Deshacer",
"LabelUnknown": "Desconocido",
+ "LabelUnknownPublishDate": "Fecha de publicación desconocida",
"LabelUpdateCover": "Actualizar Portada",
- "LabelUpdateCoverHelp": "Permitir sobrescribir las portadas existentes de los libros seleccionados cuando sean encontradas.",
- "LabelUpdatedAt": "Actualizado En",
+ "LabelUpdateCoverHelp": "Permitir sobrescribir las portadas existentes para los libros seleccionados cuando se encuentra una coincidencia",
"LabelUpdateDetails": "Actualizar Detalles",
"LabelUpdateDetailsHelp": "Permitir sobrescribir detalles existentes de los libros seleccionados cuando sean encontrados",
+ "LabelUpdatedAt": "Actualizado En",
"LabelUploaderDragAndDrop": "Arrastre y suelte archivos o carpetas",
"LabelUploaderDropFiles": "Suelte los Archivos",
"LabelUploaderItemFetchMetadataHelp": "Buscar título, autor y series automáticamente",
+ "LabelUseAdvancedOptions": "Usar opciones avanzadas",
"LabelUseChapterTrack": "Usar pista por capitulo",
"LabelUseFullTrack": "Usar pista completa",
"LabelUser": "Usuario",
@@ -576,9 +656,12 @@
"LabelVersion": "Versión",
"LabelViewBookmarks": "Ver Marcadores",
"LabelViewChapters": "Ver Capítulos",
+ "LabelViewPlayerSettings": "Ver los ajustes del reproductor",
"LabelViewQueue": "Ver Fila del Reproductor",
"LabelVolume": "Volumen",
"LabelWeekdaysToRun": "Correr en Días de la Semana",
+ "LabelXBooks": "{0} libros",
+ "LabelXItems": "{0} elementos",
"LabelYearReviewHide": "Ocultar Year in Review",
"LabelYearReviewShow": "Ver Year in Review",
"LabelYourAudiobookDuration": "Duración de tu Audiolibro",
@@ -588,31 +671,44 @@
"MessageAddToPlayerQueue": "Agregar a fila del Reproductor",
"MessageAppriseDescription": "Para usar esta función deberás tener la API de Apprise corriendo o una API que maneje los mismos resultados. La URL de la API de Apprise debe tener la misma ruta de archivos que donde se envían las notificaciones. Por ejemplo: si su API esta en http://192.168.1.1:8337 entonces pondría http://192.168.1.1:8337/notify.",
"MessageBackupsDescription": "Los respaldos incluyen: usuarios, el progreso del los usuarios, los detalles de los elementos de la biblioteca, la configuración del servidor y las imágenes en /metadata/items y /metadata/authors. Los Respaldos NO incluyen ningún archivo guardado en la carpeta de tu biblioteca.",
+ "MessageBackupsLocationEditNote": "Nota: Actualizar la ubicación de la copia de seguridad no moverá ni modificará las copias de seguridad existentes",
+ "MessageBackupsLocationNoEditNote": "Nota: La ubicación de la copia de seguridad se establece a través de una variable de entorno y no se puede cambiar aquí.",
+ "MessageBackupsLocationPathEmpty": "La ruta de la copia de seguridad no puede estar vacía",
"MessageBatchQuickMatchDescription": "\"Encontrar Rápido\" tratará de agregar portadas y metadatos faltantes de los elementos seleccionados. Habilite la opción de abajo para que \"Encontrar Rápido\" pueda sobrescribir portadas y/o metadatos existentes.",
- "MessageBookshelfNoCollections": "No tienes ninguna colección.",
- "MessageBookshelfNoResultsForFilter": "Ningún Resultado para el filtro \"{0}: {1}\"",
+ "MessageBookshelfNoCollections": "No tienes ninguna colección",
"MessageBookshelfNoRSSFeeds": "Ninguna Fuente RSS esta abierta",
+ "MessageBookshelfNoResultsForFilter": "Ningún Resultado para el filtro \"{0}: {1}\"",
+ "MessageBookshelfNoResultsForQuery": "No hay resultados para la consulta",
"MessageBookshelfNoSeries": "No tienes ninguna serie",
- "MessageChapterEndIsAfter": "El final del capítulo es después del final de su audiolibro.",
+ "MessageChapterEndIsAfter": "El final del capítulo es después del final de tu audiolibro",
"MessageChapterErrorFirstNotZero": "El primer capitulo debe iniciar en 0",
- "MessageChapterErrorStartGteDuration": "El tiempo de inicio no es válido: debe ser inferior a la duración del audiolibro.",
+ "MessageChapterErrorStartGteDuration": "El tiempo de inicio no es válido: debe ser inferior a la duración del audiolibro",
"MessageChapterErrorStartLtPrev": "El tiempo de inicio no es válido: debe ser mayor o igual que el tiempo de inicio del capítulo anterior",
"MessageChapterStartIsAfter": "El comienzo del capítulo es después del final de su audiolibro",
"MessageCheckingCron": "Revisando cron...",
"MessageConfirmCloseFeed": "Está seguro de que desea cerrar esta fuente?",
"MessageConfirmDeleteBackup": "¿Está seguro de que desea eliminar el respaldo {0}?",
+ "MessageConfirmDeleteDevice": "¿Estás seguro de que deseas eliminar el lector electrónico \"{0}\"?",
"MessageConfirmDeleteFile": "Esto eliminará el archivo de su sistema de archivos. ¿Está seguro?",
"MessageConfirmDeleteLibrary": "¿Está seguro de que desea eliminar permanentemente la biblioteca \"{0}\"?",
"MessageConfirmDeleteLibraryItem": "Esto removerá la librería de la base de datos y archivos en tu sistema. ¿Estás seguro?",
"MessageConfirmDeleteLibraryItems": "Esto removerá {0} elemento(s) de la librería en base de datos y archivos en tu sistema. ¿Estás seguro?",
+ "MessageConfirmDeleteMetadataProvider": "¿Estás seguro de que deseas eliminar el proveedor de metadatos personalizado \"{0}\"?",
+ "MessageConfirmDeleteNotification": "¿Estás seguro de que deseas eliminar esta notificación?",
"MessageConfirmDeleteSession": "¿Está seguro de que desea eliminar esta sesión?",
+ "MessageConfirmEmbedMetadataInAudioFiles": "¿Está seguro de que desea incrustar metadatos en {0} archivos de audio?",
"MessageConfirmForceReScan": "¿Está seguro de que desea forzar un re-escaneo?",
"MessageConfirmMarkAllEpisodesFinished": "¿Está seguro de que desea marcar todos los episodios como terminados?",
"MessageConfirmMarkAllEpisodesNotFinished": "¿Está seguro de que desea marcar todos los episodios como no terminados?",
+ "MessageConfirmMarkItemFinished": "¿Estás seguro de que deseas marcar \"{0}\" como terminado?",
+ "MessageConfirmMarkItemNotFinished": "¿Estás seguro de que deseas marcar \"{0}\" como no acabado?",
"MessageConfirmMarkSeriesFinished": "¿Está seguro de que desea marcar todos los libros en esta serie como terminados?",
"MessageConfirmMarkSeriesNotFinished": "¿Está seguro de que desea marcar todos los libros en esta serie como no terminados?",
+ "MessageConfirmNotificationTestTrigger": "¿Activar esta notificación con datos de prueba?",
"MessageConfirmPurgeCache": "Purgar el caché eliminará el directorio completo ubicado en /metadata/cache.
¿Está seguro que desea eliminar el directorio del caché?",
- "MessageConfirmQuickEmbed": "¡Advertencia! La integración rápida no realiza copias de seguridad a ninguno de tus archivos de audio. Asegúrate de haber realizado una copia de los mismos previamente.
¿Deseas continuar?",
+ "MessageConfirmPurgeItemsCache": "Purgar la caché de los elementos eliminará todo el directorio /metadata/cache/items. ¿Estás seguro?",
+ "MessageConfirmQuickEmbed": "¡Advertencia! La integración rápida no realiza copias de seguridad a ninguno de tus archivos de audio. Asegúrate de haber realizado una copia de los mismos previamente.
¿Deseas continuar?",
+ "MessageConfirmReScanLibraryItems": "¿Estás seguro de querer re escanear {0} elemento(s)?",
"MessageConfirmRemoveAllChapters": "¿Está seguro de que desea remover todos los capitulos?",
"MessageConfirmRemoveAuthor": "¿Está seguro de que desea remover el autor \"{0}\"?",
"MessageConfirmRemoveCollection": "¿Está seguro de que desea remover la colección \"{0}\"?",
@@ -627,13 +723,16 @@
"MessageConfirmRenameTag": "¿Está seguro de que desea renombrar la etiqueta \"{0}\" a \"{1}\" de todos los elementos?",
"MessageConfirmRenameTagMergeNote": "Nota: Esta etiqueta ya existe, por lo que se fusionarán.",
"MessageConfirmRenameTagWarning": "Advertencia! Una etiqueta similar ya existe \"{0}\".",
- "MessageConfirmReScanLibraryItems": "¿Estás seguro de querer re escanear {0} elemento(s)?",
+ "MessageConfirmResetProgress": "¿Estás seguro de que quieres reiniciar tu progreso?",
"MessageConfirmSendEbookToDevice": "¿Está seguro de que enviar {0} ebook(s) \"{1}\" al dispositivo \"{2}\"?",
+ "MessageConfirmUnlinkOpenId": "¿Estás seguro de que deseas desvincular este usuario de OpenID?",
"MessageDownloadingEpisode": "Descargando Capitulo",
- "MessageDragFilesIntoTrackOrder": "Arrastra los archivos al orden correcto de las pistas.",
+ "MessageDragFilesIntoTrackOrder": "Arrastra los archivos al orden correcto de las pistas",
+ "MessageEmbedFailed": "¡Error al insertar!",
"MessageEmbedFinished": "Incrustación Terminada!",
+ "MessageEmbedQueue": "En cola para incrustar metadatos ({0} en cola)",
"MessageEpisodesQueuedForDownload": "{0} Episodio(s) en cola para descargar",
- "MessageEreaderDevices": "To ensure delivery of ebooks, you may need to add the above email address as a valid sender for each device listed below.",
+ "MessageEreaderDevices": "Para garantizar la entrega de libros electrónicos, es posible que tenga que agregar la dirección de correo electrónico anterior como remitente válido para cada dispositivo enumerado a continuación.",
"MessageFeedURLWillBe": "URL de la fuente será {0}",
"MessageFetching": "Buscando...",
"MessageForceReScanDescription": "Escaneará todos los archivos como un nuevo escaneo. Archivos de audio con etiquetas ID3, archivos OPF y archivos de texto serán escaneados como nuevos.",
@@ -651,17 +750,18 @@
"MessageMapChapterTitles": "Asignar los nombres de capítulos a los capítulos existentes en tu audiolibro sin ajustar sus tiempos",
"MessageMarkAllEpisodesFinished": "Marcar todos los episodios como terminados",
"MessageMarkAllEpisodesNotFinished": "Marcar todos los episodios como no terminados",
- "MessageMarkAsFinished": "Marcar como Terminado",
+ "MessageMarkAsFinished": "Marcar como terminado",
"MessageMarkAsNotFinished": "Marcar como No Terminado",
"MessageMatchBooksDescription": "Se intentará hacer coincidir los libros de la biblioteca con un libro del proveedor de búsqueda seleccionado, y se rellenarán los detalles vacíos y la portada. No sobrescribe los detalles.",
"MessageNoAudioTracks": "Sin Pista de Audio",
"MessageNoAuthors": "Sin Autores",
"MessageNoBackups": "Sin Respaldos",
- "MessageNoBookmarks": "Sin Marcadores",
- "MessageNoChapters": "Sin Capítulos",
+ "MessageNoBookmarks": "Sin marcadores",
+ "MessageNoChapters": "Sin capítulos",
"MessageNoCollections": "Sin Colecciones",
"MessageNoCoversFound": "Ninguna Portada Encontrada",
"MessageNoDescription": "Sin Descripción",
+ "MessageNoDevices": "Sin dispositivos",
"MessageNoDownloadsInProgress": "No hay descargas actualmente en curso",
"MessageNoDownloadsQueued": "Sin Lista de Descarga",
"MessageNoEpisodeMatchesFound": "No se encontraron episodios que coinciden",
@@ -669,27 +769,32 @@
"MessageNoFoldersAvailable": "No Hay Carpetas Disponibles",
"MessageNoGenres": "Sin Géneros",
"MessageNoIssues": "Sin Problemas",
- "MessageNoItems": "Sin Elementos",
- "MessageNoItemsFound": "Ningún Elemento Encontrado",
- "MessageNoListeningSessions": "Ninguna Session Escuchada",
+ "MessageNoItems": "Sin elementos",
+ "MessageNoItemsFound": "Ningún elemento encontrado",
+ "MessageNoListeningSessions": "Ninguna sesión escuchada",
"MessageNoLogs": "No hay logs",
"MessageNoMediaProgress": "Multimedia sin Progreso",
"MessageNoNotifications": "Ninguna Notificación",
+ "MessageNoPodcastFeed": "Podcast no válido: Sin feed",
"MessageNoPodcastsFound": "Ningún podcast encontrado",
"MessageNoResults": "Sin Resultados",
"MessageNoSearchResultsFor": "No hay resultados para la búsqueda \"{0}\"",
"MessageNoSeries": "Sin Series",
"MessageNoTags": "Sin Etiquetas",
"MessageNoTasksRunning": "Ninguna Tarea Corriendo",
- "MessageNotYetImplemented": "Aun no implementado",
- "MessageNoUpdateNecessary": "No es necesario actualizar",
"MessageNoUpdatesWereNecessary": "No fue necesario actualizar",
"MessageNoUserPlaylists": "No tienes lista de reproducciones",
+ "MessageNotYetImplemented": "Aun no implementado",
+ "MessageOpmlPreviewNote": "Nota: Esta es una vista previa del archivo OPML analizado. El título real del podcast se obtendrá del canal RSS.",
"MessageOr": "o",
"MessagePauseChapter": "Pausar la reproducción del capítulo",
"MessagePlayChapter": "Escuchar el comienzo del capítulo",
"MessagePlaylistCreateFromCollection": "Crear una lista de reproducción a partir de una colección",
+ "MessagePleaseWait": "Por favor, espera...",
"MessagePodcastHasNoRSSFeedForMatching": "El podcast no tiene una URL de fuente RSS que pueda usar",
+ "MessagePodcastSearchField": "Introduzca el término de búsqueda o la URL de la fuente RSS",
+ "MessageQuickEmbedInProgress": "Integración rápida en proceso",
+ "MessageQuickEmbedQueue": "En cola para inserción rápida ({0} en cola)",
"MessageQuickMatchDescription": "Rellenar detalles de elementos vacíos y portada con los primeros resultados de '{0}'. No sobrescribe los detalles a menos que la opción \"Preferir Metadatos Encontrados\" del servidor esté habilitada.",
"MessageRemoveChapter": "Remover capítulos",
"MessageRemoveEpisodes": "Remover {0} episodio(s)",
@@ -703,7 +808,45 @@
"MessageSelected": "{0} seleccionado(s)",
"MessageServerCouldNotBeReached": "No se pudo establecer la conexión con el servidor",
"MessageSetChaptersFromTracksDescription": "Establecer capítulos usando cada archivo de audio como un capítulo y el título del capítulo como el nombre del archivo de audio",
+ "MessageShareExpirationWillBe": "La caducidad será {0}",
+ "MessageShareExpiresIn": "Caduduca en {0}",
+ "MessageShareURLWillBe": "La URL para compartir será {0} ",
"MessageStartPlaybackAtTime": "Iniciar reproducción para \"{0}\" en {1}?",
+ "MessageTaskAudioFileNotWritable": "El archivo de audio \"{0}\" no se puede grabar",
+ "MessageTaskCanceledByUser": "Tarea cancelada por el usuario",
+ "MessageTaskDownloadingEpisodeDescription": "Descargando el episodio \"{0}\"",
+ "MessageTaskEmbeddingMetadata": "Inserción de metadatos",
+ "MessageTaskEmbeddingMetadataDescription": "Inserción de metadatos en el audiolibro \"{0}\"",
+ "MessageTaskEncodingM4b": "Codificación M4B",
+ "MessageTaskEncodingM4bDescription": "Codificación del audiolibro \"{0}\" en un único archivo m4b",
+ "MessageTaskFailed": "Fallida",
+ "MessageTaskFailedToBackupAudioFile": "Error en la copia de seguridad del archivo de audio \"{0}\"",
+ "MessageTaskFailedToCreateCacheDirectory": "Error al crear el directorio de la caché",
+ "MessageTaskFailedToEmbedMetadataInFile": "Error al incrustar metadatos en el archivo \"{0}\"",
+ "MessageTaskFailedToMergeAudioFiles": "Error al fusionar archivos de audio",
+ "MessageTaskFailedToMoveM4bFile": "Error al mover el archivo m4b",
+ "MessageTaskFailedToWriteMetadataFile": "Error al escribir el archivo de metadatos",
+ "MessageTaskMatchingBooksInLibrary": "Libros coincidentes en la biblioteca \"{0}\"",
+ "MessageTaskNoFilesToScan": "Sin archivos para escanear",
+ "MessageTaskOpmlImport": "Importar OPML",
+ "MessageTaskOpmlImportDescription": "Creando podcasts a partir de {0} fuentes RSS",
+ "MessageTaskOpmlImportFeed": "Feed de importación OPML",
+ "MessageTaskOpmlImportFeedDescription": "Importando el feed RSS \"{0}\"",
+ "MessageTaskOpmlImportFeedFailed": "No se puede obtener el podcast",
+ "MessageTaskOpmlImportFeedPodcastDescription": "Creando podcast \"{0}\"",
+ "MessageTaskOpmlImportFeedPodcastExists": "Podcast ya existe en la ruta",
+ "MessageTaskOpmlImportFeedPodcastFailed": "Error al crear podcast",
+ "MessageTaskOpmlImportFinished": "Añadido {0} podcasts",
+ "MessageTaskOpmlParseFailed": "No se pudo analizar el archivo OPML",
+ "MessageTaskOpmlParseFastFail": "No se encontró la etiqueta del archivo OPML no válido O no se encontró la etiqueta ",
+ "MessageTaskOpmlParseNoneFound": "No se encontraron fuentes en el archivo OPML",
+ "MessageTaskScanItemsAdded": "{0} añadido",
+ "MessageTaskScanItemsMissing": "Falta {0}",
+ "MessageTaskScanItemsUpdated": "{0} actualizado",
+ "MessageTaskScanNoChangesNeeded": "No se necesitan cambios",
+ "MessageTaskScanningFileChanges": "Escaneando cambios en el archivo en \"{0}\"",
+ "MessageTaskScanningLibrary": "Escaneando la biblioteca \"{0}\"",
+ "MessageTaskTargetDirectoryNotWritable": "El directorio de destino no se puede escribir",
"MessageThinking": "Pensando...",
"MessageUploaderItemFailed": "Error al Subir",
"MessageUploaderItemSuccess": "¡Éxito al Subir!",
@@ -721,90 +864,172 @@
"NoteUploaderFoldersWithMediaFiles": "Las carpetas con archivos multimedia se manejarán como elementos separados en la biblioteca.",
"NoteUploaderOnlyAudioFiles": "Si sube solamente archivos de audio, cada archivo se manejará como un audiolibro por separado.",
"NoteUploaderUnsupportedFiles": "Se ignorarán los archivos no soportados. Al elegir o arrastrar una carpeta, los archivos que no estén dentro de una subcarpeta serán ignorados.",
+ "NotificationOnBackupCompletedDescription": "Se activa cuando se completa una copia de seguridad",
+ "NotificationOnBackupFailedDescription": "Se activa cuando falla una copia de seguridad",
+ "NotificationOnEpisodeDownloadedDescription": "Se activa cuando se descarga automáticamente un episodio de un podcast",
+ "NotificationOnTestDescription": "Evento para probar el sistema de notificaciones",
"PlaceholderNewCollection": "Nuevo nombre de la colección",
"PlaceholderNewFolderPath": "Nueva ruta de carpeta",
"PlaceholderNewPlaylist": "Nuevo nombre de la lista de reproducción",
"PlaceholderSearch": "Buscar..",
"PlaceholderSearchEpisode": "Buscar Episodio..",
- "ToastAccountUpdateFailed": "Error al actualizar cuenta",
+ "StatsAuthorsAdded": "autores añadidos",
+ "StatsBooksAdded": "libros añadidos",
+ "StatsBooksAdditional": "Algunas adiciones incluyen…",
+ "StatsBooksFinished": "libros terminados",
+ "StatsBooksFinishedThisYear": "Algunos libros terminados este año…",
+ "StatsBooksListenedTo": "libros escuchados",
+ "StatsCollectionGrewTo": "Tu colección de libros creció hasta…",
+ "StatsSessions": "sesiones",
+ "StatsSpentListening": "dedicado a la escucha",
+ "StatsTopAuthor": "AUTOR DESTACADO",
+ "StatsTopAuthors": "AUTORES DESTACADOS",
+ "StatsTopGenre": "GÉNERO PRINCIPAL",
+ "StatsTopGenres": "GÉNEROS PRINCIPALES",
+ "StatsTopMonth": "DESTACADO DEL MES",
+ "StatsTopNarrator": "NARRADOR DESTACADO",
+ "StatsTopNarrators": "NARRADORES DESTACADOS",
+ "StatsTotalDuration": "Con una duración total de…",
+ "StatsYearInReview": "RESEÑA DEL AÑO",
"ToastAccountUpdateSuccess": "Cuenta actualizada",
- "ToastAuthorImageRemoveFailed": "Error al eliminar la imagen",
+ "ToastAppriseUrlRequired": "Debes ingresar una URL de Apprise",
"ToastAuthorImageRemoveSuccess": "Se eliminó la imagen del autor",
- "ToastAuthorUpdateFailed": "Error al actualizar el autor",
+ "ToastAuthorNotFound": "No se encontró el autor \"{0}\"",
+ "ToastAuthorRemoveSuccess": "Autor eliminado",
+ "ToastAuthorSearchNotFound": "No se encontró al autor",
"ToastAuthorUpdateMerged": "Autor combinado",
"ToastAuthorUpdateSuccess": "Autor actualizado",
"ToastAuthorUpdateSuccessNoImageFound": "Autor actualizado (Imagen no encontrada)",
+ "ToastBackupAppliedSuccess": "Copia de seguridad aplicada",
"ToastBackupCreateFailed": "Error al crear respaldo",
"ToastBackupCreateSuccess": "Respaldo creado",
"ToastBackupDeleteFailed": "Error al eliminar respaldo",
"ToastBackupDeleteSuccess": "Respaldo eliminado",
+ "ToastBackupInvalidMaxKeep": "Número no válido de copias de seguridad a conservar",
+ "ToastBackupInvalidMaxSize": "Tamaño máximo de copia de seguridad no válido",
"ToastBackupRestoreFailed": "Error al restaurar el respaldo",
"ToastBackupUploadFailed": "Error al subir el respaldo",
"ToastBackupUploadSuccess": "Respaldo cargado",
+ "ToastBatchDeleteFailed": "Error al eliminar por lotes",
+ "ToastBatchDeleteSuccess": "Borrado por lotes correcto",
"ToastBatchUpdateFailed": "Subida masiva fallida",
"ToastBatchUpdateSuccess": "Subida masiva exitosa",
"ToastBookmarkCreateFailed": "Error al crear marcador",
"ToastBookmarkCreateSuccess": "Marcador Agregado",
- "ToastBookmarkRemoveFailed": "Error al eliminar marcador",
"ToastBookmarkRemoveSuccess": "Marcador eliminado",
- "ToastBookmarkUpdateFailed": "Error al actualizar el marcador",
"ToastBookmarkUpdateSuccess": "Marcador actualizado",
"ToastCachePurgeFailed": "Error al purgar el caché",
"ToastCachePurgeSuccess": "Caché purgado de manera exitosa",
"ToastChaptersHaveErrors": "Los capítulos tienen errores",
"ToastChaptersMustHaveTitles": "Los capítulos tienen que tener un título",
- "ToastCollectionItemsRemoveFailed": "Error al remover elemento(s) de la colección",
+ "ToastChaptersRemoved": "Capítulos eliminados",
+ "ToastCollectionItemsAddFailed": "Artículo(s) añadido(s) a la colección fallido(s)",
+ "ToastCollectionItemsAddSuccess": "Artículo(s) añadido(s) a la colección correctamente",
"ToastCollectionItemsRemoveSuccess": "Elementos(s) removidos de la colección",
- "ToastCollectionRemoveFailed": "Error al remover la colección",
"ToastCollectionRemoveSuccess": "Colección removida",
- "ToastCollectionUpdateFailed": "Error al actualizar la colección",
"ToastCollectionUpdateSuccess": "Colección actualizada",
+ "ToastCoverUpdateFailed": "Error al actualizar la cubierta",
"ToastDeleteFileFailed": "Error el eliminar archivo",
"ToastDeleteFileSuccess": "Archivo eliminado",
+ "ToastDeviceAddFailed": "Error al añadir dispositivo",
+ "ToastDeviceNameAlreadyExists": "Un libro electrónico ya existe con ese nombre",
+ "ToastDeviceTestEmailFailed": "Error al enviar correo de prueba",
+ "ToastDeviceTestEmailSuccess": "Correo electrónico de prueba enviado",
+ "ToastEmailSettingsUpdateSuccess": "Configuración del correo electrónico actualizada",
+ "ToastEncodeCancelFailed": "No se pudo cancelar la codificación",
+ "ToastEncodeCancelSucces": "Codificación cancelada",
+ "ToastEpisodeDownloadQueueClearFailed": "No se pudo borrar la cola",
+ "ToastEpisodeDownloadQueueClearSuccess": "Se borró la cola de descargas de los episodios",
+ "ToastErrorCannotShare": "No se puede compartir de forma nativa en este dispositivo",
"ToastFailedToLoadData": "Error al cargar data",
- "ToastItemCoverUpdateFailed": "Error al actualizar la portada del elemento",
+ "ToastFailedToShare": "Error al compartir",
+ "ToastFailedToUpdate": "Error al actualizar",
+ "ToastInvalidImageUrl": "URL de la imagen no válida",
+ "ToastInvalidUrl": "URL no válida",
"ToastItemCoverUpdateSuccess": "Portada del elemento actualizada",
- "ToastItemDetailsUpdateFailed": "Error al actualizar los detalles del elemento",
+ "ToastItemDeletedFailed": "Error al eliminar el elemento",
+ "ToastItemDeletedSuccess": "Elemento borrado",
"ToastItemDetailsUpdateSuccess": "Detalles del Elemento Actualizados",
- "ToastItemDetailsUpdateUnneeded": "No se necesitan actualizaciones para los detalles del Elemento",
- "ToastItemMarkedAsFinishedFailed": "Error al marcar como Terminado",
+ "ToastItemMarkedAsFinishedFailed": "Error al marcar como terminado",
"ToastItemMarkedAsFinishedSuccess": "Elemento marcado como terminado",
- "ToastItemMarkedAsNotFinishedFailed": "Error al marcar como No Terminado",
+ "ToastItemMarkedAsNotFinishedFailed": "No se ha podido marcar como no finalizado",
"ToastItemMarkedAsNotFinishedSuccess": "Elemento marcado como No Terminado",
+ "ToastItemUpdateSuccess": "Elemento actualizado",
"ToastLibraryCreateFailed": "Error al crear biblioteca",
"ToastLibraryCreateSuccess": "Biblioteca \"{0}\" creada",
"ToastLibraryDeleteFailed": "Error al eliminar biblioteca",
"ToastLibraryDeleteSuccess": "Biblioteca eliminada",
"ToastLibraryScanFailedToStart": "Error al iniciar el escaneo",
"ToastLibraryScanStarted": "Se inició el escaneo de la biblioteca",
- "ToastLibraryUpdateFailed": "Error al actualizar la biblioteca",
"ToastLibraryUpdateSuccess": "Biblioteca \"{0}\" actualizada",
- "ToastPlaylistCreateFailed": "Error al crear la lista de reproducción.",
+ "ToastMatchAllAuthorsFailed": "No coincide con todos los autores",
+ "ToastNameEmailRequired": "Son obligatorios el nombre y el correo electrónico",
+ "ToastNameRequired": "Nombre obligatorio",
+ "ToastNewUserCreatedFailed": "Error al crear la cuenta: \"{0}\"",
+ "ToastNewUserCreatedSuccess": "Nueva cuenta creada",
+ "ToastNewUserLibraryError": "Debes seleccionar al menos una biblioteca",
+ "ToastNewUserPasswordError": "Debes tener una contraseña, solo el usuario root puede estar sin contraseña",
+ "ToastNewUserTagError": "Debes seleccionar al menos una etiqueta",
+ "ToastNewUserUsernameError": "Introduce un nombre de usuario",
+ "ToastNoUpdatesNecessary": "No es necesario actualizar",
+ "ToastNotificationCreateFailed": "Error al crear notificación",
+ "ToastNotificationDeleteFailed": "Error al borrar la notificación",
+ "ToastNotificationFailedMaximum": "El número máximo de intentos fallidos debe ser ≥ 0",
+ "ToastNotificationQueueMaximum": "La cola de notificación máxima debe ser ≥ 0",
+ "ToastNotificationSettingsUpdateSuccess": "Ajustes de la notificación actualizados",
+ "ToastNotificationTestTriggerFailed": "No se ha podido activar la notificación de prueba",
+ "ToastNotificationTestTriggerSuccess": "Notificación de prueba activada",
+ "ToastNotificationUpdateSuccess": "Notificación actualizada",
+ "ToastPlaylistCreateFailed": "Error al crear la lista de reproducción",
"ToastPlaylistCreateSuccess": "Lista de reproducción creada",
- "ToastPlaylistRemoveFailed": "Error al eliminar la lista de reproducción",
"ToastPlaylistRemoveSuccess": "Lista de reproducción eliminada",
- "ToastPlaylistUpdateFailed": "Error al actualizar la lista de reproducción.",
"ToastPlaylistUpdateSuccess": "Lista de reproducción actualizada",
"ToastPodcastCreateFailed": "Error al crear podcast",
"ToastPodcastCreateSuccess": "Podcast creado",
- "ToastRemoveItemFromCollectionFailed": "Error al eliminar el elemento de la colección",
- "ToastRemoveItemFromCollectionSuccess": "Elemento eliminado de la colección.",
+ "ToastPodcastGetFeedFailed": "No se puede obtener el podcast",
+ "ToastPodcastNoEpisodesInFeed": "No se han encontrado episodios en el feed del RSS",
+ "ToastPodcastNoRssFeed": "El podcast no tiene feed RSS",
+ "ToastProviderCreatedFailed": "Error al añadir el proveedor",
+ "ToastProviderCreatedSuccess": "Nuevo proveedor añadido",
+ "ToastProviderNameAndUrlRequired": "Nombre y Url obligatorios",
+ "ToastProviderRemoveSuccess": "Proveedor eliminado",
"ToastRSSFeedCloseFailed": "Error al cerrar fuente RSS",
"ToastRSSFeedCloseSuccess": "Fuente RSS cerrada",
+ "ToastRemoveFailed": "Error al eliminar",
+ "ToastRemoveItemFromCollectionFailed": "Error al eliminar el elemento de la colección",
+ "ToastRemoveItemFromCollectionSuccess": "Elemento eliminado de la colección",
+ "ToastRemoveItemsWithIssuesFailed": "Error en la eliminación de artículos de biblioteca incorrectos",
+ "ToastRemoveItemsWithIssuesSuccess": "Se eliminaron artículos de biblioteca incorrectos",
+ "ToastRenameFailed": "Error al cambiar el nombre",
+ "ToastRescanFailed": "Error al volver a escanear para {0}",
+ "ToastRescanRemoved": "Se eliminó el elemento reescaneado",
+ "ToastRescanUpToDate": "Reescaneado del artículo completo, estaba actualizado",
+ "ToastRescanUpdated": "Reescaneado completado, el artículo ha sido actualizado",
+ "ToastScanFailed": "No se pudo escanear el elemento de la biblioteca",
+ "ToastSelectAtLeastOneUser": "Selecciona al menos un usuario",
"ToastSendEbookToDeviceFailed": "Error al enviar el ebook al dispositivo",
"ToastSendEbookToDeviceSuccess": "Ebook enviado al dispositivo \"{0}\"",
"ToastSeriesUpdateFailed": "Error al actualizar la serie",
"ToastSeriesUpdateSuccess": "Serie actualizada",
- "ToastServerSettingsUpdateFailed": "Error al actualizar configuración del servidor",
"ToastServerSettingsUpdateSuccess": "Configuración del servidor actualizada",
+ "ToastSessionCloseFailed": "Error al cerrar la sesión",
"ToastSessionDeleteFailed": "Error al eliminar sesión",
"ToastSessionDeleteSuccess": "Sesión eliminada",
+ "ToastSlugMustChange": "El slug contiene caracteres no válidos",
+ "ToastSlugRequired": "Slug obligatorio",
"ToastSocketConnected": "Socket conectado",
"ToastSocketDisconnected": "Socket desconectado",
"ToastSocketFailedToConnect": "Error al conectar al Socket",
"ToastSortingPrefixesEmptyError": "Debe tener por lo menos 1 prefijo para ordenar",
- "ToastSortingPrefixesUpdateFailed": "Error al actualizar los prefijos de ordenar",
"ToastSortingPrefixesUpdateSuccess": "Prefijos de ordenar actualizaron ({0} items)",
+ "ToastTitleRequired": "Título obligatorio",
+ "ToastUnknownError": "Error desconocido",
+ "ToastUnlinkOpenIdFailed": "Error al desvincular el usuario de OpenID",
+ "ToastUnlinkOpenIdSuccess": "Usuario desvinculado de OpenID",
"ToastUserDeleteFailed": "Error al eliminar el usuario",
- "ToastUserDeleteSuccess": "Usuario eliminado"
-}
\ No newline at end of file
+ "ToastUserDeleteSuccess": "Usuario eliminado",
+ "ToastUserPasswordChangeSuccess": "Contraseña modificada correctamente",
+ "ToastUserPasswordMismatch": "No coinciden las contraseñas",
+ "ToastUserPasswordMustChange": "La nueva contraseña no puede ser igual que la anterior",
+ "ToastUserRootRequireName": "Debes introducir un nombre de usuario root"
+}
diff --git a/client/strings/et.json b/client/strings/et.json
index fcf7c4ce2..8d256c011 100644
--- a/client/strings/et.json
+++ b/client/strings/et.json
@@ -9,6 +9,7 @@
"ButtonApply": "Rakenda",
"ButtonApplyChapters": "Rakenda peatükid",
"ButtonAuthors": "Autorid",
+ "ButtonBack": "Tagasi",
"ButtonBrowseForFolder": "Sirvi kausta",
"ButtonCancel": "Tühista",
"ButtonCancelEncode": "Tühista kodeerimine",
@@ -18,6 +19,7 @@
"ButtonChooseFiles": "Vali failid",
"ButtonClearFilter": "Tühista filter",
"ButtonCloseFeed": "Sulge voog",
+ "ButtonCloseSession": "Sulge avatud sessioon",
"ButtonCollections": "Kogud",
"ButtonConfigureScanner": "Konfigureeri skanner",
"ButtonCreate": "Loo",
@@ -27,6 +29,7 @@
"ButtonEdit": "Muuda",
"ButtonEditChapters": "Muuda peatükke",
"ButtonEditPodcast": "Muuda podcasti",
+ "ButtonEnable": "Aktiveeri",
"ButtonForceReScan": "Sunnitud uuestiskaneerimine",
"ButtonFullPath": "Täielik asukoht",
"ButtonHide": "Peida",
@@ -43,34 +46,35 @@
"ButtonMatchAllAuthors": "Sobita kõik autorid",
"ButtonMatchBooks": "Sobita raamatud",
"ButtonNevermind": "Pole tähtis",
- "ButtonNext": "Next",
+ "ButtonNext": "Järgmine",
"ButtonNextChapter": "Järgmine peatükk",
+ "ButtonNextItemInQueue": "Järgmine kirje järjekorras",
"ButtonOk": "Ok",
"ButtonOpenFeed": "Ava voog",
"ButtonOpenManager": "Ava haldur",
"ButtonPause": "Peata",
"ButtonPlay": "Mängi",
+ "ButtonPlayAll": "Mängi kõik",
"ButtonPlaying": "Mängib",
"ButtonPlaylists": "Esitusloendid",
- "ButtonPrevious": "Previous",
+ "ButtonPrevious": "Eelmine",
"ButtonPreviousChapter": "Eelmine peatükk",
"ButtonPurgeAllCache": "Tühjenda kogu vahemälu",
"ButtonPurgeItemsCache": "Tühjenda esemete vahemälu",
- "ButtonPurgeMediaProgress": "Tühjenda meedia edenemine",
"ButtonQueueAddItem": "Lisa järjekorda",
"ButtonQueueRemoveItem": "Eemalda järjekorrast",
"ButtonQuickMatch": "Kiire sobitamine",
+ "ButtonReScan": "Uuestiskaneeri",
"ButtonRead": "Loe",
- "ButtonReadLess": "Read less",
- "ButtonReadMore": "Read more",
- "ButtonRefresh": "Refresh",
+ "ButtonReadLess": "Loe vähem",
+ "ButtonReadMore": "Loe rohkem",
+ "ButtonRefresh": "Värskenda",
"ButtonRemove": "Eemalda",
"ButtonRemoveAll": "Eemalda kõik",
"ButtonRemoveAllLibraryItems": "Eemalda kõik raamatukogu esemed",
"ButtonRemoveFromContinueListening": "Eemalda jätkake kuulamisest",
"ButtonRemoveFromContinueReading": "Eemalda jätkake lugemisest",
"ButtonRemoveSeriesFromContinueSeries": "Eemalda seeria jätkamisest",
- "ButtonReScan": "Uuestiskaneeri",
"ButtonReset": "Lähtesta",
"ButtonResetToDefault": "Lähtesta vaikeseade",
"ButtonRestore": "Taasta",
@@ -83,13 +87,11 @@
"ButtonSelectFolderPath": "Vali kaustatee",
"ButtonSeries": "Sarjad",
"ButtonSetChaptersFromTracks": "Määra peatükid lugudest",
- "ButtonShare": "Share",
"ButtonShiftTimes": "Nihke ajad",
"ButtonShow": "Näita",
"ButtonStartM4BEncode": "Alusta M4B kodeerimist",
"ButtonStartMetadataEmbed": "Alusta metaandmete lisamist",
"ButtonSubmit": "Esita",
- "ButtonTest": "Test",
"ButtonUpload": "Lae üles",
"ButtonUploadBackup": "Lae üles varundus",
"ButtonUploadCover": "Lae üles ümbris",
@@ -104,8 +106,8 @@
"HeaderAccount": "Konto",
"HeaderAdvanced": "Täpsem",
"HeaderAppriseNotificationSettings": "Apprise teavitamise seaded",
- "HeaderAudiobookTools": "Heliraamatu failihaldustööriistad",
"HeaderAudioTracks": "Helirajad",
+ "HeaderAudiobookTools": "Heliraamatu failihaldustööriistad",
"HeaderAuthentication": "Autentimine",
"HeaderBackups": "Varukoopiad",
"HeaderChangePassword": "Muuda parooli",
@@ -157,11 +159,11 @@
"HeaderPlaylistItems": "Mänguloendi esemed",
"HeaderPodcastsToAdd": "Lisatavad podcastid",
"HeaderPreviewCover": "Eelvaate kaas",
- "HeaderRemoveEpisode": "Eemalda episood",
- "HeaderRemoveEpisodes": "Eemalda {0} episoodi",
"HeaderRSSFeedGeneral": "RSS-i üksikasjad",
"HeaderRSSFeedIsOpen": "RSS-voog on avatud",
"HeaderRSSFeeds": "RSS-vooged",
+ "HeaderRemoveEpisode": "Eemalda episood",
+ "HeaderRemoveEpisodes": "Eemalda {0} episoodi",
"HeaderSavedMediaProgress": "Salvestatud meedia edenemine",
"HeaderSchedule": "Ajakava",
"HeaderScheduleLibraryScans": "Ajasta automaatsed raamatukogu skaneerimised",
@@ -186,23 +188,18 @@
"HeaderUpdateDetails": "Uuenda detaile",
"HeaderUpdateLibrary": "Uuenda raamatukogu",
"HeaderUsers": "Kasutajad",
- "HeaderYearReview": "Year {0} in Review",
"HeaderYourStats": "Sinu statistika",
"LabelAbridged": "Kärbitud",
- "LabelAbridgedChecked": "Abridged (checked)",
- "LabelAbridgedUnchecked": "Unabridged (unchecked)",
- "LabelAccessibleBy": "Accessible by",
"LabelAccountType": "Konto tüüp",
"LabelAccountTypeAdmin": "Administraator",
"LabelAccountTypeGuest": "Külaline",
"LabelAccountTypeUser": "Kasutaja",
"LabelActivity": "Tegevus",
- "LabelAdded": "Lisatud",
- "LabelAddedAt": "Lisatud",
"LabelAddToCollection": "Lisa kogusse",
"LabelAddToCollectionBatch": "Lisa {0} raamatut kogusse",
"LabelAddToPlaylist": "Lisa mänguloendisse",
"LabelAddToPlaylistBatch": "Lisa {0} eset mänguloendisse",
+ "LabelAddedAt": "Lisatud",
"LabelAdminUsersOnly": "Ainult administraatorid",
"LabelAll": "Kõik",
"LabelAllUsers": "Kõik kasutajad",
@@ -225,19 +222,18 @@
"LabelBackupLocation": "Varukoopia asukoht",
"LabelBackupsEnableAutomaticBackups": "Luba automaatsed varukoopiad",
"LabelBackupsEnableAutomaticBackupsHelp": "Varukoopiad salvestatakse /metadata/backups kausta",
- "LabelBackupsMaxBackupSize": "Maksimaalne varukoopia suurus (GB-des)",
+ "LabelBackupsMaxBackupSize": "Maksimaalne varukoopia suurus (GB-des) (0 lõpmatu suuruse jaoks)",
"LabelBackupsMaxBackupSizeHelp": "Kaitsena valesti seadistamise vastu ebaõnnestuvad varukoopiad, kui need ületavad seadistatud suuruse.",
"LabelBackupsNumberToKeep": "Varukoopiate arv, mida hoida",
"LabelBackupsNumberToKeepHelp": "Ühel ajal eemaldatakse ainult 1 varukoopia, seega kui teil on juba rohkem varukoopiaid kui siin määratud, peaksite need käsitsi eemaldama.",
"LabelBitrate": "Bittkiirus",
"LabelBooks": "Raamatud",
"LabelButtonText": "Nupu tekst",
- "LabelByAuthor": "by {0}",
"LabelChangePassword": "Muuda parooli",
"LabelChannels": "Kanalid",
+ "LabelChapterTitle": "Peatüki pealkiri",
"LabelChapters": "Peatükid",
"LabelChaptersFound": "peatükid leitud",
- "LabelChapterTitle": "Peatüki pealkiri",
"LabelClickForMoreInfo": "Klõpsa lisateabe saamiseks",
"LabelClosePlayer": "Sulge mängija",
"LabelCodec": "Kodek",
@@ -270,9 +266,6 @@
"LabelDownload": "Lae alla",
"LabelDownloadNEpisodes": "Lae alla {0} episoodi",
"LabelDuration": "Kestus",
- "LabelDurationComparisonExactMatch": "(exact match)",
- "LabelDurationComparisonLonger": "({0} longer)",
- "LabelDurationComparisonShorter": "({0} shorter)",
"LabelDurationFound": "Leitud kestus:",
"LabelEbook": "E-raamat",
"LabelEbooks": "E-raamatud",
@@ -290,8 +283,6 @@
"LabelEpisodeType": "Episoodi tüüp",
"LabelExample": "Näide",
"LabelExplicit": "Vulgaarne",
- "LabelExplicitChecked": "Explicit (checked)",
- "LabelExplicitUnchecked": "Not Explicit (unchecked)",
"LabelFeedURL": "Voogu URL",
"LabelFetchingMetadata": "Metaandmete hankimine",
"LabelFile": "Fail",
@@ -315,13 +306,12 @@
"LabelHasEbook": "On e-raamat",
"LabelHasSupplementaryEbook": "On täiendav e-raamat",
"LabelHighestPriority": "Kõrgeim prioriteet",
- "LabelHost": "Host",
"LabelHour": "Tund",
"LabelIcon": "Ikoon",
"LabelImageURLFromTheWeb": "Pildi URL veebist",
+ "LabelInProgress": "Pooleli",
"LabelIncludeInTracklist": "Kaasa jälgimisloendis",
"LabelIncomplete": "Puudulik",
- "LabelInProgress": "Pooleli",
"LabelInterval": "Intervall",
"LabelIntervalCustomDailyWeekly": "Kohandatud päevane/nädalane",
"LabelIntervalEvery12Hours": "Iga 12 tunni tagant",
@@ -360,14 +350,12 @@
"LabelMatchExistingUsersByDescription": "Kasutatakse olemasolevate kasutajate ühendamiseks. Ühendatud kasutajaid sobitatakse teie SSO pakkuja unikaalse ID järgi.",
"LabelMediaPlayer": "Meediapleier",
"LabelMediaType": "Meedia tüüp",
- "LabelMetadataOrderOfPrecedenceDescription": "Kõrgema prioriteediga metaandmete allikad võtavad üle madalama prioriteediga metaandmete allikad",
- "LabelMetadataProvider": "Metaandmete pakkuja",
"LabelMetaTag": "Meta märge",
"LabelMetaTags": "Meta märgendid",
+ "LabelMetadataOrderOfPrecedenceDescription": "Kõrgema prioriteediga metaandmete allikad võtavad üle madalama prioriteediga metaandmete allikad",
+ "LabelMetadataProvider": "Metaandmete pakkuja",
"LabelMinute": "Minut",
"LabelMissing": "Puudub",
- "LabelMissingEbook": "Has no ebook",
- "LabelMissingSupplementaryEbook": "Has no supplementary ebook",
"LabelMobileRedirectURIs": "Lubatud mobiilile suunamise URI-d",
"LabelMobileRedirectURIsDescription": "See on mobiilirakenduste jaoks kehtivate suunamise URI-de lubatud nimekiri. Vaikimisi on selleks audiobookshelf://oauth, mida saate eemaldada või täiendada täiendavate URI-dega kolmanda osapoole rakenduste integreerimiseks. Tärni (*) ainukese kirjena kasutamine võimaldab mis tahes URI-d.",
"LabelMore": "Rohkem",
@@ -376,29 +364,26 @@
"LabelNarrator": "Jutustaja",
"LabelNarrators": "Jutustajad",
"LabelNew": "Uus",
+ "LabelNewPassword": "Uus parool",
"LabelNewestAuthors": "Uusimad autorid",
"LabelNewestEpisodes": "Uusimad episoodid",
- "LabelNewPassword": "Uus parool",
"LabelNextBackupDate": "Järgmine varukoopia kuupäev",
"LabelNextScheduledRun": "Järgmine ajakava järgmine",
"LabelNoEpisodesSelected": "Episoodid pole valitud",
- "LabelNotes": "Märkused",
"LabelNotFinished": "Ei ole lõpetatud",
+ "LabelNotStarted": "Pole alustatud",
+ "LabelNotes": "Märkused",
"LabelNotificationAppriseURL": "Apprise URL-id",
"LabelNotificationAvailableVariables": "Saadaolevad muutujad",
"LabelNotificationBodyTemplate": "Keha mall",
"LabelNotificationEvent": "Teavituse sündmus",
+ "LabelNotificationTitleTemplate": "Pealkirja mall",
"LabelNotificationsMaxFailedAttempts": "Maksimaalsed ebaõnnestunud katsed",
"LabelNotificationsMaxFailedAttemptsHelp": "Teatised keelatakse, kui need ebaõnnestuvad nii palju kordi",
"LabelNotificationsMaxQueueSize": "Teavituste sündmuste maksimaalne järjekorra suurus",
"LabelNotificationsMaxQueueSizeHelp": "Sündmused on piiratud 1 sekundiga. Sündmusi ignoreeritakse, kui järjekord on maksimumsuuruses. See takistab teavituste rämpsposti.",
- "LabelNotificationTitleTemplate": "Pealkirja mall",
- "LabelNotStarted": "Pole alustatud",
"LabelNumberOfBooks": "Raamatute arv",
"LabelNumberOfEpisodes": "Episoodide arv",
- "LabelOpenIDAdvancedPermsClaimDescription": "Name of the OpenID claim that contains advanced permissions for user actions within the application which will apply to non-admin roles (if configured). If the claim is missing from the response, access to ABS will be denied. If a single option is missing, it will be treated as false. Ensure the identity provider's claim matches the expected structure:",
- "LabelOpenIDClaims": "Leave the following options empty to disable advanced group and permissions assignment, automatically assigning 'User' group then.",
- "LabelOpenIDGroupClaimDescription": "Name of the OpenID claim that contains a list of the user's groups. Commonly referred to as groups. If configured, the application will automatically assign roles based on the user's group memberships, provided that these groups are named case-insensitively 'admin', 'user', or 'guest' in the claim. The claim should contain a list, and if a user belongs to multiple groups, the application will assign the role corresponding to the highest level of access. If no group matches, access will be denied.",
"LabelOpenRSSFeed": "Ava RSS voog",
"LabelOverwrite": "Kirjuta üle",
"LabelPassword": "Parool",
@@ -410,45 +395,41 @@
"LabelPermissionsDownload": "Saab alla laadida",
"LabelPermissionsUpdate": "Saab uuendada",
"LabelPermissionsUpload": "Saab üles laadida",
- "LabelPersonalYearReview": "Your Year in Review ({0})",
"LabelPhotoPathURL": "Foto tee/URL",
- "LabelPlaylists": "Mänguloendid",
"LabelPlayMethod": "Esitusmeetod",
- "LabelPodcast": "Podcast",
- "LabelPodcasts": "Podcastid",
+ "LabelPlaylists": "Mänguloendid",
"LabelPodcastSearchRegion": "Podcasti otsingu piirkond",
"LabelPodcastType": "Podcasti tüüp",
- "LabelPort": "Port",
+ "LabelPodcasts": "Podcastid",
"LabelPrefixesToIgnore": "Eiramiseks eesliited (tõstutundetu)",
"LabelPreventIndexing": "Vältige oma voogu indekseerimist iTunes'i ja Google podcasti kataloogides",
"LabelPrimaryEbook": "Esmane e-raamat",
"LabelProgress": "Edenemine",
"LabelProvider": "Pakkuja",
"LabelPubDate": "Avaldamise kuupäev",
- "LabelPublisher": "Kirjastaja",
"LabelPublishYear": "Aasta avaldamine",
- "LabelRead": "Lugenud",
- "LabelReadAgain": "Loe uuesti",
- "LabelReadEbookWithoutProgress": "Lugege e-raamatut ilma edenemist säilitamata",
- "LabelRecentlyAdded": "Hiljuti lisatud",
- "LabelRecentSeries": "Hiljutised seeriad",
- "LabelRecommended": "Soovitatud",
- "LabelRedo": "Tee uuesti",
- "LabelRegion": "Piirkond",
- "LabelReleaseDate": "Väljalaske kuupäev",
- "LabelRemoveCover": "Eemalda ümbris",
- "LabelRowsPerPage": "Rida lehe kohta",
+ "LabelPublisher": "Kirjastaja",
"LabelRSSFeedCustomOwnerEmail": "Kohandatud omaniku e-post",
"LabelRSSFeedCustomOwnerName": "Kohandatud omaniku nimi",
"LabelRSSFeedOpen": "Ava RSS voog",
"LabelRSSFeedPreventIndexing": "Vältige indekseerimist",
"LabelRSSFeedSlug": "RSS voog Slug",
"LabelRSSFeedURL": "RSS voog URL",
+ "LabelRead": "Lugenud",
+ "LabelReadAgain": "Loe uuesti",
+ "LabelReadEbookWithoutProgress": "Lugege e-raamatut ilma edenemist säilitamata",
+ "LabelRecentSeries": "Hiljutised seeriad",
+ "LabelRecentlyAdded": "Hiljuti lisatud",
+ "LabelRecommended": "Soovitatud",
+ "LabelRedo": "Tee uuesti",
+ "LabelRegion": "Piirkond",
+ "LabelReleaseDate": "Väljalaske kuupäev",
+ "LabelRemoveCover": "Eemalda ümbris",
+ "LabelRowsPerPage": "Rida lehe kohta",
"LabelSearchTerm": "Otsingutermin",
"LabelSearchTitle": "Otsi pealkirja",
"LabelSearchTitleOrASIN": "Otsi pealkirja või ASIN-i",
"LabelSeason": "Hooaeg",
- "LabelSelectAll": "Select all",
"LabelSelectAllEpisodes": "Vali kõik episoodid",
"LabelSelectEpisodesShowing": "Valige {0} näidatavat episoodi",
"LabelSelectUsers": "Valige kasutajad",
@@ -457,7 +438,6 @@
"LabelSeries": "Seeria",
"LabelSeriesName": "Seeria nimi",
"LabelSeriesProgress": "Seeria edenemine",
- "LabelServerYearReview": "Server Year in Review ({0})",
"LabelSetEbookAsPrimary": "Määra peamiseks",
"LabelSetEbookAsSupplementary": "Määra täiendavaks",
"LabelSettingsAudiobooksOnly": "Ainult heliraamatud",
@@ -471,8 +451,6 @@
"LabelSettingsEnableWatcher": "Luba vaatamine",
"LabelSettingsEnableWatcherForLibrary": "Luba kaustavaatamine raamatukogu jaoks",
"LabelSettingsEnableWatcherHelp": "Lubab automaatset lisamist/uuendamist, kui tuvastatakse failimuudatused. *Nõuab serveri taaskäivitamist",
- "LabelSettingsEpubsAllowScriptedContent": "Allow scripted content in epubs",
- "LabelSettingsEpubsAllowScriptedContentHelp": "Allow epub files to execute scripts. It is recommended to keep this setting disabled unless you trust the source of the epub files.",
"LabelSettingsExperimentalFeatures": "Eksperimentaalsed funktsioonid",
"LabelSettingsExperimentalFeaturesHelp": "Arengus olevad funktsioonid, mis vajavad teie tagasisidet ja abi testimisel. Klõpsake GitHubi arutelu avamiseks.",
"LabelSettingsFindCovers": "Leia ümbrised",
@@ -481,10 +459,8 @@
"LabelSettingsHideSingleBookSeriesHelp": "Ühe raamatuga seeriaid peidetakse seeria lehelt ja avalehe riiulitelt.",
"LabelSettingsHomePageBookshelfView": "Avaleht kasutage raamatukoguvaadet",
"LabelSettingsLibraryBookshelfView": "Raamatukogu kasutamiseks kasutage raamatukoguvaadet",
- "LabelSettingsOnlyShowLaterBooksInContinueSeries": "Skip earlier books in Continue Series",
- "LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "The Continue Series home page shelf shows the first book not started in series that have at least one book finished and no books in progress. Enabling this setting will continue series from the furthest completed book instead of the first book not started.",
"LabelSettingsParseSubtitles": "Lugege subtiitreid",
- "LabelSettingsParseSubtitlesHelp": "Eraldage subtiitrid heliraamatu kaustade nimedest. Subtiitrid peavad olema eraldatud \" - \". Näiteks: \"Raamatu pealkiri - Siin on alapealkiri\" alapealkiri on \"Siin on alapealkiri\"",
+ "LabelSettingsParseSubtitlesHelp": "Eraldage subtiitrid heliraamatu kaustade nimedest. Subtiitrid peavad olema eraldatud kasutades \" - \". Näiteks: \"Raamatu pealkiri - Siin on alapealkiri\" alapealkiri on \"Siin on alapealkiri\"",
"LabelSettingsPreferMatchedMetadata": "Eelista sobitatud metaandmeid",
"LabelSettingsPreferMatchedMetadataHelp": "Sobitatud andmed kirjutavad Kiir Sobitamise kasutamisel üle üksikasjad.",
"LabelSettingsSkipMatchingBooksWithASIN": "Jätke ASIN-iga sobituvad raamatud vahele",
@@ -499,14 +475,12 @@
"LabelSettingsStoreMetadataWithItemHelp": "Vaikimisi salvestatakse metaandmed /metadata/items kausta. Selle seadistuse lubamine salvestab metaandmed teie raamatukogu üksuse kaustadesse",
"LabelSettingsTimeFormat": "Kellaaja vorming",
"LabelShowAll": "Näita kõiki",
- "LabelShowSeconds": "Show seconds",
"LabelSize": "Suurus",
"LabelSleepTimer": "Uinaku taimer",
- "LabelSlug": "Slug",
"LabelStart": "Alusta",
+ "LabelStartTime": "Alustamise aeg",
"LabelStarted": "Alustatud",
"LabelStartedAt": "Alustatud",
- "LabelStartTime": "Alustamise aeg",
"LabelStatsAudioTracks": "Audiojäljed",
"LabelStatsAuthors": "Autorid",
"LabelStatsBestDay": "Parim päev",
@@ -530,7 +504,6 @@
"LabelTagsNotAccessibleToUser": "Kasutajale mittekättesaadavad sildid",
"LabelTasks": "Käimasolevad ülesanded",
"LabelTextEditorBulletedList": "Punktloend",
- "LabelTextEditorLink": "Link",
"LabelTextEditorNumberedList": "Numberloend",
"LabelTextEditorUnlink": "Eemalda link",
"LabelTheme": "Teema",
@@ -562,9 +535,9 @@
"LabelUnknown": "Tundmatu",
"LabelUpdateCover": "Uuenda kaant",
"LabelUpdateCoverHelp": "Luba üle kirjutamine olemasolevate kaante jaoks valitud raamatutele, kui leitakse sobivus",
- "LabelUpdatedAt": "Uuendatud",
"LabelUpdateDetails": "Uuenda üksikasju",
"LabelUpdateDetailsHelp": "Luba üle kirjutamine olemasolevate üksikasjade jaoks valitud raamatutele, kui leitakse sobivus",
+ "LabelUpdatedAt": "Uuendatud",
"LabelUploaderDragAndDrop": "Lohista ja aseta faile või kaustu",
"LabelUploaderDropFiles": "Aseta failid",
"LabelUploaderItemFetchMetadataHelp": "Hangi automaatselt pealkiri, autor ja seeria",
@@ -579,8 +552,6 @@
"LabelViewQueue": "Vaata esitusjärjekorda",
"LabelVolume": "Heli tugevus",
"LabelWeekdaysToRun": "Päevad nädalas käivitamiseks",
- "LabelYearReviewHide": "Hide Year in Review",
- "LabelYearReviewShow": "See Year in Review",
"LabelYourAudiobookDuration": "Teie heliraamatu kestus",
"LabelYourBookmarks": "Teie järjehoidjad",
"LabelYourPlaylists": "Teie esitusloendid",
@@ -590,8 +561,8 @@
"MessageBackupsDescription": "Varukoopiad hõlmavad kasutajaid, kasutajate edenemist, raamatukogu üksikasju, serveri seadeid ja kaustades /metadata/items ja /metadata/authors salvestatud pilte. Varukoopiad ei hõlma ühtegi teie raamatukogu kaustades olevat faili.",
"MessageBatchQuickMatchDescription": "Kiire sobitamine üritab lisada valitud üksustele puuduvad kaaned ja metaandmed. Luba allpool olevad valikud, et lubada Kiire sobitamine'il üle kirjutada olemasolevaid kaasi ja/või metaandmeid.",
"MessageBookshelfNoCollections": "Te pole veel ühtegi kogumit teinud",
- "MessageBookshelfNoResultsForFilter": "Filtrile \"{0}: {1}\" pole tulemusi",
"MessageBookshelfNoRSSFeeds": "Ühtegi RSS-i voogu pole avatud",
+ "MessageBookshelfNoResultsForFilter": "Filtrile \"{0}: {1}\" pole tulemusi",
"MessageBookshelfNoSeries": "Teil pole ühtegi seeriat",
"MessageChapterEndIsAfter": "Peatüki lõpp on pärast teie heliraamatu lõppu",
"MessageChapterErrorFirstNotZero": "Esimene peatükk peab algama 0-st",
@@ -611,8 +582,8 @@
"MessageConfirmMarkAllEpisodesNotFinished": "Olete kindel, et soovite kõik episoodid mitte lõpetatuks märkida?",
"MessageConfirmMarkSeriesFinished": "Olete kindel, et soovite selle seeria kõik raamatud lõpetatuks märkida?",
"MessageConfirmMarkSeriesNotFinished": "Olete kindel, et soovite selle seeria kõik raamatud mitte lõpetatuks märkida?",
- "MessageConfirmPurgeCache": "Purge cache will delete the entire directory at /metadata/cache.
Are you sure you want to remove the cache directory?",
"MessageConfirmQuickEmbed": "Hoiatus! Quick Embed ei tee varukoopiaid teie helifailidest. Veenduge, et teil oleks varukoopia oma helifailidest.
Kas soovite jätkata?",
+ "MessageConfirmReScanLibraryItems": "Olete kindel, et soovite uuesti skannida {0} üksust?",
"MessageConfirmRemoveAllChapters": "Olete kindel, et soovite eemaldada kõik peatükid?",
"MessageConfirmRemoveAuthor": "Olete kindel, et soovite autori \"{0}\" eemaldada?",
"MessageConfirmRemoveCollection": "Olete kindel, et soovite kogumi \"{0}\" eemaldada?",
@@ -627,13 +598,11 @@
"MessageConfirmRenameTag": "Olete kindel, et soovite silti \"{0}\" ümber nimetada kujule \"{1}\" kõikidele üksustele?",
"MessageConfirmRenameTagMergeNote": "Märkus: See silt on juba olemas, nii et need ühendatakse.",
"MessageConfirmRenameTagWarning": "Hoiatus! Sarnane silt erineva puhvriga on juba olemas \"{0}\".",
- "MessageConfirmReScanLibraryItems": "Olete kindel, et soovite uuesti skannida {0} üksust?",
"MessageConfirmSendEbookToDevice": "Olete kindel, et soovite saata {0} e-raamatu \"{1}\" seadmesse \"{2}\"?",
"MessageDownloadingEpisode": "Episoodi allalaadimine",
"MessageDragFilesIntoTrackOrder": "Lohistage failid õigesse järjekorda",
"MessageEmbedFinished": "Manustamine lõpetatud!",
"MessageEpisodesQueuedForDownload": "{0} Episood(i) on allalaadimiseks järjekorras",
- "MessageEreaderDevices": "To ensure delivery of ebooks, you may need to add the above email address as a valid sender for each device listed below.",
"MessageFeedURLWillBe": "Toite URL saab olema {0}",
"MessageFetching": "Hangitakse...",
"MessageForceReScanDescription": "skaneerib kõik failid uuesti nagu värsket skannimist. Heli faili ID3 silte, OPF faile ja tekstifaile skaneeritakse uuesti.",
@@ -645,7 +614,6 @@
"MessageListeningSessionsInTheLastYear": "Kuulamissessioone viimase aasta jooksul: {0}",
"MessageLoading": "Laadimine...",
"MessageLoadingFolders": "Kaustade laadimine...",
- "MessageLogsDescription": "Logs are stored in /metadata/logs as JSON files. Crash logs are stored in /metadata/logs/crash_logs.txt.",
"MessageM4BFailed": "M4B ebaõnnestus!",
"MessageM4BFinished": "M4B lõpetatud!",
"MessageMapChapterTitles": "Kaarda peatükkide pealkirjad olemasolevatele heliraamatu peatükkidele, ajatempe ei muudeta",
@@ -681,10 +649,9 @@
"MessageNoSeries": "Ühtegi seeriat pole",
"MessageNoTags": "Ühtegi silti pole",
"MessageNoTasksRunning": "Ühtegi käimasolevat ülesannet pole",
- "MessageNotYetImplemented": "Pole veel ellu viidud",
- "MessageNoUpdateNecessary": "Ühtegi värskendust pole vaja",
"MessageNoUpdatesWereNecessary": "Ühtegi värskendust polnud vaja",
"MessageNoUserPlaylists": "Teil pole ühtegi esitusloendit",
+ "MessageNotYetImplemented": "Pole veel ellu viidud",
"MessageOr": "või",
"MessagePauseChapter": "Peata peatüki esitamine",
"MessagePlayChapter": "Kuula peatüki algust",
@@ -726,11 +693,8 @@
"PlaceholderNewPlaylist": "Uue esitusloendi nimi",
"PlaceholderSearch": "Otsi...",
"PlaceholderSearchEpisode": "Otsi episoodi...",
- "ToastAccountUpdateFailed": "Konto värskendamine ebaõnnestus",
"ToastAccountUpdateSuccess": "Konto on värskendatud",
- "ToastAuthorImageRemoveFailed": "Pildi eemaldamine ebaõnnestus",
"ToastAuthorImageRemoveSuccess": "Autori pilt on eemaldatud",
- "ToastAuthorUpdateFailed": "Autori värskendamine ebaõnnestus",
"ToastAuthorUpdateMerged": "Autor liidetud",
"ToastAuthorUpdateSuccess": "Autor värskendatud",
"ToastAuthorUpdateSuccessNoImageFound": "Autor värskendatud (pilti ei leitud)",
@@ -745,28 +709,15 @@
"ToastBatchUpdateSuccess": "Partii värskendamine õnnestus",
"ToastBookmarkCreateFailed": "Järjehoidja loomine ebaõnnestus",
"ToastBookmarkCreateSuccess": "Järjehoidja lisatud",
- "ToastBookmarkRemoveFailed": "Järjehoidja eemaldamine ebaõnnestus",
"ToastBookmarkRemoveSuccess": "Järjehoidja eemaldatud",
- "ToastBookmarkUpdateFailed": "Järjehoidja värskendamine ebaõnnestus",
"ToastBookmarkUpdateSuccess": "Järjehoidja värskendatud",
- "ToastCachePurgeFailed": "Failed to purge cache",
- "ToastCachePurgeSuccess": "Cache purged successfully",
"ToastChaptersHaveErrors": "Peatükkidel on vigu",
"ToastChaptersMustHaveTitles": "Peatükkidel peab olema pealkiri",
- "ToastCollectionItemsRemoveFailed": "Üksuse(te) eemaldamine kogumist ebaõnnestus",
"ToastCollectionItemsRemoveSuccess": "Üksus(ed) eemaldatud kogumist",
- "ToastCollectionRemoveFailed": "Kogumi eemaldamine ebaõnnestus",
"ToastCollectionRemoveSuccess": "Kogum eemaldatud",
- "ToastCollectionUpdateFailed": "Kogumi värskendamine ebaõnnestus",
"ToastCollectionUpdateSuccess": "Kogum värskendatud",
- "ToastDeleteFileFailed": "Failed to delete file",
- "ToastDeleteFileSuccess": "File deleted",
- "ToastFailedToLoadData": "Failed to load data",
- "ToastItemCoverUpdateFailed": "Üksuse kaane värskendamine ebaõnnestus",
"ToastItemCoverUpdateSuccess": "Üksuse kaas värskendatud",
- "ToastItemDetailsUpdateFailed": "Üksuse üksikasjade värskendamine ebaõnnestus",
"ToastItemDetailsUpdateSuccess": "Üksuse üksikasjad värskendatud",
- "ToastItemDetailsUpdateUnneeded": "Üksuse üksikasjade värskendamine pole vajalik",
"ToastItemMarkedAsFinishedFailed": "Märgistamine kui lõpetatud ebaõnnestus",
"ToastItemMarkedAsFinishedSuccess": "Üksus märgitud kui lõpetatud",
"ToastItemMarkedAsNotFinishedFailed": "Märgistamine kui mitte lõpetatud ebaõnnestus",
@@ -777,34 +728,26 @@
"ToastLibraryDeleteSuccess": "Raamatukogu kustutatud",
"ToastLibraryScanFailedToStart": "Skanneerimine ei käivitunud",
"ToastLibraryScanStarted": "Raamatukogu skaneerimine alustatud",
- "ToastLibraryUpdateFailed": "Raamatukogu värskendamine ebaõnnestus",
"ToastLibraryUpdateSuccess": "Raamatukogu \"{0}\" värskendatud",
"ToastPlaylistCreateFailed": "Esitusloendi loomine ebaõnnestus",
"ToastPlaylistCreateSuccess": "Esitusloend loodud",
- "ToastPlaylistRemoveFailed": "Esitusloendi eemaldamine ebaõnnestus",
"ToastPlaylistRemoveSuccess": "Esitusloend eemaldatud",
- "ToastPlaylistUpdateFailed": "Esitusloendi värskendamine ebaõnnestus",
"ToastPlaylistUpdateSuccess": "Esitusloend värskendatud",
"ToastPodcastCreateFailed": "Podcasti loomine ebaõnnestus",
"ToastPodcastCreateSuccess": "Podcast loodud edukalt",
- "ToastRemoveItemFromCollectionFailed": "Üksuse eemaldamine kogumist ebaõnnestus",
- "ToastRemoveItemFromCollectionSuccess": "Üksus eemaldatud kogumist",
"ToastRSSFeedCloseFailed": "RSS-voogu sulgemine ebaõnnestus",
"ToastRSSFeedCloseSuccess": "RSS-voog suletud",
+ "ToastRemoveItemFromCollectionFailed": "Üksuse eemaldamine kogumist ebaõnnestus",
+ "ToastRemoveItemFromCollectionSuccess": "Üksus eemaldatud kogumist",
"ToastSendEbookToDeviceFailed": "E-raamatu saatmine seadmesse ebaõnnestus",
"ToastSendEbookToDeviceSuccess": "E-raamat saadetud seadmesse \"{0}\"",
"ToastSeriesUpdateFailed": "Sarja värskendamine ebaõnnestus",
"ToastSeriesUpdateSuccess": "Sarja värskendamine õnnestus",
- "ToastServerSettingsUpdateFailed": "Failed to update server settings",
- "ToastServerSettingsUpdateSuccess": "Server settings updated",
"ToastSessionDeleteFailed": "Seansi kustutamine ebaõnnestus",
"ToastSessionDeleteSuccess": "Sessioon kustutatud",
"ToastSocketConnected": "Pesa ühendatud",
"ToastSocketDisconnected": "Pesa ühendus katkenud",
"ToastSocketFailedToConnect": "Pesa ühendamine ebaõnnestus",
- "ToastSortingPrefixesEmptyError": "Must have at least 1 sorting prefix",
- "ToastSortingPrefixesUpdateFailed": "Failed to update sorting prefixes",
- "ToastSortingPrefixesUpdateSuccess": "Sorting prefixes updated ({0} items)",
"ToastUserDeleteFailed": "Kasutaja kustutamine ebaõnnestus",
"ToastUserDeleteSuccess": "Kasutaja kustutatud"
-}
\ No newline at end of file
+}
diff --git a/client/strings/fi.json b/client/strings/fi.json
new file mode 100644
index 000000000..9795139b4
--- /dev/null
+++ b/client/strings/fi.json
@@ -0,0 +1,438 @@
+{
+ "ButtonAdd": "Lisää",
+ "ButtonAddChapters": "Lisää lukuja",
+ "ButtonAddDevice": "Lisää laite",
+ "ButtonAddLibrary": "Lisää kirjasto",
+ "ButtonAddPodcasts": "Lisää podcasteja",
+ "ButtonAddUser": "Lisää käyttäjä",
+ "ButtonAddYourFirstLibrary": "Lisää ensimmäinen kirjastosi",
+ "ButtonApply": "Käytä",
+ "ButtonApplyChapters": "Käytä lukuihin",
+ "ButtonAuthors": "Tekijät",
+ "ButtonBack": "Takaisin",
+ "ButtonBrowseForFolder": "Selaa (kansio)",
+ "ButtonCancel": "Peruuta",
+ "ButtonCancelEncode": "Lopeta enkoodaus",
+ "ButtonChangeRootPassword": "Vaihda root salasana",
+ "ButtonCheckAndDownloadNewEpisodes": "Tarkista ja lataa uudet jaksot",
+ "ButtonChooseAFolder": "Valitse kansio",
+ "ButtonChooseFiles": "Valitse tiedostot",
+ "ButtonClearFilter": "Poista suodatus",
+ "ButtonCloseFeed": "Sulje syöte",
+ "ButtonCloseSession": "Sulje Avoin Sessio",
+ "ButtonCollections": "Kokoelmat",
+ "ButtonConfigureScanner": "Skannerin asetukset",
+ "ButtonCreate": "Luo",
+ "ButtonCreateBackup": "Luo varmuuskopio",
+ "ButtonDelete": "Poista",
+ "ButtonDownloadQueue": "Jono",
+ "ButtonEdit": "Muokkaa",
+ "ButtonEditChapters": "Muokkaa lukuja",
+ "ButtonEditPodcast": "Muokkaa podcastia",
+ "ButtonEnable": "Aktivoi",
+ "ButtonFireAndFail": "Laukaise ja epäonnistu",
+ "ButtonFireOnTest": "Laukaise onTest tapahtuma",
+ "ButtonForceReScan": "Pakota uudelleenskannaus",
+ "ButtonFullPath": "Koko polku",
+ "ButtonHide": "Piilota",
+ "ButtonHome": "Koti",
+ "ButtonIssues": "Ongelmat",
+ "ButtonJumpBackward": "Hyppää taaksepäin",
+ "ButtonJumpForward": "Hyppää eteenpäin",
+ "ButtonLatest": "Viimeisimmät",
+ "ButtonLibrary": "Kirjasto",
+ "ButtonLogout": "Kirjaudu ulos",
+ "ButtonLookup": "Hae",
+ "ButtonManageTracks": "Hallitse raitoja",
+ "ButtonMapChapterTitles": "Kartoita lukujen nimet",
+ "ButtonMatchAllAuthors": "Täsmää kaikki Tekijät",
+ "ButtonMatchBooks": "Täsmää kirjat",
+ "ButtonNevermind": "Ei sittenkään",
+ "ButtonNext": "Seuraava",
+ "ButtonNextChapter": "Seuraava luku",
+ "ButtonNextItemInQueue": "Seuraava jonossa",
+ "ButtonOk": "Ok",
+ "ButtonOpenFeed": "Avaa syöte",
+ "ButtonOpenManager": "Avaa hallinta",
+ "ButtonPause": "Pysäytä",
+ "ButtonPlay": "Toista",
+ "ButtonPlayAll": "Toista kaikki",
+ "ButtonPlaying": "Toistetaan",
+ "ButtonPlaylists": "Soittolistat",
+ "ButtonPrevious": "Edellinen",
+ "ButtonPreviousChapter": "Edellinen luku",
+ "ButtonPurgeAllCache": "Tyhjennä kaikki välimuistit",
+ "ButtonPurgeItemsCache": "Tyhjennä kohteiden välimuisti",
+ "ButtonQueueAddItem": "Lisää jonoon",
+ "ButtonQueueRemoveItem": "Poista jonosta",
+ "ButtonQuickMatch": "Pikatäsmää",
+ "ButtonReScan": "Uudelleenskannaa",
+ "ButtonRead": "Lue",
+ "ButtonReadLess": "Näytä vähemmän",
+ "ButtonReadMore": "Näytä enemmän",
+ "ButtonRefresh": "Päivitä",
+ "ButtonRemove": "Poista",
+ "ButtonRemoveAll": "Poista kaikki",
+ "ButtonRemoveAllLibraryItems": "Poista kaikki kirjaston kohteet",
+ "ButtonRemoveFromContinueListening": "Poista Jatka kuuntelua -osiosta",
+ "ButtonRemoveFromContinueReading": "Poista Jatka lukemista -osiosta",
+ "ButtonRemoveSeriesFromContinueSeries": "Poista sarja Jatka sarjaa -osiosta",
+ "ButtonReset": "Nollaa",
+ "ButtonResetToDefault": "Palauta oletusasetukset",
+ "ButtonRestore": "Palauta",
+ "ButtonSave": "Tallenna",
+ "ButtonSaveAndClose": "Tallenna ja sulje",
+ "ButtonSaveTracklist": "Tallenna raitalista",
+ "ButtonScan": "Skannaa",
+ "ButtonScanLibrary": "Skannaa kirjasto",
+ "ButtonSearch": "Etsi",
+ "ButtonSelectFolderPath": "Valitse kansiopolku",
+ "ButtonSeries": "Sarjat",
+ "ButtonSetChaptersFromTracks": "Aseta luvut raidoista",
+ "ButtonShare": "Jaa",
+ "ButtonShiftTimes": "Siirrä aikoja",
+ "ButtonShow": "Näytä",
+ "ButtonStartM4BEncode": "Aloita M4B enkoodaus",
+ "ButtonStartMetadataEmbed": "Aloita metadatan embed",
+ "ButtonStats": "Tilastot",
+ "ButtonSubmit": "Lähetä",
+ "ButtonTest": "Testi",
+ "ButtonUnlinkOpenId": "Poista OpenID linkitys",
+ "ButtonUpload": "Lähetä palvelimelle",
+ "ButtonUploadBackup": "Lähetä varmuuskopio",
+ "ButtonUploadCover": "Lähetä kansikuva",
+ "ButtonUploadOPMLFile": "Lähetä OPML-tiedosto",
+ "ButtonUserDelete": "Poista käyttäjä {0}",
+ "ButtonUserEdit": "Muokkaa käyttäjää {0}",
+ "ButtonViewAll": "Näytä kaikki",
+ "ButtonYes": "Kyllä",
+ "ErrorUploadFetchMetadataAPI": "Virhe haettaessa metadataa",
+ "ErrorUploadFetchMetadataNoResults": "Metadatan haku epäonnistui, yritä päivittää Teoksen nimi ja/tai Tekijä",
+ "ErrorUploadLacksTitle": "Pitää sisältää Nimi",
+ "HeaderAccount": "Tili",
+ "HeaderAddCustomMetadataProvider": "Lisää mukautettu metadata tarjoaja",
+ "HeaderAdvanced": "Edistynyt",
+ "HeaderAppriseNotificationSettings": "Apprise-ilmoitusasetukset",
+ "HeaderAudioTracks": "Ääniraidat",
+ "HeaderAudiobookTools": "Äänikirjojen tiedostonhallintatyökalut",
+ "HeaderAuthentication": "Todennus",
+ "HeaderBackups": "Varmuuskopiot",
+ "HeaderChangePassword": "Vaihda salasana",
+ "HeaderChapters": "Luvut",
+ "HeaderChooseAFolder": "Valitse kansio",
+ "HeaderCollection": "Kokoelma",
+ "HeaderCollectionItems": "Kokoelman osat",
+ "HeaderCover": "Kansikuva",
+ "HeaderCurrentDownloads": "Tämänhetkiset lataukset",
+ "HeaderCustomMessageOnLogin": "Muokattu kirjautumisviesti",
+ "HeaderCustomMetadataProviders": "Mukautetut metadatan tarjoajat",
+ "HeaderDetails": "Yksityiskohdat",
+ "HeaderDownloadQueue": "Latausjono",
+ "HeaderEbookFiles": "E-kirjatiedostot",
+ "HeaderEmail": "Sähköposti",
+ "HeaderEmailSettings": "Sähköpostiasetukset",
+ "HeaderEpisodes": "Jaksot",
+ "HeaderEreaderDevices": "E-lukijalaitteet",
+ "HeaderEreaderSettings": "E-lukijan asetukset",
+ "HeaderFiles": "Tiedostot",
+ "HeaderFindChapters": "Etsi kappaleet",
+ "HeaderIgnoredFiles": "Ohitetut tiedostot",
+ "HeaderLastListeningSession": "Edellinen kuuntelukerta",
+ "HeaderLatestEpisodes": "Viimeisimmät jaksot",
+ "HeaderLibraries": "Kirjastot",
+ "HeaderLibraryFiles": "Kirjaston tiedostot",
+ "HeaderLibraryStats": "Kirjaston tilastot",
+ "HeaderListeningSessions": "Kuuntelukerrat",
+ "HeaderListeningStats": "Kuuntelutilastot",
+ "HeaderLogin": "Kirjaudu",
+ "HeaderLogs": "Lokit",
+ "HeaderManageGenres": "Hallitse lajityyppejä",
+ "HeaderManageTags": "Hallitse tageja",
+ "HeaderMetadataToEmbed": "Sisällytettävä metadata",
+ "HeaderNewAccount": "Uusi tili",
+ "HeaderNewLibrary": "Uusi kirjasto",
+ "HeaderNotificationCreate": "Luo ilmoitus",
+ "HeaderNotificationUpdate": "Päivitä ilmoitus",
+ "HeaderNotifications": "Ilmoitukset",
+ "HeaderOpenRSSFeed": "Avaa RSS-syöte",
+ "HeaderOtherFiles": "Muut tiedostot",
+ "HeaderPermissions": "Käyttöoikeudet",
+ "HeaderPlayerQueue": "Soittimen jono",
+ "HeaderPlayerSettings": "Soittimen asetukset",
+ "HeaderPlaylist": "Soittolista",
+ "HeaderPlaylistItems": "Soittolistan kohteet",
+ "HeaderPodcastsToAdd": "Lisättävät podcastit",
+ "HeaderPreviewCover": "Esikatsele kansikuvaa",
+ "HeaderRSSFeedGeneral": "RSS yksityiskohdat",
+ "HeaderRSSFeedIsOpen": "RSS syöte on avoinna",
+ "HeaderRSSFeeds": "RSS syötteet",
+ "HeaderRemoveEpisode": "Poista jakso",
+ "HeaderRemoveEpisodes": "Poista {0} jaksoa",
+ "HeaderSchedule": "Ajoita",
+ "HeaderScheduleLibraryScans": "Ajoita automaattiset kirjastoskannaukset",
+ "HeaderSession": "Istunto",
+ "HeaderSetBackupSchedule": "Aseta varmuuskopiointiaikataulu",
+ "HeaderSettings": "Asetukset",
+ "HeaderSettingsExperimental": "Kokeelliset ominaisuudet",
+ "HeaderSettingsGeneral": "Yleiset",
+ "HeaderSleepTimer": "Uniajastin",
+ "HeaderStatsMinutesListeningChart": "Kuunteluminuutit (viim. 7 pv)",
+ "HeaderStatsRecentSessions": "Viimeaikaiset istunnot",
+ "HeaderStatsTop5Genres": "Top 5 lajityypit",
+ "HeaderTableOfContents": "Sisällysluettelo",
+ "HeaderTools": "Työkalut",
+ "HeaderUpdateAccount": "Päivitä tili",
+ "HeaderUpdateAuthor": "Päivitä kirjailija",
+ "HeaderUpdateLibrary": "Päivitä kirjasto",
+ "HeaderUsers": "Käyttäjät",
+ "HeaderYourStats": "Tilastosi",
+ "LabelAbridged": "Lyhennetty",
+ "LabelAccountType": "Tilin tyyppi",
+ "LabelAccountTypeAdmin": "Järjestelmänvalvoja",
+ "LabelAccountTypeGuest": "Vieras",
+ "LabelAccountTypeUser": "Käyttäjä",
+ "LabelActivity": "Toiminta",
+ "LabelAddToCollection": "Lisää kokoelmaan",
+ "LabelAddToCollectionBatch": "Lisää {0} kirjaa kokoelmaan",
+ "LabelAddToPlaylist": "Lisää soittolistaan",
+ "LabelAddToPlaylistBatch": "Lisää {0} kohdetta soittolistaan",
+ "LabelAddedAt": "Lisätty listalle",
+ "LabelAddedDate": "Lisätty {0}",
+ "LabelAdminUsersOnly": "Vain järjestelmänvalvojat",
+ "LabelAll": "Kaikki",
+ "LabelAllUsers": "Kaikki käyttäjät",
+ "LabelAllUsersExcludingGuests": "Kaikki käyttäjät vieraita lukuun ottamatta",
+ "LabelAllUsersIncludingGuests": "Kaikki käyttäjät mukaan lukien vieraat",
+ "LabelAlreadyInYourLibrary": "Jo kirjastossasi",
+ "LabelAuthor": "Tekijä",
+ "LabelAuthorFirstLast": "Tekijä (Etunimi Sukunimi)",
+ "LabelAuthorLastFirst": "Tekijä (Sukunimi, Etunimi)",
+ "LabelAuthors": "Tekijät",
+ "LabelAutoDownloadEpisodes": "Lataa jaksot automaattisesti",
+ "LabelBackToUser": "Takaisin käyttäjään",
+ "LabelBackupLocation": "Varmuuskopiointipaikka",
+ "LabelBackupsEnableAutomaticBackups": "Ota automaattinen varmuuskopiointi käyttöön",
+ "LabelBackupsEnableAutomaticBackupsHelp": "Varmuuskopiot tallennettu kansioon /metadata/backups",
+ "LabelBackupsMaxBackupSize": "Varmuuskopion enimmäiskoko (Gt) (0 rajaton)",
+ "LabelBackupsNumberToKeep": "Säilytettävien varmuuskopioiden määrä",
+ "LabelBitrate": "Bittinopeus",
+ "LabelBooks": "Kirjat",
+ "LabelButtonText": "Painikkeen teksti",
+ "LabelChangePassword": "Vaihda salasana",
+ "LabelChannels": "Kanavat",
+ "LabelChapters": "Luvut",
+ "LabelClickForMoreInfo": "Napsauta saadaksesi lisätietoja",
+ "LabelClosePlayer": "Sulje soitin",
+ "LabelCodec": "Koodekki",
+ "LabelCollapseSeries": "Pienennä sarja",
+ "LabelCollection": "Kokoelma",
+ "LabelCollections": "Kokoelmat",
+ "LabelComplete": "Valmis",
+ "LabelConfirmPassword": "Vahvista salasana",
+ "LabelContinueListening": "Jatka kuuntelua",
+ "LabelContinueReading": "Jatka lukemista",
+ "LabelContinueSeries": "Jatka sarjoja",
+ "LabelCover": "Kansikuva",
+ "LabelCoverImageURL": "Kansikuvan URL-osoite",
+ "LabelCreatedAt": "Luotu",
+ "LabelCurrent": "Nykyinen",
+ "LabelDays": "Päivää",
+ "LabelDescription": "Kuvaus",
+ "LabelDevice": "Laite",
+ "LabelDeviceInfo": "Laitteen tiedot",
+ "LabelDiscover": "Löydä",
+ "LabelDownload": "Lataa",
+ "LabelDownloadNEpisodes": "Lataa {0} jaksoa",
+ "LabelDuration": "Kesto",
+ "LabelDurationComparisonLonger": "({0} pidempi)",
+ "LabelDurationComparisonShorter": "({0} lyhyempi)",
+ "LabelEbook": "E-kirja",
+ "LabelEbooks": "E-kirjat",
+ "LabelEdit": "Muokkaa",
+ "LabelEmail": "Sähköposti",
+ "LabelEmailSettingsTestAddress": "Testiosoite",
+ "LabelEmbeddedCover": "Upotettu kansikuva",
+ "LabelEnable": "Ota käyttöön",
+ "LabelEnd": "Loppu",
+ "LabelEndOfChapter": "Luvun loppu",
+ "LabelEpisode": "Jakso",
+ "LabelEpisodes": "Jaksot",
+ "LabelExample": "Esimerkki",
+ "LabelFeedURL": "Syötteen URL",
+ "LabelFile": "Tiedosto",
+ "LabelFileBirthtime": "Tiedoston syntymäaika",
+ "LabelFileBornDate": "Syntynyt {0}",
+ "LabelFileModified": "Muutettu tiedosto",
+ "LabelFileModifiedDate": "Muokattu {0}",
+ "LabelFilename": "Tiedostonimi",
+ "LabelFindEpisodes": "Etsi jaksoja",
+ "LabelFinished": "Valmis",
+ "LabelFolder": "Kansio",
+ "LabelFolders": "Kansiot",
+ "LabelGenre": "Lajityyppi",
+ "LabelGenres": "Lajityypit",
+ "LabelHost": "Isäntä",
+ "LabelHours": "Tunnit",
+ "LabelInProgress": "Kesken",
+ "LabelIncomplete": "Keskeneräinen",
+ "LabelIntervalEvery12Hours": "12 tunnin välein",
+ "LabelIntervalEvery15Minutes": "15 minuutin välein",
+ "LabelIntervalEvery2Hours": "2 tunnin välein",
+ "LabelIntervalEvery30Minutes": "30 minuutin välein",
+ "LabelIntervalEvery6Hours": "6 tunnin välein",
+ "LabelIntervalEveryDay": "Joka päivä",
+ "LabelIntervalEveryHour": "Joka tunti",
+ "LabelItem": "Kohde",
+ "LabelLanguage": "Kieli",
+ "LabelLanguageDefaultServer": "Palvelimen oletuskieli",
+ "LabelLanguages": "Kielet",
+ "LabelLastBookAdded": "Viimeisin lisätty kirja",
+ "LabelLibrary": "Kirjasto",
+ "LabelLineSpacing": "Riviväli",
+ "LabelListenAgain": "Kuuntele uudelleen",
+ "LabelMediaType": "Mediatyyppi",
+ "LabelMinute": "Minuutti",
+ "LabelMinutes": "Minuutit",
+ "LabelMore": "Lisää",
+ "LabelMoreInfo": "Lisätietoja",
+ "LabelName": "Nimi",
+ "LabelNarrator": "Lukija",
+ "LabelNarrators": "Lukijat",
+ "LabelNew": "Uusi",
+ "LabelNewPassword": "Uusi salasana",
+ "LabelNewestAuthors": "Uusimmat kirjailijat",
+ "LabelNewestEpisodes": "Uusimmat jaksot",
+ "LabelNotStarted": "Ei aloitettu",
+ "LabelPassword": "Salasana",
+ "LabelPath": "Polku",
+ "LabelPermanent": "Pysyvä",
+ "LabelPermissionsAccessAllLibraries": "Käyttöoikeudet kaikkiin kirjastoihin",
+ "LabelPermissionsDelete": "Voi poistaa",
+ "LabelPermissionsDownload": "Voi ladata",
+ "LabelPermissionsUpdate": "Voi päivittää",
+ "LabelPermissionsUpload": "Voi lähettää",
+ "LabelPlaylists": "Soittolistat",
+ "LabelPodcast": "Podcast",
+ "LabelPodcasts": "Podcastit",
+ "LabelPort": "Portti",
+ "LabelPublishYear": "Julkaisuvuosi",
+ "LabelPublisher": "Julkaisija",
+ "LabelPublishers": "Julkaisijat",
+ "LabelRSSFeedPreventIndexing": "Estä indeksointi",
+ "LabelRandomly": "Satunnaisesti",
+ "LabelRead": "Lue",
+ "LabelReadAgain": "Lue uudelleen",
+ "LabelRecentSeries": "Viimeisimmät sarjat",
+ "LabelRecentlyAdded": "Viimeeksi lisätyt",
+ "LabelRecommended": "Suositeltu",
+ "LabelRegion": "Alue",
+ "LabelRemoveCover": "Poista kansikuva",
+ "LabelSeason": "Kausi",
+ "LabelSelectAll": "Valitse kaikki",
+ "LabelSelectUsers": "Valitse käyttäjät",
+ "LabelSeries": "Sarja",
+ "LabelSeriesName": "Sarjan nimi",
+ "LabelSetEbookAsPrimary": "Aseta ensisijaiseksi",
+ "LabelSetEbookAsSupplementary": "Aseta täydentäväksi",
+ "LabelSettingsAudiobooksOnly": "Vain äänikirjat",
+ "LabelSettingsChromecastSupport": "Chromecast-tuki",
+ "LabelSettingsExperimentalFeatures": "Kokeelliset ominaisuudet",
+ "LabelSettingsFindCovers": "Etsi kansikuvia",
+ "LabelShare": "Jaa",
+ "LabelShowAll": "Näytä kaikki",
+ "LabelShowSeconds": "Näytä sekunnit",
+ "LabelSize": "Koko",
+ "LabelSleepTimer": "Uniajastin",
+ "LabelStart": "Aloita",
+ "LabelStartTime": "Aloitusaika",
+ "LabelStatsAudioTracks": "Ääniraidat",
+ "LabelStatsBestDay": "Paras päivä",
+ "LabelStatsDailyAverage": "Päivittäinen keskiarvo",
+ "LabelStatsDays": "Päivää",
+ "LabelStatsDaysListened": "Päivää kuunneltu",
+ "LabelStatsHours": "Tunnit",
+ "LabelStatsInARow": "peräjälkeen",
+ "LabelStatsMinutes": "minuuttia",
+ "LabelStatsMinutesListening": "Minuuttia kuunneltu",
+ "LabelStatsWeekListening": "Viikon aikana kuunneltu",
+ "LabelTag": "Tägi",
+ "LabelTags": "Tägit",
+ "LabelTheme": "Teema",
+ "LabelThemeDark": "Tumma",
+ "LabelThemeLight": "Kirkas",
+ "LabelTimeRemaining": "{0} jäljellä",
+ "LabelTitle": "Nimi",
+ "LabelTotalDuration": "Kokonaiskesto",
+ "LabelTracks": "Raidat",
+ "LabelType": "Tyyppi",
+ "LabelUnknown": "Tuntematon",
+ "LabelUpdateCover": "Päivitä kansikuva",
+ "LabelUser": "Käyttäjä",
+ "LabelUsername": "Käyttäjätunnus",
+ "LabelValue": "Arvo",
+ "LabelVersion": "Versio",
+ "LabelYourBookmarks": "Kirjanmerkkisi",
+ "LabelYourProgress": "Edistymisesi",
+ "MessageDownloadingEpisode": "Ladataan jaksoa",
+ "MessageEpisodesQueuedForDownload": "{0} jaksoa on latausjonossa",
+ "MessageFeedURLWillBe": "Syötteen URL tulee olemaan {0}",
+ "MessageFetching": "Haetaan...",
+ "MessageLoading": "Ladataan...",
+ "MessageMarkAsFinished": "Merkitse valmiiksi",
+ "MessageNoBookmarks": "Ei kirjanmerkkejä",
+ "MessageNoChapters": "Ei kappaleita",
+ "MessageNoCoversFound": "Kansikuvia ei löydetty",
+ "MessageNoGenres": "Ei lajityyppejä",
+ "MessageNoItems": "Ei kohteita",
+ "MessageNoItemsFound": "Kohteita ei löytynyt",
+ "MessageNoListeningSessions": "Ei kuunteluistuntoja",
+ "MessageNoPodcastsFound": "Podcasteja ei löytynyt",
+ "MessageNoUpdatesWereNecessary": "Päivityksiä ei tarvittu",
+ "MessageNoUserPlaylists": "Sinulla ei ole soittolistoja",
+ "MessageOr": "tai",
+ "MessageReportBugsAndContribute": "Ilmoita virheistä, toivo ominaisuuksia ja osallistu",
+ "MessageTaskFailed": "Epäonnistunut",
+ "StatsSessions": "istunnot",
+ "ToastAccountUpdateSuccess": "Tili päivitetty",
+ "ToastBookmarkCreateFailed": "Kirjanmerkin luominen epäonnistui",
+ "ToastCoverUpdateFailed": "Kansikuvan päivitys epäonnistui",
+ "ToastItemCoverUpdateSuccess": "Kohteen kansikuva päivitetty",
+ "ToastItemMarkedAsFinishedFailed": "Valmiiksi merkitseminen epäonnistui",
+ "ToastItemMarkedAsNotFinishedFailed": "Valmiiksi merkitsemisen poisto epäonnistui",
+ "ToastItemUpdateSuccess": "Kohde päivitetty",
+ "ToastLibraryCreateFailed": "Kirjaston luominen epäonnistui",
+ "ToastLibraryCreateSuccess": "Kirjasto \"{0}\" luotu",
+ "ToastLibraryDeleteFailed": "Kirjaston poistaminen epäonnistui",
+ "ToastLibraryDeleteSuccess": "Kirjasto poistettu",
+ "ToastLibraryUpdateSuccess": "Kirjasto \"{0}\" päivitetty",
+ "ToastNewUserCreatedFailed": "Tilin \"{0}\" luominen epäonnistui",
+ "ToastNewUserCreatedSuccess": "Uusi tili luotu",
+ "ToastPlaylistCreateFailed": "Soittolistan luominen epäonnistui",
+ "ToastPlaylistCreateSuccess": "Soittolista luotu",
+ "ToastPlaylistRemoveSuccess": "Soittolista poistettu",
+ "ToastPlaylistUpdateSuccess": "Soittolista päivitetty",
+ "ToastPodcastCreateFailed": "Podcastin luominen epäonnistui",
+ "ToastPodcastCreateSuccess": "Podcastin luominen onnistui",
+ "ToastRSSFeedCloseFailed": "RSS syötteen sulkeminen epäonnistui",
+ "ToastRSSFeedCloseSuccess": "RSS syöte suljettu",
+ "ToastRemoveFailed": "Poistaminen epäonnistui",
+ "ToastRemoveItemFromCollectionFailed": "Kohteen poistaminen kokoelmasta epäonnistui",
+ "ToastRemoveItemFromCollectionSuccess": "Kohde poistettu kokoelmasta",
+ "ToastRenameFailed": "Uudelleennimeäminen epäonnistui",
+ "ToastSelectAtLeastOneUser": "Valitse ainakin yksi käyttäjä",
+ "ToastServerSettingsUpdateSuccess": "Palvelimen asetukset päivitetty",
+ "ToastSessionCloseFailed": "Istunnon sulkeminen epäonnistui",
+ "ToastSessionDeleteFailed": "Istunnon poistaminen epäonnistui",
+ "ToastSessionDeleteSuccess": "Istunto poistettu",
+ "ToastSocketConnected": "Yhteys saatu",
+ "ToastSocketDisconnected": "Yhteys katkaistu",
+ "ToastSocketFailedToConnect": "Yhteyden muodostus epäonnistui",
+ "ToastTitleRequired": "Otsikko on pakollinen",
+ "ToastUnknownError": "Tuntematon virhe",
+ "ToastUserDeleteFailed": "Käyttäjän poisto epäonnistui",
+ "ToastUserDeleteSuccess": "Käyttäjä poistettu",
+ "ToastUserPasswordChangeSuccess": "Salasana vaihdettu onnistuneesti",
+ "ToastUserPasswordMismatch": "Salasanat eivät täsmää",
+ "ToastUserPasswordMustChange": "Uusi salasana ei voi olla sama kuin vanha salasana",
+ "ToastUserRootRequireName": "Pääkäyttäjän nimi on pakollinen"
+}
diff --git a/client/strings/fr.json b/client/strings/fr.json
index ae7f60f3b..d31c59714 100644
--- a/client/strings/fr.json
+++ b/client/strings/fr.json
@@ -1,6 +1,6 @@
{
"ButtonAdd": "Ajouter",
- "ButtonAddChapters": "Ajouter le chapitre",
+ "ButtonAddChapters": "Ajouter des chapitres",
"ButtonAddDevice": "Ajouter un appareil",
"ButtonAddLibrary": "Ajouter une bibliothèque",
"ButtonAddPodcasts": "Ajouter des podcasts",
@@ -9,34 +9,39 @@
"ButtonApply": "Appliquer",
"ButtonApplyChapters": "Appliquer aux chapitres",
"ButtonAuthors": "Auteurs",
+ "ButtonBack": "Retour",
"ButtonBrowseForFolder": "Naviguer vers le répertoire",
"ButtonCancel": "Annuler",
"ButtonCancelEncode": "Annuler l’encodage",
"ButtonChangeRootPassword": "Modifier le mot de passe Administrateur",
"ButtonCheckAndDownloadNewEpisodes": "Vérifier et télécharger de nouveaux épisodes",
- "ButtonChooseAFolder": "Choisir un dossier",
- "ButtonChooseFiles": "Choisir les fichiers",
+ "ButtonChooseAFolder": "Sélectionner un dossier",
+ "ButtonChooseFiles": "Sélectionner des fichiers",
"ButtonClearFilter": "Effacer le filtre",
"ButtonCloseFeed": "Fermer le flux",
+ "ButtonCloseSession": "Fermer la session",
"ButtonCollections": "Collections",
"ButtonConfigureScanner": "Configurer l’analyse",
"ButtonCreate": "Créer",
"ButtonCreateBackup": "Créer une sauvegarde",
- "ButtonDelete": "Effacer",
+ "ButtonDelete": "Supprimer",
"ButtonDownloadQueue": "File d’attente de téléchargement",
"ButtonEdit": "Modifier",
"ButtonEditChapters": "Modifier les chapitres",
"ButtonEditPodcast": "Modifier les podcasts",
+ "ButtonEnable": "Activer",
+ "ButtonFireAndFail": "Échec de l’action",
+ "ButtonFireOnTest": "Déclencher l’événement onTest",
"ButtonForceReScan": "Forcer une nouvelle analyse",
"ButtonFullPath": "Chemin complet",
"ButtonHide": "Cacher",
"ButtonHome": "Accueil",
- "ButtonIssues": "Parutions",
+ "ButtonIssues": "Problèmes",
"ButtonJumpBackward": "Retour",
"ButtonJumpForward": "Avancer",
"ButtonLatest": "Dernière version",
"ButtonLibrary": "Bibliothèque",
- "ButtonLogout": "Me déconnecter",
+ "ButtonLogout": "Déconnexion",
"ButtonLookup": "Chercher",
"ButtonManageTracks": "Gérer les pistes",
"ButtonMapChapterTitles": "Correspondance des titres de chapitres",
@@ -45,37 +50,41 @@
"ButtonNevermind": "Non merci",
"ButtonNext": "Suivant",
"ButtonNextChapter": "Chapitre suivant",
- "ButtonOk": "Ok",
+ "ButtonNextItemInQueue": "Élément suivant dans la file d’attente",
+ "ButtonOk": "D’accord",
"ButtonOpenFeed": "Ouvrir le flux",
"ButtonOpenManager": "Ouvrir le gestionnaire",
"ButtonPause": "Pause",
- "ButtonPlay": "Écouter",
+ "ButtonPlay": "Lire",
+ "ButtonPlayAll": "Lire tout",
"ButtonPlaying": "En lecture",
"ButtonPlaylists": "Listes de lecture",
"ButtonPrevious": "Précédent",
"ButtonPreviousChapter": "Chapitre précédent",
- "ButtonPurgeAllCache": "Purger le cache",
- "ButtonPurgeItemsCache": "Purger le cache des articles",
- "ButtonPurgeMediaProgress": "Purger la progression des médias",
+ "ButtonProbeAudioFile": "Analyser le fichier audio",
+ "ButtonPurgeAllCache": "Purger tout le cache",
+ "ButtonPurgeItemsCache": "Purger le cache des éléments",
"ButtonQueueAddItem": "Ajouter à la liste de lecture",
"ButtonQueueRemoveItem": "Supprimer de la liste de lecture",
+ "ButtonQuickEmbed": "Intégration rapide",
+ "ButtonQuickEmbedMetadata": "Ajouter rapidement des métadonnées",
"ButtonQuickMatch": "Recherche rapide",
+ "ButtonReScan": "Nouvelle analyse",
"ButtonRead": "Lire",
"ButtonReadLess": "Lire moins",
"ButtonReadMore": "Lire la suite",
"ButtonRefresh": "Rafraîchir",
"ButtonRemove": "Supprimer",
"ButtonRemoveAll": "Supprimer tout",
- "ButtonRemoveAllLibraryItems": "Supprimer tous les articles de la bibliothèque",
+ "ButtonRemoveAllLibraryItems": "Supprimer tous les éléments de la bibliothèque",
"ButtonRemoveFromContinueListening": "Ne plus continuer à écouter",
"ButtonRemoveFromContinueReading": "Ne plus continuer à lire",
"ButtonRemoveSeriesFromContinueSeries": "Ne plus continuer à écouter la série",
- "ButtonReScan": "Nouvelle analyse",
"ButtonReset": "Réinitialiser",
"ButtonResetToDefault": "Réinitialiser aux valeurs par défaut",
"ButtonRestore": "Rétablir",
"ButtonSave": "Sauvegarder",
- "ButtonSaveAndClose": "Sauvegarder et Fermer",
+ "ButtonSaveAndClose": "Sauvegarder et fermer",
"ButtonSaveTracklist": "Sauvegarder la liste de lecture",
"ButtonScan": "Analyser",
"ButtonScanLibrary": "Analyser la bibliothèque",
@@ -88,8 +97,10 @@
"ButtonShow": "Afficher",
"ButtonStartM4BEncode": "Démarrer l’encodage M4B",
"ButtonStartMetadataEmbed": "Démarrer les Métadonnées intégrées",
+ "ButtonStats": "Statistiques",
"ButtonSubmit": "Soumettre",
"ButtonTest": "Test",
+ "ButtonUnlinkOpenId": "Dissocier OpenID",
"ButtonUpload": "Téléverser",
"ButtonUploadBackup": "Téléverser une sauvegarde",
"ButtonUploadCover": "Téléverser une couverture",
@@ -99,14 +110,15 @@
"ButtonViewAll": "Afficher tout",
"ButtonYes": "Oui",
"ErrorUploadFetchMetadataAPI": "Erreur lors de la récupération des métadonnées",
- "ErrorUploadFetchMetadataNoResults": "Impossible de récupérer les métadonnées - essayez de mettre à jour le titre et/ou l’auteur.",
+ "ErrorUploadFetchMetadataNoResults": "Impossible de récupérer les métadonnées - essayez de mettre à jour le titre et/ou l’auteur",
"ErrorUploadLacksTitle": "Doit avoir un titre",
"HeaderAccount": "Compte",
+ "HeaderAddCustomMetadataProvider": "Ajouter un fournisseur de métadonnées personnalisé",
"HeaderAdvanced": "Avancé",
"HeaderAppriseNotificationSettings": "Configuration des notifications Apprise",
- "HeaderAudiobookTools": "Outils de gestion de fichiers de livres audio",
"HeaderAudioTracks": "Pistes audio",
- "HeaderAuthentication": "Authentication",
+ "HeaderAudiobookTools": "Outils de gestion de fichiers de livres audio",
+ "HeaderAuthentication": "Authentification",
"HeaderBackups": "Sauvegardes",
"HeaderChangePassword": "Modifier le mot de passe",
"HeaderChapters": "Chapitres",
@@ -115,19 +127,20 @@
"HeaderCollectionItems": "Entrées de la collection",
"HeaderCover": "Couverture",
"HeaderCurrentDownloads": "Téléchargements en cours",
+ "HeaderCustomMessageOnLogin": "Message personnalisé lors de la connexion",
"HeaderCustomMetadataProviders": "Fournisseurs de métadonnées personnalisés",
"HeaderDetails": "Détails",
"HeaderDownloadQueue": "File d’attente de téléchargements",
- "HeaderEbookFiles": "Fichier des livres numériques",
- "HeaderEmail": "Courriels",
- "HeaderEmailSettings": "Configuration des courriels",
+ "HeaderEbookFiles": "Fichiers des livres numériques",
+ "HeaderEmail": "Courriel",
+ "HeaderEmailSettings": "Configuration de l’envoie des courriels",
"HeaderEpisodes": "Épisodes",
"HeaderEreaderDevices": "Lecteur de livres numériques",
- "HeaderEreaderSettings": "Options Ereader",
+ "HeaderEreaderSettings": "Paramètres de la liseuse",
"HeaderFiles": "Fichiers",
"HeaderFindChapters": "Trouver les chapitres",
"HeaderIgnoredFiles": "Fichiers ignorés",
- "HeaderItemFiles": "Fichiers des articles",
+ "HeaderItemFiles": "Fichiers des éléments",
"HeaderItemMetadataUtils": "Outils de gestion des métadonnées",
"HeaderLastListeningSession": "Dernière session d’écoute",
"HeaderLatestEpisodes": "Dernier épisodes",
@@ -146,22 +159,25 @@
"HeaderMetadataToEmbed": "Métadonnées à intégrer",
"HeaderNewAccount": "Nouveau compte",
"HeaderNewLibrary": "Nouvelle bibliothèque",
+ "HeaderNotificationCreate": "Créer une notification",
+ "HeaderNotificationUpdate": "Mise à jour de la notification",
"HeaderNotifications": "Notifications",
"HeaderOpenIDConnectAuthentication": "Authentification via OpenID Connect",
- "HeaderOpenRSSFeed": "Ouvrir un flux RSS",
+ "HeaderOpenRSSFeed": "Ouvrir le flux RSS",
"HeaderOtherFiles": "Autres fichiers",
"HeaderPasswordAuthentication": "Authentification par mot de passe",
"HeaderPermissions": "Permissions",
"HeaderPlayerQueue": "Liste d’écoute",
+ "HeaderPlayerSettings": "Paramètres du lecteur",
"HeaderPlaylist": "Liste de lecture",
"HeaderPlaylistItems": "Éléments de la liste de lecture",
"HeaderPodcastsToAdd": "Podcasts à ajouter",
"HeaderPreviewCover": "Prévisualiser la couverture",
+ "HeaderRSSFeedGeneral": "Détails du flux RSS",
+ "HeaderRSSFeedIsOpen": "Le flux RSS est actif",
+ "HeaderRSSFeeds": "Flux RSS",
"HeaderRemoveEpisode": "Supprimer l’épisode",
"HeaderRemoveEpisodes": "Suppression de {0} épisodes",
- "HeaderRSSFeedGeneral": "Détails de flux RSS",
- "HeaderRSSFeedIsOpen": "Le Flux RSS est actif",
- "HeaderRSSFeeds": "Flux RSS",
"HeaderSavedMediaProgress": "Progression de la sauvegarde des médias",
"HeaderSchedule": "Programmation",
"HeaderScheduleLibraryScans": "Analyse automatique de la bibliothèque",
@@ -173,8 +189,8 @@
"HeaderSettingsGeneral": "Général",
"HeaderSettingsScanner": "Analyseur",
"HeaderSleepTimer": "Minuterie",
- "HeaderStatsLargestItems": "Articles les plus lourd",
- "HeaderStatsLongestItems": "Articles les plus long (heures)",
+ "HeaderStatsLargestItems": "Éléments les plus grands",
+ "HeaderStatsLongestItems": "Éléments les plus long (hrs)",
"HeaderStatsMinutesListeningChart": "Minutes d’écoute (7 derniers jours)",
"HeaderStatsRecentSessions": "Sessions récentes",
"HeaderStatsTop10Authors": "Top 10 Auteurs",
@@ -191,18 +207,18 @@
"LabelAbridged": "Version courte",
"LabelAbridgedChecked": "Abrégé (vérifié)",
"LabelAbridgedUnchecked": "Intégral (non vérifié)",
- "LabelAccessibleBy": "Accessible by",
+ "LabelAccessibleBy": "Accessible par",
"LabelAccountType": "Type de compte",
"LabelAccountTypeAdmin": "Admin",
"LabelAccountTypeGuest": "Invité",
"LabelAccountTypeUser": "Utilisateur",
"LabelActivity": "Activité",
- "LabelAdded": "Ajouté",
- "LabelAddedAt": "Date d’ajout",
"LabelAddToCollection": "Ajouter à la collection",
- "LabelAddToCollectionBatch": "Ajout de {0} livres à la lollection",
+ "LabelAddToCollectionBatch": "Ajout de {0} livres à la collection",
"LabelAddToPlaylist": "Ajouter à la liste de lecture",
"LabelAddToPlaylistBatch": "{0} éléments ajoutés à la liste de lecture",
+ "LabelAddedAt": "Date d’ajout",
+ "LabelAddedDate": "Ajouté le {0}",
"LabelAdminUsersOnly": "Administrateurs uniquement",
"LabelAll": "Tout",
"LabelAllUsers": "Tous les utilisateurs",
@@ -210,11 +226,14 @@
"LabelAllUsersIncludingGuests": "Tous les utilisateurs, y compris les invités",
"LabelAlreadyInYourLibrary": "Déjà dans la bibliothèque",
"LabelAppend": "Ajouter",
+ "LabelAudioBitrate": "Débit audio (par exemple 128k)",
+ "LabelAudioChannels": "Canaux audio (1 ou 2)",
+ "LabelAudioCodec": "Codec audio",
"LabelAuthor": "Auteur",
"LabelAuthorFirstLast": "Auteur (Prénom Nom)",
"LabelAuthorLastFirst": "Auteur (Nom, Prénom)",
"LabelAuthors": "Auteurs",
- "LabelAutoDownloadEpisodes": "Téléchargement automatique d’épisode",
+ "LabelAutoDownloadEpisodes": "Téléchargement automatique des épisodes",
"LabelAutoFetchMetadata": "Recherche automatique de métadonnées",
"LabelAutoFetchMetadataHelp": "Récupère les métadonnées du titre, de l’auteur et de la série pour simplifier le téléchargement. Il se peut que des métadonnées supplémentaires doivent être ajoutées après le téléchargement.",
"LabelAutoLaunch": "Lancement automatique",
@@ -222,33 +241,37 @@
"LabelAutoRegister": "Enregistrement automatique",
"LabelAutoRegisterDescription": "Créer automatiquement de nouveaux utilisateurs après la connexion",
"LabelBackToUser": "Retour à l’utilisateur",
+ "LabelBackupAudioFiles": "Sauvegarder les fichiers audio",
"LabelBackupLocation": "Emplacement de la sauvegarde",
"LabelBackupsEnableAutomaticBackups": "Activer les sauvegardes automatiques",
"LabelBackupsEnableAutomaticBackupsHelp": "Sauvegardes enregistrées dans /metadata/backups",
- "LabelBackupsMaxBackupSize": "Taille maximale de la sauvegarde (en Go)",
+ "LabelBackupsMaxBackupSize": "Taille maximale de la sauvegarde (en Go) (0 pour illimité)",
"LabelBackupsMaxBackupSizeHelp": "Afin de prévenir les mauvaises configuration, la sauvegarde échouera si elle excède la taille limite.",
"LabelBackupsNumberToKeep": "Nombre de sauvegardes à conserver",
"LabelBackupsNumberToKeepHelp": "Seule une sauvegarde sera supprimée à la fois. Si vous avez déjà plus de sauvegardes à effacer, vous devez les supprimer manuellement.",
- "LabelBitrate": "Bitrate",
+ "LabelBitrate": "Débit binaire",
+ "LabelBonus": "Bonus",
"LabelBooks": "Livres",
"LabelButtonText": "Texte du bouton",
"LabelByAuthor": "par {0}",
"LabelChangePassword": "Modifier le mot de passe",
"LabelChannels": "Canaux",
+ "LabelChapterCount": "{0} Chapitres",
+ "LabelChapterTitle": "Titre du chapitre",
"LabelChapters": "Chapitres",
"LabelChaptersFound": "chapitres trouvés",
- "LabelChapterTitle": "Titre du chapitre",
"LabelClickForMoreInfo": "Cliquez ici pour plus d’informations",
"LabelClosePlayer": "Fermer le lecteur",
"LabelCodec": "Codec",
"LabelCollapseSeries": "Réduire les séries",
+ "LabelCollapseSubSeries": "Replier les sous-séries",
"LabelCollection": "Collection",
"LabelCollections": "Collections",
"LabelComplete": "Complet",
"LabelConfirmPassword": "Confirmer le mot de passe",
"LabelContinueListening": "Continuer la lecture",
"LabelContinueReading": "Continuer la lecture",
- "LabelContinueSeries": "Continuer la série",
+ "LabelContinueSeries": "Continuer les séries",
"LabelCover": "Couverture",
"LabelCoverImageURL": "URL vers l’image de couverture",
"LabelCreatedAt": "Créé le",
@@ -257,6 +280,7 @@
"LabelCurrently": "Actuellement :",
"LabelCustomCronExpression": "Expression cron personnalisée :",
"LabelDatetime": "Date",
+ "LabelDays": "Jours",
"LabelDeleteFromFileSystemCheckbox": "Supprimer du système de fichiers (décocher pour ne supprimer que de la base de données)",
"LabelDescription": "Description",
"LabelDeselectAll": "Tout déselectionner",
@@ -279,24 +303,42 @@
"LabelEdit": "Modifier",
"LabelEmail": "Courriel",
"LabelEmailSettingsFromAddress": "Expéditeur",
+ "LabelEmailSettingsRejectUnauthorized": "Rejeter les certificats non autorisés",
+ "LabelEmailSettingsRejectUnauthorizedHelp": "Désactiver la validation du certificat SSL peut exposer votre connexion à des risques de sécurité, tels que des attaques de type « Attaque de l’homme du milieu ». Ne désactivez cette option que si vous en comprenez les implications et si vous faites confiance au serveur de messagerie auquel vous vous connectez.",
"LabelEmailSettingsSecure": "Sécurisé",
- "LabelEmailSettingsSecureHelp": "Utiliser TLS lors de la connexion au serveur, autrement TLS sera utilisé si le serveur prend en charge l’extension STARTTLS. Dans la plupart des cas, actviez l’option si vous vous connectez au port 465. Désactivez l’option pour utiliser port 587 ou 25. (source: nodemailer.com/smtp/#authentication)",
+ "LabelEmailSettingsSecureHelp": "Si cette option est activée, la connexion utilisera TLS lors de la connexion au serveur. Si elle est désactivée, TLS sera utilisé uniquement si le serveur prend en charge l’extension STARTTLS. Dans la plupart des cas, définissez cette valeur sur « true » si vous vous connectez au port 465. Pour les ports 587 ou 25, laissez-la sur « false ». (source : nodemailer.com/smtp/#authentication)",
"LabelEmailSettingsTestAddress": "Adresse de test",
"LabelEmbeddedCover": "Couverture du livre intégrée",
"LabelEnable": "Activer",
+ "LabelEncodingBackupLocation": "Une sauvegarde de vos fichiers audio originaux sera stockée dans :",
+ "LabelEncodingChaptersNotEmbedded": "Les chapitres ne sont pas intégrés dans les livres audio multipistes.",
+ "LabelEncodingClearItemCache": "Assurez-vous de purger périodiquement le cache des éléments.",
+ "LabelEncodingFinishedM4B": "Le fichier M4B terminé sera placé dans votre dossier de livre audio à l'adresse suivante :",
+ "LabelEncodingInfoEmbedded": "Les métadonnées seront intégrées dans les pistes audio de votre dossier de livre audio.",
+ "LabelEncodingStartedNavigation": "Une fois la tâche démarrée, vous pouvez quitter cette page.",
+ "LabelEncodingTimeWarning": "L’encodage peut prendre jusqu’à 30 minutes.",
+ "LabelEncodingWarningAdvancedSettings": "Avertissement : ne mettez pas à jour ces paramètres à moins que vous ne soyez familier avec les options d'encodage « ffmpeg ».",
+ "LabelEncodingWatcherDisabled": "Si l'observateur est désactivé, vous devrez ensuite réanalyser ce livre audio.",
"LabelEnd": "Fin",
+ "LabelEndOfChapter": "Fin du chapitre",
"LabelEpisode": "Épisode",
"LabelEpisodeTitle": "Titre de l’épisode",
"LabelEpisodeType": "Type de l’épisode",
+ "LabelEpisodes": "Épisodes",
"LabelExample": "Exemple",
+ "LabelExpandSeries": "Développer la série",
+ "LabelExpandSubSeries": "Développer les sous-séries",
"LabelExplicit": "Restriction",
"LabelExplicitChecked": "Explicite (vérifié)",
"LabelExplicitUnchecked": "Non explicite (non vérifié)",
+ "LabelExportOPML": "Exporter OPML",
"LabelFeedURL": "URL du flux",
"LabelFetchingMetadata": "Récupération des métadonnées",
"LabelFile": "Fichier",
"LabelFileBirthtime": "Création du fichier",
+ "LabelFileBornDate": "Créé le {0}",
"LabelFileModified": "Modification du fichier",
+ "LabelFileModifiedDate": "Modifié le {0}",
"LabelFilename": "Nom de fichier",
"LabelFilterByUser": "Filtrer par utilisateur",
"LabelFindEpisodes": "Trouver des épisodes",
@@ -304,6 +346,7 @@
"LabelFolder": "Dossier",
"LabelFolders": "Dossiers",
"LabelFontBold": "Gras",
+ "LabelFontBoldness": "Graisse de la police",
"LabelFontFamily": "Polices de caractères",
"LabelFontItalic": "Italique",
"LabelFontScale": "Taille de la police de caractère",
@@ -312,16 +355,18 @@
"LabelGenre": "Genre",
"LabelGenres": "Genres",
"LabelHardDeleteFile": "Suppression du fichier",
- "LabelHasEbook": "Dispose d’un livre numérique",
- "LabelHasSupplementaryEbook": "Dispose d’un livre numérique supplémentaire",
+ "LabelHasEbook": "A un livre numérique",
+ "LabelHasSupplementaryEbook": "A un livre numérique supplémentaire",
+ "LabelHideSubtitles": "Masquer les sous-titres",
"LabelHighestPriority": "Priorité la plus élevée",
"LabelHost": "Hôte",
"LabelHour": "Heure",
+ "LabelHours": "Heures",
"LabelIcon": "Icône",
"LabelImageURLFromTheWeb": "URL de l’image à partir du web",
+ "LabelInProgress": "En cours",
"LabelIncludeInTracklist": "Inclure dans la liste de lecture",
"LabelIncomplete": "Incomplet",
- "LabelInProgress": "En cours",
"LabelInterval": "Intervalle",
"LabelIntervalCustomDailyWeekly": "Personnaliser quotidiennement / hebdomadairement",
"LabelIntervalEvery12Hours": "Toutes les 12 heures",
@@ -332,68 +377,74 @@
"LabelIntervalEveryDay": "Tous les jours",
"LabelIntervalEveryHour": "Toutes les heures",
"LabelInvert": "Inverser",
- "LabelItem": "Article",
+ "LabelItem": "Élément",
+ "LabelJumpBackwardAmount": "Dans le lecteur, reculer de",
+ "LabelJumpForwardAmount": "Dans le lecteur, avancer de",
"LabelLanguage": "Langue",
"LabelLanguageDefaultServer": "Langue par défaut",
+ "LabelLanguages": "Langues",
"LabelLastBookAdded": "Dernier livre ajouté",
"LabelLastBookUpdated": "Dernier livre mis à jour",
"LabelLastSeen": "Vu dernièrement",
"LabelLastTime": "Progression",
"LabelLastUpdate": "Dernière mise à jour",
- "LabelLayout": "Disposition",
- "LabelLayoutSinglePage": "Vue unique",
+ "LabelLayout": "Mise en page",
+ "LabelLayoutSinglePage": "Page seule",
"LabelLayoutSplitPage": "Vue partagée",
"LabelLess": "Moins",
"LabelLibrariesAccessibleToUser": "Bibliothèque accessible à l’utilisateur",
"LabelLibrary": "Bibliothèque",
- "LabelLibraryItem": "Article de bibliothèque",
+ "LabelLibraryFilterSublistEmpty": "Aucun {0}",
+ "LabelLibraryItem": "Élément de bibliothèque",
"LabelLibraryName": "Nom de la bibliothèque",
"LabelLimit": "Limite",
- "LabelLineSpacing": "Interligne",
+ "LabelLineSpacing": "Espacement des lignes",
"LabelListenAgain": "Écouter à nouveau",
- "LabelLogLevelDebug": "Debug",
+ "LabelLogLevelDebug": "Débogage",
"LabelLogLevelInfo": "Info",
"LabelLogLevelWarn": "Warn",
- "LabelLookForNewEpisodesAfterDate": "Chercher de nouveaux épisode après cette date",
+ "LabelLookForNewEpisodesAfterDate": "Rechercher les nouveaux épisodes après cette date",
"LabelLowestPriority": "Priorité la plus basse",
- "LabelMatchExistingUsersBy": "Faire correspondre les utilisateurs existants par",
- "LabelMatchExistingUsersByDescription": "Utilisé pour connecter les utilisateurs existants. Une fois connectés, les utilisateurs seront associés à un identifiant unique provenant de votre fournisseur SSO.",
+ "LabelMatchExistingUsersBy": "Correspondance avec les utilisateurs existants",
+ "LabelMatchExistingUsersByDescription": "Utilisé pour connecter les utilisateurs existants. Une fois connectés, les utilisateurs seront associés à un identifiant unique provenant de votre fournisseur SSO",
"LabelMediaPlayer": "Lecteur multimédia",
"LabelMediaType": "Type de média",
- "LabelMetadataOrderOfPrecedenceDescription": "Les sources de métadonnées ayant une priorité plus élevée auront la priorité sur celles ayant une priorité moins élevée.",
- "LabelMetadataProvider": "Fournisseur de métadonnées",
"LabelMetaTag": "Balise de métadonnée",
"LabelMetaTags": "Balises de métadonnée",
+ "LabelMetadataOrderOfPrecedenceDescription": "Les sources de métadonnées ayant une priorité plus élevée auront la priorité sur celles ayant une priorité moins élevée",
+ "LabelMetadataProvider": "Fournisseur de métadonnées",
"LabelMinute": "Minute",
+ "LabelMinutes": "Minutes",
"LabelMissing": "Manquant",
- "LabelMissingEbook": "Ne possède pas de livre numérique",
- "LabelMissingSupplementaryEbook": "Ne possède pas de livre numérique supplémentaire",
+ "LabelMissingEbook": "Ne possède aucun livre numérique",
+ "LabelMissingSupplementaryEbook": "Ne possède aucun livre numérique supplémentaire",
"LabelMobileRedirectURIs": "URI de redirection mobile autorisés",
"LabelMobileRedirectURIsDescription": "Il s’agit d’une liste blanche d’URI de redirection valides pour les applications mobiles. Celui par défaut est audiobookshelf://oauth, que vous pouvez supprimer ou compléter avec des URIs supplémentaires pour l’intégration d’applications tierces. L’utilisation d’un astérisque (*) comme seule entrée autorise n’importe quel URI.",
"LabelMore": "Plus",
- "LabelMoreInfo": "Plus d’informations",
+ "LabelMoreInfo": "Plus d’infos",
"LabelName": "Nom",
"LabelNarrator": "Narrateur",
"LabelNarrators": "Narrateurs",
"LabelNew": "Nouveau",
- "LabelNewestAuthors": "Nouveaux auteurs",
- "LabelNewestEpisodes": "Derniers épisodes",
"LabelNewPassword": "Nouveau mot de passe",
+ "LabelNewestAuthors": "Auteurs récents",
+ "LabelNewestEpisodes": "Épisodes récents",
"LabelNextBackupDate": "Date de la prochaine sauvegarde",
"LabelNextScheduledRun": "Prochain lancement prévu",
+ "LabelNoCustomMetadataProviders": "Aucun fournisseurs de métadonnées personnalisés",
"LabelNoEpisodesSelected": "Aucun épisode sélectionné",
- "LabelNotes": "Notes",
"LabelNotFinished": "Non terminé",
+ "LabelNotStarted": "Pas commencé",
+ "LabelNotes": "Notes",
"LabelNotificationAppriseURL": "URL(s) d’Apprise",
"LabelNotificationAvailableVariables": "Variables disponibles",
- "LabelNotificationBodyTemplate": "Modèle de Message",
+ "LabelNotificationBodyTemplate": "Modèle de message",
"LabelNotificationEvent": "Evènement de Notification",
- "LabelNotificationsMaxFailedAttempts": "Nombres de tentatives d’envoi",
+ "LabelNotificationTitleTemplate": "Modèle de titre",
+ "LabelNotificationsMaxFailedAttempts": "Nombre maximal de tentatives échouées atteint",
"LabelNotificationsMaxFailedAttemptsHelp": "La notification est abandonnée une fois ce seuil atteint",
"LabelNotificationsMaxQueueSize": "Nombres de notifications maximum à mettre en attente",
"LabelNotificationsMaxQueueSizeHelp": "La limite de notification est de un évènement par seconde. Les notifications seront ignorées si la file d’attente est à son maximum. Cela empêche un flot trop important.",
- "LabelNotificationTitleTemplate": "Modèle de titre",
- "LabelNotStarted": "Pas commencé",
"LabelNumberOfBooks": "Nombre de livres",
"LabelNumberOfEpisodes": "Nombre d’épisodes",
"LabelOpenIDAdvancedPermsClaimDescription": "Nom de la demande OpenID qui contient des autorisations avancées pour les actions de l’utilisateur dans l’application, qui s’appliqueront à des rôles autres que celui d’administrateur (s’il est configuré). Si la demande est absente de la réponse, l’accès à ABS sera refusé. Si une seule option est manquante, elle sera considérée comme false. Assurez-vous que la demande du fournisseur d’identité correspond à la structure attendue :",
@@ -403,6 +454,7 @@
"LabelOverwrite": "Écraser",
"LabelPassword": "Mot de passe",
"LabelPath": "Chemin",
+ "LabelPermanent": "Permanent",
"LabelPermissionsAccessAllLibraries": "Peut accéder à toutes les bibliothèque",
"LabelPermissionsAccessAllTags": "Peut accéder à toutes les étiquettes",
"LabelPermissionsAccessExplicitContent": "Peut accéder au contenu restreint",
@@ -410,104 +462,117 @@
"LabelPermissionsDownload": "Peut télécharger",
"LabelPermissionsUpdate": "Peut mettre à jour",
"LabelPermissionsUpload": "Peut téléverser",
- "LabelPersonalYearReview": "Your Year in Review ({0})",
+ "LabelPersonalYearReview": "Bilan de l’année ({0})",
"LabelPhotoPathURL": "Chemin / URL des photos",
- "LabelPlaylists": "Listes de lecture",
"LabelPlayMethod": "Méthode d’écoute",
+ "LabelPlayerChapterNumberMarker": "{0} sur {1}",
+ "LabelPlaylists": "Listes de lecture",
"LabelPodcast": "Podcast",
- "LabelPodcasts": "Podcasts",
"LabelPodcastSearchRegion": "Région de recherche de podcasts",
"LabelPodcastType": "Type de Podcast",
+ "LabelPodcasts": "Podcasts",
"LabelPort": "Port",
"LabelPrefixesToIgnore": "Préfixes à Ignorer (Insensible à la Casse)",
"LabelPreventIndexing": "Empêcher l’indexation de votre flux par les bases de données iTunes et Google podcast",
"LabelPrimaryEbook": "Premier livre numérique",
"LabelProgress": "Progression",
"LabelProvider": "Fournisseur",
+ "LabelProviderAuthorizationValue": "Valeur de l’en-tête d’autorisation",
"LabelPubDate": "Date de publication",
+ "LabelPublishYear": "Année de publication",
+ "LabelPublishedDate": "Publié en {0}",
+ "LabelPublishedDecade": "Décennie de publication",
+ "LabelPublishedDecades": "Décennies de publication",
"LabelPublisher": "Éditeur",
- "LabelPublishYear": "Année d’édition",
+ "LabelPublishers": "Éditeurs",
+ "LabelRSSFeedCustomOwnerEmail": "Courriel personnalisée du propriétaire",
+ "LabelRSSFeedCustomOwnerName": "Nom propriétaire personnalisé",
+ "LabelRSSFeedOpen": "Flux RSS ouvert",
+ "LabelRSSFeedPreventIndexing": "Empêcher l’indexation",
+ "LabelRSSFeedSlug": "Identifiant d’URL du flux RSS",
+ "LabelRSSFeedURL": "Adresse du flux RSS",
+ "LabelRandomly": "Au hasard",
+ "LabelReAddSeriesToContinueListening": "Ajouter à nouveau la série pour continuer à l’écouter",
"LabelRead": "Lire",
"LabelReadAgain": "Lire à nouveau",
"LabelReadEbookWithoutProgress": "Lire le livre numérique sans sauvegarder la progression",
- "LabelRecentlyAdded": "Derniers ajouts",
"LabelRecentSeries": "Séries récentes",
+ "LabelRecentlyAdded": "Ajouts récents",
"LabelRecommended": "Recommandé",
"LabelRedo": "Refaire",
"LabelRegion": "Région",
"LabelReleaseDate": "Date de parution",
"LabelRemoveCover": "Supprimer la couverture",
"LabelRowsPerPage": "Lignes par page",
- "LabelRSSFeedCustomOwnerEmail": "Courriel du propriétaire personnalisé",
- "LabelRSSFeedCustomOwnerName": "Nom propriétaire personnalisé",
- "LabelRSSFeedOpen": "Flux RSS ouvert",
- "LabelRSSFeedPreventIndexing": "Empêcher l’indexation",
- "LabelRSSFeedSlug": "Balise URL du flux RSS",
- "LabelRSSFeedURL": "Adresse du flux RSS",
"LabelSearchTerm": "Terme de recherche",
"LabelSearchTitle": "Titre de recherche",
"LabelSearchTitleOrASIN": "Recherche du titre ou ASIN",
"LabelSeason": "Saison",
"LabelSelectAll": "Tout sélectionner",
"LabelSelectAllEpisodes": "Sélectionner tous les épisodes",
- "LabelSelectEpisodesShowing": "Sélectionner {0} episode(s) en cours",
+ "LabelSelectEpisodesShowing": "Sélectionner {0} épisode(s) en cours",
"LabelSelectUsers": "Sélectionner les utilisateurs",
"LabelSendEbookToDevice": "Envoyer le livre numérique à…",
"LabelSequence": "Séquence",
"LabelSeries": "Séries",
"LabelSeriesName": "Nom de la série",
"LabelSeriesProgress": "Progression de séries",
- "LabelServerYearReview": "Server Year in Review ({0})",
+ "LabelServerLogLevel": "Niveau de journalisation du serveur",
+ "LabelServerYearReview": "Bilan de l’année du serveur ({0})",
"LabelSetEbookAsPrimary": "Définir comme principale",
"LabelSetEbookAsSupplementary": "Définir comme supplémentaire",
"LabelSettingsAudiobooksOnly": "Livres audios seulement",
- "LabelSettingsAudiobooksOnlyHelp": "L’activation de ce paramètre ignorera les fichiers de type « livre numériques », sauf s’ils se trouvent dans un dossier spécifique , auquel cas ils seront définis comme des livres numériques supplémentaires.",
- "LabelSettingsBookshelfViewHelp": "Interface skeuomorphique avec une étagère en bois",
+ "LabelSettingsAudiobooksOnlyHelp": "L’activation de ce paramètre ignorera les fichiers de type « livre numériques », sauf s’ils se trouvent dans un dossier spécifique , auquel cas ils seront définis comme des livres numériques supplémentaires",
+ "LabelSettingsBookshelfViewHelp": "Interface skeumorphique avec étagères en bois",
"LabelSettingsChromecastSupport": "Support du Chromecast",
"LabelSettingsDateFormat": "Format de date",
"LabelSettingsDisableWatcher": "Désactiver la surveillance",
"LabelSettingsDisableWatcherForLibrary": "Désactiver la surveillance des dossiers pour la bibliothèque",
- "LabelSettingsDisableWatcherHelp": "Désactive la mise à jour automatique lorsque des modifications de fichiers sont détectées. * nécessite le redémarrage du serveur",
+ "LabelSettingsDisableWatcherHelp": "Désactive la mise à jour automatique lorsque des modifications de fichiers sont détectées. * Nécessite le redémarrage du serveur",
"LabelSettingsEnableWatcher": "Activer la veille",
"LabelSettingsEnableWatcherForLibrary": "Activer la surveillance des dossiers pour la bibliothèque",
- "LabelSettingsEnableWatcherHelp": "Active la mise à jour automatique automatique lorsque des modifications de fichiers sont détectées. * nécessite le redémarrage du serveur",
- "LabelSettingsEpubsAllowScriptedContent": "Allow scripted content in epubs",
- "LabelSettingsEpubsAllowScriptedContentHelp": "Allow epub files to execute scripts. It is recommended to keep this setting disabled unless you trust the source of the epub files.",
+ "LabelSettingsEnableWatcherHelp": "Active la mise à jour automatique d'éléments lorsque des modifications de fichiers sont détectées. * Nécessite le redémarrage du serveur",
+ "LabelSettingsEpubsAllowScriptedContent": "Autoriser le contenu scénarisé pour les fichiers EPUB",
+ "LabelSettingsEpubsAllowScriptedContentHelp": "Autoriser les fichiers EPUB à exécuter des scripts. Il est recommandé de laisser ce paramètre désactivé, sauf si vous faites confiance à la source des fichiers EPUB.",
"LabelSettingsExperimentalFeatures": "Fonctionnalités expérimentales",
"LabelSettingsExperimentalFeaturesHelp": "Fonctionnalités en cours de développement sur lesquelles nous attendons votre retour et expérience. Cliquez pour ouvrir la discussion GitHub.",
"LabelSettingsFindCovers": "Chercher des couvertures de livre",
- "LabelSettingsFindCoversHelp": "Si votre livre audio ne possède pas de couverture intégrée ou une image de couverture dans le dossier, l’analyseur tentera de récupérer une couverture. Attention, cela peut augmenter le temps d’analyse.",
+ "LabelSettingsFindCoversHelp": "Si votre livre audio ne possède aucune couverture intégrée ou une image de couverture dans le dossier, l’analyseur tentera de récupérer une couverture. Attention : cela peut augmenter le temps d’analyse",
"LabelSettingsHideSingleBookSeries": "Masquer les séries de livres uniques",
"LabelSettingsHideSingleBookSeriesHelp": "Les séries qui ne comportent qu’un seul livre seront masquées sur la page de la série et sur les étagères de la page d’accueil.",
- "LabelSettingsHomePageBookshelfView": "La page d’accueil utilise la vue étagère",
- "LabelSettingsLibraryBookshelfView": "La bibliothèque utilise la vue étagère",
+ "LabelSettingsHomePageBookshelfView": "Utiliser la vue étagère sur la page d’accueil",
+ "LabelSettingsLibraryBookshelfView": "Utiliser la vue étagère pour la bibliothèque",
"LabelSettingsOnlyShowLaterBooksInContinueSeries": "Sauter les livres précédents dans « Continuer la série »",
"LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "L’étagère de la page d’accueil « Continuer la série » affiche le premier livre non commencé dans les séries dont au moins un livre est terminé et aucun livre n’est en cours. L’activation de ce paramètre permet de poursuivre la série à partir du dernier livre terminé au lieu du premier livre non commencé.",
"LabelSettingsParseSubtitles": "Analyser les sous-titres",
"LabelSettingsParseSubtitlesHelp": "Extrait les sous-titres depuis le dossier du livre audio. Les sous-titres doivent être séparés par des « - » c’est-à-dire : « Titre du livre - Ceci est un sous-titre » aura le sous-titre « Ceci est un sous-titre »",
"LabelSettingsPreferMatchedMetadata": "Préférer les métadonnées par correspondance",
- "LabelSettingsPreferMatchedMetadataHelp": "Les métadonnées par correspondance écrase les détails de l’article lors d’une recherche par correspondance rapide. Par défaut, la recherche par correspondance rapide ne comblera que les éléments manquant.",
- "LabelSettingsSkipMatchingBooksWithASIN": "Ignorer la recherche par correspondance sur les livres ayant déjà un ASIN",
- "LabelSettingsSkipMatchingBooksWithISBN": "Ignorer la recherche par correspondance sur les livres ayant déjà un ISBN",
+ "LabelSettingsPreferMatchedMetadataHelp": "Les métadonnées mises en correspondance remplaceront les détails de l’élément lors de l’utilisation de la correspondance rapide. Par défaut, la correspondance rapide ne remplira que les détails manquants.",
+ "LabelSettingsSkipMatchingBooksWithASIN": "Ignorer la recherche par correspondance pour les livres ayant déjà un ASIN",
+ "LabelSettingsSkipMatchingBooksWithISBN": "Ignorer la recherche par correspondance pour les livres ayant déjà un ISBN",
"LabelSettingsSortingIgnorePrefixes": "Ignorer les préfixes lors du tri",
"LabelSettingsSortingIgnorePrefixesHelp": "c’est-à-dire : pour le préfixe « le », le livre avec pour titre « Le Titre du Livre » sera trié en tant que « Titre du Livre, Le »",
"LabelSettingsSquareBookCovers": "Utiliser des couvertures carrées",
- "LabelSettingsSquareBookCoversHelp": "Préférer les couvertures carrées par rapport aux couvertures standards de ratio 1.6:1.",
- "LabelSettingsStoreCoversWithItem": "Enregistrer la couverture avec les articles",
- "LabelSettingsStoreCoversWithItemHelp": "Par défaut, les couvertures sont enregistrées dans /metadata/items. Activer ce paramètre enregistrera les couvertures dans le dossier avec les fichiers de l’article. Seul un fichier nommé « cover » sera conservé.",
- "LabelSettingsStoreMetadataWithItem": "Enregistrer les Métadonnées avec les articles",
- "LabelSettingsStoreMetadataWithItemHelp": "Par défaut, les métadonnées sont enregistrées dans /metadata/items",
+ "LabelSettingsSquareBookCoversHelp": "Préférer les couvertures carrées par rapport aux couvertures standards de ratio 1.6:1",
+ "LabelSettingsStoreCoversWithItem": "Enregistrer la couverture avec les éléments",
+ "LabelSettingsStoreCoversWithItemHelp": "Par défaut, les couvertures sont enregistrées dans /metadata/items. Activer ce paramètre enregistrera les couvertures dans le dossier avec les fichiers de élément. Seul un fichier nommé « cover » sera conservé",
+ "LabelSettingsStoreMetadataWithItem": "Enregistrer les métadonnées avec l’élément",
+ "LabelSettingsStoreMetadataWithItemHelp": "Par défaut, les fichiers de métadonnées sont stockés dans /metadata/items. En activant ce paramètre, les fichiers de métadonnées seront stockés dans les dossiers des éléments de votre bibliothèque",
"LabelSettingsTimeFormat": "Format d’heure",
+ "LabelShare": "Partager",
+ "LabelShareOpen": "Ouvrir le partage",
+ "LabelShareURL": "Partager l’URL",
"LabelShowAll": "Tout afficher",
- "LabelShowSeconds": "Afficher le seondes",
+ "LabelShowSeconds": "Afficher les seondes",
+ "LabelShowSubtitles": "Afficher les sous-titres",
"LabelSize": "Taille",
- "LabelSleepTimer": "Minuterie",
- "LabelSlug": "Balise",
+ "LabelSleepTimer": "Minuterie de mise en veille",
+ "LabelSlug": "Identifiant d’URL",
"LabelStart": "Démarrer",
+ "LabelStartTime": "Heure de démarrage",
"LabelStarted": "Démarré",
"LabelStartedAt": "Démarré à",
- "LabelStartTime": "Heure de démarrage",
- "LabelStatsAudioTracks": "Pistes Audios",
+ "LabelStatsAudioTracks": "Pistes audio",
"LabelStatsAuthors": "Auteurs",
"LabelStatsBestDay": "Meilleur jour",
"LabelStatsDailyAverage": "Moyenne journalière",
@@ -515,8 +580,8 @@
"LabelStatsDaysListened": "Jours d’écoute",
"LabelStatsHours": "Heures",
"LabelStatsInARow": "d’affilée(s)",
- "LabelStatsItemsFinished": "Articles terminés",
- "LabelStatsItemsInLibrary": "Articles dans la bibliothèque",
+ "LabelStatsItemsFinished": "Éléments terminés",
+ "LabelStatsItemsInLibrary": "Éléments dans la bibliothèque",
"LabelStatsMinutes": "minutes",
"LabelStatsMinutesListening": "Minutes d’écoute",
"LabelStatsOverallDays": "Nombre total de jours",
@@ -537,6 +602,10 @@
"LabelThemeDark": "Sombre",
"LabelThemeLight": "Clair",
"LabelTimeBase": "Base de temps",
+ "LabelTimeDurationXHours": "{0} heures",
+ "LabelTimeDurationXMinutes": "{0} minutes",
+ "LabelTimeDurationXSeconds": "{0} secondes",
+ "LabelTimeInMinutes": "Temps en minutes",
"LabelTimeListened": "Temps d’écoute",
"LabelTimeListenedToday": "Nombres d’écoutes aujourd’hui",
"LabelTimeRemaining": "{0} restantes",
@@ -544,6 +613,7 @@
"LabelTitle": "Titre",
"LabelToolsEmbedMetadata": "Métadonnées intégrées",
"LabelToolsEmbedMetadataDescription": "Intègre les métadonnées au fichier audio avec la couverture et les chapitres.",
+ "LabelToolsM4bEncoder": "Encodeur M4B",
"LabelToolsMakeM4b": "Créer un fichier livre audio M4B",
"LabelToolsMakeM4bDescription": "Générer un fichier de livre audio .M4B avec des métadonnées intégrées, une image de couverture et des chapitres.",
"LabelToolsSplitM4b": "Scinde le fichier M4B en fichiers MP3",
@@ -560,95 +630,116 @@
"LabelUnabridged": "Version intégrale",
"LabelUndo": "Annuler",
"LabelUnknown": "Inconnu",
+ "LabelUnknownPublishDate": "Date de publication inconnue",
"LabelUpdateCover": "Mettre à jour la couverture",
"LabelUpdateCoverHelp": "Autoriser la mise à jour de la couverture existante lorsqu’une correspondance est trouvée",
- "LabelUpdatedAt": "Mis à jour à",
"LabelUpdateDetails": "Mettre à jours les détails",
"LabelUpdateDetailsHelp": "Autoriser la mise à jour des détails existants lorsqu’une correspondance est trouvée",
+ "LabelUpdatedAt": "Mis à jour à",
"LabelUploaderDragAndDrop": "Glisser et déposer des fichiers ou dossiers",
"LabelUploaderDropFiles": "Déposer des fichiers",
"LabelUploaderItemFetchMetadataHelp": "Récupérer automatiquement le titre, l’auteur et la série",
+ "LabelUseAdvancedOptions": "Utiliser les options avancées",
"LabelUseChapterTrack": "Utiliser la piste du chapitre",
"LabelUseFullTrack": "Utiliser la piste complète",
"LabelUser": "Utilisateur",
"LabelUsername": "Nom d’utilisateur",
"LabelValue": "Valeur",
"LabelVersion": "Version",
- "LabelViewBookmarks": "Afficher les signets",
+ "LabelViewBookmarks": "Afficher les favoris",
"LabelViewChapters": "Afficher les chapitres",
+ "LabelViewPlayerSettings": "Afficher les paramètres du lecteur",
"LabelViewQueue": "Afficher la liste de lecture",
"LabelVolume": "Volume",
"LabelWeekdaysToRun": "Jours de la semaine à exécuter",
+ "LabelXBooks": "{0} livres",
+ "LabelXItems": "{0} éléments",
"LabelYearReviewHide": "Masquer le bilan de l’année",
"LabelYearReviewShow": "Afficher le bilan de l’année",
"LabelYourAudiobookDuration": "Durée de vos livres audios",
- "LabelYourBookmarks": "Vos signets",
- "LabelYourPlaylists": "Vos listes de lecture",
+ "LabelYourBookmarks": "Vos favoris",
+ "LabelYourPlaylists": "Mes listes de lecture",
"LabelYourProgress": "Votre progression",
"MessageAddToPlayerQueue": "Ajouter en file d’attente",
- "MessageAppriseDescription": "Nécessite une instance d’API Apprise pour utiliser cette fonctionnalité ou une api qui prend en charge les mêmes requêtes. L’URL de l’API Apprise doit comprendre le chemin complet pour envoyer la notification. Par exemple, si votre instance écoute sur http://192.168.1.1:8337 alors vous devez mettre http://192.168.1.1:8337/notify.",
- "MessageBackupsDescription": "Les sauvegardes incluent les utilisateurs, la progression de lecture par utilisateur, les détails des articles des bibliothèques, les paramètres du serveur et les images sauvegardées. Les sauvegardes n’incluent pas les fichiers de votre bibliothèque.",
- "MessageBatchQuickMatchDescription": "La recherche par correspondance rapide tentera d’ajouter les couvertures et les métadonnées manquantes pour les articles sélectionnés. Activer l’option suivante pour autoriser la recherche par correspondance à écraser les données existantes.",
+ "MessageAppriseDescription": "Nécessite une instance d’API Apprise pour utiliser cette fonctionnalité ou une api qui prend en charge les mêmes requêtes. L’URL de l’API Apprise doit comprendre le chemin complet pour envoyer la notification. Par exemple, si votre instance écoute sur http://192.168.1.1:8337 alors vous devez mettre http://192.168.1.1:8337/notify.",
+ "MessageBackupsDescription": "Les sauvegardes incluent les utilisateurs, la progression des utilisateurs, les détails des éléments de la bibliothèque, les paramètres du serveur et les images stockées dans /metadata/items & /metadata/authors. Les sauvegardes n’incluent pas les fichiers stockés dans les dossiers de votre bibliothèque.",
+ "MessageBackupsLocationEditNote": "Remarque : Mettre à jour l'emplacement de sauvegarde ne déplacera pas ou ne modifiera pas les sauvegardes existantes",
+ "MessageBackupsLocationNoEditNote": "Remarque : l’emplacement de sauvegarde est défini via une variable d’environnement et ne peut pas être modifié ici.",
+ "MessageBackupsLocationPathEmpty": "L'emplacement de secours ne peut pas être vide",
+ "MessageBatchQuickMatchDescription": "La recherche par correspondance rapide tentera d’ajouter les couvertures et métadonnées manquantes pour les éléments sélectionnés. Activez les options ci-dessous pour permettre la Recherche par correspondance d’écraser les couvertures et/ou métadonnées existantes.",
"MessageBookshelfNoCollections": "Vous n’avez pas encore de collections",
- "MessageBookshelfNoResultsForFilter": "Aucun résultat pour le filtre « {0} : {1} »",
"MessageBookshelfNoRSSFeeds": "Aucun flux RSS n’est ouvert",
+ "MessageBookshelfNoResultsForFilter": "Aucun résultat pour le filtre « {0} : {1} »",
+ "MessageBookshelfNoResultsForQuery": "Aucun résultat pour la requête",
"MessageBookshelfNoSeries": "Vous n’avez aucune série",
- "MessageChapterEndIsAfter": "La fin du chapitre se situe après la fin de votre livre audio.",
+ "MessageChapterEndIsAfter": "La fin du chapitre se situe après la fin de votre livre audio",
"MessageChapterErrorFirstNotZero": "Le premier capitre doit débuter à 0",
"MessageChapterErrorStartGteDuration": "Horodatage invalide car il doit débuter avant la fin du livre",
"MessageChapterErrorStartLtPrev": "Horodatage invalide car il doit débuter au moins après le précédent chapitre",
"MessageChapterStartIsAfter": "Le premier chapitre est situé au début de votre livre audio",
"MessageCheckingCron": "Vérification du cron…",
- "MessageConfirmCloseFeed": "Êtes-vous sûr de vouloir fermer ce flux ?",
- "MessageConfirmDeleteBackup": "Êtes-vous sûr de vouloir supprimer la sauvegarde de « {0} » ?",
+ "MessageConfirmCloseFeed": "Êtes-vous sûr·e de vouloir fermer ce flux ?",
+ "MessageConfirmDeleteBackup": "Êtes-vous sûr·e de vouloir supprimer la sauvegarde de « {0} » ?",
+ "MessageConfirmDeleteDevice": "Êtes-vous sûr·e de vouloir supprimer la liseuse « {0} » ?",
"MessageConfirmDeleteFile": "Cela supprimera le fichier de votre système de fichiers. Êtes-vous sûr ?",
- "MessageConfirmDeleteLibrary": "Êtes-vous sûr de vouloir supprimer définitivement la bibliothèque « {0} » ?",
+ "MessageConfirmDeleteLibrary": "Êtes-vous sûr·e de vouloir supprimer définitivement la bibliothèque « {0} » ?",
"MessageConfirmDeleteLibraryItem": "Cette opération supprimera l’élément de la base de données et de votre système de fichiers. Êtes-vous sûr ?",
"MessageConfirmDeleteLibraryItems": "Cette opération supprimera {0} éléments de la base de données et de votre système de fichiers. Êtes-vous sûr ?",
- "MessageConfirmDeleteSession": "Êtes-vous sûr de vouloir supprimer cette session ?",
- "MessageConfirmForceReScan": "Êtes-vous sûr de vouloir lancer une analyse forcée ?",
- "MessageConfirmMarkAllEpisodesFinished": "Êtes-vous sûr de marquer tous les épisodes comme terminés ?",
- "MessageConfirmMarkAllEpisodesNotFinished": "Êtes-vous sûr de vouloir marquer tous les épisodes comme non terminés ?",
- "MessageConfirmMarkSeriesFinished": "Êtes-vous sûr de vouloir marquer tous les livres de cette série comme terminées ?",
- "MessageConfirmMarkSeriesNotFinished": "Êtes-vous sûr de vouloir marquer tous les livres de cette série comme comme non terminés ?",
- "MessageConfirmPurgeCache": "La purge du cache supprimera l’intégralité du répertoire à /metadata/cache.
Êtes-vous sûr de vouloir supprimer le répertoire de cache ?",
- "MessageConfirmQuickEmbed": "Attention ! L’intégration rapide ne sauvegardera pas vos fichiers audio. Assurez-vous d’avoir effectuer une sauvegarde de vos fichiers audio.
Souhaitez-vous continuer ?",
- "MessageConfirmRemoveAllChapters": "Êtes-vous sûr de vouloir supprimer tous les chapitres ?",
- "MessageConfirmRemoveAuthor": "Are you sure you want to remove author \"{0}\"?",
- "MessageConfirmRemoveCollection": "Êtes-vous sûr de vouloir supprimer la collection « {0} » ?",
- "MessageConfirmRemoveEpisode": "Êtes-vous sûr de vouloir supprimer l’épisode « {0} » ?",
- "MessageConfirmRemoveEpisodes": "Êtes-vous sûr de vouloir supprimer {0} épisodes ?",
- "MessageConfirmRemoveListeningSessions": "Are you sure you want to remove {0} listening sessions?",
- "MessageConfirmRemoveNarrator": "Êtes-vous sûr de vouloir supprimer le narrateur « {0} » ?",
- "MessageConfirmRemovePlaylist": "Êtes-vous sûr de vouloir supprimer la liste de lecture « {0} » ?",
- "MessageConfirmRenameGenre": "Êtes-vous sûr de vouloir renommer le genre « {0} » en « {1} » pour tous les articles ?",
- "MessageConfirmRenameGenreMergeNote": "Information: Ce genre existe déjà et sera fusionné.",
+ "MessageConfirmDeleteMetadataProvider": "Êtes-vous sûr·e de vouloir supprimer le fournisseur de métadonnées personnalisées « {0} » ?",
+ "MessageConfirmDeleteNotification": "Êtes-vous sûr·e de vouloir supprimer cette notification ?",
+ "MessageConfirmDeleteSession": "Êtes-vous sûr·e de vouloir supprimer cette session ?",
+ "MessageConfirmEmbedMetadataInAudioFiles": "Souhaitez-vous vraiment intégrer des métadonnées dans {0} fichiers audio ?",
+ "MessageConfirmForceReScan": "Êtes-vous sûr·e de vouloir lancer une analyse forcée ?",
+ "MessageConfirmMarkAllEpisodesFinished": "Êtes-vous sûr·e de marquer tous les épisodes comme terminés ?",
+ "MessageConfirmMarkAllEpisodesNotFinished": "Êtes-vous sûr·e de vouloir marquer tous les épisodes comme non terminés ?",
+ "MessageConfirmMarkItemFinished": "Êtes-vous sûr·e de vouloir marquer {0} comme terminé ?",
+ "MessageConfirmMarkItemNotFinished": "Êtes-vous sûr·e de vouloir marquer {0} comme non terminé ?",
+ "MessageConfirmMarkSeriesFinished": "Êtes-vous sûr·e de vouloir marquer tous les livres de cette série comme terminées ?",
+ "MessageConfirmMarkSeriesNotFinished": "Êtes-vous sûr·e de vouloir marquer tous les livres de cette série comme non terminés ?",
+ "MessageConfirmNotificationTestTrigger": "Déclencher cette notification avec des données de test ?",
+ "MessageConfirmPurgeCache": "La purge du cache supprimera l’intégralité du répertoire à /metadata/cache.
Êtes-vous sûr·e de vouloir supprimer le répertoire de cache ?",
+ "MessageConfirmPurgeItemsCache": "Purger le cache des éléments supprimera l'ensemble du répertoire /metadata/cache/items. Êtes-vous sûr ?",
+ "MessageConfirmQuickEmbed": "Attention ! L'intégration rapide ne permet pas de sauvegarder vos fichiers audio. Assurez-vous d’avoir effectuer une sauvegarde de vos fichiers audio.
Souhaitez-vous continuer ?",
+ "MessageConfirmReScanLibraryItems": "Êtes-vous sûr·e de vouloir réanalyser {0} éléments ?",
+ "MessageConfirmRemoveAllChapters": "Êtes-vous sûr·e de vouloir supprimer tous les chapitres ?",
+ "MessageConfirmRemoveAuthor": "Êtes-vous sûr·e de vouloir supprimer l’auteur « {0} » ?",
+ "MessageConfirmRemoveCollection": "Êtes-vous sûr·e de vouloir supprimer la collection « {0} » ?",
+ "MessageConfirmRemoveEpisode": "Êtes-vous sûr·e de vouloir supprimer l’épisode « {0} » ?",
+ "MessageConfirmRemoveEpisodes": "Êtes-vous sûr·e de vouloir supprimer {0} épisodes ?",
+ "MessageConfirmRemoveListeningSessions": "Êtes-vous sûr·e de vouloir supprimer {0} sessions d’écoute ?",
+ "MessageConfirmRemoveNarrator": "Êtes-vous sûr·e de vouloir supprimer le narrateur « {0} » ?",
+ "MessageConfirmRemovePlaylist": "Êtes-vous sûr·e de vouloir supprimer la liste de lecture « {0} » ?",
+ "MessageConfirmRenameGenre": "Êtes-vous sûr·e de vouloir renommer le genre « {0} » en « {1} » pour tous les éléments ?",
+ "MessageConfirmRenameGenreMergeNote": "Information : ce genre existe déjà et sera fusionné.",
"MessageConfirmRenameGenreWarning": "Attention ! Un genre similaire avec une casse différente existe déjà « {0} ».",
- "MessageConfirmRenameTag": "Êtes-vous sûr de vouloir renommer l’étiquette « {0} » en « {1} » pour tous les articles ?",
- "MessageConfirmRenameTagMergeNote": "Information: Cette étiquette existe déjà et sera fusionnée.",
+ "MessageConfirmRenameTag": "Êtes-vous sûr·e de vouloir renommer l’étiquette « {0} » en « {1} » pour tous les éléments ?",
+ "MessageConfirmRenameTagMergeNote": "Information : Cette étiquette existe déjà et sera fusionnée.",
"MessageConfirmRenameTagWarning": "Attention ! Une étiquette similaire avec une casse différente existe déjà « {0} ».",
- "MessageConfirmReScanLibraryItems": "Êtes-vous sûr de vouloir re-analyser {0} éléments ?",
- "MessageConfirmSendEbookToDevice": "Êtes-vous sûr de vouloir envoyer le livre numérique {0} « {1} » à l’appareil « {2} »?",
+ "MessageConfirmResetProgress": "Êtes-vous sûr·e de vouloir réinitialiser votre progression ?",
+ "MessageConfirmSendEbookToDevice": "Êtes-vous sûr·e de vouloir envoyer {0} livre numérique « {1} » à l'appareil « {2} » ?",
+ "MessageConfirmUnlinkOpenId": "Êtes-vous sûr·e de vouloir dissocier cet utilisateur d’OpenID ?",
"MessageDownloadingEpisode": "Téléchargement de l’épisode",
"MessageDragFilesIntoTrackOrder": "Faites glisser les fichiers dans l’ordre correct des pistes",
+ "MessageEmbedFailed": "Échec de l’intégration !",
"MessageEmbedFinished": "Intégration terminée !",
+ "MessageEmbedQueue": "En file d'attente pour l'intégration des métadonnées ({0} dans la file d'attente)",
"MessageEpisodesQueuedForDownload": "{0} épisode(s) mis en file pour téléchargement",
- "MessageEreaderDevices": "To ensure delivery of ebooks, you may need to add the above email address as a valid sender for each device listed below.",
+ "MessageEreaderDevices": "Pour garantir l’envoi des livres électroniques, vous devrez peut-être ajouter le courriel ci-dessus comme expéditeur valide pour chaque appareil répertorié ci-dessous.",
"MessageFeedURLWillBe": "L’URL du flux sera {0}",
"MessageFetching": "Récupération…",
"MessageForceReScanDescription": "analysera de nouveau tous les fichiers. Les étiquettes ID3 des fichiers audio, les fichiers OPF et les fichiers texte seront analysés comme s’ils étaient nouveaux.",
"MessageImportantNotice": "Information importante !",
"MessageInsertChapterBelow": "Insérer le chapitre ci-dessous",
- "MessageItemsSelected": "{0} articles sélectionnés",
- "MessageItemsUpdated": "{0} articles mis à jour",
+ "MessageItemsSelected": "{0} éléments sélectionnés",
+ "MessageItemsUpdated": "{0} éléments mis à jour",
"MessageJoinUsOn": "Rejoignez-nous sur",
"MessageListeningSessionsInTheLastYear": "{0} sessions d’écoute l’an dernier",
"MessageLoading": "Chargement…",
"MessageLoadingFolders": "Chargement des dossiers…",
"MessageLogsDescription": "Les journaux sont stockés dans /metadata/logs sous forme de fichiers JSON. Les journaux d’incidents sont stockés dans /metadata/logs/crash_logs.txt.",
- "MessageM4BFailed": "M4B échec",
- "MessageM4BFinished": "M4B terminé",
- "MessageMapChapterTitles": "Faire correspondre les titres des chapitres aux chapitres existants de votre livre audio sans ajuster l’horodatage.",
+ "MessageM4BFailed": "Échec de la conversion en M4B !",
+ "MessageM4BFinished": "M4B terminé !",
+ "MessageMapChapterTitles": "Faire correspondre les titres de chapitres avec ceux de vos livres audio existants sans ajuster les horodatages",
"MessageMarkAllEpisodesFinished": "Marquer tous les épisodes terminés",
"MessageMarkAllEpisodesNotFinished": "Marquer tous les épisodes non terminés",
"MessageMarkAsFinished": "Marquer comme terminé",
@@ -657,53 +748,97 @@
"MessageNoAudioTracks": "Aucune piste audio",
"MessageNoAuthors": "Aucun auteur",
"MessageNoBackups": "Aucune sauvegarde",
- "MessageNoBookmarks": "Aucun signet",
+ "MessageNoBookmarks": "Aucun favoris",
"MessageNoChapters": "Aucun chapitre",
"MessageNoCollections": "Aucune collection",
"MessageNoCoversFound": "Aucune couverture trouvée",
"MessageNoDescription": "Aucune description",
+ "MessageNoDevices": "Aucun appareil",
"MessageNoDownloadsInProgress": "Aucun téléchargement en cours",
- "MessageNoDownloadsQueued": "Aucun téléchargement en file d’attente",
+ "MessageNoDownloadsQueued": "Aucun téléchargement en attente",
"MessageNoEpisodeMatchesFound": "Aucune correspondance d’épisode trouvée",
"MessageNoEpisodes": "Aucun épisode",
- "MessageNoFoldersAvailable": "Aucun dossier disponible",
+ "MessageNoFoldersAvailable": "Aucun dossiers disponible",
"MessageNoGenres": "Aucun genre",
"MessageNoIssues": "Aucune parution",
- "MessageNoItems": "Aucun article",
- "MessageNoItemsFound": "Aucun article trouvé",
+ "MessageNoItems": "Aucun élément",
+ "MessageNoItemsFound": "Aucun élément trouvé",
"MessageNoListeningSessions": "Aucune session d’écoute en cours",
"MessageNoLogs": "Aucun journaux",
"MessageNoMediaProgress": "Aucun média en cours",
"MessageNoNotifications": "Aucune notification",
+ "MessageNoPodcastFeed": "Podcast invalide : pas de flux",
"MessageNoPodcastsFound": "Aucun podcast trouvé",
"MessageNoResults": "Aucun résultat",
"MessageNoSearchResultsFor": "Aucun résultat pour la recherche « {0} »",
"MessageNoSeries": "Aucune série",
- "MessageNoTags": "Aucune d’étiquettes",
+ "MessageNoTags": "Aucune étiquette",
"MessageNoTasksRunning": "Aucune tâche en cours",
- "MessageNotYetImplemented": "Non implémenté",
- "MessageNoUpdateNecessary": "Aucune mise à jour nécessaire",
"MessageNoUpdatesWereNecessary": "Aucune mise à jour n’était nécessaire",
"MessageNoUserPlaylists": "Vous n’avez aucune liste de lecture",
+ "MessageNotYetImplemented": "Non implémenté",
+ "MessageOpmlPreviewNote": "Remarque : Il s’agit d’un aperçu du fichier OPML analysé. Le titre réel du podcast provient du flux RSS.",
"MessageOr": "ou",
"MessagePauseChapter": "Suspendre la lecture du chapitre",
"MessagePlayChapter": "Écouter depuis le début du chapitre",
"MessagePlaylistCreateFromCollection": "Créer une liste de lecture depuis la collection",
+ "MessagePleaseWait": "Merci de patienter…",
"MessagePodcastHasNoRSSFeedForMatching": "Le Podcast n’a pas d’URL de flux RSS à utiliser pour la correspondance",
+ "MessagePodcastSearchField": "Saisissez le terme de recherche ou l'URL du flux RSS",
+ "MessageQuickEmbedInProgress": "Intégration rapide en cours",
+ "MessageQuickEmbedQueue": "En file d'attente pour une intégration rapide ({0} dans la file d'attente)",
"MessageQuickMatchDescription": "Renseigne les détails manquants ainsi que la couverture avec la première correspondance de « {0} ». N’écrase pas les données présentes à moins que le paramètre « Préférer les Métadonnées par correspondance » soit activé.",
"MessageRemoveChapter": "Supprimer le chapitre",
"MessageRemoveEpisodes": "Suppression de {0} épisode(s)",
"MessageRemoveFromPlayerQueue": "Supprimer de la liste d’écoute",
- "MessageRemoveUserWarning": "Êtes-vous sûr de vouloir supprimer définitivement l’utilisateur « {0} » ?",
- "MessageReportBugsAndContribute": "Remonter des anomalies, demander des fonctionnalités et contribuer sur",
- "MessageResetChaptersConfirm": "Êtes-vous sûr de vouloir réinitialiser les chapitres et annuler les changements effectués ?",
- "MessageRestoreBackupConfirm": "Êtes-vous sûr de vouloir restaurer la sauvegarde créée le",
+ "MessageRemoveUserWarning": "Êtes-vous sûr·e de vouloir supprimer définitivement l’utilisateur « {0} » ?",
+ "MessageReportBugsAndContribute": "Signalez des anomalies, demandez des fonctionnalités et contribuez sur",
+ "MessageResetChaptersConfirm": "Êtes-vous sûr·e de vouloir réinitialiser les chapitres et annuler les changements effectués ?",
+ "MessageRestoreBackupConfirm": "Êtes-vous sûr·e de vouloir restaurer la sauvegarde créée le",
"MessageRestoreBackupWarning": "Restaurer la sauvegarde écrasera la base de donnée située dans le dossier /config ainsi que les images sur /metadata/items et /metadata/authors.
Les sauvegardes ne touchent pas aux fichiers de la bibliothèque. Si vous avez activé le paramètre pour sauvegarder les métadonnées et les images de couverture dans le même dossier que les fichiers, ceux-ci ne ni sauvegardés, ni écrasés lors de la restauration.
Tous les clients utilisant votre serveur seront automatiquement mis à jour.",
"MessageSearchResultsFor": "Résultats de recherche pour",
"MessageSelected": "{0} sélectionnés",
"MessageServerCouldNotBeReached": "Serveur inaccessible",
"MessageSetChaptersFromTracksDescription": "Positionne un chapitre par fichier audio, avec le titre du fichier comme titre de chapitre",
+ "MessageShareExpirationWillBe": "Expire le {0}",
+ "MessageShareExpiresIn": "Expire dans {0}",
+ "MessageShareURLWillBe": "L’adresse de partage sera {0}",
"MessageStartPlaybackAtTime": "Démarrer la lecture pour « {0} » à {1} ?",
+ "MessageTaskAudioFileNotWritable": "Le fichier audio « {0} » n’est pas accessible en écriture",
+ "MessageTaskCanceledByUser": "Tâche annulée par l’utilisateur",
+ "MessageTaskDownloadingEpisodeDescription": "Téléchargement de l'épisode « {0} »",
+ "MessageTaskEmbeddingMetadata": "Intégration de métadonnées",
+ "MessageTaskEmbeddingMetadataDescription": "Intégration de métadonnées dans le livre audio « {0} »",
+ "MessageTaskEncodingM4b": "Encodage M4B",
+ "MessageTaskEncodingM4bDescription": "Encodage du livre audio « {0} » dans un seul fichier M4B",
+ "MessageTaskFailed": "Échec",
+ "MessageTaskFailedToBackupAudioFile": "Échec de la sauvegarde du fichier audio « {0} »",
+ "MessageTaskFailedToCreateCacheDirectory": "Échec de la création du répertoire de cache",
+ "MessageTaskFailedToEmbedMetadataInFile": "Échec de l'intégration des métadonnées dans le fichier « {0} »",
+ "MessageTaskFailedToMergeAudioFiles": "Échec de la fusion des fichiers audio",
+ "MessageTaskFailedToMoveM4bFile": "Échec du déplacement du fichier M4B",
+ "MessageTaskFailedToWriteMetadataFile": "Échec de l’écriture du fichier de métadonnées",
+ "MessageTaskMatchingBooksInLibrary": "Livres correspondants dans la bibliothèque « {0} »",
+ "MessageTaskNoFilesToScan": "Aucun fichier à analyser",
+ "MessageTaskOpmlImport": "Importation OPML",
+ "MessageTaskOpmlImportDescription": "Création de podcasts à partir de {0} flux RSS",
+ "MessageTaskOpmlImportFeed": "Flux d’importation OPML",
+ "MessageTaskOpmlImportFeedDescription": "Importation du flux RSS « {0} »",
+ "MessageTaskOpmlImportFeedFailed": "Échec de l’obtention du flux de podcast",
+ "MessageTaskOpmlImportFeedPodcastDescription": "Création du podcast « {0} »",
+ "MessageTaskOpmlImportFeedPodcastExists": "Le podcast existe déjà à cet emplacement",
+ "MessageTaskOpmlImportFeedPodcastFailed": "Échec de la création du podcast",
+ "MessageTaskOpmlImportFinished": "Ajout de {0} podcasts",
+ "MessageTaskOpmlParseFailed": "Échec de l'analyse du fichier OPML",
+ "MessageTaskOpmlParseFastFail": "Balise de fichier OPML non valide introuvable OU une balise n’a pas été trouvée",
+ "MessageTaskOpmlParseNoneFound": "Aucun flux trouvé dans le fichier OPML",
+ "MessageTaskScanItemsAdded": "{0} ajouté",
+ "MessageTaskScanItemsMissing": "{0} manquant",
+ "MessageTaskScanItemsUpdated": "{0} mis à jour",
+ "MessageTaskScanNoChangesNeeded": "Aucun changement nécessaire",
+ "MessageTaskScanningFileChanges": "Analyse des modifications du fichier dans « {0} »",
+ "MessageTaskScanningLibrary": "Analyse de la bibliothèque « {0} »",
+ "MessageTaskTargetDirectoryNotWritable": "Le répertoire cible n’est pas accessible en écriture",
"MessageThinking": "Je cherche…",
"MessageUploaderItemFailed": "Échec du téléversement",
"MessageUploaderItemSuccess": "Téléversement effectué !",
@@ -716,95 +851,177 @@
"NoteChangeRootPassword": "seul l’utilisateur « root » peut utiliser un mot de passe vide",
"NoteChapterEditorTimes": "Information : l’horodatage du premier chapitre doit être à 0:00 et celui du dernier chapitre ne peut se situer au-delà de la durée du livre audio.",
"NoteFolderPicker": "Information : les dossiers déjà surveillés ne sont pas affichés",
- "NoteRSSFeedPodcastAppsHttps": "Attention : la majorité des application de podcast nécessite une adresse de flux en HTTPS.",
- "NoteRSSFeedPodcastAppsPubDate": "Attention : un ou plusieurs de vos épisodes ne possèdent pas de date de publication. Certaines applications de podcast le requièrent.",
+ "NoteRSSFeedPodcastAppsHttps": "Attention : la majorité des application de podcast nécessite une adresse de flux HTTPS",
+ "NoteRSSFeedPodcastAppsPubDate": "Attention : un ou plusieurs de vos épisodes ne possèdent pas de date de publication. Certaines applications de podcast le requièrent.",
"NoteUploaderFoldersWithMediaFiles": "Les dossiers contenant des fichiers multimédias seront traités comme des éléments distincts de la bibliothèque.",
"NoteUploaderOnlyAudioFiles": "Si vous téléversez uniquement des fichiers audio, chaque fichier audio sera traité comme un livre audio distinct.",
"NoteUploaderUnsupportedFiles": "Les fichiers non pris en charge sont ignorés. Lorsque vous choisissez ou déposez un dossier, les autres fichiers qui ne sont pas dans un dossier d’élément sont ignorés.",
+ "NotificationOnBackupCompletedDescription": "Déclenché lorsqu’une sauvegarde est terminée",
+ "NotificationOnBackupFailedDescription": "Déclenché lorsqu'une sauvegarde échoue",
+ "NotificationOnEpisodeDownloadedDescription": "Déclenché lorsqu’un épisode de podcast est téléchargé automatiquement",
+ "NotificationOnTestDescription": "Événement pour tester le système de notification",
"PlaceholderNewCollection": "Nom de la nouvelle collection",
"PlaceholderNewFolderPath": "Nouveau chemin de dossier",
"PlaceholderNewPlaylist": "Nouveau nom de liste de lecture",
"PlaceholderSearch": "Recherche…",
"PlaceholderSearchEpisode": "Recherche d’épisode…",
- "ToastAccountUpdateFailed": "Échec de la mise à jour du compte",
+ "StatsAuthorsAdded": "auteurs ajoutés",
+ "StatsBooksAdded": "livres ajoutés",
+ "StatsBooksAdditional": "Les ajouts comprennent…",
+ "StatsBooksFinished": "livres terminés",
+ "StatsBooksFinishedThisYear": "Quelques livres terminés cette année…",
+ "StatsBooksListenedTo": "livres écoutés",
+ "StatsCollectionGrewTo": "Votre collection de livres a atteint…",
+ "StatsSessions": "sessions",
+ "StatsSpentListening": "temps passé à écouter",
+ "StatsTopAuthor": "TOP AUTEUR",
+ "StatsTopAuthors": "TOP AUTEURS",
+ "StatsTopGenre": "TOP GENRE",
+ "StatsTopGenres": "TOP GENRES",
+ "StatsTopMonth": "TOP MOIS",
+ "StatsTopNarrator": "TOP NARRATEUR",
+ "StatsTopNarrators": "TOP NARRATEURS",
+ "StatsTotalDuration": "Pour une durée totale de…",
+ "StatsYearInReview": "BILAN DE L’ANNÉE",
"ToastAccountUpdateSuccess": "Compte mis à jour",
- "ToastAuthorImageRemoveFailed": "Échec de la suppression de l’image",
+ "ToastAppriseUrlRequired": "Vous devez entrer une URL Apprise",
"ToastAuthorImageRemoveSuccess": "Image de l’auteur supprimée",
- "ToastAuthorUpdateFailed": "Échec de la mise à jour de l’auteur",
+ "ToastAuthorNotFound": "Auteur \"{0}\" non trouvé",
+ "ToastAuthorRemoveSuccess": "Auteur supprimé",
+ "ToastAuthorSearchNotFound": "Auteur non trouvé",
"ToastAuthorUpdateMerged": "Auteur fusionné",
"ToastAuthorUpdateSuccess": "Auteur mis à jour",
"ToastAuthorUpdateSuccessNoImageFound": "Auteur mis à jour (aucune image trouvée)",
+ "ToastBackupAppliedSuccess": "Sauvegarde appliquée",
"ToastBackupCreateFailed": "Échec de la création de sauvegarde",
"ToastBackupCreateSuccess": "Sauvegarde créée",
"ToastBackupDeleteFailed": "Échec de la suppression de sauvegarde",
"ToastBackupDeleteSuccess": "Sauvegarde supprimée",
+ "ToastBackupInvalidMaxKeep": "Nombre de sauvegardes à conserver invalide",
+ "ToastBackupInvalidMaxSize": "Taille maximale de sauvegarde invalide",
"ToastBackupRestoreFailed": "Échec de la restauration de sauvegarde",
"ToastBackupUploadFailed": "Échec du téléversement de sauvegarde",
"ToastBackupUploadSuccess": "Sauvegarde téléversée",
+ "ToastBatchDeleteFailed": "Échec de la suppression par lot",
+ "ToastBatchDeleteSuccess": "Suppression par lot réussie",
"ToastBatchUpdateFailed": "Échec de la mise à jour par lot",
"ToastBatchUpdateSuccess": "Mise à jour par lot terminée",
"ToastBookmarkCreateFailed": "Échec de la création de signet",
"ToastBookmarkCreateSuccess": "Signet ajouté",
- "ToastBookmarkRemoveFailed": "Échec de la suppression de signet",
"ToastBookmarkRemoveSuccess": "Signet supprimé",
- "ToastBookmarkUpdateFailed": "Échec de la mise à jour de signet",
"ToastBookmarkUpdateSuccess": "Signet mis à jour",
"ToastCachePurgeFailed": "Échec de la purge du cache",
"ToastCachePurgeSuccess": "Cache purgé avec succès",
"ToastChaptersHaveErrors": "Les chapitres contiennent des erreurs",
"ToastChaptersMustHaveTitles": "Les chapitre doivent avoir un titre",
- "ToastCollectionItemsRemoveFailed": "Échec de la suppression de(s) article(s) de la collection",
- "ToastCollectionItemsRemoveSuccess": "Article(s) supprimé(s) de la collection",
- "ToastCollectionRemoveFailed": "Échec de la suppression de la collection",
+ "ToastChaptersRemoved": "Chapitres supprimés",
+ "ToastCollectionItemsAddFailed": "Échec de l’ajout de(s) élément(s) à la collection",
+ "ToastCollectionItemsAddSuccess": "Ajout de(s) élément(s) à la collection réussi",
+ "ToastCollectionItemsRemoveSuccess": "Élément(s) supprimé(s) de la collection",
"ToastCollectionRemoveSuccess": "Collection supprimée",
- "ToastCollectionUpdateFailed": "Échec de la mise à jour de la collection",
"ToastCollectionUpdateSuccess": "Collection mise à jour",
+ "ToastCoverUpdateFailed": "Échec de la mise à jour de la couverture",
"ToastDeleteFileFailed": "Échec de la suppression du fichier",
"ToastDeleteFileSuccess": "Fichier supprimé",
+ "ToastDeviceAddFailed": "Échec de l’ajout de l’appareil",
+ "ToastDeviceNameAlreadyExists": "Un appareil de lecture avec ce nom existe déjà",
+ "ToastDeviceTestEmailFailed": "Échec de l’envoi du courriel de test",
+ "ToastDeviceTestEmailSuccess": "Courriel de test envoyé",
+ "ToastEmailSettingsUpdateSuccess": "Paramètres de messagerie mis à jour",
+ "ToastEncodeCancelFailed": "Échec de l’annulation de l’encodage",
+ "ToastEncodeCancelSucces": "Encodage annulé",
+ "ToastEpisodeDownloadQueueClearFailed": "Échec de la suppression de la file d'attente",
+ "ToastEpisodeDownloadQueueClearSuccess": "File d’attente de téléchargement des épisodes effacée",
+ "ToastErrorCannotShare": "Impossible de partager nativement sur cet appareil",
"ToastFailedToLoadData": "Échec du chargement des données",
- "ToastItemCoverUpdateFailed": "Échec de la mise à jour de la couverture de l’article",
- "ToastItemCoverUpdateSuccess": "Couverture de l’article mise à jour",
- "ToastItemDetailsUpdateFailed": "Échec de la mise à jour des détails de l’article",
- "ToastItemDetailsUpdateSuccess": "Détails de l’article mis à jour",
- "ToastItemDetailsUpdateUnneeded": "Pas de mise à jour nécessaire sur les détails de l’article",
+ "ToastFailedToShare": "Échec du partage",
+ "ToastFailedToUpdate": "Échec de la mise à jour",
+ "ToastInvalidImageUrl": "URL de l'image invalide",
+ "ToastInvalidUrl": "URL invalide",
+ "ToastItemCoverUpdateSuccess": "Couverture mise à jour",
+ "ToastItemDeletedFailed": "La suppression de l'élément à échouée",
+ "ToastItemDeletedSuccess": "Élément supprimé",
+ "ToastItemDetailsUpdateSuccess": "Détails de l’élément mis à jour",
"ToastItemMarkedAsFinishedFailed": "Échec de l’annotation terminée",
"ToastItemMarkedAsFinishedSuccess": "Article marqué comme terminé",
"ToastItemMarkedAsNotFinishedFailed": "Échec de l’annotation non-terminée",
"ToastItemMarkedAsNotFinishedSuccess": "Article marqué comme non-terminé",
+ "ToastItemUpdateSuccess": "Élément mis a jour",
"ToastLibraryCreateFailed": "Échec de la création de bibliothèque",
"ToastLibraryCreateSuccess": "Bibliothèque « {0} » créée",
"ToastLibraryDeleteFailed": "Échec de la suppression de la bibliothèque",
"ToastLibraryDeleteSuccess": "Bibliothèque supprimée",
"ToastLibraryScanFailedToStart": "Échec du démarrage de l’analyse",
"ToastLibraryScanStarted": "Analyse de la bibliothèque démarrée",
- "ToastLibraryUpdateFailed": "Échec de la mise à jour de la bibliothèque",
"ToastLibraryUpdateSuccess": "Bibliothèque « {0} » mise à jour",
+ "ToastMatchAllAuthorsFailed": "Tous les auteurs et autrices n’ont pas pu être classés",
+ "ToastNameEmailRequired": "Le nom et le courriel sont requis",
+ "ToastNameRequired": "Le nom est requis",
+ "ToastNewUserCreatedFailed": "La création du compte à échouée : « {0} »",
+ "ToastNewUserCreatedSuccess": "Nouveau compte créé",
+ "ToastNewUserLibraryError": "Au moins une bibliothèque est requise",
+ "ToastNewUserPasswordError": "Un mot de passe est requis, seul l’utilisateur root peut avoir un mot de passe vide",
+ "ToastNewUserTagError": "Au moins une étiquette est requise",
+ "ToastNewUserUsernameError": "Entrez un nom d’utilisateur",
+ "ToastNoUpdatesNecessary": "Aucune mise à jour nécessaire",
+ "ToastNotificationCreateFailed": "La création de la notification à échouée",
+ "ToastNotificationDeleteFailed": "La suppression de la notification à échouée",
+ "ToastNotificationFailedMaximum": "Le nombre maximum de tentatives échouées doit être >= 0",
+ "ToastNotificationQueueMaximum": "Le nombre de notification maximum doit être >= 0",
+ "ToastNotificationSettingsUpdateSuccess": "Paramètres de notification mis à jour",
+ "ToastNotificationTestTriggerFailed": "L'envoi de la notification de test à échoué",
+ "ToastNotificationTestTriggerSuccess": "Notification de test déclenchée",
+ "ToastNotificationUpdateSuccess": "Notification mise à jour",
"ToastPlaylistCreateFailed": "Échec de la création de la liste de lecture",
"ToastPlaylistCreateSuccess": "Liste de lecture créée",
- "ToastPlaylistRemoveFailed": "Échec de la suppression de la liste de lecture",
"ToastPlaylistRemoveSuccess": "Liste de lecture supprimée",
- "ToastPlaylistUpdateFailed": "Échec de la mise à jour de la liste de lecture",
"ToastPlaylistUpdateSuccess": "Liste de lecture mise à jour",
- "ToastPodcastCreateFailed": "Échec de la création du Podcast",
- "ToastPodcastCreateSuccess": "Podcast créé",
- "ToastRemoveItemFromCollectionFailed": "Échec de la suppression de l’article de la collection",
- "ToastRemoveItemFromCollectionSuccess": "Article supprimé de la collection",
+ "ToastPodcastCreateFailed": "Échec de la création du podcast",
+ "ToastPodcastCreateSuccess": "Podcast créé avec succès",
+ "ToastPodcastGetFeedFailed": "Échec de la récupération du flux du podcast",
+ "ToastPodcastNoEpisodesInFeed": "Aucun épisode trouvé dans le flux RSS",
+ "ToastPodcastNoRssFeed": "Le podcast n’a pas de flux RSS",
+ "ToastProviderCreatedFailed": "Échec de l’ajout du fournisseur",
+ "ToastProviderCreatedSuccess": "Nouveau fournisseur ajouté",
+ "ToastProviderNameAndUrlRequired": "Nom et URL requis",
+ "ToastProviderRemoveSuccess": "Fournisseur supprimé",
"ToastRSSFeedCloseFailed": "Échec de la fermeture du flux RSS",
"ToastRSSFeedCloseSuccess": "Flux RSS fermé",
+ "ToastRemoveFailed": "Échec de la suppression",
+ "ToastRemoveItemFromCollectionFailed": "Échec de la suppression d’un élément de la collection",
+ "ToastRemoveItemFromCollectionSuccess": "Élément supprimé de la collection",
+ "ToastRemoveItemsWithIssuesFailed": "Échec de la suppression des éléments de bibliothèque présentant des problèmes",
+ "ToastRemoveItemsWithIssuesSuccess": "Éléments de bibliothèque supprimés avec des problèmes",
+ "ToastRenameFailed": "Échec du renommage",
+ "ToastRescanFailed": "Échec de la nouvelle analyse pour {0}",
+ "ToastRescanRemoved": "Nouvelle analyse terminée, l’élément a été supprimé",
+ "ToastRescanUpToDate": "Nouvelle analyse terminée, l’élément était déjà à jour",
+ "ToastRescanUpdated": "Nouvelle analyse terminée, l’élément a été mis à jour",
+ "ToastScanFailed": "Échec de l’analyse de l’élément de la bibliothèque",
+ "ToastSelectAtLeastOneUser": "Sélectionnez au moins un utilisateur",
"ToastSendEbookToDeviceFailed": "Échec de l’envoi du livre numérique à l’appareil",
"ToastSendEbookToDeviceSuccess": "Livre numérique envoyé à l’appareil : {0}",
"ToastSeriesUpdateFailed": "Échec de la mise à jour de la série",
"ToastSeriesUpdateSuccess": "Mise à jour de la série réussie",
- "ToastServerSettingsUpdateFailed": "Échec de la mise à jour des paramètres du serveur",
"ToastServerSettingsUpdateSuccess": "Mise à jour des paramètres du serveur",
+ "ToastSessionCloseFailed": "Échec de la fermeture de la session",
"ToastSessionDeleteFailed": "Échec de la suppression de session",
"ToastSessionDeleteSuccess": "Session supprimée",
+ "ToastSlugMustChange": "L’identifiant d’URL contient des caractères invalides",
+ "ToastSlugRequired": "L’identifiant d’URL est requis",
"ToastSocketConnected": "WebSocket connecté",
"ToastSocketDisconnected": "WebSocket déconnecté",
"ToastSocketFailedToConnect": "Échec de la connexion WebSocket",
"ToastSortingPrefixesEmptyError": "Doit avoir au moins 1 préfixe de tri",
- "ToastSortingPrefixesUpdateFailed": "Échec de la mise à jour des préfixes de tri",
"ToastSortingPrefixesUpdateSuccess": "Mise à jour des préfixes de tri ({0} élément)",
+ "ToastTitleRequired": "Le titre est requis",
+ "ToastUnknownError": "Erreur inconnue",
+ "ToastUnlinkOpenIdFailed": "Échec de la dissociation de l’utilisateur l’OpenID",
+ "ToastUnlinkOpenIdSuccess": "Utilisateur dissocié de OpenID",
"ToastUserDeleteFailed": "Échec de la suppression de l’utilisateur",
- "ToastUserDeleteSuccess": "Utilisateur supprimé"
-}
\ No newline at end of file
+ "ToastUserDeleteSuccess": "Utilisateur supprimé",
+ "ToastUserPasswordChangeSuccess": "Mot de passe modifié avec succès",
+ "ToastUserPasswordMismatch": "Les mots de passe ne correspondent pas",
+ "ToastUserPasswordMustChange": "Le nouveau mot de passe ne peut pas être identique à l’ancien",
+ "ToastUserRootRequireName": "Vous devez entrer un nom d’utilisateur root"
+}
diff --git a/client/strings/gu.json b/client/strings/gu.json
index 11c475043..f0eee434f 100644
--- a/client/strings/gu.json
+++ b/client/strings/gu.json
@@ -16,7 +16,7 @@
"ButtonCheckAndDownloadNewEpisodes": "નવા એપિસોડ્સ ચેક કરો અને ડાઉનલોડ કરો",
"ButtonChooseAFolder": "ફોલ્ડર પસંદ કરો",
"ButtonChooseFiles": "ફાઇલો પસંદ કરો",
- "ButtonClearFilter": "ફિલ્ટર જતુ કરો ",
+ "ButtonClearFilter": "ફિલ્ટર જતુ કરો",
"ButtonCloseFeed": "ફીડ બંધ કરો",
"ButtonCollections": "સંગ્રહ",
"ButtonConfigureScanner": "સ્કેનર સેટિંગ બદલો",
@@ -32,8 +32,6 @@
"ButtonHide": "છુપાવો",
"ButtonHome": "ઘર",
"ButtonIssues": "સમસ્યાઓ",
- "ButtonJumpBackward": "Jump Backward",
- "ButtonJumpForward": "Jump Forward",
"ButtonLatest": "નવીનતમ",
"ButtonLibrary": "પુસ્તકાલય",
"ButtonLogout": "લૉગ આઉટ",
@@ -43,34 +41,25 @@
"ButtonMatchAllAuthors": "બધા મેળ ખાતા લેખકો શોધો",
"ButtonMatchBooks": "મેળ ખાતી પુસ્તકો શોધો",
"ButtonNevermind": "કંઈ વાંધો નહીં",
- "ButtonNext": "Next",
- "ButtonNextChapter": "Next Chapter",
"ButtonOk": "ઓકે",
"ButtonOpenFeed": "ફીડ ખોલો",
"ButtonOpenManager": "મેનેજર ખોલો",
- "ButtonPause": "Pause",
"ButtonPlay": "ચલાવો",
"ButtonPlaying": "ચલાવી રહ્યું છે",
"ButtonPlaylists": "પ્લેલિસ્ટ",
- "ButtonPrevious": "Previous",
- "ButtonPreviousChapter": "Previous Chapter",
"ButtonPurgeAllCache": "બધો Cache કાઢી નાખો",
"ButtonPurgeItemsCache": "વસ્તુઓનો Cache કાઢી નાખો",
- "ButtonPurgeMediaProgress": "બધું સાંભળ્યું કાઢી નાખો",
"ButtonQueueAddItem": "કતારમાં ઉમેરો",
"ButtonQueueRemoveItem": "કતારથી કાઢી નાખો",
"ButtonQuickMatch": "ઝડપી મેળ ખવડાવો",
+ "ButtonReScan": "ફરીથી સ્કેન કરો",
"ButtonRead": "વાંચો",
- "ButtonReadLess": "Read less",
- "ButtonReadMore": "Read more",
- "ButtonRefresh": "Refresh",
"ButtonRemove": "કાઢી નાખો",
"ButtonRemoveAll": "બધું કાઢી નાખો",
"ButtonRemoveAllLibraryItems": "બધું પુસ્તકાલય વસ્તુઓ કાઢી નાખો",
"ButtonRemoveFromContinueListening": "સાંભળતી પુસ્તકો માંથી કાઢી નાખો",
"ButtonRemoveFromContinueReading": "સાંભળતી પુસ્તકો માંથી કાઢી નાખો",
"ButtonRemoveSeriesFromContinueSeries": "સાંભળતી સિરીઝ માંથી કાઢી નાખો",
- "ButtonReScan": "ફરીથી સ્કેન કરો",
"ButtonReset": "રીસેટ કરો",
"ButtonResetToDefault": "ડિફોલ્ટ પર રીસેટ કરો",
"ButtonRestore": "પુનઃસ્થાપિત કરો",
@@ -83,7 +72,6 @@
"ButtonSelectFolderPath": "ફોલ્ડર પથ પસંદ કરો",
"ButtonSeries": "સિરીઝ",
"ButtonSetChaptersFromTracks": "ટ્રેક્સથી પ્રકરણો સેટ કરો",
- "ButtonShare": "Share",
"ButtonShiftTimes": "સમય શિફ્ટ કરો",
"ButtonShow": "બતાવો",
"ButtonStartM4BEncode": "M4B એન્કોડ શરૂ કરો",
@@ -98,15 +86,11 @@
"ButtonUserEdit": "વપરાશકર્તા {0} સંપાદિત કરો",
"ButtonViewAll": "બધું જુઓ",
"ButtonYes": "હા",
- "ErrorUploadFetchMetadataAPI": "Error fetching metadata",
- "ErrorUploadFetchMetadataNoResults": "Could not fetch metadata - try updating title and/or author",
- "ErrorUploadLacksTitle": "Must have a title",
"HeaderAccount": "એકાઉન્ટ",
"HeaderAdvanced": "અડ્વાન્સડ",
"HeaderAppriseNotificationSettings": "Apprise સૂચના સેટિંગ્સ",
- "HeaderAudiobookTools": "ઓડિયોબુક ફાઇલ વ્યવસ્થાપન ટૂલ્સ",
"HeaderAudioTracks": "ઓડિયો ટ્રેક્સ",
- "HeaderAuthentication": "Authentication",
+ "HeaderAudiobookTools": "ઓડિયોબુક ફાઇલ વ્યવસ્થાપન ટૂલ્સ",
"HeaderBackups": "બેકઅપ્સ",
"HeaderChangePassword": "પાસવર્ડ બદલો",
"HeaderChapters": "પ્રકરણો",
@@ -115,7 +99,6 @@
"HeaderCollectionItems": "સંગ્રહ વસ્તુઓ",
"HeaderCover": "આવરણ",
"HeaderCurrentDownloads": "વર્તમાન ડાઉનલોડ્સ",
- "HeaderCustomMetadataProviders": "Custom Metadata Providers",
"HeaderDetails": "વિગતો",
"HeaderDownloadQueue": "ડાઉનલોડ કતાર",
"HeaderEbookFiles": "ઇબુક ફાઇલો",
@@ -147,21 +130,19 @@
"HeaderNewAccount": "નવું એકાઉન્ટ",
"HeaderNewLibrary": "નવી પુસ્તકાલય",
"HeaderNotifications": "સૂચનાઓ",
- "HeaderOpenIDConnectAuthentication": "OpenID Connect Authentication",
"HeaderOpenRSSFeed": "RSS ફીડ ખોલો",
"HeaderOtherFiles": "અન્ય ફાઇલો",
- "HeaderPasswordAuthentication": "Password Authentication",
"HeaderPermissions": "પરવાનગીઓ",
"HeaderPlayerQueue": "પ્લેયર કતાર",
"HeaderPlaylist": "પ્લેલિસ્ટ",
"HeaderPlaylistItems": "પ્લેલિસ્ટ ની વસ્તુઓ",
"HeaderPodcastsToAdd": "ઉમેરવા માટે પોડકાસ્ટ્સ",
"HeaderPreviewCover": "પૂર્વાવલોકન કવર",
- "HeaderRemoveEpisode": "એપિસોડ કાઢી નાખો",
- "HeaderRemoveEpisodes": "{0} એપિસોડ્સ કાઢી નાખો",
"HeaderRSSFeedGeneral": "સામાન્ય RSS ફીડ",
"HeaderRSSFeedIsOpen": "RSS ફીડ ખોલેલી છે",
"HeaderRSSFeeds": "RSS ફીડ્સ",
+ "HeaderRemoveEpisode": "એપિસોડ કાઢી નાખો",
+ "HeaderRemoveEpisodes": "{0} એપિસોડ્સ કાઢી નાખો",
"HeaderSavedMediaProgress": "સાચવેલ મીડિયા પ્રગતિ",
"HeaderSchedule": "સમયપત્રક",
"HeaderScheduleLibraryScans": "પુસ્તકાલય સ્કેન સમયપત્રક",
@@ -177,634 +158,10 @@
"HeaderStatsLongestItems": "સૌથી લાંબી વસ્તુઓ (કલાક)",
"HeaderStatsMinutesListeningChart": "સાંભળવાની મિનિટ (છેલ્લા ૭ દિવસ)",
"HeaderStatsRecentSessions": "છેલ્લી સાંભળતી સેશન્સ",
- "HeaderStatsTop10Authors": "Top 10 Authors",
- "HeaderStatsTop5Genres": "Top 5 Genres",
- "HeaderTableOfContents": "Table of Contents",
- "HeaderTools": "Tools",
- "HeaderUpdateAccount": "Update Account",
- "HeaderUpdateAuthor": "Update Author",
- "HeaderUpdateDetails": "Update Details",
- "HeaderUpdateLibrary": "Update Library",
- "HeaderUsers": "Users",
- "HeaderYearReview": "Year {0} in Review",
- "HeaderYourStats": "Your Stats",
- "LabelAbridged": "Abridged",
- "LabelAbridgedChecked": "Abridged (checked)",
- "LabelAbridgedUnchecked": "Unabridged (unchecked)",
- "LabelAccessibleBy": "Accessible by",
- "LabelAccountType": "Account Type",
- "LabelAccountTypeAdmin": "Admin",
- "LabelAccountTypeGuest": "Guest",
- "LabelAccountTypeUser": "User",
- "LabelActivity": "Activity",
- "LabelAdded": "Added",
- "LabelAddedAt": "Added At",
- "LabelAddToCollection": "Add to Collection",
- "LabelAddToCollectionBatch": "Add {0} Books to Collection",
- "LabelAddToPlaylist": "Add to Playlist",
- "LabelAddToPlaylistBatch": "Add {0} Items to Playlist",
- "LabelAdminUsersOnly": "Admin users only",
- "LabelAll": "All",
- "LabelAllUsers": "All Users",
- "LabelAllUsersExcludingGuests": "All users excluding guests",
- "LabelAllUsersIncludingGuests": "All users including guests",
- "LabelAlreadyInYourLibrary": "Already in your library",
- "LabelAppend": "Append",
- "LabelAuthor": "Author",
- "LabelAuthorFirstLast": "Author (First Last)",
- "LabelAuthorLastFirst": "Author (Last, First)",
- "LabelAuthors": "Authors",
- "LabelAutoDownloadEpisodes": "Auto Download Episodes",
- "LabelAutoFetchMetadata": "Auto Fetch Metadata",
- "LabelAutoFetchMetadataHelp": "Fetches metadata for title, author, and series to streamline uploading. Additional metadata may have to be matched after upload.",
- "LabelAutoLaunch": "Auto Launch",
- "LabelAutoLaunchDescription": "Redirect to the auth provider automatically when navigating to the login page (manual override path /login?autoLaunch=0)",
- "LabelAutoRegister": "Auto Register",
- "LabelAutoRegisterDescription": "Automatically create new users after logging in",
- "LabelBackToUser": "Back to User",
- "LabelBackupLocation": "Backup Location",
- "LabelBackupsEnableAutomaticBackups": "Enable automatic backups",
- "LabelBackupsEnableAutomaticBackupsHelp": "Backups saved in /metadata/backups",
"LabelBackupsMaxBackupSize": "Maximum backup size (in GB)",
- "LabelBackupsMaxBackupSizeHelp": "As a safeguard against misconfiguration, backups will fail if they exceed the configured size.",
- "LabelBackupsNumberToKeep": "Number of backups to keep",
- "LabelBackupsNumberToKeepHelp": "Only 1 backup will be removed at a time so if you already have more backups than this you should manually remove them.",
- "LabelBitrate": "Bitrate",
- "LabelBooks": "Books",
- "LabelButtonText": "Button Text",
- "LabelByAuthor": "by {0}",
- "LabelChangePassword": "Change Password",
- "LabelChannels": "Channels",
- "LabelChapters": "Chapters",
- "LabelChaptersFound": "chapters found",
- "LabelChapterTitle": "Chapter Title",
- "LabelClickForMoreInfo": "Click for more info",
- "LabelClosePlayer": "Close player",
- "LabelCodec": "Codec",
- "LabelCollapseSeries": "Collapse Series",
- "LabelCollection": "Collection",
- "LabelCollections": "Collections",
- "LabelComplete": "Complete",
- "LabelConfirmPassword": "Confirm Password",
- "LabelContinueListening": "Continue Listening",
- "LabelContinueReading": "Continue Reading",
- "LabelContinueSeries": "Continue Series",
- "LabelCover": "Cover",
- "LabelCoverImageURL": "Cover Image URL",
- "LabelCreatedAt": "Created At",
- "LabelCronExpression": "Cron Expression",
- "LabelCurrent": "Current",
- "LabelCurrently": "Currently:",
- "LabelCustomCronExpression": "Custom Cron Expression:",
- "LabelDatetime": "Datetime",
- "LabelDeleteFromFileSystemCheckbox": "Delete from file system (uncheck to only remove from database)",
- "LabelDescription": "Description",
- "LabelDeselectAll": "Deselect All",
- "LabelDevice": "Device",
- "LabelDeviceInfo": "Device Info",
- "LabelDeviceIsAvailableTo": "Device is available to...",
- "LabelDirectory": "Directory",
- "LabelDiscFromFilename": "Disc from Filename",
- "LabelDiscFromMetadata": "Disc from Metadata",
- "LabelDiscover": "Discover",
- "LabelDownload": "Download",
- "LabelDownloadNEpisodes": "Download {0} episodes",
- "LabelDuration": "Duration",
- "LabelDurationComparisonExactMatch": "(exact match)",
- "LabelDurationComparisonLonger": "({0} longer)",
- "LabelDurationComparisonShorter": "({0} shorter)",
- "LabelDurationFound": "Duration found:",
- "LabelEbook": "Ebook",
- "LabelEbooks": "Ebooks",
- "LabelEdit": "Edit",
- "LabelEmail": "Email",
- "LabelEmailSettingsFromAddress": "From Address",
- "LabelEmailSettingsSecure": "Secure",
- "LabelEmailSettingsSecureHelp": "If true the connection will use TLS when connecting to server. If false then TLS is used if server supports the STARTTLS extension. In most cases set this value to true if you are connecting to port 465. For port 587 or 25 keep it false. (from nodemailer.com/smtp/#authentication)",
- "LabelEmailSettingsTestAddress": "Test Address",
- "LabelEmbeddedCover": "Embedded Cover",
- "LabelEnable": "Enable",
- "LabelEnd": "End",
- "LabelEpisode": "Episode",
- "LabelEpisodeTitle": "Episode Title",
- "LabelEpisodeType": "Episode Type",
- "LabelExample": "Example",
- "LabelExplicit": "Explicit",
- "LabelExplicitChecked": "Explicit (checked)",
- "LabelExplicitUnchecked": "Not Explicit (unchecked)",
- "LabelFeedURL": "Feed URL",
- "LabelFetchingMetadata": "Fetching Metadata",
- "LabelFile": "File",
- "LabelFileBirthtime": "File Birthtime",
- "LabelFileModified": "File Modified",
- "LabelFilename": "Filename",
- "LabelFilterByUser": "Filter by User",
- "LabelFindEpisodes": "Find Episodes",
- "LabelFinished": "Finished",
- "LabelFolder": "Folder",
- "LabelFolders": "Folders",
- "LabelFontBold": "Bold",
"LabelFontFamily": "ફોન્ટ કુટુંબ",
- "LabelFontItalic": "Italic",
- "LabelFontScale": "Font scale",
- "LabelFontStrikethrough": "Strikethrough",
- "LabelFormat": "Format",
- "LabelGenre": "Genre",
- "LabelGenres": "Genres",
- "LabelHardDeleteFile": "Hard delete file",
- "LabelHasEbook": "Has ebook",
- "LabelHasSupplementaryEbook": "Has supplementary ebook",
- "LabelHighestPriority": "Highest priority",
- "LabelHost": "Host",
- "LabelHour": "Hour",
- "LabelIcon": "Icon",
- "LabelImageURLFromTheWeb": "Image URL from the web",
- "LabelIncludeInTracklist": "Include in Tracklist",
- "LabelIncomplete": "Incomplete",
- "LabelInProgress": "In Progress",
- "LabelInterval": "Interval",
- "LabelIntervalCustomDailyWeekly": "Custom daily/weekly",
- "LabelIntervalEvery12Hours": "Every 12 hours",
- "LabelIntervalEvery15Minutes": "Every 15 minutes",
- "LabelIntervalEvery2Hours": "Every 2 hours",
- "LabelIntervalEvery30Minutes": "Every 30 minutes",
- "LabelIntervalEvery6Hours": "Every 6 hours",
- "LabelIntervalEveryDay": "Every day",
- "LabelIntervalEveryHour": "Every hour",
- "LabelInvert": "Invert",
- "LabelItem": "Item",
- "LabelLanguage": "Language",
- "LabelLanguageDefaultServer": "Default Server Language",
- "LabelLastBookAdded": "Last Book Added",
- "LabelLastBookUpdated": "Last Book Updated",
- "LabelLastSeen": "Last Seen",
- "LabelLastTime": "Last Time",
- "LabelLastUpdate": "Last Update",
- "LabelLayout": "Layout",
- "LabelLayoutSinglePage": "Single page",
- "LabelLayoutSplitPage": "Split page",
- "LabelLess": "Less",
- "LabelLibrariesAccessibleToUser": "Libraries Accessible to User",
- "LabelLibrary": "Library",
- "LabelLibraryItem": "Library Item",
- "LabelLibraryName": "Library Name",
- "LabelLimit": "Limit",
- "LabelLineSpacing": "Line spacing",
- "LabelListenAgain": "Listen Again",
- "LabelLogLevelDebug": "Debug",
- "LabelLogLevelInfo": "Info",
- "LabelLogLevelWarn": "Warn",
- "LabelLookForNewEpisodesAfterDate": "Look for new episodes after this date",
- "LabelLowestPriority": "Lowest Priority",
- "LabelMatchExistingUsersBy": "Match existing users by",
- "LabelMatchExistingUsersByDescription": "Used for connecting existing users. Once connected, users will be matched by a unique id from your SSO provider",
- "LabelMediaPlayer": "Media Player",
- "LabelMediaType": "Media Type",
- "LabelMetadataOrderOfPrecedenceDescription": "Higher priority metadata sources will override lower priority metadata sources",
- "LabelMetadataProvider": "Metadata Provider",
- "LabelMetaTag": "Meta Tag",
- "LabelMetaTags": "Meta Tags",
- "LabelMinute": "Minute",
- "LabelMissing": "Missing",
- "LabelMissingEbook": "Has no ebook",
- "LabelMissingSupplementaryEbook": "Has no supplementary ebook",
- "LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs",
- "LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is audiobookshelf://oauth, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (*) as the sole entry permits any URI.",
- "LabelMore": "More",
- "LabelMoreInfo": "More Info",
- "LabelName": "Name",
- "LabelNarrator": "Narrator",
- "LabelNarrators": "Narrators",
- "LabelNew": "New",
- "LabelNewestAuthors": "Newest Authors",
- "LabelNewestEpisodes": "Newest Episodes",
- "LabelNewPassword": "New Password",
- "LabelNextBackupDate": "Next backup date",
- "LabelNextScheduledRun": "Next scheduled run",
- "LabelNoEpisodesSelected": "No episodes selected",
- "LabelNotes": "Notes",
- "LabelNotFinished": "Not Finished",
- "LabelNotificationAppriseURL": "Apprise URL(s)",
- "LabelNotificationAvailableVariables": "Available variables",
- "LabelNotificationBodyTemplate": "Body Template",
- "LabelNotificationEvent": "Notification Event",
- "LabelNotificationsMaxFailedAttempts": "Max failed attempts",
- "LabelNotificationsMaxFailedAttemptsHelp": "Notifications are disabled once they fail to send this many times",
- "LabelNotificationsMaxQueueSize": "Max queue size for notification events",
- "LabelNotificationsMaxQueueSizeHelp": "Events are limited to firing 1 per second. Events will be ignored if the queue is at max size. This prevents notification spamming.",
- "LabelNotificationTitleTemplate": "Title Template",
- "LabelNotStarted": "Not Started",
- "LabelNumberOfBooks": "Number of Books",
- "LabelNumberOfEpisodes": "# of Episodes",
- "LabelOpenIDAdvancedPermsClaimDescription": "Name of the OpenID claim that contains advanced permissions for user actions within the application which will apply to non-admin roles (if configured). If the claim is missing from the response, access to ABS will be denied. If a single option is missing, it will be treated as false. Ensure the identity provider's claim matches the expected structure:",
- "LabelOpenIDClaims": "Leave the following options empty to disable advanced group and permissions assignment, automatically assigning 'User' group then.",
- "LabelOpenIDGroupClaimDescription": "Name of the OpenID claim that contains a list of the user's groups. Commonly referred to as groups. If configured, the application will automatically assign roles based on the user's group memberships, provided that these groups are named case-insensitively 'admin', 'user', or 'guest' in the claim. The claim should contain a list, and if a user belongs to multiple groups, the application will assign the role corresponding to the highest level of access. If no group matches, access will be denied.",
- "LabelOpenRSSFeed": "Open RSS Feed",
- "LabelOverwrite": "Overwrite",
- "LabelPassword": "Password",
- "LabelPath": "Path",
- "LabelPermissionsAccessAllLibraries": "Can Access All Libraries",
- "LabelPermissionsAccessAllTags": "Can Access All Tags",
- "LabelPermissionsAccessExplicitContent": "Can Access Explicit Content",
- "LabelPermissionsDelete": "Can Delete",
- "LabelPermissionsDownload": "Can Download",
- "LabelPermissionsUpdate": "Can Update",
- "LabelPermissionsUpload": "Can Upload",
- "LabelPersonalYearReview": "Your Year in Review ({0})",
- "LabelPhotoPathURL": "Photo Path/URL",
- "LabelPlaylists": "Playlists",
- "LabelPlayMethod": "Play Method",
- "LabelPodcast": "Podcast",
- "LabelPodcasts": "Podcasts",
"LabelPodcastSearchRegion": "પોડકાસ્ટ શોધ પ્રદેશ",
- "LabelPodcastType": "Podcast Type",
- "LabelPort": "Port",
- "LabelPrefixesToIgnore": "Prefixes to Ignore (case insensitive)",
- "LabelPreventIndexing": "Prevent your feed from being indexed by iTunes and Google podcast directories",
- "LabelPrimaryEbook": "Primary ebook",
- "LabelProgress": "Progress",
- "LabelProvider": "Provider",
- "LabelPubDate": "Pub Date",
- "LabelPublisher": "Publisher",
- "LabelPublishYear": "Publish Year",
- "LabelRead": "Read",
- "LabelReadAgain": "Read Again",
- "LabelReadEbookWithoutProgress": "Read ebook without keeping progress",
- "LabelRecentlyAdded": "Recently Added",
- "LabelRecentSeries": "Recent Series",
- "LabelRecommended": "Recommended",
- "LabelRedo": "Redo",
- "LabelRegion": "Region",
- "LabelReleaseDate": "Release Date",
- "LabelRemoveCover": "Remove cover",
- "LabelRowsPerPage": "Rows per page",
- "LabelRSSFeedCustomOwnerEmail": "Custom owner Email",
- "LabelRSSFeedCustomOwnerName": "Custom owner Name",
- "LabelRSSFeedOpen": "RSS Feed Open",
- "LabelRSSFeedPreventIndexing": "Prevent Indexing",
- "LabelRSSFeedSlug": "RSS Feed Slug",
- "LabelRSSFeedURL": "RSS Feed URL",
- "LabelSearchTerm": "Search Term",
- "LabelSearchTitle": "Search Title",
- "LabelSearchTitleOrASIN": "Search Title or ASIN",
- "LabelSeason": "Season",
- "LabelSelectAll": "Select all",
- "LabelSelectAllEpisodes": "Select all episodes",
- "LabelSelectEpisodesShowing": "Select {0} episodes showing",
- "LabelSelectUsers": "Select users",
- "LabelSendEbookToDevice": "Send Ebook to...",
- "LabelSequence": "Sequence",
- "LabelSeries": "Series",
- "LabelSeriesName": "Series Name",
- "LabelSeriesProgress": "Series Progress",
- "LabelServerYearReview": "Server Year in Review ({0})",
- "LabelSetEbookAsPrimary": "Set as primary",
- "LabelSetEbookAsSupplementary": "Set as supplementary",
- "LabelSettingsAudiobooksOnly": "Audiobooks only",
- "LabelSettingsAudiobooksOnlyHelp": "Enabling this setting will ignore ebook files unless they are inside an audiobook folder in which case they will be set as supplementary ebooks",
- "LabelSettingsBookshelfViewHelp": "Skeumorphic design with wooden shelves",
- "LabelSettingsChromecastSupport": "Chromecast support",
- "LabelSettingsDateFormat": "Date Format",
- "LabelSettingsDisableWatcher": "Disable Watcher",
- "LabelSettingsDisableWatcherForLibrary": "Disable folder watcher for library",
- "LabelSettingsDisableWatcherHelp": "Disables the automatic adding/updating of items when file changes are detected. *Requires server restart",
- "LabelSettingsEnableWatcher": "Enable Watcher",
- "LabelSettingsEnableWatcherForLibrary": "Enable folder watcher for library",
- "LabelSettingsEnableWatcherHelp": "Enables the automatic adding/updating of items when file changes are detected. *Requires server restart",
- "LabelSettingsEpubsAllowScriptedContent": "Allow scripted content in epubs",
- "LabelSettingsEpubsAllowScriptedContentHelp": "Allow epub files to execute scripts. It is recommended to keep this setting disabled unless you trust the source of the epub files.",
- "LabelSettingsExperimentalFeatures": "Experimental features",
- "LabelSettingsExperimentalFeaturesHelp": "Features in development that could use your feedback and help testing. Click to open github discussion.",
- "LabelSettingsFindCovers": "Find covers",
- "LabelSettingsFindCoversHelp": "If your audiobook does not have an embedded cover or a cover image inside the folder, the scanner will attempt to find a cover. Note: This will extend scan time",
- "LabelSettingsHideSingleBookSeries": "Hide single book series",
- "LabelSettingsHideSingleBookSeriesHelp": "Series that have a single book will be hidden from the series page and home page shelves.",
- "LabelSettingsHomePageBookshelfView": "Home page use bookshelf view",
- "LabelSettingsLibraryBookshelfView": "Library use bookshelf view",
- "LabelSettingsOnlyShowLaterBooksInContinueSeries": "Skip earlier books in Continue Series",
- "LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "The Continue Series home page shelf shows the first book not started in series that have at least one book finished and no books in progress. Enabling this setting will continue series from the furthest completed book instead of the first book not started.",
- "LabelSettingsParseSubtitles": "Parse subtitles",
- "LabelSettingsParseSubtitlesHelp": "Extract subtitles from audiobook folder names. Subtitle must be seperated by \" - \" i.e. \"Book Title - A Subtitle Here\" has the subtitle \"A Subtitle Here\"",
- "LabelSettingsPreferMatchedMetadata": "Prefer matched metadata",
"LabelSettingsPreferMatchedMetadataHelp": "Matched data will overide item details when using Quick Match. By default Quick Match will only fill in missing details.",
- "LabelSettingsSkipMatchingBooksWithASIN": "Skip matching books that already have an ASIN",
- "LabelSettingsSkipMatchingBooksWithISBN": "Skip matching books that already have an ISBN",
- "LabelSettingsSortingIgnorePrefixes": "Ignore prefixes when sorting",
- "LabelSettingsSortingIgnorePrefixesHelp": "i.e. for prefix \"the\" book title \"The Book Title\" would sort as \"Book Title, The\"",
- "LabelSettingsSquareBookCovers": "Use square book covers",
- "LabelSettingsSquareBookCoversHelp": "Prefer to use square covers over standard 1.6:1 book covers",
- "LabelSettingsStoreCoversWithItem": "Store covers with item",
- "LabelSettingsStoreCoversWithItemHelp": "By default covers are stored in /metadata/items, enabling this setting will store covers in your library item folder. Only one file named \"cover\" will be kept",
- "LabelSettingsStoreMetadataWithItem": "Store metadata with item",
- "LabelSettingsStoreMetadataWithItemHelp": "By default metadata files are stored in /metadata/items, enabling this setting will store metadata files in your library item folders",
- "LabelSettingsTimeFormat": "Time Format",
- "LabelShowAll": "Show All",
- "LabelShowSeconds": "Show seconds",
- "LabelSize": "Size",
- "LabelSleepTimer": "Sleep timer",
- "LabelSlug": "Slug",
- "LabelStart": "Start",
- "LabelStarted": "Started",
- "LabelStartedAt": "Started At",
- "LabelStartTime": "Start Time",
- "LabelStatsAudioTracks": "Audio Tracks",
- "LabelStatsAuthors": "Authors",
- "LabelStatsBestDay": "Best Day",
- "LabelStatsDailyAverage": "Daily Average",
- "LabelStatsDays": "Days",
- "LabelStatsDaysListened": "Days Listened",
- "LabelStatsHours": "Hours",
- "LabelStatsInARow": "in a row",
- "LabelStatsItemsFinished": "Items Finished",
- "LabelStatsItemsInLibrary": "Items in Library",
- "LabelStatsMinutes": "minutes",
- "LabelStatsMinutesListening": "Minutes Listening",
- "LabelStatsOverallDays": "Overall Days",
- "LabelStatsOverallHours": "Overall Hours",
- "LabelStatsWeekListening": "Week Listening",
- "LabelSubtitle": "Subtitle",
- "LabelSupportedFileTypes": "Supported File Types",
- "LabelTag": "Tag",
- "LabelTags": "Tags",
- "LabelTagsAccessibleToUser": "Tags Accessible to User",
- "LabelTagsNotAccessibleToUser": "Tags not Accessible to User",
- "LabelTasks": "Tasks Running",
- "LabelTextEditorBulletedList": "Bulleted list",
- "LabelTextEditorLink": "Link",
- "LabelTextEditorNumberedList": "Numbered list",
- "LabelTextEditorUnlink": "Unlink",
- "LabelTheme": "Theme",
- "LabelThemeDark": "Dark",
- "LabelThemeLight": "Light",
- "LabelTimeBase": "Time Base",
- "LabelTimeListened": "Time Listened",
- "LabelTimeListenedToday": "Time Listened Today",
- "LabelTimeRemaining": "{0} remaining",
- "LabelTimeToShift": "Time to shift in seconds",
- "LabelTitle": "Title",
- "LabelToolsEmbedMetadata": "Embed Metadata",
- "LabelToolsEmbedMetadataDescription": "Embed metadata into audio files including cover image and chapters.",
- "LabelToolsMakeM4b": "Make M4B Audiobook File",
- "LabelToolsMakeM4bDescription": "Generate a .M4B audiobook file with embedded metadata, cover image, and chapters.",
- "LabelToolsSplitM4b": "Split M4B to MP3's",
- "LabelToolsSplitM4bDescription": "Create MP3's from an M4B split by chapters with embedded metadata, cover image, and chapters.",
- "LabelTotalDuration": "Total Duration",
- "LabelTotalTimeListened": "Total Time Listened",
- "LabelTrackFromFilename": "Track from Filename",
- "LabelTrackFromMetadata": "Track from Metadata",
- "LabelTracks": "Tracks",
- "LabelTracksMultiTrack": "Multi-track",
- "LabelTracksNone": "No tracks",
- "LabelTracksSingleTrack": "Single-track",
- "LabelType": "Type",
- "LabelUnabridged": "Unabridged",
- "LabelUndo": "Undo",
- "LabelUnknown": "Unknown",
- "LabelUpdateCover": "Update Cover",
- "LabelUpdateCoverHelp": "Allow overwriting of existing covers for the selected books when a match is located",
- "LabelUpdatedAt": "Updated At",
- "LabelUpdateDetails": "Update Details",
- "LabelUpdateDetailsHelp": "Allow overwriting of existing details for the selected books when a match is located",
- "LabelUploaderDragAndDrop": "Drag & drop files or folders",
- "LabelUploaderDropFiles": "Drop files",
- "LabelUploaderItemFetchMetadataHelp": "Automatically fetch title, author, and series",
- "LabelUseChapterTrack": "Use chapter track",
- "LabelUseFullTrack": "Use full track",
- "LabelUser": "User",
- "LabelUsername": "Username",
- "LabelValue": "Value",
- "LabelVersion": "Version",
- "LabelViewBookmarks": "View bookmarks",
- "LabelViewChapters": "View chapters",
- "LabelViewQueue": "View player queue",
- "LabelVolume": "Volume",
- "LabelWeekdaysToRun": "Weekdays to run",
- "LabelYearReviewHide": "Hide Year in Review",
- "LabelYearReviewShow": "See Year in Review",
- "LabelYourAudiobookDuration": "Your audiobook duration",
- "LabelYourBookmarks": "Your Bookmarks",
- "LabelYourPlaylists": "Your Playlists",
- "LabelYourProgress": "Your Progress",
- "MessageAddToPlayerQueue": "Add to player queue",
- "MessageAppriseDescription": "To use this feature you will need to have an instance of Apprise API running or an api that will handle those same requests. The Apprise API Url should be the full URL path to send the notification, e.g., if your API instance is served at http://192.168.1.1:8337 then you would put http://192.168.1.1:8337/notify.",
- "MessageBackupsDescription": "Backups include users, user progress, library item details, server settings, and images stored in /metadata/items & /metadata/authors. Backups do not include any files stored in your library folders.",
- "MessageBatchQuickMatchDescription": "Quick Match will attempt to add missing covers and metadata for the selected items. Enable the options below to allow Quick Match to overwrite existing covers and/or metadata.",
- "MessageBookshelfNoCollections": "You haven't made any collections yet",
"MessageBookshelfNoResultsForFilter": "No Results for filter \"{0}: {1}\"",
- "MessageBookshelfNoRSSFeeds": "No RSS feeds are open",
- "MessageBookshelfNoSeries": "You have no series",
- "MessageChapterEndIsAfter": "Chapter end is after the end of your audiobook",
- "MessageChapterErrorFirstNotZero": "First chapter must start at 0",
- "MessageChapterErrorStartGteDuration": "Invalid start time must be less than audiobook duration",
- "MessageChapterErrorStartLtPrev": "Invalid start time must be greater than or equal to previous chapter start time",
- "MessageChapterStartIsAfter": "Chapter start is after the end of your audiobook",
- "MessageCheckingCron": "Checking cron...",
- "MessageConfirmCloseFeed": "Are you sure you want to close this feed?",
- "MessageConfirmDeleteBackup": "Are you sure you want to delete backup for {0}?",
- "MessageConfirmDeleteFile": "This will delete the file from your file system. Are you sure?",
- "MessageConfirmDeleteLibrary": "Are you sure you want to permanently delete library \"{0}\"?",
- "MessageConfirmDeleteLibraryItem": "This will delete the library item from the database and your file system. Are you sure?",
- "MessageConfirmDeleteLibraryItems": "This will delete {0} library items from the database and your file system. Are you sure?",
- "MessageConfirmDeleteSession": "Are you sure you want to delete this session?",
- "MessageConfirmForceReScan": "Are you sure you want to force re-scan?",
- "MessageConfirmMarkAllEpisodesFinished": "Are you sure you want to mark all episodes as finished?",
- "MessageConfirmMarkAllEpisodesNotFinished": "Are you sure you want to mark all episodes as not finished?",
- "MessageConfirmMarkSeriesFinished": "Are you sure you want to mark all books in this series as finished?",
- "MessageConfirmMarkSeriesNotFinished": "Are you sure you want to mark all books in this series as not finished?",
- "MessageConfirmPurgeCache": "Purge cache will delete the entire directory at /metadata/cache.
Are you sure you want to remove the cache directory?",
- "MessageConfirmQuickEmbed": "Warning! Quick embed will not backup your audio files. Make sure that you have a backup of your audio files.
Would you like to continue?",
- "MessageConfirmRemoveAllChapters": "Are you sure you want to remove all chapters?",
- "MessageConfirmRemoveAuthor": "Are you sure you want to remove author \"{0}\"?",
- "MessageConfirmRemoveCollection": "Are you sure you want to remove collection \"{0}\"?",
- "MessageConfirmRemoveEpisode": "Are you sure you want to remove episode \"{0}\"?",
- "MessageConfirmRemoveEpisodes": "Are you sure you want to remove {0} episodes?",
- "MessageConfirmRemoveListeningSessions": "Are you sure you want to remove {0} listening sessions?",
- "MessageConfirmRemoveNarrator": "Are you sure you want to remove narrator \"{0}\"?",
- "MessageConfirmRemovePlaylist": "Are you sure you want to remove your playlist \"{0}\"?",
- "MessageConfirmRenameGenre": "Are you sure you want to rename genre \"{0}\" to \"{1}\" for all items?",
- "MessageConfirmRenameGenreMergeNote": "Note: This genre already exists so they will be merged.",
- "MessageConfirmRenameGenreWarning": "Warning! A similar genre with a different casing already exists \"{0}\".",
- "MessageConfirmRenameTag": "Are you sure you want to rename tag \"{0}\" to \"{1}\" for all items?",
- "MessageConfirmRenameTagMergeNote": "Note: This tag already exists so they will be merged.",
- "MessageConfirmRenameTagWarning": "Warning! A similar tag with a different casing already exists \"{0}\".",
- "MessageConfirmReScanLibraryItems": "Are you sure you want to re-scan {0} items?",
- "MessageConfirmSendEbookToDevice": "Are you sure you want to send {0} ebook \"{1}\" to device \"{2}\"?",
- "MessageDownloadingEpisode": "Downloading episode",
- "MessageDragFilesIntoTrackOrder": "Drag files into correct track order",
- "MessageEmbedFinished": "Embed Finished!",
- "MessageEpisodesQueuedForDownload": "{0} Episode(s) queued for download",
- "MessageEreaderDevices": "To ensure delivery of ebooks, you may need to add the above email address as a valid sender for each device listed below.",
- "MessageFeedURLWillBe": "Feed URL will be {0}",
- "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.",
- "MessageImportantNotice": "Important Notice!",
- "MessageInsertChapterBelow": "Insert chapter below",
- "MessageItemsSelected": "{0} Items Selected",
- "MessageItemsUpdated": "{0} Items Updated",
- "MessageJoinUsOn": "Join us on",
- "MessageListeningSessionsInTheLastYear": "{0} listening sessions in the last year",
- "MessageLoading": "Loading...",
- "MessageLoadingFolders": "Loading folders...",
- "MessageLogsDescription": "Logs are stored in /metadata/logs as JSON files. Crash logs are stored in /metadata/logs/crash_logs.txt.",
- "MessageM4BFailed": "M4B Failed!",
- "MessageM4BFinished": "M4B Finished!",
- "MessageMapChapterTitles": "Map chapter titles to your existing audiobook chapters without adjusting timestamps",
- "MessageMarkAllEpisodesFinished": "Mark all episodes finished",
- "MessageMarkAllEpisodesNotFinished": "Mark all episodes not finished",
- "MessageMarkAsFinished": "Mark as Finished",
- "MessageMarkAsNotFinished": "Mark as Not Finished",
- "MessageMatchBooksDescription": "will attempt to match books in the library with a book from the selected search provider and fill in empty details and cover art. Does not overwrite details.",
- "MessageNoAudioTracks": "No audio tracks",
- "MessageNoAuthors": "No Authors",
- "MessageNoBackups": "No Backups",
- "MessageNoBookmarks": "No Bookmarks",
- "MessageNoChapters": "No Chapters",
- "MessageNoCollections": "No Collections",
- "MessageNoCoversFound": "No Covers Found",
- "MessageNoDescription": "No description",
- "MessageNoDownloadsInProgress": "No downloads currently in progress",
- "MessageNoDownloadsQueued": "No downloads queued",
- "MessageNoEpisodeMatchesFound": "No episode matches found",
- "MessageNoEpisodes": "No Episodes",
- "MessageNoFoldersAvailable": "No Folders Available",
- "MessageNoGenres": "No Genres",
- "MessageNoIssues": "No Issues",
- "MessageNoItems": "No Items",
- "MessageNoItemsFound": "No items found",
- "MessageNoListeningSessions": "No Listening Sessions",
- "MessageNoLogs": "No Logs",
- "MessageNoMediaProgress": "No Media Progress",
- "MessageNoNotifications": "No Notifications",
- "MessageNoPodcastsFound": "No podcasts found",
- "MessageNoResults": "No Results",
- "MessageNoSearchResultsFor": "No search results for \"{0}\"",
- "MessageNoSeries": "No Series",
- "MessageNoTags": "No Tags",
- "MessageNoTasksRunning": "No Tasks Running",
- "MessageNotYetImplemented": "Not yet implemented",
- "MessageNoUpdateNecessary": "No update necessary",
- "MessageNoUpdatesWereNecessary": "No updates were necessary",
- "MessageNoUserPlaylists": "You have no playlists",
- "MessageOr": "or",
- "MessagePauseChapter": "Pause chapter playback",
- "MessagePlayChapter": "Listen to beginning of chapter",
- "MessagePlaylistCreateFromCollection": "Create playlist from collection",
- "MessagePodcastHasNoRSSFeedForMatching": "Podcast has no RSS feed url to use for matching",
- "MessageQuickMatchDescription": "Populate empty item details & cover with first match result from '{0}'. Does not overwrite details unless 'Prefer matched metadata' server setting is enabled.",
- "MessageRemoveChapter": "Remove chapter",
- "MessageRemoveEpisodes": "Remove {0} episode(s)",
- "MessageRemoveFromPlayerQueue": "Remove from player queue",
- "MessageRemoveUserWarning": "Are you sure you want to permanently delete user \"{0}\"?",
- "MessageReportBugsAndContribute": "Report bugs, request features, and contribute on",
- "MessageResetChaptersConfirm": "Are you sure you want to reset chapters and undo the changes you made?",
- "MessageRestoreBackupConfirm": "Are you sure you want to restore the backup created on",
- "MessageRestoreBackupWarning": "Restoring a backup will overwrite the entire database located at /config and cover images in /metadata/items & /metadata/authors.
Backups do not modify any files in your library folders. If you have enabled server settings to store cover art and metadata in your library folders then those are not backed up or overwritten.
All clients using your server will be automatically refreshed.",
- "MessageSearchResultsFor": "Search results for",
- "MessageSelected": "{0} selected",
- "MessageServerCouldNotBeReached": "Server could not be reached",
- "MessageSetChaptersFromTracksDescription": "Set chapters using each audio file as a chapter and chapter title as the audio file name",
- "MessageStartPlaybackAtTime": "Start playback for \"{0}\" at {1}?",
- "MessageThinking": "Thinking...",
- "MessageUploaderItemFailed": "Failed to upload",
- "MessageUploaderItemSuccess": "Successfully Uploaded!",
- "MessageUploading": "Uploading...",
- "MessageValidCronExpression": "Valid cron expression",
- "MessageWatcherIsDisabledGlobally": "Watcher is disabled globally in server settings",
- "MessageXLibraryIsEmpty": "{0} Library is empty!",
- "MessageYourAudiobookDurationIsLonger": "Your audiobook duration is longer than the duration found",
- "MessageYourAudiobookDurationIsShorter": "Your audiobook duration is shorter than duration found",
- "NoteChangeRootPassword": "Root user is the only user that can have an empty password",
- "NoteChapterEditorTimes": "Note: First chapter start time must remain at 0:00 and the last chapter start time cannot exceed this audiobooks duration.",
- "NoteFolderPicker": "Note: folders already mapped will not be shown",
- "NoteRSSFeedPodcastAppsHttps": "Warning: Most podcast apps will require the RSS feed URL is using HTTPS",
- "NoteRSSFeedPodcastAppsPubDate": "Warning: 1 or more of your episodes do not have a Pub Date. Some podcast apps require this.",
- "NoteUploaderFoldersWithMediaFiles": "Folders with media files will be handled as separate library items.",
- "NoteUploaderOnlyAudioFiles": "If uploading only audio files then each audio file will be handled as a separate audiobook.",
- "NoteUploaderUnsupportedFiles": "Unsupported files are ignored. When choosing or dropping a folder, other files that are not in an item folder are ignored.",
- "PlaceholderNewCollection": "New collection name",
- "PlaceholderNewFolderPath": "New folder path",
- "PlaceholderNewPlaylist": "New playlist name",
- "PlaceholderSearch": "Search..",
- "PlaceholderSearchEpisode": "Search episode..",
- "ToastAccountUpdateFailed": "Failed to update account",
- "ToastAccountUpdateSuccess": "Account updated",
- "ToastAuthorImageRemoveFailed": "Failed to remove image",
- "ToastAuthorImageRemoveSuccess": "Author image removed",
- "ToastAuthorUpdateFailed": "Failed to update author",
- "ToastAuthorUpdateMerged": "Author merged",
- "ToastAuthorUpdateSuccess": "Author updated",
- "ToastAuthorUpdateSuccessNoImageFound": "Author updated (no image found)",
- "ToastBackupCreateFailed": "Failed to create backup",
- "ToastBackupCreateSuccess": "Backup created",
- "ToastBackupDeleteFailed": "Failed to delete backup",
- "ToastBackupDeleteSuccess": "Backup deleted",
- "ToastBackupRestoreFailed": "Failed to restore backup",
- "ToastBackupUploadFailed": "Failed to upload backup",
- "ToastBackupUploadSuccess": "Backup uploaded",
- "ToastBatchUpdateFailed": "Batch update failed",
- "ToastBatchUpdateSuccess": "Batch update success",
- "ToastBookmarkCreateFailed": "Failed to create bookmark",
- "ToastBookmarkCreateSuccess": "Bookmark added",
- "ToastBookmarkRemoveFailed": "Failed to remove bookmark",
- "ToastBookmarkRemoveSuccess": "Bookmark removed",
- "ToastBookmarkUpdateFailed": "Failed to update bookmark",
- "ToastBookmarkUpdateSuccess": "Bookmark updated",
- "ToastCachePurgeFailed": "Failed to purge cache",
- "ToastCachePurgeSuccess": "Cache purged successfully",
- "ToastChaptersHaveErrors": "Chapters have errors",
- "ToastChaptersMustHaveTitles": "Chapters must have titles",
- "ToastCollectionItemsRemoveFailed": "Failed to remove item(s) from collection",
- "ToastCollectionItemsRemoveSuccess": "Item(s) removed from collection",
- "ToastCollectionRemoveFailed": "Failed to remove collection",
- "ToastCollectionRemoveSuccess": "Collection removed",
- "ToastCollectionUpdateFailed": "Failed to update collection",
- "ToastCollectionUpdateSuccess": "Collection updated",
- "ToastDeleteFileFailed": "Failed to delete file",
- "ToastDeleteFileSuccess": "File deleted",
- "ToastFailedToLoadData": "Failed to load data",
- "ToastItemCoverUpdateFailed": "Failed to update item cover",
- "ToastItemCoverUpdateSuccess": "Item cover updated",
- "ToastItemDetailsUpdateFailed": "Failed to update item details",
- "ToastItemDetailsUpdateSuccess": "Item details updated",
- "ToastItemDetailsUpdateUnneeded": "No updates needed for item details",
- "ToastItemMarkedAsFinishedFailed": "Failed to mark as Finished",
- "ToastItemMarkedAsFinishedSuccess": "Item marked as Finished",
- "ToastItemMarkedAsNotFinishedFailed": "Failed to mark as Not Finished",
- "ToastItemMarkedAsNotFinishedSuccess": "Item marked as Not Finished",
- "ToastLibraryCreateFailed": "Failed to create library",
- "ToastLibraryCreateSuccess": "Library \"{0}\" created",
- "ToastLibraryDeleteFailed": "Failed to delete library",
- "ToastLibraryDeleteSuccess": "Library deleted",
- "ToastLibraryScanFailedToStart": "Failed to start scan",
- "ToastLibraryScanStarted": "Library scan started",
- "ToastLibraryUpdateFailed": "Failed to update library",
- "ToastLibraryUpdateSuccess": "Library \"{0}\" updated",
- "ToastPlaylistCreateFailed": "Failed to create playlist",
- "ToastPlaylistCreateSuccess": "Playlist created",
- "ToastPlaylistRemoveFailed": "Failed to remove playlist",
- "ToastPlaylistRemoveSuccess": "Playlist removed",
- "ToastPlaylistUpdateFailed": "Failed to update playlist",
- "ToastPlaylistUpdateSuccess": "Playlist updated",
- "ToastPodcastCreateFailed": "Failed to create podcast",
- "ToastPodcastCreateSuccess": "Podcast created successfully",
- "ToastRemoveItemFromCollectionFailed": "Failed to remove item from collection",
- "ToastRemoveItemFromCollectionSuccess": "Item removed from collection",
- "ToastRSSFeedCloseFailed": "Failed to close RSS feed",
- "ToastRSSFeedCloseSuccess": "RSS feed closed",
- "ToastSendEbookToDeviceFailed": "Failed to Send Ebook to device",
- "ToastSendEbookToDeviceSuccess": "Ebook sent to device \"{0}\"",
- "ToastSeriesUpdateFailed": "Series update failed",
- "ToastSeriesUpdateSuccess": "Series update success",
- "ToastServerSettingsUpdateFailed": "Failed to update server settings",
- "ToastServerSettingsUpdateSuccess": "Server settings updated",
- "ToastSessionDeleteFailed": "Failed to delete session",
- "ToastSessionDeleteSuccess": "Session deleted",
- "ToastSocketConnected": "Socket connected",
- "ToastSocketDisconnected": "Socket disconnected",
- "ToastSocketFailedToConnect": "Socket failed to connect",
- "ToastSortingPrefixesEmptyError": "Must have at least 1 sorting prefix",
- "ToastSortingPrefixesUpdateFailed": "Failed to update sorting prefixes",
- "ToastSortingPrefixesUpdateSuccess": "Sorting prefixes updated ({0} items)",
- "ToastUserDeleteFailed": "Failed to delete user",
- "ToastUserDeleteSuccess": "User deleted"
-}
\ No newline at end of file
+ "ToastSendEbookToDeviceFailed": "Failed to Send Ebook to device"
+}
diff --git a/client/strings/he.json b/client/strings/he.json
index 7d17a2a88..9f7822b9b 100644
--- a/client/strings/he.json
+++ b/client/strings/he.json
@@ -9,6 +9,7 @@
"ButtonApply": "החל",
"ButtonApplyChapters": "החל פרקים",
"ButtonAuthors": "יוצרים",
+ "ButtonBack": "חזור",
"ButtonBrowseForFolder": "עיין בתיקייה",
"ButtonCancel": "בטל",
"ButtonCancelEncode": "בטל קידוד",
@@ -56,13 +57,13 @@
"ButtonPreviousChapter": "פרק קודם",
"ButtonPurgeAllCache": "נקה את כל המטמון",
"ButtonPurgeItemsCache": "נקה את מטמון הפריטים",
- "ButtonPurgeMediaProgress": "נקה את ההתקדמות במדיה",
"ButtonQueueAddItem": "הוסף לתור",
"ButtonQueueRemoveItem": "הסר מהתור",
"ButtonQuickMatch": "התאמה מהירה",
+ "ButtonReScan": "סרוק מחדש",
"ButtonRead": "קרא",
- "ButtonReadLess": "Read less",
- "ButtonReadMore": "Read more",
+ "ButtonReadLess": "קרא פחות",
+ "ButtonReadMore": "קרא יותר",
"ButtonRefresh": "רענן",
"ButtonRemove": "הסר",
"ButtonRemoveAll": "הסר הכל",
@@ -70,7 +71,6 @@
"ButtonRemoveFromContinueListening": "הסר מ- המשך האזנה",
"ButtonRemoveFromContinueReading": "הסר מ- המשך קריאה",
"ButtonRemoveSeriesFromContinueSeries": "הסר סדרה מ- המשך סדרה",
- "ButtonReScan": "סרוק מחדש",
"ButtonReset": "איפוס",
"ButtonResetToDefault": "איפוס לברירת המחדל",
"ButtonRestore": "שחזר",
@@ -104,8 +104,8 @@
"HeaderAccount": "חשבון",
"HeaderAdvanced": "מתקדם",
"HeaderAppriseNotificationSettings": "הגדרות התראות של Apprise",
- "HeaderAudiobookTools": "כלים לניהול קבצי ספרים קוליים",
"HeaderAudioTracks": "רצועות קול",
+ "HeaderAudiobookTools": "כלים לניהול קבצי ספרים קוליים",
"HeaderAuthentication": "אימות",
"HeaderBackups": "גיבויים",
"HeaderChangePassword": "שנה סיסמה",
@@ -115,6 +115,7 @@
"HeaderCollectionItems": "פריטי אוסף",
"HeaderCover": "כריכה",
"HeaderCurrentDownloads": "הורדות נוכחיות",
+ "HeaderCustomMessageOnLogin": "הודעה מותאמת אישית בהתחברות",
"HeaderCustomMetadataProviders": "ספקי מטא-נתונים מותאמים אישית",
"HeaderDetails": "פרטים",
"HeaderDownloadQueue": "תור הורדה",
@@ -157,11 +158,11 @@
"HeaderPlaylistItems": "פריטי רשימת השמעה",
"HeaderPodcastsToAdd": "פודקאסטים להוספה",
"HeaderPreviewCover": "תצוגה מקדימה של כריכה",
- "HeaderRemoveEpisode": "הסר פרק",
- "HeaderRemoveEpisodes": "הסר {0} פרקים",
"HeaderRSSFeedGeneral": "פרטי ערוץ RSS",
"HeaderRSSFeedIsOpen": "ערוץ RSS פתוח",
"HeaderRSSFeeds": "ערוצי RSS",
+ "HeaderRemoveEpisode": "הסר פרק",
+ "HeaderRemoveEpisodes": "הסר {0} פרקים",
"HeaderSavedMediaProgress": "התקדמות מדיה שמורה",
"HeaderSchedule": "תיזמון",
"HeaderScheduleLibraryScans": "קבע סריקות ספרייה אוטומטיות",
@@ -189,20 +190,16 @@
"HeaderYearReview": "שנת {0} בסקירה",
"HeaderYourStats": "הסטטיסטיקות שלך",
"LabelAbridged": "מקוצר",
- "LabelAbridgedChecked": "Abridged (checked)",
- "LabelAbridgedUnchecked": "Unabridged (unchecked)",
- "LabelAccessibleBy": "Accessible by",
"LabelAccountType": "סוג חשבון",
"LabelAccountTypeAdmin": "מנהל",
"LabelAccountTypeGuest": "אורח",
"LabelAccountTypeUser": "משתמש",
"LabelActivity": "פעילות",
- "LabelAdded": "נוסף",
- "LabelAddedAt": "נוסף בתאריך",
"LabelAddToCollection": "הוסף לאוסף",
"LabelAddToCollectionBatch": "הוסף {0} ספרים לאוסף",
"LabelAddToPlaylist": "הוסף לרשימת השמעה",
"LabelAddToPlaylistBatch": "הוסף {0} פריטים לרשימת השמעה",
+ "LabelAddedAt": "נוסף בתאריך",
"LabelAdminUsersOnly": "רק מנהלים",
"LabelAll": "הכל",
"LabelAllUsers": "כל המשתמשים",
@@ -232,15 +229,13 @@
"LabelBitrate": "קצב סיביות",
"LabelBooks": "ספרים",
"LabelButtonText": "טקסט לחצן",
- "LabelByAuthor": "by {0}",
"LabelChangePassword": "שינוי סיסמה",
"LabelChannels": "ערוצים",
+ "LabelChapterTitle": "כותרת הפרק",
"LabelChapters": "פרקים",
"LabelChaptersFound": "פרקים שנמצאו",
- "LabelChapterTitle": "כותרת הפרק",
"LabelClickForMoreInfo": "לחץ למידע נוסף",
"LabelClosePlayer": "סגור נגן",
- "LabelCodec": "Codec",
"LabelCollapseSeries": "צמצום סדרה",
"LabelCollection": "אוסף",
"LabelCollections": "אוספים",
@@ -252,11 +247,8 @@
"LabelCover": "כריכה",
"LabelCoverImageURL": "כתובת התמונה ברשת",
"LabelCreatedAt": "נוצר בתאריך",
- "LabelCronExpression": "Cron Expression",
"LabelCurrent": "נוכחי",
"LabelCurrently": "כעת:",
- "LabelCustomCronExpression": "Custom Cron Expression:",
- "LabelDatetime": "Datetime",
"LabelDeleteFromFileSystemCheckbox": "מחיקה מהמערכת הקבצים (הסר סימון למחיקה רק ממסד הנתונים)",
"LabelDescription": "תיאור",
"LabelDeselectAll": "הסר בחירת כל הפריטים",
@@ -270,9 +262,6 @@
"LabelDownload": "הורד",
"LabelDownloadNEpisodes": "הורד {0} פרקים",
"LabelDuration": "משך",
- "LabelDurationComparisonExactMatch": "(exact match)",
- "LabelDurationComparisonLonger": "({0} longer)",
- "LabelDurationComparisonShorter": "({0} shorter)",
"LabelDurationFound": "משך נמצא:",
"LabelEbook": "ספר אלקטרוני",
"LabelEbooks": "ספרים אלקטרוניים",
@@ -290,8 +279,6 @@
"LabelEpisodeType": "סוג הפרק",
"LabelExample": "דוגמה",
"LabelExplicit": "בוטה",
- "LabelExplicitChecked": "Explicit (checked)",
- "LabelExplicitUnchecked": "Not Explicit (unchecked)",
"LabelFeedURL": "כתובת ערוץ",
"LabelFetchingMetadata": "מושך מטא-נתונים",
"LabelFile": "קובץ",
@@ -319,9 +306,9 @@
"LabelHour": "שעה",
"LabelIcon": "סמל",
"LabelImageURLFromTheWeb": "כתובת התמונה מהרשת",
+ "LabelInProgress": "בתהליך",
"LabelIncludeInTracklist": "כלול ברשימת השמעה",
"LabelIncomplete": "לא הושלם",
- "LabelInProgress": "בתהליך",
"LabelInterval": "מרווח",
"LabelIntervalCustomDailyWeekly": "מותאם אישית יומי/שבועי",
"LabelIntervalEvery12Hours": "כל 12 שעות",
@@ -360,10 +347,10 @@
"LabelMatchExistingUsersByDescription": "משמש לחיבור משתמשים קיימים. לאחר החיבור, המשתמשים יותאמו לפי זיהוי ייחודי מספק ה-SSO שלך",
"LabelMediaPlayer": "נגן מדיה",
"LabelMediaType": "סוג מדיה",
- "LabelMetadataOrderOfPrecedenceDescription": "מקורות המטא-נתונים עם עדיפות גבוהה יחליפו מקורות עם עדיפות נמוכה יותר",
- "LabelMetadataProvider": "ספק מטא-נתונים",
"LabelMetaTag": "תג מטא",
"LabelMetaTags": "תגי מטא",
+ "LabelMetadataOrderOfPrecedenceDescription": "מקורות המטא-נתונים עם עדיפות גבוהה יחליפו מקורות עם עדיפות נמוכה יותר",
+ "LabelMetadataProvider": "ספק מטא-נתונים",
"LabelMinute": "דקה",
"LabelMissing": "חסר",
"LabelMissingEbook": "אין ספר אלקטרוני",
@@ -376,29 +363,26 @@
"LabelNarrator": "מספר",
"LabelNarrators": "מספרים",
"LabelNew": "חדש",
+ "LabelNewPassword": "סיסמה חדשה",
"LabelNewestAuthors": "הסופרים החדשים ביותר",
"LabelNewestEpisodes": "הפרקים החדשים ביותר",
- "LabelNewPassword": "סיסמה חדשה",
"LabelNextBackupDate": "תאריך הגיבוי הבא",
"LabelNextScheduledRun": "הרצה מתוזמנת הבאה",
"LabelNoEpisodesSelected": "לא נבחרו פרקים",
- "LabelNotes": "הערות",
"LabelNotFinished": "לא הושלם",
+ "LabelNotStarted": "לא התחיל",
+ "LabelNotes": "הערות",
"LabelNotificationAppriseURL": "כתובות Apprise",
"LabelNotificationAvailableVariables": "משתנים זמינים",
"LabelNotificationBodyTemplate": "תבנית גוף",
"LabelNotificationEvent": "אירוע התראה",
+ "LabelNotificationTitleTemplate": "תבנית כותרת",
"LabelNotificationsMaxFailedAttempts": "מספר הניסיונות הנכשלים המרבי",
"LabelNotificationsMaxFailedAttemptsHelp": "ההתראות מושבתות לאחר שהן נכשלות לשלוח מספר פעמים זה",
"LabelNotificationsMaxQueueSize": "גודל התור המרבי לאירועי התראה",
"LabelNotificationsMaxQueueSizeHelp": "האירועים מוגבלים לשליחה אחת לשנייה. האירועים יתעלמו אם התור מלא. הגדרה זו נועדה למנוע ספאם התראות.",
- "LabelNotificationTitleTemplate": "תבנית כותרת",
- "LabelNotStarted": "לא התחיל",
"LabelNumberOfBooks": "מספר הספרים",
"LabelNumberOfEpisodes": "מספר הפרקים",
- "LabelOpenIDAdvancedPermsClaimDescription": "Name of the OpenID claim that contains advanced permissions for user actions within the application which will apply to non-admin roles (if configured). If the claim is missing from the response, access to ABS will be denied. If a single option is missing, it will be treated as false. Ensure the identity provider's claim matches the expected structure:",
- "LabelOpenIDClaims": "Leave the following options empty to disable advanced group and permissions assignment, automatically assigning 'User' group then.",
- "LabelOpenIDGroupClaimDescription": "Name of the OpenID claim that contains a list of the user's groups. Commonly referred to as groups. If configured, the application will automatically assign roles based on the user's group memberships, provided that these groups are named case-insensitively 'admin', 'user', or 'guest' in the claim. The claim should contain a list, and if a user belongs to multiple groups, the application will assign the role corresponding to the highest level of access. If no group matches, access will be denied.",
"LabelOpenRSSFeed": "פתח ערוץ RSS",
"LabelOverwrite": "לשכפל",
"LabelPassword": "סיסמה",
@@ -412,12 +396,12 @@
"LabelPermissionsUpload": "מותר להעלות",
"LabelPersonalYearReview": "השנה שלך בסקירה ({0})",
"LabelPhotoPathURL": "נתיב/URL לתמונה",
- "LabelPlaylists": "רשימות השמעה",
"LabelPlayMethod": "שיטת הפעלה",
+ "LabelPlaylists": "רשימות השמעה",
"LabelPodcast": "פודקאסט",
- "LabelPodcasts": "פודקאסטים",
"LabelPodcastSearchRegion": "אזור חיפוש פודקאסט",
"LabelPodcastType": "סוג פודקאסט",
+ "LabelPodcasts": "פודקאסטים",
"LabelPort": "פורט",
"LabelPrefixesToIgnore": "קידומות להתעלמות (מתעלם מאותיות גדולות/קטנות)",
"LabelPreventIndexing": "מנע רישום של הערוץ שלך על ידי ספריות אייטונס וגוגל פודקאסט",
@@ -425,30 +409,29 @@
"LabelProgress": "התקדמות",
"LabelProvider": "ספק",
"LabelPubDate": "תאריך פרסום",
- "LabelPublisher": "מוציא לאור",
"LabelPublishYear": "שנת הפרסום",
- "LabelRead": "קריאה",
- "LabelReadAgain": "קרא שוב",
- "LabelReadEbookWithoutProgress": "קרא/י ספר אלקטרוני ללא שמירת התקדמות",
- "LabelRecentlyAdded": "נוסף לאחרונה",
- "LabelRecentSeries": "סדרות אחרונות",
- "LabelRecommended": "מומלץ",
- "LabelRedo": "עשה שוב",
- "LabelRegion": "אזור",
- "LabelReleaseDate": "תאריך הוצאה לאור",
- "LabelRemoveCover": "הסר כריכה",
- "LabelRowsPerPage": "שורות לעמוד",
+ "LabelPublisher": "מוציא לאור",
"LabelRSSFeedCustomOwnerEmail": "אימייל בעלים מותאם אישית",
"LabelRSSFeedCustomOwnerName": "שם בעלים מותאם אישית",
"LabelRSSFeedOpen": "פתח ערוץ RSS",
"LabelRSSFeedPreventIndexing": "מנע רישום",
"LabelRSSFeedSlug": "Slug של ערוץ ה-RSS",
"LabelRSSFeedURL": "כתובת ערוץ ה-RSS",
+ "LabelRead": "קריאה",
+ "LabelReadAgain": "קרא שוב",
+ "LabelReadEbookWithoutProgress": "קרא/י ספר אלקטרוני ללא שמירת התקדמות",
+ "LabelRecentSeries": "סדרות אחרונות",
+ "LabelRecentlyAdded": "נוסף לאחרונה",
+ "LabelRecommended": "מומלץ",
+ "LabelRedo": "עשה שוב",
+ "LabelRegion": "אזור",
+ "LabelReleaseDate": "תאריך הוצאה לאור",
+ "LabelRemoveCover": "הסר כריכה",
+ "LabelRowsPerPage": "שורות לעמוד",
"LabelSearchTerm": "מונח חיפוש",
"LabelSearchTitle": "כותרת חיפוש",
"LabelSearchTitleOrASIN": "כותרת חיפוש או ASIN",
"LabelSeason": "עונה",
- "LabelSelectAll": "Select all",
"LabelSelectAllEpisodes": "בחר את כל הפרקים",
"LabelSelectEpisodesShowing": "בחר {0} פרקים המוצגים",
"LabelSelectUsers": "בחר משתמשים",
@@ -471,8 +454,6 @@
"LabelSettingsEnableWatcher": "הפעל עוקב",
"LabelSettingsEnableWatcherForLibrary": "הפעל עוקב תיקייה עבור ספרייה",
"LabelSettingsEnableWatcherHelp": "מאפשר הוספת/עדכון אוטומטי של פריטים כאשר שינויי קבצים זוהים. *דורש איתחול שרת",
- "LabelSettingsEpubsAllowScriptedContent": "Allow scripted content in epubs",
- "LabelSettingsEpubsAllowScriptedContentHelp": "Allow epub files to execute scripts. It is recommended to keep this setting disabled unless you trust the source of the epub files.",
"LabelSettingsExperimentalFeatures": "תכונות ניסיוניות",
"LabelSettingsExperimentalFeaturesHelp": "תכונות בפיתוח שדורשות משובך ובדיקה. לחץ לפתיחת דיון ב-GitHub.",
"LabelSettingsFindCovers": "מצא כריכות",
@@ -499,14 +480,12 @@
"LabelSettingsStoreMetadataWithItemHelp": "כברירת מחדל, קבצי מטה-נתונים מאוחסנים ב- /metadata/items, הפעלת ההגדרה תאחסן קבצי מטה-נתונים בתיקיית פריט שלך בספרייה",
"LabelSettingsTimeFormat": "פורמט זמן",
"LabelShowAll": "הצג הכל",
- "LabelShowSeconds": "Show seconds",
"LabelSize": "גודל",
"LabelSleepTimer": "טיימר שינה",
- "LabelSlug": "Slug",
"LabelStart": "התחלה",
+ "LabelStartTime": "זמן התחלה",
"LabelStarted": "התחיל",
"LabelStartedAt": "התחיל ב",
- "LabelStartTime": "זמן התחלה",
"LabelStatsAudioTracks": "רצועות שמע",
"LabelStatsAuthors": "מחברים",
"LabelStatsBestDay": "היום הטוב ביותר",
@@ -562,9 +541,9 @@
"LabelUnknown": "לא ידוע",
"LabelUpdateCover": "עדכן כריכה",
"LabelUpdateCoverHelp": "אפשר החלפה של כריכות קיימות עבור הספרים הנבחרים כאשר נמצאה התאמה",
- "LabelUpdatedAt": "עודכן ב-",
"LabelUpdateDetails": "עדכון פרטים",
"LabelUpdateDetailsHelp": "אפשר החלפה של פרטים קיימים עבור הספרים הנבחרים כאשר נמצאה התאמה",
+ "LabelUpdatedAt": "עודכן ב-",
"LabelUploaderDragAndDrop": "גרור ושחרר קבצים או תיקיות",
"LabelUploaderDropFiles": "שחרר קבצים",
"LabelUploaderItemFetchMetadataHelp": "משיכת כותרת, סופר וסדרה באופן אוטומטי",
@@ -590,8 +569,8 @@
"MessageBackupsDescription": "גיבויים כוללים משתמשים, התקדמות משתמש, פרטי פריטי ספרייה, הגדרות שרת ותמונות השמורות ב-/metadata/items & /metadata/authors. גיבויים לא כוללים קבצים שמורים בתיקיות הספרייה שלך.",
"MessageBatchQuickMatchDescription": "התאמה מהירה תנסה להוסיף כריכות ומטה-נתונים חסרים עבור הפריטים הנבחרים. הפעל את האפשרויות למטה כדי לאפשר להתאמה מהירה להחליף כריכות קיימות ו/או מטה-נתונים.",
"MessageBookshelfNoCollections": "עדיין לא יצרת אוספים",
- "MessageBookshelfNoResultsForFilter": "אין תוצאות עבור סינון \"{0}: {1}\"",
"MessageBookshelfNoRSSFeeds": "אין ערוצי RSS פתוחים",
+ "MessageBookshelfNoResultsForFilter": "אין תוצאות עבור סינון \"{0}: {1}\"",
"MessageBookshelfNoSeries": "אין לך סדרות",
"MessageChapterEndIsAfter": "זמן סיום הפרק אחרי סיום הספר הקולי שלך",
"MessageChapterErrorFirstNotZero": "הפרק הראשון חייב להתחיל ב-0",
@@ -611,8 +590,8 @@
"MessageConfirmMarkAllEpisodesNotFinished": "האם אתה בטוח שברצונך לסמן את כל הפרקים כלא הסתיימו?",
"MessageConfirmMarkSeriesFinished": "האם אתה בטוח שברצונך לסמן את כל הספרים בסדרה זו כהסתיימו?",
"MessageConfirmMarkSeriesNotFinished": "האם אתה בטוח שברצונך לסמן את כל הספרים בסדרה זו כלא הסתיימו?",
- "MessageConfirmPurgeCache": "Purge cache will delete the entire directory at /metadata/cache.
Are you sure you want to remove the cache directory?",
"MessageConfirmQuickEmbed": "אזהרה! הטמעה מהירה לא תגבה גיבוי של קבצי האודיו שלך. וודא שיש לך גיבוי של קבצי האודיו שלך.
האם ברצונך להמשיך?",
+ "MessageConfirmReScanLibraryItems": "האם אתה בטוח שברצונך לסרוק מחדש {0} פריטים?",
"MessageConfirmRemoveAllChapters": "האם אתה בטוח שברצונך להסיר את כל הפרקים?",
"MessageConfirmRemoveAuthor": "האם אתה בטוח שברצונך להסיר את המחבר \"{0}\"?",
"MessageConfirmRemoveCollection": "האם אתה בטוח שברצונך להסיר אוסף \"{0}\"?",
@@ -627,13 +606,11 @@
"MessageConfirmRenameTag": "האם אתה בטוח שברצונך לשנות את שם התג \"{0}\" ל \"{1}\" עבור כל הפריטים?",
"MessageConfirmRenameTagMergeNote": "הערה: התג זה כבר קיים ולכן הם יתמזגו.",
"MessageConfirmRenameTagWarning": "אזהרה! יש תג דומה עם רישום שונה שכבר קיים \"{0}\".",
- "MessageConfirmReScanLibraryItems": "האם אתה בטוח שברצונך לסרוק מחדש {0} פריטים?",
"MessageConfirmSendEbookToDevice": "האם אתה בטוח שברצונך לשלוח {0} את הספר האלקטרוני \"{1}\" למכשיר \"{2}\"?",
"MessageDownloadingEpisode": "מוריד פרק",
"MessageDragFilesIntoTrackOrder": "גרור קבצים לסדר ההשמעה נכון",
"MessageEmbedFinished": "ההטמעה הושלמה!",
"MessageEpisodesQueuedForDownload": "{0} פרקים בתור להורדה",
- "MessageEreaderDevices": "To ensure delivery of ebooks, you may need to add the above email address as a valid sender for each device listed below.",
"MessageFeedURLWillBe": "כתובת URL של העדכון תהיה {0}",
"MessageFetching": "מושך...",
"MessageForceReScanDescription": "תבוצע סריקה מחדש כמו סריקה חדש מאפס, תגי ID3 של קבצי קול, קבצי OPF, וקבצי טקסט ייסרקו כחדשים.",
@@ -645,7 +622,6 @@
"MessageListeningSessionsInTheLastYear": "{0} מפגשי האזנה בשנה האחרונה",
"MessageLoading": "טוען...",
"MessageLoadingFolders": "טוען תיקיות...",
- "MessageLogsDescription": "Logs are stored in /metadata/logs as JSON files. Crash logs are stored in /metadata/logs/crash_logs.txt.",
"MessageM4BFailed": "M4B נכשל!",
"MessageM4BFinished": "M4B הושלם!",
"MessageMapChapterTitles": "מפה שמות פרקים לפרקי הספר השמורים שלך ללא שינוי תגי זמן",
@@ -681,10 +657,9 @@
"MessageNoSeries": "אין סדרות",
"MessageNoTags": "אין תגיות",
"MessageNoTasksRunning": "אין משימות פעילות",
- "MessageNotYetImplemented": "עדיין לא מיושם",
- "MessageNoUpdateNecessary": "לא נדרש עדכון",
"MessageNoUpdatesWereNecessary": "לא היה צורך בעדכונים",
"MessageNoUserPlaylists": "אין לך רשימות השמעה",
+ "MessageNotYetImplemented": "עדיין לא מיושם",
"MessageOr": "או",
"MessagePauseChapter": "השהה השמעת הפרק",
"MessagePlayChapter": "הקשב לתחילת הפרק",
@@ -726,11 +701,8 @@
"PlaceholderNewPlaylist": "שם רשימת השמעה חדשה",
"PlaceholderSearch": "חיפוש..",
"PlaceholderSearchEpisode": "חיפוש פרק..",
- "ToastAccountUpdateFailed": "עדכון חשבון נכשל",
"ToastAccountUpdateSuccess": "חשבון עודכן בהצלחה",
- "ToastAuthorImageRemoveFailed": "הסרת התמונה של המחבר נכשלה",
"ToastAuthorImageRemoveSuccess": "תמונת המחבר הוסרה בהצלחה",
- "ToastAuthorUpdateFailed": "עדכון המחבר נכשל",
"ToastAuthorUpdateMerged": "המחבר מוזג",
"ToastAuthorUpdateSuccess": "המחבר עודכן בהצלחה",
"ToastAuthorUpdateSuccessNoImageFound": "המחבר עודכן (תמונה לא נמצאה)",
@@ -745,28 +717,15 @@
"ToastBatchUpdateSuccess": "עדכון קבוצתי הצליח",
"ToastBookmarkCreateFailed": "יצירת סימניה נכשלה",
"ToastBookmarkCreateSuccess": "הסימניה נוספה בהצלחה",
- "ToastBookmarkRemoveFailed": "הסרת הסימניה נכשלה",
"ToastBookmarkRemoveSuccess": "הסימניה הוסרה בהצלחה",
- "ToastBookmarkUpdateFailed": "עדכון הסימניה נכשל",
"ToastBookmarkUpdateSuccess": "הסימניה עודכנה בהצלחה",
- "ToastCachePurgeFailed": "Failed to purge cache",
- "ToastCachePurgeSuccess": "Cache purged successfully",
"ToastChaptersHaveErrors": "פרקים מכילים שגיאות",
"ToastChaptersMustHaveTitles": "פרקים חייבים לכלול כותרות",
- "ToastCollectionItemsRemoveFailed": "הסרת הפריט(ים) מהאוסף נכשלה",
"ToastCollectionItemsRemoveSuccess": "הפריט(ים) הוסרו מהאוסף בהצלחה",
- "ToastCollectionRemoveFailed": "מחיקת האוסף נכשלה",
"ToastCollectionRemoveSuccess": "האוסף הוסר בהצלחה",
- "ToastCollectionUpdateFailed": "עדכון האוסף נכשל",
"ToastCollectionUpdateSuccess": "האוסף עודכן בהצלחה",
- "ToastDeleteFileFailed": "Failed to delete file",
- "ToastDeleteFileSuccess": "File deleted",
- "ToastFailedToLoadData": "Failed to load data",
- "ToastItemCoverUpdateFailed": "עדכון כריכת הפריט נכשל",
"ToastItemCoverUpdateSuccess": "כריכת הפריט עודכנה בהצלחה",
- "ToastItemDetailsUpdateFailed": "עדכון פרטי הפריט נכשל",
"ToastItemDetailsUpdateSuccess": "פרטי הפריט עודכנו בהצלחה",
- "ToastItemDetailsUpdateUnneeded": "לא נדרשים עדכונים לפרטי הפריט",
"ToastItemMarkedAsFinishedFailed": "סימון כפריט כהושלם נכשל",
"ToastItemMarkedAsFinishedSuccess": "הפריט סומן כהושלם בהצלחה",
"ToastItemMarkedAsNotFinishedFailed": "סימון כפריט שלא הושלם נכשל",
@@ -777,34 +736,27 @@
"ToastLibraryDeleteSuccess": "הספרייה נמחקה בהצלחה",
"ToastLibraryScanFailedToStart": "הפעלת הסריקה נכשלה",
"ToastLibraryScanStarted": "הסריקה של הספרייה החלה",
- "ToastLibraryUpdateFailed": "עדכון הספרייה נכשל",
"ToastLibraryUpdateSuccess": "הספרייה \"{0}\" עודכנה בהצלחה",
"ToastPlaylistCreateFailed": "יצירת רשימת השמעה נכשלה",
"ToastPlaylistCreateSuccess": "רשימת השמעה נוצרה בהצלחה",
- "ToastPlaylistRemoveFailed": "הסרת רשימת השמעה נכשלה",
"ToastPlaylistRemoveSuccess": "רשימת השמעה הוסרה בהצלחה",
- "ToastPlaylistUpdateFailed": "עדכון רשימת השמעה נכשל",
"ToastPlaylistUpdateSuccess": "רשימת השמעה עודכנה בהצלחה",
"ToastPodcastCreateFailed": "יצירת הפודקאסט נכשלה",
"ToastPodcastCreateSuccess": "הפודקאסט נוצר בהצלחה",
- "ToastRemoveItemFromCollectionFailed": "הסרת הפריט מהאוסף נכשלה",
- "ToastRemoveItemFromCollectionSuccess": "הפריט הוסר מהאוסף בהצלחה",
"ToastRSSFeedCloseFailed": "סגירת ערוץ ה-RSS נכשלה",
"ToastRSSFeedCloseSuccess": "ערוץ ה-RSS נסגר בהצלחה",
+ "ToastRemoveItemFromCollectionFailed": "הסרת הפריט מהאוסף נכשלה",
+ "ToastRemoveItemFromCollectionSuccess": "הפריט הוסר מהאוסף בהצלחה",
"ToastSendEbookToDeviceFailed": "שליחת הספר אל המכשיר נכשלה",
"ToastSendEbookToDeviceSuccess": "הספר נשלח אל המכשיר \"{0}\"",
"ToastSeriesUpdateFailed": "עדכון הסדרה נכשל",
"ToastSeriesUpdateSuccess": "הסדרה עודכנה בהצלחה",
- "ToastServerSettingsUpdateFailed": "Failed to update server settings",
- "ToastServerSettingsUpdateSuccess": "Server settings updated",
+ "ToastServerSettingsUpdateSuccess": "הגדרות שרת עודכנו בהצלחה",
"ToastSessionDeleteFailed": "מחיקת הפעולה נכשלה",
"ToastSessionDeleteSuccess": "הפעולה נמחקה בהצלחה",
"ToastSocketConnected": "קצה תקשורת חובר",
"ToastSocketDisconnected": "קצה תקשורת נותק",
"ToastSocketFailedToConnect": "התחברות קצה התקשורת נכשלה",
- "ToastSortingPrefixesEmptyError": "Must have at least 1 sorting prefix",
- "ToastSortingPrefixesUpdateFailed": "Failed to update sorting prefixes",
- "ToastSortingPrefixesUpdateSuccess": "Sorting prefixes updated ({0} items)",
"ToastUserDeleteFailed": "מחיקת המשתמש נכשלה",
"ToastUserDeleteSuccess": "המשתמש נמחק בהצלחה"
-}
\ No newline at end of file
+}
diff --git a/client/strings/hi.json b/client/strings/hi.json
index 83b7f011a..74c7ac019 100644
--- a/client/strings/hi.json
+++ b/client/strings/hi.json
@@ -1,10 +1,7 @@
{
"ButtonAdd": "जोड़ें",
"ButtonAddChapters": "अध्याय जोड़ें",
- "ButtonAddDevice": "Add Device",
- "ButtonAddLibrary": "Add Library",
"ButtonAddPodcasts": "पॉडकास्ट जोड़ें",
- "ButtonAddUser": "Add User",
"ButtonAddYourFirstLibrary": "अपनी पहली पुस्तकालय जोड़ें",
"ButtonApply": "लागू करें",
"ButtonApplyChapters": "अध्यायों में परिवर्तन लागू करें",
@@ -32,8 +29,6 @@
"ButtonHide": "छुपाएं",
"ButtonHome": "घर",
"ButtonIssues": "समस्याएं",
- "ButtonJumpBackward": "Jump Backward",
- "ButtonJumpForward": "Jump Forward",
"ButtonLatest": "नवीनतम",
"ButtonLibrary": "पुस्तकालय",
"ButtonLogout": "लॉग आउट",
@@ -43,36 +38,25 @@
"ButtonMatchAllAuthors": "सभी लेखकों को तलाश करें",
"ButtonMatchBooks": "संबंधित पुस्तकों का मिलान करें",
"ButtonNevermind": "कोई बात नहीं",
- "ButtonNext": "Next",
- "ButtonNextChapter": "Next Chapter",
"ButtonOk": "ठीक है",
"ButtonOpenFeed": "फ़ीड खोलें",
"ButtonOpenManager": "मैनेजर खोलें",
- "ButtonPause": "Pause",
"ButtonPlay": "चलाएँ",
"ButtonPlaying": "चल रही है",
"ButtonPlaylists": "प्लेलिस्ट्स",
- "ButtonPrevious": "Previous",
- "ButtonPreviousChapter": "Previous Chapter",
"ButtonPurgeAllCache": "सभी Cache मिटाएं",
"ButtonPurgeItemsCache": "आइटम Cache मिटाएं",
- "ButtonPurgeMediaProgress": "अभी तक सुना हुआ सब हटा दे",
"ButtonQueueAddItem": "क़तार में जोड़ें",
"ButtonQueueRemoveItem": "कतार से हटाएं",
"ButtonQuickMatch": "जल्दी से समानता की तलाश करें",
+ "ButtonReScan": "पुन: स्कैन करें",
"ButtonRead": "पढ़ लिया",
- "ButtonReadLess": "Read less",
- "ButtonReadMore": "Read more",
- "ButtonRefresh": "Refresh",
"ButtonRemove": "हटाएं",
"ButtonRemoveAll": "सभी हटाएं",
"ButtonRemoveAllLibraryItems": "पुस्तकालय की सभी आइटम हटाएं",
"ButtonRemoveFromContinueListening": "सुनना जारी रखें से हटाएं",
- "ButtonRemoveFromContinueReading": "Remove from Continue Reading",
"ButtonRemoveSeriesFromContinueSeries": "इस सीरीज को कंटिन्यू सीरीज से हटा दें",
- "ButtonReScan": "पुन: स्कैन करें",
"ButtonReset": "रीसेट करें",
- "ButtonResetToDefault": "Reset to default",
"ButtonRestore": "पुनर्स्थापित करें",
"ButtonSave": "सहेजें",
"ButtonSaveAndClose": "सहेजें और बंद करें",
@@ -83,13 +67,11 @@
"ButtonSelectFolderPath": "फ़ोल्डर का पथ चुनें",
"ButtonSeries": "सीरीज",
"ButtonSetChaptersFromTracks": "ट्रैक्स से अध्याय बनाएं",
- "ButtonShare": "Share",
"ButtonShiftTimes": "समय खिसकाए",
"ButtonShow": "दिखाएं",
"ButtonStartM4BEncode": "M4B एन्कोडिंग शुरू करें",
"ButtonStartMetadataEmbed": "मेटाडेटा एम्बेडिंग शुरू करें",
"ButtonSubmit": "जमा करें",
- "ButtonTest": "Test",
"ButtonUpload": "अपलोड करें",
"ButtonUploadBackup": "बैकअप अपलोड करें",
"ButtonUploadCover": "कवर अपलोड करें",
@@ -98,713 +80,14 @@
"ButtonUserEdit": "उपयोगकर्ता {0} को संपादित करें",
"ButtonViewAll": "सभी को देखें",
"ButtonYes": "हाँ",
- "ErrorUploadFetchMetadataAPI": "Error fetching metadata",
- "ErrorUploadFetchMetadataNoResults": "Could not fetch metadata - try updating title and/or author",
- "ErrorUploadLacksTitle": "Must have a title",
"HeaderAccount": "खाता",
"HeaderAdvanced": "विकसित",
"HeaderAppriseNotificationSettings": "Apprise अधिसूचना सेटिंग्स",
- "HeaderAudiobookTools": "Audiobook File Management Tools",
- "HeaderAudioTracks": "Audio Tracks",
- "HeaderAuthentication": "Authentication",
- "HeaderBackups": "Backups",
- "HeaderChangePassword": "Change Password",
- "HeaderChapters": "Chapters",
- "HeaderChooseAFolder": "Choose a Folder",
- "HeaderCollection": "Collection",
- "HeaderCollectionItems": "Collection Items",
- "HeaderCover": "Cover",
- "HeaderCurrentDownloads": "Current Downloads",
- "HeaderCustomMetadataProviders": "Custom Metadata Providers",
- "HeaderDetails": "Details",
- "HeaderDownloadQueue": "Download Queue",
- "HeaderEbookFiles": "Ebook Files",
- "HeaderEmail": "Email",
- "HeaderEmailSettings": "Email Settings",
- "HeaderEpisodes": "Episodes",
- "HeaderEreaderDevices": "Ereader Devices",
- "HeaderEreaderSettings": "Ereader Settings",
- "HeaderFiles": "Files",
- "HeaderFindChapters": "Find Chapters",
- "HeaderIgnoredFiles": "Ignored Files",
- "HeaderItemFiles": "Item Files",
- "HeaderItemMetadataUtils": "Item Metadata Utils",
- "HeaderLastListeningSession": "Last Listening Session",
- "HeaderLatestEpisodes": "Latest episodes",
- "HeaderLibraries": "Libraries",
- "HeaderLibraryFiles": "Library Files",
- "HeaderLibraryStats": "Library Stats",
- "HeaderListeningSessions": "Listening Sessions",
- "HeaderListeningStats": "Listening Stats",
- "HeaderLogin": "Login",
- "HeaderLogs": "Logs",
- "HeaderManageGenres": "Manage Genres",
- "HeaderManageTags": "Manage Tags",
- "HeaderMapDetails": "Map details",
- "HeaderMatch": "Match",
- "HeaderMetadataOrderOfPrecedence": "Metadata order of precedence",
- "HeaderMetadataToEmbed": "Metadata to embed",
- "HeaderNewAccount": "New Account",
- "HeaderNewLibrary": "New Library",
- "HeaderNotifications": "Notifications",
- "HeaderOpenIDConnectAuthentication": "OpenID Connect Authentication",
- "HeaderOpenRSSFeed": "Open RSS Feed",
- "HeaderOtherFiles": "Other Files",
- "HeaderPasswordAuthentication": "Password Authentication",
- "HeaderPermissions": "Permissions",
- "HeaderPlayerQueue": "Player Queue",
- "HeaderPlaylist": "Playlist",
- "HeaderPlaylistItems": "Playlist Items",
- "HeaderPodcastsToAdd": "Podcasts to Add",
- "HeaderPreviewCover": "Preview Cover",
- "HeaderRemoveEpisode": "Remove Episode",
- "HeaderRemoveEpisodes": "Remove {0} Episodes",
- "HeaderRSSFeedGeneral": "RSS Details",
- "HeaderRSSFeedIsOpen": "RSS Feed is Open",
- "HeaderRSSFeeds": "RSS Feeds",
- "HeaderSavedMediaProgress": "Saved Media Progress",
- "HeaderSchedule": "Schedule",
- "HeaderScheduleLibraryScans": "Schedule Automatic Library Scans",
- "HeaderSession": "Session",
- "HeaderSetBackupSchedule": "Set Backup Schedule",
- "HeaderSettings": "Settings",
- "HeaderSettingsDisplay": "Display",
- "HeaderSettingsExperimental": "Experimental Features",
- "HeaderSettingsGeneral": "General",
- "HeaderSettingsScanner": "Scanner",
- "HeaderSleepTimer": "Sleep Timer",
- "HeaderStatsLargestItems": "Largest Items",
- "HeaderStatsLongestItems": "Longest Items (hrs)",
- "HeaderStatsMinutesListeningChart": "Minutes Listening (last 7 days)",
- "HeaderStatsRecentSessions": "Recent Sessions",
- "HeaderStatsTop10Authors": "Top 10 Authors",
- "HeaderStatsTop5Genres": "Top 5 Genres",
- "HeaderTableOfContents": "Table of Contents",
- "HeaderTools": "Tools",
- "HeaderUpdateAccount": "Update Account",
- "HeaderUpdateAuthor": "Update Author",
- "HeaderUpdateDetails": "Update Details",
- "HeaderUpdateLibrary": "Update Library",
- "HeaderUsers": "Users",
- "HeaderYearReview": "Year {0} in Review",
- "HeaderYourStats": "Your Stats",
- "LabelAbridged": "Abridged",
- "LabelAbridgedChecked": "Abridged (checked)",
- "LabelAbridgedUnchecked": "Unabridged (unchecked)",
- "LabelAccessibleBy": "Accessible by",
- "LabelAccountType": "Account Type",
- "LabelAccountTypeAdmin": "Admin",
- "LabelAccountTypeGuest": "Guest",
- "LabelAccountTypeUser": "User",
- "LabelActivity": "Activity",
- "LabelAdded": "Added",
- "LabelAddedAt": "Added At",
- "LabelAddToCollection": "Add to Collection",
- "LabelAddToCollectionBatch": "Add {0} Books to Collection",
- "LabelAddToPlaylist": "Add to Playlist",
- "LabelAddToPlaylistBatch": "Add {0} Items to Playlist",
- "LabelAdminUsersOnly": "Admin users only",
- "LabelAll": "All",
- "LabelAllUsers": "All Users",
- "LabelAllUsersExcludingGuests": "All users excluding guests",
- "LabelAllUsersIncludingGuests": "All users including guests",
- "LabelAlreadyInYourLibrary": "Already in your library",
- "LabelAppend": "Append",
- "LabelAuthor": "Author",
- "LabelAuthorFirstLast": "Author (First Last)",
- "LabelAuthorLastFirst": "Author (Last, First)",
- "LabelAuthors": "Authors",
- "LabelAutoDownloadEpisodes": "Auto Download Episodes",
- "LabelAutoFetchMetadata": "Auto Fetch Metadata",
- "LabelAutoFetchMetadataHelp": "Fetches metadata for title, author, and series to streamline uploading. Additional metadata may have to be matched after upload.",
- "LabelAutoLaunch": "Auto Launch",
- "LabelAutoLaunchDescription": "Redirect to the auth provider automatically when navigating to the login page (manual override path /login?autoLaunch=0)",
- "LabelAutoRegister": "Auto Register",
- "LabelAutoRegisterDescription": "Automatically create new users after logging in",
- "LabelBackToUser": "Back to User",
- "LabelBackupLocation": "Backup Location",
- "LabelBackupsEnableAutomaticBackups": "Enable automatic backups",
- "LabelBackupsEnableAutomaticBackupsHelp": "Backups saved in /metadata/backups",
"LabelBackupsMaxBackupSize": "Maximum backup size (in GB)",
- "LabelBackupsMaxBackupSizeHelp": "As a safeguard against misconfiguration, backups will fail if they exceed the configured size.",
- "LabelBackupsNumberToKeep": "Number of backups to keep",
- "LabelBackupsNumberToKeepHelp": "Only 1 backup will be removed at a time so if you already have more backups than this you should manually remove them.",
- "LabelBitrate": "Bitrate",
- "LabelBooks": "Books",
- "LabelButtonText": "Button Text",
- "LabelByAuthor": "by {0}",
- "LabelChangePassword": "Change Password",
- "LabelChannels": "Channels",
- "LabelChapters": "Chapters",
- "LabelChaptersFound": "chapters found",
- "LabelChapterTitle": "Chapter Title",
- "LabelClickForMoreInfo": "Click for more info",
- "LabelClosePlayer": "Close player",
- "LabelCodec": "Codec",
- "LabelCollapseSeries": "Collapse Series",
- "LabelCollection": "Collection",
- "LabelCollections": "Collections",
- "LabelComplete": "Complete",
- "LabelConfirmPassword": "Confirm Password",
- "LabelContinueListening": "Continue Listening",
- "LabelContinueReading": "Continue Reading",
- "LabelContinueSeries": "Continue Series",
- "LabelCover": "Cover",
- "LabelCoverImageURL": "Cover Image URL",
- "LabelCreatedAt": "Created At",
- "LabelCronExpression": "Cron Expression",
- "LabelCurrent": "Current",
- "LabelCurrently": "Currently:",
- "LabelCustomCronExpression": "Custom Cron Expression:",
- "LabelDatetime": "Datetime",
- "LabelDeleteFromFileSystemCheckbox": "Delete from file system (uncheck to only remove from database)",
- "LabelDescription": "Description",
- "LabelDeselectAll": "Deselect All",
- "LabelDevice": "Device",
- "LabelDeviceInfo": "Device Info",
- "LabelDeviceIsAvailableTo": "Device is available to...",
- "LabelDirectory": "Directory",
- "LabelDiscFromFilename": "Disc from Filename",
- "LabelDiscFromMetadata": "Disc from Metadata",
- "LabelDiscover": "Discover",
- "LabelDownload": "Download",
- "LabelDownloadNEpisodes": "Download {0} episodes",
- "LabelDuration": "Duration",
- "LabelDurationComparisonExactMatch": "(exact match)",
- "LabelDurationComparisonLonger": "({0} longer)",
- "LabelDurationComparisonShorter": "({0} shorter)",
- "LabelDurationFound": "Duration found:",
- "LabelEbook": "Ebook",
- "LabelEbooks": "Ebooks",
- "LabelEdit": "Edit",
- "LabelEmail": "Email",
- "LabelEmailSettingsFromAddress": "From Address",
- "LabelEmailSettingsSecure": "Secure",
- "LabelEmailSettingsSecureHelp": "If true the connection will use TLS when connecting to server. If false then TLS is used if server supports the STARTTLS extension. In most cases set this value to true if you are connecting to port 465. For port 587 or 25 keep it false. (from nodemailer.com/smtp/#authentication)",
- "LabelEmailSettingsTestAddress": "Test Address",
- "LabelEmbeddedCover": "Embedded Cover",
- "LabelEnable": "Enable",
- "LabelEnd": "End",
- "LabelEpisode": "Episode",
- "LabelEpisodeTitle": "Episode Title",
- "LabelEpisodeType": "Episode Type",
- "LabelExample": "Example",
- "LabelExplicit": "Explicit",
- "LabelExplicitChecked": "Explicit (checked)",
- "LabelExplicitUnchecked": "Not Explicit (unchecked)",
- "LabelFeedURL": "Feed URL",
- "LabelFetchingMetadata": "Fetching Metadata",
- "LabelFile": "File",
- "LabelFileBirthtime": "File Birthtime",
- "LabelFileModified": "File Modified",
- "LabelFilename": "Filename",
- "LabelFilterByUser": "Filter by User",
- "LabelFindEpisodes": "Find Episodes",
- "LabelFinished": "Finished",
- "LabelFolder": "Folder",
- "LabelFolders": "Folders",
- "LabelFontBold": "Bold",
"LabelFontFamily": "फुहारा परिवार",
- "LabelFontItalic": "Italic",
- "LabelFontScale": "Font scale",
- "LabelFontStrikethrough": "Strikethrough",
- "LabelFormat": "Format",
- "LabelGenre": "Genre",
- "LabelGenres": "Genres",
- "LabelHardDeleteFile": "Hard delete file",
- "LabelHasEbook": "Has ebook",
- "LabelHasSupplementaryEbook": "Has supplementary ebook",
- "LabelHighestPriority": "Highest priority",
- "LabelHost": "Host",
- "LabelHour": "Hour",
- "LabelIcon": "Icon",
- "LabelImageURLFromTheWeb": "Image URL from the web",
- "LabelIncludeInTracklist": "Include in Tracklist",
- "LabelIncomplete": "Incomplete",
- "LabelInProgress": "In Progress",
- "LabelInterval": "Interval",
- "LabelIntervalCustomDailyWeekly": "Custom daily/weekly",
- "LabelIntervalEvery12Hours": "Every 12 hours",
- "LabelIntervalEvery15Minutes": "Every 15 minutes",
- "LabelIntervalEvery2Hours": "Every 2 hours",
- "LabelIntervalEvery30Minutes": "Every 30 minutes",
- "LabelIntervalEvery6Hours": "Every 6 hours",
- "LabelIntervalEveryDay": "Every day",
- "LabelIntervalEveryHour": "Every hour",
- "LabelInvert": "Invert",
- "LabelItem": "Item",
- "LabelLanguage": "Language",
- "LabelLanguageDefaultServer": "Default Server Language",
- "LabelLastBookAdded": "Last Book Added",
- "LabelLastBookUpdated": "Last Book Updated",
- "LabelLastSeen": "Last Seen",
- "LabelLastTime": "Last Time",
- "LabelLastUpdate": "Last Update",
- "LabelLayout": "Layout",
- "LabelLayoutSinglePage": "Single page",
- "LabelLayoutSplitPage": "Split page",
- "LabelLess": "Less",
- "LabelLibrariesAccessibleToUser": "Libraries Accessible to User",
- "LabelLibrary": "Library",
- "LabelLibraryItem": "Library Item",
- "LabelLibraryName": "Library Name",
- "LabelLimit": "Limit",
- "LabelLineSpacing": "Line spacing",
- "LabelListenAgain": "Listen Again",
- "LabelLogLevelDebug": "Debug",
- "LabelLogLevelInfo": "Info",
- "LabelLogLevelWarn": "Warn",
- "LabelLookForNewEpisodesAfterDate": "Look for new episodes after this date",
- "LabelLowestPriority": "Lowest Priority",
- "LabelMatchExistingUsersBy": "Match existing users by",
- "LabelMatchExistingUsersByDescription": "Used for connecting existing users. Once connected, users will be matched by a unique id from your SSO provider",
- "LabelMediaPlayer": "Media Player",
- "LabelMediaType": "Media Type",
- "LabelMetadataOrderOfPrecedenceDescription": "Higher priority metadata sources will override lower priority metadata sources",
- "LabelMetadataProvider": "Metadata Provider",
- "LabelMetaTag": "Meta Tag",
- "LabelMetaTags": "Meta Tags",
- "LabelMinute": "Minute",
- "LabelMissing": "Missing",
- "LabelMissingEbook": "Has no ebook",
- "LabelMissingSupplementaryEbook": "Has no supplementary ebook",
- "LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs",
- "LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is audiobookshelf://oauth, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (*) as the sole entry permits any URI.",
- "LabelMore": "More",
- "LabelMoreInfo": "More Info",
- "LabelName": "Name",
- "LabelNarrator": "Narrator",
- "LabelNarrators": "Narrators",
- "LabelNew": "New",
- "LabelNewestAuthors": "Newest Authors",
- "LabelNewestEpisodes": "Newest Episodes",
- "LabelNewPassword": "New Password",
- "LabelNextBackupDate": "Next backup date",
- "LabelNextScheduledRun": "Next scheduled run",
- "LabelNoEpisodesSelected": "No episodes selected",
- "LabelNotes": "Notes",
- "LabelNotFinished": "Not Finished",
- "LabelNotificationAppriseURL": "Apprise URL(s)",
- "LabelNotificationAvailableVariables": "Available variables",
- "LabelNotificationBodyTemplate": "Body Template",
- "LabelNotificationEvent": "Notification Event",
- "LabelNotificationsMaxFailedAttempts": "Max failed attempts",
- "LabelNotificationsMaxFailedAttemptsHelp": "Notifications are disabled once they fail to send this many times",
- "LabelNotificationsMaxQueueSize": "Max queue size for notification events",
- "LabelNotificationsMaxQueueSizeHelp": "Events are limited to firing 1 per second. Events will be ignored if the queue is at max size. This prevents notification spamming.",
- "LabelNotificationTitleTemplate": "Title Template",
- "LabelNotStarted": "Not Started",
- "LabelNumberOfBooks": "Number of Books",
- "LabelNumberOfEpisodes": "# of Episodes",
- "LabelOpenIDAdvancedPermsClaimDescription": "Name of the OpenID claim that contains advanced permissions for user actions within the application which will apply to non-admin roles (if configured). If the claim is missing from the response, access to ABS will be denied. If a single option is missing, it will be treated as false. Ensure the identity provider's claim matches the expected structure:",
- "LabelOpenIDClaims": "Leave the following options empty to disable advanced group and permissions assignment, automatically assigning 'User' group then.",
- "LabelOpenIDGroupClaimDescription": "Name of the OpenID claim that contains a list of the user's groups. Commonly referred to as groups. If configured, the application will automatically assign roles based on the user's group memberships, provided that these groups are named case-insensitively 'admin', 'user', or 'guest' in the claim. The claim should contain a list, and if a user belongs to multiple groups, the application will assign the role corresponding to the highest level of access. If no group matches, access will be denied.",
- "LabelOpenRSSFeed": "Open RSS Feed",
- "LabelOverwrite": "Overwrite",
- "LabelPassword": "Password",
- "LabelPath": "Path",
- "LabelPermissionsAccessAllLibraries": "Can Access All Libraries",
- "LabelPermissionsAccessAllTags": "Can Access All Tags",
- "LabelPermissionsAccessExplicitContent": "Can Access Explicit Content",
- "LabelPermissionsDelete": "Can Delete",
- "LabelPermissionsDownload": "Can Download",
- "LabelPermissionsUpdate": "Can Update",
- "LabelPermissionsUpload": "Can Upload",
- "LabelPersonalYearReview": "Your Year in Review ({0})",
- "LabelPhotoPathURL": "Photo Path/URL",
- "LabelPlaylists": "Playlists",
- "LabelPlayMethod": "Play Method",
- "LabelPodcast": "Podcast",
- "LabelPodcasts": "Podcasts",
"LabelPodcastSearchRegion": "पॉडकास्ट खोज क्षेत्र",
- "LabelPodcastType": "Podcast Type",
- "LabelPort": "Port",
- "LabelPrefixesToIgnore": "Prefixes to Ignore (case insensitive)",
- "LabelPreventIndexing": "Prevent your feed from being indexed by iTunes and Google podcast directories",
- "LabelPrimaryEbook": "Primary ebook",
- "LabelProgress": "Progress",
- "LabelProvider": "Provider",
- "LabelPubDate": "Pub Date",
- "LabelPublisher": "Publisher",
- "LabelPublishYear": "Publish Year",
- "LabelRead": "Read",
- "LabelReadAgain": "Read Again",
- "LabelReadEbookWithoutProgress": "Read ebook without keeping progress",
- "LabelRecentlyAdded": "Recently Added",
- "LabelRecentSeries": "Recent Series",
- "LabelRecommended": "Recommended",
- "LabelRedo": "Redo",
- "LabelRegion": "Region",
- "LabelReleaseDate": "Release Date",
- "LabelRemoveCover": "Remove cover",
- "LabelRowsPerPage": "Rows per page",
- "LabelRSSFeedCustomOwnerEmail": "Custom owner Email",
- "LabelRSSFeedCustomOwnerName": "Custom owner Name",
- "LabelRSSFeedOpen": "RSS Feed Open",
- "LabelRSSFeedPreventIndexing": "Prevent Indexing",
- "LabelRSSFeedSlug": "RSS Feed Slug",
- "LabelRSSFeedURL": "RSS Feed URL",
- "LabelSearchTerm": "Search Term",
- "LabelSearchTitle": "Search Title",
- "LabelSearchTitleOrASIN": "Search Title or ASIN",
- "LabelSeason": "Season",
- "LabelSelectAll": "Select all",
- "LabelSelectAllEpisodes": "Select all episodes",
- "LabelSelectEpisodesShowing": "Select {0} episodes showing",
- "LabelSelectUsers": "Select users",
- "LabelSendEbookToDevice": "Send Ebook to...",
- "LabelSequence": "Sequence",
- "LabelSeries": "Series",
- "LabelSeriesName": "Series Name",
- "LabelSeriesProgress": "Series Progress",
- "LabelServerYearReview": "Server Year in Review ({0})",
- "LabelSetEbookAsPrimary": "Set as primary",
- "LabelSetEbookAsSupplementary": "Set as supplementary",
- "LabelSettingsAudiobooksOnly": "Audiobooks only",
- "LabelSettingsAudiobooksOnlyHelp": "Enabling this setting will ignore ebook files unless they are inside an audiobook folder in which case they will be set as supplementary ebooks",
- "LabelSettingsBookshelfViewHelp": "Skeumorphic design with wooden shelves",
- "LabelSettingsChromecastSupport": "Chromecast support",
- "LabelSettingsDateFormat": "Date Format",
- "LabelSettingsDisableWatcher": "Disable Watcher",
- "LabelSettingsDisableWatcherForLibrary": "Disable folder watcher for library",
- "LabelSettingsDisableWatcherHelp": "Disables the automatic adding/updating of items when file changes are detected. *Requires server restart",
- "LabelSettingsEnableWatcher": "Enable Watcher",
- "LabelSettingsEnableWatcherForLibrary": "Enable folder watcher for library",
- "LabelSettingsEnableWatcherHelp": "Enables the automatic adding/updating of items when file changes are detected. *Requires server restart",
- "LabelSettingsEpubsAllowScriptedContent": "Allow scripted content in epubs",
- "LabelSettingsEpubsAllowScriptedContentHelp": "Allow epub files to execute scripts. It is recommended to keep this setting disabled unless you trust the source of the epub files.",
- "LabelSettingsExperimentalFeatures": "Experimental features",
- "LabelSettingsExperimentalFeaturesHelp": "Features in development that could use your feedback and help testing. Click to open github discussion.",
- "LabelSettingsFindCovers": "Find covers",
- "LabelSettingsFindCoversHelp": "If your audiobook does not have an embedded cover or a cover image inside the folder, the scanner will attempt to find a cover. Note: This will extend scan time",
- "LabelSettingsHideSingleBookSeries": "Hide single book series",
- "LabelSettingsHideSingleBookSeriesHelp": "Series that have a single book will be hidden from the series page and home page shelves.",
- "LabelSettingsHomePageBookshelfView": "Home page use bookshelf view",
- "LabelSettingsLibraryBookshelfView": "Library use bookshelf view",
- "LabelSettingsOnlyShowLaterBooksInContinueSeries": "Skip earlier books in Continue Series",
- "LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "The Continue Series home page shelf shows the first book not started in series that have at least one book finished and no books in progress. Enabling this setting will continue series from the furthest completed book instead of the first book not started.",
- "LabelSettingsParseSubtitles": "Parse subtitles",
- "LabelSettingsParseSubtitlesHelp": "Extract subtitles from audiobook folder names. Subtitle must be seperated by \" - \" i.e. \"Book Title - A Subtitle Here\" has the subtitle \"A Subtitle Here\"",
- "LabelSettingsPreferMatchedMetadata": "Prefer matched metadata",
"LabelSettingsPreferMatchedMetadataHelp": "Matched data will overide item details when using Quick Match. By default Quick Match will only fill in missing details.",
- "LabelSettingsSkipMatchingBooksWithASIN": "Skip matching books that already have an ASIN",
- "LabelSettingsSkipMatchingBooksWithISBN": "Skip matching books that already have an ISBN",
- "LabelSettingsSortingIgnorePrefixes": "Ignore prefixes when sorting",
- "LabelSettingsSortingIgnorePrefixesHelp": "i.e. for prefix \"the\" book title \"The Book Title\" would sort as \"Book Title, The\"",
- "LabelSettingsSquareBookCovers": "Use square book covers",
- "LabelSettingsSquareBookCoversHelp": "Prefer to use square covers over standard 1.6:1 book covers",
- "LabelSettingsStoreCoversWithItem": "Store covers with item",
- "LabelSettingsStoreCoversWithItemHelp": "By default covers are stored in /metadata/items, enabling this setting will store covers in your library item folder. Only one file named \"cover\" will be kept",
- "LabelSettingsStoreMetadataWithItem": "Store metadata with item",
- "LabelSettingsStoreMetadataWithItemHelp": "By default metadata files are stored in /metadata/items, enabling this setting will store metadata files in your library item folders",
- "LabelSettingsTimeFormat": "Time Format",
- "LabelShowAll": "Show All",
- "LabelShowSeconds": "Show seconds",
- "LabelSize": "Size",
- "LabelSleepTimer": "Sleep timer",
- "LabelSlug": "Slug",
- "LabelStart": "Start",
- "LabelStarted": "Started",
- "LabelStartedAt": "Started At",
- "LabelStartTime": "Start Time",
- "LabelStatsAudioTracks": "Audio Tracks",
- "LabelStatsAuthors": "Authors",
- "LabelStatsBestDay": "Best Day",
- "LabelStatsDailyAverage": "Daily Average",
- "LabelStatsDays": "Days",
- "LabelStatsDaysListened": "Days Listened",
- "LabelStatsHours": "Hours",
- "LabelStatsInARow": "in a row",
- "LabelStatsItemsFinished": "Items Finished",
- "LabelStatsItemsInLibrary": "Items in Library",
- "LabelStatsMinutes": "minutes",
- "LabelStatsMinutesListening": "Minutes Listening",
- "LabelStatsOverallDays": "Overall Days",
- "LabelStatsOverallHours": "Overall Hours",
- "LabelStatsWeekListening": "Week Listening",
- "LabelSubtitle": "Subtitle",
- "LabelSupportedFileTypes": "Supported File Types",
- "LabelTag": "Tag",
- "LabelTags": "Tags",
- "LabelTagsAccessibleToUser": "Tags Accessible to User",
- "LabelTagsNotAccessibleToUser": "Tags not Accessible to User",
- "LabelTasks": "Tasks Running",
- "LabelTextEditorBulletedList": "Bulleted list",
- "LabelTextEditorLink": "Link",
- "LabelTextEditorNumberedList": "Numbered list",
- "LabelTextEditorUnlink": "Unlink",
- "LabelTheme": "Theme",
- "LabelThemeDark": "Dark",
- "LabelThemeLight": "Light",
- "LabelTimeBase": "Time Base",
- "LabelTimeListened": "Time Listened",
- "LabelTimeListenedToday": "Time Listened Today",
- "LabelTimeRemaining": "{0} remaining",
- "LabelTimeToShift": "Time to shift in seconds",
- "LabelTitle": "Title",
- "LabelToolsEmbedMetadata": "Embed Metadata",
- "LabelToolsEmbedMetadataDescription": "Embed metadata into audio files including cover image and chapters.",
- "LabelToolsMakeM4b": "Make M4B Audiobook File",
- "LabelToolsMakeM4bDescription": "Generate a .M4B audiobook file with embedded metadata, cover image, and chapters.",
- "LabelToolsSplitM4b": "Split M4B to MP3's",
- "LabelToolsSplitM4bDescription": "Create MP3's from an M4B split by chapters with embedded metadata, cover image, and chapters.",
- "LabelTotalDuration": "Total Duration",
- "LabelTotalTimeListened": "Total Time Listened",
- "LabelTrackFromFilename": "Track from Filename",
- "LabelTrackFromMetadata": "Track from Metadata",
- "LabelTracks": "Tracks",
- "LabelTracksMultiTrack": "Multi-track",
- "LabelTracksNone": "No tracks",
- "LabelTracksSingleTrack": "Single-track",
- "LabelType": "Type",
- "LabelUnabridged": "Unabridged",
- "LabelUndo": "Undo",
- "LabelUnknown": "Unknown",
- "LabelUpdateCover": "Update Cover",
- "LabelUpdateCoverHelp": "Allow overwriting of existing covers for the selected books when a match is located",
- "LabelUpdatedAt": "Updated At",
- "LabelUpdateDetails": "Update Details",
- "LabelUpdateDetailsHelp": "Allow overwriting of existing details for the selected books when a match is located",
- "LabelUploaderDragAndDrop": "Drag & drop files or folders",
- "LabelUploaderDropFiles": "Drop files",
- "LabelUploaderItemFetchMetadataHelp": "Automatically fetch title, author, and series",
- "LabelUseChapterTrack": "Use chapter track",
- "LabelUseFullTrack": "Use full track",
- "LabelUser": "User",
- "LabelUsername": "Username",
- "LabelValue": "Value",
- "LabelVersion": "Version",
- "LabelViewBookmarks": "View bookmarks",
- "LabelViewChapters": "View chapters",
- "LabelViewQueue": "View player queue",
- "LabelVolume": "Volume",
- "LabelWeekdaysToRun": "Weekdays to run",
- "LabelYearReviewHide": "Hide Year in Review",
- "LabelYearReviewShow": "See Year in Review",
- "LabelYourAudiobookDuration": "Your audiobook duration",
- "LabelYourBookmarks": "Your Bookmarks",
- "LabelYourPlaylists": "Your Playlists",
- "LabelYourProgress": "Your Progress",
- "MessageAddToPlayerQueue": "Add to player queue",
- "MessageAppriseDescription": "To use this feature you will need to have an instance of Apprise API running or an api that will handle those same requests. The Apprise API Url should be the full URL path to send the notification, e.g., if your API instance is served at http://192.168.1.1:8337 then you would put http://192.168.1.1:8337/notify.",
- "MessageBackupsDescription": "Backups include users, user progress, library item details, server settings, and images stored in /metadata/items & /metadata/authors. Backups do not include any files stored in your library folders.",
- "MessageBatchQuickMatchDescription": "Quick Match will attempt to add missing covers and metadata for the selected items. Enable the options below to allow Quick Match to overwrite existing covers and/or metadata.",
- "MessageBookshelfNoCollections": "You haven't made any collections yet",
"MessageBookshelfNoResultsForFilter": "No Results for filter \"{0}: {1}\"",
- "MessageBookshelfNoRSSFeeds": "No RSS feeds are open",
- "MessageBookshelfNoSeries": "You have no series",
- "MessageChapterEndIsAfter": "Chapter end is after the end of your audiobook",
- "MessageChapterErrorFirstNotZero": "First chapter must start at 0",
- "MessageChapterErrorStartGteDuration": "Invalid start time must be less than audiobook duration",
- "MessageChapterErrorStartLtPrev": "Invalid start time must be greater than or equal to previous chapter start time",
- "MessageChapterStartIsAfter": "Chapter start is after the end of your audiobook",
- "MessageCheckingCron": "Checking cron...",
- "MessageConfirmCloseFeed": "Are you sure you want to close this feed?",
- "MessageConfirmDeleteBackup": "Are you sure you want to delete backup for {0}?",
- "MessageConfirmDeleteFile": "This will delete the file from your file system. Are you sure?",
- "MessageConfirmDeleteLibrary": "Are you sure you want to permanently delete library \"{0}\"?",
- "MessageConfirmDeleteLibraryItem": "This will delete the library item from the database and your file system. Are you sure?",
- "MessageConfirmDeleteLibraryItems": "This will delete {0} library items from the database and your file system. Are you sure?",
- "MessageConfirmDeleteSession": "Are you sure you want to delete this session?",
- "MessageConfirmForceReScan": "Are you sure you want to force re-scan?",
- "MessageConfirmMarkAllEpisodesFinished": "Are you sure you want to mark all episodes as finished?",
- "MessageConfirmMarkAllEpisodesNotFinished": "Are you sure you want to mark all episodes as not finished?",
- "MessageConfirmMarkSeriesFinished": "Are you sure you want to mark all books in this series as finished?",
- "MessageConfirmMarkSeriesNotFinished": "Are you sure you want to mark all books in this series as not finished?",
- "MessageConfirmPurgeCache": "Purge cache will delete the entire directory at /metadata/cache.
Are you sure you want to remove the cache directory?",
- "MessageConfirmQuickEmbed": "Warning! Quick embed will not backup your audio files. Make sure that you have a backup of your audio files.
Would you like to continue?",
- "MessageConfirmRemoveAllChapters": "Are you sure you want to remove all chapters?",
- "MessageConfirmRemoveAuthor": "Are you sure you want to remove author \"{0}\"?",
- "MessageConfirmRemoveCollection": "Are you sure you want to remove collection \"{0}\"?",
- "MessageConfirmRemoveEpisode": "Are you sure you want to remove episode \"{0}\"?",
- "MessageConfirmRemoveEpisodes": "Are you sure you want to remove {0} episodes?",
- "MessageConfirmRemoveListeningSessions": "Are you sure you want to remove {0} listening sessions?",
- "MessageConfirmRemoveNarrator": "Are you sure you want to remove narrator \"{0}\"?",
- "MessageConfirmRemovePlaylist": "Are you sure you want to remove your playlist \"{0}\"?",
- "MessageConfirmRenameGenre": "Are you sure you want to rename genre \"{0}\" to \"{1}\" for all items?",
- "MessageConfirmRenameGenreMergeNote": "Note: This genre already exists so they will be merged.",
- "MessageConfirmRenameGenreWarning": "Warning! A similar genre with a different casing already exists \"{0}\".",
- "MessageConfirmRenameTag": "Are you sure you want to rename tag \"{0}\" to \"{1}\" for all items?",
- "MessageConfirmRenameTagMergeNote": "Note: This tag already exists so they will be merged.",
- "MessageConfirmRenameTagWarning": "Warning! A similar tag with a different casing already exists \"{0}\".",
- "MessageConfirmReScanLibraryItems": "Are you sure you want to re-scan {0} items?",
- "MessageConfirmSendEbookToDevice": "Are you sure you want to send {0} ebook \"{1}\" to device \"{2}\"?",
- "MessageDownloadingEpisode": "Downloading episode",
- "MessageDragFilesIntoTrackOrder": "Drag files into correct track order",
- "MessageEmbedFinished": "Embed Finished!",
- "MessageEpisodesQueuedForDownload": "{0} Episode(s) queued for download",
- "MessageEreaderDevices": "To ensure delivery of ebooks, you may need to add the above email address as a valid sender for each device listed below.",
- "MessageFeedURLWillBe": "Feed URL will be {0}",
- "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.",
- "MessageImportantNotice": "Important Notice!",
- "MessageInsertChapterBelow": "Insert chapter below",
- "MessageItemsSelected": "{0} Items Selected",
- "MessageItemsUpdated": "{0} Items Updated",
- "MessageJoinUsOn": "Join us on",
- "MessageListeningSessionsInTheLastYear": "{0} listening sessions in the last year",
- "MessageLoading": "Loading...",
- "MessageLoadingFolders": "Loading folders...",
- "MessageLogsDescription": "Logs are stored in /metadata/logs as JSON files. Crash logs are stored in /metadata/logs/crash_logs.txt.",
- "MessageM4BFailed": "M4B Failed!",
- "MessageM4BFinished": "M4B Finished!",
- "MessageMapChapterTitles": "Map chapter titles to your existing audiobook chapters without adjusting timestamps",
- "MessageMarkAllEpisodesFinished": "Mark all episodes finished",
- "MessageMarkAllEpisodesNotFinished": "Mark all episodes not finished",
- "MessageMarkAsFinished": "Mark as Finished",
- "MessageMarkAsNotFinished": "Mark as Not Finished",
- "MessageMatchBooksDescription": "will attempt to match books in the library with a book from the selected search provider and fill in empty details and cover art. Does not overwrite details.",
- "MessageNoAudioTracks": "No audio tracks",
- "MessageNoAuthors": "No Authors",
- "MessageNoBackups": "No Backups",
- "MessageNoBookmarks": "No Bookmarks",
- "MessageNoChapters": "No Chapters",
- "MessageNoCollections": "No Collections",
- "MessageNoCoversFound": "No Covers Found",
- "MessageNoDescription": "No description",
- "MessageNoDownloadsInProgress": "No downloads currently in progress",
- "MessageNoDownloadsQueued": "No downloads queued",
- "MessageNoEpisodeMatchesFound": "No episode matches found",
- "MessageNoEpisodes": "No Episodes",
- "MessageNoFoldersAvailable": "No Folders Available",
- "MessageNoGenres": "No Genres",
- "MessageNoIssues": "No Issues",
- "MessageNoItems": "No Items",
- "MessageNoItemsFound": "No items found",
- "MessageNoListeningSessions": "No Listening Sessions",
- "MessageNoLogs": "No Logs",
- "MessageNoMediaProgress": "No Media Progress",
- "MessageNoNotifications": "No Notifications",
- "MessageNoPodcastsFound": "No podcasts found",
- "MessageNoResults": "No Results",
- "MessageNoSearchResultsFor": "No search results for \"{0}\"",
- "MessageNoSeries": "No Series",
- "MessageNoTags": "No Tags",
- "MessageNoTasksRunning": "No Tasks Running",
- "MessageNotYetImplemented": "Not yet implemented",
- "MessageNoUpdateNecessary": "No update necessary",
- "MessageNoUpdatesWereNecessary": "No updates were necessary",
- "MessageNoUserPlaylists": "You have no playlists",
- "MessageOr": "or",
- "MessagePauseChapter": "Pause chapter playback",
- "MessagePlayChapter": "Listen to beginning of chapter",
- "MessagePlaylistCreateFromCollection": "Create playlist from collection",
- "MessagePodcastHasNoRSSFeedForMatching": "Podcast has no RSS feed url to use for matching",
- "MessageQuickMatchDescription": "Populate empty item details & cover with first match result from '{0}'. Does not overwrite details unless 'Prefer matched metadata' server setting is enabled.",
- "MessageRemoveChapter": "Remove chapter",
- "MessageRemoveEpisodes": "Remove {0} episode(s)",
- "MessageRemoveFromPlayerQueue": "Remove from player queue",
- "MessageRemoveUserWarning": "Are you sure you want to permanently delete user \"{0}\"?",
- "MessageReportBugsAndContribute": "Report bugs, request features, and contribute on",
- "MessageResetChaptersConfirm": "Are you sure you want to reset chapters and undo the changes you made?",
- "MessageRestoreBackupConfirm": "Are you sure you want to restore the backup created on",
- "MessageRestoreBackupWarning": "Restoring a backup will overwrite the entire database located at /config and cover images in /metadata/items & /metadata/authors.
Backups do not modify any files in your library folders. If you have enabled server settings to store cover art and metadata in your library folders then those are not backed up or overwritten.
All clients using your server will be automatically refreshed.",
- "MessageSearchResultsFor": "Search results for",
- "MessageSelected": "{0} selected",
- "MessageServerCouldNotBeReached": "Server could not be reached",
- "MessageSetChaptersFromTracksDescription": "Set chapters using each audio file as a chapter and chapter title as the audio file name",
- "MessageStartPlaybackAtTime": "Start playback for \"{0}\" at {1}?",
- "MessageThinking": "Thinking...",
- "MessageUploaderItemFailed": "Failed to upload",
- "MessageUploaderItemSuccess": "Successfully Uploaded!",
- "MessageUploading": "Uploading...",
- "MessageValidCronExpression": "Valid cron expression",
- "MessageWatcherIsDisabledGlobally": "Watcher is disabled globally in server settings",
- "MessageXLibraryIsEmpty": "{0} Library is empty!",
- "MessageYourAudiobookDurationIsLonger": "Your audiobook duration is longer than the duration found",
- "MessageYourAudiobookDurationIsShorter": "Your audiobook duration is shorter than duration found",
"NoteChangeRootPassword": "रूट user is the only user that can have an empty password",
- "NoteChapterEditorTimes": "Note: First chapter start time must remain at 0:00 and the last chapter start time cannot exceed this audiobooks duration.",
- "NoteFolderPicker": "Note: folders already mapped will not be shown",
- "NoteRSSFeedPodcastAppsHttps": "Warning: Most podcast apps will require the RSS feed URL is using HTTPS",
- "NoteRSSFeedPodcastAppsPubDate": "Warning: 1 or more of your episodes do not have a Pub Date. Some podcast apps require this.",
- "NoteUploaderFoldersWithMediaFiles": "Folders with media files will be handled as separate library items.",
- "NoteUploaderOnlyAudioFiles": "If uploading only audio files then each audio file will be handled as a separate audiobook.",
- "NoteUploaderUnsupportedFiles": "Unsupported files are ignored. When choosing or dropping a folder, other files that are not in an item folder are ignored.",
- "PlaceholderNewCollection": "New collection name",
- "PlaceholderNewFolderPath": "New folder path",
- "PlaceholderNewPlaylist": "New playlist name",
- "PlaceholderSearch": "Search..",
- "PlaceholderSearchEpisode": "Search episode..",
- "ToastAccountUpdateFailed": "Failed to update account",
- "ToastAccountUpdateSuccess": "Account updated",
- "ToastAuthorImageRemoveFailed": "Failed to remove image",
- "ToastAuthorImageRemoveSuccess": "Author image removed",
- "ToastAuthorUpdateFailed": "Failed to update author",
- "ToastAuthorUpdateMerged": "Author merged",
- "ToastAuthorUpdateSuccess": "Author updated",
- "ToastAuthorUpdateSuccessNoImageFound": "Author updated (no image found)",
- "ToastBackupCreateFailed": "Failed to create backup",
- "ToastBackupCreateSuccess": "Backup created",
- "ToastBackupDeleteFailed": "Failed to delete backup",
- "ToastBackupDeleteSuccess": "Backup deleted",
- "ToastBackupRestoreFailed": "Failed to restore backup",
- "ToastBackupUploadFailed": "Failed to upload backup",
- "ToastBackupUploadSuccess": "Backup uploaded",
- "ToastBatchUpdateFailed": "Batch update failed",
- "ToastBatchUpdateSuccess": "Batch update success",
- "ToastBookmarkCreateFailed": "Failed to create bookmark",
- "ToastBookmarkCreateSuccess": "Bookmark added",
- "ToastBookmarkRemoveFailed": "Failed to remove bookmark",
- "ToastBookmarkRemoveSuccess": "Bookmark removed",
- "ToastBookmarkUpdateFailed": "Failed to update bookmark",
- "ToastBookmarkUpdateSuccess": "Bookmark updated",
- "ToastCachePurgeFailed": "Failed to purge cache",
- "ToastCachePurgeSuccess": "Cache purged successfully",
- "ToastChaptersHaveErrors": "Chapters have errors",
- "ToastChaptersMustHaveTitles": "Chapters must have titles",
- "ToastCollectionItemsRemoveFailed": "Failed to remove item(s) from collection",
- "ToastCollectionItemsRemoveSuccess": "Item(s) removed from collection",
- "ToastCollectionRemoveFailed": "Failed to remove collection",
- "ToastCollectionRemoveSuccess": "Collection removed",
- "ToastCollectionUpdateFailed": "Failed to update collection",
- "ToastCollectionUpdateSuccess": "Collection updated",
- "ToastDeleteFileFailed": "Failed to delete file",
- "ToastDeleteFileSuccess": "File deleted",
- "ToastFailedToLoadData": "Failed to load data",
- "ToastItemCoverUpdateFailed": "Failed to update item cover",
- "ToastItemCoverUpdateSuccess": "Item cover updated",
- "ToastItemDetailsUpdateFailed": "Failed to update item details",
- "ToastItemDetailsUpdateSuccess": "Item details updated",
- "ToastItemDetailsUpdateUnneeded": "No updates needed for item details",
- "ToastItemMarkedAsFinishedFailed": "Failed to mark as Finished",
- "ToastItemMarkedAsFinishedSuccess": "Item marked as Finished",
- "ToastItemMarkedAsNotFinishedFailed": "Failed to mark as Not Finished",
- "ToastItemMarkedAsNotFinishedSuccess": "Item marked as Not Finished",
- "ToastLibraryCreateFailed": "Failed to create library",
- "ToastLibraryCreateSuccess": "Library \"{0}\" created",
- "ToastLibraryDeleteFailed": "Failed to delete library",
- "ToastLibraryDeleteSuccess": "Library deleted",
- "ToastLibraryScanFailedToStart": "Failed to start scan",
- "ToastLibraryScanStarted": "Library scan started",
- "ToastLibraryUpdateFailed": "Failed to update library",
- "ToastLibraryUpdateSuccess": "Library \"{0}\" updated",
- "ToastPlaylistCreateFailed": "Failed to create playlist",
- "ToastPlaylistCreateSuccess": "Playlist created",
- "ToastPlaylistRemoveFailed": "Failed to remove playlist",
- "ToastPlaylistRemoveSuccess": "Playlist removed",
- "ToastPlaylistUpdateFailed": "Failed to update playlist",
- "ToastPlaylistUpdateSuccess": "Playlist updated",
- "ToastPodcastCreateFailed": "Failed to create podcast",
- "ToastPodcastCreateSuccess": "Podcast created successfully",
- "ToastRemoveItemFromCollectionFailed": "Failed to remove item from collection",
- "ToastRemoveItemFromCollectionSuccess": "Item removed from collection",
- "ToastRSSFeedCloseFailed": "Failed to close RSS feed",
- "ToastRSSFeedCloseSuccess": "RSS feed closed",
- "ToastSendEbookToDeviceFailed": "Failed to Send Ebook to device",
- "ToastSendEbookToDeviceSuccess": "Ebook sent to device \"{0}\"",
- "ToastSeriesUpdateFailed": "Series update failed",
- "ToastSeriesUpdateSuccess": "Series update success",
- "ToastServerSettingsUpdateFailed": "Failed to update server settings",
- "ToastServerSettingsUpdateSuccess": "Server settings updated",
- "ToastSessionDeleteFailed": "Failed to delete session",
- "ToastSessionDeleteSuccess": "Session deleted",
- "ToastSocketConnected": "Socket connected",
- "ToastSocketDisconnected": "Socket disconnected",
- "ToastSocketFailedToConnect": "Socket failed to connect",
- "ToastSortingPrefixesEmptyError": "Must have at least 1 sorting prefix",
- "ToastSortingPrefixesUpdateFailed": "Failed to update sorting prefixes",
- "ToastSortingPrefixesUpdateSuccess": "Sorting prefixes updated ({0} items)",
- "ToastUserDeleteFailed": "Failed to delete user",
- "ToastUserDeleteSuccess": "User deleted"
-}
\ No newline at end of file
+ "ToastSendEbookToDeviceFailed": "Failed to Send Ebook to device"
+}
diff --git a/client/strings/hr.json b/client/strings/hr.json
index a3a88e9ce..d7d0fde54 100644
--- a/client/strings/hr.json
+++ b/client/strings/hr.json
@@ -1,810 +1,1073 @@
{
"ButtonAdd": "Dodaj",
"ButtonAddChapters": "Dodaj poglavlja",
- "ButtonAddDevice": "Add Device",
- "ButtonAddLibrary": "Add Library",
+ "ButtonAddDevice": "Dodaj uređaj",
+ "ButtonAddLibrary": "Dodaj knjižnicu",
"ButtonAddPodcasts": "Dodaj podcaste",
- "ButtonAddUser": "Add User",
- "ButtonAddYourFirstLibrary": "Dodaj svoju prvu biblioteku",
+ "ButtonAddUser": "Dodaj korisnika",
+ "ButtonAddYourFirstLibrary": "Dodaj svoju prvu knjižnicu",
"ButtonApply": "Primijeni",
"ButtonApplyChapters": "Primijeni poglavlja",
"ButtonAuthors": "Autori",
- "ButtonBrowseForFolder": "Browse for Folder",
+ "ButtonBack": "Natrag",
+ "ButtonBrowseForFolder": "Pronađi mapu",
"ButtonCancel": "Odustani",
"ButtonCancelEncode": "Otkaži kodiranje",
- "ButtonChangeRootPassword": "Promijeni Root lozinku",
+ "ButtonChangeRootPassword": "Promijeni zaporku root korisnika",
"ButtonCheckAndDownloadNewEpisodes": "Provjeri i preuzmi nove epizode",
- "ButtonChooseAFolder": "Odaberi folder",
+ "ButtonChooseAFolder": "Odaberi mapu",
"ButtonChooseFiles": "Odaberi datoteke",
- "ButtonClearFilter": "Clear Filter",
- "ButtonCloseFeed": "Zatvori feed",
- "ButtonCollections": "Kolekcije",
- "ButtonConfigureScanner": "Configure Scanner",
- "ButtonCreate": "Napravi",
- "ButtonCreateBackup": "Napravi backup",
- "ButtonDelete": "Obriši",
- "ButtonDownloadQueue": "Queue",
- "ButtonEdit": "Edit",
+ "ButtonClearFilter": "Poništi filter",
+ "ButtonCloseFeed": "Zatvori izvor",
+ "ButtonCloseSession": "Zatvori otvorenu sesiju",
+ "ButtonCollections": "Zbirke",
+ "ButtonConfigureScanner": "Postavi skener",
+ "ButtonCreate": "Izradi",
+ "ButtonCreateBackup": "Izradi sigurnosnu kopiju",
+ "ButtonDelete": "Izbriši",
+ "ButtonDownloadQueue": "Red",
+ "ButtonEdit": "Uredi",
"ButtonEditChapters": "Uredi poglavlja",
"ButtonEditPodcast": "Uredi podcast",
+ "ButtonEnable": "Omogući",
+ "ButtonFireAndFail": "Okini i vrati status neuspješno",
+ "ButtonFireOnTest": "Okini onTest događaj",
"ButtonForceReScan": "Prisilno ponovno skeniranje",
"ButtonFullPath": "Cijela putanja",
"ButtonHide": "Sakrij",
"ButtonHome": "Početna stranica",
"ButtonIssues": "Problemi",
- "ButtonJumpBackward": "Jump Backward",
- "ButtonJumpForward": "Jump Forward",
+ "ButtonJumpBackward": "Skok unatrag",
+ "ButtonJumpForward": "Skok unaprijed",
"ButtonLatest": "Najnovije",
- "ButtonLibrary": "Biblioteka",
+ "ButtonLibrary": "Knjižnica",
"ButtonLogout": "Odjavi se",
"ButtonLookup": "Potraži",
- "ButtonManageTracks": "Upravljanje pjesmama",
- "ButtonMapChapterTitles": "Mapiraj imena poglavlja",
- "ButtonMatchAllAuthors": "Matchaj sve autore",
- "ButtonMatchBooks": "Matchaj knjige",
+ "ButtonManageTracks": "Upravljanje zvučnim zapisima",
+ "ButtonMapChapterTitles": "Mapiraj naslove poglavlja",
+ "ButtonMatchAllAuthors": "Prepoznaj sve autore",
+ "ButtonMatchBooks": "Prepoznaj knjige",
"ButtonNevermind": "Nije bitno",
- "ButtonNext": "Next",
- "ButtonNextChapter": "Next Chapter",
- "ButtonOk": "Ok",
- "ButtonOpenFeed": "Otvori feed",
- "ButtonOpenManager": "Otvori menadžera",
- "ButtonPause": "Pause",
- "ButtonPlay": "Pokreni",
- "ButtonPlaying": "Playing",
- "ButtonPlaylists": "Playlists",
- "ButtonPrevious": "Previous",
- "ButtonPreviousChapter": "Previous Chapter",
- "ButtonPurgeAllCache": "Isprazni sav cache",
- "ButtonPurgeItemsCache": "Isprazni Items Cache",
- "ButtonPurgeMediaProgress": "Purge Media Progress",
- "ButtonQueueAddItem": "Add to queue",
- "ButtonQueueRemoveItem": "Remove from queue",
- "ButtonQuickMatch": "Brzi match",
+ "ButtonNext": "Sljedeće",
+ "ButtonNextChapter": "Sljedeće poglavlje",
+ "ButtonNextItemInQueue": "Sljedeća stavka u redu",
+ "ButtonOk": "OK",
+ "ButtonOpenFeed": "Otvori izvor",
+ "ButtonOpenManager": "Otvori Upravitelja",
+ "ButtonPause": "Pauziraj",
+ "ButtonPlay": "Reproduciraj",
+ "ButtonPlayAll": "Reproduciraj sve",
+ "ButtonPlaying": "Izvodi se",
+ "ButtonPlaylists": "Popisi za izvođenje",
+ "ButtonPrevious": "Prethodno",
+ "ButtonPreviousChapter": "Prethodno poglavlje",
+ "ButtonProbeAudioFile": "Ispitaj zvučnu datoteku",
+ "ButtonPurgeAllCache": "Isprazni cijelu predmemoriju",
+ "ButtonPurgeItemsCache": "Isprazni predmemoriju stavki",
+ "ButtonQueueAddItem": "Dodaj u red",
+ "ButtonQueueRemoveItem": "Ukloni iz reda",
+ "ButtonQuickEmbed": "Brzo ugrađivanje",
+ "ButtonQuickEmbedMetadata": "Brzo ugrađivanje meta-podataka",
+ "ButtonQuickMatch": "Brzo prepoznavanje",
+ "ButtonReScan": "Ponovno skeniraj",
"ButtonRead": "Pročitaj",
- "ButtonReadLess": "Read less",
- "ButtonReadMore": "Read more",
- "ButtonRefresh": "Refresh",
+ "ButtonReadLess": "Pročitaj manje",
+ "ButtonReadMore": "Pročitaj više",
+ "ButtonRefresh": "Osvježi",
"ButtonRemove": "Ukloni",
"ButtonRemoveAll": "Ukloni sve",
- "ButtonRemoveAllLibraryItems": "Ukloni sve stvari iz biblioteke",
+ "ButtonRemoveAllLibraryItems": "Ukloni sve stavke iz knjižnice",
"ButtonRemoveFromContinueListening": "Ukloni iz Nastavi slušati",
- "ButtonRemoveFromContinueReading": "Remove from Continue Reading",
+ "ButtonRemoveFromContinueReading": "Ukloni iz Nastavi čitati",
"ButtonRemoveSeriesFromContinueSeries": "Ukloni seriju iz Nastavi seriju",
- "ButtonReScan": "Skeniraj ponovno",
"ButtonReset": "Poništi",
- "ButtonResetToDefault": "Reset to default",
- "ButtonRestore": "Povrati",
+ "ButtonResetToDefault": "Vrati na početne postavke",
+ "ButtonRestore": "Vraćanje",
"ButtonSave": "Spremi",
"ButtonSaveAndClose": "Spremi i zatvori",
- "ButtonSaveTracklist": "Spremi popis pjesama",
+ "ButtonSaveTracklist": "Spremi popis zvučnih zapisa",
"ButtonScan": "Skeniraj",
- "ButtonScanLibrary": "Scan Library",
+ "ButtonScanLibrary": "Skeniraj knjižnicu",
"ButtonSearch": "Traži",
- "ButtonSelectFolderPath": "Odaberi putanju do folder",
- "ButtonSeries": "Serije",
- "ButtonSetChaptersFromTracks": "Set chapters from tracks",
- "ButtonShare": "Share",
+ "ButtonSelectFolderPath": "Odaberi putanju mape",
+ "ButtonSeries": "Serijali",
+ "ButtonSetChaptersFromTracks": "Postavi poglavlja iz zvučnih zapisa",
+ "ButtonShare": "Podijeli",
"ButtonShiftTimes": "Pomakni vremena",
"ButtonShow": "Prikaži",
"ButtonStartM4BEncode": "Pokreni M4B kodiranje",
- "ButtonStartMetadataEmbed": "Pokreni ugradnju metapodataka",
- "ButtonSubmit": "Submit",
+ "ButtonStartMetadataEmbed": "Pokreni ugradnju meta-podataka",
+ "ButtonStats": "Statistika",
+ "ButtonSubmit": "Pošalji",
"ButtonTest": "Test",
- "ButtonUpload": "Upload",
- "ButtonUploadBackup": "Upload backup",
- "ButtonUploadCover": "Upload Cover",
- "ButtonUploadOPMLFile": "Upload OPML Datoteku",
- "ButtonUserDelete": "Delete user {0}",
- "ButtonUserEdit": "Edit user {0}",
+ "ButtonUnlinkOpenId": "Prekini vezu s OpenID-jem",
+ "ButtonUpload": "Učitaj",
+ "ButtonUploadBackup": "Učitaj sigurnosnu kopiju",
+ "ButtonUploadCover": "Učitaj naslovnicu",
+ "ButtonUploadOPMLFile": "Učitaj OPML datoteku",
+ "ButtonUserDelete": "Izbriši korisnika {0}",
+ "ButtonUserEdit": "Uredi korisnika {0}",
"ButtonViewAll": "Prikaži sve",
"ButtonYes": "Da",
- "ErrorUploadFetchMetadataAPI": "Error fetching metadata",
- "ErrorUploadFetchMetadataNoResults": "Could not fetch metadata - try updating title and/or author",
- "ErrorUploadLacksTitle": "Must have a title",
+ "ErrorUploadFetchMetadataAPI": "Pogreška pri dohvatu meta-podataka",
+ "ErrorUploadFetchMetadataNoResults": "Dohvat meta-podataka nije uspio - pokušajte ispraviti naslov i/ili autora",
+ "ErrorUploadLacksTitle": "Naslov je obavezan",
"HeaderAccount": "Korisnički račun",
+ "HeaderAddCustomMetadataProvider": "Dodaj prilagođenog pružatelja meta-podataka",
"HeaderAdvanced": "Napredno",
- "HeaderAppriseNotificationSettings": "Apprise Notification Settings",
- "HeaderAudiobookTools": "Audiobook File Management alati",
- "HeaderAudioTracks": "Audio Tracks",
- "HeaderAuthentication": "Authentication",
- "HeaderBackups": "Backups",
- "HeaderChangePassword": "Promijeni lozinku",
+ "HeaderAppriseNotificationSettings": "Postavke obavijesti Apprise",
+ "HeaderAudioTracks": "Zvučni zapisi",
+ "HeaderAudiobookTools": "Alati za upravljanje datotekama zvučnih knjiga",
+ "HeaderAuthentication": "Provjera autentičnosti",
+ "HeaderBackups": "Sigurnosne kopije",
+ "HeaderChangePassword": "Promjena zaporke",
"HeaderChapters": "Poglavlja",
- "HeaderChooseAFolder": "Odaberi folder",
- "HeaderCollection": "Kolekcija",
- "HeaderCollectionItems": "Stvari u kolekciji",
- "HeaderCover": "Cover",
- "HeaderCurrentDownloads": "Current Downloads",
- "HeaderCustomMetadataProviders": "Custom Metadata Providers",
- "HeaderDetails": "Detalji",
- "HeaderDownloadQueue": "Download Queue",
- "HeaderEbookFiles": "Ebook Files",
- "HeaderEmail": "Email",
- "HeaderEmailSettings": "Email Settings",
- "HeaderEpisodes": "Epizode",
- "HeaderEreaderDevices": "Ereader Devices",
- "HeaderEreaderSettings": "Ereader Settings",
+ "HeaderChooseAFolder": "Odaberi mapu",
+ "HeaderCollection": "Zbirka",
+ "HeaderCollectionItems": "Stavke u zbirci",
+ "HeaderCover": "Naslovnica",
+ "HeaderCurrentDownloads": "Preuzimanja u tijeku",
+ "HeaderCustomMessageOnLogin": "Prilagođena poruka prilikom prijave",
+ "HeaderCustomMetadataProviders": "Prilagođeni pružatelji meta-podataka",
+ "HeaderDetails": "Pojedinosti",
+ "HeaderDownloadQueue": "Red preuzimanja",
+ "HeaderEbookFiles": "Datoteke e-knjiga",
+ "HeaderEmail": "E-pošta",
+ "HeaderEmailSettings": "Postavke e-pošte",
+ "HeaderEpisodes": "Nastavci",
+ "HeaderEreaderDevices": "E-čitači",
+ "HeaderEreaderSettings": "Postavke e-čitača",
"HeaderFiles": "Datoteke",
"HeaderFindChapters": "Pronađi poglavlja",
"HeaderIgnoredFiles": "Zanemarene datoteke",
- "HeaderItemFiles": "Item Files",
- "HeaderItemMetadataUtils": "Item Metadata Utils",
- "HeaderLastListeningSession": "Posljednja Listening Session",
- "HeaderLatestEpisodes": "Najnovije epizode",
- "HeaderLibraries": "Biblioteke",
- "HeaderLibraryFiles": "Library Files",
- "HeaderLibraryStats": "Library Stats",
- "HeaderListeningSessions": "Listening Sessions",
- "HeaderListeningStats": "Listening Stats",
- "HeaderLogin": "Prijavljivanje",
- "HeaderLogs": "Logs",
- "HeaderManageGenres": "Manage Genres",
- "HeaderManageTags": "Manage Tags",
- "HeaderMapDetails": "Map details",
- "HeaderMatch": "Match",
- "HeaderMetadataOrderOfPrecedence": "Metadata order of precedence",
- "HeaderMetadataToEmbed": "Metapodatci za ugradnju",
+ "HeaderItemFiles": "Datoteke stavke",
+ "HeaderItemMetadataUtils": "Alati za meta-podatke",
+ "HeaderLastListeningSession": "Posljednja sesija slušanja",
+ "HeaderLatestEpisodes": "Najnoviji nastavci",
+ "HeaderLibraries": "Knjižnice",
+ "HeaderLibraryFiles": "Datoteke knjižnice",
+ "HeaderLibraryStats": "Statistika knjižnice",
+ "HeaderListeningSessions": "Sesije slušanja",
+ "HeaderListeningStats": "Statistika slušanja",
+ "HeaderLogin": "Prijava",
+ "HeaderLogs": "Zapisnici",
+ "HeaderManageGenres": "Upravljanje žanrovima",
+ "HeaderManageTags": "Upravljanje oznakama",
+ "HeaderMapDetails": "Mapiranje pojedinosti",
+ "HeaderMatch": "Prepoznavanje",
+ "HeaderMetadataOrderOfPrecedence": "Redoslijed prihvaćanja meta-podataka",
+ "HeaderMetadataToEmbed": "Meta-podatci za ugradnju",
"HeaderNewAccount": "Novi korisnički račun",
- "HeaderNewLibrary": "Nova biblioteka",
+ "HeaderNewLibrary": "Nova knjižnica",
+ "HeaderNotificationCreate": "Izradi obavijest",
+ "HeaderNotificationUpdate": "Ažuriraj obavijest",
"HeaderNotifications": "Obavijesti",
- "HeaderOpenIDConnectAuthentication": "OpenID Connect Authentication",
- "HeaderOpenRSSFeed": "Otvori RSS Feed",
+ "HeaderOpenIDConnectAuthentication": "Prijava na OpenID Connect",
+ "HeaderOpenListeningSessions": "Otvorene sesije slušanja",
+ "HeaderOpenRSSFeed": "Otvori RSS izvor",
"HeaderOtherFiles": "Druge datoteke",
- "HeaderPasswordAuthentication": "Password Authentication",
+ "HeaderPasswordAuthentication": "Provjera autentičnosti zaporkom",
"HeaderPermissions": "Dozvole",
- "HeaderPlayerQueue": "Player Queue",
- "HeaderPlaylist": "Playlist",
- "HeaderPlaylistItems": "Playlist Items",
- "HeaderPodcastsToAdd": "Podcasti za dodati",
- "HeaderPreviewCover": "Pregledaj Cover",
- "HeaderRemoveEpisode": "Ukloni epizodu",
- "HeaderRemoveEpisodes": "Ukloni {0} epizoda/-e",
- "HeaderRSSFeedGeneral": "RSS Details",
- "HeaderRSSFeedIsOpen": "RSS Feed je otvoren",
- "HeaderRSSFeeds": "RSS Feeds",
- "HeaderSavedMediaProgress": "Spremljen Media Progress",
- "HeaderSchedule": "Schedule",
- "HeaderScheduleLibraryScans": "Zakaži automatsko skeniranje biblioteke",
+ "HeaderPlayerQueue": "Redoslijed izvođenja",
+ "HeaderPlayerSettings": "Postavke reproduktora",
+ "HeaderPlaylist": "Popis za izvođenje",
+ "HeaderPlaylistItems": "Stavke popisa za izvođenje",
+ "HeaderPodcastsToAdd": "Podcasti za dodavanje",
+ "HeaderPreviewCover": "Pretpregled naslovnice",
+ "HeaderRSSFeedGeneral": "RSS pojedinosti",
+ "HeaderRSSFeedIsOpen": "RSS izvor je otvoren",
+ "HeaderRSSFeeds": "RSS izvori",
+ "HeaderRemoveEpisode": "Ukloni nastavak",
+ "HeaderRemoveEpisodes": "Ukloni {0} nastavaka",
+ "HeaderSavedMediaProgress": "Spremljen napredak medija",
+ "HeaderSchedule": "Zakazivanje",
+ "HeaderScheduleEpisodeDownloads": "Zakazivanje automatskog preuzimanja nastavaka",
+ "HeaderScheduleLibraryScans": "Zakaži automatsko skeniranje knjižnice",
"HeaderSession": "Sesija",
- "HeaderSetBackupSchedule": "Set Backup Schedule",
+ "HeaderSetBackupSchedule": "Zakazivanje sigurnosne pohrane",
"HeaderSettings": "Postavke",
- "HeaderSettingsDisplay": "Zaslon",
- "HeaderSettingsExperimental": "Eksperimentalni Features",
- "HeaderSettingsGeneral": "Opčenito",
- "HeaderSettingsScanner": "Scanner",
- "HeaderSleepTimer": "Sleep Timer",
- "HeaderStatsLargestItems": "Largest Items",
+ "HeaderSettingsDisplay": "Prikaz",
+ "HeaderSettingsExperimental": "Eksperimentalne značajke",
+ "HeaderSettingsGeneral": "Općenito",
+ "HeaderSettingsScanner": "Skener",
+ "HeaderSleepTimer": "Timer za spavanje",
+ "HeaderStatsLargestItems": "Najveće stavke",
"HeaderStatsLongestItems": "Najduže stavke (sati)",
- "HeaderStatsMinutesListeningChart": "Minuta odslušanih (posljednjih 7 dana)",
+ "HeaderStatsMinutesListeningChart": "Odslušanih minuta (posljednjih 7 dana)",
"HeaderStatsRecentSessions": "Nedavne sesije",
"HeaderStatsTop10Authors": "Top 10 autora",
"HeaderStatsTop5Genres": "Top 5 žanrova",
- "HeaderTableOfContents": "Table of Contents",
+ "HeaderTableOfContents": "Sadržaj",
"HeaderTools": "Alati",
- "HeaderUpdateAccount": "Aktualiziraj Korisnički račun",
- "HeaderUpdateAuthor": "Aktualiziraj autora",
- "HeaderUpdateDetails": "Aktualiziraj detalje",
- "HeaderUpdateLibrary": "Aktualiziraj biblioteku",
- "HeaderUsers": "Korinici",
- "HeaderYearReview": "Year {0} in Review",
- "HeaderYourStats": "Tvoja statistika",
- "LabelAbridged": "Abridged",
- "LabelAbridgedChecked": "Abridged (checked)",
- "LabelAbridgedUnchecked": "Unabridged (unchecked)",
- "LabelAccessibleBy": "Accessible by",
+ "HeaderUpdateAccount": "Ažuriraj korisnički račun",
+ "HeaderUpdateAuthor": "Ažuriraj autora",
+ "HeaderUpdateDetails": "Ažuriraj pojedinosti",
+ "HeaderUpdateLibrary": "Ažuriraj knjižnicu",
+ "HeaderUsers": "Korisnici",
+ "HeaderYearReview": "Pregled godine {0}",
+ "HeaderYourStats": "Vaša statistika",
+ "LabelAbridged": "Skraćeno",
+ "LabelAbridgedChecked": "Skraćeno (označeno)",
+ "LabelAbridgedUnchecked": "Neskraćeno (neoznačeno)",
+ "LabelAccessibleBy": "Dostupno",
"LabelAccountType": "Vrsta korisničkog računa",
"LabelAccountTypeAdmin": "Administrator",
"LabelAccountTypeGuest": "Gost",
"LabelAccountTypeUser": "Korisnik",
"LabelActivity": "Aktivnost",
- "LabelAdded": "Added",
- "LabelAddedAt": "Added At",
- "LabelAddToCollection": "Dodaj u kolekciju",
- "LabelAddToCollectionBatch": "Add {0} Books to Collection",
- "LabelAddToPlaylist": "Add to Playlist",
- "LabelAddToPlaylistBatch": "Add {0} Items to Playlist",
- "LabelAdminUsersOnly": "Admin users only",
- "LabelAll": "All",
+ "LabelAddToCollection": "Dodaj u zbirku",
+ "LabelAddToCollectionBatch": "Dodaj {0} knjiga u zbirku",
+ "LabelAddToPlaylist": "Dodaj na popis za izvođenje",
+ "LabelAddToPlaylistBatch": "Dodaj {0} stavki u popis za izvođenje",
+ "LabelAddedAt": "Dodano",
+ "LabelAddedDate": "Dodano {0}",
+ "LabelAdminUsersOnly": "Samo korisnici administratori",
+ "LabelAll": "Sve",
"LabelAllUsers": "Svi korisnici",
- "LabelAllUsersExcludingGuests": "All users excluding guests",
- "LabelAllUsersIncludingGuests": "All users including guests",
- "LabelAlreadyInYourLibrary": "Already in your library",
- "LabelAppend": "Append",
+ "LabelAllUsersExcludingGuests": "Svi korisnici osim gostiju",
+ "LabelAllUsersIncludingGuests": "Svi korisnici uključujući i goste",
+ "LabelAlreadyInYourLibrary": "Već u vašoj knjižnici",
+ "LabelApiToken": "API Token",
+ "LabelAppend": "Pridodaj",
+ "LabelAudioBitrate": "Kvaliteta zvučnog zapisa (npr. 128k)",
+ "LabelAudioChannels": "Broj zvučnih kanala (1 ili 2)",
+ "LabelAudioCodec": "Zvučni kodek",
"LabelAuthor": "Autor",
- "LabelAuthorFirstLast": "Author (First Last)",
- "LabelAuthorLastFirst": "Author (Last, First)",
+ "LabelAuthorFirstLast": "Autor (Ime Prezime)",
+ "LabelAuthorLastFirst": "Autor (Prezime, Ime)",
"LabelAuthors": "Autori",
- "LabelAutoDownloadEpisodes": "Automatski preuzmi epizode",
- "LabelAutoFetchMetadata": "Auto Fetch Metadata",
- "LabelAutoFetchMetadataHelp": "Fetches metadata for title, author, and series to streamline uploading. Additional metadata may have to be matched after upload.",
- "LabelAutoLaunch": "Auto Launch",
- "LabelAutoLaunchDescription": "Redirect to the auth provider automatically when navigating to the login page (manual override path /login?autoLaunch=0)",
- "LabelAutoRegister": "Auto Register",
- "LabelAutoRegisterDescription": "Automatically create new users after logging in",
- "LabelBackToUser": "Nazad k korisniku",
- "LabelBackupLocation": "Backup Location",
- "LabelBackupsEnableAutomaticBackups": "Uključi automatski backup",
- "LabelBackupsEnableAutomaticBackupsHelp": "Backups spremljeni u /metadata/backups",
- "LabelBackupsMaxBackupSize": "Maksimalna količina backupa (u GB)",
- "LabelBackupsMaxBackupSizeHelp": "As a safeguard against misconfiguration, backups will fail if they exceed the configured size.",
- "LabelBackupsNumberToKeep": "Broj backupa zadržati",
- "LabelBackupsNumberToKeepHelp": "Samo 1 backup će biti odjednom obrisan. Ako koristite više njih, morati ćete ih ručno ukloniti.",
- "LabelBitrate": "Bitrate",
+ "LabelAutoDownloadEpisodes": "Automatski preuzmi nastavke",
+ "LabelAutoFetchMetadata": "Automatski dohvati meta-podatke",
+ "LabelAutoFetchMetadataHelp": "Dohvaća meta-podatke o naslovu, autoru i serijalu kako bi pojednostavnio učitavanje. Dodatni meta-podatci će se možda morati dohvatiti nakon učitavanja.",
+ "LabelAutoLaunch": "Automatsko pokretanje",
+ "LabelAutoLaunchDescription": "Automatski preusmjeri na pružatelja autentifikacijskih usluga prilikom otvaranja stranice za prijavu (putanja za ručno zaobilaženje opcije /login?autoLaunch=0)",
+ "LabelAutoRegister": "Automatska registracija",
+ "LabelAutoRegisterDescription": "Automatski izradi nove korisnike nakon prijave",
+ "LabelBackToUser": "Povratak na korisnika",
+ "LabelBackupAudioFiles": "Sigurnosno kopiranje zvučnih datoteka",
+ "LabelBackupLocation": "Lokacija sigurnosnih kopija",
+ "LabelBackupsEnableAutomaticBackups": "Omogući automatsku izradu sigurnosnih kopija",
+ "LabelBackupsEnableAutomaticBackupsHelp": "Sigurnosne kopije spremaju se u /metadata/backups",
+ "LabelBackupsMaxBackupSize": "Maksimalna veličina sigurnosne kopije (u GB) (0 za neograničeno)",
+ "LabelBackupsMaxBackupSizeHelp": "U svrhu sprečavanja izrade krive konfiguracije, sigurnosne kopije neće se izraditi ako su veće od zadane veličine.",
+ "LabelBackupsNumberToKeep": "Broj sigurnosnih kopija za čuvanje",
+ "LabelBackupsNumberToKeepHelp": "Moguće je izbrisati samo jednu po jednu sigurnosnu kopiju, ako ih već imate više trebat ćete ih ručno ukloniti.",
+ "LabelBitrate": "Protok",
+ "LabelBonus": "Bonus",
"LabelBooks": "Knjige",
- "LabelButtonText": "Button Text",
- "LabelByAuthor": "by {0}",
- "LabelChangePassword": "Promijeni lozinku",
- "LabelChannels": "Channels",
- "LabelChapters": "Chapters",
- "LabelChaptersFound": "poglavlja pronađena",
- "LabelChapterTitle": "Ime poglavlja",
- "LabelClickForMoreInfo": "Click for more info",
- "LabelClosePlayer": "Close player",
- "LabelCodec": "Codec",
- "LabelCollapseSeries": "Collapse Series",
- "LabelCollection": "Collection",
- "LabelCollections": "Kolekcije",
- "LabelComplete": "Complete",
- "LabelConfirmPassword": "Potvrdi lozinku",
- "LabelContinueListening": "Nastavi slušanje",
- "LabelContinueReading": "Continue Reading",
- "LabelContinueSeries": "Nastavi seriju",
- "LabelCover": "Cover",
- "LabelCoverImageURL": "URL od covera",
- "LabelCreatedAt": "Napravljeno",
- "LabelCronExpression": "Cron Expression",
+ "LabelButtonText": "Tekst gumba",
+ "LabelByAuthor": "autor: {0}",
+ "LabelChangePassword": "Promijeni zaporku",
+ "LabelChannels": "Kanali",
+ "LabelChapterCount": "{0} Poglavlje/a",
+ "LabelChapterTitle": "Naslov poglavlja",
+ "LabelChapters": "Poglavlja",
+ "LabelChaptersFound": "poglavlja pronađeno",
+ "LabelClickForMoreInfo": "Kliknite za više informacija",
+ "LabelClickToUseCurrentValue": "Kliknite za trenutnu vrijednost",
+ "LabelClosePlayer": "Zatvori reproduktor",
+ "LabelCodec": "Kodek",
+ "LabelCollapseSeries": "Serijale prikaži sažeto",
+ "LabelCollapseSubSeries": "Podserijale prikaži sažeto",
+ "LabelCollection": "Zbirka",
+ "LabelCollections": "Zbirke",
+ "LabelComplete": "Dovršeno",
+ "LabelConfirmPassword": "Potvrda zaporke",
+ "LabelContinueListening": "Nastavi slušati",
+ "LabelContinueReading": "Nastavi čitati",
+ "LabelContinueSeries": "Nastavi serijal",
+ "LabelCover": "Naslovnica",
+ "LabelCoverImageURL": "URL naslovnice",
+ "LabelCreatedAt": "Izrađen",
+ "LabelCronExpression": "Cron izraz",
"LabelCurrent": "Trenutan",
"LabelCurrently": "Trenutno:",
- "LabelCustomCronExpression": "Custom Cron Expression:",
- "LabelDatetime": "Datetime",
- "LabelDeleteFromFileSystemCheckbox": "Delete from file system (uncheck to only remove from database)",
+ "LabelCustomCronExpression": "Prilagođeni CRON izraz:",
+ "LabelDatetime": "Datum i vrijeme",
+ "LabelDays": "Dani",
+ "LabelDeleteFromFileSystemCheckbox": "Izbriši datoteke (uklonite oznaku ako stavku želite izbrisati samo iz baze podataka)",
"LabelDescription": "Opis",
"LabelDeselectAll": "Odznači sve",
"LabelDevice": "Uređaj",
"LabelDeviceInfo": "O uređaju",
- "LabelDeviceIsAvailableTo": "Device is available to...",
+ "LabelDeviceIsAvailableTo": "Uređaj je dostupan...",
"LabelDirectory": "Direktorij",
- "LabelDiscFromFilename": "CD iz imena datoteke",
- "LabelDiscFromMetadata": "CD iz metapodataka",
- "LabelDiscover": "Discover",
+ "LabelDiscFromFilename": "Disk iz imena datoteke",
+ "LabelDiscFromMetadata": "Disk iz metapodataka",
+ "LabelDiscover": "Otkrij",
"LabelDownload": "Preuzmi",
- "LabelDownloadNEpisodes": "Download {0} episodes",
+ "LabelDownloadNEpisodes": "Preuzmi {0} nastavak/a",
"LabelDuration": "Trajanje",
- "LabelDurationComparisonExactMatch": "(exact match)",
- "LabelDurationComparisonLonger": "({0} longer)",
- "LabelDurationComparisonShorter": "({0} shorter)",
+ "LabelDurationComparisonExactMatch": "(točno podudaranje)",
+ "LabelDurationComparisonLonger": "({0} duže)",
+ "LabelDurationComparisonShorter": "({0} kraće)",
"LabelDurationFound": "Pronađeno trajanje:",
- "LabelEbook": "Ebook",
- "LabelEbooks": "Ebooks",
+ "LabelEbook": "E-knjiga",
+ "LabelEbooks": "E-knjige",
"LabelEdit": "Uredi",
- "LabelEmail": "Email",
- "LabelEmailSettingsFromAddress": "From Address",
- "LabelEmailSettingsSecure": "Secure",
- "LabelEmailSettingsSecureHelp": "If true the connection will use TLS when connecting to server. If false then TLS is used if server supports the STARTTLS extension. In most cases set this value to true if you are connecting to port 465. For port 587 or 25 keep it false. (from nodemailer.com/smtp/#authentication)",
- "LabelEmailSettingsTestAddress": "Test Address",
- "LabelEmbeddedCover": "Embedded Cover",
- "LabelEnable": "Uključi",
+ "LabelEmail": "E-pošta",
+ "LabelEmailSettingsFromAddress": "Adresa pošiljatelja",
+ "LabelEmailSettingsRejectUnauthorized": "Odbij neovjerene certifikate",
+ "LabelEmailSettingsRejectUnauthorizedHelp": "Onemogućavanjem ovjere SSL certifikata izlažete vezu sigurnosnim rizicima, poput MITM napada. Ovu opciju isključite samo ukoliko razumijete što ona znači i vjerujete poslužitelju e-pošte s kojim se povezujete.",
+ "LabelEmailSettingsSecure": "Sigurno",
+ "LabelEmailSettingsSecureHelp": "Ako je uključeno, prilikom spajanja na poslužitelj upotrebljavat će se TLS. Ako je isključeno, TLS se upotrebljava samo ako poslužitelj podržava STARTTLS proširenje. U većini slučajeva, ovu ćete vrijednost uključiti ako se spajate na priključak 465. Za priključke 587 ili 25 ostavite je isključenom. (Izvor: nodemailer.com/smtp/#authentication)",
+ "LabelEmailSettingsTestAddress": "Probna adresa",
+ "LabelEmbeddedCover": "Ugrađena naslovnica",
+ "LabelEnable": "Omogući",
+ "LabelEncodingBackupLocation": "Sigurnosna kopija vaših izvornih zvučnih datoteka čuvat će se u mapi:",
+ "LabelEncodingChaptersNotEmbedded": "Poglavlja se ne ugrađuju u zvučne knjige koje se sastoje od više zvučnih zapisa.",
+ "LabelEncodingClearItemCache": "Svakako redovito praznite predmemoriju stavki.",
+ "LabelEncodingFinishedM4B": "Stvorene M4B datoteke spremit će se u vašu mapu sa zvučnim knjigama:",
+ "LabelEncodingInfoEmbedded": "Meta-podatci će se ugraditi u zvučne zapise u vašoj mapi sa zvučnim knjigama.",
+ "LabelEncodingStartedNavigation": "Nakon pokretanja zadatka možete napustiti ovu stranicu.",
+ "LabelEncodingTimeWarning": "Kodiranje može potrajati do 30 minuta.",
+ "LabelEncodingWarningAdvancedSettings": "Pažnja: Ne mijenjajte ove postavke ako niste temeljito upoznati s opcijama kodiranja u ffmpegu.",
+ "LabelEncodingWatcherDisabled": "Ako vam je onemogućeno praćenje mape, ovu ćete zvučnu knjigu poslije morati ponovno skenirati.",
"LabelEnd": "Kraj",
- "LabelEpisode": "Epizoda",
- "LabelEpisodeTitle": "Naslov epizode",
- "LabelEpisodeType": "Vrsta epizode",
- "LabelExample": "Example",
- "LabelExplicit": "Explicit",
- "LabelExplicitChecked": "Explicit (checked)",
- "LabelExplicitUnchecked": "Not Explicit (unchecked)",
- "LabelFeedURL": "Feed URL",
- "LabelFetchingMetadata": "Fetching Metadata",
+ "LabelEndOfChapter": "Kraj poglavlja",
+ "LabelEpisode": "Nastavak",
+ "LabelEpisodeNotLinkedToRssFeed": "Nastavak nije povezan s RSS izvorom",
+ "LabelEpisodeNumber": "{0}. nastavak",
+ "LabelEpisodeTitle": "Naslov nastavka",
+ "LabelEpisodeType": "Vrsta nastavka",
+ "LabelEpisodeUrlFromRssFeed": "URL nastavka iz RSS izvora",
+ "LabelEpisodes": "Nastavci",
+ "LabelEpisodic": "U nastavcima",
+ "LabelExample": "Primjer",
+ "LabelExpandSeries": "Serijal prikaži prošireno",
+ "LabelExpandSubSeries": "Podserijal prikaži prošireno",
+ "LabelExplicit": "Eksplicitni sadržaj",
+ "LabelExplicitChecked": "Eksplicitni sadržaj (označeno)",
+ "LabelExplicitUnchecked": "Nije eksplicitni sadržaj (odznačeno)",
+ "LabelExportOPML": "Izvoz OPML-a",
+ "LabelFeedURL": "URL izvora",
+ "LabelFetchingMetadata": "Dohvaćanje meta-podataka",
"LabelFile": "Datoteka",
- "LabelFileBirthtime": "File Birthtime",
- "LabelFileModified": "File Modified",
- "LabelFilename": "Ime datoteke",
+ "LabelFileBirthtime": "Datoteka stvorena",
+ "LabelFileBornDate": "Stvoreno {0}",
+ "LabelFileModified": "Datoteka izmijenjena",
+ "LabelFileModifiedDate": "Izmijenjeno {0}",
+ "LabelFilename": "Naziv datoteke",
"LabelFilterByUser": "Filtriraj po korisniku",
"LabelFindEpisodes": "Pronađi epizode",
- "LabelFinished": "Finished",
- "LabelFolder": "Folder",
- "LabelFolders": "Folderi",
- "LabelFontBold": "Bold",
- "LabelFontFamily": "Font family",
- "LabelFontItalic": "Italic",
- "LabelFontScale": "Font scale",
- "LabelFontStrikethrough": "Strikethrough",
+ "LabelFinished": "Dovršeno",
+ "LabelFolder": "Mapa",
+ "LabelFolders": "Mape",
+ "LabelFontBold": "Podebljano",
+ "LabelFontBoldness": "Debljina slova",
+ "LabelFontFamily": "Skupina fontova",
+ "LabelFontItalic": "Kurziv",
+ "LabelFontScale": "Veličina slova",
+ "LabelFontStrikethrough": "Precrtano",
"LabelFormat": "Format",
- "LabelGenre": "Genre",
+ "LabelFull": "Cijeli",
+ "LabelGenre": "Žanr",
"LabelGenres": "Žanrovi",
"LabelHardDeleteFile": "Obriši datoteku zauvijek",
- "LabelHasEbook": "Has ebook",
- "LabelHasSupplementaryEbook": "Has supplementary ebook",
- "LabelHighestPriority": "Highest priority",
- "LabelHost": "Host",
+ "LabelHasEbook": "Ima e-knjigu",
+ "LabelHasSupplementaryEbook": "Ima dopunsku e-knjigu",
+ "LabelHideSubtitles": "Skrij podnaslove",
+ "LabelHighestPriority": "Najviši prioritet",
+ "LabelHost": "Poslužitelj",
"LabelHour": "Sat",
+ "LabelHours": "Sati",
"LabelIcon": "Ikona",
- "LabelImageURLFromTheWeb": "Image URL from the web",
- "LabelIncludeInTracklist": "Dodaj u Tracklist",
- "LabelIncomplete": "Nepotpuno",
+ "LabelImageURLFromTheWeb": "URL slike s weba",
"LabelInProgress": "U tijeku",
+ "LabelIncludeInTracklist": "Uključi u popisu zvučnih zapisa",
+ "LabelIncomplete": "Nepotpuno",
"LabelInterval": "Interval",
- "LabelIntervalCustomDailyWeekly": "Custom daily/weekly",
- "LabelIntervalEvery12Hours": "Every 12 hours",
- "LabelIntervalEvery15Minutes": "Every 15 minutes",
- "LabelIntervalEvery2Hours": "Every 2 hours",
- "LabelIntervalEvery30Minutes": "Every 30 minutes",
- "LabelIntervalEvery6Hours": "Every 6 hours",
- "LabelIntervalEveryDay": "Every day",
- "LabelIntervalEveryHour": "Every hour",
- "LabelInvert": "Invert",
+ "LabelIntervalCustomDailyWeekly": "Prilagođeno dnevno/tjedno",
+ "LabelIntervalEvery12Hours": "Svakih 12 sati",
+ "LabelIntervalEvery15Minutes": "Svakih 15 minuta",
+ "LabelIntervalEvery2Hours": "Svaka 2 sata",
+ "LabelIntervalEvery30Minutes": "Svakih 30 minuta",
+ "LabelIntervalEvery6Hours": "Svakih 6 sati",
+ "LabelIntervalEveryDay": "Svaki dan",
+ "LabelIntervalEveryHour": "Svaki sat",
+ "LabelInvert": "Obrni",
"LabelItem": "Stavka",
+ "LabelJumpBackwardAmount": "Dužina skoka unatrag",
+ "LabelJumpForwardAmount": "Dužina skoka unaprijed",
"LabelLanguage": "Jezik",
- "LabelLanguageDefaultServer": "Default jezik servera",
- "LabelLastBookAdded": "Last Book Added",
- "LabelLastBookUpdated": "Last Book Updated",
- "LabelLastSeen": "Zadnje pogledano",
- "LabelLastTime": "Prošli put",
- "LabelLastUpdate": "Zadnja aktualizacija",
- "LabelLayout": "Layout",
- "LabelLayoutSinglePage": "Single page",
- "LabelLayoutSplitPage": "Split page",
+ "LabelLanguageDefaultServer": "Zadani jezik poslužitelja",
+ "LabelLanguages": "Jezici",
+ "LabelLastBookAdded": "Zadnja dodana knjiga",
+ "LabelLastBookUpdated": "Zadnja ažurirana knjiga",
+ "LabelLastSeen": "Zadnji puta viđen",
+ "LabelLastTime": "Zadnji puta",
+ "LabelLastUpdate": "Zadnje ažuriranje",
+ "LabelLayout": "Prikaz",
+ "LabelLayoutSinglePage": "Jedna stranica",
+ "LabelLayoutSplitPage": "Podijeli stranicu",
"LabelLess": "Manje",
- "LabelLibrariesAccessibleToUser": "Biblioteke pristupačne korisniku",
- "LabelLibrary": "Biblioteka",
- "LabelLibraryItem": "Stavka biblioteke",
- "LabelLibraryName": "Ime biblioteke",
- "LabelLimit": "Limit",
- "LabelLineSpacing": "Line spacing",
- "LabelListenAgain": "Slušaj ponovno",
+ "LabelLibrariesAccessibleToUser": "Knjižnice dostupne korisniku",
+ "LabelLibrary": "Knjižnica",
+ "LabelLibraryFilterSublistEmpty": "Br {0}",
+ "LabelLibraryItem": "Stavka knjižnice",
+ "LabelLibraryName": "Ime knjižnice",
+ "LabelLimit": "Ograničenje",
+ "LabelLineSpacing": "Razmak između redaka",
+ "LabelListenAgain": "Ponovno poslušaj",
"LabelLogLevelDebug": "Debug",
"LabelLogLevelInfo": "Info",
"LabelLogLevelWarn": "Warn",
"LabelLookForNewEpisodesAfterDate": "Traži nove epizode nakon ovog datuma",
- "LabelLowestPriority": "Lowest Priority",
- "LabelMatchExistingUsersBy": "Match existing users by",
- "LabelMatchExistingUsersByDescription": "Used for connecting existing users. Once connected, users will be matched by a unique id from your SSO provider",
- "LabelMediaPlayer": "Media Player",
- "LabelMediaType": "Media Type",
- "LabelMetadataOrderOfPrecedenceDescription": "Higher priority metadata sources will override lower priority metadata sources",
- "LabelMetadataProvider": "Poslužitelj metapodataka ",
- "LabelMetaTag": "Meta Tag",
- "LabelMetaTags": "Meta Tags",
+ "LabelLowestPriority": "Najniži prioritet",
+ "LabelMatchExistingUsersBy": "Prepoznaj postojeće korisnike pomoću",
+ "LabelMatchExistingUsersByDescription": "Rabi se za povezivanje postojećih korisnika. Nakon što se spoje, korisnike se prepoznaje temeljem jedinstvene oznake vašeg pružatelja SSO usluga",
+ "LabelMaxEpisodesToDownload": "Najveći broj nastavaka za preuzimanje. 0 za neograničeno.",
+ "LabelMaxEpisodesToDownloadPerCheck": "Najviše novih nastavaka za preuzimanje po provjeri",
+ "LabelMaxEpisodesToKeep": "Najviše nastavaka za čuvanje",
+ "LabelMaxEpisodesToKeepHelp": "Ako je vrijednost 0, nema ograničenja broja. Nakon automatskog preuzimanja novog nastavka ova funkcija briše najstariji nastavak ako ih ima više od zadanog broja. Ovo briše samo jedan nastavak po novom preuzetom nastavku.",
+ "LabelMediaPlayer": "Reproduktor medijskih sadržaja",
+ "LabelMediaType": "Vrsta medija",
+ "LabelMetaTag": "Meta oznaka",
+ "LabelMetaTags": "Meta oznake",
+ "LabelMetadataOrderOfPrecedenceDescription": "Izvori meta-podataka višeg prioriteta nadjačat će izvore nižeg prioriteta",
+ "LabelMetadataProvider": "Pružatelj meta-podataka",
"LabelMinute": "Minuta",
+ "LabelMinutes": "Minute",
"LabelMissing": "Nedostaje",
- "LabelMissingEbook": "Has no ebook",
- "LabelMissingSupplementaryEbook": "Has no supplementary ebook",
- "LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs",
- "LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is audiobookshelf://oauth, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (*) as the sole entry permits any URI.",
+ "LabelMissingEbook": "Nema e-knjigu",
+ "LabelMissingSupplementaryEbook": "Nema dopunsku e-knjigu",
+ "LabelMobileRedirectURIs": "Dopušteni URI-ji za preusmjeravanje mobilne aplikacije",
+ "LabelMobileRedirectURIsDescription": "Ovo je popis dopuštenih važećih URI-ja za preusmjeravanje mobilne aplikacije. Zadana vrijednost je audiobookshelf://oauth, nju možete ukloniti ili dopuniti dodatnim URI-jima za integraciju aplikacija trećih strana. Upisom zvjezdice (*) kao jedinim unosom možete dozvoliti bilo koji URI.",
"LabelMore": "Više",
- "LabelMoreInfo": "More Info",
+ "LabelMoreInfo": "Više informacija",
"LabelName": "Ime",
- "LabelNarrator": "Narrator",
- "LabelNarrators": "Naratori",
+ "LabelNarrator": "Pripovjedač",
+ "LabelNarrators": "Pripovjedači",
"LabelNew": "Novo",
+ "LabelNewPassword": "Nova zaporka",
"LabelNewestAuthors": "Najnoviji autori",
"LabelNewestEpisodes": "Najnovije epizode",
- "LabelNewPassword": "Nova lozinka",
- "LabelNextBackupDate": "Next backup date",
- "LabelNextScheduledRun": "Next scheduled run",
- "LabelNoEpisodesSelected": "No episodes selected",
+ "LabelNextBackupDate": "Sljedeća izrada sigurnosne kopije",
+ "LabelNextScheduledRun": "Sljedeće zakazano izvođenje",
+ "LabelNoCustomMetadataProviders": "Nema prilagođenih pružatelja meta-podataka",
+ "LabelNoEpisodesSelected": "Nema odabranih nastavaka",
+ "LabelNotFinished": "Nije dovršeno",
+ "LabelNotStarted": "Nije započeto",
"LabelNotes": "Bilješke",
- "LabelNotFinished": "Nedovršeno",
- "LabelNotificationAppriseURL": "Apprise URL(s)",
+ "LabelNotificationAppriseURL": "Apprise URL(ovi)",
"LabelNotificationAvailableVariables": "Dostupne varijable",
- "LabelNotificationBodyTemplate": "Body Template",
- "LabelNotificationEvent": "Notification Event",
+ "LabelNotificationBodyTemplate": "Predložak sadržaja",
+ "LabelNotificationEvent": "Događaj za obavijest",
+ "LabelNotificationTitleTemplate": "Predložak naslova",
"LabelNotificationsMaxFailedAttempts": "Maksimalan broj neuspjelih pokušaja",
- "LabelNotificationsMaxFailedAttemptsHelp": "Obavijesti će biti isključene ako par puta budu neuspješno poslane.",
- "LabelNotificationsMaxQueueSize": "Maksimalna veličina queuea za notification events",
- "LabelNotificationsMaxQueueSizeHelp": "Samo 1 event po sekundi može biti pokrenut. Eventi će biti ignorirani ako je queue na maksimalnoj veličini. To spriječava spammanje s obavijestima.",
- "LabelNotificationTitleTemplate": "Title Template",
- "LabelNotStarted": "Not Started",
- "LabelNumberOfBooks": "Number of Books",
- "LabelNumberOfEpisodes": "# of Episodes",
- "LabelOpenIDAdvancedPermsClaimDescription": "Name of the OpenID claim that contains advanced permissions for user actions within the application which will apply to non-admin roles (if configured). If the claim is missing from the response, access to ABS will be denied. If a single option is missing, it will be treated as false. Ensure the identity provider's claim matches the expected structure:",
- "LabelOpenIDClaims": "Leave the following options empty to disable advanced group and permissions assignment, automatically assigning 'User' group then.",
- "LabelOpenIDGroupClaimDescription": "Name of the OpenID claim that contains a list of the user's groups. Commonly referred to as groups. If configured, the application will automatically assign roles based on the user's group memberships, provided that these groups are named case-insensitively 'admin', 'user', or 'guest' in the claim. The claim should contain a list, and if a user belongs to multiple groups, the application will assign the role corresponding to the highest level of access. If no group matches, access will be denied.",
+ "LabelNotificationsMaxFailedAttemptsHelp": "Obavijesti će biti isključene ako slanje ne uspije nakon ovoliko pokušaja",
+ "LabelNotificationsMaxQueueSize": "Najveći broj događaja za obavijest u redu čekanja",
+ "LabelNotificationsMaxQueueSizeHelp": "Događaji se mogu okinuti samo jednom u sekundi. Događaji će se zanemariti ako je red čekanja pun. Ovo sprečava prekomjerno slanje obavijesti.",
+ "LabelNumberOfBooks": "Broj knjiga",
+ "LabelNumberOfEpisodes": "broj nastavaka",
+ "LabelOpenIDAdvancedPermsClaimDescription": "Naziv OpenID zahtjeva koji sadrži napredna dopuštenja za korisničke radnje u aplikaciji koje će se primijeniti na ne-administratorske uloge (ako su konfigurirane). Ako zahtjev nedostaje u odgovoru, pristup ABS-u neće se odobriti. Ako i jedna opcija nedostaje, smatrat će se da je false. Pripazite da zahtjev pružatelja identiteta uvijek odgovara očekivanoj strukturi:",
+ "LabelOpenIDClaims": "Sljedeće opcije ostavite praznima ako želite onemogućiti napredno dodjeljivanje grupa i dozvola, odnosno ako želite automatski dodijeliti grupu 'korisnik'.",
+ "LabelOpenIDGroupClaimDescription": "Naziv OpenID zahtjeva koji sadrži popis korisnikovih grupa. Često se naziva groups. Ako se konfigurira, aplikacija će automatski dodijeliti uloge temeljem korisnikovih članstava u grupama, pod uvjetom da se iste zovu 'admin', 'user' ili 'guest' u zahtjevu (ne razlikuju se velika i mala slova). Zahtjev treba sadržavati popis i ako je korisnik član više grupa, aplikacija će dodijeliti ulogu koja odgovara najvišoj razini pristupa. Ukoliko se niti jedna grupa ne podudara, pristup će biti onemogućen.",
"LabelOpenRSSFeed": "Otvori RSS Feed",
- "LabelOverwrite": "Overwrite",
- "LabelPassword": "Lozinka",
+ "LabelOverwrite": "Prepiši",
+ "LabelPaginationPageXOfY": "Stranica {0} od {1}",
+ "LabelPassword": "Zaporka",
"LabelPath": "Putanja",
- "LabelPermissionsAccessAllLibraries": "Ima pristup svim bibliotekama",
- "LabelPermissionsAccessAllTags": "Ima pristup svim tagovima",
- "LabelPermissionsAccessExplicitContent": "Ima pristup eksplicitnom sadržzaju",
+ "LabelPermanent": "Trajno",
+ "LabelPermissionsAccessAllLibraries": "Ima pristup svim knjižnicama",
+ "LabelPermissionsAccessAllTags": "Ima pristup svim oznakama",
+ "LabelPermissionsAccessExplicitContent": "Ima pristup eksplicitnom sadržaju",
+ "LabelPermissionsCreateEreader": "Može stvoriti e-čitač",
"LabelPermissionsDelete": "Smije brisati",
"LabelPermissionsDownload": "Smije preuzimati",
- "LabelPermissionsUpdate": "Smije aktualizirati",
- "LabelPermissionsUpload": "Smije uploadati",
- "LabelPersonalYearReview": "Your Year in Review ({0})",
- "LabelPhotoPathURL": "Slika putanja/URL",
- "LabelPlaylists": "Playlists",
- "LabelPlayMethod": "Vrsta reprodukcije",
+ "LabelPermissionsUpdate": "Smije ažurirati",
+ "LabelPermissionsUpload": "Smije učitavati",
+ "LabelPersonalYearReview": "Vaš godišnji pregled ({0})",
+ "LabelPhotoPathURL": "Putanja ili URL fotografije",
+ "LabelPlayMethod": "Način reprodukcije",
+ "LabelPlayerChapterNumberMarker": "{0} od {1}",
+ "LabelPlaylists": "Popisi za izvođenje",
"LabelPodcast": "Podcast",
- "LabelPodcasts": "Podcasts",
- "LabelPodcastSearchRegion": "Područje pretrage podcasta",
- "LabelPodcastType": "Podcast Type",
- "LabelPort": "Port",
- "LabelPrefixesToIgnore": "Prefiksi za ignorirati (mala i velika slova nisu bitna)",
- "LabelPreventIndexing": "Prevent your feed from being indexed by iTunes and Google podcast directories",
- "LabelPrimaryEbook": "Primary ebook",
+ "LabelPodcastSearchRegion": "Zemljopisno područje kod pretraživanja podcasta",
+ "LabelPodcastType": "Vrsta podcasta",
+ "LabelPodcasts": "Podcasti",
+ "LabelPort": "Priključak",
+ "LabelPrefixesToIgnore": "Prefiksi koji se zanemaruju (mala i velika slova nisu bitna)",
+ "LabelPreventIndexing": "Spriječite da iTunes i Google indeksiraju vaš feed za svoje popise podcasta",
+ "LabelPrimaryEbook": "Primarna e-knjiga",
"LabelProgress": "Napredak",
"LabelProvider": "Dobavljač",
- "LabelPubDate": "Datam izdavanja",
+ "LabelProviderAuthorizationValue": "Vrijednost autorizacijskog zaglavlja",
+ "LabelPubDate": "Datum izdavanja",
+ "LabelPublishYear": "Godina objavljivanja",
+ "LabelPublishedDate": "Objavljeno {0}",
+ "LabelPublishedDecade": "Desetljeće izdanja",
+ "LabelPublishedDecades": "Desetljeća izdanja",
"LabelPublisher": "Izdavač",
- "LabelPublishYear": "Godina izdavanja",
- "LabelRead": "Read",
- "LabelReadAgain": "Read Again",
- "LabelReadEbookWithoutProgress": "Read ebook without keeping progress",
+ "LabelPublishers": "Izdavači",
+ "LabelRSSFeedCustomOwnerEmail": "Prilagođena adresa e-pošte vlasnika",
+ "LabelRSSFeedCustomOwnerName": "Prilagođeno ime vlasnika",
+ "LabelRSSFeedOpen": "RSS izvor otvoren",
+ "LabelRSSFeedPreventIndexing": "Onemogući indeksiranje",
+ "LabelRSSFeedSlug": "Slug RSS izvora",
+ "LabelRSSFeedURL": "URL RSS izvora",
+ "LabelRandomly": "Nasumično",
+ "LabelReAddSeriesToContinueListening": "Ponovno dodaj serijal u Nastavi slušati",
+ "LabelRead": "Čitaj",
+ "LabelReadAgain": "Ponovno čitaj",
+ "LabelReadEbookWithoutProgress": "Čitaj e-knjige bez praćenja napretka",
+ "LabelRecentSeries": "Najnoviji serijali",
"LabelRecentlyAdded": "Nedavno dodano",
- "LabelRecentSeries": "Nedavne serije",
- "LabelRecommended": "Recommended",
- "LabelRedo": "Redo",
+ "LabelRecommended": "Preporučeno",
+ "LabelRedo": "Ponovi",
"LabelRegion": "Regija",
"LabelReleaseDate": "Datum izlaska",
- "LabelRemoveCover": "Remove cover",
- "LabelRowsPerPage": "Rows per page",
- "LabelRSSFeedCustomOwnerEmail": "Custom owner Email",
- "LabelRSSFeedCustomOwnerName": "Custom owner Name",
- "LabelRSSFeedOpen": "RSS Feed Open",
- "LabelRSSFeedPreventIndexing": "Prevent Indexing",
- "LabelRSSFeedSlug": "RSS Feed Slug",
- "LabelRSSFeedURL": "RSS Feed URL",
+ "LabelRemoveAllMetadataAbs": "Ukloni sve datoteke metadata.abs",
+ "LabelRemoveAllMetadataJson": "Ukloni sve datoteke metadata.json",
+ "LabelRemoveCover": "Ukloni naslovnicu",
+ "LabelRemoveMetadataFile": "Ukloni datoteke s meta-podatcima iz mapa knjižničkih stavki",
+ "LabelRemoveMetadataFileHelp": "Uklanjanje svih datoteka metadata.json i metadata.abs u vaših {0} mapa.",
+ "LabelRowsPerPage": "Redaka po stranici",
"LabelSearchTerm": "Traži pojam",
"LabelSearchTitle": "Traži naslov",
"LabelSearchTitleOrASIN": "Traži naslov ili ASIN",
"LabelSeason": "Sezona",
- "LabelSelectAll": "Select all",
- "LabelSelectAllEpisodes": "Select all episodes",
- "LabelSelectEpisodesShowing": "Select {0} episodes showing",
- "LabelSelectUsers": "Select users",
- "LabelSendEbookToDevice": "Send Ebook to...",
- "LabelSequence": "Sekvenca",
- "LabelSeries": "Serije",
- "LabelSeriesName": "Ime serije",
- "LabelSeriesProgress": "Series Progress",
- "LabelServerYearReview": "Server Year in Review ({0})",
- "LabelSetEbookAsPrimary": "Set as primary",
- "LabelSetEbookAsSupplementary": "Set as supplementary",
- "LabelSettingsAudiobooksOnly": "Audiobooks only",
- "LabelSettingsAudiobooksOnlyHelp": "Enabling this setting will ignore ebook files unless they are inside an audiobook folder in which case they will be set as supplementary ebooks",
- "LabelSettingsBookshelfViewHelp": "Skeumorfski (što god to bilo) dizajn sa drvenim policama",
- "LabelSettingsChromecastSupport": "Chromecast podrška",
+ "LabelSeasonNumber": "{0}. sezona",
+ "LabelSelectAll": "Označi sve",
+ "LabelSelectAllEpisodes": "Označi sve nastavke",
+ "LabelSelectEpisodesShowing": "Prikazujem {0} odabranih nastavaka",
+ "LabelSelectUsers": "Označi korisnike",
+ "LabelSendEbookToDevice": "Pošalji e-knjigu",
+ "LabelSequence": "Slijed",
+ "LabelSerial": "Serijal",
+ "LabelSeries": "Serijal",
+ "LabelSeriesName": "Ime serijala",
+ "LabelSeriesProgress": "Napredak u serijalu",
+ "LabelServerLogLevel": "Razina zapisa poslužitelja",
+ "LabelServerYearReview": "Godišnji pregled poslužitelja ({0})",
+ "LabelSetEbookAsPrimary": "Postavi kao primarno",
+ "LabelSetEbookAsSupplementary": "Postavi kao dopunsko",
+ "LabelSettingsAudiobooksOnly": "Samo zvučne knjige",
+ "LabelSettingsAudiobooksOnlyHelp": "Ako uključite ovu mogućnost, sustav će zanemariti datoteke e-knjiga ukoliko se ne nalaze u mapi zvučne knjige, gdje će se smatrati dopunskim e-knjigama",
+ "LabelSettingsBookshelfViewHelp": "Skeumorfni dizajn sa drvenim policama",
+ "LabelSettingsChromecastSupport": "Podrška za Chromecast",
"LabelSettingsDateFormat": "Format datuma",
- "LabelSettingsDisableWatcher": "Isključi Watchera",
- "LabelSettingsDisableWatcherForLibrary": "Isključi folder watchera za biblioteku",
- "LabelSettingsDisableWatcherHelp": "Isključi automatsko dodavanje/aktualiziranje stavci ako su promjene prepoznate. *Potreban restart servera",
- "LabelSettingsEnableWatcher": "Enable Watcher",
- "LabelSettingsEnableWatcherForLibrary": "Enable folder watcher for library",
- "LabelSettingsEnableWatcherHelp": "Enables the automatic adding/updating of items when file changes are detected. *Requires server restart",
- "LabelSettingsEpubsAllowScriptedContent": "Allow scripted content in epubs",
- "LabelSettingsEpubsAllowScriptedContentHelp": "Allow epub files to execute scripts. It is recommended to keep this setting disabled unless you trust the source of the epub files.",
- "LabelSettingsExperimentalFeatures": "Eksperimentalni features",
- "LabelSettingsExperimentalFeaturesHelp": "Features u razvoju trebaju vaš feedback i pomoć pri testiranju. Klikni da odeš to Github discussionsa.",
- "LabelSettingsFindCovers": "Pronađi covers",
- "LabelSettingsFindCoversHelp": "Ako audiobook nema embedani cover or a cover sliku unutar foldera, skener će probati pronaći cover. Bilješka: Ovo će produžiti trjanje skeniranja",
- "LabelSettingsHideSingleBookSeries": "Hide single book series",
- "LabelSettingsHideSingleBookSeriesHelp": "Series that have a single book will be hidden from the series page and home page shelves.",
- "LabelSettingsHomePageBookshelfView": "Koristi bookshelf pogled za početnu stranicu",
- "LabelSettingsLibraryBookshelfView": "Koristi bookshelf pogled za biblioteku",
- "LabelSettingsOnlyShowLaterBooksInContinueSeries": "Skip earlier books in Continue Series",
- "LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "The Continue Series home page shelf shows the first book not started in series that have at least one book finished and no books in progress. Enabling this setting will continue series from the furthest completed book instead of the first book not started.",
- "LabelSettingsParseSubtitles": "Parsaj podnapise",
- "LabelSettingsParseSubtitlesHelp": "Izvadi podnapise iz imena od audiobook foldera. Podnapis mora biti odvojen sa \" - \" npr. \"Ime knjige - Podnapis ovdje\" ima podnapis \"Podnapis ovdje\"",
- "LabelSettingsPreferMatchedMetadata": "Preferiraj matchane metapodatke",
- "LabelSettingsPreferMatchedMetadataHelp": "Matchani podatci će biti korišteni kada se koristi Quick Match. Po defaultu Quick Match će ispuniti samo prazne detalje.",
- "LabelSettingsSkipMatchingBooksWithASIN": "Preskoči matchanje knjiga koje već imaju ASIN",
- "LabelSettingsSkipMatchingBooksWithISBN": "SPreskoči matchanje knjiga koje već imaju ISBN",
- "LabelSettingsSortingIgnorePrefixes": "Zanemari prefikse tokom sortiranja",
- "LabelSettingsSortingIgnorePrefixesHelp": "npr. za prefiks \"the\" book title \"The Ime Knjige\" će sortirati kao \"Ime Knjige, The\"",
- "LabelSettingsSquareBookCovers": "Kockasti cover knjige",
- "LabelSettingsSquareBookCoversHelp": "Koristi kockasti cover knjige umjesto klasičnog 1.6:1.",
- "LabelSettingsStoreCoversWithItem": "Spremi cover uz stakvu",
- "LabelSettingsStoreCoversWithItemHelp": "By default covers are stored in /metadata/items, enabling this setting will store covers in your library item folder. Only one file named \"cover\" will be kept",
+ "LabelSettingsDisableWatcher": "Isključi praćenje datotečnog sustava",
+ "LabelSettingsDisableWatcherForLibrary": "Onemogući praćenje datotečnog sustava za ovu knjižnicu",
+ "LabelSettingsDisableWatcherHelp": "Onemogućuje automatsko dodavanje ili ažuriranje stavki kod uočenih promjena datoteka. *Potrebno je ponovno pokrenuti poslužitelj",
+ "LabelSettingsEnableWatcher": "Omogući praćenje promjena",
+ "LabelSettingsEnableWatcherForLibrary": "Omogući praćenje promjena u mapi knjižnice",
+ "LabelSettingsEnableWatcherHelp": "Omogućuje automatsko dodavanje/ažuriranje stavki kada se uoče izmjene datoteka. *Potrebno je ponovno pokretanje poslužitelja",
+ "LabelSettingsEpubsAllowScriptedContent": "Omogući skripte u epub datotekama",
+ "LabelSettingsEpubsAllowScriptedContentHelp": "Omogućuje epub datotekama izvođenje skripti. Preporučamo isključiti ovu mogućnost ukoliko nemate povjerenja u izvore epub datoteka.",
+ "LabelSettingsExperimentalFeatures": "Eksperimentalne značajke",
+ "LabelSettingsExperimentalFeaturesHelp": "Značajke u razvoju za koje trebamo vaše povratne informacije i pomoć u testiranju. Kliknite za otvaranje rasprave na githubu.",
+ "LabelSettingsFindCovers": "Pronađi naslovnice",
+ "LabelSettingsFindCoversHelp": "Ako vaša zvučna knjiga nema ugrađenu naslovnicu ili sliku naslovnice u mapi, skener će pokušati pronaći naslovnicu. Napomena: ovo će produžiti trajanje skeniranja",
+ "LabelSettingsHideSingleBookSeries": "Skrij serijale sa samo jednom knjigom",
+ "LabelSettingsHideSingleBookSeriesHelp": "Serijali koji se sastoje od samo jedne knjige neće se prikazivati na stranici serijala i na policama početne stranice.",
+ "LabelSettingsHomePageBookshelfView": "Prikaži početnu stranicu kao policu s knjigama",
+ "LabelSettingsLibraryBookshelfView": "Prikaži knjižnicu kao policu s knjigama",
+ "LabelSettingsLibraryMarkAsFinishedPercentComplete": "Postotak dovršenosti veći od",
+ "LabelSettingsLibraryMarkAsFinishedTimeRemaining": "Preostalo vrijeme je manje od (sekundi)",
+ "LabelSettingsLibraryMarkAsFinishedWhen": "Označi medij dovršenim kada",
+ "LabelSettingsOnlyShowLaterBooksInContinueSeries": "Preskoči ranije knjige u funkciji Nastavi serijal",
+ "LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "Na polici početne stranice Nastavi serijal prikazuje se prva nezapočeta knjiga serijala koji imaju barem jednu dovršenu knjigu i nijednu započetu knjigu. Ako uključite ovu opciju, serijal će vam se nastaviti od zadnje dovršene knjige umjesto od prve nezapočete knjige.",
+ "LabelSettingsParseSubtitles": "Raščlani podnaslove",
+ "LabelSettingsParseSubtitlesHelp": "Iz naziva mape zvučne knjige raščlanjuje podnaslov. Podnaslov mora biti odvojen s \" - \" npr. \"Naslov knjige - Ovo je podnaslov\" imat će podnaslov \"Ovo je podnaslov\"",
+ "LabelSettingsPreferMatchedMetadata": "Daj prednost meta-podatcima prepoznatih stavki",
+ "LabelSettingsPreferMatchedMetadataHelp": "Podatci prepoznatog naslova nadjačat će postojeće informacije kod korištenja funkcije Brzog prepoznavanja. Zadana funkcionalnost je da Brzo prepoznavanje samo dopuni podatke koji nedostaju.",
+ "LabelSettingsSkipMatchingBooksWithASIN": "Preskoči prepoznavanje knjiga koje već imaju ASIN",
+ "LabelSettingsSkipMatchingBooksWithISBN": "Preskoči prepoznavanje knjiga koje već imaju ISBN",
+ "LabelSettingsSortingIgnorePrefixes": "Zanemari prefikse kod sortiranja",
+ "LabelSettingsSortingIgnorePrefixesHelp": "npr. za prefiks \"the\" naslov knjige \"The Book Title\" sortirat će se \"Book Title, The\"",
+ "LabelSettingsSquareBookCovers": "Koristi pravokutne naslovnice knjiga",
+ "LabelSettingsSquareBookCoversHelp": "Koristi pravokutne naslovnice umjesto uobičajenih naslovnica omjera 1,6:1",
+ "LabelSettingsStoreCoversWithItem": "Spremi naslovnice uz stavke",
+ "LabelSettingsStoreCoversWithItemHelp": "Naslovnice se obično spremaju u /metadata/items, ako uključite ovu opciju naslovnice će se spremati u mapu knjižničke stavke. Čuva se samo jedna datoteka naziva \"cover\"",
"LabelSettingsStoreMetadataWithItem": "Spremi metapodatke uz stavku",
- "LabelSettingsStoreMetadataWithItemHelp": "Po defaultu metapodatci su spremljeni u /metadata/items, uključujućite li ovu postavku, metapodatci će biti spremljeni u folderima od biblioteke",
- "LabelSettingsTimeFormat": "Time Format",
+ "LabelSettingsStoreMetadataWithItemHelp": "Meta-podatci se obično spremaju u /metadata/items; ako uključite ovu postavku meta-podatci će se čuvati u mapama knjižničkih stavki",
+ "LabelSettingsTimeFormat": "Format vremena",
+ "LabelShare": "Podijeli",
+ "LabelShareOpen": "Dijeljenje otvoreno",
+ "LabelShareURL": "URL za dijeljenje",
"LabelShowAll": "Prikaži sve",
- "LabelShowSeconds": "Show seconds",
+ "LabelShowSeconds": "Prikaži sekunde",
+ "LabelShowSubtitles": "Prikaži podnaslove",
"LabelSize": "Veličina",
- "LabelSleepTimer": "Sleep timer",
+ "LabelSleepTimer": "Timer za spavanje",
"LabelSlug": "Slug",
- "LabelStart": "Pokreni",
- "LabelStarted": "Pokrenuto",
- "LabelStartedAt": "Pokrenuto",
- "LabelStartTime": "Vrijeme pokretanja",
- "LabelStatsAudioTracks": "Audio Tracks",
+ "LabelStart": "Početak",
+ "LabelStartTime": "Vrijeme početka",
+ "LabelStarted": "Započeto",
+ "LabelStartedAt": "Započeto",
+ "LabelStatsAudioTracks": "Zvučni zapisi",
"LabelStatsAuthors": "Autori",
"LabelStatsBestDay": "Najbolji dan",
"LabelStatsDailyAverage": "Dnevni prosjek",
"LabelStatsDays": "Dani",
- "LabelStatsDaysListened": "Dana slušao",
+ "LabelStatsDaysListened": "Dana slušano",
"LabelStatsHours": "Sati",
- "LabelStatsInARow": "u redu",
- "LabelStatsItemsFinished": "Završenih stavki",
- "LabelStatsItemsInLibrary": "Stavke u biblioteki",
+ "LabelStatsInARow": "uzastopno",
+ "LabelStatsItemsFinished": "Dovršenih stavki",
+ "LabelStatsItemsInLibrary": "Stavke u knjižnici",
"LabelStatsMinutes": "minute",
"LabelStatsMinutesListening": "Minuta odslušano",
- "LabelStatsOverallDays": "Overall Days",
- "LabelStatsOverallHours": "Overall Hours",
+ "LabelStatsOverallDays": "Ukupno dana",
+ "LabelStatsOverallHours": "Ukupno sati",
"LabelStatsWeekListening": "Tjedno slušanje",
- "LabelSubtitle": "Podnapis",
- "LabelSupportedFileTypes": "Podržtani tip datoteke",
- "LabelTag": "Tag",
- "LabelTags": "Tags",
- "LabelTagsAccessibleToUser": "Tags dostupni korisniku",
- "LabelTagsNotAccessibleToUser": "Tags not Accessible to User",
- "LabelTasks": "Tasks Running",
- "LabelTextEditorBulletedList": "Bulleted list",
- "LabelTextEditorLink": "Link",
- "LabelTextEditorNumberedList": "Numbered list",
- "LabelTextEditorUnlink": "Unlink",
- "LabelTheme": "Theme",
- "LabelThemeDark": "Dark",
- "LabelThemeLight": "Light",
- "LabelTimeBase": "Time Base",
+ "LabelSubtitle": "Podnaslov",
+ "LabelSupportedFileTypes": "Podržane vrste datoteka",
+ "LabelTag": "Oznaka",
+ "LabelTags": "Oznake",
+ "LabelTagsAccessibleToUser": "Oznake dostupne korisniku",
+ "LabelTagsNotAccessibleToUser": "Oznake nedostupne korisniku",
+ "LabelTasks": "Zadatci koji se izvode",
+ "LabelTextEditorBulletedList": "Popis s grafičkim oznakama",
+ "LabelTextEditorLink": "Poveznica",
+ "LabelTextEditorNumberedList": "Numerirani popis",
+ "LabelTextEditorUnlink": "Prekini vezu",
+ "LabelTheme": "Tema",
+ "LabelThemeDark": "Tamna",
+ "LabelThemeLight": "Svijetla",
+ "LabelTimeBase": "Baza vremena",
+ "LabelTimeDurationXHours": "{0} sati",
+ "LabelTimeDurationXMinutes": "{0} minuta",
+ "LabelTimeDurationXSeconds": "{0} sekundi",
+ "LabelTimeInMinutes": "Vrijeme u minutama",
+ "LabelTimeLeft": "{0} preostalo",
"LabelTimeListened": "Vremena odslušano",
"LabelTimeListenedToday": "Vremena odslušano danas",
"LabelTimeRemaining": "{0} preostalo",
"LabelTimeToShift": "Vrijeme za pomjeriti u sekundama",
"LabelTitle": "Naslov",
- "LabelToolsEmbedMetadata": "Embed Metadata",
- "LabelToolsEmbedMetadataDescription": "Embed metadata into audio files including cover image and chapters.",
- "LabelToolsMakeM4b": "Make M4B Audiobook File",
- "LabelToolsMakeM4bDescription": "Generate a .M4B audiobook file with embedded metadata, cover image, and chapters.",
- "LabelToolsSplitM4b": "Split M4B to MP3's",
- "LabelToolsSplitM4bDescription": "Create MP3's from an M4B split by chapters with embedded metadata, cover image, and chapters.",
- "LabelTotalDuration": "Total Duration",
+ "LabelToolsEmbedMetadata": "Ugradi meta-podatke",
+ "LabelToolsEmbedMetadataDescription": "Ugradi meta-podatke u zvučne datoteke zajedno s naslovnicom i poglavljima.",
+ "LabelToolsM4bEncoder": "M4B kodiranje",
+ "LabelToolsMakeM4b": "Stvori M4B datoteku audioknjige",
+ "LabelToolsMakeM4bDescription": "Izrađuje zvučnu knjigu u .M4B formatu s ugrađenim meta-podatcima, naslovnicom i poglavljima.",
+ "LabelToolsSplitM4b": "Podijeli M4B datoteke u MP3 datoteke",
+ "LabelToolsSplitM4bDescription": "Stvara MP3 datoteke dijeljenjem M4B datoteke po poglavljima, s ugrađenim meta-podatcima, slikom naslovnice i poglavljima.",
+ "LabelTotalDuration": "Ukupno trajanje",
"LabelTotalTimeListened": "Sveukupno vrijeme slušanja",
- "LabelTrackFromFilename": "Track iz imena datoteke",
- "LabelTrackFromMetadata": "Track iz metapodataka",
- "LabelTracks": "Tracks",
- "LabelTracksMultiTrack": "Multi-track",
- "LabelTracksNone": "No tracks",
- "LabelTracksSingleTrack": "Single-track",
- "LabelType": "Tip",
- "LabelUnabridged": "Unabridged",
- "LabelUndo": "Undo",
+ "LabelTrackFromFilename": "Naslov iz imena datoteke",
+ "LabelTrackFromMetadata": "Naslov iz meta-podataka",
+ "LabelTracks": "Zvučni zapisi",
+ "LabelTracksMultiTrack": "Više zvučnih zapisa",
+ "LabelTracksNone": "Nema zapisa",
+ "LabelTracksSingleTrack": "Jedan zvučni zapis",
+ "LabelTrailer": "Najava",
+ "LabelType": "Vrsta",
+ "LabelUnabridged": "Neskraćeno",
+ "LabelUndo": "Vrati",
"LabelUnknown": "Nepoznato",
- "LabelUpdateCover": "Aktualiziraj Cover",
- "LabelUpdateCoverHelp": "Dozvoli postavljanje novog covera za odabrane knjige nakon što je match pronađen.",
- "LabelUpdatedAt": "Aktualizirano",
- "LabelUpdateDetails": "Aktualiziraj detalje",
- "LabelUpdateDetailsHelp": "Dozvoli postavljanje novih detalja za odabrane knjige nakon što je match pronađen",
- "LabelUploaderDragAndDrop": "Drag & Drop datoteke ili foldere",
- "LabelUploaderDropFiles": "Ubaci datoteke",
- "LabelUploaderItemFetchMetadataHelp": "Automatically fetch title, author, and series",
- "LabelUseChapterTrack": "Koristi poglavlja track",
- "LabelUseFullTrack": "Koristi cijeli track",
+ "LabelUnknownPublishDate": "Nepoznat datum objavljivanja",
+ "LabelUpdateCover": "Ažuriraj naslovnicu",
+ "LabelUpdateCoverHelp": "Dozvoli prepisivanje postojećih naslovnica za odabrane knjige kada se prepoznaju",
+ "LabelUpdateDetails": "Ažuriraj pojedinosti",
+ "LabelUpdateDetailsHelp": "Dopusti prepisivanje postojećih podataka za odabrane knjige kada se prepoznaju",
+ "LabelUpdatedAt": "Ažurirano",
+ "LabelUploaderDragAndDrop": "Pritisni i prevuci datoteke ili mape",
+ "LabelUploaderDropFiles": "Ispusti datoteke",
+ "LabelUploaderItemFetchMetadataHelp": "Automatski dohvati naslov, autora i serijal",
+ "LabelUseAdvancedOptions": "Koristi se naprednim opcijama",
+ "LabelUseChapterTrack": "Koristi zvučni zapis poglavlja",
+ "LabelUseFullTrack": "Koristi cijeli zvučni zapis",
+ "LabelUseZeroForUnlimited": "0 za neograničeno",
"LabelUser": "Korisnik",
"LabelUsername": "Korisničko ime",
"LabelValue": "Vrijednost",
"LabelVersion": "Verzija",
- "LabelViewBookmarks": "View bookmarks",
- "LabelViewChapters": "View chapters",
- "LabelViewQueue": "View player queue",
- "LabelVolume": "Volume",
- "LabelWeekdaysToRun": "Radnih dana da radi",
- "LabelYearReviewHide": "Hide Year in Review",
- "LabelYearReviewShow": "See Year in Review",
- "LabelYourAudiobookDuration": "Tvoje trajanje audiobooka",
- "LabelYourBookmarks": "Tvoje knjižne oznake",
- "LabelYourPlaylists": "Your Playlists",
- "LabelYourProgress": "Tvoj napredak",
- "MessageAddToPlayerQueue": "Add to player queue",
- "MessageAppriseDescription": "To use this feature you will need to have an instance of Apprise API running or an api that will handle those same requests. The Apprise API Url should be the full URL path to send the notification, e.g., if your API instance is served at http://192.168.1.1:8337 then you would put http://192.168.1.1:8337/notify.",
- "MessageBackupsDescription": "Backups uključuju korisnike, korisnikov napredak, detalje stavki iz biblioteke, postavke server i slike iz /metadata/items & /metadata/authors. Backups ne uključuju nijedne datoteke koje su u folderima biblioteke.",
- "MessageBatchQuickMatchDescription": "Quick Match će probati dodati nedostale covere i metapodatke za odabrane stavke. Uključi postavke ispod da omočutie Quick Mathchu da zamijeni postojeće covere i/ili metapodatke.",
- "MessageBookshelfNoCollections": "You haven't made any collections yet",
- "MessageBookshelfNoResultsForFilter": "No Results for filter \"{0}: {1}\"",
- "MessageBookshelfNoRSSFeeds": "No RSS feeds are open",
- "MessageBookshelfNoSeries": "You have no series",
- "MessageChapterEndIsAfter": "Kraj poglavlja je nakon kraja audioknjige.",
- "MessageChapterErrorFirstNotZero": "First chapter must start at 0",
- "MessageChapterErrorStartGteDuration": "Invalid start time must be less than audiobook duration",
- "MessageChapterErrorStartLtPrev": "Invalid start time must be greater than or equal to previous chapter start time",
- "MessageChapterStartIsAfter": "Početak poglavlja je nakon kraja audioknjige.",
+ "LabelViewBookmarks": "Pogledaj knjižne oznake",
+ "LabelViewChapters": "Pogledaj poglavlja",
+ "LabelViewPlayerSettings": "Pogledaj postavke reproduktora",
+ "LabelViewQueue": "Pogledaj redoslijed izvođenja reproduktora",
+ "LabelVolume": "Glasnoća",
+ "LabelWeekdaysToRun": "Dani u tjednu za pokretanje",
+ "LabelXBooks": "{0} knjiga",
+ "LabelXItems": "{0} stavki",
+ "LabelYearReviewHide": "Ne prikazuj Godišnji pregled",
+ "LabelYearReviewShow": "Pogledaj Godišnji pregled",
+ "LabelYourAudiobookDuration": "Trajanje vaših zvučnih knjiga",
+ "LabelYourBookmarks": "Vaše knjižne oznake",
+ "LabelYourPlaylists": "Vaši popisi za izvođenje",
+ "LabelYourProgress": "Vaš napredak",
+ "MessageAddToPlayerQueue": "Dodaj u redoslijed izvođenja",
+ "MessageAppriseDescription": "Da biste se koristili ovom značajkom, treba vam instanca Apprise API-ja ili API koji može rukovati istom vrstom zahtjeva. The Adresa Apprise API-ja treba biti puna URL putanja za slanje obavijesti, npr. ako vam se API instanca poslužuje na adresi http://192.168.1.1:8337 trebate upisati http://192.168.1.1:8337/notify.",
+ "MessageBackupsDescription": "Sigurnosne kopije sadrže korisnike, korisnikov napredak medija, pojedinosti knjižničke građe, postavke poslužitelja i slike koje se spremaju u /metadata/items & /metadata/authors. Sigurnosne kopije ne sadrže niti jednu datoteku iz mapa knjižnice.",
+ "MessageBackupsLocationEditNote": "Napomena: Uređivanje lokacije za sigurnosne kopije ne premješta ili mijenja postojeće sigurnosne kopije",
+ "MessageBackupsLocationNoEditNote": "Napomena: Lokacija za sigurnosne kopije zadana je kroz varijablu okoline i ovdje se ne može izmijeniti.",
+ "MessageBackupsLocationPathEmpty": "Putanja do lokacije za sigurnosne kopije ne može ostati prazna",
+ "MessageBatchQuickMatchDescription": "Brzo prepoznavanje za odabrane će stavke pokušati dodati naslovnice i meta-podatke koji nedostaju. Uključite donje opcije ako želite da Brzo prepoznavanje prepiše postojeće naslovnice i/ili meta-podatke.",
+ "MessageBookshelfNoCollections": "Niste izradili niti jednu zbirku",
+ "MessageBookshelfNoRSSFeeds": "Nema otvorenih RSS izvora",
+ "MessageBookshelfNoResultsForFilter": "Nema rezultata za filter \"{0}: {1}\"",
+ "MessageBookshelfNoResultsForQuery": "Vaš upit nema rezultata",
+ "MessageBookshelfNoSeries": "Nemate niti jedan serijal",
+ "MessageChapterEndIsAfter": "Kraj poglavlja je nakon kraja zvučne knjige",
+ "MessageChapterErrorFirstNotZero": "Prvo poglavlje mora započeti u 0",
+ "MessageChapterErrorStartGteDuration": "Netočno vrijeme početka, mora biti manje od trajanja zvučne knjige",
+ "MessageChapterErrorStartLtPrev": "Netočno vrijeme početka, mora biti veće ili jednako vremenu početka prethodnog poglavlja",
+ "MessageChapterStartIsAfter": "Početak poglavlja je nakon kraja zvučne knjige",
"MessageCheckingCron": "Provjeravam cron...",
- "MessageConfirmCloseFeed": "Are you sure you want to close this feed?",
+ "MessageConfirmCloseFeed": "Sigurno želite zatvoriti ovaj izvor?",
"MessageConfirmDeleteBackup": "Jeste li sigurni da želite obrisati backup za {0}?",
- "MessageConfirmDeleteFile": "This will delete the file from your file system. Are you sure?",
- "MessageConfirmDeleteLibrary": "Jeste li sigurni da želite trajno obrisati biblioteku \"{0}\"?",
- "MessageConfirmDeleteLibraryItem": "This will delete the library item from the database and your file system. Are you sure?",
- "MessageConfirmDeleteLibraryItems": "This will delete {0} library items from the database and your file system. Are you sure?",
- "MessageConfirmDeleteSession": "Jeste li sigurni da želite obrisati ovu sesiju?",
- "MessageConfirmForceReScan": "Jeste li sigurni da želite ponovno skenirati?",
- "MessageConfirmMarkAllEpisodesFinished": "Are you sure you want to mark all episodes as finished?",
- "MessageConfirmMarkAllEpisodesNotFinished": "Are you sure you want to mark all episodes as not finished?",
- "MessageConfirmMarkSeriesFinished": "Are you sure you want to mark all books in this series as finished?",
- "MessageConfirmMarkSeriesNotFinished": "Are you sure you want to mark all books in this series as not finished?",
- "MessageConfirmPurgeCache": "Purge cache will delete the entire directory at /metadata/cache.
Are you sure you want to remove the cache directory?",
- "MessageConfirmQuickEmbed": "Warning! Quick embed will not backup your audio files. Make sure that you have a backup of your audio files.
Would you like to continue?",
- "MessageConfirmRemoveAllChapters": "Are you sure you want to remove all chapters?",
- "MessageConfirmRemoveAuthor": "Are you sure you want to remove author \"{0}\"?",
- "MessageConfirmRemoveCollection": "AJeste li sigurni da želite obrisati kolekciju \"{0}\"?",
- "MessageConfirmRemoveEpisode": "Jeste li sigurni da želite obrisati epizodu \"{0}\"?",
- "MessageConfirmRemoveEpisodes": "Jeste li sigurni da želite obrisati {0} epizoda/-u?",
- "MessageConfirmRemoveListeningSessions": "Are you sure you want to remove {0} listening sessions?",
- "MessageConfirmRemoveNarrator": "Are you sure you want to remove narrator \"{0}\"?",
- "MessageConfirmRemovePlaylist": "Are you sure you want to remove your playlist \"{0}\"?",
- "MessageConfirmRenameGenre": "Are you sure you want to rename genre \"{0}\" to \"{1}\" for all items?",
- "MessageConfirmRenameGenreMergeNote": "Note: This genre already exists so they will be merged.",
- "MessageConfirmRenameGenreWarning": "Warning! A similar genre with a different casing already exists \"{0}\".",
- "MessageConfirmRenameTag": "Are you sure you want to rename tag \"{0}\" to \"{1}\" for all items?",
- "MessageConfirmRenameTagMergeNote": "Note: This tag already exists so they will be merged.",
- "MessageConfirmRenameTagWarning": "Warning! A similar tag with a different casing already exists \"{0}\".",
- "MessageConfirmReScanLibraryItems": "Are you sure you want to re-scan {0} items?",
- "MessageConfirmSendEbookToDevice": "Are you sure you want to send {0} ebook \"{1}\" to device \"{2}\"?",
- "MessageDownloadingEpisode": "Preuzimam epizodu",
- "MessageDragFilesIntoTrackOrder": "Povuci datoteke u pravilan redoslijed tracka.",
- "MessageEmbedFinished": "Embed završen!",
- "MessageEpisodesQueuedForDownload": "{0} Epizoda/-e u redu za preuzimanje",
- "MessageEreaderDevices": "To ensure delivery of ebooks, you may need to add the above email address as a valid sender for each device listed below.",
- "MessageFeedURLWillBe": "Feed URL će biti {0}",
- "MessageFetching": "Dobavljam...",
- "MessageForceReScanDescription": "će skenirati sve datoteke ponovno kao svježi sken. ID3 tagovi od audio datoteka, OPF datoteke i tekst datoteke će biti skenirane kao da su nove.",
+ "MessageConfirmDeleteDevice": "Sigurno želite izbrisati e-čitač \"{0}\"?",
+ "MessageConfirmDeleteFile": "Ovo će izbrisati datoteke s datotečnog sustava. Jeste li sigurni?",
+ "MessageConfirmDeleteLibrary": "Sigurno želite trajno obrisati knjižnicu \"{0}\"?",
+ "MessageConfirmDeleteLibraryItem": "Ovo će izbrisati knjižničku stavku iz datoteke i vašeg datotečnog sustava. Jeste li sigurni?",
+ "MessageConfirmDeleteLibraryItems": "Ovo će izbrisati {0} knjižničkih stavki iz baze podataka i datotečnog sustava. Jeste li sigurni?",
+ "MessageConfirmDeleteMetadataProvider": "Sigurno želite izbrisati prilagođenog pružatelja meta-podataka \"{0}\"?",
+ "MessageConfirmDeleteNotification": "Sigurno želite izbrisati ovu obavijest?",
+ "MessageConfirmDeleteSession": "Sigurno želite obrisati ovu sesiju?",
+ "MessageConfirmEmbedMetadataInAudioFiles": "Sigurno želite ugraditi meta-podatke u {0} zvučnih datoteka?",
+ "MessageConfirmForceReScan": "Sigurno želite ponovno pokrenuti skeniranje?",
+ "MessageConfirmMarkAllEpisodesFinished": "Sigurno želite označiti sve nastavke dovršenima?",
+ "MessageConfirmMarkAllEpisodesNotFinished": "Sigurno želite označiti sve nastavke nedovršenima?",
+ "MessageConfirmMarkItemFinished": "Sigurno želite označiti \"{0}\" dovršenim?",
+ "MessageConfirmMarkItemNotFinished": "Sigurno želite označiti \"{0}\" nedovršenim?",
+ "MessageConfirmMarkSeriesFinished": "Sigurno želite označiti sve knjige u ovom serijalu dovršenima?",
+ "MessageConfirmMarkSeriesNotFinished": "Sigurno želite označiti sve knjige u ovom serijalu nedovršenima?",
+ "MessageConfirmNotificationTestTrigger": "Želite li okinuti ovu obavijest s probnim podatcima?",
+ "MessageConfirmPurgeCache": "Brisanje predmemorije izbrisat će cijelu mapu /metadata/cache.
Sigurno želite izbrisati mapu predmemorije?",
+ "MessageConfirmPurgeItemsCache": "Brisanje predmemorije stavki izbrisat će cijelu mapu /metadata/cache/items. Jeste li sigurni?",
+ "MessageConfirmQuickEmbed": "Pažnja! Funkcija brzog ugrađivanja ne stvara sigurnosne kopije vaših zvučnih datoteka. Provjerite imate li sigurnosnu kopiju.
Želite li nastaviti?",
+ "MessageConfirmQuickMatchEpisodes": "Brzo prepoznavanje nastavaka prepisat će pojedinosti ukoliko se pronađe podudaranje. Neprepoznati nastavci će se ažurirati. Jeste li sigurni?",
+ "MessageConfirmReScanLibraryItems": "Sigurno želite ponovno skenirati {0} stavki?",
+ "MessageConfirmRemoveAllChapters": "Sigurno želite ukloniti sva poglavlja?",
+ "MessageConfirmRemoveAuthor": "Sigurno želite ukloniti autora \"{0}\"?",
+ "MessageConfirmRemoveCollection": "Sigurno želite obrisati kolekciju \"{0}\"?",
+ "MessageConfirmRemoveEpisode": "Sigurno želite ukloniti nastavak \"{0}\"?",
+ "MessageConfirmRemoveEpisodes": "Sigurno želite ukloniti {0} nastavaka?",
+ "MessageConfirmRemoveListeningSessions": "Sigurno želite ukloniti {0} sesija slušanja?",
+ "MessageConfirmRemoveMetadataFiles": "Sigurno želite ukloniti sve datoteke metadata.{0} u mapama vaših knjižničkih stavki?",
+ "MessageConfirmRemoveNarrator": "Sigurno želite ukloniti pripovjedača \"{0}\"?",
+ "MessageConfirmRemovePlaylist": "Sigurno želite ukloniti vaš popis za izvođenje \"{0}\"?",
+ "MessageConfirmRenameGenre": "Sigurno želite preimenovati žanr \"{0}\" u \"{1}\" za sve stavke?",
+ "MessageConfirmRenameGenreMergeNote": "Napomena: Ovaj žanr već postoji, stoga će biti pripojen.",
+ "MessageConfirmRenameGenreWarning": "Pažnja! Sličan žanr s drugačijim velikim i malim slovima već postoji \"{0}\".",
+ "MessageConfirmRenameTag": "Sigurno želite preimenovati oznaku \"{0}\" u \"{1}\" za sve stavke?",
+ "MessageConfirmRenameTagMergeNote": "Napomena: Ova oznaka već postoji, stoga će biti pripojena.",
+ "MessageConfirmRenameTagWarning": "Pažnja! Slična oznaka s drugačijim velikim i malim slovima već postoji \"{0}\".",
+ "MessageConfirmResetProgress": "Sigurno želite resetirati napredak?",
+ "MessageConfirmSendEbookToDevice": "Sigurno želite poslati {0} e-knjiga/u \"{1}\" na uređaj \"{2}\"?",
+ "MessageConfirmUnlinkOpenId": "Sigurno želite odspojiti ovog korisnika s OpenID-ja?",
+ "MessageDownloadingEpisode": "Preuzimam nastavak",
+ "MessageDragFilesIntoTrackOrder": "Prevlačenjem datoteka složite pravilan redoslijed",
+ "MessageEmbedFailed": "Ugrađivanje nije uspjelo!",
+ "MessageEmbedFinished": "Ugrađivanje je dovršeno!",
+ "MessageEmbedQueue": "Ugrađivanje meta-podataka dodano u red obrade ({0} u redu)",
+ "MessageEpisodesQueuedForDownload": "{0} nastavak(a) u redu za preuzimanje",
+ "MessageEreaderDevices": "Da biste osigurali isporuku e-knjiga, možda ćete morati gornju adresu e-pošte dodati kao dopuštenog pošiljatelja za svaki od donjih uređaja.",
+ "MessageFeedURLWillBe": "URL izvora bit će {0}",
+ "MessageFetching": "Dohvaćam...",
+ "MessageForceReScanDescription": "će ponovno skenirati sve datoteke kao nove datoteke. ID3 tagovi zvučnih datoteka, OPF datoteke i tekstualne datoteke skenirat će se kao da su nove.",
"MessageImportantNotice": "Važna obavijest!",
"MessageInsertChapterBelow": "Unesi poglavlje ispod",
"MessageItemsSelected": "{0} odabranih stavki",
- "MessageItemsUpdated": "{0} Items Updated",
+ "MessageItemsUpdated": "{0} stavki ažurirano",
"MessageJoinUsOn": "Pridruži nam se na",
"MessageListeningSessionsInTheLastYear": "{0} slušanja u prošloj godini",
"MessageLoading": "Učitavam...",
- "MessageLoadingFolders": "Učitavam foldere...",
- "MessageLogsDescription": "Logs are stored in /metadata/logs as JSON files. Crash logs are stored in /metadata/logs/crash_logs.txt.",
+ "MessageLoadingFolders": "Učitavam mape...",
+ "MessageLogsDescription": "Zapisnici se čuvaju u /metadata/logs u obliku JSON datoteka. Zapisnici pada sustava čuvaju se u datoteci /metadata/logs/crash_logs.txt.",
"MessageM4BFailed": "M4B neuspješan!",
"MessageM4BFinished": "M4B završio!",
- "MessageMapChapterTitles": "Mapiraj imena poglavlja u postoječa poglavlja bez izmijene timestampova.",
- "MessageMarkAllEpisodesFinished": "Mark all episodes finished",
- "MessageMarkAllEpisodesNotFinished": "Mark all episodes not finished",
- "MessageMarkAsFinished": "Označi kao završeno",
- "MessageMarkAsNotFinished": "Označi kao nezavršeno",
- "MessageMatchBooksDescription": "će probati matchati knjige iz biblioteke sa knjigom od odabranog poslužitelja i popuniti prazne detalje i cover. Ne briše postojeće detalje.",
- "MessageNoAudioTracks": "Nema audio tracks",
+ "MessageMapChapterTitles": "Mapiraj nazive poglavlja postojećim poglavljima zvučne knjige bez uređivanja vremenskih identifikatora",
+ "MessageMarkAllEpisodesFinished": "Označi sve nastavke dovršenima",
+ "MessageMarkAllEpisodesNotFinished": "Označi sve nastavke nedovršenima",
+ "MessageMarkAsFinished": "Označi kao dovršeno",
+ "MessageMarkAsNotFinished": "Označi kao nedovršeno",
+ "MessageMatchBooksDescription": "će pokušati prepoznati knjige iz knjižnice u katalogu odabranog pružatelja podatka te nadopuniti podatke koji nedostaju i naslovnice. Ne prepisuje preko postojećih podataka.",
+ "MessageNoAudioTracks": "Nema zvučnih zapisa",
"MessageNoAuthors": "Nema autora",
- "MessageNoBackups": "Nema backupa",
- "MessageNoBookmarks": "Nema knjižnih bilješki",
+ "MessageNoBackups": "Nema sigurnosnih kopija",
+ "MessageNoBookmarks": "Nema knjižnih oznaka",
"MessageNoChapters": "Nema poglavlja",
- "MessageNoCollections": "Nema kolekcija",
- "MessageNoCoversFound": "Covers nisu pronađeni",
+ "MessageNoCollections": "Nema zbirki",
+ "MessageNoCoversFound": "Naslovnice nisu pronađene",
"MessageNoDescription": "Nema opisa",
- "MessageNoDownloadsInProgress": "No downloads currently in progress",
- "MessageNoDownloadsQueued": "No downloads queued",
- "MessageNoEpisodeMatchesFound": "Nijedna epizoda pronađena",
- "MessageNoEpisodes": "Nema epizoda",
- "MessageNoFoldersAvailable": "Nema dostupnih foldera",
+ "MessageNoDevices": "Nema uređaja",
+ "MessageNoDownloadsInProgress": "Nema preuzimanja u tijeku",
+ "MessageNoDownloadsQueued": "Nema preuzimanja u redu",
+ "MessageNoEpisodeMatchesFound": "Nije pronađen ni jedan odgovarajući nastavak",
+ "MessageNoEpisodes": "Nema nastavaka",
+ "MessageNoFoldersAvailable": "Nema dostupnih mapa",
"MessageNoGenres": "Nema žanrova",
- "MessageNoIssues": "No Issues",
+ "MessageNoIssues": "Nema problema",
"MessageNoItems": "Nema stavki",
- "MessageNoItemsFound": "Nijedna stavka pronađena",
- "MessageNoListeningSessions": "Nema Listening Sessions",
- "MessageNoLogs": "Nema Logs",
- "MessageNoMediaProgress": "Nema Media napredka",
+ "MessageNoItemsFound": "Nema pronađenih stavki",
+ "MessageNoListeningSessions": "Nema sesija slušanja",
+ "MessageNoLogs": "Nema zapisnika",
+ "MessageNoMediaProgress": "Nema podataka o započetim medijima",
"MessageNoNotifications": "Nema obavijesti",
- "MessageNoPodcastsFound": "Nijedan podcast pronađen",
+ "MessageNoPodcastFeed": "Neispravan podcast: Nema izvora",
+ "MessageNoPodcastsFound": "Nije pronađen niti jedan podcast",
"MessageNoResults": "Nema rezultata",
- "MessageNoSearchResultsFor": "Nema rezultata pretragee za \"{0}\"",
- "MessageNoSeries": "No Series",
- "MessageNoTags": "No Tags",
- "MessageNoTasksRunning": "No Tasks Running",
- "MessageNotYetImplemented": "Not yet implemented",
- "MessageNoUpdateNecessary": "Aktualiziranje nije potrebno",
- "MessageNoUpdatesWereNecessary": "Aktualiziranje nije bilo potrebno",
- "MessageNoUserPlaylists": "You have no playlists",
- "MessageOr": "or",
- "MessagePauseChapter": "Pause chapter playback",
- "MessagePlayChapter": "Listen to beginning of chapter",
- "MessagePlaylistCreateFromCollection": "Create playlist from collection",
- "MessagePodcastHasNoRSSFeedForMatching": "Podcast nema RSS feed url za matchanje",
- "MessageQuickMatchDescription": "Popuni prazne detalje stavki i cover sa prvim match rezultato iz '{0}'. Ne briše detalje osim ako 'Prefer matched metadata' server postavka nije uključena.",
- "MessageRemoveChapter": "Remove chapter",
- "MessageRemoveEpisodes": "ukloni {0} epizoda/-e",
- "MessageRemoveFromPlayerQueue": "Remove from player queue",
- "MessageRemoveUserWarning": "Jeste li sigurni da želite trajno obrisati korisnika \"{0}\"?",
- "MessageReportBugsAndContribute": "Prijavte bugove, zatržite featurese i doprinosite na",
- "MessageResetChaptersConfirm": "Are you sure you want to reset chapters and undo the changes you made?",
- "MessageRestoreBackupConfirm": "Jeste li sigurni da želite povratiti backup kreiran",
- "MessageRestoreBackupWarning": "Povračanje backupa će zamijeniti postoječu bazu podataka u /config i slike covera u /metadata/items i /metadata/authors.
Backups ne modificiraju nikakve datoteke u folderu od biblioteke. Ako imate uključene server postavke da spremate cover i metapodtake u folderu od biblioteke, onda oni neće biti backupani ili overwritten.
Svi klijenti koji koriste tvoj server će biti automatski osvježeni.",
- "MessageSearchResultsFor": "Traži rezultate za",
- "MessageSelected": "{0} selected",
- "MessageServerCouldNotBeReached": "Server ne može biti kontaktiran",
- "MessageSetChaptersFromTracksDescription": "Set chapters using each audio file as a chapter and chapter title as the audio file name",
+ "MessageNoSearchResultsFor": "Nema rezultata pretrage za \"{0}\"",
+ "MessageNoSeries": "Nema serijala",
+ "MessageNoTags": "Nema oznaka",
+ "MessageNoTasksRunning": "Nema zadataka koji se izvode",
+ "MessageNoUpdatesWereNecessary": "Ažuriranje nije bilo potrebno",
+ "MessageNoUserPlaylists": "Nemate popisa za izvođenje",
+ "MessageNotYetImplemented": "Još nije implementirano",
+ "MessageOpmlPreviewNote": "Napomena: Ovo je pretpregled raščlanjene OPML datoteke. Stvarni naslov podcasta preuzet će se iz RSS izvora.",
+ "MessageOr": "ili",
+ "MessagePauseChapter": "Pauziraj reprodukciju poglavlja",
+ "MessagePlayChapter": "Slušaj početak poglavlja",
+ "MessagePlaylistCreateFromCollection": "Stvori popis za izvođenje od zbirke",
+ "MessagePleaseWait": "Molimo pričekajte...",
+ "MessagePodcastHasNoRSSFeedForMatching": "Podcast nema adresu RSS izvora za prepoznavanje",
+ "MessagePodcastSearchField": "Unesite upit za pretragu ili URL RSS izvora",
+ "MessageQuickEmbedInProgress": "Brzo ugrađivanje u tijeku",
+ "MessageQuickEmbedQueue": "Dodano u red za brzo ugrađivanje ({0} u redu izvođenja)",
+ "MessageQuickMatchAllEpisodes": "Brzo prepoznavanje svih nastavaka",
+ "MessageQuickMatchDescription": "Popuni pojedinosti i naslovnice koji nedostaju prvim pronađenim rezultatom za '{0}'. Ne prepisuje podatke osim ako ne uključite mogućnost 'Daj prednost meta-podatcima prepoznatih stavki'.",
+ "MessageRemoveChapter": "Ukloni poglavlje",
+ "MessageRemoveEpisodes": "Ukloni {0} nastavaka",
+ "MessageRemoveFromPlayerQueue": "Ukloni iz redoslijeda izvođenja",
+ "MessageRemoveUserWarning": "Sigurno želite trajno obrisati korisnika \"{0}\"?",
+ "MessageReportBugsAndContribute": "Prijavite pogreške, zatražite funkcionalnosti i doprinesite na",
+ "MessageResetChaptersConfirm": "Sigurno želite vratiti poglavlja na prethodno stanje i poništiti učinjene promjene?",
+ "MessageRestoreBackupConfirm": "Sigurno želite vratiti sigurnosnu kopiju izrađenu",
+ "MessageRestoreBackupWarning": "Vraćanjem sigurnosne kopije prepisat ćete cijelu bazu podataka koja se nalazi u /config i slike naslovnice u /metadata/items i /metadata/authors.
Sigurnosne kopije ne mijenjaju datoteke koje se nalaze u mapama vaših knjižnica. Ako ste u postavkama poslužitelja uključili mogućnost spremanja naslovnica i meta-podataka u mape knjižnice, te se datoteke neće niti sigurnosno pohraniti niti prepisati.
Svi klijenti koji se spajaju na vaš poslužitelj automatski će se osvježiti.",
+ "MessageSearchResultsFor": "Rezultati pretrage za",
+ "MessageSelected": "{0} odabrano",
+ "MessageServerCouldNotBeReached": "Nije moguće pristupiti poslužitelju",
+ "MessageSetChaptersFromTracksDescription": "Postavi poglavlja koristeći se zvučnom datotekom kao poglavljem i nazivom datoteke kao naslovom poglavlja",
+ "MessageShareExpirationWillBe": "Vrijeme isteka će biti {0}",
+ "MessageShareExpiresIn": "Istječe za {0}",
+ "MessageShareURLWillBe": "URL za dijeljenje bit će {0}",
"MessageStartPlaybackAtTime": "Pokreni reprodukciju za \"{0}\" na {1}?",
+ "MessageTaskAudioFileNotWritable": "U zvučnu datoteku \"{0}\" nije moguće pisati",
+ "MessageTaskCanceledByUser": "Korisnik je otkazao izvršavanje zadatka",
+ "MessageTaskDownloadingEpisodeDescription": "Preuzimanje nastavka \"{0}\"",
+ "MessageTaskEmbeddingMetadata": "Ugrađivanje meta-podataka",
+ "MessageTaskEmbeddingMetadataDescription": "Ugrađivanje meta-podataka u zvučnu knjigu \"{0}\"",
+ "MessageTaskEncodingM4b": "Kodiranje M4B datoteke",
+ "MessageTaskEncodingM4bDescription": "Kodiranje zvučne knjige \"{0}\" u jedinstvenu m4b datoteku",
+ "MessageTaskFailed": "Nije uspjelo",
+ "MessageTaskFailedToBackupAudioFile": "Izrada sigurnosne kopije zvučne datoteke \"{0}\" nije uspjela",
+ "MessageTaskFailedToCreateCacheDirectory": "Izrada mape predmemorije nije uspjela",
+ "MessageTaskFailedToEmbedMetadataInFile": "Ugradnja meta-podataka u datoteku \"{0}\" nije uspjela",
+ "MessageTaskFailedToMergeAudioFiles": "Spajanje zvučnih datoteka nije uspjelo",
+ "MessageTaskFailedToMoveM4bFile": "Premještanje m4b datoteke nije uspjelo",
+ "MessageTaskFailedToWriteMetadataFile": "Pisanje datoteke s meta-podatcima nije uspjelo",
+ "MessageTaskMatchingBooksInLibrary": "Prepoznavanje knjiga u knjižnici \"{0}\"",
+ "MessageTaskNoFilesToScan": "Nema datoteka za skeniranje",
+ "MessageTaskOpmlImport": "Uvoz OPML-a",
+ "MessageTaskOpmlImportDescription": "Stvaram podcaste od {0} RSS izvora",
+ "MessageTaskOpmlImportFeed": "Uvoz OPML izvora",
+ "MessageTaskOpmlImportFeedDescription": "Uvoz RSS izvora \"{0}\"",
+ "MessageTaskOpmlImportFeedFailed": "Izvor podcasta nije dohvaćen",
+ "MessageTaskOpmlImportFeedPodcastDescription": "Stvaranje podcasta \"{0}\"",
+ "MessageTaskOpmlImportFeedPodcastExists": "Podcast već postoji u putanji",
+ "MessageTaskOpmlImportFeedPodcastFailed": "Stvaranje podcasta nije uspjelo",
+ "MessageTaskOpmlImportFinished": "Dodano {0} podcasta",
+ "MessageTaskOpmlParseFailed": "Raščlanjivanje OPML datoteke nije uspjelo",
+ "MessageTaskOpmlParseFastFail": "Neispravna OPML datoteka, oznaka nije pronađena ILI oznaka nije pronađena",
+ "MessageTaskOpmlParseNoneFound": "U OPML datoteci nisu pronađeni izvori",
+ "MessageTaskScanItemsAdded": "{0} dodan(o)",
+ "MessageTaskScanItemsMissing": "{0} nedostaje",
+ "MessageTaskScanItemsUpdated": "{0} ažurirano",
+ "MessageTaskScanNoChangesNeeded": "Nisu potrebne izmjene",
+ "MessageTaskScanningFileChanges": "Skeniranje izmijenjenih datoteka u \"{0}\"",
+ "MessageTaskScanningLibrary": "Skeniranje knjižnice \"{0}\"",
+ "MessageTaskTargetDirectoryNotWritable": "U odredišnu mapu nije moguće pisati",
"MessageThinking": "Razmišljam...",
- "MessageUploaderItemFailed": "Upload neuspješan",
- "MessageUploaderItemSuccess": "Upload uspješan!",
- "MessageUploading": "Uploadam...",
- "MessageValidCronExpression": "Ispravan cron expression",
- "MessageWatcherIsDisabledGlobally": "Watcher je globalno isključen u postavkama servera",
- "MessageXLibraryIsEmpty": "{0} Library is empty!",
- "MessageYourAudiobookDurationIsLonger": "Trajanje audio knjige je duže nego pronadeđna duljina trajanja",
- "MessageYourAudiobookDurationIsShorter": "Trajanje audio knjige je kraća nego pronadeđna duljina trajanja",
- "NoteChangeRootPassword": "Root korisnik je jedini korisnik koji može imati praznu lozinku",
- "NoteChapterEditorTimes": "Bilješka: Prvo početno vrijeme poglavlja mora ostati na 0:00 i posljednje vrijeme poglavlja ne smije preći vrijeme trajanja ove audio knjige.",
- "NoteFolderPicker": "Bilješka: več mapirani folderi neće biti prikazani",
- "NoteRSSFeedPodcastAppsHttps": "Upozorenje: Večina podcasta će trebati RSS feed URL koji koristi HTTPS",
- "NoteRSSFeedPodcastAppsPubDate": "Upozorenje: 1 ili više vaših epizoda nemaju datum objavljivanja. Neke podcast aplikacije zahtjevaju to.",
- "NoteUploaderFoldersWithMediaFiles": "Folderi sa media datotekama će biti tretirane kao odvojene stavke u biblioteki.",
- "NoteUploaderOnlyAudioFiles": "Ako uploadate samo audio datoteke onda će audio datoteka biti tretirana kao odvojena audioknjiga.",
- "NoteUploaderUnsupportedFiles": "Nepodržane datoteke su ignorirane. Kada birate ili ubacujete folder, ostale datoteke koje nisu folder će biti ignorirane.",
- "PlaceholderNewCollection": "Ime nove kolekcije",
- "PlaceholderNewFolderPath": "Nova folder putanja",
- "PlaceholderNewPlaylist": "New playlist name",
+ "MessageUploaderItemFailed": "Učitavanje nije uspjelo",
+ "MessageUploaderItemSuccess": "Uspješno učitano!",
+ "MessageUploading": "Učitavam...",
+ "MessageValidCronExpression": "Ispravan cron izraz",
+ "MessageWatcherIsDisabledGlobally": "Praćenje datotečnog sustava globalno je isključen u postavkama poslužitelja",
+ "MessageXLibraryIsEmpty": "{0} Knjižnica je prazna!",
+ "MessageYourAudiobookDurationIsLonger": "Vaše trajanje zvučne knjige duže je od pronađenog trajanja",
+ "MessageYourAudiobookDurationIsShorter": "Vaše trajanje zvučne knjige kraće je od pronađenog trajanja",
+ "NoteChangeRootPassword": "Samo root korisnik može imati praznu zaporku",
+ "NoteChapterEditorTimes": "Napomena: Vrijeme početka prvog poglavlja mora ostati 0:00, a vrijeme početka zadnjeg poglavlja ne može premašiti ukupno trajanje ove zvučne knjige.",
+ "NoteFolderPicker": "Napomena: mape koje su već mapirane neće se prikazati",
+ "NoteRSSFeedPodcastAppsHttps": "Pripazite: Većina aplikacija za podcaste iziskuje URL RSS izvora koji se koristi HTTPS protokolom",
+ "NoteRSSFeedPodcastAppsPubDate": "Upozorenje: jedan ili više vaših nastavaka nemaju datum objavljivanja. To je obavezno kod nekih aplikacija za podcaste.",
+ "NoteUploaderFoldersWithMediaFiles": "Mape s medijskim datotekama smatrat će se zasebnim stavkama knjižnice.",
+ "NoteUploaderOnlyAudioFiles": "Ako učitavate samo zvučne datoteke svaka će se zvučna datoteka uvesti kao zasebna zvučna knjiga.",
+ "NoteUploaderUnsupportedFiles": "Nepodržane vrste datoteka zanemaruju se. Kada odabirete datoteke ili ispuštate mapu, sve datoteke koje nisu u mapi stavke zanemarit će se.",
+ "NotificationOnBackupCompletedDescription": "Pokreće se po završetku sigurnosnog kopiranja",
+ "NotificationOnBackupFailedDescription": "Pokreće se kada sigurnosno kopiranje ne uspije",
+ "NotificationOnEpisodeDownloadedDescription": "Pokreće se kada se nastavak podcasta automatski preuzme",
+ "NotificationOnTestDescription": "Događaj za testiranje sustava obavijesti",
+ "PlaceholderNewCollection": "Ime nove zbirke",
+ "PlaceholderNewFolderPath": "Nova putanja mape",
+ "PlaceholderNewPlaylist": "Naziv novog popisa za izvođenje",
"PlaceholderSearch": "Traži...",
- "PlaceholderSearchEpisode": "Search episode...",
- "ToastAccountUpdateFailed": "Neuspješno aktualiziranje korisničkog računa",
- "ToastAccountUpdateSuccess": "Korisnički račun aktualiziran",
- "ToastAuthorImageRemoveFailed": "Neuspješno uklanjanje slike",
+ "PlaceholderSearchEpisode": "Traži nastavak...",
+ "StatsAuthorsAdded": "autora dodano",
+ "StatsBooksAdded": "knjiga dodano",
+ "StatsBooksAdditional": "Novi naslovi uključuju…",
+ "StatsBooksFinished": "knjiga dovršeno",
+ "StatsBooksFinishedThisYear": "Neke knjige dovršene ove godine…",
+ "StatsBooksListenedTo": "knjiga slušano",
+ "StatsCollectionGrewTo": "Vaša zbirka knjiga narasla je na…",
+ "StatsSessions": "sesija",
+ "StatsSpentListening": "provedeno u slušanju",
+ "StatsTopAuthor": "NAJPOPULARNIJI AUTOR",
+ "StatsTopAuthors": "NAJPOPULARNIJI AUTORI",
+ "StatsTopGenre": "NAJPOPULARNIJI ŽANR",
+ "StatsTopGenres": "NAJPOPULARNIJI ŽANROVI",
+ "StatsTopMonth": "NAJJAČI MJESEC",
+ "StatsTopNarrator": "NAJPOPULARNIJI PRIPOVJEDAČ",
+ "StatsTopNarrators": "NAJPOPULARNIJI PRIPOVJEDAČI",
+ "StatsTotalDuration": "S ukupnim trajanjem od…",
+ "StatsYearInReview": "PREGLED GODINE",
+ "ToastAccountUpdateSuccess": "Račun ažuriran",
+ "ToastAppriseUrlRequired": "Obavezno upisati Apprise URL",
+ "ToastAsinRequired": "ASIN je obvezan",
"ToastAuthorImageRemoveSuccess": "Slika autora uklonjena",
- "ToastAuthorUpdateFailed": "Neuspješno aktualiziranje autora",
- "ToastAuthorUpdateMerged": "Autor spojen",
- "ToastAuthorUpdateSuccess": "Autor aktualiziran ",
- "ToastAuthorUpdateSuccessNoImageFound": "Autor aktualiziran (slika nije pronađena)",
+ "ToastAuthorNotFound": "Autor \"{0}\" nije pronađen",
+ "ToastAuthorRemoveSuccess": "Autor uklonjen",
+ "ToastAuthorSearchNotFound": "Autor nije pronađen",
+ "ToastAuthorUpdateMerged": "Autor pripojen",
+ "ToastAuthorUpdateSuccess": "Autor ažuriran",
+ "ToastAuthorUpdateSuccessNoImageFound": "Autor ažuriran (slika nije pronađena)",
+ "ToastBackupAppliedSuccess": "Sigurnosna kopija vraćena",
"ToastBackupCreateFailed": "Neuspješno kreiranje backupa",
- "ToastBackupCreateSuccess": "Backup kreiran",
- "ToastBackupDeleteFailed": "Neuspješno brisanje backupa",
- "ToastBackupDeleteSuccess": "Backup obrisan",
- "ToastBackupRestoreFailed": "Povračanje backupa neuspješno",
- "ToastBackupUploadFailed": "Uploadanje backupa neuspješno",
- "ToastBackupUploadSuccess": "Backup uploadan",
- "ToastBatchUpdateFailed": "Batch update neuspješan",
- "ToastBatchUpdateSuccess": "Batch update uspješan",
- "ToastBookmarkCreateFailed": "Kreiranje knjižne bilješke neuspješno",
- "ToastBookmarkCreateSuccess": "Knjižna bilješka dodana",
- "ToastBookmarkRemoveFailed": "Brisanje knjižne bilješke nauspješno",
- "ToastBookmarkRemoveSuccess": "Knjižnja bilješka uklonjena",
- "ToastBookmarkUpdateFailed": "Aktualizacija knjižne bilješke neuspješna",
- "ToastBookmarkUpdateSuccess": "Knjižna bilješka aktualizirana",
- "ToastCachePurgeFailed": "Failed to purge cache",
- "ToastCachePurgeSuccess": "Cache purged successfully",
- "ToastChaptersHaveErrors": "Chapters have errors",
- "ToastChaptersMustHaveTitles": "Chapters must have titles",
- "ToastCollectionItemsRemoveFailed": "Neuspješno brisanje stavke/-i iz kolekcije",
- "ToastCollectionItemsRemoveSuccess": "Stavka/-e obrisane iz kolekcije",
- "ToastCollectionRemoveFailed": "Brisanje kolekcije neuspješno",
- "ToastCollectionRemoveSuccess": "Kolekcija obrisana",
- "ToastCollectionUpdateFailed": "Aktualiziranje kolekcije neuspješno",
- "ToastCollectionUpdateSuccess": "Kolekcija aktualizirana",
- "ToastDeleteFileFailed": "Failed to delete file",
- "ToastDeleteFileSuccess": "File deleted",
- "ToastFailedToLoadData": "Failed to load data",
- "ToastItemCoverUpdateFailed": "Aktualiziranje covera stavke neuspješna",
- "ToastItemCoverUpdateSuccess": "Cover stavke aktualiziran",
- "ToastItemDetailsUpdateFailed": "Aktualiziranje detalja stavke neuspješno",
- "ToastItemDetailsUpdateSuccess": "Detalji stavke aktualizirani",
- "ToastItemDetailsUpdateUnneeded": "Aktualiziranje detalja stavke nepotrebno",
- "ToastItemMarkedAsFinishedFailed": "Označi kao Završeno neuspješno",
- "ToastItemMarkedAsFinishedSuccess": "Stavka označena kao Završeno",
- "ToastItemMarkedAsNotFinishedFailed": "Označi kao Nezavršeno neuspješno",
- "ToastItemMarkedAsNotFinishedSuccess": "Stavka oznaečena kao Nezavršeno",
- "ToastLibraryCreateFailed": "Kreiranje biblioteke neuspješno",
- "ToastLibraryCreateSuccess": "Biblioteka \"{0}\" kreirana",
- "ToastLibraryDeleteFailed": "Brisanje biblioteke neuspješno",
- "ToastLibraryDeleteSuccess": "Biblioteka obrisana",
- "ToastLibraryScanFailedToStart": "Skeniranje neuspješno",
- "ToastLibraryScanStarted": "Sken biblioteke pokrenut",
- "ToastLibraryUpdateFailed": "Aktualiziranje biblioteke neuspješno",
- "ToastLibraryUpdateSuccess": "Biblioteka \"{0}\" aktualizirana",
- "ToastPlaylistCreateFailed": "Failed to create playlist",
- "ToastPlaylistCreateSuccess": "Playlist created",
- "ToastPlaylistRemoveFailed": "Failed to remove playlist",
- "ToastPlaylistRemoveSuccess": "Playlist removed",
- "ToastPlaylistUpdateFailed": "Failed to update playlist",
- "ToastPlaylistUpdateSuccess": "Playlist updated",
- "ToastPodcastCreateFailed": "Neuspješno kreiranje podcasta",
- "ToastPodcastCreateSuccess": "Podcast uspješno kreiran",
- "ToastRemoveItemFromCollectionFailed": "Neuspješno uklanjanje stavke iz kolekcije",
- "ToastRemoveItemFromCollectionSuccess": "Stavka uklonjena iz kolekcije",
- "ToastRSSFeedCloseFailed": "Neuspješno zatvaranje RSS Feeda",
- "ToastRSSFeedCloseSuccess": "RSS Feed zatvoren",
- "ToastSendEbookToDeviceFailed": "Failed to Send Ebook to device",
- "ToastSendEbookToDeviceSuccess": "Ebook sent to device \"{0}\"",
- "ToastSeriesUpdateFailed": "Series update failed",
- "ToastSeriesUpdateSuccess": "Series update success",
- "ToastServerSettingsUpdateFailed": "Failed to update server settings",
- "ToastServerSettingsUpdateSuccess": "Server settings updated",
+ "ToastBackupCreateSuccess": "Izrađena sigurnosna kopija",
+ "ToastBackupDeleteFailed": "Brisanje sigurnosne kopije nije uspjelo",
+ "ToastBackupDeleteSuccess": "Sigurnosna kopija izbrisana",
+ "ToastBackupInvalidMaxKeep": "Neispravan broj sigurnosnih kopija za čuvanje",
+ "ToastBackupInvalidMaxSize": "Neispravna najveća veličina sigurnosne kopije",
+ "ToastBackupRestoreFailed": "Vraćanje sigurnosne kopije nije uspjelo",
+ "ToastBackupUploadFailed": "Učitavanje sigurnosne kopije nije uspjelo",
+ "ToastBackupUploadSuccess": "Sigurnosna kopija učitana",
+ "ToastBatchDeleteFailed": "Grupno brisanje nije uspjelo",
+ "ToastBatchDeleteSuccess": "Grupno brisanje je uspješno dovršeno",
+ "ToastBatchQuickMatchFailed": "Grupno brzo prepoznavanje nije uspjelo!",
+ "ToastBatchQuickMatchStarted": "Započelo je brzo prepoznavanje {0} knjiga!",
+ "ToastBatchUpdateFailed": "Skupno ažuriranje nije uspjelo",
+ "ToastBatchUpdateSuccess": "Skupno ažuriranje uspješno dovršeno",
+ "ToastBookmarkCreateFailed": "Izrada knjižne oznake nije uspjela",
+ "ToastBookmarkCreateSuccess": "Knjižna oznaka dodana",
+ "ToastBookmarkRemoveSuccess": "Knjižna oznaka uklonjena",
+ "ToastBookmarkUpdateSuccess": "Knjižna oznaka ažurirana",
+ "ToastCachePurgeFailed": "Čišćenje predmemorije nije uspjelo",
+ "ToastCachePurgeSuccess": "Predmemorija uspješno očišćena",
+ "ToastChaptersHaveErrors": "Poglavlja imaju pogreške",
+ "ToastChaptersMustHaveTitles": "Poglavlja moraju imati naslove",
+ "ToastChaptersRemoved": "Poglavlja uklonjena",
+ "ToastChaptersUpdated": "Poglavlja su ažurirana",
+ "ToastCollectionItemsAddFailed": "Neuspješno dodavanje stavki u zbirku",
+ "ToastCollectionItemsAddSuccess": "Uspješno dodavanje stavki u zbirku",
+ "ToastCollectionItemsRemoveSuccess": "Stavke izbrisane iz zbirke",
+ "ToastCollectionRemoveSuccess": "Zbirka izbrisana",
+ "ToastCollectionUpdateSuccess": "Zbirka ažurirana",
+ "ToastCoverUpdateFailed": "Ažuriranje naslovnice nije uspjelo",
+ "ToastDeleteFileFailed": "Brisanje datoteke nije uspjelo",
+ "ToastDeleteFileSuccess": "Datoteka izbrisana",
+ "ToastDeviceAddFailed": "Dodavanje uređaja nije uspjelo",
+ "ToastDeviceNameAlreadyExists": "E-čitač s tim nazivom već postoji",
+ "ToastDeviceTestEmailFailed": "Slanje probne poruke e-pošte nije uspjelo",
+ "ToastDeviceTestEmailSuccess": "Probna poruka e-pošte poslana",
+ "ToastEmailSettingsUpdateSuccess": "Postavke e-pošte ažurirane",
+ "ToastEncodeCancelFailed": "Kodiranje nije uspješno otkazano",
+ "ToastEncodeCancelSucces": "Kodiranje otkazano",
+ "ToastEpisodeDownloadQueueClearFailed": "Redoslijed izvođenja nije uspješno očišćen",
+ "ToastEpisodeDownloadQueueClearSuccess": "Redoslijed preuzimanja nastavaka očišćen",
+ "ToastEpisodeUpdateSuccess": "{0} nastavak/a ažurirano",
+ "ToastErrorCannotShare": "Dijeljenje na ovaj uređaj nije moguće",
+ "ToastFailedToLoadData": "Učitavanje podataka nije uspjelo",
+ "ToastFailedToMatch": "Nije prepoznato",
+ "ToastFailedToShare": "Dijeljenje nije uspjelo",
+ "ToastFailedToUpdate": "Ažuriranje nije uspjelo",
+ "ToastInvalidImageUrl": "Neispravan URL slike",
+ "ToastInvalidMaxEpisodesToDownload": "Neispravan unos maksimalnog broja nastavaka",
+ "ToastInvalidUrl": "Neispravan URL",
+ "ToastItemCoverUpdateSuccess": "Naslovnica stavke ažurirana",
+ "ToastItemDeletedFailed": "Brisanje stavke nije uspjelo",
+ "ToastItemDeletedSuccess": "Stavka je izbrisana",
+ "ToastItemDetailsUpdateSuccess": "Pojedinosti stavke su ažurirane",
+ "ToastItemMarkedAsFinishedFailed": "Označavanje kao Dovršeno nije uspjelo",
+ "ToastItemMarkedAsFinishedSuccess": "Stavka označena kao dovršena",
+ "ToastItemMarkedAsNotFinishedFailed": "Označavanje kao Nije dovršeno nije uspjelo",
+ "ToastItemMarkedAsNotFinishedSuccess": "Stavka označena kao nedovršena",
+ "ToastItemUpdateSuccess": "Stavka ažurirana",
+ "ToastLibraryCreateFailed": "Stvaranje knjižnice nije uspjelo",
+ "ToastLibraryCreateSuccess": "Knjižnica \"{0}\" stvorena",
+ "ToastLibraryDeleteFailed": "Brisanje knjižnice nije uspjelo",
+ "ToastLibraryDeleteSuccess": "Knjižnica izbrisana",
+ "ToastLibraryScanFailedToStart": "Skeniranje nije uspjelo",
+ "ToastLibraryScanStarted": "Skeniranje knjižnice započelo",
+ "ToastLibraryUpdateSuccess": "Knjižnica \"{0}\" ažurirana",
+ "ToastMatchAllAuthorsFailed": "Nisu prepoznati svi autori",
+ "ToastMetadataFilesRemovedError": "Pogreška kod uklanjanja datoteka metadata.{0}",
+ "ToastMetadataFilesRemovedNoneFound": "U knjižnici nisu pronađene datoteke metadata.{0}",
+ "ToastMetadataFilesRemovedNoneRemoved": "Datoteke metadata.{0} nisu uklonjenje",
+ "ToastMetadataFilesRemovedSuccess": "uklonjeno {0} datoteka metadata.{1}",
+ "ToastMustHaveAtLeastOnePath": "Mora postojati barem jedna putanja",
+ "ToastNameEmailRequired": "Ime i adresa e-pošte su obavezni",
+ "ToastNameRequired": "Ime je obavezno",
+ "ToastNewEpisodesFound": "pronađeno {0} novih nastavaka",
+ "ToastNewUserCreatedFailed": "Račun \"{0}\" nije uspješno izrađen",
+ "ToastNewUserCreatedSuccess": "Novi račun izrađen",
+ "ToastNewUserLibraryError": "Treba odabrati barem jednu knjižnicu",
+ "ToastNewUserPasswordError": "Mora imati zaporku, samo korisnik root može imati praznu zaporku",
+ "ToastNewUserTagError": "Potrebno je odabrati najmanje jednu oznaku",
+ "ToastNewUserUsernameError": "Upišite korisničko ime",
+ "ToastNoNewEpisodesFound": "Nisu pronađeni novi nastavci",
+ "ToastNoUpdatesNecessary": "Ažuriranja nisu potrebna",
+ "ToastNotificationCreateFailed": "Stvaranje obavijesti nije uspjelo",
+ "ToastNotificationDeleteFailed": "Brisanje obavijesti nije uspjelo",
+ "ToastNotificationFailedMaximum": "Najveći broj neuspješnih pokušaja mora biti >= 0",
+ "ToastNotificationQueueMaximum": "Najveći broj obavijesti u redu mora biti >= 0",
+ "ToastNotificationSettingsUpdateSuccess": "Postavke obavijesti ažurirane",
+ "ToastNotificationTestTriggerFailed": "Okidanje probne obavijesti nije uspjelo",
+ "ToastNotificationTestTriggerSuccess": "Okinuta je probna obavijest",
+ "ToastNotificationUpdateSuccess": "Obavijest ažurirana",
+ "ToastPlaylistCreateFailed": "Popis za izvođenje nije izrađen",
+ "ToastPlaylistCreateSuccess": "Popis za izvođenje izrađen",
+ "ToastPlaylistRemoveSuccess": "Popis za izvođenje uklonjen",
+ "ToastPlaylistUpdateSuccess": "Popis za izvođenje ažuriran",
+ "ToastPodcastCreateFailed": "Podcast nije izrađen",
+ "ToastPodcastCreateSuccess": "Podcast uspješno izrađen",
+ "ToastPodcastGetFeedFailed": "Dohvat izvora podcasta nije uspio",
+ "ToastPodcastNoEpisodesInFeed": "U RSS izvoru nisu pronađeni nastavci",
+ "ToastPodcastNoRssFeed": "Podcast nema RSS izvor",
+ "ToastProgressIsNotBeingSynced": "Napredak se ne sinkronizira, ponovno pokrenite reprodukciju",
+ "ToastProviderCreatedFailed": "Dodavanje pružatelja nije uspjelo",
+ "ToastProviderCreatedSuccess": "Novi pružatelj dodan",
+ "ToastProviderNameAndUrlRequired": "Ime i URL su obavezni",
+ "ToastProviderRemoveSuccess": "Pružatelj uklonjen",
+ "ToastRSSFeedCloseFailed": "RSS izvor nije uspješno zatvoren",
+ "ToastRSSFeedCloseSuccess": "RSS izvor zatvoren",
+ "ToastRemoveFailed": "Uklanjanje nije uspjelo",
+ "ToastRemoveItemFromCollectionFailed": "Neuspješno uklanjanje stavke iz zbirke",
+ "ToastRemoveItemFromCollectionSuccess": "Stavka uklonjena iz zbirke",
+ "ToastRemoveItemsWithIssuesFailed": "Uklanjanje knjižničkih stavki s problemima nije uspjelo",
+ "ToastRemoveItemsWithIssuesSuccess": "Uspješno uklonjene knjižničke stavke s problemima",
+ "ToastRenameFailed": "Preimenovanje nije uspjelo",
+ "ToastRescanFailed": "Ponovno skeniranje {0} nije uspjelo",
+ "ToastRescanRemoved": "Ponovno skeniranje dovršene stavke je uklonjeno",
+ "ToastRescanUpToDate": "Ponovno skeniranje dovršene stavke bilo je ažurno",
+ "ToastRescanUpdated": "Ponovno skeniranje dovršene stavke je ažurirano",
+ "ToastScanFailed": "Skeniranje knjižničke stavke nije uspjelo",
+ "ToastSelectAtLeastOneUser": "Odaberite najmanje jednog korisnika",
+ "ToastSendEbookToDeviceFailed": "Slanje e-knjige na uređaj nije uspjelo",
+ "ToastSendEbookToDeviceSuccess": "E-knjiga poslana uređaju \"{0}\"",
+ "ToastSeriesUpdateFailed": "Ažuriranje serijala nije uspjelo",
+ "ToastSeriesUpdateSuccess": "Serijal uspješno ažuriran",
+ "ToastServerSettingsUpdateSuccess": "Postavke poslužitelja ažurirane",
+ "ToastSessionCloseFailed": "Zatvaranje sesije nije uspjelo",
"ToastSessionDeleteFailed": "Neuspješno brisanje serije",
"ToastSessionDeleteSuccess": "Sesija obrisana",
- "ToastSocketConnected": "Socket connected",
- "ToastSocketDisconnected": "Socket disconnected",
- "ToastSocketFailedToConnect": "Socket failed to connect",
- "ToastSortingPrefixesEmptyError": "Must have at least 1 sorting prefix",
- "ToastSortingPrefixesUpdateFailed": "Failed to update sorting prefixes",
- "ToastSortingPrefixesUpdateSuccess": "Sorting prefixes updated ({0} items)",
+ "ToastSleepTimerDone": "Timer za spavanje istječe... zZzzZz",
+ "ToastSlugMustChange": "Slug sadrži nedozvoljene znakove",
+ "ToastSlugRequired": "Slug je obavezan",
+ "ToastSocketConnected": "Socket priključen",
+ "ToastSocketDisconnected": "Veza sa socketom je prekinuta",
+ "ToastSocketFailedToConnect": "Priključivanje na socket nije uspjelo",
+ "ToastSortingPrefixesEmptyError": "Mora imati najmanje jedan prefiks za sortiranje",
+ "ToastSortingPrefixesUpdateSuccess": "Prefiksi za sortiranje ažurirani ({0} stavki)",
+ "ToastTitleRequired": "Naslov je obavezan",
+ "ToastUnknownError": "Nepoznata pogreška",
+ "ToastUnlinkOpenIdFailed": "Uklanjanje OpenID veze korisnika nije uspjelo",
+ "ToastUnlinkOpenIdSuccess": "Korisnik odspojen od OpenID-ja",
"ToastUserDeleteFailed": "Neuspješno brisanje korisnika",
- "ToastUserDeleteSuccess": "Korisnik obrisan"
-}
\ No newline at end of file
+ "ToastUserDeleteSuccess": "Korisnik obrisan",
+ "ToastUserPasswordChangeSuccess": "Zaporka je uspješno promijenjena",
+ "ToastUserPasswordMismatch": "Zaporke se ne podudaraju",
+ "ToastUserPasswordMustChange": "Nova zaporka ne smije biti jednaka staroj",
+ "ToastUserRootRequireName": "Obavezan je unos korisničkog imena root korisnika"
+}
diff --git a/client/strings/hu.json b/client/strings/hu.json
index 971c45fc8..8ab6be9e9 100644
--- a/client/strings/hu.json
+++ b/client/strings/hu.json
@@ -9,6 +9,7 @@
"ButtonApply": "Alkalmaz",
"ButtonApplyChapters": "Fejezetek alkalmazása",
"ButtonAuthors": "Szerzők",
+ "ButtonBack": "Vissza",
"ButtonBrowseForFolder": "Mappa keresése",
"ButtonCancel": "Mégse",
"ButtonCancelEncode": "Kódolás megszakítása",
@@ -18,7 +19,8 @@
"ButtonChooseFiles": "Fájlok kiválasztása",
"ButtonClearFilter": "Szűrő törlése",
"ButtonCloseFeed": "Hírcsatorna bezárása",
- "ButtonCollections": "Gyűjtemény",
+ "ButtonCloseSession": "Nyitott munkamenet bezárása",
+ "ButtonCollections": "Gyűjtemények",
"ButtonConfigureScanner": "Szkenner konfigurálása",
"ButtonCreate": "Létrehozás",
"ButtonCreateBackup": "Biztonsági másolat készítése",
@@ -27,6 +29,9 @@
"ButtonEdit": "Szerkesztés",
"ButtonEditChapters": "Fejezetek szerkesztése",
"ButtonEditPodcast": "Podcast szerkesztése",
+ "ButtonEnable": "Engedélyezés",
+ "ButtonFireAndFail": "Küldés és összeomlás",
+ "ButtonFireOnTest": "onTest esemény küldése",
"ButtonForceReScan": "Újraszkennelés kényszerítése",
"ButtonFullPath": "Teljes útvonal",
"ButtonHide": "Elrejtés",
@@ -43,34 +48,38 @@
"ButtonMatchAllAuthors": "Minden szerző egyeztetése",
"ButtonMatchBooks": "Könyvek egyeztetése",
"ButtonNevermind": "Mindegy",
- "ButtonNext": "Next",
+ "ButtonNext": "Következő",
"ButtonNextChapter": "Következő fejezet",
+ "ButtonNextItemInQueue": "Következő elem a sorban",
"ButtonOk": "Oké",
"ButtonOpenFeed": "Hírcsatorna megnyitása",
"ButtonOpenManager": "Kezelő megnyitása",
"ButtonPause": "Szünet",
"ButtonPlay": "Lejátszás",
+ "ButtonPlayAll": "Összes lejátszása",
"ButtonPlaying": "Lejátszás folyamatban",
"ButtonPlaylists": "Lejátszási listák",
- "ButtonPrevious": "Previous",
+ "ButtonPrevious": "Előző",
"ButtonPreviousChapter": "Előző fejezet",
+ "ButtonProbeAudioFile": "Hangfájl vizsgálata",
"ButtonPurgeAllCache": "Összes gyorsítótár törlése",
"ButtonPurgeItemsCache": "Elemek gyorsítótárának törlése",
- "ButtonPurgeMediaProgress": "Médialejátszás állapotának törlése",
"ButtonQueueAddItem": "Hozzáadás a sorhoz",
"ButtonQueueRemoveItem": "Eltávolítás a sorból",
+ "ButtonQuickEmbed": "Gyors beágyazás",
+ "ButtonQuickEmbedMetadata": "Metaadat gyors beágyazása",
"ButtonQuickMatch": "Gyors egyeztetés",
+ "ButtonReScan": "Újraszkennelés",
"ButtonRead": "Olvasás",
- "ButtonReadLess": "Read less",
- "ButtonReadMore": "Read more",
- "ButtonRefresh": "Refresh",
+ "ButtonReadLess": "Kevesebb mutatása",
+ "ButtonReadMore": "Mutass többet",
+ "ButtonRefresh": "Frissítés",
"ButtonRemove": "Eltávolítás",
"ButtonRemoveAll": "Összes eltávolítása",
"ButtonRemoveAllLibraryItems": "Összes könyvtárelem eltávolítása",
"ButtonRemoveFromContinueListening": "Eltávolítás a Folytatás hallgatásából",
"ButtonRemoveFromContinueReading": "Eltávolítás a Folytatás olvasásából",
"ButtonRemoveSeriesFromContinueSeries": "Sorozat eltávolítása a Folytatás sorozatokból",
- "ButtonReScan": "Újraszkennelés",
"ButtonReset": "Visszaállítás",
"ButtonResetToDefault": "Alapértelmezésre állítás",
"ButtonRestore": "Visszaállítás",
@@ -83,13 +92,15 @@
"ButtonSelectFolderPath": "Mappa útvonalának kiválasztása",
"ButtonSeries": "Sorozatok",
"ButtonSetChaptersFromTracks": "Fejezetek beállítása sávokból",
- "ButtonShare": "Share",
+ "ButtonShare": "Megosztás",
"ButtonShiftTimes": "Idők eltolása",
"ButtonShow": "Megjelenítés",
"ButtonStartM4BEncode": "M4B kódolás indítása",
"ButtonStartMetadataEmbed": "Metaadatok beágyazásának indítása",
+ "ButtonStats": "Statisztikák",
"ButtonSubmit": "Beküldés",
"ButtonTest": "Teszt",
+ "ButtonUnlinkOpenId": "OpenID szétkapcsolása",
"ButtonUpload": "Feltöltés",
"ButtonUploadBackup": "Biztonsági másolat feltöltése",
"ButtonUploadCover": "Borító feltöltése",
@@ -102,10 +113,11 @@
"ErrorUploadFetchMetadataNoResults": "Nem sikerült a metaadatok lekérése - próbálja meg frissíteni a címet és/vagy a szerzőt",
"ErrorUploadLacksTitle": "Cím szükséges",
"HeaderAccount": "Fiók",
+ "HeaderAddCustomMetadataProvider": "Egyedi metaadat szolgáltató hozzáadása",
"HeaderAdvanced": "Haladó",
"HeaderAppriseNotificationSettings": "Apprise értesítési beállítások",
- "HeaderAudiobookTools": "Hangoskönyv fájlkezelő eszközök",
"HeaderAudioTracks": "Audiósávok",
+ "HeaderAudiobookTools": "Hangoskönyv fájlkezelő eszközök",
"HeaderAuthentication": "Hitelesítés",
"HeaderBackups": "Biztonsági másolatok",
"HeaderChangePassword": "Jelszó megváltoztatása",
@@ -115,6 +127,7 @@
"HeaderCollectionItems": "Gyűjtemény elemek",
"HeaderCover": "Borító",
"HeaderCurrentDownloads": "Jelenlegi letöltések",
+ "HeaderCustomMessageOnLogin": "Egyedi üzenet bejelentkezéskor",
"HeaderCustomMetadataProviders": "Egyéni metaadat-szolgáltatók",
"HeaderDetails": "Részletek",
"HeaderDownloadQueue": "Letöltési sor",
@@ -146,6 +159,8 @@
"HeaderMetadataToEmbed": "Beágyazandó metaadatok",
"HeaderNewAccount": "Új fiók",
"HeaderNewLibrary": "Új könyvtár",
+ "HeaderNotificationCreate": "Értesítés készítése",
+ "HeaderNotificationUpdate": "Értesítés frissítése",
"HeaderNotifications": "Értesítések",
"HeaderOpenIDConnectAuthentication": "OpenID Connect hitelesítés",
"HeaderOpenRSSFeed": "RSS hírcsatorna megnyitása",
@@ -153,15 +168,16 @@
"HeaderPasswordAuthentication": "Jelszó hitelesítés",
"HeaderPermissions": "Engedélyek",
"HeaderPlayerQueue": "Lejátszó sor",
+ "HeaderPlayerSettings": "Lejátszó beállításai",
"HeaderPlaylist": "Lejátszási lista",
"HeaderPlaylistItems": "Lejátszási lista elemek",
"HeaderPodcastsToAdd": "Hozzáadandó podcastok",
"HeaderPreviewCover": "Borító előnézete",
+ "HeaderRSSFeedGeneral": "RSS részletek",
+ "HeaderRSSFeedIsOpen": "RSS hírcsatorna nyitva van",
+ "HeaderRSSFeeds": "RSS hírcsatornák",
"HeaderRemoveEpisode": "Epizód eltávolítása",
"HeaderRemoveEpisodes": "{0} epizód eltávolítása",
- "HeaderRSSFeedGeneral": "RSS részletek",
- "HeaderRSSFeedIsOpen": "RSS hírcsatorna nyitva",
- "HeaderRSSFeeds": "RSS hírcsatornák",
"HeaderSavedMediaProgress": "Mentett médialejátszási állapot",
"HeaderSchedule": "Ütemezés",
"HeaderScheduleLibraryScans": "Könyvtárak automatikus szkennelésének ütemezése",
@@ -175,7 +191,7 @@
"HeaderSleepTimer": "Alvásidőzítő",
"HeaderStatsLargestItems": "Legnagyobb elemek",
"HeaderStatsLongestItems": "Leghosszabb elemek (órákban)",
- "HeaderStatsMinutesListeningChart": "Hallgatási percek (az utolsó 7 napban)",
+ "HeaderStatsMinutesListeningChart": "Hallgatási grafikon percekben (az elmúlt 7 napból)",
"HeaderStatsRecentSessions": "Legutóbbi munkamenetek",
"HeaderStatsTop10Authors": "Top 10 szerzők",
"HeaderStatsTop5Genres": "Top 5 műfajok",
@@ -186,25 +202,25 @@
"HeaderUpdateDetails": "Részletek frissítése",
"HeaderUpdateLibrary": "Könyvtár frissítése",
"HeaderUsers": "Felhasználók",
- "HeaderYearReview": "Year {0} in Review",
+ "HeaderYearReview": "{0} év áttekintése",
"HeaderYourStats": "Saját statisztikák",
"LabelAbridged": "Tömörített",
- "LabelAbridgedChecked": "Abridged (checked)",
- "LabelAbridgedUnchecked": "Unabridged (unchecked)",
- "LabelAccessibleBy": "Accessible by",
+ "LabelAbridgedChecked": "Rövidített (ellenőrizve)",
+ "LabelAbridgedUnchecked": "Teljes (nem ellenőrzött)",
+ "LabelAccessibleBy": "Hozzáférhető",
"LabelAccountType": "Fióktípus",
- "LabelAccountTypeAdmin": "Admin",
+ "LabelAccountTypeAdmin": "Adminisztrátor",
"LabelAccountTypeGuest": "Vendég",
"LabelAccountTypeUser": "Felhasználó",
"LabelActivity": "Tevékenység",
- "LabelAdded": "Hozzáadva",
- "LabelAddedAt": "Hozzáadás ideje",
"LabelAddToCollection": "Hozzáadás a gyűjteményhez",
"LabelAddToCollectionBatch": "{0} könyv hozzáadása a gyűjteményhez",
"LabelAddToPlaylist": "Hozzáadás a lejátszási listához",
"LabelAddToPlaylistBatch": "{0} elem hozzáadása a lejátszási listához",
+ "LabelAddedAt": "Hozzáadás ideje",
+ "LabelAddedDate": "{0} Hozzáadva",
"LabelAdminUsersOnly": "Csak admin felhasználók",
- "LabelAll": "Minden",
+ "LabelAll": "Összes",
"LabelAllUsers": "Minden felhasználó",
"LabelAllUsersExcludingGuests": "Minden felhasználó, vendégek kivételével",
"LabelAllUsersIncludingGuests": "Minden felhasználó, beleértve a vendégeket is",
@@ -225,26 +241,27 @@
"LabelBackupLocation": "Biztonsági másolat helye",
"LabelBackupsEnableAutomaticBackups": "Automatikus biztonsági másolatok engedélyezése",
"LabelBackupsEnableAutomaticBackupsHelp": "Biztonsági másolatok mentése a /metadata/backups mappába",
- "LabelBackupsMaxBackupSize": "Maximális biztonsági másolat méret (GB-ban)",
+ "LabelBackupsMaxBackupSize": "Maximális biztonsági másolat méret (GB-ban) (0-tól végtelenig)",
"LabelBackupsMaxBackupSizeHelp": "A rossz konfiguráció elleni védelem érdekében a biztonsági másolatok meghiúsulnak, ha meghaladják a beállított méretet.",
"LabelBackupsNumberToKeep": "Megtartandó biztonsági másolatok száma",
"LabelBackupsNumberToKeepHelp": "Egyszerre csak 1 biztonsági másolat kerül eltávolításra, tehát ha már több biztonsági másolat van, mint ez a szám, akkor manuálisan kell eltávolítani őket.",
"LabelBitrate": "Bitráta",
"LabelBooks": "Könyvek",
"LabelButtonText": "Gomb szövege",
- "LabelByAuthor": "by {0}",
+ "LabelByAuthor": "{} által",
"LabelChangePassword": "Jelszó megváltoztatása",
"LabelChannels": "Csatornák",
+ "LabelChapterTitle": "Fejezet címe",
"LabelChapters": "Fejezetek",
"LabelChaptersFound": "fejezet található",
- "LabelChapterTitle": "Fejezet címe",
"LabelClickForMoreInfo": "További információkért kattintson",
"LabelClosePlayer": "Lejátszó bezárása",
"LabelCodec": "Kodek",
"LabelCollapseSeries": "Sorozat összecsukása",
+ "LabelCollapseSubSeries": "Alszéria összecsukása",
"LabelCollection": "Gyűjtemény",
"LabelCollections": "Gyűjtemények",
- "LabelComplete": "Teljes",
+ "LabelComplete": "Kész",
"LabelConfirmPassword": "Jelszó megerősítése",
"LabelContinueListening": "Hallgatás folytatása",
"LabelContinueReading": "Olvasás folytatása",
@@ -257,6 +274,7 @@
"LabelCurrently": "Jelenleg:",
"LabelCustomCronExpression": "Egyéni Cron kifejezés:",
"LabelDatetime": "Dátumidő",
+ "LabelDays": "Napok",
"LabelDeleteFromFileSystemCheckbox": "Törlés a fájlrendszerről (ne jelölje be, ha csak az adatbázisból szeretné eltávolítani)",
"LabelDescription": "Leírás",
"LabelDeselectAll": "Minden kijelölés megszüntetése",
@@ -270,33 +288,42 @@
"LabelDownload": "Letöltés",
"LabelDownloadNEpisodes": "{0} epizód letöltése",
"LabelDuration": "Időtartam",
- "LabelDurationComparisonExactMatch": "(exact match)",
- "LabelDurationComparisonLonger": "({0} longer)",
- "LabelDurationComparisonShorter": "({0} shorter)",
+ "LabelDurationComparisonExactMatch": "(pontos egyezés)",
+ "LabelDurationComparisonLonger": "({0}-val hosszabb)",
+ "LabelDurationComparisonShorter": "({0}-val rövidebb)",
"LabelDurationFound": "Megtalált időtartam:",
"LabelEbook": "E-könyv",
"LabelEbooks": "E-könyvek",
"LabelEdit": "Szerkesztés",
"LabelEmail": "E-mail",
"LabelEmailSettingsFromAddress": "Feladó címe",
+ "LabelEmailSettingsRejectUnauthorized": "Nem hitelesített tanúsítványok elutasítása",
+ "LabelEmailSettingsRejectUnauthorizedHelp": "Az SSL tanúsítványok érvényesítésének letiltása biztonsági kockázatoknak, például man-in-the-middle támadásoknak teheti ki a kapcsolatot. Csak akkor tiltsd le ezt az opciót, ha tisztában vagy a következményekkel, és megbízol az e-mail szerverben, amelyhez csatlakozol.",
"LabelEmailSettingsSecure": "Biztonságos",
"LabelEmailSettingsSecureHelp": "Ha igaz, a kapcsolat TLS-t használ a szerverhez való csatlakozáskor. Ha hamis, akkor TLS-t használ, ha a szerver támogatja a STARTTLS kiterjesztést. A legtöbb esetben állítsa ezt az értéket igazra, ha a 465-ös portra csatlakozik. A 587-es vagy 25-ös port esetében tartsa hamis értéken. (a nodemailer.com/smtp/#authentication oldalról)",
"LabelEmailSettingsTestAddress": "Teszt cím",
"LabelEmbeddedCover": "Beágyazott borító",
"LabelEnable": "Engedélyezés",
"LabelEnd": "Vége",
+ "LabelEndOfChapter": "Fejezet vége",
"LabelEpisode": "Epizód",
"LabelEpisodeTitle": "Epizód címe",
"LabelEpisodeType": "Epizód típusa",
+ "LabelEpisodes": "Epizódok",
"LabelExample": "Példa",
+ "LabelExpandSeries": "Sorozat kinyitása",
+ "LabelExpandSubSeries": "Alsorozat kinyitása",
"LabelExplicit": "Explicit",
- "LabelExplicitChecked": "Explicit (checked)",
- "LabelExplicitUnchecked": "Not Explicit (unchecked)",
+ "LabelExplicitChecked": "Explicit (ellenőrizve)",
+ "LabelExplicitUnchecked": "Nem explicit (nem ellenőrzött)",
+ "LabelExportOPML": "OPML exportálása",
"LabelFeedURL": "Hírcsatorna URL",
"LabelFetchingMetadata": "Metaadatok lekérése",
"LabelFile": "Fájl",
"LabelFileBirthtime": "Fájl létrehozásának ideje",
+ "LabelFileBornDate": "Született {0}",
"LabelFileModified": "Fájl módosításának ideje",
+ "LabelFileModifiedDate": "Módosítva {0}",
"LabelFilename": "Fájlnév",
"LabelFilterByUser": "Szűrés felhasználó szerint",
"LabelFindEpisodes": "Epizódok keresése",
@@ -304,6 +331,7 @@
"LabelFolder": "Mappa",
"LabelFolders": "Mappák",
"LabelFontBold": "Félkövér",
+ "LabelFontBoldness": "Betű vastagság",
"LabelFontFamily": "Betűtípus család",
"LabelFontItalic": "Dőlt",
"LabelFontScale": "Betűméret skála",
@@ -314,14 +342,16 @@
"LabelHardDeleteFile": "Fájl végleges törlése",
"LabelHasEbook": "Van e-könyve",
"LabelHasSupplementaryEbook": "Van kiegészítő e-könyve",
+ "LabelHideSubtitles": "Alcím elrejtése",
"LabelHighestPriority": "Legmagasabb prioritás",
- "LabelHost": "Hoszt",
+ "LabelHost": "Kiszolgáló",
"LabelHour": "Óra",
+ "LabelHours": "Órák",
"LabelIcon": "Ikon",
"LabelImageURLFromTheWeb": "Kép URL a weben",
+ "LabelInProgress": "Folyamatban",
"LabelIncludeInTracklist": "Beleértve a sávlistába",
"LabelIncomplete": "Befejezetlen",
- "LabelInProgress": "Folyamatban",
"LabelInterval": "Intervallum",
"LabelIntervalCustomDailyWeekly": "Egyéni napi/heti",
"LabelIntervalEvery12Hours": "Minden 12 órában",
@@ -333,8 +363,11 @@
"LabelIntervalEveryHour": "Minden órában",
"LabelInvert": "Megfordítás",
"LabelItem": "Elem",
+ "LabelJumpBackwardAmount": "Visszafelé ugrás mennyisége",
+ "LabelJumpForwardAmount": "Előre ugrás mennyisége",
"LabelLanguage": "Nyelv",
"LabelLanguageDefaultServer": "Szerver alapértelmezett nyelve",
+ "LabelLanguages": "Nyelvek",
"LabelLastBookAdded": "Utolsó hozzáadott könyv",
"LabelLastBookUpdated": "Utolsó frissített könyv",
"LabelLastSeen": "Utolsó látogatás",
@@ -346,12 +379,13 @@
"LabelLess": "Kevesebb",
"LabelLibrariesAccessibleToUser": "A felhasználó számára elérhető könyvtárak",
"LabelLibrary": "Könyvtár",
+ "LabelLibraryFilterSublistEmpty": "Nem {0}",
"LabelLibraryItem": "Könyvtári elem",
"LabelLibraryName": "Könyvtár neve",
"LabelLimit": "Korlát",
"LabelLineSpacing": "Sorköz",
"LabelListenAgain": "Újrahallgatás",
- "LabelLogLevelDebug": "Debug",
+ "LabelLogLevelDebug": "Hibakeresés",
"LabelLogLevelInfo": "Információ",
"LabelLogLevelWarn": "Figyelmeztetés",
"LabelLookForNewEpisodesAfterDate": "Új epizódok keresése ezen a dátum után",
@@ -360,14 +394,15 @@
"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",
"LabelMediaPlayer": "Médialejátszó",
"LabelMediaType": "Média típus",
- "LabelMetadataOrderOfPrecedenceDescription": "A magasabb prioritású metaadat-források felülírják az alacsonyabb prioritásúakat",
- "LabelMetadataProvider": "Metaadat-szolgáltató",
"LabelMetaTag": "Meta címke",
"LabelMetaTags": "Meta címkék",
+ "LabelMetadataOrderOfPrecedenceDescription": "A magasabb prioritású metaadat-források felülírják az alacsonyabb prioritásúakat",
+ "LabelMetadataProvider": "Metaadat-szolgáltató",
"LabelMinute": "Perc",
+ "LabelMinutes": "Percek",
"LabelMissing": "Hiányzó",
- "LabelMissingEbook": "Has no ebook",
- "LabelMissingSupplementaryEbook": "Has no supplementary ebook",
+ "LabelMissingEbook": "Nincs e-könyve",
+ "LabelMissingSupplementaryEbook": "Nincs kiegészítő e-könyve",
"LabelMobileRedirectURIs": "Engedélyezett mobil átirányítási URI-k",
"LabelMobileRedirectURIsDescription": "Ez egy fehérlista az érvényes mobilalkalmazás-átirányítási URI-k számára. Az alapértelmezett audiobookshelf://oauth, amely eltávolítható vagy kiegészíthető további URI-kkal harmadik féltől származó alkalmazásintegráció érdekében. Ha az egyetlen bejegyzés egy csillag (*), akkor bármely URI engedélyezett.",
"LabelMore": "Több",
@@ -376,33 +411,35 @@
"LabelNarrator": "Előadó",
"LabelNarrators": "Előadók",
"LabelNew": "Új",
+ "LabelNewPassword": "Új jelszó",
"LabelNewestAuthors": "Legújabb szerzők",
"LabelNewestEpisodes": "Legújabb epizódok",
- "LabelNewPassword": "Új jelszó",
"LabelNextBackupDate": "Következő biztonsági másolat dátuma",
"LabelNextScheduledRun": "Következő ütemezett futtatás",
+ "LabelNoCustomMetadataProviders": "Nincsenek egyedi metaadat szolgáltatók",
"LabelNoEpisodesSelected": "Nincsenek kiválasztott epizódok",
- "LabelNotes": "Megjegyzések",
"LabelNotFinished": "Nem befejezett",
+ "LabelNotStarted": "Nem indult el",
+ "LabelNotes": "Megjegyzések",
"LabelNotificationAppriseURL": "Apprise URL(ek)",
"LabelNotificationAvailableVariables": "Elérhető változók",
"LabelNotificationBodyTemplate": "Törzs sablon",
"LabelNotificationEvent": "Értesítési esemény",
+ "LabelNotificationTitleTemplate": "Cím sablon",
"LabelNotificationsMaxFailedAttempts": "Maximális sikertelen próbálkozások",
"LabelNotificationsMaxFailedAttemptsHelp": "Az értesítések akkor kerülnek letiltásra, ha ennyiszer nem sikerül elküldeni őket",
"LabelNotificationsMaxQueueSize": "Maximális értesítési események sorának mérete",
"LabelNotificationsMaxQueueSizeHelp": "Az események korlátozva vannak, hogy másodpercenként 1-szer történjenek. Ha a sor maximális méretű, akkor az események figyelmen kívül lesznek hagyva. Ez megakadályozza az értesítések spamelését.",
- "LabelNotificationTitleTemplate": "Cím sablon",
- "LabelNotStarted": "Nem indult el",
"LabelNumberOfBooks": "Könyvek száma",
"LabelNumberOfEpisodes": "Epizódok száma",
- "LabelOpenIDAdvancedPermsClaimDescription": "Name of the OpenID claim that contains advanced permissions for user actions within the application which will apply to non-admin roles (if configured). If the claim is missing from the response, access to ABS will be denied. If a single option is missing, it will be treated as false. Ensure the identity provider's claim matches the expected structure:",
- "LabelOpenIDClaims": "Leave the following options empty to disable advanced group and permissions assignment, automatically assigning 'User' group then.",
- "LabelOpenIDGroupClaimDescription": "Name of the OpenID claim that contains a list of the user's groups. Commonly referred to as groups. If configured, the application will automatically assign roles based on the user's group memberships, provided that these groups are named case-insensitively 'admin', 'user', or 'guest' in the claim. The claim should contain a list, and if a user belongs to multiple groups, the application will assign the role corresponding to the highest level of access. If no group matches, access will be denied.",
+ "LabelOpenIDAdvancedPermsClaimDescription": "Az OpenID-igény neve, amely a felhasználói műveletekre vonatkozó haladó jogosultságokat tartalmazza az alkalmazáson belül, és amely a nem adminisztrátori szerepkörökre vonatkozik (ha konfigurálva van). Ha az igény hiányzik a válaszból, az ABS-hez való hozzáférés megtagadásra kerül. Ha egyetlen opció hiányzik, azt false-ként fogja kezelni. Győződj meg arról, hogy az identitásszolgáltató igénye megfelel a várt struktúrának:",
+ "LabelOpenIDClaims": "Hagyd üresen a következő opciókat, hogy letiltsd a haladó csoport- és jogosultság-hozzárendelést, ekkor automatikusan a ‘Felhasználó’ csoport kerül hozzárendelésre.",
+ "LabelOpenIDGroupClaimDescription": "Az OpenID-igény neve, amely a felhasználó csoportjainak listáját tartalmazza. Általában groups néven hivatkoznak rá. Ha konfigurálva van, az alkalmazás automatikusan hozzárendeli a szerepköröket a felhasználó csoporttagságai alapján, feltéve, hogy ezek a csoportok az igényben kis- és nagybetűkre érzéketlenül ‘admin’, ‘user’ vagy ‘guest’ néven szerepelnek. Az igénynek egy listát kell tartalmaznia, és ha egy felhasználó több csoport tagja, az alkalmazás a legmagasabb szintű hozzáféréssel rendelkező szerepkört rendeli hozzá. Ha egyetlen csoport sem felel meg, a hozzáférés megtagadásra kerül.",
"LabelOpenRSSFeed": "RSS hírcsatorna megnyitása",
"LabelOverwrite": "Felülírás",
"LabelPassword": "Jelszó",
"LabelPath": "Útvonal",
+ "LabelPermanent": "Végleges",
"LabelPermissionsAccessAllLibraries": "Hozzáférhet az összes könyvtárhoz",
"LabelPermissionsAccessAllTags": "Hozzáférhet az összes címkéhez",
"LabelPermissionsAccessExplicitContent": "Hozzáférhet explicit tartalomhoz",
@@ -410,45 +447,49 @@
"LabelPermissionsDownload": "Letölthet",
"LabelPermissionsUpdate": "Frissíthet",
"LabelPermissionsUpload": "Feltölthet",
- "LabelPersonalYearReview": "Your Year in Review ({0})",
+ "LabelPersonalYearReview": "Az éved áttekintése ({0})",
"LabelPhotoPathURL": "Fénykép útvonal/URL",
- "LabelPlaylists": "Lejátszási listák",
"LabelPlayMethod": "Lejátszási módszer",
+ "LabelPlayerChapterNumberMarker": "{0} a {1} -ből",
+ "LabelPlaylists": "Lejátszási listák",
"LabelPodcast": "Podcast",
- "LabelPodcasts": "Podcastok",
"LabelPodcastSearchRegion": "Podcast keresési régió",
"LabelPodcastType": "Podcast típus",
+ "LabelPodcasts": "Podcastok",
"LabelPort": "Port",
"LabelPrefixesToIgnore": "Figyelmen kívül hagyandó előtagok (nem érzékeny a kis- és nagybetűkre)",
- "LabelPreventIndexing": "A hírcsatorna indexelésének megakadályozása az iTunes és a Google podcast könyvtáraiban",
+ "LabelPreventIndexing": "Megakadályozza a hírcsatornájának indexelését az iTunes és a Google podcast könyvtárakban",
"LabelPrimaryEbook": "Elsődleges e-könyv",
"LabelProgress": "Haladás",
"LabelProvider": "Szolgáltató",
+ "LabelProviderAuthorizationValue": "Authorization fejléc értéke",
"LabelPubDate": "Kiadás dátuma",
- "LabelPublisher": "Kiadó",
"LabelPublishYear": "Kiadás éve",
- "LabelRead": "Olvasás",
- "LabelReadAgain": "Újraolvasás",
- "LabelReadEbookWithoutProgress": "E-könyv olvasása haladás nélkül",
- "LabelRecentlyAdded": "Nemrég hozzáadva",
- "LabelRecentSeries": "Legutóbbi sorozatok",
- "LabelRecommended": "Ajánlott",
- "LabelRedo": "Újra",
- "LabelRegion": "Régió",
- "LabelReleaseDate": "Megjelenés dátuma",
- "LabelRemoveCover": "Borító eltávolítása",
- "LabelRowsPerPage": "Sorok száma oldalanként",
+ "LabelPublishedDate": "Kiadva {0}",
+ "LabelPublisher": "Kiadó",
+ "LabelPublishers": "Kiadók",
"LabelRSSFeedCustomOwnerEmail": "Egyéni tulajdonos e-mail",
"LabelRSSFeedCustomOwnerName": "Egyéni tulajdonos neve",
"LabelRSSFeedOpen": "RSS hírcsatorna nyitva",
"LabelRSSFeedPreventIndexing": "Indexelés megakadályozása",
"LabelRSSFeedSlug": "RSS hírcsatorna slug",
"LabelRSSFeedURL": "RSS hírcsatorna URL",
+ "LabelRandomly": "Véletlenszerűen",
+ "LabelRead": "Olvasás",
+ "LabelReadAgain": "Újraolvasás",
+ "LabelReadEbookWithoutProgress": "E-könyv olvasása haladás nélkül",
+ "LabelRecentSeries": "Legutóbbi sorozatok",
+ "LabelRecentlyAdded": "Nemrég hozzáadva",
+ "LabelRecommended": "Ajánlott",
+ "LabelRedo": "Újra",
+ "LabelRegion": "Régió",
+ "LabelReleaseDate": "Megjelenés dátuma",
+ "LabelRemoveCover": "Borító eltávolítása",
+ "LabelRowsPerPage": "Sorok száma oldalanként",
"LabelSearchTerm": "Keresési kifejezés",
"LabelSearchTitle": "Cím keresése",
"LabelSearchTitleOrASIN": "Cím vagy ASIN keresése",
"LabelSeason": "Évad",
- "LabelSelectAll": "Select all",
"LabelSelectAllEpisodes": "Összes epizód kiválasztása",
"LabelSelectEpisodesShowing": "Kiválasztás {0} megjelenített epizód",
"LabelSelectUsers": "Felhasználók kiválasztása",
@@ -457,7 +498,6 @@
"LabelSeries": "Sorozat",
"LabelSeriesName": "Sorozat neve",
"LabelSeriesProgress": "Sorozat haladása",
- "LabelServerYearReview": "Server Year in Review ({0})",
"LabelSetEbookAsPrimary": "Beállítás elsődlegesként",
"LabelSetEbookAsSupplementary": "Beállítás kiegészítőként",
"LabelSettingsAudiobooksOnly": "Csak hangoskönyvek",
@@ -471,8 +511,6 @@
"LabelSettingsEnableWatcher": "Figyelő engedélyezése",
"LabelSettingsEnableWatcherForLibrary": "Mappafigyelő engedélyezése a könyvtárban",
"LabelSettingsEnableWatcherHelp": "Engedélyezi az automatikus elem hozzáadás/frissítés funkciót, amikor fájlváltozásokat észlel. *Szerver újraindítása szükséges",
- "LabelSettingsEpubsAllowScriptedContent": "Allow scripted content in epubs",
- "LabelSettingsEpubsAllowScriptedContentHelp": "Allow epub files to execute scripts. It is recommended to keep this setting disabled unless you trust the source of the epub files.",
"LabelSettingsExperimentalFeatures": "Kísérleti funkciók",
"LabelSettingsExperimentalFeaturesHelp": "Fejlesztés alatt álló funkciók, amelyek visszajelzésre és tesztelésre szorulnak. Kattintson a github megbeszélés megnyitásához.",
"LabelSettingsFindCovers": "Borítók keresése",
@@ -481,8 +519,6 @@
"LabelSettingsHideSingleBookSeriesHelp": "A csak egy könyvet tartalmazó sorozatok el lesznek rejtve a sorozatok oldalról és a kezdőlap polcairól.",
"LabelSettingsHomePageBookshelfView": "Kezdőlap használja a könyvespolc nézetet",
"LabelSettingsLibraryBookshelfView": "Könyvtár használja a könyvespolc nézetet",
- "LabelSettingsOnlyShowLaterBooksInContinueSeries": "Skip earlier books in Continue Series",
- "LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "The Continue Series home page shelf shows the first book not started in series that have at least one book finished and no books in progress. Enabling this setting will continue series from the furthest completed book instead of the first book not started.",
"LabelSettingsParseSubtitles": "Feliratok elemzése",
"LabelSettingsParseSubtitlesHelp": "Feliratok kinyerése a hangoskönyv mappaneveiből. A feliratnak el kell különülnie egy \" - \" jellel például: \"Könyv címe - Egy felirat itt\" esetén a felirat \"Egy felirat itt\"",
"LabelSettingsPreferMatchedMetadata": "Preferált egyeztetett metaadatok",
@@ -499,14 +535,13 @@
"LabelSettingsStoreMetadataWithItemHelp": "Alapértelmezés szerint a metaadatfájlok a /metadata/items mappában vannak tárolva, ennek a beállításnak az engedélyezése a metaadatfájlokat a könyvtári elem mappáiban tárolja",
"LabelSettingsTimeFormat": "Időformátum",
"LabelShowAll": "Mindent mutat",
- "LabelShowSeconds": "Show seconds",
"LabelSize": "Méret",
"LabelSleepTimer": "Alvásidőzítő",
"LabelSlug": "Rövid cím",
"LabelStart": "Kezdés",
+ "LabelStartTime": "Kezdési idő",
"LabelStarted": "Elkezdődött",
"LabelStartedAt": "Kezdés ideje",
- "LabelStartTime": "Kezdési idő",
"LabelStatsAudioTracks": "Audiósávok",
"LabelStatsAuthors": "Szerzők",
"LabelStatsBestDay": "Legjobb nap",
@@ -530,7 +565,6 @@
"LabelTagsNotAccessibleToUser": "A felhasználó számára nem elérhető címkék",
"LabelTasks": "Futó feladatok",
"LabelTextEditorBulletedList": "Pontozott lista",
- "LabelTextEditorLink": "Link",
"LabelTextEditorNumberedList": "Számozott lista",
"LabelTextEditorUnlink": "Link eltávolítása",
"LabelTheme": "Téma",
@@ -562,9 +596,9 @@
"LabelUnknown": "Ismeretlen",
"LabelUpdateCover": "Borító frissítése",
"LabelUpdateCoverHelp": "Lehetővé teszi a meglévő borítók felülírását a kiválasztott könyveknél, amikor találatot talál",
- "LabelUpdatedAt": "Frissítve",
"LabelUpdateDetails": "Részletek frissítése",
"LabelUpdateDetailsHelp": "Lehetővé teszi a meglévő részletek felülírását a kiválasztott könyveknél, amikor találatot talál",
+ "LabelUpdatedAt": "Frissítve",
"LabelUploaderDragAndDrop": "Fájlok vagy mappák húzása és elengedése",
"LabelUploaderDropFiles": "Fájlok elengedése",
"LabelUploaderItemFetchMetadataHelp": "Cím, szerző és sorozat automatikus lekérése",
@@ -579,8 +613,6 @@
"LabelViewQueue": "Lejátszó sor megtekintése",
"LabelVolume": "Hangerő",
"LabelWeekdaysToRun": "Futás napjai",
- "LabelYearReviewHide": "Hide Year in Review",
- "LabelYearReviewShow": "See Year in Review",
"LabelYourAudiobookDuration": "Hangoskönyv időtartama",
"LabelYourBookmarks": "Könyvjelzőid",
"LabelYourPlaylists": "Lejátszási listáid",
@@ -590,8 +622,8 @@
"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 /metadata/items és /metadata/authors mappákban vannak tárolva. A biztonsági másolatok nem tartalmazzák a könyvtári mappákban tárolt fájlokat.",
"MessageBatchQuickMatchDescription": "A Gyors egyeztetés megpróbálja hozzáadni a hiányzó borítókat és metaadatokat a kiválasztott elemekhez. Engedélyezze az alábbi opciókat, hogy a Gyors egyeztetés felülírhassa a meglévő borítókat és/vagy metaadatokat.",
"MessageBookshelfNoCollections": "Még nem készített gyűjteményeket",
- "MessageBookshelfNoResultsForFilter": "Nincs eredmény a \"{0}: {1}\" szűrőre",
"MessageBookshelfNoRSSFeeds": "Nincsenek nyitott RSS hírcsatornák",
+ "MessageBookshelfNoResultsForFilter": "Nincs eredmény a \"{0}: {1}\" szűrőre",
"MessageBookshelfNoSeries": "Nincsenek sorozatai",
"MessageChapterEndIsAfter": "A fejezet vége a hangoskönyv végét követi",
"MessageChapterErrorFirstNotZero": "Az első fejezetnek 0:00-kor kell kezdődnie",
@@ -611,8 +643,8 @@
"MessageConfirmMarkAllEpisodesNotFinished": "Biztosan meg szeretné jelölni az összes epizódot nem befejezettnek?",
"MessageConfirmMarkSeriesFinished": "Biztosan meg szeretné jelölni a sorozat összes könyvét befejezettnek?",
"MessageConfirmMarkSeriesNotFinished": "Biztosan meg szeretné jelölni a sorozat összes könyvét nem befejezettnek?",
- "MessageConfirmPurgeCache": "Purge cache will delete the entire directory at /metadata/cache.
Are you sure you want to remove the cache directory?",
"MessageConfirmQuickEmbed": "Figyelem! A Gyors beágyazás nem készít biztonsági másolatot az audiofájlokról. Győződjön meg arról, hogy van biztonsági másolata az audiofájlokról.
Szeretné folytatni?",
+ "MessageConfirmReScanLibraryItems": "Biztosan újra szeretné szkennelni a(z) {0} elemet?",
"MessageConfirmRemoveAllChapters": "Biztosan eltávolítja az összes fejezetet?",
"MessageConfirmRemoveAuthor": "Biztosan eltávolítja a(z) \"{0}\" szerzőt?",
"MessageConfirmRemoveCollection": "Biztosan eltávolítja a(z) \"{0}\" gyűjteményt?",
@@ -627,25 +659,22 @@
"MessageConfirmRenameTag": "Biztosan át szeretné nevezni a(z) \"{0}\" címkét \"{1}\"-re az összes elemnél?",
"MessageConfirmRenameTagMergeNote": "Megjegyzés: Ez a címke már létezik, így össze lesznek vonva.",
"MessageConfirmRenameTagWarning": "Figyelem! Egy hasonló, de eltérő nagybetűkkel rendelkező címke már létezik \"{0}\".",
- "MessageConfirmReScanLibraryItems": "Biztosan újra szeretné szkennelni a(z) {0} elemet?",
"MessageConfirmSendEbookToDevice": "Biztosan el szeretné küldeni a(z) {0} e-könyvet a(z) \"{1}\" eszközre?",
"MessageDownloadingEpisode": "Epizód letöltése",
"MessageDragFilesIntoTrackOrder": "Húzza a fájlokat a helyes sávrendbe",
"MessageEmbedFinished": "Beágyazás befejeződött!",
- "MessageEpisodesQueuedForDownload": "{0} Epizód letöltésre várakozik",
- "MessageEreaderDevices": "To ensure delivery of ebooks, you may need to add the above email address as a valid sender for each device listed below.",
+ "MessageEpisodesQueuedForDownload": "{0} epizód letöltésre vár",
"MessageFeedURLWillBe": "A hírcsatorna URL-je {0} lesz",
- "MessageFetching": "Lekérés...",
+ "MessageFetching": "Lekérdezés...",
"MessageForceReScanDescription": "minden fájlt újra szkennel, mint egy friss szkennelés. Az audiofájlok ID3 címkéi, OPF fájlok és szövegfájlok újként lesznek szkennelve.",
"MessageImportantNotice": "Fontos közlemény!",
"MessageInsertChapterBelow": "Fejezet beszúrása alulra",
"MessageItemsSelected": "{0} kiválasztott elem",
"MessageItemsUpdated": "{0} frissített elem",
- "MessageJoinUsOn": "Csatlakozzon hozzánk: ",
+ "MessageJoinUsOn": "Csatlakozzon hozzánk",
"MessageListeningSessionsInTheLastYear": "{0} hallgatási munkamenet az elmúlt évben",
"MessageLoading": "Betöltés...",
"MessageLoadingFolders": "Mappák betöltése...",
- "MessageLogsDescription": "Logs are stored in /metadata/logs as JSON files. Crash logs are stored in /metadata/logs/crash_logs.txt.",
"MessageM4BFailed": "M4B sikertelen!",
"MessageM4BFinished": "M4B befejeződött!",
"MessageMapChapterTitles": "Fejezetcímek hozzárendelése a meglévő hangoskönyv fejezeteihez anélkül, hogy az időbélyegeket módosítaná",
@@ -670,7 +699,7 @@
"MessageNoGenres": "Nincsenek műfajok",
"MessageNoIssues": "Nincsenek problémák",
"MessageNoItems": "Nincsenek elemek",
- "MessageNoItemsFound": "Nem találhatóak elemek",
+ "MessageNoItemsFound": "Nincs találat",
"MessageNoListeningSessions": "Nincsenek hallgatási munkamenetek",
"MessageNoLogs": "Nincsenek naplók",
"MessageNoMediaProgress": "Nincs előrehaladás a médialejátszásban",
@@ -681,10 +710,9 @@
"MessageNoSeries": "Nincsenek sorozatok",
"MessageNoTags": "Nincsenek címkék",
"MessageNoTasksRunning": "Nincsenek futó feladatok",
- "MessageNotYetImplemented": "Még nem implementált",
- "MessageNoUpdateNecessary": "Nincs szükség frissítésre",
"MessageNoUpdatesWereNecessary": "Nem volt szükség frissítésekre",
"MessageNoUserPlaylists": "Nincsenek felhasználói lejátszási listák",
+ "MessageNotYetImplemented": "Még nem implementált",
"MessageOr": "vagy",
"MessagePauseChapter": "Fejezet lejátszásának szüneteltetése",
"MessagePlayChapter": "Fejezet elejének meghallgatása",
@@ -695,9 +723,9 @@
"MessageRemoveEpisodes": "Epizód(ok) eltávolítása: {0}",
"MessageRemoveFromPlayerQueue": "Eltávolítás a lejátszási sorból",
"MessageRemoveUserWarning": "Biztosan véglegesen törölni szeretné a(z) \"{0}\" felhasználót?",
- "MessageReportBugsAndContribute": "Hibák jelentése, funkciók kérése és hozzájárulás itt:",
+ "MessageReportBugsAndContribute": "Hibák jelentése, funkciók kérése és hozzájárulás itt",
"MessageResetChaptersConfirm": "Biztosan alaphelyzetbe szeretné állítani a fejezeteket és visszavonni a módosításokat?",
- "MessageRestoreBackupConfirm": "Biztosan vissza szeretné állítani a biztonsági másolatot, amely ekkor készült:",
+ "MessageRestoreBackupConfirm": "Biztosan vissza szeretné állítani a biztonsági másolatot, amely ekkor készült",
"MessageRestoreBackupWarning": "A biztonsági mentés visszaállítása felülírja az egész adatbázist, amely a /config mappában található, valamint a borítóképeket a /metadata/items és /metadata/authors mappákban.
A biztonsági mentések nem módosítják a könyvtár mappáiban található fájlokat. Ha engedélyezte a szerverbeállításokat a borítóképek és a metaadatok könyvtármappákban való tárolására, akkor ezek nem kerülnek biztonsági mentésre vagy felülírásra.
A szerver használó összes kliens automatikusan frissül.",
"MessageSearchResultsFor": "Keresési eredmények",
"MessageSelected": "{0} kiválasztva",
@@ -726,11 +754,8 @@
"PlaceholderNewPlaylist": "Új lejátszási lista neve",
"PlaceholderSearch": "Keresés..",
"PlaceholderSearchEpisode": "Epizód keresése..",
- "ToastAccountUpdateFailed": "A fiók frissítése sikertelen",
"ToastAccountUpdateSuccess": "Fiók frissítve",
- "ToastAuthorImageRemoveFailed": "A kép eltávolítása sikertelen",
"ToastAuthorImageRemoveSuccess": "Szerző képe eltávolítva",
- "ToastAuthorUpdateFailed": "A szerző frissítése sikertelen",
"ToastAuthorUpdateMerged": "Szerző összevonva",
"ToastAuthorUpdateSuccess": "Szerző frissítve",
"ToastAuthorUpdateSuccessNoImageFound": "Szerző frissítve (nem található kép)",
@@ -745,31 +770,18 @@
"ToastBatchUpdateSuccess": "Kötegelt frissítés sikeres",
"ToastBookmarkCreateFailed": "Könyvjelző létrehozása sikertelen",
"ToastBookmarkCreateSuccess": "Könyvjelző hozzáadva",
- "ToastBookmarkRemoveFailed": "Könyvjelző eltávolítása sikertelen",
"ToastBookmarkRemoveSuccess": "Könyvjelző eltávolítva",
- "ToastBookmarkUpdateFailed": "Könyvjelző frissítése sikertelen",
"ToastBookmarkUpdateSuccess": "Könyvjelző frissítve",
- "ToastCachePurgeFailed": "Failed to purge cache",
- "ToastCachePurgeSuccess": "Cache purged successfully",
"ToastChaptersHaveErrors": "A fejezetek hibákat tartalmaznak",
"ToastChaptersMustHaveTitles": "A fejezeteknek címekkel kell rendelkezniük",
- "ToastCollectionItemsRemoveFailed": "Elem(ek) eltávolítása a gyűjteményből sikertelen",
"ToastCollectionItemsRemoveSuccess": "Elem(ek) eltávolítva a gyűjteményből",
- "ToastCollectionRemoveFailed": "Gyűjtemény eltávolítása sikertelen",
"ToastCollectionRemoveSuccess": "Gyűjtemény eltávolítva",
- "ToastCollectionUpdateFailed": "Gyűjtemény frissítése sikertelen",
"ToastCollectionUpdateSuccess": "Gyűjtemény frissítve",
- "ToastDeleteFileFailed": "Failed to delete file",
- "ToastDeleteFileSuccess": "File deleted",
- "ToastFailedToLoadData": "Failed to load data",
- "ToastItemCoverUpdateFailed": "Elem borítójának frissítése sikertelen",
"ToastItemCoverUpdateSuccess": "Elem borítója frissítve",
- "ToastItemDetailsUpdateFailed": "Elem részleteinek frissítése sikertelen",
"ToastItemDetailsUpdateSuccess": "Elem részletei frissítve",
- "ToastItemDetailsUpdateUnneeded": "Nincsenek szükséges frissítések a tétel részletein",
"ToastItemMarkedAsFinishedFailed": "Megjelölés Befejezettként sikertelen",
"ToastItemMarkedAsFinishedSuccess": "Elem megjelölve Befejezettként",
- "ToastItemMarkedAsNotFinishedFailed": "Nem sikerült Nem Befejezettként megjelölni az elemet",
+ "ToastItemMarkedAsNotFinishedFailed": "Az elem befejezetlennek jelölése sikertelen",
"ToastItemMarkedAsNotFinishedSuccess": "Elem megjelölve Nem Befejezettként",
"ToastLibraryCreateFailed": "Könyvtár létrehozása sikertelen",
"ToastLibraryCreateSuccess": "\"{0}\" könyvtár létrehozva",
@@ -777,34 +789,26 @@
"ToastLibraryDeleteSuccess": "Könyvtár törölve",
"ToastLibraryScanFailedToStart": "A beolvasás elindítása sikertelen",
"ToastLibraryScanStarted": "Könyvtár beolvasása elindítva",
- "ToastLibraryUpdateFailed": "Könyvtár frissítése sikertelen",
"ToastLibraryUpdateSuccess": "\"{0}\" könyvtár frissítve",
"ToastPlaylistCreateFailed": "Lejátszási lista létrehozása sikertelen",
"ToastPlaylistCreateSuccess": "Lejátszási lista létrehozva",
- "ToastPlaylistRemoveFailed": "Lejátszási lista eltávolítása sikertelen",
"ToastPlaylistRemoveSuccess": "Lejátszási lista eltávolítva",
- "ToastPlaylistUpdateFailed": "Lejátszási lista frissítése sikertelen",
"ToastPlaylistUpdateSuccess": "Lejátszási lista frissítve",
"ToastPodcastCreateFailed": "Podcast létrehozása sikertelen",
- "ToastPodcastCreateSuccess": "Podcast sikeresen létrehozva",
+ "ToastPodcastCreateSuccess": "A podcast sikeresen létrehozva",
+ "ToastRSSFeedCloseFailed": "Az RSS hírcsatorna bezárása sikertelen",
+ "ToastRSSFeedCloseSuccess": "RSS feed bezárva",
"ToastRemoveItemFromCollectionFailed": "Tétel eltávolítása a gyűjteményből sikertelen",
"ToastRemoveItemFromCollectionSuccess": "Tétel eltávolítva a gyűjteményből",
- "ToastRSSFeedCloseFailed": "RSS feed bezárása sikertelen",
- "ToastRSSFeedCloseSuccess": "RSS feed bezárva",
"ToastSendEbookToDeviceFailed": "E-könyv küldése az eszközre sikertelen",
"ToastSendEbookToDeviceSuccess": "E-könyv elküldve az eszközre \"{0}\"",
"ToastSeriesUpdateFailed": "Sorozat frissítése sikertelen",
"ToastSeriesUpdateSuccess": "Sorozat frissítése sikeres",
- "ToastServerSettingsUpdateFailed": "Failed to update server settings",
- "ToastServerSettingsUpdateSuccess": "Server settings updated",
"ToastSessionDeleteFailed": "Munkamenet törlése sikertelen",
"ToastSessionDeleteSuccess": "Munkamenet törölve",
"ToastSocketConnected": "Socket csatlakoztatva",
"ToastSocketDisconnected": "Socket lecsatlakoztatva",
"ToastSocketFailedToConnect": "A Socket csatlakoztatása sikertelen",
- "ToastSortingPrefixesEmptyError": "Must have at least 1 sorting prefix",
- "ToastSortingPrefixesUpdateFailed": "Failed to update sorting prefixes",
- "ToastSortingPrefixesUpdateSuccess": "Sorting prefixes updated ({0} items)",
"ToastUserDeleteFailed": "Felhasználó törlése sikertelen",
"ToastUserDeleteSuccess": "Felhasználó törölve"
-}
\ No newline at end of file
+}
diff --git a/client/strings/it.json b/client/strings/it.json
index 549ea94d4..1450b972c 100644
--- a/client/strings/it.json
+++ b/client/strings/it.json
@@ -9,6 +9,7 @@
"ButtonApply": "Applica",
"ButtonApplyChapters": "Applica",
"ButtonAuthors": "Autori",
+ "ButtonBack": "Indietro",
"ButtonBrowseForFolder": "Per Cartella",
"ButtonCancel": "Cancella",
"ButtonCancelEncode": "Ferma la codifica",
@@ -16,8 +17,9 @@
"ButtonCheckAndDownloadNewEpisodes": "Controlla & scarica i nuovi episodi",
"ButtonChooseAFolder": "Seleziona la Cartella",
"ButtonChooseFiles": "Seleziona i File",
- "ButtonClearFilter": "Elimina Filtri",
- "ButtonCloseFeed": "Chudi i Feed",
+ "ButtonClearFilter": "Elimina filtri",
+ "ButtonCloseFeed": "Chiudi flusso",
+ "ButtonCloseSession": "Chiudi la sessione aperta",
"ButtonCollections": "Raccolte",
"ButtonConfigureScanner": "Configura Scanner",
"ButtonCreate": "Crea",
@@ -27,51 +29,58 @@
"ButtonEdit": "Modifica",
"ButtonEditChapters": "Modifica Capitoli",
"ButtonEditPodcast": "Modifica Podcast",
+ "ButtonEnable": "Abilita",
+ "ButtonFireAndFail": "Fire and Fail",
+ "ButtonFireOnTest": "Fire onTest event",
"ButtonForceReScan": "Forza Re-Scan",
"ButtonFullPath": "Percorso Completo",
"ButtonHide": "Nascondi",
- "ButtonHome": "Home",
+ "ButtonHome": "Pagina principale",
"ButtonIssues": "Errori",
"ButtonJumpBackward": "Salta indietro",
"ButtonJumpForward": "Salta Avanti",
"ButtonLatest": "Ultimi",
- "ButtonLibrary": "Libreria",
+ "ButtonLibrary": "Biblioteca",
"ButtonLogout": "Disconnetti",
"ButtonLookup": "Consulta",
"ButtonManageTracks": "Gestisci le Tracce",
"ButtonMapChapterTitles": "Titoli dei Capitoli",
"ButtonMatchAllAuthors": "Aggiungi metadata agli Autori",
"ButtonMatchBooks": "Aggiungi metadata della Libreria",
- "ButtonNevermind": "Nevermind",
+ "ButtonNevermind": "Ingora",
"ButtonNext": "Prossimo",
"ButtonNextChapter": "Prossimo Capitolo",
- "ButtonOk": "Ok",
- "ButtonOpenFeed": "Apri Feed",
+ "ButtonNextItemInQueue": "Elemento successivo in coda",
+ "ButtonOk": "D’accordo",
+ "ButtonOpenFeed": "Apri il flusso",
"ButtonOpenManager": "Apri Manager",
"ButtonPause": "Pausa",
- "ButtonPlay": "Play",
- "ButtonPlaying": "In Riproduzione",
- "ButtonPlaylists": "Playlists",
+ "ButtonPlay": "Riproduci",
+ "ButtonPlayAll": "Riproduci tutto",
+ "ButtonPlaying": "In riproduzione",
+ "ButtonPlaylists": "Playlist",
"ButtonPrevious": "Precendente",
"ButtonPreviousChapter": "Capitolo Precendente",
+ "ButtonProbeAudioFile": "Analizza il file audio",
"ButtonPurgeAllCache": "Elimina tutta la Cache",
"ButtonPurgeItemsCache": "Elimina la Cache selezionata",
- "ButtonPurgeMediaProgress": "Elimina info dei media ascoltati",
"ButtonQueueAddItem": "Aggiungi alla Coda",
"ButtonQueueRemoveItem": "Rimuovi dalla Coda",
+ "ButtonQuickEmbed": "Quick Embed",
+ "ButtonQuickEmbedMetadata": "Incorporamento rapido Metadati",
"ButtonQuickMatch": "Controlla Metadata Auto",
+ "ButtonReScan": "Ri-scansiona",
"ButtonRead": "Leggi",
- "ButtonReadLess": "Read less",
- "ButtonReadMore": "Read more",
- "ButtonRefresh": "Refresh",
+ "ButtonReadLess": "Leggi di Meno",
+ "ButtonReadMore": "Leggi di Più",
+ "ButtonRefresh": "Aggiorna",
"ButtonRemove": "Rimuovi",
"ButtonRemoveAll": "Rimuovi Tutto",
"ButtonRemoveAllLibraryItems": "Rimuovi tutto il contenuto della libreria",
"ButtonRemoveFromContinueListening": "Rimuovi per proseguire l'ascolto",
"ButtonRemoveFromContinueReading": "Rimuovi per proseguire la lettura",
"ButtonRemoveSeriesFromContinueSeries": "Rimuovi la Serie per Continuarla",
- "ButtonReScan": "Ri-scansiona",
- "ButtonReset": "Reset",
+ "ButtonReset": "Ripristina",
"ButtonResetToDefault": "Ripristino di default",
"ButtonRestore": "Ripristina",
"ButtonSave": "Salva",
@@ -83,47 +92,51 @@
"ButtonSelectFolderPath": "Seleziona percorso cartella",
"ButtonSeries": "Serie",
"ButtonSetChaptersFromTracks": "Impostare i capitoli dalle tracce",
- "ButtonShare": "Share",
+ "ButtonShare": "Condividi",
"ButtonShiftTimes": "Ricerca veloce",
"ButtonShow": "Mostra",
- "ButtonStartM4BEncode": "Inizia L'Encode del M4B",
- "ButtonStartMetadataEmbed": "Inizia Incorporo Metadata",
+ "ButtonStartM4BEncode": "Inizia la codifica del M4B",
+ "ButtonStartMetadataEmbed": "Inizia i metadati incorporati",
+ "ButtonStats": "Statistische",
"ButtonSubmit": "Invia",
"ButtonTest": "Test",
+ "ButtonUnlinkOpenId": "Disattiva OpenID",
"ButtonUpload": "Carica",
- "ButtonUploadBackup": "Carica Backup",
- "ButtonUploadCover": "Carica Cover",
- "ButtonUploadOPMLFile": "Carica File OPML",
- "ButtonUserDelete": "Cancella Utente {0}",
- "ButtonUserEdit": "Modifica Utente {0}",
- "ButtonViewAll": "Mostra Tutto",
- "ButtonYes": "Si",
- "ErrorUploadFetchMetadataAPI": "Errore Recupero metadati",
+ "ButtonUploadBackup": "Carica il backup",
+ "ButtonUploadCover": "Carica una copertina",
+ "ButtonUploadOPMLFile": "Carica file OPML",
+ "ButtonUserDelete": "Elimina l'utente {0}",
+ "ButtonUserEdit": "Modifica l'utente {0}",
+ "ButtonViewAll": "Mostra tutto",
+ "ButtonYes": "Sì",
+ "ErrorUploadFetchMetadataAPI": "Errore durante il recupero metadati",
"ErrorUploadFetchMetadataNoResults": "Impossibile recuperare i metadati: prova a modificate il titolo e/o l'autore",
"ErrorUploadLacksTitle": "Deve avere un titolo",
"HeaderAccount": "Account",
+ "HeaderAddCustomMetadataProvider": "Aggiungi fornitori di metadati personalizzati",
"HeaderAdvanced": "Avanzate",
"HeaderAppriseNotificationSettings": "Apprendi le impostazioni di Notifica",
- "HeaderAudiobookTools": "Utilità Audiobook File Management",
- "HeaderAudioTracks": "Tracce Audio",
+ "HeaderAudioTracks": "Tracce audio",
+ "HeaderAudiobookTools": "Strumenti di gestione file audiolibri",
"HeaderAuthentication": "Authenticazione",
"HeaderBackups": "Backup",
- "HeaderChangePassword": "Cambia Password",
+ "HeaderChangePassword": "Cambia la password",
"HeaderChapters": "Capitoli",
"HeaderChooseAFolder": "Seleziona la cartella",
"HeaderCollection": "Raccolta",
- "HeaderCollectionItems": "Elementi della Raccolta",
- "HeaderCover": "Cover",
- "HeaderCurrentDownloads": "Download Correnti",
- "HeaderCustomMetadataProviders": " Metadata Providers Personalizzato",
+ "HeaderCollectionItems": "Elementi della raccolta",
+ "HeaderCover": "Copertina",
+ "HeaderCurrentDownloads": "Scaricamenti correnti",
+ "HeaderCustomMessageOnLogin": "Messaggio personalizzato all'accesso",
+ "HeaderCustomMetadataProviders": "Metadata Providers Personalizzato",
"HeaderDetails": "Dettagli",
"HeaderDownloadQueue": "Download coda",
- "HeaderEbookFiles": "Ebook File",
- "HeaderEmail": "Email",
- "HeaderEmailSettings": "Email Settings",
+ "HeaderEbookFiles": "File dei libri",
+ "HeaderEmail": "E-mail",
+ "HeaderEmailSettings": "Impostazioni e-mail",
"HeaderEpisodes": "Episodi",
"HeaderEreaderDevices": "Dispositivo Ereader",
- "HeaderEreaderSettings": "Impostazioni Ereader",
+ "HeaderEreaderSettings": "Impostazioni lettore",
"HeaderFiles": "File",
"HeaderFindChapters": "Trova Capitoli",
"HeaderIgnoredFiles": "File Ignorati",
@@ -131,13 +144,13 @@
"HeaderItemMetadataUtils": "Utilità Metadata oggetti",
"HeaderLastListeningSession": "Ultima sessione di Ascolto",
"HeaderLatestEpisodes": "Ultimi Episodi",
- "HeaderLibraries": "Librerie",
+ "HeaderLibraries": "Biblioteche",
"HeaderLibraryFiles": "File della Libreria",
"HeaderLibraryStats": "Statistiche Libreria",
"HeaderListeningSessions": "Sessioni di Ascolto",
"HeaderListeningStats": "Statistiche di Ascolto",
- "HeaderLogin": "Login",
- "HeaderLogs": "Logs",
+ "HeaderLogin": "Accesso",
+ "HeaderLogs": "Registri",
"HeaderManageGenres": "Gestisci Generi",
"HeaderManageTags": "Gestisci Tags",
"HeaderMapDetails": "Mappa Dettagli",
@@ -146,40 +159,43 @@
"HeaderMetadataToEmbed": "Metadata da incorporare",
"HeaderNewAccount": "Nuovo Account",
"HeaderNewLibrary": "Nuova Libreria",
+ "HeaderNotificationCreate": "Crea una notifica",
+ "HeaderNotificationUpdate": "Aggiornamento della notifica",
"HeaderNotifications": "Notifiche",
- "HeaderOpenIDConnectAuthentication": "OpenID Connect Authentication",
- "HeaderOpenRSSFeed": "Apri RSS Feed",
+ "HeaderOpenIDConnectAuthentication": "Autenticazione OpenID Connect",
+ "HeaderOpenRSSFeed": "Apri il flusso RSS",
"HeaderOtherFiles": "Altri File",
- "HeaderPasswordAuthentication": "Password Authentication",
+ "HeaderPasswordAuthentication": "Autenticazione della password",
"HeaderPermissions": "Permessi",
"HeaderPlayerQueue": "Coda Riproduzione",
+ "HeaderPlayerSettings": "Impostazioni Player",
"HeaderPlaylist": "Playlist",
"HeaderPlaylistItems": "Elementi della playlist",
"HeaderPodcastsToAdd": "Podcasts da Aggiungere",
"HeaderPreviewCover": "Anteprima Cover",
+ "HeaderRSSFeedGeneral": "Dettagli RSS",
+ "HeaderRSSFeedIsOpen": "RSS Feed è aperto",
+ "HeaderRSSFeeds": "Flussi RSS",
"HeaderRemoveEpisode": "Rimuovi Episodi",
"HeaderRemoveEpisodes": "Rimuovi {0} Episodi",
- "HeaderRSSFeedGeneral": "RSS Details",
- "HeaderRSSFeedIsOpen": "RSS Feed è aperto",
- "HeaderRSSFeeds": "RSS Feeds",
"HeaderSavedMediaProgress": "Progressi salvati",
"HeaderSchedule": "Schedula",
"HeaderScheduleLibraryScans": "Schedula la scansione della libreria",
"HeaderSession": "Sessione",
"HeaderSetBackupSchedule": "Imposta programmazione Backup",
"HeaderSettings": "Impostazioni",
- "HeaderSettingsDisplay": "Display",
+ "HeaderSettingsDisplay": "Visualizzazione",
"HeaderSettingsExperimental": "Opzioni Sperimentali",
"HeaderSettingsGeneral": "Generale",
"HeaderSettingsScanner": "Scanner",
"HeaderSleepTimer": "Sveglia",
- "HeaderStatsLargestItems": "Oggetti Grandi",
+ "HeaderStatsLargestItems": "File pesanti",
"HeaderStatsLongestItems": "libri più lunghi (ore)",
"HeaderStatsMinutesListeningChart": "Minuti ascoltati (Ultimi 7 Giorni)",
"HeaderStatsRecentSessions": "Sessioni Recenti",
"HeaderStatsTop10Authors": "Top 10 Autori",
"HeaderStatsTop5Genres": "Top 5 Generi",
- "HeaderTableOfContents": "Tabella dei Contenuti",
+ "HeaderTableOfContents": "Indice",
"HeaderTools": "Strumenti",
"HeaderUpdateAccount": "Aggiorna Account",
"HeaderUpdateAuthor": "Aggiorna Autore",
@@ -187,22 +203,22 @@
"HeaderUpdateLibrary": "Aggiorna Libreria",
"HeaderUsers": "Utenti",
"HeaderYearReview": "Anno {0} in Sintesi",
- "HeaderYourStats": "Statistiche Personali",
+ "HeaderYourStats": "Statistiche personali",
"LabelAbridged": "Abbreviato",
- "LabelAbridgedChecked": "Abridged (checked)",
- "LabelAbridgedUnchecked": "Unabridged (unchecked)",
- "LabelAccessibleBy": "Accessible by",
+ "LabelAbridgedChecked": "Ridotto (selezionato)",
+ "LabelAbridgedUnchecked": "Integrale (non selezionato)",
+ "LabelAccessibleBy": "Accessibile da",
"LabelAccountType": "Tipo di Account",
- "LabelAccountTypeAdmin": "Admin",
+ "LabelAccountTypeAdmin": "Amministratore",
"LabelAccountTypeGuest": "Ospite",
"LabelAccountTypeUser": "Utente",
"LabelActivity": "Attività",
- "LabelAdded": "Aggiunto",
- "LabelAddedAt": "Aggiunto il",
"LabelAddToCollection": "Aggiungi alla Raccolta",
"LabelAddToCollectionBatch": "Aggiungi {0} Libri alla Raccolta",
- "LabelAddToPlaylist": "aggiungi alla Playlist",
+ "LabelAddToPlaylist": "Aggiungi alla playlist",
"LabelAddToPlaylistBatch": "Aggiungi {0} file alla Playlist",
+ "LabelAddedAt": "Aggiunto il",
+ "LabelAddedDate": "{0} aggiunti",
"LabelAdminUsersOnly": "Solo utenti Amministratori",
"LabelAll": "Tutti",
"LabelAllUsers": "Tutti gli Utenti",
@@ -210,6 +226,9 @@
"LabelAllUsersIncludingGuests": "Tutti gli Utenti Inclusi gli ospiti",
"LabelAlreadyInYourLibrary": "Già esistente nella libreria",
"LabelAppend": "Appese",
+ "LabelAudioBitrate": "Audio Bitrate (es. 128k)",
+ "LabelAudioChannels": "Canali Audio (1 o 2)",
+ "LabelAudioCodec": "Codec Audio",
"LabelAuthor": "Autore",
"LabelAuthorFirstLast": "Autore (Per Nome)",
"LabelAuthorLastFirst": "Autori (Per Cognome)",
@@ -217,39 +236,41 @@
"LabelAutoDownloadEpisodes": "Auto Download Episodi",
"LabelAutoFetchMetadata": "Auto controllo Metadata",
"LabelAutoFetchMetadataHelp": "Recupera i metadati per titolo, autore e serie per semplificare il caricamento. Potrebbe essere necessario abbinare metadati aggiuntivi dopo il caricamento.",
- "LabelAutoLaunch": "Auto Launch",
+ "LabelAutoLaunch": "Avvio Automatico",
"LabelAutoLaunchDescription": "Reindirizzamento automatico al provider di autenticazione quando si accede alla pagina di accesso (percorso di sostituzione manuale /login?autoLaunch=0)",
"LabelAutoRegister": "Auto Registrazione",
"LabelAutoRegisterDescription": "Crea automaticamente nuovi utenti dopo aver effettuato l'accesso",
"LabelBackToUser": "Torna a Utenti",
+ "LabelBackupAudioFiles": "Backup file Audio",
"LabelBackupLocation": "Percorso del Backup",
"LabelBackupsEnableAutomaticBackups": "Abilita backup Automatico",
"LabelBackupsEnableAutomaticBackupsHelp": "I Backup saranno salvati in /metadata/backups",
- "LabelBackupsMaxBackupSize": "Dimensione massima backup (in GB)",
+ "LabelBackupsMaxBackupSize": "Dimensione massima backup (in GB) (0 Illimitato)",
"LabelBackupsMaxBackupSizeHelp": "Come protezione contro gli errori di config, i backup falliranno se superano la dimensione configurata.",
"LabelBackupsNumberToKeep": "Numero di backup da mantenere",
"LabelBackupsNumberToKeepHelp": "Verrà rimosso solo 1 backup alla volta, quindi se hai più backup, dovrai rimuoverli manualmente.",
- "LabelBitrate": "Bitrate",
+ "LabelBitrate": "Velocità di trasmissione",
"LabelBooks": "Libri",
"LabelButtonText": "Buttone Testo",
- "LabelByAuthor": "by {0}",
+ "LabelByAuthor": "da {0}",
"LabelChangePassword": "Cambia Password",
"LabelChannels": "Canali",
+ "LabelChapterTitle": "Titoli dei Capitoli",
"LabelChapters": "Capitoli",
"LabelChaptersFound": "Capitoli Trovati",
- "LabelChapterTitle": "Titoli dei Capitoli",
"LabelClickForMoreInfo": "Click per altre Info",
"LabelClosePlayer": "Chiudi player",
"LabelCodec": "Codec",
"LabelCollapseSeries": "Comprimi Serie",
+ "LabelCollapseSubSeries": "Comprimi subserie",
"LabelCollection": "Raccolta",
"LabelCollections": "Raccolte",
"LabelComplete": "Completo",
"LabelConfirmPassword": "Conferma Password",
"LabelContinueListening": "Continua ad Ascoltare",
"LabelContinueReading": "Continua la Lettura",
- "LabelContinueSeries": "Continua Serie",
- "LabelCover": "Cover",
+ "LabelContinueSeries": "Continua serie",
+ "LabelCover": "Copertina",
"LabelCoverImageURL": "Indirizzo della cover URL",
"LabelCreatedAt": "Creato A",
"LabelCronExpression": "Espressione Cron",
@@ -257,6 +278,7 @@
"LabelCurrently": "Attualmente:",
"LabelCustomCronExpression": "Espressione Cron personalizzata:",
"LabelDatetime": "Data & Ora",
+ "LabelDays": "Giorni",
"LabelDeleteFromFileSystemCheckbox": "Elimina dal file system (togli la spunta per eliminarla solo dal DB)",
"LabelDescription": "Descrizione",
"LabelDeselectAll": "Deseleziona Tutto",
@@ -267,61 +289,82 @@
"LabelDiscFromFilename": "Disco dal nome file",
"LabelDiscFromMetadata": "Disco dal Metadata",
"LabelDiscover": "Scopri",
- "LabelDownload": "Download",
- "LabelDownloadNEpisodes": "Download {0} episodes",
+ "LabelDownload": "Scarica",
+ "LabelDownloadNEpisodes": "Download {0} episodi",
"LabelDuration": "Durata",
- "LabelDurationComparisonExactMatch": "(exact match)",
- "LabelDurationComparisonLonger": "({0} longer)",
- "LabelDurationComparisonShorter": "({0} shorter)",
+ "LabelDurationComparisonExactMatch": "(corrispondenza esatta)",
+ "LabelDurationComparisonLonger": "({0} lungo)",
+ "LabelDurationComparisonShorter": "({0} corto)",
"LabelDurationFound": "Durata Trovata:",
- "LabelEbook": "Ebook",
- "LabelEbooks": "Ebooks",
+ "LabelEbook": "Libro digitale",
+ "LabelEbooks": "Libri digitali",
"LabelEdit": "Modifica",
- "LabelEmail": "Email",
+ "LabelEmail": "E-mail",
"LabelEmailSettingsFromAddress": "Da Indirizzo",
- "LabelEmailSettingsSecure": "Secure",
+ "LabelEmailSettingsRejectUnauthorized": "Rifiuta i certificati non autorizzati",
+ "LabelEmailSettingsRejectUnauthorizedHelp": "La disattivazione della convalida del certificato SSL può esporre la tua connessione a rischi per la sicurezza, come attacchi man-in-the-middle. Disattiva questa opzione solo se ne comprendi le implicazioni e ti fidi del server di posta a cui ti stai connettendo.",
+ "LabelEmailSettingsSecure": "SSL",
"LabelEmailSettingsSecureHelp": "Se vero, la connessione utilizzerà TLS durante la connessione al server. Se false, viene utilizzato TLS se il server supporta l'estensione STARTTLS. Nella maggior parte dei casi impostare questo valore su true se ci si connette alla porta 465. Per la porta 587 o 25 mantenerlo false. (da nodemailer.com/smtp/#authentication)",
- "LabelEmailSettingsTestAddress": "Test Indirizzo",
+ "LabelEmailSettingsTestAddress": "Indirizzo di test",
"LabelEmbeddedCover": "Cover Integrata",
"LabelEnable": "Abilita",
+ "LabelEncodingBackupLocation": "il backup dei file audio verrà archiviato in:",
+ "LabelEncodingChaptersNotEmbedded": "Negli audiolibri multitraccia i capitoli non sono incorporati.",
+ "LabelEncodingClearItemCache": "Assicurati di svuotare periodicamente la cache degli oggetti.",
+ "LabelEncodingFinishedM4B": "L'M4B completato verrà inserito nella cartella:",
+ "LabelEncodingInfoEmbedded": "I metadati verranno incorporati nelle tracce audio all'interno della cartella dell'audiolibro.",
+ "LabelEncodingStartedNavigation": "Una volta avviata l'attività, è possibile uscire da questa pagina.",
+ "LabelEncodingTimeWarning": "La codifica può richiedere fino a 30 minuti.",
+ "LabelEncodingWarningAdvancedSettings": "Attenzione: non aggiornare queste impostazioni se non hai familiarità con le opzioni di codifica ffmpeg.",
+ "LabelEncodingWatcherDisabled": "Se hai disabilitato l'opzione Watcher, dovrai eseguire nuovamente la scansione dell'audiolibro in seguito.",
"LabelEnd": "Fine",
+ "LabelEndOfChapter": "Fine Capitolo",
"LabelEpisode": "Episodio",
"LabelEpisodeTitle": "Titolo Episodio",
"LabelEpisodeType": "Tipo Episodio",
+ "LabelEpisodes": "Episodi",
"LabelExample": "Esempio",
+ "LabelExpandSeries": "Espandi Serie",
+ "LabelExpandSubSeries": "Espandi Sub Serie",
"LabelExplicit": "Esplicito",
- "LabelExplicitChecked": "Explicit (checked)",
- "LabelExplicitUnchecked": "Not Explicit (unchecked)",
- "LabelFeedURL": "Feed URL",
+ "LabelExplicitChecked": "Esplicito (selezionato)",
+ "LabelExplicitUnchecked": "Non Esplicito (selezionato)",
+ "LabelExportOPML": "Esposta OPML",
+ "LabelFeedURL": "URL del flusso",
"LabelFetchingMetadata": "Recupero dei metadati",
"LabelFile": "File",
- "LabelFileBirthtime": "Data Creazione",
+ "LabelFileBirthtime": "Data di creazione",
+ "LabelFileBornDate": "Creato {0}",
"LabelFileModified": "Ultima modifica",
- "LabelFilename": "Nome File",
+ "LabelFileModifiedDate": "Modificato {0}",
+ "LabelFilename": "Nome del file",
"LabelFilterByUser": "Filtro per Utente",
"LabelFindEpisodes": "Trova Episodi",
"LabelFinished": "Finita",
"LabelFolder": "Cartella",
"LabelFolders": "Cartelle",
- "LabelFontBold": "Bold",
- "LabelFontFamily": "Font family",
- "LabelFontItalic": "Italic",
- "LabelFontScale": "Dimensione Font",
- "LabelFontStrikethrough": "Strikethrough",
+ "LabelFontBold": "Grassetto",
+ "LabelFontBoldness": "Grassetto",
+ "LabelFontFamily": "Famiglia di caratteri",
+ "LabelFontItalic": "Corsivo",
+ "LabelFontScale": "Dimensione font",
+ "LabelFontStrikethrough": "Barrato",
"LabelFormat": "Formato",
"LabelGenre": "Genere",
"LabelGenres": "Generi",
"LabelHardDeleteFile": "Elimina Definitivamente",
- "LabelHasEbook": "Un ebook",
- "LabelHasSupplementaryEbook": "Un ebook Supplementare",
+ "LabelHasEbook": "Ha un libro",
+ "LabelHasSupplementaryEbook": "Ha un libro supplementale",
+ "LabelHideSubtitles": "Nascondi Sottotitoli",
"LabelHighestPriority": "Priorità Massima",
"LabelHost": "Host",
"LabelHour": "Ora",
+ "LabelHours": "Ore",
"LabelIcon": "Icona",
"LabelImageURLFromTheWeb": "Immagine URL da internet",
+ "LabelInProgress": "In corso",
"LabelIncludeInTracklist": "Includi nella Tracklist",
"LabelIncomplete": "Incompleta",
- "LabelInProgress": "In Corso",
"LabelInterval": "Intervallo",
"LabelIntervalCustomDailyWeekly": "Personalizza giorni/settimane",
"LabelIntervalEvery12Hours": "Ogni 12 Ore",
@@ -333,24 +376,28 @@
"LabelIntervalEveryHour": "Ogni ora",
"LabelInvert": "Inverti",
"LabelItem": "Oggetti",
+ "LabelJumpBackwardAmount": "secondi di avvolgimento",
+ "LabelJumpForwardAmount": "Secondi di Avvolgimento",
"LabelLanguage": "Lingua",
"LabelLanguageDefaultServer": "Lingua di Default",
+ "LabelLanguages": "Lingua",
"LabelLastBookAdded": "Ultimo Libro Aggiunto",
"LabelLastBookUpdated": "Ultimo Libro Aggiornato",
"LabelLastSeen": "Ultimi Visti",
"LabelLastTime": "Ultima Volta",
"LabelLastUpdate": "Ultimo Aggiornamento",
- "LabelLayout": "Layout",
- "LabelLayoutSinglePage": "Pagina Singola",
- "LabelLayoutSplitPage": "Dividi Pagina",
- "LabelLess": "Poco",
- "LabelLibrariesAccessibleToUser": "Librerie Accessibili agli Utenti",
- "LabelLibrary": "Libreria",
- "LabelLibraryItem": "Elementi della Library",
- "LabelLibraryName": "Nome Libreria",
+ "LabelLayout": "Disposizione",
+ "LabelLayoutSinglePage": "Pagina singola",
+ "LabelLayoutSplitPage": "Pagina divisa",
+ "LabelLess": "Meno",
+ "LabelLibrariesAccessibleToUser": "Biblioteche accessibili all'utente",
+ "LabelLibrary": "Biblioteca",
+ "LabelLibraryFilterSublistEmpty": "Nessuno {0}",
+ "LabelLibraryItem": "Elementi della biblioteca",
+ "LabelLibraryName": "Nome della biblioteca",
"LabelLimit": "Limiti",
"LabelLineSpacing": "Interlinea",
- "LabelListenAgain": "Ri-ascolta",
+ "LabelListenAgain": "Ascolta ancora",
"LabelLogLevelDebug": "Debug",
"LabelLogLevelInfo": "Info",
"LabelLogLevelWarn": "Allarme",
@@ -360,49 +407,52 @@
"LabelMatchExistingUsersByDescription": "Utilizzato per connettere gli utenti esistenti. Una volta connessi, gli utenti verranno abbinati a un ID univoco dal tuo provider SSO",
"LabelMediaPlayer": "Media Player",
"LabelMediaType": "Tipo Media",
- "LabelMetadataOrderOfPrecedenceDescription": "Le origini di metadati con priorità più alta sovrascriveranno le origini di metadati con priorità inferiore",
- "LabelMetadataProvider": "Metadata Provider",
"LabelMetaTag": "Meta Tag",
"LabelMetaTags": "Meta Tags",
+ "LabelMetadataOrderOfPrecedenceDescription": "Le origini di metadati con priorità più alta sovrascriveranno le origini di metadati con priorità inferiore",
+ "LabelMetadataProvider": "Metadata Provider",
"LabelMinute": "Minuto",
+ "LabelMinutes": "Minuti",
"LabelMissing": "Altro",
- "LabelMissingEbook": "Non ha ebook",
- "LabelMissingSupplementaryEbook": "Non ha ebook supplementare",
+ "LabelMissingEbook": "Non ha libri digitali",
+ "LabelMissingSupplementaryEbook": "Non ha un libro digitale supplementare",
"LabelMobileRedirectURIs": "URI di reindirizzamento mobile consentiti",
"LabelMobileRedirectURIsDescription": "Questa è una lista bianca di URI di reindirizzamento validi per le app mobili. Quello predefinito è audiobookshelf://oauth, che puoi rimuovere o integrare con URI aggiuntivi per l'integrazione di app di terze parti. Utilizzando un asterisco (*) poiché l'unica voce consente qualsiasi URI.",
"LabelMore": "Molto",
- "LabelMoreInfo": "Più Info",
+ "LabelMoreInfo": "Più info",
"LabelName": "Nome",
"LabelNarrator": "Narratore",
"LabelNarrators": "Narratori",
"LabelNew": "Nuovo",
- "LabelNewestAuthors": "Autori Recenti",
- "LabelNewestEpisodes": "Episodi Recenti",
"LabelNewPassword": "Nuova Password",
+ "LabelNewestAuthors": "Nuovi autori",
+ "LabelNewestEpisodes": "Nuovi episodi",
"LabelNextBackupDate": "Data Prossimo Backup",
"LabelNextScheduledRun": "Data prossima esecuzione schedulata",
+ "LabelNoCustomMetadataProviders": "Nessun provider di metadati personalizzato",
"LabelNoEpisodesSelected": "Nessun Episodio Selezionato",
+ "LabelNotFinished": "Da completare",
+ "LabelNotStarted": "Non iniziato",
"LabelNotes": "Note",
- "LabelNotFinished": "Da Completare",
"LabelNotificationAppriseURL": "Apprendi URL(s)",
"LabelNotificationAvailableVariables": "Variabili Selezionabili",
"LabelNotificationBodyTemplate": "Template del corpo messaggio",
"LabelNotificationEvent": "Notifiche Eventi",
+ "LabelNotificationTitleTemplate": "Template del titolo",
"LabelNotificationsMaxFailedAttempts": "Numero massimo di tentativi falliti",
"LabelNotificationsMaxFailedAttemptsHelp": "Le notifiche vengono disabilitate se falliscono molte volte",
"LabelNotificationsMaxQueueSize": "Coda Massima di notifiche eventi",
- "LabelNotificationsMaxQueueSizeHelp": "Le notifiche sono limitate per 1 al secondo, per evitare lo spamming le notifiche verrano ignorare se superano la coda",
- "LabelNotificationTitleTemplate": "Template del titolo",
- "LabelNotStarted": "Non iniziato",
+ "LabelNotificationsMaxQueueSizeHelp": "Le notifiche sono limitate per 1 al secondo, per evitare lo spamming le notifiche verrano ignorare se superano la coda.",
"LabelNumberOfBooks": "Numero di libri",
"LabelNumberOfEpisodes": "# degli episodi",
- "LabelOpenIDAdvancedPermsClaimDescription": "Name of the OpenID claim that contains advanced permissions for user actions within the application which will apply to non-admin roles (if configured). If the claim is missing from the response, access to ABS will be denied. If a single option is missing, it will be treated as false. Ensure the identity provider's claim matches the expected structure:",
- "LabelOpenIDClaims": "Leave the following options empty to disable advanced group and permissions assignment, automatically assigning 'User' group then.",
- "LabelOpenIDGroupClaimDescription": "Name of the OpenID claim that contains a list of the user's groups. Commonly referred to as groups. If configured, the application will automatically assign roles based on the user's group memberships, provided that these groups are named case-insensitively 'admin', 'user', or 'guest' in the claim. The claim should contain a list, and if a user belongs to multiple groups, the application will assign the role corresponding to the highest level of access. If no group matches, access will be denied.",
+ "LabelOpenIDAdvancedPermsClaimDescription": "Nome dell'attestazione OpenID che contiene autorizzazioni avanzate per le azioni dell'utente all'interno dell'applicazione che verranno applicate ai ruoli non amministratori (se configurato). Se il reclamo manca nella risposta, l'accesso ad ABS verrà negato. Se manca una singola opzione, verrà trattata comefalsa. Assicurati che l'attestazione del provider di identità corrisponda alla struttura prevista:",
+ "LabelOpenIDClaims": "Lasciare vuote le seguenti opzioni per disabilitare l'assegnazione avanzata di gruppi e autorizzazioni, assegnando quindi automaticamente il gruppo \"Utente\".",
+ "LabelOpenIDGroupClaimDescription": "Nome dell'attestazione OpenID che contiene un elenco dei gruppi dell'utente. Comunemente indicato come gruppo. se configurato, l'applicazione assegnerà automaticamente i ruoli in base alle appartenenze ai gruppi dell'utente, a condizione che tali gruppi siano denominati \"admin\", \"utente\" o \"ospite\" senza distinzione tra maiuscole e minuscole nell'attestazione. L'attestazione deve contenere un elenco e, se un utente appartiene a più gruppi, l'applicazione assegnerà il ruolo corrispondente al livello di accesso più alto. Se nessun gruppo corrisponde, l'accesso verrà negato.",
"LabelOpenRSSFeed": "Apri RSS Feed",
"LabelOverwrite": "Sovrascrivi",
"LabelPassword": "Password",
"LabelPath": "Percorso",
+ "LabelPermanent": "Permanente",
"LabelPermissionsAccessAllLibraries": "Può accedere a tutte le librerie",
"LabelPermissionsAccessAllTags": "Può accedere a tutti i tag",
"LabelPermissionsAccessExplicitContent": "Può accedere a contenuti espliciti",
@@ -410,58 +460,67 @@
"LabelPermissionsDownload": "Può Scaricare",
"LabelPermissionsUpdate": "Può Aggiornare",
"LabelPermissionsUpload": "Può caricare",
- "LabelPersonalYearReview": "Your Year in Review ({0})",
+ "LabelPersonalYearReview": "Il tuo anno in rassegna ({0})",
"LabelPhotoPathURL": "foto Path/URL",
- "LabelPlaylists": "Playlists",
"LabelPlayMethod": "Metodo di riproduzione",
+ "LabelPlayerChapterNumberMarker": "{0} di {1}",
+ "LabelPlaylists": "Playlist",
"LabelPodcast": "Podcast",
- "LabelPodcasts": "Podcasts",
"LabelPodcastSearchRegion": "Area di ricerca podcast",
"LabelPodcastType": "Tipo di Podcast",
- "LabelPort": "Port",
+ "LabelPodcasts": "Podcast",
+ "LabelPort": "Porta",
"LabelPrefixesToIgnore": "Suffissi da ignorare (specificando maiuscole e minuscole)",
"LabelPreventIndexing": "Impedisci che il tuo feed venga indicizzato da iTunes e dalle directory dei podcast di Google",
- "LabelPrimaryEbook": "Libri Principlae",
+ "LabelPrimaryEbook": "Libro principale",
"LabelProgress": "Cominciati",
- "LabelProvider": "Provider",
- "LabelPubDate": "Data Pubblicazione",
+ "LabelProvider": "Fornitore",
+ "LabelProviderAuthorizationValue": "Authorization Header Value",
+ "LabelPubDate": "Data di pubblicazione",
+ "LabelPublishYear": "Anno di pubblicazione",
+ "LabelPublishedDate": "{0} pubblicati",
+ "LabelPublishedDecade": "Decennio di pubblicazione",
+ "LabelPublishedDecades": "Decenni di pubblicazione",
"LabelPublisher": "Editore",
- "LabelPublishYear": "Anno Pubblicazione",
+ "LabelPublishers": "Editori",
+ "LabelRSSFeedCustomOwnerEmail": "E-mail del proprietario personalizzato",
+ "LabelRSSFeedCustomOwnerName": "Nome del proprietario personalizzato",
+ "LabelRSSFeedOpen": "Flusso RSS aperto",
+ "LabelRSSFeedPreventIndexing": "Impedisci l'indicizzazione",
+ "LabelRSSFeedSlug": "Parole chiave del flusso RSS",
+ "LabelRSSFeedURL": "URL del flusso RSS",
+ "LabelRandomly": "Casualmente",
+ "LabelReAddSeriesToContinueListening": "Aggiungi di nuovo la serie per continuare ad ascoltare",
"LabelRead": "Leggi",
- "LabelReadAgain": "Leggi Ancora",
- "LabelReadEbookWithoutProgress": "Leggi l'ebook senza mantenere i progressi",
- "LabelRecentlyAdded": "Aggiunti Recentemente",
- "LabelRecentSeries": "Serie Recenti",
+ "LabelReadAgain": "Leggi ancora",
+ "LabelReadEbookWithoutProgress": "Leggi il libro senza mantenere i progressi",
+ "LabelRecentSeries": "Serie recenti",
+ "LabelRecentlyAdded": "Aggiunti recentemente",
"LabelRecommended": "Raccomandati",
"LabelRedo": "Rifai",
"LabelRegion": "Regione",
"LabelReleaseDate": "Data Release",
"LabelRemoveCover": "Rimuovi cover",
- "LabelRowsPerPage": "Rows per page",
- "LabelRSSFeedCustomOwnerEmail": "Email del proprietario personalizzato",
- "LabelRSSFeedCustomOwnerName": "Nome del proprietario personalizzato",
- "LabelRSSFeedOpen": "RSS Feed Aperto",
- "LabelRSSFeedPreventIndexing": "Impedisci l'indicizzazione",
- "LabelRSSFeedSlug": "RSS Feed Slug",
- "LabelRSSFeedURL": "RSS Feed URL",
+ "LabelRowsPerPage": "Righe per pagina",
"LabelSearchTerm": "Ricerca",
"LabelSearchTitle": "Cerca Titolo",
"LabelSearchTitleOrASIN": "Cerca titolo o ASIN",
"LabelSeason": "Stagione",
- "LabelSelectAll": "Select all",
+ "LabelSelectAll": "Seleziona tutto",
"LabelSelectAllEpisodes": "Seleziona tutti gli Episodi",
- "LabelSelectEpisodesShowing": "Episodi {0} selezionati ",
+ "LabelSelectEpisodesShowing": "Selezionati {0} episodi da visualizzare",
"LabelSelectUsers": "Selezione Utenti",
- "LabelSendEbookToDevice": "Invia ebook a...",
+ "LabelSendEbookToDevice": "Invia il libro a...",
"LabelSequence": "Sequenza",
"LabelSeries": "Serie",
"LabelSeriesName": "Nome Serie",
"LabelSeriesProgress": "Cominciato",
+ "LabelServerLogLevel": "Server Log Level",
"LabelServerYearReview": "Anno del server in sintesi({0})",
- "LabelSetEbookAsPrimary": "Immposta come Primario",
- "LabelSetEbookAsSupplementary": "Imposta come Suplementare",
+ "LabelSetEbookAsPrimary": "Imposta come primario",
+ "LabelSetEbookAsSupplementary": "Imposta come suplementare",
"LabelSettingsAudiobooksOnly": "Solo Audiolibri",
- "LabelSettingsAudiobooksOnlyHelp": "L'abilitazione di questa impostazione ignorerà i file di ebook a meno che non si trovino all'interno di una cartella di audiolibri, nel qual caso verranno impostati come ebook supplementari",
+ "LabelSettingsAudiobooksOnlyHelp": "L'abilitazione di questa impostazione ignorerà i file di libro digitale a meno che non si trovino all'interno di una cartella di audiolibri, nel qual caso verranno impostati come libri digitali supplementari",
"LabelSettingsBookshelfViewHelp": "Design con scaffali in legno",
"LabelSettingsChromecastSupport": "Supporto a Chromecast",
"LabelSettingsDateFormat": "Formato Data",
@@ -471,8 +530,8 @@
"LabelSettingsEnableWatcher": "Abilita Watcher",
"LabelSettingsEnableWatcherForLibrary": "Abilita il controllo cartelle per la libreria",
"LabelSettingsEnableWatcherHelp": "Abilita l'aggiunta/aggiornamento automatico degli elementi quando vengono rilevate modifiche ai file. *Richiede il riavvio del Server",
- "LabelSettingsEpubsAllowScriptedContent": "Allow scripted content in epubs",
- "LabelSettingsEpubsAllowScriptedContentHelp": "Allow epub files to execute scripts. It is recommended to keep this setting disabled unless you trust the source of the epub files.",
+ "LabelSettingsEpubsAllowScriptedContent": "Consenti contenuti con script negli epub",
+ "LabelSettingsEpubsAllowScriptedContentHelp": "Consenti ai file epub di eseguire script. Si consiglia di mantenere questa impostazione disabilitata a meno che non si ritenga attendibile l'origine dei file epub.",
"LabelSettingsExperimentalFeatures": "Opzioni Sperimentali",
"LabelSettingsExperimentalFeaturesHelp": "Funzionalità in fase di sviluppo che potrebbero utilizzare i tuoi feedback e aiutare i test. Fare clic per aprire la discussione github.",
"LabelSettingsFindCovers": "Trova covers",
@@ -481,8 +540,8 @@
"LabelSettingsHideSingleBookSeriesHelp": "Le serie che hanno un solo libro saranno nascoste dalla pagina della serie e dagli scaffali della home page.",
"LabelSettingsHomePageBookshelfView": "Home page con sfondo legno",
"LabelSettingsLibraryBookshelfView": "Libreria con sfondo legno",
- "LabelSettingsOnlyShowLaterBooksInContinueSeries": "Skip earlier books in Continue Series",
- "LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "The Continue Series home page shelf shows the first book not started in series that have at least one book finished and no books in progress. Enabling this setting will continue series from the furthest completed book instead of the first book not started.",
+ "LabelSettingsOnlyShowLaterBooksInContinueSeries": "Salta i libri precedenti nella serie Continua",
+ "LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "Lo scaffale della home page Continua serie mostra il primo libro non iniziato della serie che ha almeno un libro finito e nessun libro in corso. Abilitando questa impostazione le serie continueranno dal libro completato più lontano invece che dal primo libro non iniziato.",
"LabelSettingsParseSubtitles": "Analizza sottotitoli",
"LabelSettingsParseSubtitlesHelp": "Estrai i sottotitoli dai nomi delle cartelle degli audiolibri. I sottotitoli devono essere separati da \" - \" Per esempio \"Il signore degli anelli - Le due Torri \" avrà il sottotitolo \"Le due Torri\"",
"LabelSettingsPreferMatchedMetadata": "Preferisci i metadata trovati",
@@ -498,45 +557,53 @@
"LabelSettingsStoreMetadataWithItem": "Archivia i metadata con il file",
"LabelSettingsStoreMetadataWithItemHelp": "Di default, i metadati sono salvati dentro /metadata/items, abilitando questa opzione si memorizzeranno i metadata nella cartella della libreria",
"LabelSettingsTimeFormat": "Formato Ora",
- "LabelShowAll": "Mostra Tutto",
- "LabelShowSeconds": "Show seconds",
+ "LabelShare": "Condividi",
+ "LabelShareOpen": "Apri Condivisioni",
+ "LabelShareURL": "Condividi URL",
+ "LabelShowAll": "Mostra tutto",
+ "LabelShowSeconds": "Mostra i secondi",
+ "LabelShowSubtitles": "Mostra Sottotitoli",
"LabelSize": "Dimensione",
- "LabelSleepTimer": "Sleep timer",
+ "LabelSleepTimer": "Temporizzatore",
"LabelSlug": "Lento",
"LabelStart": "Inizo",
+ "LabelStartTime": "Tempo di inizio",
"LabelStarted": "Iniziato",
"LabelStartedAt": "Iniziato al",
- "LabelStartTime": "Tempo di inizio",
"LabelStatsAudioTracks": "Tracce Audio",
"LabelStatsAuthors": "Autori",
- "LabelStatsBestDay": "Giorno Migliore",
+ "LabelStatsBestDay": "Giorno migliore",
"LabelStatsDailyAverage": "Media giornaliera",
"LabelStatsDays": "Giorni",
- "LabelStatsDaysListened": "Giorni di Ascolto",
+ "LabelStatsDaysListened": "Giorni di ascolto",
"LabelStatsHours": "Ore",
- "LabelStatsInARow": "Di fila",
- "LabelStatsItemsFinished": "Libri Completati",
+ "LabelStatsInARow": "di fila",
+ "LabelStatsItemsFinished": "Libri completati",
"LabelStatsItemsInLibrary": "Libri in Libreria",
- "LabelStatsMinutes": "Minuti",
- "LabelStatsMinutesListening": "Ascolto in Minuti",
+ "LabelStatsMinutes": "minuti",
+ "LabelStatsMinutesListening": "Minuti di ascolto",
"LabelStatsOverallDays": "Giorni Complessivi",
"LabelStatsOverallHours": "Ore Complessive",
- "LabelStatsWeekListening": "Ascolto Settimanale",
+ "LabelStatsWeekListening": "Ascolto settimanale",
"LabelSubtitle": "Sottotitoli",
"LabelSupportedFileTypes": "Tipi di file Supportati",
- "LabelTag": "Tag",
- "LabelTags": "Tags",
+ "LabelTag": "Etichetta",
+ "LabelTags": "Etichette",
"LabelTagsAccessibleToUser": "Tags permessi agli Utenti",
"LabelTagsNotAccessibleToUser": "Tags non accessibile agli Utenti",
"LabelTasks": "Processi in esecuzione",
"LabelTextEditorBulletedList": "Elenco puntato",
- "LabelTextEditorLink": "Link",
+ "LabelTextEditorLink": "Collegamento",
"LabelTextEditorNumberedList": "Elenco Numerato",
- "LabelTextEditorUnlink": "Unlink",
+ "LabelTextEditorUnlink": "Scollega",
"LabelTheme": "Tema",
"LabelThemeDark": "Scuro",
"LabelThemeLight": "Chiaro",
- "LabelTimeBase": "Time Base",
+ "LabelTimeBase": "Tempo base",
+ "LabelTimeDurationXHours": "{0} Ore",
+ "LabelTimeDurationXMinutes": "{0} minuti",
+ "LabelTimeDurationXSeconds": "{0} secondi",
+ "LabelTimeInMinutes": "Tempo in minuti",
"LabelTimeListened": "Tempo di Ascolto",
"LabelTimeListenedToday": "Tempo di Ascolto Oggi",
"LabelTimeRemaining": "{0} rimanente",
@@ -544,9 +611,10 @@
"LabelTitle": "Titolo",
"LabelToolsEmbedMetadata": "Incorpora Metadata",
"LabelToolsEmbedMetadataDescription": "Incorpora i metadati nei file audio, inclusi l'immagine di copertina e i capitoli.",
+ "LabelToolsM4bEncoder": "M4B Encoder",
"LabelToolsMakeM4b": "Crea un file M4B",
"LabelToolsMakeM4bDescription": "Genera un file audiolibro M4B con metadati incorporati, immagine di copertina e capitoli.",
- "LabelToolsSplitM4b": "Converti M4B in MP3's",
+ "LabelToolsSplitM4b": "Converti M4B in MP3",
"LabelToolsSplitM4bDescription": "Crea MP3 da un M4B diviso per capitoli con metadati incorporati, immagine di copertina e capitoli.",
"LabelTotalDuration": "Durata Totale",
"LabelTotalTimeListened": "Tempo totale di Ascolto",
@@ -558,40 +626,49 @@
"LabelTracksSingleTrack": "Traccia-singola",
"LabelType": "Tipo",
"LabelUnabridged": "Integrale",
- "LabelUndo": "Undo",
+ "LabelUndo": "Annulla",
"LabelUnknown": "Sconosciuto",
+ "LabelUnknownPublishDate": "Data di pubblicazione sconosciuta",
"LabelUpdateCover": "Aggiornamento Cover",
"LabelUpdateCoverHelp": "Consenti la sovrascrittura delle copertine esistenti per i libri selezionati quando viene trovata una corrispondenza",
- "LabelUpdatedAt": "Aggiornato alle",
"LabelUpdateDetails": "Dettagli Aggiornamento",
"LabelUpdateDetailsHelp": "Consenti la sovrascrittura dei dettagli esistenti per i libri selezionati quando viene individuata una corrispondenza",
+ "LabelUpdatedAt": "Aggiornato alle",
"LabelUploaderDragAndDrop": "Drag & drop file o Cartelle",
"LabelUploaderDropFiles": "Elimina file",
"LabelUploaderItemFetchMetadataHelp": "Recupera automaticamente titolo, autore e serie",
+ "LabelUseAdvancedOptions": "Usa le opzioni avanzate",
"LabelUseChapterTrack": "Usa il Capitolo della Traccia",
"LabelUseFullTrack": "Usa la traccia totale",
"LabelUser": "Utente",
- "LabelUsername": "Username",
+ "LabelUsername": "Nome utente",
"LabelValue": "Valore",
"LabelVersion": "Versione",
"LabelViewBookmarks": "Visualizza i Segnalibri",
"LabelViewChapters": "Visualizza i Capitoli",
+ "LabelViewPlayerSettings": "Mostra Impostazioni player",
"LabelViewQueue": "Visualizza coda",
"LabelVolume": "Volume",
"LabelWeekdaysToRun": "Giorni feriali da eseguire",
- "LabelYearReviewHide": "Hide Year in Review",
- "LabelYearReviewShow": "See Year in Review",
+ "LabelXBooks": "{0} libri",
+ "LabelXItems": "{0} oggetti",
+ "LabelYearReviewHide": "Nascondi Anno in rassegna",
+ "LabelYearReviewShow": "Vedi Anno in rassegna",
"LabelYourAudiobookDuration": "La durata dell'audiolibro",
- "LabelYourBookmarks": "I tuoi Preferiti",
+ "LabelYourBookmarks": "I tuoi preferiti",
"LabelYourPlaylists": "le tue Playlist",
"LabelYourProgress": "Completato al",
"MessageAddToPlayerQueue": "Aggiungi alla coda di riproduzione",
"MessageAppriseDescription": "Per utilizzare questa funzione è necessario disporre di un'istanza di Apprise API in esecuzione o un'API che gestirà quelle stesse richieste. L'API Url dovrebbe essere il percorso URL completo per inviare la notifica, ad esempio se la tua istanza API è servita cosi .http://192.168.1.1:8337 Allora dovrai mettere http://192.168.1.1:8337/notify.",
"MessageBackupsDescription": "I backup includono utenti, progressi degli utenti, dettagli sugli elementi della libreria, impostazioni del server e immagini archiviate in /metadata/items & /metadata/authors. I backup non includono i file archiviati nelle cartelle della libreria.",
+ "MessageBackupsLocationEditNote": "Nota: l'aggiornamento della posizione di backup non sposterà o modificherà i backup esistenti",
+ "MessageBackupsLocationNoEditNote": "Nota: la posizione del backup viene impostata tramite una variabile di ambiente e non può essere modificata qui.",
+ "MessageBackupsLocationPathEmpty": "Il percorso del backup non può essere vuoto",
"MessageBatchQuickMatchDescription": "Quick Match tenterà di aggiungere copertine e metadati mancanti per gli elementi selezionati. Attiva l'opzione per consentire a Quick Match di sovrascrivere copertine e/o metadati esistenti.",
- "MessageBookshelfNoCollections": "Non hai ancora creato nessuna raccolta ",
- "MessageBookshelfNoResultsForFilter": "Nessun risultato per il filtro \"{0}: {1}\"",
+ "MessageBookshelfNoCollections": "Non hai ancora creato nessuna raccolta",
"MessageBookshelfNoRSSFeeds": "Nessun RSS feeds aperto",
+ "MessageBookshelfNoResultsForFilter": "Nessun risultato per il filtro \"{0}: {1}\"",
+ "MessageBookshelfNoResultsForQuery": "Nessun risultato per la query",
"MessageBookshelfNoSeries": "Non c'è nessuna Serie",
"MessageChapterEndIsAfter": "La fine del capitolo è dopo la fine del tuo audiolibro",
"MessageChapterErrorFirstNotZero": "Il primo capitolo deve iniziare da 0",
@@ -601,41 +678,53 @@
"MessageCheckingCron": "Controllo cron...",
"MessageConfirmCloseFeed": "Sei sicuro di voler chiudere questo feed?",
"MessageConfirmDeleteBackup": "Sei sicuro di voler eliminare il backup {0}?",
+ "MessageConfirmDeleteDevice": "Sei sicuro/sicura di voler eliminare il lettore di libri {0}?",
"MessageConfirmDeleteFile": "Questo eliminerà il file dal tuo file system. Sei sicuro?",
"MessageConfirmDeleteLibrary": "Sei sicuro di voler eliminare definitivamente la libreria \"{0}\"?",
- "MessageConfirmDeleteLibraryItem": " l'elemento della libreria dal database e dal file system. Sei sicuro?",
+ "MessageConfirmDeleteLibraryItem": "l'elemento della libreria dal database e dal file system. Sei sicuro?",
"MessageConfirmDeleteLibraryItems": "Ciò eliminerà {0} elementi della libreria dal database e dal file system. Sei sicuro?",
+ "MessageConfirmDeleteMetadataProvider": "Sei sicuro/sicura di voler eliminare il fornitore di metadati personalizzato {0}?",
+ "MessageConfirmDeleteNotification": "Sei sicuro/sicura di voler eliminare questa notifica?",
"MessageConfirmDeleteSession": "Sei sicuro di voler eliminare questa sessione?",
+ "MessageConfirmEmbedMetadataInAudioFiles": "Sei sicuro di voler incorporare i metadati nei file audio {0}?",
"MessageConfirmForceReScan": "Sei sicuro di voler forzare una nuova scansione?",
"MessageConfirmMarkAllEpisodesFinished": "Sei sicuro di voler contrassegnare tutti gli episodi come finiti?",
"MessageConfirmMarkAllEpisodesNotFinished": "Sei sicuro di voler contrassegnare tutti gli episodi come non completati?",
+ "MessageConfirmMarkItemFinished": "Sei sicuro/sicura di voler segnare {0} come finito?",
+ "MessageConfirmMarkItemNotFinished": "Vuoi davvero segnare \"{0}\" come non finito?",
"MessageConfirmMarkSeriesFinished": "Sei sicuro di voler contrassegnare tutti i libri di questa serie come completati?",
"MessageConfirmMarkSeriesNotFinished": "Sei sicuro di voler contrassegnare tutti i libri di questa serie come non completati?",
- "MessageConfirmPurgeCache": "Purge cache will delete the entire directory at /metadata/cache.
Are you sure you want to remove the cache directory?",
+ "MessageConfirmNotificationTestTrigger": "Attivare questa notifica con dati di prova?",
+ "MessageConfirmPurgeCache": "L'eliminazione della cache eliminerà l'intera directory dei /metadata/cache.
Sei sicuro di voler rimuovere la directory della cache?",
+ "MessageConfirmPurgeItemsCache": "L'eliminazione della cache degli elementi eliminerà l'intera directory /metadata/cache/oggetti. Sei sicuro?",
"MessageConfirmQuickEmbed": "Attenzione! L'incorporamento rapido non eseguirà il backup dei file audio. Assicurati di avere un backup dei tuoi file audio.
Vuoi Continuare?",
+ "MessageConfirmReScanLibraryItems": "Sei sicuro di voler ripetere la scansione? {0} oggetti?",
"MessageConfirmRemoveAllChapters": "Sei sicuro di voler rimuovere tutti i capitoli?",
"MessageConfirmRemoveAuthor": "Sei sicuro di voler rimuovere l'autore? \"{0}\"?",
"MessageConfirmRemoveCollection": "Sei sicuro di voler rimuovere la Raccolta \"{0}\"?",
"MessageConfirmRemoveEpisode": "Sei sicuro di voler rimuovere l'episodio \"{0}\"?",
- "MessageConfirmRemoveEpisodes": "Sei sicuro di voler rimuovere {0} episodi?",
+ "MessageConfirmRemoveEpisodes": "Sei sicuro di voler rimuovere {0} episodi?",
"MessageConfirmRemoveListeningSessions": "Sei sicuro di voler rimuovere {0} sessioni di Ascolto?",
"MessageConfirmRemoveNarrator": "Sei sicuro di voler rimuovere il narratore \"{0}\"?",
"MessageConfirmRemovePlaylist": "Sei sicuro di voler rimuovere la tua playlist \"{0}\"?",
"MessageConfirmRenameGenre": "Sei sicuro di voler rinominare il genere \"{0}\" in \"{1}\" per tutti gli oggetti?",
"MessageConfirmRenameGenreMergeNote": "Note: Questo genere esiste già quindi verra unito.",
"MessageConfirmRenameGenreWarning": "Avvertimento! Esiste già un genere simile con un nome simile \"{0}\".",
- "MessageConfirmRenameTag": "Sei sicuro di voler rinominare il tag \"{0}\" in \"{1}\" per tutti gli oggetti?",
- "MessageConfirmRenameTagMergeNote": "Nota: Questo tag esiste già e verrà unito nel vecchio.",
+ "MessageConfirmRenameTag": "Sei sicuro/sicura di voler rinominare l'etichetta \"{0}\" in \"{1}\" per tutti gli oggetti?",
+ "MessageConfirmRenameTagMergeNote": "Nota: Questa etichetta esiste già e verrà unito nella vecchia.",
"MessageConfirmRenameTagWarning": "Avvertimento! Esiste già un tag simile con un nome simile \"{0}\".",
- "MessageConfirmReScanLibraryItems": "Sei sicuro di voler ripetere la scansione? {0} oggetti?",
- "MessageConfirmSendEbookToDevice": "Sei sicuro di voler inviare {0} ebook \"{1}\" al Device \"{2}\"?",
- "MessageDownloadingEpisode": "Download episodio in corso",
+ "MessageConfirmResetProgress": "Vuoi davvero azzerare i tuoi progressi?",
+ "MessageConfirmSendEbookToDevice": "Sei sicuro/sicura di voler inviare {0} libro «{1}» al dispositivo «{2}»?",
+ "MessageConfirmUnlinkOpenId": "Vuoi davvero scollegare questo utente da OpenID?",
+ "MessageDownloadingEpisode": "Scaricamento dell’episodio in corso",
"MessageDragFilesIntoTrackOrder": "Trascina i file nell'ordine di traccia corretto",
+ "MessageEmbedFailed": "Incorporamento non riuscito!",
"MessageEmbedFinished": "Incorporamento finito!",
- "MessageEpisodesQueuedForDownload": "{0} Episodio(i) in coda per il Download",
- "MessageEreaderDevices": "To ensure delivery of ebooks, you may need to add the above email address as a valid sender for each device listed below.",
- "MessageFeedURLWillBe": "Feed URL Saranno {0}",
- "MessageFetching": "Recupero Info...",
+ "MessageEmbedQueue": "In coda per l'incorporamento dei metadati ({0} in coda)",
+ "MessageEpisodesQueuedForDownload": "{0} episodio(i) in coda per lo scaricamento",
+ "MessageEreaderDevices": "Per garantire la consegna dei libri digitali, potrebbe essere necessario aggiungere l'indirizzo e-mail sopra indicato come mittente valido per ciascun dispositivo elencato di seguito.",
+ "MessageFeedURLWillBe": "l’URL del flusso sarà {0}",
+ "MessageFetching": "Recupero info…",
"MessageForceReScanDescription": "eseguirà nuovamente la scansione di tutti i file come una nuova scansione. I tag ID3 dei file audio, i file OPF e i file di testo verranno scansionati come nuovi.",
"MessageImportantNotice": "Avviso Importante!",
"MessageInsertChapterBelow": "Inserisci capitolo sotto",
@@ -643,9 +732,9 @@
"MessageItemsUpdated": "{0} Oggetti aggiornati",
"MessageJoinUsOn": "Unisciti a noi su",
"MessageListeningSessionsInTheLastYear": "{0} sessioni di ascolto nell'ultimo anno",
- "MessageLoading": "Caricamento...",
+ "MessageLoading": "Caricamento…",
"MessageLoadingFolders": "Caricamento Cartelle...",
- "MessageLogsDescription": "Logs are stored in /metadata/logs as JSON files. Crash logs are stored in /metadata/logs/crash_logs.txt.",
+ "MessageLogsDescription": "I log vengono archiviati nel percorso /metadata/logs as JSON files. I registri degli arresti anomali vengono archiviati nel percorso /metadata/logs/crash_logs.txt.",
"MessageM4BFailed": "M4B Fallito!",
"MessageM4BFinished": "M4B Finito!",
"MessageMapChapterTitles": "Associa i titoli dei capitoli ai capitoli dell'audiolibro esistente senza modificare i timestamp",
@@ -657,11 +746,12 @@
"MessageNoAudioTracks": "Nessuna Traccia Audio",
"MessageNoAuthors": "Nessun autore",
"MessageNoBackups": "Nessun Backup",
- "MessageNoBookmarks": "Nessun Preferito",
- "MessageNoChapters": "Nessun Capitolo",
+ "MessageNoBookmarks": "Nessun preferito",
+ "MessageNoChapters": "Nessun capitolo",
"MessageNoCollections": "Nessuna Raccolta",
"MessageNoCoversFound": "Nessuna Cover Trovata",
"MessageNoDescription": "Nessuna descrizione",
+ "MessageNoDevices": "nessun dispositivo",
"MessageNoDownloadsInProgress": "Nessun download attualmente in corso",
"MessageNoDownloadsQueued": "Nessuna coda di download",
"MessageNoEpisodeMatchesFound": "Nessun episodio corrispondente trovato",
@@ -669,33 +759,38 @@
"MessageNoFoldersAvailable": "Nessuna Cartella disponibile",
"MessageNoGenres": "Nessun Genere",
"MessageNoIssues": "Nessun Errore",
- "MessageNoItems": "Nessun Oggetto",
- "MessageNoItemsFound": "Nessun Oggetto trovato",
+ "MessageNoItems": "Nessun oggetto",
+ "MessageNoItemsFound": "Nessun oggetto trovato",
"MessageNoListeningSessions": "Nessuna sessione di ascolto",
"MessageNoLogs": "Nessun Logs",
"MessageNoMediaProgress": "Nessun progresso multimediale",
"MessageNoNotifications": "Nessuna notifica",
- "MessageNoPodcastsFound": "Nessun podcasts trovato",
+ "MessageNoPodcastFeed": "Podcast non valido: nessun feed",
+ "MessageNoPodcastsFound": "Nessun podcast trovato",
"MessageNoResults": "Nessun Risultato",
"MessageNoSearchResultsFor": "Nessun risultato per \"{0}\"",
"MessageNoSeries": "Nessuna Serie",
"MessageNoTags": "Nessun Tags",
"MessageNoTasksRunning": "Nessun processo in esecuzione",
- "MessageNotYetImplemented": "Non Ancora Implementato",
- "MessageNoUpdateNecessary": "Nessun aggiornamento necessario",
"MessageNoUpdatesWereNecessary": "Nessun aggiornamento necessario",
"MessageNoUserPlaylists": "non hai nessuna Playlist",
+ "MessageNotYetImplemented": "Non Ancora Implementato",
+ "MessageOpmlPreviewNote": "Nota: questa è un'anteprima del file OPML analizzato. Il titolo effettivo del podcast verrà preso dal feed RSS.",
"MessageOr": "o",
"MessagePauseChapter": "Metti in Pausa Capitolo",
"MessagePlayChapter": "Ascolta dall'inizio del capitolo",
"MessagePlaylistCreateFromCollection": "Crea playlist da una Raccolta",
+ "MessagePleaseWait": "Attendi...",
"MessagePodcastHasNoRSSFeedForMatching": "Podcast non ha l'URL del feed RSS da utilizzare per il match",
+ "MessagePodcastSearchField": "Inserisci il termine di ricerca o l'URL del feed RSS",
+ "MessageQuickEmbedInProgress": "Incorporamento rapido in corso",
+ "MessageQuickEmbedQueue": "In coda per incorporamento rapido ({0} in coda)",
"MessageQuickMatchDescription": "Compila i dettagli dell'articolo vuoto e copri con il risultato della prima corrispondenza di '{0}'. Non sovrascrive i dettagli a meno che non sia abilitata l'impostazione del server \"Preferisci metadati corrispondenti\".",
"MessageRemoveChapter": "Rimuovi Capitolo",
"MessageRemoveEpisodes": "rimuovi {0} episodio(i)",
"MessageRemoveFromPlayerQueue": "Rimuovi dalla coda di riproduzione",
"MessageRemoveUserWarning": "Sei sicuro di voler eliminare definitivamente l'utente \"{0}\"?",
- "MessageReportBugsAndContribute": "Segnala bug, richiedi funzionalità e contribuisci",
+ "MessageReportBugsAndContribute": "Segnala errori, richiedi funzionalità e contribuisci",
"MessageResetChaptersConfirm": "Sei sicuro di voler reimpostare i capitoli e annullare le modifiche ?",
"MessageRestoreBackupConfirm": "Sei sicuro di voler ripristinare il backup creato su",
"MessageRestoreBackupWarning": "Il ripristino di un backup sovrascriverà l'intero database situato in /config e sovrascrive le immagini in /metadata/items & /metadata/authors.
I backup non modificano alcun file nelle cartelle della libreria. Se hai abilitato le impostazioni del server per archiviare copertine e metadati nelle cartelle della libreria, questi non vengono sottoposti a backup o sovrascritti.
Tutti i client che utilizzano il tuo server verranno aggiornati automaticamente.",
@@ -703,7 +798,45 @@
"MessageSelected": "{0} selezionati",
"MessageServerCouldNotBeReached": "Impossibile raggiungere il server",
"MessageSetChaptersFromTracksDescription": "Impostare i capitoli utilizzando ciascun file audio come capitolo e il titolo del capitolo come nome del file audio",
+ "MessageShareExpirationWillBe": "Scadrà tra {0}",
+ "MessageShareExpiresIn": "Scade in {0}",
+ "MessageShareURLWillBe": "L'indirizzo sarà: {0}",
"MessageStartPlaybackAtTime": "Avvia la riproduzione per \"{0}\" a {1}?",
+ "MessageTaskAudioFileNotWritable": "Il file audio «{0}» non è scrivibile",
+ "MessageTaskCanceledByUser": "Attività annullata dall'utente",
+ "MessageTaskDownloadingEpisodeDescription": "Scaricamento dell'episodio «{0}»",
+ "MessageTaskEmbeddingMetadata": "Metadati integrati",
+ "MessageTaskEmbeddingMetadataDescription": "Integrazione dei metadati nell'audiolibro «{0}»",
+ "MessageTaskEncodingM4b": "Codifica M4B",
+ "MessageTaskEncodingM4bDescription": "Codifica dell'audiolibro «{0}» in un singolo file m4b",
+ "MessageTaskFailed": "Fallimento",
+ "MessageTaskFailedToBackupAudioFile": "Non riuscita a eseguire il backup del file audio «{0}»",
+ "MessageTaskFailedToCreateCacheDirectory": "Non riuscita a creare la cartella della cache",
+ "MessageTaskFailedToEmbedMetadataInFile": "Non ha inserito i metadati nel file «{0}»",
+ "MessageTaskFailedToMergeAudioFiles": "Non è riuscito a fondere i file audio",
+ "MessageTaskFailedToMoveM4bFile": "Non è riuscito a spostare il file m4b",
+ "MessageTaskFailedToWriteMetadataFile": "Non è riuscito a scrivere file di metadati",
+ "MessageTaskMatchingBooksInLibrary": "Libri di corrispondenza in biblioteca «{0}»",
+ "MessageTaskNoFilesToScan": "Nessun file per la scansione",
+ "MessageTaskOpmlImport": "Importazione OPML",
+ "MessageTaskOpmlImportDescription": "Creazione di podcast da {0} flusso RSS",
+ "MessageTaskOpmlImportFeed": "Flusso di importazione OPML",
+ "MessageTaskOpmlImportFeedDescription": "Importazione del flusso RSS «{0}»",
+ "MessageTaskOpmlImportFeedFailed": "Impossibile ottenere il flusso del podcast",
+ "MessageTaskOpmlImportFeedPodcastDescription": "Creazione di podcast «{0}»",
+ "MessageTaskOpmlImportFeedPodcastExists": "Il podcast esiste già nel percorso",
+ "MessageTaskOpmlImportFeedPodcastFailed": "Errore durante la creazione del podcast",
+ "MessageTaskOpmlImportFinished": "{0} podcast aggiunti",
+ "MessageTaskOpmlParseFailed": "Impossibile analizzare il file OPML",
+ "MessageTaskOpmlParseFastFail": "File OPML non valido. Tag non trovato OPPURE non è stato trovato un tag ",
+ "MessageTaskOpmlParseNoneFound": "Nessun feed trovato nel file OPML",
+ "MessageTaskScanItemsAdded": "{0} aggiunti",
+ "MessageTaskScanItemsMissing": "{0} mancanti",
+ "MessageTaskScanItemsUpdated": "{0} aggiornati",
+ "MessageTaskScanNoChangesNeeded": "Nessuna modifica necessaria",
+ "MessageTaskScanningFileChanges": "Cambiamenti di file di scansione in «{0}»",
+ "MessageTaskScanningLibrary": "Scansione della biblioteca «{0}»",
+ "MessageTaskTargetDirectoryNotWritable": "La cartella di destinazione non è scrivibile",
"MessageThinking": "Elaborazione...",
"MessageUploaderItemFailed": "Caricamento Fallito",
"MessageUploaderItemSuccess": "Caricato con successo!",
@@ -721,90 +854,172 @@
"NoteUploaderFoldersWithMediaFiles": "Le cartelle con file multimediali verranno gestite come elementi della libreria separati.",
"NoteUploaderOnlyAudioFiles": "Se carichi solo file audio, ogni file audio verrà gestito come un audiolibro separato.",
"NoteUploaderUnsupportedFiles": "I file non supportati vengono ignorati. Quando si sceglie o si elimina una cartella, gli altri file che non si trovano in una cartella di elementi vengono ignorati.",
+ "NotificationOnBackupCompletedDescription": "Attivato al completamento di un backup",
+ "NotificationOnBackupFailedDescription": "Attivato quando un backup fallisce",
+ "NotificationOnEpisodeDownloadedDescription": "Attivato quando un episodio di podcast viene scaricato automaticamente",
+ "NotificationOnTestDescription": "test il sistema di notifica",
"PlaceholderNewCollection": "Nome Nuova Raccolta",
"PlaceholderNewFolderPath": "Nuovo Percorso Cartella",
"PlaceholderNewPlaylist": "Nome nuova playlist",
"PlaceholderSearch": "Cerca..",
"PlaceholderSearchEpisode": "Cerca Episodio..",
- "ToastAccountUpdateFailed": "Aggiornamento Account Fallito",
+ "StatsAuthorsAdded": "autori aggiunti",
+ "StatsBooksAdded": "Libri aggiunti",
+ "StatsBooksAdditional": "Alcune aggiunte includono…",
+ "StatsBooksFinished": "Libri Finiti",
+ "StatsBooksFinishedThisYear": "Alcuni libri terminati quest'anno…",
+ "StatsBooksListenedTo": "Libri ascoltati",
+ "StatsCollectionGrewTo": "La tua collezione è aumentata di…",
+ "StatsSessions": "Sessioni",
+ "StatsSpentListening": "Tempo di Ascolto",
+ "StatsTopAuthor": "MIGLIOR AUTORE",
+ "StatsTopAuthors": "AUTORI MIGLIORI",
+ "StatsTopGenre": "MIGLIOR GENERE",
+ "StatsTopGenres": "GENERI MIGLIORI",
+ "StatsTopMonth": "MIGLIOR MESE",
+ "StatsTopNarrator": "MIGLIOR NARRATORE",
+ "StatsTopNarrators": "NARRATORI MIGLIORI",
+ "StatsTotalDuration": "Per una durata totale di…",
+ "StatsYearInReview": "ANNO IN RASSEGNA",
"ToastAccountUpdateSuccess": "Account Aggiornato",
- "ToastAuthorImageRemoveFailed": "Rimozione immagine autore Fallita",
+ "ToastAppriseUrlRequired": "È necessario immettere un indirizzo Apprise",
"ToastAuthorImageRemoveSuccess": "Immagine Autore Rimossa",
- "ToastAuthorUpdateFailed": "Aggiornamento Autore Fallito",
+ "ToastAuthorNotFound": "Autore\"{0}\" non trovato",
+ "ToastAuthorRemoveSuccess": "Autore rimosso",
+ "ToastAuthorSearchNotFound": "Autore non trovato",
"ToastAuthorUpdateMerged": "Autore unito",
"ToastAuthorUpdateSuccess": "Autore aggiornato",
"ToastAuthorUpdateSuccessNoImageFound": "Autore aggiornato (nessuna immagine trovata)",
+ "ToastBackupAppliedSuccess": "Backup applicato",
"ToastBackupCreateFailed": "creazione backup fallita",
"ToastBackupCreateSuccess": "Backup creato",
"ToastBackupDeleteFailed": "Eliminazione backup fallita",
"ToastBackupDeleteSuccess": "backup Eliminato",
+ "ToastBackupInvalidMaxKeep": "Numero non valido di backup da conservare",
+ "ToastBackupInvalidMaxSize": "Dimensione massima del backup non valida",
"ToastBackupRestoreFailed": "Ripristino fallito",
"ToastBackupUploadFailed": "Caricamento backup fallito",
"ToastBackupUploadSuccess": "Backup caricato",
+ "ToastBatchDeleteFailed": "Eliminazione batch non riuscita",
+ "ToastBatchDeleteSuccess": "Eliminazione batch riuscita",
"ToastBatchUpdateFailed": "Batch di aggiornamento fallito",
"ToastBatchUpdateSuccess": "Batch di aggiornamento finito",
"ToastBookmarkCreateFailed": "Creazione segnalibro fallita",
"ToastBookmarkCreateSuccess": "Segnalibro creato",
- "ToastBookmarkRemoveFailed": "Rimozione Segnalibro fallita",
"ToastBookmarkRemoveSuccess": "Segnalibro Rimosso",
- "ToastBookmarkUpdateFailed": "Aggiornamento Segnalibro fallito",
"ToastBookmarkUpdateSuccess": "Segnalibro aggiornato",
- "ToastCachePurgeFailed": "Failed to purge cache",
- "ToastCachePurgeSuccess": "Cache purged successfully",
+ "ToastCachePurgeFailed": "Impossibile eliminare la cache",
+ "ToastCachePurgeSuccess": "Cache eliminata correttamente",
"ToastChaptersHaveErrors": "I capitoli contengono errori",
"ToastChaptersMustHaveTitles": "I capitoli devono avere titoli",
- "ToastCollectionItemsRemoveFailed": "Rimozione oggetti dalla Raccolta fallita",
+ "ToastChaptersRemoved": "Capitoli rimossi",
+ "ToastCollectionItemsAddFailed": "l'aggiunta dell'elemento(i) alla raccolta non è riuscito",
+ "ToastCollectionItemsAddSuccess": "L'aggiunta dell'elemento(i) alla raccolta è riuscito",
"ToastCollectionItemsRemoveSuccess": "Oggetto(i) rimossi dalla Raccolta",
- "ToastCollectionRemoveFailed": "Rimozione Raccolta fallita",
"ToastCollectionRemoveSuccess": "Collezione rimossa",
- "ToastCollectionUpdateFailed": "Errore aggiornamento Raccolta",
"ToastCollectionUpdateSuccess": "Raccolta aggiornata",
- "ToastDeleteFileFailed": "Failed to delete file",
- "ToastDeleteFileSuccess": "File deleted",
- "ToastFailedToLoadData": "Failed to load data",
- "ToastItemCoverUpdateFailed": "Errore Aggiornamento cover",
+ "ToastCoverUpdateFailed": "Aggiornamento cover fallito",
+ "ToastDeleteFileFailed": "Impossibile eliminare il file",
+ "ToastDeleteFileSuccess": "File eliminato",
+ "ToastDeviceAddFailed": "Aggiunta dispositivo fallita",
+ "ToastDeviceNameAlreadyExists": "Esiste già un dispositivo e-reader con quel nome",
+ "ToastDeviceTestEmailFailed": "Impossibile inviare l'e-mail di prova",
+ "ToastDeviceTestEmailSuccess": "Test invio mail completato",
+ "ToastEmailSettingsUpdateSuccess": "Impostazioni e-mail aggiornate",
+ "ToastEncodeCancelFailed": "Impossibile annullare la codifica",
+ "ToastEncodeCancelSucces": "Codifica annullata",
+ "ToastEpisodeDownloadQueueClearFailed": "Impossibile cancellare la coda",
+ "ToastEpisodeDownloadQueueClearSuccess": "Coda di download degli episodi cancellata",
+ "ToastErrorCannotShare": "Impossibile condividere in modo nativo su questo dispositivo",
+ "ToastFailedToLoadData": "Impossibile caricare i dati",
+ "ToastFailedToShare": "Impossibile condividere",
+ "ToastFailedToUpdate": "Non aggiornato",
+ "ToastInvalidImageUrl": "URL dell'immagine non valido",
+ "ToastInvalidUrl": "URL non valido",
"ToastItemCoverUpdateSuccess": "Cover aggiornata",
- "ToastItemDetailsUpdateFailed": "Errore Aggiornamento dettagli file",
+ "ToastItemDeletedFailed": "Impossibile eliminare l'elemento",
+ "ToastItemDeletedSuccess": "Elemento eliminato",
"ToastItemDetailsUpdateSuccess": "Dettagli file Aggiornata",
- "ToastItemDetailsUpdateUnneeded": "Nessun Aggiornamento necessario per il file",
"ToastItemMarkedAsFinishedFailed": "Errore nel segnare il file come finito",
"ToastItemMarkedAsFinishedSuccess": "File segnato come finito",
"ToastItemMarkedAsNotFinishedFailed": "Errore nel segnare il file come non completo",
"ToastItemMarkedAsNotFinishedSuccess": "File segnato come non completo",
+ "ToastItemUpdateSuccess": "Articolo aggiornato",
"ToastLibraryCreateFailed": "Errore creazione libreria",
"ToastLibraryCreateSuccess": "Libreria \"{0}\" creata",
"ToastLibraryDeleteFailed": "Errore cancellazione libreria",
"ToastLibraryDeleteSuccess": "Libreria Cancellata",
"ToastLibraryScanFailedToStart": "Errore inizio scansione",
"ToastLibraryScanStarted": "Scansione Libreria iniziata",
- "ToastLibraryUpdateFailed": "Errore Aggiornamento libreria",
"ToastLibraryUpdateSuccess": "Libreria \"{0}\" aggiornata",
- "ToastPlaylistCreateFailed": "Errore Creazione playlist",
+ "ToastMatchAllAuthorsFailed": "Tutti gli autori non sono potuti essere classificati",
+ "ToastNameEmailRequired": "Nome ed email sono obbligatori",
+ "ToastNameRequired": "Il nome è obbligatorio",
+ "ToastNewUserCreatedFailed": "Impossibile creare l'account: \"{0}\"",
+ "ToastNewUserCreatedSuccess": "Nuovo account creato",
+ "ToastNewUserLibraryError": "È necessario selezionare almeno una libreria",
+ "ToastNewUserPasswordError": "Deve avere una password, solo l'utente root può avere una password vuota",
+ "ToastNewUserTagError": "Devi selezionare almeno un tag",
+ "ToastNewUserUsernameError": "Inserisci un nome utente",
+ "ToastNoUpdatesNecessary": "Nessun aggiornamento necessario",
+ "ToastNotificationCreateFailed": "Impossibile creare la notifica",
+ "ToastNotificationDeleteFailed": "Impossibile eliminare la notifica",
+ "ToastNotificationFailedMaximum": "Il numero massimo di tentativi falliti deve essere >= 0",
+ "ToastNotificationQueueMaximum": "La coda di notifica massima deve essere >= 0",
+ "ToastNotificationSettingsUpdateSuccess": "Impostazioni di notifica aggiornate",
+ "ToastNotificationTestTriggerFailed": "Impossibile attivare la notifica del test",
+ "ToastNotificationTestTriggerSuccess": "Notifica di test attivata",
+ "ToastNotificationUpdateSuccess": "Notifica aggiornata",
+ "ToastPlaylistCreateFailed": "Errore creazione playlist",
"ToastPlaylistCreateSuccess": "Playlist creata",
- "ToastPlaylistRemoveFailed": "Rimozione Playlist Fallita",
"ToastPlaylistRemoveSuccess": "Playlist rimossa",
- "ToastPlaylistUpdateFailed": "Aggiornamento Playlist Fallita",
"ToastPlaylistUpdateSuccess": "Playlist Aggiornata",
- "ToastPodcastCreateFailed": "Errore Creazione podcast",
- "ToastPodcastCreateSuccess": "Podcast creato Correttamente",
+ "ToastPodcastCreateFailed": "Errore creazione podcast",
+ "ToastPodcastCreateSuccess": "Podcast creato correttamente",
+ "ToastPodcastGetFeedFailed": "Impossibile ottenere il feed del podcast",
+ "ToastPodcastNoEpisodesInFeed": "Nessun episodio trovato nel feed RSS",
+ "ToastPodcastNoRssFeed": "Il podcast non ha un feed RSS",
+ "ToastProviderCreatedFailed": "Impossibile aggiungere il provider",
+ "ToastProviderCreatedSuccess": "Aggiunto nuovo provider",
+ "ToastProviderNameAndUrlRequired": "Nome e URL richiesti",
+ "ToastProviderRemoveSuccess": "Provider rimosso",
+ "ToastRSSFeedCloseFailed": "Errore chiusura flusso RSS",
+ "ToastRSSFeedCloseSuccess": "Flusso RSS chiuso",
+ "ToastRemoveFailed": "Impossibile rimuovere",
"ToastRemoveItemFromCollectionFailed": "Errore rimozione file dalla Raccolta",
"ToastRemoveItemFromCollectionSuccess": "Oggetto rimosso dalla Raccolta",
- "ToastRSSFeedCloseFailed": "Errore chiusura RSS feed",
- "ToastRSSFeedCloseSuccess": "RSS feed chiuso",
- "ToastSendEbookToDeviceFailed": "Impossibile inviare l'ebook al dispositivo",
- "ToastSendEbookToDeviceSuccess": "Ebook inviato al dispositivo \"{0}\"",
+ "ToastRemoveItemsWithIssuesFailed": "Impossibile rimuovere gli elementi della libreria con problemi",
+ "ToastRemoveItemsWithIssuesSuccess": "Rimossi gli elementi della libreria con problemi",
+ "ToastRenameFailed": "Impossibile rinominare",
+ "ToastRescanFailed": "Nuova scansione non riuscita per {0}",
+ "ToastRescanRemoved": "L'articolo completo di Re-Scan è stato rimosso",
+ "ToastRescanUpToDate": "La nuova scansione dell'articolo completo è stata aggiornata",
+ "ToastRescanUpdated": "L'articolo completo di Re-Scan è stato aggiornato",
+ "ToastScanFailed": "Impossibile eseguire la scansione dell'elemento della libreria",
+ "ToastSelectAtLeastOneUser": "Seleziona almeno un utente",
+ "ToastSendEbookToDeviceFailed": "Impossibile inviare il libro al dispositivo",
+ "ToastSendEbookToDeviceSuccess": "Libro inviato al dispositivo «{0}»",
"ToastSeriesUpdateFailed": "Aggiornamento Serie Fallito",
"ToastSeriesUpdateSuccess": "Serie Aggiornate",
- "ToastServerSettingsUpdateFailed": "Failed to update server settings",
- "ToastServerSettingsUpdateSuccess": "Server settings updated",
+ "ToastServerSettingsUpdateSuccess": "Impostazioni del server aggiornate",
+ "ToastSessionCloseFailed": "Disconnessione Fallita",
"ToastSessionDeleteFailed": "Errore eliminazione sessione",
"ToastSessionDeleteSuccess": "Sessione cancellata",
+ "ToastSlugMustChange": "Lo slug contiene caratteri non validi",
+ "ToastSlugRequired": "È richiesto lo slug",
"ToastSocketConnected": "Socket connesso",
"ToastSocketDisconnected": "Socket disconnesso",
"ToastSocketFailedToConnect": "Socket non riesce a connettersi",
- "ToastSortingPrefixesEmptyError": "Must have at least 1 sorting prefix",
- "ToastSortingPrefixesUpdateFailed": "Failed to update sorting prefixes",
- "ToastSortingPrefixesUpdateSuccess": "Sorting prefixes updated ({0} items)",
+ "ToastSortingPrefixesEmptyError": "Deve avere almeno 1 prefisso di ordinamento",
+ "ToastSortingPrefixesUpdateSuccess": "Prefissi di ordinamento aggiornati ({0} items)",
+ "ToastTitleRequired": "Il titolo è obbligatorio",
+ "ToastUnknownError": "Errore sconosciuto",
+ "ToastUnlinkOpenIdFailed": "Impossibile scollegare l'utente da OpenID",
+ "ToastUnlinkOpenIdSuccess": "Utente scollegato da OpenID",
"ToastUserDeleteFailed": "Errore eliminazione utente",
- "ToastUserDeleteSuccess": "Utente eliminato"
-}
\ No newline at end of file
+ "ToastUserDeleteSuccess": "Utente eliminato",
+ "ToastUserPasswordChangeSuccess": "Password modificata con successo",
+ "ToastUserPasswordMismatch": "Le password non corrispondono",
+ "ToastUserPasswordMustChange": "La nuova password non può corrispondere alla vecchia password",
+ "ToastUserRootRequireName": "È necessario immettere un nome utente root"
+}
diff --git a/client/strings/lt.json b/client/strings/lt.json
index 5bd42bdf2..9fe65e3af 100644
--- a/client/strings/lt.json
+++ b/client/strings/lt.json
@@ -1,14 +1,15 @@
{
"ButtonAdd": "Pridėti",
"ButtonAddChapters": "Pridėti skyrius",
- "ButtonAddDevice": "Add Device",
- "ButtonAddLibrary": "Add Library",
+ "ButtonAddDevice": "Pridėti įrenginį",
+ "ButtonAddLibrary": "Pridėti Biblioteką",
"ButtonAddPodcasts": "Pridėti tinklalaides",
- "ButtonAddUser": "Add User",
+ "ButtonAddUser": "Pridėti Vartotoją",
"ButtonAddYourFirstLibrary": "Pridėkite savo pirmąją biblioteką",
"ButtonApply": "Taikyti",
"ButtonApplyChapters": "Taikyti skyrius",
"ButtonAuthors": "Autoriai",
+ "ButtonBack": "Atgal",
"ButtonBrowseForFolder": "Naršyti aplanko",
"ButtonCancel": "Atšaukti",
"ButtonCancelEncode": "Atšaukti kodavimą",
@@ -18,6 +19,7 @@
"ButtonChooseFiles": "Pasirinkite failus",
"ButtonClearFilter": "Valyti filtrą",
"ButtonCloseFeed": "Uždaryti srautą",
+ "ButtonCloseSession": "Uždaryti Atidarytą sesiją",
"ButtonCollections": "Kolekcijos",
"ButtonConfigureScanner": "Konfigūruoti skenerį",
"ButtonCreate": "Kurti",
@@ -27,13 +29,14 @@
"ButtonEdit": "Redaguoti",
"ButtonEditChapters": "Redaguoti skyrius",
"ButtonEditPodcast": "Redaguoti tinklalaidę",
+ "ButtonEnable": "Įjungti",
"ButtonForceReScan": "Priverstinai nuskaityti iš naujo",
"ButtonFullPath": "Visas kelias",
"ButtonHide": "Slėpti",
"ButtonHome": "Pradžia",
"ButtonIssues": "Problemos",
- "ButtonJumpBackward": "Jump Backward",
- "ButtonJumpForward": "Jump Forward",
+ "ButtonJumpBackward": "Peršokti atgal",
+ "ButtonJumpForward": "Peršokti į priekį",
"ButtonLatest": "Naujausias",
"ButtonLibrary": "Biblioteka",
"ButtonLogout": "Atsijungti",
@@ -43,36 +46,36 @@
"ButtonMatchAllAuthors": "Pritaikyti visus autorius",
"ButtonMatchBooks": "Pritaikyti knygas",
"ButtonNevermind": "Nesvarbu",
- "ButtonNext": "Next",
- "ButtonNextChapter": "Next Chapter",
+ "ButtonNext": "Kitas",
+ "ButtonNextChapter": "Kitas Skyrius",
+ "ButtonNextItemInQueue": "Kitas eilėje",
"ButtonOk": "Ok",
"ButtonOpenFeed": "Atidaryti srautą",
"ButtonOpenManager": "Atidaryti tvarkyklę",
- "ButtonPause": "Pause",
+ "ButtonPause": "Pauzė",
"ButtonPlay": "Groti",
+ "ButtonPlayAll": "Groti Visus",
"ButtonPlaying": "Grojama",
"ButtonPlaylists": "Grojaraščiai",
- "ButtonPrevious": "Previous",
- "ButtonPreviousChapter": "Previous Chapter",
+ "ButtonPrevious": "Praeitas",
+ "ButtonPreviousChapter": "Praeitas Skyrius",
"ButtonPurgeAllCache": "Valyti visą saugyklą",
"ButtonPurgeItemsCache": "Valyti elementų saugyklą",
- "ButtonPurgeMediaProgress": "Valyti medijos progresą",
"ButtonQueueAddItem": "Pridėti į eilę",
"ButtonQueueRemoveItem": "Pašalinti iš eilės",
"ButtonQuickMatch": "Greitas pritaikymas",
+ "ButtonReScan": "Iš naujo nuskaityti",
"ButtonRead": "Skaityti",
- "ButtonReadLess": "Read less",
- "ButtonReadMore": "Read more",
- "ButtonRefresh": "Refresh",
+ "ButtonReadLess": "Mažiau",
+ "ButtonReadMore": "Daugiau",
+ "ButtonRefresh": "Atnaujinti",
"ButtonRemove": "Pašalinti",
"ButtonRemoveAll": "Pašalinti viską",
"ButtonRemoveAllLibraryItems": "Pašalinti visus bibliotekos elementus",
"ButtonRemoveFromContinueListening": "Pašalinti iš Tęsti Klausimą",
"ButtonRemoveFromContinueReading": "Pašalinti iš Tęsti Skaitymą",
"ButtonRemoveSeriesFromContinueSeries": "Pašalinti seriją iš Tęsti Seriją",
- "ButtonReScan": "Iš naujo nuskaityti",
"ButtonReset": "Atstatyti",
- "ButtonResetToDefault": "Reset to default",
"ButtonRestore": "Atkurti",
"ButtonSave": "Išsaugoti",
"ButtonSaveAndClose": "Išsaugoti ir uždaryti",
@@ -83,13 +86,15 @@
"ButtonSelectFolderPath": "Pasirinkti aplanko kelią",
"ButtonSeries": "Serijos",
"ButtonSetChaptersFromTracks": "Nustatyti skyrius iš takelių",
- "ButtonShare": "Share",
+ "ButtonShare": "Dalintis",
"ButtonShiftTimes": "Perstumti laikus",
"ButtonShow": "Rodyti",
"ButtonStartM4BEncode": "Pradėti M4B kodavimą",
"ButtonStartMetadataEmbed": "Pradėti metaduomenų įterpimą",
+ "ButtonStats": "Statistika",
"ButtonSubmit": "Pateikti",
"ButtonTest": "Testuoti",
+ "ButtonUnlinkOpenId": "Atsieti OpenID",
"ButtonUpload": "Įkelti",
"ButtonUploadBackup": "Įkelti atsarginę kopiją",
"ButtonUploadCover": "Įkelti viršelį",
@@ -98,15 +103,15 @@
"ButtonUserEdit": "Redaguoti naudotoją {0}",
"ButtonViewAll": "Peržiūrėti visus",
"ButtonYes": "Taip",
- "ErrorUploadFetchMetadataAPI": "Error fetching metadata",
- "ErrorUploadFetchMetadataNoResults": "Could not fetch metadata - try updating title and/or author",
- "ErrorUploadLacksTitle": "Must have a title",
+ "ErrorUploadFetchMetadataAPI": "Klaida gaunant metaduomenis",
+ "ErrorUploadFetchMetadataNoResults": "Nepavyko gauti metaduomenų - pabandykite atnaujinti pavadinimą ir/ar autorių.",
+ "ErrorUploadLacksTitle": "Pavadinimas yra privalomas",
"HeaderAccount": "Paskyra",
"HeaderAdvanced": "Papildomi",
"HeaderAppriseNotificationSettings": "Apprise pranešimo nustatymai",
- "HeaderAudiobookTools": "Audioknygų failų valdymo įrankiai",
"HeaderAudioTracks": "Garso takeliai",
- "HeaderAuthentication": "Authentication",
+ "HeaderAudiobookTools": "Audioknygų failų valdymo įrankiai",
+ "HeaderAuthentication": "Autentifikacija",
"HeaderBackups": "Atsarginės kopijos",
"HeaderChangePassword": "Pakeisti slaptažodį",
"HeaderChapters": "Skyriai",
@@ -115,7 +120,7 @@
"HeaderCollectionItems": "Kolekcijos elementai",
"HeaderCover": "Viršelis",
"HeaderCurrentDownloads": "Dabartiniai parsisiuntimai",
- "HeaderCustomMetadataProviders": "Custom Metadata Providers",
+ "HeaderCustomMessageOnLogin": "Pritaikyta prisijungimo žinutė",
"HeaderDetails": "Detalės",
"HeaderDownloadQueue": "Parsisiuntimo eilė",
"HeaderEbookFiles": "Eknygos failai",
@@ -142,26 +147,22 @@
"HeaderManageTags": "Tvarkyti žymas",
"HeaderMapDetails": "Susieti detales",
"HeaderMatch": "Atitaikyti",
- "HeaderMetadataOrderOfPrecedence": "Metadata order of precedence",
"HeaderMetadataToEmbed": "Metaduomenys įterpimui",
"HeaderNewAccount": "Nauja paskyra",
"HeaderNewLibrary": "Nauja biblioteka",
"HeaderNotifications": "Pranešimai",
- "HeaderOpenIDConnectAuthentication": "OpenID Connect Authentication",
"HeaderOpenRSSFeed": "Atidaryti RSS srautą",
"HeaderOtherFiles": "Kiti failai",
- "HeaderPasswordAuthentication": "Password Authentication",
"HeaderPermissions": "Leidimai",
"HeaderPlayerQueue": "Grotuvo eilė",
"HeaderPlaylist": "Grojaraštis",
"HeaderPlaylistItems": "Grojaraščio elementai",
"HeaderPodcastsToAdd": "Pridėti tinklalaides",
"HeaderPreviewCover": "Peržiūrėti viršelį",
- "HeaderRemoveEpisode": "Pašalinti epizodą",
- "HeaderRemoveEpisodes": "Pašalinti {0} epizodus",
"HeaderRSSFeedGeneral": "RSS informacija",
"HeaderRSSFeedIsOpen": "RSS srautas yra atidarytas",
- "HeaderRSSFeeds": "RSS Feeds",
+ "HeaderRemoveEpisode": "Pašalinti epizodą",
+ "HeaderRemoveEpisodes": "Pašalinti {0} epizodus",
"HeaderSavedMediaProgress": "Išsaugota medijos pažanga",
"HeaderSchedule": "Tvarkaraštis",
"HeaderScheduleLibraryScans": "Nustatyti bibliotekų nuskaitymo tvarkaraštį",
@@ -186,28 +187,20 @@
"HeaderUpdateDetails": "Atnaujinti informaciją",
"HeaderUpdateLibrary": "Atnaujinti biblioteką",
"HeaderUsers": "Naudotojai",
- "HeaderYearReview": "Year {0} in Review",
"HeaderYourStats": "Jūsų statistika",
"LabelAbridged": "Santrauka",
- "LabelAbridgedChecked": "Abridged (checked)",
- "LabelAbridgedUnchecked": "Unabridged (unchecked)",
- "LabelAccessibleBy": "Accessible by",
"LabelAccountType": "Paskyros tipas",
"LabelAccountTypeAdmin": "Administratorius",
"LabelAccountTypeGuest": "Svečias",
"LabelAccountTypeUser": "Naudotojas",
"LabelActivity": "Veikla",
- "LabelAdded": "Pridėta",
- "LabelAddedAt": "Pridėta {0}",
"LabelAddToCollection": "Pridėti į kolekciją",
"LabelAddToCollectionBatch": "Pridėti {0} knygas į kolekciją",
"LabelAddToPlaylist": "Pridėti į grojaraštį",
"LabelAddToPlaylistBatch": "Pridėti {0} elementus į grojaraštį",
- "LabelAdminUsersOnly": "Admin users only",
+ "LabelAddedAt": "Pridėta {0}",
"LabelAll": "Visi",
"LabelAllUsers": "Visi naudotojai",
- "LabelAllUsersExcludingGuests": "All users excluding guests",
- "LabelAllUsersIncludingGuests": "All users including guests",
"LabelAlreadyInYourLibrary": "Jau yra jūsų bibliotekoje",
"LabelAppend": "Pridėti",
"LabelAuthor": "Autorius",
@@ -215,34 +208,23 @@
"LabelAuthorLastFirst": "Autorius (Pavardė, Vardas)",
"LabelAuthors": "Autoriai",
"LabelAutoDownloadEpisodes": "Automatiškai atsisiųsti epizodus",
- "LabelAutoFetchMetadata": "Auto Fetch Metadata",
- "LabelAutoFetchMetadataHelp": "Fetches metadata for title, author, and series to streamline uploading. Additional metadata may have to be matched after upload.",
- "LabelAutoLaunch": "Auto Launch",
- "LabelAutoLaunchDescription": "Redirect to the auth provider automatically when navigating to the login page (manual override path /login?autoLaunch=0)",
- "LabelAutoRegister": "Auto Register",
- "LabelAutoRegisterDescription": "Automatically create new users after logging in",
"LabelBackToUser": "Grįžti į naudotoją",
- "LabelBackupLocation": "Backup Location",
"LabelBackupsEnableAutomaticBackups": "Įjungti automatinį atsarginių kopijų kūrimą",
"LabelBackupsEnableAutomaticBackupsHelp": "Atsarginės kopijos bus išsaugotos /metadata/backups aplanke",
- "LabelBackupsMaxBackupSize": "Maksimalus atsarginių kopijų dydis (GB)",
+ "LabelBackupsMaxBackupSize": "Maksimalus atsarginių kopijų dydis (GB) (0 - neribotai)",
"LabelBackupsMaxBackupSizeHelp": "Jei konfigūruotas dydis viršijamas, atsarginės kopijos nebus sukurtos, kad būtų išvengta klaidingų konfigūracijų.",
"LabelBackupsNumberToKeep": "Laikytinų atsarginių kopijų skaičius",
"LabelBackupsNumberToKeepHelp": "Tik viena atsarginė kopija bus pašalinta vienu metu, todėl jei jau turite daugiau atsarginių kopijų nei nurodyta, turite jas pašalinti rankiniu būdu.",
"LabelBitrate": "Bitų sparta",
"LabelBooks": "Knygos",
- "LabelButtonText": "Button Text",
- "LabelByAuthor": "by {0}",
"LabelChangePassword": "Pakeisti slaptažodį",
"LabelChannels": "Kanalai",
+ "LabelChapterTitle": "Skyriaus pavadinimas",
"LabelChapters": "Skyriai",
"LabelChaptersFound": "rasti skyriai",
- "LabelChapterTitle": "Skyriaus pavadinimas",
- "LabelClickForMoreInfo": "Click for more info",
"LabelClosePlayer": "Uždaryti grotuvą",
"LabelCodec": "Kodekas",
"LabelCollapseSeries": "Suskleisti seriją",
- "LabelCollection": "Collection",
"LabelCollections": "Kolekcijos",
"LabelComplete": "Baigta",
"LabelConfirmPassword": "Patvirtinkite slaptažodį",
@@ -257,22 +239,16 @@
"LabelCurrently": "Šiuo metu:",
"LabelCustomCronExpression": "Nestandartinė Cron išraiška:",
"LabelDatetime": "Data ir laikas",
- "LabelDeleteFromFileSystemCheckbox": "Delete from file system (uncheck to only remove from database)",
"LabelDescription": "Aprašymas",
"LabelDeselectAll": "Išvalyti pasirinktus",
"LabelDevice": "Įrenginys",
"LabelDeviceInfo": "Įrenginio informacija",
- "LabelDeviceIsAvailableTo": "Device is available to...",
"LabelDirectory": "Katalogas",
"LabelDiscFromFilename": "Diskas pagal failo pavadinimą",
"LabelDiscFromMetadata": "Diskas pagal metaduomenis",
- "LabelDiscover": "Discover",
"LabelDownload": "Atsisiųsti",
"LabelDownloadNEpisodes": "Atsisiųsti {0} epizodų",
"LabelDuration": "Trukmė",
- "LabelDurationComparisonExactMatch": "(exact match)",
- "LabelDurationComparisonLonger": "({0} longer)",
- "LabelDurationComparisonShorter": "({0} shorter)",
"LabelDurationFound": "Rasta trukmė:",
"LabelEbook": "Elektroninė knyga",
"LabelEbooks": "Elektroninės knygos",
@@ -290,10 +266,7 @@
"LabelEpisodeType": "Epizodo tipas",
"LabelExample": "Pavyzdys",
"LabelExplicit": "Suaugusiems",
- "LabelExplicitChecked": "Explicit (checked)",
- "LabelExplicitUnchecked": "Not Explicit (unchecked)",
"LabelFeedURL": "Srauto URL",
- "LabelFetchingMetadata": "Fetching Metadata",
"LabelFile": "Failas",
"LabelFileBirthtime": "Failo kūrimo laikas",
"LabelFileModified": "Failo keitimo laikas",
@@ -303,25 +276,20 @@
"LabelFinished": "Baigta",
"LabelFolder": "Aplankas",
"LabelFolders": "Aplankai",
- "LabelFontBold": "Bold",
"LabelFontFamily": "Famiglia di font",
- "LabelFontItalic": "Italic",
"LabelFontScale": "Šrifto mastelis",
- "LabelFontStrikethrough": "Strikethrough",
"LabelFormat": "Formatas",
"LabelGenre": "Žanras",
"LabelGenres": "Žanrai",
"LabelHardDeleteFile": "Galutinai ištrinti failą",
"LabelHasEbook": "Turi e-knygą",
"LabelHasSupplementaryEbook": "Turi papildomą e-knygą",
- "LabelHighestPriority": "Highest priority",
"LabelHost": "Serveris",
"LabelHour": "Valanda",
"LabelIcon": "Piktograma",
- "LabelImageURLFromTheWeb": "Image URL from the web",
+ "LabelInProgress": "Vyksta",
"LabelIncludeInTracklist": "Įtraukti į takelių sąrašą",
"LabelIncomplete": "Nebaigta",
- "LabelInProgress": "Vyksta",
"LabelInterval": "Intervalas",
"LabelIntervalCustomDailyWeekly": "Pasirinktinis kasdieninės/savaitinės periodiškumas",
"LabelIntervalEvery12Hours": "Kas 12 valandų",
@@ -351,54 +319,40 @@
"LabelLimit": "Limitas",
"LabelLineSpacing": "Tarpas tarp eilučių",
"LabelListenAgain": "Klausytis iš naujo",
- "LabelLogLevelDebug": "Debug",
- "LabelLogLevelInfo": "Info",
- "LabelLogLevelWarn": "Warn",
"LabelLookForNewEpisodesAfterDate": "Ieškoti naujų epizodų po šios datos",
- "LabelLowestPriority": "Lowest Priority",
- "LabelMatchExistingUsersBy": "Match existing users by",
- "LabelMatchExistingUsersByDescription": "Used for connecting existing users. Once connected, users will be matched by a unique id from your SSO provider",
"LabelMediaPlayer": "Grotuvas",
"LabelMediaType": "Medijos tipas",
- "LabelMetadataOrderOfPrecedenceDescription": "Higher priority metadata sources will override lower priority metadata sources",
- "LabelMetadataProvider": "Metaduomenų tiekėjas",
"LabelMetaTag": "Meta žymė",
"LabelMetaTags": "Meta žymos",
+ "LabelMetadataProvider": "Metaduomenų tiekėjas",
"LabelMinute": "Minutė",
"LabelMissing": "Trūksta",
- "LabelMissingEbook": "Has no ebook",
- "LabelMissingSupplementaryEbook": "Has no supplementary ebook",
- "LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs",
- "LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is audiobookshelf://oauth, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (*) as the sole entry permits any URI.",
"LabelMore": "Daugiau",
"LabelMoreInfo": "Daugiau informacijos",
"LabelName": "Pavadinimas",
"LabelNarrator": "Skaitytojas",
"LabelNarrators": "Skaitytojai",
"LabelNew": "Nauja",
+ "LabelNewPassword": "Naujas slaptažodis",
"LabelNewestAuthors": "Naujausi autoriai",
"LabelNewestEpisodes": "Naujausi epizodai",
- "LabelNewPassword": "Naujas slaptažodis",
"LabelNextBackupDate": "Kitos atsarginės kopijos data",
"LabelNextScheduledRun": "Kito planuoto vykdymo data",
"LabelNoEpisodesSelected": "Nepasirinkti jokie epizodai",
- "LabelNotes": "Užrašai",
"LabelNotFinished": "Nebaigta",
+ "LabelNotStarted": "Nepasileista",
+ "LabelNotes": "Užrašai",
"LabelNotificationAppriseURL": "Pranešimo (Apprise) URL",
"LabelNotificationAvailableVariables": "Galimi kintamieji",
"LabelNotificationBodyTemplate": "Turinio šablonas",
"LabelNotificationEvent": "Pranešimo įvykis",
+ "LabelNotificationTitleTemplate": "Pavadinimo šablonas",
"LabelNotificationsMaxFailedAttempts": "Maksimalus nesėkmingų bandymų skaičius",
"LabelNotificationsMaxFailedAttemptsHelp": "Pranešimai bus išjungti, jei nepavyks jų išsiųsti nurodytą kartų",
"LabelNotificationsMaxQueueSize": "Maksimalus pranešimų eilių dydis",
"LabelNotificationsMaxQueueSizeHelp": "Įvykiai yra apriboti vienu įvykiu per sekundę. Įvykiai bus ignoruojami, jei eilė yra maksimalaus dydžio. Tai apsaugo nuo pranešimų šlamšto.",
- "LabelNotificationTitleTemplate": "Pavadinimo šablonas",
- "LabelNotStarted": "Nepasileista",
"LabelNumberOfBooks": "Knygų skaičius",
"LabelNumberOfEpisodes": "Epizodų skaičius",
- "LabelOpenIDAdvancedPermsClaimDescription": "Name of the OpenID claim that contains advanced permissions for user actions within the application which will apply to non-admin roles (if configured). If the claim is missing from the response, access to ABS will be denied. If a single option is missing, it will be treated as false. Ensure the identity provider's claim matches the expected structure:",
- "LabelOpenIDClaims": "Leave the following options empty to disable advanced group and permissions assignment, automatically assigning 'User' group then.",
- "LabelOpenIDGroupClaimDescription": "Name of the OpenID claim that contains a list of the user's groups. Commonly referred to as groups. If configured, the application will automatically assign roles based on the user's group memberships, provided that these groups are named case-insensitively 'admin', 'user', or 'guest' in the claim. The claim should contain a list, and if a user belongs to multiple groups, the application will assign the role corresponding to the highest level of access. If no group matches, access will be denied.",
"LabelOpenRSSFeed": "Atidaryti RSS srautą",
"LabelOverwrite": "Perrašyti",
"LabelPassword": "Slaptažodis",
@@ -410,14 +364,13 @@
"LabelPermissionsDownload": "Gali atsisiųsti",
"LabelPermissionsUpdate": "Gali atnaujinti",
"LabelPermissionsUpload": "Gali įkelti",
- "LabelPersonalYearReview": "Your Year in Review ({0})",
"LabelPhotoPathURL": "Nuotraukos kelias/URL",
- "LabelPlaylists": "Grojaraščiai",
"LabelPlayMethod": "Grojimo metodas",
+ "LabelPlaylists": "Grojaraščiai",
"LabelPodcast": "Tinklalaidė",
- "LabelPodcasts": "Tinklalaidės",
"LabelPodcastSearchRegion": "Podcast paieškos regionas",
"LabelPodcastType": "Tinklalaidės tipas",
+ "LabelPodcasts": "Tinklalaidės",
"LabelPort": "Prievadas",
"LabelPrefixesToIgnore": "Ignoruojami priešdėliai (didžiosios/mažosios nesvarbu)",
"LabelPreventIndexing": "Neleisti indeksuoti jūsų srauto „iTunes“ ir Google podcast kataloguose",
@@ -425,39 +378,34 @@
"LabelProgress": "Progresas",
"LabelProvider": "Tiekėjas",
"LabelPubDate": "Publikavimo data",
- "LabelPublisher": "Leidėjas",
"LabelPublishYear": "Leidimo metai",
- "LabelRead": "Skaityta",
- "LabelReadAgain": "Skaityti dar kartą",
- "LabelReadEbookWithoutProgress": "Skaityti e-knygą be pažangos saugojimo",
- "LabelRecentlyAdded": "Neseniai pridėta",
- "LabelRecentSeries": "Naujausios serijos",
- "LabelRecommended": "Rekomenduojama",
- "LabelRedo": "Redo",
- "LabelRegion": "Regionas",
- "LabelReleaseDate": "Išleidimo data",
- "LabelRemoveCover": "Pašalinti viršelį",
- "LabelRowsPerPage": "Rows per page",
+ "LabelPublisher": "Leidėjas",
"LabelRSSFeedCustomOwnerEmail": "Pasirinktinis savininko el. paštas",
"LabelRSSFeedCustomOwnerName": "Pasirinktinis savininko vardas",
"LabelRSSFeedOpen": "Atidarytas RSS srautas",
"LabelRSSFeedPreventIndexing": "Neleisti indeksuoti",
"LabelRSSFeedSlug": "RSS srauto identifikatorius",
"LabelRSSFeedURL": "RSS srauto URL",
+ "LabelRead": "Skaityta",
+ "LabelReadAgain": "Skaityti dar kartą",
+ "LabelReadEbookWithoutProgress": "Skaityti e-knygą be pažangos saugojimo",
+ "LabelRecentSeries": "Naujausios serijos",
+ "LabelRecentlyAdded": "Neseniai pridėta",
+ "LabelRecommended": "Rekomenduojama",
+ "LabelRegion": "Regionas",
+ "LabelReleaseDate": "Išleidimo data",
+ "LabelRemoveCover": "Pašalinti viršelį",
"LabelSearchTerm": "Paieškos žodis",
"LabelSearchTitle": "Ieškoti pavadinimo",
"LabelSearchTitleOrASIN": "Ieškoti pavadinimo arba ASIN",
"LabelSeason": "Sezonas",
- "LabelSelectAll": "Select all",
"LabelSelectAllEpisodes": "Pažymėti visus epizodus",
"LabelSelectEpisodesShowing": "Pažymėti {0} rodomus epizodus",
- "LabelSelectUsers": "Select users",
"LabelSendEbookToDevice": "Siųsti e-knygą į...",
"LabelSequence": "Seka",
"LabelSeries": "Serija",
"LabelSeriesName": "Serijos pavadinimas",
"LabelSeriesProgress": "Serijos progresas",
- "LabelServerYearReview": "Server Year in Review ({0})",
"LabelSetEbookAsPrimary": "Nustatyti kaip pagrindinę",
"LabelSetEbookAsSupplementary": "Nustatyti kaip papildomą",
"LabelSettingsAudiobooksOnly": "Tik garso knygos",
@@ -468,21 +416,14 @@
"LabelSettingsDisableWatcher": "Išjungti stebėtoją",
"LabelSettingsDisableWatcherForLibrary": "Išjungti aplankų stebėtoją bibliotekai",
"LabelSettingsDisableWatcherHelp": "Išjungia automatinį elementų pridėjimą/atnaujinimą, jei pastebėti failų pokyčiai. *Reikalingas serverio paleidimas iš naujo",
- "LabelSettingsEnableWatcher": "Enable Watcher",
- "LabelSettingsEnableWatcherForLibrary": "Enable folder watcher for library",
- "LabelSettingsEnableWatcherHelp": "Enables the automatic adding/updating of items when file changes are detected. *Requires server restart",
- "LabelSettingsEpubsAllowScriptedContent": "Allow scripted content in epubs",
- "LabelSettingsEpubsAllowScriptedContentHelp": "Allow epub files to execute scripts. It is recommended to keep this setting disabled unless you trust the source of the epub files.",
"LabelSettingsExperimentalFeatures": "Eksperimentiniai funkcionalumai",
"LabelSettingsExperimentalFeaturesHelp": "Funkcijos, kurios yra kuriamos ir laukiami jūsų komentarai. Spustelėkite, kad atidarytumėte „GitHub“ diskusiją.",
"LabelSettingsFindCovers": "Rasti viršelius",
- "LabelSettingsFindCoversHelp": "Jei jūsų audioknyga neturi įterpto viršelio arba viršelio paveikslėlio aplanko, skeneris bandys rasti viršelį. Pastaba: Tai padidins skenavimo trukmę.",
+ "LabelSettingsFindCoversHelp": "Jei jūsų audioknyga neturi įterpto viršelio arba viršelio paveikslėlio aplanke, bandyti rasti viršelį. Pastaba: Tai padidins skenavimo trukmę.",
"LabelSettingsHideSingleBookSeries": "Slėpti serijas, turinčias tik vieną knygą",
"LabelSettingsHideSingleBookSeriesHelp": "Serijos, turinčios tik vieną knygą, bus paslėptos nuo serijų puslapio ir pagrindinio puslapio lentynų.",
"LabelSettingsHomePageBookshelfView": "Naudoti pagrindinio puslapio knygų lentynų vaizdą",
"LabelSettingsLibraryBookshelfView": "Naudoti bibliotekos knygų lentynų vaizdą",
- "LabelSettingsOnlyShowLaterBooksInContinueSeries": "Skip earlier books in Continue Series",
- "LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "The Continue Series home page shelf shows the first book not started in series that have at least one book finished and no books in progress. Enabling this setting will continue series from the furthest completed book instead of the first book not started.",
"LabelSettingsParseSubtitles": "Analizuoti subtitrus",
"LabelSettingsParseSubtitlesHelp": "Išskleisti subtitrus iš audioknygos aplanko pavadinimų. Subtitrai turi būti atskirti brūkšniu \"-\" pavyzdžiui, \"Knygos pavadinimas - Čia yra subtitrai\" turi subtitrą \"Čia yra subtitrai\"",
"LabelSettingsPreferMatchedMetadata": "Pirmenybė atitaikytiems metaduomenis",
@@ -494,19 +435,17 @@
"LabelSettingsSquareBookCovers": "Naudoti kvadratinius knygos viršelius",
"LabelSettingsSquareBookCoversHelp": "Naudoti kvadratinius viršelius vietoj standartinių 1.6:1 knygų viršelių",
"LabelSettingsStoreCoversWithItem": "Saugoti viršelius su elementu",
- "LabelSettingsStoreCoversWithItemHelp": "Pagal nutylėjimą viršeliai saugomi /metadata/items aplanke, įjungus šią parinktį viršeliai bus saugomi jūsų bibliotekos elemento aplanke. Bus išsaugotas tik vienas „cover“ pavadinimo failas.",
+ "LabelSettingsStoreCoversWithItemHelp": "Pagal nutylėjimą viršeliai saugomi /metadata/items aplanke, įjungus šią parinktį viršeliai bus saugomi jūsų bibliotekos elemento aplanke. Bus išsaugotas tik vienas failas su \"cover\" pavadinimu.",
"LabelSettingsStoreMetadataWithItem": "Saugoti metaduomenis su elementu",
"LabelSettingsStoreMetadataWithItemHelp": "Pagal nutylėjimą metaduomenų failai saugomi /metadata/items aplanke, įjungus šią parinktį metaduomenų failai bus saugomi jūsų bibliotekos elemento aplanke",
"LabelSettingsTimeFormat": "Laiko formatas",
"LabelShowAll": "Rodyti viską",
- "LabelShowSeconds": "Show seconds",
"LabelSize": "Dydis",
"LabelSleepTimer": "Miego laikmatis",
- "LabelSlug": "Slug",
"LabelStart": "Pradėti",
+ "LabelStartTime": "Pradžios laikas",
"LabelStarted": "Pradėta",
"LabelStartedAt": "Pradėta",
- "LabelStartTime": "Pradžios laikas",
"LabelStatsAudioTracks": "Garsiniai takeliai",
"LabelStatsAuthors": "Autoriai",
"LabelStatsBestDay": "Geriausia diena",
@@ -529,10 +468,6 @@
"LabelTagsAccessibleToUser": "Žymos, pasiekiamos vartotojui",
"LabelTagsNotAccessibleToUser": "Žymos, nepasiekiamos vartotojui",
"LabelTasks": "Vykdomos užduotys",
- "LabelTextEditorBulletedList": "Bulleted list",
- "LabelTextEditorLink": "Link",
- "LabelTextEditorNumberedList": "Numbered list",
- "LabelTextEditorUnlink": "Unlink",
"LabelTheme": "Tema",
"LabelThemeDark": "Tamsi",
"LabelThemeLight": "Šviesi",
@@ -554,20 +489,17 @@
"LabelTrackFromMetadata": "Takelis iš metaduomenų",
"LabelTracks": "Takeliai",
"LabelTracksMultiTrack": "Keli takeliai",
- "LabelTracksNone": "No tracks",
"LabelTracksSingleTrack": "Vienas takelis",
"LabelType": "Tipas",
"LabelUnabridged": "Neprikurptas",
- "LabelUndo": "Undo",
"LabelUnknown": "Nežinoma",
"LabelUpdateCover": "Atnaujinti viršelį",
"LabelUpdateCoverHelp": "Leisti perrašyti esamus viršelius pasirinktoms knygoms, kai yra rasta atitikmenų",
- "LabelUpdatedAt": "Atnaujinta",
"LabelUpdateDetails": "Atnaujinti duomenis",
"LabelUpdateDetailsHelp": "Leisti perrašyti esamus duomenis pasirinktoms knygoms, kai yra rasta atitikmenų",
+ "LabelUpdatedAt": "Atnaujinta",
"LabelUploaderDragAndDrop": "Tempkite ir paleiskite failus ar aplankus",
"LabelUploaderDropFiles": "Nutempti failus",
- "LabelUploaderItemFetchMetadataHelp": "Automatically fetch title, author, and series",
"LabelUseChapterTrack": "Naudoti skyrių takelį",
"LabelUseFullTrack": "Naudoti visą takelį",
"LabelUser": "Vartotojas",
@@ -579,8 +511,6 @@
"LabelViewQueue": "Peržiūrėti grotuvo eilę",
"LabelVolume": "Garsumas",
"LabelWeekdaysToRun": "Dienos, kuriomis vykdyti",
- "LabelYearReviewHide": "Hide Year in Review",
- "LabelYearReviewShow": "See Year in Review",
"LabelYourAudiobookDuration": "Jūsų garso knygos trukmė",
"LabelYourBookmarks": "Jūsų skirtukai",
"LabelYourPlaylists": "Jūsų grojaraščiai",
@@ -590,8 +520,8 @@
"MessageBackupsDescription": "Atsarginės kopijos apima vartotojus, vartotojų pažangą, bibliotekos elemento informaciją, serverio nustatymus ir vaizdus, saugomus /metadata/items ir /metadata/authors. Atsarginės kopijos neįtraukia jokių failų, saugomų jūsų bibliotekos aplankuose.",
"MessageBatchQuickMatchDescription": "Greitas atitikmens rasti bandys pridėti trūkstamus viršelius ir metaduomenis pasirinktiems elementams. Įjunkite žemiau esančias parinktis, kad leistumėte Greitajam atitikmeniui perrašyti esamus viršelius ir/ar metaduomenis.",
"MessageBookshelfNoCollections": "Dar nepridėjote jokių kolekcijų",
- "MessageBookshelfNoResultsForFilter": "Rezultatų pagal filtrą \"{0}: {1}\" nėra",
"MessageBookshelfNoRSSFeeds": "Nėra atvertų RSS srautų",
+ "MessageBookshelfNoResultsForFilter": "Rezultatų pagal filtrą \"{0}: {1}\" nėra",
"MessageBookshelfNoSeries": "Neturite jokių serijų",
"MessageChapterEndIsAfter": "Skyriaus pabaiga yra po jūsų garso knygos pabaigos",
"MessageChapterErrorFirstNotZero": "Pirmasis skyrius turi prasidėti nuo 0",
@@ -599,26 +529,19 @@
"MessageChapterErrorStartLtPrev": "Netinkamas pradžios laikas. Turi būti didesnis arba lygus ankstesnio skyriaus pradžios laikui",
"MessageChapterStartIsAfter": "Skyriaus pradžia yra po jūsų garso knygos pabaigos",
"MessageCheckingCron": "Tikrinamas cron...",
- "MessageConfirmCloseFeed": "Are you sure you want to close this feed?",
"MessageConfirmDeleteBackup": "Ar tikrai norite ištrinti atsarginę kopiją, skirtą {0}?",
"MessageConfirmDeleteFile": "Tai ištrins failą iš jūsų failų sistemos. Ar tikrai?",
"MessageConfirmDeleteLibrary": "Ar tikrai norite visam laikui ištrinti biblioteką \"{0}\"?",
- "MessageConfirmDeleteLibraryItem": "This will delete the library item from the database and your file system. Are you sure?",
- "MessageConfirmDeleteLibraryItems": "This will delete {0} library items from the database and your file system. Are you sure?",
"MessageConfirmDeleteSession": "Ar tikrai norite ištrinti šią sesiją?",
"MessageConfirmForceReScan": "Ar tikrai norite priversti perskenavimą?",
"MessageConfirmMarkAllEpisodesFinished": "Ar tikrai norite pažymėti visus epizodus kaip užbaigtus?",
"MessageConfirmMarkAllEpisodesNotFinished": "Ar tikrai norite pažymėti visus epizodus kaip nebaigtus?",
"MessageConfirmMarkSeriesFinished": "Ar tikrai norite pažymėti visas knygas šioje serijoje kaip užbaigtas?",
"MessageConfirmMarkSeriesNotFinished": "Ar tikrai norite pažymėti visas knygas šioje serijoje kaip nebaigtas?",
- "MessageConfirmPurgeCache": "Purge cache will delete the entire directory at /metadata/cache.
Are you sure you want to remove the cache directory?",
- "MessageConfirmQuickEmbed": "Warning! Quick embed will not backup your audio files. Make sure that you have a backup of your audio files.
Would you like to continue?",
"MessageConfirmRemoveAllChapters": "Ar tikrai norite pašalinti visus skyrius?",
- "MessageConfirmRemoveAuthor": "Are you sure you want to remove author \"{0}\"?",
"MessageConfirmRemoveCollection": "Ar tikrai norite pašalinti kolekciją \"{0}\"?",
"MessageConfirmRemoveEpisode": "Ar tikrai norite pašalinti epizodą \"{0}\"?",
"MessageConfirmRemoveEpisodes": "Ar tikrai norite pašalinti {0} epizodus?",
- "MessageConfirmRemoveListeningSessions": "Are you sure you want to remove {0} listening sessions?",
"MessageConfirmRemoveNarrator": "Ar tikrai norite pašalinti skaitytoją \"{0}\"?",
"MessageConfirmRemovePlaylist": "Ar tikrai norite pašalinti savo grojaraštį \"{0}\"?",
"MessageConfirmRenameGenre": "Ar tikrai norite pervadinti žanrą \"{0}\" į \"{1}\" visiems elementams?",
@@ -627,13 +550,11 @@
"MessageConfirmRenameTag": "Ar tikrai norite pervadinti žymą \"{0}\" į \"{1}\" visiems elementams?",
"MessageConfirmRenameTagMergeNote": "Pastaba: ši žyma jau egzistuoja, todėl jos bus sujungtos.",
"MessageConfirmRenameTagWarning": "Įspėjimas! Panaši žyma jau egzistuoja \"{0}\".",
- "MessageConfirmReScanLibraryItems": "Are you sure you want to re-scan {0} items?",
"MessageConfirmSendEbookToDevice": "Ar tikrai norite nusiųsti {0} el. knygą \"{1}\" į įrenginį \"{2}\"?",
"MessageDownloadingEpisode": "Epizodas atsisiunčiamas",
"MessageDragFilesIntoTrackOrder": "Surikiuokite takelius vilkdami failus",
"MessageEmbedFinished": "Įterpimas baigtas!",
"MessageEpisodesQueuedForDownload": "{0} epizodai laukia atsisiuntimo",
- "MessageEreaderDevices": "To ensure delivery of ebooks, you may need to add the above email address as a valid sender for each device listed below.",
"MessageFeedURLWillBe": "Srauto URL bus {0}",
"MessageFetching": "Surenkama...",
"MessageForceReScanDescription": "skenuos visus failus lyg iš naujo. Garsinių failų ID3 žymos, OPF failai ir tekstiniai failai bus nuskenuoti kaip nauji.",
@@ -645,7 +566,6 @@
"MessageListeningSessionsInTheLastYear": "{0} klausymo sesijų per paskutinius metus",
"MessageLoading": "Kraunama...",
"MessageLoadingFolders": "Kraunami aplankai...",
- "MessageLogsDescription": "Logs are stored in /metadata/logs as JSON files. Crash logs are stored in /metadata/logs/crash_logs.txt.",
"MessageM4BFailed": "M4B Nepavyko!",
"MessageM4BFinished": "M4B Baigta!",
"MessageMapChapterTitles": "Susieti skyriaus pavadinimus su jūsų esamais garso knygos skyriais, neredaguojant laiko žymų",
@@ -681,10 +601,9 @@
"MessageNoSeries": "Serijų nėra",
"MessageNoTags": "Žymų nėra",
"MessageNoTasksRunning": "Nėra vykstančių užduočių",
- "MessageNotYetImplemented": "Dar neįgyvendinta",
- "MessageNoUpdateNecessary": "Atnaujinimai nereikalingi",
"MessageNoUpdatesWereNecessary": "Nereikalingi jokie atnaujinimai",
"MessageNoUserPlaylists": "Neturite grojaraščių",
+ "MessageNotYetImplemented": "Dar neįgyvendinta",
"MessageOr": "arba",
"MessagePauseChapter": "Pristabdyti skyriaus grojimą",
"MessagePlayChapter": "Paklausyti skyriaus pradžios",
@@ -700,7 +619,6 @@
"MessageRestoreBackupConfirm": "Ar tikrai norite atkurti atsarginę kopiją, sukurtą",
"MessageRestoreBackupWarning": "Atkurdami atsarginę kopiją perrašysite visą duomenų bazę, esančią /config ir viršelių vaizdus /metadata/items ir /metadata/authors.
Atsarginės kopijos nekeičia jokių failų jūsų bibliotekos aplankuose. Jei esate įgalinę serverio nustatymus, kad viršelio meną ir metaduomenis saugotumėte savo bibliotekos aplankuose, šie neperrašomi ar atkuriami.
Visi klientai, naudojantys jūsų serverį, bus automatiškai atnaujinti.",
"MessageSearchResultsFor": "Paieškos rezultatai „{0}“",
- "MessageSelected": "{0} selected",
"MessageServerCouldNotBeReached": "Nepavyko pasiekti serverio",
"MessageSetChaptersFromTracksDescription": "Nustatyti skyrius, naudojant kiekvieną garso failą kaip skyrių ir skyriaus pavadinimą kaip garso failo pavadinimą",
"MessageStartPlaybackAtTime": "Paleisti klausymą „{0}“ nuo {1}?",
@@ -726,11 +644,8 @@
"PlaceholderNewPlaylist": "Naujas grojaraščio pavadinimas",
"PlaceholderSearch": "Ieškoti..",
"PlaceholderSearchEpisode": "Ieškoti epizodo..",
- "ToastAccountUpdateFailed": "Paskyros atnaujinimas nepavyko",
"ToastAccountUpdateSuccess": "Paskyra atnaujinta",
- "ToastAuthorImageRemoveFailed": "Nepavyko pašalinti autoriaus paveiksliuko",
"ToastAuthorImageRemoveSuccess": "Autoriaus paveiksliukas pašalintas",
- "ToastAuthorUpdateFailed": "Nepavyko atnaujinti autoriaus",
"ToastAuthorUpdateMerged": "Autorius sujungtas",
"ToastAuthorUpdateSuccess": "Autorius atnaujintas",
"ToastAuthorUpdateSuccessNoImageFound": "Autorius atnaujintas (paveiksliukas nerastas)",
@@ -745,28 +660,22 @@
"ToastBatchUpdateSuccess": "Masinis atnaujinimas sėkmingas",
"ToastBookmarkCreateFailed": "Žymos sukurti nepavyko",
"ToastBookmarkCreateSuccess": "Žyma pridėta",
- "ToastBookmarkRemoveFailed": "Žymos pašalinti nepavyko",
"ToastBookmarkRemoveSuccess": "Žyma pašalinta",
- "ToastBookmarkUpdateFailed": "Žymos atnaujinti nepavyko",
"ToastBookmarkUpdateSuccess": "Žyma atnaujinta",
- "ToastCachePurgeFailed": "Failed to purge cache",
- "ToastCachePurgeSuccess": "Cache purged successfully",
"ToastChaptersHaveErrors": "Skyriai turi klaidų",
"ToastChaptersMustHaveTitles": "Skyriai turi turėti pavadinimus",
- "ToastCollectionItemsRemoveFailed": "Elementų pašalinti iš kolekcijos nepavyko",
+ "ToastChaptersRemoved": "Skyriai pašalinti",
+ "ToastCollectionItemsAddFailed": "Nepavyko pridėti į kolekciją",
+ "ToastCollectionItemsAddSuccess": "Pridėta į kolekciją",
"ToastCollectionItemsRemoveSuccess": "Elementai pašalinti iš kolekcijos",
- "ToastCollectionRemoveFailed": "Kolekcijos pašalinti nepavyko",
"ToastCollectionRemoveSuccess": "Kolekcija pašalinta",
- "ToastCollectionUpdateFailed": "Kolekcijos atnaujinti nepavyko",
"ToastCollectionUpdateSuccess": "Kolekcija atnaujinta",
- "ToastDeleteFileFailed": "Failed to delete file",
- "ToastDeleteFileSuccess": "File deleted",
- "ToastFailedToLoadData": "Failed to load data",
- "ToastItemCoverUpdateFailed": "Elemento viršelio atnaujinti nepavyko",
+ "ToastCoverUpdateFailed": "Viršelio atnaujinimas nepavyko",
+ "ToastDeviceTestEmailSuccess": "Bandomasis el. laiškas išsiųstas",
"ToastItemCoverUpdateSuccess": "Elemento viršelis atnaujintas",
- "ToastItemDetailsUpdateFailed": "Elemento detalių atnaujinti nepavyko",
+ "ToastItemDeletedFailed": "Nepavyko ištrinti",
+ "ToastItemDeletedSuccess": "Ištrinta",
"ToastItemDetailsUpdateSuccess": "Elemento detalės atnaujintos",
- "ToastItemDetailsUpdateUnneeded": "Elemento detalės atnaujinimas nereikalingas",
"ToastItemMarkedAsFinishedFailed": "Pažymėti kaip Baigta nepavyko",
"ToastItemMarkedAsFinishedSuccess": "Elementas pažymėtas kaip Baigta",
"ToastItemMarkedAsNotFinishedFailed": "Pažymėti kaip Nebaigta nepavyko",
@@ -777,34 +686,26 @@
"ToastLibraryDeleteSuccess": "Biblioteka ištrinta",
"ToastLibraryScanFailedToStart": "Nepavyko pradėti bibliotekos skenavimo",
"ToastLibraryScanStarted": "Bibliotekos skenavimas pradėtas",
- "ToastLibraryUpdateFailed": "Bibliotekos atnaujinti nepavyko",
"ToastLibraryUpdateSuccess": "Biblioteka \"{0}\" atnaujinta",
"ToastPlaylistCreateFailed": "Grojaraščio sukurti nepavyko",
"ToastPlaylistCreateSuccess": "Grojaraštis sukurtas",
- "ToastPlaylistRemoveFailed": "Grojaraščio pašalinti nepavyko",
"ToastPlaylistRemoveSuccess": "Grojaraštis pašalintas",
- "ToastPlaylistUpdateFailed": "Grojaraščio atnaujinti nepavyko",
"ToastPlaylistUpdateSuccess": "Grojaraštis atnaujintas",
"ToastPodcastCreateFailed": "Tinklalaidės sukurti nepavyko",
"ToastPodcastCreateSuccess": "Tinklalaidė sėkmingai sukurta",
- "ToastRemoveItemFromCollectionFailed": "Elemento pašalinti iš kolekcijos nepavyko",
- "ToastRemoveItemFromCollectionSuccess": "Elementas pašalintas iš kolekcijos",
"ToastRSSFeedCloseFailed": "RSS srauto uždaryti nepavyko",
"ToastRSSFeedCloseSuccess": "RSS srautas uždarytas",
+ "ToastRemoveItemFromCollectionFailed": "Elemento pašalinti iš kolekcijos nepavyko",
+ "ToastRemoveItemFromCollectionSuccess": "Elementas pašalintas iš kolekcijos",
"ToastSendEbookToDeviceFailed": "Nepavyko nusiųsti e-knygos į įrenginį",
"ToastSendEbookToDeviceSuccess": "E-knyga išsiųsta į įrenginį \"{0}\"",
"ToastSeriesUpdateFailed": "Serijos atnaujinti nepavyko",
"ToastSeriesUpdateSuccess": "Serijos atnaujintos",
- "ToastServerSettingsUpdateFailed": "Failed to update server settings",
- "ToastServerSettingsUpdateSuccess": "Server settings updated",
"ToastSessionDeleteFailed": "Sesijos ištrinti nepavyko",
"ToastSessionDeleteSuccess": "Sesija ištrinta",
"ToastSocketConnected": "Serveris prijungtas",
"ToastSocketDisconnected": "Severis atjungtas",
"ToastSocketFailedToConnect": "Nepavyko prisijungti prie serverio",
- "ToastSortingPrefixesEmptyError": "Must have at least 1 sorting prefix",
- "ToastSortingPrefixesUpdateFailed": "Failed to update sorting prefixes",
- "ToastSortingPrefixesUpdateSuccess": "Sorting prefixes updated ({0} items)",
"ToastUserDeleteFailed": "Nepavyko ištrinti naudotojo",
"ToastUserDeleteSuccess": "Naudotojas ištrintas"
-}
\ No newline at end of file
+}
diff --git a/client/strings/nl.json b/client/strings/nl.json
index 28c3ada1c..bc5a40ca2 100644
--- a/client/strings/nl.json
+++ b/client/strings/nl.json
@@ -1,14 +1,15 @@
{
"ButtonAdd": "Toevoegen",
"ButtonAddChapters": "Hoofdstukken toevoegen",
- "ButtonAddDevice": "Add Device",
- "ButtonAddLibrary": "Add Library",
+ "ButtonAddDevice": "Toestel toevoegen",
+ "ButtonAddLibrary": "Bibliotheek toevoegen",
"ButtonAddPodcasts": "Podcasts toevoegen",
- "ButtonAddUser": "Add User",
+ "ButtonAddUser": "Gebruiker toevoegen",
"ButtonAddYourFirstLibrary": "Voeg je eerste bibliotheek toe",
"ButtonApply": "Pas toe",
"ButtonApplyChapters": "Hoofdstukken toepassen",
"ButtonAuthors": "Auteurs",
+ "ButtonBack": "Terug",
"ButtonBrowseForFolder": "Bladeren naar map",
"ButtonCancel": "Annuleren",
"ButtonCancelEncode": "Encoding annuleren",
@@ -18,6 +19,7 @@
"ButtonChooseFiles": "Bestanden kiezen",
"ButtonClearFilter": "Filter verwijderen",
"ButtonCloseFeed": "Feed sluiten",
+ "ButtonCloseSession": "Sluit Sessie",
"ButtonCollections": "Collecties",
"ButtonConfigureScanner": "Configureer scanner",
"ButtonCreate": "Creëer",
@@ -27,13 +29,16 @@
"ButtonEdit": "Wijzig",
"ButtonEditChapters": "Hoofdstukken wijzigen",
"ButtonEditPodcast": "Podcast wijzigen",
+ "ButtonEnable": "Aanzetten",
+ "ButtonFireAndFail": "Fire and Fail",
+ "ButtonFireOnTest": "Fire onTest event",
"ButtonForceReScan": "Forceer nieuwe scan",
"ButtonFullPath": "Volledig pad",
"ButtonHide": "Verberg",
- "ButtonHome": "Home",
- "ButtonIssues": "Issues",
- "ButtonJumpBackward": "Jump Backward",
- "ButtonJumpForward": "Jump Forward",
+ "ButtonHome": "Thuis",
+ "ButtonIssues": "Problemen",
+ "ButtonJumpBackward": "Spring achteruit",
+ "ButtonJumpForward": "Spring vooruit",
"ButtonLatest": "Meest recent",
"ButtonLibrary": "Bibliotheek",
"ButtonLogout": "Log uit",
@@ -43,53 +48,59 @@
"ButtonMatchAllAuthors": "Alle auteurs matchen",
"ButtonMatchBooks": "Alle boeken matchen",
"ButtonNevermind": "Laat maar",
- "ButtonNext": "Next",
- "ButtonNextChapter": "Next Chapter",
+ "ButtonNext": "Volgende",
+ "ButtonNextChapter": "Volgend hoofdstuk",
+ "ButtonNextItemInQueue": "Volgend Item in Wachtrij",
"ButtonOk": "Ok",
"ButtonOpenFeed": "Feed openen",
"ButtonOpenManager": "Manager openen",
- "ButtonPause": "Pause",
+ "ButtonPause": "Pauze",
"ButtonPlay": "Afspelen",
+ "ButtonPlayAll": "Alles Afspelen",
"ButtonPlaying": "Speelt",
"ButtonPlaylists": "Afspeellijsten",
- "ButtonPrevious": "Previous",
- "ButtonPreviousChapter": "Previous Chapter",
+ "ButtonPrevious": "Vorige",
+ "ButtonPreviousChapter": "Vorig hoofdstuk",
+ "ButtonProbeAudioFile": "Onderzoek Audio Bestand",
"ButtonPurgeAllCache": "Volledige cache legen",
"ButtonPurgeItemsCache": "Onderdelen-cache legen",
- "ButtonPurgeMediaProgress": "Mediavoortgang legen",
"ButtonQueueAddItem": "In wachtrij zetten",
"ButtonQueueRemoveItem": "Uit wachtrij verwijderen",
+ "ButtonQuickEmbed": "Snel Embedden",
+ "ButtonQuickEmbedMetadata": "Snel Metadata Insluiten",
"ButtonQuickMatch": "Snelle match",
+ "ButtonReScan": "Nieuwe scan",
"ButtonRead": "Lees",
- "ButtonReadLess": "Read less",
- "ButtonReadMore": "Read more",
- "ButtonRefresh": "Refresh",
+ "ButtonReadLess": "Lees minder",
+ "ButtonReadMore": "Lees meer",
+ "ButtonRefresh": "Verversen",
"ButtonRemove": "Verwijder",
"ButtonRemoveAll": "Alles verwijderen",
"ButtonRemoveAllLibraryItems": "Verwijder volledige bibliotheekinhoud",
"ButtonRemoveFromContinueListening": "Vewijder uit Verder luisteren",
- "ButtonRemoveFromContinueReading": "Remove from Continue Reading",
+ "ButtonRemoveFromContinueReading": "Verwijder van Verder luisteren",
"ButtonRemoveSeriesFromContinueSeries": "Verwijder serie uit Serie vervolgen",
- "ButtonReScan": "Nieuwe scan",
- "ButtonReset": "Reset",
- "ButtonResetToDefault": "Reset to default",
+ "ButtonReset": "Opnieuw Instellen",
+ "ButtonResetToDefault": "Standaardwaarden Terugzetten",
"ButtonRestore": "Herstel",
"ButtonSave": "Opslaan",
"ButtonSaveAndClose": "Opslaan & sluiten",
"ButtonSaveTracklist": "Afspeellijst opslaan",
- "ButtonScan": "Scan",
+ "ButtonScan": "Scannen",
"ButtonScanLibrary": "Scan bibliotheek",
"ButtonSearch": "Zoeken",
"ButtonSelectFolderPath": "Maplocatie selecteren",
"ButtonSeries": "Series",
"ButtonSetChaptersFromTracks": "Maak hoofdstukken op basis van tracks",
- "ButtonShare": "Share",
+ "ButtonShare": "Deel",
"ButtonShiftTimes": "Tijden verschuiven",
"ButtonShow": "Toon",
"ButtonStartM4BEncode": "Start M4B-encoding",
"ButtonStartMetadataEmbed": "Start insluiten metadata",
+ "ButtonStats": "Statistieken",
"ButtonSubmit": "Indienen",
- "ButtonTest": "Test",
+ "ButtonTest": "Testen",
+ "ButtonUnlinkOpenId": "OpenID Ontkoppelen",
"ButtonUpload": "Upload",
"ButtonUploadBackup": "Upload back-up",
"ButtonUploadCover": "Upload cover",
@@ -98,27 +109,29 @@
"ButtonUserEdit": "Wijzig gebruiker {0}",
"ButtonViewAll": "Toon alle",
"ButtonYes": "Ja",
- "ErrorUploadFetchMetadataAPI": "Error fetching metadata",
- "ErrorUploadFetchMetadataNoResults": "Could not fetch metadata - try updating title and/or author",
- "ErrorUploadLacksTitle": "Must have a title",
+ "ErrorUploadFetchMetadataAPI": "Error metadata ophalen",
+ "ErrorUploadFetchMetadataNoResults": "Kan metadata niet ophalen - probeer de titel en/of auteur te updaten",
+ "ErrorUploadLacksTitle": "Moet een titel hebben",
"HeaderAccount": "Account",
+ "HeaderAddCustomMetadataProvider": "Aangepaste Metadataprovider Toevoegen",
"HeaderAdvanced": "Geavanceerd",
"HeaderAppriseNotificationSettings": "Apprise-notificatie instellingen",
- "HeaderAudiobookTools": "Audioboekbestandbeheer tools",
"HeaderAudioTracks": "Audiotracks",
- "HeaderAuthentication": "Authentication",
+ "HeaderAudiobookTools": "Audioboekbestandbeheer tools",
+ "HeaderAuthentication": "Authenticatie",
"HeaderBackups": "Back-ups",
"HeaderChangePassword": "Wachtwoord wijzigen",
"HeaderChapters": "Hoofdstukken",
"HeaderChooseAFolder": "Map kiezen",
"HeaderCollection": "Collectie",
"HeaderCollectionItems": "Collectie-objecten",
- "HeaderCover": "Cover",
+ "HeaderCover": "Omslag",
"HeaderCurrentDownloads": "Huidige downloads",
- "HeaderCustomMetadataProviders": "Custom Metadata Providers",
+ "HeaderCustomMessageOnLogin": "Aangepast Bericht bij Aanmelden",
+ "HeaderCustomMetadataProviders": "Aangepaste Metadata Providers",
"HeaderDetails": "Details",
"HeaderDownloadQueue": "Download-wachtrij",
- "HeaderEbookFiles": "Ebook Files",
+ "HeaderEbookFiles": "Ebook bestanden",
"HeaderEmail": "E-mail",
"HeaderEmailSettings": "E-mail instellingen",
"HeaderEpisodes": "Afleveringen",
@@ -136,34 +149,39 @@
"HeaderLibraryStats": "Bibliotheekstatistieken",
"HeaderListeningSessions": "Luistersessies",
"HeaderListeningStats": "Luisterstatistieken",
- "HeaderLogin": "Login",
- "HeaderLogs": "Logs",
+ "HeaderLogin": "Aanmelden",
+ "HeaderLogs": "Logboek",
"HeaderManageGenres": "Genres beheren",
"HeaderManageTags": "Tags beheren",
"HeaderMapDetails": "Map details",
- "HeaderMatch": "Match",
- "HeaderMetadataOrderOfPrecedence": "Metadata order of precedence",
+ "HeaderMatch": "Vergelijken",
+ "HeaderMetadataOrderOfPrecedence": "Metadata volgorde",
"HeaderMetadataToEmbed": "In te sluiten metadata",
"HeaderNewAccount": "Nieuwe account",
"HeaderNewLibrary": "Nieuwe bibliotheek",
+ "HeaderNotificationCreate": "Notificatie Aanmaken",
+ "HeaderNotificationUpdate": "Update Notificatie",
"HeaderNotifications": "Notificaties",
- "HeaderOpenIDConnectAuthentication": "OpenID Connect Authentication",
+ "HeaderOpenIDConnectAuthentication": "OpenID Connect Authenticatie",
+ "HeaderOpenListeningSessions": "Open Luistersessies",
"HeaderOpenRSSFeed": "Open RSS-feed",
"HeaderOtherFiles": "Andere bestanden",
- "HeaderPasswordAuthentication": "Password Authentication",
+ "HeaderPasswordAuthentication": "Wachtwoord Authenticatie",
"HeaderPermissions": "Toestemmingen",
"HeaderPlayerQueue": "Afspeelwachtrij",
+ "HeaderPlayerSettings": "Speler Instellingen",
"HeaderPlaylist": "Afspeellijst",
"HeaderPlaylistItems": "Onderdelen in afspeellijst",
"HeaderPodcastsToAdd": "Toe te voegen podcasts",
"HeaderPreviewCover": "Preview cover",
- "HeaderRemoveEpisode": "Aflevering verwijderen",
- "HeaderRemoveEpisodes": "Verwijder {0} afleveringen",
"HeaderRSSFeedGeneral": "RSS-details",
"HeaderRSSFeedIsOpen": "RSS-feed is open",
"HeaderRSSFeeds": "RSS-feeds",
+ "HeaderRemoveEpisode": "Aflevering verwijderen",
+ "HeaderRemoveEpisodes": "Verwijder {0} afleveringen",
"HeaderSavedMediaProgress": "Opgeslagen mediavoortgang",
"HeaderSchedule": "Schema",
+ "HeaderScheduleEpisodeDownloads": "Automatische afleveringsdownloads plannen",
"HeaderScheduleLibraryScans": "Schema automatische bibliotheekscans",
"HeaderSession": "Sessie",
"HeaderSetBackupSchedule": "Kies schema voor back-up",
@@ -180,76 +198,85 @@
"HeaderStatsTop10Authors": "Top 10 auteurs",
"HeaderStatsTop5Genres": "Top 5 genres",
"HeaderTableOfContents": "Inhoudsopgave",
- "HeaderTools": "Tools",
+ "HeaderTools": "Gereedschap",
"HeaderUpdateAccount": "Account bijwerken",
"HeaderUpdateAuthor": "Auteur bijwerken",
"HeaderUpdateDetails": "Details bijwerken",
"HeaderUpdateLibrary": "Bibliotheek bijwerken",
"HeaderUsers": "Gebruikers",
- "HeaderYearReview": "Year {0} in Review",
+ "HeaderYearReview": "Jaar {0} in Review",
"HeaderYourStats": "Je statistieken",
"LabelAbridged": "Verkort",
- "LabelAbridgedChecked": "Abridged (checked)",
- "LabelAbridgedUnchecked": "Unabridged (unchecked)",
- "LabelAccessibleBy": "Accessible by",
+ "LabelAbridgedChecked": "Verkort (gechecked)",
+ "LabelAbridgedUnchecked": "Onverkort (niet gechecked)",
+ "LabelAccessibleBy": "Toegankelijk door",
"LabelAccountType": "Accounttype",
"LabelAccountTypeAdmin": "Beheerder",
"LabelAccountTypeGuest": "Gast",
"LabelAccountTypeUser": "Gebruiker",
"LabelActivity": "Activiteit",
- "LabelAdded": "Toegevoegd",
- "LabelAddedAt": "Toegevoegd op",
"LabelAddToCollection": "Toevoegen aan collectie",
"LabelAddToCollectionBatch": "{0} boeken toevoegen aan collectie",
"LabelAddToPlaylist": "Toevoegen aan afspeellijst",
"LabelAddToPlaylistBatch": "{0} onderdelen toevoegen aan afspeellijst",
- "LabelAdminUsersOnly": "Admin users only",
+ "LabelAddedAt": "Toegevoegd op",
+ "LabelAddedDate": "Toegevoegd {0}",
+ "LabelAdminUsersOnly": "Enkel Admin gebruikers",
"LabelAll": "Alle",
"LabelAllUsers": "Alle gebruikers",
- "LabelAllUsersExcludingGuests": "All users excluding guests",
- "LabelAllUsersIncludingGuests": "All users including guests",
+ "LabelAllUsersExcludingGuests": "Alle gebruikers exclusief gasten",
+ "LabelAllUsersIncludingGuests": "Alle gebruikers inclusief gasten",
"LabelAlreadyInYourLibrary": "Reeds in je bibliotheek",
+ "LabelApiToken": "API Token",
"LabelAppend": "Achteraan toevoegen",
+ "LabelAudioBitrate": "Audio Bitrate (b.v. 128k)",
+ "LabelAudioChannels": "Audio Kanalen (1 of 2)",
+ "LabelAudioCodec": "Audio Codec",
"LabelAuthor": "Auteur",
"LabelAuthorFirstLast": "Auteur (Voornaam Achternaam)",
"LabelAuthorLastFirst": "Auteur (Achternaam, Voornaam)",
"LabelAuthors": "Auteurs",
"LabelAutoDownloadEpisodes": "Afleveringen automatisch downloaden",
- "LabelAutoFetchMetadata": "Auto Fetch Metadata",
- "LabelAutoFetchMetadataHelp": "Fetches metadata for title, author, and series to streamline uploading. Additional metadata may have to be matched after upload.",
- "LabelAutoLaunch": "Auto Launch",
- "LabelAutoLaunchDescription": "Redirect to the auth provider automatically when navigating to the login page (manual override path /login?autoLaunch=0)",
- "LabelAutoRegister": "Auto Register",
- "LabelAutoRegisterDescription": "Automatically create new users after logging in",
+ "LabelAutoFetchMetadata": "Automatisch Metadata Ophalen",
+ "LabelAutoFetchMetadataHelp": "Haalt metadata op voor titel, auteur en serie om het uploaden te stroomlijnen. Aanvullende metadata moet mogelijk worden gematcht na het uploaden.",
+ "LabelAutoLaunch": "Automatisch Openen",
+ "LabelAutoLaunchDescription": "Automatisch doorverwijzen naar de auth-provider bij het navigeren naar de inlogpagina (handmatig pad /login?autoLaunch=0)",
+ "LabelAutoRegister": "Automatisch Registreren",
+ "LabelAutoRegisterDescription": "Automatisch nieuwe gebruikers aanmaken na inloggen",
"LabelBackToUser": "Terug naar gebruiker",
+ "LabelBackupAudioFiles": "Back-up audiobestanden",
"LabelBackupLocation": "Back-up locatie",
"LabelBackupsEnableAutomaticBackups": "Automatische back-ups inschakelen",
"LabelBackupsEnableAutomaticBackupsHelp": "Back-ups opgeslagen in /metadata/backups",
- "LabelBackupsMaxBackupSize": "Maximale back-up-grootte (in GB)",
+ "LabelBackupsMaxBackupSize": "Maximale back-up-grootte (in GB) (0 voor ongelimiteerd)",
"LabelBackupsMaxBackupSizeHelp": "Als een beveiliging tegen verkeerde instelling, zullen back-up mislukken als ze de ingestelde grootte overschrijden.",
"LabelBackupsNumberToKeep": "Aantal te bewaren back-ups",
"LabelBackupsNumberToKeepHelp": "Er wordt slechts 1 back-up per keer verwijderd, dus als je reeds meer back-ups dan dit hebt moet je ze handmatig verwijderen.",
"LabelBitrate": "Bitrate",
+ "LabelBonus": "Bonus",
"LabelBooks": "Boeken",
- "LabelButtonText": "Button Text",
- "LabelByAuthor": "by {0}",
+ "LabelButtonText": "Knop Tekst",
+ "LabelByAuthor": "Door {0}",
"LabelChangePassword": "Wachtwoord wijzigen",
"LabelChannels": "Kanalen",
+ "LabelChapterCount": "{0} Hoofdstukken",
+ "LabelChapterTitle": "Hoofdstuktitel",
"LabelChapters": "Hoofdstukken",
"LabelChaptersFound": "Hoofdstukken gevonden",
- "LabelChapterTitle": "Hoofdstuktitel",
- "LabelClickForMoreInfo": "Click for more info",
+ "LabelClickForMoreInfo": "Klik voor meer informatie",
+ "LabelClickToUseCurrentValue": "Klik om huidige waarde te gebruiken",
"LabelClosePlayer": "Sluit speler",
"LabelCodec": "Codec",
"LabelCollapseSeries": "Series inklappen",
- "LabelCollection": "Collection",
+ "LabelCollapseSubSeries": "Subserie samenvouwen",
+ "LabelCollection": "Collectie",
"LabelCollections": "Collecties",
"LabelComplete": "Compleet",
"LabelConfirmPassword": "Bevestig wachtwoord",
- "LabelContinueListening": "Verder luisteren",
- "LabelContinueReading": "Verder luisteren",
- "LabelContinueSeries": "Ga verder met serie",
- "LabelCover": "Cover",
+ "LabelContinueListening": "Verder Luisteren",
+ "LabelContinueReading": "Verder lezen",
+ "LabelContinueSeries": "Doorgaan met Serie",
+ "LabelCover": "Omslag",
"LabelCoverImageURL": "Coverafbeelding URL",
"LabelCreatedAt": "Gecreëerd op",
"LabelCronExpression": "Cron-uitdrukking",
@@ -257,71 +284,98 @@
"LabelCurrently": "Op dit moment:",
"LabelCustomCronExpression": "Aangepaste Cron-uitdrukking:",
"LabelDatetime": "Datum-tijd",
- "LabelDeleteFromFileSystemCheckbox": "Delete from file system (uncheck to only remove from database)",
+ "LabelDays": "Dagen",
+ "LabelDeleteFromFileSystemCheckbox": "Verwijderen uit bestandssysteem (uncheck om alleen uit database te verwijderen)",
"LabelDescription": "Beschrijving",
"LabelDeselectAll": "Deselecteer alle",
"LabelDevice": "Apparaat",
"LabelDeviceInfo": "Apparaat info",
- "LabelDeviceIsAvailableTo": "Device is available to...",
+ "LabelDeviceIsAvailableTo": "Apparaat is beschikbaar voor...",
"LabelDirectory": "Map",
"LabelDiscFromFilename": "Schijf uit bestandsnaam",
"LabelDiscFromMetadata": "Schijf uit metadata",
- "LabelDiscover": "Ontdek",
+ "LabelDiscover": "Ontdekken",
"LabelDownload": "Download",
- "LabelDownloadNEpisodes": "Download {0} episodes",
+ "LabelDownloadNEpisodes": "Download {0} afleveringen",
"LabelDuration": "Duur",
- "LabelDurationComparisonExactMatch": "(exact match)",
- "LabelDurationComparisonLonger": "({0} longer)",
- "LabelDurationComparisonShorter": "({0} shorter)",
+ "LabelDurationComparisonExactMatch": "(exacte overeenkomst)",
+ "LabelDurationComparisonLonger": "({0} langer)",
+ "LabelDurationComparisonShorter": "({0} korter)",
"LabelDurationFound": "Gevonden duur:",
"LabelEbook": "Ebook",
- "LabelEbooks": "Ebooks",
+ "LabelEbooks": "Eboeken",
"LabelEdit": "Wijzig",
"LabelEmail": "Email",
"LabelEmailSettingsFromAddress": "Van-adres",
+ "LabelEmailSettingsRejectUnauthorized": "Ongeautoriseerde certificaten afwijzen",
+ "LabelEmailSettingsRejectUnauthorizedHelp": "Het uitschakelen van SSL-certificaatvalidatie kan uw verbinding blootstellen aan beveiligingsrisico's, zoals man-in-the-middle-aanvallen. Schakel deze optie alleen uit als u de implicaties begrijpt en de mailserver waarmee u verbinding maakt vertrouwt.",
"LabelEmailSettingsSecure": "Veilig",
"LabelEmailSettingsSecureHelp": "Als 'waar', dan gebruikt de verbinding TLS om met de server te verbinden. Als 'onwaar', dan wordt TLS gebruikt als de server de STARTTLS-extensie ondersteunt. In de meeste gevallen kies je voor 'waar' verbindt met poort 465. Voo poort 587 of 25, laat op 'onwaar'. (van nodemailer.com/smtp/#authentication)",
"LabelEmailSettingsTestAddress": "Test-adres",
"LabelEmbeddedCover": "Ingesloten cover",
"LabelEnable": "Inschakelen",
+ "LabelEncodingBackupLocation": "Er wordt een back-up van uw originele audiobestanden opgeslagen in:",
+ "LabelEncodingChaptersNotEmbedded": "Hoofdstukken zijn niet ingesloten in audioboeken met meerdere sporen.",
+ "LabelEncodingClearItemCache": "Zorg ervoor dat u de cache van items regelmatig wist.",
+ "LabelEncodingFinishedM4B": "Een voltooide M4B wordt in uw audioboekfolder geplaatst in:",
+ "LabelEncodingInfoEmbedded": "Metagegevens worden ingesloten in de audiotracks in uw audioboekmap.",
+ "LabelEncodingStartedNavigation": "Eenmaal de taak is gestart kan u weg navigeren van deze pagina.",
+ "LabelEncodingTimeWarning": "Encoding kan tot 30 minuten duren.",
+ "LabelEncodingWarningAdvancedSettings": "Waarschuwing: update deze instellingen niet tenzij u bekend bent met de coderingsopties van ffmpeg.",
+ "LabelEncodingWatcherDisabled": "Als u de watcher hebt uitgeschakeld, moet u het audioboek daarna opnieuw scannen.",
"LabelEnd": "Einde",
+ "LabelEndOfChapter": "Einde van het Hoofdstuk",
"LabelEpisode": "Aflevering",
+ "LabelEpisodeNotLinkedToRssFeed": "Aflevering niet gelinkt aan RSS feed",
+ "LabelEpisodeNumber": "Aflevering #{0}",
"LabelEpisodeTitle": "Afleveringtitel",
"LabelEpisodeType": "Afleveringtype",
+ "LabelEpisodeUrlFromRssFeed": "Aflevering URL van RSS feed",
+ "LabelEpisodes": "Afleveringen",
+ "LabelEpisodic": "Episodisch",
"LabelExample": "Voorbeeld",
+ "LabelExpandSeries": "Serie Uitvouwen",
+ "LabelExpandSubSeries": "Subserie Uitvouwen",
"LabelExplicit": "Expliciet",
- "LabelExplicitChecked": "Explicit (checked)",
- "LabelExplicitUnchecked": "Not Explicit (unchecked)",
+ "LabelExplicitChecked": "Expliciet (gechecked)",
+ "LabelExplicitUnchecked": "Niet Expliciet (niet gechecked)",
+ "LabelExportOPML": "OPML exporteren",
"LabelFeedURL": "Feed URL",
- "LabelFetchingMetadata": "Fetching Metadata",
+ "LabelFetchingMetadata": "Metadata ophalen",
"LabelFile": "Bestand",
"LabelFileBirthtime": "Aanmaaktijd bestand",
+ "LabelFileBornDate": "Geboren {0}",
"LabelFileModified": "Bestand gewijzigd",
+ "LabelFileModifiedDate": "Gewijzigd {0}",
"LabelFilename": "Bestandsnaam",
"LabelFilterByUser": "Filter op gebruiker",
"LabelFindEpisodes": "Zoek afleveringen",
"LabelFinished": "Voltooid",
"LabelFolder": "Map",
"LabelFolders": "Mappen",
- "LabelFontBold": "Bold",
+ "LabelFontBold": "Vetgedrukt",
+ "LabelFontBoldness": "Font Boldness",
"LabelFontFamily": "Lettertypefamilie",
- "LabelFontItalic": "Italic",
+ "LabelFontItalic": "Cursief",
"LabelFontScale": "Lettertype schaal",
- "LabelFontStrikethrough": "Strikethrough",
+ "LabelFontStrikethrough": "Doorgestreept",
"LabelFormat": "Formaat",
+ "LabelFull": "Vol",
"LabelGenre": "Genre",
"LabelGenres": "Genres",
"LabelHardDeleteFile": "Hard-delete bestand",
- "LabelHasEbook": "Heeft ebook",
- "LabelHasSupplementaryEbook": "Heeft supplementair ebook",
- "LabelHighestPriority": "Highest priority",
+ "LabelHasEbook": "Heeft Ebook",
+ "LabelHasSupplementaryEbook": "Heeft aanvullend Ebook",
+ "LabelHideSubtitles": "Ondertitels Verstoppen",
+ "LabelHighestPriority": "Hoogste Prioriteit",
"LabelHost": "Host",
"LabelHour": "Uur",
+ "LabelHours": "Uren",
"LabelIcon": "Icoon",
- "LabelImageURLFromTheWeb": "Image URL from the web",
+ "LabelImageURLFromTheWeb": "Afbeelding URL van web",
+ "LabelInProgress": "Bezig",
"LabelIncludeInTracklist": "Includeer in tracklijst",
"LabelIncomplete": "Incompleet",
- "LabelInProgress": "Bezig",
"LabelInterval": "Interval",
"LabelIntervalCustomDailyWeekly": "Aangepast dagelijks/wekelijks",
"LabelIntervalEvery12Hours": "Iedere 12 uur",
@@ -333,8 +387,11 @@
"LabelIntervalEveryHour": "Ieder uur",
"LabelInvert": "Omdraaien",
"LabelItem": "Onderdeel",
+ "LabelJumpBackwardAmount": "Terugspoelen hoeveelheid",
+ "LabelJumpForwardAmount": "Vooruitspoelen hoeveelheid",
"LabelLanguage": "Taal",
"LabelLanguageDefaultServer": "Standaard servertaal",
+ "LabelLanguages": "Talen",
"LabelLastBookAdded": "Laatst toegevoegde boek",
"LabelLastBookUpdated": "Laatst bijgewerkte boek",
"LabelLastSeen": "Laatst gezien",
@@ -346,63 +403,72 @@
"LabelLess": "Minder",
"LabelLibrariesAccessibleToUser": "Voor gebruiker toegankelijke bibliotheken",
"LabelLibrary": "Bibliotheek",
+ "LabelLibraryFilterSublistEmpty": "Nee {0}",
"LabelLibraryItem": "Bibliotheekonderdeel",
"LabelLibraryName": "Bibliotheeknaam",
"LabelLimit": "Limiet",
"LabelLineSpacing": "Regelruimte",
- "LabelListenAgain": "Luister opnieuw",
+ "LabelListenAgain": "Opnieuw Beluisteren",
"LabelLogLevelDebug": "Debug",
- "LabelLogLevelInfo": "Info",
+ "LabelLogLevelInfo": "Informatie",
"LabelLogLevelWarn": "Waarschuwing",
"LabelLookForNewEpisodesAfterDate": "Zoek naar nieuwe afleveringen na deze datum",
- "LabelLowestPriority": "Lowest Priority",
- "LabelMatchExistingUsersBy": "Match existing users by",
- "LabelMatchExistingUsersByDescription": "Used for connecting existing users. Once connected, users will be matched by a unique id from your SSO provider",
+ "LabelLowestPriority": "Laagste Prioriteit",
+ "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.",
+ "LabelMaxEpisodesToDownload": "Maximale # afleveringen om te downloaden. Gebruik 0 voor ongelimiteerd.",
+ "LabelMaxEpisodesToDownloadPerCheck": "Maximale # nieuwe afleveringen om te downloaden per check",
+ "LabelMaxEpisodesToKeep": "Maximale # afleveringen om te houden",
+ "LabelMaxEpisodesToKeepHelp": "Waarde van 0 stelt geen maximumlimiet in. Nadat een nieuwe aflevering automatisch is gedownload, wordt de oudste aflevering verwijderd als u meer dan X afleveringen hebt. Hiermee wordt slechts 1 aflevering per nieuwe download verwijderd.",
"LabelMediaPlayer": "Mediaspeler",
"LabelMediaType": "Mediatype",
- "LabelMetadataOrderOfPrecedenceDescription": "Higher priority metadata sources will override lower priority metadata sources",
- "LabelMetadataProvider": "Metadatabron",
"LabelMetaTag": "Meta-tag",
"LabelMetaTags": "Meta-tags",
+ "LabelMetadataOrderOfPrecedenceDescription": "Metadatabronnen met een hogere prioriteit zullen metadatabronnen met een lagere prioriteit overschrijven",
+ "LabelMetadataProvider": "Metadatabron",
"LabelMinute": "Minuut",
+ "LabelMinutes": "Minuten",
"LabelMissing": "Ontbrekend",
- "LabelMissingEbook": "Has no ebook",
- "LabelMissingSupplementaryEbook": "Has no supplementary ebook",
- "LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs",
- "LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is audiobookshelf://oauth, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (*) as the sole entry permits any URI.",
+ "LabelMissingEbook": "Heeft geen ebook",
+ "LabelMissingSupplementaryEbook": "Heeft geen supplementair ebook",
+ "LabelMobileRedirectURIs": "Toegestane mobiele omleidings-URL's",
+ "LabelMobileRedirectURIsDescription": "Dit is een whitelist met geldige redirect-URI's voor mobiele apps. De standaard is audiobookshelf://oauth, die u kunt verwijderen of aanvullen met extra URI's voor integratie met apps van derden. Als u een asterisk (*) als enige invoer gebruikt, is elke URI toegestaan.",
"LabelMore": "Meer",
"LabelMoreInfo": "Meer info",
"LabelName": "Naam",
"LabelNarrator": "Verteller",
"LabelNarrators": "Vertellers",
"LabelNew": "Nieuw",
- "LabelNewestAuthors": "Nieuwste auteurs",
- "LabelNewestEpisodes": "Nieuwste afleveringen",
"LabelNewPassword": "Nieuw wachtwoord",
+ "LabelNewestAuthors": "Nieuwste Auteurs",
+ "LabelNewestEpisodes": "Nieuwste Afleveringen",
"LabelNextBackupDate": "Volgende back-up datum",
"LabelNextScheduledRun": "Volgende geplande run",
+ "LabelNoCustomMetadataProviders": "Geen custom metadata bronnen",
"LabelNoEpisodesSelected": "Geen afleveringen geselecteerd",
- "LabelNotes": "Notities",
"LabelNotFinished": "Niet Voltooid",
- "LabelNotificationAppriseURL": "Apprise URL(s)",
+ "LabelNotStarted": "Niet Gestart",
+ "LabelNotes": "Notities",
+ "LabelNotificationAppriseURL": "URL(s) van kennisgeving",
"LabelNotificationAvailableVariables": "Beschikbare variabelen",
"LabelNotificationBodyTemplate": "Body-template",
"LabelNotificationEvent": "Notificatie gebeurtenis",
+ "LabelNotificationTitleTemplate": "Titel-template",
"LabelNotificationsMaxFailedAttempts": "Max mislukte pogingen",
"LabelNotificationsMaxFailedAttemptsHelp": "Notificaties worden uitgeschakeld als verzenden zo vaak mislukt",
"LabelNotificationsMaxQueueSize": "Max rijgrootte voor notificatie gebeurtenissen",
"LabelNotificationsMaxQueueSizeHelp": "Gebeurtenissen zijn beperkt tot 1 aftrap per seconde. Gebeurtenissen zullen genegeerd worden als de rij aan de maximale grootte zit. Dit voorkomt notificatie-spamming.",
- "LabelNotificationTitleTemplate": "Titel-template",
- "LabelNotStarted": "Niet Gestart",
"LabelNumberOfBooks": "Aantal Boeken",
"LabelNumberOfEpisodes": "# afleveringen",
- "LabelOpenIDAdvancedPermsClaimDescription": "Name of the OpenID claim that contains advanced permissions for user actions within the application which will apply to non-admin roles (if configured). If the claim is missing from the response, access to ABS will be denied. If a single option is missing, it will be treated as false. Ensure the identity provider's claim matches the expected structure:",
- "LabelOpenIDClaims": "Leave the following options empty to disable advanced group and permissions assignment, automatically assigning 'User' group then.",
- "LabelOpenIDGroupClaimDescription": "Name of the OpenID claim that contains a list of the user's groups. Commonly referred to as groups. If configured, the application will automatically assign roles based on the user's group memberships, provided that these groups are named case-insensitively 'admin', 'user', or 'guest' in the claim. The claim should contain a list, and if a user belongs to multiple groups, the application will assign the role corresponding to the highest level of access. If no group matches, access will be denied.",
+ "LabelOpenIDAdvancedPermsClaimDescription": "Naam van de OpenID-claim die geavanceerde machtigingen bevat voor gebruikersacties binnen de applicatie die van toepassing zijn op niet-beheerdersrollen (indien geconfigureerd). Als de claim ontbreekt in het antwoord, wordt toegang tot ABS geweigerd. Als er één optie ontbreekt, wordt deze behandeld als false. Zorg ervoor dat de claim van de identiteitsprovider overeenkomt met de verwachte structuur:",
+ "LabelOpenIDClaims": "Laat de volgende opties leeg om geavanceerde groeps- en machtigingstoewijzing uit te schakelen en de groep 'Gebruiker' automatisch toe te wijzen.",
+ "LabelOpenIDGroupClaimDescription": "Naam van de OpenID-claim die een lijst met de groepen van de gebruiker bevat. Vaak aangeduid als groepen. Indien geconfigureerd, zal de applicatie automatisch rollen toewijzen op basis van de groepslidmaatschappen van de gebruiker, op voorwaarde dat deze groepen hoofdlettergevoelig 'admin', 'gebruiker' of 'gast' worden genoemd in de claim. De claim moet een lijst bevatten en als een gebruiker tot meerdere groepen behoort, zal de applicatie de rol toewijzen die overeenkomt met het hoogste toegangsniveau. Als er geen groep overeenkomt, wordt de toegang geweigerd.",
"LabelOpenRSSFeed": "Open RSS-feed",
"LabelOverwrite": "Overschrijf",
+ "LabelPaginationPageXOfY": "Pagina {0} van {1}",
"LabelPassword": "Wachtwoord",
"LabelPath": "Pad",
+ "LabelPermanent": "Permanent",
"LabelPermissionsAccessAllLibraries": "Heeft toegang tot all bibliotheken",
"LabelPermissionsAccessAllTags": "Heeft toegang tot alle tags",
"LabelPermissionsAccessExplicitContent": "Heeft toegang tot expliciete inhoud",
@@ -410,60 +476,75 @@
"LabelPermissionsDownload": "Kan downloaden",
"LabelPermissionsUpdate": "Kan bijwerken",
"LabelPermissionsUpload": "Kan uploaden",
- "LabelPersonalYearReview": "Your Year in Review ({0})",
+ "LabelPersonalYearReview": "Jouw jaar in review ({0})",
"LabelPhotoPathURL": "Foto pad/URL",
- "LabelPlaylists": "Afspeellijsten",
"LabelPlayMethod": "Afspeelwijze",
+ "LabelPlayerChapterNumberMarker": "{0} van {1}",
+ "LabelPlaylists": "Afspeellijsten",
"LabelPodcast": "Podcast",
- "LabelPodcasts": "Podcasts",
"LabelPodcastSearchRegion": "Podcast zoekregio",
"LabelPodcastType": "Podcasttype",
+ "LabelPodcasts": "Podcasts",
"LabelPort": "Poort",
"LabelPrefixesToIgnore": "Te negeren voorzetsels (ongeacht hoofdlettergebruik)",
"LabelPreventIndexing": "Voorkom indexering van je feed door iTunes- en Google podcastmappen",
"LabelPrimaryEbook": "Primair ebook",
"LabelProgress": "Voortgang",
"LabelProvider": "Bron",
+ "LabelProviderAuthorizationValue": "Autorisatie Header Waarde",
"LabelPubDate": "Publicatiedatum",
- "LabelPublisher": "Uitgever",
"LabelPublishYear": "Jaar van uitgave",
- "LabelRead": "Lees",
- "LabelReadAgain": "Lees opnieuw",
- "LabelReadEbookWithoutProgress": "Lees ebook zonder voortgang bij te houden",
- "LabelRecentlyAdded": "Recent toegevoegd",
- "LabelRecentSeries": "Recente series",
- "LabelRecommended": "Aangeraden",
- "LabelRedo": "Redo",
- "LabelRegion": "Regio",
- "LabelReleaseDate": "Verschijningsdatum",
- "LabelRemoveCover": "Verwijder cover",
- "LabelRowsPerPage": "Rows per page",
+ "LabelPublishedDate": "Gepubliceerd {0}",
+ "LabelPublishedDecade": "Gepubliceerd Decennium",
+ "LabelPublishedDecades": "Gepubliceerd Decennia",
+ "LabelPublisher": "Uitgever",
+ "LabelPublishers": "Uitgevers",
"LabelRSSFeedCustomOwnerEmail": "Aangepast e-mailadres eigenaar",
"LabelRSSFeedCustomOwnerName": "Aangepaste naam eigenaar",
"LabelRSSFeedOpen": "RSS-feed open",
"LabelRSSFeedPreventIndexing": "Voorkom indexering",
"LabelRSSFeedSlug": "RSS-feed slug",
"LabelRSSFeedURL": "RSS-feed URL",
+ "LabelRandomly": "Willekeurig",
+ "LabelReAddSeriesToContinueListening": "Serie opnieuw toevoegen aan verder luisteren",
+ "LabelRead": "Lees",
+ "LabelReadAgain": "Opnieuw Lezen",
+ "LabelReadEbookWithoutProgress": "Lees ebook zonder voortgang bij te houden",
+ "LabelRecentSeries": "Recente Serie",
+ "LabelRecentlyAdded": "Recent Toegevoegd",
+ "LabelRecommended": "Aangeraden",
+ "LabelRedo": "Opnieuw",
+ "LabelRegion": "Regio",
+ "LabelReleaseDate": "Verschijningsdatum",
+ "LabelRemoveAllMetadataAbs": "Verwijder alle metadata.abs bestanden",
+ "LabelRemoveAllMetadataJson": "Verwijder alle metadata.json bestanden",
+ "LabelRemoveCover": "Verwijder cover",
+ "LabelRemoveMetadataFile": "Verwijder metadata bestanden in bibliotheek item folders",
+ "LabelRemoveMetadataFileHelp": "Verwijder alle metadata.json en metadata.abs bestanden in uw {0} folders.",
+ "LabelRowsPerPage": "Rijen per pagina",
"LabelSearchTerm": "Zoekterm",
"LabelSearchTitle": "Zoek titel",
"LabelSearchTitleOrASIN": "Zoek titel of ASIN",
"LabelSeason": "Seizoen",
- "LabelSelectAll": "Select all",
+ "LabelSeasonNumber": "Seizoen #{0}",
+ "LabelSelectAll": "Alles selecteren",
"LabelSelectAllEpisodes": "Selecteer alle afleveringen",
"LabelSelectEpisodesShowing": "Selecteer {0} afleveringen laten zien",
- "LabelSelectUsers": "Select users",
+ "LabelSelectUsers": "Selecteer gebruikers",
"LabelSendEbookToDevice": "Stuur ebook naar...",
"LabelSequence": "Sequentie",
+ "LabelSerial": "Serie",
"LabelSeries": "Serie",
"LabelSeriesName": "Naam serie",
"LabelSeriesProgress": "Voortgang serie",
- "LabelServerYearReview": "Server Year in Review ({0})",
+ "LabelServerLogLevel": "Server Log Niveau",
+ "LabelServerYearReview": "Server Jaar in Review ({0})",
"LabelSetEbookAsPrimary": "Stel in als primair",
"LabelSetEbookAsSupplementary": "Stel in als supplementair",
"LabelSettingsAudiobooksOnly": "Alleen audiobooks",
"LabelSettingsAudiobooksOnlyHelp": "Deze instelling inschakelen zorgt ervoor dat ebook-bestanden genegeerd worden tenzij ze in een audiobook-map staan, in welk geval ze worden ingesteld als supplementaire ebooks",
"LabelSettingsBookshelfViewHelp": "Skeumorphisch design met houten planken",
- "LabelSettingsChromecastSupport": "Chromecast support",
+ "LabelSettingsChromecastSupport": "Chromecast ondersteuning",
"LabelSettingsDateFormat": "Datum format",
"LabelSettingsDisableWatcher": "Watcher uitschakelen",
"LabelSettingsDisableWatcherForLibrary": "Map-watcher voor bibliotheek uitschakelen",
@@ -471,8 +552,8 @@
"LabelSettingsEnableWatcher": "Watcher inschakelen",
"LabelSettingsEnableWatcherForLibrary": "Map-watcher voor bibliotheek inschakelen",
"LabelSettingsEnableWatcherHelp": "Zorgt voor het automatisch toevoegen/bijwerken van onderdelen als bestandswijzigingen worden gedetecteerd. *Vereist herstarten van server",
- "LabelSettingsEpubsAllowScriptedContent": "Allow scripted content in epubs",
- "LabelSettingsEpubsAllowScriptedContentHelp": "Allow epub files to execute scripts. It is recommended to keep this setting disabled unless you trust the source of the epub files.",
+ "LabelSettingsEpubsAllowScriptedContent": "Sta scripted content toe in epubs",
+ "LabelSettingsEpubsAllowScriptedContentHelp": "Sta toe dat epub-bestanden scripts uitvoeren. Het wordt aanbevolen om deze instelling uitgeschakeld te houden, tenzij u de bron van de epub-bestanden vertrouwt.",
"LabelSettingsExperimentalFeatures": "Experimentele functies",
"LabelSettingsExperimentalFeaturesHelp": "Functies in ontwikkeling die je feedback en testing kunnen gebruiken. Klik om de Github-discussie te openen.",
"LabelSettingsFindCovers": "Zoek covers",
@@ -481,8 +562,8 @@
"LabelSettingsHideSingleBookSeriesHelp": "Series die slechts een enkel boek bevatten worden verborgen op de seriespagina en de homepagina-planken.",
"LabelSettingsHomePageBookshelfView": "Boekenplank-view voor homepagina",
"LabelSettingsLibraryBookshelfView": "Boekenplank-view voor bibliotheek",
- "LabelSettingsOnlyShowLaterBooksInContinueSeries": "Skip earlier books in Continue Series",
- "LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "The Continue Series home page shelf shows the first book not started in series that have at least one book finished and no books in progress. Enabling this setting will continue series from the furthest completed book instead of the first book not started.",
+ "LabelSettingsOnlyShowLaterBooksInContinueSeries": "Sla eedere boeken in Serie Verderzetten over",
+ "LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "De Continue Series home page shelf toont het eerste boek dat nog niet is begonnen in series waarvan er minstens één is voltooid en er geen boeken in uitvoering zijn. Als u deze instelling inschakelt, wordt de serie voortgezet vanaf het boek dat het verst is voltooid in plaats van het eerste boek dat nog niet is begonnen.",
"LabelSettingsParseSubtitles": "Parseer subtitel",
"LabelSettingsParseSubtitlesHelp": "Haal subtitels uit mapnaam van audioboek. Subtitel moet gescheiden zijn met \" - \" b.v. \"Boektitel - Een Subtitel Hier\" heeft als subtitel \"Een Subtitel Hier\"",
"LabelSettingsPreferMatchedMetadata": "Prefereer gematchte metadata",
@@ -498,15 +579,19 @@
"LabelSettingsStoreMetadataWithItem": "Bewaar metadata bij onderdeel",
"LabelSettingsStoreMetadataWithItemHelp": "Standaard worden metadata-bestanden bewaard in /metadata/items, door deze instelling in te schakelen zullen metadata bestanden in de map van je bibliotheekonderdeel bewaard worden",
"LabelSettingsTimeFormat": "Tijdformat",
+ "LabelShare": "Delen",
+ "LabelShareOpen": "Delen Open",
+ "LabelShareURL": "URL Delen",
"LabelShowAll": "Toon alle",
- "LabelShowSeconds": "Show seconds",
+ "LabelShowSeconds": "Laat seconden zien",
+ "LabelShowSubtitles": "Laat Ondertitels zien",
"LabelSize": "Grootte",
"LabelSleepTimer": "Slaaptimer",
- "LabelSlug": "Slug",
+ "LabelSlug": "Slak",
"LabelStart": "Start",
+ "LabelStartTime": "Starttijd",
"LabelStarted": "Gestart",
"LabelStartedAt": "Gestart op",
- "LabelStartTime": "Starttijd",
"LabelStatsAudioTracks": "Audiotracks",
"LabelStatsAuthors": "Auteurs",
"LabelStatsBestDay": "Beste dag",
@@ -529,14 +614,19 @@
"LabelTagsAccessibleToUser": "Tags toegankelijk voor de gebruiker",
"LabelTagsNotAccessibleToUser": "Tags niet toegankelijk voor de gebruiker",
"LabelTasks": "Lopende taken",
- "LabelTextEditorBulletedList": "Bulleted list",
+ "LabelTextEditorBulletedList": "Opgesomde lijst",
"LabelTextEditorLink": "Link",
- "LabelTextEditorNumberedList": "Numbered list",
+ "LabelTextEditorNumberedList": "Genummerde lijst",
"LabelTextEditorUnlink": "Unlink",
"LabelTheme": "Thema",
"LabelThemeDark": "Donker",
"LabelThemeLight": "Licht",
"LabelTimeBase": "Tijdsbasis",
+ "LabelTimeDurationXHours": "{0} Uren",
+ "LabelTimeDurationXMinutes": "{0} minuten",
+ "LabelTimeDurationXSeconds": "{0} seconden",
+ "LabelTimeInMinutes": "Tijd in minuten",
+ "LabelTimeLeft": "{0} over",
"LabelTimeListened": "Tijd geluisterd",
"LabelTimeListenedToday": "Tijd geluisterd vandaag",
"LabelTimeRemaining": "{0} te gaan",
@@ -544,6 +634,7 @@
"LabelTitle": "Titel",
"LabelToolsEmbedMetadata": "Metadata insluiten",
"LabelToolsEmbedMetadataDescription": "Metadata insluiten in audiobestanden, inclusief coverafbeelding en hoofdstukken.",
+ "LabelToolsM4bEncoder": "M4B Encoder",
"LabelToolsMakeM4b": "Maak M4B-audioboekbestand",
"LabelToolsMakeM4bDescription": "Genereer een .M4B-audioboekbestand met ingesloten metadata, coverafbeelding en hoofdstukken.",
"LabelToolsSplitM4b": "Splitst M4B in MP3's",
@@ -552,35 +643,42 @@
"LabelTotalTimeListened": "Totale tijd geluisterd",
"LabelTrackFromFilename": "Track vanuit bestandsnaam",
"LabelTrackFromMetadata": "Track vanuit metadata",
- "LabelTracks": "Tracks",
- "LabelTracksMultiTrack": "Multi-track",
+ "LabelTracks": "Audiosporen",
+ "LabelTracksMultiTrack": "Multi-spoor",
"LabelTracksNone": "Geen tracks",
"LabelTracksSingleTrack": "Enkele track",
+ "LabelTrailer": "Trailer",
"LabelType": "Type",
"LabelUnabridged": "Onverkort",
- "LabelUndo": "Undo",
+ "LabelUndo": "Ongedaan maken",
"LabelUnknown": "Onbekend",
+ "LabelUnknownPublishDate": "Onbekende uitgeefdatum",
"LabelUpdateCover": "Cover bijwerken",
"LabelUpdateCoverHelp": "Sta overschrijven van bestaande covers toe voor de geselecteerde boeken wanneer een match is gevonden",
- "LabelUpdatedAt": "Bijgewerkt op",
"LabelUpdateDetails": "Details bijwerken",
"LabelUpdateDetailsHelp": "Sta overschrijven van bestaande details toe voor de geselecteerde boeken wanneer een match is gevonden",
+ "LabelUpdatedAt": "Bijgewerkt op",
"LabelUploaderDragAndDrop": "Slepen & neerzeten van bestanden of mappen",
"LabelUploaderDropFiles": "Bestanden neerzetten",
- "LabelUploaderItemFetchMetadataHelp": "Automatically fetch title, author, and series",
+ "LabelUploaderItemFetchMetadataHelp": "Automatisch titel, auteur en serie ophalen",
+ "LabelUseAdvancedOptions": "Gebruik Geavanceerde Instellingen",
"LabelUseChapterTrack": "Gebruik hoofdstuktrack",
"LabelUseFullTrack": "Gebruik volledige track",
+ "LabelUseZeroForUnlimited": "Gebruik 0 voor ongelimiteerd",
"LabelUser": "Gebruiker",
"LabelUsername": "Gebruikersnaam",
"LabelValue": "Waarde",
"LabelVersion": "Versie",
"LabelViewBookmarks": "Bekijk boekwijzers",
"LabelViewChapters": "Bekijk hoofdstukken",
+ "LabelViewPlayerSettings": "Laat spelerinstellingen zien",
"LabelViewQueue": "Bekijk afspeelwachtrij",
"LabelVolume": "Volume",
"LabelWeekdaysToRun": "Weekdagen om te draaien",
- "LabelYearReviewHide": "Hide Year in Review",
- "LabelYearReviewShow": "See Year in Review",
+ "LabelXBooks": "{0} boeken",
+ "LabelXItems": "{0} items",
+ "LabelYearReviewHide": "Verberg Jaar in Review",
+ "LabelYearReviewShow": "Laat Jaar in Review zien",
"LabelYourAudiobookDuration": "Je audioboekduur",
"LabelYourBookmarks": "Je boekwijzers",
"LabelYourPlaylists": "Je afspeellijsten",
@@ -588,10 +686,14 @@
"MessageAddToPlayerQueue": "Toevoegen aan wachtrij",
"MessageAppriseDescription": "Om deze functie te gebruiken heb je een draaiende instantie van Apprise API nodig of een api die dezelfde requests afhandelt. De Apprise API Url moet het volledige URL-pad zijn om de notificatie te verzenden, b.v., als je API-instantie draait op http://192.168.1.1:8337 dan zou je http://192.168.1.1:8337/notify gebruiken.",
"MessageBackupsDescription": "Back-ups omvatten gebruikers, gebruikers' voortgang, bibliotheekonderdeeldetails, serverinstellingen en afbeeldingen bewaard in /metadata/items & /metadata/authors. Back-ups bevatten niet de bestanden bewaard in je bibliotheekmappen.",
+ "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.",
+ "MessageBackupsLocationPathEmpty": "Backup locatie pad kan niet leeg zijn",
"MessageBatchQuickMatchDescription": "Quick Match zal proberen ontbrekende covers en metadata voor de geselecteerde onderdelen te matchten. Schakel de opties hieronder in om Quick Match toe te staan bestaande covers en/of metadata te overschrijven.",
"MessageBookshelfNoCollections": "Je hebt nog geen collecties gemaakt",
- "MessageBookshelfNoResultsForFilter": "Geen resultaten voor filter \"{0}: {1}\"",
"MessageBookshelfNoRSSFeeds": "Geen RSS-feeds geopend",
+ "MessageBookshelfNoResultsForFilter": "Geen resultaten voor filter \"{0}: {1}\"",
+ "MessageBookshelfNoResultsForQuery": "Geen resultaten voor query",
"MessageBookshelfNoSeries": "Je hebt geen series",
"MessageChapterEndIsAfter": "Hoofdstukeinde is na het einde van je audioboek",
"MessageChapterErrorFirstNotZero": "Eerste hoofdstuk moet starten op 0",
@@ -599,26 +701,37 @@
"MessageChapterErrorStartLtPrev": "Ongeldig: starttijd moet be groter zijn dan of equal aan starttijd van vorig hoofdstuk",
"MessageChapterStartIsAfter": "Start van hoofdstuk is na het einde van je audioboek",
"MessageCheckingCron": "Cron aan het checken...",
- "MessageConfirmCloseFeed": "Are you sure you want to close this feed?",
+ "MessageConfirmCloseFeed": "Ben je zeker dat je deze feed wil sluiten?",
"MessageConfirmDeleteBackup": "Weet je zeker dat je de backup voor {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?",
"MessageConfirmDeleteLibrary": "Weet je zeker dat je de bibliotheek \"{0}\" permanent wil verwijderen?",
- "MessageConfirmDeleteLibraryItem": "This will delete the library item from the database and your file system. Are you sure?",
- "MessageConfirmDeleteLibraryItems": "This will delete {0} library items from the database and your file system. Are you sure?",
+ "MessageConfirmDeleteLibraryItem": "Hiermee wordt het bibliotheekitem uit de database en uw bestandssysteem verwijderd. Bent u zeker?",
+ "MessageConfirmDeleteLibraryItems": "Hiermee worden {0} bibliotheekitems uit de database en uw bestandssysteem verwijderd. Bent u zeker?",
+ "MessageConfirmDeleteMetadataProvider": "Weet u zeker dat u de aangepaste metadataprovider \"{0}\" wilt verwijderen?",
+ "MessageConfirmDeleteNotification": "Weet u zeker dat u deze melding wil verwijderen?",
"MessageConfirmDeleteSession": "Weet je zeker dat je deze sessie wil verwijderen?",
+ "MessageConfirmEmbedMetadataInAudioFiles": "Weet u zeker dat u metagegevens wilt insluiten in {0} audiobestanden?",
"MessageConfirmForceReScan": "Weet je zeker dat je geforceerd opnieuw wil scannen?",
"MessageConfirmMarkAllEpisodesFinished": "Weet je zeker dat je alle afleveringen als voltooid wil markeren?",
"MessageConfirmMarkAllEpisodesNotFinished": "Weet je zeker dat je alle afleveringen als niet-voltooid wil markeren?",
+ "MessageConfirmMarkItemFinished": "Weet u zeker dat u \"{0}\" als voltooid wilt markeren?",
+ "MessageConfirmMarkItemNotFinished": "Weet u zeker dat u \"{0}\" als niet voltooid wilt markeren?",
"MessageConfirmMarkSeriesFinished": "Weet je zeker dat je alle boeken in deze serie wil markeren als voltooid?",
"MessageConfirmMarkSeriesNotFinished": "Weet je zeker dat je alle boeken in deze serie wil markeren als niet voltooid?",
- "MessageConfirmPurgeCache": "Purge cache will delete the entire directory at /metadata/cache.
Are you sure you want to remove the cache directory?",
- "MessageConfirmQuickEmbed": "Warning! Quick embed will not backup your audio files. Make sure that you have a backup of your audio files.
Would you like to continue?",
+ "MessageConfirmNotificationTestTrigger": "Trigger deze melding met test data?",
+ "MessageConfirmPurgeCache": "Met Purge cache wordt de gehele directory op /metadata/cache verwijderd.
Weet u zeker dat u de cachedirectory wilt verwijderen?",
+ "MessageConfirmPurgeItemsCache": "Met Purge items cache wordt de gehele directory op /metadata/cache/items verwijderd. Weet u het zeker?",
+ "MessageConfirmQuickEmbed": "Waarschuwing! Quick embed maakt geen back-up van uw audiobestanden. Zorg ervoor dat u een back-up van uw audiobestanden hebt.
Wilt u doorgaan?",
+ "MessageConfirmQuickMatchEpisodes": "Snel matchende afleveringen overschrijven details als er een match is gevonden. Alleen niet-matchende afleveringen worden bijgewerkt. Weet u het zeker?",
+ "MessageConfirmReScanLibraryItems": "Bent u zeker dat u {0} items opnieuw wil scannen?",
"MessageConfirmRemoveAllChapters": "Weet je zeker dat je alle hoofdstukken wil verwijderen?",
"MessageConfirmRemoveAuthor": "Weet je zeker dat je auteur \"{0}\" wil verwijderen?",
"MessageConfirmRemoveCollection": "Weet je zeker dat je de collectie \"{0}\" wil verwijderen?",
"MessageConfirmRemoveEpisode": "Weet je zeker dat je de aflevering \"{0}\" wil verwijderen?",
"MessageConfirmRemoveEpisodes": "Weet je zeker dat je {0} afleveringen wil verwijderen?",
- "MessageConfirmRemoveListeningSessions": "Are you sure you want to remove {0} listening sessions?",
+ "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?",
"MessageConfirmRemoveNarrator": "Weet je zeker dat je verteller \"{0}\" wil verwijderen?",
"MessageConfirmRemovePlaylist": "Weet je zeker dat je je afspeellijst \"{0}\" wil verwijderen?",
"MessageConfirmRenameGenre": "Weet je zeker dat je genre \"{0}\" wil hernoemen naar \"{1}\" voor alle onderdelen?",
@@ -627,13 +740,16 @@
"MessageConfirmRenameTag": "Weet je zeker dat je tag \"{0}\" wil hernoemen naar\"{1}\" voor alle onderdelen?",
"MessageConfirmRenameTagMergeNote": "Opmerking: Deze tag bestaat al, dus zullen ze worden samengevoegd.",
"MessageConfirmRenameTagWarning": "Waarschuwing! Een gelijknamige tag met ander hoofdlettergebruik bestaat al: \"{0}\".",
- "MessageConfirmReScanLibraryItems": "Are you sure you want to re-scan {0} items?",
+ "MessageConfirmResetProgress": "Bet u zeker dat u uw voortgang wil resetten?",
"MessageConfirmSendEbookToDevice": "Weet je zeker dat je {0} ebook \"{1}\" naar apparaat \"{2}\" wil sturen?",
+ "MessageConfirmUnlinkOpenId": "Bent u zeker dat u deze gebruiker wil ontkoppelen van OpenID?",
"MessageDownloadingEpisode": "Aflevering aan het dowloaden",
"MessageDragFilesIntoTrackOrder": "Sleep bestanden in de juiste trackvolgorde",
+ "MessageEmbedFailed": "Insluiten Mislukt!",
"MessageEmbedFinished": "Insluiting voltooid!",
+ "MessageEmbedQueue": "In de wachtrij voor metadata-embed ({0} in wachtrij)",
"MessageEpisodesQueuedForDownload": "{0} aflevering(en) in de rij om te downloaden",
- "MessageEreaderDevices": "To ensure delivery of ebooks, you may need to add the above email address as a valid sender for each device listed below.",
+ "MessageEreaderDevices": "Om de levering van e-books te garanderen, moet u mogelijk bovenstaand e-mailadres opgeven als geldige afzender voor elk hieronder vermeld apparaat.",
"MessageFeedURLWillBe": "Feed URL zal {0} zijn",
"MessageFetching": "Aan het ophalen...",
"MessageForceReScanDescription": "zal alle bestanden opnieuw scannen als een verse scan. Audiobestanden ID3-tags, OPF-bestanden en textbestanden zullen als nieuw worden gescand.",
@@ -645,7 +761,7 @@
"MessageListeningSessionsInTheLastYear": "{0} luistersessies in het laatste jaar",
"MessageLoading": "Aan het laden...",
"MessageLoadingFolders": "Mappen aan het laden...",
- "MessageLogsDescription": "Logs are stored in /metadata/logs as JSON files. Crash logs are stored in /metadata/logs/crash_logs.txt.",
+ "MessageLogsDescription": "Logs worden opgeslagen in /metadata/logs als JSON-bestanden. Crashlogs worden opgeslagen in /metadata/logs/crash_logs.txt.",
"MessageM4BFailed": "M4B mislukt!",
"MessageM4BFinished": "M4B voltooid!",
"MessageMapChapterTitles": "Map hoofdstuktitels naar je bestaande audioboekhoofdstukken zonder aanpassing van tijden",
@@ -662,6 +778,7 @@
"MessageNoCollections": "Geen collecties",
"MessageNoCoversFound": "Geen covers gevonden",
"MessageNoDescription": "Geen beschrijving",
+ "MessageNoDevices": "Geen Apparaten",
"MessageNoDownloadsInProgress": "Geen downloads bezig op dit moment",
"MessageNoDownloadsQueued": "Geen downloads in de wachtrij",
"MessageNoEpisodeMatchesFound": "Geen afleveringsmatches gevonden",
@@ -675,21 +792,27 @@
"MessageNoLogs": "Geen logs",
"MessageNoMediaProgress": "Geen mediavoortgang",
"MessageNoNotifications": "Geen notificaties",
+ "MessageNoPodcastFeed": "Ongeldige podcast: Geen Feed",
"MessageNoPodcastsFound": "Geen podcasts gevonden",
"MessageNoResults": "Geen resultaten",
"MessageNoSearchResultsFor": "Geen zoekresultaten voor \"{0}\"",
"MessageNoSeries": "Geen series",
"MessageNoTags": "Geen tags",
"MessageNoTasksRunning": "Geen lopende taken",
- "MessageNotYetImplemented": "Nog niet geimplementeerd",
- "MessageNoUpdateNecessary": "Geen bijwerking noodzakelijk",
"MessageNoUpdatesWereNecessary": "Geen bijwerkingen waren noodzakelijk",
"MessageNoUserPlaylists": "Je hebt geen afspeellijsten",
+ "MessageNotYetImplemented": "Nog niet geimplementeerd",
+ "MessageOpmlPreviewNote": "Let op: Dit is een preview van het geparseerde OPML-bestand. De werkelijke podcasttitel wordt overgenomen uit de RSS-feed.",
"MessageOr": "of",
"MessagePauseChapter": "Pauzeer afspelen hoofdstuk",
"MessagePlayChapter": "Luister naar begin van hoofdstuk",
"MessagePlaylistCreateFromCollection": "Afspeellijst aanmaken vanuit collectie",
+ "MessagePleaseWait": "Even geduld...",
"MessagePodcastHasNoRSSFeedForMatching": "Podcast heeft geen RSS-feed URL om te gebruiken voor matching",
+ "MessagePodcastSearchField": "Voer zoekterm of RSS-feed-URL in",
+ "MessageQuickEmbedInProgress": "Snelle inbedding in uitvoering",
+ "MessageQuickEmbedQueue": "In de wachtrij voor snelle insluiting ({0} in wachtrij)",
+ "MessageQuickMatchAllEpisodes": "Alle Afleveringen Snel Matchen",
"MessageQuickMatchDescription": "Vul lege onderdeeldetails & cover met eerste matchresultaat van '{0}'. Overschrijft geen details tenzij 'Prefereer gematchte metadata' serverinstelling is ingeschakeld.",
"MessageRemoveChapter": "Verwijder hoofdstuk",
"MessageRemoveEpisodes": "Verwijder {0} aflevering(en)",
@@ -700,10 +823,48 @@
"MessageRestoreBackupConfirm": "Weet je zeker dat je wil herstellen met behulp van de back-up gemaakt op",
"MessageRestoreBackupWarning": "Herstellen met een back-up zal de volledige database in /config en de covers in /metadata/items & /metadata/authors overschrijven.
Back-ups wijzigen geen bestanden in je bibliotheekmappen. Als je de serverinstelling gebruikt om covers en metadata in je bibliotheekmappen te bewaren dan worden deze niet geback-upt of overschreven.
Alle clients die van je server gebruik maken zullen automatisch worden ververst.",
"MessageSearchResultsFor": "Zoekresultaten voor",
- "MessageSelected": "{0} selected",
+ "MessageSelected": "{0} geselecteerd",
"MessageServerCouldNotBeReached": "Server niet bereikbaar",
"MessageSetChaptersFromTracksDescription": "Stel hoofdstukken in met ieder audiobestand als een hoofdstuk en de audiobestandsnaam als hoofdstuktitel",
+ "MessageShareExpirationWillBe": "Vervaldatum is {0}",
+ "MessageShareExpiresIn": "Vervalt in {0}",
+ "MessageShareURLWillBe": "De gedeelde URL wordt {0}",
"MessageStartPlaybackAtTime": "Afspelen van \"{0}\" beginnen op {1}?",
+ "MessageTaskAudioFileNotWritable": "Audiobestand \"{0}\" is niet beschrijfbaar",
+ "MessageTaskCanceledByUser": "Taak geannuleerd door gebruiker",
+ "MessageTaskDownloadingEpisodeDescription": "Aflevering \"{0}\" downloaden",
+ "MessageTaskEmbeddingMetadata": "Metadata insluiten",
+ "MessageTaskEmbeddingMetadataDescription": "Metadata insluiten in audioboek \"{0}\"",
+ "MessageTaskEncodingM4b": "M4B Encoden",
+ "MessageTaskEncodingM4bDescription": "Audioboek \"{0}\" coderen in één m4b-bestand",
+ "MessageTaskFailed": "Mislukt",
+ "MessageTaskFailedToBackupAudioFile": "Het is niet gelukt om een back-up te maken van audiobestand \"{0}\"",
+ "MessageTaskFailedToCreateCacheDirectory": "Het is niet gelukt om een cachemap te maken",
+ "MessageTaskFailedToEmbedMetadataInFile": "Het is niet gelukt om metagegevens in bestand \"{0}\" in te sluiten",
+ "MessageTaskFailedToMergeAudioFiles": "Audiobestanden samenvoegen mislukt",
+ "MessageTaskFailedToMoveM4bFile": "m4b bestand verplaatsen mislukt",
+ "MessageTaskFailedToWriteMetadataFile": "Metadata bestand schrijven mislukt",
+ "MessageTaskMatchingBooksInLibrary": "Overeenkomende boeken in bibliotheek \"{0}\"",
+ "MessageTaskNoFilesToScan": "Geen bestanden om te scannen",
+ "MessageTaskOpmlImport": "OPML importeren",
+ "MessageTaskOpmlImportDescription": "Podcasts maken van {0} RSS feeds",
+ "MessageTaskOpmlImportFeed": "OPML feed importeren",
+ "MessageTaskOpmlImportFeedDescription": "RSS feed \"{0}\" importeren",
+ "MessageTaskOpmlImportFeedFailed": "Podcastfeed kon niet worden opgehaald",
+ "MessageTaskOpmlImportFeedPodcastDescription": "Podcast \"{0}\" maken",
+ "MessageTaskOpmlImportFeedPodcastExists": "Podcast bestaat al in pad",
+ "MessageTaskOpmlImportFeedPodcastFailed": "Mislukt om podcast aan te maken",
+ "MessageTaskOpmlImportFinished": "{0} podcasts toegevoegd",
+ "MessageTaskOpmlParseFailed": "Het is niet gelukt om het OPML-bestand te parseren",
+ "MessageTaskOpmlParseFastFail": "Ongeldig OPML-bestand tag niet gevonden OF een tag is niet gevonden",
+ "MessageTaskOpmlParseNoneFound": "Geen feeds gevonden in OPML bestand",
+ "MessageTaskScanItemsAdded": "{0} toegevoegd",
+ "MessageTaskScanItemsMissing": "{0} missend",
+ "MessageTaskScanItemsUpdated": "{0} bijgewerkt",
+ "MessageTaskScanNoChangesNeeded": "Geen aanpassingen nodig",
+ "MessageTaskScanningFileChanges": "Scannen van bestandswijzigingen in \"{0}\"",
+ "MessageTaskScanningLibrary": "Scannen van bibliotheek \"{0}\"",
+ "MessageTaskTargetDirectoryNotWritable": "Doelmap is niet beschrijfbaar",
"MessageThinking": "Aan het denken...",
"MessageUploaderItemFailed": "Uploaden mislukt",
"MessageUploaderItemSuccess": "Uploaden gelukt!",
@@ -721,90 +882,188 @@
"NoteUploaderFoldersWithMediaFiles": "Mappen met mediabestanden zullen worden behandeld als aparte bibliotheekonderdelen.",
"NoteUploaderOnlyAudioFiles": "Bij uploaden van uitsluitend audiobestanden wordt ieder audiobestand als apart audiobook worden behandeld.",
"NoteUploaderUnsupportedFiles": "Niet-ondersteunde bestanden worden genegeerd. Bij het kiezen of neerzetten van een map worden andere bestanden die niet in de map staan genegeerd.",
+ "NotificationOnBackupCompletedDescription": "Wordt geactiveerd wanneer een back-up is voltooid",
+ "NotificationOnBackupFailedDescription": "Wordt geactiveerd wanneer een back-up mislukt",
+ "NotificationOnEpisodeDownloadedDescription": "Wordt geactiveerd wanneer een podcastaflevering automatisch wordt gedownload",
+ "NotificationOnTestDescription": "Event voor het testen van het notificatiesysteem",
"PlaceholderNewCollection": "Nieuwe naam collectie",
"PlaceholderNewFolderPath": "Nieuwe locatie map",
"PlaceholderNewPlaylist": "Nieuwe naam afspeellijst",
"PlaceholderSearch": "Zoeken..",
"PlaceholderSearchEpisode": "Aflevering zoeken..",
- "ToastAccountUpdateFailed": "Bijwerken account mislukt",
+ "StatsAuthorsAdded": "auteurs toegevoegd",
+ "StatsBooksAdded": "boeken toegevoegd",
+ "StatsBooksAdditional": "Enkele toevoegingen zijn…",
+ "StatsBooksFinished": "boeken voltooid",
+ "StatsBooksFinishedThisYear": "Enkele boeken voltooid dit jaar…",
+ "StatsBooksListenedTo": "geluisterde boeken",
+ "StatsCollectionGrewTo": "Je boeken collectie groeide tot…",
+ "StatsSessions": "sessies",
+ "StatsSpentListening": "tijd geluisterd",
+ "StatsTopAuthor": "TOP AUTEUR",
+ "StatsTopAuthors": "TOP AUTEURS",
+ "StatsTopGenre": "TOP GENRE",
+ "StatsTopGenres": "TOP GENRES",
+ "StatsTopMonth": "TOP MAAND",
+ "StatsTopNarrator": "TOP VERTELLER",
+ "StatsTopNarrators": "TOP VERTELLERS",
+ "StatsTotalDuration": "Met een totale tijd van…",
+ "StatsYearInReview": "JAAR IN REVIEW",
"ToastAccountUpdateSuccess": "Account bijgewerkt",
- "ToastAuthorImageRemoveFailed": "Afbeelding verwijderen mislukt",
+ "ToastAppriseUrlRequired": "Moet een Apprise URL invoeren",
+ "ToastAsinRequired": "ASIN is vereist",
"ToastAuthorImageRemoveSuccess": "Afbeelding auteur verwijderd",
- "ToastAuthorUpdateFailed": "Bijwerken auteur mislukt",
+ "ToastAuthorNotFound": "Auteur \"{0}\" niet gevonden",
+ "ToastAuthorRemoveSuccess": "Auteur verwijderd",
+ "ToastAuthorSearchNotFound": "Auteur niet gevonden",
"ToastAuthorUpdateMerged": "Auteur samengevoegd",
"ToastAuthorUpdateSuccess": "Auteur bijgewerkt",
"ToastAuthorUpdateSuccessNoImageFound": "Auteur bijgewerkt (geen afbeelding gevonden)",
+ "ToastBackupAppliedSuccess": "Backup toegepast",
"ToastBackupCreateFailed": "Back-up maken mislukt",
"ToastBackupCreateSuccess": "Back-up gemaakt",
"ToastBackupDeleteFailed": "Verwijderen back-up mislukt",
"ToastBackupDeleteSuccess": "Back-up verwijderd",
+ "ToastBackupInvalidMaxKeep": "Ongeldig aantal backups om bij te houden",
+ "ToastBackupInvalidMaxSize": "Ongeldige maximum backupgrootte",
"ToastBackupRestoreFailed": "Herstellen back-up mislukt",
"ToastBackupUploadFailed": "Uploaden back-up mislukt",
"ToastBackupUploadSuccess": "Back-up geüpload",
+ "ToastBatchDeleteFailed": "Batch verwijderen mislukt",
+ "ToastBatchDeleteSuccess": "Batch verwijderen gelukt",
+ "ToastBatchQuickMatchFailed": "Batch Snel Vergelijken mislukt!",
+ "ToastBatchQuickMatchStarted": "Bulk Snel Vergelijken van {0} boeken gestart!",
"ToastBatchUpdateFailed": "Bulk-bijwerking mislukt",
"ToastBatchUpdateSuccess": "Bulk-bijwerking gelukt",
"ToastBookmarkCreateFailed": "Aanmaken boekwijzer mislukt",
"ToastBookmarkCreateSuccess": "boekwijzer toegevoegd",
- "ToastBookmarkRemoveFailed": "Verwijderen boekwijzer mislukt",
"ToastBookmarkRemoveSuccess": "Boekwijzer verwijderd",
- "ToastBookmarkUpdateFailed": "Bijwerken boekwijzer mislukt",
"ToastBookmarkUpdateSuccess": "Boekwijzer bijgewerkt",
- "ToastCachePurgeFailed": "Failed to purge cache",
- "ToastCachePurgeSuccess": "Cache purged successfully",
+ "ToastCachePurgeFailed": "Cache wissen is mislukt",
+ "ToastCachePurgeSuccess": "Cache succesvol verwijderd",
"ToastChaptersHaveErrors": "Hoofdstukken bevatten fouten",
"ToastChaptersMustHaveTitles": "Hoofdstukken moeten titels hebben",
- "ToastCollectionItemsRemoveFailed": "Verwijderen onderdeel (of onderdelen) uit collectie mislukt",
+ "ToastChaptersRemoved": "Hoofdstukken verwijderd",
+ "ToastChaptersUpdated": "Hoofdstukken bijgewerkt",
+ "ToastCollectionItemsAddFailed": "Item(s) toegevoegd aan collectie mislukt",
+ "ToastCollectionItemsAddSuccess": "Item(s) toegevoegd aan collectie gelukt",
"ToastCollectionItemsRemoveSuccess": "Onderdeel (of onderdelen) verwijderd uit collectie",
- "ToastCollectionRemoveFailed": "Verwijderen collectie mislukt",
"ToastCollectionRemoveSuccess": "Collectie verwijderd",
- "ToastCollectionUpdateFailed": "Bijwerken collectie mislukt",
"ToastCollectionUpdateSuccess": "Collectie bijgewerkt",
- "ToastDeleteFileFailed": "Failed to delete file",
- "ToastDeleteFileSuccess": "File deleted",
- "ToastFailedToLoadData": "Failed to load data",
- "ToastItemCoverUpdateFailed": "Bijwerken cover onderdeel mislukt",
+ "ToastCoverUpdateFailed": "Cover update mislukt",
+ "ToastDeleteFileFailed": "Bestand verwijderen mislukt",
+ "ToastDeleteFileSuccess": "Bestand verwijderd",
+ "ToastDeviceAddFailed": "Apparaat toevoegen mislukt",
+ "ToastDeviceNameAlreadyExists": "Er bestaat al een e-reader met die naam",
+ "ToastDeviceTestEmailFailed": "Het is niet gelukt om een test-e-mail te verzenden",
+ "ToastDeviceTestEmailSuccess": "Test e-mail verzonden",
+ "ToastEmailSettingsUpdateSuccess": "Emaill intellingen bijgewerkt",
+ "ToastEncodeCancelFailed": "Het is niet gelukt om het coderen te annuleren",
+ "ToastEncodeCancelSucces": "Encode geannuleerd",
+ "ToastEpisodeDownloadQueueClearFailed": "Wachtrij legen mislukt",
+ "ToastEpisodeDownloadQueueClearSuccess": "Aflevering download-wachtrij geleegt",
+ "ToastEpisodeUpdateSuccess": "{0} afleveringen bijgewerkt",
+ "ToastErrorCannotShare": "Kan niet native delen op dit apparaat",
+ "ToastFailedToLoadData": "Data laden mislukt",
+ "ToastFailedToMatch": "Match mislukt",
+ "ToastFailedToShare": "Delen mislukt",
+ "ToastFailedToUpdate": "Update mislukt",
+ "ToastInvalidImageUrl": "Ongeldige afbeeldings-URL",
+ "ToastInvalidMaxEpisodesToDownload": "Ongeldig maximum aantal afleveringen om te downloaden",
+ "ToastInvalidUrl": "Ongeldige URL",
"ToastItemCoverUpdateSuccess": "Cover onderdeel bijgewerkt",
- "ToastItemDetailsUpdateFailed": "Bijwerken details onderdeel mislukt",
+ "ToastItemDeletedFailed": "Item verwijderen mislukt",
+ "ToastItemDeletedSuccess": "Verwijderd item",
"ToastItemDetailsUpdateSuccess": "Details onderdeel bijgewerkt",
- "ToastItemDetailsUpdateUnneeded": "Geen bijwerking nodig voor details onderdeel",
"ToastItemMarkedAsFinishedFailed": "Markeren als Voltooid mislukt",
"ToastItemMarkedAsFinishedSuccess": "Onderdeel gemarkeerd als Voltooid",
"ToastItemMarkedAsNotFinishedFailed": "Markeren als Niet Voltooid mislukt",
"ToastItemMarkedAsNotFinishedSuccess": "Onderdeel gemarkeerd als Niet Voltooid",
+ "ToastItemUpdateSuccess": "Item bijgewerkt",
"ToastLibraryCreateFailed": "Bibliotheek aanmaken mislukt",
"ToastLibraryCreateSuccess": "Bibliotheek \"{0}\" aangemaakt",
"ToastLibraryDeleteFailed": "Bibliotheek verwijderen mislukt",
"ToastLibraryDeleteSuccess": "Bibliotheek verwijderd",
"ToastLibraryScanFailedToStart": "Starten scan mislukt",
"ToastLibraryScanStarted": "Scannen bibliotheek gestart",
- "ToastLibraryUpdateFailed": "Bijwerken bibliotheek mislukt",
"ToastLibraryUpdateSuccess": "Bibliotheek \"{0}\" bijgewerkt",
+ "ToastMatchAllAuthorsFailed": "Alle auteurs matchen mislukt",
+ "ToastMetadataFilesRemovedError": "Fout bij verwijderen van metadata. {0} bestanden",
+ "ToastMetadataFilesRemovedNoneFound": "Geen metadata. {0} bestanden gevonden in bibliotheek",
+ "ToastMetadataFilesRemovedNoneRemoved": "Geen metadata. {0} bestanden verwijderd",
+ "ToastMetadataFilesRemovedSuccess": "{0} metadata. {1} bestanden verwijderd",
+ "ToastMustHaveAtLeastOnePath": "Moet ten minste een pad hebben",
+ "ToastNameEmailRequired": "Naam en email zijn vereist",
+ "ToastNameRequired": "Naam is vereist",
+ "ToastNewEpisodesFound": "{0} nieuwe afleveringen gevonden",
+ "ToastNewUserCreatedFailed": "Account: \"{0}\" aanmaken mislukt",
+ "ToastNewUserCreatedSuccess": "Nieuw account aangemaakt",
+ "ToastNewUserLibraryError": "Moet ten minste een bibliotheek selecteren",
+ "ToastNewUserPasswordError": "Moet een wachtwoord hebben, enkel root gebruiker kan een leeg wachtwoord gebruiken",
+ "ToastNewUserTagError": "Moet ten minste een tag selecteren",
+ "ToastNewUserUsernameError": "Voer een gebruikersnaam in",
+ "ToastNoNewEpisodesFound": "Geen nieuwe afleveringen gevonden",
+ "ToastNoUpdatesNecessary": "Geen updates nodig",
+ "ToastNotificationCreateFailed": "Nieuwe melding aanmaken mislukt",
+ "ToastNotificationDeleteFailed": "Melding verwijderen mislukt",
+ "ToastNotificationFailedMaximum": "Maximum aantal pogingen moet >=0",
+ "ToastNotificationQueueMaximum": "Maximale meldingen wachtrij moet >=0",
+ "ToastNotificationSettingsUpdateSuccess": "Meldingsinstellingen bijgewerkt",
+ "ToastNotificationTestTriggerFailed": "Het is niet gelukt om een testmelding te activeren",
+ "ToastNotificationTestTriggerSuccess": "Geactiveerde testmelding",
+ "ToastNotificationUpdateSuccess": "Melding bijgewerkt",
"ToastPlaylistCreateFailed": "Aanmaken afspeellijst mislukt",
"ToastPlaylistCreateSuccess": "Afspeellijst aangemaakt",
- "ToastPlaylistRemoveFailed": "Verwijderen afspeellijst mislukt",
"ToastPlaylistRemoveSuccess": "Afspeellijst verwijderd",
- "ToastPlaylistUpdateFailed": "Afspeellijst bijwerken mislukt",
"ToastPlaylistUpdateSuccess": "Afspeellijst bijgewerkt",
"ToastPodcastCreateFailed": "Podcast aanmaken mislukt",
"ToastPodcastCreateSuccess": "Podcast aangemaakt",
- "ToastRemoveItemFromCollectionFailed": "Onderdeel verwijderen uit collectie mislukt",
- "ToastRemoveItemFromCollectionSuccess": "Onderdeel verwijderd uit collectie",
+ "ToastPodcastGetFeedFailed": "Podcast feed ophalen mislukt",
+ "ToastPodcastNoEpisodesInFeed": "Geen afleveringen gevonden in RSS feed",
+ "ToastPodcastNoRssFeed": "Podcast heeft geen RSS feed",
+ "ToastProgressIsNotBeingSynced": "De voortgang wordt niet gesynchroniseerd, start het afspelen opnieuw",
+ "ToastProviderCreatedFailed": "Provider toevoegen mislukt",
+ "ToastProviderCreatedSuccess": "Nieuwe provider toegevoegd",
+ "ToastProviderNameAndUrlRequired": "Naam en URL vereist",
+ "ToastProviderRemoveSuccess": "Provider verwijderd",
"ToastRSSFeedCloseFailed": "Sluiten RSS-feed mislukt",
"ToastRSSFeedCloseSuccess": "RSS-feed gesloten",
+ "ToastRemoveFailed": "Verwijderen mislukt",
+ "ToastRemoveItemFromCollectionFailed": "Onderdeel verwijderen uit collectie mislukt",
+ "ToastRemoveItemFromCollectionSuccess": "Onderdeel verwijderd uit collectie",
+ "ToastRemoveItemsWithIssuesFailed": "Verwijderen van bibliotheekitems met problemen mislukt",
+ "ToastRemoveItemsWithIssuesSuccess": "Bibliotheekitems met problemen verwijderd",
+ "ToastRenameFailed": "Hernoemen mislukt",
+ "ToastRescanFailed": "Opnieuw scannen mislukt voor {0}",
+ "ToastRescanRemoved": "Opnieuw scannen voltooid, item is verwijderd",
+ "ToastRescanUpToDate": "Rescan voltooid, item is up to date",
+ "ToastRescanUpdated": "Rescan voltooid, item is geupdated",
+ "ToastScanFailed": "Bibliotheek item scannen mislukt",
+ "ToastSelectAtLeastOneUser": "Selecteer ten minste een gebruiker",
"ToastSendEbookToDeviceFailed": "Ebook naar apparaat sturen mislukt",
"ToastSendEbookToDeviceSuccess": "Ebook verstuurd naar apparaat \"{0}\"",
"ToastSeriesUpdateFailed": "Bijwerken serie mislukt",
"ToastSeriesUpdateSuccess": "Bijwerken serie gelukt",
- "ToastServerSettingsUpdateFailed": "Failed to update server settings",
- "ToastServerSettingsUpdateSuccess": "Server settings updated",
+ "ToastServerSettingsUpdateSuccess": "Server instellingen bijgewerkt",
+ "ToastSessionCloseFailed": "Sessie sluiten mislukt",
"ToastSessionDeleteFailed": "Verwijderen sessie mislukt",
"ToastSessionDeleteSuccess": "Sessie verwijderd",
+ "ToastSleepTimerDone": "Slaap timer voltooid... zZzzZz",
+ "ToastSlugMustChange": "Slug bevat ongeldige symbolen",
+ "ToastSlugRequired": "Slug is vereist",
"ToastSocketConnected": "Socket verbonden",
"ToastSocketDisconnected": "Socket niet verbonden",
"ToastSocketFailedToConnect": "Verbinding Socket mislukt",
- "ToastSortingPrefixesEmptyError": "Must have at least 1 sorting prefix",
- "ToastSortingPrefixesUpdateFailed": "Failed to update sorting prefixes",
- "ToastSortingPrefixesUpdateSuccess": "Sorting prefixes updated ({0} items)",
+ "ToastSortingPrefixesEmptyError": "Moet ten minste 1 sorteer-prefix bevatten",
+ "ToastSortingPrefixesUpdateSuccess": "Sorteer prefixes geupdated ({0} items)",
+ "ToastTitleRequired": "Titel is vereist",
+ "ToastUnknownError": "Onbekende fout",
+ "ToastUnlinkOpenIdFailed": "Gebruiker ontkoppelen van OpenID mislukt",
+ "ToastUnlinkOpenIdSuccess": "Gebruiker ontkoppeld van OpenID",
"ToastUserDeleteFailed": "Verwijderen gebruiker mislukt",
- "ToastUserDeleteSuccess": "Gebruiker verwijderd"
-}
\ No newline at end of file
+ "ToastUserDeleteSuccess": "Gebruiker verwijderd",
+ "ToastUserPasswordChangeSuccess": "Wachtwoord succesvol gewijzigd",
+ "ToastUserPasswordMismatch": "Wachtwoorden komen niet overeen",
+ "ToastUserPasswordMustChange": "Het nieuwe wachtwoord kan niet overeenkomen met het oude wachtwoord",
+ "ToastUserRootRequireName": "U moet een root-gebruikersnaam invoeren"
+}
diff --git a/client/strings/no.json b/client/strings/no.json
index 4c4be82fa..01be88ef4 100644
--- a/client/strings/no.json
+++ b/client/strings/no.json
@@ -1,14 +1,14 @@
{
"ButtonAdd": "Legg til",
"ButtonAddChapters": "Legg til kapittel",
- "ButtonAddDevice": "Add Device",
- "ButtonAddLibrary": "Add Library",
+ "ButtonAddDevice": "Legg til enhet",
+ "ButtonAddLibrary": "Legg til bibliotek",
"ButtonAddPodcasts": "Legg til podcast",
- "ButtonAddUser": "Add User",
"ButtonAddYourFirstLibrary": "Legg til ditt første bibliotek",
"ButtonApply": "Bruk",
"ButtonApplyChapters": "Bruk kapittel",
"ButtonAuthors": "Forfatter",
+ "ButtonBack": "Tilbake",
"ButtonBrowseForFolder": "Bla gjennom mappe",
"ButtonCancel": "Avbryt",
"ButtonCancelEncode": "Avbryt Encode",
@@ -32,8 +32,8 @@
"ButtonHide": "Gjøm",
"ButtonHome": "Hjem",
"ButtonIssues": "Problemer",
- "ButtonJumpBackward": "Jump Backward",
- "ButtonJumpForward": "Jump Forward",
+ "ButtonJumpBackward": "Hopp Bakover",
+ "ButtonJumpForward": "Hopp Fremover",
"ButtonLatest": "Siste",
"ButtonLibrary": "Bibliotek",
"ButtonLogout": "Logg ut",
@@ -43,36 +43,32 @@
"ButtonMatchAllAuthors": "Søk opp alle forfattere",
"ButtonMatchBooks": "Søk opp bøker",
"ButtonNevermind": "Avbryt",
- "ButtonNext": "Next",
- "ButtonNextChapter": "Next Chapter",
- "ButtonOk": "Ok",
+ "ButtonNextChapter": "Neste Kapittel",
"ButtonOpenFeed": "Åpne Feed",
"ButtonOpenManager": "Åpne behandler",
- "ButtonPause": "Pause",
"ButtonPlay": "Spill av",
"ButtonPlaying": "Spiller av",
- "ButtonPlaylists": "Spilleliste",
- "ButtonPrevious": "Previous",
- "ButtonPreviousChapter": "Previous Chapter",
+ "ButtonPlaylists": "Spillelister",
+ "ButtonPrevious": "Forrige",
+ "ButtonPreviousChapter": "Forrige Kapittel",
"ButtonPurgeAllCache": "Tøm alle mellomlager",
"ButtonPurgeItemsCache": "Tøm mellomlager",
- "ButtonPurgeMediaProgress": "Slett medie fremgang",
"ButtonQueueAddItem": "Legg til kø",
"ButtonQueueRemoveItem": "Fjern fra kø",
+ "ButtonQuickEmbedMetadata": "Hurtig Innbygging Av Metadata",
"ButtonQuickMatch": "Kjapt søk",
+ "ButtonReScan": "Skann på nytt",
"ButtonRead": "Les",
- "ButtonReadLess": "Read less",
- "ButtonReadMore": "Read more",
- "ButtonRefresh": "Refresh",
+ "ButtonReadLess": "Les Mindre",
+ "ButtonReadMore": "Les Mer",
+ "ButtonRefresh": "Oppdater",
"ButtonRemove": "Fjern",
"ButtonRemoveAll": "Fjern alle",
"ButtonRemoveAllLibraryItems": "Fjern alle bibliotekobjekter",
"ButtonRemoveFromContinueListening": "Fjern fra Fortsett å lytte",
"ButtonRemoveFromContinueReading": "Fjern fra Fortsett å lese",
"ButtonRemoveSeriesFromContinueSeries": "Fjern serie fra Fortsett serie",
- "ButtonReScan": "Skann på nytt",
"ButtonReset": "Nullstill",
- "ButtonResetToDefault": "Reset to default",
"ButtonRestore": "Gjenopprett",
"ButtonSave": "Lagre",
"ButtonSaveAndClose": "Lagre og lukk",
@@ -83,13 +79,13 @@
"ButtonSelectFolderPath": "Velg mappe",
"ButtonSeries": "Serier",
"ButtonSetChaptersFromTracks": "Sett kapittel fra spor",
- "ButtonShare": "Share",
+ "ButtonShare": "Del",
"ButtonShiftTimes": "Forskyv tider",
"ButtonShow": "Vis",
"ButtonStartM4BEncode": "Start M4B Koding",
"ButtonStartMetadataEmbed": "Start Metadata innbaking",
+ "ButtonStats": "Statistikk",
"ButtonSubmit": "Send inn",
- "ButtonTest": "Test",
"ButtonUpload": "Last opp",
"ButtonUploadBackup": "Last opp sikkerhetskopi",
"ButtonUploadCover": "Last opp cover",
@@ -98,15 +94,12 @@
"ButtonUserEdit": "Rediger bruker {0}",
"ButtonViewAll": "Vis alt",
"ButtonYes": "Ja",
- "ErrorUploadFetchMetadataAPI": "Error fetching metadata",
- "ErrorUploadFetchMetadataNoResults": "Could not fetch metadata - try updating title and/or author",
- "ErrorUploadLacksTitle": "Must have a title",
+ "ErrorUploadFetchMetadataAPI": "Feil ved innhenting av metadata",
"HeaderAccount": "Konto",
"HeaderAdvanced": "Avansert",
"HeaderAppriseNotificationSettings": "Apprise notifikasjonsinstillinger",
- "HeaderAudiobookTools": "Lydbok Filbehandlingsverktøy",
"HeaderAudioTracks": "Lydspor",
- "HeaderAuthentication": "Authentication",
+ "HeaderAudiobookTools": "Lydbok Filbehandlingsverktøy",
"HeaderBackups": "Sikkerhetskopier",
"HeaderChangePassword": "Bytt passord",
"HeaderChapters": "Kapittel",
@@ -115,7 +108,6 @@
"HeaderCollectionItems": "Samlingsgjenstander",
"HeaderCover": "Omslag",
"HeaderCurrentDownloads": "Aktive nedlastinger",
- "HeaderCustomMetadataProviders": "Custom Metadata Providers",
"HeaderDetails": "Detaljer",
"HeaderDownloadQueue": "Last ned kø",
"HeaderEbookFiles": "Ebook filer",
@@ -142,26 +134,25 @@
"HeaderManageTags": "Behandle tags",
"HeaderMapDetails": "Kartleggingsdetaljer",
"HeaderMatch": "Tilpasse",
- "HeaderMetadataOrderOfPrecedence": "Metadata order of precedence",
+ "HeaderMetadataOrderOfPrecedence": "Prioriteringsrekkefølge for metadata",
"HeaderMetadataToEmbed": "Metadata å bake inn",
"HeaderNewAccount": "Ny konto",
"HeaderNewLibrary": "Ny bibliotek",
"HeaderNotifications": "Notifikasjoner",
- "HeaderOpenIDConnectAuthentication": "OpenID Connect Authentication",
+ "HeaderOpenIDConnectAuthentication": "Autentisering med OpenID Connect",
"HeaderOpenRSSFeed": "Åpne RSS Feed",
"HeaderOtherFiles": "Andre filer",
- "HeaderPasswordAuthentication": "Password Authentication",
"HeaderPermissions": "Rettigheter",
"HeaderPlayerQueue": "Spiller kø",
"HeaderPlaylist": "Spilleliste",
"HeaderPlaylistItems": "Spillelisteelement",
"HeaderPodcastsToAdd": "Podcaster å legge til",
"HeaderPreviewCover": "Forhåndsvis omslag",
- "HeaderRemoveEpisode": "Fjern episode",
- "HeaderRemoveEpisodes": "Fjern {0} episoder",
"HeaderRSSFeedGeneral": "RSS Detailer",
"HeaderRSSFeedIsOpen": "RSS Feed er åpen",
"HeaderRSSFeeds": "RSS Feeder",
+ "HeaderRemoveEpisode": "Fjern episode",
+ "HeaderRemoveEpisodes": "Fjern {0} episoder",
"HeaderSavedMediaProgress": "Lagret mediefremgang",
"HeaderSchedule": "Timeplan",
"HeaderScheduleLibraryScans": "Planlegg automatisk bibliotek skann",
@@ -186,28 +177,19 @@
"HeaderUpdateDetails": "Oppdater detaljer",
"HeaderUpdateLibrary": "Oppdater bibliotek",
"HeaderUsers": "Brukere",
- "HeaderYearReview": "Year {0} in Review",
"HeaderYourStats": "Din statistikk",
"LabelAbridged": "Forkortet",
- "LabelAbridgedChecked": "Abridged (checked)",
- "LabelAbridgedUnchecked": "Unabridged (unchecked)",
- "LabelAccessibleBy": "Accessible by",
"LabelAccountType": "Kontotype",
- "LabelAccountTypeAdmin": "Admin",
"LabelAccountTypeGuest": "Gjest",
"LabelAccountTypeUser": "Bruker",
"LabelActivity": "Aktivitet",
- "LabelAdded": "Lagt til",
- "LabelAddedAt": "Dato lagt til ",
"LabelAddToCollection": "Legg til i samling",
"LabelAddToCollectionBatch": "Legg {0} bøker til samling",
"LabelAddToPlaylist": "Legg til i spilleliste",
"LabelAddToPlaylistBatch": "Legg {0} enheter til i spilleliste",
- "LabelAdminUsersOnly": "Admin users only",
+ "LabelAddedAt": "Lagt Til",
"LabelAll": "Alle",
"LabelAllUsers": "Alle brukere",
- "LabelAllUsersExcludingGuests": "All users excluding guests",
- "LabelAllUsersIncludingGuests": "All users including guests",
"LabelAlreadyInYourLibrary": "Allerede i biblioteket",
"LabelAppend": "Legge til",
"LabelAuthor": "Forfatter",
@@ -215,14 +197,7 @@
"LabelAuthorLastFirst": "Forfatter (Etternavn Fornavn)",
"LabelAuthors": "Forfattere",
"LabelAutoDownloadEpisodes": "Last ned episoder automatisk",
- "LabelAutoFetchMetadata": "Auto Fetch Metadata",
- "LabelAutoFetchMetadataHelp": "Fetches metadata for title, author, and series to streamline uploading. Additional metadata may have to be matched after upload.",
- "LabelAutoLaunch": "Auto Launch",
- "LabelAutoLaunchDescription": "Redirect to the auth provider automatically when navigating to the login page (manual override path /login?autoLaunch=0)",
- "LabelAutoRegister": "Auto Register",
- "LabelAutoRegisterDescription": "Automatically create new users after logging in",
"LabelBackToUser": "Tilbake til bruker",
- "LabelBackupLocation": "Backup Location",
"LabelBackupsEnableAutomaticBackups": "Aktiver automatisk sikkerhetskopi",
"LabelBackupsEnableAutomaticBackupsHelp": "Sikkerhetskopier lagret under /metadata/backups",
"LabelBackupsMaxBackupSize": "Maks sikkerhetskopi størrelse (i GB)",
@@ -231,14 +206,11 @@
"LabelBackupsNumberToKeepHelp": "Kun 1 sikkerhetskopi vil bli fjernet om gangen, hvis du allerede har flere sikkerhetskopier enn dette bør du fjerne de manuelt.",
"LabelBitrate": "Bithastighet",
"LabelBooks": "Bøker",
- "LabelButtonText": "Button Text",
- "LabelByAuthor": "by {0}",
"LabelChangePassword": "Endre passord",
"LabelChannels": "Kanaler",
+ "LabelChapterTitle": "Kapittel tittel",
"LabelChapters": "Kapitler",
"LabelChaptersFound": "kapitler funnet",
- "LabelChapterTitle": "Kapittel tittel",
- "LabelClickForMoreInfo": "Click for more info",
"LabelClosePlayer": "Lukk spiller",
"LabelCodec": "Kodek",
"LabelCollapseSeries": "Minimer serier",
@@ -246,9 +218,9 @@
"LabelCollections": "Samlings",
"LabelComplete": "Fullfør",
"LabelConfirmPassword": "Bekreft passord",
- "LabelContinueListening": "Forsett å lytte",
- "LabelContinueReading": "Fortsett å lese",
- "LabelContinueSeries": "Fortsett serie",
+ "LabelContinueListening": "Fortsett lytting",
+ "LabelContinueReading": "Fortsett lesing",
+ "LabelContinueSeries": "Fortsett serier",
"LabelCover": "Omslag",
"LabelCoverImageURL": "Omslagsbilde URL",
"LabelCreatedAt": "Dato opprettet",
@@ -257,25 +229,21 @@
"LabelCurrently": "Nåværende:",
"LabelCustomCronExpression": "Tilpasset Cron utrykk:",
"LabelDatetime": "Dato tid",
- "LabelDeleteFromFileSystemCheckbox": "Delete from file system (uncheck to only remove from database)",
+ "LabelDays": "Dager",
"LabelDescription": "Beskrivelse",
"LabelDeselectAll": "Fjern valg",
"LabelDevice": "Enhet",
"LabelDeviceInfo": "Enhetsinformasjon",
- "LabelDeviceIsAvailableTo": "Device is available to...",
"LabelDirectory": "Mappe",
"LabelDiscFromFilename": "Disk fra filnavn",
"LabelDiscFromMetadata": "Disk fra metadata",
- "LabelDiscover": "Oppdag",
+ "LabelDiscover": "Oppdagelse",
"LabelDownload": "Last ned",
"LabelDownloadNEpisodes": "Last ned {0} episoder",
"LabelDuration": "Varighet",
- "LabelDurationComparisonExactMatch": "(exact match)",
- "LabelDurationComparisonLonger": "({0} longer)",
- "LabelDurationComparisonShorter": "({0} shorter)",
"LabelDurationFound": "Varighet funnet:",
"LabelEbook": "Ebok",
- "LabelEbooks": "Ebøker",
+ "LabelEbooks": "E-bøker",
"LabelEdit": "Rediger",
"LabelEmail": "Epost",
"LabelEmailSettingsFromAddress": "Fra Adresse",
@@ -285,15 +253,13 @@
"LabelEmbeddedCover": "Bak inn omslag",
"LabelEnable": "Aktiver",
"LabelEnd": "Slutt",
- "LabelEpisode": "Episode",
+ "LabelEndOfChapter": "Slutt på kapittel",
"LabelEpisodeTitle": "Episode tittel",
"LabelEpisodeType": "Episode type",
"LabelExample": "Eksempel",
"LabelExplicit": "Eksplisitt",
- "LabelExplicitChecked": "Explicit (checked)",
- "LabelExplicitUnchecked": "Not Explicit (unchecked)",
+ "LabelExportOPML": "Eksporter OPML",
"LabelFeedURL": "Feed Adresse",
- "LabelFetchingMetadata": "Fetching Metadata",
"LabelFile": "Fil",
"LabelFileBirthtime": "Fil Opprettelsesdato",
"LabelFileModified": "Fil Endret",
@@ -303,25 +269,22 @@
"LabelFinished": "Fullført",
"LabelFolder": "Mappe",
"LabelFolders": "Mapper",
- "LabelFontBold": "Bold",
+ "LabelFontBoldness": "Skrifttykkelse",
"LabelFontFamily": "Fontfamilie",
- "LabelFontItalic": "Italic",
"LabelFontScale": "Font størrelse",
- "LabelFontStrikethrough": "Strikethrough",
- "LabelFormat": "Format",
"LabelGenre": "Sjanger",
"LabelGenres": "Sjangers",
"LabelHardDeleteFile": "Tving sletting av fil",
- "LabelHasEbook": "Har ebok",
- "LabelHasSupplementaryEbook": "Har supplerende ebok",
- "LabelHighestPriority": "Highest priority",
+ "LabelHasEbook": "Har e-bok",
+ "LabelHasSupplementaryEbook": "Har komplimentær e-bok",
+ "LabelHideSubtitles": "Skjul undertekster",
"LabelHost": "Tjener",
"LabelHour": "Time",
+ "LabelHours": "Timer",
"LabelIcon": "Ikon",
- "LabelImageURLFromTheWeb": "Image URL from the web",
+ "LabelInProgress": "I gang",
"LabelIncludeInTracklist": "Inkluder i sporliste",
"LabelIncomplete": "Ufullstendig",
- "LabelInProgress": "I gang",
"LabelInterval": "Intervall",
"LabelIntervalCustomDailyWeekly": "Egendefinert daglig/ukentlig",
"LabelIntervalEvery12Hours": "Hver 12. timer",
@@ -341,7 +304,7 @@
"LabelLastTime": "Siste tid",
"LabelLastUpdate": "Siste oppdatering",
"LabelLayout": "Oppsett",
- "LabelLayoutSinglePage": "Enkel side",
+ "LabelLayoutSinglePage": "Enkeltside",
"LabelLayoutSplitPage": "Del side",
"LabelLess": "Mindre",
"LabelLibrariesAccessibleToUser": "Biblioteker tilgjengelig for bruker",
@@ -350,59 +313,44 @@
"LabelLibraryName": "Bibliotek navn",
"LabelLimit": "Begrensning",
"LabelLineSpacing": "Linjemellomrom",
- "LabelListenAgain": "Lytt på nytt",
- "LabelLogLevelDebug": "Debug",
- "LabelLogLevelInfo": "Info",
- "LabelLogLevelWarn": "Warn",
+ "LabelListenAgain": "Lytt igjen",
"LabelLookForNewEpisodesAfterDate": "Se etter nye episoder etter denne datoen",
- "LabelLowestPriority": "Lowest Priority",
- "LabelMatchExistingUsersBy": "Match existing users by",
- "LabelMatchExistingUsersByDescription": "Used for connecting existing users. Once connected, users will be matched by a unique id from your SSO provider",
"LabelMediaPlayer": "Mediespiller",
"LabelMediaType": "Medie type",
- "LabelMetadataOrderOfPrecedenceDescription": "Higher priority metadata sources will override lower priority metadata sources",
"LabelMetadataProvider": "Metadata Leverandør",
- "LabelMetaTag": "Meta Tag",
- "LabelMetaTags": "Meta Tags",
"LabelMinute": "Minutt",
"LabelMissing": "Mangler",
- "LabelMissingEbook": "Has no ebook",
- "LabelMissingSupplementaryEbook": "Has no supplementary ebook",
- "LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs",
- "LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is audiobookshelf://oauth, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (*) as the sole entry permits any URI.",
"LabelMore": "Mer",
"LabelMoreInfo": "Mer info",
"LabelName": "Navn",
"LabelNarrator": "Forteller",
"LabelNarrators": "Fortellere",
"LabelNew": "Ny",
+ "LabelNewPassword": "Nytt passord",
"LabelNewestAuthors": "Nyeste forfattere",
"LabelNewestEpisodes": "Nyeste episoder",
- "LabelNewPassword": "Nytt passord",
"LabelNextBackupDate": "Neste sikkerhetskopi dato",
"LabelNextScheduledRun": "Neste planlagte kjøring",
"LabelNoEpisodesSelected": "Ingen episoder valgt",
- "LabelNotes": "Notat",
"LabelNotFinished": "Ikke fullført",
+ "LabelNotStarted": "Ikke startet",
+ "LabelNotes": "Notat",
"LabelNotificationAppriseURL": "Apprise URL(er)",
"LabelNotificationAvailableVariables": "Tilgjengelige variabler",
"LabelNotificationBodyTemplate": "Kroppsmal",
"LabelNotificationEvent": "Notifikasjons hendelse",
+ "LabelNotificationTitleTemplate": "Tittel mal",
"LabelNotificationsMaxFailedAttempts": "Maks mislykkede forsøk",
"LabelNotificationsMaxFailedAttemptsHelp": "Notifikasjoner er deaktivert når de mislykkes på sende dette flere ganger",
"LabelNotificationsMaxQueueSize": "Maks kø lengde for Notifikasjonshendelser",
"LabelNotificationsMaxQueueSizeHelp": "Hendelser er begrenset til avfyre 1 gang per sekund. Hendelser vil bli ignorert om køen er full. Dette forhindrer Notifikasjon spam.",
- "LabelNotificationTitleTemplate": "Tittel mal",
- "LabelNotStarted": "Ikke startet",
"LabelNumberOfBooks": "Antall bøker",
"LabelNumberOfEpisodes": "Antall episoder",
- "LabelOpenIDAdvancedPermsClaimDescription": "Name of the OpenID claim that contains advanced permissions for user actions within the application which will apply to non-admin roles (if configured). If the claim is missing from the response, access to ABS will be denied. If a single option is missing, it will be treated as false. Ensure the identity provider's claim matches the expected structure:",
- "LabelOpenIDClaims": "Leave the following options empty to disable advanced group and permissions assignment, automatically assigning 'User' group then.",
- "LabelOpenIDGroupClaimDescription": "Name of the OpenID claim that contains a list of the user's groups. Commonly referred to as groups. If configured, the application will automatically assign roles based on the user's group memberships, provided that these groups are named case-insensitively 'admin', 'user', or 'guest' in the claim. The claim should contain a list, and if a user belongs to multiple groups, the application will assign the role corresponding to the highest level of access. If no group matches, access will be denied.",
"LabelOpenRSSFeed": "Åpne RSS Feed",
"LabelOverwrite": "Overskriv",
"LabelPassword": "Passord",
"LabelPath": "Sti",
+ "LabelPermanent": "Fast",
"LabelPermissionsAccessAllLibraries": "Har tilgang til alle bibliotek",
"LabelPermissionsAccessAllTags": "Har til gang til alle tags",
"LabelPermissionsAccessExplicitContent": "Har tilgang til eksplisitt material",
@@ -410,54 +358,44 @@
"LabelPermissionsDownload": "Kan laste ned",
"LabelPermissionsUpdate": "Kan oppdatere",
"LabelPermissionsUpload": "Kan laste opp",
- "LabelPersonalYearReview": "Your Year in Review ({0})",
"LabelPhotoPathURL": "Bilde sti/URL",
- "LabelPlaylists": "Spilleliste",
"LabelPlayMethod": "Avspillingsmetode",
- "LabelPodcast": "Podcast",
- "LabelPodcasts": "Podcaster",
+ "LabelPlaylists": "Spilleliste",
"LabelPodcastSearchRegion": "Podcast-søkeområde",
"LabelPodcastType": "Podcast type",
- "LabelPort": "Port",
+ "LabelPodcasts": "Podcaster",
"LabelPrefixesToIgnore": "Prefiks som skal ignoreres (skiller ikke mellom store og små bokstaver)",
"LabelPreventIndexing": "Forhindre at din feed fra å bli indeksert av iTunes og Google podcast kataloger",
"LabelPrimaryEbook": "Primær ebok",
"LabelProgress": "Framgang",
"LabelProvider": "Tilbyder",
"LabelPubDate": "Publiseringsdato",
- "LabelPublisher": "Forlegger",
"LabelPublishYear": "Publikasjonsår",
- "LabelRead": "Les",
- "LabelReadAgain": "Les igjen",
- "LabelReadEbookWithoutProgress": "Les ebok uten å beholde fremgang",
- "LabelRecentlyAdded": "Nylig lagt til",
- "LabelRecentSeries": "Nylige serier",
- "LabelRecommended": "Anbefalte",
- "LabelRedo": "Redo",
- "LabelRegion": "Region",
- "LabelReleaseDate": "Utgivelsesdato",
- "LabelRemoveCover": "Fjern omslag",
- "LabelRowsPerPage": "Rows per page",
- "LabelRSSFeedCustomOwnerEmail": "Tilpasset eier Epost",
+ "LabelPublisher": "Forlegger",
+ "LabelRSSFeedCustomOwnerEmail": "Tilpasset eier e-post",
"LabelRSSFeedCustomOwnerName": "Tilpasset eier Navn",
"LabelRSSFeedOpen": "RSS Feed åpne",
"LabelRSSFeedPreventIndexing": "Forhindre indeksering",
- "LabelRSSFeedSlug": "RSS Feed Slug",
- "LabelRSSFeedURL": "RSS Feed URL",
+ "LabelRSSFeedSlug": "RSS-informasjonskanalunderadresse",
+ "LabelRead": "Les",
+ "LabelReadAgain": "Les igjen",
+ "LabelReadEbookWithoutProgress": "Les ebok uten å beholde fremgang",
+ "LabelRecentSeries": "Nylige serier",
+ "LabelRecentlyAdded": "Nylig tillagt",
+ "LabelRecommended": "Anbefalte",
+ "LabelReleaseDate": "Utgivelsesdato",
+ "LabelRemoveCover": "Fjern omslag",
"LabelSearchTerm": "Søkeord",
"LabelSearchTitle": "Søk tittel",
"LabelSearchTitleOrASIN": "Søk tittel eller ASIN",
"LabelSeason": "Sesong",
- "LabelSelectAll": "Select all",
"LabelSelectAllEpisodes": "Velg alle episoder",
"LabelSelectEpisodesShowing": "Velg {0} episoder vist",
- "LabelSelectUsers": "Select users",
"LabelSendEbookToDevice": "Send Ebok til...",
"LabelSequence": "Sekvens",
"LabelSeries": "Serier",
"LabelSeriesName": "Serier Navn",
"LabelSeriesProgress": "Serier fremgang",
- "LabelServerYearReview": "Server Year in Review ({0})",
"LabelSetEbookAsPrimary": "Sett som primær",
"LabelSetEbookAsSupplementary": "Sett som supplerende",
"LabelSettingsAudiobooksOnly": "Kun lydbøker",
@@ -471,8 +409,6 @@
"LabelSettingsEnableWatcher": "Aktiver overvåker",
"LabelSettingsEnableWatcherForLibrary": "Aktiver mappe overvåker for bibliotek",
"LabelSettingsEnableWatcherHelp": "Aktiverer automatisk opprettelse/oppdatering av enheter når filendringer er oppdaget. *Krever restart av server*",
- "LabelSettingsEpubsAllowScriptedContent": "Allow scripted content in epubs",
- "LabelSettingsEpubsAllowScriptedContentHelp": "Allow epub files to execute scripts. It is recommended to keep this setting disabled unless you trust the source of the epub files.",
"LabelSettingsExperimentalFeatures": "Eksperimentelle funksjoner",
"LabelSettingsExperimentalFeaturesHelp": "Funksjoner under utvikling som kan trenge din tilbakemelding og hjelp med testing. Klikk for å åpne GitHub diskusjon.",
"LabelSettingsFindCovers": "Finn omslag",
@@ -481,8 +417,6 @@
"LabelSettingsHideSingleBookSeriesHelp": "Serier som har kun en bok vil bli gjemt på serie- og hjemmeside hyllen.",
"LabelSettingsHomePageBookshelfView": "Hjemmeside bruk bokhyllevisning",
"LabelSettingsLibraryBookshelfView": "Bibliotek bruk bokhyllevisning",
- "LabelSettingsOnlyShowLaterBooksInContinueSeries": "Skip earlier books in Continue Series",
- "LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "The Continue Series home page shelf shows the first book not started in series that have at least one book finished and no books in progress. Enabling this setting will continue series from the furthest completed book instead of the first book not started.",
"LabelSettingsParseSubtitles": "Analyser undertekster",
"LabelSettingsParseSubtitlesHelp": "Trekk ut undertekster fra lydbok mappenavn. undertekster må være separert med \" - \" f.eks. \"Boktittel - Undertekst her\" har Undertekst \"Undertekst her\"",
"LabelSettingsPreferMatchedMetadata": "Foretrekk funnet metadata",
@@ -498,15 +432,14 @@
"LabelSettingsStoreMetadataWithItem": "Lagre metadata med gjenstand",
"LabelSettingsStoreMetadataWithItemHelp": "Som standard vil metadata bli lagret under /metadata/items, aktiveres dette valget vil metadata bli lagret i samme mappe som gjenstanden",
"LabelSettingsTimeFormat": "Tid format",
+ "LabelShare": "Dele",
+ "LabelShareURL": "Dele URL",
"LabelShowAll": "Vis alt",
- "LabelShowSeconds": "Show seconds",
"LabelSize": "Størrelse",
"LabelSleepTimer": "Sove-timer",
- "LabelSlug": "Slug",
- "LabelStart": "Start",
+ "LabelStartTime": "Start Tid",
"LabelStarted": "Startet",
"LabelStartedAt": "Startet",
- "LabelStartTime": "Start Tid",
"LabelStatsAudioTracks": "Lydspor",
"LabelStatsAuthors": "Forfattere",
"LabelStatsBestDay": "Beste dag",
@@ -524,19 +457,15 @@
"LabelStatsWeekListening": "Uker lyttet",
"LabelSubtitle": "undertekster",
"LabelSupportedFileTypes": "Støttede filtyper",
- "LabelTag": "Tag",
"LabelTags": "Tagger",
"LabelTagsAccessibleToUser": "Tagger tilgjengelig for bruker",
"LabelTagsNotAccessibleToUser": "Tagger ikke tilgjengelig for bruker",
"LabelTasks": "Oppgaver som kjører",
- "LabelTextEditorBulletedList": "Bulleted list",
- "LabelTextEditorLink": "Link",
- "LabelTextEditorNumberedList": "Numbered list",
- "LabelTextEditorUnlink": "Unlink",
"LabelTheme": "Tema",
"LabelThemeDark": "Mørk",
"LabelThemeLight": "Lys",
"LabelTimeBase": "Tidsbase",
+ "LabelTimeInMinutes": "Timer i minutter",
"LabelTimeListened": "Tid lyttet",
"LabelTimeListenedToday": "Tid lyttet idag",
"LabelTimeRemaining": "{0} gjennstående",
@@ -556,18 +485,15 @@
"LabelTracksMultiTrack": "Flerspor",
"LabelTracksNone": "Ingen spor",
"LabelTracksSingleTrack": "Enkelspor",
- "LabelType": "Type",
"LabelUnabridged": "Uavkortet",
- "LabelUndo": "Undo",
"LabelUnknown": "Ukjent",
"LabelUpdateCover": "Oppdater omslag",
"LabelUpdateCoverHelp": "Tillat overskriving av eksisterende omslag for de valgte bøkene når en lik bok er funnet",
- "LabelUpdatedAt": "Oppdatert",
"LabelUpdateDetails": "Oppdater detaljer",
"LabelUpdateDetailsHelp": "Tillat overskriving av eksisterende detaljer for de valgte bøkene når en lik bok er funnet",
+ "LabelUpdatedAt": "Oppdatert",
"LabelUploaderDragAndDrop": "Dra og slipp filer eller mapper",
"LabelUploaderDropFiles": "Slipp filer",
- "LabelUploaderItemFetchMetadataHelp": "Automatically fetch title, author, and series",
"LabelUseChapterTrack": "Bruk kapittelspor",
"LabelUseFullTrack": "Bruke hele sporet",
"LabelUser": "Bruker",
@@ -579,8 +505,6 @@
"LabelViewQueue": "Vis spillerkø",
"LabelVolume": "Volum",
"LabelWeekdaysToRun": "Ukedager å kjøre",
- "LabelYearReviewHide": "Hide Year in Review",
- "LabelYearReviewShow": "See Year in Review",
"LabelYourAudiobookDuration": "Din lydbok lengde",
"LabelYourBookmarks": "Dine bokmerker",
"LabelYourPlaylists": "Dine spillelister",
@@ -588,10 +512,12 @@
"MessageAddToPlayerQueue": "Legg til i kø",
"MessageAppriseDescription": "For å bruke denne funksjonen trenger du en instans av Apprise API kjørende eller ett api som vil håndere disse forespørslene. Apprise API Url skal være den fulle URL stien for å sende Notifikasjonen, f.eks., hvis din API instans er hos http://192.168.1.1:8337 vil du bruke http://192.168.1.1:8337/notify.",
"MessageBackupsDescription": "Sikkerhetskopier inkluderer, brukerfremgang, detaljer om bibliotekgjenstander, tjener instillinger og bilder lagret under /metadata/items og /metadata/authors. Sikkerhetskopier vil ikke inkludere filer som er lagret i bibliotek mappene.",
+ "MessageBackupsLocationEditNote": "Merk: Endring av sikkerhetskopieringssted hverken endrer eller flytter eksisterende sikkerhetskopier",
+ "MessageBackupsLocationPathEmpty": "Sti til sikkerhetskopieringssted må angis",
"MessageBatchQuickMatchDescription": "Kjapt søk vil forsøke å legge til manglende omslag og metadata for de valgte gjenstandene. Aktiver dette valget for å tillate Kjapt søk til å overskrive eksisterende omslag og/eller metadata.",
"MessageBookshelfNoCollections": "Du har ikke laget noen samlinger ennå",
- "MessageBookshelfNoResultsForFilter": "Ingen resultat for filter \"{0}: {1}\"",
"MessageBookshelfNoRSSFeeds": "Ingen RSS feed er åpen",
+ "MessageBookshelfNoResultsForFilter": "Ingen resultat for filter \"{0}: {1}\"",
"MessageBookshelfNoSeries": "Du har ingen serier",
"MessageChapterEndIsAfter": "Kapittel slutt er etter slutt av lydboken",
"MessageChapterErrorFirstNotZero": "Første kapittel starter på 0",
@@ -603,22 +529,16 @@
"MessageConfirmDeleteBackup": "Er du sikker på at du vil slette sikkerhetskopi for {0}?",
"MessageConfirmDeleteFile": "Dette vil slette filen fra filsystemet. Er du sikker?",
"MessageConfirmDeleteLibrary": "Er du sikker på at du vil slette biblioteket \"{0}\" for godt?",
- "MessageConfirmDeleteLibraryItem": "This will delete the library item from the database and your file system. Are you sure?",
- "MessageConfirmDeleteLibraryItems": "This will delete {0} library items from the database and your file system. Are you sure?",
"MessageConfirmDeleteSession": "Er du sikker på at du vil slette denne sesjonen?",
"MessageConfirmForceReScan": "Er du sikker på at du vil tvinge en ny skann?",
"MessageConfirmMarkAllEpisodesFinished": "Er du sikker på at du vil markere alle episodene som fullført?",
"MessageConfirmMarkAllEpisodesNotFinished": "Er du sikker på at du vil markere alle episodene som ikke fullført?",
"MessageConfirmMarkSeriesFinished": "Er du sikker på at du vil markere alle bøkene i serien som fullført?",
"MessageConfirmMarkSeriesNotFinished": "Er du sikker på at du vil markere alle bøkene i serien som ikke fullført?",
- "MessageConfirmPurgeCache": "Purge cache will delete the entire directory at /metadata/cache.
Are you sure you want to remove the cache directory?",
- "MessageConfirmQuickEmbed": "Warning! Quick embed will not backup your audio files. Make sure that you have a backup of your audio files.
Would you like to continue?",
"MessageConfirmRemoveAllChapters": "Er du sikker på at du vil fjerne alle kapitler?",
- "MessageConfirmRemoveAuthor": "Are you sure you want to remove author \"{0}\"?",
"MessageConfirmRemoveCollection": "Er du sikker på at du vil fjerne samling\"{0}\"?",
"MessageConfirmRemoveEpisode": "Er du sikker på at du vil fjerne episode \"{0}\"?",
"MessageConfirmRemoveEpisodes": "Er du sikker på at du vil fjerne {0} episoder?",
- "MessageConfirmRemoveListeningSessions": "Are you sure you want to remove {0} listening sessions?",
"MessageConfirmRemoveNarrator": "Er du sikker på at du vil fjerne forteller \"{0}\"?",
"MessageConfirmRemovePlaylist": "Er du sikker på at du vil fjerne spillelisten \"{0}\"?",
"MessageConfirmRenameGenre": "Er du sikker på at du vil endre sjanger \"{0}\" til \"{1}\" for alle gjenstandene?",
@@ -627,13 +547,11 @@
"MessageConfirmRenameTag": "Er du sikker på at du vil endre tag \"{0}\" til \"{1}\" for alle gjenstandene?",
"MessageConfirmRenameTagMergeNote": "Notis: Denne taggen finnes allerede så de vil bli slått sammen.",
"MessageConfirmRenameTagWarning": "Advarsel! En lignende tag eksisterer allerede (med forsjellige store / små bokstaver) \"{0}\".",
- "MessageConfirmReScanLibraryItems": "Are you sure you want to re-scan {0} items?",
"MessageConfirmSendEbookToDevice": "Er du sikker på at du vil sende {0} ebok \"{1}\" til enhet \"{2}\"?",
"MessageDownloadingEpisode": "Laster ned episode",
"MessageDragFilesIntoTrackOrder": "Dra filene i rett spor rekkefølge",
"MessageEmbedFinished": "Bak inn Fullført!",
"MessageEpisodesQueuedForDownload": "{0} Episode(r) lagt til i kø for nedlasting",
- "MessageEreaderDevices": "To ensure delivery of ebooks, you may need to add the above email address as a valid sender for each device listed below.",
"MessageFeedURLWillBe": "Feed URL vil bli {0}",
"MessageFetching": "Henter...",
"MessageForceReScanDescription": "vil skanne alle filene igjen som en ny skann. Lyd fil ID3 tagger, OPF filer og tekstfiler vil bli skannet som nye.",
@@ -645,7 +563,6 @@
"MessageListeningSessionsInTheLastYear": "{0} Lyttesesjoner iløpet av siste året",
"MessageLoading": "Laster...",
"MessageLoadingFolders": "Laster mapper...",
- "MessageLogsDescription": "Logs are stored in /metadata/logs as JSON files. Crash logs are stored in /metadata/logs/crash_logs.txt.",
"MessageM4BFailed": "M4B mislykkes!",
"MessageM4BFinished": "M4B fullført!",
"MessageMapChapterTitles": "Bruk kapittel titler fra din eksisterende lydbok kapitler uten å justere tidsstempel",
@@ -681,10 +598,9 @@
"MessageNoSeries": "Ingen serier",
"MessageNoTags": "Ingen tags",
"MessageNoTasksRunning": "Ingen oppgaver kjører",
- "MessageNotYetImplemented": "Ikke implementert ennå",
- "MessageNoUpdateNecessary": "Ingen oppdatering nødvendig",
"MessageNoUpdatesWereNecessary": "Ingen oppdatering var nødvendig",
"MessageNoUserPlaylists": "Du har ingen spillelister",
+ "MessageNotYetImplemented": "Ikke implementert ennå",
"MessageOr": "eller",
"MessagePauseChapter": "Pause avspilling av kapittel",
"MessagePlayChapter": "Lytter på begynnelsen av kapittel",
@@ -700,7 +616,6 @@
"MessageRestoreBackupConfirm": "Er du sikker på at du vil gjenopprette sikkerhetskopien som var laget",
"MessageRestoreBackupWarning": "gjenoppretting av sikkerhetskopi vil overskrive hele databasen under /config og omslagsbilde under /metadata/items og /metadata/authors.
Sikkerhetskopier endrer ikke noen filer under dine bibliotekmapper. Hvis du har aktivert tjenerinstillingen for å lagre omslagsbilder og metadata i bibliotekmapper så vil ikke de filene bli tatt sikkerhetskopi eller overskrevet.
Alle klientene som bruker din tjener vil bli fornyet automatisk.",
"MessageSearchResultsFor": "Søk resultat for",
- "MessageSelected": "{0} selected",
"MessageServerCouldNotBeReached": "Tjener kunne ikke bli nådd",
"MessageSetChaptersFromTracksDescription": "Sett kapitler ved å bruke hver lydfil som kapittel og kapitteltittel som lydfilnavnet",
"MessageStartPlaybackAtTime": "Start avspilling av \"{0}\" ved {1}?",
@@ -726,11 +641,8 @@
"PlaceholderNewPlaylist": "Ny spillelistenavn",
"PlaceholderSearch": "Søk..",
"PlaceholderSearchEpisode": "Søk episode..",
- "ToastAccountUpdateFailed": "Mislykkes å oppdatere konto",
"ToastAccountUpdateSuccess": "Konto oppdatert",
- "ToastAuthorImageRemoveFailed": "Mislykkes å fjerne bilde",
"ToastAuthorImageRemoveSuccess": "Forfatter bilde fjernet",
- "ToastAuthorUpdateFailed": "Mislykkes å oppdatere forfatter",
"ToastAuthorUpdateMerged": "Forfatter slått sammen",
"ToastAuthorUpdateSuccess": "Forfatter oppdatert",
"ToastAuthorUpdateSuccessNoImageFound": "Forfatter oppdater (ingen bilde funnet)",
@@ -745,28 +657,15 @@
"ToastBatchUpdateSuccess": "Bulk oppdatering fullført",
"ToastBookmarkCreateFailed": "Misslykkes å opprette bokmerke",
"ToastBookmarkCreateSuccess": "Bokmerke lagt til",
- "ToastBookmarkRemoveFailed": "Misslykkes å fjerne bokmerke",
"ToastBookmarkRemoveSuccess": "Bokmerke fjernet",
- "ToastBookmarkUpdateFailed": "Misslykkes å oppdatere bokmerke",
"ToastBookmarkUpdateSuccess": "Bokmerke oppdatert",
- "ToastCachePurgeFailed": "Failed to purge cache",
- "ToastCachePurgeSuccess": "Cache purged successfully",
"ToastChaptersHaveErrors": "Kapittel har feil",
"ToastChaptersMustHaveTitles": "Kapittel må ha titler",
- "ToastCollectionItemsRemoveFailed": "Misslykkes å fjerne gjenstand(er) fra samling",
"ToastCollectionItemsRemoveSuccess": "Gjenstand(er) fjernet fra samling",
- "ToastCollectionRemoveFailed": "Misslykkes å fjerne samling",
"ToastCollectionRemoveSuccess": "Samling fjernet",
- "ToastCollectionUpdateFailed": "Misslykkes å oppdatere samling",
"ToastCollectionUpdateSuccess": "samlingupdated",
- "ToastDeleteFileFailed": "Failed to delete file",
- "ToastDeleteFileSuccess": "File deleted",
- "ToastFailedToLoadData": "Failed to load data",
- "ToastItemCoverUpdateFailed": "Misslykkes å oppdatere omslag",
"ToastItemCoverUpdateSuccess": "Omslag oppdatert",
- "ToastItemDetailsUpdateFailed": "Misslykkes å oppdatere detaljer",
"ToastItemDetailsUpdateSuccess": "Detaljer oppdatert",
- "ToastItemDetailsUpdateUnneeded": "Ingen oppdateringer nødvendig for detaljer",
"ToastItemMarkedAsFinishedFailed": "Misslykkes å markere som Fullført",
"ToastItemMarkedAsFinishedSuccess": "Gjenstand marker som Fullført",
"ToastItemMarkedAsNotFinishedFailed": "Misslykkes å markere som Ikke Fullført",
@@ -777,34 +676,26 @@
"ToastLibraryDeleteSuccess": "Bibliotek slettet",
"ToastLibraryScanFailedToStart": "Misslykkes å starte skann",
"ToastLibraryScanStarted": "Bibliotek skann startet",
- "ToastLibraryUpdateFailed": "Misslykkes å oppdatere bibiliotek",
"ToastLibraryUpdateSuccess": "Bibliotek \"{0}\" oppdatert",
"ToastPlaylistCreateFailed": "Misslykkes å opprette spilleliste",
"ToastPlaylistCreateSuccess": "Spilleliste opprettet",
- "ToastPlaylistRemoveFailed": "Misslykkes å fjerne spilleliste",
"ToastPlaylistRemoveSuccess": "Spilleliste fjernet",
- "ToastPlaylistUpdateFailed": "Misslykkes å oppdatere spilleliste",
"ToastPlaylistUpdateSuccess": "Spilleliste oppdatert",
"ToastPodcastCreateFailed": "Misslykkes å opprette podcast",
"ToastPodcastCreateSuccess": "Podcast opprettet",
- "ToastRemoveItemFromCollectionFailed": "Misslykkes å fjerne gjenstsand fra samling",
- "ToastRemoveItemFromCollectionSuccess": "Gjenstand fjernet fra samling",
"ToastRSSFeedCloseFailed": "Misslykkes å lukke RSS feed",
"ToastRSSFeedCloseSuccess": "RSS feed lukket",
+ "ToastRemoveItemFromCollectionFailed": "Misslykkes å fjerne gjenstsand fra samling",
+ "ToastRemoveItemFromCollectionSuccess": "Gjenstand fjernet fra samling",
"ToastSendEbookToDeviceFailed": "Misslykkes å sende ebok",
"ToastSendEbookToDeviceSuccess": "Ebok sendt til \"{0}\"",
"ToastSeriesUpdateFailed": "Misslykkes å oppdatere serie",
"ToastSeriesUpdateSuccess": "Serie oppdatert",
- "ToastServerSettingsUpdateFailed": "Failed to update server settings",
- "ToastServerSettingsUpdateSuccess": "Server settings updated",
"ToastSessionDeleteFailed": "Misslykkes å slette sesjon",
"ToastSessionDeleteSuccess": "Sesjon slettet",
"ToastSocketConnected": "Socket koblet til",
"ToastSocketDisconnected": "Socket koblet fra",
"ToastSocketFailedToConnect": "Misslykkes å koble til Socket",
- "ToastSortingPrefixesEmptyError": "Must have at least 1 sorting prefix",
- "ToastSortingPrefixesUpdateFailed": "Failed to update sorting prefixes",
- "ToastSortingPrefixesUpdateSuccess": "Sorting prefixes updated ({0} items)",
"ToastUserDeleteFailed": "Misslykkes å slette bruker",
"ToastUserDeleteSuccess": "Bruker slettet"
-}
\ No newline at end of file
+}
diff --git a/client/strings/pl.json b/client/strings/pl.json
index ce0109d9e..85c7b769b 100644
--- a/client/strings/pl.json
+++ b/client/strings/pl.json
@@ -9,6 +9,7 @@
"ButtonApply": "Zatwierdź",
"ButtonApplyChapters": "Zatwierdź rozdziały",
"ButtonAuthors": "Autorzy",
+ "ButtonBack": "Wstecz",
"ButtonBrowseForFolder": "Wyszukaj folder",
"ButtonCancel": "Anuluj",
"ButtonCancelEncode": "Anuluj enkodowanie",
@@ -18,15 +19,17 @@
"ButtonChooseFiles": "Wybierz pliki",
"ButtonClearFilter": "Wyczyść filtr",
"ButtonCloseFeed": "Zamknij kanał",
+ "ButtonCloseSession": "Zamknij otwartą sesję",
"ButtonCollections": "Kolekcje",
"ButtonConfigureScanner": "Skonfiguruj skaner",
"ButtonCreate": "Utwórz",
"ButtonCreateBackup": "Utwórz kopię zapasową",
"ButtonDelete": "Usuń",
"ButtonDownloadQueue": "Kolejka",
- "ButtonEdit": "Edit",
+ "ButtonEdit": "Edycja",
"ButtonEditChapters": "Edytuj rozdziały",
"ButtonEditPodcast": "Edytuj podcast",
+ "ButtonEnable": "Włącz",
"ButtonForceReScan": "Wymuś ponowne skanowanie",
"ButtonFullPath": "Pełna ścieżka",
"ButtonHide": "Ukryj",
@@ -34,7 +37,7 @@
"ButtonIssues": "Błędy",
"ButtonJumpBackward": "Skocz do tyłu",
"ButtonJumpForward": "Skocz do przodu",
- "ButtonLatest": "Aktualna wersja:",
+ "ButtonLatest": "Aktualna wersja",
"ButtonLibrary": "Biblioteka",
"ButtonLogout": "Wyloguj",
"ButtonLookup": "Importuj",
@@ -45,24 +48,29 @@
"ButtonNevermind": "Anuluj",
"ButtonNext": "Następny",
"ButtonNextChapter": "Następny rozdział",
+ "ButtonNextItemInQueue": "Następny element w kolejce",
"ButtonOk": "Ok",
"ButtonOpenFeed": "Otwórz feed",
"ButtonOpenManager": "Otwórz menadżera",
- "ButtonPause": "Pause",
+ "ButtonPause": "Wstrzymaj",
"ButtonPlay": "Odtwarzaj",
+ "ButtonPlayAll": "Odtwórz wszystko",
"ButtonPlaying": "Odtwarzane",
"ButtonPlaylists": "Listy odtwarzania",
"ButtonPrevious": "Poprzedni",
"ButtonPreviousChapter": "Poprzedni rozdział",
+ "ButtonProbeAudioFile": "Próbka audio",
"ButtonPurgeAllCache": "Wyczyść dane tymczasowe",
"ButtonPurgeItemsCache": "Wyczyść dane tymczasowe pozycji",
- "ButtonPurgeMediaProgress": "Wyczyść postęp",
"ButtonQueueAddItem": "Dodaj do kolejki",
"ButtonQueueRemoveItem": "Usuń z kolejki",
+ "ButtonQuickEmbed": "Szybkie wstawienie",
+ "ButtonQuickEmbedMetadata": "Szybkie wstawianie metadanych",
"ButtonQuickMatch": "Szybkie dopasowanie",
+ "ButtonReScan": "Ponowne skanowanie",
"ButtonRead": "Czytaj",
- "ButtonReadLess": "Read less",
- "ButtonReadMore": "Read more",
+ "ButtonReadLess": "Pokaż mniej",
+ "ButtonReadMore": "Pokaż więcej",
"ButtonRefresh": "Odśwież",
"ButtonRemove": "Usuń",
"ButtonRemoveAll": "Usuń wszystko",
@@ -70,7 +78,6 @@
"ButtonRemoveFromContinueListening": "Usuń z listy odtwarzania",
"ButtonRemoveFromContinueReading": "Usuń z Kontynuuj czytanie",
"ButtonRemoveSeriesFromContinueSeries": "Usuń serię z listy odtwarzania",
- "ButtonReScan": "Ponowne skanowanie",
"ButtonReset": "Resetowanie",
"ButtonResetToDefault": "Przywróć ustawienia domyślne",
"ButtonRestore": "Przywróć",
@@ -83,13 +90,15 @@
"ButtonSelectFolderPath": "Wybierz ścieżkę folderu",
"ButtonSeries": "Seria",
"ButtonSetChaptersFromTracks": "Ustawiaj rozdziały na podstawie utworów",
- "ButtonShare": "Share",
+ "ButtonShare": "Udostępnij",
"ButtonShiftTimes": "Przesunięcie czasowe",
"ButtonShow": "Pokaż",
"ButtonStartM4BEncode": "Eksportuj jako plik M4B",
"ButtonStartMetadataEmbed": "Osadź metadane",
- "ButtonSubmit": "Zaloguj",
+ "ButtonStats": "Statystyki",
+ "ButtonSubmit": "Zapisz",
"ButtonTest": "Test",
+ "ButtonUnlinkOpenId": "Odłącz OpenID",
"ButtonUpload": "Wgraj",
"ButtonUploadBackup": "Wgraj kopię zapasową",
"ButtonUploadCover": "Wgraj okładkę",
@@ -102,10 +111,11 @@
"ErrorUploadFetchMetadataNoResults": "Nie można pobrać metadanych — spróbuj zaktualizować tytuł i/lub autora",
"ErrorUploadLacksTitle": "Musi mieć tytuł",
"HeaderAccount": "Konto",
+ "HeaderAddCustomMetadataProvider": "Dodaj niestandardowego dostawcę metadanych",
"HeaderAdvanced": "Zaawansowane",
"HeaderAppriseNotificationSettings": "Ustawienia powiadomień Apprise",
- "HeaderAudiobookTools": "Narzędzia do zarządzania audiobookami",
"HeaderAudioTracks": "Ścieżki audio",
+ "HeaderAudiobookTools": "Narzędzia do zarządzania audiobookami",
"HeaderAuthentication": "Uwierzytelnianie",
"HeaderBackups": "Kopie zapasowe",
"HeaderChangePassword": "Zmień hasło",
@@ -114,56 +124,61 @@
"HeaderCollection": "Kolekcja",
"HeaderCollectionItems": "Elementy kolekcji",
"HeaderCover": "Okładka",
- "HeaderCurrentDownloads": "Current Downloads",
- "HeaderCustomMetadataProviders": "Custom Metadata Providers",
+ "HeaderCurrentDownloads": "Obecnie ściągane",
+ "HeaderCustomMessageOnLogin": "Własny tekst podczas logowania",
+ "HeaderCustomMetadataProviders": "Niestandardowi dostawcy metadanych",
"HeaderDetails": "Szczegóły",
- "HeaderDownloadQueue": "Download Queue",
- "HeaderEbookFiles": "Ebook Files",
- "HeaderEmail": "Email",
- "HeaderEmailSettings": "Email Settings",
+ "HeaderDownloadQueue": "Kolejka do ściągania",
+ "HeaderEbookFiles": "Pliki Ebook",
+ "HeaderEmail": "E-mail",
+ "HeaderEmailSettings": "Ustawienia e-mail",
"HeaderEpisodes": "Rozdziały",
- "HeaderEreaderDevices": "Ereader Devices",
- "HeaderEreaderSettings": "Ereader Settings",
+ "HeaderEreaderDevices": "Czytniki",
+ "HeaderEreaderSettings": "Ustawienia czytnika",
"HeaderFiles": "Pliki",
"HeaderFindChapters": "Wyszukaj rozdziały",
"HeaderIgnoredFiles": "Zignoruj pliki",
"HeaderItemFiles": "Pliki",
- "HeaderItemMetadataUtils": "Item Metadata Utils",
- "HeaderLastListeningSession": "Ostatnio odtwarzana sesja",
+ "HeaderItemMetadataUtils": "Narzędzia dla metadanych",
+ "HeaderLastListeningSession": "Ostatnia sesja słuchania",
"HeaderLatestEpisodes": "Najnowsze odcinki",
"HeaderLibraries": "Biblioteki",
"HeaderLibraryFiles": "Pliki w bibliotece",
"HeaderLibraryStats": "Statystyki biblioteki",
"HeaderListeningSessions": "Sesje słuchania",
- "HeaderListeningStats": "Statystyki odtwarzania",
+ "HeaderListeningStats": "Statystyki słuchania",
"HeaderLogin": "Zaloguj się",
"HeaderLogs": "Logi",
"HeaderManageGenres": "Zarządzaj gatunkami",
"HeaderManageTags": "Zarządzaj tagami",
- "HeaderMapDetails": "Map details",
+ "HeaderMapDetails": "Szczegóły mapowania",
"HeaderMatch": "Dopasuj",
- "HeaderMetadataOrderOfPrecedence": "Metadata order of precedence",
+ "HeaderMetadataOrderOfPrecedence": "Kolejność metadanych",
"HeaderMetadataToEmbed": "Osadź metadane",
"HeaderNewAccount": "Nowe konto",
"HeaderNewLibrary": "Nowa biblioteka",
+ "HeaderNotificationCreate": "Utwórz powiadomienie",
+ "HeaderNotificationUpdate": "Zaktualizuj powiadomienie",
"HeaderNotifications": "Powiadomienia",
- "HeaderOpenIDConnectAuthentication": "OpenID Connect Authentication",
+ "HeaderOpenIDConnectAuthentication": "Uwierzytelnianie OpenID Connect",
"HeaderOpenRSSFeed": "Utwórz kanał RSS",
"HeaderOtherFiles": "Inne pliki",
"HeaderPasswordAuthentication": "Uwierzytelnianie hasłem",
"HeaderPermissions": "Uprawnienia",
- "HeaderPlayerQueue": "Player Queue",
- "HeaderPlaylist": "Playlist",
- "HeaderPlaylistItems": "Playlist Items",
+ "HeaderPlayerQueue": "Kolejka odtwarzania",
+ "HeaderPlayerSettings": "Ustawienia Odtwarzania",
+ "HeaderPlaylist": "Playlista",
+ "HeaderPlaylistItems": "Pozycje listy odtwarzania",
"HeaderPodcastsToAdd": "Podcasty do dodania",
"HeaderPreviewCover": "Podgląd okładki",
+ "HeaderRSSFeedGeneral": "Szczegóły RSS",
+ "HeaderRSSFeedIsOpen": "Kanał RSS jest otwarty",
+ "HeaderRSSFeeds": "Kanały RSS",
"HeaderRemoveEpisode": "Usuń odcinek",
"HeaderRemoveEpisodes": "Usuń {0} odcinków",
- "HeaderRSSFeedGeneral": "RSS Details",
- "HeaderRSSFeedIsOpen": "Kanał RSS jest otwarty",
- "HeaderRSSFeeds": "RSS Feeds",
"HeaderSavedMediaProgress": "Zapisany postęp",
"HeaderSchedule": "Harmonogram",
+ "HeaderScheduleEpisodeDownloads": "Planowanie automatycznego ściągania odcinków",
"HeaderScheduleLibraryScans": "Zaplanuj automatyczne skanowanie biblioteki",
"HeaderSession": "Sesja",
"HeaderSetBackupSchedule": "Ustaw harmonogram tworzenia kopii zapasowej",
@@ -173,81 +188,89 @@
"HeaderSettingsGeneral": "Ogólne",
"HeaderSettingsScanner": "Skanowanie",
"HeaderSleepTimer": "Wyłącznik czasowy",
- "HeaderStatsLargestItems": "Largest Items",
- "HeaderStatsLongestItems": "Najdłuższe pozycje (hrs)",
+ "HeaderStatsLargestItems": "Największe pozycje",
+ "HeaderStatsLongestItems": "Najdłuższe pozycje (godziny)",
"HeaderStatsMinutesListeningChart": "Czas słuchania w minutach (ostatnie 7 dni)",
"HeaderStatsRecentSessions": "Ostatnie sesje",
"HeaderStatsTop10Authors": "Top 10 Autorów",
"HeaderStatsTop5Genres": "Top 5 Gatunków",
- "HeaderTableOfContents": "Table of Contents",
+ "HeaderTableOfContents": "Spis treści",
"HeaderTools": "Narzędzia",
"HeaderUpdateAccount": "Zaktualizuj konto",
"HeaderUpdateAuthor": "Zaktualizuj autorów",
"HeaderUpdateDetails": "Zaktualizuj szczegóły",
"HeaderUpdateLibrary": "Zaktualizuj bibliotekę",
"HeaderUsers": "Użytkownicy",
- "HeaderYearReview": "Year {0} in Review",
+ "HeaderYearReview": "Podsumowanie roku {0}",
"HeaderYourStats": "Twoje statystyki",
- "LabelAbridged": "Abridged",
- "LabelAbridgedChecked": "Abridged (checked)",
- "LabelAbridgedUnchecked": "Unabridged (unchecked)",
- "LabelAccessibleBy": "Accessible by",
+ "LabelAbridged": "Skrócony",
+ "LabelAbridgedChecked": "Skrócony (zaznaczono)",
+ "LabelAbridgedUnchecked": "Nieskrócony (nie zaznaczone)",
+ "LabelAccessibleBy": "Dostęp przez",
"LabelAccountType": "Typ konta",
"LabelAccountTypeAdmin": "Administrator",
"LabelAccountTypeGuest": "Gość",
"LabelAccountTypeUser": "Użytkownik",
"LabelActivity": "Aktywność",
- "LabelAdded": "Added",
- "LabelAddedAt": "Dodano",
"LabelAddToCollection": "Dodaj do kolekcji",
"LabelAddToCollectionBatch": "Dodaj {0} książki do kolekcji",
- "LabelAddToPlaylist": "Add to Playlist",
- "LabelAddToPlaylistBatch": "Add {0} Items to Playlist",
+ "LabelAddToPlaylist": "Dodaj do playlisty",
+ "LabelAddToPlaylistBatch": "Dodaj {0} pozycji do playlisty",
+ "LabelAddedAt": "Dodano",
+ "LabelAddedDate": "Dodano {0}",
"LabelAdminUsersOnly": "Tylko użytkownicy administracyjni",
- "LabelAll": "All",
+ "LabelAll": "Wszystkie",
"LabelAllUsers": "Wszyscy użytkownicy",
"LabelAllUsersExcludingGuests": "Wszyscy użytkownicy z wyłączeniem gości",
"LabelAllUsersIncludingGuests": "Wszyscy użytkownicy, łącznie z gośćmi",
- "LabelAlreadyInYourLibrary": "Already in your library",
- "LabelAppend": "Append",
+ "LabelAlreadyInYourLibrary": "Już istnieje w twojej bibliotece",
+ "LabelApiToken": "API Token",
+ "LabelAppend": "Dołącz",
+ "LabelAudioBitrate": "Audio Bitrate (np. 128k)",
+ "LabelAudioChannels": "Kanały dźwięku (1 lub 2)",
+ "LabelAudioCodec": "Kodek audio",
"LabelAuthor": "Autor",
"LabelAuthorFirstLast": "Autor (Rosnąco)",
"LabelAuthorLastFirst": "Author (Malejąco)",
"LabelAuthors": "Autorzy",
"LabelAutoDownloadEpisodes": "Automatyczne pobieranie odcinków",
- "LabelAutoFetchMetadata": "Auto Fetch Metadata",
+ "LabelAutoFetchMetadata": "Automatycznie pobierz metadane",
"LabelAutoFetchMetadataHelp": "Pobiera metadane dotyczące tytułu, autora i serii, aby usprawnić przesyłanie. Po przesłaniu może być konieczne dopasowanie dodatkowych metadanych.",
- "LabelAutoLaunch": "Auto Launch",
- "LabelAutoLaunchDescription": "Redirect to the auth provider automatically when navigating to the login page (manual override path /login?autoLaunch=0)",
- "LabelAutoRegister": "Auto Register",
- "LabelAutoRegisterDescription": "Automatically create new users after logging in",
+ "LabelAutoLaunch": "Uruchom automatycznie",
+ "LabelAutoRegister": "Automatyczna rejestracja",
+ "LabelAutoRegisterDescription": "Automatycznie utwórz nowych użytkowników po zalogowaniu",
"LabelBackToUser": "Powrót",
- "LabelBackupLocation": "Backup Location",
+ "LabelBackupAudioFiles": "Kopia zapasowa plików audio",
+ "LabelBackupLocation": "Lokalizacja kopii zapasowej",
"LabelBackupsEnableAutomaticBackups": "Włącz automatyczne kopie zapasowe",
"LabelBackupsEnableAutomaticBackupsHelp": "Kopie zapasowe są zapisywane w folderze /metadata/backups",
- "LabelBackupsMaxBackupSize": "Maksymalny łączny rozmiar backupów (w GB)",
+ "LabelBackupsMaxBackupSize": "Maksymalny rozmiar kopii zapasowej (w GB) (0 oznacza nieograniczony)",
"LabelBackupsMaxBackupSizeHelp": "Jako zabezpieczenie przed błędną konfiguracją, kopie zapasowe nie będą wykonywane, jeśli przekroczą skonfigurowany rozmiar.",
"LabelBackupsNumberToKeep": "Liczba kopii zapasowych do przechowywania",
"LabelBackupsNumberToKeepHelp": "Tylko 1 kopia zapasowa zostanie usunięta, więc jeśli masz już więcej kopii zapasowych, powinieneś je ręcznie usunąć.",
"LabelBitrate": "Bitrate",
+ "LabelBonus": "Bonus",
"LabelBooks": "Książki",
- "LabelButtonText": "Button Text",
- "LabelByAuthor": "by {0}",
+ "LabelButtonText": "Tekst przycisku",
+ "LabelByAuthor": "autorstwa {0}",
"LabelChangePassword": "Zmień hasło",
- "LabelChannels": "Channels",
- "LabelChapters": "Chapters",
- "LabelChaptersFound": "Znalezione rozdziały",
+ "LabelChannels": "Kanały",
+ "LabelChapterCount": "{0} rozdziałów",
"LabelChapterTitle": "Tytuł rozdziału",
- "LabelClickForMoreInfo": "Click for more info",
+ "LabelChapters": "Rozdziały",
+ "LabelChaptersFound": "Znalezione rozdziały",
+ "LabelClickForMoreInfo": "Kliknij po więcej szczegółów",
+ "LabelClickToUseCurrentValue": "Kliknij by zastosować aktualną wartość",
"LabelClosePlayer": "Zamknij odtwarzacz",
- "LabelCodec": "Codec",
+ "LabelCodec": "Kodek",
"LabelCollapseSeries": "Podsumuj serię",
- "LabelCollection": "Collection",
+ "LabelCollapseSubSeries": "Zwiń podserie",
+ "LabelCollection": "Kolekcja",
"LabelCollections": "Kolekcje",
"LabelComplete": "Ukończone",
"LabelConfirmPassword": "Potwierdź hasło",
- "LabelContinueListening": "Kontynuuj odtwarzanie",
- "LabelContinueReading": "Continue Reading",
+ "LabelContinueListening": "Kontynuuj słuchanie",
+ "LabelContinueReading": "Kontynuuj czytanie",
"LabelContinueSeries": "Kontynuuj serię",
"LabelCover": "Okładka",
"LabelCoverImageURL": "URL okładki",
@@ -255,73 +278,87 @@
"LabelCronExpression": "Wyrażenie CRON",
"LabelCurrent": "Aktualny",
"LabelCurrently": "Obecnie:",
- "LabelCustomCronExpression": "Custom Cron Expression:",
+ "LabelCustomCronExpression": "Niestandardowe wyrażenie Cron:",
"LabelDatetime": "Data i godzina",
+ "LabelDays": "Dni",
"LabelDeleteFromFileSystemCheckbox": "Usuń z systemu plików (odznacz, aby usunąć tylko z bazy danych)",
"LabelDescription": "Opis",
"LabelDeselectAll": "Odznacz wszystko",
"LabelDevice": "Urządzenie",
"LabelDeviceInfo": "Informacja o urządzeniu",
- "LabelDeviceIsAvailableTo": "Device is available to...",
+ "LabelDeviceIsAvailableTo": "Urządzenie jest dostępne do...",
"LabelDirectory": "Katalog",
"LabelDiscFromFilename": "Oznaczenie dysku z nazwy pliku",
"LabelDiscFromMetadata": "Oznaczenie dysku z metadanych",
"LabelDiscover": "Odkrywaj",
"LabelDownload": "Pobierz",
- "LabelDownloadNEpisodes": "Download {0} episodes",
+ "LabelDownloadNEpisodes": "Ściąganie {0} odcinków",
"LabelDuration": "Czas trwania",
- "LabelDurationComparisonExactMatch": "(exact match)",
- "LabelDurationComparisonLonger": "({0} longer)",
- "LabelDurationComparisonShorter": "({0} shorter)",
+ "LabelDurationComparisonExactMatch": "(dokładne dopasowanie)",
+ "LabelDurationComparisonLonger": "({0} dłużej)",
+ "LabelDurationComparisonShorter": "({0} krócej)",
"LabelDurationFound": "Znaleziona długość:",
"LabelEbook": "Ebook",
- "LabelEbooks": "Ebooks",
+ "LabelEbooks": "Ebooki",
"LabelEdit": "Edytuj",
- "LabelEmail": "Email",
- "LabelEmailSettingsFromAddress": "From Address",
- "LabelEmailSettingsSecure": "Secure",
- "LabelEmailSettingsSecureHelp": "If true the connection will use TLS when connecting to server. If false then TLS is used if server supports the STARTTLS extension. In most cases set this value to true if you are connecting to port 465. For port 587 or 25 keep it false. (from nodemailer.com/smtp/#authentication)",
- "LabelEmailSettingsTestAddress": "Test Address",
- "LabelEmbeddedCover": "Embedded Cover",
+ "LabelEmail": "E-mail",
+ "LabelEmailSettingsFromAddress": "Z adresu",
+ "LabelEmailSettingsRejectUnauthorized": "Odrzuć nieautoryzowane certyfikaty",
+ "LabelEmailSettingsRejectUnauthorizedHelp": "Wyłączenie walidacji certyfikatów SSL może narazić cię na ryzyka bezpieczeństwa, takie jak ataki man-in-the-middle. Wyłącz tą opcję wyłącznie jeśli rozumiesz tego skutki i ufasz serwerowi pocztowemu, do którego się podłączasz.",
+ "LabelEmailSettingsSecure": "Bezpieczeństwo",
+ "LabelEmailSettingsSecureHelp": "Jeśli włączysz, połączenie będzie korzystać z TLS podczas łączenia do serwera. Jeśli wyłączysz, TLS będzie wykorzystane jeśli serwer wspiera rozszerzenie STARTTLS. W większości przypadków włącz to ustawienie jeśli łączysz się do portu 465. Dla portów 587 lub 25 pozostaw to ustawienie wyłączone. (na podstawie nodemailer.com/smtp/#authentication)",
+ "LabelEmailSettingsTestAddress": "Adres testowy",
+ "LabelEmbeddedCover": "Wbudowana okładka",
"LabelEnable": "Włącz",
+ "LabelEncodingBackupLocation": "Kopia zapasowa twoich oryginalnych plików audio będzie się znajdować w:",
"LabelEnd": "Zakończ",
+ "LabelEndOfChapter": "Koniec rozdziału",
"LabelEpisode": "Odcinek",
"LabelEpisodeTitle": "Tytuł odcinka",
"LabelEpisodeType": "Typ odcinka",
- "LabelExample": "Example",
+ "LabelEpisodes": "Epizody",
+ "LabelExample": "Przykład",
+ "LabelExpandSeries": "Rozwiń serie",
+ "LabelExpandSubSeries": "Rozwiń podserie",
"LabelExplicit": "Nieprzyzwoite",
- "LabelExplicitChecked": "Explicit (checked)",
- "LabelExplicitUnchecked": "Not Explicit (unchecked)",
+ "LabelExplicitChecked": "Nieprzyzwoite (sprawdzone)",
+ "LabelExplicitUnchecked": "Przyzwoite (niesprawdzone)",
+ "LabelExportOPML": "Wyeksportuj OPML",
"LabelFeedURL": "URL kanału",
- "LabelFetchingMetadata": "Fetching Metadata",
+ "LabelFetchingMetadata": "Pobieranie metadanych",
"LabelFile": "Plik",
"LabelFileBirthtime": "Data utworzenia pliku",
+ "LabelFileBornDate": "Utworzony {0}",
"LabelFileModified": "Data modyfikacji pliku",
+ "LabelFileModifiedDate": "Modyfikowany {0}",
"LabelFilename": "Nazwa pliku",
"LabelFilterByUser": "Filtruj według danego użytkownika",
"LabelFindEpisodes": "Znajdź odcinki",
"LabelFinished": "Zakończone",
- "LabelFolder": "Folder",
+ "LabelFolder": "Katalog",
"LabelFolders": "Foldery",
- "LabelFontBold": "Bold",
+ "LabelFontBold": "Pogrubiony",
+ "LabelFontBoldness": "Grubość czcionki",
"LabelFontFamily": "Rodzina czcionek",
- "LabelFontItalic": "Italic",
- "LabelFontScale": "Font scale",
- "LabelFontStrikethrough": "Strikethrough",
+ "LabelFontItalic": "Kursywa",
+ "LabelFontScale": "Rozmiar czcionki",
+ "LabelFontStrikethrough": "Przekreślony",
"LabelFormat": "Format",
"LabelGenre": "Gatunek",
"LabelGenres": "Gatunki",
"LabelHardDeleteFile": "Usuń trwale plik",
- "LabelHasEbook": "Has ebook",
- "LabelHasSupplementaryEbook": "Has supplementary ebook",
- "LabelHighestPriority": "Highest priority",
+ "LabelHasEbook": "Ma ebooka",
+ "LabelHasSupplementaryEbook": "Posiada dodatkowy ebook",
+ "LabelHideSubtitles": "Ukryj napisy",
+ "LabelHighestPriority": "Najwyższy priorytet",
"LabelHost": "Host",
"LabelHour": "Godzina",
+ "LabelHours": "Godziny",
"LabelIcon": "Ikona",
- "LabelImageURLFromTheWeb": "Image URL from the web",
+ "LabelImageURLFromTheWeb": "Link do obrazu w sieci",
+ "LabelInProgress": "W trakcie",
"LabelIncludeInTracklist": "Dołącz do listy odtwarzania",
"LabelIncomplete": "Nieukończone",
- "LabelInProgress": "W trakcie",
"LabelInterval": "Interwał",
"LabelIntervalCustomDailyWeekly": "Niestandardowy dzienny/tygodniowy",
"LabelIntervalEvery12Hours": "Co 12 godzin",
@@ -331,78 +368,81 @@
"LabelIntervalEvery6Hours": "Co 6 godzin",
"LabelIntervalEveryDay": "Każdego dnia",
"LabelIntervalEveryHour": "Każdej godziny",
- "LabelInvert": "Invert",
+ "LabelInvert": "Inversja",
"LabelItem": "Pozycja",
+ "LabelJumpBackwardAmount": "Przeskocz do tyłu o:",
+ "LabelJumpForwardAmount": "Przeskocz do przodu o:",
"LabelLanguage": "Język",
"LabelLanguageDefaultServer": "Domyślny język serwera",
- "LabelLastBookAdded": "Last Book Added",
- "LabelLastBookUpdated": "Last Book Updated",
+ "LabelLanguages": "Języki",
+ "LabelLastBookAdded": "Ostatnio dodana książka",
+ "LabelLastBookUpdated": "Ostatnio modyfikowana książka",
"LabelLastSeen": "Ostatnio widziany",
"LabelLastTime": "Ostatni czas",
"LabelLastUpdate": "Ostatnia aktualizacja",
- "LabelLayout": "Layout",
- "LabelLayoutSinglePage": "Single page",
- "LabelLayoutSplitPage": "Split page",
+ "LabelLayout": "Układ",
+ "LabelLayoutSinglePage": "Pojedyncza strona",
+ "LabelLayoutSplitPage": "Podział strony",
"LabelLess": "Mniej",
"LabelLibrariesAccessibleToUser": "Biblioteki dostępne dla użytkownika",
"LabelLibrary": "Biblioteka",
+ "LabelLibraryFilterSublistEmpty": "Brak {0}",
"LabelLibraryItem": "Element biblioteki",
"LabelLibraryName": "Nazwa biblioteki",
"LabelLimit": "Limit",
- "LabelLineSpacing": "Line spacing",
+ "LabelLineSpacing": "Odstęp między wierszami",
"LabelListenAgain": "Słuchaj ponownie",
- "LabelLogLevelDebug": "Debug",
+ "LabelLogLevelDebug": "Debugowanie",
"LabelLogLevelInfo": "Informacja",
"LabelLogLevelWarn": "Ostrzeżenie",
"LabelLookForNewEpisodesAfterDate": "Szukaj nowych odcinków po dacie",
- "LabelLowestPriority": "Lowest Priority",
- "LabelMatchExistingUsersBy": "Match existing users by",
- "LabelMatchExistingUsersByDescription": "Used for connecting existing users. Once connected, users will be matched by a unique id from your SSO provider",
+ "LabelLowestPriority": "Najniższy priorytet",
+ "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",
"LabelMediaPlayer": "Odtwarzacz",
"LabelMediaType": "Typ mediów",
- "LabelMetadataOrderOfPrecedenceDescription": "Higher priority metadata sources will override lower priority metadata sources",
- "LabelMetadataProvider": "Dostawca metadanych",
"LabelMetaTag": "Tag",
- "LabelMetaTags": "Meta Tags",
+ "LabelMetaTags": "Meta Tagi",
+ "LabelMetadataOrderOfPrecedenceDescription": "Źródła metadanych o wyższym priorytecie będą zastępują źródła o niższym priorytecie",
+ "LabelMetadataProvider": "Dostawca metadanych",
"LabelMinute": "Minuta",
+ "LabelMinutes": "Minuty",
"LabelMissing": "Brakujący",
- "LabelMissingEbook": "Has no ebook",
- "LabelMissingSupplementaryEbook": "Has no supplementary ebook",
- "LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs",
- "LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is audiobookshelf://oauth, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (*) as the sole entry permits any URI.",
+ "LabelMissingEbook": "Nie posiada ebooka",
+ "LabelMissingSupplementaryEbook": "Nie posiada dodatkowego ebooka",
+ "LabelMobileRedirectURIs": "Dozwolone URI przekierowań mobilnych",
"LabelMore": "Więcej",
- "LabelMoreInfo": "More Info",
+ "LabelMoreInfo": "Więcej informacji",
"LabelName": "Nazwa",
- "LabelNarrator": "Narrator",
+ "LabelNarrator": "Lektor",
"LabelNarrators": "Lektorzy",
"LabelNew": "Nowy",
+ "LabelNewPassword": "Nowe hasło",
"LabelNewestAuthors": "Najnowsi autorzy",
"LabelNewestEpisodes": "Najnowsze odcinki",
- "LabelNewPassword": "Nowe hasło",
- "LabelNextBackupDate": "Next backup date",
- "LabelNextScheduledRun": "Next scheduled run",
- "LabelNoEpisodesSelected": "No episodes selected",
- "LabelNotes": "Uwagi",
+ "LabelNextBackupDate": "Data kolejnej kopii zapasowej",
+ "LabelNextScheduledRun": "Następne uruchomienie",
+ "LabelNoCustomMetadataProviders": "Brak niestandardowych dostawców metadanych",
+ "LabelNoEpisodesSelected": "Nie wybrano żadnych odcinków",
"LabelNotFinished": "Nieukończone",
+ "LabelNotStarted": "Nie rozpoczęto",
+ "LabelNotes": "Uwagi",
"LabelNotificationAppriseURL": "URLe Apprise",
"LabelNotificationAvailableVariables": "Dostępne zmienne",
"LabelNotificationBodyTemplate": "Szablon treści powiadomienia",
"LabelNotificationEvent": "Zdarzenie",
+ "LabelNotificationTitleTemplate": "Szablon tytułu powiadmienia",
"LabelNotificationsMaxFailedAttempts": "Maksymalna liczba nieudanych prób",
"LabelNotificationsMaxFailedAttemptsHelp": "Powiadomienia są wyłączane, gdy próba ich wysyłki nie powiedzie się kilkukrotnie",
"LabelNotificationsMaxQueueSize": "Maksymalny rozmiar kolejki dla powiadomień",
"LabelNotificationsMaxQueueSizeHelp": "Zdarzenia są ograniczone do 1 na sekundę. Zdarzenia będą ignorowane jeśli kolejka ma maksymalny rozmiar. Zapobiega to spamowaniu powiadomieniami.",
- "LabelNotificationTitleTemplate": "Szablon tytułu powiadmienia",
- "LabelNotStarted": "Nie rozpoęczto",
"LabelNumberOfBooks": "Liczba książek",
"LabelNumberOfEpisodes": "# odcinków",
- "LabelOpenIDAdvancedPermsClaimDescription": "Name of the OpenID claim that contains advanced permissions for user actions within the application which will apply to non-admin roles (if configured). If the claim is missing from the response, access to ABS will be denied. If a single option is missing, it will be treated as false. Ensure the identity provider's claim matches the expected structure:",
- "LabelOpenIDClaims": "Leave the following options empty to disable advanced group and permissions assignment, automatically assigning 'User' group then.",
- "LabelOpenIDGroupClaimDescription": "Name of the OpenID claim that contains a list of the user's groups. Commonly referred to as groups. If configured, the application will automatically assign roles based on the user's group memberships, provided that these groups are named case-insensitively 'admin', 'user', or 'guest' in the claim. The claim should contain a list, and if a user belongs to multiple groups, the application will assign the role corresponding to the highest level of access. If no group matches, access will be denied.",
"LabelOpenRSSFeed": "Otwórz kanał RSS",
- "LabelOverwrite": "Overwrite",
+ "LabelOverwrite": "Nadpisz",
"LabelPassword": "Hasło",
"LabelPath": "Ścieżka",
+ "LabelPermanent": "Stałe",
"LabelPermissionsAccessAllLibraries": "Ma dostęp do wszystkich bibliotek",
"LabelPermissionsAccessAllTags": "Ma dostęp do wszystkich tagów",
"LabelPermissionsAccessExplicitContent": "Ma dostęp do treści oznacznych jako nieprzyzwoite",
@@ -410,79 +450,72 @@
"LabelPermissionsDownload": "Ma możliwość pobierania",
"LabelPermissionsUpdate": "Ma możliwość aktualizowania",
"LabelPermissionsUpload": "Ma możliwość dodawania",
- "LabelPersonalYearReview": "Your Year in Review ({0})",
+ "LabelPersonalYearReview": "Podsumowanie twojego roku ({0})",
"LabelPhotoPathURL": "Scieżka/URL do zdjęcia",
- "LabelPlaylists": "Playlists",
"LabelPlayMethod": "Metoda odtwarzania",
- "LabelPodcast": "Podcast",
- "LabelPodcasts": "Podcasty",
+ "LabelPlaylists": "Listy odtwarzania",
"LabelPodcastSearchRegion": "Obszar wyszukiwania podcastów",
- "LabelPodcastType": "Podcast Type",
- "LabelPort": "Port",
+ "LabelPodcasts": "Podcasty",
"LabelPrefixesToIgnore": "Ignorowane prefiksy (wielkość liter nie ma znaczenia)",
- "LabelPreventIndexing": "Prevent your feed from being indexed by iTunes and Google podcast directories",
- "LabelPrimaryEbook": "Primary ebook",
+ "LabelPreventIndexing": "Zapobiega indeksowaniu przez iTunes i Google",
+ "LabelPrimaryEbook": "Główny ebook",
"LabelProgress": "Postęp",
"LabelProvider": "Dostawca",
"LabelPubDate": "Data publikacji",
- "LabelPublisher": "Wydawca",
"LabelPublishYear": "Rok publikacji",
- "LabelRead": "Read",
- "LabelReadAgain": "Read Again",
- "LabelReadEbookWithoutProgress": "Read ebook without keeping progress",
- "LabelRecentlyAdded": "Niedawno dodany",
- "LabelRecentSeries": "Ostatnie serie",
- "LabelRecommended": "Recommended",
- "LabelRedo": "Redo",
- "LabelRegion": "Region",
- "LabelReleaseDate": "Data wydania",
- "LabelRemoveCover": "Remove cover",
- "LabelRowsPerPage": "Rows per page",
- "LabelRSSFeedCustomOwnerEmail": "Custom owner Email",
- "LabelRSSFeedCustomOwnerName": "Custom owner Name",
+ "LabelPublisher": "Wydawca",
+ "LabelPublishers": "Wydawcy",
"LabelRSSFeedOpen": "RSS Feed otwarty",
- "LabelRSSFeedPreventIndexing": "Prevent Indexing",
- "LabelRSSFeedSlug": "RSS Feed Slug",
+ "LabelRSSFeedPreventIndexing": "Zapobiegaj indeksowaniu",
"LabelRSSFeedURL": "URL kanały RSS",
+ "LabelRandomly": "Losowo",
+ "LabelReAddSeriesToContinueListening": "Ponownie Dodaj Serię do sekcji Kontunuuj Odtwarzanie",
+ "LabelRead": "Czytaj",
+ "LabelReadAgain": "Czytaj ponownie",
+ "LabelReadEbookWithoutProgress": "Czytaj książkę bez zapamiętywania postępu",
+ "LabelRecentSeries": "Ostatnie serie",
+ "LabelRecentlyAdded": "Niedawno dodane",
+ "LabelRecommended": "Polecane",
+ "LabelRedo": "Wycofaj",
+ "LabelReleaseDate": "Data wydania",
+ "LabelRemoveCover": "Usuń okładkę",
+ "LabelRowsPerPage": "Wierszy na stronę",
"LabelSearchTerm": "Wyszukiwanie frazy",
"LabelSearchTitle": "Wyszukaj tytuł",
"LabelSearchTitleOrASIN": "Szukaj tytuł lub ASIN",
"LabelSeason": "Sezon",
- "LabelSelectAll": "Select all",
- "LabelSelectAllEpisodes": "Select all episodes",
- "LabelSelectEpisodesShowing": "Select {0} episodes showing",
- "LabelSelectUsers": "Select users",
- "LabelSendEbookToDevice": "Send Ebook to...",
+ "LabelSelectAll": "Wybierz wszystko",
+ "LabelSelectAllEpisodes": "Wybierz wszystkie odcinki",
+ "LabelSelectUsers": "Wybór użytkowników",
+ "LabelSendEbookToDevice": "Wyślij ebook do...",
"LabelSequence": "Kolejność",
"LabelSeries": "Serie",
"LabelSeriesName": "Nazwy serii",
"LabelSeriesProgress": "Postęp w serii",
- "LabelServerYearReview": "Server Year in Review ({0})",
- "LabelSetEbookAsPrimary": "Set as primary",
- "LabelSetEbookAsSupplementary": "Set as supplementary",
- "LabelSettingsAudiobooksOnly": "Audiobooks only",
- "LabelSettingsAudiobooksOnlyHelp": "Enabling this setting will ignore ebook files unless they are inside an audiobook folder in which case they will be set as supplementary ebooks",
- "LabelSettingsBookshelfViewHelp": "Widok półki z ksiązkami",
+ "LabelServerYearReview": "Podsumowanie serwera w roku ({0})",
+ "LabelSetEbookAsPrimary": "Ustaw jako pierwszy",
+ "LabelSetEbookAsSupplementary": "Ustaw jako dodatkowy",
+ "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",
+ "LabelSettingsBookshelfViewHelp": "Widok półki z książkami",
"LabelSettingsChromecastSupport": "Wsparcie Chromecast",
"LabelSettingsDateFormat": "Format daty",
"LabelSettingsDisableWatcher": "Wyłącz monitorowanie",
"LabelSettingsDisableWatcherForLibrary": "Wyłącz monitorowanie folderów dla biblioteki",
"LabelSettingsDisableWatcherHelp": "Wyłącz automatyczne dodawanie/aktualizowanie elementów po wykryciu zmian w plikach. *Wymaga restartu serwera",
- "LabelSettingsEnableWatcher": "Enable Watcher",
- "LabelSettingsEnableWatcherForLibrary": "Enable folder watcher for library",
- "LabelSettingsEnableWatcherHelp": "Enables the automatic adding/updating of items when file changes are detected. *Requires server restart",
- "LabelSettingsEpubsAllowScriptedContent": "Allow scripted content in epubs",
- "LabelSettingsEpubsAllowScriptedContentHelp": "Allow epub files to execute scripts. It is recommended to keep this setting disabled unless you trust the source of the epub files.",
+ "LabelSettingsEnableWatcher": "Włącz monitorowanie",
+ "LabelSettingsEnableWatcherForLibrary": "Włącz monitorowanie folderów dla biblioteki",
+ "LabelSettingsEnableWatcherHelp": "Włącza automatyczne dodawanie/aktualizację pozycji gdy wykryte zostaną zmiany w plikach. Wymaga restartu serwera",
+ "LabelSettingsEpubsAllowScriptedContent": "Zezwalanie na skrypty w plikach epub",
+ "LabelSettingsEpubsAllowScriptedContentHelp": "Zezwala plikom epub na wykonywanie skryptów. Zaleca się mieć to ustawienie wyłączone, chyba że ma się zaufanie do źródła plików epub.",
"LabelSettingsExperimentalFeatures": "Funkcje eksperymentalne",
"LabelSettingsExperimentalFeaturesHelp": "Funkcje w trakcie rozwoju, które mogą zyskanć na Twojej opinii i pomocy w testowaniu. Kliknij, aby otworzyć dyskusję na githubie.",
"LabelSettingsFindCovers": "Szukanie okładek",
"LabelSettingsFindCoversHelp": "Jeśli audiobook nie posiada zintegrowanej okładki albo w folderze nie zostanie znaleziony plik okładki, skaner podejmie próbę pobrania okładki z sieci. Uwaga: może to wydłuzyć proces skanowania",
- "LabelSettingsHideSingleBookSeries": "Hide single book series",
- "LabelSettingsHideSingleBookSeriesHelp": "Series that have a single book will be hidden from the series page and home page shelves.",
+ "LabelSettingsHideSingleBookSeries": "Ukryj serie z jedną książką",
+ "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",
"LabelSettingsLibraryBookshelfView": "Widok półki z książkami na stronie biblioteki",
- "LabelSettingsOnlyShowLaterBooksInContinueSeries": "Skip earlier books in Continue Series",
- "LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "The Continue Series home page shelf shows the first book not started in series that have at least one book finished and no books in progress. Enabling this setting will continue series from the furthest completed book instead of the first book not started.",
"LabelSettingsParseSubtitles": "Przetwarzaj podtytuły",
"LabelSettingsParseSubtitlesHelp": "Opcja pozwala na pobranie podtytułu z nazwy folderu z audiobookiem. Podtytuł musi być rozdzielony za pomocą separatora \" - \" Przykład: \"Book Title - A Subtitle Here\" podtytuł \"A Subtitle Here\"",
"LabelSettingsPreferMatchedMetadata": "Preferowanie dopasowanych metadanych",
@@ -494,19 +527,22 @@
"LabelSettingsSquareBookCovers": "Używaj kwadratowych okładek książek",
"LabelSettingsSquareBookCoversHelp": "Preferuj stosowanie kwadratowych okładek zamiast standardowych okładek książkowych o propocji 1,6:1",
"LabelSettingsStoreCoversWithItem": "Przechowuj okładkę w folderze książki",
- "LabelSettingsStoreCoversWithItemHelp": "Domyślnie okładki są przechowywane w folderze /metadata/items, włączenie tej opcji spowoduje, że okładka będzie przechowywana w folderze ksiązki. Tylko jedna okładka o nazwie pliku \"cover\" będzie przechowywana.",
+ "LabelSettingsStoreCoversWithItemHelp": "Domyślnie okładki są przechowywane w folderze /metadata/items, włączenie tej opcji spowoduje, że okładka będzie przechowywana w folderze ksiązki. Tylko jedna okładka o nazwie pliku \"cover\" będzie przechowywana",
"LabelSettingsStoreMetadataWithItem": "Przechowuj metadane w folderze książki",
"LabelSettingsStoreMetadataWithItemHelp": "Domyślnie metadane są przechowywane w folderze /metadata/items, włączenie tej opcji spowoduje, że okładka będzie przechowywana w folderze ksiązki. Tylko jedna okładka o nazwie pliku \"cover\" będzie przechowywana",
- "LabelSettingsTimeFormat": "Time Format",
+ "LabelSettingsTimeFormat": "Format czasu",
+ "LabelShare": "Udostępnij",
+ "LabelShareOpen": "Otwórz udział",
+ "LabelShareURL": "Link do udziału",
"LabelShowAll": "Pokaż wszystko",
- "LabelShowSeconds": "Show seconds",
+ "LabelShowSeconds": "Pokaż sekundy",
+ "LabelShowSubtitles": "Pokaż Napisy",
"LabelSize": "Rozmiar",
"LabelSleepTimer": "Wyłącznik czasowy",
- "LabelSlug": "Slug",
"LabelStart": "Rozpocznij",
+ "LabelStartTime": "Czas rozpoczęcia",
"LabelStarted": "Rozpoczęty",
"LabelStartedAt": "Rozpoczęto",
- "LabelStartTime": "Czas rozpoczęcia",
"LabelStatsAudioTracks": "Ścieżki audio",
"LabelStatsAuthors": "Autorzy",
"LabelStatsBestDay": "Najlepszy dzień",
@@ -518,32 +554,27 @@
"LabelStatsItemsFinished": "Pozycje zakończone",
"LabelStatsItemsInLibrary": "Pozycje w bibliotece",
"LabelStatsMinutes": "Minuty",
- "LabelStatsMinutesListening": "Minuty odtwarzania",
+ "LabelStatsMinutesListening": "Minuty słuchania",
"LabelStatsOverallDays": "Całkowity czas (dni)",
"LabelStatsOverallHours": "Całkowity czas (godziny)",
- "LabelStatsWeekListening": "Tydzień odtwarzania",
+ "LabelStatsWeekListening": "Tydzień słuchania",
"LabelSubtitle": "Podtytuł",
"LabelSupportedFileTypes": "Obsługiwane typy plików",
- "LabelTag": "Tag",
"LabelTags": "Tagi",
"LabelTagsAccessibleToUser": "Tagi dostępne dla użytkownika",
- "LabelTagsNotAccessibleToUser": "Tags not Accessible to User",
- "LabelTasks": "Tasks Running",
- "LabelTextEditorBulletedList": "Bulleted list",
- "LabelTextEditorLink": "Link",
- "LabelTextEditorNumberedList": "Numbered list",
- "LabelTextEditorUnlink": "Unlink",
- "LabelTheme": "Theme",
- "LabelThemeDark": "Dark",
- "LabelThemeLight": "Light",
- "LabelTimeBase": "Time Base",
+ "LabelThemeDark": "Ciemny",
+ "LabelThemeLight": "Jasny",
+ "LabelTimeDurationXHours": "{0} godzin",
+ "LabelTimeDurationXMinutes": "{0} minuty",
+ "LabelTimeDurationXSeconds": "{0} sekundy",
+ "LabelTimeInMinutes": "Czas w minutach",
"LabelTimeListened": "Czas odtwarzania",
"LabelTimeListenedToday": "Czas odtwarzania dzisiaj",
"LabelTimeRemaining": "Pozostało {0}",
"LabelTimeToShift": "Czas do przesunięcia w sekundach",
"LabelTitle": "Tytuł",
"LabelToolsEmbedMetadata": "Załącz metadane",
- "LabelToolsEmbedMetadataDescription": "Załącz metadane do plików audio (okładkę oraz znaczniki rozdziałów)",
+ "LabelToolsEmbedMetadataDescription": "Załącz metadane do plików audio (okładkę oraz znaczniki rozdziałów).",
"LabelToolsMakeM4b": "Generuj plik M4B",
"LabelToolsMakeM4bDescription": "Tworzy plik w formacie .M4B, który zawiera metadane, okładkę oraz rozdziały.",
"LabelToolsSplitM4b": "Podziel plik .M4B na pliki .MP3",
@@ -552,22 +583,18 @@
"LabelTotalTimeListened": "Całkowity czas odtwarzania",
"LabelTrackFromFilename": "Ścieżka z nazwy pliku",
"LabelTrackFromMetadata": "Ścieżka z metadanych",
- "LabelTracks": "Tracks",
- "LabelTracksMultiTrack": "Multi-track",
- "LabelTracksNone": "No tracks",
- "LabelTracksSingleTrack": "Single-track",
+ "LabelTracks": "Ścieżki",
"LabelType": "Typ",
- "LabelUnabridged": "Unabridged",
- "LabelUndo": "Undo",
+ "LabelUndo": "Wycofaj",
"LabelUnknown": "Nieznany",
"LabelUpdateCover": "Zaktalizuj odkładkę",
"LabelUpdateCoverHelp": "Umożliwienie nadpisania istniejących okładek dla wybranych książek w przypadku znalezienia dopasowania",
- "LabelUpdatedAt": "Zaktualizowano",
"LabelUpdateDetails": "Zaktualizuj szczegóły",
"LabelUpdateDetailsHelp": "Umożliwienie nadpisania istniejących szczegółów dla wybranych książek w przypadku znalezienia dopasowania",
+ "LabelUpdatedAt": "Zaktualizowano",
"LabelUploaderDragAndDrop": "Przeciągnij i puść foldery lub pliki",
"LabelUploaderDropFiles": "Puść pliki",
- "LabelUploaderItemFetchMetadataHelp": "Automatically fetch title, author, and series",
+ "LabelUploaderItemFetchMetadataHelp": "Automatycznie pobierz tytuł, autora i serie",
"LabelUseChapterTrack": "Użyj ścieżki rozdziału",
"LabelUseFullTrack": "Użycie ścieżki rozdziału",
"LabelUser": "Użytkownik",
@@ -576,81 +603,69 @@
"LabelVersion": "Wersja",
"LabelViewBookmarks": "Wyświetlaj zakładki",
"LabelViewChapters": "Wyświetlaj rozdziały",
+ "LabelViewPlayerSettings": "Zobacz ustawienia odtwarzacza",
"LabelViewQueue": "Wyświetlaj kolejkę odtwarzania",
"LabelVolume": "Głośność",
"LabelWeekdaysToRun": "Dni tygodnia",
- "LabelYearReviewHide": "Hide Year in Review",
- "LabelYearReviewShow": "See Year in Review",
+ "LabelXBooks": "{0} książek",
+ "LabelXItems": "{0} elementów",
+ "LabelYearReviewHide": "Ukryj Podsumowanie Roku",
+ "LabelYearReviewShow": "Pokaż Podsumowanie Roku",
"LabelYourAudiobookDuration": "Czas trwania audiobooka",
"LabelYourBookmarks": "Twoje zakładki",
- "LabelYourPlaylists": "Your Playlists",
+ "LabelYourPlaylists": "Twoje playlisty",
"LabelYourProgress": "Twój postęp",
- "MessageAddToPlayerQueue": "Add to player queue",
"MessageAppriseDescription": "Aby użyć tej funkcji, konieczne jest posiadanie instancji Apprise API albo innego rozwiązania, które obsługuje schemat zapytań Apprise. URL do interfejsu API powinno być całkowitą ścieżką, np., jeśli Twoje API do powiadomień jest dostępne pod adresem http://192.168.1.1:8337 to wpisany tutaj URL powinien mieć postać: http://192.168.1.1:8337/notify.",
"MessageBackupsDescription": "Kopie zapasowe obejmują użytkowników, postępy użytkowników, szczegóły pozycji biblioteki, ustawienia serwera i obrazy przechowywane w /metadata/items & /metadata/authors. Kopie zapasowe nie obejmują żadnych plików przechowywanych w folderach biblioteki.",
+ "MessageBackupsLocationEditNote": "Uwaga: Zmiana lokalizacji kopii zapasowej nie przenosi ani nie modyfikuje istniejących kopii zapasowych",
+ "MessageBackupsLocationNoEditNote": "Uwaga: Lokalizacja kopii zapasowej jest ustawiona poprzez zmienną środowiskową i nie może być tutaj zmieniona.",
+ "MessageBackupsLocationPathEmpty": "Ścieżka do kopii zapasowej nie może być pusta",
"MessageBatchQuickMatchDescription": "Quick Match będzie próbował dodać brakujące okładki i metadane dla wybranych elementów. Włącz poniższe opcje, aby umożliwić Quick Match nadpisanie istniejących okładek i/lub metadanych.",
"MessageBookshelfNoCollections": "Nie posiadasz jeszcze żadnych kolekcji",
- "MessageBookshelfNoResultsForFilter": "Nie znaleziono żadnych pozycji przy aktualnym filtrowaniu \"{0}: {1}\"",
"MessageBookshelfNoRSSFeeds": "Nie posiadasz żadnych otwartych feedów RSS",
+ "MessageBookshelfNoResultsForFilter": "Nie znaleziono żadnych pozycji przy aktualnym filtrowaniu \"{0}: {1}\"",
+ "MessageBookshelfNoResultsForQuery": "Brak wyników zapytania",
"MessageBookshelfNoSeries": "Nie masz jeszcze żadnych serii",
"MessageChapterEndIsAfter": "Koniec rozdziału następuje po zakończeniu audiobooka",
- "MessageChapterErrorFirstNotZero": "First chapter must start at 0",
- "MessageChapterErrorStartGteDuration": "Invalid start time must be less than audiobook duration",
- "MessageChapterErrorStartLtPrev": "Invalid start time must be greater than or equal to previous chapter start time",
+ "MessageChapterErrorFirstNotZero": "Pierwszy rozdział musi rozpoczynać się na 0",
"MessageChapterStartIsAfter": "Początek rozdziału następuje po zakończeniu audiobooka",
"MessageCheckingCron": "Sprawdzanie cron...",
- "MessageConfirmCloseFeed": "Are you sure you want to close this feed?",
"MessageConfirmDeleteBackup": "Czy na pewno chcesz usunąć kopię zapasową dla {0}?",
- "MessageConfirmDeleteFile": "This will delete the file from your file system. Are you sure?",
+ "MessageConfirmDeleteFile": "Ta operacja usunie plik z twojego dysku. Jesteś pewien?",
"MessageConfirmDeleteLibrary": "Czy na pewno chcesz trwale usunąć bibliotekę \"{0}\"?",
- "MessageConfirmDeleteLibraryItem": "This will delete the library item from the database and your file system. Are you sure?",
- "MessageConfirmDeleteLibraryItems": "This will delete {0} library items from the database and your file system. Are you sure?",
+ "MessageConfirmDeleteLibraryItem": "Ta operacja usunie pozycję biblioteki z bazy danych i z dysku. Czy jesteś pewien?",
"MessageConfirmDeleteSession": "Czy na pewno chcesz usunąć tę sesję?",
"MessageConfirmForceReScan": "Czy na pewno chcesz wymusić ponowne skanowanie?",
- "MessageConfirmMarkAllEpisodesFinished": "Are you sure you want to mark all episodes as finished?",
- "MessageConfirmMarkAllEpisodesNotFinished": "Are you sure you want to mark all episodes as not finished?",
- "MessageConfirmMarkSeriesFinished": "Are you sure you want to mark all books in this series as finished?",
- "MessageConfirmMarkSeriesNotFinished": "Are you sure you want to mark all books in this series as not finished?",
- "MessageConfirmPurgeCache": "Purge cache will delete the entire directory at /metadata/cache.
Are you sure you want to remove the cache directory?",
- "MessageConfirmQuickEmbed": "Warning! Quick embed will not backup your audio files. Make sure that you have a backup of your audio files.
Would you like to continue?",
- "MessageConfirmRemoveAllChapters": "Are you sure you want to remove all chapters?",
- "MessageConfirmRemoveAuthor": "Are you sure you want to remove author \"{0}\"?",
+ "MessageConfirmMarkAllEpisodesFinished": "Czy na pewno chcesz oznaczyć wszystkie odcinki jako ukończone?",
+ "MessageConfirmMarkAllEpisodesNotFinished": "Czy na pewno chcesz oznaczyć wszystkie odcinki jako nieukończone?",
+ "MessageConfirmMarkSeriesFinished": "Czy na pewno chcesz oznaczyć wszystkie książki w tej serii jako ukończone?",
+ "MessageConfirmMarkSeriesNotFinished": "Czy na pewno chcesz oznaczyć wszystkie książki w tej serii jako nieukończone?",
"MessageConfirmRemoveCollection": "Czy na pewno chcesz usunąć kolekcję \"{0}\"?",
"MessageConfirmRemoveEpisode": "Czy na pewno chcesz usunąć odcinek \"{0}\"?",
"MessageConfirmRemoveEpisodes": "Czy na pewno chcesz usunąć {0} odcinki?",
- "MessageConfirmRemoveListeningSessions": "Are you sure you want to remove {0} listening sessions?",
- "MessageConfirmRemoveNarrator": "Are you sure you want to remove narrator \"{0}\"?",
- "MessageConfirmRemovePlaylist": "Are you sure you want to remove your playlist \"{0}\"?",
- "MessageConfirmRenameGenre": "Are you sure you want to rename genre \"{0}\" to \"{1}\" for all items?",
- "MessageConfirmRenameGenreMergeNote": "Note: This genre already exists so they will be merged.",
- "MessageConfirmRenameGenreWarning": "Warning! A similar genre with a different casing already exists \"{0}\".",
- "MessageConfirmRenameTag": "Are you sure you want to rename tag \"{0}\" to \"{1}\" for all items?",
- "MessageConfirmRenameTagMergeNote": "Note: This tag already exists so they will be merged.",
- "MessageConfirmRenameTagWarning": "Warning! A similar tag with a different casing already exists \"{0}\".",
- "MessageConfirmReScanLibraryItems": "Are you sure you want to re-scan {0} items?",
- "MessageConfirmSendEbookToDevice": "Are you sure you want to send {0} ebook \"{1}\" to device \"{2}\"?",
+ "MessageConfirmRemoveListeningSessions": "Czy na pewno chcesz usunąć {0} sesji słuchania?",
+ "MessageConfirmRemovePlaylist": "Czy jesteś pewien, że chcesz usunąć twoją playlistę \"{0}\"?",
"MessageDownloadingEpisode": "Pobieranie odcinka",
"MessageDragFilesIntoTrackOrder": "przeciągnij pliki aby ustawić właściwą kolejność utworów",
+ "MessageEmbedFailed": "Niepowodzenie wstawiania!",
"MessageEmbedFinished": "Osadzanie zakończone!",
"MessageEpisodesQueuedForDownload": "{0} odcinki w kolejce do pobrania",
- "MessageEreaderDevices": "To ensure delivery of ebooks, you may need to add the above email address as a valid sender for each device listed below.",
"MessageFeedURLWillBe": "URL kanału: {0}",
"MessageFetching": "Pobieranie...",
"MessageForceReScanDescription": "przeskanuje wszystkie pliki ponownie, jak przy świeżym skanowaniu. Tagi ID3 plików audio, pliki OPF i pliki tekstowe będą skanowane jak nowe.",
"MessageImportantNotice": "Ważna informacja!",
"MessageInsertChapterBelow": "Wstaw rozdział poniżej",
"MessageItemsSelected": "{0} zaznaczone elementy",
- "MessageItemsUpdated": "{0} Items Updated",
"MessageJoinUsOn": "Dołącz do nas na",
- "MessageListeningSessionsInTheLastYear": "{0} sesje odsłuchowe w ostatnim roku",
+ "MessageListeningSessionsInTheLastYear": "Sesje słuchania w ostatnim roku: {0}",
"MessageLoading": "Ładowanie...",
"MessageLoadingFolders": "Ładowanie folderów...",
- "MessageLogsDescription": "Logs are stored in /metadata/logs as JSON files. Crash logs are stored in /metadata/logs/crash_logs.txt.",
- "MessageM4BFailed": "Tworzenie pliku M4B nie powiodło się",
+ "MessageLogsDescription": "Logi zapisane są w /metadata/logs jako pliki JSON. Logi awaryjne są zapisane w /metadata/logs/crash_logs.txt.",
+ "MessageM4BFailed": "Tworzenie pliku M4B nie powiodło się!",
"MessageM4BFinished": "Tworzenie pliku M4B zakończyło się!",
"MessageMapChapterTitles": "Mapowanie tytułów rozdziałów do istniejących rozdziałów audiobooka bez dostosowywania znaczników czasu",
- "MessageMarkAllEpisodesFinished": "Mark all episodes finished",
- "MessageMarkAllEpisodesNotFinished": "Mark all episodes not finished",
+ "MessageMarkAllEpisodesFinished": "Oznacz wszystkie odcinki jako ukończone",
+ "MessageMarkAllEpisodesNotFinished": "Oznacz wszystkie odcinki jako nieukończone",
"MessageMarkAsFinished": "Oznacz jako ukończone",
"MessageMarkAsNotFinished": "Oznacz jako nieukończone",
"MessageMatchBooksDescription": "spróbuje dopasować książki w bibliotece bez plików audio, korzystając z wybranego dostawcy wyszukiwania i wypełnić puste szczegóły i okładki. Nie nadpisuje informacji.",
@@ -662,47 +677,44 @@
"MessageNoCollections": "Brak kolekcji",
"MessageNoCoversFound": "Okładki nieznalezione",
"MessageNoDescription": "Brak opisu",
- "MessageNoDownloadsInProgress": "No downloads currently in progress",
- "MessageNoDownloadsQueued": "No downloads queued",
"MessageNoEpisodeMatchesFound": "Nie znaleziono pasujących odcinków",
"MessageNoEpisodes": "Brak odcinków",
"MessageNoFoldersAvailable": "Brak dostępnych folderów",
"MessageNoGenres": "Brak gatunków",
"MessageNoIssues": "Brak problemów",
"MessageNoItems": "Brak elementów",
- "MessageNoItemsFound": "Nie znaleziono żadnych elemntów",
- "MessageNoListeningSessions": "Brak sesji odtwarzania",
+ "MessageNoItemsFound": "Nie znaleziono żadnych elementów",
+ "MessageNoListeningSessions": "Brak sesji słuchania",
"MessageNoLogs": "Brak logów",
"MessageNoMediaProgress": "Brak postępu",
"MessageNoNotifications": "Brak powiadomień",
"MessageNoPodcastsFound": "Nie znaleziono podcastów",
"MessageNoResults": "Brak wyników",
"MessageNoSearchResultsFor": "Brak wyników wyszukiwania dla \"{0}\"",
- "MessageNoSeries": "No Series",
- "MessageNoTags": "No Tags",
- "MessageNoTasksRunning": "No Tasks Running",
- "MessageNotYetImplemented": "Jeszcze nie zaimplementowane",
- "MessageNoUpdateNecessary": "Brak konieczności aktualizacji",
+ "MessageNoTasksRunning": "Brak uruchomionych zadań",
"MessageNoUpdatesWereNecessary": "Brak aktualizacji",
- "MessageNoUserPlaylists": "You have no playlists",
+ "MessageNoUserPlaylists": "Nie masz żadnych list odtwarzania",
+ "MessageNotYetImplemented": "Jeszcze nie zaimplementowane",
+ "MessageOpmlPreviewNote": "Uwaga: To jest podgląd sparsowanego pliku OPML. Tytuł podcastu wzięty został z wątku RSS.",
"MessageOr": "lub",
"MessagePauseChapter": "Zatrzymaj odtwarzanie rozdziały",
"MessagePlayChapter": "Rozpocznij odtwarzanie od początku rozdziału",
- "MessagePlaylistCreateFromCollection": "Create playlist from collection",
+ "MessagePlaylistCreateFromCollection": "Utwórz listę odtwarzania na podstawie kolekcji",
"MessagePodcastHasNoRSSFeedForMatching": "Podcast nie ma adresu url kanału RSS, który mógłby zostać użyty do dopasowania",
"MessageQuickMatchDescription": "Wypełnij puste informacje i okładkę pierwszym wynikiem dopasowania z '{0}'. Nie nadpisuje szczegółów, chyba że włączone jest ustawienie serwera 'Preferuj dopasowane metadane'.",
"MessageRemoveChapter": "Usuń rozdział",
"MessageRemoveEpisodes": "Usuń {0} odcinków",
- "MessageRemoveFromPlayerQueue": "Remove from player queue",
+ "MessageRemoveFromPlayerQueue": "Usuń z kolejki odtwarzacza",
"MessageRemoveUserWarning": "Czy na pewno chcesz trwale usunąć użytkownika \"{0}\"?",
"MessageReportBugsAndContribute": "Zgłoś błędy, pomysły i pomóż rozwijać aplikację na",
- "MessageResetChaptersConfirm": "Are you sure you want to reset chapters and undo the changes you made?",
"MessageRestoreBackupConfirm": "Czy na pewno chcesz przywrócić kopię zapasową utworzoną w dniu",
- "MessageRestoreBackupWarning": "Przywrócenie kopii zapasowej spowoduje nadpisane bazy danych w folderze /config oraz okładke w folderze /metadata/items & /metadata/authors.
Kopie zapasowe nie modyfikują żadnego pliku w folderach z plikami audio. Jeśli włączyłeś ustawienia serwera, aby przechowywać okładki i metadane w folderach biblioteki, to nie są one zapisywane w kopii zapasowej lub nadpisywane
Wszyscy klienci korzystający z Twojego serwera będą automatycznie odświeżani",
+ "MessageRestoreBackupWarning": "Przywrócenie kopii zapasowej spowoduje nadpisanie bazy danych w folderze /config oraz okładek w folderze /metadata/items & /metadata/authors.
Kopie zapasowe nie modyfikują żadnego pliku w folderach z plikami audio. Jeśli włączyłeś ustawienia serwera, aby przechowywać okładki i metadane w folderach biblioteki, to nie są one zapisywane w kopii zapasowej lub nadpisywane
Wszyscy klienci korzystający z Twojego serwera będą automatycznie odświeżani.",
"MessageSearchResultsFor": "Wyniki wyszukiwania dla",
- "MessageSelected": "{0} selected",
+ "MessageSelected": "{0} wybranych",
"MessageServerCouldNotBeReached": "Nie udało się uzyskać połączenia z serwerem",
- "MessageSetChaptersFromTracksDescription": "Set chapters using each audio file as a chapter and chapter title as the audio file name",
+ "MessageShareExpirationWillBe": "Czas udostępniania {0}",
+ "MessageShareExpiresIn": "Wygaśnie za {0}",
+ "MessageShareURLWillBe": "Udostępnione pod linkiem {0}",
"MessageStartPlaybackAtTime": "Rozpoczęcie odtwarzania \"{0}\" od {1}?",
"MessageThinking": "Myślę...",
"MessageUploaderItemFailed": "Nie udało się przesłać",
@@ -716,21 +728,34 @@
"NoteChangeRootPassword": "Tylko użytkownik root, może posiadać puste hasło",
"NoteChapterEditorTimes": "Uwaga: Czas rozpoczęcia pierwszego rozdziału musi pozostać na poziomie 0:00, a czas rozpoczęcia ostatniego rozdziału nie może przekroczyć czasu trwania audiobooka.",
"NoteFolderPicker": "Uwaga: dotychczas zmapowane foldery nie zostaną wyświetlone",
- "NoteRSSFeedPodcastAppsHttps": "Ostrzeżenie: Większość aplikacji do obsługi podcastów wymaga, aby adres URL kanału RSS korzystał z protokołu HTTPS.",
+ "NoteRSSFeedPodcastAppsHttps": "Ostrzeżenie: Większość aplikacji do obsługi podcastów wymaga, aby adres URL kanału RSS korzystał z protokołu HTTPS",
"NoteRSSFeedPodcastAppsPubDate": "Ostrzeżenie: 1 lub więcej odcinków nie ma daty publikacji. Niektóre aplikacje do słuchania podcastów tego wymagają.",
"NoteUploaderFoldersWithMediaFiles": "Foldery z plikami multimedialnymi będą traktowane jako osobne elementy w bibliotece.",
"NoteUploaderOnlyAudioFiles": "Jeśli przesyłasz tylko pliki audio, każdy plik audio będzie traktowany jako osobny audiobook.",
"NoteUploaderUnsupportedFiles": "Nieobsługiwane pliki są ignorowane. Podczas dodawania folderu, inne pliki, które nie znajdują się w folderze elementu, są ignorowane.",
"PlaceholderNewCollection": "Nowa nazwa kolekcji",
"PlaceholderNewFolderPath": "Nowa ścieżka folderu",
- "PlaceholderNewPlaylist": "New playlist name",
+ "PlaceholderNewPlaylist": "Nowa nazwa playlisty",
"PlaceholderSearch": "Szukanie..",
- "PlaceholderSearchEpisode": "Search episode..",
- "ToastAccountUpdateFailed": "Nie udało się zaktualizować konta",
+ "PlaceholderSearchEpisode": "Szukanie odcinka..",
+ "StatsAuthorsAdded": "dodano autorów",
+ "StatsBooksAdded": "dodano książki",
+ "StatsBooksFinished": "ukończone książki",
+ "StatsBooksFinishedThisYear": "Wybrane książki ukończone w tym roku…",
+ "StatsBooksListenedTo": "książki wysłuchane",
+ "StatsCollectionGrewTo": "Twoja kolekcja książek wzrosła do…",
+ "StatsSessions": "sesje",
+ "StatsSpentListening": "spędzono na słuchaniu",
+ "StatsTopAuthor": "TOPOWY AUTOR",
+ "StatsTopAuthors": "TOPOWI AUTORZY",
+ "StatsTopGenre": "TOPOWY GATUNEK",
+ "StatsTopGenres": "TOPOWE GATUNKI",
+ "StatsTopMonth": "TOPOWY MIESIĄC",
+ "StatsTopNarrator": "TOPOWY NARRATOR",
+ "StatsTopNarrators": "TOPOWI NARRATORZY",
+ "StatsYearInReview": "PRZEGLĄD ROKU",
"ToastAccountUpdateSuccess": "Zaktualizowano konto",
- "ToastAuthorImageRemoveFailed": "Nie udało się usunąć obrazu",
"ToastAuthorImageRemoveSuccess": "Zdjęcie autora usunięte",
- "ToastAuthorUpdateFailed": "nie udało się zaktualizować autora",
"ToastAuthorUpdateMerged": "Autor scalony",
"ToastAuthorUpdateSuccess": "Autor zaktualizowany",
"ToastAuthorUpdateSuccessNoImageFound": "Autor zaktualizowany (nie znaleziono obrazu)",
@@ -745,66 +770,40 @@
"ToastBatchUpdateSuccess": "Aktualizacja wsadowa powiodła się",
"ToastBookmarkCreateFailed": "Nie udało się utworzyć zakładki",
"ToastBookmarkCreateSuccess": "Dodano zakładkę",
- "ToastBookmarkRemoveFailed": "Nie udało się usunąć zakładki",
"ToastBookmarkRemoveSuccess": "Zakładka została usunięta",
- "ToastBookmarkUpdateFailed": "Nie udało się zaktualizować zakładki",
"ToastBookmarkUpdateSuccess": "Zaktualizowano zakładkę",
- "ToastCachePurgeFailed": "Failed to purge cache",
- "ToastCachePurgeSuccess": "Cache purged successfully",
- "ToastChaptersHaveErrors": "Chapters have errors",
- "ToastChaptersMustHaveTitles": "Chapters must have titles",
- "ToastCollectionItemsRemoveFailed": "Nie udało się usunąć pozycji z kolekcji",
"ToastCollectionItemsRemoveSuccess": "Przedmiot(y) zostały usunięte z kolekcji",
- "ToastCollectionRemoveFailed": "Nie udało się usunąć kolekcji",
"ToastCollectionRemoveSuccess": "Kolekcja usunięta",
- "ToastCollectionUpdateFailed": "Nie udało się zaktualizować kolekcji",
"ToastCollectionUpdateSuccess": "Zaktualizowano kolekcję",
- "ToastDeleteFileFailed": "Failed to delete file",
- "ToastDeleteFileSuccess": "File deleted",
- "ToastFailedToLoadData": "Failed to load data",
- "ToastItemCoverUpdateFailed": "Nie udało się zaktualizować okładki",
"ToastItemCoverUpdateSuccess": "Zaktualizowano okładkę",
- "ToastItemDetailsUpdateFailed": "Nie udało się zaktualizować szczegółów",
"ToastItemDetailsUpdateSuccess": "Zaktualizowano szczegóły",
- "ToastItemDetailsUpdateUnneeded": "Brak aktulizacji dla pozycji",
- "ToastItemMarkedAsFinishedFailed": "Nie udało się oznaczyć jako zakończone",
+ "ToastItemMarkedAsFinishedFailed": "Nie udało się oznaczyć jako ukończone",
"ToastItemMarkedAsFinishedSuccess": "Pozycja oznaczona jako ukończona",
"ToastItemMarkedAsNotFinishedFailed": "Oznaczenie pozycji jako ukończonej nie powiodło się",
- "ToastItemMarkedAsNotFinishedSuccess": "Pozycja oznaczona jako ukończon",
+ "ToastItemMarkedAsNotFinishedSuccess": "Pozycja oznaczona jako nieukończona",
"ToastLibraryCreateFailed": "Nie udało się utworzyć biblioteki",
"ToastLibraryCreateSuccess": "Biblioteka \"{0}\" stworzona",
"ToastLibraryDeleteFailed": "Nie udało się usunąć biblioteki",
"ToastLibraryDeleteSuccess": "Biblioteka usunięta",
"ToastLibraryScanFailedToStart": "Nie udało się rozpocząć skanowania",
"ToastLibraryScanStarted": "Rozpoczęto skanowanie biblioteki",
- "ToastLibraryUpdateFailed": "Nie udało się zaktualizować biblioteki",
"ToastLibraryUpdateSuccess": "Zaktualizowano \"{0}\" pozycji",
- "ToastPlaylistCreateFailed": "Failed to create playlist",
- "ToastPlaylistCreateSuccess": "Playlist created",
- "ToastPlaylistRemoveFailed": "Failed to remove playlist",
- "ToastPlaylistRemoveSuccess": "Playlist removed",
- "ToastPlaylistUpdateFailed": "Failed to update playlist",
- "ToastPlaylistUpdateSuccess": "Playlist updated",
+ "ToastPlaylistCreateFailed": "Nie udało się utworzyć playlisty",
+ "ToastPlaylistCreateSuccess": "Playlista utworzona",
+ "ToastPlaylistRemoveSuccess": "Playlista usunięta",
+ "ToastPlaylistUpdateSuccess": "Playlista zaktualizowana",
"ToastPodcastCreateFailed": "Nie udało się utworzyć podcastu",
"ToastPodcastCreateSuccess": "Podcast został pomyślnie utworzony",
- "ToastRemoveItemFromCollectionFailed": "Nie udało się usunąć elementu z kolekcji",
- "ToastRemoveItemFromCollectionSuccess": "Pozycja usunięta z kolekcji",
"ToastRSSFeedCloseFailed": "Zamknięcie kanału RSS nie powiodło się",
"ToastRSSFeedCloseSuccess": "Zamknięcie kanału RSS powiodło się",
+ "ToastRemoveItemFromCollectionFailed": "Nie udało się usunąć elementu z kolekcji",
+ "ToastRemoveItemFromCollectionSuccess": "Pozycja usunięta z kolekcji",
"ToastSendEbookToDeviceFailed": "Failed to Send Ebook to device",
- "ToastSendEbookToDeviceSuccess": "Ebook sent to device \"{0}\"",
- "ToastSeriesUpdateFailed": "Series update failed",
- "ToastSeriesUpdateSuccess": "Series update success",
- "ToastServerSettingsUpdateFailed": "Failed to update server settings",
- "ToastServerSettingsUpdateSuccess": "Server settings updated",
"ToastSessionDeleteFailed": "Nie udało się usunąć sesji",
"ToastSessionDeleteSuccess": "Sesja usunięta",
"ToastSocketConnected": "Nawiązano połączenie z serwerem",
"ToastSocketDisconnected": "Połączenie z serwerem zostało zamknięte",
"ToastSocketFailedToConnect": "Poączenie z serwerem nie powiodło się",
- "ToastSortingPrefixesEmptyError": "Must have at least 1 sorting prefix",
- "ToastSortingPrefixesUpdateFailed": "Failed to update sorting prefixes",
- "ToastSortingPrefixesUpdateSuccess": "Sorting prefixes updated ({0} items)",
"ToastUserDeleteFailed": "Nie udało się usunąć użytkownika",
"ToastUserDeleteSuccess": "Użytkownik usunięty"
-}
\ No newline at end of file
+}
diff --git a/client/strings/pt-br.json b/client/strings/pt-br.json
index f88f6a5e7..68fad736e 100644
--- a/client/strings/pt-br.json
+++ b/client/strings/pt-br.json
@@ -9,6 +9,7 @@
"ButtonApply": "Aplicar",
"ButtonApplyChapters": "Aplicar Capítulos",
"ButtonAuthors": "Autores",
+ "ButtonBack": "Voltar",
"ButtonBrowseForFolder": "Procurar por Pasta",
"ButtonCancel": "Cancelar",
"ButtonCancelEncode": "Cancelar Codificação",
@@ -36,7 +37,6 @@
"ButtonJumpForward": "Adiantar",
"ButtonLatest": "Mais Recentes",
"ButtonLibrary": "Biblioteca",
- "ButtonLogout": "Logout",
"ButtonLookup": "Procurar",
"ButtonManageTracks": "Gerenciar Faixas",
"ButtonMapChapterTitles": "Designar Títulos de Capítulos",
@@ -45,7 +45,6 @@
"ButtonNevermind": "Cancelar",
"ButtonNext": "Próximo",
"ButtonNextChapter": "Próximo Capítulo",
- "ButtonOk": "Ok",
"ButtonOpenFeed": "Abrir Feed",
"ButtonOpenManager": "Abrir Gerenciador",
"ButtonPause": "Pausar",
@@ -56,10 +55,10 @@
"ButtonPreviousChapter": "Capítulo Anterior",
"ButtonPurgeAllCache": "Apagar Todo o Cache",
"ButtonPurgeItemsCache": "Apagar o Cache de Itens",
- "ButtonPurgeMediaProgress": "Apagar o Progresso nas Mídias",
"ButtonQueueAddItem": "Adicionar à Lista",
"ButtonQueueRemoveItem": "Remover da Lista",
"ButtonQuickMatch": "Consulta rápida",
+ "ButtonReScan": "Nova Verificação",
"ButtonRead": "Ler",
"ButtonReadLess": "Ler menos",
"ButtonReadMore": "Ler mais",
@@ -70,7 +69,6 @@
"ButtonRemoveFromContinueListening": "Remover de Continuar Escutando",
"ButtonRemoveFromContinueReading": "Remover de Continuar Lendo",
"ButtonRemoveSeriesFromContinueSeries": "Remover Série de Continuar Série",
- "ButtonReScan": "Nova Verificação",
"ButtonReset": "Resetar",
"ButtonResetToDefault": "Resetar para valores padrão",
"ButtonRestore": "Restaurar",
@@ -90,7 +88,6 @@
"ButtonStartMetadataEmbed": "Iniciar Inclusão de Metadados",
"ButtonSubmit": "Enviar",
"ButtonTest": "Testar",
- "ButtonUpload": "Upload",
"ButtonUploadBackup": "Upload de Backup",
"ButtonUploadCover": "Upload de Capa",
"ButtonUploadOPMLFile": "Upload Arquivo OPML",
@@ -104,10 +101,9 @@
"HeaderAccount": "Conta",
"HeaderAdvanced": "Avançado",
"HeaderAppriseNotificationSettings": "Configuração de notificações Apprise",
- "HeaderAudiobookTools": "Ferramentas de Gerenciamento de Arquivos de Audiobooks",
"HeaderAudioTracks": "Trilhas de áudio",
+ "HeaderAudiobookTools": "Ferramentas de Gerenciamento de Arquivos de Audiobooks",
"HeaderAuthentication": "Autenticação",
- "HeaderBackups": "Backups",
"HeaderChangePassword": "Trocar Senha",
"HeaderChapters": "Capítulos",
"HeaderChooseAFolder": "Escolha uma Pasta",
@@ -115,11 +111,11 @@
"HeaderCollectionItems": "Itens da Coleção",
"HeaderCover": "Capas",
"HeaderCurrentDownloads": "Downloads em andamento",
+ "HeaderCustomMessageOnLogin": "Mensagem personalizada no login",
"HeaderCustomMetadataProviders": "Fontes de Metadados Customizados",
"HeaderDetails": "Detalhes",
"HeaderDownloadQueue": "Fila de Download",
"HeaderEbookFiles": "Arquivos Ebook",
- "HeaderEmail": "Email",
"HeaderEmailSettings": "Configurações de Email",
"HeaderEpisodes": "Episódios",
"HeaderEreaderDevices": "Dispositivos Ereader",
@@ -136,8 +132,6 @@
"HeaderLibraryStats": "Estatísticas da Biblioteca",
"HeaderListeningSessions": "Sessões",
"HeaderListeningStats": "Estatísticas",
- "HeaderLogin": "Login",
- "HeaderLogs": "Logs",
"HeaderManageGenres": "Gerenciar Gêneros",
"HeaderManageTags": "Gerenciar Etiquetas",
"HeaderMapDetails": "Designar Detalhes",
@@ -157,11 +151,11 @@
"HeaderPlaylistItems": "Itens da lista de reprodução",
"HeaderPodcastsToAdd": "Podcasts para Adicionar",
"HeaderPreviewCover": "Visualização da Capa",
+ "HeaderRSSFeedGeneral": "Detalhes RSS",
+ "HeaderRSSFeedIsOpen": "Feed RSS está Aberto",
+ "HeaderRSSFeeds": "Feeds RSS",
"HeaderRemoveEpisode": "Remover Episódio",
"HeaderRemoveEpisodes": "Remover {0} Episódios",
- "HeaderRSSFeedGeneral": "Detalhes RSS",
- "HeaderRSSFeedIsOpen": "Feed RSS está aberto",
- "HeaderRSSFeeds": "Feeds RSS",
"HeaderSavedMediaProgress": "Progresso da gravação das mídias",
"HeaderSchedule": "Programação",
"HeaderScheduleLibraryScans": "Programar Verificação Automática da Biblioteca",
@@ -186,23 +180,22 @@
"HeaderUpdateDetails": "Atualizar Detalhes",
"HeaderUpdateLibrary": "Atualizar Biblioteca",
"HeaderUsers": "Usuários",
- "HeaderYearReview": "Retrospectiva de {0} ",
+ "HeaderYearReview": "Retrospectiva de {0}",
"HeaderYourStats": "Suas Estatísticas",
"LabelAbridged": "Versão Abreviada",
"LabelAbridgedChecked": "Abreviada (verificada)",
"LabelAbridgedUnchecked": "Não Abreviada (não verificada)",
- "LabelAccessibleBy": "Accessible by",
+ "LabelAccessibleBy": "Acessível por",
"LabelAccountType": "Tipo de Conta",
"LabelAccountTypeAdmin": "Administrador",
"LabelAccountTypeGuest": "Convidado",
"LabelAccountTypeUser": "Usuário",
"LabelActivity": "Atividade",
- "LabelAdded": "Acrescentado",
- "LabelAddedAt": "Acrescentado em",
"LabelAddToCollection": "Adicionar à Coleção",
"LabelAddToCollectionBatch": "Adicionar {0} Livros à Coleção",
"LabelAddToPlaylist": "Adicionar à Lista de Reprodução",
"LabelAddToPlaylistBatch": "Adicionar {0} itens à Lista de Reprodução",
+ "LabelAddedAt": "Acrescentado em",
"LabelAdminUsersOnly": "Apenas usuários administradores",
"LabelAll": "Todos",
"LabelAllUsers": "Todos Usuários",
@@ -229,18 +222,16 @@
"LabelBackupsMaxBackupSizeHelp": "Como proteção contra uma configuração incorreta, backups darão erro se excederem o tamanho configurado.",
"LabelBackupsNumberToKeep": "Número de backups para guardar",
"LabelBackupsNumberToKeepHelp": "Apenas 1 backup será removido por vez, então, se já existem mais backups, você deve apagá-los manualmente.",
- "LabelBitrate": "Bitrate",
"LabelBooks": "Livros",
"LabelButtonText": "Texto do botão",
"LabelByAuthor": "por {0}",
"LabelChangePassword": "Trocar Senha",
"LabelChannels": "Canais",
+ "LabelChapterTitle": "Título do Capítulo",
"LabelChapters": "Capítulos",
"LabelChaptersFound": "capítulos encontrados",
- "LabelChapterTitle": "Título do Capítulo",
"LabelClickForMoreInfo": "Clique para mais informações",
"LabelClosePlayer": "Fechar Reprodutor",
- "LabelCodec": "Codec",
"LabelCollapseSeries": "Fechar Série",
"LabelCollection": "Coleção",
"LabelCollections": "Coleções",
@@ -267,18 +258,16 @@
"LabelDiscFromFilename": "Disco a partir do nome do arquivo",
"LabelDiscFromMetadata": "Disco a partir dos metadados",
"LabelDiscover": "Descobrir",
- "LabelDownload": "Download",
"LabelDownloadNEpisodes": "Download de {0} Episódios",
"LabelDuration": "Duração",
"LabelDurationComparisonExactMatch": "(exato)",
"LabelDurationComparisonLonger": "({0} maior)",
"LabelDurationComparisonShorter": "({0} menor)",
"LabelDurationFound": "Duração comprovada:",
- "LabelEbook": "Ebook",
- "LabelEbooks": "Ebooks",
"LabelEdit": "Editar",
- "LabelEmail": "Email",
"LabelEmailSettingsFromAddress": "Remetente",
+ "LabelEmailSettingsRejectUnauthorized": "Rejeitar certificados não autorizados",
+ "LabelEmailSettingsRejectUnauthorizedHelp": "Desativar a validação de certificados SSL pode expor sua conexão a riscos de segurança, como ataques \"man-in-the-middle\". Desative essa opção apenas se entender suas consequências e se puder confiar no servidor de email ao qual você está se conectando.",
"LabelEmailSettingsSecure": "Seguro",
"LabelEmailSettingsSecureHelp": "Se ativado, a conexão utilizará TLS para a conexão ao servidor. Se desativado TLS será usado se o servidor suportar a extensão STARTTLS. Na maioria dos casos ative esse valor se estiver conectando pela porta 465. Para portas 587 ou 25, mantenha inativo. (de nodemailer.com/smtp/#authentication)",
"LabelEmailSettingsTestAddress": "Endereço de teste",
@@ -304,6 +293,7 @@
"LabelFolder": "Pasta",
"LabelFolders": "Pastas",
"LabelFontBold": "Negrito",
+ "LabelFontBoldness": "Intensidade do negrito",
"LabelFontFamily": "Família de fonte",
"LabelFontItalic": "Itálico",
"LabelFontScale": "Escala de fonte",
@@ -315,13 +305,12 @@
"LabelHasEbook": "Tem ebook",
"LabelHasSupplementaryEbook": "Tem ebook complementar",
"LabelHighestPriority": "Prioridade mais alta",
- "LabelHost": "Host",
"LabelHour": "Hora",
"LabelIcon": "Ícone",
"LabelImageURLFromTheWeb": "URL da imagem na internet",
+ "LabelInProgress": "Em Andamento",
"LabelIncludeInTracklist": "Incluir na Lista de Faixas",
"LabelIncomplete": "Incompleto",
- "LabelInProgress": "Em Andamento",
"LabelInterval": "Intervalo",
"LabelIntervalCustomDailyWeekly": "Personalizar diário/semanal",
"LabelIntervalEvery12Hours": "A cada 12 horas",
@@ -332,15 +321,14 @@
"LabelIntervalEveryDay": "Todo dia",
"LabelIntervalEveryHour": "Toda hora",
"LabelInvert": "Inverter",
- "LabelItem": "Item",
"LabelLanguage": "Idioma",
"LabelLanguageDefaultServer": "Idioma Padrão do Servidor",
+ "LabelLanguages": "Idiomas",
"LabelLastBookAdded": "Último Livro Acrescentado",
"LabelLastBookUpdated": "Último Livro Atualizado",
"LabelLastSeen": "Visto pela Última Vez",
"LabelLastTime": "Progresso",
"LabelLastUpdate": "Última Atualização",
- "LabelLayout": "Layout",
"LabelLayoutSinglePage": "Uma página",
"LabelLayoutSplitPage": "Página dividida",
"LabelLess": "Menos",
@@ -351,8 +339,6 @@
"LabelLimit": "Limite",
"LabelLineSpacing": "Espaçamento entre linhas",
"LabelListenAgain": "Escutar novamente",
- "LabelLogLevelDebug": "Debug",
- "LabelLogLevelInfo": "Info",
"LabelLogLevelWarn": "Atenção",
"LabelLookForNewEpisodesAfterDate": "Procurar por novos Episódios após essa data",
"LabelLowestPriority": "Prioridade mais baixa",
@@ -360,10 +346,10 @@
"LabelMatchExistingUsersByDescription": "Utilizado para conectar usuários já existentes. Uma vez conectados, usuários serão consultados utilizando uma identificação única do seu provedor de SSO",
"LabelMediaPlayer": "Reprodutor de mídia",
"LabelMediaType": "Tipo de Mídia",
- "LabelMetadataOrderOfPrecedenceDescription": "Fontes de metadados de alta prioridade terão preferência sobre as fontes de metadados de prioridade baixa",
- "LabelMetadataProvider": "Fonte de Metadados",
"LabelMetaTag": "Etiqueta Meta",
"LabelMetaTags": "Etiquetas Meta",
+ "LabelMetadataOrderOfPrecedenceDescription": "Fontes de metadados de alta prioridade terão preferência sobre as fontes de metadados de prioridade baixa",
+ "LabelMetadataProvider": "Fonte de Metadados",
"LabelMinute": "Minuto",
"LabelMissing": "Ausente",
"LabelMissingEbook": "Ebook não existe",
@@ -376,24 +362,25 @@
"LabelNarrator": "Narrador",
"LabelNarrators": "Narradores",
"LabelNew": "Novo",
+ "LabelNewPassword": "Nova Senha",
"LabelNewestAuthors": "Novos Autores",
"LabelNewestEpisodes": "Episódios mais recentes",
- "LabelNewPassword": "Nova Senha",
"LabelNextBackupDate": "Data do próximo backup",
"LabelNextScheduledRun": "Próxima execução programada",
+ "LabelNoCustomMetadataProviders": "Não existem fontes de metadados customizados",
"LabelNoEpisodesSelected": "Nenhum episódio selecionado",
- "LabelNotes": "Notas",
"LabelNotFinished": "Não concluído",
+ "LabelNotStarted": "Não iniciado",
+ "LabelNotes": "Notas",
"LabelNotificationAppriseURL": "URL(s) Apprise",
"LabelNotificationAvailableVariables": "Variáveis disponíveis",
"LabelNotificationBodyTemplate": "Modelo de Corpo",
"LabelNotificationEvent": "Evento de Notificação",
+ "LabelNotificationTitleTemplate": "Modelo de Título",
"LabelNotificationsMaxFailedAttempts": "Máximo de tentativas com falhas",
"LabelNotificationsMaxFailedAttemptsHelp": "Notificações serão desabilitadas após falharem este número de vezes",
"LabelNotificationsMaxQueueSize": "Tamanho máximo da fila de eventos de notificação",
"LabelNotificationsMaxQueueSizeHelp": "Eventos estão limitados a um disparo por segundo. Eventos serão ignorados se a fila estiver no tamanho máximo. Isso evita o excesso de notificações.",
- "LabelNotificationTitleTemplate": "Modelo de Título",
- "LabelNotStarted": "Não iniciado",
"LabelNumberOfBooks": "Número de Livros",
"LabelNumberOfEpisodes": "# de Episódios",
"LabelOpenIDAdvancedPermsClaimDescription": "Nome do claim OpenID contendo as permissões avançadas para ações do usuário na aplicação para serem aplicadas aos perfis não-administradores (se configurados). Se o claim não estiver presente na resposta, acesso ao ABS será negado. Se apenas uma opção estiver ausente, ela será tratada como false. Garanta que o claim do provedor de identidade segue a estrutura esperada:",
@@ -412,10 +399,8 @@
"LabelPermissionsUpload": "Pode Fazer Upload",
"LabelPersonalYearReview": "Sua Retrospectiva Anual ({0})",
"LabelPhotoPathURL": "Caminho/URL para Foto",
- "LabelPlaylists": "Listas de Reprodução",
"LabelPlayMethod": "Método de Reprodução",
- "LabelPodcast": "Podcast",
- "LabelPodcasts": "Podcasts",
+ "LabelPlaylists": "Listas de Reprodução",
"LabelPodcastSearchRegion": "Região de busca do podcast",
"LabelPodcastType": "Tipo de Podcast",
"LabelPort": "Porta",
@@ -425,25 +410,26 @@
"LabelProgress": "Progresso",
"LabelProvider": "Fonte",
"LabelPubDate": "Data de Publicação",
- "LabelPublisher": "Editora",
"LabelPublishYear": "Ano de Publicação",
+ "LabelPublisher": "Editora",
+ "LabelPublishers": "Editoras",
+ "LabelRSSFeedCustomOwnerEmail": "E-mail do dono personalizado",
+ "LabelRSSFeedCustomOwnerName": "Nome do dono personalizado",
+ "LabelRSSFeedOpen": "Feed RSS Aberto",
+ "LabelRSSFeedPreventIndexing": "Impedir Indexação",
+ "LabelRSSFeedSlug": "Slug do Feed RSS",
+ "LabelRSSFeedURL": "URL do Feed RSS",
"LabelRead": "Lido",
"LabelReadAgain": "Ler novamente",
"LabelReadEbookWithoutProgress": "Ler ebook sem armazenar progresso",
- "LabelRecentlyAdded": "Novidades",
"LabelRecentSeries": "Séries Recentes",
+ "LabelRecentlyAdded": "Novidades",
"LabelRecommended": "Recomendado",
"LabelRedo": "Refazer",
"LabelRegion": "Região",
"LabelReleaseDate": "Data de Lançamento",
"LabelRemoveCover": "Remover capa",
"LabelRowsPerPage": "Linhas por Página",
- "LabelRSSFeedCustomOwnerEmail": "Email do dono personalizado",
- "LabelRSSFeedCustomOwnerName": "Nome do dono personalizado",
- "LabelRSSFeedOpen": "Feed RSS Aberto",
- "LabelRSSFeedPreventIndexing": "Impedir Indexação",
- "LabelRSSFeedSlug": "Slug do Feed RSS",
- "LabelRSSFeedURL": "URL do Feed RSS",
"LabelSearchTerm": "Busca por Termo",
"LabelSearchTitle": "Busca por Título",
"LabelSearchTitleOrASIN": "Busca por Título ou ASIN",
@@ -471,8 +457,8 @@
"LabelSettingsEnableWatcher": "Ativar Monitoramento",
"LabelSettingsEnableWatcherForLibrary": "Ativa o monitoramento de pastas para a biblioteca",
"LabelSettingsEnableWatcherHelp": "Ativa o acréscimo/atualização de itens quando forem detectadas mudanças no arquivo. *Requer reiniciar o servidor",
- "LabelSettingsEpubsAllowScriptedContent": "Allow scripted content in epubs",
- "LabelSettingsEpubsAllowScriptedContentHelp": "Allow epub files to execute scripts. It is recommended to keep this setting disabled unless you trust the source of the epub files.",
+ "LabelSettingsEpubsAllowScriptedContent": "Permitir scripts em epubs",
+ "LabelSettingsEpubsAllowScriptedContentHelp": "Permitir que arquivos epub executem scripts. É recomendado manter essa configuração desativada, a não ser que confie na fonte dos arquivos epub.",
"LabelSettingsExperimentalFeatures": "Funcionalidade experimentais",
"LabelSettingsExperimentalFeaturesHelp": "Funcionalidade em desenvolvimento que se beneficiairam dos seus comentários e da sua ajuda para testar. Clique para abrir a discussão no github.",
"LabelSettingsFindCovers": "Localizar capas",
@@ -502,11 +488,10 @@
"LabelShowSeconds": "Exibir segundos",
"LabelSize": "Tamanho",
"LabelSleepTimer": "Timer",
- "LabelSlug": "Slug",
"LabelStart": "Iniciar",
+ "LabelStartTime": "Horário do Início",
"LabelStarted": "Iniciado",
"LabelStartedAt": "Iniciado Em",
- "LabelStartTime": "Horário do Início",
"LabelStatsAudioTracks": "Trilhas de Áudio",
"LabelStatsAuthors": "Autores",
"LabelStatsBestDay": "Melhor Dia",
@@ -530,7 +515,6 @@
"LabelTagsNotAccessibleToUser": "Etiquetas não Acessíveis Usuário",
"LabelTasks": "Tarefas em Execuçào",
"LabelTextEditorBulletedList": "Lista com marcadores",
- "LabelTextEditorLink": "Link",
"LabelTextEditorNumberedList": "Lista numerada",
"LabelTextEditorUnlink": "Remover link",
"LabelTheme": "Tema",
@@ -558,13 +542,13 @@
"LabelTracksSingleTrack": "Trilha única",
"LabelType": "Tipo",
"LabelUnabridged": "Não Abreviada",
- "LabelUndo": "Undo",
+ "LabelUndo": "Desfazer",
"LabelUnknown": "Desconhecido",
"LabelUpdateCover": "Atualizar Capa",
"LabelUpdateCoverHelp": "Permite sobrescrever capas existentes para os livros selecionados quando uma consulta for localizada",
- "LabelUpdatedAt": "Atualizado em",
"LabelUpdateDetails": "Atualizar Detalhes",
"LabelUpdateDetailsHelp": "Permite sobrescrever detalhes existentes para os livros selecionados quando uma consulta for localizada",
+ "LabelUpdatedAt": "Atualizado em",
"LabelUploaderDragAndDrop": "Arraste e solte arquivos ou pastas",
"LabelUploaderDropFiles": "Solte os arquivos",
"LabelUploaderItemFetchMetadataHelp": "Busca título, autor e série automaticamente",
@@ -577,7 +561,6 @@
"LabelViewBookmarks": "Ver marcadores",
"LabelViewChapters": "Ver capítulos",
"LabelViewQueue": "Ver fila do reprodutor",
- "LabelVolume": "Volume",
"LabelWeekdaysToRun": "Dias da semana para executar",
"LabelYearReviewHide": "Ocultar Retrospectiva Anual",
"LabelYearReviewShow": "Exibir Retrospectiva Anual",
@@ -590,8 +573,9 @@
"MessageBackupsDescription": "Backups incluem usuários, progresso dos usuários, detalhes dos itens da biblioteca, configurações do servidor e imagens armazenadas em /metadata/items & /metadata/authors. Backups não incluem quaisquer arquivos armazenados nas pastas da sua biblioteca.",
"MessageBatchQuickMatchDescription": "Consulta Rápida tentará adicionar capas e metadados ausentes para os itens selecionados. Ative as opções abaixo para permitir que a Consulta Rápida sobrescreva capas e/ou metadados existentes.",
"MessageBookshelfNoCollections": "Você ainda não criou coleções",
- "MessageBookshelfNoResultsForFilter": "Sem Resultados para o filtro \"{0}: {1}\"",
"MessageBookshelfNoRSSFeeds": "Não existem feeds RSS abertos",
+ "MessageBookshelfNoResultsForFilter": "Sem Resultados para o filtro \"{0}: {1}\"",
+ "MessageBookshelfNoResultsForQuery": "Sem resultados para a consulta",
"MessageBookshelfNoSeries": "Você não tem séries",
"MessageChapterEndIsAfter": "O final do capítulo está além do final do seu audiobook",
"MessageChapterErrorFirstNotZero": "O primeiro capítulo precisa começar no 0",
@@ -612,7 +596,9 @@
"MessageConfirmMarkSeriesFinished": "Tem certeza de que deseja marcar todos os livros nesta série como concluídos?",
"MessageConfirmMarkSeriesNotFinished": "Tem certeza de que deseja marcar todos os livros nesta série como não concluídos?",
"MessageConfirmPurgeCache": "Apagar o cache irá apagar o diretório todo localizado em /metadata/cache.
Tem certeza que deseja apagar o diretório de cache?",
+ "MessageConfirmPurgeItemsCache": "Apagar o cache de itens irá apagar todo conteúdo da pasta /metadata/cache/items. Tem certeza?",
"MessageConfirmQuickEmbed": "Aviso! Inclusão rápida não fará backup dos seus arquivos de áudio. Verifique se tem um backup dos seus arquivos de áudio.
Quer continuar?",
+ "MessageConfirmReScanLibraryItems": "Tem certeza de que deseja uma nova verificação de {0} itens?",
"MessageConfirmRemoveAllChapters": "Tem certeza de que deseja remover todos os capítulos?",
"MessageConfirmRemoveAuthor": "Tem certeza de que deseja remover o autor \"{0}\"?",
"MessageConfirmRemoveCollection": "Tem certeza de que deseja remover a coleção \"{0}\"?",
@@ -624,16 +610,15 @@
"MessageConfirmRenameGenre": "Tem certeza de que deseja renomear o gênero \"{0}\" para \"{1}\" em todos os itens?",
"MessageConfirmRenameGenreMergeNote": "Aviso: Este gênero já existe então eles serão combinados.",
"MessageConfirmRenameGenreWarning": "Atenção! Um gênero com um nome semelhante já existe \"{0}\".",
- "MessageConfirmRenameTag": "Tem certeza de que deseja renomear a etiqueta \"{0}\" para \"{1}\" em todos os itens?",
+ "MessageConfirmRenameTag": "Tem certeza de que deseja renomear a etiqueta \"{0}\" para \"{1}\" em todos os itens?",
"MessageConfirmRenameTagMergeNote": "Aviso: Esta etiqueta já existe então elas serão combinadas.",
"MessageConfirmRenameTagWarning": "Atenção! Uma etiqueta com um nome semelhante já existe \"{0}\".",
- "MessageConfirmReScanLibraryItems": "Tem certeza de que deseja uma nova verificação de {0} itens?",
"MessageConfirmSendEbookToDevice": "Tem certeza de que deseja enviar {0} ebook(s) \"{1}\" para o dispositivo \"{2}\"?",
"MessageDownloadingEpisode": "Realizando o download do episódio",
"MessageDragFilesIntoTrackOrder": "Arraste os arquivos para ordenar as trilhas corretamente",
"MessageEmbedFinished": "Inclusão Concluída!",
"MessageEpisodesQueuedForDownload": "{0} Episódio(s) na fila de download",
- "MessageEreaderDevices": "To ensure delivery of ebooks, you may need to add the above email address as a valid sender for each device listed below.",
+ "MessageEreaderDevices": "Para garantir a entrega dos ebooks, você pode precisar adicionar o endereço de email acima como um remetente válido para cada um dos dispositivos listados abaixo.",
"MessageFeedURLWillBe": "URL do Feed será {0}",
"MessageFetching": "Buscando...",
"MessageForceReScanDescription": "verificará todos os arquivos, como uma verificação nova. Etiquetas ID3 de arquivos de áudio, arquivos OPF e arquivos de texto serão tratados como novos.",
@@ -645,7 +630,7 @@
"MessageListeningSessionsInTheLastYear": "{0} sessões de escuta no ano anterior",
"MessageLoading": "Carregando...",
"MessageLoadingFolders": "Carregando pastas...",
- "MessageLogsDescription": "Os logs estão armazenados em /metadata/logs como arquivos JSON. Logs de crash estão armazenados em /metadata/logs/crash_logs.txt.",
+ "MessageLogsDescription": "Os logs estão armazenados em /metadata/logs como arquivos JSON. Logs de crash estão armazenados em /metadata/logs/crash_logs.txt.",
"MessageM4BFailed": "Falha no M4B!",
"MessageM4BFinished": "M4B Concluído!",
"MessageMapChapterTitles": "Designar títulos de capítulos a partir dos capítulos existentes no audiobook sem ajustar seus tempos",
@@ -681,10 +666,9 @@
"MessageNoSeries": "Sem Séries",
"MessageNoTags": "Sem etiquetas",
"MessageNoTasksRunning": "Sem Tarefas em Execução",
- "MessageNotYetImplemented": "Ainda não implementado",
- "MessageNoUpdateNecessary": "Não é necessária a atualização",
"MessageNoUpdatesWereNecessary": "Nenhuma atualização é necessária",
"MessageNoUserPlaylists": "Você não tem listas de reprodução",
+ "MessageNotYetImplemented": "Ainda não implementado",
"MessageOr": "ou",
"MessagePauseChapter": "Pausar reprodução do capítulo",
"MessagePlayChapter": "Escutar o início do capítulo",
@@ -726,11 +710,8 @@
"PlaceholderNewPlaylist": "Novo nome da lista de reprodução",
"PlaceholderSearch": "Buscar..",
"PlaceholderSearchEpisode": "Buscar Episódio..",
- "ToastAccountUpdateFailed": "Falha ao atualizar a conta",
"ToastAccountUpdateSuccess": "Conta atualizada",
- "ToastAuthorImageRemoveFailed": "Falha ao remover imagem",
"ToastAuthorImageRemoveSuccess": "Imagem do autor removida",
- "ToastAuthorUpdateFailed": "Falha ao atualizar o autor",
"ToastAuthorUpdateMerged": "Autor combinado",
"ToastAuthorUpdateSuccess": "Autor atualizado",
"ToastAuthorUpdateSuccessNoImageFound": "Autor atualizado (nenhuma imagem encontrada)",
@@ -745,28 +726,20 @@
"ToastBatchUpdateSuccess": "Atualização em lote realizada",
"ToastBookmarkCreateFailed": "Falha ao criar marcador",
"ToastBookmarkCreateSuccess": "Marcador adicionado",
- "ToastBookmarkRemoveFailed": "Falha ao remover marcador",
"ToastBookmarkRemoveSuccess": "Marcador removido",
- "ToastBookmarkUpdateFailed": "Falha ao atualizar o marcador",
"ToastBookmarkUpdateSuccess": "Marcador atualizado",
- "ToastCachePurgeFailed": "Failed to purge cache",
- "ToastCachePurgeSuccess": "Cache purged successfully",
+ "ToastCachePurgeFailed": "Falha ao apagar o cache",
+ "ToastCachePurgeSuccess": "Cache apagado com sucesso",
"ToastChaptersHaveErrors": "Capítulos com erro",
"ToastChaptersMustHaveTitles": "Capítulos precisam ter títulos",
- "ToastCollectionItemsRemoveFailed": "Falha ao remover item(ns) da coleção",
"ToastCollectionItemsRemoveSuccess": "Item(ns) removidos da coleção",
- "ToastCollectionRemoveFailed": "Falha ao remover coleção",
"ToastCollectionRemoveSuccess": "Coleção removida",
- "ToastCollectionUpdateFailed": "Falha ao atualizar coleção",
"ToastCollectionUpdateSuccess": "Coleção atualizada",
"ToastDeleteFileFailed": "Falha ao apagar arquivo",
"ToastDeleteFileSuccess": "Arquivo apagado",
"ToastFailedToLoadData": "Falha ao carregar dados",
- "ToastItemCoverUpdateFailed": "Falha ao atualizar capa do item",
"ToastItemCoverUpdateSuccess": "Capa do item atualizada",
- "ToastItemDetailsUpdateFailed": "Falha ao atualizar detalhes do item",
"ToastItemDetailsUpdateSuccess": "Detalhes do item atualizados",
- "ToastItemDetailsUpdateUnneeded": "Nenhuma atualização necessária para os detalhes do item",
"ToastItemMarkedAsFinishedFailed": "Falha ao marcar como Concluído",
"ToastItemMarkedAsFinishedSuccess": "Item marcado como Concluído",
"ToastItemMarkedAsNotFinishedFailed": "Falha ao marcar como Não Concluído",
@@ -777,25 +750,21 @@
"ToastLibraryDeleteSuccess": "Biblioteca apagada",
"ToastLibraryScanFailedToStart": "Falha ao iniciar verificação",
"ToastLibraryScanStarted": "Verificação da biblioteca iniciada",
- "ToastLibraryUpdateFailed": "Falha ao atualizar a biblioteca",
"ToastLibraryUpdateSuccess": "Biblioteca \"{0}\" atualizada",
"ToastPlaylistCreateFailed": "Falha ao criar lista de reprodução",
"ToastPlaylistCreateSuccess": "Lista de reprodução criada",
- "ToastPlaylistRemoveFailed": "Falha ao remover lista de reprodução",
"ToastPlaylistRemoveSuccess": "Lista de reprodução removida",
- "ToastPlaylistUpdateFailed": "Falha ao atualizar lista de reprodução",
"ToastPlaylistUpdateSuccess": "Lista de reprodução atualizada",
"ToastPodcastCreateFailed": "Falha ao criar podcast",
"ToastPodcastCreateSuccess": "Podcast criado",
- "ToastRemoveItemFromCollectionFailed": "Falha ao remover item da coleção",
- "ToastRemoveItemFromCollectionSuccess": "Item removido da coleção",
"ToastRSSFeedCloseFailed": "Falha ao fechar feed RSS",
"ToastRSSFeedCloseSuccess": "Feed RSS fechado",
+ "ToastRemoveItemFromCollectionFailed": "Falha ao remover item da coleção",
+ "ToastRemoveItemFromCollectionSuccess": "Item removido da coleção",
"ToastSendEbookToDeviceFailed": "Falha ao enviar ebook para dispositivo",
"ToastSendEbookToDeviceSuccess": "Ebook enviado para o dispositivo \"{0}\"",
"ToastSeriesUpdateFailed": "Falha ao atualizar série",
"ToastSeriesUpdateSuccess": "Série atualizada",
- "ToastServerSettingsUpdateFailed": "Falha ao atualizar configurações do servidor",
"ToastServerSettingsUpdateSuccess": "Configurações do servidor atualizadas",
"ToastSessionDeleteFailed": "Falha ao apagar sessão",
"ToastSessionDeleteSuccess": "Sessão apagada",
@@ -803,8 +772,7 @@
"ToastSocketDisconnected": "Socket desconectado",
"ToastSocketFailedToConnect": "Falha na conexão do socket",
"ToastSortingPrefixesEmptyError": "É preciso ter pelo menos um prefixo de ordenação",
- "ToastSortingPrefixesUpdateFailed": "Falha ao atualizar prefixos de ordenação",
"ToastSortingPrefixesUpdateSuccess": "Prefixos de ordenação atualizados ({0} item(ns))",
"ToastUserDeleteFailed": "Falha ao apagar usuário",
"ToastUserDeleteSuccess": "Usuário apagado"
-}
\ No newline at end of file
+}
diff --git a/client/strings/ru.json b/client/strings/ru.json
index 7b6e9c7c1..d27f138f8 100644
--- a/client/strings/ru.json
+++ b/client/strings/ru.json
@@ -9,6 +9,7 @@
"ButtonApply": "Применить",
"ButtonApplyChapters": "Применить главы",
"ButtonAuthors": "Авторы",
+ "ButtonBack": "Назад",
"ButtonBrowseForFolder": "Выбрать папку",
"ButtonCancel": "Отмена",
"ButtonCancelEncode": "Отменить кодирование",
@@ -18,6 +19,7 @@
"ButtonChooseFiles": "Выбор файлов",
"ButtonClearFilter": "Очистить фильтр",
"ButtonCloseFeed": "Закрыть канал",
+ "ButtonCloseSession": "Закрыть открытый сеанс",
"ButtonCollections": "Коллекции",
"ButtonConfigureScanner": "Конфигурация сканера",
"ButtonCreate": "Создать",
@@ -27,13 +29,16 @@
"ButtonEdit": "Редактировать",
"ButtonEditChapters": "Редактировать главы",
"ButtonEditPodcast": "Редактировать подкаст",
+ "ButtonEnable": "Включить",
+ "ButtonFireAndFail": "Пожар и неудача",
+ "ButtonFireOnTest": "Испытание на огнестойкость",
"ButtonForceReScan": "Принудительно пересканировать",
"ButtonFullPath": "Полный путь",
"ButtonHide": "Скрыть",
"ButtonHome": "Домой",
"ButtonIssues": "Проблемы",
- "ButtonJumpBackward": "Jump Backward",
- "ButtonJumpForward": "Jump Forward",
+ "ButtonJumpBackward": "Назад",
+ "ButtonJumpForward": "Вперед",
"ButtonLatest": "Последнее",
"ButtonLibrary": "Библиотека",
"ButtonLogout": "Выход",
@@ -43,34 +48,38 @@
"ButtonMatchAllAuthors": "Найти всех авторов",
"ButtonMatchBooks": "Найти книги",
"ButtonNevermind": "Не важно",
- "ButtonNext": "Next",
- "ButtonNextChapter": "Next Chapter",
+ "ButtonNext": "Следующий",
+ "ButtonNextChapter": "Следующая глава",
+ "ButtonNextItemInQueue": "Следующий элемент в очереди",
"ButtonOk": "Ok",
"ButtonOpenFeed": "Открыть канал",
"ButtonOpenManager": "Открыть менеджер",
- "ButtonPause": "Pause",
+ "ButtonPause": "Пауза",
"ButtonPlay": "Слушать",
+ "ButtonPlayAll": "Играть все",
"ButtonPlaying": "Проигрывается",
"ButtonPlaylists": "Плейлисты",
- "ButtonPrevious": "Previous",
- "ButtonPreviousChapter": "Previous Chapter",
+ "ButtonPrevious": "Предыдущий",
+ "ButtonPreviousChapter": "Предыдущая глава",
+ "ButtonProbeAudioFile": "Сканирование аудиофайла",
"ButtonPurgeAllCache": "Очистить весь кэш",
"ButtonPurgeItemsCache": "Очистить кэш элементов",
- "ButtonPurgeMediaProgress": "Очистить прогресс медиа",
"ButtonQueueAddItem": "Добавить в очередь",
"ButtonQueueRemoveItem": "Удалить из очереди",
+ "ButtonQuickEmbed": "Быстрое внедрение",
+ "ButtonQuickEmbedMetadata": "Быстрое встраивание метаданных",
"ButtonQuickMatch": "Быстрый поиск",
+ "ButtonReScan": "Пересканировать",
"ButtonRead": "Читать",
- "ButtonReadLess": "Read less",
- "ButtonReadMore": "Read more",
- "ButtonRefresh": "Refresh",
+ "ButtonReadLess": "Читать меньше",
+ "ButtonReadMore": "Читать больше",
+ "ButtonRefresh": "Обновить",
"ButtonRemove": "Удалить",
"ButtonRemoveAll": "Удалить всё",
"ButtonRemoveAllLibraryItems": "Удалить все элементы библиотеки",
"ButtonRemoveFromContinueListening": "Удалить из Продолжить слушать",
"ButtonRemoveFromContinueReading": "Удалить из Продолжить читать",
"ButtonRemoveSeriesFromContinueSeries": "Удалить серию из Продолжить серию",
- "ButtonReScan": "Пересканировать",
"ButtonReset": "Сбросить",
"ButtonResetToDefault": "Сборосить по умолчанию",
"ButtonRestore": "Восстановить",
@@ -83,13 +92,15 @@
"ButtonSelectFolderPath": "Выберите путь папки",
"ButtonSeries": "Серии",
"ButtonSetChaptersFromTracks": "Установить главы из треков",
- "ButtonShare": "Share",
+ "ButtonShare": "Поделиться",
"ButtonShiftTimes": "Смещение",
"ButtonShow": "Показать",
"ButtonStartM4BEncode": "Начать кодирование M4B",
"ButtonStartMetadataEmbed": "Начать встраивание метаданных",
+ "ButtonStats": "Статистика",
"ButtonSubmit": "Применить",
"ButtonTest": "Тест",
+ "ButtonUnlinkOpenId": "Отключить OpenID",
"ButtonUpload": "Загрузить",
"ButtonUploadBackup": "Загрузить бэкап",
"ButtonUploadCover": "Загрузить обложку",
@@ -102,10 +113,11 @@
"ErrorUploadFetchMetadataNoResults": "Не удалось получить метаданные - попробуйте обновить название и/или автора",
"ErrorUploadLacksTitle": "Название должно быть заполнено",
"HeaderAccount": "Учетная запись",
+ "HeaderAddCustomMetadataProvider": "Добавление пользовательского поставщика метаданных",
"HeaderAdvanced": "Дополнительно",
"HeaderAppriseNotificationSettings": "Настройки оповещений",
- "HeaderAudiobookTools": "Инструменты файлов аудиокниг",
"HeaderAudioTracks": "Аудио треки",
+ "HeaderAudiobookTools": "Инструменты файлов аудиокниг",
"HeaderAuthentication": "Аутентификация",
"HeaderBackups": "Бэкапы",
"HeaderChangePassword": "Изменить пароль",
@@ -115,11 +127,12 @@
"HeaderCollectionItems": "Элементы коллекции",
"HeaderCover": "Обложка",
"HeaderCurrentDownloads": "Текущие закачки",
- "HeaderCustomMetadataProviders": "Custom Metadata Providers",
+ "HeaderCustomMessageOnLogin": "Пользовательское сообщение при входе",
+ "HeaderCustomMetadataProviders": "Пользовательские поставщики метаданных",
"HeaderDetails": "Подробности",
"HeaderDownloadQueue": "Очередь скачивания",
"HeaderEbookFiles": "Файлы e-книг",
- "HeaderEmail": "Email",
+ "HeaderEmail": "E-mail",
"HeaderEmailSettings": "Настройки Email",
"HeaderEpisodes": "Эпизоды",
"HeaderEreaderDevices": "Устройства E-книга",
@@ -146,24 +159,29 @@
"HeaderMetadataToEmbed": "Метаинформация для встраивания",
"HeaderNewAccount": "Новая учетная запись",
"HeaderNewLibrary": "Новая библиотека",
+ "HeaderNotificationCreate": "Создать уведомление",
+ "HeaderNotificationUpdate": "Уведомление об обновлении",
"HeaderNotifications": "Уведомления",
"HeaderOpenIDConnectAuthentication": "Аутентификация OpenID Connect",
+ "HeaderOpenListeningSessions": "Открытые сеансы прослушивания",
"HeaderOpenRSSFeed": "Открыть RSS-канал",
"HeaderOtherFiles": "Другие файлы",
"HeaderPasswordAuthentication": "Аутентификация по паролю",
"HeaderPermissions": "Разрешения",
"HeaderPlayerQueue": "Очередь воспроизведения",
+ "HeaderPlayerSettings": "Настройки плеера",
"HeaderPlaylist": "Плейлист",
"HeaderPlaylistItems": "Элементы списка воспроизведения",
"HeaderPodcastsToAdd": "Подкасты для добавления",
"HeaderPreviewCover": "Предпросмотр обложки",
- "HeaderRemoveEpisode": "Удалить эпизод",
- "HeaderRemoveEpisodes": "Удалить {0} эпизодов",
"HeaderRSSFeedGeneral": "Сведения о RSS",
"HeaderRSSFeedIsOpen": "RSS-канал открыт",
"HeaderRSSFeeds": "RSS-каналы",
+ "HeaderRemoveEpisode": "Удалить эпизод",
+ "HeaderRemoveEpisodes": "Удалить {0} эпизодов",
"HeaderSavedMediaProgress": "Прогресс медиа сохранен",
"HeaderSchedule": "Планировщик",
+ "HeaderScheduleEpisodeDownloads": "Запланируйте автоматическую загрузку эпизодов",
"HeaderScheduleLibraryScans": "Планировщик автоматического сканирования библиотеки",
"HeaderSession": "Сеансы",
"HeaderSetBackupSchedule": "Установить планировщик бэкапов",
@@ -186,30 +204,34 @@
"HeaderUpdateDetails": "Обновить детали",
"HeaderUpdateLibrary": "Обновить библиотеку",
"HeaderUsers": "Пользователи",
- "HeaderYearReview": "Year {0} in Review",
+ "HeaderYearReview": "Итоги {0} года",
"HeaderYourStats": "Ваша статистика",
"LabelAbridged": "Сокращенное издание",
- "LabelAbridgedChecked": "Abridged (checked)",
- "LabelAbridgedUnchecked": "Unabridged (unchecked)",
- "LabelAccessibleBy": "Accessible by",
+ "LabelAbridgedChecked": "Сокращено (отмечено)",
+ "LabelAbridgedUnchecked": "Без сокращений (не отмечено)",
+ "LabelAccessibleBy": "Доступ",
"LabelAccountType": "Тип учетной записи",
"LabelAccountTypeAdmin": "Администратор",
"LabelAccountTypeGuest": "Гость",
"LabelAccountTypeUser": "Пользователь",
"LabelActivity": "Активность",
- "LabelAdded": "Добавили",
- "LabelAddedAt": "Дата добавления",
"LabelAddToCollection": "Добавить в коллекцию",
"LabelAddToCollectionBatch": "Добавить {0} книг в коллекцию",
"LabelAddToPlaylist": "Добавить в плейлист",
"LabelAddToPlaylistBatch": "Добавить {0} элементов в плейлист",
+ "LabelAddedAt": "Дата добавления",
+ "LabelAddedDate": "Добавлено {0}",
"LabelAdminUsersOnly": "Только для пользователей с правами администратора",
"LabelAll": "Все",
"LabelAllUsers": "Все пользователи",
"LabelAllUsersExcludingGuests": "Все пользователи, кроме гостей",
"LabelAllUsersIncludingGuests": "Все пользователи, включая гостей",
"LabelAlreadyInYourLibrary": "Уже в Вашей библиотеке",
+ "LabelApiToken": "Токен API",
"LabelAppend": "Добавить",
+ "LabelAudioBitrate": "Битрейт аудио (напр. 128k)",
+ "LabelAudioChannels": "Аудиоканалы (1 или 2)",
+ "LabelAudioCodec": "Аудиокодек",
"LabelAuthor": "Автор",
"LabelAuthorFirstLast": "Автор (Имя Фамилия)",
"LabelAuthorLastFirst": "Автор (Фамилия, Имя)",
@@ -222,32 +244,37 @@
"LabelAutoRegister": "Автоматическая регистрация",
"LabelAutoRegisterDescription": "Автоматическое создание новых пользователей после входа в систему",
"LabelBackToUser": "Назад к пользователю",
+ "LabelBackupAudioFiles": "Резервное копирование аудиофайлов",
"LabelBackupLocation": "Путь для бэкапов",
"LabelBackupsEnableAutomaticBackups": "Включить автоматическое бэкапирование",
"LabelBackupsEnableAutomaticBackupsHelp": "Бэкапы сохраняются в /metadata/backups",
- "LabelBackupsMaxBackupSize": "Максимальный размер бэкапа (в GB)",
+ "LabelBackupsMaxBackupSize": "Максимальный размер бэкапа (в GB) (0 для неограниченного лимита)",
"LabelBackupsMaxBackupSizeHelp": "В качестве защиты процесс бэкапирования будет завершаться ошибкой, если будет превышен настроенный размер.",
"LabelBackupsNumberToKeep": "Сохранять бэкапов",
"LabelBackupsNumberToKeepHelp": "За один раз только 1 бэкап будет удален, так что если у вас будет больше бэкапов, то их нужно удалить вручную.",
"LabelBitrate": "Битрейт",
+ "LabelBonus": "Бонус",
"LabelBooks": "Книги",
"LabelButtonText": "Текст кнопки",
- "LabelByAuthor": "by {0}",
+ "LabelByAuthor": "{0}",
"LabelChangePassword": "Изменить пароль",
"LabelChannels": "Каналы",
+ "LabelChapterCount": "{0} Главы",
+ "LabelChapterTitle": "Название главы",
"LabelChapters": "Главы",
"LabelChaptersFound": "глав найдено",
- "LabelChapterTitle": "Название главы",
"LabelClickForMoreInfo": "Нажмите, чтобы узнать больше",
+ "LabelClickToUseCurrentValue": "Нажмите, чтобы использовать текущее значение",
"LabelClosePlayer": "Закрыть проигрыватель",
"LabelCodec": "Кодек",
"LabelCollapseSeries": "Свернуть серии",
+ "LabelCollapseSubSeries": "Свернуть подсерию",
"LabelCollection": "Коллекция",
"LabelCollections": "Коллекции",
"LabelComplete": "Завершить",
"LabelConfirmPassword": "Подтвердить пароль",
"LabelContinueListening": "Продолжить слушать",
- "LabelContinueReading": "Продолжить читать",
+ "LabelContinueReading": "Продолжить чтение",
"LabelContinueSeries": "Продолжить серию",
"LabelCover": "Обложка",
"LabelCoverImageURL": "URL изображения обложки",
@@ -257,6 +284,7 @@
"LabelCurrently": "Текущее:",
"LabelCustomCronExpression": "Пользовательское выражение Cron:",
"LabelDatetime": "Дата и время",
+ "LabelDays": "Дней",
"LabelDeleteFromFileSystemCheckbox": "Удалить из файловой системы (снимите флажок, чтобы удалить только из базы данных)",
"LabelDescription": "Описание",
"LabelDeselectAll": "Снять выделение",
@@ -270,58 +298,84 @@
"LabelDownload": "Скачать",
"LabelDownloadNEpisodes": "Скачать {0} эпизодов",
"LabelDuration": "Длина",
- "LabelDurationComparisonExactMatch": "(exact match)",
- "LabelDurationComparisonLonger": "({0} longer)",
- "LabelDurationComparisonShorter": "({0} shorter)",
+ "LabelDurationComparisonExactMatch": "(точное совпадение)",
+ "LabelDurationComparisonLonger": "({0} дольше)",
+ "LabelDurationComparisonShorter": "({0} короче)",
"LabelDurationFound": "Найденная длина:",
"LabelEbook": "E-книга",
"LabelEbooks": "E-книги",
"LabelEdit": "Редактировать",
- "LabelEmail": "Email",
+ "LabelEmail": "E-mail",
"LabelEmailSettingsFromAddress": "Адрес От",
+ "LabelEmailSettingsRejectUnauthorized": "Отклонение неавторизованных сертификатов",
+ "LabelEmailSettingsRejectUnauthorizedHelp": "Отключение проверки SSL-сертификата может подвергнуть ваше подключение рискам безопасности, таким как атаки типа \"man-in-the-middle\". Отключайте эту опцию только в том случае, если вы понимаете последствия и доверяете почтовому серверу, к которому подключаетесь.",
"LabelEmailSettingsSecure": "Безопасность",
"LabelEmailSettingsSecureHelp": "Если значение истинно, то соединение будет использовать TLS при подключении к серверу. Если значение ложно, то TLS будет использован, если сервер поддерживает расширение STARTTLS. В большинстве случаев установите это значение в истину, если вы подключаетесь к порту 465. Для порта 587 или 25 оставьте значение ложным. (из nodemailer.com/smtp/#authentication)",
"LabelEmailSettingsTestAddress": "Тестовый адрес",
"LabelEmbeddedCover": "Встроенная обложка",
"LabelEnable": "Включить",
+ "LabelEncodingBackupLocation": "Резервная копия ваших оригинальных аудиофайлов будет сохранена в:",
+ "LabelEncodingChaptersNotEmbedded": "Главы не встраиваются в многодорожечные аудиокниги.",
+ "LabelEncodingClearItemCache": "Обязательно периодически очищайте кэш элементов.",
+ "LabelEncodingFinishedM4B": "Готовый M4B будет помещен в вашу папку с аудиокнигами по адресу:",
+ "LabelEncodingInfoEmbedded": "Метаданные будут встроены в звуковые дорожки внутри папки вашей аудиокниги.",
+ "LabelEncodingStartedNavigation": "Как только задача будет запущена, вы сможете перейти с этой страницы.",
+ "LabelEncodingTimeWarning": "Кодирование может занять до 30 минут.",
+ "LabelEncodingWarningAdvancedSettings": "Предупреждение: Не обновляйте эти настройки, если вы не знакомы с параметрами кодировки ffmpeg.",
+ "LabelEncodingWatcherDisabled": "Если у вас отключено наблюдение за папкой, вам нужно будет повторно пересканировать эту аудиокнигу.",
"LabelEnd": "Конец",
+ "LabelEndOfChapter": "Конец главы",
"LabelEpisode": "Эпизод",
+ "LabelEpisodeNotLinkedToRssFeed": "Эпизод, не связанный с RSS-каналом",
+ "LabelEpisodeNumber": "Эпизод #{0}",
"LabelEpisodeTitle": "Имя эпизода",
"LabelEpisodeType": "Тип эпизода",
+ "LabelEpisodeUrlFromRssFeed": "URL-адрес эпизода из RSS-ленты",
+ "LabelEpisodes": "Эпизодов",
+ "LabelEpisodic": "Эпизодический",
"LabelExample": "Пример",
+ "LabelExpandSeries": "Развернуть серию",
+ "LabelExpandSubSeries": "Развернуть подсерию",
"LabelExplicit": "Явный",
- "LabelExplicitChecked": "Explicit (checked)",
- "LabelExplicitUnchecked": "Not Explicit (unchecked)",
+ "LabelExplicitChecked": "Явный (отмечено)",
+ "LabelExplicitUnchecked": "Не явно (не отмечено)",
+ "LabelExportOPML": "Экспорт OPML",
"LabelFeedURL": "URL канала",
"LabelFetchingMetadata": "Извлечение метаданных",
"LabelFile": "Файл",
"LabelFileBirthtime": "Дата создания",
+ "LabelFileBornDate": "Родился {0}",
"LabelFileModified": "Дата модификации",
+ "LabelFileModifiedDate": "Изменено {0}",
"LabelFilename": "Имя файла",
"LabelFilterByUser": "Фильтр по пользователю",
"LabelFindEpisodes": "Найти эпизоды",
"LabelFinished": "Закончен",
"LabelFolder": "Папка",
"LabelFolders": "Папки",
- "LabelFontBold": "Bold",
+ "LabelFontBold": "Жирный",
+ "LabelFontBoldness": "Жирность шрифта",
"LabelFontFamily": "Семейство шрифтов",
- "LabelFontItalic": "Italic",
+ "LabelFontItalic": "Курсив",
"LabelFontScale": "Масштаб шрифта",
- "LabelFontStrikethrough": "Strikethrough",
+ "LabelFontStrikethrough": "Зачеркнутый",
"LabelFormat": "Формат",
+ "LabelFull": "Полный",
"LabelGenre": "Жанр",
"LabelGenres": "Жанры",
"LabelHardDeleteFile": "Жесткое удаление файла",
"LabelHasEbook": "Есть e-книга",
"LabelHasSupplementaryEbook": "Есть дополнительная e-книга",
+ "LabelHideSubtitles": "Скрыть субтитры",
"LabelHighestPriority": "Наивысший приоритет",
"LabelHost": "Хост",
"LabelHour": "Часы",
+ "LabelHours": "Часов",
"LabelIcon": "Иконка",
"LabelImageURLFromTheWeb": "URL-адрес изображения из Интернета",
+ "LabelInProgress": "В процессе",
"LabelIncludeInTracklist": "Включать в список воспроизведения",
"LabelIncomplete": "Не завершен",
- "LabelInProgress": "В процессе",
"LabelInterval": "Интервал",
"LabelIntervalCustomDailyWeekly": "Пользовательские ежедневно/еженедельно",
"LabelIntervalEvery12Hours": "Каждые 12 часов",
@@ -333,8 +387,11 @@
"LabelIntervalEveryHour": "Каждый час",
"LabelInvert": "Инвертировать",
"LabelItem": "Элемент",
+ "LabelJumpBackwardAmount": "Прыжок назад на величину",
+ "LabelJumpForwardAmount": "Прыжок вперед на величину",
"LabelLanguage": "Язык",
"LabelLanguageDefaultServer": "Язык сервера по умолчанию",
+ "LabelLanguages": "Языки",
"LabelLastBookAdded": "Последняя книга добавлена",
"LabelLastBookUpdated": "Последняя книга обновлена",
"LabelLastSeen": "Последнее сканирование",
@@ -346,6 +403,7 @@
"LabelLess": "Менее",
"LabelLibrariesAccessibleToUser": "Библиотеки доступные для пользователя",
"LabelLibrary": "Библиотека",
+ "LabelLibraryFilterSublistEmpty": "Нет {0}",
"LabelLibraryItem": "Элемент библиотеки",
"LabelLibraryName": "Имя библиотеки",
"LabelLimit": "Лимит",
@@ -358,16 +416,21 @@
"LabelLowestPriority": "Самый низкий приоритет",
"LabelMatchExistingUsersBy": "Сопоставление существующих пользователей по",
"LabelMatchExistingUsersByDescription": "Используется для подключения существующих пользователей. После подключения пользователям будет присвоен уникальный идентификатор от поставщика единого входа",
+ "LabelMaxEpisodesToDownload": "Максимальное количество эпизодов для загрузки. Используйте 0 для неограниченного количества.",
+ "LabelMaxEpisodesToDownloadPerCheck": "Максимальное количество новых эпизодов для загрузки за одну проверку",
+ "LabelMaxEpisodesToKeep": "Максимальное количество сохраняемых эпизодов",
+ "LabelMaxEpisodesToKeepHelp": "Значение 0 не устанавливает максимального ограничения. После автоматической загрузки нового эпизода самый старый эпизод будет удален, если у вас более X эпизодов. При этом будет удален только 1 эпизод за каждую новую загрузку.",
"LabelMediaPlayer": "Медиа проигрыватель",
"LabelMediaType": "Тип медиа",
- "LabelMetadataOrderOfPrecedenceDescription": "Источники метаданных с более высоким приоритетом будут переопределять источники метаданных с более низким приоритетом",
- "LabelMetadataProvider": "Провайдер",
"LabelMetaTag": "Мета тег",
"LabelMetaTags": "Мета теги",
+ "LabelMetadataOrderOfPrecedenceDescription": "Источники метаданных с более высоким приоритетом будут переопределять источники метаданных с более низким приоритетом",
+ "LabelMetadataProvider": "Провайдер",
"LabelMinute": "Минуты",
+ "LabelMinutes": "Минуты",
"LabelMissing": "Потеряно",
- "LabelMissingEbook": "Has no ebook",
- "LabelMissingSupplementaryEbook": "Has no supplementary ebook",
+ "LabelMissingEbook": "Нет e-книги",
+ "LabelMissingSupplementaryEbook": "Нет дополнительной e-книги",
"LabelMobileRedirectURIs": "Разрешенные URI перенаправления с мобильных устройств",
"LabelMobileRedirectURIsDescription": "Это белый список допустимых URI перенаправления для мобильных приложений. По умолчанию используется audiobookshelf://oauth, который можно удалить или дополнить дополнительными URI для интеграции со сторонними приложениями. Использование звездочки (*) в качестве единственной записи разрешает любой URI.",
"LabelMore": "Еще",
@@ -376,92 +439,111 @@
"LabelNarrator": "Читает",
"LabelNarrators": "Чтецы",
"LabelNew": "Новый",
+ "LabelNewPassword": "Новый пароль",
"LabelNewestAuthors": "Новые авторы",
"LabelNewestEpisodes": "Новые эпизоды",
- "LabelNewPassword": "Новый пароль",
"LabelNextBackupDate": "Следующая дата бэкапирования",
"LabelNextScheduledRun": "Следущий запланированный запуск",
+ "LabelNoCustomMetadataProviders": "Нет пользовательских поставщиков метаданных",
"LabelNoEpisodesSelected": "Эпизоды не выбраны",
- "LabelNotes": "Заметки",
"LabelNotFinished": "Не завершено",
+ "LabelNotStarted": "Не запущено",
+ "LabelNotes": "Заметки",
"LabelNotificationAppriseURL": "URL(ы) для извещений",
"LabelNotificationAvailableVariables": "Доступные переменные",
"LabelNotificationBodyTemplate": "Шаблон тела",
"LabelNotificationEvent": "Событие оповещения",
+ "LabelNotificationTitleTemplate": "Шаблон заголовка",
"LabelNotificationsMaxFailedAttempts": "Макс. попыток",
"LabelNotificationsMaxFailedAttemptsHelp": "Уведомления будут выключены если произойдет ошибка отправки данное количество раз",
"LabelNotificationsMaxQueueSize": "Макс. размер очереди для событий уведомлений",
"LabelNotificationsMaxQueueSizeHelp": "События ограничены 1 в секунду. События будут игнорированы если в очереди максимальное количество. Это предотвращает спам сообщениями.",
- "LabelNotificationTitleTemplate": "Шаблон заголовка",
- "LabelNotStarted": "Не запущено",
"LabelNumberOfBooks": "Количество книг",
"LabelNumberOfEpisodes": "# Эпизодов",
- "LabelOpenIDAdvancedPermsClaimDescription": "Name of the OpenID claim that contains advanced permissions for user actions within the application which will apply to non-admin roles (if configured). If the claim is missing from the response, access to ABS will be denied. If a single option is missing, it will be treated as false. Ensure the identity provider's claim matches the expected structure:",
- "LabelOpenIDClaims": "Leave the following options empty to disable advanced group and permissions assignment, automatically assigning 'User' group then.",
- "LabelOpenIDGroupClaimDescription": "Name of the OpenID claim that contains a list of the user's groups. Commonly referred to as groups. If configured, the application will automatically assign roles based on the user's group memberships, provided that these groups are named case-insensitively 'admin', 'user', or 'guest' in the claim. The claim should contain a list, and if a user belongs to multiple groups, the application will assign the role corresponding to the highest level of access. If no group matches, access will be denied.",
+ "LabelOpenIDAdvancedPermsClaimDescription": "Имя утверждения OpenID, содержащего расширенные разрешения на действия пользователя в приложении, которые будут применяться к ролям, не являющимся администраторами (если они настроены). Если утверждение отсутствует в ответе, в доступе к ABS будет отказано. Если одна опция отсутствует, она будет рассматриваться как false. Убедитесь, что утверждение поставщика удостоверений соответствует ожидаемой структуре:",
+ "LabelOpenIDClaims": "Оставьте следующие параметры пустыми, чтобы отключить расширенное назначение групп и разрешений, будет автоматически присвоена группа «Пользователь».",
+ "LabelOpenIDGroupClaimDescription": "Имя утверждения OpenID, содержащего список групп пользователя. Обычно их называют groups. Если эта настройка настроена, приложение будет автоматически назначать роли на основе членства пользователя в группах при условии, что эти группы названы в утверждении без учета регистра \"admin\", \"user\" или \"guest\". Утверждение должно содержать список, и если пользователь принадлежит к нескольким группам, то приложение назначит роль, соответствующую самому высокому уровню доступа. Если ни одна из групп не совпадает, доступ будет запрещен.",
"LabelOpenRSSFeed": "Открыть RSS-канал",
"LabelOverwrite": "Перезаписать",
+ "LabelPaginationPageXOfY": "Страница {0} из {1}",
"LabelPassword": "Пароль",
"LabelPath": "Путь",
+ "LabelPermanent": "Постоянный",
"LabelPermissionsAccessAllLibraries": "Есть доступ ко всем библиотекам",
"LabelPermissionsAccessAllTags": "Есть доступ ко всем тегам",
"LabelPermissionsAccessExplicitContent": "Есть доступ к явному содержимому",
+ "LabelPermissionsCreateEreader": "Можно создать читалку",
"LabelPermissionsDelete": "Может удалять",
"LabelPermissionsDownload": "Может скачивать",
"LabelPermissionsUpdate": "Может обновлять",
"LabelPermissionsUpload": "Может закачивать",
- "LabelPersonalYearReview": "Your Year in Review ({0})",
+ "LabelPersonalYearReview": "Итоги прошедшего года ({0})",
"LabelPhotoPathURL": "Путь к фото/URL",
- "LabelPlaylists": "Плейлисты",
"LabelPlayMethod": "Метод воспроизведения",
+ "LabelPlayerChapterNumberMarker": "{0} из {1}",
+ "LabelPlaylists": "Плейлисты",
"LabelPodcast": "Подкаст",
- "LabelPodcasts": "Подкасты",
"LabelPodcastSearchRegion": "Регион поиска подкастов",
"LabelPodcastType": "Тип подкаста",
+ "LabelPodcasts": "Подкасты",
"LabelPort": "Порт",
"LabelPrefixesToIgnore": "Игнорируемые префиксы (без учета регистра)",
"LabelPreventIndexing": "Запретить индексацию фида каталогами подкастов iTunes и Google",
"LabelPrimaryEbook": "Основная e-книга",
"LabelProgress": "Прогресс",
"LabelProvider": "Провайдер",
+ "LabelProviderAuthorizationValue": "Значение заголовка авторизации",
"LabelPubDate": "Дата публикации",
- "LabelPublisher": "Издатель",
"LabelPublishYear": "Год публикации",
- "LabelRead": "Читать",
- "LabelReadAgain": "Читать снова",
- "LabelReadEbookWithoutProgress": "Читать e-книгу без сохранения прогресса",
- "LabelRecentlyAdded": "Недавно добавленные",
- "LabelRecentSeries": "Последние серии",
- "LabelRecommended": "Рекомендованное",
- "LabelRedo": "Redo",
- "LabelRegion": "Регион",
- "LabelReleaseDate": "Дата выхода",
- "LabelRemoveCover": "Удалить обложку",
- "LabelRowsPerPage": "Rows per page",
+ "LabelPublishedDate": "Опубликовано {0}",
+ "LabelPublishedDecade": "Опубликованное десятилетие",
+ "LabelPublishedDecades": "Опубликованные десятилетия",
+ "LabelPublisher": "Издатель",
+ "LabelPublishers": "Издатели",
"LabelRSSFeedCustomOwnerEmail": "Пользовательский Email владельца",
"LabelRSSFeedCustomOwnerName": "Пользовательское Имя владельца",
"LabelRSSFeedOpen": "Открыть RSS-канал",
"LabelRSSFeedPreventIndexing": "Запретить индексирование",
"LabelRSSFeedSlug": "Встроить RSS-канал",
"LabelRSSFeedURL": "URL RSS-канала",
+ "LabelRandomly": "Случайно",
+ "LabelReAddSeriesToContinueListening": "Повторно добавить серию в «Продолжить слушать»",
+ "LabelRead": "Читать",
+ "LabelReadAgain": "Читать снова",
+ "LabelReadEbookWithoutProgress": "Читать e-книгу без сохранения прогресса",
+ "LabelRecentSeries": "Последние серии",
+ "LabelRecentlyAdded": "Недавно добавленные",
+ "LabelRecommended": "Рекомендованное",
+ "LabelRedo": "Повторить",
+ "LabelRegion": "Регион",
+ "LabelReleaseDate": "Дата выхода",
+ "LabelRemoveAllMetadataAbs": "Удалите все файлы metadata.abs",
+ "LabelRemoveAllMetadataJson": "Удалите все файлы metadata.json",
+ "LabelRemoveCover": "Удалить обложку",
+ "LabelRemoveMetadataFile": "Удаление файлов метаданных в папках элементов библиотеки",
+ "LabelRemoveMetadataFileHelp": "Удалите все файлы metadata.json и metadata.abs из ваших папок {0}.",
+ "LabelRowsPerPage": "Строк на странице",
"LabelSearchTerm": "Поисковый запрос",
"LabelSearchTitle": "Поиск по названию",
"LabelSearchTitleOrASIN": "Поиск по названию или ASIN",
"LabelSeason": "Сезон",
- "LabelSelectAll": "Select all",
+ "LabelSeasonNumber": "Сезон #{0}",
+ "LabelSelectAll": "Выбрать все",
"LabelSelectAllEpisodes": "Выбрать все эпизоды",
"LabelSelectEpisodesShowing": "Выберите {0} эпизодов для показа",
- "LabelSelectUsers": "Select users",
+ "LabelSelectUsers": "Выбор пользователей",
"LabelSendEbookToDevice": "Отправить e-книгу в...",
"LabelSequence": "Последовательность",
+ "LabelSerial": "Серийный",
"LabelSeries": "Серия",
"LabelSeriesName": "Имя серии",
"LabelSeriesProgress": "Прогресс серии",
- "LabelServerYearReview": "Server Year in Review ({0})",
+ "LabelServerLogLevel": "Уровень журнала сервера",
+ "LabelServerYearReview": "Итоги года всего сервера ({0})",
"LabelSetEbookAsPrimary": "Установить как основную",
"LabelSetEbookAsSupplementary": "Установить как дополнительную",
"LabelSettingsAudiobooksOnly": "Только аудиокниги",
- "LabelSettingsAudiobooksOnlyHelp": "Если включить эту настройку, файлы электронных книг будут игнорироваться, за исключением случаев, когда они находятся в папке с аудиокнигами, в этом случае они будут рассматриваться как дополнительные электронные книги.",
+ "LabelSettingsAudiobooksOnlyHelp": "Если включить эту настройку, файлы электронных книг будут игнорироваться, за исключением случаев, когда они находятся в папке с аудиокнигами, в этом случае они будут рассматриваться как дополнительные электронные книги",
"LabelSettingsBookshelfViewHelp": "Конструкция с деревянными полками",
"LabelSettingsChromecastSupport": "Поддержка Chromecast",
"LabelSettingsDateFormat": "Формат даты",
@@ -471,8 +553,8 @@
"LabelSettingsEnableWatcher": "Включить отслеживание",
"LabelSettingsEnableWatcherForLibrary": "Включить отслеживание за папками библиотеки",
"LabelSettingsEnableWatcherHelp": "Включает автоматическое добавление/обновление элементов при обнаружении изменений файлов. *Требуется перезапуск сервера",
- "LabelSettingsEpubsAllowScriptedContent": "Allow scripted content in epubs",
- "LabelSettingsEpubsAllowScriptedContentHelp": "Allow epub files to execute scripts. It is recommended to keep this setting disabled unless you trust the source of the epub files.",
+ "LabelSettingsEpubsAllowScriptedContent": "Разрешение содержимого epub с скриптами",
+ "LabelSettingsEpubsAllowScriptedContentHelp": "Разрешить файлам epub выполнять скрипты. Рекомендуется отключать этот параметр, если вы не доверяете источнику файлов epub.",
"LabelSettingsExperimentalFeatures": "Экспериментальные функции",
"LabelSettingsExperimentalFeaturesHelp": "Функционал в разработке на который Вы могли бы дать отзыв или помочь в тестировании. Нажмите для открытия обсуждения на github.",
"LabelSettingsFindCovers": "Найти обложки",
@@ -481,12 +563,15 @@
"LabelSettingsHideSingleBookSeriesHelp": "Серии, в которых всего одна книга, будут скрыты со страницы серий и полок домашней страницы.",
"LabelSettingsHomePageBookshelfView": "Вид книжной полки на Домашней странице",
"LabelSettingsLibraryBookshelfView": "Вид книжной полки в Библиотеке",
- "LabelSettingsOnlyShowLaterBooksInContinueSeries": "Skip earlier books in Continue Series",
- "LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "The Continue Series home page shelf shows the first book not started in series that have at least one book finished and no books in progress. Enabling this setting will continue series from the furthest completed book instead of the first book not started.",
+ "LabelSettingsLibraryMarkAsFinishedPercentComplete": "Процент выполнения больше, чем",
+ "LabelSettingsLibraryMarkAsFinishedTimeRemaining": "Оставшееся время составляет менее (секунд)",
+ "LabelSettingsLibraryMarkAsFinishedWhen": "Отметьте мультимедийный элемент как законченный, когда",
+ "LabelSettingsOnlyShowLaterBooksInContinueSeries": "Пропустить предыдущие книги в \"Продолжить серию\"",
+ "LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "На домашней странице \"Продолжить серию\" отображается первая книга, не начатая в серии, в которой закончена хотя бы одна книга и нет начатых книг. При включении этого параметра серия будет продолжена с самой последней завершенной книги, а не с первой, которая не начата.",
"LabelSettingsParseSubtitles": "Разбор подзаголовков",
"LabelSettingsParseSubtitlesHelp": "Извлечение подзаголовков из имен папок аудиокниг. Подзаголовок должны быть отделен \" - \" например \"Название Книги - Тут Подзаголовок\" подзаголовок будет \"Тут Подзаголовок\"",
"LabelSettingsPreferMatchedMetadata": "Предпочитать метаданные поиска",
- "LabelSettingsPreferMatchedMetadataHelp": "Данные поиска будут перезаписывать данные книг при использовании Быстрого Поиска. По умолчанию Быстрый Поиск будет использоваться только при отсутствии данных",
+ "LabelSettingsPreferMatchedMetadataHelp": "Данные поиска будут перезаписывать данные книг при использовании Быстрого Поиска. По умолчанию Быстрый Поиск будет использоваться только при отсутствии данных.",
"LabelSettingsSkipMatchingBooksWithASIN": "Пропускать Поиск книг у которых уже заполнен ASIN",
"LabelSettingsSkipMatchingBooksWithISBN": "Пропускать Поиск книг у которых уже заполнен ISBN",
"LabelSettingsSortingIgnorePrefixes": "Игнорировать префиксы при сортировке",
@@ -498,15 +583,19 @@
"LabelSettingsStoreMetadataWithItem": "Хранить метаинформацию с элементом",
"LabelSettingsStoreMetadataWithItemHelp": "По умолчанию метаинформация сохраняется в папке /metadata/items, при включении этой настройки метаинформация будет храниться в папке элемента",
"LabelSettingsTimeFormat": "Формат времени",
+ "LabelShare": "Поделиться",
+ "LabelShareOpen": "Общедоступно",
+ "LabelShareURL": "Общедоступный URL",
"LabelShowAll": "Показать все",
- "LabelShowSeconds": "Show seconds",
+ "LabelShowSeconds": "Отображать секунды",
+ "LabelShowSubtitles": "Показать субтитры",
"LabelSize": "Размер",
"LabelSleepTimer": "Таймер сна",
"LabelSlug": "Слизень",
"LabelStart": "Начало",
+ "LabelStartTime": "Время начала",
"LabelStarted": "Начат",
"LabelStartedAt": "Начато В",
- "LabelStartTime": "Время начала",
"LabelStatsAudioTracks": "Аудио треки",
"LabelStatsAuthors": "Авторы",
"LabelStatsBestDay": "Лучший День",
@@ -529,21 +618,27 @@
"LabelTagsAccessibleToUser": "Теги доступные для пользователя",
"LabelTagsNotAccessibleToUser": "Теги не доступные для пользователя",
"LabelTasks": "Запущенные задачи",
- "LabelTextEditorBulletedList": "Bulleted list",
- "LabelTextEditorLink": "Link",
- "LabelTextEditorNumberedList": "Numbered list",
- "LabelTextEditorUnlink": "Unlink",
+ "LabelTextEditorBulletedList": "Маркированный список",
+ "LabelTextEditorLink": "Связь",
+ "LabelTextEditorNumberedList": "Нумерованный список",
+ "LabelTextEditorUnlink": "Отсоединить",
"LabelTheme": "Тема",
"LabelThemeDark": "Темная",
"LabelThemeLight": "Светлая",
"LabelTimeBase": "Временная база",
+ "LabelTimeDurationXHours": "{0} часов",
+ "LabelTimeDurationXMinutes": "{0} минут",
+ "LabelTimeDurationXSeconds": "{0} секунд",
+ "LabelTimeInMinutes": "Время в минутах",
+ "LabelTimeLeft": "{0} осталось",
"LabelTimeListened": "Время прослушивания",
"LabelTimeListenedToday": "Время прослушивания сегодня",
"LabelTimeRemaining": "{0} осталось",
- "LabelTimeToShift": "Время смещения в сек.",
+ "LabelTimeToShift": "Время смещения в секундах",
"LabelTitle": "Название",
"LabelToolsEmbedMetadata": "Встроить метаданные",
"LabelToolsEmbedMetadataDescription": "Встроить метаданные в аудио файлы, включая обложку и главы.",
+ "LabelToolsM4bEncoder": "Кодировщик M4B",
"LabelToolsMakeM4b": "Создать M4B файл аудиокниги",
"LabelToolsMakeM4bDescription": "Создает .M4B файл аудиокниги с встроенными метаданными, обложкой и главами.",
"LabelToolsSplitM4b": "Разделить M4B на MP3 файлы",
@@ -556,31 +651,38 @@
"LabelTracksMultiTrack": "Мультитрек",
"LabelTracksNone": "Нет треков",
"LabelTracksSingleTrack": "Один трек",
+ "LabelTrailer": "Трейлер",
"LabelType": "Тип",
"LabelUnabridged": "Полное издание",
- "LabelUndo": "Undo",
+ "LabelUndo": "Отменить",
"LabelUnknown": "Неизвестно",
+ "LabelUnknownPublishDate": "Дата публикации неизвестна",
"LabelUpdateCover": "Обновить обложку",
"LabelUpdateCoverHelp": "Позволяет перезаписывать существующие обложки для выбранных книг если будут найдены",
- "LabelUpdatedAt": "Обновлено в",
"LabelUpdateDetails": "Обновить подробности",
"LabelUpdateDetailsHelp": "Позволяет перезаписывать текущие подробности для выбранных книг если будут найдены",
+ "LabelUpdatedAt": "Обновлено в",
"LabelUploaderDragAndDrop": "Перетащите файлы или каталоги",
"LabelUploaderDropFiles": "Перетащите файлы",
"LabelUploaderItemFetchMetadataHelp": "Автоматическое извлечение названия, автора и серии",
+ "LabelUseAdvancedOptions": "Используйте расширенные опции",
"LabelUseChapterTrack": "Показывать время главы",
"LabelUseFullTrack": "Показывать время книги",
+ "LabelUseZeroForUnlimited": "Используйте 0 для неограниченного количества",
"LabelUser": "Пользователь",
"LabelUsername": "Имя пользователя",
"LabelValue": "Значение",
"LabelVersion": "Версия",
"LabelViewBookmarks": "Закладки",
"LabelViewChapters": "Главы",
+ "LabelViewPlayerSettings": "Просмотр настроек плеера",
"LabelViewQueue": "Очередь воспроизведения",
"LabelVolume": "Громкость",
"LabelWeekdaysToRun": "Дни недели для запуска",
- "LabelYearReviewHide": "Hide Year in Review",
- "LabelYearReviewShow": "See Year in Review",
+ "LabelXBooks": "{0} книг",
+ "LabelXItems": "{0} элементов",
+ "LabelYearReviewHide": "Скрыть итоги года",
+ "LabelYearReviewShow": "Итоги года",
"LabelYourAudiobookDuration": "Продолжительность Вашей книги",
"LabelYourBookmarks": "Ваши закладки",
"LabelYourPlaylists": "Ваши плейлисты",
@@ -588,10 +690,14 @@
"MessageAddToPlayerQueue": "Добавить в очередь проигрывателя",
"MessageAppriseDescription": "Для использования этой функции необходимо иметь запущенный экземпляр Apprise API или api которое обрабатывает те же самые запросы. URL-адрес API Apprise должен быть полным URL-адресом для отправки уведомления, т.е., если API запущено по адресу http://192.168.1.1:8337 тогда нужно указать http://192.168.1.1:8337/notify.",
"MessageBackupsDescription": "Бэкап включает пользователей, прогресс пользователей, данные элементов библиотеки, настройки сервера и изображения хранящиеся в /metadata/items и /metadata/authors. Бэкапы НЕ сохраняют файлы из папок библиотек.",
+ "MessageBackupsLocationEditNote": "Примечание: Обновление местоположения резервной копии не приведет к перемещению или изменению существующих резервных копий",
+ "MessageBackupsLocationNoEditNote": "Примечание: Местоположение резервного копирования задается с помощью переменной среды и не может быть изменено здесь.",
+ "MessageBackupsLocationPathEmpty": "Путь к расположению резервной копии не может быть пустым",
"MessageBatchQuickMatchDescription": "Быстрый Поиск попытается добавить отсутствующие обложки и метаданные для выбранных элементов. Включите параметры ниже, чтобы разрешить Быстрому Поиску перезаписывать существующие обложки и/или метаданные.",
"MessageBookshelfNoCollections": "Вы еще не создали ни одной коллекции",
- "MessageBookshelfNoResultsForFilter": "Нет Результатов для фильтра \"{0}: {1}\"",
"MessageBookshelfNoRSSFeeds": "Нет открытых RSS-каналов",
+ "MessageBookshelfNoResultsForFilter": "Нет Результатов для фильтра \"{0}: {1}\"",
+ "MessageBookshelfNoResultsForQuery": "Нет результатов для запроса",
"MessageBookshelfNoSeries": "У вас нет серий",
"MessageChapterEndIsAfter": "Конец главы после окончания вашей аудиокниги",
"MessageChapterErrorFirstNotZero": "Первая глава должна начинаться с 0",
@@ -601,24 +707,35 @@
"MessageCheckingCron": "Проверка cron...",
"MessageConfirmCloseFeed": "Вы уверены, что хотите закрыть этот канал?",
"MessageConfirmDeleteBackup": "Вы уверены, что хотите удалить бэкап для {0}?",
+ "MessageConfirmDeleteDevice": "Вы уверены, что хотите удалить устройство для чтения электронных книг \"{0}\"?",
"MessageConfirmDeleteFile": "Это удалит файл из Вашей файловой системы. Вы уверены?",
"MessageConfirmDeleteLibrary": "Вы уверены, что хотите навсегда удалить библиотеку \"{0}\"?",
"MessageConfirmDeleteLibraryItem": "Это приведет к удалению элемента библиотеки из базы данных и файловой системы. Вы уверены?",
"MessageConfirmDeleteLibraryItems": "Это приведет к удалению {0} элементов библиотеки из базы данных и файловой системы. Вы уверены?",
+ "MessageConfirmDeleteMetadataProvider": "Вы уверены, что хотите удалить пользовательский поставщик метаданных \"{0}\"?",
+ "MessageConfirmDeleteNotification": "Вы уверены, что хотите удалить это уведомление?",
"MessageConfirmDeleteSession": "Вы уверены, что хотите удалить этот сеанс?",
+ "MessageConfirmEmbedMetadataInAudioFiles": "Вы уверены, что хотите вставить метаданные в {0} аудиофайлов?",
"MessageConfirmForceReScan": "Вы уверены, что хотите принудительно выполнить повторное сканирование?",
"MessageConfirmMarkAllEpisodesFinished": "Вы уверены, что хотите отметить все эпизоды как завершенные?",
"MessageConfirmMarkAllEpisodesNotFinished": "Вы уверены, что хотите отметить все эпизоды как не завершенные?",
+ "MessageConfirmMarkItemFinished": "Вы уверены, что хотите отметить «{0}» как завершенную?",
+ "MessageConfirmMarkItemNotFinished": "Вы уверены, что хотите отметить «{0}» как не завершенную?",
"MessageConfirmMarkSeriesFinished": "Вы уверены, что хотите отметить все книги этой серии как завершенные?",
"MessageConfirmMarkSeriesNotFinished": "Вы уверены, что хотите отметить все книги этой серии как не завершенные?",
- "MessageConfirmPurgeCache": "Purge cache will delete the entire directory at /metadata/cache.
Are you sure you want to remove the cache directory?",
+ "MessageConfirmNotificationTestTrigger": "Активировать это уведомление с тестовыми данными?",
+ "MessageConfirmPurgeCache": "Очистка кэша удалит весь каталог в /metadata/cache.
Вы уверены, что хотите удалить каталог кэша?",
+ "MessageConfirmPurgeItemsCache": "Очистка кэша элементов удалит весь каталог в /metadata/cache/items. Вы уверены?",
"MessageConfirmQuickEmbed": "Предупреждение! Быстрое встраивание не позволяет создавать резервные копии аудиофайлов. Убедитесь, что у вас есть резервная копия аудиофайлов.
Хотите продолжить?",
+ "MessageConfirmQuickMatchEpisodes": "При обнаружении совпадений информация о эпизодах быстрого поиска будет перезаписана. Будут обновлены только несопоставимые эпизоды. Вы уверены?",
+ "MessageConfirmReScanLibraryItems": "Вы уверены, что хотите пересканировать {0} элементов?",
"MessageConfirmRemoveAllChapters": "Вы уверены, что хотите удалить все главы?",
"MessageConfirmRemoveAuthor": "Вы уверены, что хотите удалить автора \"{0}\"?",
"MessageConfirmRemoveCollection": "Вы уверены, что хотите удалить коллекцию \"{0}\"?",
"MessageConfirmRemoveEpisode": "Вы уверены, что хотите удалить эпизод \"{0}\"?",
"MessageConfirmRemoveEpisodes": "Вы уверены, что хотите удалить {0} эпизодов?",
- "MessageConfirmRemoveListeningSessions": "Are you sure you want to remove {0} listening sessions?",
+ "MessageConfirmRemoveListeningSessions": "Вы уверены, что хотите удалить {0} сеансов прослушивания?",
+ "MessageConfirmRemoveMetadataFiles": "Вы уверены, что хотите удалить все файлы metadata. {0} файлов из папок элементов вашей библиотеки?",
"MessageConfirmRemoveNarrator": "Вы уверены, что хотите удалить чтеца \"{0}\"?",
"MessageConfirmRemovePlaylist": "Вы уверены, что хотите удалить плейлист \"{0}\"?",
"MessageConfirmRenameGenre": "Вы уверены, что хотите переименовать жанр \"{0}\" в \"{1}\" для всех элементов?",
@@ -627,13 +744,16 @@
"MessageConfirmRenameTag": "Вы уверены, что хотите переименовать тег \"{0}\" в \"{1}\" для всех элементов?",
"MessageConfirmRenameTagMergeNote": "Примечание: Этот тег уже существует, поэтому они будут объединены.",
"MessageConfirmRenameTagWarning": "Предупреждение! Похожий тег с другими начальными буквами уже существует \"{0}\".",
- "MessageConfirmReScanLibraryItems": "Вы уверены, что хотите пересканировать {0} элементов?",
+ "MessageConfirmResetProgress": "Вы уверены, что хотите сбросить свой прогресс?",
"MessageConfirmSendEbookToDevice": "Вы уверены, что хотите отправить {0} e-книгу \"{1}\" на устройство \"{2}\"?",
+ "MessageConfirmUnlinkOpenId": "Вы уверены, что хотите отвязать этого пользователя от OpenID?",
"MessageDownloadingEpisode": "Эпизод скачивается",
"MessageDragFilesIntoTrackOrder": "Перетащите файлы для исправления порядка треков",
+ "MessageEmbedFailed": "Вставка не удалась!",
"MessageEmbedFinished": "Встраивание завершено!",
+ "MessageEmbedQueue": "Поставлен в очередь для внедрения метаданных ({0} в очереди)",
"MessageEpisodesQueuedForDownload": "{0} Эпизод(ов) запланировано для закачки",
- "MessageEreaderDevices": "To ensure delivery of ebooks, you may need to add the above email address as a valid sender for each device listed below.",
+ "MessageEreaderDevices": "Чтобы обеспечить доставку электронных книг, вам может потребоваться добавить указанный выше адрес электронной почты в качестве действительного отправителя для каждого устройства, перечисленного ниже.",
"MessageFeedURLWillBe": "URL канала будет {0}",
"MessageFetching": "Завершается...",
"MessageForceReScanDescription": "будет сканировать все файлы снова, как свежее сканирование. Теги ID3 аудиофайлов, OPF-файлы и текстовые файлы будут сканироваться как новые.",
@@ -645,7 +765,7 @@
"MessageListeningSessionsInTheLastYear": "{0} сеансов прослушивания в прошлом году",
"MessageLoading": "Загрузка...",
"MessageLoadingFolders": "Загрузка каталогов...",
- "MessageLogsDescription": "Logs are stored in /metadata/logs as JSON files. Crash logs are stored in /metadata/logs/crash_logs.txt.",
+ "MessageLogsDescription": "Журналы хранятся в /metadata/logs в виде JSON-файлов. Журналы сбоев хранятся в /metadata/logs/crash_logs.txt.",
"MessageM4BFailed": "M4B Ошибка!",
"MessageM4BFinished": "M4B Завершено!",
"MessageMapChapterTitles": "Сопоставление названий глав с существующими главами аудиокниги без корректировки временных меток",
@@ -662,6 +782,7 @@
"MessageNoCollections": "Нет коллекций",
"MessageNoCoversFound": "Обложек не найдено",
"MessageNoDescription": "Нет описания",
+ "MessageNoDevices": "Нет устройств",
"MessageNoDownloadsInProgress": "В настоящее время загрузка не выполняется",
"MessageNoDownloadsQueued": "Нет загрузок в очереди",
"MessageNoEpisodeMatchesFound": "Совпадения эпизодов не найдены",
@@ -675,21 +796,27 @@
"MessageNoLogs": "Нет логов",
"MessageNoMediaProgress": "Нет прогресса медиа",
"MessageNoNotifications": "Нет уведомлений",
+ "MessageNoPodcastFeed": "Недопустимый подкаст: Нет канала",
"MessageNoPodcastsFound": "Подкасты не найдены",
"MessageNoResults": "Нет результатов",
"MessageNoSearchResultsFor": "Нет результатов поиска для \"{0}\"",
"MessageNoSeries": "Нет серий",
"MessageNoTags": "Нет тегов",
"MessageNoTasksRunning": "Нет выполняемых задач",
- "MessageNotYetImplemented": "Пока не реализовано",
- "MessageNoUpdateNecessary": "Обновление не требуется",
"MessageNoUpdatesWereNecessary": "Обновления не требовались",
"MessageNoUserPlaylists": "У вас нет плейлистов",
+ "MessageNotYetImplemented": "Пока не реализовано",
+ "MessageOpmlPreviewNote": "Примечание: Это предварительный просмотр разобранного файла OPML. Фактическое название подкаста будет взято из RSS-канала.",
"MessageOr": "или",
"MessagePauseChapter": "Пауза воспроизведения главы",
"MessagePlayChapter": "Прослушать начало главы",
"MessagePlaylistCreateFromCollection": "Создать плейлист из коллекции",
+ "MessagePleaseWait": "Пожалуйста подождите...",
"MessagePodcastHasNoRSSFeedForMatching": "Подкаст не имеет URL-адреса RSS-канала, который можно использовать для поиска",
+ "MessagePodcastSearchField": "Введите поисковый запрос или URL-адрес RSS-канала",
+ "MessageQuickEmbedInProgress": "Быстрое внедрение в процессе выполнения",
+ "MessageQuickEmbedQueue": "Поставлен в очередь для быстрого внедрения ({0} в очереди)",
+ "MessageQuickMatchAllEpisodes": "Быстрое сопоставление всех эпизодов",
"MessageQuickMatchDescription": "Заполняет пустые детали элемента и обложку первым результатом поиска из «{0}». Не перезаписывает сведения, если не включен параметр сервера 'Предпочитать метаданные поиска'.",
"MessageRemoveChapter": "Удалить главу",
"MessageRemoveEpisodes": "Удалить {0} эпизод(ов)",
@@ -700,10 +827,48 @@
"MessageRestoreBackupConfirm": "Вы уверены, что хотите восстановить резервную копию, созданную",
"MessageRestoreBackupWarning": "Восстановление резервной копии перезапишет всю базу данных, расположенную в /config, и обложки изображений в /metadata/items и /metadata/authors.
Бэкапы не изменяют файлы в папках библиотеки. Если вы включили параметры сервера для хранения обложек и метаданных в папках библиотеки, то они не резервируются и не перезаписываются.
Все клиенты, использующие ваш сервер, будут автоматически обновлены.",
"MessageSearchResultsFor": "Результаты поиска для",
- "MessageSelected": "{0} selected",
+ "MessageSelected": "{0} выбрано",
"MessageServerCouldNotBeReached": "Не удалось связаться с сервером",
"MessageSetChaptersFromTracksDescription": "Установка глав с использованием каждого аудиофайла в качестве главы и заголовка главы в качестве имени аудиофайла",
+ "MessageShareExpirationWillBe": "Срок действия истекает {0}",
+ "MessageShareExpiresIn": "Срок действия истекает через {0}",
+ "MessageShareURLWillBe": "URL-адрес общего доступа будет {0}",
"MessageStartPlaybackAtTime": "Начать воспроизведение для \"{0}\" с {1}?",
+ "MessageTaskAudioFileNotWritable": "Аудиофайл \"{0}\" недоступен для записи",
+ "MessageTaskCanceledByUser": "Задание отменено пользователем",
+ "MessageTaskDownloadingEpisodeDescription": "Загрузка эпизода \"{0}\"",
+ "MessageTaskEmbeddingMetadata": "Внедрение метаданных",
+ "MessageTaskEmbeddingMetadataDescription": "Встраивание метаданных в аудиокнигу \"{0}\"",
+ "MessageTaskEncodingM4b": "Кодировка M4B",
+ "MessageTaskEncodingM4bDescription": "Кодирование аудиокниги \"{0}\" в один файл формата m4b",
+ "MessageTaskFailed": "Неудачный",
+ "MessageTaskFailedToBackupAudioFile": "Не удалось создать резервную копию аудиофайла \"{0}\"",
+ "MessageTaskFailedToCreateCacheDirectory": "Не удалось создать каталог кэша",
+ "MessageTaskFailedToEmbedMetadataInFile": "Не удалось вставить метаданные в файл \"{0}\"",
+ "MessageTaskFailedToMergeAudioFiles": "Не удалось объединить аудиофайлы",
+ "MessageTaskFailedToMoveM4bFile": "Не удалось переместить файл m4b",
+ "MessageTaskFailedToWriteMetadataFile": "Не удалось записать файл метаданных",
+ "MessageTaskMatchingBooksInLibrary": "Сопоставление книг в библиотеке \"{0}\"",
+ "MessageTaskNoFilesToScan": "Нет файлов для сканирования",
+ "MessageTaskOpmlImport": "Импорт OPML",
+ "MessageTaskOpmlImportDescription": "Создание подкастов из {0} RSS-каналов",
+ "MessageTaskOpmlImportFeed": "Канал импорта OPML",
+ "MessageTaskOpmlImportFeedDescription": "Импорт RSS-канала \"{0}\"",
+ "MessageTaskOpmlImportFeedFailed": "Не удалось получить ленту подкаста",
+ "MessageTaskOpmlImportFeedPodcastDescription": "Создание подкаста \"{0}\"",
+ "MessageTaskOpmlImportFeedPodcastExists": "Подкаст уже существует по адресу",
+ "MessageTaskOpmlImportFeedPodcastFailed": "Не удалось создать подкаст",
+ "MessageTaskOpmlImportFinished": "Добавлено {0} подкастов",
+ "MessageTaskOpmlParseFailed": "Не удалось разобрать OPML-файл",
+ "MessageTaskOpmlParseFastFail": "Недопустимый тег файла OPML не найден ИЛИ тег не найден",
+ "MessageTaskOpmlParseNoneFound": "В OPML-файле не найдено ни одного канала",
+ "MessageTaskScanItemsAdded": "{0} добавлено",
+ "MessageTaskScanItemsMissing": "{0} отсутствует",
+ "MessageTaskScanItemsUpdated": "{0} обновлено",
+ "MessageTaskScanNoChangesNeeded": "Никаких изменений не требуется",
+ "MessageTaskScanningFileChanges": "Проверка изменений файлов в \"{0}\"",
+ "MessageTaskScanningLibrary": "Сканирование библиотеки \"{0}\"",
+ "MessageTaskTargetDirectoryNotWritable": "Целевой каталог недоступен для записи",
"MessageThinking": "Думаю...",
"MessageUploaderItemFailed": "Не удалось загрузить",
"MessageUploaderItemSuccess": "Успешно загружено!",
@@ -721,90 +886,188 @@
"NoteUploaderFoldersWithMediaFiles": "Папки с медиафайлами будут обрабатываться как отдельные элементы библиотеки.",
"NoteUploaderOnlyAudioFiles": "Если загружать только аудиофайлы, то каждый аудиофайл будет обрабатываться как отдельная аудиокнига.",
"NoteUploaderUnsupportedFiles": "Неподдерживаемые файлы игнорируются. При выборе или удалении папки другие файлы, не находящиеся в папке элемента, игнорируются.",
+ "NotificationOnBackupCompletedDescription": "Запускается при завершении резервного копирования",
+ "NotificationOnBackupFailedDescription": "Срабатывает при сбое резервного копирования",
+ "NotificationOnEpisodeDownloadedDescription": "Запускается при автоматической загрузке эпизода подкаста",
+ "NotificationOnTestDescription": "Событие для тестирования системы оповещения",
"PlaceholderNewCollection": "Новое имя коллекции",
"PlaceholderNewFolderPath": "Путь к новой папке",
"PlaceholderNewPlaylist": "Новое название плейлиста",
"PlaceholderSearch": "Поиск...",
"PlaceholderSearchEpisode": "Поиск эпизода...",
- "ToastAccountUpdateFailed": "Не удалось обновить учетную запись",
+ "StatsAuthorsAdded": "авторов добавлено",
+ "StatsBooksAdded": "книг добавлено",
+ "StatsBooksAdditional": "Некоторые дополнения включают в себя…",
+ "StatsBooksFinished": "книг завершено",
+ "StatsBooksFinishedThisYear": "Некоторые книги закончены в этом году…",
+ "StatsBooksListenedTo": "книг прослушано",
+ "StatsCollectionGrewTo": "Ваша коллекция книг пополнилась…",
+ "StatsSessions": "сессий",
+ "StatsSpentListening": "потрачено на прослушивание",
+ "StatsTopAuthor": "ТОП АВТОР",
+ "StatsTopAuthors": "ТОП АВТОРОВ",
+ "StatsTopGenre": "ТОП ЖАНР",
+ "StatsTopGenres": "ТОП ЖАНРЫ",
+ "StatsTopMonth": "ЛУЧШИЙ МЕСЯЦ",
+ "StatsTopNarrator": "ТОП ЧТЕЦ",
+ "StatsTopNarrators": "ТОП ЧТЕЦЫ",
+ "StatsTotalDuration": "С общей продолжительностью…",
+ "StatsYearInReview": "ИТОГИ ГОДА",
"ToastAccountUpdateSuccess": "Учетная запись обновлена",
- "ToastAuthorImageRemoveFailed": "Не удалось удалить изображение",
+ "ToastAppriseUrlRequired": "Необходимо ввести URL-адрес Apprise",
+ "ToastAsinRequired": "Требуется ASIN",
"ToastAuthorImageRemoveSuccess": "Изображение автора удалено",
- "ToastAuthorUpdateFailed": "Не удалось обновить автора",
+ "ToastAuthorNotFound": "Автор \"{0}\" не найден",
+ "ToastAuthorRemoveSuccess": "Автор удален",
+ "ToastAuthorSearchNotFound": "Автор не найден",
"ToastAuthorUpdateMerged": "Автор объединен",
"ToastAuthorUpdateSuccess": "Автор обновлен",
"ToastAuthorUpdateSuccessNoImageFound": "Автор обновлен (изображение не найдено)",
+ "ToastBackupAppliedSuccess": "Применена резервная копия",
"ToastBackupCreateFailed": "Не удалось создать бэкап",
"ToastBackupCreateSuccess": "Бэкап создан",
"ToastBackupDeleteFailed": "Не удалось удалить бэкап",
"ToastBackupDeleteSuccess": "Бэкап удален",
+ "ToastBackupInvalidMaxKeep": "Недопустимое количество резервных копий для хранения",
+ "ToastBackupInvalidMaxSize": "Недопустимый максимальный размер резервной копии",
"ToastBackupRestoreFailed": "Не удалось восстановить из бэкапа",
"ToastBackupUploadFailed": "Не удалось загрузить бэкап",
"ToastBackupUploadSuccess": "Бэкап загружен",
+ "ToastBatchDeleteFailed": "Не удалось выполнить пакетное удаление",
+ "ToastBatchDeleteSuccess": "Успешное пакетное удаление",
+ "ToastBatchQuickMatchFailed": "Не удалось выполнить пакетное быстрое сопоставление!",
+ "ToastBatchQuickMatchStarted": "Начато пакетное быстрое сопоставление {0} книг!",
"ToastBatchUpdateFailed": "Сбой пакетного обновления",
"ToastBatchUpdateSuccess": "Успешное пакетное обновление",
"ToastBookmarkCreateFailed": "Не удалось создать закладку",
"ToastBookmarkCreateSuccess": "Добавлена закладка",
- "ToastBookmarkRemoveFailed": "Не удалось удалить закладку",
"ToastBookmarkRemoveSuccess": "Закладка удалена",
- "ToastBookmarkUpdateFailed": "Не удалось обновить закладку",
"ToastBookmarkUpdateSuccess": "Закладка обновлена",
- "ToastCachePurgeFailed": "Failed to purge cache",
- "ToastCachePurgeSuccess": "Cache purged successfully",
+ "ToastCachePurgeFailed": "Не удалось очистить кэш",
+ "ToastCachePurgeSuccess": "Кэш успешно очищен",
"ToastChaptersHaveErrors": "Главы имеют ошибки",
"ToastChaptersMustHaveTitles": "Главы должны содержать названия",
- "ToastCollectionItemsRemoveFailed": "Не удалось удалить элемент(ы) из коллекции",
+ "ToastChaptersRemoved": "Удалены главы",
+ "ToastChaptersUpdated": "Обновленные главы",
+ "ToastCollectionItemsAddFailed": "Не удалось добавить элемент(ы) в коллекцию",
+ "ToastCollectionItemsAddSuccess": "Элемент(ы) добавлены в коллекцию",
"ToastCollectionItemsRemoveSuccess": "Элемент(ы), удалены из коллекции",
- "ToastCollectionRemoveFailed": "Не удалось удалить коллекцию",
"ToastCollectionRemoveSuccess": "Коллекция удалена",
- "ToastCollectionUpdateFailed": "Не удалось обновить коллекцию",
"ToastCollectionUpdateSuccess": "Коллекция обновлена",
- "ToastDeleteFileFailed": "Failed to delete file",
- "ToastDeleteFileSuccess": "File deleted",
- "ToastFailedToLoadData": "Failed to load data",
- "ToastItemCoverUpdateFailed": "Не удалось обновить обложку элемента",
+ "ToastCoverUpdateFailed": "Не удалось обновить обложку",
+ "ToastDeleteFileFailed": "Не удалось удалить файл",
+ "ToastDeleteFileSuccess": "Файл удален",
+ "ToastDeviceAddFailed": "Не удалось добавить устройство",
+ "ToastDeviceNameAlreadyExists": "Устройство для чтения электронных книг с таким именем уже существует",
+ "ToastDeviceTestEmailFailed": "Не удалось отправить тестовое электронное письмо",
+ "ToastDeviceTestEmailSuccess": "Тестовое письмо отправлено",
+ "ToastEmailSettingsUpdateSuccess": "Обновлены настройки электронной почты",
+ "ToastEncodeCancelFailed": "Не удалось отменить кодирование",
+ "ToastEncodeCancelSucces": "Кодирование отменено",
+ "ToastEpisodeDownloadQueueClearFailed": "Не удалось очистить очередь",
+ "ToastEpisodeDownloadQueueClearSuccess": "Очередь загрузки эпизода очищена",
+ "ToastEpisodeUpdateSuccess": "{0 эпизодов обновлено",
+ "ToastErrorCannotShare": "Невозможно предоставить общий доступ на этом устройстве",
+ "ToastFailedToLoadData": "Не удалось загрузить данные",
+ "ToastFailedToMatch": "Не удалось найти совпадения",
+ "ToastFailedToShare": "Не удалось поделиться",
+ "ToastFailedToUpdate": "Не удалось обновить",
+ "ToastInvalidImageUrl": "Неверный URL изображения",
+ "ToastInvalidMaxEpisodesToDownload": "Недопустимое максимальное количество загружаемых эпизодов",
+ "ToastInvalidUrl": "Неверный URL",
"ToastItemCoverUpdateSuccess": "Обложка элемента обновлена",
- "ToastItemDetailsUpdateFailed": "Не удалось обновить сведения об элементе",
+ "ToastItemDeletedFailed": "Не удалось удалить элемент",
+ "ToastItemDeletedSuccess": "Удаленный элемент",
"ToastItemDetailsUpdateSuccess": "Обновлены сведения об элементе",
- "ToastItemDetailsUpdateUnneeded": "Для сведений об элементе не требуется никаких обновлений",
"ToastItemMarkedAsFinishedFailed": "Не удалось пометить как Завершенный",
"ToastItemMarkedAsFinishedSuccess": "Элемент помечен как Завершенный",
"ToastItemMarkedAsNotFinishedFailed": "Не удалось пометить как Незавершенный",
"ToastItemMarkedAsNotFinishedSuccess": "Элемент помечен как Незавершенный",
+ "ToastItemUpdateSuccess": "Элемент обновлен",
"ToastLibraryCreateFailed": "Не удалось создать библиотеку",
"ToastLibraryCreateSuccess": "Библиотека \"{0}\" создана",
"ToastLibraryDeleteFailed": "Не удалось удалить библиотеку",
"ToastLibraryDeleteSuccess": "Библиотека удалена",
"ToastLibraryScanFailedToStart": "Не удалось запустить сканирование",
"ToastLibraryScanStarted": "Запущено сканирование библиотеки",
- "ToastLibraryUpdateFailed": "Не удалось обновить библиотеку",
"ToastLibraryUpdateSuccess": "Библиотека \"{0}\" обновлена",
+ "ToastMatchAllAuthorsFailed": "Не удалось найти совпадения со всеми авторами",
+ "ToastMetadataFilesRemovedError": "Ошибка при удалении файлов metadata.{0}",
+ "ToastMetadataFilesRemovedNoneFound": "В библиотеке не найдено файлов metadata.{0}",
+ "ToastMetadataFilesRemovedNoneRemoved": "Нет удаленных файлов metadata.{0}",
+ "ToastMetadataFilesRemovedSuccess": "{0} metadata.{1} файлов удалено",
+ "ToastMustHaveAtLeastOnePath": "Должен быть хотя бы один путь",
+ "ToastNameEmailRequired": "Имя и адрес электронной почты обязательны",
+ "ToastNameRequired": "Имя обязательно для заполнения",
+ "ToastNewEpisodesFound": "{0} новых эпизодов найдено",
+ "ToastNewUserCreatedFailed": "Не удалось создать учетную запись: \"{0}\"",
+ "ToastNewUserCreatedSuccess": "Новая учетная запись создана",
+ "ToastNewUserLibraryError": "Необходимо выбрать хотя бы одну библиотеку",
+ "ToastNewUserPasswordError": "Должен иметь пароль, только пользователь root может иметь пустой пароль",
+ "ToastNewUserTagError": "Необходимо выбрать хотя бы один тег",
+ "ToastNewUserUsernameError": "Введите имя пользователя",
+ "ToastNoNewEpisodesFound": "Новых эпизодов не найдено",
+ "ToastNoUpdatesNecessary": "Обновления не требуются",
+ "ToastNotificationCreateFailed": "Не удалось создать уведомление",
+ "ToastNotificationDeleteFailed": "Не удалось удалить уведомление",
+ "ToastNotificationFailedMaximum": "Максимальное количество неудачных попыток должно быть >= 0",
+ "ToastNotificationQueueMaximum": "Максимальная очередь уведомлений должна быть >= 0",
+ "ToastNotificationSettingsUpdateSuccess": "Обновлены настройки уведомлений",
+ "ToastNotificationTestTriggerFailed": "Не удалось активировать тестовое уведомление",
+ "ToastNotificationTestTriggerSuccess": "Сработавшее уведомление о тестировании",
+ "ToastNotificationUpdateSuccess": "Уведомление обновлено",
"ToastPlaylistCreateFailed": "Не удалось создать плейлист",
"ToastPlaylistCreateSuccess": "Плейлист создан",
- "ToastPlaylistRemoveFailed": "Не удалось удалить плейлист",
"ToastPlaylistRemoveSuccess": "Плейлист удален",
- "ToastPlaylistUpdateFailed": "Не удалось обновить плейлист",
"ToastPlaylistUpdateSuccess": "Плейлист обновлен",
"ToastPodcastCreateFailed": "Не удалось создать подкаст",
"ToastPodcastCreateSuccess": "Подкаст успешно создан",
- "ToastRemoveItemFromCollectionFailed": "Не удалось удалить элемент из коллекции",
- "ToastRemoveItemFromCollectionSuccess": "Элемент удален из коллекции",
+ "ToastPodcastGetFeedFailed": "Не удалось получить ленту подкастов",
+ "ToastPodcastNoEpisodesInFeed": "В RSS-ленте эпизодов не найдено",
+ "ToastPodcastNoRssFeed": "В подкасте нет RSS-канала",
+ "ToastProgressIsNotBeingSynced": "Прогресс не синхронизируется, перезапустите воспроизведение",
+ "ToastProviderCreatedFailed": "Не удалось добавить провайдера",
+ "ToastProviderCreatedSuccess": "Добавлен новый провайдер",
+ "ToastProviderNameAndUrlRequired": "Имя и URL обязательные",
+ "ToastProviderRemoveSuccess": "Провайдер удален",
"ToastRSSFeedCloseFailed": "Не удалось закрыть RSS-канал",
"ToastRSSFeedCloseSuccess": "RSS-канал закрыт",
+ "ToastRemoveFailed": "Не удалось удалить",
+ "ToastRemoveItemFromCollectionFailed": "Не удалось удалить элемент из коллекции",
+ "ToastRemoveItemFromCollectionSuccess": "Элемент удален из коллекции",
+ "ToastRemoveItemsWithIssuesFailed": "Не удалось удалить элементы библиотеки с проблемами",
+ "ToastRemoveItemsWithIssuesSuccess": "Удалены элементы библиотеки с проблемами",
+ "ToastRenameFailed": "Не удалось переименовать",
+ "ToastRescanFailed": "Ошибка повторного сканирования для {0}",
+ "ToastRescanRemoved": "Повторное сканирование завершено, элемент был удален",
+ "ToastRescanUpToDate": "Повторное сканирование завершено, элемент был актуализирован",
+ "ToastRescanUpdated": "Повторное сканирование завершено, элемент был обновлен",
+ "ToastScanFailed": "Не удалось просканировать элемент библиотеки",
+ "ToastSelectAtLeastOneUser": "Выберите хотя бы одного пользователя",
"ToastSendEbookToDeviceFailed": "Не удалось отправить e-книгу на устройство",
"ToastSendEbookToDeviceSuccess": "E-книга отправлена на устройство \"{0}\"",
"ToastSeriesUpdateFailed": "Не удалось обновить серию",
"ToastSeriesUpdateSuccess": "Успешное обновление серии",
- "ToastServerSettingsUpdateFailed": "Failed to update server settings",
- "ToastServerSettingsUpdateSuccess": "Server settings updated",
+ "ToastServerSettingsUpdateSuccess": "Обновлены настройки сервера",
+ "ToastSessionCloseFailed": "Не удалось закрыть сеанс",
"ToastSessionDeleteFailed": "Не удалось удалить сеанс",
"ToastSessionDeleteSuccess": "Сеанс удален",
+ "ToastSleepTimerDone": "Выполнен таймер сна... Хр-р-р-р",
+ "ToastSlugMustChange": "Slug содержит недопустимые символы",
+ "ToastSlugRequired": "Требуется Slug",
"ToastSocketConnected": "Сокет подключен",
"ToastSocketDisconnected": "Сокет отключен",
"ToastSocketFailedToConnect": "Не удалось подключить сокет",
- "ToastSortingPrefixesEmptyError": "Must have at least 1 sorting prefix",
- "ToastSortingPrefixesUpdateFailed": "Failed to update sorting prefixes",
- "ToastSortingPrefixesUpdateSuccess": "Sorting prefixes updated ({0} items)",
+ "ToastSortingPrefixesEmptyError": "Должен быть хотя бы 1 префикс сортировки",
+ "ToastSortingPrefixesUpdateSuccess": "Обновлены префиксы сортировки ({0} элементов)",
+ "ToastTitleRequired": "Название обязательно",
+ "ToastUnknownError": "Неизвестная ошибка",
+ "ToastUnlinkOpenIdFailed": "Не удалось отвязать пользователя от OpenID",
+ "ToastUnlinkOpenIdSuccess": "Пользователь отвязан от OpenID",
"ToastUserDeleteFailed": "Не удалось удалить пользователя",
- "ToastUserDeleteSuccess": "Пользователь удален"
-}
\ No newline at end of file
+ "ToastUserDeleteSuccess": "Пользователь удален",
+ "ToastUserPasswordChangeSuccess": "Пароль успешно изменен",
+ "ToastUserPasswordMismatch": "Пароли не совпадают",
+ "ToastUserPasswordMustChange": "Новый пароль не может совпадать со старым паролем",
+ "ToastUserRootRequireName": "Необходимо ввести имя пользователя root"
+}
diff --git a/client/strings/sl.json b/client/strings/sl.json
new file mode 100644
index 000000000..b4e4383fd
--- /dev/null
+++ b/client/strings/sl.json
@@ -0,0 +1,1073 @@
+{
+ "ButtonAdd": "Dodaj",
+ "ButtonAddChapters": "Dodaj poglavja",
+ "ButtonAddDevice": "Dodaj napravo",
+ "ButtonAddLibrary": "Dodaj knjižnico",
+ "ButtonAddPodcasts": "Dodaj podcast",
+ "ButtonAddUser": "Dodaj uporabnika",
+ "ButtonAddYourFirstLibrary": "Dodajte svojo prvo knjižnico",
+ "ButtonApply": "Uveljavi",
+ "ButtonApplyChapters": "Uveljavi poglavja",
+ "ButtonAuthors": "Avtorji",
+ "ButtonBack": "Nazaj",
+ "ButtonBrowseForFolder": "Prebrskaj pot do mape",
+ "ButtonCancel": "Prekliči",
+ "ButtonCancelEncode": "Prekliči prekodiranje",
+ "ButtonChangeRootPassword": "Zamenjaj korensko geslo",
+ "ButtonCheckAndDownloadNewEpisodes": "Preveri in prenesi nove epizode",
+ "ButtonChooseAFolder": "Izberite mapo",
+ "ButtonChooseFiles": "Izberite datoteke",
+ "ButtonClearFilter": "Počisti filter",
+ "ButtonCloseFeed": "Zapri vir",
+ "ButtonCloseSession": "Zapri odprto sejo",
+ "ButtonCollections": "Zbirke",
+ "ButtonConfigureScanner": "Nastavi pregledovalnik",
+ "ButtonCreate": "Ustvari",
+ "ButtonCreateBackup": "Ustvari varnostno kopijo",
+ "ButtonDelete": "Izbriši",
+ "ButtonDownloadQueue": "Čakalna vrsta",
+ "ButtonEdit": "Uredi",
+ "ButtonEditChapters": "Uredi poglavja",
+ "ButtonEditPodcast": "Uredi podcast",
+ "ButtonEnable": "Omogoči",
+ "ButtonFireAndFail": "Zaženi in je bilo neuspešno",
+ "ButtonFireOnTest": "Zaženi samo na dogodku onTest",
+ "ButtonForceReScan": "Prisilno ponovno pregledovanje",
+ "ButtonFullPath": "Polna pot",
+ "ButtonHide": "Skrij",
+ "ButtonHome": "Domov",
+ "ButtonIssues": "Težave",
+ "ButtonJumpBackward": "Skoči nazaj",
+ "ButtonJumpForward": "Skoči naprej",
+ "ButtonLatest": "Najnovejše",
+ "ButtonLibrary": "Knjižnica",
+ "ButtonLogout": "Odjava",
+ "ButtonLookup": "Iskanje",
+ "ButtonManageTracks": "Upravljaj s posnetki",
+ "ButtonMapChapterTitles": "Poveži naslove poglavij",
+ "ButtonMatchAllAuthors": "Ujemanje vseh avtorjev",
+ "ButtonMatchBooks": "Ujemanje knjig",
+ "ButtonNevermind": "Ni važno",
+ "ButtonNext": "Naslednje",
+ "ButtonNextChapter": "Naslednje poglavje",
+ "ButtonNextItemInQueue": "Naslednji element v čakalni vrsti",
+ "ButtonOk": "V redu",
+ "ButtonOpenFeed": "Odpri vir",
+ "ButtonOpenManager": "Odpri upravljanje",
+ "ButtonPause": "Premor",
+ "ButtonPlay": "Predvajaj",
+ "ButtonPlayAll": "Predvajaj vse",
+ "ButtonPlaying": "Predvajam",
+ "ButtonPlaylists": "Seznami predvajanj",
+ "ButtonPrevious": "Prejšnje",
+ "ButtonPreviousChapter": "Prejšnje poglavje",
+ "ButtonProbeAudioFile": "Analiziraj zvočno datoteko",
+ "ButtonPurgeAllCache": "Počisti ves predpomnilnik",
+ "ButtonPurgeItemsCache": "Počisti predpomnilnik elementov",
+ "ButtonQueueAddItem": "Dodaj v čakalno vrsto",
+ "ButtonQueueRemoveItem": "Odstrani iz čakalne vrste",
+ "ButtonQuickEmbed": "Hitra vdelava",
+ "ButtonQuickEmbedMetadata": "Hitra vdelava metapodatkov",
+ "ButtonQuickMatch": "Hitro ujemanje",
+ "ButtonReScan": "Ponovno pregledovanje",
+ "ButtonRead": "Preberi",
+ "ButtonReadLess": "Preberi manj",
+ "ButtonReadMore": "Preberi več",
+ "ButtonRefresh": "Osveži",
+ "ButtonRemove": "Odstrani",
+ "ButtonRemoveAll": "Odstrani vse",
+ "ButtonRemoveAllLibraryItems": "Odstrani vse elemente v knjižnici",
+ "ButtonRemoveFromContinueListening": "Odstrani iz nadaljuj poslušanje",
+ "ButtonRemoveFromContinueReading": "Odstrani iz nadaljuj branje",
+ "ButtonRemoveSeriesFromContinueSeries": "Odstrani serijo iz nadaljuj serijo",
+ "ButtonReset": "Ponastavi",
+ "ButtonResetToDefault": "Ponastavi na privzeto",
+ "ButtonRestore": "Obnovi",
+ "ButtonSave": "Shrani",
+ "ButtonSaveAndClose": "Shrani iz zapri",
+ "ButtonSaveTracklist": "Shrani seznam skladb",
+ "ButtonScan": "Pregledovanje",
+ "ButtonScanLibrary": "Preglej knjižnico",
+ "ButtonSearch": "Poišči",
+ "ButtonSelectFolderPath": "Izberite pot do mape",
+ "ButtonSeries": "Serije",
+ "ButtonSetChaptersFromTracks": "Nastavi poglavja za posnetke",
+ "ButtonShare": "Deli",
+ "ButtonShiftTimes": "Zamakni čase",
+ "ButtonShow": "Prikaži",
+ "ButtonStartM4BEncode": "Zaženi M4B prekodiranje",
+ "ButtonStartMetadataEmbed": "Začni vdelavo metapodatkov",
+ "ButtonStats": "Statistika",
+ "ButtonSubmit": "Potrdi",
+ "ButtonTest": "Test",
+ "ButtonUnlinkOpenId": "Prekini povezavo OpenID",
+ "ButtonUpload": "Naloži",
+ "ButtonUploadBackup": "Naloži varnostno kopijo",
+ "ButtonUploadCover": "Naloži naslovnico",
+ "ButtonUploadOPMLFile": "Naloži OPML datoteko",
+ "ButtonUserDelete": "Izbriši uporabnika {0}",
+ "ButtonUserEdit": "Uredi uporabnika {0}",
+ "ButtonViewAll": "Poglej vse",
+ "ButtonYes": "Da",
+ "ErrorUploadFetchMetadataAPI": "Napaka pri pridobivanju metapodatkov",
+ "ErrorUploadFetchMetadataNoResults": "Ni bilo mogoče pridobiti metapodatkov - poskusi posodobi naslov in/ali avtorja",
+ "ErrorUploadLacksTitle": "Imeti mora naslov",
+ "HeaderAccount": "Račun",
+ "HeaderAddCustomMetadataProvider": "Dodaj ponudnika metapodatkov po meri",
+ "HeaderAdvanced": "Napredno",
+ "HeaderAppriseNotificationSettings": "Nastavitve obvestil Apprise",
+ "HeaderAudioTracks": "Zvočni posnetki",
+ "HeaderAudiobookTools": "Orodja za upravljanje datotek zvočnih knjig",
+ "HeaderAuthentication": "Avtentikacija",
+ "HeaderBackups": "Varnostne kopije",
+ "HeaderChangePassword": "Zamenjaj geslo",
+ "HeaderChapters": "Poglavja",
+ "HeaderChooseAFolder": "Izberite mapo",
+ "HeaderCollection": "Zbirka",
+ "HeaderCollectionItems": "Elementi zbirke",
+ "HeaderCover": "Naslovnica",
+ "HeaderCurrentDownloads": "Trenutni prenosi",
+ "HeaderCustomMessageOnLogin": "Sporočilo po meri ob prijavi",
+ "HeaderCustomMetadataProviders": "Ponudniki metapodatkov po meri",
+ "HeaderDetails": "Podrobnosti",
+ "HeaderDownloadQueue": "Čakalna vrsta prenosa",
+ "HeaderEbookFiles": "Datoteke e-knjig",
+ "HeaderEmail": "E-pošta",
+ "HeaderEmailSettings": "Nastavitve e-pošte",
+ "HeaderEpisodes": "Epizode",
+ "HeaderEreaderDevices": "E-bralniki",
+ "HeaderEreaderSettings": "Nastavitve ebralnika",
+ "HeaderFiles": "Datoteke",
+ "HeaderFindChapters": "Najdi poglavja",
+ "HeaderIgnoredFiles": "Prezrte datoteke",
+ "HeaderItemFiles": "Datoteke elementa",
+ "HeaderItemMetadataUtils": "Pripomočki za metapodatke elementa",
+ "HeaderLastListeningSession": "Zadnja seja poslušanja",
+ "HeaderLatestEpisodes": "Zadnje epizode",
+ "HeaderLibraries": "Knjižnice",
+ "HeaderLibraryFiles": "Datoteke knjižnice",
+ "HeaderLibraryStats": "Statistika knjižnice",
+ "HeaderListeningSessions": "Sej poslušanja",
+ "HeaderListeningStats": "Statistika poslušanja",
+ "HeaderLogin": "Prijava",
+ "HeaderLogs": "Dnevniki",
+ "HeaderManageGenres": "Upravljajne žanrov",
+ "HeaderManageTags": "Upravljanje oznak",
+ "HeaderMapDetails": "Podrobnosti povezave",
+ "HeaderMatch": "Ujemanje",
+ "HeaderMetadataOrderOfPrecedence": "Vrstni red metapodatkov",
+ "HeaderMetadataToEmbed": "Metapodatki za vdelavo",
+ "HeaderNewAccount": "Nov račun",
+ "HeaderNewLibrary": "Nova knjižnica",
+ "HeaderNotificationCreate": "Ustvari obvestilo",
+ "HeaderNotificationUpdate": "Posodobi obvestilo",
+ "HeaderNotifications": "Obvestila",
+ "HeaderOpenIDConnectAuthentication": "Prijava z OpenID Connect",
+ "HeaderOpenListeningSessions": "Odprte seje poslušanja",
+ "HeaderOpenRSSFeed": "Odpri vir RSS",
+ "HeaderOtherFiles": "Ostale datoteke",
+ "HeaderPasswordAuthentication": "Preverjanje pristnosti z geslom",
+ "HeaderPermissions": "Dovoljenja",
+ "HeaderPlayerQueue": "Čakalna vrsta predvajalnika",
+ "HeaderPlayerSettings": "Nastavitve predvajalnika",
+ "HeaderPlaylist": "Seznam predvajanja",
+ "HeaderPlaylistItems": "Elementi seznama predvajanja",
+ "HeaderPodcastsToAdd": "Podcasti za dodajanje",
+ "HeaderPreviewCover": "Naslovnica za predogled",
+ "HeaderRSSFeedGeneral": "RSS podrobnosti",
+ "HeaderRSSFeedIsOpen": "Vir RSS je odprt",
+ "HeaderRSSFeeds": "RSS viri",
+ "HeaderRemoveEpisode": "Odstrani epizodo",
+ "HeaderRemoveEpisodes": "Odstrani {0} epizod",
+ "HeaderSavedMediaProgress": "Shranjen napredek predstavnosti",
+ "HeaderSchedule": "Načrtovanje",
+ "HeaderScheduleEpisodeDownloads": "Načrtovanje samodejnega prenosa epizod",
+ "HeaderScheduleLibraryScans": "Načrtuj samodejno pregledovanje knjižnice",
+ "HeaderSession": "Seja",
+ "HeaderSetBackupSchedule": "Nastavite urnik varnostnega kopiranja",
+ "HeaderSettings": "Nastavitve",
+ "HeaderSettingsDisplay": "Zaslon",
+ "HeaderSettingsExperimental": "Eksperimentalne funkcije",
+ "HeaderSettingsGeneral": "Splošno",
+ "HeaderSettingsScanner": "Pregledovalnik",
+ "HeaderSleepTimer": "Časovnik za izklop",
+ "HeaderStatsLargestItems": "Največji elementi",
+ "HeaderStatsLongestItems": "Najdaljši elementi (ure)",
+ "HeaderStatsMinutesListeningChart": "Minut poslušanja (zadnjih 7 dni)",
+ "HeaderStatsRecentSessions": "Nedavne seje",
+ "HeaderStatsTop10Authors": "Najboljših 10 avtorjev",
+ "HeaderStatsTop5Genres": "Najboljših 5 žanrov",
+ "HeaderTableOfContents": "Kazalo",
+ "HeaderTools": "Orodja",
+ "HeaderUpdateAccount": "Posodobi račun",
+ "HeaderUpdateAuthor": "Posodobi avtorja",
+ "HeaderUpdateDetails": "Posodobi podrobnosti",
+ "HeaderUpdateLibrary": "Posodobi knjižnico",
+ "HeaderUsers": "Uporabniki",
+ "HeaderYearReview": "Leto {0} v pregledu",
+ "HeaderYourStats": "Tvoja statistika",
+ "LabelAbridged": "Skrajšano",
+ "LabelAbridgedChecked": "Skrajšano (omogočeno)",
+ "LabelAbridgedUnchecked": "Neskrajšano (onemogočeno)",
+ "LabelAccessibleBy": "Dostopno iz",
+ "LabelAccountType": "Vrsta računa",
+ "LabelAccountTypeAdmin": "Administrator",
+ "LabelAccountTypeGuest": "Gost",
+ "LabelAccountTypeUser": "Uporabnik",
+ "LabelActivity": "Aktivnost",
+ "LabelAddToCollection": "Dodaj v zbirko",
+ "LabelAddToCollectionBatch": "Dodaj {0} knjig v zbirko",
+ "LabelAddToPlaylist": "Dodaj na seznam predvajanja",
+ "LabelAddToPlaylistBatch": "Dodaj {0} elementov v seznam predvajanja",
+ "LabelAddedAt": "Dodano ob",
+ "LabelAddedDate": "Dodano {0}",
+ "LabelAdminUsersOnly": "Samo administratorji",
+ "LabelAll": "Vse",
+ "LabelAllUsers": "Vsi uporabniki",
+ "LabelAllUsersExcludingGuests": "Vsi uporabniki razen gosti",
+ "LabelAllUsersIncludingGuests": "Vsi uporabniki vključno z gosti",
+ "LabelAlreadyInYourLibrary": "Že v tvoji knjižnici",
+ "LabelApiToken": "API žeton",
+ "LabelAppend": "Priloži",
+ "LabelAudioBitrate": "Avdio bitna hitrost (npr. 128k)",
+ "LabelAudioChannels": "Avdio kanali (1 ali 2)",
+ "LabelAudioCodec": "Avdio kodek",
+ "LabelAuthor": "Avtor",
+ "LabelAuthorFirstLast": "Avtor (ime priimek)",
+ "LabelAuthorLastFirst": "Avtor (priimek, ime)",
+ "LabelAuthors": "Avtorji",
+ "LabelAutoDownloadEpisodes": "Samodejni prenos epizod",
+ "LabelAutoFetchMetadata": "Samodejno pridobivanje metapodatkov",
+ "LabelAutoFetchMetadataHelp": "Pridobi metapodatke za naslov, avtorja in serijo za poenostavitev nalaganja. Po nalaganju bo morda treba ujemanje dodatnih metapodatkov.",
+ "LabelAutoLaunch": "Samodejni zagon",
+ "LabelAutoLaunchDescription": "Samodejna preusmeritev na ponudnika avtentikacije ob navigaciji na prijavno stran (ročna preglasitev poti /login?autoLaunch=0)",
+ "LabelAutoRegister": "Samodejna registracija",
+ "LabelAutoRegisterDescription": "Po prijavi samodejno ustvari nove uporabnike",
+ "LabelBackToUser": "Nazaj na uporabnika",
+ "LabelBackupAudioFiles": "Varnostno kopiranje zvočnih datotek",
+ "LabelBackupLocation": "Lokacija varnostnih kopij",
+ "LabelBackupsEnableAutomaticBackups": "Omogoči samodejno varnostno kopiranje",
+ "LabelBackupsEnableAutomaticBackupsHelp": "Varnostne kopije shranjene v /metadata/backups",
+ "LabelBackupsMaxBackupSize": "Največja velikost varnostne kopije (v GB) (0 za neomejeno)",
+ "LabelBackupsMaxBackupSizeHelp": "Kot zaščita pred napačno konfiguracijo, varnostne kopije ne bodo uspele, če presežejo konfigurirano velikost.",
+ "LabelBackupsNumberToKeep": "Število varnostnih kopij, ki jih je treba hraniti",
+ "LabelBackupsNumberToKeepHelp": "Naenkrat bo odstranjena samo ena varnostna kopija, če že imate več varnostnih kopij, jih odstranite ročno.",
+ "LabelBitrate": "Bitna hitrost",
+ "LabelBonus": "Bonus",
+ "LabelBooks": "knjig",
+ "LabelButtonText": "Besedilo gumba",
+ "LabelByAuthor": "od {0}",
+ "LabelChangePassword": "Spremeni geslo",
+ "LabelChannels": "Kanali",
+ "LabelChapterCount": "{0} poglavij",
+ "LabelChapterTitle": "Naslov poglavja",
+ "LabelChapters": "Poglavja",
+ "LabelChaptersFound": "najdenih poglavij",
+ "LabelClickForMoreInfo": "Klikni za več informacij",
+ "LabelClickToUseCurrentValue": "Klikni za uporabo trenutne vrednosti",
+ "LabelClosePlayer": "Zapri predvajalnik",
+ "LabelCodec": "Kodek",
+ "LabelCollapseSeries": "Strni serije",
+ "LabelCollapseSubSeries": "Strni podserije",
+ "LabelCollection": "Zbirka",
+ "LabelCollections": "Zbirke",
+ "LabelComplete": "Končano",
+ "LabelConfirmPassword": "Potrdi geslo",
+ "LabelContinueListening": "Nadaljuj poslušanje",
+ "LabelContinueReading": "Nadaljuj branje",
+ "LabelContinueSeries": "Nadaljuj s serijo",
+ "LabelCover": "Naslovnica",
+ "LabelCoverImageURL": "URL naslovne slike",
+ "LabelCreatedAt": "Ustvarjeno ob",
+ "LabelCronExpression": "Cron izraz",
+ "LabelCurrent": "Trenutno",
+ "LabelCurrently": "Trenutno:",
+ "LabelCustomCronExpression": "Cron izraz po meri:",
+ "LabelDatetime": "Datum in ura",
+ "LabelDays": "Dnevi",
+ "LabelDeleteFromFileSystemCheckbox": "Izbriši iz datotečnega sistema (počisti polje, če želiš odstraniti samo iz zbirke podatkov)",
+ "LabelDescription": "Opis",
+ "LabelDeselectAll": "Odznači vse",
+ "LabelDevice": "Naprava",
+ "LabelDeviceInfo": "Podatki o napravi",
+ "LabelDeviceIsAvailableTo": "Naprava je na voljo za...",
+ "LabelDirectory": "Imenik",
+ "LabelDiscFromFilename": "Disk iz imena datoteke",
+ "LabelDiscFromMetadata": "Disk iz metapodatkov",
+ "LabelDiscover": "Odkrij",
+ "LabelDownload": "Prenos",
+ "LabelDownloadNEpisodes": "Prenesi {0} epizod",
+ "LabelDuration": "Trajanje",
+ "LabelDurationComparisonExactMatch": "(natančno ujemanje)",
+ "LabelDurationComparisonLonger": "({0} dlje)",
+ "LabelDurationComparisonShorter": "({0} krajše)",
+ "LabelDurationFound": "Najdeno trajanje:",
+ "LabelEbook": "E-knjiga",
+ "LabelEbooks": "E-knjige",
+ "LabelEdit": "Uredi",
+ "LabelEmail": "E-pošta",
+ "LabelEmailSettingsFromAddress": "Iz naslova",
+ "LabelEmailSettingsRejectUnauthorized": "Zavrni nepooblaščena potrdila",
+ "LabelEmailSettingsRejectUnauthorizedHelp": "Če onemogočite preverjanje veljavnosti potrdila SSL, lahko izpostavite svojo povezavo varnostnim tveganjem, kot so napadi človek v sredini. To možnost onemogočite le, če razumete posledice in zaupate poštnemu strežniku, s katerim se povezujete.",
+ "LabelEmailSettingsSecure": "Varno",
+ "LabelEmailSettingsSecureHelp": "Če je omogočeno, bo povezava pri povezovanju s strežnikom uporabljala TLS. Če je onemogočeno, se TLS uporablja, če strežnik podpira razširitev STARTTLS. V večini primerov nastavite to vrednost na omogočeno, če se povezujete z vrati 465. Za vrata 587 ali 25 naj ostane onemogočeno. (iz nodemailer.com/smtp/#authentication)",
+ "LabelEmailSettingsTestAddress": "Testiraj naslov",
+ "LabelEmbeddedCover": "Vdelana naslovnica",
+ "LabelEnable": "Omogoči",
+ "LabelEncodingBackupLocation": "Varnostna kopija vaših izvirnih zvočnih datotek bo shranjena v:",
+ "LabelEncodingChaptersNotEmbedded": "Poglavja niso vdelana v zvočne knjige z večimi sledmi.",
+ "LabelEncodingClearItemCache": "Občasno počistite predpomnilnik elementov.",
+ "LabelEncodingFinishedM4B": "Končana M4B datoteka bo shranjena v vaši mapi z zvočnimi knjigami:",
+ "LabelEncodingInfoEmbedded": "Metapodatki bodo vdelani v zvočne posnetke znotraj vaše mape zvočne knjige.",
+ "LabelEncodingStartedNavigation": "Ko se opravilo začne, lahko zapustite to stran.",
+ "LabelEncodingTimeWarning": "Enkodiranje lahko traja tudi do 30 minut.",
+ "LabelEncodingWarningAdvancedSettings": "Opozorilo: Ne posodabljajte teh nastavitev, razen če poznate možnosti ekodiranja s programom ffmpeg.",
+ "LabelEncodingWatcherDisabled": "Če ste spremljanje datotečnega sistema onemogočili, boste morali pozneje ponovno pregledati to zvočno knjigo.",
+ "LabelEnd": "Konec",
+ "LabelEndOfChapter": "Konec poglavja",
+ "LabelEpisode": "Epizoda",
+ "LabelEpisodeNotLinkedToRssFeed": "Epizoda ni povezana z virom RSS",
+ "LabelEpisodeNumber": "{0}. epizoda",
+ "LabelEpisodeTitle": "Naslov epizode",
+ "LabelEpisodeType": "Tip epizode",
+ "LabelEpisodeUrlFromRssFeed": "URL epizode iz vira RSS",
+ "LabelEpisodes": "Epizode",
+ "LabelEpisodic": "Epizodično",
+ "LabelExample": "Primer",
+ "LabelExpandSeries": "Razširi serije",
+ "LabelExpandSubSeries": "Razširi podserije",
+ "LabelExplicit": "Eksplicitno",
+ "LabelExplicitChecked": "Eksplicitno (omogočeno)",
+ "LabelExplicitUnchecked": "Ne eksplicitno (onemogočeno)",
+ "LabelExportOPML": "Izvozi OPML",
+ "LabelFeedURL": "URL vir",
+ "LabelFetchingMetadata": "Pridobivam metapodatke",
+ "LabelFile": "Datoteka",
+ "LabelFileBirthtime": "Čas ustvarjanja datoteke",
+ "LabelFileBornDate": "Ustvarjena {0}",
+ "LabelFileModified": "Datoteke spremenjena",
+ "LabelFileModifiedDate": "Spremenjena {0}",
+ "LabelFilename": "Ime datoteke",
+ "LabelFilterByUser": "Filtriraj po uporabniku",
+ "LabelFindEpisodes": "Poišči epizode",
+ "LabelFinished": "Zaključeno",
+ "LabelFolder": "Mapa",
+ "LabelFolders": "Mape",
+ "LabelFontBold": "Krepko",
+ "LabelFontBoldness": "Krepkost pisave",
+ "LabelFontFamily": "Družina pisave",
+ "LabelFontItalic": "Ležeče",
+ "LabelFontScale": "Merilo pisave",
+ "LabelFontStrikethrough": "Prečrtano",
+ "LabelFormat": "Oblika",
+ "LabelFull": "Polno",
+ "LabelGenre": "Žanr",
+ "LabelGenres": "Žanri",
+ "LabelHardDeleteFile": "Trdo brisanje datoteke",
+ "LabelHasEbook": "Ima e-knjigo",
+ "LabelHasSupplementaryEbook": "Ima dodatno e-knjigo",
+ "LabelHideSubtitles": "Skrij podnapise",
+ "LabelHighestPriority": "Najvišja prioriteta",
+ "LabelHost": "Gostitelj",
+ "LabelHour": "Ura",
+ "LabelHours": "Ure",
+ "LabelIcon": "Ikona",
+ "LabelImageURLFromTheWeb": "URL slike iz spleta",
+ "LabelInProgress": "V teku",
+ "LabelIncludeInTracklist": "Vključi v seznam skladb",
+ "LabelIncomplete": "Nedokončano",
+ "LabelInterval": "Interval",
+ "LabelIntervalCustomDailyWeekly": "Dnevno/tedensko po meri",
+ "LabelIntervalEvery12Hours": "Vsakih 12 ur",
+ "LabelIntervalEvery15Minutes": "Vsakih 15 minut",
+ "LabelIntervalEvery2Hours": "Vsake 2 uri",
+ "LabelIntervalEvery30Minutes": "Vsakih 30 minut",
+ "LabelIntervalEvery6Hours": "Vsakih 6 ur",
+ "LabelIntervalEveryDay": "Vsak dan",
+ "LabelIntervalEveryHour": "Vsako uro",
+ "LabelInvert": "Obrni izbor",
+ "LabelItem": "Element",
+ "LabelJumpBackwardAmount": "Količina skoka nazaj",
+ "LabelJumpForwardAmount": "Količina skoka naprej",
+ "LabelLanguage": "Jezik",
+ "LabelLanguageDefaultServer": "Privzeti jezik strežnika",
+ "LabelLanguages": "Jeziki",
+ "LabelLastBookAdded": "Zadnja dodana knjiga",
+ "LabelLastBookUpdated": "Zadnja posodobljena knjiga",
+ "LabelLastSeen": "Nazadnje viden",
+ "LabelLastTime": "Nazadnje",
+ "LabelLastUpdate": "Zadnja posodobitev",
+ "LabelLayout": "Postavitev",
+ "LabelLayoutSinglePage": "Ena stran",
+ "LabelLayoutSplitPage": "Razdeli stran",
+ "LabelLess": "Manj",
+ "LabelLibrariesAccessibleToUser": "Knjižnice, dostopne uporabniku",
+ "LabelLibrary": "Knjižnica",
+ "LabelLibraryFilterSublistEmpty": "Ne {0}",
+ "LabelLibraryItem": "Element knjižnice",
+ "LabelLibraryName": "Ime knjižnice",
+ "LabelLimit": "Omejitev",
+ "LabelLineSpacing": "Razmik med vrsticami",
+ "LabelListenAgain": "Poslušaj znova",
+ "LabelLogLevelDebug": "Odpravljanje napak",
+ "LabelLogLevelInfo": "Info",
+ "LabelLogLevelWarn": "Opozoritve",
+ "LabelLookForNewEpisodesAfterDate": "Poiščite nove epizode po tem datumu",
+ "LabelLowestPriority": "Najnižja prioriteta",
+ "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",
+ "LabelMaxEpisodesToDownload": "Največje število epizod za prenos. Uporabite 0 za neomejeno.",
+ "LabelMaxEpisodesToDownloadPerCheck": "Največje število novih epizod za prenos ob preverjanju",
+ "LabelMaxEpisodesToKeep": "Največje število epizod, ki jih lahko obdržite",
+ "LabelMaxEpisodesToKeepHelp": "Vrednost 0 ne omejuje navišjega števila. Ko se nova epizoda samodejno prenese, se bo izbrisala najstarejša epizoda, če imate več kot X epizod. S tem boste izbrisali samo 1 epizodo na nov prenos.",
+ "LabelMediaPlayer": "Medijski predvajalnik",
+ "LabelMediaType": "Vrsta medija",
+ "LabelMetaTag": "Meta oznaka",
+ "LabelMetaTags": "Meta oznake",
+ "LabelMetadataOrderOfPrecedenceDescription": "Viri metapodatkov višje prioritete bodo preglasili vire metapodatkov nižje prioritete",
+ "LabelMetadataProvider": "Ponudnik metapodatkov",
+ "LabelMinute": "Minuta",
+ "LabelMinutes": "Minute",
+ "LabelMissing": "Manjkajoče",
+ "LabelMissingEbook": "Nima nobene e-knjige",
+ "LabelMissingSupplementaryEbook": "Nima nobene dodatne e-knjige",
+ "LabelMobileRedirectURIs": "Dovoljeni mobilni preusmeritveni URI-ji",
+ "LabelMobileRedirectURIsDescription": "To je seznam dovoljenih veljavnih preusmeritvenih URI-jev za mobilne aplikacije. Privzeti je audiobookshelf://oauth, ki ga lahko odstranite ali dopolnite z dodatnimi URI-ji za integracijo aplikacij tretjih oseb. Uporaba zvezdice (*) kot edinega vnosa dovoljuje kateri koli URI.",
+ "LabelMore": "Več",
+ "LabelMoreInfo": "Več informacij",
+ "LabelName": "Naziv",
+ "LabelNarrator": "Bralec",
+ "LabelNarrators": "Bralci",
+ "LabelNew": "Novo",
+ "LabelNewPassword": "Novo geslo",
+ "LabelNewestAuthors": "Najnovejši avtorji",
+ "LabelNewestEpisodes": "Najnovejše epizode",
+ "LabelNextBackupDate": "Naslednji datum varnostnega kopiranja",
+ "LabelNextScheduledRun": "Naslednji načrtovani zagon",
+ "LabelNoCustomMetadataProviders": "Ni ponudnikov metapodatkov po meri",
+ "LabelNoEpisodesSelected": "Izbrana ni nobena epizoda",
+ "LabelNotFinished": "Ni dokončano",
+ "LabelNotStarted": "Ni zagnano",
+ "LabelNotes": "Opombe",
+ "LabelNotificationAppriseURL": "Apprise URL(ji)",
+ "LabelNotificationAvailableVariables": "Razpoložljive spremenljivke",
+ "LabelNotificationBodyTemplate": "Predloga vsebime",
+ "LabelNotificationEvent": "Dogodek obvestila",
+ "LabelNotificationTitleTemplate": "Predloga naslova",
+ "LabelNotificationsMaxFailedAttempts": "Najvišje število neuspelih poskusov",
+ "LabelNotificationsMaxFailedAttemptsHelp": "Obvestila so onemogočena, ko se tolikokrat neuspelo pošljejo",
+ "LabelNotificationsMaxQueueSize": "Največja velikost čakalne vrste za dogodke obvestil",
+ "LabelNotificationsMaxQueueSizeHelp": "Dogodki so omejeni na sprožitev 1 na sekundo. Dogodki bodo prezrti, če je čakalna vrsta najvišja. To preprečuje neželeno pošiljanje obvestil.",
+ "LabelNumberOfBooks": "Število knjig",
+ "LabelNumberOfEpisodes": "število epizod",
+ "LabelOpenIDAdvancedPermsClaimDescription": "Ime zahtevka OpenID, ki vsebuje napredna dovoljenja za uporabniška dejanja v aplikaciji, ki bodo veljala za neskrbniške vloge (če je konfigurirano). Če trditev manjka v odgovoru, bo dostop do ABS zavrnjen. Če ena možnost manjka, bo obravnavana kot false. Zagotovite, da se zahtevek ponudnika identitete ujema s pričakovano strukturo:",
+ "LabelOpenIDClaims": "Pustite naslednje možnosti prazne, da onemogočite napredno dodeljevanje skupin in dovoljenj, nato pa samodejno dodelite skupino 'Uporabnik'.",
+ "LabelOpenIDGroupClaimDescription": "Ime zahtevka OpenID, ki vsebuje seznam uporabnikovih skupin. Običajno imenovane skupine. Če je konfigurirana, bo aplikacija samodejno dodelila vloge na podlagi članstva v skupini uporabnika, pod pogojem, da so te skupine v zahtevku poimenovane 'admin', 'user' ali 'guest' brez razlikovanja med velikimi in malimi črkami. Zahtevek mora vsebovati seznam in če uporabnik pripada več skupinam, mu aplikacija dodeli vlogo, ki ustreza najvišjemu nivoju dostopa. Če se nobena skupina ne ujema, bo dostop zavrnjen.",
+ "LabelOpenRSSFeed": "Odpri vir RSS",
+ "LabelOverwrite": "Prepiši",
+ "LabelPaginationPageXOfY": "Stran {0} od {1}",
+ "LabelPassword": "Geslo",
+ "LabelPath": "Pot",
+ "LabelPermanent": "Trajno",
+ "LabelPermissionsAccessAllLibraries": "Lahko dostopa do vseh knjižnic",
+ "LabelPermissionsAccessAllTags": "Lahko dostopa do vseh oznak",
+ "LabelPermissionsAccessExplicitContent": "Lahko dostopa do eksplicitne vsebine",
+ "LabelPermissionsCreateEreader": "Lahko ustvari e-bralnik",
+ "LabelPermissionsDelete": "Lahko briše",
+ "LabelPermissionsDownload": "Lahko prenaša",
+ "LabelPermissionsUpdate": "Lahko posodablja",
+ "LabelPermissionsUpload": "Lahko nalaga",
+ "LabelPersonalYearReview": "Pregled tvojega leta ({0})",
+ "LabelPhotoPathURL": "Slika pot/URL",
+ "LabelPlayMethod": "Metoda predvajanja",
+ "LabelPlayerChapterNumberMarker": "{0} od {1}",
+ "LabelPlaylists": "Seznami predvajanja",
+ "LabelPodcast": "Podcast",
+ "LabelPodcastSearchRegion": "Regija iskanja podcastov",
+ "LabelPodcastType": "Vrsta podcasta",
+ "LabelPodcasts": "Podcasti",
+ "LabelPort": "Vrata",
+ "LabelPrefixesToIgnore": "Predpone, ki jih je treba prezreti (neobčutljivo na velike in male črke)",
+ "LabelPreventIndexing": "Preprečite, da bi vaš vir indeksirali imeniki podcastov iTunes in Google",
+ "LabelPrimaryEbook": "Primarna e-knjiga",
+ "LabelProgress": "Napredek",
+ "LabelProvider": "Ponudnik",
+ "LabelProviderAuthorizationValue": "Vrednost glave avtorizacije",
+ "LabelPubDate": "Datum objave",
+ "LabelPublishYear": "Leto izdaje",
+ "LabelPublishedDate": "Izdano {0}",
+ "LabelPublishedDecade": "Desetletje izdaje",
+ "LabelPublishedDecades": "Desetletja izdaje",
+ "LabelPublisher": "Izdajatelj",
+ "LabelPublishers": "Izdajatelji",
+ "LabelRSSFeedCustomOwnerEmail": "E-pošta lastnika po meri",
+ "LabelRSSFeedCustomOwnerName": "Ime lastnika po meri",
+ "LabelRSSFeedOpen": "Odprt vir RSS",
+ "LabelRSSFeedPreventIndexing": "Prepreči indeksiranje",
+ "LabelRSSFeedSlug": "Slug RSS vira",
+ "LabelRSSFeedURL": "URL vira RSS",
+ "LabelRandomly": "Naključno",
+ "LabelReAddSeriesToContinueListening": "Znova dodaj serijo za nadaljevanje poslušanja",
+ "LabelRead": "Preberi",
+ "LabelReadAgain": "Ponovno preberi",
+ "LabelReadEbookWithoutProgress": "Preberi eknjigo brez ohranjanja napredka",
+ "LabelRecentSeries": "Nedavne serije",
+ "LabelRecentlyAdded": "Nedavno dodano",
+ "LabelRecommended": "Priporočeno",
+ "LabelRedo": "Ponovi",
+ "LabelRegion": "Regija",
+ "LabelReleaseDate": "Datum izdaje",
+ "LabelRemoveAllMetadataAbs": "Odstrani vse datoteke metadata.abs",
+ "LabelRemoveAllMetadataJson": "Odstrani vse datoteke metadata.json",
+ "LabelRemoveCover": "Odstrani naslovnico",
+ "LabelRemoveMetadataFile": "Odstrani datoteke z metapodatki v mapah elementov knjižnice",
+ "LabelRemoveMetadataFileHelp": "Odstrani vse datoteke metadata.json in metadata.abs v svojih mapah {0}.",
+ "LabelRowsPerPage": "Vrstic na stran",
+ "LabelSearchTerm": "Iskalni pojem",
+ "LabelSearchTitle": "Naslov iskanja",
+ "LabelSearchTitleOrASIN": "Naslov iskanja ali ASIN",
+ "LabelSeason": "Sezona",
+ "LabelSeasonNumber": "Sezona #{0}",
+ "LabelSelectAll": "Izberite vse",
+ "LabelSelectAllEpisodes": "Izberite vse epizode",
+ "LabelSelectEpisodesShowing": "Izberi {0} prikazanih epizod",
+ "LabelSelectUsers": "Izberite uporabnike",
+ "LabelSendEbookToDevice": "Pošlji eknjigo k...",
+ "LabelSequence": "Zaporedje",
+ "LabelSerial": "Serija",
+ "LabelSeries": "Serije",
+ "LabelSeriesName": "Ime serije",
+ "LabelSeriesProgress": "Napredek serije",
+ "LabelServerLogLevel": "Raven dnevnika strežnika",
+ "LabelServerYearReview": "Pregled leta strežnika ({0})",
+ "LabelSetEbookAsPrimary": "Nastavi kot primarno",
+ "LabelSetEbookAsSupplementary": "Nastavi kot dodatno",
+ "LabelSettingsAudiobooksOnly": "Samo zvočne knjige",
+ "LabelSettingsAudiobooksOnlyHelp": "Če omogočite to nastavitev, bodo datoteke eknjig prezrte, razen če so znotraj mape zvočnih knjig, v tem primeru bodo nastavljene kot dodatne e-knjige",
+ "LabelSettingsBookshelfViewHelp": "Skeuomorfna oblika z lesenimi policami",
+ "LabelSettingsChromecastSupport": "Podpora za Chromecast",
+ "LabelSettingsDateFormat": "Oblika datuma",
+ "LabelSettingsDisableWatcher": "Onemogoči spremljanje datotečnega sistema",
+ "LabelSettingsDisableWatcherForLibrary": "Onemogoči spremljanje map za knjižnico",
+ "LabelSettingsDisableWatcherHelp": "Onemogoči samodejno dodajanje/posodabljanje elementov, ko so zaznane spremembe datoteke. *Potreben je ponovni zagon strežnika",
+ "LabelSettingsEnableWatcher": "Omogoči spremljanje sprememb",
+ "LabelSettingsEnableWatcherForLibrary": "Omogoči spremljanje sprememb v mapi knjižnice",
+ "LabelSettingsEnableWatcherHelp": "Omogoča samodejno dodajanje/posodabljanje elementov, ko so zaznane spremembe datoteke. *Potreben je ponovni zagon strežnika",
+ "LabelSettingsEpubsAllowScriptedContent": "Dovoli skriptirano vsebino v epubih",
+ "LabelSettingsEpubsAllowScriptedContentHelp": "Dovoli datotekam epub izvajanje skript. Priporočljivo je, da to nastavitev pustite onemogočeno, razen če zaupate viru datotek epub.",
+ "LabelSettingsExperimentalFeatures": "Eksperimentalne funkcije",
+ "LabelSettingsExperimentalFeaturesHelp": "Funkcije v razvoju, ki bi lahko uporabile vaše povratne informacije in pomoč pri testiranju. Kliknite, da odprete razpravo na githubu.",
+ "LabelSettingsFindCovers": "Poišči naslovnice",
+ "LabelSettingsFindCoversHelp": "Če vaša zvočna knjiga nima vdelane naslovnice ali slike naslovnice v mapi, bo pregledovalnik poskušal najti naslovnico. Opomba: To bo podaljšalo čas pregledovanja",
+ "LabelSettingsHideSingleBookSeries": "Skrij serije s samo eno knjigo",
+ "LabelSettingsHideSingleBookSeriesHelp": "Serije, ki imajo eno knjigo, bodo skrite na strani serije in policah domače strani.",
+ "LabelSettingsHomePageBookshelfView": "Domača stran bo imela pogled knjižne police",
+ "LabelSettingsLibraryBookshelfView": "Knjižnična uporaba pogleda knjižne police",
+ "LabelSettingsLibraryMarkAsFinishedPercentComplete": "Odstotek dokončanega je večji od",
+ "LabelSettingsLibraryMarkAsFinishedTimeRemaining": "Preostali čas je manj kot (sekund)",
+ "LabelSettingsLibraryMarkAsFinishedWhen": "Označi medijski element kot končan, ko",
+ "LabelSettingsOnlyShowLaterBooksInContinueSeries": "Preskoči prejšnje knjige v nadaljevanju serije",
+ "LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "Polica z domačo stranjo Nadaljuj serijo prikazuje prvo nezačeto knjigo v seriji, ki ima vsaj eno dokončano knjigo in ni nobene knjige v teku. Če omogočite to nastavitev, se bo serija nadaljevala od najbolj dokončane knjige namesto od prve nezačete knjige.",
+ "LabelSettingsParseSubtitles": "Uporabi podnapise",
+ "LabelSettingsParseSubtitlesHelp": "Izvleci podnapise iz imen map zvočnih knjig. Podnapis mora biti ločen z \" - \" npr. \"Naslov knjige – tu podnapis\" ima podnapis \"tu podnapis\"",
+ "LabelSettingsPreferMatchedMetadata": "Prednost imajo ujemajoči se metapodatki",
+ "LabelSettingsPreferMatchedMetadataHelp": "Pri uporabi hitrega ujemanja bodo ujemajoči se podatki preglasili podrobnosti artikla. Hitro ujemanje bo privzeto izpolnil samo manjkajoče podrobnosti.",
+ "LabelSettingsSkipMatchingBooksWithASIN": "Preskoči ujemajoče se knjige, ki že imajo ASIN",
+ "LabelSettingsSkipMatchingBooksWithISBN": "Preskoči ujemajoče se knjige, ki že imajo oznako ISBN",
+ "LabelSettingsSortingIgnorePrefixes": "Pri razvrščanju ne upoštevaj predpon",
+ "LabelSettingsSortingIgnorePrefixesHelp": "npr. za naslov knjige s predpono \"the\" bi se \"The Book Title\" razvrstil kot \"Book Title, The\"",
+ "LabelSettingsSquareBookCovers": "Uporabi kvadratne platnice knjig",
+ "LabelSettingsSquareBookCoversHelp": "Raje uporabi kvadratne platnice kot standardne knjižne platnice 1.6:1",
+ "LabelSettingsStoreCoversWithItem": "Shrani naslovnice skupaj z elementom",
+ "LabelSettingsStoreCoversWithItemHelp": "Naslovnice so privzeto shranjene v /metadata/items, če omogočite to nastavitev, bodo platnice shranjene v mapi elementov knjižnice. Shranjena bo samo ena datoteka z imenom \"cover\"",
+ "LabelSettingsStoreMetadataWithItem": "Shrani metapodatke skupaj z elementom",
+ "LabelSettingsStoreMetadataWithItemHelp": "Datoteke z metapodatki so privzeto shranjene v /metadata/items, če omogočite to nastavitev, boste datoteke z metapodatki shranili v mape elementov vaše knjižnice",
+ "LabelSettingsTimeFormat": "Oblika časa",
+ "LabelShare": "Deli",
+ "LabelShareOpen": "Deli odprto",
+ "LabelShareURL": "Deli URL",
+ "LabelShowAll": "Prikaži vse",
+ "LabelShowSeconds": "Prikaži sekunde",
+ "LabelShowSubtitles": "Prikaži podnapise",
+ "LabelSize": "Velikost",
+ "LabelSleepTimer": "Časovnik za spanje",
+ "LabelSlug": "Slug",
+ "LabelStart": "Začetek",
+ "LabelStartTime": "Čas začetka",
+ "LabelStarted": "Začeto",
+ "LabelStartedAt": "Začeto ob",
+ "LabelStatsAudioTracks": "Zvočni posnetki",
+ "LabelStatsAuthors": "Avtorji",
+ "LabelStatsBestDay": "Najboljši dan",
+ "LabelStatsDailyAverage": "Dnevno povprečje",
+ "LabelStatsDays": "Dnevi",
+ "LabelStatsDaysListened": "Dnevi poslušanja",
+ "LabelStatsHours": "Ure",
+ "LabelStatsInARow": "v vrsti",
+ "LabelStatsItemsFinished": "Končani elementi",
+ "LabelStatsItemsInLibrary": "Elementi v knjižnici",
+ "LabelStatsMinutes": "minute",
+ "LabelStatsMinutesListening": "Minut poslušanja",
+ "LabelStatsOverallDays": "Skupaj dnevi",
+ "LabelStatsOverallHours": "Skupaj ur",
+ "LabelStatsWeekListening": "Tednov poslušanja",
+ "LabelSubtitle": "Podnapis",
+ "LabelSupportedFileTypes": "Podprte vrste datotek",
+ "LabelTag": "Oznaka",
+ "LabelTags": "Oznake",
+ "LabelTagsAccessibleToUser": "Oznake, dostopne uporabniku",
+ "LabelTagsNotAccessibleToUser": "Oznake, ki niso dostopne uporabniku",
+ "LabelTasks": "Tekoče naloge",
+ "LabelTextEditorBulletedList": "Seznam z oznakami",
+ "LabelTextEditorLink": "Povezava",
+ "LabelTextEditorNumberedList": "Številčni seznam",
+ "LabelTextEditorUnlink": "Odveži",
+ "LabelTheme": "Tema",
+ "LabelThemeDark": "Temna",
+ "LabelThemeLight": "Svetla",
+ "LabelTimeBase": "Odvisna od časa",
+ "LabelTimeDurationXHours": "{0} ur",
+ "LabelTimeDurationXMinutes": "{0} minut",
+ "LabelTimeDurationXSeconds": "{0} sekund",
+ "LabelTimeInMinutes": "Čas v minutah",
+ "LabelTimeLeft": "{0} še preostane",
+ "LabelTimeListened": "Čas poslušanja",
+ "LabelTimeListenedToday": "Čas poslušanja danes",
+ "LabelTimeRemaining": "Še {0}",
+ "LabelTimeToShift": "Čas prestavljanja v sekundah",
+ "LabelTitle": "Naslov",
+ "LabelToolsEmbedMetadata": "Vdelaj metapodatke",
+ "LabelToolsEmbedMetadataDescription": "Vdelajte metapodatke v zvočne datoteke, vključno s sliko naslovnice in poglavji.",
+ "LabelToolsM4bEncoder": "M4B enkoder",
+ "LabelToolsMakeM4b": "Ustvari M4B datoteko zvočne knjige",
+ "LabelToolsMakeM4bDescription": "Ustvari zvočno knjigo v .M4B obliki z vdelanimi metapodatki, sliko naslovnice in poglavji.",
+ "LabelToolsSplitM4b": "Razdeli M4B v MP3 datoteke",
+ "LabelToolsSplitM4bDescription": "Ustvarite MP3 datoteke iz datoteke M4B, razdeljene po poglavjih z vdelanimi metapodatki, naslovno sliko in poglavji.",
+ "LabelTotalDuration": "Skupno trajanje",
+ "LabelTotalTimeListened": "Skupni čas poslušanja",
+ "LabelTrackFromFilename": "Posnetek iz datoteke",
+ "LabelTrackFromMetadata": "Posnetek iz metapodatkov",
+ "LabelTracks": "Posnetki",
+ "LabelTracksMultiTrack": "Več posnetkov",
+ "LabelTracksNone": "Brez posnetka",
+ "LabelTracksSingleTrack": "Enojni posnetek",
+ "LabelTrailer": "Napovednik",
+ "LabelType": "Vrsta",
+ "LabelUnabridged": "Neskrajšano",
+ "LabelUndo": "Razveljavi",
+ "LabelUnknown": "Neznano",
+ "LabelUnknownPublishDate": "Neznan datum izdaje",
+ "LabelUpdateCover": "Posodobi naslovnico",
+ "LabelUpdateCoverHelp": "Dovoli prepisovanje obstoječih naslovnic za izbrane knjige, ko se najde ujemanje",
+ "LabelUpdateDetails": "Posodobi podrobnosti",
+ "LabelUpdateDetailsHelp": "Dovoli prepisovanje obstoječih podrobnosti za izbrane knjige, ko se najde ujemanje",
+ "LabelUpdatedAt": "Posodobljeno ob",
+ "LabelUploaderDragAndDrop": "Povleci in spusti datoteke ali mape",
+ "LabelUploaderDropFiles": "Spusti datoteke",
+ "LabelUploaderItemFetchMetadataHelp": "Samodejno pridobi naslov, avtorja in serijo",
+ "LabelUseAdvancedOptions": "Uporabi napredne možnosti",
+ "LabelUseChapterTrack": "Uporabi posnetek poglavij",
+ "LabelUseFullTrack": "Uporabi celoten posnetek",
+ "LabelUseZeroForUnlimited": "Uporabi 0 za neomejeno",
+ "LabelUser": "Uporabnik",
+ "LabelUsername": "Uporabniško ime",
+ "LabelValue": "Vrednost",
+ "LabelVersion": "Verzija",
+ "LabelViewBookmarks": "Ogled zaznamkov",
+ "LabelViewChapters": "Ogled poglavij",
+ "LabelViewPlayerSettings": "Ogled nastavitev predvajalnika",
+ "LabelViewQueue": "Ogled čakalno vrsto predvajalnika",
+ "LabelVolume": "Glasnost",
+ "LabelWeekdaysToRun": "Delovni dnevi predvajanja",
+ "LabelXBooks": "{0} knjig",
+ "LabelXItems": "{0} elementov",
+ "LabelYearReviewHide": "Skrij pregled leta",
+ "LabelYearReviewShow": "Poglej pregled leta",
+ "LabelYourAudiobookDuration": "Trajanje tvojih zvočnih knjig",
+ "LabelYourBookmarks": "Tvoji zaznamki",
+ "LabelYourPlaylists": "Tvoje seznami predvajanj",
+ "LabelYourProgress": "Tvoj napredek",
+ "MessageAddToPlayerQueue": "Dodaj v čakalno vrsto predvajalnika",
+ "MessageAppriseDescription": "Če želite uporabljati to funkcijo, morate imeti zagnano namestitev API Apprise ali API, ki bo obravnavala te iste zahteve. 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 http://192.168.1.1:8337, bi morali vnesti http://192.168.1.1:8337/notify.",
+ "MessageBackupsDescription": "Varnostne kopije vključujejo uporabnike, napredek uporabnikov, podrobnosti elementov knjižnice, nastavitve strežnika in slike, shranjene v /metadata/items & /metadata/authors. Varnostne kopije ne 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",
+ "MessageBackupsLocationNoEditNote": "Opomba: Lokacija varnostne kopije je nastavljena s spremenljivko okolja in je tu ni mogoče spremeniti.",
+ "MessageBackupsLocationPathEmpty": "Pot do lokacije varnostne kopije ne sme biti prazna",
+ "MessageBatchQuickMatchDescription": "Hitro ujemanje bo poskušal dodati manjkajoče naslovnice in metapodatke za izbrane elemente. Omogočite spodnje možnosti, da omogočite hitremu ujemanju, da prepiše obstoječe naslovnice in/ali metapodatke.",
+ "MessageBookshelfNoCollections": "Ustvaril nisi še nobene zbirke",
+ "MessageBookshelfNoRSSFeeds": "Noben vir RSS ni odprt",
+ "MessageBookshelfNoResultsForFilter": "Ni rezultatov za filter \"{0}: {1}\"",
+ "MessageBookshelfNoResultsForQuery": "Ni rezultatov za poizvedbo",
+ "MessageBookshelfNoSeries": "Nimate serij",
+ "MessageChapterEndIsAfter": "Konec poglavja je po koncu zvočne knjige",
+ "MessageChapterErrorFirstNotZero": "Prvo poglavje se mora začeti pri 0",
+ "MessageChapterErrorStartGteDuration": "Neveljaven začetni čas, mora biti krajši od trajanja zvočne knjige",
+ "MessageChapterErrorStartLtPrev": "Neveljaven začetni čas mora biti večji od ali enak začetnemu času prejšnjega poglavja",
+ "MessageChapterStartIsAfter": "Začetek poglavja je po koncu vaše zvočne knjige",
+ "MessageCheckingCron": "Preverjam cron...",
+ "MessageConfirmCloseFeed": "Ali ste prepričani, da želite zapreti ta vir?",
+ "MessageConfirmDeleteBackup": "Ali ste prepričani, da želite izbrisati varnostno kopijo za {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?",
+ "MessageConfirmDeleteLibrary": "Ali ste prepričani, da želite trajno izbrisati knjižnico \"{0}\"?",
+ "MessageConfirmDeleteLibraryItem": "S tem boste element knjižnice izbrisali iz baze podatkov in vašega datotečnega sistema. Ste prepričani?",
+ "MessageConfirmDeleteLibraryItems": "To bo izbrisalo {0} elementov knjižnice iz baze podatkov in vašega datotečnega sistema. Ste prepričani?",
+ "MessageConfirmDeleteMetadataProvider": "Ali ste prepričani, da želite izbrisati ponudnika metapodatkov po meri \"{0}\"?",
+ "MessageConfirmDeleteNotification": "Ali ste prepričani, da želite izbrisati to obvestilo?",
+ "MessageConfirmDeleteSession": "Ali ste prepričani, da želite izbrisati to sejo?",
+ "MessageConfirmEmbedMetadataInAudioFiles": "Ali ste prepričani, da želite vdelati metapodatke v {0} zvočnih datotek?",
+ "MessageConfirmForceReScan": "Ali ste prepričani, da želite vsiliti ponovno pregledovanje?",
+ "MessageConfirmMarkAllEpisodesFinished": "Ali ste prepričani, da želite označiti vse epizode kot dokončane?",
+ "MessageConfirmMarkAllEpisodesNotFinished": "Ali ste prepričani, da želite vse epizode označiti kot nedokončane?",
+ "MessageConfirmMarkItemFinished": "Ali ste prepričani, da želite \"{0}\" označiti kot dokončanega?",
+ "MessageConfirmMarkItemNotFinished": "Ali ste prepričani, da želite \"{0}\" označiti kot nedokončanega?",
+ "MessageConfirmMarkSeriesFinished": "Ali ste prepričani, da želite vse knjige v tej seriji označiti kot dokončane?",
+ "MessageConfirmMarkSeriesNotFinished": "Ali ste prepričani, da želite vse knjige v tej seriji označiti kot nedokončane?",
+ "MessageConfirmNotificationTestTrigger": "Želite sprožiti to obvestilo s testnimi podatki?",
+ "MessageConfirmPurgeCache": "Čiščenje predpomnilnika bo izbrisalo celoten imenik v /metadata/cache.
Ali ste prepričani, da želite odstraniti imenik predpomnilnika?",
+ "MessageConfirmPurgeItemsCache": "Čiščenje predpomnilnika elementov bo izbrisalo celoten imenik na /metadata/cache/items. Ste prepričani?",
+ "MessageConfirmQuickEmbed": "Opozorilo! Hitra vdelava ne bo varnostno kopirala vaših zvočnih datotek. Prepričajte se, da imate varnostno kopijo zvočnih datotek.
Ali želite nadaljevati?",
+ "MessageConfirmQuickMatchEpisodes": "Hitro ujemanja epizod bo prepisalo podrobnosti, če se najde ujemanje. Posodobljene bodo samo epizode, ki se ne ujemajo. Ste prepričani?",
+ "MessageConfirmReScanLibraryItems": "Ali ste prepričani, da želite ponovno pregledati {0} elementov?",
+ "MessageConfirmRemoveAllChapters": "Ali ste prepričani, da želite odstraniti vsa poglavja?",
+ "MessageConfirmRemoveAuthor": "Ali ste prepričani, da želite odstraniti avtorja \"{0}\"?",
+ "MessageConfirmRemoveCollection": "Ali ste prepričani, da želite odstraniti zbirko \"{0}\"?",
+ "MessageConfirmRemoveEpisode": "Ali ste prepričani, da želite odstraniti epizodo \"{0}\"?",
+ "MessageConfirmRemoveEpisodes": "Ali ste prepričani, da želite odstraniti {0} epizod?",
+ "MessageConfirmRemoveListeningSessions": "Ali ste prepričani, da želite odstraniti {0} sej poslušanja?",
+ "MessageConfirmRemoveMetadataFiles": "Ali ste prepričani, da želite odstraniti vse metapodatke.{0} v mapah elementov knjižnice?",
+ "MessageConfirmRemoveNarrator": "Ali ste prepričani, da želite odstraniti bralca \"{0}\"?",
+ "MessageConfirmRemovePlaylist": "Ali ste prepričani, da želite odstraniti svoj seznam predvajanja \"{0}\"?",
+ "MessageConfirmRenameGenre": "Ali ste prepričani, da želite preimenovati žanr \"{0}\" v \"{1}\" za vse elemente?",
+ "MessageConfirmRenameGenreMergeNote": "Opomba: Ta žanr že obstaja, zato bosta združeni.",
+ "MessageConfirmRenameGenreWarning": "Opozorilo! Podoben žanr z različnimi velikosti črk že obstaja \"{0}\".",
+ "MessageConfirmRenameTag": "Ali ste prepričani, da želite preimenovati oznako \"{0}\" v \"{1}\" za vse elemente?",
+ "MessageConfirmRenameTagMergeNote": "Opomba: Ta oznaka že obstaja, zato bosta združeni.",
+ "MessageConfirmRenameTagWarning": "Opozorilo! Podobna oznaka z različnimi velikosti črk že obstaja \"{0}\".",
+ "MessageConfirmResetProgress": "Ali ste prepričani, da želite ponastaviti svoj napredek?",
+ "MessageConfirmSendEbookToDevice": "Ali ste prepričani, da želite poslati {0} e-knjigo \"{1}\" v napravo \"{2}\"?",
+ "MessageConfirmUnlinkOpenId": "Ali ste prepričani, da želite prekiniti povezavo tega uporabnika z OpenID?",
+ "MessageDownloadingEpisode": "Prenašam epizodo",
+ "MessageDragFilesIntoTrackOrder": "Povlecite datoteke v pravilen vrstni red posnetkov",
+ "MessageEmbedFailed": "Vdelava ni uspela!",
+ "MessageEmbedFinished": "Vdelava končana!",
+ "MessageEmbedQueue": "V čakalni vrsta za vdelavo metapodatkov ({0} v čakalni vrsti)",
+ "MessageEpisodesQueuedForDownload": "{0} epizod v čakalni vrsti za prenos",
+ "MessageEreaderDevices": "Da zagotovite dostavo e-knjig, boste morda morali dodati zgornji e-poštni naslov kot veljavnega pošiljatelja za vsako spodaj navedeno napravo.",
+ "MessageFeedURLWillBe": "URL vira bo {0}",
+ "MessageFetching": "Pridobivam...",
+ "MessageForceReScanDescription": "bo znova pregledal vse datoteke kot pregled od začetka. Oznake ID3 zvočnih datotek, datoteke OPF in besedilne datoteke bodo pregledane kot nove.",
+ "MessageImportantNotice": "Pomembno obvestilo!",
+ "MessageInsertChapterBelow": "Spodaj vstavite poglavje",
+ "MessageItemsSelected": "{0} izbranih elementov",
+ "MessageItemsUpdated": "Št. posodobljenih elementov: {0}",
+ "MessageJoinUsOn": "Pridružite se nam",
+ "MessageListeningSessionsInTheLastYear": "{0} sej poslušanja v zadnjem letu",
+ "MessageLoading": "Nalagam...",
+ "MessageLoadingFolders": "Nalagam mape...",
+ "MessageLogsDescription": "Dnevniki so shranjeni v /metadata/logs kot datoteke JSON. Dnevniki zrušitev so shranjeni v /metadata/logs/crash_logs.txt.",
+ "MessageM4BFailed": "M4B ni uspel!",
+ "MessageM4BFinished": "M4B končan!",
+ "MessageMapChapterTitles": "Preslikaj naslove poglavij v obstoječa poglavja zvočne knjige brez prilagajanja časovnih indentifikatorjev",
+ "MessageMarkAllEpisodesFinished": "Označi vse epizode kot končane",
+ "MessageMarkAllEpisodesNotFinished": "Označi vse epizode kot nedokončane",
+ "MessageMarkAsFinished": "Označi kot dokončano",
+ "MessageMarkAsNotFinished": "Označi kot nedokončano",
+ "MessageMatchBooksDescription": "bo poskušal povezati knjige v knjižnici s knjigo izbranega ponudnika iskanja in izpolniti prazne podatke in naslovnico. Ne prepisuje čez obstoječe podatke.",
+ "MessageNoAudioTracks": "Ni zvočnih posnetkov",
+ "MessageNoAuthors": "Brez avtorjev",
+ "MessageNoBackups": "Brez varnostnih kopij",
+ "MessageNoBookmarks": "Brez zaznamkov",
+ "MessageNoChapters": "Brez poglavij",
+ "MessageNoCollections": "Brez zbirk",
+ "MessageNoCoversFound": "Ni naslovnic",
+ "MessageNoDescription": "Ni opisa",
+ "MessageNoDevices": "Ni naprav",
+ "MessageNoDownloadsInProgress": "Trenutno ni prenosov v teku",
+ "MessageNoDownloadsQueued": "Ni prenosov v čakalni vrsti",
+ "MessageNoEpisodeMatchesFound": "Ni zadetkov za epizodo",
+ "MessageNoEpisodes": "Ni epizod",
+ "MessageNoFoldersAvailable": "Ni na voljo nobene mape",
+ "MessageNoGenres": "Ni žanrov",
+ "MessageNoIssues": "Ni težav",
+ "MessageNoItems": "Ni elementov",
+ "MessageNoItemsFound": "Ni najdenih elementov",
+ "MessageNoListeningSessions": "Ni sej poslušanja",
+ "MessageNoLogs": "Ni dnevnikov",
+ "MessageNoMediaProgress": "Ni medijskega napredka",
+ "MessageNoNotifications": "Ni obvestil",
+ "MessageNoPodcastFeed": "Neveljaven podcast: Ni vira",
+ "MessageNoPodcastsFound": "Ni podcastov",
+ "MessageNoResults": "Ni rezultatov",
+ "MessageNoSearchResultsFor": "Ni rezultatov iskanja za \"{0}\"",
+ "MessageNoSeries": "Ni serij",
+ "MessageNoTags": "Ni oznak",
+ "MessageNoTasksRunning": "Nobeno opravili ne teče",
+ "MessageNoUpdatesWereNecessary": "Posodobitve niso bile potrebne",
+ "MessageNoUserPlaylists": "Nimate seznamov predvajanja",
+ "MessageNotYetImplemented": "Še ni implementirano",
+ "MessageOpmlPreviewNote": "Opomba: To je predogled razčlenjene datoteke OPML. Dejanski naslov podcasta bo vzet iz vira RSS.",
+ "MessageOr": "ali",
+ "MessagePauseChapter": "Začasno ustavite predvajanje poglavja",
+ "MessagePlayChapter": "Poslušajte začetek poglavja",
+ "MessagePlaylistCreateFromCollection": "Ustvari seznam predvajanja iz zbirke",
+ "MessagePleaseWait": "Prosim počakajte...",
+ "MessagePodcastHasNoRSSFeedForMatching": "Podcast nima URL-ja vira RSS, ki bi ga lahko uporabil za ujemanje",
+ "MessagePodcastSearchField": "Vnesite iskalni izraz ali URL vira RSS",
+ "MessageQuickEmbedInProgress": "Hitra vdelava je v teku",
+ "MessageQuickEmbedQueue": "V čakalni vrsti za hitro vdelavo ({0} v čakalni vrsti)",
+ "MessageQuickMatchAllEpisodes": "Hitro ujemanje vseh epizod",
+ "MessageQuickMatchDescription": "Izpolni prazne podrobnosti elementa in naslovnico s prvim rezultatom ujemanja iz '{0}'. Ne prepiše podrobnosti, razen če je omogočena nastavitev strežnika 'Prednostno ujemajoči se metapodatki'.",
+ "MessageRemoveChapter": "Odstrani poglavje",
+ "MessageRemoveEpisodes": "Odstrani toliko epizod: {0}",
+ "MessageRemoveFromPlayerQueue": "Odstrani iz čakalne vrste predvajalnika",
+ "MessageRemoveUserWarning": "Ali ste prepričani, da želite trajno izbrisati uporabnika \"{0}\"?",
+ "MessageReportBugsAndContribute": "Prijavite hrošče, zahtevajte nove funkcije in prispevajte še naprej",
+ "MessageResetChaptersConfirm": "Ali ste prepričani, da želite ponastaviti poglavja in razveljaviti spremembe, ki ste jih naredili?",
+ "MessageRestoreBackupConfirm": "Ali ste prepričani, da želite obnoviti varnostno kopijo, ustvarjeno ob",
+ "MessageRestoreBackupWarning": "Obnovitev varnostne kopije bo prepisala celotno zbirko podatkov, ki se nahaja v /config, in zajema slike v /metadata/items in /metadata/authors.
Varnostne kopije ne spreminjajo nobenih datotek v mapah vaše knjižnice. Če ste omogočili nastavitve strežnika za shranjevanje naslovnic in metapodatkov v mapah vaše knjižnice, potem ti niso varnostno kopirani ali prepisani.
Vsi odjemalci, ki uporabljajo vaš strežnik, bodo samodejno osveženi.",
+ "MessageSearchResultsFor": "Rezultati iskanja za",
+ "MessageSelected": "{0} izbrano",
+ "MessageServerCouldNotBeReached": "Strežnika ni bilo mogoče doseči",
+ "MessageSetChaptersFromTracksDescription": "Nastavite poglavja z uporabo vsake zvočne datoteke kot poglavja in naslova poglavja kot imena zvočne datoteke",
+ "MessageShareExpirationWillBe": "Potečeno bo {0}",
+ "MessageShareExpiresIn": "Poteče čez {0}",
+ "MessageShareURLWillBe": "URL za skupno rabo bo {0}",
+ "MessageStartPlaybackAtTime": "Začni predvajanje za \"{0}\" ob {1}?",
+ "MessageTaskAudioFileNotWritable": "Zvočna datoteka \"{0}\" ni zapisljiva",
+ "MessageTaskCanceledByUser": "Nalogo je preklical uporabnik",
+ "MessageTaskDownloadingEpisodeDescription": "Prenašanje epizode \"{0}\"",
+ "MessageTaskEmbeddingMetadata": "Vdelujem metapodatke",
+ "MessageTaskEmbeddingMetadataDescription": "Vdelujem metapodatke v zvočno knjigo \"{0}\"",
+ "MessageTaskEncodingM4b": "Enkodiranje M4B",
+ "MessageTaskEncodingM4bDescription": "Enkodiranje zvočne knjige \"{0}\" v samo eno datoteko m4b",
+ "MessageTaskFailed": "Neuspešno",
+ "MessageTaskFailedToBackupAudioFile": "Varnostno kopiranje zvočne datoteke \"{0}\" ni uspelo",
+ "MessageTaskFailedToCreateCacheDirectory": "Imenika predpomnilnika ni bilo mogoče ustvariti",
+ "MessageTaskFailedToEmbedMetadataInFile": "Metapodatkov ni bilo mogoče vdelati v datoteko \"{0}\"",
+ "MessageTaskFailedToMergeAudioFiles": "Zvočnih datotek ni bilo mogoče združiti",
+ "MessageTaskFailedToMoveM4bFile": "Datoteke m4b ni bilo mogoče premakniti",
+ "MessageTaskFailedToWriteMetadataFile": "Metapodatke ni bilo mogoče zapisati v datoteke",
+ "MessageTaskMatchingBooksInLibrary": "Prepoznavam knjige v knjižnici \"{0}\"",
+ "MessageTaskNoFilesToScan": "Ni datotek za pregledovanje",
+ "MessageTaskOpmlImport": "Uvoz OPML",
+ "MessageTaskOpmlImportDescription": "Ustvarjanje podcastov iz {0} virov RSS",
+ "MessageTaskOpmlImportFeed": "Vir za uvoz OPML",
+ "MessageTaskOpmlImportFeedDescription": "Uvažanje vira RSS \"{0}\"",
+ "MessageTaskOpmlImportFeedFailed": "Vira podcasta ni bilo mogoče pridobiti",
+ "MessageTaskOpmlImportFeedPodcastDescription": "Ustvarjanje podcasta \"{0}\"",
+ "MessageTaskOpmlImportFeedPodcastExists": "Podcast že obstaja na tej poti",
+ "MessageTaskOpmlImportFeedPodcastFailed": "Podcasta ni bilo mogoče ustvariti",
+ "MessageTaskOpmlImportFinished": "Dodanih {0} podcastov",
+ "MessageTaskOpmlParseFailed": "Datoteke OPML ni bilo mogoče razčleniti",
+ "MessageTaskOpmlParseFastFail": "Neveljavna OPMPL datoteka, oznake ni bilo mogoče najti ALI oznake ni bilo mogoče najti",
+ "MessageTaskOpmlParseNoneFound": "V datoteki OPML ni virov",
+ "MessageTaskScanItemsAdded": "{0} dodano",
+ "MessageTaskScanItemsMissing": "{0} manjka",
+ "MessageTaskScanItemsUpdated": "{0} posodobljeno",
+ "MessageTaskScanNoChangesNeeded": "Spremembe niso potrebne",
+ "MessageTaskScanningFileChanges": "Pregledovanje sprememb v datoteki \"{0}\"",
+ "MessageTaskScanningLibrary": "Pregledujem knjižnico \"{0}\"",
+ "MessageTaskTargetDirectoryNotWritable": "Ciljni imenik ni zapisljiv",
+ "MessageThinking": "Razmišljam...",
+ "MessageUploaderItemFailed": "Nalaganje ni uspelo",
+ "MessageUploaderItemSuccess": "Uspešno naloženo!",
+ "MessageUploading": "Nalaganje...",
+ "MessageValidCronExpression": "Veljaven cron izraz",
+ "MessageWatcherIsDisabledGlobally": "Spremljanje sprememb datotek je globalno onemogočeno v nastavitvah strežnika",
+ "MessageXLibraryIsEmpty": "{0} Knjižnica je prazna!",
+ "MessageYourAudiobookDurationIsLonger": "Trajanje vaše zvočne knjige je daljše od ugotovljenega trajanja",
+ "MessageYourAudiobookDurationIsShorter": "Trajanje vaše zvočne knjige je krajše od ugotovljenega trajanja",
+ "NoteChangeRootPassword": "Korenski uporabnik je edini uporabnik, ki ima lahko prazno geslo",
+ "NoteChapterEditorTimes": "Opomba: Začetni čas prvega poglavja mora ostati pri 0:00 in zadnji čas začetka poglavja ne sme preseči tega trajanja zvočne knjige.",
+ "NoteFolderPicker": "Opomba: že preslikane mape ne bodo prikazane",
+ "NoteRSSFeedPodcastAppsHttps": "Opozorilo: večina aplikacij za podcaste bo zahtevala, da URL vira RSS uporablja HTTPS",
+ "NoteRSSFeedPodcastAppsPubDate": "Opozorilo: 1 ali več vaših epizod nima datuma objave. Nekatere aplikacije za podcaste to zahtevajo.",
+ "NoteUploaderFoldersWithMediaFiles": "Mape z predstavnostnimi datotekami bodo obravnavane kot ločene postavke knjižnice.",
+ "NoteUploaderOnlyAudioFiles": "Če nalagate samo zvočne datoteke, bo vsaka zvočna datoteka obravnavana kot ločena zvočna knjiga.",
+ "NoteUploaderUnsupportedFiles": "Nepodprte datoteke so prezrte. Ko izberete ali spustite mapo, se druge datoteke, ki niso v mapi elementov, prezrejo.",
+ "NotificationOnBackupCompletedDescription": "Sproži se, ko je varnostno kopiranje končano",
+ "NotificationOnBackupFailedDescription": "Sproži se, ko varnostno kopiranje ne uspe",
+ "NotificationOnEpisodeDownloadedDescription": "Sproži se, ko se epizoda podcasta samodejno prenese",
+ "NotificationOnTestDescription": "Dogodek za testiranje sistema obveščanja",
+ "PlaceholderNewCollection": "Novo ime zbirke",
+ "PlaceholderNewFolderPath": "Pot nove mape",
+ "PlaceholderNewPlaylist": "Novo ime seznama predvajanja",
+ "PlaceholderSearch": "Poišči..",
+ "PlaceholderSearchEpisode": "Poišči epizodo...",
+ "StatsAuthorsAdded": "dodanih avtorjev",
+ "StatsBooksAdded": "dodanih knjig",
+ "StatsBooksAdditional": "Nekateri dodatki vključujejo…",
+ "StatsBooksFinished": "končanih knjig",
+ "StatsBooksFinishedThisYear": "Nekaj knjig, ki so bile dokončane letos…",
+ "StatsBooksListenedTo": "poslušanih knjig",
+ "StatsCollectionGrewTo": "Vaša zbirka knjig se je povečala na …",
+ "StatsSessions": "sej",
+ "StatsSpentListening": "porabil za poslušanje",
+ "StatsTopAuthor": "TOP AVTOR",
+ "StatsTopAuthors": "TOP AVTORJI",
+ "StatsTopGenre": "TOP ŽANR",
+ "StatsTopGenres": "TOP ŽANRI",
+ "StatsTopMonth": "TOP MESEC",
+ "StatsTopNarrator": "TOP BRALEC",
+ "StatsTopNarrators": "TOP BRALCI",
+ "StatsTotalDuration": "S skupnim trajanjem…",
+ "StatsYearInReview": "PREGLED LETA",
+ "ToastAccountUpdateSuccess": "Račun posodobljen",
+ "ToastAppriseUrlRequired": "Vnesti morate Apprise URL",
+ "ToastAsinRequired": "ASIN koda je obvezen podatek",
+ "ToastAuthorImageRemoveSuccess": "Slika avtorja je odstranjena",
+ "ToastAuthorNotFound": "Avtor \"{0}\" ni bil najden",
+ "ToastAuthorRemoveSuccess": "Avtor odstranjen",
+ "ToastAuthorSearchNotFound": "Ne najdem avtorja",
+ "ToastAuthorUpdateMerged": "Avtor združen",
+ "ToastAuthorUpdateSuccess": "Avtor posodobljen",
+ "ToastAuthorUpdateSuccessNoImageFound": "Avtor posodobljen (ne najdem slike)",
+ "ToastBackupAppliedSuccess": "Uporabljena varnostna kopija",
+ "ToastBackupCreateFailed": "Varnostne kopije ni bilo mogoče ustvariti",
+ "ToastBackupCreateSuccess": "Varnostna kopija ustvarjena",
+ "ToastBackupDeleteFailed": "Varnostne kopije ni bilo mogoče izbrisati",
+ "ToastBackupDeleteSuccess": "Varnostna kopija izbrisana",
+ "ToastBackupInvalidMaxKeep": "Neveljavno število varnostnih kopij za ohranjanje",
+ "ToastBackupInvalidMaxSize": "Neveljavna največja velikost varnostne kopije",
+ "ToastBackupRestoreFailed": "Varnostne kopije ni bilo mogoče obnoviti",
+ "ToastBackupUploadFailed": "Nalaganje varnostne kopije ni uspelo",
+ "ToastBackupUploadSuccess": "Varnostna kopija je naložena",
+ "ToastBatchDeleteFailed": "Paketno brisanje ni uspelo",
+ "ToastBatchDeleteSuccess": "Paketno brisanje je bilo uspešno",
+ "ToastBatchQuickMatchFailed": "Paketno hitro ujemanje ni uspelo!",
+ "ToastBatchQuickMatchStarted": "Paketno hitro ujemanje {0} knjig se je začelo!",
+ "ToastBatchUpdateFailed": "Paketna posodobitev ni uspela",
+ "ToastBatchUpdateSuccess": "Paketna posodobitev je uspela",
+ "ToastBookmarkCreateFailed": "Zaznamka ni bilo mogoče ustvariti",
+ "ToastBookmarkCreateSuccess": "Zaznamek dodan",
+ "ToastBookmarkRemoveSuccess": "Zaznamek odstranjen",
+ "ToastBookmarkUpdateSuccess": "Zaznamek posodobljen",
+ "ToastCachePurgeFailed": "Čiščenje predpomnilnika ni uspelo",
+ "ToastCachePurgeSuccess": "Predpomnilnik je bil uspešno očiščen",
+ "ToastChaptersHaveErrors": "Poglavja imajo napake",
+ "ToastChaptersMustHaveTitles": "Poglavja morajo imeti naslove",
+ "ToastChaptersRemoved": "Poglavja so odstranjena",
+ "ToastChaptersUpdated": "Poglavja so posodobljena",
+ "ToastCollectionItemsAddFailed": "Dodajanje elementov v zbirko ni uspelo",
+ "ToastCollectionItemsAddSuccess": "Dodajanje elementov v zbirko je bilo uspešno",
+ "ToastCollectionItemsRemoveSuccess": "Elementi so bili odstranjeni iz zbirke",
+ "ToastCollectionRemoveSuccess": "Zbirka je bila odstranjena",
+ "ToastCollectionUpdateSuccess": "Zbirka je bila posodobljena",
+ "ToastCoverUpdateFailed": "Posodobitev naslovnice ni uspela",
+ "ToastDeleteFileFailed": "Brisanje datoteke ni uspelo",
+ "ToastDeleteFileSuccess": "Datoteka je bila izbrisana",
+ "ToastDeviceAddFailed": "Naprave ni bilo mogoče dodati",
+ "ToastDeviceNameAlreadyExists": "Elektronska naprava s tem imenom že obstaja",
+ "ToastDeviceTestEmailFailed": "Pošiljanje testnega e-poštnega sporočila ni uspelo",
+ "ToastDeviceTestEmailSuccess": "Testno e-poštno sporočilo je poslano",
+ "ToastEmailSettingsUpdateSuccess": "E-poštne nastavitve so bile posodobljene",
+ "ToastEncodeCancelFailed": "Napaka pri preklicu prekodiranja",
+ "ToastEncodeCancelSucces": "Prekodiranje prekinjeno",
+ "ToastEpisodeDownloadQueueClearFailed": "Čiščenje čakalne vrste ni uspelo",
+ "ToastEpisodeDownloadQueueClearSuccess": "Čakalna vrsta za prenos epizod je počiščena",
+ "ToastEpisodeUpdateSuccess": "Število posodobljenih epizod: {0}",
+ "ToastErrorCannotShare": "V tej napravi ni mogoče dati v skupno rabo",
+ "ToastFailedToLoadData": "Podatkov ni bilo mogoče naložiti",
+ "ToastFailedToMatch": "Ujemanje ni uspelo",
+ "ToastFailedToShare": "Skupna raba ni uspela",
+ "ToastFailedToUpdate": "Napaka pri posodobitvi",
+ "ToastInvalidImageUrl": "Neveljaven URL slike",
+ "ToastInvalidMaxEpisodesToDownload": "Neveljavno največje število epizod za prenos",
+ "ToastInvalidUrl": "Neveljaven URL",
+ "ToastItemCoverUpdateSuccess": "Naslovnica elementa je bila posodobljena",
+ "ToastItemDeletedFailed": "Elementa ni bilo mogoče izbrisati",
+ "ToastItemDeletedSuccess": "Element je bil izbrisan",
+ "ToastItemDetailsUpdateSuccess": "Podrobnosti elementa so bile posodobjene",
+ "ToastItemMarkedAsFinishedFailed": "Označevanje kot dokončano ni uspelo",
+ "ToastItemMarkedAsFinishedSuccess": "Element je označen kot dokončan",
+ "ToastItemMarkedAsNotFinishedFailed": "Ni bilo mogoče označiti kot nedokončano",
+ "ToastItemMarkedAsNotFinishedSuccess": "Element označen kot nedokončan",
+ "ToastItemUpdateSuccess": "Element je bil posodobljen",
+ "ToastLibraryCreateFailed": "Knjižnice ni bilo mogoče ustvariti",
+ "ToastLibraryCreateSuccess": "Knjižnica \"{0}\" je bila ustvarjena",
+ "ToastLibraryDeleteFailed": "Knjižnice ni bilo mogoče izbrisati",
+ "ToastLibraryDeleteSuccess": "Knjižnica je bila izbrisana",
+ "ToastLibraryScanFailedToStart": "Pregleda ni bilo mogoče začeti",
+ "ToastLibraryScanStarted": "Pregled knjižnice se je začel",
+ "ToastLibraryUpdateSuccess": "Knjižnica \"{0}\" je bila posodobljena",
+ "ToastMatchAllAuthorsFailed": "Ujemanje vseh avtorjev ni bilo uspešno",
+ "ToastMetadataFilesRemovedError": "Napaka pri odstranjevanju metapodatkov.{0} datotek",
+ "ToastMetadataFilesRemovedNoneFound": "Ni metapodatkov.{0} datotek, najdenih v knjižnici",
+ "ToastMetadataFilesRemovedNoneRemoved": "Ni metapodatkov.{0} datotek odstranjenih",
+ "ToastMetadataFilesRemovedSuccess": "{0} metapodatki.{1} datotek odstranjenih",
+ "ToastMustHaveAtLeastOnePath": "Imeti mora vsaj eno pot",
+ "ToastNameEmailRequired": "Ime in e-pošta sta obvezna",
+ "ToastNameRequired": "Ime je obvezno",
+ "ToastNewEpisodesFound": "Število najdenih novih epizod: {0}",
+ "ToastNewUserCreatedFailed": "Računa ni bilo mogoče ustvariti: \"{0}\"",
+ "ToastNewUserCreatedSuccess": "Nov račun je bil ustvarjen",
+ "ToastNewUserLibraryError": "Izbrati morate vsaj eno knjižnico",
+ "ToastNewUserPasswordError": "Mora imeti geslo, samo korenski uporabnik ima lahko prazno geslo",
+ "ToastNewUserTagError": "Izbrati morate vsaj eno oznako",
+ "ToastNewUserUsernameError": "Vnesite uporabniško ime",
+ "ToastNoNewEpisodesFound": "Ni novih epizod",
+ "ToastNoUpdatesNecessary": "Posodobitve niso potrebne",
+ "ToastNotificationCreateFailed": "Obvestila ni bilo mogoče ustvariti",
+ "ToastNotificationDeleteFailed": "Brisanje obvestila ni uspelo",
+ "ToastNotificationFailedMaximum": "Največje število neuspelih poskusov mora biti >= 0",
+ "ToastNotificationQueueMaximum": "Največja čakalna vrsta obvestil mora biti >= 0",
+ "ToastNotificationSettingsUpdateSuccess": "Nastavitve obvestil so bile posodobljene",
+ "ToastNotificationTestTriggerFailed": "Sprožitev testnega obvestila ni uspela",
+ "ToastNotificationTestTriggerSuccess": "Sproženo testno obvestilo",
+ "ToastNotificationUpdateSuccess": "Obvestilo posodobljeno",
+ "ToastPlaylistCreateFailed": "Seznama predvajanja ni bilo mogoče ustvariti",
+ "ToastPlaylistCreateSuccess": "Seznam predvajanja je bil ustvarjen",
+ "ToastPlaylistRemoveSuccess": "Seznam predvajanja odstranjen",
+ "ToastPlaylistUpdateSuccess": "Seznam predvajanja je bil posodobljen",
+ "ToastPodcastCreateFailed": "Podcasta ni bilo mogoče ustvariti",
+ "ToastPodcastCreateSuccess": "Podcast je bil uspešno ustvarjen",
+ "ToastPodcastGetFeedFailed": "Vira podcasta ni bilo mogoče pridobiti",
+ "ToastPodcastNoEpisodesInFeed": "V viru RSS ni bilo mogoče najti nobene epizode",
+ "ToastPodcastNoRssFeed": "Podcast nima vira RSS",
+ "ToastProgressIsNotBeingSynced": "Napredek se ne sinhronizira, znova zaženite predvajanje",
+ "ToastProviderCreatedFailed": "Ponudnika ni bilo mogoče dodati",
+ "ToastProviderCreatedSuccess": "Dodan je bil nov ponudnik",
+ "ToastProviderNameAndUrlRequired": "Obvezen podatek sta ime in URL",
+ "ToastProviderRemoveSuccess": "Ponudnik je bil odstranjen",
+ "ToastRSSFeedCloseFailed": "Vira RSS ni bilo mogoče zapreti",
+ "ToastRSSFeedCloseSuccess": "Vir RSS je bil zaprt",
+ "ToastRemoveFailed": "Odstranitev ni uspela",
+ "ToastRemoveItemFromCollectionFailed": "Elementa ni bilo mogoče odstraniti iz zbirke",
+ "ToastRemoveItemFromCollectionSuccess": "Element je bil odstranjen iz zbirke",
+ "ToastRemoveItemsWithIssuesFailed": "Elementov knjižnice s težavami ni bilo mogoče odstraniti",
+ "ToastRemoveItemsWithIssuesSuccess": "Odstranjeni so bili elementi knjižnice s težavami",
+ "ToastRenameFailed": "Preimenovanje ni uspelo",
+ "ToastRescanFailed": "Ponovni pregled ni uspel za {0}",
+ "ToastRescanRemoved": "Ponovni pregled celotnega elementa je bil odstranjen",
+ "ToastRescanUpToDate": "Ponovni pregled celotnega elementa je bil ažuren",
+ "ToastRescanUpdated": "Ponovni pregled celotnega elementa je bil posodobljen",
+ "ToastScanFailed": "Pregled elementa knjižnice ni uspel",
+ "ToastSelectAtLeastOneUser": "Izberite vsaj enega uporabnika",
+ "ToastSendEbookToDeviceFailed": "E-knjige ni bilo mogoče poslati v napravo",
+ "ToastSendEbookToDeviceSuccess": "E-knjiga je bila poslana v napravo \"{0}\"",
+ "ToastSeriesUpdateFailed": "Posodobitev serije ni uspela",
+ "ToastSeriesUpdateSuccess": "Uspešna posodobitev serije",
+ "ToastServerSettingsUpdateSuccess": "Nastavitve strežnika so bile posodobljene",
+ "ToastSessionCloseFailed": "Seje ni bilo mogoče zapreti",
+ "ToastSessionDeleteFailed": "Brisanje seje ni uspelo",
+ "ToastSessionDeleteSuccess": "Seja je bila izbrisana",
+ "ToastSleepTimerDone": "Časovnik za spanje se je končal... zZzzZz",
+ "ToastSlugMustChange": "Slug vsebuje neveljavne znake",
+ "ToastSlugRequired": "Slug je obvezen podatek",
+ "ToastSocketConnected": "Omrežna povezava je priklopljena",
+ "ToastSocketDisconnected": "Omrežna povezava je odklopljena",
+ "ToastSocketFailedToConnect": "Omrežna povezava ni uspela vzpostaviti priklopa",
+ "ToastSortingPrefixesEmptyError": "Imeti mora vsaj 1 predpono za razvrščanje",
+ "ToastSortingPrefixesUpdateSuccess": "Predpone za razvrščanje so bile posodobljene ({0} elementov)",
+ "ToastTitleRequired": "Naslov je obvezen",
+ "ToastUnknownError": "Neznana napaka",
+ "ToastUnlinkOpenIdFailed": "Prekinitev povezave uporabnika z OpenID ni uspela",
+ "ToastUnlinkOpenIdSuccess": "Uporabnik je prekinil povezavo z OpenID",
+ "ToastUserDeleteFailed": "Brisanje uporabnika ni uspelo",
+ "ToastUserDeleteSuccess": "Uporabnik je bil izbrisan",
+ "ToastUserPasswordChangeSuccess": "Geslo je bilo uspešno spremenjeno",
+ "ToastUserPasswordMismatch": "Gesli se ne ujemata",
+ "ToastUserPasswordMustChange": "Novo geslo se ne sme ujemati s starim geslom",
+ "ToastUserRootRequireName": "Vnesti morate korensko uporabniško ime"
+}
diff --git a/client/strings/sv.json b/client/strings/sv.json
index fd8c6e692..0d156efd7 100644
--- a/client/strings/sv.json
+++ b/client/strings/sv.json
@@ -9,6 +9,7 @@
"ButtonApply": "Tillämpa",
"ButtonApplyChapters": "Tillämpa kapitel",
"ButtonAuthors": "Författare",
+ "ButtonBack": "Tillbaka",
"ButtonBrowseForFolder": "Bläddra efter mapp",
"ButtonCancel": "Avbryt",
"ButtonCancelEncode": "Avbryt kodning",
@@ -32,8 +33,6 @@
"ButtonHide": "Dölj",
"ButtonHome": "Hem",
"ButtonIssues": "Problem",
- "ButtonJumpBackward": "Jump Backward",
- "ButtonJumpForward": "Jump Forward",
"ButtonLatest": "Senaste",
"ButtonLibrary": "Bibliotek",
"ButtonLogout": "Logga ut",
@@ -43,34 +42,26 @@
"ButtonMatchAllAuthors": "Matcha alla författare",
"ButtonMatchBooks": "Matcha böcker",
"ButtonNevermind": "Glöm det",
- "ButtonNext": "Next",
- "ButtonNextChapter": "Next Chapter",
"ButtonOk": "Okej",
"ButtonOpenFeed": "Öppna flöde",
"ButtonOpenManager": "Öppna Manager",
- "ButtonPause": "Pause",
+ "ButtonPause": "Pausa",
"ButtonPlay": "Spela",
"ButtonPlaying": "Spelar",
"ButtonPlaylists": "Spellistor",
- "ButtonPrevious": "Previous",
- "ButtonPreviousChapter": "Previous Chapter",
"ButtonPurgeAllCache": "Rensa all cache",
"ButtonPurgeItemsCache": "Rensa föremåls-cache",
- "ButtonPurgeMediaProgress": "Rensa medieförlopp",
"ButtonQueueAddItem": "Lägg till i kön",
"ButtonQueueRemoveItem": "Ta bort från kön",
"ButtonQuickMatch": "Snabb matchning",
+ "ButtonReScan": "Omstart",
"ButtonRead": "Läs",
- "ButtonReadLess": "Read less",
- "ButtonReadMore": "Read more",
- "ButtonRefresh": "Refresh",
"ButtonRemove": "Ta bort",
"ButtonRemoveAll": "Ta bort alla",
"ButtonRemoveAllLibraryItems": "Ta bort alla biblioteksobjekt",
"ButtonRemoveFromContinueListening": "Ta bort från Fortsätt lyssna",
"ButtonRemoveFromContinueReading": "Ta bort från Fortsätt läsa",
"ButtonRemoveSeriesFromContinueSeries": "Ta bort serie från Fortsätt serie",
- "ButtonReScan": "Omstart",
"ButtonReset": "Återställ",
"ButtonResetToDefault": "Återställ till standard",
"ButtonRestore": "Återställ",
@@ -83,7 +74,6 @@
"ButtonSelectFolderPath": "Välj mappens sökväg",
"ButtonSeries": "Serie",
"ButtonSetChaptersFromTracks": "Ställ in kapitel från spår",
- "ButtonShare": "Share",
"ButtonShiftTimes": "Förskjut tider",
"ButtonShow": "Visa",
"ButtonStartM4BEncode": "Starta M4B-kodning",
@@ -98,15 +88,11 @@
"ButtonUserEdit": "Redigera användare {0}",
"ButtonViewAll": "Visa alla",
"ButtonYes": "Ja",
- "ErrorUploadFetchMetadataAPI": "Error fetching metadata",
- "ErrorUploadFetchMetadataNoResults": "Could not fetch metadata - try updating title and/or author",
- "ErrorUploadLacksTitle": "Must have a title",
"HeaderAccount": "Konto",
"HeaderAdvanced": "Avancerad",
"HeaderAppriseNotificationSettings": "Apprise Meddelandeinställningar",
- "HeaderAudiobookTools": "Ljudbokshantering",
"HeaderAudioTracks": "Ljudspår",
- "HeaderAuthentication": "Authentication",
+ "HeaderAudiobookTools": "Ljudbokshantering",
"HeaderBackups": "Säkerhetskopior",
"HeaderChangePassword": "Ändra lösenord",
"HeaderChapters": "Kapitel",
@@ -115,7 +101,6 @@
"HeaderCollectionItems": "Samlingselement",
"HeaderCover": "Omslag",
"HeaderCurrentDownloads": "Aktuella nedladdningar",
- "HeaderCustomMetadataProviders": "Custom Metadata Providers",
"HeaderDetails": "Detaljer",
"HeaderDownloadQueue": "Nedladdningskö",
"HeaderEbookFiles": "E-boksfiler",
@@ -147,25 +132,22 @@
"HeaderNewAccount": "Nytt konto",
"HeaderNewLibrary": "Nytt bibliotek",
"HeaderNotifications": "Meddelanden",
- "HeaderOpenIDConnectAuthentication": "OpenID Connect Authentication",
"HeaderOpenRSSFeed": "Öppna RSS-flöde",
"HeaderOtherFiles": "Andra filer",
- "HeaderPasswordAuthentication": "Password Authentication",
"HeaderPermissions": "Behörigheter",
"HeaderPlayerQueue": "Spelarkö",
"HeaderPlaylist": "Spellista",
"HeaderPlaylistItems": "Spellistobjekt",
"HeaderPodcastsToAdd": "Podcaster att lägga till",
"HeaderPreviewCover": "Förhandsgranska omslag",
- "HeaderRemoveEpisode": "Ta bort avsnitt",
- "HeaderRemoveEpisodes": "Ta bort {0} avsnitt",
"HeaderRSSFeedGeneral": "RSS-information",
"HeaderRSSFeedIsOpen": "RSS-flödet är öppet",
"HeaderRSSFeeds": "RSS-flöden",
+ "HeaderRemoveEpisode": "Ta bort avsnitt",
+ "HeaderRemoveEpisodes": "Ta bort {0} avsnitt",
"HeaderSavedMediaProgress": "Sparad medieförlopp",
"HeaderSchedule": "Schema",
"HeaderScheduleLibraryScans": "Schemalagda biblioteksskanningar",
- "HeaderSession": "Session",
"HeaderSetBackupSchedule": "Ange schemaläggning för säkerhetskopia",
"HeaderSettings": "Inställningar",
"HeaderSettingsDisplay": "Visning",
@@ -186,23 +168,17 @@
"HeaderUpdateDetails": "Uppdatera detaljer",
"HeaderUpdateLibrary": "Uppdatera bibliotek",
"HeaderUsers": "Användare",
- "HeaderYearReview": "Year {0} in Review",
"HeaderYourStats": "Dina statistik",
"LabelAbridged": "Förkortad",
- "LabelAbridgedChecked": "Abridged (checked)",
- "LabelAbridgedUnchecked": "Unabridged (unchecked)",
- "LabelAccessibleBy": "Accessible by",
"LabelAccountType": "Kontotyp",
- "LabelAccountTypeAdmin": "Admin",
"LabelAccountTypeGuest": "Gäst",
"LabelAccountTypeUser": "Användare",
"LabelActivity": "Aktivitet",
- "LabelAdded": "Tillagd",
- "LabelAddedAt": "Tillagd vid",
"LabelAddToCollection": "Lägg till i Samling",
"LabelAddToCollectionBatch": "Lägg till {0} böcker i Samlingen",
"LabelAddToPlaylist": "Lägg till i Spellista",
"LabelAddToPlaylistBatch": "Lägg till {0} objekt i Spellistan",
+ "LabelAddedAt": "Tillagd vid",
"LabelAdminUsersOnly": "Endast administratörer",
"LabelAll": "Alla",
"LabelAllUsers": "Alla användare",
@@ -215,12 +191,6 @@
"LabelAuthorLastFirst": "Författare (Efternamn, Förnamn)",
"LabelAuthors": "Författare",
"LabelAutoDownloadEpisodes": "Automatisk nedladdning av avsnitt",
- "LabelAutoFetchMetadata": "Auto Fetch Metadata",
- "LabelAutoFetchMetadataHelp": "Fetches metadata for title, author, and series to streamline uploading. Additional metadata may have to be matched after upload.",
- "LabelAutoLaunch": "Auto Launch",
- "LabelAutoLaunchDescription": "Redirect to the auth provider automatically when navigating to the login page (manual override path /login?autoLaunch=0)",
- "LabelAutoRegister": "Auto Register",
- "LabelAutoRegisterDescription": "Automatically create new users after logging in",
"LabelBackToUser": "Tillbaka till användaren",
"LabelBackupLocation": "Säkerhetskopia Plats",
"LabelBackupsEnableAutomaticBackups": "Aktivera automatiska säkerhetskopior",
@@ -231,24 +201,21 @@
"LabelBackupsNumberToKeepHelp": "Endast en säkerhetskopia tas bort åt gången, så om du redan har fler säkerhetskopior än detta bör du ta bort dem manuellt.",
"LabelBitrate": "Bitfrekvens",
"LabelBooks": "Böcker",
- "LabelButtonText": "Button Text",
- "LabelByAuthor": "by {0}",
"LabelChangePassword": "Ändra lösenord",
"LabelChannels": "Kanaler",
+ "LabelChapterTitle": "Kapitelrubrik",
"LabelChapters": "Kapitel",
"LabelChaptersFound": "hittade kapitel",
- "LabelChapterTitle": "Kapitelrubrik",
"LabelClickForMoreInfo": "Klicka för mer information",
"LabelClosePlayer": "Stäng spelaren",
- "LabelCodec": "Codec",
"LabelCollapseSeries": "Fäll ihop serie",
"LabelCollection": "Samling",
"LabelCollections": "Samlingar",
"LabelComplete": "Komplett",
"LabelConfirmPassword": "Bekräfta lösenord",
- "LabelContinueListening": "Fortsätt lyssna",
- "LabelContinueReading": "Fortsätt läsa",
- "LabelContinueSeries": "Fortsätt serie",
+ "LabelContinueListening": "Fortsätt Lyssna",
+ "LabelContinueReading": "Fortsätt Läsa",
+ "LabelContinueSeries": "Forsätt Serie",
"LabelCover": "Omslag",
"LabelCoverImageURL": "URL till omslagsbild",
"LabelCreatedAt": "Skapad vid",
@@ -270,12 +237,9 @@
"LabelDownload": "Ladda ner",
"LabelDownloadNEpisodes": "Ladda ner {0} avsnitt",
"LabelDuration": "Varaktighet",
- "LabelDurationComparisonExactMatch": "(exact match)",
- "LabelDurationComparisonLonger": "({0} longer)",
- "LabelDurationComparisonShorter": "({0} shorter)",
"LabelDurationFound": "Varaktighet hittad:",
"LabelEbook": "E-bok",
- "LabelEbooks": "E-böcker",
+ "LabelEbooks": "Eböcker",
"LabelEdit": "Redigera",
"LabelEmail": "E-post",
"LabelEmailSettingsFromAddress": "Från adress",
@@ -285,15 +249,12 @@
"LabelEmbeddedCover": "Inbäddat omslag",
"LabelEnable": "Aktivera",
"LabelEnd": "Slut",
+ "LabelEndOfChapter": "Slut av kapitel",
"LabelEpisode": "Avsnitt",
"LabelEpisodeTitle": "Avsnittsrubrik",
"LabelEpisodeType": "Avsnittstyp",
"LabelExample": "Exempel",
- "LabelExplicit": "Explicit",
- "LabelExplicitChecked": "Explicit (checked)",
- "LabelExplicitUnchecked": "Not Explicit (unchecked)",
"LabelFeedURL": "Flödes-URL",
- "LabelFetchingMetadata": "Fetching Metadata",
"LabelFile": "Fil",
"LabelFileBirthtime": "Födelse-tidpunkt för fil",
"LabelFileModified": "Fil ändrad",
@@ -303,25 +264,21 @@
"LabelFinished": "Avslutad",
"LabelFolder": "Mapp",
"LabelFolders": "Mappar",
- "LabelFontBold": "Bold",
+ "LabelFontBoldness": "Fetstil",
"LabelFontFamily": "Teckensnittsfamilj",
- "LabelFontItalic": "Italic",
"LabelFontScale": "Teckensnittsskala",
- "LabelFontStrikethrough": "Strikethrough",
- "LabelFormat": "Format",
"LabelGenre": "Genre",
"LabelGenres": "Genrer",
"LabelHardDeleteFile": "Hård radering av fil",
- "LabelHasEbook": "Har e-bok",
- "LabelHasSupplementaryEbook": "Har kompletterande e-bok",
- "LabelHighestPriority": "Highest priority",
+ "LabelHasEbook": "Har E-bok",
+ "LabelHasSupplementaryEbook": "Har komplimenterande E-bok",
"LabelHost": "Värd",
"LabelHour": "Timme",
"LabelIcon": "Ikon",
"LabelImageURLFromTheWeb": "Bild-URL från webben",
+ "LabelInProgress": "Pågående",
"LabelIncludeInTracklist": "Inkludera i spårlista",
"LabelIncomplete": "Ofullständig",
- "LabelInProgress": "Pågående",
"LabelInterval": "Intervall",
"LabelIntervalCustomDailyWeekly": "Anpassat dagligt/veckovis",
"LabelIntervalEvery12Hours": "Var 12:e timme",
@@ -355,50 +312,39 @@
"LabelLogLevelInfo": "Felsökningsnivå: Information",
"LabelLogLevelWarn": "Felsökningsnivå: Varning",
"LabelLookForNewEpisodesAfterDate": "Sök efter nya avsnitt efter detta datum",
- "LabelLowestPriority": "Lowest Priority",
- "LabelMatchExistingUsersBy": "Match existing users by",
- "LabelMatchExistingUsersByDescription": "Used for connecting existing users. Once connected, users will be matched by a unique id from your SSO provider",
"LabelMediaPlayer": "Mediaspelare",
"LabelMediaType": "Mediatyp",
- "LabelMetadataOrderOfPrecedenceDescription": "Higher priority metadata sources will override lower priority metadata sources",
- "LabelMetadataProvider": "Metadataleverantör",
"LabelMetaTag": "Metamärke",
"LabelMetaTags": "Metamärken",
+ "LabelMetadataProvider": "Metadataleverantör",
"LabelMinute": "Minut",
"LabelMissing": "Saknad",
- "LabelMissingEbook": "Has no ebook",
- "LabelMissingSupplementaryEbook": "Has no supplementary ebook",
- "LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs",
- "LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is audiobookshelf://oauth, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (*) as the sole entry permits any URI.",
"LabelMore": "Mer",
"LabelMoreInfo": "Mer information",
"LabelName": "Namn",
"LabelNarrator": "Berättare",
"LabelNarrators": "Berättare",
"LabelNew": "Ny",
- "LabelNewestAuthors": "Nyaste författare",
- "LabelNewestEpisodes": "Nyaste avsnitt",
"LabelNewPassword": "Nytt lösenord",
+ "LabelNewestAuthors": "Senast tillagda författare",
+ "LabelNewestEpisodes": "Senast tillagda avsnitt",
"LabelNextBackupDate": "Nästa säkerhetskopia datum",
"LabelNextScheduledRun": "Nästa schemalagda körning",
"LabelNoEpisodesSelected": "Inga avsnitt valda",
- "LabelNotes": "Anteckningar",
"LabelNotFinished": "Ej avslutad",
+ "LabelNotStarted": "Inte påbörjad",
+ "LabelNotes": "Anteckningar",
"LabelNotificationAppriseURL": "Apprise URL(er)",
"LabelNotificationAvailableVariables": "Tillgängliga variabler",
"LabelNotificationBodyTemplate": "Kroppsmall",
"LabelNotificationEvent": "Aviseringshändelse",
+ "LabelNotificationTitleTemplate": "Titelsmall",
"LabelNotificationsMaxFailedAttempts": "Max antal misslyckade försök",
"LabelNotificationsMaxFailedAttemptsHelp": "Aviseringar inaktiveras när de misslyckas med att skickas så många gånger",
"LabelNotificationsMaxQueueSize": "Max köstorlek för aviseringsevenemang",
"LabelNotificationsMaxQueueSizeHelp": "Evenemang är begränsade till att utlösa ett per sekund. Evenemang kommer att ignoreras om kön är full. Detta förhindrar aviseringsspam.",
- "LabelNotificationTitleTemplate": "Titelsmall",
- "LabelNotStarted": "Inte påbörjad",
"LabelNumberOfBooks": "Antal böcker",
"LabelNumberOfEpisodes": "Antal avsnitt",
- "LabelOpenIDAdvancedPermsClaimDescription": "Name of the OpenID claim that contains advanced permissions for user actions within the application which will apply to non-admin roles (if configured). If the claim is missing from the response, access to ABS will be denied. If a single option is missing, it will be treated as false. Ensure the identity provider's claim matches the expected structure:",
- "LabelOpenIDClaims": "Leave the following options empty to disable advanced group and permissions assignment, automatically assigning 'User' group then.",
- "LabelOpenIDGroupClaimDescription": "Name of the OpenID claim that contains a list of the user's groups. Commonly referred to as groups. If configured, the application will automatically assign roles based on the user's group memberships, provided that these groups are named case-insensitively 'admin', 'user', or 'guest' in the claim. The claim should contain a list, and if a user belongs to multiple groups, the application will assign the role corresponding to the highest level of access. If no group matches, access will be denied.",
"LabelOpenRSSFeed": "Öppna RSS-flöde",
"LabelOverwrite": "Skriv över",
"LabelPassword": "Lösenord",
@@ -410,45 +356,40 @@
"LabelPermissionsDownload": "Kan ladda ner",
"LabelPermissionsUpdate": "Kan uppdatera",
"LabelPermissionsUpload": "Kan ladda upp",
- "LabelPersonalYearReview": "Your Year in Review ({0})",
"LabelPhotoPathURL": "Bildsökväg/URL",
- "LabelPlaylists": "Spellistor",
"LabelPlayMethod": "Spelläge",
+ "LabelPlaylists": "Spellistor",
"LabelPodcast": "Podcast",
- "LabelPodcasts": "Podcasts",
"LabelPodcastSearchRegion": "Podcast-sökområde",
"LabelPodcastType": "Podcasttyp",
- "LabelPort": "Port",
+ "LabelPodcasts": "Podcasts",
"LabelPrefixesToIgnore": "Prefix att ignorera (skiftlägesokänsligt)",
"LabelPreventIndexing": "Förhindra att ditt flöde indexeras av iTunes och Google-podcastsökmotorer",
"LabelPrimaryEbook": "Primär e-bok",
"LabelProgress": "Framsteg",
"LabelProvider": "Leverantör",
"LabelPubDate": "Publiceringsdatum",
- "LabelPublisher": "Utgivare",
"LabelPublishYear": "Publiceringsår",
- "LabelRead": "Läst",
- "LabelReadAgain": "Läs igen",
- "LabelReadEbookWithoutProgress": "Läs e-bok utan att behålla framsteg",
- "LabelRecentlyAdded": "Nyligen tillagd",
- "LabelRecentSeries": "Senaste serier",
- "LabelRecommended": "Rekommenderad",
- "LabelRedo": "Redo",
- "LabelRegion": "Region",
- "LabelReleaseDate": "Utgivningsdatum",
- "LabelRemoveCover": "Ta bort omslag",
- "LabelRowsPerPage": "Rows per page",
+ "LabelPublisher": "Utgivare",
"LabelRSSFeedCustomOwnerEmail": "Anpassad ägarens e-post",
"LabelRSSFeedCustomOwnerName": "Anpassat ägarnamn",
"LabelRSSFeedOpen": "Öppna RSS-flöde",
"LabelRSSFeedPreventIndexing": "Förhindra indexering",
"LabelRSSFeedSlug": "RSS-flödesslag",
"LabelRSSFeedURL": "RSS-flöde URL",
+ "LabelRandomly": "Slumpartat",
+ "LabelRead": "Läst",
+ "LabelReadAgain": "Läs igen",
+ "LabelReadEbookWithoutProgress": "Läs e-bok utan att behålla framsteg",
+ "LabelRecentSeries": "Senaste serier",
+ "LabelRecentlyAdded": "Nyligen tillagd",
+ "LabelRecommended": "Rekommenderad",
+ "LabelReleaseDate": "Utgivningsdatum",
+ "LabelRemoveCover": "Ta bort omslag",
"LabelSearchTerm": "Sökterm",
"LabelSearchTitle": "Sök titel",
"LabelSearchTitleOrASIN": "Sök titel eller ASIN",
"LabelSeason": "Säsong",
- "LabelSelectAll": "Select all",
"LabelSelectAllEpisodes": "Välj alla avsnitt",
"LabelSelectEpisodesShowing": "Välj {0} avsnitt som visas",
"LabelSelectUsers": "Välj användare",
@@ -457,7 +398,6 @@
"LabelSeries": "Serie",
"LabelSeriesName": "Serienamn",
"LabelSeriesProgress": "Serieframsteg",
- "LabelServerYearReview": "Server Year in Review ({0})",
"LabelSetEbookAsPrimary": "Ange som primär",
"LabelSetEbookAsSupplementary": "Ange som kompletterande",
"LabelSettingsAudiobooksOnly": "Endast ljudböcker",
@@ -471,8 +411,6 @@
"LabelSettingsEnableWatcher": "Aktivera Watcher",
"LabelSettingsEnableWatcherForLibrary": "Aktivera mappbevakning för bibliotek",
"LabelSettingsEnableWatcherHelp": "Aktiverar automatiskt lägga till/uppdatera objekt när filändringar upptäcks. *Kräver omstart av servern",
- "LabelSettingsEpubsAllowScriptedContent": "Allow scripted content in epubs",
- "LabelSettingsEpubsAllowScriptedContentHelp": "Allow epub files to execute scripts. It is recommended to keep this setting disabled unless you trust the source of the epub files.",
"LabelSettingsExperimentalFeatures": "Experimentella funktioner",
"LabelSettingsExperimentalFeaturesHelp": "Funktioner under utveckling som behöver din feedback och hjälp med testning. Klicka för att öppna diskussionen på GitHub.",
"LabelSettingsFindCovers": "Hitta omslag",
@@ -481,8 +419,6 @@
"LabelSettingsHideSingleBookSeriesHelp": "Serier som har en enda bok kommer att döljas från seriesidan och hyllsidan på startsidan.",
"LabelSettingsHomePageBookshelfView": "Startsida använd bokhyllvy",
"LabelSettingsLibraryBookshelfView": "Bibliotek använd bokhyllvy",
- "LabelSettingsOnlyShowLaterBooksInContinueSeries": "Skip earlier books in Continue Series",
- "LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "The Continue Series home page shelf shows the first book not started in series that have at least one book finished and no books in progress. Enabling this setting will continue series from the furthest completed book instead of the first book not started.",
"LabelSettingsParseSubtitles": "Analysera undertexter",
"LabelSettingsParseSubtitlesHelp": "Extrahera undertexter från mappnamn för ljudböcker. Undertext måste vara åtskilda av \" - \" t.ex. \"Boktitel - En undertitel här\" har undertiteln \"En undertitel här\"",
"LabelSettingsPreferMatchedMetadata": "Föredra matchad metadata",
@@ -499,14 +435,12 @@
"LabelSettingsStoreMetadataWithItemHelp": "Som standard lagras metadatafiler i /metadata/items, att aktivera detta alternativ kommer att lagra metadatafiler i dina biblioteksmappar",
"LabelSettingsTimeFormat": "Tidsformat",
"LabelShowAll": "Visa alla",
- "LabelShowSeconds": "Show seconds",
"LabelSize": "Storlek",
"LabelSleepTimer": "Sleeptimer",
- "LabelSlug": "Slug",
- "LabelStart": "Start",
+ "LabelStart": "Starta",
+ "LabelStartTime": "Starttid",
"LabelStarted": "Startad",
"LabelStartedAt": "Startad vid",
- "LabelStartTime": "Starttid",
"LabelStatsAudioTracks": "Ljudspår",
"LabelStatsAuthors": "Författare",
"LabelStatsBestDay": "Bästa dag",
@@ -529,10 +463,6 @@
"LabelTagsAccessibleToUser": "Taggar tillgängliga för användaren",
"LabelTagsNotAccessibleToUser": "Taggar inte tillgängliga för användaren",
"LabelTasks": "Körande uppgifter",
- "LabelTextEditorBulletedList": "Bulleted list",
- "LabelTextEditorLink": "Link",
- "LabelTextEditorNumberedList": "Numbered list",
- "LabelTextEditorUnlink": "Unlink",
"LabelTheme": "Tema",
"LabelThemeDark": "Mörkt",
"LabelThemeLight": "Ljust",
@@ -558,29 +488,24 @@
"LabelTracksSingleTrack": "Enspårigt",
"LabelType": "Typ",
"LabelUnabridged": "Oavkortad",
- "LabelUndo": "Undo",
"LabelUnknown": "Okänd",
"LabelUpdateCover": "Uppdatera omslag",
"LabelUpdateCoverHelp": "Tillåt överskrivning av befintliga omslag för de valda böckerna när en matchning hittas",
- "LabelUpdatedAt": "Uppdaterad vid",
"LabelUpdateDetails": "Uppdatera detaljer",
"LabelUpdateDetailsHelp": "Tillåt överskrivning av befintliga detaljer för de valda böckerna när en matchning hittas",
+ "LabelUpdatedAt": "Uppdaterad vid",
"LabelUploaderDragAndDrop": "Dra och släpp filer eller mappar",
"LabelUploaderDropFiles": "Släpp filer",
- "LabelUploaderItemFetchMetadataHelp": "Automatically fetch title, author, and series",
"LabelUseChapterTrack": "Använd kapitelspår",
"LabelUseFullTrack": "Använd hela spåret",
"LabelUser": "Användare",
"LabelUsername": "Användarnamn",
"LabelValue": "Värde",
- "LabelVersion": "Version",
"LabelViewBookmarks": "Visa bokmärken",
"LabelViewChapters": "Visa kapitel",
"LabelViewQueue": "Visa spellista",
"LabelVolume": "Volym",
"LabelWeekdaysToRun": "Vardagar att köra",
- "LabelYearReviewHide": "Hide Year in Review",
- "LabelYearReviewShow": "See Year in Review",
"LabelYourAudiobookDuration": "Din ljudboks varaktighet",
"LabelYourBookmarks": "Dina bokmärken",
"LabelYourPlaylists": "Dina spellistor",
@@ -590,8 +515,8 @@
"MessageBackupsDescription": "Säkerhetskopieringar inkluderar användare, användares framsteg, biblioteksföremål, serverinställningar och bilder lagrade i /metadata/items & /metadata/authors. Säkerhetskopieringar inkluderar inte några filer lagrade i dina biblioteksmappar.",
"MessageBatchQuickMatchDescription": "Quick Match kommer försöka lägga till saknade omslag och metadata för de valda föremålen. Aktivera alternativen nedan för att tillåta Quick Match att överskriva befintliga omslag och/eller metadata.",
"MessageBookshelfNoCollections": "Du har ännu inte skapat några samlingar",
- "MessageBookshelfNoResultsForFilter": "Inga resultat för filter \"{0}: {1}\"",
"MessageBookshelfNoRSSFeeds": "Inga RSS-flöden är öppna",
+ "MessageBookshelfNoResultsForFilter": "Inga resultat för filter \"{0}: {1}\"",
"MessageBookshelfNoSeries": "Du har inga serier",
"MessageChapterEndIsAfter": "Kapitelns slut är efter din ljudboks slut",
"MessageChapterErrorFirstNotZero": "Första kapitlet måste börja vid 0",
@@ -611,14 +536,13 @@
"MessageConfirmMarkAllEpisodesNotFinished": "Är du säker på att du vill markera alla avsnitt som inte avslutade?",
"MessageConfirmMarkSeriesFinished": "Är du säker på att du vill markera alla böcker i denna serie som avslutade?",
"MessageConfirmMarkSeriesNotFinished": "Är du säker på att du vill markera alla böcker i denna serie som inte avslutade?",
- "MessageConfirmPurgeCache": "Purge cache will delete the entire directory at /metadata/cache.
Are you sure you want to remove the cache directory?",
"MessageConfirmQuickEmbed": "Varning! Quick embed kommer inte att säkerhetskopiera dina ljudfiler. Se till att du har en säkerhetskopia av dina ljudfiler.
Vill du fortsätta?",
+ "MessageConfirmReScanLibraryItems": "Är du säker på att du vill göra omgenomsökning för {0} objekt?",
"MessageConfirmRemoveAllChapters": "Är du säker på att du vill ta bort alla kapitel?",
"MessageConfirmRemoveAuthor": "Är du säker på att du vill ta bort författaren \"{0}\"?",
"MessageConfirmRemoveCollection": "Är du säker på att du vill ta bort samlingen \"{0}\"?",
"MessageConfirmRemoveEpisode": "Är du säker på att du vill ta bort avsnittet \"{0}\"?",
"MessageConfirmRemoveEpisodes": "Är du säker på att du vill ta bort {0} avsnitt?",
- "MessageConfirmRemoveListeningSessions": "Are you sure you want to remove {0} listening sessions?",
"MessageConfirmRemoveNarrator": "Är du säker på att du vill ta bort berättaren \"{0}\"?",
"MessageConfirmRemovePlaylist": "Är du säker på att du vill ta bort din spellista \"{0}\"?",
"MessageConfirmRenameGenre": "Är du säker på att du vill byta namn på genren \"{0}\" till \"{1}\" för alla objekt?",
@@ -627,13 +551,11 @@
"MessageConfirmRenameTag": "Är du säker på att du vill byta namn på taggen \"{0}\" till \"{1}\" för alla objekt?",
"MessageConfirmRenameTagMergeNote": "Observera: Den här taggen finns redan, så de kommer att slås samman.",
"MessageConfirmRenameTagWarning": "Varning! En liknande tagg med annat skrivsätt finns redan \"{0}\".",
- "MessageConfirmReScanLibraryItems": "Är du säker på att du vill göra omgenomsökning för {0} objekt?",
"MessageConfirmSendEbookToDevice": "Är du säker på att du vill skicka {0} e-bok \"{1}\" till enheten \"{2}\"?",
"MessageDownloadingEpisode": "Laddar ner avsnitt",
"MessageDragFilesIntoTrackOrder": "Dra filer till rätt spårordning",
"MessageEmbedFinished": "Inbäddning klar!",
"MessageEpisodesQueuedForDownload": "{0} avsnitt i kö för nedladdning",
- "MessageEreaderDevices": "To ensure delivery of ebooks, you may need to add the above email address as a valid sender for each device listed below.",
"MessageFeedURLWillBe": "Flödes-URL kommer att vara {0}",
"MessageFetching": "Hämtar...",
"MessageForceReScanDescription": "kommer att göra en omgångssökning av alla filer som en färsk sökning. ID3-taggar för ljudfiler, OPF-filer och textfiler kommer att sökas som nya.",
@@ -645,7 +567,6 @@
"MessageListeningSessionsInTheLastYear": "{0} lyssningssessioner det senaste året",
"MessageLoading": "Laddar...",
"MessageLoadingFolders": "Laddar mappar...",
- "MessageLogsDescription": "Logs are stored in /metadata/logs as JSON files. Crash logs are stored in /metadata/logs/crash_logs.txt.",
"MessageM4BFailed": "M4B misslyckades!",
"MessageM4BFinished": "M4B klar!",
"MessageMapChapterTitles": "Kartlägg kapitelrubriker till dina befintliga ljudbokskapitel utan att justera tidstämplar",
@@ -681,10 +602,9 @@
"MessageNoSeries": "Inga serier",
"MessageNoTags": "Inga taggar",
"MessageNoTasksRunning": "Inga pågående uppgifter",
- "MessageNotYetImplemented": "Ännu inte implementerad",
- "MessageNoUpdateNecessary": "Ingen uppdatering krävs",
"MessageNoUpdatesWereNecessary": "Inga uppdateringar var nödvändiga",
"MessageNoUserPlaylists": "Du har inga spellistor",
+ "MessageNotYetImplemented": "Ännu inte implementerad",
"MessageOr": "eller",
"MessagePauseChapter": "Pausa kapiteluppspelning",
"MessagePlayChapter": "Lyssna på kapitlets början",
@@ -700,7 +620,6 @@
"MessageRestoreBackupConfirm": "Är du säker på att du vill återställa säkerhetskopian som skapades den",
"MessageRestoreBackupWarning": "Att återställa en säkerhetskopia kommer att skriva över hela databasen som finns i /config och omslagsbilder i /metadata/items & /metadata/authors.
Säkerhetskopior ändrar inte några filer i dina biblioteksmappar. Om du har aktiverat serverinställningar för att lagra omslagskonst och metadata i dina biblioteksmappar säkerhetskopieras eller skrivs de inte över.
Alla klienter som använder din server kommer att uppdateras automatiskt.",
"MessageSearchResultsFor": "Sökresultat för",
- "MessageSelected": "{0} selected",
"MessageServerCouldNotBeReached": "Servern kunde inte nås",
"MessageSetChaptersFromTracksDescription": "Ställ in kapitel med varje ljudfil som ett kapitel och kapitelrubrik som ljudfilens namn",
"MessageStartPlaybackAtTime": "Starta uppspelning för \"{0}\" kl. {1}?",
@@ -726,11 +645,8 @@
"PlaceholderNewPlaylist": "Nytt spellistanamn",
"PlaceholderSearch": "Sök...",
"PlaceholderSearchEpisode": "Sök avsnitt...",
- "ToastAccountUpdateFailed": "Det gick inte att uppdatera kontot",
"ToastAccountUpdateSuccess": "Kontot uppdaterat",
- "ToastAuthorImageRemoveFailed": "Det gick inte att ta bort författarens bild",
"ToastAuthorImageRemoveSuccess": "Författarens bild borttagen",
- "ToastAuthorUpdateFailed": "Det gick inte att uppdatera författaren",
"ToastAuthorUpdateMerged": "Författaren sammanslagen",
"ToastAuthorUpdateSuccess": "Författaren uppdaterad",
"ToastAuthorUpdateSuccessNoImageFound": "Författaren uppdaterad (ingen bild hittad)",
@@ -745,28 +661,15 @@
"ToastBatchUpdateSuccess": "Batchuppdateringen lyckades",
"ToastBookmarkCreateFailed": "Det gick inte att skapa bokmärket",
"ToastBookmarkCreateSuccess": "Bokmärket tillagt",
- "ToastBookmarkRemoveFailed": "Det gick inte att ta bort bokmärket",
"ToastBookmarkRemoveSuccess": "Bokmärket borttaget",
- "ToastBookmarkUpdateFailed": "Det gick inte att uppdatera bokmärket",
"ToastBookmarkUpdateSuccess": "Bokmärket uppdaterat",
- "ToastCachePurgeFailed": "Failed to purge cache",
- "ToastCachePurgeSuccess": "Cache purged successfully",
"ToastChaptersHaveErrors": "Kapitlen har fel",
"ToastChaptersMustHaveTitles": "Kapitel måste ha titlar",
- "ToastCollectionItemsRemoveFailed": "Det gick inte att ta bort objekt från samlingen",
"ToastCollectionItemsRemoveSuccess": "Objekt borttagna från samlingen",
- "ToastCollectionRemoveFailed": "Det gick inte att ta bort samlingen",
"ToastCollectionRemoveSuccess": "Samlingen borttagen",
- "ToastCollectionUpdateFailed": "Det gick inte att uppdatera samlingen",
"ToastCollectionUpdateSuccess": "Samlingen uppdaterad",
- "ToastDeleteFileFailed": "Failed to delete file",
- "ToastDeleteFileSuccess": "File deleted",
- "ToastFailedToLoadData": "Failed to load data",
- "ToastItemCoverUpdateFailed": "Det gick inte att uppdatera objektets omslag",
"ToastItemCoverUpdateSuccess": "Objektets omslag uppdaterat",
- "ToastItemDetailsUpdateFailed": "Det gick inte att uppdatera objektdetaljerna",
"ToastItemDetailsUpdateSuccess": "Objektdetaljer uppdaterade",
- "ToastItemDetailsUpdateUnneeded": "Inga uppdateringar behövs för objektdetaljerna",
"ToastItemMarkedAsFinishedFailed": "Misslyckades med att markera som färdig",
"ToastItemMarkedAsFinishedSuccess": "Objekt markerat som färdig",
"ToastItemMarkedAsNotFinishedFailed": "Misslyckades med att markera som ej färdig",
@@ -777,34 +680,26 @@
"ToastLibraryDeleteSuccess": "Biblioteket borttaget",
"ToastLibraryScanFailedToStart": "Misslyckades med att starta skanningen",
"ToastLibraryScanStarted": "Skanning av biblioteket påbörjad",
- "ToastLibraryUpdateFailed": "Det gick inte att uppdatera biblioteket",
"ToastLibraryUpdateSuccess": "Biblioteket \"{0}\" uppdaterat",
"ToastPlaylistCreateFailed": "Det gick inte att skapa spellistan",
"ToastPlaylistCreateSuccess": "Spellistan skapad",
- "ToastPlaylistRemoveFailed": "Det gick inte att ta bort spellistan",
"ToastPlaylistRemoveSuccess": "Spellistan borttagen",
- "ToastPlaylistUpdateFailed": "Det gick inte att uppdatera spellistan",
"ToastPlaylistUpdateSuccess": "Spellistan uppdaterad",
"ToastPodcastCreateFailed": "Misslyckades med att skapa podcasten",
"ToastPodcastCreateSuccess": "Podcasten skapad framgångsrikt",
- "ToastRemoveItemFromCollectionFailed": "Misslyckades med att ta bort objektet från samlingen",
- "ToastRemoveItemFromCollectionSuccess": "Objektet borttaget från samlingen",
"ToastRSSFeedCloseFailed": "Misslyckades med att stänga RSS-flödet",
"ToastRSSFeedCloseSuccess": "RSS-flödet stängt",
+ "ToastRemoveItemFromCollectionFailed": "Misslyckades med att ta bort objektet från samlingen",
+ "ToastRemoveItemFromCollectionSuccess": "Objektet borttaget från samlingen",
"ToastSendEbookToDeviceFailed": "Misslyckades med att skicka e-boken till enheten",
"ToastSendEbookToDeviceSuccess": "E-boken skickad till enheten \"{0}\"",
"ToastSeriesUpdateFailed": "Serieuppdateringen misslyckades",
"ToastSeriesUpdateSuccess": "Serieuppdateringen lyckades",
- "ToastServerSettingsUpdateFailed": "Failed to update server settings",
- "ToastServerSettingsUpdateSuccess": "Server settings updated",
"ToastSessionDeleteFailed": "Misslyckades med att ta bort sessionen",
"ToastSessionDeleteSuccess": "Sessionen borttagen",
"ToastSocketConnected": "Socket ansluten",
"ToastSocketDisconnected": "Socket frånkopplad",
"ToastSocketFailedToConnect": "Socket misslyckades med att ansluta",
- "ToastSortingPrefixesEmptyError": "Must have at least 1 sorting prefix",
- "ToastSortingPrefixesUpdateFailed": "Failed to update sorting prefixes",
- "ToastSortingPrefixesUpdateSuccess": "Sorting prefixes updated ({0} items)",
"ToastUserDeleteFailed": "Misslyckades med att ta bort användaren",
"ToastUserDeleteSuccess": "Användaren borttagen"
-}
\ No newline at end of file
+}
diff --git a/client/strings/uk.json b/client/strings/uk.json
index 6d8c311ca..4c1941d4e 100644
--- a/client/strings/uk.json
+++ b/client/strings/uk.json
@@ -9,6 +9,7 @@
"ButtonApply": "Застосувати",
"ButtonApplyChapters": "Зберегти глави",
"ButtonAuthors": "Автори",
+ "ButtonBack": "Назад",
"ButtonBrowseForFolder": "Огляд тек",
"ButtonCancel": "Скасувати",
"ButtonCancelEncode": "Скасувати кодування",
@@ -34,7 +35,7 @@
"ButtonIssues": "Проблеми",
"ButtonJumpBackward": "Перейти назад",
"ButtonJumpForward": "Перейти вперед",
- "ButtonLatest": "Останній",
+ "ButtonLatest": "Останні",
"ButtonLibrary": "Бібліотека",
"ButtonLogout": "Вийти",
"ButtonLookup": "Пошук",
@@ -49,17 +50,18 @@
"ButtonOpenFeed": "Відкрити стрічку",
"ButtonOpenManager": "Відкрити менеджер",
"ButtonPause": "Пауза",
- "ButtonPlay": "Грати",
+ "ButtonPlay": "Слухати",
"ButtonPlaying": "Відтворюється",
"ButtonPlaylists": "Списки відтворення",
"ButtonPrevious": "Попередній",
"ButtonPreviousChapter": "Попередня глава",
"ButtonPurgeAllCache": "Очистити весь кеш",
"ButtonPurgeItemsCache": "Очистити кеш елементів",
- "ButtonPurgeMediaProgress": "Очистити прогрес",
"ButtonQueueAddItem": "Додати до черги",
"ButtonQueueRemoveItem": "Вилучити з черги",
+ "ButtonQuickEmbedMetadata": "Швидко вбудувати метадані",
"ButtonQuickMatch": "Швидкий пошук",
+ "ButtonReScan": "Пересканувати",
"ButtonRead": "Читати",
"ButtonReadLess": "Згорнути",
"ButtonReadMore": "Читати далі",
@@ -70,7 +72,6 @@
"ButtonRemoveFromContinueListening": "Видалити з Продовжити слухати",
"ButtonRemoveFromContinueReading": "Видалити з Продовжити читання",
"ButtonRemoveSeriesFromContinueSeries": "Видалити серію з Продовжити серії",
- "ButtonReScan": "Пересканувати",
"ButtonReset": "Скинути",
"ButtonResetToDefault": "Скинути до стандартних",
"ButtonRestore": "Відновити",
@@ -88,6 +89,7 @@
"ButtonShow": "Показати",
"ButtonStartM4BEncode": "Почати кодування у M4B",
"ButtonStartMetadataEmbed": "Почати вбудування метаданих",
+ "ButtonStats": "Статистика",
"ButtonSubmit": "Надіслати",
"ButtonTest": "Перевірити",
"ButtonUpload": "Завантажити",
@@ -104,8 +106,8 @@
"HeaderAccount": "Профіль",
"HeaderAdvanced": "Розширені",
"HeaderAppriseNotificationSettings": "Налаштування сповіщень Apprise",
- "HeaderAudiobookTools": "Інструменти керування файлами книг",
"HeaderAudioTracks": "Аудіодоріжки",
+ "HeaderAudiobookTools": "Інструменти керування файлами книг",
"HeaderAuthentication": "Автентифікація",
"HeaderBackups": "Резервні копії",
"HeaderChangePassword": "Змінити пароль",
@@ -115,6 +117,7 @@
"HeaderCollectionItems": "Елементи добірки",
"HeaderCover": "Обкладинка",
"HeaderCurrentDownloads": "Поточні завантаження",
+ "HeaderCustomMessageOnLogin": "Повідомлення при вході",
"HeaderCustomMetadataProviders": "Постачальники метаданих",
"HeaderDetails": "Подробиці",
"HeaderDownloadQueue": "Черга завантажень",
@@ -153,15 +156,16 @@
"HeaderPasswordAuthentication": "Автентифікація за паролем",
"HeaderPermissions": "Дозволи",
"HeaderPlayerQueue": "Черга відтворення",
+ "HeaderPlayerSettings": "Налаштування програвача",
"HeaderPlaylist": "Список відтворення",
"HeaderPlaylistItems": "Елементи списку відтворення",
"HeaderPodcastsToAdd": "Додати подкасти",
"HeaderPreviewCover": "Попередній перегляд",
- "HeaderRemoveEpisode": "Видалити епізод",
- "HeaderRemoveEpisodes": "Видалити епізодів: {0}",
"HeaderRSSFeedGeneral": "Подробиці RSS",
"HeaderRSSFeedIsOpen": "RSS-канал відкрито",
"HeaderRSSFeeds": "RSS-канали",
+ "HeaderRemoveEpisode": "Видалити епізод",
+ "HeaderRemoveEpisodes": "Видалити епізодів: {0}",
"HeaderSavedMediaProgress": "Збережений прогрес медіа",
"HeaderSchedule": "Розклад",
"HeaderScheduleLibraryScans": "Розклад автосканування бібліотеки",
@@ -191,18 +195,17 @@
"LabelAbridged": "Скорочена",
"LabelAbridgedChecked": "Скорочена (з прапорцем)",
"LabelAbridgedUnchecked": "Нескорочена (без прапорця)",
- "LabelAccessibleBy": "Accessible by",
+ "LabelAccessibleBy": "Доступно",
"LabelAccountType": "Тип профілю",
"LabelAccountTypeAdmin": "Адміністратор",
"LabelAccountTypeGuest": "Гість",
"LabelAccountTypeUser": "Користувач",
"LabelActivity": "Активність",
- "LabelAdded": "Додано",
- "LabelAddedAt": "Дата додавання",
"LabelAddToCollection": "Додати у добірку",
"LabelAddToCollectionBatch": "Додати книги до добірки: {0}",
"LabelAddToPlaylist": "Додати до списку відтворення",
"LabelAddToPlaylistBatch": "Додано елементів у список відтворення: {0}",
+ "LabelAddedAt": "Дата додавання",
"LabelAdminUsersOnly": "Тільки для адміністраторів",
"LabelAll": "Усе",
"LabelAllUsers": "Усі користувачі",
@@ -225,7 +228,7 @@
"LabelBackupLocation": "Розташування резервних копій",
"LabelBackupsEnableAutomaticBackups": "Автоматичне резервне копіювання",
"LabelBackupsEnableAutomaticBackupsHelp": "Резервні копії збережено у /metadata/backups",
- "LabelBackupsMaxBackupSize": "Максимальний розмір резервної копії (у ГБ)",
+ "LabelBackupsMaxBackupSize": "Максимальний розмір резервної копії (у ГБ) (0 — необмежене)",
"LabelBackupsMaxBackupSizeHelp": "У якості захисту від неправильного налаштування, резервну копію не буде збережено, якщо її розмір перевищуватиме вказаний.",
"LabelBackupsNumberToKeep": "Кількість резервних копій",
"LabelBackupsNumberToKeepHelp": "Лиш 1 резервну копію буде видалено за раз, тож якщо їх багато, то вам варто видалити їх вручну.",
@@ -235,9 +238,9 @@
"LabelByAuthor": "від {0}",
"LabelChangePassword": "Змінити пароль",
"LabelChannels": "Канали",
+ "LabelChapterTitle": "Назва глави",
"LabelChapters": "Глави",
"LabelChaptersFound": "глав знайдено",
- "LabelChapterTitle": "Назва глави",
"LabelClickForMoreInfo": "Натисніть, щоб дізнатися більше",
"LabelClosePlayer": "Закрити програвач",
"LabelCodec": "Кодек",
@@ -257,6 +260,7 @@
"LabelCurrently": "Поточний:",
"LabelCustomCronExpression": "Спеціальна команда cron:",
"LabelDatetime": "Дата й час",
+ "LabelDays": "Днів",
"LabelDeleteFromFileSystemCheckbox": "Видалити з файлової системи (зніміть прапорець, щоб видалити лише з бази даних)",
"LabelDescription": "Опис",
"LabelDeselectAll": "Скасувати вибір",
@@ -279,19 +283,24 @@
"LabelEdit": "Редагувати",
"LabelEmail": "Електронна пошта",
"LabelEmailSettingsFromAddress": "Адреса відправника",
+ "LabelEmailSettingsRejectUnauthorized": "Відхиляти неавторизовані сертифікати",
+ "LabelEmailSettingsRejectUnauthorizedHelp": "Вимкнення перевірки SSL-сертифікату може наражати ваше з’єднання на ризики безпеки, наприклад атаки типу «людина посередині». Вимкніть цей параметр, лише якщо ви розумієте наслідки та довіряєте поштовому серверу, до якого підключаєтеся.",
"LabelEmailSettingsSecure": "Безпечне",
"LabelEmailSettingsSecureHelp": "Увімкніть, аби використовувати TLS при підключенні до сервера. Якщо вимкнути, то TLS буде використано, якщо сервер підтримує STARTTLS. Увімкніть, якщо ви підключаєтеся до порту 465. Вимкніть для портів 587 або 25. (з nodemailer.com/smtp/#authentication)",
"LabelEmailSettingsTestAddress": "Тестова адреса",
"LabelEmbeddedCover": "Вбудована обкладинка",
"LabelEnable": "Увімкнути",
"LabelEnd": "Кінець",
+ "LabelEndOfChapter": "Кінець глави",
"LabelEpisode": "Епізод",
"LabelEpisodeTitle": "Назва епізоду",
"LabelEpisodeType": "Тип епізоду",
"LabelExample": "Приклад",
+ "LabelExpandSeries": "Розгорнути серії",
"LabelExplicit": "Відверта",
"LabelExplicitChecked": "Відверта (з прапорцем)",
"LabelExplicitUnchecked": "Не відверта (без прапорця)",
+ "LabelExportOPML": "Експорт OPML",
"LabelFeedURL": "Адреса стрічки",
"LabelFetchingMetadata": "Отримання метаданих",
"LabelFile": "Файл",
@@ -304,6 +313,7 @@
"LabelFolder": "Тека",
"LabelFolders": "Теки",
"LabelFontBold": "Жирний",
+ "LabelFontBoldness": "Товщина шрифту",
"LabelFontFamily": "Гарнітура",
"LabelFontItalic": "Курсив",
"LabelFontScale": "Розмір шрифту",
@@ -314,14 +324,16 @@
"LabelHardDeleteFile": "Остаточно видалити файл",
"LabelHasEbook": "Має електронну книгу",
"LabelHasSupplementaryEbook": "Має додаткову електронну книгу",
+ "LabelHideSubtitles": "Приховати субтитри",
"LabelHighestPriority": "Найвищий пріоритет",
"LabelHost": "Гост",
"LabelHour": "Година",
+ "LabelHours": "Години",
"LabelIcon": "Іконка",
"LabelImageURLFromTheWeb": "URL зображення з мережі",
+ "LabelInProgress": "У процесі",
"LabelIncludeInTracklist": "Включити у список",
"LabelIncomplete": "Не завершено",
- "LabelInProgress": "У процесі",
"LabelInterval": "Частота",
"LabelIntervalCustomDailyWeekly": "Налаштувати щодня/щотижня",
"LabelIntervalEvery12Hours": "Кожні 12 годин",
@@ -333,8 +345,11 @@
"LabelIntervalEveryHour": "Щогодини",
"LabelInvert": "Інвертувати",
"LabelItem": "Елемент",
+ "LabelJumpBackwardAmount": "Час переходу назад",
+ "LabelJumpForwardAmount": "Час переходу вперед",
"LabelLanguage": "Мова",
"LabelLanguageDefaultServer": "Типова мова сервера",
+ "LabelLanguages": "Мови",
"LabelLastBookAdded": "Останню книгу додано",
"LabelLastBookUpdated": "Останню книгу оновлено",
"LabelLastSeen": "Активність",
@@ -360,11 +375,12 @@
"LabelMatchExistingUsersByDescription": "Використовується для підключення наявних користувачів. Після підключення користувач отримає унікальний id від вашого сервісу SSO",
"LabelMediaPlayer": "Програвач медіа",
"LabelMediaType": "Тип медіа",
- "LabelMetadataOrderOfPrecedenceDescription": "Пріоритетніші джерела метаданих перезапишуть менш пріоритетні метадані",
- "LabelMetadataProvider": "Джерело метаданих",
"LabelMetaTag": "Метатег",
"LabelMetaTags": "Метатеги",
+ "LabelMetadataOrderOfPrecedenceDescription": "Пріоритетніші джерела метаданих перезапишуть менш пріоритетні метадані",
+ "LabelMetadataProvider": "Джерело метаданих",
"LabelMinute": "Хвилина",
+ "LabelMinutes": "Хвилини",
"LabelMissing": "Бракує",
"LabelMissingEbook": "Без електронної книги",
"LabelMissingSupplementaryEbook": "Без додаткової електронної книги",
@@ -376,24 +392,25 @@
"LabelNarrator": "Читець",
"LabelNarrators": "Читці",
"LabelNew": "Нове",
+ "LabelNewPassword": "Новий пароль",
"LabelNewestAuthors": "Нові автори",
"LabelNewestEpisodes": "Нові епізоди",
- "LabelNewPassword": "Новий пароль",
"LabelNextBackupDate": "Дата наступного резервного копіювання",
"LabelNextScheduledRun": "Наступний запланований запуск",
+ "LabelNoCustomMetadataProviders": "Без постачальників метаданих",
"LabelNoEpisodesSelected": "Не вибрано жодного епізоду",
- "LabelNotes": "Примітки",
"LabelNotFinished": "Незавершені",
+ "LabelNotStarted": "Не розпочато",
+ "LabelNotes": "Примітки",
"LabelNotificationAppriseURL": "URL Apprise",
"LabelNotificationAvailableVariables": "Доступні змінні",
"LabelNotificationBodyTemplate": "Шаблон сповіщення",
"LabelNotificationEvent": "Сповіщення про події",
+ "LabelNotificationTitleTemplate": "Шаблон заголовку",
"LabelNotificationsMaxFailedAttempts": "Ліміт невдалих спроб",
"LabelNotificationsMaxFailedAttemptsHelp": "Сповіщення буде вимкнено після багатьох невдалих надсилань",
"LabelNotificationsMaxQueueSize": "Ліміт розміру черги сповіщень",
"LabelNotificationsMaxQueueSizeHelp": "Події обмежені до 1 на секунду. Події буде проігноровано, якщо ліміт черги досягнуто. Це запобігає спаму сповіщеннями.",
- "LabelNotificationTitleTemplate": "Шаблон заголовку",
- "LabelNotStarted": "Не розпочато",
"LabelNumberOfBooks": "Кількість книг",
"LabelNumberOfEpisodes": "Кількість епізодів",
"LabelOpenIDAdvancedPermsClaimDescription": "Назва OpenID claim, що містить розширені дозволи на дії користувачів у додатку, які будуть застосовуватися до ролей, що не є адміністраторами (якщо налаштовано). Якщо у відповіді нема claim, у доступі до Audiobookshelf буде відмовлено. Якщо відсутня хоча б одна опція, відповідь буде вважатися хибною. Переконайтеся, що запит постачальника ідентифікаційних даних відповідає очікуваній структурі:",
@@ -403,6 +420,7 @@
"LabelOverwrite": "Перезаписати",
"LabelPassword": "Пароль",
"LabelPath": "Шлях",
+ "LabelPermanent": "Постійний",
"LabelPermissionsAccessAllLibraries": "Доступ до усіх бібліотек",
"LabelPermissionsAccessAllTags": "Доступ до усіх міток",
"LabelPermissionsAccessExplicitContent": "Доступ до відвертого вмісту",
@@ -412,12 +430,12 @@
"LabelPermissionsUpload": "Може завантажувати",
"LabelPersonalYearReview": "Ваші підсумки року ({0})",
"LabelPhotoPathURL": "Шлях/URL фото",
- "LabelPlaylists": "Списки відтворення",
"LabelPlayMethod": "Метод відтворення",
+ "LabelPlaylists": "Списки відтворення",
"LabelPodcast": "Подкаст",
- "LabelPodcasts": "Подкасти",
"LabelPodcastSearchRegion": "Регіон пошуку подкасту",
"LabelPodcastType": "Тип подкасту",
+ "LabelPodcasts": "Подкасти",
"LabelPort": "Порт",
"LabelPrefixesToIgnore": "Ігнорувати префікси (з урахуванням регістру)",
"LabelPreventIndexing": "Заборонити індексування вашого каналу каталогами подкастів iTunes та Google",
@@ -425,25 +443,28 @@
"LabelProgress": "Прогрес",
"LabelProvider": "Джерело",
"LabelPubDate": "Дата публікації",
- "LabelPublisher": "Видавець",
"LabelPublishYear": "Рік публікації",
- "LabelRead": "Читати",
- "LabelReadAgain": "Читати знову",
- "LabelReadEbookWithoutProgress": "Читати книгу без збереження прогресу",
- "LabelRecentlyAdded": "Нещодавно додані",
- "LabelRecentSeries": "Останні серії",
- "LabelRecommended": "Рекомендовані",
- "LabelRedo": "Повторити",
- "LabelRegion": "Регіон",
- "LabelReleaseDate": "Дата публікації",
- "LabelRemoveCover": "Видалити обкладинку",
- "LabelRowsPerPage": "Рядків на сторінку",
+ "LabelPublisher": "Видавець",
+ "LabelPublishers": "Видавці",
"LabelRSSFeedCustomOwnerEmail": "Користувацька електронна адреса власника",
"LabelRSSFeedCustomOwnerName": "Користувацьке ім'я власника",
"LabelRSSFeedOpen": "RSS-канал відкрито",
"LabelRSSFeedPreventIndexing": "Запобігати індексації",
"LabelRSSFeedSlug": "Назва RSS-каналу",
"LabelRSSFeedURL": "Адреса RSS-каналу",
+ "LabelRandomly": "Випадково",
+ "LabelReAddSeriesToContinueListening": "Заново додати серії до Продовжити слухати",
+ "LabelRead": "Читати",
+ "LabelReadAgain": "Читати знову",
+ "LabelReadEbookWithoutProgress": "Читати книгу без збереження прогресу",
+ "LabelRecentSeries": "Останні серії",
+ "LabelRecentlyAdded": "Нещодавно додані",
+ "LabelRecommended": "Рекомендовані",
+ "LabelRedo": "Повторити",
+ "LabelRegion": "Регіон",
+ "LabelReleaseDate": "Дата публікації",
+ "LabelRemoveCover": "Видалити обкладинку",
+ "LabelRowsPerPage": "Рядків на сторінку",
"LabelSearchTerm": "Пошуковий запит",
"LabelSearchTitle": "Пошук за назвою",
"LabelSearchTitleOrASIN": "Пошук назви або ASIN",
@@ -471,8 +492,8 @@
"LabelSettingsEnableWatcher": "Увімкнути спостерігача",
"LabelSettingsEnableWatcherForLibrary": "Увімкнути спостерігання тек бібліотеки",
"LabelSettingsEnableWatcherHelp": "Вмикає автоматичне додавання/оновлення елементів, коли спостерігаються зміни файлів. *Потребує перезавантаження сервера",
- "LabelSettingsEpubsAllowScriptedContent": "Allow scripted content in epubs",
- "LabelSettingsEpubsAllowScriptedContentHelp": "Allow epub files to execute scripts. It is recommended to keep this setting disabled unless you trust the source of the epub files.",
+ "LabelSettingsEpubsAllowScriptedContent": "Дозволити JavaScript-вміст у epub",
+ "LabelSettingsEpubsAllowScriptedContentHelp": "Дозволяти epub-файлам виконувати код. Вмикайте цей параметр лише якщо ви довіряєте джерелу epub-файлів.",
"LabelSettingsExperimentalFeatures": "Експериментальні функції",
"LabelSettingsExperimentalFeaturesHelp": "Функції в розробці, які потребують вашого відгуку та допомоги в тестуванні. Натисніть, щоб відкрити обговорення на Github.",
"LabelSettingsFindCovers": "Пошук обкладинок",
@@ -498,15 +519,19 @@
"LabelSettingsStoreMetadataWithItem": "Зберігати метадані з елементом",
"LabelSettingsStoreMetadataWithItemHelp": "За замовчуванням файли метаданих зберігаються у /metadata/items. Цей параметр увімкне збереження метаданих у теці елемента бібліотеки",
"LabelSettingsTimeFormat": "Формат часу",
+ "LabelShare": "Поділитися",
+ "LabelShareOpen": "Поділитися відкрито",
+ "LabelShareURL": "Поділитися URL",
"LabelShowAll": "Показати все",
"LabelShowSeconds": "Показувати секунди",
+ "LabelShowSubtitles": "Показати субтитри",
"LabelSize": "Розмір",
"LabelSleepTimer": "Таймер вимкнення",
"LabelSlug": "Назва",
"LabelStart": "Початок",
+ "LabelStartTime": "Час початку",
"LabelStarted": "Почато",
"LabelStartedAt": "Почато",
- "LabelStartTime": "Час початку",
"LabelStatsAudioTracks": "Аудіодоріжки",
"LabelStatsAuthors": "Автори",
"LabelStatsBestDay": "Найкращий день",
@@ -537,13 +562,17 @@
"LabelThemeDark": "Темна",
"LabelThemeLight": "Світла",
"LabelTimeBase": "Шкала часу",
+ "LabelTimeDurationXHours": "{0} години",
+ "LabelTimeDurationXMinutes": "{0} хвилини",
+ "LabelTimeDurationXSeconds": "{0} секунди",
+ "LabelTimeInMinutes": "Час у хвилинах",
"LabelTimeListened": "Часу прослухано",
"LabelTimeListenedToday": "Сьогодні прослухано",
"LabelTimeRemaining": "Лишилося: {0}",
"LabelTimeToShift": "На скільки секунд зсунути",
"LabelTitle": "Назва",
"LabelToolsEmbedMetadata": "Вбудувати метадані",
- "LabelToolsEmbedMetadataDescription": "Вбудувати метадані в аудіофайли, включно з обкладинками та главами",
+ "LabelToolsEmbedMetadataDescription": "Вбудувати метадані в аудіофайли, включно з обкладинками та главами.",
"LabelToolsMakeM4b": "Створити M4B-файл аудіокниги",
"LabelToolsMakeM4bDescription": "Створити .M4B-аудіокнигу з вбудованими метаданими, обкладинкою та главами.",
"LabelToolsSplitM4b": "Розділити M4B на MP3",
@@ -562,9 +591,9 @@
"LabelUnknown": "Невідомо",
"LabelUpdateCover": "Оновити обкладинку",
"LabelUpdateCoverHelp": "Дозволити перезапис наявних обкладинок обраних книг після віднайдення",
- "LabelUpdatedAt": "Оновлення",
"LabelUpdateDetails": "Оновити подробиці",
"LabelUpdateDetailsHelp": "Дозволити перезапис наявних подробиць обраних книг після віднайдення",
+ "LabelUpdatedAt": "Оновлення",
"LabelUploaderDragAndDrop": "Перетягніть файли або теки",
"LabelUploaderDropFiles": "Перетягніть файли",
"LabelUploaderItemFetchMetadataHelp": "Автоматично шукати назву, автора та серію",
@@ -576,9 +605,12 @@
"LabelVersion": "Версія",
"LabelViewBookmarks": "Переглянути закладки",
"LabelViewChapters": "Переглянути глави",
+ "LabelViewPlayerSettings": "Переглянути налаштування програвача",
"LabelViewQueue": "Переглянути чергу відтворення",
"LabelVolume": "Гучність",
"LabelWeekdaysToRun": "Виконувати у дні",
+ "LabelXBooks": "{0} книг",
+ "LabelXItems": "{0} елементів",
"LabelYearReviewHide": "Сховати підсумки року",
"LabelYearReviewShow": "Переглянути підсумки року",
"LabelYourAudiobookDuration": "Тривалість вашої аудіокниги",
@@ -588,10 +620,14 @@
"MessageAddToPlayerQueue": "Додати до черги відтворення",
"MessageAppriseDescription": "Щоб скористатися цією функцією, вам потрібно мати запущену Apprise API або API, що оброблятиме ті ж запити. Аби надсилати сповіщення, URL-адреса API Apprise мусить бути повною, наприклад, якщо ваш API розміщено за адресою http://192.168.1.1:8337, то необхідно вказати адресу http://192.168.1.1:8337/notify.",
"MessageBackupsDescription": "Резервні копії містять користувачів, прогрес, подробиці елементів бібліотеки, налаштування сервера та зображення з /metadata/items та /metadata/authors. Резервні копії не містять жодних файлів з тек бібліотеки.",
+ "MessageBackupsLocationEditNote": "Примітка: оновлення розташування резервної копії не переносить та не змінює існуючих копій",
+ "MessageBackupsLocationNoEditNote": "Примітка: розташування резервної копії встановлюється за допомогою змінної середовища та не може бути змінене тут.",
+ "MessageBackupsLocationPathEmpty": "Шлях розташування резервної копії не може бути порожнім",
"MessageBatchQuickMatchDescription": "Швидкий пошук спробує знайти відсутні обкладинки та метадані обраних елементів. Увімкніть налаштування нижче, аби дозволити заміну наявних обкладинок та/або метаданих під час швидкого пошуку.",
"MessageBookshelfNoCollections": "Ви не створили жодної добірки",
- "MessageBookshelfNoResultsForFilter": "Немає результатів з фільтром \"{0}: {1}\"",
"MessageBookshelfNoRSSFeeds": "Немає відкритих RSS-каналів",
+ "MessageBookshelfNoResultsForFilter": "Немає результатів з фільтром \"{0}: {1}\"",
+ "MessageBookshelfNoResultsForQuery": "Немає результатів за запитом",
"MessageBookshelfNoSeries": "Серії відсутні",
"MessageChapterEndIsAfter": "Кінець глави знаходиться після закінчення книги",
"MessageChapterErrorFirstNotZero": "Перша глава мусить починатися з 0",
@@ -612,7 +648,9 @@
"MessageConfirmMarkSeriesFinished": "Ви дійсно бажаєте позначити усі книги серії завершеними?",
"MessageConfirmMarkSeriesNotFinished": "Ви дійсно бажаєте позначити всі книги серії незавершеними?",
"MessageConfirmPurgeCache": "Очищення кешу видалить усю теку /metadata/cache.
Ви дійсно бажаєте видалити теку кешу?",
+ "MessageConfirmPurgeItemsCache": "Очищення кешу елементів видалить усю теку /metadata/cache/items. Ви певні?",
"MessageConfirmQuickEmbed": "Увага! Швидке вбудування не створює резервних копій ваших аудіо. Переконайтеся, що маєте копію ваших файлів.
Продовжити?",
+ "MessageConfirmReScanLibraryItems": "Ви дійсно бажаєте пересканувати елементи: {0}?",
"MessageConfirmRemoveAllChapters": "Ви дійсно бажаєте видалити усі глави?",
"MessageConfirmRemoveAuthor": "Ви дійсно бажаєте видалити автора \"{0}\"?",
"MessageConfirmRemoveCollection": "Ви дійсно бажаєте видалити добірку \"{0}\"?",
@@ -627,13 +665,13 @@
"MessageConfirmRenameTag": "Ви дійсно бажаєте замінити мітку \"{0}\" на \"{1}\" для усіх елементів?",
"MessageConfirmRenameTagMergeNote": "Примітка: така мітка вже існує, тож їх буде об'єднано.",
"MessageConfirmRenameTagWarning": "Увага! Вже існує схожа мітка у іншому регістрі \"{0}\".",
- "MessageConfirmReScanLibraryItems": "Ви дійсно бажаєте пересканувати елементи: {0}?",
"MessageConfirmSendEbookToDevice": "Ви дійсно хочете відправити на пристрій \"{2}\" електроні книги: {0}, \"{1}\"?",
"MessageDownloadingEpisode": "Завантаження епізоду",
"MessageDragFilesIntoTrackOrder": "Перетягніть файли до правильного порядку",
+ "MessageEmbedFailed": "Не вдалося вбудувати!",
"MessageEmbedFinished": "Вбудовано!",
"MessageEpisodesQueuedForDownload": "Епізодів у черзі завантаження: {0}",
- "MessageEreaderDevices": "To ensure delivery of ebooks, you may need to add the above email address as a valid sender for each device listed below.",
+ "MessageEreaderDevices": "Аби гарантувати отримання електронних книг, вам може знадобитися додати вказану вище адресу електронної пошти як правильного відправника на кожному з пристроїв зі списку нижче.",
"MessageFeedURLWillBe": "URL-адреса каналу буде {0}",
"MessageFetching": "Отримання...",
"MessageForceReScanDescription": "Просканує усі файли заново, неначе вперше. ID3-мітки, файли OPF та текстові файли будуть проскановані як нові.",
@@ -681,10 +719,10 @@
"MessageNoSeries": "Без серії",
"MessageNoTags": "Без міток",
"MessageNoTasksRunning": "Немає активних завдань",
- "MessageNotYetImplemented": "Ще не реалізовано",
- "MessageNoUpdateNecessary": "Оновлення не потрібно",
"MessageNoUpdatesWereNecessary": "Оновлень не потрібно",
"MessageNoUserPlaylists": "У вас немає списків відтворення",
+ "MessageNotYetImplemented": "Ще не реалізовано",
+ "MessageOpmlPreviewNote": "Примітка: це попередній перегляд OPML-файлу. Актуальна назва подкасту буде завантажена з RSS-каналу.",
"MessageOr": "або",
"MessagePauseChapter": "Призупинити відтворення глави",
"MessagePlayChapter": "Слухати початок глави",
@@ -703,6 +741,9 @@
"MessageSelected": "Вибрано: {0}",
"MessageServerCouldNotBeReached": "Не вдалося підключитися до сервера",
"MessageSetChaptersFromTracksDescription": "Створити глави з аудіодоріжок, встановивши назви файлів за заголовки",
+ "MessageShareExpirationWillBe": "Термін сплине за {0}",
+ "MessageShareExpiresIn": "Сплине за {0}",
+ "MessageShareURLWillBe": "Поширюваний URL - {0}",
"MessageStartPlaybackAtTime": "Почати відтворення \"{0}\" з {1}?",
"MessageThinking": "Думаю…",
"MessageUploaderItemFailed": "Не вдалося завантажити",
@@ -726,11 +767,26 @@
"PlaceholderNewPlaylist": "Нова назва списку",
"PlaceholderSearch": "Пошук...",
"PlaceholderSearchEpisode": "Шукати епізод...",
- "ToastAccountUpdateFailed": "Не вдалося оновити профіль",
+ "StatsAuthorsAdded": "авторів додано",
+ "StatsBooksAdded": "книг додано",
+ "StatsBooksAdditional": "Було додано…",
+ "StatsBooksFinished": "книг завершено",
+ "StatsBooksFinishedThisYear": "Дещо з завершеного цьогоріч…",
+ "StatsBooksListenedTo": "книг, які слухали",
+ "StatsCollectionGrewTo": "Ваша колекція книг зросла до…",
+ "StatsSessions": "сесій",
+ "StatsSpentListening": "слухали",
+ "StatsTopAuthor": "УЛЮБЛЕНИЙ АВТОР",
+ "StatsTopAuthors": "УЛЮБЛЕНІ АВТОРИ",
+ "StatsTopGenre": "УЛЮБЛЕНИЙ ЖАНР",
+ "StatsTopGenres": "УЛЮБЛЕНІ ЖАНРИ",
+ "StatsTopMonth": "НАЙКРАЩИЙ МІСЯЦЬ",
+ "StatsTopNarrator": "УЛЮБЛЕНИЙ ЧИТЕЦЬ",
+ "StatsTopNarrators": "УЛЮБЛЕНІ ЧИТЦІ",
+ "StatsTotalDuration": "Загальною довжиною…",
+ "StatsYearInReview": "ОГЛЯД РОКУ",
"ToastAccountUpdateSuccess": "Профіль оновлено",
- "ToastAuthorImageRemoveFailed": "Не вдалося видалити зображення",
"ToastAuthorImageRemoveSuccess": "Фото автора видалено",
- "ToastAuthorUpdateFailed": "Не вдалося оновити автора",
"ToastAuthorUpdateMerged": "Автора об'єднано",
"ToastAuthorUpdateSuccess": "Автора оновлено",
"ToastAuthorUpdateSuccessNoImageFound": "Автора оновлено (фото не знайдено)",
@@ -745,28 +801,21 @@
"ToastBatchUpdateSuccess": "Обрані успішно оновлено",
"ToastBookmarkCreateFailed": "Не вдалося створити закладку",
"ToastBookmarkCreateSuccess": "Закладку додано",
- "ToastBookmarkRemoveFailed": "Не вдалося видалити закладку",
"ToastBookmarkRemoveSuccess": "Закладку видалено",
- "ToastBookmarkUpdateFailed": "Не вдалося оновити закладку",
"ToastBookmarkUpdateSuccess": "Закладку оновлено",
"ToastCachePurgeFailed": "Не вдалося очистити кеш",
"ToastCachePurgeSuccess": "Кеш очищено",
"ToastChaptersHaveErrors": "Глави містять помилки",
"ToastChaptersMustHaveTitles": "Глави повинні мати назви",
- "ToastCollectionItemsRemoveFailed": "Не вдалося видалити елемент(и) з добірки",
"ToastCollectionItemsRemoveSuccess": "Елемент(и) видалено з добірки",
- "ToastCollectionRemoveFailed": "Не вдалося видалити добірку",
"ToastCollectionRemoveSuccess": "Добірку видалено",
- "ToastCollectionUpdateFailed": "Не вдалося оновити добірку",
"ToastCollectionUpdateSuccess": "Добірку оновлено",
"ToastDeleteFileFailed": "Не вдалося видалити файл",
"ToastDeleteFileSuccess": "Файл видалено",
+ "ToastErrorCannotShare": "Не можна типово поширити на цей пристрій",
"ToastFailedToLoadData": "Не вдалося завантажити дані",
- "ToastItemCoverUpdateFailed": "Не вдалося оновити обкладинку",
"ToastItemCoverUpdateSuccess": "Обкладинку елемента оновлено",
- "ToastItemDetailsUpdateFailed": "Не вдалося оновити подробиці елемента",
"ToastItemDetailsUpdateSuccess": "Подробиці про елемент оновлено",
- "ToastItemDetailsUpdateUnneeded": "Оновлення подробиць непотрібне",
"ToastItemMarkedAsFinishedFailed": "Не вдалося позначити як завершене",
"ToastItemMarkedAsFinishedSuccess": "Елемент позначено як завершений",
"ToastItemMarkedAsNotFinishedFailed": "Не вдалося позначити незавершеним",
@@ -777,25 +826,21 @@
"ToastLibraryDeleteSuccess": "Бібліотеку видалено",
"ToastLibraryScanFailedToStart": "Не вдалося розпочати сканування",
"ToastLibraryScanStarted": "Почалося сканування бібліотеки",
- "ToastLibraryUpdateFailed": "Не вдалося оновити бібліотеку",
"ToastLibraryUpdateSuccess": "Бібліотеку \"{0}\" оновлено",
"ToastPlaylistCreateFailed": "Не вдалося створити список",
"ToastPlaylistCreateSuccess": "Список відтворення створено",
- "ToastPlaylistRemoveFailed": "Не вдалося видалити список",
"ToastPlaylistRemoveSuccess": "Список відтворення видалено",
- "ToastPlaylistUpdateFailed": "Не вдалося оновити список",
"ToastPlaylistUpdateSuccess": "Список відтворення оновлено",
"ToastPodcastCreateFailed": "Не вдалося створити подкаст",
"ToastPodcastCreateSuccess": "Подкаст успішно створено",
- "ToastRemoveItemFromCollectionFailed": "Не вдалося видалити елемент із добірки",
- "ToastRemoveItemFromCollectionSuccess": "Елемент видалено з добірки",
"ToastRSSFeedCloseFailed": "Не вдалося закрити RSS-канал",
"ToastRSSFeedCloseSuccess": "RSS-канал закрито",
+ "ToastRemoveItemFromCollectionFailed": "Не вдалося видалити елемент із добірки",
+ "ToastRemoveItemFromCollectionSuccess": "Елемент видалено з добірки",
"ToastSendEbookToDeviceFailed": "Не вдалося надіслати електронну книгу на пристрій",
"ToastSendEbookToDeviceSuccess": "Електронну книгу надіслано на пристрій \"{0}\"",
"ToastSeriesUpdateFailed": "Не вдалося оновити серію",
"ToastSeriesUpdateSuccess": "Серію успішно оновлено",
- "ToastServerSettingsUpdateFailed": "Не вдалося оновити налаштування сервера",
"ToastServerSettingsUpdateSuccess": "Налаштування сервера оновлено",
"ToastSessionDeleteFailed": "Не вдалося видалити сесію",
"ToastSessionDeleteSuccess": "Сесію видалено",
@@ -803,8 +848,7 @@
"ToastSocketDisconnected": "Сокет від'єднано",
"ToastSocketFailedToConnect": "Не вдалося під'єднатися до сокета",
"ToastSortingPrefixesEmptyError": "Мусить мати хоча б 1 префікс сортування",
- "ToastSortingPrefixesUpdateFailed": "Не вдалося оновити префікси сортування",
"ToastSortingPrefixesUpdateSuccess": "Префікси сортування оновлено ({0})",
"ToastUserDeleteFailed": "Не вдалося видалити користувача",
"ToastUserDeleteSuccess": "Користувача видалено"
-}
\ No newline at end of file
+}
diff --git a/client/strings/vi-vn.json b/client/strings/vi-vn.json
index 7c6d09b05..8b0ca165c 100644
--- a/client/strings/vi-vn.json
+++ b/client/strings/vi-vn.json
@@ -27,7 +27,6 @@
"ButtonEdit": "Chỉnh Sửa",
"ButtonEditChapters": "Chỉnh Sửa Chương",
"ButtonEditPodcast": "Chỉnh Sửa Podcast",
- "ButtonForceReScan": "Force Re-Scan",
"ButtonFullPath": "Đường Dẫn Đầy Đủ",
"ButtonHide": "Ẩn",
"ButtonHome": "Trang Chủ",
@@ -45,7 +44,6 @@
"ButtonNevermind": "Không Sao",
"ButtonNext": "Tiếp Theo",
"ButtonNextChapter": "Chương Tiếp Theo",
- "ButtonOk": "Ok",
"ButtonOpenFeed": "Mở Feed",
"ButtonOpenManager": "Mở Quản Lý",
"ButtonPause": "Tạm Dừng",
@@ -56,13 +54,11 @@
"ButtonPreviousChapter": "Chương Trước",
"ButtonPurgeAllCache": "Xóa Sạch Tất Cả Bộ Nhớ Cache",
"ButtonPurgeItemsCache": "Xóa Sạch Bộ Nhớ Cache Các Mục",
- "ButtonPurgeMediaProgress": "Xóa Sạch Tiến Trình Phương Tiện",
"ButtonQueueAddItem": "Thêm vào hàng đợi",
"ButtonQueueRemoveItem": "Xóa khỏi hàng đợi",
"ButtonQuickMatch": "Khớp Nhanh",
+ "ButtonReScan": "Quét Lại",
"ButtonRead": "Đọc",
- "ButtonReadLess": "Read less",
- "ButtonReadMore": "Read more",
"ButtonRefresh": "Làm Mới",
"ButtonRemove": "Xóa",
"ButtonRemoveAll": "Xóa Tất Cả",
@@ -70,7 +66,6 @@
"ButtonRemoveFromContinueListening": "Xóa khỏi Tiếp Tục Nghe",
"ButtonRemoveFromContinueReading": "Xóa khỏi Tiếp Tục Đọc",
"ButtonRemoveSeriesFromContinueSeries": "Xóa Series khỏi Tiếp Tục Series",
- "ButtonReScan": "Quét Lại",
"ButtonReset": "Đặt Lại",
"ButtonResetToDefault": "Đặt Lại về Mặc Định",
"ButtonRestore": "Khôi Phục",
@@ -81,7 +76,6 @@
"ButtonScanLibrary": "Quét Thư Viện",
"ButtonSearch": "Tìm Kiếm",
"ButtonSelectFolderPath": "Chọn Đường Dẫn Thư Mục",
- "ButtonSeries": "Series",
"ButtonSetChaptersFromTracks": "Đặt chương từ các track",
"ButtonShare": "Chia Sẻ",
"ButtonShiftTimes": "Dời Thời Gian",
@@ -104,8 +98,8 @@
"HeaderAccount": "Tài Khoản",
"HeaderAdvanced": "Nâng Cao",
"HeaderAppriseNotificationSettings": "Cài Đặt Thông Báo Apprise",
- "HeaderAudiobookTools": "Công Cụ Quản Lý Tệp Truyện Nói",
"HeaderAudioTracks": "Các Track Âm Thanh",
+ "HeaderAudiobookTools": "Công Cụ Quản Lý Tệp Truyện Nói",
"HeaderAuthentication": "Xác Thực",
"HeaderBackups": "Bản Sao Lưu",
"HeaderChangePassword": "Thay Đổi Mật Khẩu",
@@ -119,7 +113,6 @@
"HeaderDetails": "Chi Tiết",
"HeaderDownloadQueue": "Hàng Đợi Tải Xuống",
"HeaderEbookFiles": "Tệp Ebook",
- "HeaderEmail": "Email",
"HeaderEmailSettings": "Cài Đặt Email",
"HeaderEpisodes": "Tập Phim",
"HeaderEreaderDevices": "Thiết Bị Đọc Sách",
@@ -157,11 +150,10 @@
"HeaderPlaylistItems": "Các Mục Danh Sách Phát",
"HeaderPodcastsToAdd": "Podcasts để Thêm",
"HeaderPreviewCover": "Xem Trước Bìa",
- "HeaderRemoveEpisode": "Xóa Tập",
- "HeaderRemoveEpisodes": "Xóa {0} Tập",
"HeaderRSSFeedGeneral": "Chi Tiết RSS",
"HeaderRSSFeedIsOpen": "RSS Feed Đã Mở",
- "HeaderRSSFeeds": "RSS Feeds",
+ "HeaderRemoveEpisode": "Xóa Tập",
+ "HeaderRemoveEpisodes": "Xóa {0} Tập",
"HeaderSavedMediaProgress": "Tiến Trình Phương Tiện Đã Lưu",
"HeaderSchedule": "Lịch Trình",
"HeaderScheduleLibraryScans": "Lên Lịch Quét Tự Động Thư Viện",
@@ -189,55 +181,23 @@
"HeaderYearReview": "Năm {0} trong Xem Xét",
"HeaderYourStats": "Thống Kê Của Bạn",
"LabelAbridged": "Rút Gọn",
- "LabelAbridgedChecked": "Abridged (checked)",
- "LabelAbridgedUnchecked": "Unabridged (unchecked)",
- "LabelAccessibleBy": "Accessible by",
"LabelAccountType": "Loại Tài Khoản",
"LabelAccountTypeAdmin": "Quản Trị Viên",
"LabelAccountTypeGuest": "Khách",
"LabelAccountTypeUser": "Người Dùng",
"LabelActivity": "Hoạt Động",
- "LabelAdded": "Đã Thêm",
- "LabelAddedAt": "Đã Thêm Lúc",
"LabelAddToCollection": "Thêm vào Bộ Sưu Tập",
"LabelAddToCollectionBatch": "Thêm {0} Sách vào Bộ Sưu Tập",
"LabelAddToPlaylist": "Thêm vào Danh Sách Phát",
- "LabelAddToPlaylistBatch": "Add {0} Items to Playlist",
- "LabelAdminUsersOnly": "Admin users only",
- "LabelAll": "All",
- "LabelAllUsers": "All Users",
- "LabelAllUsersExcludingGuests": "All users excluding guests",
- "LabelAllUsersIncludingGuests": "All users including guests",
- "LabelAlreadyInYourLibrary": "Already in your library",
- "LabelAppend": "Append",
- "LabelAuthor": "Author",
- "LabelAuthorFirstLast": "Author (First Last)",
- "LabelAuthorLastFirst": "Author (Last, First)",
- "LabelAuthors": "Authors",
- "LabelAutoDownloadEpisodes": "Auto Download Episodes",
- "LabelAutoFetchMetadata": "Auto Fetch Metadata",
- "LabelAutoFetchMetadataHelp": "Fetches metadata for title, author, and series to streamline uploading. Additional metadata may have to be matched after upload.",
- "LabelAutoLaunch": "Auto Launch",
- "LabelAutoLaunchDescription": "Redirect to the auth provider automatically when navigating to the login page (manual override path /login?autoLaunch=0)",
- "LabelAutoRegister": "Auto Register",
- "LabelAutoRegisterDescription": "Automatically create new users after logging in",
- "LabelBackToUser": "Back to User",
- "LabelBackupLocation": "Backup Location",
- "LabelBackupsEnableAutomaticBackups": "Enable automatic backups",
- "LabelBackupsEnableAutomaticBackupsHelp": "Backups saved in /metadata/backups",
+ "LabelAddedAt": "Đã Thêm Lúc",
"LabelBackupsMaxBackupSize": "Maximum backup size (in GB)",
- "LabelBackupsMaxBackupSizeHelp": "As a safeguard against misconfiguration, backups will fail if they exceed the configured size.",
- "LabelBackupsNumberToKeep": "Number of backups to keep",
- "LabelBackupsNumberToKeepHelp": "Only 1 backup will be removed at a time so if you already have more backups than this you should manually remove them.",
- "LabelBitrate": "Bitrate",
"LabelBooks": "Sách",
"LabelButtonText": "Nút Văn Bản",
- "LabelByAuthor": "by {0}",
"LabelChangePassword": "Đổi Mật Khẩu",
"LabelChannels": "Kênh",
+ "LabelChapterTitle": "Tiêu đề Chương",
"LabelChapters": "Chương",
"LabelChaptersFound": "chương được tìm thấy",
- "LabelChapterTitle": "Tiêu đề Chương",
"LabelClickForMoreInfo": "Nhấn để biết thêm thông tin",
"LabelClosePlayer": "Đóng trình phát",
"LabelCodec": "Mã hóa",
@@ -270,14 +230,9 @@
"LabelDownload": "Tải Xuống",
"LabelDownloadNEpisodes": "Tải Xuống {0} Tập",
"LabelDuration": "Thời Lượng",
- "LabelDurationComparisonExactMatch": "(exact match)",
- "LabelDurationComparisonLonger": "({0} longer)",
- "LabelDurationComparisonShorter": "({0} shorter)",
"LabelDurationFound": "Thời lượng được tìm thấy:",
- "LabelEbook": "Ebook",
"LabelEbooks": "Các Ebook",
"LabelEdit": "Chỉnh Sửa",
- "LabelEmail": "Email",
"LabelEmailSettingsFromAddress": "Địa chỉ Gửi từ",
"LabelEmailSettingsSecure": "Bảo Mật",
"LabelEmailSettingsSecureHelp": "Nếu đúng thì kết nối sẽ sử dụng TLS khi kết nối đến máy chủ. Nếu sai thì TLS sẽ được sử dụng nếu máy chủ hỗ trợ phần mở rộng STARTTLS. Trong hầu hết các trường hợp, hãy đặt giá trị này là đúng nếu bạn kết nối đến cổng 465. Đối với cổng 587 hoặc 25, giữ nó sai. (từ nodemailer.com/smtp/#authentication)",
@@ -290,8 +245,6 @@
"LabelEpisodeType": "Loại Tập",
"LabelExample": "Ví Dụ",
"LabelExplicit": "Rõ Ràng",
- "LabelExplicitChecked": "Explicit (checked)",
- "LabelExplicitUnchecked": "Not Explicit (unchecked)",
"LabelFeedURL": "URL Feed",
"LabelFetchingMetadata": "Đang Lấy Metadata",
"LabelFile": "Tệp",
@@ -319,9 +272,9 @@
"LabelHour": "Giờ",
"LabelIcon": "Biểu tượng",
"LabelImageURLFromTheWeb": "URL hình ảnh từ web",
+ "LabelInProgress": "Đang tiến hành",
"LabelIncludeInTracklist": "Bao gồm trong danh sách phát",
"LabelIncomplete": "Chưa hoàn thành",
- "LabelInProgress": "Đang tiến hành",
"LabelInterval": "Khoảng cách",
"LabelIntervalCustomDailyWeekly": "Tuỳ chỉnh hàng ngày/hàng tuần",
"LabelIntervalEvery12Hours": "Mỗi 12 giờ",
@@ -360,10 +313,10 @@
"LabelMatchExistingUsersByDescription": "Sử dụng để kết nối người dùng hiện có. Khi kết nối, người dùng sẽ được kết hợp bằng một ID duy nhất từ nhà cung cấp SSO của bạn",
"LabelMediaPlayer": "Trình phát đa phương tiện",
"LabelMediaType": "Loại phương tiện",
- "LabelMetadataOrderOfPrecedenceDescription": "Nguồn siêu dữ liệu ưu tiên cao hơn sẽ ghi đè lên các nguồn siêu dữ liệu ưu tiên thấp hơn",
- "LabelMetadataProvider": "Nhà cung cấp siêu dữ liệu",
"LabelMetaTag": "Thẻ Meta",
"LabelMetaTags": "Các thẻ Meta",
+ "LabelMetadataOrderOfPrecedenceDescription": "Nguồn siêu dữ liệu ưu tiên cao hơn sẽ ghi đè lên các nguồn siêu dữ liệu ưu tiên thấp hơn",
+ "LabelMetadataProvider": "Nhà cung cấp siêu dữ liệu",
"LabelMinute": "Phút",
"LabelMissing": "Thiếu",
"LabelMissingEbook": "Không có ebook",
@@ -376,29 +329,26 @@
"LabelNarrator": "Người kể",
"LabelNarrators": "Các người kể",
"LabelNew": "Mới",
+ "LabelNewPassword": "Mật khẩu mới",
"LabelNewestAuthors": "Nhà văn mới nhất",
"LabelNewestEpisodes": "Tập mới nhất",
- "LabelNewPassword": "Mật khẩu mới",
"LabelNextBackupDate": "Ngày sao lưu tiếp theo",
"LabelNextScheduledRun": "Chạy tiếp theo theo lịch trình",
"LabelNoEpisodesSelected": "Không có tập nào được chọn",
- "LabelNotes": "Ghi chú",
"LabelNotFinished": "Chưa hoàn thành",
+ "LabelNotStarted": "Chưa bắt đầu",
+ "LabelNotes": "Ghi chú",
"LabelNotificationAppriseURL": "URL(s) thông báo",
"LabelNotificationAvailableVariables": "Biến có sẵn",
"LabelNotificationBodyTemplate": "Mẫu Nội dung",
"LabelNotificationEvent": "Sự kiện Thông báo",
+ "LabelNotificationTitleTemplate": "Mẫu Tiêu đề",
"LabelNotificationsMaxFailedAttempts": "Số lần thất bại tối đa",
"LabelNotificationsMaxFailedAttemptsHelp": "Thông báo sẽ bị vô hiệu hóa sau khi thất bại gửi số lần này",
"LabelNotificationsMaxQueueSize": "Kích thước hàng đợi tối đa cho sự kiện thông báo",
"LabelNotificationsMaxQueueSizeHelp": "Các sự kiện bị giới hạn mỗi giây chỉ gửi 1 lần. Các sự kiện sẽ bị bỏ qua nếu hàng đợi đạt kích thước tối đa. Điều này ngăn chặn spam thông báo.",
- "LabelNotificationTitleTemplate": "Mẫu Tiêu đề",
- "LabelNotStarted": "Chưa bắt đầu",
"LabelNumberOfBooks": "Số lượng Sách",
"LabelNumberOfEpisodes": "# của Tập",
- "LabelOpenIDAdvancedPermsClaimDescription": "Name of the OpenID claim that contains advanced permissions for user actions within the application which will apply to non-admin roles (if configured). If the claim is missing from the response, access to ABS will be denied. If a single option is missing, it will be treated as false. Ensure the identity provider's claim matches the expected structure:",
- "LabelOpenIDClaims": "Leave the following options empty to disable advanced group and permissions assignment, automatically assigning 'User' group then.",
- "LabelOpenIDGroupClaimDescription": "Name of the OpenID claim that contains a list of the user's groups. Commonly referred to as groups. If configured, the application will automatically assign roles based on the user's group memberships, provided that these groups are named case-insensitively 'admin', 'user', or 'guest' in the claim. The claim should contain a list, and if a user belongs to multiple groups, the application will assign the role corresponding to the highest level of access. If no group matches, access will be denied.",
"LabelOpenRSSFeed": "Mở RSS Feed",
"LabelOverwrite": "Ghi đè",
"LabelPassword": "Mật khẩu",
@@ -412,12 +362,11 @@
"LabelPermissionsUpload": "Có Thể Tải Lên",
"LabelPersonalYearReview": "Năm của Bạn trong Bài Đánh Giá ({0})",
"LabelPhotoPathURL": "Đường dẫn/URL ảnh",
- "LabelPlaylists": "Danh sách phát",
"LabelPlayMethod": "Phương pháp phát",
- "LabelPodcast": "Podcast",
- "LabelPodcasts": "Các podcast",
+ "LabelPlaylists": "Danh sách phát",
"LabelPodcastSearchRegion": "Vùng tìm kiếm podcast",
"LabelPodcastType": "Loại Podcast",
+ "LabelPodcasts": "Các podcast",
"LabelPort": "Cổng",
"LabelPrefixesToIgnore": "Tiền tố để bỏ qua (không phân biệt chữ hoa/chữ thường)",
"LabelPreventIndexing": "Ngăn chặn feed của bạn được chỉ mục bởi thư mục podcast của iTunes và Google",
@@ -425,30 +374,29 @@
"LabelProgress": "Tiến độ",
"LabelProvider": "Nhà cung cấp",
"LabelPubDate": "Ngày Xuất bản",
- "LabelPublisher": "Nhà xuất bản",
"LabelPublishYear": "Năm Xuất bản",
- "LabelRead": "Đọc",
- "LabelReadAgain": "Đọc lại",
- "LabelReadEbookWithoutProgress": "Đọc ebook mà không giữ tiến độ",
- "LabelRecentlyAdded": "Gần đây thêm vào",
- "LabelRecentSeries": "Loạt phim gần đây",
- "LabelRecommended": "Được khuyến nghị",
- "LabelRedo": "Làm lại",
- "LabelRegion": "Khu vực",
- "LabelReleaseDate": "Ngày Phát hành",
- "LabelRemoveCover": "Xóa ảnh bìa",
- "LabelRowsPerPage": "Số dòng mỗi trang",
+ "LabelPublisher": "Nhà xuất bản",
"LabelRSSFeedCustomOwnerEmail": "Email chủ sở hữu tùy chỉnh",
"LabelRSSFeedCustomOwnerName": "Tên chủ sở hữu tùy chỉnh",
"LabelRSSFeedOpen": "Mở RSS Feed",
"LabelRSSFeedPreventIndexing": "Ngăn chặn Chỉ mục RSS Feed",
"LabelRSSFeedSlug": "Slug RSS Feed",
"LabelRSSFeedURL": "URL RSS Feed",
+ "LabelRead": "Đọc",
+ "LabelReadAgain": "Đọc lại",
+ "LabelReadEbookWithoutProgress": "Đọc ebook mà không giữ tiến độ",
+ "LabelRecentSeries": "Loạt phim gần đây",
+ "LabelRecentlyAdded": "Gần đây thêm vào",
+ "LabelRecommended": "Được khuyến nghị",
+ "LabelRedo": "Làm lại",
+ "LabelRegion": "Khu vực",
+ "LabelReleaseDate": "Ngày Phát hành",
+ "LabelRemoveCover": "Xóa ảnh bìa",
+ "LabelRowsPerPage": "Số dòng mỗi trang",
"LabelSearchTerm": "Thuật ngữ tìm kiếm",
"LabelSearchTitle": "Tìm kiếm Tiêu đề",
"LabelSearchTitleOrASIN": "Tìm kiếm Tiêu đề hoặc ASIN",
"LabelSeason": "Mùa",
- "LabelSelectAll": "Select all",
"LabelSelectAllEpisodes": "Chọn tất cả các tập",
"LabelSelectEpisodesShowing": "Chọn {0} tập đang hiển thị",
"LabelSelectUsers": "Chọn người dùng",
@@ -471,8 +419,6 @@
"LabelSettingsEnableWatcher": "Bật Watcher",
"LabelSettingsEnableWatcherForLibrary": "Bật watcher thư mục cho thư viện",
"LabelSettingsEnableWatcherHelp": "Bật chức năng tự động thêm/cập nhật các mục khi phát hiện thay đổi tập tin. *Yêu cầu khởi động lại máy chủ",
- "LabelSettingsEpubsAllowScriptedContent": "Allow scripted content in epubs",
- "LabelSettingsEpubsAllowScriptedContentHelp": "Allow epub files to execute scripts. It is recommended to keep this setting disabled unless you trust the source of the epub files.",
"LabelSettingsExperimentalFeatures": "Tính năng thử nghiệm",
"LabelSettingsExperimentalFeaturesHelp": "Các tính năng đang phát triển có thể cần phản hồi của bạn và sự giúp đỡ trong thử nghiệm. Nhấp để mở thảo luận trên github.",
"LabelSettingsFindCovers": "Tìm ảnh bìa",
@@ -481,8 +427,6 @@
"LabelSettingsHideSingleBookSeriesHelp": "Các loạt sách chỉ có một cuốn sách sẽ được ẩn khỏi trang loạt sách và kệ trang chủ.",
"LabelSettingsHomePageBookshelfView": "Trang chủ sử dụng chế độ xem kệ sách",
"LabelSettingsLibraryBookshelfView": "Thư viện sử dụng chế độ xem kệ sách",
- "LabelSettingsOnlyShowLaterBooksInContinueSeries": "Skip earlier books in Continue Series",
- "LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "The Continue Series home page shelf shows the first book not started in series that have at least one book finished and no books in progress. Enabling this setting will continue series from the furthest completed book instead of the first book not started.",
"LabelSettingsParseSubtitles": "Phân tích phụ đề",
"LabelSettingsParseSubtitlesHelp": "Trích xuất phụ đề từ tên thư mục sách nói. Phụ đề phải được tách bằng \" - \" i.e. \"Book Title - A Subtitle Here\" có phụ đề \"A Subtitle Here\"",
"LabelSettingsPreferMatchedMetadata": "Ưu tiên siêu dữ liệu phù hợp",
@@ -499,15 +443,12 @@
"LabelSettingsStoreMetadataWithItemHelp": "Theo mặc định, các tệp siêu dữ liệu được lưu trữ trong /metadata/items, bật cài đặt này sẽ lưu trữ các tệp siêu dữ liệu trong các thư mục mục của thư viện bạn",
"LabelSettingsTimeFormat": "Định dạng Thời gian",
"LabelShowAll": "Hiển thị Tất cả",
- "LabelShowSeconds": "Show seconds",
"LabelSize": "Kích thước",
"LabelSleepTimer": "Hẹn giờ tắt",
- "LabelSlug": "Slug",
"LabelStart": "Bắt đầu",
+ "LabelStartTime": "Thời gian bắt đầu",
"LabelStarted": "Đã bắt đầu",
"LabelStartedAt": "Bắt đầu vào",
- "LabelStartTime": "Thời gian bắt đầu",
- "LabelStatsAudioTracks": "Audio Tracks",
"LabelStatsAuthors": "Tác giả",
"LabelStatsBestDay": "Ngày tốt nhất",
"LabelStatsDailyAverage": "Trung bình hàng ngày",
@@ -562,9 +503,9 @@
"LabelUnknown": "Không xác định",
"LabelUpdateCover": "Cập nhật ảnh bìa",
"LabelUpdateCoverHelp": "Cho phép ghi đè lên các ảnh bìa hiện có cho các cuốn sách được chọn khi tìm thấy một kết hợp",
- "LabelUpdatedAt": "Cập nhật lúc",
"LabelUpdateDetails": "Cập nhật chi tiết",
"LabelUpdateDetailsHelp": "Cho phép ghi đè lên các chi tiết hiện có cho các cuốn sách được chọn khi tìm thấy một kết hợp",
+ "LabelUpdatedAt": "Cập nhật lúc",
"LabelUploaderDragAndDrop": "Kéo và thả tệp hoặc thư mục",
"LabelUploaderDropFiles": "Thả tệp",
"LabelUploaderItemFetchMetadataHelp": "Tự động lấy tiêu đề, tác giả và loạt",
@@ -590,8 +531,8 @@
"MessageBackupsDescription": "Bản sao bao gồm người dùng, tiến độ của người dùng, chi tiết mục thư viện, cài đặt máy chủ và hình ảnh được lưu trữ trong /metadata/items & /metadata/authors. Bản sao không bao gồm bất kỳ tệp nào được lưu trữ trong các thư mục thư viện của bạn.",
"MessageBatchQuickMatchDescription": "Quick Match sẽ cố gắng thêm các ảnh bìa và siêu dữ liệu bị thiếu cho các mục đã chọn. Bật các tùy chọn dưới đây để cho phép Quick Match ghi đè lên các ảnh bìa hiện có và / hoặc siêu dữ liệu.",
"MessageBookshelfNoCollections": "Bạn chưa tạo bất kỳ bộ sưu tập nào",
- "MessageBookshelfNoResultsForFilter": "Không có Kết quả cho bộ lọc \"{0}: {1}\"",
"MessageBookshelfNoRSSFeeds": "Không có nguồn cung cấp RSS nào đang mở",
+ "MessageBookshelfNoResultsForFilter": "Không có Kết quả cho bộ lọc \"{0}: {1}\"",
"MessageBookshelfNoSeries": "Bạn không có bộ sách",
"MessageChapterEndIsAfter": "Kết thúc chương sau khi kết thúc sách nói của bạn",
"MessageChapterErrorFirstNotZero": "Chương đầu tiên phải bắt đầu từ 0",
@@ -611,8 +552,8 @@
"MessageConfirmMarkAllEpisodesNotFinished": "Bạn có chắc chắn muốn đánh dấu tất cả các tập phim chưa kết thúc không?",
"MessageConfirmMarkSeriesFinished": "Bạn có chắc chắn muốn đánh dấu tất cả các sách trong loạt sách này đã kết thúc không?",
"MessageConfirmMarkSeriesNotFinished": "Bạn có chắc chắn muốn đánh dấu tất cả các sách trong loạt sách này chưa kết thúc không?",
- "MessageConfirmPurgeCache": "Purge cache will delete the entire directory at /metadata/cache.
Are you sure you want to remove the cache directory?",
"MessageConfirmQuickEmbed": "Cảnh báo! Quick embed sẽ không sao lưu các tệp âm thanh của bạn. Đảm bảo bạn có một bản sao lưu của các tệp âm thanh của bạn.
Are you sure you want to remove the cache directory?",
+ "MessageConfirmNotificationTestTrigger": "使用测试数据触发此通知吗?",
+ "MessageConfirmPurgeCache": "清除缓存将删除 /metadata/cache 整个目录.
Are you sure you want to remove the cache directory?",
"MessageConfirmQuickEmbed": "警告! 快速嵌入不會備份你的音頻檔案. 確保你有音頻檔案的備份.
你是否想繼續嗎?",
+ "MessageConfirmReScanLibraryItems": "你確定要重新掃描 {0} 個項目嗎?",
"MessageConfirmRemoveAllChapters": "你確定要移除所有章節嗎?",
"MessageConfirmRemoveAuthor": "你確定要刪除作者 \"{0}\"?",
"MessageConfirmRemoveCollection": "你確定要移除收藏 \"{0}\"?",
@@ -627,13 +596,11 @@
"MessageConfirmRenameTag": "你確定要將所有項目標籤 \"{0}\" 重命名到 \"{1}\"?",
"MessageConfirmRenameTagMergeNote": "注意: 該標籤已經存在, 因此它們將被合併.",
"MessageConfirmRenameTagWarning": "警告! 已經存在有大小寫不同的類似標籤 \"{0}\".",
- "MessageConfirmReScanLibraryItems": "你確定要重新掃描 {0} 個項目嗎?",
"MessageConfirmSendEbookToDevice": "你確定要發送 {0} 電子書 \"{1}\" 到設備 \"{2}\"?",
"MessageDownloadingEpisode": "正在下載劇集",
"MessageDragFilesIntoTrackOrder": "將檔案拖動到正確的音軌順序",
"MessageEmbedFinished": "嵌入完成!",
"MessageEpisodesQueuedForDownload": "{0} 個劇集排隊等待下載",
- "MessageEreaderDevices": "To ensure delivery of ebooks, you may need to add the above email address as a valid sender for each device listed below.",
"MessageFeedURLWillBe": "源 URL 將改為 {0}",
"MessageFetching": "正在獲取...",
"MessageForceReScanDescription": "將像重新掃描一樣再次掃描所有檔案. 音頻檔 ID3 標籤, OPF 檔和文本檔將被掃描為新檔案.",
@@ -645,7 +612,6 @@
"MessageListeningSessionsInTheLastYear": "去年收聽 {0} 個會話",
"MessageLoading": "讀取...",
"MessageLoadingFolders": "讀取資料夾...",
- "MessageLogsDescription": "Logs are stored in /metadata/logs as JSON files. Crash logs are stored in /metadata/logs/crash_logs.txt.",
"MessageM4BFailed": "M4B 失敗!",
"MessageM4BFinished": "M4B 完成!",
"MessageMapChapterTitles": "將章節標題映射到現有的有聲書章節, 無需調整時間戳",
@@ -681,10 +647,9 @@
"MessageNoSeries": "無系列",
"MessageNoTags": "無標籤",
"MessageNoTasksRunning": "沒有正在運行的任務",
- "MessageNotYetImplemented": "尚未實施",
- "MessageNoUpdateNecessary": "無需更新",
"MessageNoUpdatesWereNecessary": "無需更新",
"MessageNoUserPlaylists": "你沒有播放列表",
+ "MessageNotYetImplemented": "尚未實施",
"MessageOr": "或",
"MessagePauseChapter": "暫停章節播放",
"MessagePlayChapter": "開始章節播放",
@@ -726,11 +691,8 @@
"PlaceholderNewPlaylist": "輸入播放列表名稱",
"PlaceholderSearch": "查找..",
"PlaceholderSearchEpisode": "搜尋劇集..",
- "ToastAccountUpdateFailed": "帳號更新失敗",
"ToastAccountUpdateSuccess": "帳號已更新",
- "ToastAuthorImageRemoveFailed": "作者圖像刪除失敗",
"ToastAuthorImageRemoveSuccess": "作者圖像已刪除",
- "ToastAuthorUpdateFailed": "作者更新失敗",
"ToastAuthorUpdateMerged": "作者已合併",
"ToastAuthorUpdateSuccess": "作者已更新",
"ToastAuthorUpdateSuccessNoImageFound": "作者已更新 (未找到圖像)",
@@ -745,28 +707,15 @@
"ToastBatchUpdateSuccess": "批量更新成功",
"ToastBookmarkCreateFailed": "創建書籤失敗",
"ToastBookmarkCreateSuccess": "書籤已新增",
- "ToastBookmarkRemoveFailed": "書籤刪除失敗",
"ToastBookmarkRemoveSuccess": "書籤已刪除",
- "ToastBookmarkUpdateFailed": "書籤更新失敗",
"ToastBookmarkUpdateSuccess": "書籤已更新",
- "ToastCachePurgeFailed": "Failed to purge cache",
- "ToastCachePurgeSuccess": "Cache purged successfully",
"ToastChaptersHaveErrors": "章節有錯誤",
"ToastChaptersMustHaveTitles": "章節必須有標題",
- "ToastCollectionItemsRemoveFailed": "從收藏夾移除項目失敗",
"ToastCollectionItemsRemoveSuccess": "項目從收藏夾移除",
- "ToastCollectionRemoveFailed": "刪除收藏夾失敗",
"ToastCollectionRemoveSuccess": "收藏夾已刪除",
- "ToastCollectionUpdateFailed": "更新收藏夾失敗",
"ToastCollectionUpdateSuccess": "收藏夾已更新",
- "ToastDeleteFileFailed": "Failed to delete file",
- "ToastDeleteFileSuccess": "File deleted",
- "ToastFailedToLoadData": "Failed to load data",
- "ToastItemCoverUpdateFailed": "更新項目封面失敗",
"ToastItemCoverUpdateSuccess": "項目封面已更新",
- "ToastItemDetailsUpdateFailed": "更新項目詳細信息失敗",
"ToastItemDetailsUpdateSuccess": "項目詳細信息已更新",
- "ToastItemDetailsUpdateUnneeded": "項目詳細信息無需更新",
"ToastItemMarkedAsFinishedFailed": "標記為聽完失敗",
"ToastItemMarkedAsFinishedSuccess": "標記為聽完的項目",
"ToastItemMarkedAsNotFinishedFailed": "標記為未聽完失敗",
@@ -777,34 +726,26 @@
"ToastLibraryDeleteSuccess": "媒體庫已刪除",
"ToastLibraryScanFailedToStart": "無法啟動掃描",
"ToastLibraryScanStarted": "媒體庫掃描已啟動",
- "ToastLibraryUpdateFailed": "更新圖書庫失敗",
"ToastLibraryUpdateSuccess": "媒體庫 \"{0}\" 已更新",
"ToastPlaylistCreateFailed": "創建播放列表失敗",
"ToastPlaylistCreateSuccess": "已成功創建播放列表",
- "ToastPlaylistRemoveFailed": "刪除播放列表失敗",
"ToastPlaylistRemoveSuccess": "播放列表已刪除",
- "ToastPlaylistUpdateFailed": "更新播放列表失敗",
"ToastPlaylistUpdateSuccess": "播放列表已更新",
"ToastPodcastCreateFailed": "創建播客失敗",
"ToastPodcastCreateSuccess": "已成功創建播客",
- "ToastRemoveItemFromCollectionFailed": "從收藏中刪除項目失敗",
- "ToastRemoveItemFromCollectionSuccess": "項目已從收藏中刪除",
"ToastRSSFeedCloseFailed": "關閉 RSS 源失敗",
"ToastRSSFeedCloseSuccess": "RSS 源已關閉",
+ "ToastRemoveItemFromCollectionFailed": "從收藏中刪除項目失敗",
+ "ToastRemoveItemFromCollectionSuccess": "項目已從收藏中刪除",
"ToastSendEbookToDeviceFailed": "發送電子書到設備失敗",
"ToastSendEbookToDeviceSuccess": "電子書已經發送到設備 \"{0}\"",
"ToastSeriesUpdateFailed": "更新系列失敗",
"ToastSeriesUpdateSuccess": "系列已更新",
- "ToastServerSettingsUpdateFailed": "Failed to update server settings",
- "ToastServerSettingsUpdateSuccess": "Server settings updated",
"ToastSessionDeleteFailed": "刪除會話失敗",
"ToastSessionDeleteSuccess": "會話已刪除",
"ToastSocketConnected": "網路已連接",
"ToastSocketDisconnected": "網路已斷開",
"ToastSocketFailedToConnect": "網路連接失敗",
- "ToastSortingPrefixesEmptyError": "Must have at least 1 sorting prefix",
- "ToastSortingPrefixesUpdateFailed": "Failed to update sorting prefixes",
- "ToastSortingPrefixesUpdateSuccess": "Sorting prefixes updated ({0} items)",
"ToastUserDeleteFailed": "刪除使用者失敗",
"ToastUserDeleteSuccess": "使用者已刪除"
-}
\ No newline at end of file
+}
diff --git a/client/tailwind.config.js b/client/tailwind.config.js
index 7fafbeaf4..7f234ceaa 100644
--- a/client/tailwind.config.js
+++ b/client/tailwind.config.js
@@ -1,59 +1,81 @@
module.exports = {
- content: [
- 'components/**/*.vue',
- 'layouts/**/*.vue',
- 'pages/**/*.vue',
- 'templates/**/*.vue',
- 'plugins/**/*.js',
- 'nuxt.config.js'
- ],
- safelist: [
- 'bg-red-600',
- 'px-1.5',
- 'min-w-5',
- 'border-warning'
- ],
+ content: ['components/**/*.vue', 'layouts/**/*.vue', 'pages/**/*.vue', 'templates/**/*.vue', 'plugins/**/*.js', 'nuxt.config.js'],
+ safelist: ['bg-red-600', 'px-1.5', 'min-w-5', 'border-warning'],
theme: {
extend: {
height: {
- '7.5': '1.75rem',
- '18': '4.5rem',
- '45': '11.25rem'
+ 7.5: '1.75rem',
+ 18: '4.5rem',
+ 45: '11.25rem'
},
width: {
- '18': '4.5rem'
+ 18: '4.5rem'
},
maxWidth: {
- '6': '1.5rem',
- '12': '3rem',
- '16': '4rem',
- '20': '5rem',
- '24': '6rem',
- '32': '8rem',
- '40': '10rem',
- '48': '12rem',
- '52': '13rem',
- '64': '16rem',
- '80': '20rem'
+ 6: '1.5rem',
+ 12: '3rem',
+ 16: '4rem',
+ 20: '5rem',
+ 24: '6rem',
+ 32: '8rem',
+ 40: '10rem',
+ 48: '12rem',
+ 52: '13rem',
+ 64: '16rem',
+ 80: '20rem'
},
minWidth: {
- '5': '1.25rem',
- '6': '1.5rem',
- '8': '2rem',
- '10': '2.5rem',
- '12': '3rem',
- '16': '4rem',
- '20': '5rem',
- '24': '6rem',
- '26': '6.5rem',
- '32': '8rem',
- '48': '12rem',
- '64': '16rem',
- '80': '20rem'
+ 5: '1.25rem',
+ 6: '1.5rem',
+ 8: '2rem',
+ 10: '2.5rem',
+ 12: '3rem',
+ 16: '4rem',
+ 20: '5rem',
+ 24: '6rem',
+ 26: '6.5rem',
+ 32: '8rem',
+ 48: '12rem',
+ 64: '16rem',
+ 80: '20rem'
},
spacing: {
- '18': '4.5rem',
- '-54': '-13.5rem'
+ 18: '4.5rem',
+ '-54': '-13.5rem',
+ // based on tailwind default config converted to em units, see client\node_modules\tailwindcss\stubs\config.full.js
+ '0.5e': '0.125em',
+ '1e': '0.25em',
+ '1.5e': '0.375em',
+ '2e': '0.5em',
+ '2.5e': '0.625em',
+ '3e': '0.75em',
+ '3.5e': '0.875em',
+ '4e': '1em',
+ '5e': '1.25em',
+ '6e': '1.5em',
+ '7e': '1.75em',
+ '8e': '2em',
+ '9e': '2.25em',
+ '10e': '2.5em',
+ '11e': '2.75em',
+ '12e': '3em',
+ '14e': '3.5em',
+ '16e': '4em',
+ '20e': '5em',
+ '24e': '6em',
+ '28e': '7em',
+ '32e': '8em',
+ '36e': '9em',
+ '40e': '10em',
+ '44e': '11em',
+ '48e': '12em',
+ '52e': '13em',
+ '56e': '14em',
+ '60e': '15em',
+ '64e': '16em',
+ '72e': '18em',
+ '80e': '20em',
+ '96e': '24em'
},
rotate: {
'-60': '-60deg'
@@ -90,13 +112,13 @@ module.exports = {
'4.5xl': '2.625rem'
},
zIndex: {
- '50': 50,
- '60': 60
+ 50: 50,
+ 60: 60
}
}
},
variants: {
- extend: {},
+ extend: {}
},
- plugins: [],
+ plugins: []
}
diff --git a/docker-compose.yml b/docker-compose.yml
index 68e012fb8..b8d428a23 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,6 +1,4 @@
### EXAMPLE DOCKER COMPOSE ###
-version: "3.7"
-
services:
audiobookshelf:
image: ghcr.io/advplyr/audiobookshelf:latest
@@ -23,8 +21,7 @@ services:
# you are running ABS on
- ./config:/config
restart: unless-stopped
- # You can use the following environment variable to run the ABS
+ # You can use the following user directive to run the ABS
# docker container as a specific user. You will need to change
# the UID and GID to the correct values for your user.
- #environment:
- # - user=1000:1000
+ # user: 1000:1000
diff --git a/docs/README.md b/docs/README.md
index c6f278edf..14b1aba25 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -1,30 +1,33 @@
# OpenAPI specification
-This directory includes the OpenAPI spec for the ABS server.
-The spec is made up of a number of individual `yaml` files located here and in the subfolders, with `root.yaml` being the file that references all of the others.
-The files are organized to have the same hierarchy as the server source files.
-The full spec is bundled into one file in `openapi.json`.
+This directory includes the OpenAPI spec for the ABS server. The spec is made up of a number of individual `yaml` files located here and in the subfolders, with `root.yaml` being the file that references all of the others. The files are organized to have the same hierarchy as the server source files. The full spec is bundled into one file in `openapi.json`.
-The spec is linted and bundled by the [`vacuum` tool](https://quobix.com/vacuum/).
-The spec can also be tested with a real server using the [`wiretap` tool](https://pb33f.io/wiretap/).
-Both of these tools are created by [pb33f](https://pb33f.io/).
+The spec is linted and bundled using [`redocly-cli`](https://redocly.com/docs/cli/). This tool also generates HTML docs for the spec.
+
+The tools created by [`pb33f`](https://pb33f.io/), specifically `vacuum` and `wiretap`, are also useful for linting and verification. These tools check for some other things, such as validating requests to and responses from the server.
### Bundling the spec
-The command to bundle the spec into a `yaml` file is `vacuum bundle root.yaml openapi.yaml`.
-The current version of `vacuum` cannot convert input `yaml` files to `json` files.
-To convert the spec to `json`, you can use the `yq` tool or another tool.
+The command used to bundle the spec into a `yaml` file is `redocly bundle root.yaml > bundled.yaml`.
-The command to convert the spec using `yq` is `yq -p yaml -o json openapi.yaml > openapi.json`.
+The `yq` tool is used to convert the `yaml` to a `json` using the `yq -p yaml -o json bundled.yaml > openapi.json`.
-### Viewing report
-To generate an HTML report, you can use `vacuum html-report [file]` to generate `report.html` and view the report in your browser.
+### Linting the spec
+
+The command used to lint the spec is `redocly lint root.yaml`
+
+To generate an HTML report using `vacuum`, you can use `vacuum html-report [file]` to generate `report.html` and view the report in your browser.
+
+### Generating documentation
+
+Redocly allows for creating a static HTML page to document the API. This is done by using `redocly build-docs [file]` and supports exploded specs.
### Putting it all together
-The full command that I run to bundle the spec and generate the report is:
+
+The full command that I run to bundle the spec and generate the documentation is:
```
-vacuum bundle root.yaml openapi.yaml && \
-yq -p yaml -o json openapi.yaml > openapi.json && \
-vacuum html-report openapi.json
+redocly bundle root.yaml > bundled.yaml && \
+yq -p yaml -o json bundled.yaml > openapi.json && \
+redocly build-docs openapi.json
```
diff --git a/docs/controllers/AuthorController.yaml b/docs/controllers/AuthorController.yaml
index 2af95a62f..acfc04488 100644
--- a/docs/controllers/AuthorController.yaml
+++ b/docs/controllers/AuthorController.yaml
@@ -4,136 +4,299 @@ components:
description: Whether the author was updated without errors. Will not exist if author was merged.
type: boolean
nullable: true
- parameters:
- authorId:
- name: id
- in: path
- description: Author ID
- required: true
- schema:
- $ref: '../objects/entities/Author.yaml#/components/schemas/authorId'
+ authorMerged:
+ description: Whether the author was merged with another author. Will not exist if author was updated.
+ type: boolean
+ nullable: true
authorInclude:
- name: include
- in: query
- description: A comma separated list of what to include with the author. The options are `items` and `series`. `series` will only have an effect if `items` is included.
- required: false
- schema:
- type: string
- example: "items"
- examples:
- empty:
- summary: Do not return library items
- value: ""
- itemOnly:
- summary: Only return library items
- value: "items"
- itemsAndSeries:
- summary: Return library items and series
- value: "items,series"
+ description: A comma separated list of what to include with the author. The options are `items` and `series`. `series` will only have an effect if `items` is included. For example, the value `items,series` will include both library items and series.
+ type: string
+ example: 'items'
authorLibraryId:
- name: library
- in: query
- description: The ID of the library to to include filter included items from.
- required: false
- schema:
- $ref: '../objects/Library.yaml#/components/schemas/libraryId'
- asin:
- name: asin
- in: query
- description: The Audible Identifier (ASIN).
- required: false
- schema:
- $ref: '../objects/entities/Author.yaml#/components/schemas/authorAsin'
+ $ref: '../objects/Library.yaml#/components/schemas/libraryId'
authorSearchName:
- name: q
- in: query
description: The name of the author to use for searching.
- required: false
- schema:
- type: string
- example: Terry Goodkind
+ type: string
+ example: Terry Goodkind
authorName:
- name: name
- in: query
- description: The new name of the author.
- required: false
- schema:
- $ref: '../objects/entities/Author.yaml#/components/schemas/authorName'
- authorDescription:
- name: description
- in: query
- description: The new description of the author.
- required: false
- schema:
- type: string
- nullable: true
- example: Terry Goodkind is a #1 New York Times Bestselling Author and creator of the critically acclaimed masterwork, ‘The Sword of Truth’. He has written 30+ major, bestselling novels, has been published in more than 20 languages world-wide, and has sold more than 26 Million books. ‘The Sword of Truth’ is a revered literary tour de force, comprised of 17 volumes, borne from over 25 years of dedicated writing.
- authorImagePath:
- name: imagePath
- in: query
- description: The new absolute path for the author image.
- required: false
- schema:
- type: string
- nullable: true
- example: /metadata/authors/aut_z3leimgybl7uf3y4ab.jpg
+ $ref: '../objects/entities/Author.yaml#/components/schemas/authorName'
imageUrl:
- name: url
- in: query
description: The URL of the image to add to the server
- required: true
- schema:
- type: string
- format: uri
- example: https://images-na.ssl-images-amazon.com/images/I/51NoQTm33OL.__01_SX120_CR0,0,120,120__.jpg
+ type: string
+ format: uri
+ example: https://images-na.ssl-images-amazon.com/images/I/51NoQTm33OL.__01_SX120_CR0,0,120,120__.jpg
imageWidth:
- name: width
- in: query
description: The requested width of image in pixels.
- schema:
- type: integer
- default: 400
- example: 400
+ type: integer
+ default: 400
example: 400
imageHeight:
- name: height
- in: query
description: The requested height of image in pixels. If `null`, the height is scaled to maintain aspect ratio based on the requested width.
- schema:
- type: integer
- nullable: true
- default: null
- example: 600
- examples:
- scaleHeight:
- summary: Scale height with width
- value: null
- fixedHeight:
- summary: Force height of image
- value: 600
+ type: integer
+ nullable: true
+ default: null
+ example: 600
imageFormat:
- name: format
- in: query
description: The requested output format.
- schema:
- type: string
- default: jpeg
- example: webp
+ type: string
+ default: jpeg
+ example: webp
imageRaw:
- name: raw
- in: query
description: Return the raw image without scaling if true.
- schema:
- type: boolean
- default: false
- responses:
+ type: boolean
+ default: false
+ responses:
+ author200:
+ description: Author found.
+ content:
+ application/json:
+ schema:
+ $ref: '../objects/entities/Author.yaml#/components/schemas/author'
author404:
description: Author not found.
content:
text/html:
schema:
type: string
- example: Not found
-tags:
- - name: Authors
- description: Author endpoints
+ example: Author not found.
+paths:
+ /api/authors/{id}:
+ parameters:
+ - name: id
+ in: path
+ description: Author ID
+ required: true
+ schema:
+ $ref: '../objects/entities/Author.yaml#/components/schemas/authorId'
+ get:
+ operationId: getAuthorById
+ summary: Get an author by ID
+ description: Get an author by ID. The author's books and series can be included in the response.
+ tags:
+ - Authors
+ parameters:
+ - in: query
+ name: include
+ description: A comma separated list of what to include with the author. The options are `items` and `series`. `series` will only have an effect if `items` is included. For example, the value `items,series` will include both library items and series.
+ allowReserved: true
+ schema:
+ type: string
+ example: 'items,series'
+ responses:
+ '200':
+ description: getAuthorById OK
+ content:
+ application/json:
+ schema:
+ $ref: '../objects/entities/Author.yaml#/components/schemas/author'
+ '404':
+ $ref: '#/components/responses/author404'
+ patch:
+ operationId: updateAuthorById
+ summary: Update an author by ID
+ description: Update an author by ID. The author's name and description can be updated. This endpoint will merge two authors if the new author name matches another author name in the database.
+ tags:
+ - Authors
+ requestBody:
+ description: The author object to update.
+ content:
+ application/json:
+ schema:
+ properties:
+ name:
+ $ref: '#/components/schemas/authorName'
+ description:
+ $ref: '../objects/entities/Author.yaml#/components/schemas/authorDescription'
+ imagePath:
+ $ref: '../objects/entities/Author.yaml#/components/schemas/authorImagePath'
+ asin:
+ $ref: '../objects/entities/Author.yaml#/components/schemas/authorAsin'
+ responses:
+ '200':
+ description: updateAuthorById OK
+ content:
+ application/json:
+ schema:
+ oneOf:
+ - $ref: '../objects/entities/Author.yaml#/components/schemas/author'
+ - $ref: '#/components/schemas/authorUpdated'
+ - $ref: '#/components/schemas/authorMerged'
+ '404':
+ $ref: '#/components/responses/author404'
+ delete:
+ operationId: deleteAuthorById
+ summary: Delete an author by ID
+ description: Delete an author by ID. This will remove the author from all books.
+ tags:
+ - Authors
+ responses:
+ '200':
+ description: deleteAuthorById OK
+ content:
+ text/plain:
+ schema:
+ type: string
+ example: Author deleted.
+ '404':
+ $ref: '#/components/responses/author404'
+ /api/authors/{id}/image:
+ parameters:
+ - name: id
+ in: path
+ description: Author ID
+ required: true
+ schema:
+ $ref: '../objects/entities/Author.yaml#/components/schemas/authorId'
+ - name: token
+ in: query
+ description: API token
+ schema:
+ type: string
+ - name: ts
+ in: query
+ description: Updated at value
+ schema:
+ type: integer
+ get:
+ operationId: getAuthorImageById
+ summary: Get an author image by author ID
+ description: Get an author image by author ID. The image will be returned in the requested format and size.
+ security: [] # No security for getting author image
+ tags:
+ - Authors
+ requestBody:
+ required: false
+ description: The author image to get.
+ content:
+ application/json:
+ schema:
+ properties:
+ width:
+ $ref: '#/components/schemas/imageWidth'
+ height:
+ $ref: '#/components/schemas/imageHeight'
+ format:
+ $ref: '#/components/schemas/imageFormat'
+ raw:
+ $ref: '#/components/schemas/imageRaw'
+ responses:
+ '200':
+ description: getAuthorImageById OK
+ content:
+ image/webp:
+ schema:
+ type: string
+ format: binary
+ image/jpeg:
+ schema:
+ type: string
+ format: binary
+ image/*:
+ schema:
+ type: string
+ format: binary
+ '404':
+ $ref: '#/components/responses/author404'
+ post:
+ operationId: addAuthorImageById
+ summary: Add an author image to the server
+ description: Add an author image to the server. The image will be downloaded from the provided URL and stored on the server.
+ tags:
+ - Authors
+ requestBody:
+ required: true
+ description: The author image to add by URL.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/imageUrl'
+ responses:
+ '200':
+ description: addAuthorImageById OK
+ content:
+ image/*:
+ schema:
+ type: string
+ format: binary
+ '404':
+ $ref: '#/components/responses/author404'
+ patch:
+ operationId: updateAuthorImageById
+ summary: Update an author image by author ID
+ description: Update an author image by author ID. The image will be resized if the width, height, or format is provided.
+ tags:
+ - Authors
+ requestBody:
+ description: The author image to update.
+ content:
+ application/json:
+ schema:
+ properties:
+ width:
+ $ref: '#/components/schemas/imageWidth'
+ height:
+ $ref: '#/components/schemas/imageHeight'
+ format:
+ $ref: '#/components/schemas/imageFormat'
+ raw:
+ $ref: '#/components/schemas/imageRaw'
+ responses:
+ '200':
+ description: updateAuthorImageById OK
+ content:
+ image/*:
+ schema:
+ type: string
+ format: binary
+ '404':
+ $ref: '#/components/responses/author404'
+ delete:
+ operationId: deleteAuthorImageById
+ summary: Delete an author image by author ID
+ description: Delete an author image by author ID. This will remove the image from the server and the database.
+ tags:
+ - Authors
+ responses:
+ '200':
+ description: deleteAuthorImageById OK
+ '404':
+ $ref: '#/components/responses/author404'
+ /api/authors/{id}/match:
+ parameters:
+ - name: id
+ in: path
+ description: Author ID
+ required: true
+ schema:
+ $ref: '../objects/entities/Author.yaml#/components/schemas/authorId'
+ post:
+ operationId: matchAuthorById
+ summary: Match the author against Audible using quick match
+ description: Match the author against Audible using quick match. Quick match updates the author's description and image (if no image already existed) with information from audible. Either `asin` or `q` must be provided, with `asin` taking priority if both are provided.
+ tags:
+ - Authors
+ requestBody:
+ required: true
+ description: The author object to match against an online provider.
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ q:
+ $ref: '#/components/schemas/authorSearchName'
+ asin:
+ $ref: '../objects/entities/Author.yaml#/components/schemas/authorAsin'
+ region:
+ $ref: '../schemas.yaml#/components/schemas/region'
+ responses:
+ '200':
+ description: matchAuthorById OK
+ content:
+ application/json:
+ schema:
+ oneOf:
+ - $ref: '../objects/entities/Author.yaml#/components/schemas/author'
+ - $ref: '#/components/schemas/authorUpdated'
+ '404':
+ $ref: '#/components/responses/author404'
diff --git a/docs/controllers/EmailController.yaml b/docs/controllers/EmailController.yaml
new file mode 100644
index 000000000..c5a957142
--- /dev/null
+++ b/docs/controllers/EmailController.yaml
@@ -0,0 +1,106 @@
+components:
+ schemas:
+ emailSettings:
+ type: string
+ description: The field to sort by from the request.
+ example: 'media.metadata.title'
+ responses:
+ email200:
+ description: Successful response - Email
+ content:
+ application/json:
+ schema:
+ $ref: '../objects/settings/EmailSettings.yaml#/components/schemas/EmailSettings'
+ ereader200:
+ description: Successful response - Ereader
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ ereaderDevices:
+ type: array
+ items:
+ $ref: '../objects/settings/EmailSettings.yaml#/components/schemas/EreaderDeviceObject'
+paths:
+ /api/emails/settings:
+ get:
+ summary: Get email settings
+ description: Get email settings for sending e-books to e-readers.
+ operationId: getEmailSettings
+ tags:
+ - Email
+ responses:
+ 200:
+ $ref: '#/components/responses/email200'
+ patch:
+ summary: Update email settings
+ operationId: updateEmailSettings
+ tags:
+ - Email
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ $ref: '../objects/settings/EmailSettings.yaml#/components/schemas/EmailSettings'
+ responses:
+ 200:
+ $ref: '#/components/responses/email200'
+ /api/emails/test:
+ post:
+ summary: Send test email
+ operationId: sendTestEmail
+ tags:
+ - Email
+ responses:
+ 200:
+ description: Successful response
+ /api/emails/ereader-devices:
+ post:
+ summary: Update e-reader devices
+ operationId: updateEReaderDevices
+ tags:
+ - Email
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ ereaderDevices:
+ type: array
+ items:
+ $ref: '../objects/settings/EmailSettings.yaml#/components/schemas/EreaderDeviceObject'
+ responses:
+ 200:
+ $ref: '#/components/responses/ereader200'
+ 400:
+ description: Invalid payload
+ /api/emails/send-ebook-to-device:
+ post:
+ summary: Send ebook to device
+ operationId: sendEBookToDevice
+ tags:
+ - Email
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ libraryItemId:
+ $ref: '../objects/LibraryItem.yaml#/components/schemas/libraryItemId'
+ deviceName:
+ $ref: '../objects/settings/EmailSettings.yaml#/components/schemas/ereaderName'
+ responses:
+ 200:
+ description: Successful response
+ 400:
+ description: Invalid request
+ 403:
+ description: Forbidden
+ 404:
+ description: Not found
diff --git a/docs/controllers/LibraryController.yaml b/docs/controllers/LibraryController.yaml
new file mode 100644
index 000000000..b985c05ec
--- /dev/null
+++ b/docs/controllers/LibraryController.yaml
@@ -0,0 +1,479 @@
+components:
+ schemas:
+ sortBy:
+ type: string
+ description: The field to sort by from the request.
+ example: 'media.metadata.title'
+ sortDesc:
+ description: Whether to sort in descending order.
+ type: boolean
+ example: true
+ filterBy:
+ type: string
+ description: The field to filter by from the request. TODO
+ example: 'media.metadata.title'
+ collapseSeries:
+ type: boolean
+ description: Whether collapse series was set in the request.
+ example: true
+ libraryFolders:
+ description: The folders of the library. Only specify the fullPath.
+ type: array
+ items:
+ $ref: '../objects/Folder.yaml#/components/schemas/folder'
+ libraryDisplayOrder:
+ description: The display order of the library. Must be >= 1.
+ type: integer
+ minimum: 1
+ example: 1
+ libraryIcon:
+ description: The icon of the library. See Library Icons for a list of possible icons.
+ type: string
+ example: 'audiobookshelf'
+ libraryMediaType:
+ description: The type of media that the library contains. Must be `book` or `podcast`.
+ type: string
+ example: 'book'
+ libraryProvider:
+ description: Preferred metadata provider for the library. See Metadata Providers for a list of possible providers.
+ type: string
+ example: 'audible'
+ librarySettings:
+ $ref: '../objects/Library.yaml#/components/schemas/librarySettings'
+ librarySort:
+ description: The sort order of the library. For example, to sort by title use 'sort=media.metadata.title'.
+ type: string
+ example: 'media.metadata.title'
+ libraryFilter:
+ description: The filter for the library.
+ type: string
+ example: 'media.metadata.title'
+ libraryCollapseSeries:
+ description: Whether to collapse series.
+ type: boolean
+ example: true
+ default: false
+ libraryInclude:
+ description: The fields to include in the response. The only current option is `rssfeed`.
+ type: string
+ example: 'rssfeed'
+ parameters:
+ limit:
+ in: query
+ name: limit
+ description: The number of items to return. This the size of a single page for the optional `page` query.
+ example: 10
+ schema:
+ type: integer
+ default: 0
+ page:
+ in: query
+ name: page
+ description: The page number (zero indexed) to return. If no limit is specified, then page will have no effect.
+ example: 0
+ schema:
+ type: integer
+ default: 0
+ desc:
+ in: query
+ name: desc
+ description: Return items in reversed order if true.
+ example: 0
+ schema:
+ type: integer
+ default: 0
+
+ responses:
+ library200:
+ description: Library found.
+ content:
+ application/json:
+ schema:
+ $ref: '../objects/Library.yaml#/components/schemas/library'
+ library404:
+ description: Library not found.
+ content:
+ text/html:
+ schema:
+ type: string
+ example: Library not found.
+paths:
+ /api/libraries:
+ get:
+ operationId: getLibraries
+ summary: Get all libraries on server
+ description: Get all libraries on server.
+ tags:
+ - Libraries
+ responses:
+ '200':
+ description: getLibraries OK
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ libraries:
+ type: array
+ items:
+ $ref: '../objects/Library.yaml#/components/schemas/library'
+ post:
+ operationId: createLibrary
+ summary: Create a new library on server
+ description: Create a new library on server.
+ tags:
+ - Libraries
+ requestBody:
+ description: The library object to create.
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [name, folders]
+ properties:
+ name:
+ $ref: '../objects/Library.yaml#/components/schemas/libraryName'
+ folders:
+ $ref: '#/components/schemas/libraryFolders'
+ displayOrder:
+ $ref: '#/components/schemas/libraryDisplayOrder'
+ icon:
+ $ref: '#/components/schemas/libraryIcon'
+ mediaType:
+ $ref: '#/components/schemas/libraryMediaType'
+ provider:
+ $ref: '#/components/schemas/libraryProvider'
+ settings:
+ $ref: '#/components/schemas/librarySettings'
+ responses:
+ '200':
+ $ref: '#/components/responses/library200'
+ '404':
+ $ref: '#/components/responses/library404'
+ /api/libraries/{id}:
+ parameters:
+ - name: id
+ in: path
+ description: The ID of the library.
+ required: true
+ schema:
+ $ref: '../objects/Library.yaml#/components/schemas/libraryId'
+ get:
+ operationId: getLibraryById
+ summary: Get a single library by ID on server
+ description: Get a single library by ID on server.
+ tags:
+ - Libraries
+ parameters:
+ - in: query
+ name: include
+ schema:
+ type: string
+ - $ref: '../schemas.yaml#/components/parameters/minified'
+ responses:
+ '200':
+ $ref: '#/components/responses/library200'
+ '404':
+ $ref: '#/components/responses/library404'
+ patch:
+ operationId: updateLibraryById
+ summary: Update a single library by ID on server
+ description: Update a single library by ID on server.
+ tags:
+ - Libraries
+ requestBody:
+ required: true
+ description: The library object to update.
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ name:
+ $ref: '../objects/Library.yaml#/components/schemas/libraryName'
+ folders:
+ $ref: '#/components/schemas/libraryFolders'
+ displayOrder:
+ $ref: '#/components/schemas/libraryDisplayOrder'
+ icon:
+ $ref: '#/components/schemas/libraryIcon'
+ mediaType:
+ $ref: '#/components/schemas/libraryMediaType'
+ provider:
+ $ref: '#/components/schemas/libraryProvider'
+ settings:
+ $ref: '#/components/schemas/librarySettings'
+ responses:
+ '200':
+ $ref: '#/components/responses/library200'
+ '404':
+ $ref: '#/components/responses/library404'
+ delete:
+ operationId: deleteLibraryById
+ summary: Delete a single library by ID on server
+ description: Delete a single library by ID on server and return the deleted object.
+ tags:
+ - Libraries
+ responses:
+ '200':
+ $ref: '#/components/responses/library200'
+ '404':
+ $ref: '#/components/responses/library404'
+ /api/libraries/{id}/issues:
+ parameters:
+ - name: id
+ in: path
+ description: The ID of the library.
+ required: true
+ schema:
+ $ref: '../objects/Library.yaml#/components/schemas/libraryId'
+ delete:
+ operationId: deleteLibraryIssues
+ summary: Delete items with issues in a library.
+ description: Delete all items with issues in a library by library ID on the server. This only removes the items from the ABS database and does not delete media files.
+ tags:
+ - Libraries
+ responses:
+ '200':
+ description: deleteLibraryIssues OK
+ content:
+ application/json:
+ schema:
+ type: string
+ example: 'Issues deleted.'
+ '404':
+ $ref: '#/components/responses/library404'
+ /api/libraries/{id}/items:
+ parameters:
+ - name: id
+ in: path
+ description: The ID of the library.
+ required: true
+ schema:
+ $ref: '../objects/Library.yaml#/components/schemas/libraryId'
+ get:
+ operationId: getLibraryItems
+ summary: Get items in a library
+ description: Get items in a library by ID on server.
+ tags:
+ - Libraries
+ parameters:
+ - $ref: '#/components/parameters/limit'
+ - $ref: '#/components/parameters/page'
+ - in: query
+ name: sort
+ description: The field to sort by from the request.
+ example: 'numBooks'
+ schema:
+ type: string
+ default: 'name'
+ - $ref: '#/components/parameters/desc'
+ - in: query
+ name: filter
+ description: The filter for the library.
+ example: 'media.metadata.title'
+ schema:
+ type: string
+ - in: query
+ name: include
+ description: The fields to include in the response. The only current option is `rssfeed`.
+ allowReserved: true
+ example: 'rssfeed'
+ schema:
+ type: string
+ - $ref: '../schemas.yaml#/components/parameters/minified'
+ - in: query
+ name: collapseSeries
+ description: Whether to collapse series into a single cover
+ schema:
+ type: integer
+ default: 0
+ responses:
+ '200':
+ description: getLibraryItems OK
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ results:
+ type: array
+ items:
+ $ref: '../objects/LibraryItem.yaml#/components/schemas/libraryItemBase'
+ total:
+ $ref: '../schemas.yaml#/components/schemas/total'
+ limit:
+ $ref: '../schemas.yaml#/components/schemas/limit'
+ page:
+ $ref: '../schemas.yaml#/components/schemas/page'
+ sortBy:
+ $ref: '#/components/schemas/sortBy'
+ sortDesc:
+ $ref: '#/components/schemas/sortDesc'
+ filterBy:
+ $ref: '#/components/schemas/filterBy'
+ mediaType:
+ $ref: '../objects/mediaTypes/media.yaml#/components/schemas/mediaType'
+ minified:
+ $ref: '../schemas.yaml#/components/schemas/minified'
+ collapseSeries:
+ $ref: '#/components/schemas/collapseSeries'
+ include:
+ $ref: '#/components/schemas/libraryInclude'
+ '404':
+ $ref: '#/components/responses/library404'
+ /api/libraries/{id}/authors:
+ parameters:
+ - name: id
+ in: path
+ description: The ID of the library.
+ required: true
+ schema:
+ $ref: '../objects/Library.yaml#/components/schemas/libraryId'
+ get:
+ operationId: getLibraryAuthors
+ summary: Get all authors in a library
+ description: Get all authors in a library by ID on server.
+ tags:
+ - Libraries
+ responses:
+ '200':
+ description: getLibraryAuthors OK
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ authors:
+ type: array
+ items:
+ $ref: '../objects/entities/Author.yaml#/components/schemas/authorExpanded'
+ '404':
+ $ref: '#/components/responses/library404'
+ /api/libraries/{id}/series:
+ parameters:
+ - name: id
+ in: path
+ description: The ID of the library.
+ required: true
+ schema:
+ $ref: '../objects/Library.yaml#/components/schemas/libraryId'
+ get:
+ operationId: getLibrarySeries
+ summary: Get library series
+ description: Get series in a library. Filtering and sorting can be applied.
+ tags:
+ - Libraries
+ parameters:
+ - $ref: '#/components/parameters/limit'
+ - $ref: '#/components/parameters/page'
+ - in: query
+ name: sort
+ description: The field to sort by from the request.
+ example: 'numBooks'
+ schema:
+ type: string
+ enum: ['name', 'numBooks', 'totalDuration', 'addedAt', 'lastBookAdded', 'lastBookUpdated']
+ default: 'name'
+ - $ref: '#/components/parameters/desc'
+ - in: query
+ name: filter
+ description: The filter for the library.
+ example: 'media.metadata.title'
+ schema:
+ type: string
+ - in: query
+ name: include
+ description: The fields to include in the response. The only current option is `rssfeed`.
+ allowReserved: true
+ example: 'rssfeed'
+ schema:
+ type: string
+ - $ref: '../schemas.yaml#/components/parameters/minified'
+ responses:
+ '200':
+ description: getLibrarySeries OK
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ results:
+ type: array
+ items:
+ $ref: '../objects/entities/Series.yaml#/components/schemas/seriesBooks'
+ total:
+ $ref: '../schemas.yaml#/components/schemas/total'
+ limit:
+ $ref: '../schemas.yaml#/components/schemas/limit'
+ page:
+ $ref: '../schemas.yaml#/components/schemas/page'
+ sortBy:
+ $ref: '#/components/schemas/sortBy'
+ sortDesc:
+ $ref: '#/components/schemas/sortDesc'
+ filterBy:
+ $ref: '#/components/schemas/filterBy'
+ minified:
+ $ref: '../schemas.yaml#/components/schemas/minified'
+ include:
+ $ref: '#/components/schemas/libraryInclude'
+
+ '404':
+ $ref: '#/components/responses/library404'
+ /api/libraries/{id}/series/{seriesId}:
+ parameters:
+ - name: id
+ in: path
+ description: The ID of the library.
+ required: true
+ schema:
+ $ref: '../objects/Library.yaml#/components/schemas/libraryId'
+ - name: seriesId
+ in: path
+ description: The ID of the series.
+ required: true
+ schema:
+ $ref: '../objects/entities/Series.yaml#/components/schemas/seriesId'
+ get:
+ operationId: getLibrarySeriesById
+ summary: Get single series in library
+ description: Get a single series in a library by ID on server. This endpoint is deprecated and `/api/series/{id}` should be used instead.
+ deprecated: true
+ tags:
+ - Libraries
+ parameters:
+ - $ref: '#/components/parameters/limit'
+ - $ref: '#/components/parameters/page'
+ - in: query
+ name: sort
+ description: The field to sort by from the request.
+ example: 'numBooks'
+ schema:
+ type: string
+ enum: ['name', 'numBooks', 'totalDuration', 'addedAt', 'lastBookAdded', 'lastBookUpdated']
+ default: 'name'
+ - $ref: '#/components/parameters/desc'
+ - in: query
+ name: filter
+ description: The filter for the library.
+ example: 'media.metadata.title'
+ schema:
+ type: string
+ - $ref: '../schemas.yaml#/components/parameters/minified'
+ - in: query
+ name: include
+ description: The fields to include in the response. The only current option is `rssfeed`.
+ allowReserved: true
+ example: 'rssfeed'
+ schema:
+ type: string
+ responses:
+ '200':
+ description: getLibrarySeriesById OK
+ content:
+ application/json:
+ schema:
+ $ref: '../objects/entities/Series.yaml#/components/schemas/seriesWithProgressAndRSS'
+ '404':
+ $ref: '#/components/responses/library404'
diff --git a/docs/controllers/NotificationController.yaml b/docs/controllers/NotificationController.yaml
new file mode 100644
index 000000000..d61494811
--- /dev/null
+++ b/docs/controllers/NotificationController.yaml
@@ -0,0 +1,231 @@
+components:
+ responses:
+ notification200:
+ description: Notification endpoint success.
+ content:
+ text/html:
+ schema:
+ type: string
+ example: OK
+ notification404:
+ description: An admin user is required or notification with the given ID not found.
+ content:
+ text/html:
+ schema:
+ type: string
+ example: Series not found.
+paths:
+ /api/notifications:
+ get:
+ operationId: getNotifications
+ summary: Get notification settings
+ description: Get all Apprise notification events and notification settings for server.
+ tags:
+ - Notification
+ responses:
+ '200':
+ description: Success
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ data:
+ type: object
+ properties:
+ events:
+ type: array
+ items:
+ $ref: '../objects/Notification.yaml#/components/schemas/NotificationEvent'
+ settings:
+ $ref: '../objects/Notification.yaml#/components/schemas/NotificationSettings'
+ '404':
+ $ref: '#/components/responses/notification404'
+ patch:
+ operationId: configureNotificationSettings
+ summary: Update select notification settings
+ description: Update the URL, max failed attempts, and maximum notifications that can be queued for Apprise.
+ tags:
+ - Notification
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ appriseApiUrl:
+ $ref: '../objects/Notification.yaml#/components/schemas/appriseApiUrl'
+ maxFailedAttempts:
+ $ref: '../objects/Notification.yaml#/components/schemas/maxFailedAttempts'
+ maxNotificationQueue:
+ $ref: '../objects/Notification.yaml#/components/schemas/maxNotificationQueue'
+ responses:
+ '200':
+ $ref: '#/components/responses/notification200'
+ '404':
+ $ref: '#/components/responses/notification404'
+ post:
+ operationId: createNotification
+ summary: Create notification settings
+ description: Create or update Notification settings.
+ tags:
+ - Notification
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ libraryId:
+ $ref: '../objects/Library.yaml#/components/schemas/libraryIdNullable'
+ eventName:
+ $ref: '../objects/Notification.yaml#/components/schemas/notificationEventName'
+ urls:
+ $ref: '../objects/Notification.yaml#/components/schemas/urls'
+ titleTemplate:
+ $ref: '../objects/Notification.yaml#/components/schemas/titleTemplate'
+ bodyTemplate:
+ $ref: '../objects/Notification.yaml#/components/schemas/bodyTemplate'
+ enabled:
+ $ref: '../objects/Notification.yaml#/components/schemas/enabled'
+ type:
+ $ref: '../objects/Notification.yaml#/components/schemas/notificationType'
+ required:
+ - eventName
+ - urls
+ - titleTemplate
+ - bodyTemplate
+ responses:
+ '200':
+ description: Success
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ settings:
+ $ref: '../objects/Notification.yaml#/components/schemas/NotificationSettings'
+ '404':
+ $ref: '#/components/responses/notification404'
+ /api/notificationdata:
+ get:
+ operationId: getNotificationEventData
+ summary: Get notification event data
+ description: Get all Apprise notification event data for the server.
+ tags:
+ - Notification
+ responses:
+ '200':
+ description: Success
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ events:
+ type: array
+ items:
+ $ref: '../objects/Notification.yaml#/components/schemas/NotificationEvent'
+ '404':
+ $ref: '#/components/responses/notification404'
+ /api/notifications/test:
+ get:
+ operationId: sendDefaultTestNotification
+ summary: Send general test notification
+ description: Send a test notification.
+ tags:
+ - Notification
+ parameters:
+ - in: query
+ name: fail
+ description: Whether to intentionally cause the notification to fail. `0` for false, `1` for true.
+ schema:
+ type: integer
+ responses:
+ '200':
+ $ref: '#/components/responses/notification200'
+ '404':
+ $ref: '#/components/responses/notification404'
+ /api/notifications/{id}:
+ parameters:
+ - name: id
+ in: path
+ description: The ID of the notification.
+ required: true
+ schema:
+ $ref: '../objects/Notification.yaml#/components/schemas/notificationId'
+ delete:
+ operationId: deleteNotification
+ summary: Delete a notification
+ description: Delete the notification by ID and return the notification settings.
+ tags:
+ - Notification
+ responses:
+ '200':
+ description: Success
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ settings:
+ $ref: '../objects/Notification.yaml#/components/schemas/NotificationSettings'
+ '404':
+ $ref: '#/components/responses/notification404'
+ patch:
+ operationId: updateNotification
+ summary: Update a notification
+ description: Update an individual Notification by ID
+ tags:
+ - Notification
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ libraryId:
+ $ref: '../objects/Library.yaml#/components/schemas/libraryId'
+ eventName:
+ $ref: '../objects/Notification.yaml#/components/schemas/notificationEventName'
+ urls:
+ $ref: '../objects/Notification.yaml#/components/schemas/urls'
+ titleTemplate:
+ $ref: '../objects/Notification.yaml#/components/schemas/titleTemplate'
+ bodyTemplate:
+ $ref: '../objects/Notification.yaml#/components/schemas/bodyTemplate'
+ enabled:
+ $ref: '../objects/Notification.yaml#/components/schemas/enabled'
+ type:
+ $ref: '../objects/Notification.yaml#/components/schemas/notificationType'
+ responses:
+ '200':
+ description: Success
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ settings:
+ $ref: '../objects/Notification.yaml#/components/schemas/NotificationSettings'
+ '404':
+ $ref: '#/components/responses/notification404'
+ /api/notifications/{id}/test:
+ parameters:
+ - name: id
+ in: path
+ description: The ID of the notification.
+ required: true
+ schema:
+ $ref: '../objects/Notification.yaml#/components/schemas/notificationId'
+ get:
+ operationId: sendTestNotification
+ summary: Send a test notification
+ description: Send a test to the given notification by ID.
+ tags:
+ - Notification
+ responses:
+ '200':
+ $ref: '#/components/responses/notification200'
+ '404':
+ $ref: '#/components/responses/notification404'
diff --git a/docs/controllers/PodcastController.yaml b/docs/controllers/PodcastController.yaml
new file mode 100644
index 000000000..a410eed6f
--- /dev/null
+++ b/docs/controllers/PodcastController.yaml
@@ -0,0 +1,393 @@
+paths:
+ /api/podcasts:
+ post:
+ summary: Create a new podcast
+ operationId: createPodcast
+ tags:
+ - Podcasts
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ $ref: '../objects/mediaTypes/Podcast.yaml#/components/schemas/Podcast'
+ responses:
+ 200:
+ description: Successfully created a podcast
+ content:
+ application/json:
+ schema:
+ $ref: '../objects/mediaTypes/Podcast.yaml#/components/schemas/Podcast'
+ 400:
+ description: Bad request
+ 403:
+ description: Forbidden
+ 404:
+ description: Not found
+
+ /api/podcasts/feed:
+ post:
+ summary: Get podcast feed
+ operationId: getPodcastFeed
+ tags:
+ - Podcasts
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ rssFeed:
+ type: string
+ description: The RSS feed URL of the podcast
+ responses:
+ 200:
+ description: Successfully retrieved podcast feed
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ podcast:
+ $ref: '../objects/mediaTypes/Podcast.yaml#/components/schemas/Podcast'
+ 400:
+ description: Bad request
+ 403:
+ description: Forbidden
+ 404:
+ description: Not found
+
+ /api/podcasts/opml/parse:
+ post:
+ summary: Get feeds from OPML text
+ description: Parse OPML text and return an array of feeds
+ operationId: getFeedsFromOPMLText
+ tags:
+ - Podcasts
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ opmlText:
+ type: string
+ responses:
+ '200':
+ description: Successfully parsed OPML text and returned feeds
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ feeds:
+ type: array
+ items:
+ type: object
+ properties:
+ title:
+ type: string
+ feedUrl:
+ type: string
+ '400':
+ description: Bad request, OPML text not provided
+ '403':
+ description: Forbidden, user is not admin
+ /api/podcasts/opml/create:
+ post:
+ summary: Bulk create podcasts from OPML feed URLs
+ operationId: bulkCreatePodcastsFromOpmlFeedUrls
+ tags:
+ - Podcasts
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ feeds:
+ type: array
+ items:
+ type: string
+ libraryId:
+ $ref: '../objects/Library.yaml#/components/schemas/libraryId'
+ folderId:
+ $ref: '../objects/Folder.yaml#/components/schemas/folderId'
+ autoDownloadEpisodes:
+ $ref: '../objects/mediaTypes/Podcast.yaml#/components/schemas/autoDownloadEpisodes'
+ responses:
+ '200':
+ description: Successfully created podcasts from feed URLs
+ '400':
+ description: Bad request, invalid request body
+ '403':
+ description: Forbidden, user is not admin
+ '404':
+ description: Folder not found
+
+ /api/podcasts/{id}/checknew:
+ parameters:
+ - name: id
+ in: path
+ description: Podcast ID
+ required: true
+ schema:
+ $ref: '../objects/mediaTypes/Podcast.yaml#/components/schemas/podcastId'
+
+ get:
+ summary: Check and download new episodes
+ operationId: checkNewEpisodes
+ tags:
+ - Podcasts
+ parameters:
+ - name: limit
+ in: query
+ description: Maximum number of episodes to download
+ required: false
+ schema:
+ type: integer
+ responses:
+ 200:
+ description: Successfully checked and downloaded new episodes
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ episodes:
+ type: array
+ items:
+ $ref: '../objects/entities/PodcastEpisode.yaml#/components/schemas/PodcastEpisode'
+ 403:
+ description: Forbidden
+ 404:
+ description: Not found
+ 500:
+ description: Server error
+
+ /api/podcasts/{id}/clear-queue:
+ parameters:
+ - name: id
+ in: path
+ description: Podcast ID
+ required: true
+ schema:
+ $ref: '../objects/mediaTypes/Podcast.yaml#/components/schemas/podcastId'
+
+ get:
+ summary: Clear episode download queue
+ operationId: clearEpisodeDownloadQueue
+ tags:
+ - Podcasts
+ responses:
+ 200:
+ description: Successfully cleared download queue
+ 403:
+ description: Forbidden
+
+ /api/podcasts/{id}/downloads:
+ parameters:
+ - name: id
+ in: path
+ description: Podcast ID
+ required: true
+ schema:
+ $ref: '../objects/mediaTypes/Podcast.yaml#/components/schemas/podcastId'
+
+ get:
+ summary: Get episode downloads
+ operationId: getEpisodeDownloads
+ tags:
+ - Podcasts
+ responses:
+ 200:
+ description: Successfully retrieved episode downloads
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ downloads:
+ type: array
+ items:
+ $ref: '../objects/entities/PodcastEpisode.yaml#/components/schemas/PodcastEpisode'
+ 404:
+ description: Not found
+
+ /api/podcasts/{id}/search-episode:
+ parameters:
+ - name: id
+ in: path
+ description: Podcast ID
+ required: true
+ schema:
+ $ref: '../objects/mediaTypes/Podcast.yaml#/components/schemas/podcastId'
+
+ get:
+ summary: Find episode by title
+ operationId: findEpisode
+ tags:
+ - Podcasts
+ parameters:
+ - name: title
+ in: query
+ description: Title of the episode to search for
+ required: true
+ schema:
+ type: string
+ responses:
+ 200:
+ description: Successfully found episodes
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ episodes:
+ type: array
+ items:
+ $ref: '../objects/entities/PodcastEpisode.yaml#/components/schemas/PodcastEpisode'
+ 404:
+ description: Not found
+ 500:
+ description: Server error
+
+ /api/podcasts/{id}/download-episodes:
+ parameters:
+ - name: id
+ in: path
+ description: Podcast ID
+ required: true
+ schema:
+ $ref: '../objects/mediaTypes/Podcast.yaml#/components/schemas/podcastId'
+
+ post:
+ summary: Download podcast episodes
+ operationId: downloadEpisodes
+ tags:
+ - Podcasts
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ type: string
+ responses:
+ 200:
+ description: Successfully started episode download
+ 400:
+ description: Bad request
+ 403:
+ description: Forbidden
+
+ /api/podcasts/{id}/match-episodes:
+ parameters:
+ - name: id
+ in: path
+ description: Podcast ID
+ required: true
+ schema:
+ $ref: '../objects/mediaTypes/Podcast.yaml#/components/schemas/podcastId'
+
+ post:
+ summary: Quick match podcast episodes
+ operationId: quickMatchEpisodes
+ tags:
+ - Podcasts
+ parameters:
+ - name: override
+ in: query
+ description: Override existing details if set to 1
+ required: false
+ schema:
+ type: string
+ responses:
+ 200:
+ description: Successfully matched episodes
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ numEpisodesUpdated:
+ type: integer
+ 403:
+ description: Forbidden
+
+ /api/podcasts/{id}/episode/{episodeId}:
+ parameters:
+ - name: id
+ in: path
+ description: Podcast ID
+ required: true
+ schema:
+ $ref: '../objects/mediaTypes/Podcast.yaml#/components/schemas/podcastId'
+ - name: episodeId
+ in: path
+ description: Episode ID
+ required: true
+ schema:
+ $ref: '../objects/mediaTypes/Podcast.yaml#/components/schemas/podcastId'
+
+ patch:
+ summary: Update a podcast episode
+ operationId: updateEpisode
+ tags:
+ - Podcasts
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ responses:
+ 200:
+ description: Successfully updated episode
+ content:
+ application/json:
+ schema:
+ $ref: '../objects/mediaTypes/Podcast.yaml#/components/schemas/Podcast'
+ 404:
+ description: Not found
+
+ get:
+ summary: Get a specific podcast episode
+ operationId: getEpisode
+ tags:
+ - Podcasts
+ responses:
+ 200:
+ description: Successfully retrieved episode
+ content:
+ application/json:
+ schema:
+ $ref: '../objects/entities/PodcastEpisode.yaml#/components/schemas/PodcastEpisode'
+ 404:
+ description: Not found
+
+ delete:
+ summary: Remove a podcast episode
+ operationId: removeEpisode
+ tags:
+ - Podcasts
+ parameters:
+ - name: hard
+ in: query
+ description: Hard delete the episode if set to 1
+ required: false
+ schema:
+ type: string
+ responses:
+ 200:
+ description: Successfully removed episode
+ content:
+ application/json:
+ schema:
+ $ref: '../objects/mediaTypes/Podcast.yaml#/components/schemas/Podcast'
+ 404:
+ description: Not found
+ 500:
+ description: Server error
diff --git a/docs/controllers/SeriesController.yaml b/docs/controllers/SeriesController.yaml
new file mode 100644
index 000000000..1fd999ed4
--- /dev/null
+++ b/docs/controllers/SeriesController.yaml
@@ -0,0 +1,72 @@
+components:
+ responses:
+ series404:
+ description: Series not found.
+ content:
+ text/html:
+ schema:
+ type: string
+ example: Series not found.
+paths:
+ /api/series/{id}:
+ parameters:
+ - name: id
+ in: path
+ description: The ID of the series.
+ required: true
+ schema:
+ $ref: '../objects/entities/Series.yaml#/components/schemas/seriesId'
+ get:
+ operationId: getSeries
+ tags:
+ - Series
+ summary: Get series
+ description: Get a series by ID.
+ requestBody:
+ required: false
+ description: A comma separated list of what to include with the series.
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ include:
+ type: string
+ description: A comma separated list of what to include with the series.
+ example: 'progress,rssfeed'
+ enum: ['progress', 'rssfeed', 'progress,rssfeed', 'rssfeed,progress']
+ responses:
+ '200':
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '../objects/entities/Series.yaml#/components/schemas/seriesWithProgressAndRSS'
+ '404':
+ $ref: '#/components/responses/series404'
+ patch:
+ operationId: updateSeries
+ tags:
+ - Series
+ summary: Update series
+ description: Update a series by ID.
+ requestBody:
+ required: true
+ description: The series to update.
+ content:
+ application/json:
+ schema:
+ properties:
+ name:
+ $ref: '../objects/entities/Series.yaml#/components/schemas/seriesName'
+ description:
+ $ref: '../objects/entities/Series.yaml#/components/schemas/seriesDescription'
+ responses:
+ '200':
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '../objects/entities/Series.yaml#/components/schemas/series'
+ '404':
+ $ref: '#/components/responses/series404'
diff --git a/docs/objects/Library.yaml b/docs/objects/Library.yaml
index 7d2a7833c..bab503ccf 100644
--- a/docs/objects/Library.yaml
+++ b/docs/objects/Library.yaml
@@ -3,10 +3,102 @@ components:
oldLibraryId:
type: string
description: The ID of the libraries created on server version 2.2.23 and before.
- format: "lib_[a-z0-9]{18}"
- example: lib_o78uaoeuh78h6aoeif
+ format: 'lib_[a-z0-9]{18}'
+ example: 'lib_o78uaoeuh78h6aoeif'
libraryId:
type: string
description: The ID of the library.
format: uuid
- example: e4bb1afb-4a4f-4dd6-8be0-e615d233185b
+ example: 'e4bb1afb-4a4f-4dd6-8be0-e615d233185b'
+ libraryIdNullable:
+ type: string
+ description: The ID of the library. Applies to all libraries if `null`.
+ format: uuid
+ nullable: true
+ example: 'e4bb1afb-4a4f-4dd6-8be0-e615d233185b'
+ libraryName:
+ description: The name of the library.
+ type: string
+ example: My Audiobooks
+ librarySettings:
+ description: The settings for the library.
+ type: object
+ properties:
+ coverAspectRatio:
+ description: Whether the library should use square book covers. Must be 0 (for false) or 1 (for true).
+ type: integer
+ example: 1
+ disableWatcher:
+ description: Whether to disable the folder watcher for the library.
+ type: boolean
+ example: false
+ skipMatchingMediaWithAsin:
+ description: Whether to skip matching books that already have an ASIN.
+ type: boolean
+ example: false
+ skipMatchingMediaWithIsbn:
+ description: Whether to skip matching books that already have an ISBN.
+ type: boolean
+ example: false
+ autoScanCronExpression:
+ description: The cron expression for when to automatically scan the library folders. If null, automatic scanning will be disabled.
+ type: string
+ nullable: true
+ example: '0 0 0 * * *'
+ audiobooksOnly:
+ description: Whether the library should ignore ebook files and only allow ebook files to be supplementary.
+ type: boolean
+ example: false
+ hideSingleBookSeries:
+ description: Whether to hide series with only one book.
+ type: boolean
+ example: false
+ onlyShowLaterBooksInContinueSeries:
+ description: Whether to only show books in a series after the highest series sequence.
+ type: boolean
+ example: false
+ metadataPrecedence:
+ description: The precedence of metadata sources. See Metadata Providers for a list of possible providers.
+ type: array
+ items:
+ type: string
+ example: ['folderStructure', 'audioMetatags', 'nfoFile', 'txtFiles', 'opfFile', 'absMetadata']
+ podcastSearchRegion:
+ description: The region to use when searching for podcasts.
+ type: string
+ example: 'us'
+ library:
+ description: A library object which includes either books or podcasts.
+ type: object
+ properties:
+ id:
+ $ref: '#/components/schemas/libraryId'
+ name:
+ $ref: '#/components/schemas/libraryName'
+ folders:
+ description: The folders that belong to the library.
+ type: array
+ items:
+ $ref: './Folder.yaml#/components/schemas/folder'
+ displayOrder:
+ description: Display position of the library in the list of libraries. Must be >= 1.
+ type: integer
+ example: 1
+ icon:
+ description: The selected icon for the library. See Library Icons for a list of possible icons.
+ type: string
+ example: 'audiobookshelf'
+ mediaType:
+ description: The type of media that the library contains. Will be `book` or `podcast`. (Read Only)
+ type: string
+ example: 'book'
+ provider:
+ description: Preferred metadata provider for the library. See Metadata Providers for a list of possible providers.
+ type: string
+ example: 'audible'
+ settings:
+ $ref: '#/components/schemas/librarySettings'
+ createdAt:
+ $ref: '../schemas.yaml#/components/schemas/createdAt'
+ lastUpdate:
+ $ref: '../schemas.yaml#/components/schemas/updatedAt'
diff --git a/docs/objects/LibraryItem.yaml b/docs/objects/LibraryItem.yaml
index 5d2f2b3da..107ba9f3f 100644
--- a/docs/objects/LibraryItem.yaml
+++ b/docs/objects/LibraryItem.yaml
@@ -4,7 +4,7 @@ components:
description: The ID of library items on server version 2.2.23 and before.
type: string
nullable: true
- format: "li_[a-z0-9]{18}"
+ format: 'li_[a-z0-9]{18}'
example: li_o78uaoeuh78h6aoeif
libraryItemId:
type: string
@@ -59,8 +59,17 @@ components:
type: object
description: A single item on the server, like a book or podcast. Minified media format.
allOf:
- - $ref : '#/components/schemas/libraryItemBase'
+ - $ref: '#/components/schemas/libraryItemBase'
- type: object
properties:
media:
$ref: './mediaTypes/media.yaml#/components/schemas/mediaMinified'
+ libraryItemSequence:
+ type: object
+ description: A single item on the server, like a book or podcast. Includes series sequence information.
+ allOf:
+ - $ref: '#/components/schemas/libraryItemBase'
+ - type: object
+ properties:
+ sequence:
+ $ref: './entities/Series.yaml#/components/schemas/sequence'
diff --git a/docs/objects/Notification.yaml b/docs/objects/Notification.yaml
new file mode 100644
index 000000000..50299ec8b
--- /dev/null
+++ b/docs/objects/Notification.yaml
@@ -0,0 +1,142 @@
+components:
+ schemas:
+ notificationId:
+ type: string
+ description: The ID of the notification.
+ example: notification-settings
+ # This is using a value of `notification-settings`, not a UUID. Need to investigate
+ #format: uuid
+ #example: e4bb1afb-4a4f-4dd6-8be0-e615d233185b
+ appriseApiUrl:
+ type: string
+ nullable: true
+ description: The full URL where the Apprise API to use is located.
+ maxFailedAttempts:
+ type: integer
+ minimum: 0
+ default: 5
+ description: The maximum number of times a notification fails before being disabled.
+ maxNotificationQueue:
+ type: integer
+ description: The maximum number of notifications in the notification queue before events are ignored.
+ notificationEventName:
+ type: string
+ description: The name of the event the notification will fire on.
+ enum: ['onPodcastEpisodeDownloaded', 'onBackupCompleted', 'onBackupFailed', 'onTest']
+ urls:
+ type: array
+ items:
+ type: string
+ description: The Apprise URLs to use for the notification.
+ example: http://192.168.0.3:8000/notify/my-cool-notification
+ titleTemplate:
+ type: string
+ description: The template for the notification title.
+ example: 'New {{podcastTitle}} Episode!'
+ bodyTemplate:
+ type: string
+ description: The template for the notification body.
+ example: '{{episodeTitle}} has been added to {{libraryName}} library.'
+ enabled:
+ type: boolean
+ default: false
+ description: Whether the notification is enabled.
+ notificationType:
+ type: string
+ enum: ['info', 'success', 'warning', 'failure']
+ nullable: true
+ default: 'info'
+ description: The notification's type.
+ Notification:
+ type: object
+ properties:
+ id:
+ $ref: '#/components/schemas/notificationId'
+ libraryId:
+ $ref: './Library.yaml#/components/schemas/libraryIdNullable'
+ eventName:
+ $ref: '#/components/schemas/notificationEventName'
+ urls:
+ $ref: '#/components/schemas/urls'
+ titleTemplate:
+ $ref: '#/components/schemas/titleTemplate'
+ bodyTemplate:
+ $ref: '#/components/schemas/bodyTemplate'
+ enabled:
+ $ref: '#/components/schemas/enabled'
+ type:
+ $ref: '#/components/schemas/notificationType'
+ lastFiredAt:
+ type: integer
+ nullable: true
+ description: The time (in ms since POSIX epoch) when the notification was last fired. Will be null if the notification has not fired.
+ lastAttemptFailed:
+ type: boolean
+ description: Whether the last notification attempt failed.
+ numConsecutiveFailedAttempts:
+ type: integer
+ description: The number of consecutive times the notification has failed.
+ default: 0
+ numTimesFired:
+ type: integer
+ description: The number of times the notification has fired.
+ default: 0
+ createdAt:
+ $ref: '../schemas.yaml#/components/schemas/createdAt'
+ NotificationEvent:
+ type: object
+ properties:
+ name:
+ type: string
+ description: The name of the notification event. The names and allowable values are defined at https://github.com/advplyr/audiobookshelf/blob/master/server/utils/notifications.js
+ requiresLibrary:
+ type: boolean
+ description: Whether the notification event depends on a library existing.
+ libraryMediaType:
+ type: string
+ description: The type of media of the library the notification depends on existing. Will not exist if requiresLibrary is false.
+ nullable: true
+ description:
+ type: string
+ description: The description of the notification event.
+ variables:
+ type: array
+ items:
+ type: string
+ description: The variables of the notification event that can be used in the notification templates.
+ defaults:
+ type: object
+ properties:
+ title:
+ type: string
+ description: The default title template for notifications using the notification event.
+ body:
+ type: string
+ description: The default body template for notifications using the notification event.
+ testData:
+ type: object
+ description: The keys of the testData object will match the list of variables. The values will be the data used when sending a test notification.
+ additionalProperties:
+ type: string
+ NotificationSettings:
+ type: object
+ properties:
+ id:
+ $ref: '#/components/schemas/notificationId'
+ appriseType:
+ type: string
+ description: The type of Apprise that will be used. At the moment, only api is available.
+ appriseApiUrl:
+ $ref: '#/components/schemas/appriseApiUrl'
+ notifications:
+ type: array
+ items:
+ $ref: '#/components/schemas/Notification'
+ description: The set notifications.
+ maxFailedAttempts:
+ $ref: '#/components/schemas/maxFailedAttempts'
+ maxNotificationQueue:
+ $ref: '#/components/schemas/maxNotificationQueue'
+ notificationDelay:
+ type: integer
+ description: The time (in ms) between notification pushes.
diff --git a/docs/objects/entities/Author.yaml b/docs/objects/entities/Author.yaml
index a38344d38..838e5b517 100644
--- a/docs/objects/entities/Author.yaml
+++ b/docs/objects/entities/Author.yaml
@@ -6,14 +6,24 @@ components:
format: uuid
example: e4bb1afb-4a4f-4dd6-8be0-e615d233185b
authorAsin:
- type: string
description: The Audible identifier (ASIN) of the author. Will be null if unknown. Not the Amazon identifier.
+ type: string
nullable: true
example: B000APZOQA
authorName:
description: The name of the author.
type: string
example: Terry Goodkind
+ authorDescription:
+ description: The new description of the author.
+ type: string
+ nullable: true
+ example: Terry Goodkind is a #1 New York Times Bestselling Author and creator of the critically acclaimed masterwork, ‘The Sword of Truth’. He has written 30+ major, bestselling novels, has been published in more than 20 languages world-wide, and has sold more than 26 Million books. ‘The Sword of Truth’ is a revered literary tour de force, comprised of 17 volumes, borne from over 25 years of dedicated writing.
+ authorImagePath:
+ description: The absolute path for the author image. This will be in the `metadata/` directory. Will be null if there is no image.
+ type: string
+ nullable: true
+ example: /metadata/authors/aut_z3leimgybl7uf3y4ab.jpg
authorSeries:
type: object
description: Series and the included library items that an author has written.
@@ -26,9 +36,9 @@ components:
description: The items in the series. Each library item's media's metadata will have a `series` attribute, a `Series Sequence`, which is the matching series.
type: array
items:
- ref: '../LibraryItem.yaml#/components/schemas/libraryItemMinified'
+ $ref: '../LibraryItem.yaml#/components/schemas/libraryItemMinified'
author:
- description: An author object which includes a description and image path.
+ description: An author object which includes a description and image path. The library items and series associated with the author are optionally included.
type: object
properties:
id:
@@ -38,51 +48,23 @@ components:
name:
$ref: '#/components/schemas/authorName'
description:
- description: A description of the author. Will be null if there is none.
- type: string
- nullable: true
- example: |
- Terry Goodkind is a #1 New York Times Bestselling Author and creator of the critically acclaimed masterwork,
- ‘The Sword of Truth’. He has written 30+ major, bestselling novels, has been published in more than 20
- languages world-wide, and has sold more than 26 Million books. ‘The Sword of Truth’ is a revered literary
- tour de force, comprised of 17 volumes, borne from over 25 years of dedicated writing. Terry Goodkind's
- brilliant books are character-driven stories, with a focus on the complexity of the human psyche. Goodkind
- has an uncanny grasp for crafting compelling stories about people like you and me, trapped in terrifying
- situations.
+ $ref: '#/components/schemas/authorDescription'
imagePath:
- description: The absolute path for the author image located in the `metadata/` directory. Will be null if there is no image.
- type: string
- nullable: true
- example: /metadata/authors/aut_bxxbyjiptmgb56yzoz.jpg
+ $ref: '#/components/schemas/authorImagePath'
addedAt:
$ref: '../../schemas.yaml#/components/schemas/addedAt'
updatedAt:
$ref: '../../schemas.yaml#/components/schemas/updatedAt'
- authorWithItems:
- type: object
- description: The author schema with an array of items they are associated with.
- allOf:
- - $ref: '#/components/schemas/author'
- - type: object
- properties:
- libraryItems:
- description: The items associated with the author
- type: string
- type: array
- items:
- $ref: '../LibraryItem.yaml#/components/schemas/libraryItemMinified'
- authorWithSeries:
- type: object
- description: The author schema with an array of items and series they are associated with.
- allOf:
- - $ref: '#/components/schemas/authorWithItems'
- - type: object
- properties:
- series:
- description: The series associated with the author
- type: array
- items:
- $ref: '#/components/schemas/authorSeries'
+ libraryItems:
+ description: The items associated with the author
+ type: array
+ items:
+ $ref: '../LibraryItem.yaml#/components/schemas/libraryItemMinified'
+ series:
+ description: The series associated with the author
+ type: array
+ items:
+ $ref: '#/components/schemas/authorSeries'
authorMinified:
type: object
description: Minified author object which only contains the author name and ID.
@@ -101,4 +83,4 @@ components:
numBooks:
description: The number of books associated with the author in the library.
type: integer
- example: 1
\ No newline at end of file
+ example: 1
diff --git a/docs/objects/entities/PodcastEpisode.yaml b/docs/objects/entities/PodcastEpisode.yaml
new file mode 100644
index 000000000..f10c25ec4
--- /dev/null
+++ b/docs/objects/entities/PodcastEpisode.yaml
@@ -0,0 +1,74 @@
+components:
+ schemas:
+ PodcastEpisode:
+ type: object
+ description: A single episode of a podcast.
+ properties:
+ libraryItemId:
+ $ref: '../LibraryItem.yaml#/components/schemas/libraryItemId'
+ podcastId:
+ $ref: '../mediaTypes/Podcast.yaml#/components/schemas/podcastId'
+ id:
+ $ref: '../mediaTypes/Podcast.yaml#/components/schemas/podcastId'
+ oldEpisodeId:
+ $ref: '../mediaTypes/Podcast.yaml#/components/schemas/oldPodcastId'
+ index:
+ type: integer
+ description: The index of the episode within the podcast.
+ nullable: true
+ season:
+ type: string
+ description: The season number of the episode.
+ nullable: true
+ episode:
+ type: string
+ description: The episode number within the season.
+ nullable: true
+ episodeType:
+ type: string
+ description: The type of episode (e.g., full, trailer).
+ nullable: true
+ title:
+ type: string
+ description: The title of the episode.
+ nullable: true
+ subtitle:
+ type: string
+ description: The subtitle of the episode.
+ nullable: true
+ description:
+ type: string
+ description: The description of the episode.
+ nullable: true
+ enclosure:
+ type: object
+ description: The enclosure object containing additional episode data.
+ nullable: true
+ additionalProperties: true
+ guid:
+ type: string
+ description: The globally unique identifier for the episode.
+ nullable: true
+ pubDate:
+ type: string
+ description: The publication date of the episode.
+ nullable: true
+ chapters:
+ type: array
+ description: The chapters within the episode.
+ items:
+ type: object
+ audioFile:
+ $ref: '../files/AudioFile.yaml#/components/schemas/audioFile'
+ publishedAt:
+ $ref: '../../schemas.yaml#/components/schemas/createdAt'
+ addedAt:
+ $ref: '../../schemas.yaml#/components/schemas/addedAt'
+ updatedAt:
+ $ref: '../../schemas.yaml#/components/schemas/updatedAt'
+ audioTrack:
+ $ref: '../files/AudioTrack.yaml#/components/schemas/AudioTrack'
+ duration:
+ $ref: '../../schemas.yaml#/components/schemas/durationSec'
+ size:
+ $ref: '../../schemas.yaml#/components/schemas/size'
diff --git a/docs/objects/entities/Series.yaml b/docs/objects/entities/Series.yaml
index af818477c..ef35a5b35 100644
--- a/docs/objects/entities/Series.yaml
+++ b/docs/objects/entities/Series.yaml
@@ -8,4 +8,110 @@ components:
seriesName:
description: The name of the series.
type: string
- example: Sword of Truth
\ No newline at end of file
+ example: Sword of Truth
+ seriesDescription:
+ description: A description for the series. Will be null if there is none.
+ type: string
+ nullable: true
+ example: The Sword of Truth is a series of twenty one epic fantasy novels written by Terry Goodkind.
+ sequence:
+ description: The position in the series the book is.
+ type: string
+ nullable: true
+ seriesProgress:
+ type: object
+ description: The user's progress of a series.
+ properties:
+ libraryItemIds:
+ description: The IDs of the library items in the series.
+ type: array
+ items:
+ $ref: '../LibraryItem.yaml#/components/schemas/libraryItemId'
+ libraryItemIdsFinished:
+ description: The IDs of the library items in the series that are finished.
+ type: array
+ items:
+ $ref: '../LibraryItem.yaml#/components/schemas/libraryItemId'
+ isFinished:
+ description: Whether the series is finished.
+ type: boolean
+ series:
+ type: object
+ description: A series object which includes the name and description of the series.
+ properties:
+ id:
+ $ref: '#/components/schemas/seriesId'
+ name:
+ $ref: '#/components/schemas/seriesName'
+ description:
+ $ref: '#/components/schemas/seriesDescription'
+ addedAt:
+ $ref: '../../schemas.yaml#/components/schemas/addedAt'
+ updatedAt:
+ $ref: '../../schemas.yaml#/components/schemas/updatedAt'
+ seriesNumBooks:
+ type: object
+ description: A series object which includes the name and number of books in the series.
+ properties:
+ id:
+ $ref: '#/components/schemas/seriesId'
+ name:
+ $ref: '#/components/schemas/seriesName'
+ numBooks:
+ description: The number of books in the series.
+ type: integer
+ libraryItemIds:
+ description: The IDs of the library items in the series.
+ type: array
+ items:
+ $ref: '../LibraryItem.yaml#/components/schemas/libraryItemId'
+ seriesBooks:
+ type: object
+ description: A series object which includes the name and books in the series.
+ properties:
+ id:
+ $ref: '#/components/schemas/seriesId'
+ name:
+ $ref: '#/components/schemas/seriesName'
+ addedAt:
+ $ref: '../../schemas.yaml#/components/schemas/addedAt'
+ nameIgnorePrefix:
+ description: The name of the series with any prefix moved to the end.
+ type: string
+ nameIgnorePrefixSort:
+ description: The name of the series with any prefix removed.
+ type: string
+ type:
+ description: Will always be `series`.
+ type: string
+ books:
+ description: The library items that contain the books in the series. A sequence attribute that denotes the position in the series the book is in, is tacked on.
+ type: array
+ items:
+ $ref: '../LibraryItem.yaml#/components/schemas/libraryItemSequence'
+ totalDuration:
+ description: The combined duration (in seconds) of all books in the series.
+ type: number
+ seriesSequence:
+ type: object
+ description: A series object which includes the name and sequence of the series.
+ properties:
+ id:
+ $ref: '#/components/schemas/seriesId'
+ name:
+ $ref: '#/components/schemas/seriesName'
+ sequence:
+ $ref: '#/components/schemas/sequence'
+ seriesWithProgressAndRSS:
+ type: object
+ description: A series object which includes the name and progress of the series.
+ oneOf:
+ - $ref: '#/components/schemas/series'
+ - type: object
+ properties:
+ progress:
+ $ref: '#/components/schemas/seriesProgress'
+ rssFeed:
+ description: The RSS feed for the series.
+ type: string
+ example: 'TBD'
diff --git a/docs/objects/files/AudioFile.yaml b/docs/objects/files/AudioFile.yaml
index 06a9c80cc..20994438f 100644
--- a/docs/objects/files/AudioFile.yaml
+++ b/docs/objects/files/AudioFile.yaml
@@ -52,7 +52,7 @@ components:
type: string
example: MP2/3 (MPEG audio layer 2/3)
duration:
- $ref: '#/components/schemas/durationSec'
+ $ref: '../../schemas.yaml#/components/schemas/durationSec'
bitRate:
description: The bit rate (in bit/s) of the audio file.
type: integer
diff --git a/docs/objects/files/AudioTrack.yaml b/docs/objects/files/AudioTrack.yaml
new file mode 100644
index 000000000..d31c5cef8
--- /dev/null
+++ b/docs/objects/files/AudioTrack.yaml
@@ -0,0 +1,45 @@
+components:
+ schemas:
+ AudioTrack:
+ type: object
+ description: Represents an audio track with various properties.
+ properties:
+ index:
+ type: integer
+ nullable: true
+ description: The index of the audio track.
+ example: null
+ startOffset:
+ type: number
+ format: float
+ nullable: true
+ description: The start offset of the audio track in seconds.
+ example: null
+ duration:
+ type: number
+ format: float
+ nullable: true
+ description: The duration of the audio track in seconds.
+ example: null
+ title:
+ type: string
+ nullable: true
+ description: The title of the audio track.
+ example: null
+ contentUrl:
+ type: string
+ nullable: true
+ description: The URL where the audio track content is located.
+ example: '`/api/items/${itemId}/file/${audioFile.ino}`'
+ mimeType:
+ type: string
+ nullable: true
+ description: The MIME type of the audio track.
+ example: null
+ codec:
+ type: string
+ nullable: true
+ description: The codec used for the audio track.
+ example: aac
+ metadata:
+ $ref: '../metadata/FileMetadata.yaml#/components/schemas/fileMetadata'
diff --git a/docs/objects/files/EBookFile.yaml b/docs/objects/files/EBookFile.yaml
new file mode 100644
index 000000000..50dbb44f9
--- /dev/null
+++ b/docs/objects/files/EBookFile.yaml
@@ -0,0 +1,17 @@
+components:
+ schemas:
+ ebookFile:
+ type: object
+ properties:
+ ino:
+ $ref: '../../schemas.yaml#/components/schemas/inode'
+ metadata:
+ $ref: '../metadata/FileMetadata.yaml#/components/schemas/fileMetadata'
+ ebookFormat:
+ description: The ebook format of the ebook file.
+ type: string
+ example: epub
+ addedAt:
+ $ref: '../../schemas.yaml#/components/schemas/addedAt'
+ updatedAt:
+ $ref: '../../schemas.yaml#/components/schemas/updatedAt'
diff --git a/docs/objects/mediaTypes/Book.yaml b/docs/objects/mediaTypes/Book.yaml
index 44f3552e5..ebe2b63d9 100644
--- a/docs/objects/mediaTypes/Book.yaml
+++ b/docs/objects/mediaTypes/Book.yaml
@@ -18,18 +18,18 @@ components:
audioFiles:
type: array
items:
- $ref: '#/components/schemas/audioFile'
+ $ref: '../files/AudioFile.yaml#/components/schemas/audioFile'
chapters:
type: array
items:
- $ref: '#/components/schemas/bookChapter'
+ $ref: '../metadata/BookMetadata.yaml#/components/schemas/bookChapter'
missingParts:
description: Any parts missing from the book by track index.
type: array
items:
type: integer
ebookFile:
- $ref: '#/components/schemas/ebookFile'
+ $ref: '../files/EBookFile.yaml#/components/schemas/ebookFile'
bookMinified:
type: object
description: Minified book schema. Does not depend on `bookBase` because there's pretty much no overlap.
diff --git a/docs/objects/mediaTypes/Podcast.yaml b/docs/objects/mediaTypes/Podcast.yaml
new file mode 100644
index 000000000..df915fe07
--- /dev/null
+++ b/docs/objects/mediaTypes/Podcast.yaml
@@ -0,0 +1,76 @@
+components:
+ schemas:
+ podcastId:
+ type: string
+ description: The ID of podcasts and podcast episodes after 2.3.0.
+ format: uuid
+ example: e4bb1afb-4a4f-4dd6-8be0-e615d233185b
+ oldPodcastId:
+ description: The ID of podcasts on server version 2.2.23 and before.
+ type: string
+ nullable: true
+ format: 'pod_[a-z0-9]{18}'
+ example: pod_o78uaoeuh78h6aoeif
+ autoDownloadEpisodes:
+ type: boolean
+ description: Whether episodes are automatically downloaded.
+
+ Podcast:
+ type: object
+ description: A podcast containing multiple episodes.
+ properties:
+ id:
+ $ref: '#/components/schemas/podcastId'
+ libraryItemId:
+ $ref: '../LibraryItem.yaml#/components/schemas/libraryItemId'
+ metadata:
+ $ref: '../metadata/PodcastMetadata.yaml#/components/schemas/PodcastMetadata'
+ coverPath:
+ type: string
+ description: The file path to the podcast's cover image.
+ nullable: true
+ tags:
+ type: array
+ description: The tags associated with the podcast.
+ items:
+ type: string
+ episodes:
+ type: array
+ description: The episodes of the podcast.
+ items:
+ $ref: '../entities/PodcastEpisode.yaml#/components/schemas/PodcastEpisode'
+ autoDownloadEpisodes:
+ $ref: '#/components/schemas/autoDownloadEpisodes'
+ autoDownloadSchedule:
+ type: string
+ description: The schedule for automatic episode downloads, in cron format.
+ nullable: true
+ lastEpisodeCheck:
+ type: integer
+ description: The timestamp of the last episode check.
+ maxEpisodesToKeep:
+ type: integer
+ description: The maximum number of episodes to keep.
+ maxNewEpisodesToDownload:
+ type: integer
+ description: The maximum number of new episodes to download when automatically downloading epsiodes.
+ lastCoverSearch:
+ type: integer
+ description: The timestamp of the last cover search.
+ nullable: true
+ lastCoverSearchQuery:
+ type: string
+ description: The query used for the last cover search.
+ nullable: true
+ size:
+ type: integer
+ description: The total size of all episodes in bytes.
+ duration:
+ type: integer
+ description: The total duration of all episodes in seconds.
+ numTracks:
+ type: integer
+ description: The number of tracks (episodes) in the podcast.
+ latestEpisodePublished:
+ type: integer
+ description: The timestamp of the most recently published episode.
diff --git a/docs/objects/metadata/PodcastMetadata.yaml b/docs/objects/metadata/PodcastMetadata.yaml
new file mode 100644
index 000000000..a565d697a
--- /dev/null
+++ b/docs/objects/metadata/PodcastMetadata.yaml
@@ -0,0 +1,59 @@
+components:
+ schemas:
+ PodcastMetadata:
+ type: object
+ description: Metadata for a podcast.
+ properties:
+ title:
+ type: string
+ description: The title of the podcast.
+ nullable: true
+ author:
+ type: string
+ description: The author of the podcast.
+ nullable: true
+ description:
+ type: string
+ description: The description of the podcast.
+ nullable: true
+ releaseDate:
+ type: string
+ format: date-time
+ description: The release date of the podcast.
+ nullable: true
+ genres:
+ type: array
+ description: The genres of the podcast.
+ items:
+ type: string
+ feedUrl:
+ type: string
+ description: The URL of the podcast feed.
+ nullable: true
+ imageUrl:
+ type: string
+ description: The URL of the podcast's image.
+ nullable: true
+ itunesPageUrl:
+ type: string
+ description: The URL of the podcast's iTunes page.
+ nullable: true
+ itunesId:
+ type: string
+ description: The iTunes ID of the podcast.
+ nullable: true
+ itunesArtistId:
+ type: string
+ description: The iTunes artist ID of the podcast.
+ nullable: true
+ explicit:
+ type: boolean
+ description: Whether the podcast contains explicit content.
+ language:
+ type: string
+ description: The language of the podcast.
+ nullable: true
+ type:
+ type: string
+ description: The type of podcast (e.g., episodic, serial).
+ nullable: true
diff --git a/docs/objects/settings/EmailSettings.yaml b/docs/objects/settings/EmailSettings.yaml
new file mode 100644
index 000000000..acce79c72
--- /dev/null
+++ b/docs/objects/settings/EmailSettings.yaml
@@ -0,0 +1,78 @@
+components:
+ schemas:
+ ereaderName:
+ type: string
+ description: The name of the e-reader device.
+ EreaderDeviceObject:
+ type: object
+ description: An e-reader device configured to receive EPUB through e-mail.
+ properties:
+ name:
+ $ref: '#/components/schemas/ereaderName'
+ email:
+ type: string
+ description: The email address associated with the e-reader device.
+ availabilityOption:
+ type: string
+ description: The availability option for the device.
+ enum: ['adminOrUp', 'userOrUp', 'guestOrUp', 'specificUsers']
+ users:
+ type: array
+ description: List of specific users allowed to access the device.
+ items:
+ type: string
+ required:
+ - name
+ - email
+ - availabilityOption
+ EmailSettings:
+ type: object
+ description: The email settings configuration for the server. This includes the credentials to send e-books and an array of e-reader devices.
+ properties:
+ id:
+ type: string
+ description: The unique identifier for the email settings. Currently this is always `email-settings`
+ example: email-settings
+ host:
+ type: string
+ description: The SMTP host address.
+ nullable: true
+ port:
+ type: integer
+ format: int32
+ description: The port number for the SMTP server.
+ example: 465
+ secure:
+ type: boolean
+ description: Indicates if the connection should use SSL/TLS.
+ example: true
+ rejectUnauthorized:
+ type: boolean
+ description: Indicates if unauthorized SSL/TLS certificates should be rejected.
+ example: true
+ user:
+ type: string
+ description: The username for SMTP authentication.
+ nullable: true
+ pass:
+ type: string
+ description: The password for SMTP authentication.
+ nullable: true
+ testAddress:
+ type: string
+ description: The test email address used for sending test emails.
+ nullable: true
+ fromAddress:
+ type: string
+ description: The default "from" email address for outgoing emails.
+ nullable: true
+ ereaderDevices:
+ type: array
+ description: List of configured e-reader devices.
+ items:
+ $ref: '#/components/schemas/EreaderDeviceObject'
+ required:
+ - id
+ - port
+ - secure
+ - ereaderDevices
diff --git a/docs/openapi.json b/docs/openapi.json
index 93c7b27ad..48f30ecfb 100644
Binary files a/docs/openapi.json and b/docs/openapi.json differ
diff --git a/docs/root.yaml b/docs/root.yaml
index f31ccf67c..4d6c055db 100644
--- a/docs/root.yaml
+++ b/docs/root.yaml
@@ -7,151 +7,86 @@ servers:
- url: http://localhost:3000
description: Development server
components:
- securitySchemes:
- BearerAuth:
- type: http
- scheme: bearer
- responses:
- ok200:
- description: OK
+ securitySchemes:
+ BearerAuth:
+ description: Bearer authentication
+ type: http
+ scheme: bearer
security:
- - BearerAuth: []
+ - BearerAuth: []
paths:
/api/authors/{id}:
- get:
- operationId: getAuthorById
- summary: Get a single author by ID on server
- tags:
- - Authors
- parameters:
- - $ref: './controllers/AuthorController.yaml#/components/parameters/authorId'
- - $ref: './controllers/AuthorController.yaml#/components/parameters/authorInclude'
- - $ref: './controllers/AuthorController.yaml#/components/parameters/authorLibraryId'
- responses:
- 200:
- description: getAuthorById OK
- content:
- application/json:
- schema:
- oneOf:
- - $ref: './objects/entities/Author.yaml#/components/schemas/author'
- - $ref: './objects/entities/Author.yaml#/components/schemas/authorWithItems'
- - $ref: './objects/entities/Author.yaml#/components/schemas/authorWithSeries'
- 404:
- $ref: './controllers/AuthorController.yaml#/components/responses/author404'
- patch:
- operationId: updateAuthorById
- summary: Update a single author by ID on server. This endpoint will merge two authors if the new author name matches another author in the database.
- tags:
- - Authors
- parameters:
- - $ref: './controllers/AuthorController.yaml#/components/parameters/authorId'
- - $ref: './controllers/AuthorController.yaml#/components/parameters/asin'
- - $ref: './controllers/AuthorController.yaml#/components/parameters/authorName'
- - $ref: './controllers/AuthorController.yaml#/components/parameters/authorDescription'
- - $ref: './controllers/AuthorController.yaml#/components/parameters/authorImagePath'
- responses:
- 200:
- description: updateAuthorById OK
- content:
- application/json:
- schema:
- allOf:
- - $ref: './objects/entities/Author.yaml#/components/schemas/author'
- - $ref: './controllers/AuthorController.yaml#/components/schemas/authorUpdated'
- - type: object
- properties:
- merged:
- description: Will only exist and be `true` if the author was merged with another author
- type: boolean
- nullable: true
- 404:
- $ref: './controllers/AuthorController.yaml#/components/responses/author404'
- delete:
- operationId: deleteAuthorById
- summary: Delete a single author by ID on server and remove author from all books.
- tags:
- - Authors
- parameters:
- - $ref: './controllers/AuthorController.yaml#/components/parameters/authorId'
- responses:
- 200:
- $ref: '#/components/responses/ok200'
- 404:
- $ref: './controllers/AuthorController.yaml#/components/responses/author404'
+ $ref: './controllers/AuthorController.yaml#/paths/~1api~1authors~1{id}'
/api/authors/{id}/image:
- post:
- operationId: setAuthorImageById
- summary: Set an author image using a provided URL.
- tags:
- - Authors
- parameters:
- - $ref: './controllers/AuthorController.yaml#/components/parameters/authorId'
- - $ref: './controllers/AuthorController.yaml#/components/parameters/imageUrl'
- responses:
- 200:
- description: setAuthorImageById OK
- content:
- application/json:
- schema:
- oneOf:
- - $ref: './objects/entities/Author.yaml#/components/schemas/author'
- 404:
- $ref: './controllers/AuthorController.yaml#/components/responses/author404'
- delete:
- operationId: deleteAuthorImageById
- summary: Delete an author image from the server and remove the image from the database.
- tags:
- - Authors
- parameters:
- - $ref: './controllers/AuthorController.yaml#/components/parameters/authorId'
- responses:
- 200:
- $ref: '#/components/responses/ok200'
- 404:
- $ref: './controllers/AuthorController.yaml#/components/responses/author404'
- patch:
- operationId: getAuthorImageById
- summary: Return the author image by author ID.
- tags:
- - Authors
- parameters:
- - $ref: './controllers/AuthorController.yaml#/components/parameters/authorId'
- - $ref: './controllers/AuthorController.yaml#/components/parameters/imageWidth'
- - $ref: './controllers/AuthorController.yaml#/components/parameters/imageHeight'
- - $ref: './controllers/AuthorController.yaml#/components/parameters/imageFormat'
- - $ref: './controllers/AuthorController.yaml#/components/parameters/imageRaw'
- responses:
- 200:
- description: getAuthorImageById OK
- content:
- image/*:
- schema:
- type: string
- format: binary
- 404:
- $ref: './controllers/AuthorController.yaml#/components/responses/author404'
+ $ref: './controllers/AuthorController.yaml#/paths/~1api~1authors~1{id}~1image'
/api/authors/{id}/match:
- post:
- operationId: matchAuthorById
- summary: Match the author against Audible using quick match. Quick match updates the author's description and image (if no image already existed) with information from audible. Either `asin` or `q` must be provided, with `asin` taking priority if both are provided.
- tags:
- - Authors
- parameters:
- - $ref: './controllers/AuthorController.yaml#/components/parameters/authorId'
- - $ref: './controllers/AuthorController.yaml#/components/parameters/asin'
- - $ref: './controllers/AuthorController.yaml#/components/parameters/authorSearchName'
- responses:
- 200:
- description: matchAuthorById OK
- content:
- application/json:
- schema:
- allOf:
- - $ref: './objects/entities/Author.yaml#/components/schemas/author'
- - $ref: './controllers/AuthorController.yaml#/components/schemas/authorUpdated'
- 404:
- $ref: './controllers/AuthorController.yaml#/components/responses/author404'
+ $ref: './controllers/AuthorController.yaml#/paths/~1api~1authors~1{id}~1match'
+ /api/emails/settings:
+ $ref: './controllers/EmailController.yaml#/paths/~1api~1emails~1settings'
+ /api/emails/test:
+ $ref: './controllers/EmailController.yaml#/paths/~1api~1emails~1test'
+ /api/emails/ereader-devices:
+ $ref: './controllers/EmailController.yaml#/paths/~1api~1emails~1ereader-devices'
+ /api/emails/send-ebook-to-device:
+ $ref: './controllers/EmailController.yaml#/paths/~1api~1emails~1send-ebook-to-device'
+ /api/libraries:
+ $ref: './controllers/LibraryController.yaml#/paths/~1api~1libraries'
+ /api/libraries/{id}:
+ $ref: './controllers/LibraryController.yaml#/paths/~1api~1libraries~1{id}'
+ /api/libraries/{id}/authors:
+ $ref: './controllers/LibraryController.yaml#/paths/~1api~1libraries~1{id}~1authors'
+ /api/libraries/{id}/items:
+ $ref: './controllers/LibraryController.yaml#/paths/~1api~1libraries~1{id}~1items'
+ /api/libraries/{id}/issues:
+ $ref: './controllers/LibraryController.yaml#/paths/~1api~1libraries~1{id}~1issues'
+ /api/libraries/{id}/series:
+ $ref: './controllers/LibraryController.yaml#/paths/~1api~1libraries~1{id}~1series'
+ /api/libraries/{id}/series/{seriesId}:
+ $ref: './controllers/LibraryController.yaml#/paths/~1api~1libraries~1{id}~1series~1{seriesId}'
+ /api/notifications:
+ $ref: './controllers/NotificationController.yaml#/paths/~1api~1notifications'
+ /api/notificationdata:
+ $ref: './controllers/NotificationController.yaml#/paths/~1api~1notificationdata'
+ /api/notifications/test:
+ $ref: './controllers/NotificationController.yaml#/paths/~1api~1notifications~1test'
+ /api/notifications/{id}:
+ $ref: './controllers/NotificationController.yaml#/paths/~1api~1notifications~1{id}'
+ /api/notifications/{id}/test:
+ $ref: './controllers/NotificationController.yaml#/paths/~1api~1notifications~1{id}~1test'
+ /api/podcasts:
+ $ref: './controllers/PodcastController.yaml#/paths/~1api~1podcasts'
+ /api/podcasts/feed:
+ $ref: './controllers/PodcastController.yaml#/paths/~1api~1podcasts~1feed'
+ /api/podcasts/opml/parse:
+ $ref: './controllers/PodcastController.yaml#/paths/~1api~1podcasts~1opml~1parse'
+ /api/podcasts/opml/create:
+ $ref: './controllers/PodcastController.yaml#/paths/~1api~1podcasts~1opml~1create'
+ /api/podcasts/{id}/checknew:
+ $ref: './controllers/PodcastController.yaml#/paths/~1api~1podcasts~1{id}~1checknew'
+ /api/podcasts/{id}/clear-queue:
+ $ref: './controllers/PodcastController.yaml#/paths/~1api~1podcasts~1{id}~1clear-queue'
+ /api/podcasts/{id}/downloads:
+ $ref: './controllers/PodcastController.yaml#/paths/~1api~1podcasts~1{id}~1downloads'
+ /api/podcasts/{id}/search-episode:
+ $ref: './controllers/PodcastController.yaml#/paths/~1api~1podcasts~1{id}~1search-episode'
+ /api/podcasts/{id}/download-episodes:
+ $ref: './controllers/PodcastController.yaml#/paths/~1api~1podcasts~1{id}~1download-episodes'
+ /api/podcasts/{id}/match-episodes:
+ $ref: './controllers/PodcastController.yaml#/paths/~1api~1podcasts~1{id}~1match-episodes'
+ /api/podcasts/{id}/episode/{episodeId}:
+ $ref: './controllers/PodcastController.yaml#/paths/~1api~1podcasts~1{id}~1episode~1{episodeId}'
+ /api/series/{id}:
+ $ref: './controllers/SeriesController.yaml#/paths/~1api~1series~1{id}'
tags:
- name: Authors
description: Author endpoints
+ - name: Libraries
+ description: Library endpoints
+ - name: Series
+ description: Series endpoints
+ - name: Email
+ description: Email endpoints
+ - name: Notification
+ description: Notifications endpoints
+ - name: Podcasts
+ description: Podcast endpoints
diff --git a/docs/schemas.yaml b/docs/schemas.yaml
index de506d460..e4e05e809 100644
--- a/docs/schemas.yaml
+++ b/docs/schemas.yaml
@@ -20,14 +20,56 @@ components:
description: The total length (in seconds) of the item or file.
type: number
example: 33854.905
+ duration:
+ description: The total length of the item or file.
+ type: string
+ example: '01:23:45'
tags:
description: Tags applied to items.
type: array
items:
type: string
- example: ["To Be Read", "Genre: Nonfiction"]
+ example: ['To Be Read', 'Genre: Nonfiction']
inode:
description: The inode of the item in the file system.
type: string
- format: "[0-9]*"
- example: '649644248522215260'
\ No newline at end of file
+ format: '[0-9]*'
+ example: '649644248522215260'
+ total:
+ description: The total number of items in the response.
+ type: integer
+ example: 100
+ limit:
+ description: The number of items to return. If 0, no items are returned.
+ type: integer
+ example: 10
+ default: 0
+ page:
+ description: The page number (zero indexed) to return. If no limit is specified, then page will have no effect.
+ type: integer
+ example: 1
+ default: 0
+ sortDesc:
+ description: Return items in reversed order if true.
+ type: boolean
+ example: true
+ default: false
+ minified:
+ description: Return minified items if true.
+ type: boolean
+ example: true
+ default: false
+ region:
+ description: The region used to search.
+ type: string
+ example: 'us'
+ default: 'us'
+ parameters:
+ minified:
+ in: query
+ name: minified
+ description: Return minified items if true
+ schema:
+ type: integer
+ minimum: 0
+ example: 1
diff --git a/index.js b/index.js
index a8686b310..de1ed5c30 100644
--- a/index.js
+++ b/index.js
@@ -9,7 +9,9 @@ if (isDev) {
if (devEnv.MetadataPath) process.env.METADATA_PATH = devEnv.MetadataPath
if (devEnv.FFmpegPath) process.env.FFMPEG_PATH = devEnv.FFmpegPath
if (devEnv.FFProbePath) process.env.FFPROBE_PATH = devEnv.FFProbePath
+ if (devEnv.NunicodePath) process.env.NUSQLITE3_PATH = devEnv.NunicodePath
if (devEnv.SkipBinariesCheck) process.env.SKIP_BINARIES_CHECK = '1'
+ if (devEnv.BackupPath) process.env.BACKUP_PATH = devEnv.BackupPath
process.env.SOURCE = 'local'
process.env.ROUTER_BASE_PATH = devEnv.RouterBasePath || ''
}
diff --git a/package-lock.json b/package-lock.json
index 41bbdf54b..6e3276cea 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "audiobookshelf",
- "version": "2.10.1",
+ "version": "2.16.2",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "audiobookshelf",
- "version": "2.10.1",
+ "version": "2.16.2",
"license": "GPL-3.0",
"dependencies": {
"axios": "^0.27.2",
@@ -16,11 +16,13 @@
"graceful-fs": "^4.2.10",
"htmlparser2": "^8.0.1",
"lru-cache": "^10.0.3",
- "node-tone": "^1.0.1",
- "nodemailer": "^6.9.2",
+ "node-unrar-js": "^2.0.2",
+ "nodemailer": "^6.9.13",
"openid-client": "^5.6.1",
+ "p-throttle": "^4.1.1",
"passport": "^0.6.0",
"passport-jwt": "^4.0.1",
+ "semver": "^7.6.3",
"sequelize": "^6.35.2",
"socket.io": "^4.5.4",
"sqlite3": "^5.1.6",
@@ -52,12 +54,12 @@
}
},
"node_modules/@babel/code-frame": {
- "version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz",
- "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==",
+ "version": "7.22.13",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
+ "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
"dev": true,
"dependencies": {
- "@babel/highlight": "^7.23.4",
+ "@babel/highlight": "^7.22.13",
"chalk": "^2.4.2"
},
"engines": {
@@ -105,61 +107,31 @@
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
"dev": true
},
- "node_modules/@babel/code-frame/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/@babel/code-frame/node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/code-frame/node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/@babel/compat-data": {
- "version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz",
- "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.3.tgz",
+ "integrity": "sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/core": {
- "version": "7.23.7",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.7.tgz",
- "integrity": "sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.3.tgz",
+ "integrity": "sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==",
"dev": true,
"dependencies": {
"@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.23.5",
- "@babel/generator": "^7.23.6",
- "@babel/helper-compilation-targets": "^7.23.6",
+ "@babel/code-frame": "^7.22.13",
+ "@babel/generator": "^7.23.3",
+ "@babel/helper-compilation-targets": "^7.22.15",
"@babel/helper-module-transforms": "^7.23.3",
- "@babel/helpers": "^7.23.7",
- "@babel/parser": "^7.23.6",
+ "@babel/helpers": "^7.23.2",
+ "@babel/parser": "^7.23.3",
"@babel/template": "^7.22.15",
- "@babel/traverse": "^7.23.7",
- "@babel/types": "^7.23.6",
+ "@babel/traverse": "^7.23.3",
+ "@babel/types": "^7.23.3",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -213,12 +185,12 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.23.6",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz",
- "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.3.tgz",
+ "integrity": "sha512-keeZWAV4LU3tW0qRi19HRpabC/ilM0HRBBzf9/k8FFiG4KVpiv0FIy4hHfLfFQZNhziCTPTmd59zoyv6DNISzg==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.23.6",
+ "@babel/types": "^7.23.3",
"@jridgewell/gen-mapping": "^0.3.2",
"@jridgewell/trace-mapping": "^0.3.17",
"jsesc": "^2.5.1"
@@ -228,14 +200,14 @@
}
},
"node_modules/@babel/helper-compilation-targets": {
- "version": "7.23.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz",
- "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==",
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz",
+ "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==",
"dev": true,
"dependencies": {
- "@babel/compat-data": "^7.23.5",
- "@babel/helper-validator-option": "^7.23.5",
- "browserslist": "^4.22.2",
+ "@babel/compat-data": "^7.22.9",
+ "@babel/helper-validator-option": "^7.22.15",
+ "browserslist": "^4.21.9",
"lru-cache": "^5.1.1",
"semver": "^6.3.1"
},
@@ -357,9 +329,9 @@
}
},
"node_modules/@babel/helper-string-parser": {
- "version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz",
- "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==",
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
+ "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==",
"dev": true,
"engines": {
"node": ">=6.9.0"
@@ -375,32 +347,32 @@
}
},
"node_modules/@babel/helper-validator-option": {
- "version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz",
- "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==",
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz",
+ "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helpers": {
- "version": "7.23.8",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.8.tgz",
- "integrity": "sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ==",
+ "version": "7.23.2",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz",
+ "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==",
"dev": true,
"dependencies": {
"@babel/template": "^7.22.15",
- "@babel/traverse": "^7.23.7",
- "@babel/types": "^7.23.6"
+ "@babel/traverse": "^7.23.2",
+ "@babel/types": "^7.23.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/highlight": {
- "version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz",
- "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==",
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz",
+ "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==",
"dev": true,
"dependencies": {
"@babel/helper-validator-identifier": "^7.22.20",
@@ -452,40 +424,10 @@
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
"dev": true
},
- "node_modules/@babel/highlight/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/@babel/highlight/node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/highlight/node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/@babel/parser": {
- "version": "7.23.6",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz",
- "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.3.tgz",
+ "integrity": "sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw==",
"dev": true,
"bin": {
"parser": "bin/babel-parser.js"
@@ -509,20 +451,20 @@
}
},
"node_modules/@babel/traverse": {
- "version": "7.23.7",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz",
- "integrity": "sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.3.tgz",
+ "integrity": "sha512-+K0yF1/9yR0oHdE0StHuEj3uTPzwwbrLGfNOndVJVV2TqA5+j3oljJUb4nmB954FLGjNem976+B+eDuLIjesiQ==",
"dev": true,
"dependencies": {
- "@babel/code-frame": "^7.23.5",
- "@babel/generator": "^7.23.6",
+ "@babel/code-frame": "^7.22.13",
+ "@babel/generator": "^7.23.3",
"@babel/helper-environment-visitor": "^7.22.20",
"@babel/helper-function-name": "^7.23.0",
"@babel/helper-hoist-variables": "^7.22.5",
"@babel/helper-split-export-declaration": "^7.22.6",
- "@babel/parser": "^7.23.6",
- "@babel/types": "^7.23.6",
- "debug": "^4.3.1",
+ "@babel/parser": "^7.23.3",
+ "@babel/types": "^7.23.3",
+ "debug": "^4.1.0",
"globals": "^11.1.0"
},
"engines": {
@@ -553,12 +495,12 @@
"dev": true
},
"node_modules/@babel/types": {
- "version": "7.23.6",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz",
- "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==",
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.3.tgz",
+ "integrity": "sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw==",
"dev": true,
"dependencies": {
- "@babel/helper-string-parser": "^7.23.4",
+ "@babel/helper-string-parser": "^7.22.5",
"@babel/helper-validator-identifier": "^7.22.20",
"to-fast-properties": "^2.0.0"
},
@@ -588,80 +530,6 @@
"node": ">=8"
}
},
- "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
- "dependencies": {
- "sprintf-js": "~1.0.2"
- }
- },
- "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
- "dev": true,
- "dependencies": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "dev": true,
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "dependencies": {
- "p-limit": "^2.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/@istanbuljs/schema": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
@@ -710,9 +578,9 @@
"dev": true
},
"node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.22",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz",
- "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==",
+ "version": "0.3.20",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz",
+ "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==",
"dev": true,
"dependencies": {
"@jridgewell/resolve-uri": "^3.1.0",
@@ -720,9 +588,9 @@
}
},
"node_modules/@mapbox/node-pre-gyp": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz",
- "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==",
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz",
+ "integrity": "sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==",
"dependencies": {
"detect-libc": "^2.0.0",
"https-proxy-agent": "^5.0.0",
@@ -738,71 +606,18 @@
"node-pre-gyp": "bin/node-pre-gyp"
}
},
- "node_modules/@mapbox/node-pre-gyp/node_modules/are-we-there-yet": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz",
- "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==",
+ "node_modules/@mapbox/node-pre-gyp/node_modules/nopt": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
+ "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
"dependencies": {
- "delegates": "^1.0.0",
- "readable-stream": "^3.6.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@mapbox/node-pre-gyp/node_modules/gauge": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz",
- "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==",
- "dependencies": {
- "aproba": "^1.0.3 || ^2.0.0",
- "color-support": "^1.1.2",
- "console-control-strings": "^1.0.0",
- "has-unicode": "^2.0.1",
- "object-assign": "^4.1.1",
- "signal-exit": "^3.0.0",
- "string-width": "^4.2.3",
- "strip-ansi": "^6.0.1",
- "wide-align": "^1.1.2"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@mapbox/node-pre-gyp/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@mapbox/node-pre-gyp/node_modules/npmlog": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz",
- "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==",
- "dependencies": {
- "are-we-there-yet": "^2.0.0",
- "console-control-strings": "^1.1.0",
- "gauge": "^3.0.0",
- "set-blocking": "^2.0.0"
- }
- },
- "node_modules/@mapbox/node-pre-gyp/node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
- "dependencies": {
- "lru-cache": "^6.0.0"
+ "abbrev": "1"
},
"bin": {
- "semver": "bin/semver.js"
+ "nopt": "bin/nopt.js"
},
"engines": {
- "node": ">=10"
+ "node": ">=6"
}
},
"node_modules/@npmcli/fs": {
@@ -815,33 +630,6 @@
"semver": "^7.3.5"
}
},
- "node_modules/@npmcli/fs/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "optional": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@npmcli/fs/node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
- "optional": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/@npmcli/move-file": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz",
@@ -866,9 +654,9 @@
}
},
"node_modules/@sinonjs/fake-timers": {
- "version": "11.2.2",
- "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz",
- "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==",
+ "version": "10.3.0",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz",
+ "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==",
"dev": true,
"dependencies": {
"@sinonjs/commons": "^3.0.0"
@@ -928,30 +716,27 @@
}
},
"node_modules/@types/debug": {
- "version": "4.1.12",
- "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz",
- "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==",
+ "version": "4.1.8",
+ "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.8.tgz",
+ "integrity": "sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==",
"dependencies": {
"@types/ms": "*"
}
},
"node_modules/@types/ms": {
- "version": "0.7.34",
- "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz",
- "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g=="
+ "version": "0.7.31",
+ "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz",
+ "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA=="
},
"node_modules/@types/node": {
- "version": "20.11.5",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.5.tgz",
- "integrity": "sha512-g557vgQjUUfN76MZAN/dt1z3dzcUsimuysco0KeluHgrPdJXkP/XdAURgyO2W9fZWHRtRBiVKzKn8vyOAwlG+w==",
- "dependencies": {
- "undici-types": "~5.26.4"
- }
+ "version": "18.11.18",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz",
+ "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA=="
},
"node_modules/@types/validator": {
- "version": "13.11.8",
- "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.11.8.tgz",
- "integrity": "sha512-c/hzNDBh7eRF+KbCf+OoZxKbnkpaK/cKp9iLQWqB7muXtM+MtL9SUUH8vCFcLn6dH1Qm05jiexK0ofWY7TfOhQ=="
+ "version": "13.7.17",
+ "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.17.tgz",
+ "integrity": "sha512-aqayTNmeWrZcvnG2MG9eGYI6b7S5fl+yKgPs6bAjOTwPS316R5SxBGKvtSExfyoJU7pIeHJfsHI0Ji41RVMkvQ=="
},
"node_modules/abbrev": {
"version": "1.1.1",
@@ -1003,17 +788,42 @@
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"node_modules/agentkeepalive": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz",
- "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.3.0.tgz",
+ "integrity": "sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==",
"optional": true,
"dependencies": {
+ "debug": "^4.1.0",
+ "depd": "^2.0.0",
"humanize-ms": "^1.2.1"
},
"engines": {
"node": ">= 8.0.0"
}
},
+ "node_modules/agentkeepalive/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "optional": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/agentkeepalive/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "optional": true
+ },
"node_modules/aggregate-error": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
@@ -1096,23 +906,25 @@
"dev": true
},
"node_modules/are-we-there-yet": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz",
- "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==",
- "optional": true,
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz",
+ "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==",
"dependencies": {
"delegates": "^1.0.0",
"readable-stream": "^3.6.0"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": ">=10"
}
},
"node_modules/argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "dev": true
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
},
"node_modules/array-flatten": {
"version": "1.1.1",
@@ -1188,12 +1000,12 @@
}
},
"node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "dev": true,
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dependencies": {
- "balanced-match": "^1.0.0"
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
}
},
"node_modules/braces": {
@@ -1215,9 +1027,9 @@
"dev": true
},
"node_modules/browserslist": {
- "version": "4.22.2",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz",
- "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==",
+ "version": "4.22.1",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz",
+ "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==",
"dev": true,
"funding": [
{
@@ -1234,9 +1046,9 @@
}
],
"dependencies": {
- "caniuse-lite": "^1.0.30001565",
- "electron-to-chromium": "^1.4.601",
- "node-releases": "^2.0.14",
+ "caniuse-lite": "^1.0.30001541",
+ "electron-to-chromium": "^1.4.535",
+ "node-releases": "^2.0.13",
"update-browserslist-db": "^1.0.13"
},
"bin": {
@@ -1300,21 +1112,6 @@
"node": ">=10"
}
},
- "node_modules/cacache/node_modules/p-map": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
- "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
- "optional": true,
- "dependencies": {
- "aggregate-error": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/caching-transform": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz",
@@ -1331,13 +1128,12 @@
}
},
"node_modules/call-bind": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
- "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
"dependencies": {
- "function-bind": "^1.1.2",
- "get-intrinsic": "^1.2.1",
- "set-function-length": "^1.1.1"
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -1353,9 +1149,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001579",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001579.tgz",
- "integrity": "sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA==",
+ "version": "1.0.30001561",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001561.tgz",
+ "integrity": "sha512-NTt0DNoKe958Q0BE0j0c1V9jbUzhBxHIEJy7asmGrpE0yG63KTV7PLHPnK2E1O9RsQrQ081I3NLuXGS6zht3cw==",
"dev": true,
"funding": [
{
@@ -1373,9 +1169,9 @@
]
},
"node_modules/chai": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz",
- "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==",
+ "version": "4.3.10",
+ "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz",
+ "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==",
"dev": true,
"dependencies": {
"assertion-error": "^1.1.0",
@@ -1406,6 +1202,15 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
+ "node_modules/chalk/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/chalk/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -1475,14 +1280,28 @@
}
},
"node_modules/cliui": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
- "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
+ "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
"dev": true,
"dependencies": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.0",
- "wrap-ansi": "^7.0.0"
+ "wrap-ansi": "^6.2.0"
+ }
+ },
+ "node_modules/cliui/node_modules/wrap-ansi": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
"node_modules/color-convert": {
@@ -1550,9 +1369,9 @@
}
},
"node_modules/content-type": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
- "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
"engines": {
"node": ">= 0.6"
}
@@ -1564,9 +1383,9 @@
"dev": true
},
"node_modules/cookie": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
- "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==",
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
+ "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
"engines": {
"node": ">= 0.6"
}
@@ -1583,6 +1402,14 @@
"node": ">= 0.8.0"
}
},
+ "node_modules/cookie-parser/node_modules/cookie": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
+ "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
"node_modules/cookie-signature": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
@@ -1623,12 +1450,15 @@
}
},
"node_modules/decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz",
+ "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
"dev": true,
"engines": {
- "node": ">=0.10.0"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/deep-eql": {
@@ -1658,19 +1488,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/define-data-property": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
- "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
- "dependencies": {
- "get-intrinsic": "^1.2.1",
- "gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
"node_modules/delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
@@ -1702,9 +1519,9 @@
}
},
"node_modules/detect-libc": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz",
- "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz",
+ "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==",
"engines": {
"node": ">=8"
}
@@ -1757,13 +1574,13 @@
}
},
"node_modules/domutils": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
- "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz",
+ "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==",
"dependencies": {
"dom-serializer": "^2.0.0",
"domelementtype": "^2.3.0",
- "domhandler": "^5.0.3"
+ "domhandler": "^5.0.1"
},
"funding": {
"url": "https://github.com/fb55/domutils?sponsor=1"
@@ -1788,9 +1605,9 @@
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
},
"node_modules/electron-to-chromium": {
- "version": "1.4.639",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.639.tgz",
- "integrity": "sha512-CkKf3ZUVZchr+zDpAlNLEEy2NJJ9T64ULWaDgy3THXXlPVPkLu3VOs9Bac44nebVtdwl2geSj6AxTtGDOxoXhg==",
+ "version": "1.4.580",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.580.tgz",
+ "integrity": "sha512-T5q3pjQon853xxxHUq3ZP68ZpvJHuSMY2+BZaW3QzjS4HvNuvsMmZ/+lU+nCrftre1jFZ+OSlExynXWBihnXzw==",
"dev": true
},
"node_modules/emoji-regex": {
@@ -1855,6 +1672,14 @@
"node": ">=10.0.0"
}
},
+ "node_modules/engine.io/node_modules/cookie": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
+ "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
"node_modules/engine.io/node_modules/debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
@@ -1877,9 +1702,9 @@
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"node_modules/entities": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
- "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz",
+ "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==",
"engines": {
"node": ">=0.12"
},
@@ -1923,15 +1748,12 @@
"integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
},
"node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
"dev": true,
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=0.8.0"
}
},
"node_modules/esprima": {
@@ -2022,14 +1844,6 @@
"node": ">= 0.6"
}
},
- "node_modules/express/node_modules/cookie": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
- "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
- "engines": {
- "node": ">= 0.6"
- }
- },
"node_modules/fill-range": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
@@ -2077,19 +1891,16 @@
}
},
"node_modules/find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
"dev": true,
"dependencies": {
- "locate-path": "^6.0.0",
+ "locate-path": "^5.0.0",
"path-exists": "^4.0.0"
},
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=8"
}
},
"node_modules/flat": {
@@ -2198,20 +2009,6 @@
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
},
- "node_modules/fsevents": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
- "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
- "dev": true,
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
"node_modules/function-bind": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
@@ -2221,22 +2018,22 @@
}
},
"node_modules/gauge": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz",
- "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==",
- "optional": true,
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz",
+ "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==",
"dependencies": {
"aproba": "^1.0.3 || ^2.0.0",
- "color-support": "^1.1.3",
- "console-control-strings": "^1.1.0",
+ "color-support": "^1.1.2",
+ "console-control-strings": "^1.0.0",
"has-unicode": "^2.0.1",
- "signal-exit": "^3.0.7",
+ "object-assign": "^4.1.1",
+ "signal-exit": "^3.0.0",
"string-width": "^4.2.3",
"strip-ansi": "^6.0.1",
- "wide-align": "^1.1.5"
+ "wide-align": "^1.1.2"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": ">=10"
}
},
"node_modules/gensync": {
@@ -2267,14 +2064,13 @@
}
},
"node_modules/get-intrinsic": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
- "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
+ "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
"dependencies": {
- "function-bind": "^1.1.2",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3",
- "hasown": "^2.0.0"
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.3"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -2290,14 +2086,14 @@
}
},
"node_modules/glob": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
- "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
- "minimatch": "^3.0.4",
+ "minimatch": "^3.1.1",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
},
@@ -2320,26 +2116,6 @@
"node": ">= 6"
}
},
- "node_modules/glob/node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/glob/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/globals": {
"version": "11.12.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
@@ -2349,51 +2125,29 @@
"node": ">=4"
}
},
- "node_modules/gopd": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
- "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
- "dependencies": {
- "get-intrinsic": "^1.1.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/graceful-fs": {
- "version": "4.2.11",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
- "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
+ "version": "4.2.10",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
+ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="
+ },
+ "node_modules/has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dependencies": {
+ "function-bind": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4.0"
+ }
},
"node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
"dev": true,
"engines": {
- "node": ">=8"
- }
- },
- "node_modules/has-property-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
- "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
- "dependencies": {
- "get-intrinsic": "^1.2.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-proto": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
- "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "node": ">=4"
}
},
"node_modules/has-symbols": {
@@ -2428,17 +2182,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/hasown": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
- "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
- "dependencies": {
- "function-bind": "^1.1.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
"node_modules/he": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
@@ -2455,9 +2198,9 @@
"dev": true
},
"node_modules/htmlparser2": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz",
- "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==",
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz",
+ "integrity": "sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==",
"funding": [
"https://github.com/fb55/htmlparser2?sponsor=1",
{
@@ -2467,9 +2210,9 @@
],
"dependencies": {
"domelementtype": "^2.3.0",
- "domhandler": "^5.0.3",
+ "domhandler": "^5.0.2",
"domutils": "^3.0.1",
- "entities": "^4.4.0"
+ "entities": "^4.3.0"
}
},
"node_modules/http-cache-semantics": {
@@ -2753,6 +2496,12 @@
"node": ">=0.10.0"
}
},
+ "node_modules/isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==",
+ "dev": true
+ },
"node_modules/isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
@@ -2821,6 +2570,18 @@
"node": ">=8"
}
},
+ "node_modules/istanbul-lib-processinfo/node_modules/p-map": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz",
+ "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==",
+ "dev": true,
+ "dependencies": {
+ "aggregate-error": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/istanbul-lib-report": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz",
@@ -2835,16 +2596,13 @@
"node": ">=10"
}
},
- "node_modules/istanbul-lib-report/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "node_modules/istanbul-lib-report/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
"engines": {
- "node": ">=10"
+ "node": ">=8"
}
},
"node_modules/istanbul-lib-report/node_modules/make-dir": {
@@ -2862,21 +2620,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/istanbul-lib-report/node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/istanbul-lib-report/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -2954,12 +2697,13 @@
"dev": true
},
"node_modules/js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
"dev": true,
"dependencies": {
- "argparse": "^2.0.1"
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
},
"bin": {
"js-yaml": "bin/js-yaml.js"
@@ -3010,40 +2754,15 @@
"npm": ">=6"
}
},
- "node_modules/jsonwebtoken/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/jsonwebtoken/node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
},
- "node_modules/jsonwebtoken/node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/just-extend": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz",
- "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==",
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz",
+ "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==",
"dev": true
},
"node_modules/jwa": {
@@ -3066,18 +2785,15 @@
}
},
"node_modules/locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
"dev": true,
"dependencies": {
- "p-locate": "^5.0.0"
+ "p-locate": "^4.1.0"
},
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=8"
}
},
"node_modules/lodash": {
@@ -3158,9 +2874,9 @@
}
},
"node_modules/lru-cache": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz",
- "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==",
+ "version": "10.0.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.3.tgz",
+ "integrity": "sha512-B7gr+F6MkqB3uzINHXNctGieGsRTMwIBgxkp0yq/5BwcuDzD4A8wQpHQW6vDAm1uKSLQghmRdD9sKqf2vJ1cEg==",
"engines": {
"node": "14 || >=16.14"
}
@@ -3278,15 +2994,14 @@
}
},
"node_modules/minimatch": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz",
- "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==",
- "dev": true,
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dependencies": {
- "brace-expansion": "^2.0.1"
+ "brace-expansion": "^1.1.7"
},
"engines": {
- "node": ">=10"
+ "node": "*"
}
},
"node_modules/minipass": {
@@ -3428,6 +3143,23 @@
"url": "https://opencollective.com/mochajs"
}
},
+ "node_modules/mocha/node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ },
+ "node_modules/mocha/node_modules/cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
"node_modules/mocha/node_modules/debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
@@ -3451,24 +3183,198 @@
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
+ "node_modules/mocha/node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/mocha/node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/mocha/node_modules/glob": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
+ "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/mocha/node_modules/glob/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/mocha/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/mocha/node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/mocha/node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/mocha/node_modules/minimatch": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz",
+ "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/mocha/node_modules/minimatch/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
"node_modules/mocha/node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"dev": true
},
+ "node_modules/mocha/node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/mocha/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/mocha/node_modules/yargs": {
+ "version": "16.2.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "dev": true,
+ "dependencies": {
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/mocha/node_modules/yargs-parser": {
+ "version": "20.2.4",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
+ "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/moment": {
- "version": "2.30.1",
- "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz",
- "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==",
+ "version": "2.29.4",
+ "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
+ "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==",
"engines": {
"node": "*"
}
},
"node_modules/moment-timezone": {
- "version": "0.5.44",
- "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.44.tgz",
- "integrity": "sha512-nv3YpzI/8lkQn0U6RkLd+f0W/zy/JnoR5/EyPz/dNkPTBjA2jNLCVxaiQ8QpeLymhSZvX0wCL5s27NQWdOPwAw==",
+ "version": "0.5.43",
+ "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.43.tgz",
+ "integrity": "sha512-72j3aNyuIsDxdF1i7CEgV2FfxM1r6aaqJyLB2vwb33mXYyoyLly+F1zbWqhA3/bVIoJ4szlUoMbUnVdid32NUQ==",
"dependencies": {
"moment": "^2.29.4"
},
@@ -3502,23 +3408,35 @@
}
},
"node_modules/nise": {
- "version": "5.1.7",
- "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.7.tgz",
- "integrity": "sha512-wWtNUhkT7k58uvWTB/Gy26eA/EJKtPZFVAhEilN5UYVmmGRYOURbejRUyKm0Uu9XVEW7K5nBOZfR8VMB4QR2RQ==",
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.5.tgz",
+ "integrity": "sha512-VJuPIfUFaXNRzETTQEEItTOP8Y171ijr+JLq42wHes3DiryR8vT+1TXQW/Rx8JNUhyYYWyIvjXTU6dOhJcs9Nw==",
"dev": true,
"dependencies": {
- "@sinonjs/commons": "^3.0.0",
- "@sinonjs/fake-timers": "^11.2.2",
- "@sinonjs/text-encoding": "^0.7.2",
- "just-extend": "^6.2.0",
- "path-to-regexp": "^6.2.1"
+ "@sinonjs/commons": "^2.0.0",
+ "@sinonjs/fake-timers": "^10.0.2",
+ "@sinonjs/text-encoding": "^0.7.1",
+ "just-extend": "^4.0.2",
+ "path-to-regexp": "^1.7.0"
+ }
+ },
+ "node_modules/nise/node_modules/@sinonjs/commons": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz",
+ "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==",
+ "dev": true,
+ "dependencies": {
+ "type-detect": "4.0.8"
}
},
"node_modules/nise/node_modules/path-to-regexp": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz",
- "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==",
- "dev": true
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
+ "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
+ "dev": true,
+ "dependencies": {
+ "isarray": "0.0.1"
+ }
},
"node_modules/node-addon-api": {
"version": "4.3.0",
@@ -3526,9 +3444,9 @@
"integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ=="
},
"node_modules/node-fetch": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
- "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "version": "2.6.12",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz",
+ "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==",
"dependencies": {
"whatwg-url": "^5.0.0"
},
@@ -3568,31 +3486,66 @@
"node": ">= 10.12.0"
}
},
- "node_modules/node-gyp/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "node_modules/node-gyp/node_modules/are-we-there-yet": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz",
+ "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==",
"optional": true,
"dependencies": {
- "yallist": "^4.0.0"
+ "delegates": "^1.0.0",
+ "readable-stream": "^3.6.0"
},
"engines": {
- "node": ">=10"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/node-gyp/node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "node_modules/node-gyp/node_modules/gauge": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz",
+ "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==",
"optional": true,
"dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
+ "aproba": "^1.0.3 || ^2.0.0",
+ "color-support": "^1.1.3",
+ "console-control-strings": "^1.1.0",
+ "has-unicode": "^2.0.1",
+ "signal-exit": "^3.0.7",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1",
+ "wide-align": "^1.1.5"
},
"engines": {
- "node": ">=10"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/node-gyp/node_modules/nopt": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
+ "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
+ "optional": true,
+ "dependencies": {
+ "abbrev": "1"
+ },
+ "bin": {
+ "nopt": "bin/nopt.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/node-gyp/node_modules/npmlog": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz",
+ "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==",
+ "optional": true,
+ "dependencies": {
+ "are-we-there-yet": "^3.0.0",
+ "console-control-strings": "^1.1.0",
+ "gauge": "^4.0.3",
+ "set-blocking": "^2.0.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
"node_modules/node-preload": {
@@ -3608,20 +3561,23 @@
}
},
"node_modules/node-releases": {
- "version": "2.0.14",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
- "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
+ "version": "2.0.13",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz",
+ "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==",
"dev": true
},
- "node_modules/node-tone": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/node-tone/-/node-tone-1.0.1.tgz",
- "integrity": "sha512-wi7L0taDZMN6tM5l85TDKHsYzdhqJTtPNgvgpk2zHeZzPt6ZIUZ9vBLTJRRDpm0xzCvbsvFHjAaudeQjLHTE4w=="
+ "node_modules/node-unrar-js": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/node-unrar-js/-/node-unrar-js-2.0.2.tgz",
+ "integrity": "sha512-hLNmoJzqaKJnod8yiTVGe9hnlNRHotUi0CreSv/8HtfRi/3JnRC8DvsmKfeGGguRjTEulhZK6zXX5PXoVuDZ2w==",
+ "engines": {
+ "node": ">=10.0.0"
+ }
},
"node_modules/nodemailer": {
- "version": "6.9.8",
- "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.8.tgz",
- "integrity": "sha512-cfrYUk16e67Ks051i4CntM9kshRYei1/o/Gi8K1d+R34OIs21xdFnW7Pt7EucmVKA0LKtqUGNcjMZ7ehjl49mQ==",
+ "version": "6.9.13",
+ "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.13.tgz",
+ "integrity": "sha512-7o38Yogx6krdoBf3jCAqnIN4oSQFx+fMa0I7dK1D+me9kBxx12D+/33wSb+fhOCtIxvYJ+4x4IMEhmhCKfAiOA==",
"engines": {
"node": ">=6.0.0"
}
@@ -3654,16 +3610,6 @@
"url": "https://opencollective.com/nodemon"
}
},
- "node_modules/nodemon/node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
"node_modules/nodemon/node_modules/debug": {
"version": "3.2.7",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
@@ -3673,49 +3619,26 @@
"ms": "^2.1.1"
}
},
- "node_modules/nodemon/node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/nodemon/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/nodemon/node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"dev": true
},
- "node_modules/nodemon/node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "node_modules/nodemon/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
"dev": true,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
+ "bin": {
+ "semver": "bin/semver"
}
},
"node_modules/nopt": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
- "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
+ "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
+ "dev": true,
"dependencies": {
"abbrev": "1"
},
@@ -3723,7 +3646,7 @@
"nopt": "bin/nopt.js"
},
"engines": {
- "node": ">=6"
+ "node": "*"
}
},
"node_modules/normalize-path": {
@@ -3736,18 +3659,14 @@
}
},
"node_modules/npmlog": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz",
- "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==",
- "optional": true,
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz",
+ "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==",
"dependencies": {
- "are-we-there-yet": "^3.0.0",
+ "are-we-there-yet": "^2.0.0",
"console-control-strings": "^1.1.0",
- "gauge": "^4.0.3",
+ "gauge": "^3.0.0",
"set-blocking": "^2.0.0"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
"node_modules/nyc": {
@@ -3791,124 +3710,27 @@
"node": ">=8.9"
}
},
- "node_modules/nyc/node_modules/cliui": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
- "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+ "node_modules/nyc/node_modules/decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
"dev": true,
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^6.2.0"
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "node_modules/nyc/node_modules/find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "node_modules/nyc/node_modules/p-map": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz",
+ "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==",
"dev": true,
"dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
+ "aggregate-error": "^3.0.0"
},
"engines": {
"node": ">=8"
}
},
- "node_modules/nyc/node_modules/locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "dev": true,
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/nyc/node_modules/p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/nyc/node_modules/p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "dependencies": {
- "p-limit": "^2.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/nyc/node_modules/wrap-ansi": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
- "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/nyc/node_modules/y18n": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
- "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
- "dev": true
- },
- "node_modules/nyc/node_modules/yargs": {
- "version": "15.4.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
- "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
- "dev": true,
- "dependencies": {
- "cliui": "^6.0.0",
- "decamelize": "^1.2.0",
- "find-up": "^4.1.0",
- "get-caller-file": "^2.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^4.2.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^18.1.2"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/nyc/node_modules/yargs-parser": {
- "version": "18.1.3",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
- "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
- "dev": true,
- "dependencies": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@@ -3926,9 +3748,9 @@
}
},
"node_modules/object-inspect": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
- "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
+ "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -3969,11 +3791,11 @@
}
},
"node_modules/openid-client": {
- "version": "5.6.4",
- "resolved": "https://registry.npmjs.org/openid-client/-/openid-client-5.6.4.tgz",
- "integrity": "sha512-T1h3B10BRPKfcObdBklX639tVz+xh34O7GjofqrqiAQdm7eHsQ00ih18x6wuJ/E6FxdtS2u3FmUGPDeEcMwzNA==",
+ "version": "5.6.1",
+ "resolved": "https://registry.npmjs.org/openid-client/-/openid-client-5.6.1.tgz",
+ "integrity": "sha512-PtrWsY+dXg6y8mtMPyL/namZSYVz8pjXz3yJiBNZsEdCnu9miHLB4ELVC85WvneMKo2Rg62Ay7NkuCpM0bgiLQ==",
"dependencies": {
- "jose": "^4.15.4",
+ "jose": "^4.15.1",
"lru-cache": "^6.0.0",
"object-hash": "^2.2.0",
"oidc-token-hash": "^5.0.3"
@@ -4009,12 +3831,39 @@
}
},
"node_modules/p-locate": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
"dev": true,
"dependencies": {
- "p-limit": "^3.0.2"
+ "p-limit": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/p-locate/node_modules/p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dev": true,
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-map": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
+ "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
+ "optional": true,
+ "dependencies": {
+ "aggregate-error": "^3.0.0"
},
"engines": {
"node": ">=10"
@@ -4023,16 +3872,15 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/p-map": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz",
- "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==",
- "dev": true,
- "dependencies": {
- "aggregate-error": "^3.0.0"
- },
+ "node_modules/p-throttle": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/p-throttle/-/p-throttle-4.1.1.tgz",
+ "integrity": "sha512-TuU8Ato+pRTPJoDzYD4s7ocJYcNSEZRvlxoq3hcPI2kZDZ49IQ1Wkj7/gDJc3X7XiEAAvRGtDzdXJI0tC3IL1g==",
"engines": {
- "node": ">=8"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/p-try": {
@@ -4147,9 +3995,9 @@
"integrity": "sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg=="
},
"node_modules/pg-connection-string": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.2.tgz",
- "integrity": "sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA=="
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.1.tgz",
+ "integrity": "sha512-w6ZzNu6oMmIzEAYVw+RLK0+nqHPt8K3ZnknKi+g48Ak2pr3dtljJW3o+D/n2zzCG07Zoe9VOX3aiKpj+BN0pjg=="
},
"node_modules/picocolors": {
"version": "1.0.0",
@@ -4181,58 +4029,6 @@
"node": ">=8"
}
},
- "node_modules/pkg-dir/node_modules/find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pkg-dir/node_modules/locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "dev": true,
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pkg-dir/node_modules/p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/pkg-dir/node_modules/p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "dependencies": {
- "p-limit": "^2.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/process-on-spawn": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz",
@@ -4449,17 +4245,19 @@
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"node_modules/sax": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz",
- "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA=="
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
},
"node_modules/semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true,
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
"bin": {
- "semver": "bin/semver"
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
}
},
"node_modules/send": {
@@ -4575,36 +4373,11 @@
}
}
},
- "node_modules/sequelize/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/sequelize/node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
- "node_modules/sequelize/node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/serialize-javascript": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
@@ -4633,21 +4406,6 @@
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
"integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
},
- "node_modules/set-function-length": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.0.tgz",
- "integrity": "sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==",
- "dependencies": {
- "define-data-property": "^1.1.1",
- "function-bind": "^1.1.2",
- "get-intrinsic": "^1.2.2",
- "gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
"node_modules/setprototypeof": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
@@ -4731,6 +4489,15 @@
"url": "https://opencollective.com/sinon"
}
},
+ "node_modules/sinon/node_modules/@sinonjs/fake-timers": {
+ "version": "11.2.2",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz",
+ "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==",
+ "dev": true,
+ "dependencies": {
+ "@sinonjs/commons": "^3.0.0"
+ }
+ },
"node_modules/sinon/node_modules/diff": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz",
@@ -4740,6 +4507,15 @@
"node": ">=0.3.1"
}
},
+ "node_modules/sinon/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/sinon/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -5036,24 +4812,21 @@
}
},
"node_modules/supports-color": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
"dependencies": {
- "has-flag": "^4.0.0"
+ "has-flag": "^3.0.0"
},
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/supports-color?sponsor=1"
+ "node": ">=4"
}
},
"node_modules/tar": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz",
- "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==",
+ "version": "6.1.15",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.15.tgz",
+ "integrity": "sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==",
"dependencies": {
"chownr": "^2.0.0",
"fs-minipass": "^2.0.0",
@@ -5088,28 +4861,6 @@
"node": ">=8"
}
},
- "node_modules/test-exclude/node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/test-exclude/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/to-fast-properties": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
@@ -5156,21 +4907,6 @@
"nodetouch": "bin/nodetouch.js"
}
},
- "node_modules/touch/node_modules/nopt": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
- "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
- "dev": true,
- "dependencies": {
- "abbrev": "1"
- },
- "bin": {
- "nopt": "bin/nopt.js"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/tr46": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
@@ -5232,11 +4968,6 @@
"integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==",
"dev": true
},
- "node_modules/undici-types": {
- "version": "5.26.5",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
- "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
- },
"node_modules/unique-filename": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
@@ -5315,9 +5046,9 @@
}
},
"node_modules/validator": {
- "version": "13.11.0",
- "resolved": "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz",
- "integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==",
+ "version": "13.9.0",
+ "resolved": "https://registry.npmjs.org/validator/-/validator-13.9.0.tgz",
+ "integrity": "sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==",
"engines": {
"node": ">= 0.10"
}
@@ -5476,30 +5207,47 @@
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"node_modules/yargs": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
- "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "version": "15.4.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
+ "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
"dev": true,
"dependencies": {
- "cliui": "^7.0.2",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
+ "cliui": "^6.0.0",
+ "decamelize": "^1.2.0",
+ "find-up": "^4.1.0",
+ "get-caller-file": "^2.0.1",
"require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
"string-width": "^4.2.0",
- "y18n": "^5.0.5",
- "yargs-parser": "^20.2.2"
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^18.1.2"
},
"engines": {
- "node": ">=10"
+ "node": ">=8"
}
},
"node_modules/yargs-parser": {
- "version": "20.2.4",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
- "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==",
+ "version": "18.1.3",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
+ "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+ "dev": true,
+ "dependencies": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/yargs-parser/node_modules/decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
"dev": true,
"engines": {
- "node": ">=10"
+ "node": ">=0.10.0"
}
},
"node_modules/yargs-unparser": {
@@ -5529,18 +5277,21 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/yargs-unparser/node_modules/decamelize": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz",
- "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
+ "node_modules/yargs/node_modules/decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
"dev": true,
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=0.10.0"
}
},
+ "node_modules/yargs/node_modules/y18n": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
+ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
+ "dev": true
+ },
"node_modules/yocto-queue": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
diff --git a/package.json b/package.json
index e31a28fc1..d31f20220 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "audiobookshelf",
- "version": "2.10.1",
+ "version": "2.16.2",
"buildNumber": 1,
"description": "Self-hosted audiobook and podcast server",
"main": "index.js",
@@ -9,7 +9,7 @@
"start": "node index.js",
"client": "cd client && npm ci && npm run generate",
"prod": "npm run client && npm ci && node prod.js",
- "build-win": "npm run client && pkg -t node18-win-x64 -o ./dist/win/audiobookshelf -C GZip .",
+ "build-win": "npm run client && pkg -t node20-win-x64 -o ./dist/win/audiobookshelf -C GZip .",
"build-linux": "build/linuxpackager",
"docker": "docker buildx build --platform linux/amd64,linux/arm64 --push . -t advplyr/audiobookshelf",
"docker-amd64-local": "docker buildx build --platform linux/amd64 --load . -t advplyr/audiobookshelf-amd64-local",
@@ -22,7 +22,8 @@
"pkg": {
"assets": [
"client/dist/**/*",
- "node_modules/sqlite3/lib/binding/**/*.node"
+ "node_modules/sqlite3/lib/binding/**/*.node",
+ "server/migrations/*.js"
],
"scripts": [
"prod.js",
@@ -42,11 +43,13 @@
"graceful-fs": "^4.2.10",
"htmlparser2": "^8.0.1",
"lru-cache": "^10.0.3",
- "node-tone": "^1.0.1",
- "nodemailer": "^6.9.2",
+ "node-unrar-js": "^2.0.2",
+ "nodemailer": "^6.9.13",
"openid-client": "^5.6.1",
+ "p-throttle": "^4.1.1",
"passport": "^0.6.0",
"passport-jwt": "^4.0.1",
+ "semver": "^7.6.3",
"sequelize": "^6.35.2",
"socket.io": "^4.5.4",
"sqlite3": "^5.1.6",
diff --git a/readme.md b/readme.md
index 1fc2e327e..44551acb7 100644
--- a/readme.md
+++ b/readme.md
@@ -18,38 +18,41 @@ Audiobookshelf is a self-hosted audiobook and podcast server.
### Features
-* Fully **open-source**, including the [android & iOS app](https://github.com/advplyr/audiobookshelf-app) *(in beta)*
-* Stream all audio formats on the fly
-* Search and add podcasts to download episodes w/ auto-download
-* Multi-user support w/ custom permissions
-* Keeps progress per user and syncs across devices
-* Auto-detects library updates, no need to re-scan
-* Upload books and podcasts w/ bulk upload drag and drop folders
-* Backup your metadata + automated daily backups
-* Progressive Web App (PWA)
-* Chromecast support on the web app and android app
-* Fetch metadata and cover art from several sources
-* Chapter editor and chapter lookup (using [Audnexus API](https://audnex.us/))
-* Merge your audio files into a single m4b
-* Embed metadata and cover image into your audio files (using [Tone](https://github.com/sandreas/tone))
-* Basic ebook support and ereader
- * Epub, pdf, cbr, cbz
- * Send ebook to device (i.e. Kindle)
-* Open RSS feeds for podcasts and audiobooks
+- Fully **open-source**, including the [android & iOS app](https://github.com/advplyr/audiobookshelf-app) _(in beta)_
+- Stream all audio formats on the fly
+- Search and add podcasts to download episodes w/ auto-download
+- Multi-user support w/ custom permissions
+- Keeps progress per user and syncs across devices
+- Auto-detects library updates, no need to re-scan
+- Upload books and podcasts w/ bulk upload drag and drop folders
+- Backup your metadata + automated daily backups
+- Progressive Web App (PWA)
+- Chromecast support on the web app and android app
+- Fetch metadata and cover art from several sources
+- Chapter editor and chapter lookup (using [Audnexus API](https://audnex.us/))
+- Merge your audio files into a single m4b
+- Embed metadata and cover image into your audio files
+- Basic ebook support and ereader
+ - Epub, pdf, cbr, cbz
+ - Send ebook to device (i.e. Kindle)
+- Open RSS feeds for podcasts and audiobooks
Is there a feature you are looking for? [Suggest it](https://github.com/advplyr/audiobookshelf/issues/new/choose)
-Join us on [Discord](https://discord.gg/HQgCbd6E75) or [Matrix](https://matrix.to/#/#audiobookshelf:matrix.org)
+Join us on [Discord](https://discord.gg/HQgCbd6E75)
### Android App (beta)
+
Try it out on the [Google Play Store](https://play.google.com/store/apps/details?id=com.audiobookshelf.app)
### iOS App (beta)
-**Beta is currently full. Apple has a hard limit of 10k beta testers. Updates will be posted in Discord/Matrix.**
-Using Test Flight: https://testflight.apple.com/join/wiic7QIW ***(beta is full)***
+**Beta is currently full. Apple has a hard limit of 10k beta testers. Updates will be posted in Discord.**
+
+Using Test Flight: https://testflight.apple.com/join/wiic7QIW **_(beta is full)_**
### Build your own tools & clients
+
Check out the [API documentation](https://api.audiobookshelf.org/)
@@ -62,7 +65,7 @@ Check out the [API documentation](https://api.audiobookshelf.org/)
#### Directory structure and folder names are important to Audiobookshelf!
- See [documentation](https://audiobookshelf.org/docs#book-directory-structure) for supported directory structure, folder naming conventions, and audio file metadata usage.
+See [documentation](https://audiobookshelf.org/docs#book-directory-structure) for supported directory structure, folder naming conventions, and audio file metadata usage.
@@ -88,31 +91,34 @@ Toggle websockets support.
Add this to the site config file on your nginx server after you have changed the relevant parts in the <> brackets, and inserted your certificate paths.
-
```bash
-server
-{
- listen 443 ssl;
- server_name ..;
+server {
+ listen 443 ssl;
+ server_name ..;
- access_log /var/log/nginx/audiobookshelf.access.log;
- error_log /var/log/nginx/audiobookshelf.error.log;
+ access_log /var/log/nginx/audiobookshelf.access.log;
+ error_log /var/log/nginx/audiobookshelf.error.log;
- ssl_certificate /path/to/certificate;
- ssl_certificate_key /path/to/key;
+ ssl_certificate /path/to/certificate;
+ ssl_certificate_key /path/to/key;
- location / {
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto $scheme;
- proxy_set_header Host $host;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "upgrade";
+ location / {
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Forwarded-Proto $scheme;
+ proxy_set_header Host $host;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection "upgrade";
- proxy_http_version 1.1;
+ proxy_http_version 1.1;
- proxy_pass http://;
- proxy_redirect http:// https://;
- }
+ proxy_pass http://;
+ proxy_redirect http:// https://;
+
+ # Prevent 413 Request Entity Too Large error
+ # by increasing the maximum allowed size of the client request body
+ # For example, set it to 10 GiB
+ client_max_body_size 10240M;
+ }
}
```
@@ -121,12 +127,13 @@ server
Add this to the site config file on your Apache server after you have changed the relevant parts in the <> brackets, and inserted your certificate paths.
For this to work you must enable at least the following mods using `a2enmod`:
- - `ssl`
- - `proxy`
- - `proxy_http`
- - `proxy_balancer`
- - `proxy_wstunnel`
- - `rewrite`
+
+- `ssl`
+- `proxy`
+- `proxy_http`
+- `proxy_balancer`
+- `proxy_wstunnel`
+- `rewrite`
```bash
@@ -151,9 +158,8 @@ For this to work you must enable at least the following mods using `a2enmod`:
```
-Some SSL certificates like those signed by Let's Encrypt require ACME validation. To allow Let's Encrypt to write and confirm
-the ACME challenge, edit your VirtualHost definition to prevent proxying traffic that queries `/.well-known` and instead
-serve that directly:
+Some SSL certificates like those signed by Let's Encrypt require ACME validation. To allow Let's Encrypt to write and confirm the ACME challenge, edit your VirtualHost definition to prevent proxying traffic that queries `/.well-known` and instead serve that directly:
+
```bash
# ...
@@ -162,15 +168,14 @@ serve that directly:
# within DocumentRoot and give the HTTP user recursive write
# access to it.
DocumentRoot /path/to/local/directory
-
+
ProxyPreserveHost On
ProxyPass /.well-known !
ProxyPass / http://localhost:/
-
- # ...
-
-```
+ # ...
+
+```
### SWAG Reverse Proxy
@@ -179,47 +184,49 @@ serve that directly:
### Synology NAS Reverse Proxy Setup (DSM 7+/Quickconnect)
1. **Open Control Panel**
+
- Navigate to `Login Portal > Advanced`.
2. **General Tab**
+
- Click `Reverse Proxy` > `Create`.
-
- | Setting | Value |
- |---------|----------------|
- | Reverse Proxy Name | audiobookshelf |
+
+ | Setting | Value |
+ | ------------------ | -------------- |
+ | Reverse Proxy Name | audiobookshelf |
3. **Source Configuration**
- | Setting | Value |
- |-------------------------|-------------------------------------|
- | Protocol | HTTPS |
- | Hostname | `..synology.me` |
- | Port | 443 |
- | Access Control Profile | Leave as is |
+ | Setting | Value |
+ | ---------------------- | ---------------------------------------- |
+ | Protocol | HTTPS |
+ | Hostname | `..synology.me` |
+ | Port | 443 |
+ | Access Control Profile | Leave as is |
- Example Hostname: `audiobookshelf.mydomain.synology.me`
4. **Destination Configuration**
- | Setting | Value |
- |-----------|------------------|
- | Protocol | HTTP |
- | Hostname | Your NAS IP |
- | Port | 13378 |
+ | Setting | Value |
+ | -------- | ----------- |
+ | Protocol | HTTP |
+ | Hostname | Your NAS IP |
+ | Port | 13378 |
5. **Custom Header Tab**
+
- Go to `Create > Websocket`.
- Configure Headers (leave as is):
- | Header Name | Value |
- |-------------|------------------|
- | Upgrade | `$http_upgrade` |
- | Connection | `$connection_upgrade` |
+ | Header Name | Value |
+ | ----------- | --------------------- |
+ | Upgrade | `$http_upgrade` |
+ | Connection | `$connection_upgrade` |
6. **Advanced Settings Tab**
- Leave as is.
-
### [Traefik Reverse Proxy](https://doc.traefik.io/traefik/)
Middleware relating to CORS will cause the app to report Unknown Error when logging in. To prevent this don't apply any of the following headers to the router for this site:
@@ -230,8 +237,7 @@ Middleware relating to CORS will cause the app to report Unknown Error when logg
accessControlMaxAge
-From [@Dondochaka](https://discord.com/channels/942908292873723984/942914154254176257/945074590374318170) and [@BeastleeUK](https://discord.com/channels/942908292873723984/942914154254176257/970366039294611506)
-
+From [@Dondochaka](https://discord.com/channels/942908292873723984/942914154254176257/945074590374318170) and [@BeastleeUK](https://discord.com/channels/942908292873723984/942914154254176257/970366039294611506)
### Example Caddyfile - [Caddy Reverse Proxy](https://caddyserver.com/docs/caddyfile/directives/reverse_proxy)
@@ -241,13 +247,14 @@ subdomain.domain.com {
reverse_proxy :
}
```
+
### HAProxy
-Below is a generic HAProxy config, using `audiobookshelf.YOUR_DOMAIN.COM`.
+Below is a generic HAProxy config, using `audiobookshelf.YOUR_DOMAIN.COM`.
To use `http2`, `ssl` is needed.
-````make
+```make
global
# ... (your global settings go here)
@@ -282,7 +289,7 @@ backend default_backend
# Define the server for the default backend
server default_server 127.0.0.123:8081
-````
+```
### pfSense and HAProxy
@@ -292,43 +299,37 @@ For pfSense the inputs are graphical, and `Health checking` is enabled.
##### Access Control lists
-| Name | Expression | CS | Not | Value |
-|:--------------:|:-----------------:|:--:|:---:|:---------------:|
-| audiobookshelf | Host starts with: | | | audiobookshelf. |
-
-
+| Name | Expression | CS | Not | Value |
+| :------------: | :---------------: | :-: | :-: | :-------------: |
+| audiobookshelf | Host starts with: | | | audiobookshelf. |
##### Actions
The `condition acl names` needs to match the name above `audiobookshelf`.
-| Action | Parameters | Condition acl names |
-|:--------------:|:-----------------:|:---------------:|
-| `Use Backend` |audiobookshelf | audiobookshelf |
+| Action | Parameters | Condition acl names |
+| :-----------: | :------------: | :-----------------: |
+| `Use Backend` | audiobookshelf | audiobookshelf |
#### Backend
-
The `Name` needs to match the `Parameters` above `audiobookshelf`.
-| Name | audiobookshelf |
-|--------------|-----------------|
+| Name | audiobookshelf |
+| ---- | -------------- |
##### Server list:
-| Name | Expression | CS | Not | Value |
-|:--------------:|:-----------------:|:--:|:---:|:---------------:|
-| audiobookshelf | Host starts with: | | | audiobookshelf. |
+| Name | Expression | CS | Not | Value |
+| :------------: | :---------------: | :-: | :-: | :-------------: |
+| audiobookshelf | Host starts with: | | | audiobookshelf. |
##### Health checking:
-Health checking is enabled by default. `Http check method` of `OPTIONS` is not supported on Audiobookshelf.
-If Health check fails, data will not be forwared.
-Need to do one of following:
-
-* To disable: Change `Health check method` to `none`.
-* To make Health checking function: Change `Http check method` to `HEAD` or `GET`.
+Health checking is enabled by default. `Http check method` of `OPTIONS` is not supported on Audiobookshelf. If Health check fails, data will not be forwared. Need to do one of following:
+- To disable: Change `Health check method` to `none`.
+- To make Health checking function: Change `Http check method` to `HEAD` or `GET`.
# Run from source
@@ -336,16 +337,20 @@ Need to do one of following:
This application is built using [NodeJs](https://nodejs.org/).
-Information on helping with translations of the web client [here](https://www.audiobookshelf.org/faq#how-do-i-help-with-translations).
+### Localization
+
+Thank you to [Weblate](https://hosted.weblate.org/engage/audiobookshelf/) for hosting our localization infrastructure pro-bono. If you want to see Audiobookshelf in your language, please help us localize. Additional information on helping with the translations [here](https://www.audiobookshelf.org/faq#how-do-i-help-with-translations).
### Dev Container Setup
+
The easiest way to begin developing this project is to use a dev container. An introduction to dev containers in VSCode can be found [here](https://code.visualstudio.com/docs/devcontainers/containers).
Required Software:
-* [Docker Desktop](https://www.docker.com/products/docker-desktop/)
-* [VSCode](https://code.visualstudio.com/download)
-*Note, it is possible to use other container software than Docker and IDEs other than VSCode. However, this setup is more complicated and not covered here.*
+- [Docker Desktop](https://www.docker.com/products/docker-desktop/)
+- [VSCode](https://code.visualstudio.com/download)
+
+_Note, it is possible to use other container software than Docker and IDEs other than VSCode. However, this setup is more complicated and not covered here._
@@ -422,10 +427,9 @@ You can also build a version of the client that supports live reloading. To do t
If you are using VSCode, this project includes a couple of pre-defined targets to speed up this process. First, if you build the project (`ctrl+shift+b` or `cmd+shift+b`) it will automatically generate the client. Next, there are debug commands for running the server and client. You can view these targets using the debug panel (bring it up with (`ctrl+shift+d` or `cmd+shift+d`):
-* `Debug server`—Run the server.
-* `Debug client (nuxt)`—Run the client with live reload.
-* `Debug server and client (nuxt)`—Runs both the preceding two debug targets.
-
+- `Debug server`—Run the server.
+- `Debug client (nuxt)`—Run the client with live reload.
+- `Debug server and client (nuxt)`—Runs both the preceding two debug targets.
# How to Support
diff --git a/server/Auth.js b/server/Auth.js
index 827870b01..60af2a1e0 100644
--- a/server/Auth.js
+++ b/server/Auth.js
@@ -1,7 +1,9 @@
const axios = require('axios')
const passport = require('passport')
+const { Request, Response, NextFunction } = require('express')
const bcrypt = require('./libs/bcryptjs')
const jwt = require('./libs/jsonwebtoken')
+const requestIp = require('./libs/requestIp')
const LocalStrategy = require('./libs/passportLocal')
const JwtStrategy = require('passport-jwt').Strategy
const ExtractJwt = require('passport-jwt').ExtractJwt
@@ -13,7 +15,6 @@ const Logger = require('./Logger')
* @class Class for handling all the authentication related functionality.
*/
class Auth {
-
constructor() {
// Map of openId sessions indexed by oauth2 state-variable
this.openIdAuthSession = new Map()
@@ -24,47 +25,59 @@ class Auth {
*/
async initPassportJs() {
// Check if we should load the local strategy (username + password login)
- if (global.ServerSettings.authActiveAuthMethods.includes("local")) {
+ if (global.ServerSettings.authActiveAuthMethods.includes('local')) {
this.initAuthStrategyPassword()
}
// Check if we should load the openid strategy
- if (global.ServerSettings.authActiveAuthMethods.includes("openid")) {
+ if (global.ServerSettings.authActiveAuthMethods.includes('openid')) {
this.initAuthStrategyOpenID()
}
- // Load the JwtStrategy (always) -> for bearer token auth
- passport.use(new JwtStrategy({
- jwtFromRequest: ExtractJwt.fromExtractors([ExtractJwt.fromAuthHeaderAsBearerToken(), ExtractJwt.fromUrlQueryParameter('token')]),
- secretOrKey: Database.serverSettings.tokenSecret
- }, this.jwtAuthCheck.bind(this)))
+ // Load the JwtStrategy (always) -> for bearer token auth
+ passport.use(
+ new JwtStrategy(
+ {
+ jwtFromRequest: ExtractJwt.fromExtractors([ExtractJwt.fromAuthHeaderAsBearerToken(), ExtractJwt.fromUrlQueryParameter('token')]),
+ secretOrKey: Database.serverSettings.tokenSecret
+ },
+ this.jwtAuthCheck.bind(this)
+ )
+ )
// define how to seralize a user (to be put into the session)
passport.serializeUser(function (user, cb) {
process.nextTick(function () {
// only store id to session
- return cb(null, JSON.stringify({
- id: user.id,
- }))
+ return cb(
+ null,
+ JSON.stringify({
+ id: user.id
+ })
+ )
})
})
// define how to deseralize a user (use the ID to get it from the database)
- passport.deserializeUser((function (user, cb) {
- process.nextTick((async function () {
- const parsedUserInfo = JSON.parse(user)
- // load the user by ID that is stored in the session
- const dbUser = await Database.userModel.getUserById(parsedUserInfo.id)
- return cb(null, dbUser)
- }).bind(this))
- }).bind(this))
+ passport.deserializeUser(
+ function (user, cb) {
+ process.nextTick(
+ async function () {
+ const parsedUserInfo = JSON.parse(user)
+ // load the user by ID that is stored in the session
+ const dbUser = await Database.userModel.getUserById(parsedUserInfo.id)
+ return cb(null, dbUser)
+ }.bind(this)
+ )
+ }.bind(this)
+ )
}
/**
* Passport use LocalStrategy
*/
initAuthStrategyPassword() {
- passport.use(new LocalStrategy(this.localAuthCheckUserPw.bind(this)))
+ passport.use(new LocalStrategy({ passReqToCallback: true }, this.localAuthCheckUserPw.bind(this)))
}
/**
@@ -92,48 +105,56 @@ class Auth {
client_secret: global.ServerSettings.authOpenIDClientSecret,
id_token_signed_response_alg: global.ServerSettings.authOpenIDTokenSigningAlgorithm
})
- passport.use('openid-client', new OpenIDClient.Strategy({
- client: openIdClient,
- params: {
- redirect_uri: '/auth/openid/callback',
- scope: 'openid profile email'
- }
- }, async (tokenset, userinfo, done) => {
- try {
- Logger.debug(`[Auth] openid callback userinfo=`, JSON.stringify(userinfo, null, 2))
+ passport.use(
+ 'openid-client',
+ new OpenIDClient.Strategy(
+ {
+ client: openIdClient,
+ params: {
+ redirect_uri: '/auth/openid/callback',
+ scope: 'openid profile email'
+ }
+ },
+ async (tokenset, userinfo, done) => {
+ try {
+ Logger.debug(`[Auth] openid callback userinfo=`, JSON.stringify(userinfo, null, 2))
- if (!userinfo.sub) {
- throw new Error('Invalid userinfo, no sub')
+ if (!userinfo.sub) {
+ throw new Error('Invalid userinfo, no sub')
+ }
+
+ if (!this.validateGroupClaim(userinfo)) {
+ throw new Error(`Group claim ${Database.serverSettings.authOpenIDGroupClaim} not found or empty in userinfo`)
+ }
+
+ let user = await this.findOrCreateUser(userinfo)
+
+ if (!user?.isActive) {
+ throw new Error('User not active or not found')
+ }
+
+ await this.setUserGroup(user, userinfo)
+ await this.updateUserPermissions(user, userinfo)
+
+ // We also have to save the id_token for later (used for logout) because we cannot set cookies here
+ user.openid_id_token = tokenset.id_token
+
+ return done(null, user)
+ } catch (error) {
+ Logger.error(`[Auth] openid callback error: ${error?.message}\n${error?.stack}`)
+
+ return done(null, null, 'Unauthorized')
+ }
}
-
- if (!this.validateGroupClaim(userinfo)) {
- throw new Error(`Group claim ${Database.serverSettings.authOpenIDGroupClaim} not found or empty in userinfo`)
- }
-
- let user = await this.findOrCreateUser(userinfo)
-
- if (!user?.isActive) {
- throw new Error('User not active or not found')
- }
-
- await this.setUserGroup(user, userinfo)
- await this.updateUserPermissions(user, userinfo)
-
- // We also have to save the id_token for later (used for logout) because we cannot set cookies here
- user.openid_id_token = tokenset.id_token
-
- return done(null, user)
- } catch (error) {
- Logger.error(`[Auth] openid callback error: ${error?.message}\n${error?.stack}`)
-
- return done(null, null, 'Unauthorized')
- }
- }))
+ )
+ )
}
/**
* Finds an existing user by OpenID subject identifier, or by email/username based on server settings,
* or creates a new user if configured to do so.
+ *
+ * @returns {Promise}
*/
async findOrCreateUser(userinfo) {
let user = await Database.userModel.getUserByOpenIDSub(userinfo.sub)
@@ -181,7 +202,6 @@ class Auth {
return null
}
-
user = await Database.userModel.getUserByUsername(username)
if (user?.authOpenIDSub) {
@@ -197,8 +217,11 @@ class Auth {
return null
}
- user.authOpenIDSub = userinfo.sub
- await Database.userModel.updateFromOld(user)
+ // Update user with OpenID sub
+ if (!user.extraData) user.extraData = {}
+ user.extraData.authOpenIDSub = userinfo.sub
+ user.changed('extraData', true)
+ await user.save()
Logger.debug(`[Auth] openid: User found by email/username`)
return user
@@ -220,7 +243,8 @@ class Auth {
*/
validateGroupClaim(userinfo) {
const groupClaimName = Database.serverSettings.authOpenIDGroupClaim
- if (!groupClaimName) // Allow no group claim when configured like this
+ if (!groupClaimName)
+ // Allow no group claim when configured like this
return true
// If configured it must exist in userinfo
@@ -232,22 +256,22 @@ class Auth {
/**
* Sets the user group based on group claim in userinfo.
- *
- * @param {import('./objects/user/User')} user
+ *
+ * @param {import('./models/User')} user
* @param {Object} userinfo
*/
async setUserGroup(user, userinfo) {
const groupClaimName = Database.serverSettings.authOpenIDGroupClaim
- if (!groupClaimName) // No group claim configured, don't set anything
+ if (!groupClaimName)
+ // No group claim configured, don't set anything
return
- if (!userinfo[groupClaimName])
- throw new Error(`Group claim ${groupClaimName} not found in userinfo`)
+ if (!userinfo[groupClaimName]) throw new Error(`Group claim ${groupClaimName} not found in userinfo`)
- const groupsList = userinfo[groupClaimName].map(group => group.toLowerCase())
+ const groupsList = userinfo[groupClaimName].map((group) => group.toLowerCase())
const rolesInOrderOfPriority = ['admin', 'user', 'guest']
- let userType = rolesInOrderOfPriority.find(role => groupsList.includes(role))
+ let userType = rolesInOrderOfPriority.find((role) => groupsList.includes(role))
if (userType) {
if (user.type === 'root') {
// Check OpenID Group
@@ -262,7 +286,7 @@ class Auth {
if (user.type !== userType) {
Logger.info(`[Auth] openid callback: Updating user "${user.username}" type to "${userType}" from "${user.type}"`)
user.type = userType
- await Database.userModel.updateFromOld(user)
+ await user.save()
}
} else {
throw new Error(`No valid group found in userinfo: ${JSON.stringify(userinfo[groupClaimName], null, 2)}`)
@@ -271,32 +295,30 @@ class Auth {
/**
* Updates user permissions based on the advanced permissions claim.
- *
- * @param {import('./objects/user/User')} user
+ *
+ * @param {import('./models/User')} user
* @param {Object} userinfo
*/
async updateUserPermissions(user, userinfo) {
const absPermissionsClaim = Database.serverSettings.authOpenIDAdvancedPermsClaim
- if (!absPermissionsClaim) // No advanced permissions claim configured, don't set anything
+ if (!absPermissionsClaim)
+ // No advanced permissions claim configured, don't set anything
return
- if (user.type === 'admin' || user.type === 'root')
- return
+ if (user.type === 'admin' || user.type === 'root') return
const absPermissions = userinfo[absPermissionsClaim]
- if (!absPermissions)
- throw new Error(`Advanced permissions claim ${absPermissionsClaim} not found in userinfo`)
+ if (!absPermissions) throw new Error(`Advanced permissions claim ${absPermissionsClaim} not found in userinfo`)
- if (user.updatePermissionsFromExternalJSON(absPermissions)) {
+ if (await user.updatePermissionsFromExternalJSON(absPermissions)) {
Logger.info(`[Auth] openid callback: Updating advanced perms for user "${user.username}" using "${JSON.stringify(absPermissions)}"`)
- await Database.userModel.updateFromOld(user)
}
}
/**
* Unuse strategy
- *
- * @param {string} name
+ *
+ * @param {string} name
*/
unuseAuthStrategy(name) {
passport.unuse(name)
@@ -304,8 +326,8 @@ class Auth {
/**
* Use strategy
- *
- * @param {string} name
+ *
+ * @param {string} name
*/
useAuthStrategy(name) {
if (name === 'openid') {
@@ -335,9 +357,9 @@ class Auth {
* - 'api': Authentication for API use
* - 'openid': OpenID authentication directly over web
* - 'openid-mobile': OpenID authentication, but done via an mobile device
- *
- * @param {import('express').Request} req
- * @param {import('express').Response} res
+ *
+ * @param {Request} req
+ * @param {Response} res
* @param {string} authMethod - The authentication method, default is 'local'.
*/
paramsToCookies(req, res, authMethod = 'local') {
@@ -365,9 +387,9 @@ class Auth {
/**
* Informs the client in the right mode about a successfull login and the token
* (clients choise is restored from cookies).
- *
- * @param {import('express').Request} req
- * @param {import('express').Response} res
+ *
+ * @param {Request} req
+ * @param {Response} res
*/
async handleLoginSuccessBasedOnCookie(req, res) {
// get userLogin json (information about the user, server and the session)
@@ -391,8 +413,8 @@ class Auth {
/**
* Creates all (express) routes required for authentication.
- *
- * @param {import('express').Router} router
+ *
+ * @param {import('express').Router} router
*/
async initAuthRoutes(router) {
// Local strategy login route (takes username and password)
@@ -422,7 +444,7 @@ class Auth {
}
// Generate a state on web flow or if no state supplied
- const state = (!isMobileFlow || !req.query.state) ? OpenIDClient.generators.random() : req.query.state
+ const state = !isMobileFlow || !req.query.state ? OpenIDClient.generators.random() : req.query.state
// Redirect URL for the SSO provider
let redirectUri
@@ -508,8 +530,7 @@ class Auth {
function isValidRedirectUri(uri) {
// Check if the redirect_uri is in the whitelist
- return Database.serverSettings.authOpenIDMobileRedirectURIs.includes(uri) ||
- (Database.serverSettings.authOpenIDMobileRedirectURIs.length === 1 && Database.serverSettings.authOpenIDMobileRedirectURIs[0] === '*')
+ return Database.serverSettings.authOpenIDMobileRedirectURIs.includes(uri) || (Database.serverSettings.authOpenIDMobileRedirectURIs.length === 1 && Database.serverSettings.authOpenIDMobileRedirectURIs[0] === '*')
}
})
@@ -545,77 +566,79 @@ class Auth {
})
// openid strategy callback route (this receives the token from the configured openid login provider)
- router.get('/auth/openid/callback', (req, res, next) => {
- const oidcStrategy = passport._strategy('openid-client')
- const sessionKey = oidcStrategy._key
+ router.get(
+ '/auth/openid/callback',
+ (req, res, next) => {
+ const oidcStrategy = passport._strategy('openid-client')
+ const sessionKey = oidcStrategy._key
- if (!req.session[sessionKey]) {
- return res.status(400).send('No session')
- }
-
- // If the client sends us a code_verifier, we will tell passport to use this to send this in the token request
- // The code_verifier will be validated by the oauth2 provider by comparing it to the code_challenge in the first request
- // Crucial for API/Mobile clients
- if (req.query.code_verifier) {
- req.session[sessionKey].code_verifier = req.query.code_verifier
- }
-
- function handleAuthError(isMobile, errorCode, errorMessage, logMessage, response) {
- Logger.error(JSON.stringify(logMessage, null, 2))
- if (response) {
- // Depending on the error, it can also have a body
- // We also log the request header the passport plugin sents for the URL
- const header = response.req?._header.replace(/Authorization: [^\r\n]*/i, 'Authorization: REDACTED')
- Logger.debug(header + '\n' + JSON.stringify(response.body, null, 2))
+ if (!req.session[sessionKey]) {
+ return res.status(400).send('No session')
}
- if (isMobile) {
- return res.status(errorCode).send(errorMessage)
- } else {
- return res.redirect(`/login?error=${encodeURIComponent(errorMessage)}&autoLaunch=0`)
+ // If the client sends us a code_verifier, we will tell passport to use this to send this in the token request
+ // The code_verifier will be validated by the oauth2 provider by comparing it to the code_challenge in the first request
+ // Crucial for API/Mobile clients
+ if (req.query.code_verifier) {
+ req.session[sessionKey].code_verifier = req.query.code_verifier
}
- }
- function passportCallback(req, res, next) {
- return (err, user, info) => {
- const isMobile = req.session[sessionKey]?.mobile === true
- if (err) {
- return handleAuthError(isMobile, 500, 'Error in callback', `[Auth] Error in openid callback - ${err}`, err?.response)
+ function handleAuthError(isMobile, errorCode, errorMessage, logMessage, response) {
+ Logger.error(JSON.stringify(logMessage, null, 2))
+ if (response) {
+ // Depending on the error, it can also have a body
+ // We also log the request header the passport plugin sents for the URL
+ const header = response.req?._header.replace(/Authorization: [^\r\n]*/i, 'Authorization: REDACTED')
+ Logger.debug(header + '\n' + JSON.stringify(response.body, null, 2))
}
- if (!user) {
- // Info usually contains the error message from the SSO provider
- return handleAuthError(isMobile, 401, 'Unauthorized', `[Auth] No data in openid callback - ${info}`, info?.response)
+ if (isMobile) {
+ return res.status(errorCode).send(errorMessage)
+ } else {
+ return res.redirect(`/login?error=${encodeURIComponent(errorMessage)}&autoLaunch=0`)
}
+ }
- req.logIn(user, (loginError) => {
- if (loginError) {
- return handleAuthError(isMobile, 500, 'Error during login', `[Auth] Error in openid callback: ${loginError}`)
+ function passportCallback(req, res, next) {
+ return (err, user, info) => {
+ const isMobile = req.session[sessionKey]?.mobile === true
+ if (err) {
+ return handleAuthError(isMobile, 500, 'Error in callback', `[Auth] Error in openid callback - ${err}`, err?.response)
}
- // The id_token does not provide access to the user, but is used to identify the user to the SSO provider
- // instead it containts a JWT with userinfo like user email, username, etc.
- // the client will get to know it anyway in the logout url according to the oauth2 spec
- // so it is safe to send it to the client, but we use strict settings
- res.cookie('openid_id_token', user.openid_id_token, { maxAge: 1000 * 60 * 60 * 24 * 365 * 10, httpOnly: true, secure: true, sameSite: 'Strict' })
- next()
- })
+ if (!user) {
+ // Info usually contains the error message from the SSO provider
+ return handleAuthError(isMobile, 401, 'Unauthorized', `[Auth] No data in openid callback - ${info}`, info?.response)
+ }
+
+ req.logIn(user, (loginError) => {
+ if (loginError) {
+ return handleAuthError(isMobile, 500, 'Error during login', `[Auth] Error in openid callback: ${loginError}`)
+ }
+
+ // The id_token does not provide access to the user, but is used to identify the user to the SSO provider
+ // instead it containts a JWT with userinfo like user email, username, etc.
+ // the client will get to know it anyway in the logout url according to the oauth2 spec
+ // so it is safe to send it to the client, but we use strict settings
+ res.cookie('openid_id_token', user.openid_id_token, { maxAge: 1000 * 60 * 60 * 24 * 365 * 10, httpOnly: true, secure: true, sameSite: 'Strict' })
+ next()
+ })
+ }
}
- }
-
- // While not required by the standard, the passport plugin re-sends the original redirect_uri in the token request
- // We need to set it correctly, as some SSO providers (e.g. keycloak) check that parameter when it is provided
- // We set it here again because the passport param can change between requests
- return passport.authenticate('openid-client', { redirect_uri: req.session[sessionKey].sso_redirect_uri }, passportCallback(req, res, next))(req, res, next)
- },
+ // While not required by the standard, the passport plugin re-sends the original redirect_uri in the token request
+ // We need to set it correctly, as some SSO providers (e.g. keycloak) check that parameter when it is provided
+ // We set it here again because the passport param can change between requests
+ return passport.authenticate('openid-client', { redirect_uri: req.session[sessionKey].sso_redirect_uri }, passportCallback(req, res, next))(req, res, next)
+ },
// on a successfull login: read the cookies and react like the client requested (callback or json)
- this.handleLoginSuccessBasedOnCookie.bind(this))
+ this.handleLoginSuccessBasedOnCookie.bind(this)
+ )
/**
* Helper route used to auto-populate the openid URLs in config/authentication
* Takes an issuer URL as a query param and requests the config data at "/.well-known/openid-configuration"
- *
+ *
* @example /auth/openid/config?issuer=http://192.168.1.66:9000/application/o/audiobookshelf/
*/
router.get('/auth/openid/config', this.isAuthenticated, async (req, res) => {
@@ -625,7 +648,7 @@ class Auth {
}
if (!req.query.issuer) {
- return res.status(400).send('Invalid request. Query param \'issuer\' is required')
+ return res.status(400).send("Invalid request. Query param 'issuer' is required")
}
// Strip trailing slash
@@ -641,23 +664,26 @@ class Auth {
}
} catch (error) {
Logger.error(`[Auth] Failed to get openid configuration. Invalid URL "${configUrl}"`, error)
- return res.status(400).send('Invalid request. Query param \'issuer\' is invalid')
+ return res.status(400).send("Invalid request. Query param 'issuer' is invalid")
}
- axios.get(configUrl.toString()).then(({ data }) => {
- res.json({
- issuer: data.issuer,
- authorization_endpoint: data.authorization_endpoint,
- token_endpoint: data.token_endpoint,
- userinfo_endpoint: data.userinfo_endpoint,
- end_session_endpoint: data.end_session_endpoint,
- jwks_uri: data.jwks_uri,
- id_token_signing_alg_values_supported: data.id_token_signing_alg_values_supported
+ axios
+ .get(configUrl.toString())
+ .then(({ data }) => {
+ res.json({
+ issuer: data.issuer,
+ authorization_endpoint: data.authorization_endpoint,
+ token_endpoint: data.token_endpoint,
+ userinfo_endpoint: data.userinfo_endpoint,
+ end_session_endpoint: data.end_session_endpoint,
+ jwks_uri: data.jwks_uri,
+ id_token_signing_alg_values_supported: data.id_token_signing_alg_values_supported
+ })
+ })
+ .catch((error) => {
+ Logger.error(`[Auth] Failed to get openid configuration at "${configUrl}"`, error)
+ res.status(error.statusCode || 400).send(`${error.code || 'UNKNOWN'}: Failed to get openid configuration`)
})
- }).catch((error) => {
- Logger.error(`[Auth] Failed to get openid configuration at "${configUrl}"`, error)
- res.status(error.statusCode || 400).send(`${error.code || 'UNKNOWN'}: Failed to get openid configuration`)
- })
})
// Logout route
@@ -683,7 +709,7 @@ class Auth {
let postLogoutRedirectUri = null
if (authMethod === 'openid') {
- const protocol = (req.secure || req.get('x-forwarded-proto') === 'https') ? 'https' : 'http'
+ const protocol = req.secure || req.get('x-forwarded-proto') === 'https' ? 'https' : 'http'
const host = req.get('host')
// TODO: ABS does currently not support subfolders for installation
// If we want to support it we need to include a config for the serverurl
@@ -717,9 +743,9 @@ class Auth {
/**
* middleware to use in express to only allow authenticated users.
- * @param {import('express').Request} req
- * @param {import('express').Response} res
- * @param {import('express').NextFunction} next
+ * @param {Request} req
+ * @param {Response} res
+ * @param {NextFunction} next
*/
isAuthenticated(req, res, next) {
// check if session cookie says that we are authenticated
@@ -727,14 +753,14 @@ class Auth {
next()
} else {
// try JWT to authenticate
- passport.authenticate("jwt")(req, res, next)
+ passport.authenticate('jwt')(req, res, next)
}
}
/**
* Function to generate a jwt token for a given user
- *
- * @param {{ id:string, username:string }} user
+ *
+ * @param {{ id:string, username:string }} user
* @returns {string} token
*/
generateAccessToken(user) {
@@ -743,15 +769,14 @@ class Auth {
/**
* Function to validate a jwt token for a given user
- *
- * @param {string} token
+ *
+ * @param {string} token
* @returns {Object} tokens data
*/
static validateAccessToken(token) {
try {
return jwt.verify(token, global.ServerSettings.tokenSecret)
- }
- catch (err) {
+ } catch (err) {
return null
}
}
@@ -760,7 +785,8 @@ class Auth {
* Generate a token which is used to encrpt/protect the jwts.
*/
async initTokenSecret() {
- if (process.env.TOKEN_SECRET) { // User can supply their own token secret
+ if (process.env.TOKEN_SECRET) {
+ // User can supply their own token secret
Database.serverSettings.tokenSecret = process.env.TOKEN_SECRET
} else {
Database.serverSettings.tokenSecret = require('crypto').randomBytes(256).toString('base64')
@@ -768,19 +794,21 @@ class Auth {
await Database.updateServerSettings()
// New token secret creation added in v2.1.0 so generate new API tokens for each user
- const users = await Database.userModel.getOldUsers()
+ const users = await Database.userModel.findAll({
+ attributes: ['id', 'username', 'token']
+ })
if (users.length) {
for (const user of users) {
user.token = await this.generateAccessToken(user)
+ await user.save({ hooks: false })
}
- await Database.updateBulkUsers(users)
}
}
/**
* Checks if the user in the validated jwt_payload really exists and is active.
- * @param {Object} jwt_payload
- * @param {function} done
+ * @param {Object} jwt_payload
+ * @param {function} done
*/
async jwtAuthCheck(jwt_payload, done) {
// load user by id from the jwt token
@@ -798,15 +826,21 @@ class Auth {
/**
* Checks if a username and password tuple is valid and the user active.
- * @param {string} username
- * @param {string} password
- * @param {Promise} done
+ * @param {Request} req
+ * @param {string} username
+ * @param {string} password
+ * @param {Promise} done
*/
- async localAuthCheckUserPw(username, password, done) {
+ async localAuthCheckUserPw(req, username, password, done) {
// Load the user given it's username
const user = await Database.userModel.getUserByUsername(username.toLowerCase())
if (!user?.isActive) {
+ if (user) {
+ this.logFailedLocalAuthLoginAttempt(req, user.username, 'User is not active')
+ } else {
+ this.logFailedLocalAuthLoginAttempt(req, username, 'User not found')
+ }
done(null, null)
return
}
@@ -815,14 +849,16 @@ class Auth {
if (user.type === 'root' && !user.pash) {
if (password) {
// deny login
+ this.logFailedLocalAuthLoginAttempt(req, user.username, 'Root user has no password set')
done(null, null)
return
}
// approve login
+ Logger.info(`[Auth] User "${user.username}" logged in from ip ${requestIp.getClientIp(req)}`)
done(null, user)
return
} else if (!user.pash) {
- Logger.error(`[Auth] User "${user.username}"/"${user.type}" attempted to login without a password set`)
+ this.logFailedLocalAuthLoginAttempt(req, user.username, 'User has no password set. Might have been created with OpenID')
done(null, null)
return
}
@@ -831,18 +867,31 @@ class Auth {
const compare = await bcrypt.compare(password, user.pash)
if (compare) {
// approve login
+ Logger.info(`[Auth] User "${user.username}" logged in from ip ${requestIp.getClientIp(req)}`)
done(null, user)
return
}
// deny login
+ this.logFailedLocalAuthLoginAttempt(req, user.username, 'Invalid password')
done(null, null)
return
}
+ /**
+ *
+ * @param {Request} req
+ * @param {string} username
+ * @param {string} message
+ */
+ logFailedLocalAuthLoginAttempt(req, username, message) {
+ if (!req || !username || !message) return
+ Logger.error(`[Auth] Failed login attempt for username "${username}" from ip ${requestIp.getClientIp(req)} (${message})`)
+ }
+
/**
* Hashes a password with bcrypt.
- * @param {string} password
- * @returns {Promise} hash
+ * @param {string} password
+ * @returns {Promise} hash
*/
hashPass(password) {
return new Promise((resolve) => {
@@ -858,14 +907,14 @@ class Auth {
/**
* Return the login info payload for a user
- *
- * @param {Object} user
+ *
+ * @param {import('./models/User')} user
* @returns {Promise