mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2026-01-03 04:58:46 -05:00
Compare commits
260 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
166454ef43 | ||
|
|
d5c854d606 | ||
|
|
eace46bf55 | ||
|
|
b9ffce166e | ||
|
|
9713e94aed | ||
|
|
d71bc89c9d | ||
|
|
a2b2a2d060 | ||
|
|
88f9533b37 | ||
|
|
630ece82ad | ||
|
|
5777184cae | ||
|
|
a76da14fb0 | ||
|
|
0c612b4836 | ||
|
|
a1af672c7c | ||
|
|
5fcd23409a | ||
|
|
99f0799a11 | ||
|
|
316aeba1b0 | ||
|
|
bfd4a378f3 | ||
|
|
521db90ae0 | ||
|
|
d02fc2debe | ||
|
|
e6c21c5be1 | ||
|
|
91248b496e | ||
|
|
f7ae7783bd | ||
|
|
ae395497a5 | ||
|
|
8826d3af62 | ||
|
|
65153fae9d | ||
|
|
d4c1bc5dfc | ||
|
|
d6f13513ae | ||
|
|
2584c3b432 | ||
|
|
b54421412d | ||
|
|
e2451a3281 | ||
|
|
dbf4bd5c3d | ||
|
|
2a722ab163 | ||
|
|
c83399c7b5 | ||
|
|
a814e45150 | ||
|
|
29e9216bb1 | ||
|
|
94d1732b0d | ||
|
|
7610084627 | ||
|
|
d840905a97 | ||
|
|
7b1b448795 | ||
|
|
77559d29bb | ||
|
|
c14f9accaf | ||
|
|
76a1f48c62 | ||
|
|
ae0a9bcf86 | ||
|
|
9e44fe5524 | ||
|
|
727dad7e19 | ||
|
|
0c2de91097 | ||
|
|
450fa45360 | ||
|
|
e0dddae2c2 | ||
|
|
daa9fccc14 | ||
|
|
ad45dadc15 | ||
|
|
0e8148001e | ||
|
|
fa71f9db2e | ||
|
|
0d9d2fa4be | ||
|
|
c34e9cde05 | ||
|
|
b934a755b5 | ||
|
|
a5772f6b66 | ||
|
|
153f149d58 | ||
|
|
e50b06183e | ||
|
|
305689d513 | ||
|
|
4dd140585d | ||
|
|
cd60d0219f | ||
|
|
8ec18e8d7b | ||
|
|
15545654ea | ||
|
|
8a0fab2b20 | ||
|
|
6e8c6aa740 | ||
|
|
5005aabe5e | ||
|
|
abc2d28617 | ||
|
|
7569a14510 | ||
|
|
b52341dbcf | ||
|
|
b4eed3bad2 | ||
|
|
4fe672f09d | ||
|
|
49af7eb7b0 | ||
|
|
c93c863d82 | ||
|
|
763bb1b829 | ||
|
|
79d32274aa | ||
|
|
987842ed04 | ||
|
|
d2b006b909 | ||
|
|
f4a19e48ad | ||
|
|
38f12f4795 | ||
|
|
7a4f4b1586 | ||
|
|
20ec54e085 | ||
|
|
655bebfec4 | ||
|
|
71e1abd263 | ||
|
|
72172dcb33 | ||
|
|
def2988e12 | ||
|
|
b47793c365 | ||
|
|
3a99cc56b7 | ||
|
|
24c35dede5 | ||
|
|
8c4400dff1 | ||
|
|
af8dffaa33 | ||
|
|
4a36a3c8e6 | ||
|
|
e6735e042e | ||
|
|
c799379a54 | ||
|
|
d8b9f08e5a | ||
|
|
608b25de45 | ||
|
|
2db8869908 | ||
|
|
9500737bbe | ||
|
|
def2b6425b | ||
|
|
0f4b11494e | ||
|
|
46448ce1e9 | ||
|
|
fbe12b393f | ||
|
|
ccf59b2c1a | ||
|
|
d7af3b7788 | ||
|
|
682aca0b2a | ||
|
|
3328ffe1b9 | ||
|
|
c07b7840e2 | ||
|
|
9f848b2c64 | ||
|
|
3d66ec0761 | ||
|
|
f50920be69 | ||
|
|
d31add9d5a | ||
|
|
a4dcb4f92e | ||
|
|
2c589c1dbd | ||
|
|
60ea386c6d | ||
|
|
24be1a0ec5 | ||
|
|
e71a14756b | ||
|
|
85fecbd1b9 | ||
|
|
335d39f317 | ||
|
|
973a18d346 | ||
|
|
a43b93d796 | ||
|
|
acf75abdf1 | ||
|
|
58598bfcf2 | ||
|
|
7a570439db | ||
|
|
6e769d1c20 | ||
|
|
d9e7f5d133 | ||
|
|
a119b05d85 | ||
|
|
7bf7b6bcf9 | ||
|
|
e47ea98cdd | ||
|
|
bf66e13377 | ||
|
|
d7aba5629e | ||
|
|
a5c200ac79 | ||
|
|
fdc1fc1b2a | ||
|
|
42a4b762bd | ||
|
|
180c328ed1 | ||
|
|
2ec52a7a45 | ||
|
|
aacf37e32b | ||
|
|
52323b7eb5 | ||
|
|
5b5613a762 | ||
|
|
de6df0c029 | ||
|
|
e180b3c171 | ||
|
|
1364b79cbf | ||
|
|
ef96f3102f | ||
|
|
06ce3b08f7 | ||
|
|
a13217dddf | ||
|
|
ce528d4012 | ||
|
|
89207b6d2a | ||
|
|
e9591caf81 | ||
|
|
24f1aae6b6 | ||
|
|
04fbc9a22b | ||
|
|
14e31d5690 | ||
|
|
a9e9808183 | ||
|
|
af7cb2432b | ||
|
|
e0c1364916 | ||
|
|
04d16fc535 | ||
|
|
44135b3fed | ||
|
|
6111e8f0da | ||
|
|
4e3e7b10ce | ||
|
|
ce7f81d676 | ||
|
|
0cf2f8885e | ||
|
|
ddf4b2646c | ||
|
|
fe1e0749a2 | ||
|
|
2093468c92 | ||
|
|
19af7454f2 | ||
|
|
d24427aad8 | ||
|
|
e2bb0cfb7c | ||
|
|
2ebdb44826 | ||
|
|
432e25565e | ||
|
|
ebe511404a | ||
|
|
e0a79fb86c | ||
|
|
295ca3d9a2 | ||
|
|
dbad8bdb96 | ||
|
|
8c703859a0 | ||
|
|
bedb260b00 | ||
|
|
b49592301f | ||
|
|
c6c67078b8 | ||
|
|
9e45ad10f1 | ||
|
|
24da859975 | ||
|
|
0b6a8a9641 | ||
|
|
e43c4f082e | ||
|
|
0b334cf957 | ||
|
|
ae387ab397 | ||
|
|
056e62dce8 | ||
|
|
47999214bd | ||
|
|
68473ee345 | ||
|
|
455f27d443 | ||
|
|
ba996c3b55 | ||
|
|
d43a1109c8 | ||
|
|
c3ba7daa16 | ||
|
|
82048cd4f3 | ||
|
|
71b0a5cc81 | ||
|
|
edb5ff1e33 | ||
|
|
d4ed6348ee | ||
|
|
f12ac685e8 | ||
|
|
b9ec4068ee | ||
|
|
02aabb8f97 | ||
|
|
dcec2154c0 | ||
|
|
bbc1d20396 | ||
|
|
e682213681 | ||
|
|
0153c0faae | ||
|
|
87ebf4722b | ||
|
|
3906dca04e | ||
|
|
399ba314a3 | ||
|
|
19e1803633 | ||
|
|
71048c7ff0 | ||
|
|
7f350279fa | ||
|
|
90f4833c9e | ||
|
|
c0cb3a176f | ||
|
|
7b0fa48e2e | ||
|
|
b51853b3df | ||
|
|
f5545cd3f4 | ||
|
|
e76af3bfc2 | ||
|
|
6ef4944d89 | ||
|
|
850397e4c1 | ||
|
|
3b531144cf | ||
|
|
6ca684603c | ||
|
|
cf85d66b2f | ||
|
|
e8fa029df7 | ||
|
|
1a361c91f1 | ||
|
|
4a76059608 | ||
|
|
da25eff5c1 | ||
|
|
69e23ef9f2 | ||
|
|
48a08e9659 | ||
|
|
4608f91ec6 | ||
|
|
e88c1fa329 | ||
|
|
935e545caa | ||
|
|
a426da534c | ||
|
|
eaf6bf29cc | ||
|
|
a0eb6bd3dc | ||
|
|
fbe228a4f8 | ||
|
|
578a59063f | ||
|
|
81020ff34d | ||
|
|
fea78898a5 | ||
|
|
ffa7cc0d22 | ||
|
|
4f9969cd9b | ||
|
|
1be34564f2 | ||
|
|
56eff7a236 | ||
|
|
9f909b0d85 | ||
|
|
baa65b8155 | ||
|
|
12c6a1baa0 | ||
|
|
5ea423072b | ||
|
|
08a41e37b4 | ||
|
|
8027c4a06f | ||
|
|
a1e321b153 | ||
|
|
8c6a2ac5dd | ||
|
|
b489bf9236 | ||
|
|
aa63aa6cf3 | ||
|
|
3051b963ef | ||
|
|
8f7a420cca | ||
|
|
6f6395bad7 | ||
|
|
6afb8de3dd | ||
|
|
0e62ccc7aa | ||
|
|
09282a9a62 | ||
|
|
18b3ab5610 | ||
|
|
699a658df9 | ||
|
|
67ccd2c1fb | ||
|
|
898b072e68 | ||
|
|
61a0126278 | ||
|
|
1ce1904c89 | ||
|
|
c074c835d4 | ||
|
|
2e989fbe83 | ||
|
|
b1b325d00b |
@@ -1,5 +1,5 @@
|
||||
# [Choice] Node.js version (use -bullseye variants on local arm64/Apple Silicon): 18, 16, 14, 18-bullseye, 16-bullseye, 14-bullseye, 18-buster, 16-buster, 14-buster
|
||||
ARG VARIANT=16
|
||||
ARG VARIANT=20
|
||||
FROM mcr.microsoft.com/devcontainers/javascript-node:0-${VARIANT} as base
|
||||
|
||||
# Setup the node environment
|
||||
|
||||
@@ -5,5 +5,6 @@ module.exports.config = {
|
||||
ConfigPath: Path.resolve('config'),
|
||||
MetadataPath: Path.resolve('metadata'),
|
||||
FFmpegPath: '/usr/bin/ffmpeg',
|
||||
FFProbePath: '/usr/bin/ffprobe'
|
||||
FFProbePath: '/usr/bin/ffprobe',
|
||||
SkipBinariesCheck: false
|
||||
}
|
||||
@@ -8,7 +8,7 @@
|
||||
// Append -bullseye or -buster to pin to an OS version.
|
||||
// Use -bullseye variants on local arm64/Apple Silicon.
|
||||
"args": {
|
||||
"VARIANT": "16"
|
||||
"VARIANT": "20"
|
||||
}
|
||||
},
|
||||
"mounts": [
|
||||
|
||||
3
.github/ISSUE_TEMPLATE/bug.yaml
vendored
3
.github/ISSUE_TEMPLATE/bug.yaml
vendored
@@ -11,7 +11,7 @@ body:
|
||||
value: "### Mobile app issues report [here](https://github.com/advplyr/audiobookshelf-app/issues/new/choose)."
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: "### Join the [discord server](https://discord.gg/pJsjuNCKRq) for questions or if you are not sure about a bug."
|
||||
value: "### Join the [discord server](https://discord.gg/HQgCbd6E75) for questions or if you are not sure about a bug."
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: "## Be as descriptive as you can. Include screenshots, error logs, browser, file types, everything you can think of that might be relevant."
|
||||
@@ -44,6 +44,7 @@ body:
|
||||
options:
|
||||
- Docker
|
||||
- Debian/PPA
|
||||
- Windows Tray App
|
||||
- Built from source
|
||||
- Other
|
||||
validations:
|
||||
|
||||
2
.github/ISSUE_TEMPLATE/config.yml
vendored
2
.github/ISSUE_TEMPLATE/config.yml
vendored
@@ -1,7 +1,7 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: Discord
|
||||
url: https://discord.gg/pJsjuNCKRq
|
||||
url: https://discord.gg/HQgCbd6E75
|
||||
about: Ask questions, get help troubleshooting, and join the Abs community here.
|
||||
- name: Matrix
|
||||
url: https://matrix.to/#/#audiobookshelf:matrix.org
|
||||
|
||||
2
.github/workflows/docker-build.yml
vendored
2
.github/workflows/docker-build.yml
vendored
@@ -71,7 +71,7 @@ jobs:
|
||||
with:
|
||||
tags: ${{ github.event.inputs.tags || steps.meta.outputs.tags }}
|
||||
context: .
|
||||
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
||||
platforms: linux/amd64,linux/arm64
|
||||
push: true
|
||||
cache-from: type=local,src=/tmp/.buildx-cache
|
||||
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
|
||||
|
||||
2
.github/workflows/integration-test.yml
vendored
2
.github/workflows/integration-test.yml
vendored
@@ -16,7 +16,7 @@ jobs:
|
||||
- name: setup nade
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 16
|
||||
node-version: 20
|
||||
|
||||
- name: install pkg
|
||||
run: npm install -g pkg
|
||||
|
||||
31
.github/workflows/unit-tests.yml
vendored
Normal file
31
.github/workflows/unit-tests.yml
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
name: Run Unit Tests
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
ref:
|
||||
description: 'Branch/Tag/SHA to test'
|
||||
required: true
|
||||
pull_request:
|
||||
push:
|
||||
|
||||
jobs:
|
||||
run-unit-tests:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ github.event_name != 'workflow_dispatch' && github.ref_name || inputs.ref}}
|
||||
|
||||
- name: Set up Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Run tests
|
||||
run: npm test
|
||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -13,6 +13,8 @@
|
||||
/deploy/
|
||||
/coverage/
|
||||
/.nyc_output/
|
||||
/ffmpeg*
|
||||
/ffprobe*
|
||||
|
||||
sw.*
|
||||
.DS_STORE
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
### STAGE 0: Build client ###
|
||||
FROM node:16-alpine AS build
|
||||
FROM node:20-alpine AS build
|
||||
WORKDIR /client
|
||||
COPY /client /client
|
||||
RUN npm ci && npm cache clean --force
|
||||
@@ -7,7 +7,7 @@ RUN npm run generate
|
||||
|
||||
### STAGE 1: Build server ###
|
||||
FROM sandreas/tone:v0.1.5 AS tone
|
||||
FROM node:16-alpine
|
||||
FROM node:20-alpine
|
||||
|
||||
ENV NODE_ENV=production
|
||||
|
||||
@@ -18,7 +18,8 @@ RUN apk update && \
|
||||
ffmpeg \
|
||||
make \
|
||||
python3 \
|
||||
g++
|
||||
g++ \
|
||||
tini
|
||||
|
||||
COPY --from=tone /usr/local/bin/tone /usr/local/bin/
|
||||
COPY --from=build /client/dist /client/dist
|
||||
@@ -31,4 +32,5 @@ RUN apk del make python3 g++
|
||||
|
||||
EXPOSE 80
|
||||
|
||||
ENTRYPOINT ["tini", "--"]
|
||||
CMD ["node", "index.js"]
|
||||
|
||||
@@ -48,11 +48,10 @@ Description: $DESCRIPTION"
|
||||
echo "$controlfile" > dist/debian/DEBIAN/control;
|
||||
|
||||
# Package debian
|
||||
pkg -t node16-linux-x64 -o dist/debian/usr/share/audiobookshelf/audiobookshelf .
|
||||
pkg -t node18-linux-x64 -o dist/debian/usr/share/audiobookshelf/audiobookshelf .
|
||||
|
||||
fakeroot dpkg-deb --build dist/debian
|
||||
fakeroot dpkg-deb -Zxz --build dist/debian
|
||||
|
||||
mv dist/debian.deb "dist/$OUTPUT_FILE"
|
||||
chmod +x "dist/$OUTPUT_FILE"
|
||||
|
||||
echo "Finished! Filename: $OUTPUT_FILE"
|
||||
|
||||
@@ -217,36 +217,6 @@ Bookshelf Label
|
||||
filter: blur(20px);
|
||||
}
|
||||
|
||||
|
||||
.episode-subtitle {
|
||||
word-break: break-word;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
display: -webkit-box;
|
||||
line-height: 16px;
|
||||
/* fallback */
|
||||
max-height: 32px;
|
||||
/* fallback */
|
||||
-webkit-line-clamp: 2;
|
||||
/* number of lines to show */
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
|
||||
.episode-subtitle-long {
|
||||
word-break: break-word;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
display: -webkit-box;
|
||||
line-height: 16px;
|
||||
/* fallback */
|
||||
max-height: 72px;
|
||||
/* fallback */
|
||||
-webkit-line-clamp: 6;
|
||||
/* number of lines to show */
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
|
||||
|
||||
/* Padding for toastification toasts in the top right to not cover appbar/toolbar */
|
||||
.app-bar-and-toolbar .Vue-Toastification__container.top-right {
|
||||
padding-top: 104px;
|
||||
|
||||
3
client/assets/tailwind.css
Normal file
3
client/assets/tailwind.css
Normal file
@@ -0,0 +1,3 @@
|
||||
@tailwind base;
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
@@ -98,6 +98,9 @@
|
||||
<template v-else-if="page === 'authors'">
|
||||
<div class="flex-grow" />
|
||||
<ui-btn v-if="userCanUpdate && authors && authors.length && !isBatchSelecting" :loading="processingAuthors" color="primary" small @click="matchAllAuthors">{{ $strings.ButtonMatchAllAuthors }}</ui-btn>
|
||||
|
||||
<!-- author sort select -->
|
||||
<controls-sort-select v-if="authors && authors.length" v-model="settings.authorSortBy" :descending.sync="settings.authorSortDesc" :items="authorSortItems" class="w-36 sm:w-44 md:w-48 h-7.5 ml-1 sm:ml-4" @change="updateAuthorSort" />
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
@@ -183,6 +186,30 @@ export default {
|
||||
}
|
||||
]
|
||||
},
|
||||
authorSortItems() {
|
||||
return [
|
||||
{
|
||||
text: this.$strings.LabelAuthorFirstLast,
|
||||
value: 'name'
|
||||
},
|
||||
{
|
||||
text: this.$strings.LabelAuthorLastFirst,
|
||||
value: 'lastFirst'
|
||||
},
|
||||
{
|
||||
text: this.$strings.LabelNumberOfBooks,
|
||||
value: 'numBooks'
|
||||
},
|
||||
{
|
||||
text: this.$strings.LabelAddedAt,
|
||||
value: 'addedAt'
|
||||
},
|
||||
{
|
||||
text: this.$strings.LabelUpdatedAt,
|
||||
value: 'updatedAt'
|
||||
}
|
||||
]
|
||||
},
|
||||
userIsAdminOrUp() {
|
||||
return this.$store.getters['user/getIsAdminOrUp']
|
||||
},
|
||||
@@ -455,6 +482,9 @@ export default {
|
||||
updateCollapseBookSeries() {
|
||||
this.saveSettings()
|
||||
},
|
||||
updateAuthorSort() {
|
||||
this.saveSettings()
|
||||
},
|
||||
saveSettings() {
|
||||
this.$store.dispatch('user/updateUserSettings', this.settings)
|
||||
},
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div v-if="streamLibraryItem" id="streamContainer" class="w-full fixed bottom-0 left-0 right-0 h-48 md:h-40 z-50 bg-primary px-2 md:px-4 pb-1 md:pb-4 pt-2">
|
||||
<div v-if="streamLibraryItem" id="mediaPlayerContainer" class="w-full fixed bottom-0 left-0 right-0 h-48 md:h-40 z-50 bg-primary px-2 md:px-4 pb-1 md:pb-4 pt-2">
|
||||
<div id="videoDock" />
|
||||
<div class="absolute left-2 top-2 md:left-4 cursor-pointer">
|
||||
<covers-book-cover expand-on-click :library-item="streamLibraryItem" :width="bookCoverWidth" :book-cover-aspect-ratio="coverAspectRatio" />
|
||||
@@ -29,7 +29,7 @@
|
||||
</div>
|
||||
<div class="flex-grow" />
|
||||
<ui-tooltip direction="top" :text="$strings.LabelClosePlayer">
|
||||
<span class="material-icons sm:px-2 py-1 md:p-4 cursor-pointer text-xl sm:text-2xl" @click="closePlayer">close</span>
|
||||
<button :aria-label="$strings.LabelClosePlayer" class="material-icons sm:px-2 py-1 md:p-4 cursor-pointer text-xl sm:text-2xl" @click="closePlayer">close</button>
|
||||
</ui-tooltip>
|
||||
</div>
|
||||
<player-ui
|
||||
@@ -349,7 +349,7 @@ export default {
|
||||
}
|
||||
|
||||
if ('mediaSession' in navigator) {
|
||||
var coverImageSrc = this.$store.getters['globals/getLibraryItemCoverSrc'](this.streamLibraryItem, '/Logo.png')
|
||||
var coverImageSrc = this.$store.getters['globals/getLibraryItemCoverSrc'](this.streamLibraryItem, '/Logo.png', true)
|
||||
const artwork = [
|
||||
{
|
||||
src: coverImageSrc
|
||||
@@ -380,7 +380,7 @@ export default {
|
||||
if (this.playerHandler.isPlayingLocalItem && this.playerHandler.currentStreamId === data.stream) {
|
||||
if (!data.numSegments) return
|
||||
var chunks = data.chunks
|
||||
console.log(`[StreamContainer] Stream Progress ${data.percent}`)
|
||||
console.log(`[MediaPlayerContainer] Stream Progress ${data.percent}`)
|
||||
if (this.$refs.audioPlayer) {
|
||||
this.$refs.audioPlayer.setChunksReady(chunks, data.numSegments)
|
||||
} else {
|
||||
@@ -397,17 +397,17 @@ export default {
|
||||
this.playerHandler.prepareOpenSession(session, this.currentPlaybackRate)
|
||||
},
|
||||
streamOpen(session) {
|
||||
console.log(`[StreamContainer] Stream session open`, session)
|
||||
console.log(`[MediaPlayerContainer] Stream session open`, session)
|
||||
},
|
||||
streamClosed(streamId) {
|
||||
// Stream was closed from the server
|
||||
if (this.playerHandler.isPlayingLocalItem && this.playerHandler.currentStreamId === streamId) {
|
||||
console.warn('[StreamContainer] Closing stream due to request from server')
|
||||
console.warn('[MediaPlayerContainer] Closing stream due to request from server')
|
||||
this.playerHandler.closePlayer()
|
||||
}
|
||||
},
|
||||
streamReady() {
|
||||
console.log(`[StreamContainer] Stream Ready`)
|
||||
console.log(`[MediaPlayerContainer] Stream Ready`)
|
||||
if (this.$refs.audioPlayer) {
|
||||
this.$refs.audioPlayer.setStreamReady()
|
||||
} else {
|
||||
@@ -417,7 +417,7 @@ export default {
|
||||
streamError(streamId) {
|
||||
// Stream had critical error from the server
|
||||
if (this.playerHandler.isPlayingLocalItem && this.playerHandler.currentStreamId === streamId) {
|
||||
console.warn('[StreamContainer] Closing stream due to stream error from server')
|
||||
console.warn('[MediaPlayerContainer] Closing stream due to stream error from server')
|
||||
this.playerHandler.closePlayer()
|
||||
}
|
||||
},
|
||||
@@ -496,7 +496,7 @@ export default {
|
||||
</script>
|
||||
|
||||
<style>
|
||||
#streamContainer {
|
||||
#mediaPlayerContainer {
|
||||
box-shadow: 0px -6px 8px #1111113f;
|
||||
}
|
||||
</style>
|
||||
@@ -1,6 +1,7 @@
|
||||
<template>
|
||||
<div class="bg-bg rounded-md shadow-lg border border-white border-opacity-5 p-4 mb-8">
|
||||
<div class="flex items-center mb-2">
|
||||
<slot name="header-prefix"></slot>
|
||||
<h1 class="text-xl">{{ headerText }}</h1>
|
||||
|
||||
<slot name="header-items"></slot>
|
||||
|
||||
@@ -8,10 +8,10 @@
|
||||
<!-- Alternative bookshelf title/author/sort -->
|
||||
<div v-if="isAlternativeBookshelfView || isAuthorBookshelfView" class="absolute left-0 z-50 w-full" :style="{ bottom: `-${titleDisplayBottomOffset}rem` }">
|
||||
<div :style="{ fontSize: 0.9 * sizeMultiplier + 'rem' }">
|
||||
<div class="flex items-center">
|
||||
<span class="truncate">{{ displayTitle }}</span>
|
||||
<ui-tooltip v-if="displayTitle" :text="displayTitle" :disabled="!displayTitleTruncated" direction="bottom" :delayOnShow="500" class="flex items-center">
|
||||
<p ref="displayTitle" class="truncate">{{ displayTitle }}</p>
|
||||
<widgets-explicit-indicator :explicit="isExplicit" />
|
||||
</div>
|
||||
</ui-tooltip>
|
||||
</div>
|
||||
<p class="truncate text-gray-400" :style="{ fontSize: 0.8 * sizeMultiplier + 'rem' }">{{ displayLineTwo || ' ' }}</p>
|
||||
<p v-if="displaySortLine" class="truncate text-gray-400" :style="{ fontSize: 0.8 * sizeMultiplier + 'rem' }">{{ displaySortLine }}</p>
|
||||
@@ -164,6 +164,7 @@ export default {
|
||||
imageReady: false,
|
||||
selected: false,
|
||||
isSelectionMode: false,
|
||||
displayTitleTruncated: false,
|
||||
showCoverBg: false
|
||||
}
|
||||
},
|
||||
@@ -642,6 +643,12 @@ export default {
|
||||
}
|
||||
|
||||
this.libraryItem = libraryItem
|
||||
|
||||
this.$nextTick(() => {
|
||||
if (this.$refs.displayTitle) {
|
||||
this.displayTitleTruncated = this.$refs.displayTitle.scrollWidth > this.$refs.displayTitle.clientWidth
|
||||
}
|
||||
})
|
||||
},
|
||||
clickCard(e) {
|
||||
if (this.processing) return
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
<template>
|
||||
<div class="sm:w-80 w-full relative">
|
||||
<form @submit.prevent="submitSearch">
|
||||
<ui-text-input ref="input" v-model="search" :placeholder="$strings.PlaceholderSearch" @input="inputUpdate" @focus="focussed" @blur="blurred" class="w-full h-8 text-sm" />
|
||||
</form>
|
||||
<div class="absolute top-0 right-0 bottom-0 h-full flex items-center px-2 text-gray-400 cursor-pointer" @click="clickClear">
|
||||
<span v-if="!search" class="material-icons" style="font-size: 1.2rem">search</span>
|
||||
<span v-else class="material-icons" style="font-size: 1.2rem">close</span>
|
||||
<div class="">
|
||||
<div class="w-full relative sm:w-80">
|
||||
<form @submit.prevent="submitSearch">
|
||||
<ui-text-input ref="input" v-model="search" :placeholder="$strings.PlaceholderSearch" @input="inputUpdate" @focus="focussed" @blur="blurred" class="w-full h-8 text-sm" />
|
||||
</form>
|
||||
<div class="absolute top-0 right-0 bottom-0 h-full flex items-center px-2 text-gray-400 cursor-pointer" @click="clickClear">
|
||||
<span v-if="!search" class="material-icons" style="font-size: 1.2rem">search</span>
|
||||
<span v-else class="material-icons" style="font-size: 1.2rem">close</span>
|
||||
</div>
|
||||
</div>
|
||||
<div v-show="showMenu && (lastSearch || isTyping)" class="absolute z-40 -mt-px w-40 sm:w-full bg-bg border border-black-200 shadow-lg rounded-md py-1 px-2 text-base ring-1 ring-black ring-opacity-5 overflow-auto focus:outline-none sm:text-sm globalSearchMenu">
|
||||
<div v-show="showMenu && (lastSearch || isTyping)" class="absolute z-40 -mt-px w-full max-w-64 sm:max-w-80 sm:w-80 bg-bg border border-black-200 shadow-lg rounded-md py-1 px-2 text-base ring-1 ring-black ring-opacity-5 overflow-auto focus:outline-none sm:text-sm globalSearchMenu">
|
||||
<ul class="h-full w-full" role="listbox" aria-labelledby="listbox-label">
|
||||
<li v-if="isTyping" class="py-2 px-2">
|
||||
<p>{{ $strings.MessageThinking }}</p>
|
||||
|
||||
@@ -368,9 +368,17 @@ export default {
|
||||
id: 'ebook',
|
||||
name: this.$strings.LabelHasEbook
|
||||
},
|
||||
{
|
||||
id: 'no-ebook',
|
||||
name: this.$strings.LabelMissingEbook
|
||||
},
|
||||
{
|
||||
id: 'supplementary',
|
||||
name: this.$strings.LabelHasSupplementaryEbook
|
||||
},
|
||||
{
|
||||
id: 'no-supplementary',
|
||||
name: this.$strings.LabelMissingSupplementaryEbook
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<template>
|
||||
<div class="relative" v-click-outside="clickOutside" @mouseover="mouseover" @mouseleave="mouseleave">
|
||||
<div class="cursor-pointer text-gray-300 hover:text-white" @mousedown.prevent @mouseup.prevent @click="clickVolumeIcon">
|
||||
<button :aria-label="$strings.LabelVolume" class="text-gray-300 hover:text-white" @mousedown.prevent @mouseup.prevent @click="clickVolumeIcon">
|
||||
<span class="material-icons text-2xl sm:text-3xl">{{ volumeIcon }}</span>
|
||||
</div>
|
||||
</button>
|
||||
<transition name="menux">
|
||||
<div v-show="isOpen" class="volumeMenu h-6 absolute bottom-2 w-28 px-2 bg-bg shadow-sm rounded-lg" style="left: -116px">
|
||||
<div ref="volumeTrack" class="h-1 w-full bg-gray-500 my-2.5 relative cursor-pointer rounded-full" @mousedown="mousedownTrack" @click="clickVolumeTrack">
|
||||
@@ -38,8 +38,8 @@ export default {
|
||||
},
|
||||
set(val) {
|
||||
try {
|
||||
localStorage.setItem("volume", val);
|
||||
} catch(error) {
|
||||
localStorage.setItem('volume', val)
|
||||
} catch (error) {
|
||||
console.error('Failed to store volume', err)
|
||||
}
|
||||
this.$emit('input', val)
|
||||
@@ -146,7 +146,7 @@ export default {
|
||||
if (this.value === 0) {
|
||||
this.isMute = true
|
||||
}
|
||||
const storageVolume = localStorage.getItem("volume")
|
||||
const storageVolume = localStorage.getItem('volume')
|
||||
if (storageVolume) {
|
||||
this.volume = parseFloat(storageVolume)
|
||||
}
|
||||
|
||||
@@ -111,7 +111,8 @@
|
||||
</div>
|
||||
|
||||
<div class="flex pt-4 px-2">
|
||||
<ui-btn v-if="isEditingRoot" to="/account">{{ $strings.ButtonChangeRootPassword }}</ui-btn>
|
||||
<ui-btn v-if="hasOpenIDLink" small :loading="unlinkingFromOpenID" color="primary" type="button" class="mr-2" @click.stop="unlinkOpenID">Unlink OpenID</ui-btn>
|
||||
<ui-btn v-if="isEditingRoot" small class="flex items-center" to="/account">{{ $strings.ButtonChangeRootPassword }}</ui-btn>
|
||||
<div class="flex-grow" />
|
||||
<ui-btn color="success" type="submit">{{ $strings.ButtonSubmit }}</ui-btn>
|
||||
</div>
|
||||
@@ -136,7 +137,8 @@ export default {
|
||||
newUser: {},
|
||||
isNew: true,
|
||||
tags: [],
|
||||
loadingTags: false
|
||||
loadingTags: false,
|
||||
unlinkingFromOpenID: false
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
@@ -180,7 +182,7 @@ export default {
|
||||
return this.isNew ? this.$strings.HeaderNewAccount : this.$strings.HeaderUpdateAccount
|
||||
},
|
||||
isEditingRoot() {
|
||||
return this.account && this.account.type === 'root'
|
||||
return this.account?.type === 'root'
|
||||
},
|
||||
libraries() {
|
||||
return this.$store.state.libraries.libraries
|
||||
@@ -198,6 +200,9 @@ export default {
|
||||
},
|
||||
tagsSelectionText() {
|
||||
return this.newUser.permissions.selectedTagsNotAccessible ? this.$strings.LabelTagsNotAccessibleToUser : this.$strings.LabelTagsAccessibleToUser
|
||||
},
|
||||
hasOpenIDLink() {
|
||||
return !!this.account?.hasOpenIDLink
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
@@ -205,6 +210,31 @@ export default {
|
||||
// Force close when navigating - used in UsersTable
|
||||
if (this.$refs.modal) this.$refs.modal.setHide()
|
||||
},
|
||||
unlinkOpenID() {
|
||||
const payload = {
|
||||
message: 'Are you sure you want to unlink this user from OpenID?',
|
||||
callback: (confirmed) => {
|
||||
if (confirmed) {
|
||||
this.unlinkingFromOpenID = true
|
||||
this.$axios
|
||||
.$patch(`/api/users/${this.account.id}/openid-unlink`)
|
||||
.then(() => {
|
||||
this.$toast.success('User unlinked from OpenID')
|
||||
this.show = false
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error('Failed to unlink user from OpenID', error)
|
||||
this.$toast.error('Failed to unlink user from OpenID')
|
||||
})
|
||||
.finally(() => {
|
||||
this.unlinkingFromOpenID = false
|
||||
})
|
||||
}
|
||||
},
|
||||
type: 'yesNo'
|
||||
}
|
||||
this.$store.commit('globals/setConfirmPrompt', payload)
|
||||
},
|
||||
accessAllTagsToggled(val) {
|
||||
if (val) {
|
||||
if (this.newUser.itemTagsSelected?.length) {
|
||||
|
||||
105
client/components/modals/AddCustomMetadataProviderModal.vue
Normal file
105
client/components/modals/AddCustomMetadataProviderModal.vue
Normal file
@@ -0,0 +1,105 @@
|
||||
<template>
|
||||
<modals-modal ref="modal" v-model="show" name="custom-metadata-provider" :width="600" :height="'unset'" :processing="processing">
|
||||
<template #outer>
|
||||
<div class="absolute top-0 left-0 p-5 w-2/3 overflow-hidden">
|
||||
<p class="text-3xl text-white truncate">Add custom metadata provider</p>
|
||||
</div>
|
||||
</template>
|
||||
<form @submit.prevent="submitForm">
|
||||
<div class="px-4 w-full flex items-center text-sm py-6 rounded-lg bg-bg shadow-lg border border-black-300 overflow-y-auto overflow-x-hidden" style="min-height: 400px; max-height: 80vh">
|
||||
<div class="w-full p-8">
|
||||
<div class="flex mb-2">
|
||||
<div class="w-3/4 p-1">
|
||||
<ui-text-input-with-label v-model="newName" :label="$strings.LabelName" />
|
||||
</div>
|
||||
<div class="w-1/4 p-1">
|
||||
<ui-text-input-with-label value="Book" readonly :label="$strings.LabelMediaType" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="w-full mb-2 p-1">
|
||||
<ui-text-input-with-label v-model="newUrl" label="URL" />
|
||||
</div>
|
||||
<div class="w-full mb-2 p-1">
|
||||
<ui-text-input-with-label v-model="newAuthHeaderValue" :label="'Authorization Header Value'" type="password" />
|
||||
</div>
|
||||
<div class="flex px-1 pt-4">
|
||||
<div class="flex-grow" />
|
||||
<ui-btn color="success" type="submit">{{ $strings.ButtonAdd }}</ui-btn>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</modals-modal>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
value: Boolean
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
processing: false,
|
||||
newName: '',
|
||||
newUrl: '',
|
||||
newAuthHeaderValue: ''
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
show: {
|
||||
handler(newVal) {
|
||||
if (newVal) {
|
||||
this.init()
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
show: {
|
||||
get() {
|
||||
return this.value
|
||||
},
|
||||
set(val) {
|
||||
this.$emit('input', val)
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
submitForm() {
|
||||
if (!this.newName || !this.newUrl) {
|
||||
this.$toast.error('Must add name and url')
|
||||
return
|
||||
}
|
||||
|
||||
this.processing = true
|
||||
this.$axios
|
||||
.$post('/api/custom-metadata-providers', {
|
||||
name: this.newName,
|
||||
url: this.newUrl,
|
||||
mediaType: 'book', // Currently only supporting book mediaType
|
||||
authHeaderValue: this.newAuthHeaderValue
|
||||
})
|
||||
.then((data) => {
|
||||
this.$emit('added', data.provider)
|
||||
this.$toast.success('New provider added')
|
||||
this.show = false
|
||||
})
|
||||
.catch((error) => {
|
||||
const errorMsg = error.response?.data || 'Unknown error'
|
||||
console.error('Failed to add provider', error)
|
||||
this.$toast.error('Failed to add provider: ' + errorMsg)
|
||||
})
|
||||
.finally(() => {
|
||||
this.processing = false
|
||||
})
|
||||
},
|
||||
init() {
|
||||
this.processing = false
|
||||
this.newName = ''
|
||||
this.newUrl = ''
|
||||
this.newAuthHeaderValue = ''
|
||||
}
|
||||
},
|
||||
mounted() {}
|
||||
}
|
||||
</script>
|
||||
@@ -34,11 +34,6 @@ export default {
|
||||
data() {
|
||||
return {}
|
||||
},
|
||||
watch: {
|
||||
value(newVal) {
|
||||
this.$nextTick(this.scrollToChapter)
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
show: {
|
||||
get() {
|
||||
@@ -53,7 +48,7 @@ export default {
|
||||
return this.playbackRate
|
||||
},
|
||||
currentChapterId() {
|
||||
return this.currentChapter ? this.currentChapter.id : null
|
||||
return this.currentChapter?.id || null
|
||||
},
|
||||
currentChapterStart() {
|
||||
return (this.currentChapter?.start || 0) / this._playbackRate
|
||||
@@ -74,6 +69,11 @@ export default {
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
updated() {
|
||||
if (this.value) {
|
||||
this.$nextTick(this.scrollToChapter)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -49,8 +49,8 @@
|
||||
</div>
|
||||
<div v-if="media.coverPath">
|
||||
<p class="text-center text-gray-200">Current</p>
|
||||
<a :href="$store.getters['globals/getLibraryItemCoverSrcById'](libraryItemId, null, true)" target="_blank" class="bg-primary">
|
||||
<covers-preview-cover :src="$store.getters['globals/getLibraryItemCoverSrcById'](libraryItemId, null, true)" :width="100" :book-cover-aspect-ratio="bookCoverAspectRatio" />
|
||||
<a :href="$store.getters['globals/getLibraryItemCoverSrc'](libraryItem, null, true)" target="_blank" class="bg-primary">
|
||||
<covers-preview-cover :src="$store.getters['globals/getLibraryItemCoverSrc'](libraryItem, null, true)" :width="100" :book-cover-aspect-ratio="bookCoverAspectRatio" />
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -328,6 +328,17 @@ export default {
|
||||
console.error('PersistProvider', error)
|
||||
}
|
||||
},
|
||||
getDefaultBookProvider() {
|
||||
let provider = localStorage.getItem('book-provider')
|
||||
if (!provider) return 'google'
|
||||
// Validate book provider
|
||||
if (!this.$store.getters['scanners/checkBookProviderExists'](provider)) {
|
||||
console.error('Stored book provider does not exist', provider)
|
||||
localStorage.removeItem('book-provider')
|
||||
return 'google'
|
||||
}
|
||||
return provider
|
||||
},
|
||||
getSearchQuery() {
|
||||
if (this.isPodcast) return `term=${encodeURIComponent(this.searchTitle)}`
|
||||
var searchQuery = `provider=${this.provider}&fallbackTitleOnly=1&title=${encodeURIComponent(this.searchTitle)}`
|
||||
@@ -434,7 +445,9 @@ export default {
|
||||
this.searchTitle = this.libraryItem.media.metadata.title
|
||||
this.searchAuthor = this.libraryItem.media.metadata.authorName || ''
|
||||
if (this.isPodcast) this.provider = 'itunes'
|
||||
else this.provider = localStorage.getItem('book-provider') || 'google'
|
||||
else {
|
||||
this.provider = this.getDefaultBookProvider()
|
||||
}
|
||||
|
||||
// Prefer using ASIN if set and using audible provider
|
||||
if (this.provider.startsWith('audible') && this.libraryItem.media.metadata.asin) {
|
||||
@@ -533,24 +546,11 @@ export default {
|
||||
// Persist in local storage
|
||||
localStorage.setItem('selectedMatchUsage', JSON.stringify(this.selectedMatchUsage))
|
||||
|
||||
if (updatePayload.metadata.cover) {
|
||||
const coverPayload = {
|
||||
url: updatePayload.metadata.cover
|
||||
}
|
||||
const success = await this.$axios.$post(`/api/items/${this.libraryItemId}/cover`, coverPayload).catch((error) => {
|
||||
console.error('Failed to update', error)
|
||||
return false
|
||||
})
|
||||
if (success) {
|
||||
this.$toast.success(this.$strings.ToastItemCoverUpdateSuccess)
|
||||
} else {
|
||||
this.$toast.error(this.$strings.ToastItemCoverUpdateFailed)
|
||||
}
|
||||
console.log('Updated cover')
|
||||
delete updatePayload.metadata.cover
|
||||
}
|
||||
|
||||
if (Object.keys(updatePayload).length) {
|
||||
if (updatePayload.metadata.cover) {
|
||||
updatePayload.url = updatePayload.metadata.cover
|
||||
delete updatePayload.metadata.cover
|
||||
}
|
||||
const mediaUpdatePayload = updatePayload
|
||||
const updateResult = await this.$axios.$patch(`/api/items/${this.libraryItemId}/media`, mediaUpdatePayload).catch((error) => {
|
||||
console.error('Failed to update', error)
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
</ui-tooltip>
|
||||
</div>
|
||||
<div v-if="enableAutoDownloadEpisodes" class="flex items-center py-2">
|
||||
<ui-text-input ref="maxEpisodesInput" type="number" v-model="newMaxNewEpisodesToDownload" no-spinner :padding-x="1" text-center class="w-10 text-base" @change="updateMaxNewEpisodesToDownload" />
|
||||
<ui-text-input ref="maxEpisodesToDownloadInput" type="number" v-model="newMaxNewEpisodesToDownload" no-spinner :padding-x="1" text-center class="w-10 text-base" @change="updateMaxNewEpisodesToDownload" />
|
||||
<ui-tooltip text="Value of 0 sets no max limit. When checking for new episodes this is the max number of episodes that will be downloaded.">
|
||||
<p class="pl-4 text-base">
|
||||
Max new episodes to download per check
|
||||
@@ -129,9 +129,12 @@ export default {
|
||||
return
|
||||
}
|
||||
}
|
||||
if (this.$refs.maxEpisodesInput && this.$refs.maxEpisodesInput.isFocused) {
|
||||
|
||||
if (this.$refs.maxEpisodesInput?.isFocused) {
|
||||
this.$refs.maxEpisodesInput.blur()
|
||||
return
|
||||
}
|
||||
if (this.$refs.maxEpisodesToDownloadInput?.isFocused) {
|
||||
this.$refs.maxEpisodesToDownloadInput.blur()
|
||||
}
|
||||
|
||||
const updatePayload = {
|
||||
@@ -140,9 +143,11 @@ export default {
|
||||
if (this.enableAutoDownloadEpisodes) {
|
||||
updatePayload.autoDownloadSchedule = this.cronExpression
|
||||
}
|
||||
this.newMaxEpisodesToKeep = Number(this.newMaxEpisodesToKeep)
|
||||
if (this.newMaxEpisodesToKeep !== this.maxEpisodesToKeep) {
|
||||
updatePayload.maxEpisodesToKeep = this.newMaxEpisodesToKeep
|
||||
}
|
||||
this.newMaxNewEpisodesToDownload = Number(this.newMaxNewEpisodesToDownload)
|
||||
if (this.newMaxNewEpisodesToDownload !== this.maxNewEpisodesToDownload) {
|
||||
updatePayload.maxNewEpisodesToDownload = this.newMaxNewEpisodesToDownload
|
||||
}
|
||||
|
||||
@@ -2,8 +2,11 @@
|
||||
<div class="w-full h-full overflow-hidden overflow-y-auto px-4 py-6">
|
||||
<p class="text-xl font-semibold mb-2">{{ $strings.HeaderAudiobookTools }}</p>
|
||||
|
||||
<!-- alert for windows install -->
|
||||
<widgets-alert v-if="isWindowsInstall" type="warning" class="my-8 text-base">Not supported for the Windows install yet</widgets-alert>
|
||||
|
||||
<!-- Merge to m4b -->
|
||||
<div v-if="showM4bDownload" class="w-full border border-black-200 p-4 my-8">
|
||||
<div v-if="showM4bDownload && !isWindowsInstall" class="w-full border border-black-200 p-4 my-8">
|
||||
<div class="flex flex-wrap items-center">
|
||||
<div>
|
||||
<p class="text-lg">{{ $strings.LabelToolsMakeM4b }}</p>
|
||||
@@ -19,22 +22,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Split to mp3 -->
|
||||
<!-- <div v-if="showMp3Split" class="w-full border border-black-200 p-4 my-8">
|
||||
<div class="flex items-center">
|
||||
<div>
|
||||
<p class="text-lg">{{ $strings.LabelToolsSplitM4b }}</p>
|
||||
<p class="max-w-sm text-sm pt-2 text-gray-300">{{ $strings.LabelToolsSplitM4bDescription }}</p>
|
||||
</div>
|
||||
<div class="flex-grow" />
|
||||
<div>
|
||||
<ui-btn :disabled="true">{{ $strings.MessageNotYetImplemented }}</ui-btn>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
<!-- Embed Metadata -->
|
||||
<div v-if="mediaTracks.length" class="w-full border border-black-200 p-4 my-8">
|
||||
<div v-if="mediaTracks.length && !isWindowsInstall" class="w-full border border-black-200 p-4 my-8">
|
||||
<div class="flex items-center">
|
||||
<div>
|
||||
<p class="text-lg">{{ $strings.LabelToolsEmbedMetadata }}</p>
|
||||
@@ -122,6 +111,12 @@ export default {
|
||||
},
|
||||
isEncodeTaskRunning() {
|
||||
return this.encodeTask && !this.encodeTask?.isFinished
|
||||
},
|
||||
isWindowsInstall() {
|
||||
return this.Source == 'windows'
|
||||
},
|
||||
Source() {
|
||||
return this.$store.state.Source
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
<ui-btn class="w-full mt-2" color="primary" @click="browseForFolder">{{ $strings.ButtonBrowseForFolder }}</ui-btn>
|
||||
</div>
|
||||
</div>
|
||||
<modals-libraries-folder-chooser v-else :paths="folderPaths" @back="showDirectoryPicker = false" @select="selectFolder" />
|
||||
<modals-libraries-lazy-folder-chooser v-else :paths="folderPaths" @back="showDirectoryPicker = false" @select="selectFolder" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -127,6 +127,7 @@ export default {
|
||||
skipMatchingMediaWithIsbn: false,
|
||||
autoScanCronExpression: null,
|
||||
hideSingleBookSeries: false,
|
||||
onlyShowLaterBooksInContinueSeries: false,
|
||||
metadataPrecedence: ['folderStructure', 'audioMetatags', 'nfoFile', 'txtFiles', 'opfFile', 'absMetadata']
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,35 +4,37 @@
|
||||
<span class="material-icons text-3xl cursor-pointer hover:text-gray-300" @click="$emit('back')">arrow_back</span>
|
||||
<p class="px-4 text-xl">{{ $strings.HeaderChooseAFolder }}</p>
|
||||
</div>
|
||||
<div v-if="allFolders.length" class="w-full bg-primary bg-opacity-70 py-1 px-4 mb-2">
|
||||
<p class="font-mono truncate">{{ selectedPath || '\\' }}</p>
|
||||
<div v-if="rootDirs.length" class="w-full bg-primary bg-opacity-70 py-1 px-4 mb-2">
|
||||
<p class="font-mono truncate">{{ selectedPath || '/' }}</p>
|
||||
</div>
|
||||
<div v-if="allFolders.length" class="flex bg-primary bg-opacity-50 p-4 folder-container">
|
||||
<div v-if="rootDirs.length" class="relative flex bg-primary bg-opacity-50 p-4 folder-container">
|
||||
<div class="w-1/2 border-r border-bg h-full overflow-y-auto">
|
||||
<div v-if="level > 0" class="w-full p-1 cursor-pointer flex items-center" @click="goBack">
|
||||
<div v-if="level > 0" class="w-full p-1 cursor-pointer flex items-center hover:bg-white/10" @click="goBack">
|
||||
<span class="material-icons bg-opacity-50 text-yellow-200" style="font-size: 1.2rem">folder</span>
|
||||
<p class="text-base font-mono px-2">..</p>
|
||||
</div>
|
||||
<div v-for="dir in _directories" :key="dir.path" class="dir-item w-full p-1 cursor-pointer flex items-center hover:text-white text-gray-200" :class="dir.className" @click="selectDir(dir)">
|
||||
<div v-for="dir in _directories" :key="dir.path" class="dir-item w-full p-1 cursor-pointer flex items-center hover:text-white text-gray-200 hover:bg-white/10" :class="dir.className" @click="selectDir(dir)">
|
||||
<span class="material-icons bg-opacity-50 text-yellow-200" style="font-size: 1.2rem">folder</span>
|
||||
<p class="text-base font-mono px-2 truncate">{{ dir.dirname }}</p>
|
||||
<span v-if="dir.dirs && dir.dirs.length && dir.path === selectedPath" class="material-icons" style="font-size: 1.1rem">arrow_right</span>
|
||||
<span v-if="dir.path === selectedPath" class="material-icons" style="font-size: 1.1rem">arrow_right</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="w-1/2 h-full overflow-y-auto">
|
||||
<div v-for="dir in _subdirs" :key="dir.path" :class="dir.className" class="dir-item w-full p-1 cursor-pointer flex items-center hover:text-white text-gray-200" @click="selectSubDir(dir)">
|
||||
<div v-for="dir in _subdirs" :key="dir.path" :class="dir.className" class="dir-item w-full p-1 cursor-pointer flex items-center hover:text-white text-gray-200 hover:bg-white/10" @click="selectSubDir(dir)">
|
||||
<span class="material-icons bg-opacity-50 text-yellow-200" style="font-size: 1.2rem">folder</span>
|
||||
<p class="text-base font-mono px-2 truncate">{{ dir.dirname }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="loadingDirs" class="absolute inset-0 w-full h-full flex items-center justify-center bg-black/10">
|
||||
<ui-loading-indicator />
|
||||
</div>
|
||||
</div>
|
||||
<div v-else-if="loadingFolders" class="py-12 text-center">
|
||||
<div v-else-if="initialLoad" class="py-12 text-center">
|
||||
<p>{{ $strings.MessageLoadingFolders }}</p>
|
||||
</div>
|
||||
<div v-else class="py-12 text-center max-w-sm mx-auto">
|
||||
<p class="text-lg mb-2">{{ $strings.MessageNoFoldersAvailable }}</p>
|
||||
<p class="text-gray-300 mb-2">{{ $strings.NoteFolderPicker }}</p>
|
||||
<p v-if="isDebian" class="text-red-400">{{ $strings.NoteFolderPickerDebian }}</p>
|
||||
</div>
|
||||
|
||||
<div class="w-full py-2">
|
||||
@@ -51,11 +53,12 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loadingFolders: false,
|
||||
allFolders: [],
|
||||
initialLoad: false,
|
||||
loadingDirs: false,
|
||||
isPosix: true,
|
||||
rootDirs: [],
|
||||
directories: [],
|
||||
selectedPath: '',
|
||||
selectedFullPath: '',
|
||||
subdirs: [],
|
||||
level: 0,
|
||||
currentDir: null,
|
||||
@@ -89,68 +92,91 @@ export default {
|
||||
...d
|
||||
}
|
||||
})
|
||||
},
|
||||
isDebian() {
|
||||
return this.Source == 'debian'
|
||||
},
|
||||
Source() {
|
||||
return this.$store.state.Source
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
goBack() {
|
||||
var splitPaths = this.selectedPath.split('\\').slice(1)
|
||||
var prev = splitPaths.slice(0, -1).join('\\')
|
||||
async goBack() {
|
||||
let selPath = this.selectedPath.replace(/^\//, '')
|
||||
var splitPaths = selPath.split('/')
|
||||
|
||||
var currDirs = this.allFolders
|
||||
for (let i = 0; i < splitPaths.length; i++) {
|
||||
var _dir = currDirs.find((dir) => dir.dirname === splitPaths[i])
|
||||
if (_dir && _dir.path.slice(1) === prev) {
|
||||
this.directories = currDirs
|
||||
this.selectDir(_dir)
|
||||
return
|
||||
} else if (_dir) {
|
||||
currDirs = _dir.dirs
|
||||
}
|
||||
let previousPath = ''
|
||||
let lookupPath = ''
|
||||
|
||||
if (splitPaths.length > 2) {
|
||||
lookupPath = splitPaths.slice(0, -2).join('/')
|
||||
}
|
||||
previousPath = splitPaths.slice(0, -1).join('/')
|
||||
|
||||
if (!this.isPosix) {
|
||||
// For windows drives add a trailing slash. e.g. C:/
|
||||
if (!this.isPosix && lookupPath.endsWith(':')) {
|
||||
lookupPath += '/'
|
||||
}
|
||||
if (!this.isPosix && previousPath.endsWith(':')) {
|
||||
previousPath += '/'
|
||||
}
|
||||
} else {
|
||||
// Add leading slash
|
||||
if (previousPath) previousPath = '/' + previousPath
|
||||
if (lookupPath) lookupPath = '/' + lookupPath
|
||||
}
|
||||
|
||||
this.level--
|
||||
this.subdirs = this.directories
|
||||
this.selectedPath = previousPath
|
||||
this.directories = await this.fetchDirs(lookupPath, this.level)
|
||||
},
|
||||
selectDir(dir) {
|
||||
async selectDir(dir) {
|
||||
if (dir.isUsed) return
|
||||
this.selectedPath = dir.path
|
||||
this.selectedFullPath = dir.fullPath
|
||||
this.level = dir.level
|
||||
this.subdirs = dir.dirs
|
||||
this.subdirs = await this.fetchDirs(dir.path, dir.level + 1)
|
||||
},
|
||||
selectSubDir(dir) {
|
||||
async selectSubDir(dir) {
|
||||
if (dir.isUsed) return
|
||||
this.selectedPath = dir.path
|
||||
this.selectedFullPath = dir.fullPath
|
||||
this.level = dir.level
|
||||
this.directories = this.subdirs
|
||||
this.subdirs = dir.dirs
|
||||
this.subdirs = await this.fetchDirs(dir.path, dir.level + 1)
|
||||
},
|
||||
selectFolder() {
|
||||
if (!this.selectedPath) {
|
||||
console.error('No Selected path')
|
||||
return
|
||||
}
|
||||
if (this.paths.find((p) => p.startsWith(this.selectedFullPath))) {
|
||||
if (this.paths.find((p) => p.startsWith(this.selectedPath))) {
|
||||
this.$toast.error(`Oops, you cannot add a parent directory of a folder already added`)
|
||||
return
|
||||
}
|
||||
this.$emit('select', this.selectedFullPath)
|
||||
this.$emit('select', this.selectedPath)
|
||||
this.selectedPath = ''
|
||||
this.selectedFullPath = ''
|
||||
},
|
||||
fetchDirs(path, level) {
|
||||
this.loadingDirs = true
|
||||
return this.$axios
|
||||
.$get(`/api/filesystem?path=${path}&level=${level}`)
|
||||
.then((data) => {
|
||||
console.log('Fetched directories', data.directories)
|
||||
this.isPosix = !!data.posix
|
||||
return data.directories
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error('Failed to get filesystem paths', error)
|
||||
this.$toast.error('Failed to get filesystem paths')
|
||||
return []
|
||||
})
|
||||
.finally(() => {
|
||||
this.loadingDirs = false
|
||||
})
|
||||
},
|
||||
async init() {
|
||||
this.loadingFolders = true
|
||||
this.allFolders = await this.$store.dispatch('libraries/loadFolders')
|
||||
this.loadingFolders = false
|
||||
this.initialLoad = true
|
||||
this.rootDirs = await this.fetchDirs('', 0)
|
||||
this.initialLoad = false
|
||||
|
||||
this.directories = this.allFolders
|
||||
this.directories = this.rootDirs
|
||||
this.subdirs = []
|
||||
this.selectedPath = ''
|
||||
this.selectedFullPath = ''
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
@@ -63,7 +63,7 @@ export default {
|
||||
},
|
||||
audioMetatags: {
|
||||
id: 'audioMetatags',
|
||||
name: 'Audio file meta tags',
|
||||
name: 'Audio file meta tags OR ebook metadata',
|
||||
include: true
|
||||
},
|
||||
nfoFile: {
|
||||
|
||||
@@ -49,6 +49,20 @@
|
||||
</ui-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="isBookLibrary" class="py-3">
|
||||
<div class="flex items-center">
|
||||
<ui-toggle-switch v-model="onlyShowLaterBooksInContinueSeries" @input="formUpdated" />
|
||||
<ui-tooltip :text="$strings.LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp">
|
||||
<p class="pl-4 text-base">
|
||||
{{ $strings.LabelSettingsOnlyShowLaterBooksInContinueSeries }}
|
||||
<span class="material-icons icon-text text-sm">info_outlined</span>
|
||||
</p>
|
||||
</ui-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="isPodcastLibrary" class="py-3">
|
||||
<ui-dropdown :label="$strings.LabelPodcastSearchRegion" v-model="podcastSearchRegion" :items="$podcastSearchRegionOptions" small class="max-w-52" @input="formUpdated" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -69,7 +83,9 @@ export default {
|
||||
skipMatchingMediaWithAsin: false,
|
||||
skipMatchingMediaWithIsbn: false,
|
||||
audiobooksOnly: false,
|
||||
hideSingleBookSeries: false
|
||||
hideSingleBookSeries: false,
|
||||
onlyShowLaterBooksInContinueSeries: false,
|
||||
podcastSearchRegion: 'us'
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
@@ -85,6 +101,9 @@ export default {
|
||||
isBookLibrary() {
|
||||
return this.mediaType === 'book'
|
||||
},
|
||||
isPodcastLibrary() {
|
||||
return this.mediaType === 'podcast'
|
||||
},
|
||||
providers() {
|
||||
if (this.mediaType === 'podcast') return this.$store.state.scanners.podcastProviders
|
||||
return this.$store.state.scanners.providers
|
||||
@@ -99,7 +118,9 @@ export default {
|
||||
skipMatchingMediaWithAsin: !!this.skipMatchingMediaWithAsin,
|
||||
skipMatchingMediaWithIsbn: !!this.skipMatchingMediaWithIsbn,
|
||||
audiobooksOnly: !!this.audiobooksOnly,
|
||||
hideSingleBookSeries: !!this.hideSingleBookSeries
|
||||
hideSingleBookSeries: !!this.hideSingleBookSeries,
|
||||
onlyShowLaterBooksInContinueSeries: !!this.onlyShowLaterBooksInContinueSeries,
|
||||
podcastSearchRegion: this.podcastSearchRegion
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -113,6 +134,8 @@ export default {
|
||||
this.skipMatchingMediaWithIsbn = !!this.librarySettings.skipMatchingMediaWithIsbn
|
||||
this.audiobooksOnly = !!this.librarySettings.audiobooksOnly
|
||||
this.hideSingleBookSeries = !!this.librarySettings.hideSingleBookSeries
|
||||
this.onlyShowLaterBooksInContinueSeries = !!this.librarySettings.onlyShowLaterBooksInContinueSeries
|
||||
this.podcastSearchRegion = this.librarySettings.podcastSearchRegion || 'us'
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
<div class="break-words">{{ episode.title }}</div>
|
||||
<widgets-podcast-type-indicator :type="episode.episodeType" />
|
||||
</div>
|
||||
<p v-if="episode.subtitle" class="break-words mb-1 text-sm text-gray-300 episode-subtitle">{{ episode.subtitle }}</p>
|
||||
<p v-if="episode.subtitle" class="mb-1 text-sm text-gray-300 line-clamp-2">{{ episode.subtitle }}</p>
|
||||
<p class="text-xs text-gray-300">Published {{ episode.publishedAt ? $dateDistanceFromNow(episode.publishedAt) : 'Unknown' }}</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -68,7 +68,9 @@ export default {
|
||||
selectAll: false,
|
||||
search: null,
|
||||
searchTimeout: null,
|
||||
searchText: null
|
||||
searchText: null,
|
||||
downloadedEpisodeGuidMap: {},
|
||||
downloadedEpisodeUrlMap: {}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
@@ -122,11 +124,13 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
getIsEpisodeDownloaded(episode) {
|
||||
return this.itemEpisodes.some((downloadedEpisode) => {
|
||||
if (episode.guid && downloadedEpisode.guid === episode.guid) return true
|
||||
if (!downloadedEpisode.enclosure?.url) return false
|
||||
return this.getCleanEpisodeUrl(downloadedEpisode.enclosure.url) === episode.cleanUrl
|
||||
})
|
||||
if (episode.guid && !!this.downloadedEpisodeGuidMap[episode.guid]) {
|
||||
return true
|
||||
}
|
||||
if (this.downloadedEpisodeUrlMap[episode.cleanUrl]) {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
},
|
||||
/**
|
||||
* UPDATE: As of v2.4.5 guid is used for matching existing downloaded episodes if it is found on the RSS feed.
|
||||
@@ -219,6 +223,14 @@ export default {
|
||||
})
|
||||
},
|
||||
init() {
|
||||
this.downloadedEpisodeGuidMap = {}
|
||||
this.downloadedEpisodeUrlMap = {}
|
||||
|
||||
this.itemEpisodes.forEach((episode) => {
|
||||
if (episode.guid) this.downloadedEpisodeGuidMap[episode.guid] = episode.id
|
||||
if (episode.enclosure?.url) this.downloadedEpisodeUrlMap[this.getCleanEpisodeUrl(episode.enclosure.url)] = episode.id
|
||||
})
|
||||
|
||||
this.episodesCleaned = this.episodes
|
||||
.filter((ep) => ep.enclosure?.url)
|
||||
.map((_ep) => {
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
<div class="w-full p-1">
|
||||
<ui-textarea-with-label v-model="newEpisode.subtitle" :label="$strings.LabelSubtitle" :rows="3" />
|
||||
</div>
|
||||
<div class="w-full p-1 default-style">
|
||||
<div class="w-full p-1">
|
||||
<ui-rich-text-editor :label="$strings.LabelDescription" v-model="newEpisode.description" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
<div v-for="(episode, index) in episodesFound" :key="index" class="w-full py-4 border-b border-white border-opacity-5 hover:bg-gray-300 hover:bg-opacity-10 cursor-pointer px-2" @click.stop="selectEpisode(episode)">
|
||||
<p v-if="episode.episode" class="font-semibold text-gray-200">#{{ episode.episode }}</p>
|
||||
<p class="break-words mb-1">{{ episode.title }}</p>
|
||||
<p v-if="episode.subtitle" class="break-words mb-1 text-sm text-gray-300 episode-subtitle">{{ episode.subtitle }}</p>
|
||||
<p v-if="episode.subtitle" class="mb-1 text-sm text-gray-300 line-clamp-2">{{ episode.subtitle }}</p>
|
||||
<p class="text-xs text-gray-400">Published {{ episode.publishedAt ? $dateDistanceFromNow(episode.publishedAt) : 'Unknown' }}</p>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -2,21 +2,21 @@
|
||||
<div class="flex pt-4 pb-2 md:pt-0 md:pb-2">
|
||||
<div class="flex-grow" />
|
||||
<template v-if="!loading">
|
||||
<div class="cursor-pointer flex items-center justify-center text-gray-300 mr-4 md:mr-8" @mousedown.prevent @mouseup.prevent @click.stop="prevChapter">
|
||||
<button :aria-label="$strings.ButtonPreviousChapter" class="flex items-center justify-center text-gray-300 mr-4 md:mr-8" @mousedown.prevent @mouseup.prevent @click.stop="prevChapter">
|
||||
<span class="material-icons text-2xl sm:text-3xl">first_page</span>
|
||||
</div>
|
||||
<div class="cursor-pointer flex items-center justify-center text-gray-300" @mousedown.prevent @mouseup.prevent @click.stop="jumpBackward">
|
||||
</button>
|
||||
<button :aria-label="$strings.ButtonJumpBackward" class="flex items-center justify-center text-gray-300" @mousedown.prevent @mouseup.prevent @click.stop="jumpBackward">
|
||||
<span class="material-icons text-2xl sm:text-3xl">replay_10</span>
|
||||
</div>
|
||||
<div class="cursor-pointer p-2 shadow-sm bg-accent flex items-center justify-center rounded-full text-primary mx-4 md:mx-8" :class="seekLoading ? 'animate-spin' : ''" @mousedown.prevent @mouseup.prevent @click.stop="playPause">
|
||||
</button>
|
||||
<button :aria-label="paused ? $strings.ButtonPlay : $strings.ButtonPause" class="p-2 shadow-sm bg-accent flex items-center justify-center rounded-full text-primary mx-4 md:mx-8" :class="seekLoading ? 'animate-spin' : ''" @mousedown.prevent @mouseup.prevent @click.stop="playPause">
|
||||
<span class="material-icons text-2xl">{{ seekLoading ? 'autorenew' : paused ? 'play_arrow' : 'pause' }}</span>
|
||||
</div>
|
||||
<div class="cursor-pointer flex items-center justify-center text-gray-300" @mousedown.prevent @mouseup.prevent @click.stop="jumpForward">
|
||||
</button>
|
||||
<button :aria-label="$strings.ButtonJumpForward" class="flex items-center justify-center text-gray-300" @mousedown.prevent @mouseup.prevent @click.stop="jumpForward">
|
||||
<span class="material-icons text-2xl sm:text-3xl">forward_10</span>
|
||||
</div>
|
||||
<div class="flex items-center justify-center ml-4 md:ml-8" :class="hasNextChapter ? 'text-gray-300 cursor-pointer' : 'text-gray-500'" @mousedown.prevent @mouseup.prevent @click.stop="nextChapter">
|
||||
</button>
|
||||
<button :aria-label="$strings.ButtonNextChapter" class="flex items-center justify-center ml-4 md:ml-8" :disabled="!hasNextChapter" :class="hasNextChapter ? 'text-gray-300' : 'text-gray-500'" @mousedown.prevent @mouseup.prevent @click.stop="nextChapter">
|
||||
<span class="material-icons text-2xl sm:text-3xl">last_page</span>
|
||||
</div>
|
||||
</button>
|
||||
<controls-playback-speed-control v-model="playbackRateInput" @input="playbackRateUpdated" @change="playbackRateChanged" />
|
||||
</template>
|
||||
<template v-else>
|
||||
|
||||
@@ -57,7 +57,6 @@ export default {
|
||||
},
|
||||
watch: {
|
||||
duration: {
|
||||
immediate: true,
|
||||
handler() {
|
||||
this.setChapterTicks()
|
||||
}
|
||||
@@ -205,10 +204,14 @@ export default {
|
||||
},
|
||||
windowResize() {
|
||||
this.setTrackWidth()
|
||||
this.setChapterTicks()
|
||||
this.updatePlayedTrackWidth()
|
||||
this.updateBufferTrack()
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.setTrackWidth()
|
||||
this.setChapterTicks()
|
||||
window.addEventListener('resize', this.windowResize)
|
||||
},
|
||||
beforeDestroy() {
|
||||
|
||||
@@ -9,37 +9,37 @@
|
||||
</ui-tooltip>
|
||||
|
||||
<ui-tooltip direction="top" :text="$strings.LabelSleepTimer">
|
||||
<div class="cursor-pointer text-gray-300 hover:text-white mx-1 lg:mx-2" @mousedown.prevent @mouseup.prevent @click.stop="$emit('showSleepTimer')">
|
||||
<button :aria-label="$strings.LabelSleepTimer" class="text-gray-300 hover:text-white mx-1 lg:mx-2" @mousedown.prevent @mouseup.prevent @click.stop="$emit('showSleepTimer')">
|
||||
<span v-if="!sleepTimerSet" class="material-icons text-2xl">snooze</span>
|
||||
<div v-else class="flex items-center">
|
||||
<span class="material-icons text-lg text-warning">snooze</span>
|
||||
<p class="text-xl text-warning font-mono font-semibold text-center px-0.5 pb-0.5" style="min-width: 30px">{{ sleepTimerRemainingString }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</button>
|
||||
</ui-tooltip>
|
||||
|
||||
<ui-tooltip v-if="!isPodcast" direction="top" :text="$strings.LabelViewBookmarks">
|
||||
<div class="cursor-pointer text-gray-300 hover:text-white mx-1 lg:mx-2" @mousedown.prevent @mouseup.prevent @click.stop="$emit('showBookmarks')">
|
||||
<button :aria-label="$strings.LabelViewBookmarks" class="text-gray-300 hover:text-white mx-1 lg:mx-2" @mousedown.prevent @mouseup.prevent @click.stop="$emit('showBookmarks')">
|
||||
<span class="material-icons text-2xl">{{ bookmarks.length ? 'bookmarks' : 'bookmark_border' }}</span>
|
||||
</div>
|
||||
</button>
|
||||
</ui-tooltip>
|
||||
|
||||
<ui-tooltip v-if="chapters.length" direction="top" :text="$strings.LabelViewChapters">
|
||||
<div class="cursor-pointer text-gray-300 hover:text-white mx-1 lg:mx-2" @mousedown.prevent @mouseup.prevent @click.stop="showChapters">
|
||||
<button :aria-label="$strings.LabelViewChapters" class="text-gray-300 hover:text-white mx-1 lg:mx-2" @mousedown.prevent @mouseup.prevent @click.stop="showChapters">
|
||||
<span class="material-icons text-2xl">format_list_bulleted</span>
|
||||
</div>
|
||||
</button>
|
||||
</ui-tooltip>
|
||||
|
||||
<ui-tooltip v-if="playerQueueItems.length" direction="top" :text="$strings.LabelViewQueue">
|
||||
<button class="outline-none text-gray-300 mx-1 lg:mx-2 hover:text-white" @mousedown.prevent @mouseup.prevent @click.stop="$emit('showPlayerQueueItems')">
|
||||
<button :aria-label="$strings.LabelViewQueue" class="outline-none text-gray-300 mx-1 lg:mx-2 hover:text-white" @mousedown.prevent @mouseup.prevent @click.stop="$emit('showPlayerQueueItems')">
|
||||
<span class="material-icons text-2.5xl sm:text-3xl">playlist_play</span>
|
||||
</button>
|
||||
</ui-tooltip>
|
||||
|
||||
<ui-tooltip v-if="chapters.length" direction="top" :text="useChapterTrack ? $strings.LabelUseFullTrack : $strings.LabelUseChapterTrack">
|
||||
<div class="cursor-pointer text-gray-300 mx-1 lg:mx-2 hover:text-white" @mousedown.prevent @mouseup.prevent @click.stop="setUseChapterTrack">
|
||||
<button :aria-label="useChapterTrack ? $strings.LabelUseFullTrack : $strings.LabelUseChapterTrack" class="text-gray-300 mx-1 lg:mx-2 hover:text-white" @mousedown.prevent @mouseup.prevent @click.stop="setUseChapterTrack">
|
||||
<span class="material-icons text-2xl sm:text-3xl transform transition-transform" :class="useChapterTrack ? 'rotate-180' : ''">timelapse</span>
|
||||
</div>
|
||||
</button>
|
||||
</ui-tooltip>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="w-full h-full">
|
||||
<div v-show="showPageMenu" v-click-outside="clickOutside" class="pagemenu absolute top-9 left-8 rounded-md overflow-y-auto bg-bg shadow-lg z-20 border border-gray-400" :style="{ width: pageMenuWidth + 'px' }">
|
||||
<div v-for="(file, index) in cleanedPageNames" :key="file" class="w-full cursor-pointer hover:bg-black-200 px-2 py-1" :class="page === index ? 'bg-black-200' : ''" @click="setPage(index + 1)">
|
||||
<div v-for="(file, index) in cleanedPageNames" :key="file" class="w-full cursor-pointer hover:bg-black-200 px-2 py-1" :class="page === index + 1 ? 'bg-black-200' : ''" @click="setPage(index + 1)">
|
||||
<p class="text-sm truncate">{{ file }}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -316,6 +316,7 @@ export default {
|
||||
reader.rendition = reader.book.renderTo('viewer', {
|
||||
width: this.readerWidth,
|
||||
height: this.readerHeight * 0.8,
|
||||
allowScriptedContent: true,
|
||||
spread: 'auto',
|
||||
snap: true,
|
||||
manager: 'continuous',
|
||||
|
||||
@@ -7,9 +7,10 @@
|
||||
</div>
|
||||
|
||||
<div class="flex items-center">
|
||||
<p class="hidden md:block text-xl font-semibold">{{ yearInReviewYear }} Year in Review</p>
|
||||
<p class="hidden md:block text-xl font-semibold">{{ $getString('HeaderYearReview', [yearInReviewYear]) }}</p>
|
||||
<div class="hidden md:block flex-grow" />
|
||||
<ui-btn class="w-full md:w-auto" @click.stop="clickShowYearInReview">{{ showYearInReview ? 'Hide Year in Review' : 'See Year in Review' }}</ui-btn>
|
||||
<ui-btn class="w-full md:w-auto" @click.stop="clickShowYearInReview">{{ showYearInReview ? $strings.LabelYearReviewHide :
|
||||
$strings.LabelYearReviewShow }}</ui-btn>
|
||||
</div>
|
||||
|
||||
<!-- your year in review -->
|
||||
@@ -20,24 +21,27 @@
|
||||
<!-- previous button -->
|
||||
<ui-btn small :disabled="!yearInReviewVariant || processingYearInReview" class="inline-flex items-center font-semibold" @click="yearInReviewVariant--">
|
||||
<span class="material-icons text-lg sm:pr-1 py-px sm:py-0">chevron_left</span>
|
||||
<span class="hidden sm:inline-block pr-2">Previous</span>
|
||||
<span class="hidden sm:inline-block pr-2">{{ $strings.ButtonPrevious }}</span>
|
||||
</ui-btn>
|
||||
<!-- share button -->
|
||||
<ui-btn v-if="showShareButton" small :disabled="processingYearInReview" class="inline-flex sm:hidden items-center font-semibold ml-1 sm:ml-2" @click="shareYearInReview"> Share </ui-btn>
|
||||
<ui-btn v-if="showShareButton" small :disabled="processingYearInReview" class="inline-flex sm:hidden items-center font-semibold ml-1 sm:ml-2" @click="shareYearInReview">{{
|
||||
$strings.ButtonShare }}
|
||||
</ui-btn>
|
||||
|
||||
<div class="flex-grow" />
|
||||
<p class="hidden sm:block text-lg font-semibold">Your Year in Review ({{ yearInReviewVariant + 1 }})</p>
|
||||
<p class="hidden sm:block text-lg font-semibold">{{ $getString('LabelPersonalYearReview', [yearInReviewVariant + 1]) }}
|
||||
</p>
|
||||
<p class="block sm:hidden text-lg font-semibold">{{ yearInReviewVariant + 1 }}</p>
|
||||
<div class="flex-grow" />
|
||||
|
||||
<!-- refresh button -->
|
||||
<ui-btn small :disabled="processingYearInReview" class="inline-flex items-center font-semibold mr-1 sm:mr-2" @click="refreshYearInReview">
|
||||
<span class="hidden sm:inline-block">Refresh</span>
|
||||
<span class="hidden sm:inline-block">{{ $strings.ButtonRefresh }}</span>
|
||||
<span class="material-icons sm:!hidden text-lg py-px">refresh</span>
|
||||
</ui-btn>
|
||||
<!-- next button -->
|
||||
<ui-btn small :disabled="yearInReviewVariant >= 2 || processingYearInReview" class="inline-flex items-center font-semibold" @click="yearInReviewVariant++">
|
||||
<span class="hidden sm:inline-block pl-2">Next</span>
|
||||
<span class="hidden sm:inline-block pl-2">{{ $strings.ButtonNext }}</span>
|
||||
<span class="material-icons-outlined text-lg sm:pl-1 py-px sm:py-0">chevron_right</span>
|
||||
</ui-btn>
|
||||
</div>
|
||||
@@ -46,7 +50,7 @@
|
||||
<!-- your year in review short -->
|
||||
<div class="w-full max-w-[800px] mx-auto my-4">
|
||||
<!-- share button -->
|
||||
<ui-btn v-if="showShareButton" small :disabled="processingYearInReviewShort" class="inline-flex sm:hidden items-center font-semibold mb-1" @click="shareYearInReviewShort"> Share </ui-btn>
|
||||
<ui-btn v-if="showShareButton" small :disabled="processingYearInReviewShort" class="inline-flex sm:hidden items-center font-semibold mb-1" @click="shareYearInReviewShort">{{ $strings.ButtonShare }}</ui-btn>
|
||||
<stats-year-in-review-short ref="yearInReviewShort" :year="yearInReviewYear" :processing.sync="processingYearInReviewShort" />
|
||||
</div>
|
||||
|
||||
@@ -56,24 +60,25 @@
|
||||
<!-- previous button -->
|
||||
<ui-btn small :disabled="!yearInReviewServerVariant || processingYearInReviewServer" class="inline-flex items-center font-semibold" @click="yearInReviewServerVariant--">
|
||||
<span class="material-icons text-lg sm:pr-1 py-px sm:py-0">chevron_left</span>
|
||||
<span class="hidden sm:inline-block pr-2">Previous</span>
|
||||
<span class="hidden sm:inline-block pr-2">{{ $strings.ButtonPrevious }}</span>
|
||||
</ui-btn>
|
||||
<!-- share button -->
|
||||
<ui-btn v-if="showShareButton" small :disabled="processingYearInReviewServer" class="inline-flex sm:hidden items-center font-semibold ml-1 sm:ml-2" @click="shareYearInReviewServer"> Share </ui-btn>
|
||||
<ui-btn v-if="showShareButton" small :disabled="processingYearInReviewServer" class="inline-flex sm:hidden items-center font-semibold ml-1 sm:ml-2" @click="shareYearInReviewServer">{{ $strings.ButtonShare }}
|
||||
</ui-btn>
|
||||
|
||||
<div class="flex-grow" />
|
||||
<p class="hidden sm:block text-lg font-semibold">Server Year in Review ({{ yearInReviewServerVariant + 1 }})</p>
|
||||
<p class="hidden sm:block text-lg font-semibold">{{ $getString('LabelServerYearReview', [yearInReviewServerVariant + 1]) }}</p>
|
||||
<p class="block sm:hidden text-lg font-semibold">{{ yearInReviewServerVariant + 1 }}</p>
|
||||
<div class="flex-grow" />
|
||||
|
||||
<!-- refresh button -->
|
||||
<ui-btn small :disabled="processingYearInReviewServer" class="inline-flex items-center font-semibold mr-1 sm:mr-2" @click="refreshYearInReviewServer">
|
||||
<span class="hidden sm:inline-block">Refresh</span>
|
||||
<span class="hidden sm:inline-block">{{ $strings.ButtonRefresh }}</span>
|
||||
<span class="material-icons sm:!hidden text-lg py-px">refresh</span>
|
||||
</ui-btn>
|
||||
<!-- next button -->
|
||||
<ui-btn small :disabled="yearInReviewServerVariant >= 2 || processingYearInReviewServer" class="inline-flex items-center font-semibold" @click="yearInReviewServerVariant++">
|
||||
<span class="hidden sm:inline-block pl-2">Next</span>
|
||||
<span class="hidden sm:inline-block pl-2">{{ $strings.ButtonNext }}</span>
|
||||
<span class="material-icons-outlined text-lg sm:pl-1 py-px sm:py-0">chevron_right</span>
|
||||
</ui-btn>
|
||||
</div>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="text-center mt-4">
|
||||
<div class="text-center mt-4 relative">
|
||||
<div class="flex py-4">
|
||||
<ui-file-input ref="fileInput" class="mr-2" accept=".audiobookshelf" @change="backupUploaded">{{ $strings.ButtonUploadBackup }}</ui-file-input>
|
||||
<div class="flex-grow" />
|
||||
@@ -54,6 +54,10 @@
|
||||
</div>
|
||||
</div>
|
||||
</prompt-dialog>
|
||||
|
||||
<div v-if="isApplyingBackup" class="absolute inset-0 w-full h-full flex items-center justify-center bg-black/20 rounded-md">
|
||||
<ui-loading-indicator />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -64,6 +68,7 @@ export default {
|
||||
showConfirmApply: false,
|
||||
selectedBackup: null,
|
||||
isBackingUp: false,
|
||||
isApplyingBackup: false,
|
||||
processing: false,
|
||||
backups: []
|
||||
}
|
||||
@@ -85,19 +90,21 @@ export default {
|
||||
},
|
||||
confirm() {
|
||||
this.showConfirmApply = false
|
||||
this.isApplyingBackup = true
|
||||
|
||||
this.$axios
|
||||
.$get(`/api/backups/${this.selectedBackup.id}/apply`)
|
||||
.then(() => {
|
||||
this.isBackingUp = false
|
||||
location.replace('/config/backups?backup=1')
|
||||
})
|
||||
.catch((error) => {
|
||||
this.isBackingUp = false
|
||||
console.error('Failed to apply backup', error)
|
||||
const errorMsg = error.response.data || this.$strings.ToastBackupRestoreFailed
|
||||
this.$toast.error(errorMsg)
|
||||
})
|
||||
.finally(() => {
|
||||
this.isApplyingBackup = false
|
||||
})
|
||||
},
|
||||
deleteBackupClick(backup) {
|
||||
if (confirm(this.$getString('MessageConfirmDeleteBackup', [this.$formatDatetime(backup.createdAt, this.dateFormat, this.timeFormat)]))) {
|
||||
@@ -180,7 +187,6 @@ export default {
|
||||
this.loadBackups()
|
||||
if (this.$route.query.backup) {
|
||||
this.$toast.success('Backup applied successfully')
|
||||
this.$router.replace('/config')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
127
client/components/tables/CustomMetadataProviderTable.vue
Normal file
127
client/components/tables/CustomMetadataProviderTable.vue
Normal file
@@ -0,0 +1,127 @@
|
||||
<template>
|
||||
<div class="min-h-40">
|
||||
<table v-if="providers.length" id="providers">
|
||||
<tr>
|
||||
<th>{{ $strings.LabelName }}</th>
|
||||
<th>URL</th>
|
||||
<th>Authorization Header Value</th>
|
||||
<th class="w-12"></th>
|
||||
</tr>
|
||||
<tr v-for="provider in providers" :key="provider.id">
|
||||
<td class="text-sm">{{ provider.name }}</td>
|
||||
<td class="text-sm">{{ provider.url }}</td>
|
||||
<td class="text-sm">
|
||||
<span v-if="provider.authHeaderValue" class="custom-provider-api-key">{{ provider.authHeaderValue }}</span>
|
||||
</td>
|
||||
<td class="py-0">
|
||||
<div class="h-8 w-8 flex items-center justify-center text-white text-opacity-50 hover:text-error cursor-pointer" @click.stop="removeProvider(provider)">
|
||||
<button type="button" :aria-label="$strings.ButtonDelete" class="material-icons text-base">delete</button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div v-else-if="!processing" class="text-center py-8">
|
||||
<p class="text-lg">No custom metadata providers</p>
|
||||
</div>
|
||||
|
||||
<div v-if="processing" class="absolute inset-0 h-full flex items-center justify-center bg-black/40 rounded-md">
|
||||
<ui-loading-indicator />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
providers: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
},
|
||||
processing: Boolean
|
||||
},
|
||||
data() {
|
||||
return {}
|
||||
},
|
||||
methods: {
|
||||
removeProvider(provider) {
|
||||
const payload = {
|
||||
message: `Are you sure you want remove custom metadata provider "${provider.name}"?`,
|
||||
callback: (confirmed) => {
|
||||
if (confirmed) {
|
||||
this.$emit('update:processing', true)
|
||||
|
||||
this.$axios
|
||||
.$delete(`/api/custom-metadata-providers/${provider.id}`)
|
||||
.then(() => {
|
||||
this.$toast.success('Provider removed')
|
||||
this.$emit('removed', provider.id)
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error('Failed to remove provider', error)
|
||||
this.$toast.error('Failed to remove provider')
|
||||
})
|
||||
.finally(() => {
|
||||
this.$emit('update:processing', false)
|
||||
})
|
||||
}
|
||||
},
|
||||
type: 'yesNo'
|
||||
}
|
||||
this.$store.commit('globals/setConfirmPrompt', payload)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
#providers {
|
||||
table-layout: fixed;
|
||||
border-collapse: collapse;
|
||||
border: 1px solid #474747;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#providers td,
|
||||
#providers th {
|
||||
/* border: 1px solid #2e2e2e; */
|
||||
padding: 8px 8px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
#providers td.py-0 {
|
||||
padding: 0px 8px;
|
||||
}
|
||||
|
||||
#providers tr:nth-child(even) {
|
||||
background-color: #373838;
|
||||
}
|
||||
|
||||
#providers tr:nth-child(odd) {
|
||||
background-color: #2f2f2f;
|
||||
}
|
||||
|
||||
#providers tr:hover {
|
||||
background-color: #444;
|
||||
}
|
||||
|
||||
#providers th {
|
||||
font-size: 0.8rem;
|
||||
font-weight: 600;
|
||||
padding-top: 5px;
|
||||
padding-bottom: 5px;
|
||||
background-color: #272727;
|
||||
}
|
||||
|
||||
.custom-provider-api-key {
|
||||
padding: 1px;
|
||||
background-color: #272727;
|
||||
border-radius: 4px;
|
||||
color: transparent;
|
||||
transition: color, background-color 0.5s ease;
|
||||
}
|
||||
|
||||
.custom-provider-api-key:hover {
|
||||
background-color: transparent;
|
||||
color: white;
|
||||
}
|
||||
</style>
|
||||
@@ -7,8 +7,8 @@
|
||||
<widgets-podcast-type-indicator :type="episodeType" />
|
||||
</div>
|
||||
|
||||
<div class="h-10 flex items-center mt-1.5 mb-0.5">
|
||||
<p class="text-sm text-gray-200 episode-subtitle" v-html="episodeSubtitle"></p>
|
||||
<div class="h-10 flex items-center mt-1.5 mb-0.5 overflow-hidden">
|
||||
<p class="text-sm text-gray-200 line-clamp-2" v-html="episodeSubtitle"></p>
|
||||
</div>
|
||||
<div class="h-8 flex items-center">
|
||||
<div class="w-full inline-flex justify-between max-w-xl">
|
||||
|
||||
@@ -87,7 +87,7 @@ export default {
|
||||
watch: {
|
||||
libraryItem: {
|
||||
handler() {
|
||||
this.init()
|
||||
this.refresh()
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -515,6 +515,10 @@ export default {
|
||||
filterSortChanged() {
|
||||
this.init()
|
||||
},
|
||||
refresh() {
|
||||
this.episodesCopy = this.episodes.map((ep) => ({ ...ep }))
|
||||
this.init()
|
||||
},
|
||||
init() {
|
||||
this.destroyEpisodeComponents()
|
||||
this.totalEpisodes = this.episodesList.length
|
||||
|
||||
@@ -11,13 +11,13 @@
|
||||
</div>
|
||||
{{ item }}
|
||||
</div>
|
||||
<input v-show="!readonly" ref="input" v-model="textInput" :disabled="disabled" style="min-width: 40px; width: 40px" class="h-full bg-primary focus:outline-none px-1" @keydown="keydownInput" @focus="inputFocus" @blur="inputBlur" @paste="inputPaste" />
|
||||
<input v-show="!readonly" ref="input" v-model="textInput" :disabled="disabled" class="h-full bg-primary focus:outline-none px-1 w-6" @keydown="keydownInput" @focus="inputFocus" @blur="inputBlur" @paste="inputPaste" />
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<ul ref="menu" v-show="showMenu" class="absolute z-60 mt-1 w-full bg-bg border border-black-200 shadow-lg max-h-56 rounded-md py-1 text-base ring-1 ring-black ring-opacity-5 overflow-auto focus:outline-none sm:text-sm" role="listbox" aria-labelledby="listbox-label">
|
||||
<template v-for="item in itemsToShow">
|
||||
<li :key="item" class="text-gray-50 select-none relative py-2 pr-9 cursor-pointer hover:bg-black-400" role="option" @click="clickedOption($event, item)" @mouseup.stop.prevent @mousedown.prevent>
|
||||
<li :key="item" class="text-gray-50 select-none relative py-2 pr-9 cursor-pointer hover:bg-black-400" :class="itemsToShow[selectedMenuItemIndex] === item ? 'text-yellow-300' : ''" role="option" @click="clickedOption($event, item)" @mouseup.stop.prevent @mousedown.prevent>
|
||||
<div class="flex items-center">
|
||||
<span class="font-normal ml-3 block truncate">{{ item }}</span>
|
||||
</div>
|
||||
@@ -54,7 +54,7 @@ export default {
|
||||
menuDisabled: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
@@ -62,7 +62,9 @@ export default {
|
||||
currentSearch: null,
|
||||
typingTimeout: null,
|
||||
isFocused: false,
|
||||
menu: null
|
||||
menu: null,
|
||||
filteredItems: null,
|
||||
selectedMenuItemIndex: null
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
@@ -91,24 +93,63 @@ export default {
|
||||
return classes.join(' ')
|
||||
},
|
||||
itemsToShow() {
|
||||
if (!this.currentSearch || !this.textInput) {
|
||||
if (!this.currentSearch || !this.textInput || !this.filteredItems) {
|
||||
return this.items
|
||||
}
|
||||
|
||||
return this.items.filter((i) => {
|
||||
var iValue = String(i).toLowerCase()
|
||||
return iValue.includes(this.currentSearch.toLowerCase())
|
||||
})
|
||||
return this.filteredItems
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
editItem(item) {
|
||||
this.$emit('edit', item)
|
||||
},
|
||||
keydownInput() {
|
||||
search() {
|
||||
if (!this.textInput) {
|
||||
this.filteredItems = null
|
||||
return
|
||||
}
|
||||
this.currentSearch = this.textInput
|
||||
|
||||
const results = this.items.filter((i) => {
|
||||
var iValue = String(i).toLowerCase()
|
||||
return iValue.includes(this.currentSearch.toLowerCase())
|
||||
})
|
||||
|
||||
this.filteredItems = results || []
|
||||
},
|
||||
keydownInput(event) {
|
||||
let items = this.itemsToShow
|
||||
if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {
|
||||
event.preventDefault()
|
||||
if (!items.length) return
|
||||
if (event.key === 'ArrowDown') {
|
||||
if (this.selectedMenuItemIndex === null) {
|
||||
this.selectedMenuItemIndex = 0
|
||||
} else {
|
||||
this.selectedMenuItemIndex = Math.min(this.selectedMenuItemIndex + 1, items.length - 1)
|
||||
}
|
||||
} else if (event.key === 'ArrowUp') {
|
||||
if (this.selectedMenuItemIndex === null) {
|
||||
this.selectedMenuItemIndex = items.length - 1
|
||||
} else {
|
||||
this.selectedMenuItemIndex = Math.max(this.selectedMenuItemIndex - 1, 0)
|
||||
}
|
||||
}
|
||||
this.recalcScroll()
|
||||
return
|
||||
} else if (event.key === 'Enter') {
|
||||
if (this.selectedMenuItemIndex !== null) {
|
||||
this.clickedOption(event, items[this.selectedMenuItemIndex])
|
||||
} else {
|
||||
this.submitForm()
|
||||
}
|
||||
return
|
||||
}
|
||||
this.selectedMenuItemIndex = null
|
||||
clearTimeout(this.typingTimeout)
|
||||
this.typingTimeout = setTimeout(() => {
|
||||
this.currentSearch = this.textInput
|
||||
this.search()
|
||||
}, 100)
|
||||
this.setInputWidth()
|
||||
},
|
||||
@@ -120,6 +161,24 @@ export default {
|
||||
this.recalcMenuPos()
|
||||
}, 50)
|
||||
},
|
||||
recalcScroll() {
|
||||
if (!this.menu) return
|
||||
var menuItems = this.menu.querySelectorAll('li')
|
||||
if (!menuItems.length) return
|
||||
var selectedItem = menuItems[this.selectedMenuItemIndex]
|
||||
if (!selectedItem) return
|
||||
var menuHeight = this.menu.offsetHeight
|
||||
var itemHeight = selectedItem.offsetHeight
|
||||
var itemTop = selectedItem.offsetTop
|
||||
var itemBottom = itemTop + itemHeight
|
||||
if (itemBottom > this.menu.scrollTop + menuHeight) {
|
||||
let menuPaddingBottom = parseFloat(window.getComputedStyle(this.menu).paddingBottom)
|
||||
this.menu.scrollTop = itemBottom - menuHeight + menuPaddingBottom
|
||||
} else if (itemTop < this.menu.scrollTop) {
|
||||
let menuPaddingTop = parseFloat(window.getComputedStyle(this.menu).paddingTop)
|
||||
this.menu.scrollTop = itemTop - menuPaddingTop
|
||||
}
|
||||
},
|
||||
recalcMenuPos() {
|
||||
if (!this.menu || !this.$refs.inputWrapper) return
|
||||
var boundingBox = this.$refs.inputWrapper.getBoundingClientRect()
|
||||
@@ -208,7 +267,10 @@ export default {
|
||||
e.stopPropagation()
|
||||
e.preventDefault()
|
||||
}
|
||||
if (this.$refs.input) this.$refs.input.focus()
|
||||
if (this.$refs.input) {
|
||||
this.$refs.input.style.width = '24px'
|
||||
this.$refs.input.focus()
|
||||
}
|
||||
|
||||
var newSelected = null
|
||||
if (this.selected.includes(itemValue)) {
|
||||
@@ -219,6 +281,7 @@ export default {
|
||||
}
|
||||
this.textInput = null
|
||||
this.currentSearch = null
|
||||
this.selectedMenuItemIndex = null
|
||||
this.$emit('input', newSelected)
|
||||
this.$nextTick(() => {
|
||||
this.recalcMenuPos()
|
||||
@@ -245,6 +308,7 @@ export default {
|
||||
this.$emit('newItem', item)
|
||||
this.textInput = null
|
||||
this.currentSearch = null
|
||||
this.selectedMenuItemIndex = null
|
||||
this.$nextTick(() => {
|
||||
this.blur()
|
||||
})
|
||||
@@ -261,6 +325,7 @@ export default {
|
||||
} else {
|
||||
this.insertNewItem(this.textInput)
|
||||
}
|
||||
if (this.$refs.input) this.$refs.input.style.width = '24px'
|
||||
},
|
||||
scroll() {
|
||||
this.recalcMenuPos()
|
||||
|
||||
@@ -14,13 +14,13 @@
|
||||
<div v-if="showEdit && !disabled" class="rounded-full cursor-pointer w-6 h-6 mx-0.5 bg-bg flex items-center justify-center">
|
||||
<span class="material-icons text-white hover:text-success pt-px pr-px" style="font-size: 1.1rem" @click.stop="addItem">add</span>
|
||||
</div>
|
||||
<input v-show="!readonly" ref="input" v-model="textInput" :disabled="disabled" style="min-width: 40px; width: 40px" class="h-full bg-primary focus:outline-none px-1" @keydown="keydownInput" @focus="inputFocus" @blur="inputBlur" @paste="inputPaste" />
|
||||
<input v-show="!readonly" ref="input" v-model="textInput" :disabled="disabled" class="h-full bg-primary focus:outline-none px-1 w-6" @keydown="keydownInput" @focus="inputFocus" @blur="inputBlur" @paste="inputPaste" />
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<ul ref="menu" v-show="showMenu" class="absolute z-60 w-full bg-bg border border-black-200 shadow-lg max-h-56 rounded-md py-1 text-base ring-1 ring-black ring-opacity-5 overflow-auto focus:outline-none sm:text-sm" role="listbox" aria-labelledby="listbox-label">
|
||||
<template v-for="item in itemsToShow">
|
||||
<li :key="item.id" class="text-gray-50 select-none relative py-2 pr-9 cursor-pointer hover:bg-black-400" role="option" @click="clickedOption($event, item)" @mouseup.stop.prevent @mousedown.prevent>
|
||||
<li :key="item.id" class="text-gray-50 select-none relative py-2 pr-9 cursor-pointer hover:bg-black-400" :class="itemsToShow[selectedMenuItemIndex] === item ? 'text-yellow-300' : ''" role="option" @click="clickedOption($event, item)" @mouseup.stop.prevent @mousedown.prevent>
|
||||
<div class="flex items-center">
|
||||
<span class="font-normal ml-3 block truncate">{{ item.name }}</span>
|
||||
</div>
|
||||
@@ -63,7 +63,8 @@ export default {
|
||||
typingTimeout: null,
|
||||
isFocused: false,
|
||||
menu: null,
|
||||
items: []
|
||||
items: [],
|
||||
selectedMenuItemIndex: null
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
@@ -122,7 +123,35 @@ export default {
|
||||
|
||||
this.items = results || []
|
||||
},
|
||||
keydownInput() {
|
||||
keydownInput(event) {
|
||||
let items = this.itemsToShow
|
||||
if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {
|
||||
event.preventDefault()
|
||||
if (!items.length) return
|
||||
if (event.key === 'ArrowDown') {
|
||||
if (this.selectedMenuItemIndex === null) {
|
||||
this.selectedMenuItemIndex = 0
|
||||
} else {
|
||||
this.selectedMenuItemIndex = Math.min(this.selectedMenuItemIndex + 1, items.length - 1)
|
||||
}
|
||||
} else if (event.key === 'ArrowUp') {
|
||||
if (this.selectedMenuItemIndex === null) {
|
||||
this.selectedMenuItemIndex = items.length - 1
|
||||
} else {
|
||||
this.selectedMenuItemIndex = Math.max(this.selectedMenuItemIndex - 1, 0)
|
||||
}
|
||||
}
|
||||
this.recalcScroll()
|
||||
return
|
||||
} else if (event.key === 'Enter') {
|
||||
if (this.selectedMenuItemIndex !== null) {
|
||||
this.clickedOption(event, items[this.selectedMenuItemIndex])
|
||||
} else {
|
||||
this.submitForm()
|
||||
}
|
||||
return
|
||||
}
|
||||
this.selectedMenuItemIndex = null
|
||||
clearTimeout(this.typingTimeout)
|
||||
this.typingTimeout = setTimeout(() => {
|
||||
this.search()
|
||||
@@ -137,6 +166,24 @@ export default {
|
||||
this.recalcMenuPos()
|
||||
}, 50)
|
||||
},
|
||||
recalcScroll() {
|
||||
if (!this.menu) return
|
||||
var menuItems = this.menu.querySelectorAll('li')
|
||||
if (!menuItems.length) return
|
||||
var selectedItem = menuItems[this.selectedMenuItemIndex]
|
||||
if (!selectedItem) return
|
||||
var menuHeight = this.menu.offsetHeight
|
||||
var itemHeight = selectedItem.offsetHeight
|
||||
var itemTop = selectedItem.offsetTop
|
||||
var itemBottom = itemTop + itemHeight
|
||||
if (itemBottom > this.menu.scrollTop + menuHeight) {
|
||||
let menuPaddingBottom = parseFloat(window.getComputedStyle(this.menu).paddingBottom)
|
||||
this.menu.scrollTop = itemBottom - menuHeight + menuPaddingBottom
|
||||
} else if (itemTop < this.menu.scrollTop) {
|
||||
let menuPaddingTop = parseFloat(window.getComputedStyle(this.menu).paddingTop)
|
||||
this.menu.scrollTop = itemTop - menuPaddingTop
|
||||
}
|
||||
},
|
||||
recalcMenuPos() {
|
||||
if (!this.menu || !this.$refs.inputWrapper) return
|
||||
var boundingBox = this.$refs.inputWrapper.getBoundingClientRect()
|
||||
@@ -228,7 +275,10 @@ export default {
|
||||
e.stopPropagation()
|
||||
e.preventDefault()
|
||||
}
|
||||
if (this.$refs.input) this.$refs.input.focus()
|
||||
if (this.$refs.input) {
|
||||
this.$refs.input.style.width = '24px'
|
||||
this.$refs.input.focus()
|
||||
}
|
||||
|
||||
let newSelected = null
|
||||
if (this.getIsSelected(item.id)) {
|
||||
@@ -244,6 +294,7 @@ export default {
|
||||
}
|
||||
this.textInput = null
|
||||
this.currentSearch = null
|
||||
this.selectedMenuItemIndex = null
|
||||
|
||||
this.$emit('input', newSelected)
|
||||
this.$nextTick(() => {
|
||||
@@ -271,6 +322,7 @@ export default {
|
||||
this.$emit('newItem', item)
|
||||
this.textInput = null
|
||||
this.currentSearch = null
|
||||
this.selectedMenuItemIndex = null
|
||||
this.$nextTick(() => {
|
||||
this.blur()
|
||||
})
|
||||
@@ -291,6 +343,7 @@ export default {
|
||||
name: this.textInput
|
||||
})
|
||||
}
|
||||
if (this.$refs.input) this.$refs.input.style.width = '24px'
|
||||
},
|
||||
scroll() {
|
||||
this.recalcMenuPos()
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="default-style">
|
||||
<p v-if="label" class="px-1 text-sm font-semibold" :class="{ 'text-gray-400': disabled }">
|
||||
{{ label }}
|
||||
</p>
|
||||
@@ -29,31 +29,31 @@ export default {
|
||||
config() {
|
||||
return {
|
||||
toolbar: {
|
||||
getDefaultHTML: () => ` <div class="trix-button-row">
|
||||
getDefaultHTML: () => `<div class="trix-button-row">
|
||||
<span class="trix-button-group trix-button-group--text-tools" data-trix-button-group="text-tools">
|
||||
<button type="button" class="trix-button trix-button--icon trix-button--icon-bold" data-trix-attribute="bold" data-trix-key="b" title="#{lang.bold}" tabindex="-1">#{lang.bold}</button>
|
||||
<button type="button" class="trix-button trix-button--icon trix-button--icon-italic" data-trix-attribute="italic" data-trix-key="i" title="#{lang.italic}" tabindex="-1">#{lang.italic}</button>
|
||||
<button type="button" class="trix-button trix-button--icon trix-button--icon-strike" data-trix-attribute="strike" title="#{lang.strike}" tabindex="-1">#{lang.strike}</button>
|
||||
<button type="button" class="trix-button trix-button--icon trix-button--icon-link" data-trix-attribute="href" data-trix-action="link" data-trix-key="k" title="#{lang.link}" tabindex="-1">#{lang.link}</button>
|
||||
<button type="button" class="trix-button trix-button--icon trix-button--icon-bold" data-trix-attribute="bold" data-trix-key="b" title="${this.$strings.LabelFontBold}" tabindex="-1">${this.$strings.LabelFontBold}</button>
|
||||
<button type="button" class="trix-button trix-button--icon trix-button--icon-italic" data-trix-attribute="italic" data-trix-key="i" title="${this.$strings.LabelFontItalic}" tabindex="-1">${this.$strings.LabelFontItalic}</button>
|
||||
<button type="button" class="trix-button trix-button--icon trix-button--icon-strike" data-trix-attribute="strike" title="${this.$strings.LabelFontStrikethrough}" tabindex="-1">${this.$strings.LabelFontStrikethrough}</button>
|
||||
<button type="button" class="trix-button trix-button--icon trix-button--icon-link" data-trix-attribute="href" data-trix-action="link" data-trix-key="k" title="${this.$strings.LabelTextEditorLink}" tabindex="-1">${this.$strings.LabelTextEditorLink}</button>
|
||||
</span>
|
||||
<span class="trix-button-group trix-button-group--block-tools" data-trix-button-group="block-tools">
|
||||
<button type="button" class="trix-button trix-button--icon trix-button--icon-bullet-list" data-trix-attribute="bullet" title="#{lang.bullets}" tabindex="-1">#{lang.bullets}</button>
|
||||
<button type="button" class="trix-button trix-button--icon trix-button--icon-number-list" data-trix-attribute="number" title="#{lang.numbers}" tabindex="-1">#{lang.numbers}</button>
|
||||
<button type="button" class="trix-button trix-button--icon trix-button--icon-bullet-list" data-trix-attribute="bullet" title="${this.$strings.LabelTextEditorBulletedList}" tabindex="-1">${this.$strings.LabelTextEditorBulletedList}</button>
|
||||
<button type="button" class="trix-button trix-button--icon trix-button--icon-number-list" data-trix-attribute="number" title="${this.$strings.LabelTextEditorNumberedList}" tabindex="-1">${this.$strings.LabelTextEditorNumberedList}</button>
|
||||
</span>
|
||||
|
||||
<span class="trix-button-group-spacer"></span>
|
||||
<span class="trix-button-group trix-button-group--history-tools" data-trix-button-group="history-tools">
|
||||
<button type="button" class="trix-button trix-button--icon trix-button--icon-undo" data-trix-action="undo" data-trix-key="z" title="#{lang.undo}" tabindex="-1">#{lang.undo}</button>
|
||||
<button type="button" class="trix-button trix-button--icon trix-button--icon-redo" data-trix-action="redo" data-trix-key="shift+z" title="#{lang.redo}" tabindex="-1">#{lang.redo}</button>
|
||||
<button type="button" class="trix-button trix-button--icon trix-button--icon-undo" data-trix-action="undo" data-trix-key="z" title="${this.$strings.LabelUndo}" tabindex="-1">${this.$strings.LabelUndo}</button>
|
||||
<button type="button" class="trix-button trix-button--icon trix-button--icon-redo" data-trix-action="redo" data-trix-key="shift+z" title="${this.$strings.LabelRedo}" tabindex="-1">${this.$strings.LabelRedo}</button>
|
||||
</span>
|
||||
</div>
|
||||
<div class="trix-dialogs" data-trix-dialogs>
|
||||
<div class="trix-dialog trix-dialog--link" data-trix-dialog="href" data-trix-dialog-attribute="href">
|
||||
<div class="trix-dialog__link-fields">
|
||||
<input type="url" name="href" class="trix-input trix-input--dialog" placeholder="#{lang.urlPlaceholder}" aria-label="#{lang.url}" required data-trix-input>
|
||||
<input type="url" name="href" class="trix-input trix-input--dialog" placeholder="" aria-label="URL" required data-trix-input>
|
||||
<div class="trix-button-group">
|
||||
<input type="button" class="trix-button trix-button--dialog" value="#{lang.link}" data-trix-method="setAttribute">
|
||||
<input type="button" class="trix-button trix-button--dialog" value="#{lang.unlink}" data-trix-method="removeAttribute">
|
||||
<input type="button" class="trix-button trix-button--dialog" value="${this.$strings.LabelTextEditorLink}" data-trix-method="setAttribute">
|
||||
<input type="button" class="trix-button trix-button--dialog" value="${this.$strings.LabelTextEditorUnlink}" data-trix-method="removeAttribute">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div ref="wrapper" class="relative">
|
||||
<input :id="inputId" ref="input" v-model="inputValue" :type="actualType" :step="step" :min="min" :readonly="readonly" :disabled="disabled" :placeholder="placeholder" class="rounded bg-primary text-gray-200 focus:border-gray-300 focus:bg-bg focus:outline-none border border-gray-600 h-full w-full" :class="classList" @keyup="keyup" @change="change" @focus="focused" @blur="blurred" />
|
||||
<input :id="inputId" :name="inputName" ref="input" v-model="inputValue" :type="actualType" :step="step" :min="min" :readonly="readonly" :disabled="disabled" :placeholder="placeholder" class="rounded bg-primary text-gray-200 focus:border-gray-300 focus:bg-bg focus:outline-none border border-gray-600 h-full w-full" :class="classList" @keyup="keyup" @change="change" @focus="focused" @blur="blurred" />
|
||||
<div v-if="clearable && inputValue" class="absolute top-0 right-0 h-full px-2 flex items-center justify-center">
|
||||
<span class="material-icons text-gray-300 cursor-pointer" style="font-size: 1.1rem" @click.stop.prevent="clear">close</span>
|
||||
</div>
|
||||
@@ -33,6 +33,7 @@ export default {
|
||||
textCenter: Boolean,
|
||||
clearable: Boolean,
|
||||
inputId: String,
|
||||
inputName: String,
|
||||
step: [String, Number],
|
||||
min: [String, Number]
|
||||
},
|
||||
@@ -117,4 +118,4 @@ input:read-only {
|
||||
input::-webkit-calendar-picker-indicator {
|
||||
filter: invert(1);
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
|
||||
@@ -15,6 +15,13 @@ export default {
|
||||
type: String,
|
||||
default: 'right'
|
||||
},
|
||||
/**
|
||||
* Delay showing the tooltip after X milliseconds of hovering
|
||||
*/
|
||||
delayOnShow: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
disabled: Boolean
|
||||
},
|
||||
data() {
|
||||
@@ -22,7 +29,8 @@ export default {
|
||||
tooltip: null,
|
||||
tooltipId: null,
|
||||
isShowing: false,
|
||||
hideTimeout: null
|
||||
hideTimeout: null,
|
||||
delayOnShowTimeout: null
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
@@ -59,29 +67,44 @@ export default {
|
||||
this.tooltip = tooltip
|
||||
},
|
||||
setTooltipPosition(tooltip) {
|
||||
var boxChow = this.$refs.box.getBoundingClientRect()
|
||||
const boxRect = this.$refs.box.getBoundingClientRect()
|
||||
|
||||
const shouldMount = !tooltip.isConnected
|
||||
|
||||
var shouldMount = !tooltip.isConnected
|
||||
// Calculate size of tooltip
|
||||
if (shouldMount) document.body.appendChild(tooltip)
|
||||
var { width, height } = tooltip.getBoundingClientRect()
|
||||
const tooltipRect = tooltip.getBoundingClientRect()
|
||||
if (shouldMount) tooltip.remove()
|
||||
|
||||
var top = 0
|
||||
var left = 0
|
||||
// Subtracting scrollbar size
|
||||
const windowHeight = window.innerHeight - 8
|
||||
const windowWidth = window.innerWidth - 8
|
||||
|
||||
let top = 0
|
||||
let left = 0
|
||||
if (this.direction === 'right') {
|
||||
top = boxChow.top - height / 2 + boxChow.height / 2
|
||||
left = boxChow.left + boxChow.width + 4
|
||||
top = Math.max(0, boxRect.top - tooltipRect.height / 2 + boxRect.height / 2)
|
||||
left = Math.max(0, boxRect.left + boxRect.width + 4)
|
||||
} else if (this.direction === 'bottom') {
|
||||
top = boxChow.top + boxChow.height + 4
|
||||
left = boxChow.left - width / 2 + boxChow.width / 2
|
||||
top = Math.max(0, boxRect.top + boxRect.height + 4)
|
||||
left = Math.max(0, boxRect.left - tooltipRect.width / 2 + boxRect.width / 2)
|
||||
} else if (this.direction === 'top') {
|
||||
top = boxChow.top - height - 4
|
||||
left = boxChow.left - width / 2 + boxChow.width / 2
|
||||
top = Math.max(0, boxRect.top - tooltipRect.height - 4)
|
||||
left = Math.max(0, boxRect.left - tooltipRect.width / 2 + boxRect.width / 2)
|
||||
} else if (this.direction === 'left') {
|
||||
top = boxChow.top - height / 2 + boxChow.height / 2
|
||||
left = boxChow.left - width - 4
|
||||
top = Math.max(0, boxRect.top - tooltipRect.height / 2 + boxRect.height / 2)
|
||||
left = Math.max(0, boxRect.left - tooltipRect.width - 4)
|
||||
}
|
||||
|
||||
// Shift left if tooltip would overflow the window on the right
|
||||
if (left + tooltipRect.width > windowWidth) {
|
||||
left -= left + tooltipRect.width - windowWidth
|
||||
}
|
||||
// Shift up if tooltip would overflow the window on the bottom
|
||||
if (top + tooltipRect.height > windowHeight) {
|
||||
top -= top + tooltipRect.height - windowHeight
|
||||
}
|
||||
|
||||
tooltip.style.top = top + 'px'
|
||||
tooltip.style.left = left + 'px'
|
||||
},
|
||||
@@ -107,15 +130,33 @@ export default {
|
||||
this.isShowing = false
|
||||
},
|
||||
cancelHide() {
|
||||
if (this.hideTimeout) clearTimeout(this.hideTimeout)
|
||||
clearTimeout(this.hideTimeout)
|
||||
},
|
||||
mouseover() {
|
||||
if (!this.isShowing) this.showTooltip()
|
||||
if (this.isShowing || this.disabled) return
|
||||
|
||||
if (this.delayOnShow) {
|
||||
if (this.delayOnShowTimeout) {
|
||||
// Delay already running
|
||||
return
|
||||
}
|
||||
|
||||
this.delayOnShowTimeout = setTimeout(() => {
|
||||
this.showTooltip()
|
||||
this.delayOnShowTimeout = null
|
||||
}, this.delayOnShow)
|
||||
} else {
|
||||
this.showTooltip()
|
||||
}
|
||||
},
|
||||
mouseleave() {
|
||||
if (this.isShowing) {
|
||||
this.hideTimeout = setTimeout(this.hideTooltip, 100)
|
||||
if (!this.isShowing) {
|
||||
clearTimeout(this.delayOnShowTimeout)
|
||||
this.delayOnShowTimeout = null
|
||||
return
|
||||
}
|
||||
|
||||
this.hideTimeout = setTimeout(this.hideTooltip, 100)
|
||||
}
|
||||
},
|
||||
beforeDestroy() {
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<Nuxt :key="currentLang" />
|
||||
</div>
|
||||
|
||||
<app-stream-container ref="streamContainer" />
|
||||
<app-media-player-container ref="mediaPlayerContainer" />
|
||||
|
||||
<modals-item-edit-modal />
|
||||
<modals-collections-add-create-modal />
|
||||
@@ -129,23 +129,23 @@ export default {
|
||||
this.$eventBus.$emit('socket_init')
|
||||
},
|
||||
streamOpen(stream) {
|
||||
if (this.$refs.streamContainer) this.$refs.streamContainer.streamOpen(stream)
|
||||
if (this.$refs.mediaPlayerContainer) this.$refs.mediaPlayerContainer.streamOpen(stream)
|
||||
},
|
||||
streamClosed(streamId) {
|
||||
if (this.$refs.streamContainer) this.$refs.streamContainer.streamClosed(streamId)
|
||||
if (this.$refs.mediaPlayerContainer) this.$refs.mediaPlayerContainer.streamClosed(streamId)
|
||||
},
|
||||
streamProgress(data) {
|
||||
if (this.$refs.streamContainer) this.$refs.streamContainer.streamProgress(data)
|
||||
if (this.$refs.mediaPlayerContainer) this.$refs.mediaPlayerContainer.streamProgress(data)
|
||||
},
|
||||
streamReady() {
|
||||
if (this.$refs.streamContainer) this.$refs.streamContainer.streamReady()
|
||||
if (this.$refs.mediaPlayerContainer) this.$refs.mediaPlayerContainer.streamReady()
|
||||
},
|
||||
streamReset(payload) {
|
||||
if (this.$refs.streamContainer) this.$refs.streamContainer.streamReset(payload)
|
||||
if (this.$refs.mediaPlayerContainer) this.$refs.mediaPlayerContainer.streamReset(payload)
|
||||
},
|
||||
streamError({ id, errorMessage }) {
|
||||
this.$toast.error(`Stream Failed: ${errorMessage}`)
|
||||
if (this.$refs.streamContainer) this.$refs.streamContainer.streamError(id)
|
||||
if (this.$refs.mediaPlayerContainer) this.$refs.mediaPlayerContainer.streamError(id)
|
||||
},
|
||||
libraryAdded(library) {
|
||||
this.$store.commit('libraries/addUpdate', library)
|
||||
@@ -247,7 +247,7 @@ export default {
|
||||
this.multiSessionCurrentSessionId = null
|
||||
this.$toast.dismiss('multiple-sessions')
|
||||
}
|
||||
if (this.$refs.streamContainer) this.$refs.streamContainer.sessionClosedEvent(sessionId)
|
||||
if (this.$refs.mediaPlayerContainer) this.$refs.mediaPlayerContainer.sessionClosedEvent(sessionId)
|
||||
},
|
||||
userMediaProgressUpdate(payload) {
|
||||
this.$store.commit('user/updateMediaProgress', payload)
|
||||
@@ -328,6 +328,14 @@ export default {
|
||||
|
||||
this.$store.commit('libraries/setEReaderDevices', data.ereaderDevices)
|
||||
},
|
||||
customMetadataProviderAdded(provider) {
|
||||
if (!provider?.id) return
|
||||
this.$store.commit('scanners/addCustomMetadataProvider', provider)
|
||||
},
|
||||
customMetadataProviderRemoved(provider) {
|
||||
if (!provider?.id) return
|
||||
this.$store.commit('scanners/removeCustomMetadataProvider', provider)
|
||||
},
|
||||
initializeSocket() {
|
||||
this.socket = this.$nuxtSocket({
|
||||
name: process.env.NODE_ENV === 'development' ? 'dev' : 'prod',
|
||||
@@ -406,6 +414,10 @@ export default {
|
||||
this.socket.on('batch_quickmatch_complete', this.batchQuickMatchComplete)
|
||||
|
||||
this.socket.on('admin_message', this.adminMessageEvt)
|
||||
|
||||
// Custom metadata provider Listeners
|
||||
this.socket.on('custom_metadata_provider_added', this.customMetadataProviderAdded)
|
||||
this.socket.on('custom_metadata_provider_removed', this.customMetadataProviderRemoved)
|
||||
},
|
||||
showUpdateToast(versionData) {
|
||||
var ignoreVersion = localStorage.getItem('ignoreVersion')
|
||||
|
||||
@@ -25,11 +25,13 @@ module.exports = {
|
||||
meta: [
|
||||
{ charset: 'utf-8' },
|
||||
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
|
||||
{ hid: 'description', name: 'description', content: '' }
|
||||
{ hid: 'description', name: 'description', content: '' },
|
||||
{ hid: 'robots', name: 'robots', content: 'noindex' }
|
||||
],
|
||||
script: [],
|
||||
link: [
|
||||
{ rel: 'icon', type: 'image/x-icon', href: (process.env.ROUTER_BASE_PATH || '') + '/favicon.ico' }
|
||||
{ rel: 'icon', type: 'image/x-icon', href: (process.env.ROUTER_BASE_PATH || '') + '/favicon.ico' },
|
||||
{ rel: 'apple-touch-icon', href: (process.env.ROUTER_BASE_PATH || '') + '/ios_icon.png' }
|
||||
]
|
||||
},
|
||||
|
||||
@@ -39,6 +41,7 @@ module.exports = {
|
||||
|
||||
// Global CSS: https://go.nuxtjs.dev/config-css
|
||||
css: [
|
||||
'@/assets/tailwind.css',
|
||||
'@/assets/app.css'
|
||||
],
|
||||
|
||||
@@ -58,9 +61,7 @@ module.exports = {
|
||||
// Modules for dev and build (recommended): https://go.nuxtjs.dev/config-modules
|
||||
buildModules: [
|
||||
// https://go.nuxtjs.dev/tailwindcss
|
||||
'@nuxtjs/tailwindcss',
|
||||
'@nuxtjs/pwa',
|
||||
'@nuxt/postcss8'
|
||||
'@nuxtjs/pwa'
|
||||
],
|
||||
|
||||
// Modules: https://go.nuxtjs.dev/config-modules
|
||||
@@ -96,7 +97,7 @@ module.exports = {
|
||||
meta: {
|
||||
appleStatusBarStyle: 'black',
|
||||
name: 'Audiobookshelf',
|
||||
theme_color: '#373838',
|
||||
theme_color: '#232323',
|
||||
mobileAppIOS: true,
|
||||
nativeUI: true
|
||||
},
|
||||
@@ -104,16 +105,16 @@ module.exports = {
|
||||
name: 'Audiobookshelf',
|
||||
short_name: 'Audiobookshelf',
|
||||
display: 'standalone',
|
||||
background_color: '#373838',
|
||||
background_color: '#232323',
|
||||
icons: [
|
||||
{
|
||||
src: (process.env.ROUTER_BASE_PATH || '') + '/icon.svg',
|
||||
sizes: "any"
|
||||
sizes: 'any'
|
||||
},
|
||||
{
|
||||
src: (process.env.ROUTER_BASE_PATH || '') + '/icon64.png',
|
||||
type: "image/png",
|
||||
sizes: "64x64"
|
||||
src: (process.env.ROUTER_BASE_PATH || '') + '/icon192.png',
|
||||
type: 'image/png',
|
||||
sizes: 'any'
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
26967
client/package-lock.json
generated
26967
client/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "audiobookshelf-client",
|
||||
"version": "2.7.1",
|
||||
"version": "2.8.1",
|
||||
"buildNumber": 1,
|
||||
"description": "Self-hosted audiobook and podcast client",
|
||||
"main": "index.js",
|
||||
@@ -21,9 +21,9 @@
|
||||
"cron-parser": "^4.7.1",
|
||||
"date-fns": "^2.25.0",
|
||||
"epubjs": "^0.3.88",
|
||||
"hls.js": "^1.0.7",
|
||||
"hls.js": "^1.5.7",
|
||||
"libarchive.js": "^1.3.0",
|
||||
"nuxt": "^2.15.8",
|
||||
"nuxt": "^2.17.3",
|
||||
"nuxt-socket-io": "^1.1.18",
|
||||
"trix": "^1.3.1",
|
||||
"v-click-outside": "^3.1.2",
|
||||
@@ -31,11 +31,9 @@
|
||||
"vuedraggable": "^2.24.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@nuxt/postcss8": "^1.1.3",
|
||||
"@nuxtjs/pwa": "^3.3.5",
|
||||
"@nuxtjs/tailwindcss": "^4.2.1",
|
||||
"autoprefixer": "^10.4.7",
|
||||
"postcss": "^8.3.6",
|
||||
"tailwindcss": "^3.1.4"
|
||||
"tailwindcss": "^3.4.1"
|
||||
}
|
||||
}
|
||||
@@ -82,19 +82,33 @@ export default {
|
||||
this.$setLanguageCode(lang)
|
||||
},
|
||||
logout() {
|
||||
var rootSocket = this.$root.socket || {}
|
||||
const logoutPayload = {
|
||||
socketId: rootSocket.id
|
||||
// Disconnect from socket
|
||||
if (this.$root.socket) {
|
||||
console.log('Disconnecting from socket', this.$root.socket.id)
|
||||
this.$root.socket.removeAllListeners()
|
||||
this.$root.socket.disconnect()
|
||||
}
|
||||
this.$axios.$post('/logout', logoutPayload).catch((error) => {
|
||||
console.error(error)
|
||||
})
|
||||
|
||||
if (localStorage.getItem('token')) {
|
||||
localStorage.removeItem('token')
|
||||
}
|
||||
this.$store.commit('libraries/setUserPlaylists', [])
|
||||
this.$store.commit('libraries/setCollections', [])
|
||||
this.$router.push('/login')
|
||||
|
||||
this.$axios
|
||||
.$post('/logout')
|
||||
.then((logoutPayload) => {
|
||||
const redirect_url = logoutPayload.redirect_url
|
||||
|
||||
if (redirect_url) {
|
||||
window.location.href = redirect_url
|
||||
} else {
|
||||
this.$router.push('/login')
|
||||
}
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error(error)
|
||||
})
|
||||
},
|
||||
resetForm() {
|
||||
this.password = null
|
||||
|
||||
@@ -142,7 +142,7 @@
|
||||
</template>
|
||||
<div class="w-full h-full max-h-full text-sm rounded-lg bg-bg shadow-lg border border-black-300 relative">
|
||||
<div v-if="!chapterData" class="flex p-20">
|
||||
<ui-text-input-with-label v-model="asinInput" label="ASIN" />
|
||||
<ui-text-input-with-label v-model.trim="asinInput" label="ASIN" />
|
||||
<ui-dropdown v-model="regionInput" :label="$strings.LabelRegion" small :items="audibleRegions" class="w-32 mx-1" />
|
||||
<ui-btn small color="primary" class="mt-5" @click="findChapters">{{ $strings.ButtonSearch }}</ui-btn>
|
||||
</div>
|
||||
|
||||
@@ -17,7 +17,10 @@
|
||||
</div>
|
||||
|
||||
<p v-if="author.description" class="text-white text-opacity-60 uppercase text-xs mb-2">{{ $strings.LabelDescription }}</p>
|
||||
<p class="text-white max-w-3xl text-sm leading-5 whitespace-pre-wrap">{{ author.description }}</p>
|
||||
<p ref="description" id="author-description" class="text-white max-w-3xl text-base whitespace-pre-wrap" :class="{ 'show-full': showFullDescription }">{{ author.description }}</p>
|
||||
<button v-if="isDescriptionClamped" class="py-0.5 flex items-center text-slate-300 hover:text-white" @click="showFullDescription = !showFullDescription">
|
||||
{{ showFullDescription ? 'Read less' : 'Read more' }} <span class="material-icons text-xl pl-1">{{ showFullDescription ? 'expand_less' : 'expand_more' }}</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -62,7 +65,10 @@ export default {
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {}
|
||||
return {
|
||||
isDescriptionClamped: false,
|
||||
showFullDescription: false
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
streamLibraryItem() {
|
||||
@@ -82,6 +88,10 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
checkDescriptionClamped() {
|
||||
if (!this.$refs.description) return
|
||||
this.isDescriptionClamped = this.$refs.description.scrollHeight > this.$refs.description.clientHeight
|
||||
},
|
||||
editAuthor() {
|
||||
this.$store.commit('globals/showEditAuthorModal', this.author)
|
||||
},
|
||||
@@ -93,6 +103,7 @@ export default {
|
||||
series: this.authorSeries,
|
||||
libraryItems: this.libraryItems
|
||||
}
|
||||
this.$nextTick(this.checkDescriptionClamped)
|
||||
}
|
||||
},
|
||||
authorRemoved(author) {
|
||||
@@ -104,6 +115,7 @@ export default {
|
||||
},
|
||||
mounted() {
|
||||
if (!this.author) this.$router.replace('/')
|
||||
this.checkDescriptionClamped()
|
||||
|
||||
this.$root.socket.on('author_updated', this.authorUpdated)
|
||||
this.$root.socket.on('author_removed', this.authorRemoved)
|
||||
@@ -113,4 +125,19 @@ export default {
|
||||
this.$root.socket.off('author_removed', this.authorRemoved)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
#author-description {
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 4;
|
||||
max-height: 6.25rem;
|
||||
transition: all 0.3s ease-in-out;
|
||||
}
|
||||
#author-description.show-full {
|
||||
-webkit-line-clamp: unset;
|
||||
max-height: 999rem;
|
||||
}
|
||||
</style>
|
||||
@@ -20,44 +20,44 @@
|
||||
<div class="overflow-hidden">
|
||||
<transition name="slide">
|
||||
<div v-if="openMapOptions" class="flex flex-wrap">
|
||||
<div v-if="!isPodcastLibrary && !isMapAppend" class="flex items-center px-4 w-1/2">
|
||||
<div v-if="!isPodcastLibrary && !isMapAppend" class="flex items-center px-4 h-18 w-1/2">
|
||||
<ui-checkbox v-model="selectedBatchUsage.subtitle" />
|
||||
<ui-text-input-with-label ref="subtitleInput" v-model="batchDetails.subtitle" :disabled="!selectedBatchUsage.subtitle" :label="$strings.LabelSubtitle" class="mb-4 ml-4" />
|
||||
<ui-text-input-with-label ref="subtitleInput" v-model="batchDetails.subtitle" :disabled="!selectedBatchUsage.subtitle" :label="$strings.LabelSubtitle" class="mb-5 ml-4" />
|
||||
</div>
|
||||
<div v-if="!isPodcastLibrary" class="flex items-center px-4 w-1/2">
|
||||
<div v-if="!isPodcastLibrary" class="flex items-center px-4 h-18 w-1/2">
|
||||
<ui-checkbox v-model="selectedBatchUsage.authors" />
|
||||
<!-- Authors filter only contains authors in this library, uses filter data -->
|
||||
<ui-multi-select-query-input ref="authorsSelect" v-model="batchDetails.authors" :disabled="!selectedBatchUsage.authors" :label="$strings.LabelAuthors" filter-key="authors" class="mb-4 ml-4" />
|
||||
<ui-multi-select-query-input ref="authorsSelect" v-model="batchDetails.authors" :disabled="!selectedBatchUsage.authors" :label="$strings.LabelAuthors" filter-key="authors" class="mb-5 ml-4" />
|
||||
</div>
|
||||
<div v-if="!isPodcastLibrary && !isMapAppend" class="flex items-center px-4 w-1/2">
|
||||
<div v-if="!isPodcastLibrary && !isMapAppend" class="flex items-center px-4 h-18 w-1/2">
|
||||
<ui-checkbox v-model="selectedBatchUsage.publishedYear" />
|
||||
<ui-text-input-with-label ref="publishedYearInput" v-model="batchDetails.publishedYear" :disabled="!selectedBatchUsage.publishedYear" :label="$strings.LabelPublishYear" class="mb-4 ml-4" />
|
||||
<ui-text-input-with-label ref="publishedYearInput" v-model="batchDetails.publishedYear" :disabled="!selectedBatchUsage.publishedYear" :label="$strings.LabelPublishYear" class="mb-5 ml-4" />
|
||||
</div>
|
||||
<div v-if="!isPodcastLibrary" class="flex items-center px-4 w-1/2">
|
||||
<div v-if="!isPodcastLibrary" class="flex items-center px-4 h-18 w-1/2">
|
||||
<ui-checkbox v-model="selectedBatchUsage.series" />
|
||||
<ui-multi-select ref="seriesSelect" v-model="batchDetails.series" :disabled="!selectedBatchUsage.series" :label="$strings.LabelSeries" :items="existingSeriesNames" @newItem="newSeriesItem" @removedItem="removedSeriesItem" class="mb-4 ml-4" />
|
||||
<ui-multi-select ref="seriesSelect" v-model="batchDetails.series" :disabled="!selectedBatchUsage.series" :label="$strings.LabelSeries" :items="existingSeriesNames" @newItem="newSeriesItem" @removedItem="removedSeriesItem" class="mb-5 ml-4" />
|
||||
</div>
|
||||
<div class="flex items-center px-4 w-1/2">
|
||||
<div class="flex items-center px-4 h-18 w-1/2">
|
||||
<ui-checkbox v-model="selectedBatchUsage.genres" />
|
||||
<ui-multi-select ref="genresSelect" v-model="batchDetails.genres" :disabled="!selectedBatchUsage.genres" :label="$strings.LabelGenres" :items="genreItems" @newItem="newGenreItem" @removedItem="removedGenreItem" class="mb-4 ml-4" />
|
||||
<ui-multi-select ref="genresSelect" v-model="batchDetails.genres" :disabled="!selectedBatchUsage.genres" :label="$strings.LabelGenres" :items="genreItems" @newItem="newGenreItem" @removedItem="removedGenreItem" class="mb-5 ml-4" />
|
||||
</div>
|
||||
<div class="flex items-center px-4 w-1/2">
|
||||
<div class="flex items-center px-4 h-18 w-1/2">
|
||||
<ui-checkbox v-model="selectedBatchUsage.tags" />
|
||||
<ui-multi-select ref="tagsSelect" v-model="batchDetails.tags" :label="$strings.LabelTags" :disabled="!selectedBatchUsage.tags" :items="tagItems" @newItem="newTagItem" @removedItem="removedTagItem" class="mb-4 ml-4" />
|
||||
<ui-multi-select ref="tagsSelect" v-model="batchDetails.tags" :label="$strings.LabelTags" :disabled="!selectedBatchUsage.tags" :items="tagItems" @newItem="newTagItem" @removedItem="removedTagItem" class="mb-5 ml-4" />
|
||||
</div>
|
||||
<div v-if="!isPodcastLibrary" class="flex items-center px-4 w-1/2">
|
||||
<div v-if="!isPodcastLibrary" class="flex items-center px-4 h-18 w-1/2">
|
||||
<ui-checkbox v-model="selectedBatchUsage.narrators" />
|
||||
<ui-multi-select ref="narratorsSelect" v-model="batchDetails.narrators" :disabled="!selectedBatchUsage.narrators" :label="$strings.LabelNarrators" :items="narratorItems" @newItem="newNarratorItem" @removedItem="removedNarratorItem" class="mb-4 ml-4" />
|
||||
<ui-multi-select ref="narratorsSelect" v-model="batchDetails.narrators" :disabled="!selectedBatchUsage.narrators" :label="$strings.LabelNarrators" :items="narratorItems" @newItem="newNarratorItem" @removedItem="removedNarratorItem" class="mb-5 ml-4" />
|
||||
</div>
|
||||
<div v-if="!isPodcastLibrary && !isMapAppend" class="flex items-center px-4 w-1/2">
|
||||
<div v-if="!isPodcastLibrary && !isMapAppend" class="flex items-center px-4 h-18 w-1/2">
|
||||
<ui-checkbox v-model="selectedBatchUsage.publisher" />
|
||||
<ui-text-input-with-label ref="publisherInput" v-model="batchDetails.publisher" :disabled="!selectedBatchUsage.publisher" :label="$strings.LabelPublisher" class="mb-4 ml-4" />
|
||||
<ui-text-input-with-label ref="publisherInput" v-model="batchDetails.publisher" :disabled="!selectedBatchUsage.publisher" :label="$strings.LabelPublisher" class="mb-5 ml-4" />
|
||||
</div>
|
||||
<div v-if="!isMapAppend" class="flex items-center px-4 w-1/2">
|
||||
<div v-if="!isMapAppend" class="flex items-center px-4 h-18 w-1/2">
|
||||
<ui-checkbox v-model="selectedBatchUsage.language" />
|
||||
<ui-text-input-with-label ref="languageInput" v-model="batchDetails.language" :disabled="!selectedBatchUsage.language" :label="$strings.LabelLanguage" class="mb-4 ml-4" />
|
||||
<ui-text-input-with-label ref="languageInput" v-model="batchDetails.language" :disabled="!selectedBatchUsage.language" :label="$strings.LabelLanguage" class="mb-5 ml-4" />
|
||||
</div>
|
||||
<div v-if="!isMapAppend" class="flex items-center px-4 w-1/2">
|
||||
<div v-if="!isMapAppend" class="flex items-center px-4 h-18 w-1/2">
|
||||
<ui-checkbox v-model="selectedBatchUsage.explicit" />
|
||||
<div class="ml-4">
|
||||
<ui-checkbox
|
||||
@@ -71,6 +71,20 @@
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="!isPodcastLibrary && !isMapAppend" class="flex items-center px-4 h-18 w-1/2">
|
||||
<ui-checkbox v-model="selectedBatchUsage.abridged" />
|
||||
<div class="ml-4">
|
||||
<ui-checkbox
|
||||
v-model="batchDetails.abridged"
|
||||
:label="$strings.LabelAbridged"
|
||||
:disabled="!selectedBatchUsage.abridged"
|
||||
:checkbox-bg="!selectedBatchUsage.abridged ? 'bg' : 'primary'"
|
||||
:check-color="!selectedBatchUsage.abridged ? 'gray-600' : 'green-500'"
|
||||
border-color="gray-600"
|
||||
:label-class="!selectedBatchUsage.abridged ? 'pl-2 text-base text-gray-400 font-semibold' : 'pl-2 text-base font-semibold'"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="w-full flex items-center justify-end p-4">
|
||||
<ui-btn color="success" :disabled="!hasSelectedBatchUsage" :padding-x="8" small class="text-base" :loading="isProcessing" @click="mapBatchDetails">{{ $strings.ButtonApply }}</ui-btn>
|
||||
@@ -139,7 +153,8 @@ export default {
|
||||
narrators: [],
|
||||
publisher: null,
|
||||
language: null,
|
||||
explicit: false
|
||||
explicit: false,
|
||||
abridged: false
|
||||
},
|
||||
selectedBatchUsage: {
|
||||
subtitle: false,
|
||||
@@ -151,7 +166,8 @@ export default {
|
||||
narrators: false,
|
||||
publisher: false,
|
||||
language: false,
|
||||
explicit: false
|
||||
explicit: false,
|
||||
abridged: false
|
||||
},
|
||||
appendableKeys: ['authors', 'genres', 'tags', 'narrators', 'series'],
|
||||
openMapOptions: false
|
||||
|
||||
@@ -1,6 +1,18 @@
|
||||
<template>
|
||||
<div id="authentication-settings">
|
||||
<app-settings-content :header-text="$strings.HeaderAuthentication">
|
||||
<div class="w-full border border-white/10 rounded-xl p-4 my-4 bg-primary/25">
|
||||
<div class="flex items-center">
|
||||
<ui-checkbox v-model="showCustomLoginMessage" checkbox-bg="bg" />
|
||||
<p class="text-lg pl-4">Custom Message on Login</p>
|
||||
</div>
|
||||
<transition name="slide">
|
||||
<div v-if="showCustomLoginMessage" class="w-full pt-4">
|
||||
<ui-rich-text-editor v-model="newAuthSettings.authLoginCustomMessage" />
|
||||
</div>
|
||||
</transition>
|
||||
</div>
|
||||
|
||||
<div class="w-full border border-white/10 rounded-xl p-4 my-4 bg-primary/25">
|
||||
<div class="flex items-center">
|
||||
<ui-checkbox v-model="enableLocalAuth" checkbox-bg="bg" />
|
||||
@@ -103,6 +115,7 @@ export default {
|
||||
return {
|
||||
enableLocalAuth: false,
|
||||
enableOpenIDAuth: false,
|
||||
showCustomLoginMessage: false,
|
||||
savingSettings: false,
|
||||
newAuthSettings: {}
|
||||
}
|
||||
@@ -193,7 +206,7 @@ export default {
|
||||
|
||||
function isValidRedirectURI(uri) {
|
||||
// Check for somestring://someother/string
|
||||
const pattern = new RegExp('^\\w+://[\\w\\.-]+$', 'i')
|
||||
const pattern = new RegExp('^\\w+://[\\w\\.-]+(/[\\w\\./-]*)*$', 'i')
|
||||
return pattern.test(uri)
|
||||
}
|
||||
|
||||
@@ -221,6 +234,10 @@ export default {
|
||||
return
|
||||
}
|
||||
|
||||
if (!this.showCustomLoginMessage || !this.newAuthSettings.authLoginCustomMessage?.trim()) {
|
||||
this.newAuthSettings.authLoginCustomMessage = null
|
||||
}
|
||||
|
||||
this.newAuthSettings.authActiveAuthMethods = []
|
||||
if (this.enableLocalAuth) this.newAuthSettings.authActiveAuthMethods.push('local')
|
||||
if (this.enableOpenIDAuth) this.newAuthSettings.authActiveAuthMethods.push('openid')
|
||||
@@ -250,6 +267,7 @@ export default {
|
||||
}
|
||||
this.enableLocalAuth = this.authMethods.includes('local')
|
||||
this.enableOpenIDAuth = this.authMethods.includes('openid')
|
||||
this.showCustomLoginMessage = !!this.authSettings.authLoginCustomMessage
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
|
||||
@@ -178,9 +178,9 @@
|
||||
</a>
|
||||
<p class="pl-4 pr-2 text-sm text-yellow-400">
|
||||
{{ $strings.MessageJoinUsOn }}
|
||||
<a class="underline" href="https://discord.gg/pJsjuNCKRq" target="_blank">discord</a>
|
||||
<a class="underline" href="https://discord.gg/HQgCbd6E75" target="_blank">discord</a>
|
||||
</p>
|
||||
<a href="https://discord.gg/pJsjuNCKRq" target="_blank" class="text-white hover:text-gray-200 hover:scale-150 hover:rotate-6 transform duration-500">
|
||||
<a href="https://discord.gg/HQgCbd6E75" target="_blank" class="text-white hover:text-gray-200 hover:scale-150 hover:rotate-6 transform duration-500">
|
||||
<svg width="31" height="24" viewBox="0 0 71 55" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0)">
|
||||
<path
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
<template>
|
||||
<div class="relative">
|
||||
<app-settings-content :header-text="$strings.HeaderCustomMetadataProviders">
|
||||
<template #header-prefix>
|
||||
<nuxt-link to="/config/item-metadata-utils" class="w-8 h-8 flex items-center justify-center rounded-full cursor-pointer hover:bg-white hover:bg-opacity-10 text-center mr-2">
|
||||
<span class="material-icons text-2xl">arrow_back</span>
|
||||
</nuxt-link>
|
||||
</template>
|
||||
<template #header-items>
|
||||
<ui-tooltip :text="$strings.LabelClickForMoreInfo" class="inline-flex ml-2">
|
||||
<a href="https://www.audiobookshelf.org/guides/custom-metadata-providers" target="_blank" class="inline-flex">
|
||||
<span class="material-icons text-xl w-5 text-gray-200">help_outline</span>
|
||||
</a>
|
||||
</ui-tooltip>
|
||||
<div class="flex-grow" />
|
||||
|
||||
<ui-btn color="primary" small @click="setShowAddModal">{{ $strings.ButtonAdd }}</ui-btn>
|
||||
</template>
|
||||
|
||||
<tables-custom-metadata-provider-table :providers="providers" :processing.sync="processing" class="pt-2" @removed="providerRemoved" />
|
||||
<modals-add-custom-metadata-provider-modal ref="addModal" v-model="showAddModal" @added="providerAdded" />
|
||||
</app-settings-content>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
async asyncData({ store, redirect }) {
|
||||
if (!store.getters['user/getIsAdminOrUp']) {
|
||||
redirect('/')
|
||||
return
|
||||
}
|
||||
return {}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
showAddModal: false,
|
||||
processing: false,
|
||||
providers: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
providerRemoved(providerId) {
|
||||
this.providers = this.providers.filter((p) => p.id !== providerId)
|
||||
},
|
||||
providerAdded(provider) {
|
||||
this.providers.push(provider)
|
||||
},
|
||||
setShowAddModal() {
|
||||
this.showAddModal = true
|
||||
},
|
||||
loadProviders() {
|
||||
this.processing = true
|
||||
this.$axios
|
||||
.$get('/api/custom-metadata-providers')
|
||||
.then((res) => {
|
||||
this.providers = res.providers
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error('Failed', error)
|
||||
this.$toast.error('Failed to load custom metadata providers')
|
||||
})
|
||||
.finally(() => {
|
||||
this.processing = false
|
||||
})
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.loadProviders()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style></style>
|
||||
@@ -13,6 +13,12 @@
|
||||
<span class="material-icons">arrow_forward</span>
|
||||
</div>
|
||||
</nuxt-link>
|
||||
<nuxt-link to="/config/item-metadata-utils/custom-metadata-providers" class="block w-full rounded bg-primary/40 hover:bg-primary/60 text-gray-300 hover:text-white p-4 my-2">
|
||||
<div class="flex justify-between">
|
||||
<p>{{ $strings.HeaderCustomMetadataProviders }}</p>
|
||||
<span class="material-icons">arrow_forward</span>
|
||||
</div>
|
||||
</nuxt-link>
|
||||
</app-settings-content>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
</div>
|
||||
|
||||
<div class="relative">
|
||||
<div ref="container" class="relative w-full h-full bg-primary border-bg overflow-x-hidden overflow-y-auto text-red shadow-inner rounded-md" style="max-height: 800px; min-height: 550px">
|
||||
<div ref="container" id="log-container" class="relative w-full h-full bg-primary border-bg overflow-x-hidden overflow-y-auto text-red shadow-inner rounded-md" style="min-height: 550px">
|
||||
<template v-for="(log, index) in logs">
|
||||
<div :key="index" class="flex flex-nowrap px-2 py-1 items-start text-sm bg-opacity-10" :class="`bg-${logColors[log.level]}`">
|
||||
<p class="text-gray-400 w-36 font-mono text-xs">{{ log.timestamp }}</p>
|
||||
@@ -136,7 +136,15 @@ export default {
|
||||
this.loadedLogs = this.loadedLogs.slice(-5000)
|
||||
}
|
||||
},
|
||||
init(attempts = 0) {
|
||||
async loadLoggerData() {
|
||||
const loggerData = await this.$axios.$get('/api/logger-data').catch((error) => {
|
||||
console.error('Failed to load logger data', error)
|
||||
this.$toast.error('Failed to load logger data')
|
||||
})
|
||||
|
||||
this.loadedLogs = loggerData?.currentDailyLogs || []
|
||||
},
|
||||
async init(attempts = 0) {
|
||||
if (!this.$root.socket) {
|
||||
if (attempts > 10) {
|
||||
return console.error('Failed to setup socket listeners')
|
||||
@@ -147,14 +155,11 @@ export default {
|
||||
return
|
||||
}
|
||||
|
||||
await this.loadLoggerData()
|
||||
|
||||
this.newServerSettings = this.serverSettings ? { ...this.serverSettings } : {}
|
||||
this.$root.socket.on('daily_logs', this.dailyLogsLoaded)
|
||||
this.$root.socket.on('log', this.logEvtReceived)
|
||||
this.$root.socket.emit('set_log_listener', this.newServerSettings.logLevel)
|
||||
this.$root.socket.emit('fetch_daily_logs')
|
||||
},
|
||||
dailyLogsLoaded(lines) {
|
||||
this.loadedLogs = lines
|
||||
}
|
||||
},
|
||||
updated() {
|
||||
@@ -166,13 +171,15 @@ export default {
|
||||
beforeDestroy() {
|
||||
if (!this.$root.socket) return
|
||||
this.$root.socket.emit('remove_log_listener')
|
||||
this.$root.socket.off('daily_logs', this.dailyLogsLoaded)
|
||||
this.$root.socket.off('log', this.logEvtReceived)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
#log-container {
|
||||
height: calc(100vh - 285px);
|
||||
}
|
||||
.logmessage {
|
||||
width: calc(100% - 208px);
|
||||
}
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
<div class="flex items-center my-2">
|
||||
<div class="flex-grow" />
|
||||
<div class="hidden sm:inline-flex items-center">
|
||||
<p class="text-sm">{{ $strings.LabelRowsPerPage }}</p>
|
||||
<p class="text-sm whitespace-nowrap">{{ $strings.LabelRowsPerPage }}</p>
|
||||
<ui-dropdown v-model="itemsPerPage" :items="itemsPerPageOptions" small class="w-24 mx-2" @input="updatedItemsPerPage" />
|
||||
</div>
|
||||
<div class="inline-flex items-center">
|
||||
|
||||
@@ -125,7 +125,10 @@
|
||||
</div>
|
||||
|
||||
<div class="my-4 w-full">
|
||||
<p class="text-base text-gray-100 whitespace-pre-line">{{ description }}</p>
|
||||
<p ref="description" id="item-description" class="text-base text-gray-100 whitespace-pre-line mb-1" :class="{ 'show-full': showFullDescription }">{{ description }}</p>
|
||||
<button v-if="isDescriptionClamped" class="py-0.5 flex items-center text-slate-300 hover:text-white" @click="showFullDescription = !showFullDescription">
|
||||
{{ showFullDescription ? 'Read less' : 'Read more' }} <span class="material-icons text-xl pl-1">{{ showFullDescription ? 'expand_less' : 'expand_more' }}</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div v-if="invalidAudioFiles.length" class="bg-error border-red-800 shadow-md p-4">
|
||||
@@ -182,7 +185,9 @@ export default {
|
||||
podcastFeedEpisodes: [],
|
||||
episodesDownloading: [],
|
||||
episodeDownloadsQueued: [],
|
||||
showBookmarksModal: false
|
||||
showBookmarksModal: false,
|
||||
isDescriptionClamped: false,
|
||||
showFullDescription: false
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
@@ -596,10 +601,15 @@ export default {
|
||||
this.$store.commit('setBookshelfBookIds', [])
|
||||
this.$store.commit('showEditModal', this.libraryItem)
|
||||
},
|
||||
checkDescriptionClamped() {
|
||||
if (!this.$refs.description) return
|
||||
this.isDescriptionClamped = this.$refs.description.scrollHeight > this.$refs.description.clientHeight
|
||||
},
|
||||
libraryItemUpdated(libraryItem) {
|
||||
if (libraryItem.id === this.libraryItemId) {
|
||||
console.log('Item was updated', libraryItem)
|
||||
this.libraryItem = libraryItem
|
||||
this.$nextTick(this.checkDescriptionClamped)
|
||||
}
|
||||
},
|
||||
clearProgressClick() {
|
||||
@@ -756,6 +766,8 @@ export default {
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.checkDescriptionClamped()
|
||||
|
||||
this.episodeDownloadsQueued = this.libraryItem.episodeDownloadsQueued || []
|
||||
this.episodesDownloading = this.libraryItem.episodesDownloading || []
|
||||
|
||||
@@ -782,3 +794,18 @@ export default {
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
#item-description {
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 4;
|
||||
max-height: 6.25rem;
|
||||
transition: all 0.3s ease-in-out;
|
||||
}
|
||||
#item-description.show-full {
|
||||
-webkit-line-clamp: unset;
|
||||
max-height: 999rem;
|
||||
}
|
||||
</style>
|
||||
@@ -3,7 +3,7 @@
|
||||
<app-book-shelf-toolbar page="authors" is-home :authors="authors" />
|
||||
<div id="bookshelf" class="w-full h-full p-8 overflow-y-auto">
|
||||
<div class="flex flex-wrap justify-center">
|
||||
<template v-for="author in authors">
|
||||
<template v-for="author in authorsSorted">
|
||||
<cards-author-card :key="author.id" :author="author" :width="160" :height="200" class="p-3" @edit="editAuthor" />
|
||||
</template>
|
||||
</div>
|
||||
@@ -44,6 +44,22 @@ export default {
|
||||
},
|
||||
selectedAuthor() {
|
||||
return this.$store.state.globals.selectedAuthor
|
||||
},
|
||||
authorSortBy() {
|
||||
return this.$store.getters['user/getUserSetting']('authorSortBy') || 'name'
|
||||
},
|
||||
authorSortDesc() {
|
||||
return !!this.$store.getters['user/getUserSetting']('authorSortDesc')
|
||||
},
|
||||
authorsSorted() {
|
||||
const sortProp = this.authorSortBy
|
||||
const bDesc = this.authorSortDesc ? -1 : 1
|
||||
return this.authors.sort((a, b) => {
|
||||
if (typeof a[sortProp] === 'number' && typeof b[sortProp] === 'number') {
|
||||
return a[sortProp] > b[sortProp] ? bDesc : -bDesc
|
||||
}
|
||||
return a[sortProp].localeCompare(b[sortProp], undefined, { sensitivity: 'base' }) * bDesc
|
||||
})
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
<p v-if="!recentEpisodes.length && !processing" class="text-center text-xl">{{ $strings.MessageNoEpisodes }}</p>
|
||||
<template v-for="(episode, index) in episodesMapped">
|
||||
<div :key="episode.id" class="flex py-5 cursor-pointer relative" @click.stop="clickEpisode(episode)">
|
||||
<covers-preview-cover :src="$store.getters['globals/getLibraryItemCoverSrcById'](episode.libraryItemId)" :width="96" :book-cover-aspect-ratio="bookCoverAspectRatio" :show-resolution="false" class="hidden md:block" />
|
||||
<covers-preview-cover :src="$store.getters['globals/getLibraryItemCoverSrcById'](episode.libraryItemId, episode.updatedAt)" :width="96" :book-cover-aspect-ratio="bookCoverAspectRatio" :show-resolution="false" class="hidden md:block" />
|
||||
<div class="flex-grow pl-4 max-w-2xl">
|
||||
<!-- mobile -->
|
||||
<div class="flex md:hidden mb-2">
|
||||
<covers-preview-cover :src="$store.getters['globals/getLibraryItemCoverSrcById'](episode.libraryItemId)" :width="48" :book-cover-aspect-ratio="bookCoverAspectRatio" :show-resolution="false" class="md:hidden" />
|
||||
<covers-preview-cover :src="$store.getters['globals/getLibraryItemCoverSrcById'](episode.libraryItemId, episode.updatedAt)" :width="48" :book-cover-aspect-ratio="bookCoverAspectRatio" :show-resolution="false" class="md:hidden" />
|
||||
<div class="flex-grow px-2">
|
||||
<div class="flex items-center">
|
||||
<div class="flex" @click.stop>
|
||||
@@ -45,7 +45,7 @@
|
||||
<widgets-podcast-type-indicator :type="episode.episodeType" />
|
||||
</div>
|
||||
|
||||
<p class="text-sm text-gray-200 mb-4 episode-subtitle-long" v-html="episode.subtitle || episode.description" />
|
||||
<p class="text-sm text-gray-200 mb-4 line-clamp-4" v-html="episode.subtitle || episode.description" />
|
||||
|
||||
<div class="flex items-center">
|
||||
<button class="h-8 px-4 border border-white border-opacity-20 hover:bg-white hover:bg-opacity-10 rounded-full flex items-center justify-center cursor-pointer focus:outline-none" :class="episode.progress && episode.progress.isFinished ? 'text-white text-opacity-40' : ''" @click.stop="playClick(episode)">
|
||||
@@ -54,9 +54,16 @@
|
||||
<p class="pl-2 pr-1 text-sm font-semibold">{{ getButtonText(episode) }}</p>
|
||||
</button>
|
||||
|
||||
<button v-if="libraryItemIdStreaming && !isStreamingFromDifferentLibrary" class="h-8 w-8 flex justify-center items-center mx-2" :class="playerQueueEpisodeIdMap[episode.id] ? 'text-success' : ''" @click.stop="queueBtnClick(episode)">
|
||||
<span class="material-icons-outlined text-2xl">{{ playerQueueEpisodeIdMap[episode.id] ? 'playlist_add_check' : 'playlist_add' }}</span>
|
||||
</button>
|
||||
<ui-tooltip v-if="libraryItemIdStreaming && !isStreamingFromDifferentLibrary" :text="playerQueueEpisodeIdMap[episode.id] ? $strings.MessageRemoveFromPlayerQueue : $strings.MessageAddToPlayerQueue" :class="playerQueueEpisodeIdMap[episode.id] ? 'text-success' : ''" direction="top">
|
||||
<ui-icon-btn :icon="playerQueueEpisodeIdMap[episode.id] ? 'playlist_add_check' : 'playlist_play'" borderless @click="queueBtnClick(episode)" />
|
||||
<!-- <button class="h-8 w-8 flex justify-center items-center mx-2" :class="playerQueueEpisodeIdMap[episode.id] ? 'text-success' : ''" @click.stop="queueBtnClick(episode)">
|
||||
<span class="material-icons-outlined text-2xl">{{ playerQueueEpisodeIdMap[episode.id] ? 'playlist_add_check' : 'playlist_add' }}</span>
|
||||
</button> -->
|
||||
</ui-tooltip>
|
||||
|
||||
<ui-tooltip :text="$strings.LabelYourPlaylists" direction="top">
|
||||
<ui-icon-btn icon="playlist_add" borderless @click="clickAddToPlaylist(episode)" />
|
||||
</ui-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -136,6 +143,15 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
clickAddToPlaylist(episode) {
|
||||
// Makeshift libraryItem
|
||||
const libraryItem = {
|
||||
id: episode.libraryItemId,
|
||||
media: episode.podcast
|
||||
}
|
||||
this.$store.commit('globals/setSelectedPlaylistItems', [{ libraryItem: libraryItem, episode }])
|
||||
this.$store.commit('globals/setShowPlaylistsModal', true)
|
||||
},
|
||||
async clickEpisode(episode) {
|
||||
if (this.openingItem) return
|
||||
this.openingItem = true
|
||||
|
||||
@@ -86,6 +86,9 @@ export default {
|
||||
},
|
||||
streamLibraryItem() {
|
||||
return this.$store.state.streamLibraryItem
|
||||
},
|
||||
librarySettings() {
|
||||
return this.$store.getters['libraries/getCurrentLibrarySettings']
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
@@ -151,7 +154,12 @@ export default {
|
||||
async submitSearch(term) {
|
||||
this.processing = true
|
||||
this.termSearched = ''
|
||||
let results = await this.$axios.$get(`/api/search/podcast?term=${encodeURIComponent(term)}`).catch((error) => {
|
||||
|
||||
const searchParams = new URLSearchParams({
|
||||
term,
|
||||
country: this.librarySettings?.podcastSearchRegion || 'us'
|
||||
})
|
||||
let results = await this.$axios.$get(`/api/search/podcast?${searchParams.toString()}`).catch((error) => {
|
||||
console.error('Search request failed', error)
|
||||
return []
|
||||
})
|
||||
|
||||
@@ -1,6 +1,13 @@
|
||||
<template>
|
||||
<div class="w-full h-screen bg-bg">
|
||||
<div class="w-full flex h-full items-center justify-center">
|
||||
<div id="page-wrapper" class="w-full h-screen overflow-y-auto">
|
||||
<div class="absolute z-0 top-0 left-0 px-6 py-3">
|
||||
<div class="flex items-center">
|
||||
<img src="~static/icon.svg" alt="Audiobookshelf Logo" class="w-10 min-w-10 h-10" />
|
||||
<h1 class="text-xl ml-4 hidden lg:block hover:underline">audiobookshelf</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="relative z-10 w-full flex h-full items-center justify-center">
|
||||
<div v-if="criticalError" class="w-full max-w-md rounded border border-error border-opacity-25 bg-error bg-opacity-10 p-4">
|
||||
<p class="text-center text-lg font-semibold">{{ $strings.MessageServerCouldNotBeReached }}</p>
|
||||
</div>
|
||||
@@ -10,9 +17,9 @@
|
||||
|
||||
<form @submit.prevent="submitServerSetup">
|
||||
<p class="text-lg font-semibold mb-2 pl-1 text-center">Create Root User</p>
|
||||
<ui-text-input-with-label v-model="newRoot.username" label="Username" :disabled="processing" class="w-full mb-3 text-sm" />
|
||||
<ui-text-input-with-label v-model="newRoot.password" label="Password" type="password" :disabled="processing" class="w-full mb-3 text-sm" />
|
||||
<ui-text-input-with-label v-model="confirmPassword" label="Confirm Password" type="password" :disabled="processing" class="w-full mb-3 text-sm" />
|
||||
<ui-text-input-with-label v-model.trim="newRoot.username" label="Username" :disabled="processing" class="w-full mb-3 text-sm" />
|
||||
<ui-text-input-with-label v-model.trim="newRoot.password" label="Password" type="password" :disabled="processing" class="w-full mb-3 text-sm" />
|
||||
<ui-text-input-with-label v-model.trim="confirmPassword" label="Confirm Password" type="password" :disabled="processing" class="w-full mb-3 text-sm" />
|
||||
|
||||
<p class="text-lg font-semibold mt-6 mb-2 pl-1 text-center">Directory Paths</p>
|
||||
<ui-text-input-with-label v-model="ConfigPath" label="Config Path" disabled class="w-full mb-3 text-sm" />
|
||||
@@ -23,30 +30,34 @@
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div v-else-if="isInit" class="w-full max-w-md px-8 pb-8 pt-4 -mt-40">
|
||||
<p class="text-3xl text-white text-center mb-4">{{ $strings.HeaderLogin }}</p>
|
||||
<div v-else-if="isInit" class="w-full max-w-md px-8 pb-8 pt-4 lg:-mt-40">
|
||||
<div class="bg-bg rounded-md shadow-lg border border-white border-opacity-5 p-4">
|
||||
<p class="text-2xl font-semibold text-center text-white mb-4">{{ $strings.HeaderLogin }}</p>
|
||||
|
||||
<div class="w-full h-px bg-white bg-opacity-10 my-4" />
|
||||
<div class="w-full h-px bg-white bg-opacity-10 my-4" />
|
||||
|
||||
<p v-if="error" class="text-error text-center py-2">{{ error }}</p>
|
||||
<p v-if="loginCustomMessage" class="py-2 default-style mb-2" v-html="loginCustomMessage"></p>
|
||||
|
||||
<form v-show="login_local" @submit.prevent="submitForm">
|
||||
<label class="text-xs text-gray-300 uppercase">{{ $strings.LabelUsername }}</label>
|
||||
<ui-text-input v-model="username" :disabled="processing" class="mb-3 w-full" />
|
||||
<p v-if="error" class="text-error text-center py-2">{{ error }}</p>
|
||||
|
||||
<label class="text-xs text-gray-300 uppercase">{{ $strings.LabelPassword }}</label>
|
||||
<ui-text-input v-model="password" type="password" :disabled="processing" class="w-full mb-3" />
|
||||
<div class="w-full flex justify-end py-3">
|
||||
<ui-btn type="submit" :disabled="processing" color="primary" class="leading-none">{{ processing ? 'Checking...' : $strings.ButtonSubmit }}</ui-btn>
|
||||
<form v-show="login_local" @submit.prevent="submitForm">
|
||||
<label class="text-xs text-gray-300 uppercase">{{ $strings.LabelUsername }}</label>
|
||||
<ui-text-input v-model.trim="username" :disabled="processing" class="mb-3 w-full" inputName="username" />
|
||||
|
||||
<label class="text-xs text-gray-300 uppercase">{{ $strings.LabelPassword }}</label>
|
||||
<ui-text-input v-model.trim="password" type="password" :disabled="processing" class="w-full mb-3" inputName="password" />
|
||||
<div class="w-full flex justify-end py-3">
|
||||
<ui-btn type="submit" :disabled="processing" color="primary" class="leading-none">{{ processing ? 'Checking...' : $strings.ButtonSubmit }}</ui-btn>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<div v-if="login_local && login_openid" class="w-full h-px bg-white bg-opacity-10 my-4" />
|
||||
|
||||
<div class="w-full flex py-3">
|
||||
<a v-if="login_openid" :href="openidAuthUri" class="w-full abs-btn outline-none rounded-md shadow-md relative border border-gray-600 text-center bg-primary text-white px-8 py-2 leading-none">
|
||||
{{ openIDButtonText }}
|
||||
</a>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<div v-if="login_local && login_openid" class="w-full h-px bg-white bg-opacity-10 my-4" />
|
||||
|
||||
<div class="w-full flex py-3">
|
||||
<a v-if="login_openid" :href="openidAuthUri" class="w-full abs-btn outline-none rounded-md shadow-md relative border border-gray-600 text-center bg-primary text-white px-8 py-2 leading-none">
|
||||
{{ openIDButtonText }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -113,6 +124,9 @@ export default {
|
||||
},
|
||||
openIDButtonText() {
|
||||
return this.authFormData?.authOpenIDButtonText || 'Login with OpenId'
|
||||
},
|
||||
loginCustomMessage() {
|
||||
return this.authFormData?.authLoginCustomMessage || null
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
@@ -276,4 +290,4 @@ export default {
|
||||
this.checkStatus()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</script>
|
||||
|
||||
@@ -139,11 +139,30 @@ export default class LocalAudioPlayer extends EventEmitter {
|
||||
}
|
||||
|
||||
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}`)
|
||||
// }
|
||||
startPosition: this.startTime || -1,
|
||||
fragLoadPolicy: {
|
||||
default: {
|
||||
maxTimeToFirstByteMs: 10000,
|
||||
maxLoadTimeMs: 120000,
|
||||
timeoutRetry: {
|
||||
maxNumRetry: 4,
|
||||
retryDelayMs: 0,
|
||||
maxRetryDelayMs: 0,
|
||||
},
|
||||
errorRetry: {
|
||||
maxNumRetry: 8,
|
||||
retryDelayMs: 1000,
|
||||
maxRetryDelayMs: 8000,
|
||||
shouldRetry: (retryConfig, retryCount, isTimeout, httpStatus, retry) => {
|
||||
if (httpStatus?.code === 404 && retryConfig?.maxNumRetry > retryCount) {
|
||||
console.log(`[HLS] Server 404 for fragment retry ${retryCount} of ${retryConfig.maxNumRetry}`)
|
||||
return true
|
||||
}
|
||||
return retry
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
this.hlsInstance = new Hls(hlsOptions)
|
||||
|
||||
@@ -156,9 +175,15 @@ export default class LocalAudioPlayer extends EventEmitter {
|
||||
})
|
||||
|
||||
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')
|
||||
} else if (data.details === Hls.ErrorDetails.FRAG_LOAD_ERROR) {
|
||||
// Only show error if the fragment is not being retried
|
||||
if (data.errorAction?.action !== 5) {
|
||||
console.error('[HLS] FRAG LOAD ERROR', data)
|
||||
}
|
||||
} else {
|
||||
console.error('[HLS] Error', data.type, data.details, data)
|
||||
}
|
||||
})
|
||||
this.hlsInstance.on(Hls.Events.DESTROYING, () => {
|
||||
|
||||
@@ -10,16 +10,21 @@ const languageCodeMap = {
|
||||
'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' },
|
||||
'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' },
|
||||
'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 => {
|
||||
return {
|
||||
@@ -28,6 +33,18 @@ 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 = {
|
||||
'us': { label: 'United States' },
|
||||
'cn': { label: '中国' }
|
||||
}
|
||||
Vue.prototype.$podcastSearchRegionOptions = Object.keys(podcastSearchRegionMap).map(code => {
|
||||
return {
|
||||
text: podcastSearchRegionMap[code].label,
|
||||
value: code
|
||||
}
|
||||
})
|
||||
|
||||
Vue.prototype.$languageCodes = {
|
||||
default: defaultCode,
|
||||
current: defaultCode,
|
||||
@@ -83,7 +100,7 @@ async function loadi18n(code) {
|
||||
|
||||
Vue.prototype.$setDateFnsLocale(languageCodeMap[code].dateFnsLocale)
|
||||
|
||||
this.$eventBus.$emit('change-lang', code)
|
||||
this?.$eventBus?.$emit('change-lang', code)
|
||||
return true
|
||||
}
|
||||
|
||||
|
||||
@@ -156,14 +156,14 @@ Vue.prototype.$copyToClipboard = (str, ctx) => {
|
||||
}
|
||||
|
||||
function xmlToJson(xml) {
|
||||
const json = {};
|
||||
const json = {}
|
||||
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;
|
||||
const key = res[1] || res[3]
|
||||
const value = res[2] && xmlToJson(res[2])
|
||||
json[key] = ((value && Object.keys(value).length) ? value : res[2]) || null
|
||||
|
||||
}
|
||||
return json;
|
||||
return json
|
||||
}
|
||||
Vue.prototype.$xmlToJson = xmlToJson
|
||||
|
||||
|
||||
BIN
client/static/ios_icon.png
Normal file
BIN
client/static/ios_icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 33 KiB |
2
client/static/robots.txt
Normal file
2
client/static/robots.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
User-Agent: *
|
||||
Disallow: /
|
||||
@@ -99,7 +99,7 @@ export const getters = {
|
||||
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}`
|
||||
return `${rootState.routerBasePath}/api/items/${libraryItemId}/cover?token=${userToken}&ts=${lastUpdate}${raw ? '&raw=1' : ''}`
|
||||
},
|
||||
getLibraryItemCoverSrcById: (state, getters, rootState, rootGetters) => (libraryItemId, timestamp = null, raw = false) => {
|
||||
const placeholder = `${rootState.routerBasePath}/book_placeholder.jpg`
|
||||
|
||||
@@ -113,6 +113,7 @@ export const actions = {
|
||||
const library = data.library
|
||||
const filterData = data.filterdata
|
||||
const issues = data.issues || 0
|
||||
const customMetadataProviders = data.customMetadataProviders || []
|
||||
const numUserPlaylists = data.numUserPlaylists
|
||||
|
||||
dispatch('user/checkUpdateLibrarySortFilter', library.mediaType, { root: true })
|
||||
@@ -126,6 +127,8 @@ export const actions = {
|
||||
commit('setLibraryIssues', issues)
|
||||
commit('setLibraryFilterData', filterData)
|
||||
commit('setNumUserPlaylists', numUserPlaylists)
|
||||
commit('scanners/setCustomMetadataProviders', customMetadataProviders, { root: true })
|
||||
|
||||
commit('setCurrentLibrary', libraryId)
|
||||
return data
|
||||
})
|
||||
|
||||
@@ -71,8 +71,56 @@ export const state = () => ({
|
||||
]
|
||||
})
|
||||
|
||||
export const getters = {}
|
||||
export const getters = {
|
||||
checkBookProviderExists: state => (providerValue) => {
|
||||
return state.providers.some(p => p.value === providerValue)
|
||||
},
|
||||
checkPodcastProviderExists: state => (providerValue) => {
|
||||
return state.podcastProviders.some(p => p.value === providerValue)
|
||||
}
|
||||
}
|
||||
|
||||
export const actions = {}
|
||||
|
||||
export const mutations = {}
|
||||
export const mutations = {
|
||||
addCustomMetadataProvider(state, provider) {
|
||||
if (provider.mediaType === 'book') {
|
||||
if (state.providers.some(p => p.value === provider.slug)) return
|
||||
state.providers.push({
|
||||
text: provider.name,
|
||||
value: provider.slug
|
||||
})
|
||||
} else {
|
||||
if (state.podcastProviders.some(p => p.value === provider.slug)) return
|
||||
state.podcastProviders.push({
|
||||
text: provider.name,
|
||||
value: provider.slug
|
||||
})
|
||||
}
|
||||
},
|
||||
removeCustomMetadataProvider(state, provider) {
|
||||
if (provider.mediaType === 'book') {
|
||||
state.providers = state.providers.filter(p => p.value !== provider.slug)
|
||||
} else {
|
||||
state.podcastProviders = state.podcastProviders.filter(p => p.value !== provider.slug)
|
||||
}
|
||||
},
|
||||
setCustomMetadataProviders(state, providers) {
|
||||
if (!providers?.length) return
|
||||
|
||||
const mediaType = providers[0].mediaType
|
||||
if (mediaType === 'book') {
|
||||
// clear previous values, and add new values to the end
|
||||
state.providers = state.providers.filter((p) => !p.value.startsWith('custom-'))
|
||||
state.providers = [
|
||||
...state.providers,
|
||||
...providers.map((p) => ({
|
||||
text: p.name,
|
||||
value: p.slug
|
||||
}))
|
||||
]
|
||||
} else {
|
||||
// Podcast providers not supported yet
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -11,7 +11,9 @@ export const state = () => ({
|
||||
useChapterTrack: false,
|
||||
seriesSortBy: 'name',
|
||||
seriesSortDesc: false,
|
||||
seriesFilterBy: 'all'
|
||||
seriesFilterBy: 'all',
|
||||
authorSortBy: 'name',
|
||||
authorSortDesc: false
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
@@ -32,6 +32,8 @@
|
||||
"ButtonHide": "Skrýt",
|
||||
"ButtonHome": "Domů",
|
||||
"ButtonIssues": "Problémy",
|
||||
"ButtonJumpBackward": "Jump Backward",
|
||||
"ButtonJumpForward": "Jump Forward",
|
||||
"ButtonLatest": "Nejnovější",
|
||||
"ButtonLibrary": "Knihovna",
|
||||
"ButtonLogout": "Odhlásit",
|
||||
@@ -41,12 +43,17 @@
|
||||
"ButtonMatchAllAuthors": "Spárovat všechny autory",
|
||||
"ButtonMatchBooks": "Spárovat Knihy",
|
||||
"ButtonNevermind": "Nevadí",
|
||||
"ButtonNext": "Next",
|
||||
"ButtonNextChapter": "Next Chapter",
|
||||
"ButtonOk": "Ok",
|
||||
"ButtonOpenFeed": "Otevřít kanál",
|
||||
"ButtonOpenManager": "Otevřít správce",
|
||||
"ButtonPause": "Pause",
|
||||
"ButtonPlay": "Přehrát",
|
||||
"ButtonPlaying": "Hraje",
|
||||
"ButtonPlaylists": "Seznamy skladeb",
|
||||
"ButtonPrevious": "Previous",
|
||||
"ButtonPreviousChapter": "Previous Chapter",
|
||||
"ButtonPurgeAllCache": "Vyčistit veškerou mezipaměť",
|
||||
"ButtonPurgeItemsCache": "Vyčistit mezipaměť položek",
|
||||
"ButtonPurgeMediaProgress": "Vyčistit průběh médií",
|
||||
@@ -54,6 +61,7 @@
|
||||
"ButtonQueueRemoveItem": "Odstranit z fronty",
|
||||
"ButtonQuickMatch": "Rychlé přiřazení",
|
||||
"ButtonRead": "Číst",
|
||||
"ButtonRefresh": "Refresh",
|
||||
"ButtonRemove": "Odstranit",
|
||||
"ButtonRemoveAll": "Odstranit vše",
|
||||
"ButtonRemoveAllLibraryItems": "Odstranit všechny položky knihovny",
|
||||
@@ -73,6 +81,7 @@
|
||||
"ButtonSelectFolderPath": "Vybrat cestu ke složce",
|
||||
"ButtonSeries": "Série",
|
||||
"ButtonSetChaptersFromTracks": "Nastavit kapitoly ze stop",
|
||||
"ButtonShare": "Share",
|
||||
"ButtonShiftTimes": "Časy posunu",
|
||||
"ButtonShow": "Zobrazit",
|
||||
"ButtonStartM4BEncode": "Spustit kódování M4B",
|
||||
@@ -104,6 +113,7 @@
|
||||
"HeaderCollectionItems": "Položky kolekce",
|
||||
"HeaderCover": "Obálka",
|
||||
"HeaderCurrentDownloads": "Aktuální stahování",
|
||||
"HeaderCustomMetadataProviders": "Custom Metadata Providers",
|
||||
"HeaderDetails": "Podrobnosti",
|
||||
"HeaderDownloadQueue": "Fronta stahování",
|
||||
"HeaderEbookFiles": "Soubory elektronických knih",
|
||||
@@ -174,6 +184,7 @@
|
||||
"HeaderUpdateDetails": "Aktualizovat podrobnosti",
|
||||
"HeaderUpdateLibrary": "Aktualizovat knihovnu",
|
||||
"HeaderUsers": "Uživatelé",
|
||||
"HeaderYearReview": "Year {0} in Review",
|
||||
"HeaderYourStats": "Vaše statistiky",
|
||||
"LabelAbridged": "Zkráceno",
|
||||
"LabelAccountType": "Typ účtu",
|
||||
@@ -281,8 +292,11 @@
|
||||
"LabelFinished": "Dokončeno",
|
||||
"LabelFolder": "Složka",
|
||||
"LabelFolders": "Složky",
|
||||
"LabelFontBold": "Bold",
|
||||
"LabelFontFamily": "Rodina písem",
|
||||
"LabelFontItalic": "Italic",
|
||||
"LabelFontScale": "Měřítko písma",
|
||||
"LabelFontStrikethrough": "Strikethrough",
|
||||
"LabelFormat": "Formát",
|
||||
"LabelGenre": "Žánr",
|
||||
"LabelGenres": "Žánry",
|
||||
@@ -342,7 +356,9 @@
|
||||
"LabelMetaTags": "Metaznačky",
|
||||
"LabelMinute": "Minuta",
|
||||
"LabelMissing": "Chybějící",
|
||||
"LabelMissingEbook": "Has no ebook",
|
||||
"LabelMissingParts": "Chybějící díly",
|
||||
"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 <code>audiobookshelf://oauth</code>, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (<code>*</code>) as the sole entry permits any URI.",
|
||||
"LabelMore": "Více",
|
||||
@@ -382,11 +398,13 @@
|
||||
"LabelPermissionsDownload": "Může stahovat",
|
||||
"LabelPermissionsUpdate": "Může aktualizovat",
|
||||
"LabelPermissionsUpload": "Může nahrávat",
|
||||
"LabelPersonalYearReview": "Your Year in Review ({0})",
|
||||
"LabelPhotoPathURL": "Cesta k fotografii/URL",
|
||||
"LabelPlaylists": "Seznamy skladeb",
|
||||
"LabelPlayMethod": "Metoda přehrávání",
|
||||
"LabelPodcast": "Podcast",
|
||||
"LabelPodcasts": "Podcasty",
|
||||
"LabelPodcastSearchRegion": "Oblast vyhledávání podcastu",
|
||||
"LabelPodcastType": "Typ podcastu",
|
||||
"LabelPort": "Port",
|
||||
"LabelPrefixesToIgnore": "Předpony, které se mají ignorovat (nerozlišují se malá a velká písmena)",
|
||||
@@ -403,6 +421,7 @@
|
||||
"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",
|
||||
@@ -425,6 +444,7 @@
|
||||
"LabelSeries": "Série",
|
||||
"LabelSeriesName": "Název série",
|
||||
"LabelSeriesProgress": "Průběh série",
|
||||
"LabelServerYearReview": "Server Year in Review ({0})",
|
||||
"LabelSetEbookAsPrimary": "Nastavit jako primární",
|
||||
"LabelSetEbookAsSupplementary": "Nastavit jako doplňkové",
|
||||
"LabelSettingsAudiobooksOnly": "Pouze audioknihy",
|
||||
@@ -446,6 +466,8 @@
|
||||
"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.",
|
||||
"LabelSettingsParseSubtitles": "Analzyovat podtitul",
|
||||
"LabelSettingsParseSubtitlesHelp": "Rozparsovat podtitul z názvů složek audioknih.<br>Podtiul musí být oddělen znakem \" - \"<br>tj. \"Název knihy - Zde Podtitul\" má podtitul \"Zde podtitul\"",
|
||||
"LabelSettingsPreferMatchedMetadata": "Preferovat spárovaná metadata",
|
||||
@@ -491,6 +513,10 @@
|
||||
"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",
|
||||
"LabelTheme": "Téma",
|
||||
"LabelThemeDark": "Tmavé",
|
||||
"LabelThemeLight": "Světlé",
|
||||
@@ -516,6 +542,7 @@
|
||||
"LabelTracksSingleTrack": "Jedna stopa",
|
||||
"LabelType": "Typ",
|
||||
"LabelUnabridged": "Nezkráceno",
|
||||
"LabelUndo": "Undo",
|
||||
"LabelUnknown": "Neznámý",
|
||||
"LabelUpdateCover": "Aktualizovat obálku",
|
||||
"LabelUpdateCoverHelp": "Povolit přepsání existujících obálek pro vybrané knihy, pokud je nalezena shoda",
|
||||
@@ -536,6 +563,8 @@
|
||||
"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",
|
||||
"LabelYourAudiobookDuration": "Doba trvání vaší audioknihy",
|
||||
"LabelYourBookmarks": "Vaše záložky",
|
||||
"LabelYourPlaylists": "Vaše seznamy přehrávání",
|
||||
@@ -668,7 +697,6 @@
|
||||
"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.",
|
||||
"NoteFolderPicker": "Poznámka: složky, které jsou již namapovány, nebudou zobrazeny",
|
||||
"NoteFolderPickerDebian": "Poznámka: Výběr složek pro instalaci debianu není plně implementován. Cestu ke své knihovně byste měli zadat přímo.",
|
||||
"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í.",
|
||||
"NoteUploaderFoldersWithMediaFiles": "Se složkami s multimediálními soubory bude zacházeno jako se samostatnými položkami knihovny.",
|
||||
|
||||
@@ -32,6 +32,8 @@
|
||||
"ButtonHide": "Skjul",
|
||||
"ButtonHome": "Hjem",
|
||||
"ButtonIssues": "Problemer",
|
||||
"ButtonJumpBackward": "Jump Backward",
|
||||
"ButtonJumpForward": "Jump Forward",
|
||||
"ButtonLatest": "Seneste",
|
||||
"ButtonLibrary": "Bibliotek",
|
||||
"ButtonLogout": "Log ud",
|
||||
@@ -41,12 +43,17 @@
|
||||
"ButtonMatchAllAuthors": "Match alle forfattere",
|
||||
"ButtonMatchBooks": "Match bøger",
|
||||
"ButtonNevermind": "Glem det",
|
||||
"ButtonNext": "Next",
|
||||
"ButtonNextChapter": "Next Chapter",
|
||||
"ButtonOk": "OK",
|
||||
"ButtonOpenFeed": "Åbn feed",
|
||||
"ButtonOpenManager": "Åbn manager",
|
||||
"ButtonPause": "Pause",
|
||||
"ButtonPlay": "Afspil",
|
||||
"ButtonPlaying": "Afspiller",
|
||||
"ButtonPlaylists": "Afspilningslister",
|
||||
"ButtonPrevious": "Previous",
|
||||
"ButtonPreviousChapter": "Previous Chapter",
|
||||
"ButtonPurgeAllCache": "Ryd al cache",
|
||||
"ButtonPurgeItemsCache": "Ryd elementcache",
|
||||
"ButtonPurgeMediaProgress": "Ryd Medieforløb",
|
||||
@@ -54,6 +61,7 @@
|
||||
"ButtonQueueRemoveItem": "Fjern fra kø",
|
||||
"ButtonQuickMatch": "Hurtig Match",
|
||||
"ButtonRead": "Læs",
|
||||
"ButtonRefresh": "Refresh",
|
||||
"ButtonRemove": "Fjern",
|
||||
"ButtonRemoveAll": "Fjern Alle",
|
||||
"ButtonRemoveAllLibraryItems": "Fjern Alle Bibliotekselementer",
|
||||
@@ -73,6 +81,7 @@
|
||||
"ButtonSelectFolderPath": "Vælg Mappen Sti",
|
||||
"ButtonSeries": "Serie",
|
||||
"ButtonSetChaptersFromTracks": "Sæt kapitler fra spor",
|
||||
"ButtonShare": "Share",
|
||||
"ButtonShiftTimes": "Skift Tider",
|
||||
"ButtonShow": "Vis",
|
||||
"ButtonStartM4BEncode": "Start M4B Kode",
|
||||
@@ -104,6 +113,7 @@
|
||||
"HeaderCollectionItems": "Samlingselementer",
|
||||
"HeaderCover": "Omslag",
|
||||
"HeaderCurrentDownloads": "Nuværende Downloads",
|
||||
"HeaderCustomMetadataProviders": "Custom Metadata Providers",
|
||||
"HeaderDetails": "Detaljer",
|
||||
"HeaderDownloadQueue": "Download Kø",
|
||||
"HeaderEbookFiles": "E-bogsfiler",
|
||||
@@ -174,6 +184,7 @@
|
||||
"HeaderUpdateDetails": "Opdater Detaljer",
|
||||
"HeaderUpdateLibrary": "Opdater Bibliotek",
|
||||
"HeaderUsers": "Brugere",
|
||||
"HeaderYearReview": "Year {0} in Review",
|
||||
"HeaderYourStats": "Dine Statistikker",
|
||||
"LabelAbridged": "Abridged",
|
||||
"LabelAccountType": "Kontotype",
|
||||
@@ -281,8 +292,11 @@
|
||||
"LabelFinished": "Færdig",
|
||||
"LabelFolder": "Mappe",
|
||||
"LabelFolders": "Mapper",
|
||||
"LabelFontBold": "Bold",
|
||||
"LabelFontFamily": "Fontfamilie",
|
||||
"LabelFontItalic": "Italic",
|
||||
"LabelFontScale": "Skriftstørrelse",
|
||||
"LabelFontStrikethrough": "Strikethrough",
|
||||
"LabelFormat": "Format",
|
||||
"LabelGenre": "Genre",
|
||||
"LabelGenres": "Genrer",
|
||||
@@ -342,7 +356,9 @@
|
||||
"LabelMetaTags": "Meta-tags",
|
||||
"LabelMinute": "Minut",
|
||||
"LabelMissing": "Mangler",
|
||||
"LabelMissingEbook": "Has no ebook",
|
||||
"LabelMissingParts": "Manglende dele",
|
||||
"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 <code>audiobookshelf://oauth</code>, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (<code>*</code>) as the sole entry permits any URI.",
|
||||
"LabelMore": "Mere",
|
||||
@@ -382,11 +398,13 @@
|
||||
"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",
|
||||
"LabelPodcastSearchRegion": "Podcast søgeområde",
|
||||
"LabelPodcastType": "Podcast type",
|
||||
"LabelPort": "Port",
|
||||
"LabelPrefixesToIgnore": "Præfikser der skal ignoreres (skal ikke skelne mellem store og små bogstaver)",
|
||||
@@ -403,6 +421,7 @@
|
||||
"LabelRecentlyAdded": "Senest tilføjet",
|
||||
"LabelRecentSeries": "Seneste serie",
|
||||
"LabelRecommended": "Anbefalet",
|
||||
"LabelRedo": "Redo",
|
||||
"LabelRegion": "Region",
|
||||
"LabelReleaseDate": "Udgivelsesdato",
|
||||
"LabelRemoveCover": "Fjern omslag",
|
||||
@@ -425,6 +444,7 @@
|
||||
"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",
|
||||
@@ -446,6 +466,8 @@
|
||||
"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.<br>Undertitler skal adskilles af \" - \"<br>f.eks. \"Bogtitel - En undertitel her\" har undertitlen \"En undertitel her\"",
|
||||
"LabelSettingsPreferMatchedMetadata": "Foretræk matchede metadata",
|
||||
@@ -491,6 +513,10 @@
|
||||
"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",
|
||||
@@ -516,6 +542,7 @@
|
||||
"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",
|
||||
@@ -536,6 +563,8 @@
|
||||
"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",
|
||||
@@ -668,7 +697,6 @@
|
||||
"NoteChangeRootPassword": "Root-brugeren er den eneste bruger, der kan have en tom adgangskode",
|
||||
"NoteChapterEditorTimes": "Bemærk: Første kapitel starttidspunkt skal forblive kl. 0:00, og det sidste kapitel starttidspunkt må ikke overstige denne lydbogs varighed.",
|
||||
"NoteFolderPicker": "Bemærk: Mapper, der allerede er mappet, vises ikke",
|
||||
"NoteFolderPickerDebian": "Bemærk: Mappicker for Debian-installationen er ikke fuldt implementeret. Du bør indtaste stien til dit bibliotek direkte.",
|
||||
"NoteRSSFeedPodcastAppsHttps": "Advarsel: De fleste podcast-apps kræver, at RSS-feedets URL bruger HTTPS",
|
||||
"NoteRSSFeedPodcastAppsPubDate": "Advarsel: En eller flere af dine episoder har ikke en Pub Date. Nogle podcast-apps kræver dette.",
|
||||
"NoteUploaderFoldersWithMediaFiles": "Mapper med mediefiler håndteres som separate bibliotekselementer.",
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
"ButtonAuthors": "Autoren",
|
||||
"ButtonBrowseForFolder": "Ordnersuche",
|
||||
"ButtonCancel": "Abbrechen",
|
||||
"ButtonCancelEncode": "Abbruch der Verschlüsselung",
|
||||
"ButtonCancelEncode": "Codierung abbrechen",
|
||||
"ButtonChangeRootPassword": "Hauptpasswort ändern",
|
||||
"ButtonCheckAndDownloadNewEpisodes": "Überprüfe & lade neue Episoden herunter",
|
||||
"ButtonChooseAFolder": "Wähle einen Ordner",
|
||||
@@ -32,6 +32,8 @@
|
||||
"ButtonHide": "Ausblenden",
|
||||
"ButtonHome": "Startseite",
|
||||
"ButtonIssues": "Probleme",
|
||||
"ButtonJumpBackward": "Zurück springen",
|
||||
"ButtonJumpForward": "Vorwärts springen",
|
||||
"ButtonLatest": "Neuste",
|
||||
"ButtonLibrary": "Bibliothek",
|
||||
"ButtonLogout": "Abmelden",
|
||||
@@ -41,19 +43,25 @@
|
||||
"ButtonMatchAllAuthors": "Online Metadaten-Abgleich (alle Autoren)",
|
||||
"ButtonMatchBooks": "Online Metadaten-Abgleich (alle Medien)",
|
||||
"ButtonNevermind": "Abbrechen",
|
||||
"ButtonNext": "Vor",
|
||||
"ButtonNextChapter": "Nächstes Kapitel",
|
||||
"ButtonOk": "Ok",
|
||||
"ButtonOpenFeed": "Feed öffnen",
|
||||
"ButtonOpenManager": "Manager öffnen",
|
||||
"ButtonPause": "Pause",
|
||||
"ButtonPlay": "Abspielen",
|
||||
"ButtonPlaying": "Spielt",
|
||||
"ButtonPlaylists": "Wiedergabelisten",
|
||||
"ButtonPurgeAllCache": "Lösche alle Zwischenspeicher",
|
||||
"ButtonPurgeItemsCache": "Lösche Medien-Zwischenspeicher",
|
||||
"ButtonPrevious": "Zurück",
|
||||
"ButtonPreviousChapter": "Vorheriges Kapitel",
|
||||
"ButtonPurgeAllCache": "Cache leeren",
|
||||
"ButtonPurgeItemsCache": "Lösche Medien-Cache",
|
||||
"ButtonPurgeMediaProgress": "Lösche Hörfortschritte",
|
||||
"ButtonQueueAddItem": "Zur Warteschlange hinzufügen",
|
||||
"ButtonQueueRemoveItem": "Aus der Warteschlange entfernen",
|
||||
"ButtonQuickMatch": "Schnellabgleich",
|
||||
"ButtonRead": "Lese",
|
||||
"ButtonRead": "Lesen",
|
||||
"ButtonRefresh": "Neu Laden",
|
||||
"ButtonRemove": "Löschen",
|
||||
"ButtonRemoveAll": "Alles löschen",
|
||||
"ButtonRemoveAllLibraryItems": "Lösche alle Bibliothekseinträge",
|
||||
@@ -70,9 +78,10 @@
|
||||
"ButtonScan": "Partial-Scan (nur geänderte/neue Medien)",
|
||||
"ButtonScanLibrary": "Bibliothek scannen",
|
||||
"ButtonSearch": "Suchen",
|
||||
"ButtonSelectFolderPath": "Auswahl Ordnerpfad",
|
||||
"ButtonSelectFolderPath": "Ordnerpfad auswählen",
|
||||
"ButtonSeries": "Serien",
|
||||
"ButtonSetChaptersFromTracks": "Kapitelerstellung aus Audiodateien",
|
||||
"ButtonShare": "Teilen",
|
||||
"ButtonShiftTimes": "Zeitverschiebung",
|
||||
"ButtonShow": "Anzeigen",
|
||||
"ButtonStartM4BEncode": "M4B-Kodierung starten",
|
||||
@@ -88,7 +97,7 @@
|
||||
"ButtonViewAll": "Alles anzeigen",
|
||||
"ButtonYes": "Ja",
|
||||
"ErrorUploadFetchMetadataAPI": "Fehler beim Abrufen der Metadaten",
|
||||
"ErrorUploadFetchMetadataNoResults": "Metadaten konnten nicht abgerufen werden. Versuchen Sie den Titel und oder den Autor zu updaten",
|
||||
"ErrorUploadFetchMetadataNoResults": "Metadaten konnten nicht abgerufen werden. Versuche den Titel und oder den Autor zu aktualisieren",
|
||||
"ErrorUploadLacksTitle": "Es muss ein Titel eingegeben werden",
|
||||
"HeaderAccount": "Konto",
|
||||
"HeaderAdvanced": "Erweitert",
|
||||
@@ -104,21 +113,22 @@
|
||||
"HeaderCollectionItems": "Sammlungseinträge",
|
||||
"HeaderCover": "Titelbild",
|
||||
"HeaderCurrentDownloads": "Aktuelle Downloads",
|
||||
"HeaderCustomMetadataProviders": "Benutzerdefinierte Metadata Anbieter",
|
||||
"HeaderDetails": "Details",
|
||||
"HeaderDownloadQueue": "Download Warteschlange",
|
||||
"HeaderEbookFiles": "E-Book Dateien",
|
||||
"HeaderEmail": "Email",
|
||||
"HeaderEmailSettings": "Email Einstellungen",
|
||||
"HeaderEpisodes": "Episoden",
|
||||
"HeaderEreaderDevices": "Ereader Geräte",
|
||||
"HeaderEreaderSettings": "Ereader Einstellungen",
|
||||
"HeaderEreaderDevices": "E-Reader Geräte",
|
||||
"HeaderEreaderSettings": "E-Reader Einstellungen",
|
||||
"HeaderFiles": "Dateien",
|
||||
"HeaderFindChapters": "Kapitel suchen",
|
||||
"HeaderIgnoredFiles": "Ignorierte Dateien",
|
||||
"HeaderItemFiles": "Medien-Dateien",
|
||||
"HeaderItemMetadataUtils": "Metadaten",
|
||||
"HeaderLastListeningSession": "Letzte Hörsitzung",
|
||||
"HeaderLatestEpisodes": "Letzte Episoden",
|
||||
"HeaderLatestEpisodes": "Neueste Episoden",
|
||||
"HeaderLibraries": "Bibliotheken",
|
||||
"HeaderLibraryFiles": "Alle Dateien",
|
||||
"HeaderLibraryStats": "Bibliotheksstatistiken",
|
||||
@@ -130,7 +140,7 @@
|
||||
"HeaderManageTags": "Tags verwalten",
|
||||
"HeaderMapDetails": "Stapelverarbeitung",
|
||||
"HeaderMatch": "Metadaten",
|
||||
"HeaderMetadataOrderOfPrecedence": "Metadata order of precedence",
|
||||
"HeaderMetadataOrderOfPrecedence": "Metadaten Rangfolge",
|
||||
"HeaderMetadataToEmbed": "Einzubettende Metadaten",
|
||||
"HeaderNewAccount": "Neues Konto",
|
||||
"HeaderNewLibrary": "Neue Bibliothek",
|
||||
@@ -138,9 +148,9 @@
|
||||
"HeaderOpenIDConnectAuthentication": "OpenID Connect Authentifizierung",
|
||||
"HeaderOpenRSSFeed": "RSS-Feed öffnen",
|
||||
"HeaderOtherFiles": "Sonstige Dateien",
|
||||
"HeaderPasswordAuthentication": "Password Authentifizierung",
|
||||
"HeaderPasswordAuthentication": "Passwort Authentifizierung",
|
||||
"HeaderPermissions": "Berechtigungen",
|
||||
"HeaderPlayerQueue": "Spieler Warteschlange",
|
||||
"HeaderPlayerQueue": "Player Warteschlange",
|
||||
"HeaderPlaylist": "Wiedergabeliste",
|
||||
"HeaderPlaylistItems": "Einträge in der Wiedergabeliste",
|
||||
"HeaderPodcastsToAdd": "Podcasts zum Hinzufügen",
|
||||
@@ -149,7 +159,7 @@
|
||||
"HeaderRemoveEpisodes": "Lösche {0} Episoden",
|
||||
"HeaderRSSFeedGeneral": "RSS Details",
|
||||
"HeaderRSSFeedIsOpen": "RSS-Feed ist geöffnet",
|
||||
"HeaderRSSFeeds": "RSS Feeds",
|
||||
"HeaderRSSFeeds": "RSS-Feeds",
|
||||
"HeaderSavedMediaProgress": "Gespeicherte Hörfortschritte",
|
||||
"HeaderSchedule": "Zeitplan",
|
||||
"HeaderScheduleLibraryScans": "Automatische Bibliotheksscans",
|
||||
@@ -160,7 +170,7 @@
|
||||
"HeaderSettingsExperimental": "Experimentelle Funktionen",
|
||||
"HeaderSettingsGeneral": "Allgemein",
|
||||
"HeaderSettingsScanner": "Scanner",
|
||||
"HeaderSleepTimer": "Einschlaf-Timer",
|
||||
"HeaderSleepTimer": "Sleep-Timer",
|
||||
"HeaderStatsLargestItems": "Größte Medien",
|
||||
"HeaderStatsLongestItems": "Längste Medien (h)",
|
||||
"HeaderStatsMinutesListeningChart": "Hörminuten (letzte 7 Tage)",
|
||||
@@ -174,6 +184,7 @@
|
||||
"HeaderUpdateDetails": "Details aktualisieren",
|
||||
"HeaderUpdateLibrary": "Bibliothek aktualisieren",
|
||||
"HeaderUsers": "Benutzer",
|
||||
"HeaderYearReview": "Jahr {0} in Übersicht",
|
||||
"HeaderYourStats": "Eigene Statistiken",
|
||||
"LabelAbridged": "Gekürzt",
|
||||
"LabelAccountType": "Kontoart",
|
||||
@@ -191,8 +202,8 @@
|
||||
"LabelAll": "Alle",
|
||||
"LabelAllUsers": "Alle Benutzer",
|
||||
"LabelAllUsersExcludingGuests": "Alle Benutzer außer Gästen",
|
||||
"LabelAllUsersIncludingGuests": "All Benutzer und Gäste",
|
||||
"LabelAlreadyInYourLibrary": "In der Bibliothek vorhanden",
|
||||
"LabelAllUsersIncludingGuests": "Alle Benutzer und Gäste",
|
||||
"LabelAlreadyInYourLibrary": "Bereits in der Bibliothek",
|
||||
"LabelAppend": "Anhängen",
|
||||
"LabelAuthor": "Autor",
|
||||
"LabelAuthorFirstLast": "Autor (Vorname Nachname)",
|
||||
@@ -204,7 +215,7 @@
|
||||
"LabelAutoLaunch": "Automatischer Start",
|
||||
"LabelAutoLaunchDescription": "Automatische Weiterleitung zum Authentifizierungsanbieter beim Navigieren zur Anmeldeseite (manueller Überschreibungspfad <code>/login?autoLaunch=0</code>)",
|
||||
"LabelAutoRegister": "Automatische Registrierung",
|
||||
"LabelAutoRegisterDescription": "Automatische neue Neutzer anlegen nach dem Einloggen",
|
||||
"LabelAutoRegisterDescription": "Automatische neue Neutzer anlegen nach dem Registrieren",
|
||||
"LabelBackToUser": "Zurück zum Benutzer",
|
||||
"LabelBackupLocation": "Backup-Ort",
|
||||
"LabelBackupsEnableAutomaticBackups": "Automatische Sicherung aktivieren",
|
||||
@@ -212,14 +223,14 @@
|
||||
"LabelBackupsMaxBackupSize": "Maximale Sicherungsgröße (in GB)",
|
||||
"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 Sie bereits mehrere Sicherungen als die definierte max. Anzahl haben, sollten Sie diese manuell entfernen.",
|
||||
"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",
|
||||
"LabelBooks": "Bücher",
|
||||
"LabelButtonText": "Button Text",
|
||||
"LabelChangePassword": "Passwort ändern",
|
||||
"LabelChannels": "Kanäle",
|
||||
"LabelChapters": "Kapitel",
|
||||
"LabelChaptersFound": "gefundene Kapitel",
|
||||
"LabelChaptersFound": "Gefundene Kapitel",
|
||||
"LabelChapterTitle": "Kapitelüberschrift",
|
||||
"LabelClickForMoreInfo": "Klicken für mehr Informationen",
|
||||
"LabelClosePlayer": "Player schließen",
|
||||
@@ -230,7 +241,7 @@
|
||||
"LabelComplete": "Vollständig",
|
||||
"LabelConfirmPassword": "Passwort bestätigen",
|
||||
"LabelContinueListening": "Weiterhören",
|
||||
"LabelContinueReading": "Lesen fortsetzen",
|
||||
"LabelContinueReading": "Weiterlesen",
|
||||
"LabelContinueSeries": "Serien fortsetzen",
|
||||
"LabelCover": "Titelbild",
|
||||
"LabelCoverImageURL": "URL des Titelbildes",
|
||||
@@ -245,7 +256,7 @@
|
||||
"LabelDeselectAll": "Alles abwählen",
|
||||
"LabelDevice": "Gerät",
|
||||
"LabelDeviceInfo": "Geräteinformationen",
|
||||
"LabelDeviceIsAvailableTo": "Dem Geärt ist es möglich zu ...",
|
||||
"LabelDeviceIsAvailableTo": "Dem Gerät ist es möglich zu ...",
|
||||
"LabelDirectory": "Verzeichnis",
|
||||
"LabelDiscFromFilename": "CD aus dem Dateinamen",
|
||||
"LabelDiscFromMetadata": "CD aus den Metadaten",
|
||||
@@ -258,10 +269,10 @@
|
||||
"LabelEbooks": "E-Books",
|
||||
"LabelEdit": "Bearbeiten",
|
||||
"LabelEmail": "Email",
|
||||
"LabelEmailSettingsFromAddress": "Von Address",
|
||||
"LabelEmailSettingsSecure": "Sicherheit",
|
||||
"LabelEmailSettingsSecureHelp": "Wenn \"true\", verwendet die Verbindung TLS, wenn sie eine Verbindung zum Server herstellt. Bei \"false\" wird TLS verwendet, wenn der Server die STARTTLS-Erweiterung unterstützt. In den meisten Fällen setzen Sie diesen Wert auf \"true\", wenn Sie eine Verbindung zu Port 465 herstellen. Für Port 587 oder 25 behalten Sie den Wert \"false\" bei. (von nodemailer.com/smtp/#authentication)",
|
||||
"LabelEmailSettingsTestAddress": "Test Addresse",
|
||||
"LabelEmailSettingsFromAddress": "Von Adresse",
|
||||
"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",
|
||||
"LabelEmbeddedCover": "Eingebettetes Cover",
|
||||
"LabelEnable": "Aktivieren",
|
||||
"LabelEnd": "Ende",
|
||||
@@ -278,17 +289,20 @@
|
||||
"LabelFilename": "Dateiname",
|
||||
"LabelFilterByUser": "Nach Benutzern filtern",
|
||||
"LabelFindEpisodes": "Episoden suchen",
|
||||
"LabelFinished": "beendet",
|
||||
"LabelFinished": "Beendet",
|
||||
"LabelFolder": "Ordner",
|
||||
"LabelFolders": "Verzeichnisse",
|
||||
"LabelFontBold": "Fett",
|
||||
"LabelFontFamily": "Schriftfamilie",
|
||||
"LabelFontItalic": "Kursiv",
|
||||
"LabelFontScale": "Schriftgröße",
|
||||
"LabelFontStrikethrough": "Durchgestrichen",
|
||||
"LabelFormat": "Format",
|
||||
"LabelGenre": "Kategorie",
|
||||
"LabelGenres": "Kategorien",
|
||||
"LabelHardDeleteFile": "Datei dauerhaft löschen",
|
||||
"LabelHasEbook": "mit E-Book",
|
||||
"LabelHasSupplementaryEbook": "mit zusätlichem E-Book",
|
||||
"LabelHasEbook": "E-Book verfügbar",
|
||||
"LabelHasSupplementaryEbook": "Ergänzendes E-Book verfügbar",
|
||||
"LabelHighestPriority": "Höchste Priorität",
|
||||
"LabelHost": "Host",
|
||||
"LabelHour": "Stunde",
|
||||
@@ -311,9 +325,9 @@
|
||||
"LabelItem": "Medium",
|
||||
"LabelLanguage": "Sprache",
|
||||
"LabelLanguageDefaultServer": "Standard-Server-Sprache",
|
||||
"LabelLastBookAdded": "Zuletzt hinzugefügtes Medium",
|
||||
"LabelLastBookUpdated": "Zuletzt aktualisiertes Medium",
|
||||
"LabelLastSeen": "Zuletzt angesehen",
|
||||
"LabelLastBookAdded": "Zuletzt hinzugefügtes Buch",
|
||||
"LabelLastBookUpdated": "Zuletzt aktualisiertes Buch",
|
||||
"LabelLastSeen": "Zuletzt gesehen",
|
||||
"LabelLastTime": "Letztes Mal",
|
||||
"LabelLastUpdate": "Letzte Aktualisierung",
|
||||
"LabelLayout": "Layout",
|
||||
@@ -330,35 +344,37 @@
|
||||
"LabelLogLevelDebug": "Fehlersuche",
|
||||
"LabelLogLevelInfo": "Informationen",
|
||||
"LabelLogLevelWarn": "Warnungen",
|
||||
"LabelLookForNewEpisodesAfterDate": "Suchen nach neuen Episoden nach diesem Datum",
|
||||
"LabelLookForNewEpisodesAfterDate": "Suche nach neuen Episoden nach diesem Datum",
|
||||
"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 von Ihrem SSO-Anbieter zugeordnet",
|
||||
"LabelMatchExistingUsersByDescription": "Wird zum Verbinden vorhandener Benutzer verwendet. Sobald die Verbindung hergestellt ist, wird den Benutzern eine eindeutige ID vom SSO-Anbieter zugeordnet",
|
||||
"LabelMediaPlayer": "Mediaplayer",
|
||||
"LabelMediaType": "Medientyp",
|
||||
"LabelMetadataOrderOfPrecedenceDescription": "Eine Höhere Priorität Quelle für Metadaten wird die Metadaten aus eine Quelle mit niedrigerer Priorität überschreiben.",
|
||||
"LabelMetadataOrderOfPrecedenceDescription": "Höher priorisierte Quellen für Metadaten überschreiben Metadaten aus Quellen die niedriger priorisiert sind.",
|
||||
"LabelMetadataProvider": "Metadatenanbieter",
|
||||
"LabelMetaTag": "Meta Schlagwort",
|
||||
"LabelMetaTags": "Meta Tags",
|
||||
"LabelMinute": "Minute",
|
||||
"LabelMissing": "Fehlend",
|
||||
"LabelMissingEbook": "E-Book fehlt",
|
||||
"LabelMissingParts": "Fehlende Teile",
|
||||
"LabelMissingSupplementaryEbook": "Ergänzendes E-Book 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 <code>audiobookshelf://oauth</code>, den Sie entfernen oder durch zusätzliche URIs für die Integration von Drittanbieter-Apps ergänzen können. Die Verwendung eines Sternchens (<code>*</code>) als alleiniger Eintrag erlaubt jede URI.",
|
||||
"LabelMobileRedirectURIsDescription": "Dies ist eine Whitelist gültiger Umleitungs-URIs für mobile Apps. Der Standardwert ist <code>audiobookshelf://oauth</code>, den du entfernen oder durch zusätzliche URIs für die Integration von Drittanbieter-Apps ergänzen kannst. Die Verwendung eines Sternchens (<code>*</code>) als alleiniger Eintrag erlaubt jede URI.",
|
||||
"LabelMore": "Mehr",
|
||||
"LabelMoreInfo": "Mehr Info",
|
||||
"LabelMoreInfo": "Mehr Infos",
|
||||
"LabelName": "Name",
|
||||
"LabelNarrator": "Erzähler",
|
||||
"LabelNarrators": "Erzähler",
|
||||
"LabelNew": "Neu",
|
||||
"LabelNewestAuthors": "Neuste Autoren",
|
||||
"LabelNewestAuthors": "Neueste Autoren",
|
||||
"LabelNewestEpisodes": "Neueste Episoden",
|
||||
"LabelNewPassword": "Neues Passwort",
|
||||
"LabelNextBackupDate": "Nächstes Sicherungsdatum",
|
||||
"LabelNextScheduledRun": "Nächster planmäßiger Durchlauf",
|
||||
"LabelNoEpisodesSelected": "Keine Episoden ausgewählt",
|
||||
"LabelNotes": "Hinweise",
|
||||
"LabelNotFinished": "nicht beendet",
|
||||
"LabelNotes": "Notizen",
|
||||
"LabelNotFinished": "Nicht beendet",
|
||||
"LabelNotificationAppriseURL": "Apprise URL(s)",
|
||||
"LabelNotificationAvailableVariables": "Verfügbare Variablen",
|
||||
"LabelNotificationBodyTemplate": "Textvorlage",
|
||||
@@ -371,7 +387,7 @@
|
||||
"LabelNotStarted": "Nicht begonnen",
|
||||
"LabelNumberOfBooks": "Anzahl der Hörbücher",
|
||||
"LabelNumberOfEpisodes": "Anzahl der Episoden",
|
||||
"LabelOpenRSSFeed": "Öffne RSS Feed",
|
||||
"LabelOpenRSSFeed": "Öffne RSS-Feed",
|
||||
"LabelOverwrite": "Überschreiben",
|
||||
"LabelPassword": "Passwort",
|
||||
"LabelPath": "Pfad",
|
||||
@@ -382,27 +398,30 @@
|
||||
"LabelPermissionsDownload": "Herunterladen",
|
||||
"LabelPermissionsUpdate": "Aktualisieren",
|
||||
"LabelPermissionsUpload": "Hochladen",
|
||||
"LabelPersonalYearReview": "Dein Jahr in Übersicht ({0})",
|
||||
"LabelPhotoPathURL": "Foto Pfad/URL",
|
||||
"LabelPlaylists": "Wiedergabelisten",
|
||||
"LabelPlayMethod": "Abspielmethode",
|
||||
"LabelPodcast": "Podcast",
|
||||
"LabelPodcasts": "Podcasts",
|
||||
"LabelPodcastSearchRegion": "Podcast-Suchregion",
|
||||
"LabelPodcastType": "Podcast Typ",
|
||||
"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": "Haupt-E-Book",
|
||||
"LabelPrimaryEbook": "Primäres E-Book",
|
||||
"LabelProgress": "Fortschritt",
|
||||
"LabelProvider": "Anbieter",
|
||||
"LabelPubDate": "Veröffentlichungsdatum",
|
||||
"LabelPublisher": "Herausgeber",
|
||||
"LabelPublishYear": "Jahr",
|
||||
"LabelRead": "Lesen",
|
||||
"LabelReadAgain": "Nocheinmal Lesen",
|
||||
"LabelReadAgain": "Noch einmal Lesen",
|
||||
"LabelReadEbookWithoutProgress": "E-Book lesen und Fortschritt verwerfen",
|
||||
"LabelRecentlyAdded": "Kürzlich hinzugefügt",
|
||||
"LabelRecentSeries": "Aktuelle Serien",
|
||||
"LabelRecommended": "Empfohlen",
|
||||
"LabelRedo": "Wiederholen",
|
||||
"LabelRegion": "Region",
|
||||
"LabelReleaseDate": "Veröffentlichungsdatum",
|
||||
"LabelRemoveCover": "Lösche Titelbild",
|
||||
@@ -414,8 +433,8 @@
|
||||
"LabelRSSFeedSlug": "RSS Feed Schlagwort",
|
||||
"LabelRSSFeedURL": "RSS Feed URL",
|
||||
"LabelSearchTerm": "Begriff suchen",
|
||||
"LabelSearchTitle": "Titel",
|
||||
"LabelSearchTitleOrASIN": "Titel oder ASIN",
|
||||
"LabelSearchTitle": "Titel suchen",
|
||||
"LabelSearchTitleOrASIN": "Titel oder ASIN suchen",
|
||||
"LabelSeason": "Staffel",
|
||||
"LabelSelectAllEpisodes": "Alle Episoden auswählen",
|
||||
"LabelSelectEpisodesShowing": "{0} ausgewählte Episoden werden angezeigt",
|
||||
@@ -425,10 +444,11 @@
|
||||
"LabelSeries": "Serien",
|
||||
"LabelSeriesName": "Serienname",
|
||||
"LabelSeriesProgress": "Serienfortschritt",
|
||||
"LabelSetEbookAsPrimary": "Setzen als Hauptbuch",
|
||||
"LabelSetEbookAsSupplementary": "Setzen als Ergänzung",
|
||||
"LabelSettingsAudiobooksOnly": "nur Hörbücher",
|
||||
"LabelSettingsAudiobooksOnlyHelp": "Wenn Sie diese Einstellung aktivieren, 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",
|
||||
"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",
|
||||
"LabelSettingsBookshelfViewHelp": "Skeumorphes Design mit Holzeinlegeböden",
|
||||
"LabelSettingsChromecastSupport": "Chromecastunterstützung",
|
||||
"LabelSettingsDateFormat": "Datumsformat",
|
||||
@@ -439,13 +459,15 @@
|
||||
"LabelSettingsEnableWatcherForLibrary": "Ordnerüberwachung für die Bibliothek aktivieren",
|
||||
"LabelSettingsEnableWatcherHelp": "Aktiviert das automatische Hinzufügen/Aktualisieren von Elementen, wenn Dateiänderungen erkannt werden. *Erfordert einen Server-Neustart",
|
||||
"LabelSettingsExperimentalFeatures": "Experimentelle Funktionen",
|
||||
"LabelSettingsExperimentalFeaturesHelp": "Funktionen welche sich in der Entwicklung befinden, benötigen Ihr Feedback und Ihre Hilfe beim Testen. Klicken Sie hier, um die Github-Diskussion zu öffnen.",
|
||||
"LabelSettingsExperimentalFeaturesHelp": "Funktionen welche sich in der Entwicklung befinden, benötigen dein Feedback und deine Hilfe beim Testen. Klicke hier, um die Github-Diskussion zu öffnen.",
|
||||
"LabelSettingsFindCovers": "Suche Titelbilder",
|
||||
"LabelSettingsFindCoversHelp": "Wenn Ihr Medium kein eingebettetes Titelbild oder kein Titelbild im Ordner hat, versucht der Scanner, ein Titelbild online zu finden.<br>Hinweis: Dies verlängert die Scandauer",
|
||||
"LabelSettingsHideSingleBookSeries": "Ausblenden einzelzne Bücher",
|
||||
"LabelSettingsHideSingleBookSeriesHelp": "Serien, die ein einzelnes Buch enthalten, werden in den Regalen der Serienseite und der Startseite ausgeblendet.",
|
||||
"LabelSettingsFindCoversHelp": "Wenn dein Medium kein eingebettetes Titelbild oder kein Titelbild im Ordner hat, versucht der Scanner, ein Titelbild online zu finden.<br>Hinweis: Dies verlängert die Scandauer",
|
||||
"LabelSettingsHideSingleBookSeries": "Ausblenden einzelner Bücher",
|
||||
"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.",
|
||||
"LabelSettingsParseSubtitles": "Analysiere Untertitel",
|
||||
"LabelSettingsParseSubtitlesHelp": "Extrahiere den Untertitel von Medium-Ordnernamen.<br>Untertitel müssen vom eigentlichem Titel durch ein \" - \" getrennt sein. <br>Beispiel: \"Titel - Untertitel\"",
|
||||
"LabelSettingsPreferMatchedMetadata": "Bevorzuge online abgestimmte Metadaten",
|
||||
@@ -455,7 +477,7 @@
|
||||
"LabelSettingsSortingIgnorePrefixes": "Vorwort/Artikel beim Sortieren ignorieren",
|
||||
"LabelSettingsSortingIgnorePrefixesHelp": "Beispiel: für den Artikel \"der\" würde der Mediumtitel \"Der Buchtitel\" als \"Buchtitel, Der\" sortiert werden.",
|
||||
"LabelSettingsSquareBookCovers": "Benutze quadratische Titelbilder",
|
||||
"LabelSettingsSquareBookCoversHelp": "Bevorzugen quadratische Titelbilder gegenüber den Standardtielbildern im Verhältnis 1,6:1",
|
||||
"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.",
|
||||
"LabelSettingsStoreMetadataWithItem": "Metadaten als OPF-Datei im Medienordner speichern",
|
||||
@@ -463,7 +485,7 @@
|
||||
"LabelSettingsTimeFormat": "Zeitformat",
|
||||
"LabelShowAll": "Alles anzeigen",
|
||||
"LabelSize": "Größe",
|
||||
"LabelSleepTimer": "Einschlaf-Timer",
|
||||
"LabelSleepTimer": "Sleep-Timer",
|
||||
"LabelSlug": "URL Teil",
|
||||
"LabelStart": "Start",
|
||||
"LabelStarted": "Gestartet",
|
||||
@@ -476,7 +498,7 @@
|
||||
"LabelStatsDays": "Tage",
|
||||
"LabelStatsDaysListened": "Gehörte Tage",
|
||||
"LabelStatsHours": "Stunden",
|
||||
"LabelStatsInARow": "nacheinander",
|
||||
"LabelStatsInARow": "Nacheinander",
|
||||
"LabelStatsItemsFinished": "Gehörte Medien",
|
||||
"LabelStatsItemsInLibrary": "Bibliothekseinträge",
|
||||
"LabelStatsMinutes": "Minuten",
|
||||
@@ -491,9 +513,13 @@
|
||||
"LabelTagsAccessibleToUser": "Für Benutzer zugängliche Schlagwörter",
|
||||
"LabelTagsNotAccessibleToUser": "Für Benutzer nicht zugängliche Schlagwörter",
|
||||
"LabelTasks": "Laufende Aufgaben",
|
||||
"LabelTextEditorBulletedList": "Aufzählungsliste",
|
||||
"LabelTextEditorLink": "Link",
|
||||
"LabelTextEditorNumberedList": "nummerierte Liste",
|
||||
"LabelTextEditorUnlink": "entkoppeln",
|
||||
"LabelTheme": "Theme",
|
||||
"LabelThemeDark": "Dark",
|
||||
"LabelThemeLight": "Light",
|
||||
"LabelThemeDark": "Dunkel",
|
||||
"LabelThemeLight": "Hell",
|
||||
"LabelTimeBase": "Basiszeit",
|
||||
"LabelTimeListened": "Gehörte Zeit",
|
||||
"LabelTimeListenedToday": "Heute gehörte Zeit",
|
||||
@@ -503,12 +529,12 @@
|
||||
"LabelToolsEmbedMetadata": "Metadaten einbetten",
|
||||
"LabelToolsEmbedMetadataDescription": "Bettet die Metadaten einschließlich des Titelbildes und der Kapitel in die Audiodatein ein.",
|
||||
"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.",
|
||||
"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",
|
||||
"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 von Dateiname",
|
||||
"LabelTrackFromFilename": "Titel aus Dateiname",
|
||||
"LabelTrackFromMetadata": "Titel aus Metadaten",
|
||||
"LabelTracks": "Dateien",
|
||||
"LabelTracksMultiTrack": "Mehrfachdatei",
|
||||
@@ -516,15 +542,16 @@
|
||||
"LabelTracksSingleTrack": "Einzeldatei",
|
||||
"LabelType": "Typ",
|
||||
"LabelUnabridged": "Ungekürzt",
|
||||
"LabelUndo": "Rückgängig machen",
|
||||
"LabelUnknown": "Unbekannt",
|
||||
"LabelUpdateCover": "Titelbild aktualisieren",
|
||||
"LabelUpdateCoverHelp": "Erlaube das Überschreiben bestehender Titelbilder für die ausgewählten Hörbücher wenn eine Übereinstimmung gefunden wird",
|
||||
"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",
|
||||
"LabelUpdateDetailsHelp": "Erlaube das Überschreiben bestehender Details für die ausgewählten Hörbücher, wenn eine Übereinstimmung gefunden wird",
|
||||
"LabelUploaderDragAndDrop": "Ziehen und Ablegen von Dateien oder Ordnern",
|
||||
"LabelUploaderDropFiles": "Dateien löschen",
|
||||
"LabelUploaderItemFetchMetadataHelp": "Automatisches Abholden von Titel, Author und Serien",
|
||||
"LabelUploaderItemFetchMetadataHelp": "Automatisches Aktualisieren von Titel, Autor und Serie",
|
||||
"LabelUseChapterTrack": "Kapiteldatei verwenden",
|
||||
"LabelUseFullTrack": "Gesamte Datei verwenden",
|
||||
"LabelUser": "Benutzer",
|
||||
@@ -533,17 +560,19 @@
|
||||
"LabelVersion": "Version",
|
||||
"LabelViewBookmarks": "Lesezeichen anzeigen",
|
||||
"LabelViewChapters": "Kapitel anzeigen",
|
||||
"LabelViewQueue": "Spieler-Warteschlange anzeigen",
|
||||
"LabelVolume": "Volumen",
|
||||
"LabelViewQueue": "Player-Warteschlange anzeigen",
|
||||
"LabelVolume": "Lautstärke",
|
||||
"LabelWeekdaysToRun": "Wochentage für die Ausführung",
|
||||
"LabelYourAudiobookDuration": "Laufzeit Ihres Mediums",
|
||||
"LabelYearReviewHide": "Verstecke Jahr in Übersicht",
|
||||
"LabelYearReviewShow": "Zeige Jahr in Übersicht",
|
||||
"LabelYourAudiobookDuration": "Laufzeit deines Mediums",
|
||||
"LabelYourBookmarks": "Lesezeichen",
|
||||
"LabelYourPlaylists": "Eigene Wiedergabelisten",
|
||||
"LabelYourProgress": "Fortschritt",
|
||||
"MessageAddToPlayerQueue": "Zur Abspielwarteliste hinzufügen",
|
||||
"MessageAppriseDescription": "Um diese Funktion nutzen zu können, müssen Sie eine Instanz von <a href=\"https://github.com/caronc/apprise-api\" target=\"_blank\">Apprise API</a> laufen haben oder eine API verwenden welche dieselbe Anfragen bearbeiten kann. <br />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 <code>http://192.168.1.1:8337</code> läuft, würden Sie <code>http://192.168.1.1:8337/notify</code> eingeben.",
|
||||
"MessageAppriseDescription": "Um diese Funktion nutzen zu können, musst du eine Instanz von <a href=\"https://github.com/caronc/apprise-api\" target=\"_blank\">Apprise API</a> laufen haben oder eine API verwenden welche dieselbe Anfragen bearbeiten kann. <br />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 <code>http://192.168.1.1:8337</code> läuft, würdest du <code>http://192.168.1.1:8337/notify</code> eingeben.",
|
||||
"MessageBackupsDescription": "In einer Sicherung werden Benutzer, Benutzerfortschritte, Details zu den Bibliotheksobjekten, Servereinstellungen und Bilder welche in <code>/metadata/items</code> & <code>/metadata/authors</code> gespeichert sind gespeichert. Sicherungen enthalten keine Dateien welche in den einzelnen Bibliotheksordnern (Medien-Ordnern) gespeichert sind.",
|
||||
"MessageBatchQuickMatchDescription": "Der Schnellabgleich versucht, fehlende Titelbilder und Metadaten für die ausgewählten Artikel hinzuzufügen. Aktivieren Sie die nachstehenden Optionen, damit der Schnellabgleich vorhandene Titelbilder und/oder Metadaten überschreiben kann.",
|
||||
"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",
|
||||
@@ -554,57 +583,57 @@
|
||||
"MessageChapterErrorStartLtPrev": "Ungültige Kapitelstartzeit: Kapitelanfang < Kapitelanfang vorheriges Kapitel (Kapitelanfang liegt zeitlich vor dem Beginn des vorherigen Kapitels -> Lösung: Kapitelanfang >= Startzeit des vorherigen Kapitels)",
|
||||
"MessageChapterStartIsAfter": "Ungültige Kapitelstartzeit: Kapitelanfang > Mediumende (Kapitelanfang liegt nach dem Ende des Mediums)",
|
||||
"MessageCheckingCron": "Überprüfe Cron...",
|
||||
"MessageConfirmCloseFeed": "Feed wird geschlossen! Sind Sie sicher?",
|
||||
"MessageConfirmDeleteBackup": "Sicherung für {0} wird gelöscht! Sind Sie sicher?",
|
||||
"MessageConfirmDeleteFile": "Datei wird vom System gelöscht! Sind Sie sicher?",
|
||||
"MessageConfirmDeleteLibrary": "Bibliothek \"{0}\" wird dauerhaft gelöscht! Sind Sie sicher?",
|
||||
"MessageConfirmDeleteLibraryItem": "Bibliothekselement wird aus der Datenbank + Festplatte gelöscht? Sind Sie sicher?",
|
||||
"MessageConfirmDeleteLibraryItems": "{0} Bibliothekselemente werden aus der Datenbank + Festplatte gelöscht? Sind Sie sicher?",
|
||||
"MessageConfirmDeleteSession": "Sitzung wird gelöscht! Sind Sie sicher?",
|
||||
"MessageConfirmForceReScan": "Scanvorgang erzwingen! Sind Sie sicher?",
|
||||
"MessageConfirmMarkAllEpisodesFinished": "Alle Episoden werden als abgeschlossen markiert! Sind Sie sicher?",
|
||||
"MessageConfirmMarkAllEpisodesNotFinished": "Alle Episoden werden als nicht abgeschlossen markiert! Sind Sie sicher?",
|
||||
"MessageConfirmMarkSeriesFinished": "Alle Medien dieser Reihe werden als abgeschlossen markiert! Sind Sie sicher?",
|
||||
"MessageConfirmMarkSeriesNotFinished": "Alle Medien dieser Reihe werden als nicht abgeschlossen markiert! Sind Sie sicher?",
|
||||
"MessageConfirmQuickEmbed": "Warnung! Audiodateien werden bei der Schnelleinbettung nicht gesichert! Achten Sie darauf, dass Sie eine Sicherungskopie der Audiodateien besitzen. <br><br>Möchten Sie fortfahren?",
|
||||
"MessageConfirmRemoveAllChapters": "Alle Kapitel werden entfernt! Sind Sie sicher?",
|
||||
"MessageConfirmRemoveAuthor": "Autor \"{0}\" wird enfernt! Sind Sie sicher?",
|
||||
"MessageConfirmRemoveCollection": "Sammlung \"{0}\" wird gelöscht! Sind Sie sicher?",
|
||||
"MessageConfirmRemoveEpisode": "Episode \"{0}\" wird geloscht! Sind Sie sicher?",
|
||||
"MessageConfirmRemoveEpisodes": "{0} Episoden werden gelöscht! Sind Sie sicher?",
|
||||
"MessageConfirmRemoveListeningSessions": "Sind Sie sicher, dass sie {0} Hörsitzungen enfernen möchten?",
|
||||
"MessageConfirmRemoveNarrator": "Erzähler \"{0}\" wird gelöscht! Sind Sie sicher?",
|
||||
"MessageConfirmRemovePlaylist": "Wiedergabeliste \"{0}\" wird entfernt! Sind Sie sicher?",
|
||||
"MessageConfirmRenameGenre": "Kategorie \"{0}\" in \"{1}\" für alle Hörbücher/Podcasts werden umbenannt! Sind Sie sicher?",
|
||||
"MessageConfirmCloseFeed": "Feed wird geschlossen! Bist du dir sicher?",
|
||||
"MessageConfirmDeleteBackup": "Sicherung für {0} wird gelöscht! Bist du dir sicher?",
|
||||
"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?",
|
||||
"MessageConfirmDeleteSession": "Sitzung wird gelöscht! Bist du dir sicher?",
|
||||
"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?",
|
||||
"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?",
|
||||
"MessageConfirmQuickEmbed": "Warnung! Audiodateien werden bei der Schnelleinbettung nicht gesichert! Achte darauf, dass du eine Sicherungskopie der Audiodateien besitzt. <br><br>Möchtest du fortfahren?",
|
||||
"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?",
|
||||
"MessageConfirmRemoveListeningSessions": "Bist du dir sicher, dass du {0} Hörsitzungen enfernen möchtest?",
|
||||
"MessageConfirmRemoveNarrator": "Erzähler \"{0}\" wird gelöscht! 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.",
|
||||
"MessageConfirmRenameGenreWarning": "Warnung! Ein ähnliche Kategorie mit einem anderen Wortlaut existiert bereits: \"{0}\".",
|
||||
"MessageConfirmRenameTag": "Tag \"{0}\" in \"{1}\" für alle Hörbücher/Podcasts werden umbenannt! Sind Sie sicher?",
|
||||
"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! Sind Sie sicher?",
|
||||
"MessageConfirmSendEbookToDevice": "{0} E-Book \"{1}\" werden auf das Gerät \"{2}\" gesendet! Sind Sie sicher?",
|
||||
"MessageDownloadingEpisode": "Episode herunterladen",
|
||||
"MessageDragFilesIntoTrackOrder": "Verschieben Sie die Dateien in die richtige Reihenfolge",
|
||||
"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?",
|
||||
"MessageDownloadingEpisode": "Episode wird heruntergeladen",
|
||||
"MessageDragFilesIntoTrackOrder": "Verschiebe die Dateien in die richtige Reihenfolge",
|
||||
"MessageEmbedFinished": "Einbettung abgeschlossen!",
|
||||
"MessageEpisodesQueuedForDownload": "{0} Episode(n) in der Warteschlange zum Herunterladen",
|
||||
"MessageFeedURLWillBe": "Feed-URL wird {0} sein",
|
||||
"MessageFetching": "Abrufen...",
|
||||
"MessageForceReScanDescription": "durchsucht alle Dateien neu, wie bei einem frischen Scan. ID3-Tags von Audiodateien, OPF-Dateien und Textdateien werden neu durchsucht.",
|
||||
"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",
|
||||
"MessageItemsSelected": "{0} ausgewählte Medien",
|
||||
"MessageItemsUpdated": "{0} Medien aktualisiert",
|
||||
"MessageJoinUsOn": "Besuchen Sie uns auf",
|
||||
"MessageJoinUsOn": "Besuche uns auf",
|
||||
"MessageListeningSessionsInTheLastYear": "{0} Ereignisse im letzten Jahr",
|
||||
"MessageLoading": "Laden...",
|
||||
"MessageLoadingFolders": "Lade Ordner...",
|
||||
"MessageM4BFailed": "M4B fehlgeschlagen!",
|
||||
"MessageM4BFinished": "M4B beendet!",
|
||||
"MessageMapChapterTitles": "Zuordnen von Kapiteltiteln zu Ihren vorhandenen Medienkapiteln ohne Anpassung der Zeitangaben",
|
||||
"MessageMapChapterTitles": "Zuordnen von Kapiteltiteln zu deinen vorhandenen Medienkapiteln ohne Anpassung der Zeitangaben",
|
||||
"MessageMarkAllEpisodesFinished": "Alle Episoden als beendet markieren",
|
||||
"MessageMarkAllEpisodesNotFinished": "Alle Episoden als ungehört markieren",
|
||||
"MessageMarkAsFinished": "Als beendet markieren",
|
||||
"MessageMarkAsNotFinished": "Als nicht abgeschlossen markieren",
|
||||
"MessageMarkAsNotFinished": "Als nicht beendet markieren",
|
||||
"MessageMatchBooksDescription": "Es wird versucht die Bücher in der Bibliothek mit einem Buch des ausgewählten Suchanbieters abzugleichen um leere Details und das Titelbild auszufüllen. Vorhandene Details werden nicht überschrieben.",
|
||||
"MessageNoAudioTracks": "Keine Audiodateien",
|
||||
"MessageNoAuthors": "Keine Autoren",
|
||||
@@ -637,7 +666,7 @@
|
||||
"MessageNoUpdateNecessary": "Keine Aktualisierung erforderlich",
|
||||
"MessageNoUpdatesWereNecessary": "Keine Aktualisierungen waren notwendig",
|
||||
"MessageNoUserPlaylists": "Keine Wiedergabelisten vorhanden",
|
||||
"MessageOr": "oder",
|
||||
"MessageOr": "Oder",
|
||||
"MessagePauseChapter": "Kapitelwiedergabe pausieren",
|
||||
"MessagePlayChapter": "Kapitelanfang anhören",
|
||||
"MessagePlaylistCreateFromCollection": "Erstelle eine Wiedergabeliste aus der Sammlung",
|
||||
@@ -646,11 +675,11 @@
|
||||
"MessageRemoveChapter": "Kapitel löschen",
|
||||
"MessageRemoveEpisodes": "Entferne {0} Episode(n)",
|
||||
"MessageRemoveFromPlayerQueue": "Aus der Abspielwarteliste löschen",
|
||||
"MessageRemoveUserWarning": "Benutzer \"{0}\" wird dauerhaft gelöscht! Sind Sie sicher?",
|
||||
"MessageReportBugsAndContribute": "Fehler melden, Funktionen anfordern und Beiträge leisten auf",
|
||||
"MessageResetChaptersConfirm": "Kapitel und vorgenommenen Änderungen werden zurückgesetzt und rückgängig gemacht! Sind Sie sicher?",
|
||||
"MessageRestoreBackupConfirm": "Sind Sie sicher, dass Sie die Sicherung wiederherstellen wollen, welche am",
|
||||
"MessageRestoreBackupWarning": "Bei der Wiederherstellung einer Sicherung wird die gesamte Datenbank unter /config und die Titelbilder in /metadata/items und /metadata/authors überschrieben.<br /><br />Bei der Sicherung werden keine Dateien in Ihren Bibliotheksordnern verändert. Wenn Sie die Servereinstellungen aktiviert haben, um Cover und Metadaten in Ihren Bibliotheksordnern zu speichern, werden diese nicht gesichert oder überschrieben.<br /><br />Alle Clients, die Ihren Server nutzen, werden automatisch aktualisiert.",
|
||||
"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?",
|
||||
"MessageRestoreBackupConfirm": "Bist du dir sicher, dass du die Sicherung wiederherstellen willst, welche am",
|
||||
"MessageRestoreBackupWarning": "Bei der Wiederherstellung einer Sicherung wird die gesamte Datenbank unter /config und die Titelbilder in /metadata/items und /metadata/authors überschrieben.<br /><br />Bei der Sicherung werden keine Dateien in deinen Bibliotheksordnern verändert. Wenn du die Servereinstellungen aktiviert hast, um Cover und Metadaten in deinen Bibliotheksordnern zu speichern, werden diese nicht gesichert oder überschrieben.<br /><br />Alle Clients, die Ihren Server nutzen, werden automatisch aktualisiert.",
|
||||
"MessageSearchResultsFor": "Suchergebnisse für",
|
||||
"MessageSelected": "{0} ausgewählt",
|
||||
"MessageServerCouldNotBeReached": "Server kann nicht erreicht werden",
|
||||
@@ -663,16 +692,15 @@
|
||||
"MessageValidCronExpression": "Gültiger Cron-Ausdruck",
|
||||
"MessageWatcherIsDisabledGlobally": "Überwachung ist in den Servereinstellungen global deaktiviert",
|
||||
"MessageXLibraryIsEmpty": "{0} Bibliothek ist leer!",
|
||||
"MessageYourAudiobookDurationIsLonger": "Die Dauer Ihres Mediums ist länger als die gefundene Dauer",
|
||||
"MessageYourAudiobookDurationIsShorter": "Die Dauer Ihres Mediums ist kürzer als die gefundene Dauer",
|
||||
"MessageYourAudiobookDurationIsLonger": "Die Dauer deines Mediums ist länger als die gefundene Dauer",
|
||||
"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.",
|
||||
"NoteFolderPickerDebian": "Hinweis: Der Ordnerauswahldialog für die Debian-Installation ist nicht vollständig implementiert. Sie sollten den Pfad zu Ihrer Bibliothek direkt eingeben.",
|
||||
"NoteRSSFeedPodcastAppsHttps": "Warnung: Die meisten Podcast-Apps verlangen, dass die URL des RSS-Feeds HTTPS verwendet.",
|
||||
"NoteRSSFeedPodcastAppsPubDate": "Warnung: 1 oder mehrere Ihrer Episoden haben kein Veröffentlichungsdatum. Einige Podcast-Apps verlangen dies.",
|
||||
"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 Sie nur Audiodateien hochladen, wird jede Audiodatei als ein separates Medium 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.",
|
||||
"PlaceholderNewCollection": "Neuer Sammlungsname",
|
||||
"PlaceholderNewFolderPath": "Neuer Ordnerpfad",
|
||||
@@ -740,7 +768,7 @@
|
||||
"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 senden \"{0}\"",
|
||||
"ToastSendEbookToDeviceSuccess": "E-Book an Gerät \"{0}\" gesendet",
|
||||
"ToastSeriesUpdateFailed": "Aktualisierung der Serien fehlgeschlagen",
|
||||
"ToastSeriesUpdateSuccess": "Serien aktualisiert",
|
||||
"ToastSessionDeleteFailed": "Sitzung konnte nicht gelöscht werden",
|
||||
@@ -750,4 +778,4 @@
|
||||
"ToastSocketFailedToConnect": "Verbindung zum WebSocket fehlgeschlagen",
|
||||
"ToastUserDeleteFailed": "Benutzer konnte nicht gelöscht werden",
|
||||
"ToastUserDeleteSuccess": "Benutzer gelöscht"
|
||||
}
|
||||
}
|
||||
@@ -32,6 +32,8 @@
|
||||
"ButtonHide": "Hide",
|
||||
"ButtonHome": "Home",
|
||||
"ButtonIssues": "Issues",
|
||||
"ButtonJumpBackward": "Jump Backward",
|
||||
"ButtonJumpForward": "Jump Forward",
|
||||
"ButtonLatest": "Latest",
|
||||
"ButtonLibrary": "Library",
|
||||
"ButtonLogout": "Logout",
|
||||
@@ -41,12 +43,17 @@
|
||||
"ButtonMatchAllAuthors": "Match All Authors",
|
||||
"ButtonMatchBooks": "Match Books",
|
||||
"ButtonNevermind": "Nevermind",
|
||||
"ButtonNext": "Next",
|
||||
"ButtonNextChapter": "Next Chapter",
|
||||
"ButtonOk": "Ok",
|
||||
"ButtonOpenFeed": "Open Feed",
|
||||
"ButtonOpenManager": "Open Manager",
|
||||
"ButtonPause": "Pause",
|
||||
"ButtonPlay": "Play",
|
||||
"ButtonPlaying": "Playing",
|
||||
"ButtonPlaylists": "Playlists",
|
||||
"ButtonPrevious": "Previous",
|
||||
"ButtonPreviousChapter": "Previous Chapter",
|
||||
"ButtonPurgeAllCache": "Purge All Cache",
|
||||
"ButtonPurgeItemsCache": "Purge Items Cache",
|
||||
"ButtonPurgeMediaProgress": "Purge Media Progress",
|
||||
@@ -54,6 +61,7 @@
|
||||
"ButtonQueueRemoveItem": "Remove from queue",
|
||||
"ButtonQuickMatch": "Quick Match",
|
||||
"ButtonRead": "Read",
|
||||
"ButtonRefresh": "Refresh",
|
||||
"ButtonRemove": "Remove",
|
||||
"ButtonRemoveAll": "Remove All",
|
||||
"ButtonRemoveAllLibraryItems": "Remove All Library Items",
|
||||
@@ -73,6 +81,7 @@
|
||||
"ButtonSelectFolderPath": "Select Folder Path",
|
||||
"ButtonSeries": "Series",
|
||||
"ButtonSetChaptersFromTracks": "Set chapters from tracks",
|
||||
"ButtonShare": "Share",
|
||||
"ButtonShiftTimes": "Shift Times",
|
||||
"ButtonShow": "Show",
|
||||
"ButtonStartM4BEncode": "Start M4B Encode",
|
||||
@@ -104,6 +113,7 @@
|
||||
"HeaderCollectionItems": "Collection Items",
|
||||
"HeaderCover": "Cover",
|
||||
"HeaderCurrentDownloads": "Current Downloads",
|
||||
"HeaderCustomMetadataProviders": "Custom Metadata Providers",
|
||||
"HeaderDetails": "Details",
|
||||
"HeaderDownloadQueue": "Download Queue",
|
||||
"HeaderEbookFiles": "Ebook Files",
|
||||
@@ -174,6 +184,7 @@
|
||||
"HeaderUpdateDetails": "Update Details",
|
||||
"HeaderUpdateLibrary": "Update Library",
|
||||
"HeaderUsers": "Users",
|
||||
"HeaderYearReview": "Year {0} in Review",
|
||||
"HeaderYourStats": "Your Stats",
|
||||
"LabelAbridged": "Abridged",
|
||||
"LabelAccountType": "Account Type",
|
||||
@@ -281,8 +292,11 @@
|
||||
"LabelFinished": "Finished",
|
||||
"LabelFolder": "Folder",
|
||||
"LabelFolders": "Folders",
|
||||
"LabelFontBold": "Bold",
|
||||
"LabelFontFamily": "Font family",
|
||||
"LabelFontItalic": "Italic",
|
||||
"LabelFontScale": "Font scale",
|
||||
"LabelFontStrikethrough": "Strikethrough",
|
||||
"LabelFormat": "Format",
|
||||
"LabelGenre": "Genre",
|
||||
"LabelGenres": "Genres",
|
||||
@@ -342,7 +356,9 @@
|
||||
"LabelMetaTags": "Meta Tags",
|
||||
"LabelMinute": "Minute",
|
||||
"LabelMissing": "Missing",
|
||||
"LabelMissingEbook": "Has no ebook",
|
||||
"LabelMissingParts": "Missing Parts",
|
||||
"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 <code>audiobookshelf://oauth</code>, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (<code>*</code>) as the sole entry permits any URI.",
|
||||
"LabelMore": "More",
|
||||
@@ -382,11 +398,13 @@
|
||||
"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": "Podcast search region",
|
||||
"LabelPodcastType": "Podcast Type",
|
||||
"LabelPort": "Port",
|
||||
"LabelPrefixesToIgnore": "Prefixes to Ignore (case insensitive)",
|
||||
@@ -403,6 +421,7 @@
|
||||
"LabelRecentlyAdded": "Recently Added",
|
||||
"LabelRecentSeries": "Recent Series",
|
||||
"LabelRecommended": "Recommended",
|
||||
"LabelRedo": "Redo",
|
||||
"LabelRegion": "Region",
|
||||
"LabelReleaseDate": "Release Date",
|
||||
"LabelRemoveCover": "Remove cover",
|
||||
@@ -425,6 +444,7 @@
|
||||
"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",
|
||||
@@ -446,6 +466,8 @@
|
||||
"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.<br>Subtitle must be seperated by \" - \"<br>i.e. \"Book Title - A Subtitle Here\" has the subtitle \"A Subtitle Here\"",
|
||||
"LabelSettingsPreferMatchedMetadata": "Prefer matched metadata",
|
||||
@@ -491,6 +513,10 @@
|
||||
"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",
|
||||
@@ -516,6 +542,7 @@
|
||||
"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",
|
||||
@@ -536,6 +563,8 @@
|
||||
"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",
|
||||
@@ -668,7 +697,6 @@
|
||||
"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",
|
||||
"NoteFolderPickerDebian": "Note: Folder picker for the debian install is not fully implemented. You should enter the path to your library directly.",
|
||||
"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.",
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"ButtonAdd": "Agregar",
|
||||
"ButtonAddChapters": "Agregar Capitulo",
|
||||
"ButtonAddDevice": "Add Device",
|
||||
"ButtonAddLibrary": "Add Library",
|
||||
"ButtonAddDevice": "Agregar Dispositivo",
|
||||
"ButtonAddLibrary": "Crear Biblioteca",
|
||||
"ButtonAddPodcasts": "Agregar Podcasts",
|
||||
"ButtonAddUser": "Add User",
|
||||
"ButtonAddYourFirstLibrary": "Agrega tu Primera Biblioteca",
|
||||
"ButtonAddUser": "Crear Usuario",
|
||||
"ButtonAddYourFirstLibrary": "Crea tu Primera Biblioteca",
|
||||
"ButtonApply": "Aplicar",
|
||||
"ButtonApplyChapters": "Aplicar Capítulos",
|
||||
"ButtonAuthors": "Autores",
|
||||
@@ -32,6 +32,8 @@
|
||||
"ButtonHide": "Esconder",
|
||||
"ButtonHome": "Inicio",
|
||||
"ButtonIssues": "Problemas",
|
||||
"ButtonJumpBackward": "Retroceder",
|
||||
"ButtonJumpForward": "Adelantar",
|
||||
"ButtonLatest": "Últimos",
|
||||
"ButtonLibrary": "Biblioteca",
|
||||
"ButtonLogout": "Cerrar Sesión",
|
||||
@@ -41,12 +43,17 @@
|
||||
"ButtonMatchAllAuthors": "Encontrar Todos los Autores",
|
||||
"ButtonMatchBooks": "Encontrar Libros",
|
||||
"ButtonNevermind": "Olvidar",
|
||||
"ButtonNext": "Next",
|
||||
"ButtonNextChapter": "Siguiente Capítulo",
|
||||
"ButtonOk": "Ok",
|
||||
"ButtonOpenFeed": "Abrir Fuente",
|
||||
"ButtonOpenManager": "Abrir Editor",
|
||||
"ButtonPause": "Pausar",
|
||||
"ButtonPlay": "Reproducir",
|
||||
"ButtonPlaying": "Reproduciendo",
|
||||
"ButtonPlaylists": "Listas de Reproducción",
|
||||
"ButtonPrevious": "Previous",
|
||||
"ButtonPreviousChapter": "Capítulo Anterior",
|
||||
"ButtonPurgeAllCache": "Purgar Todo el Cache",
|
||||
"ButtonPurgeItemsCache": "Purgar Elementos de Cache",
|
||||
"ButtonPurgeMediaProgress": "Purgar Progreso de Multimedia",
|
||||
@@ -54,6 +61,7 @@
|
||||
"ButtonQueueRemoveItem": "Remover de la Fila",
|
||||
"ButtonQuickMatch": "Encontrar Rápido",
|
||||
"ButtonRead": "Leer",
|
||||
"ButtonRefresh": "Refresh",
|
||||
"ButtonRemove": "Remover",
|
||||
"ButtonRemoveAll": "Remover Todos",
|
||||
"ButtonRemoveAllLibraryItems": "Remover Todos los Elementos de la Biblioteca",
|
||||
@@ -73,6 +81,7 @@
|
||||
"ButtonSelectFolderPath": "Seleccionar Ruta de Carpeta",
|
||||
"ButtonSeries": "Series",
|
||||
"ButtonSetChaptersFromTracks": "Seleccionar Capítulos Según las Pistas",
|
||||
"ButtonShare": "Share",
|
||||
"ButtonShiftTimes": "Desplazar Tiempos",
|
||||
"ButtonShow": "Mostrar",
|
||||
"ButtonStartM4BEncode": "Iniciar Codificación M4B",
|
||||
@@ -87,15 +96,15 @@
|
||||
"ButtonUserEdit": "Editar Usuario {0}",
|
||||
"ButtonViewAll": "Ver Todos",
|
||||
"ButtonYes": "Aceptar",
|
||||
"ErrorUploadFetchMetadataAPI": "Error fetching metadata",
|
||||
"ErrorUploadFetchMetadataNoResults": "Could not fetch metadata - try updating title and/or author",
|
||||
"ErrorUploadLacksTitle": "Must have a title",
|
||||
"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",
|
||||
"HeaderAdvanced": "Avanzado",
|
||||
"HeaderAppriseNotificationSettings": "Ajustes de Notificaciones de Apprise",
|
||||
"HeaderAudiobookTools": "Herramientas de Gestión de Archivos de Audiolibro",
|
||||
"HeaderAudioTracks": "Pistas de Audio",
|
||||
"HeaderAuthentication": "Authentication",
|
||||
"HeaderAuthentication": "Autenticación",
|
||||
"HeaderBackups": "Respaldos",
|
||||
"HeaderChangePassword": "Cambiar Contraseña",
|
||||
"HeaderChapters": "Capítulos",
|
||||
@@ -104,6 +113,7 @@
|
||||
"HeaderCollectionItems": "Elementos en la Colección",
|
||||
"HeaderCover": "Portada",
|
||||
"HeaderCurrentDownloads": "Descargando Actualmente",
|
||||
"HeaderCustomMetadataProviders": "Proveedores de metadatos personalizados",
|
||||
"HeaderDetails": "Detalles",
|
||||
"HeaderDownloadQueue": "Lista de Descarga",
|
||||
"HeaderEbookFiles": "Archivos de Ebook",
|
||||
@@ -130,15 +140,15 @@
|
||||
"HeaderManageTags": "Administrar Etiquetas",
|
||||
"HeaderMapDetails": "Asignar Detalles",
|
||||
"HeaderMatch": "Encontrar",
|
||||
"HeaderMetadataOrderOfPrecedence": "Metadata order of precedence",
|
||||
"HeaderMetadataOrderOfPrecedence": "Orden de precedencia de metadatos",
|
||||
"HeaderMetadataToEmbed": "Metadatos para Insertar",
|
||||
"HeaderNewAccount": "Nueva Cuenta",
|
||||
"HeaderNewLibrary": "Nueva Biblioteca",
|
||||
"HeaderNotifications": "Notificaciones",
|
||||
"HeaderOpenIDConnectAuthentication": "OpenID Connect Authentication",
|
||||
"HeaderOpenIDConnectAuthentication": "Autenticación OpenID Connect",
|
||||
"HeaderOpenRSSFeed": "Abrir fuente RSS",
|
||||
"HeaderOtherFiles": "Otros Archivos",
|
||||
"HeaderPasswordAuthentication": "Password Authentication",
|
||||
"HeaderPasswordAuthentication": "Autenticación por contraseña",
|
||||
"HeaderPermissions": "Permisos",
|
||||
"HeaderPlayerQueue": "Fila del Reproductor",
|
||||
"HeaderPlaylist": "Lista de Reproducción",
|
||||
@@ -174,6 +184,7 @@
|
||||
"HeaderUpdateDetails": "Actualizar Detalles",
|
||||
"HeaderUpdateLibrary": "Actualizar Biblioteca",
|
||||
"HeaderUsers": "Usuarios",
|
||||
"HeaderYearReview": "Year {0} in Review",
|
||||
"HeaderYourStats": "Tus Estadísticas",
|
||||
"LabelAbridged": "Abreviado",
|
||||
"LabelAccountType": "Tipo de Cuenta",
|
||||
@@ -187,11 +198,11 @@
|
||||
"LabelAddToCollectionBatch": "Se Añadieron {0} Libros a la Colección",
|
||||
"LabelAddToPlaylist": "Añadido a la Lista de Reproducción",
|
||||
"LabelAddToPlaylistBatch": "Se Añadieron {0} Artículos a la Lista de Reproducción",
|
||||
"LabelAdminUsersOnly": "Admin users only",
|
||||
"LabelAdminUsersOnly": "Solamente usuarios administradores",
|
||||
"LabelAll": "Todos",
|
||||
"LabelAllUsers": "Todos los Usuarios",
|
||||
"LabelAllUsersExcludingGuests": "All users excluding guests",
|
||||
"LabelAllUsersIncludingGuests": "All users including guests",
|
||||
"LabelAllUsersExcludingGuests": "Todos los usuarios excepto invitados",
|
||||
"LabelAllUsersIncludingGuests": "Todos los usuarios e invitados",
|
||||
"LabelAlreadyInYourLibrary": "Ya en la Biblioteca",
|
||||
"LabelAppend": "Adjuntar",
|
||||
"LabelAuthor": "Autor",
|
||||
@@ -199,12 +210,12 @@
|
||||
"LabelAuthorLastFirst": "Autor (Apellido, Nombre)",
|
||||
"LabelAuthors": "Autores",
|
||||
"LabelAutoDownloadEpisodes": "Descargar Episodios Automáticamente",
|
||||
"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 <code>/login?autoLaunch=0</code>)",
|
||||
"LabelAutoRegister": "Auto Register",
|
||||
"LabelAutoRegisterDescription": "Automatically create new users after logging in",
|
||||
"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",
|
||||
"LabelAutoLaunchDescription": "Redirigir al proveedor de autenticación automáticamente al navegar a la página de inicio de sesión (ruta de sobreescritura manual <code>/login?autoLaunch=0</code>)",
|
||||
"LabelAutoRegister": "Registro automático",
|
||||
"LabelAutoRegisterDescription": "Crear usuarios automáticamente tras iniciar sesión",
|
||||
"LabelBackToUser": "Regresar a Usuario",
|
||||
"LabelBackupLocation": "Ubicación del Respaldo",
|
||||
"LabelBackupsEnableAutomaticBackups": "Habilitar Respaldo Automático",
|
||||
@@ -215,13 +226,13 @@
|
||||
"LabelBackupsNumberToKeepHelp": "Solamente 1 respaldo se removerá a la vez. Si tiene mas respaldos guardados, debe removerlos manualmente.",
|
||||
"LabelBitrate": "Bitrate",
|
||||
"LabelBooks": "Libros",
|
||||
"LabelButtonText": "Button Text",
|
||||
"LabelButtonText": "Texto del botón",
|
||||
"LabelChangePassword": "Cambiar Contraseña",
|
||||
"LabelChannels": "Canales",
|
||||
"LabelChapters": "Capítulos",
|
||||
"LabelChaptersFound": "Capítulo Encontrado",
|
||||
"LabelChapterTitle": "Titulo del Capítulo",
|
||||
"LabelClickForMoreInfo": "Click for more info",
|
||||
"LabelClickForMoreInfo": "Click para más información",
|
||||
"LabelClosePlayer": "Cerrar Reproductor",
|
||||
"LabelCodec": "Codec",
|
||||
"LabelCollapseSeries": "Colapsar Serie",
|
||||
@@ -240,12 +251,12 @@
|
||||
"LabelCurrently": "En este momento:",
|
||||
"LabelCustomCronExpression": "Expresión de Cron Personalizada:",
|
||||
"LabelDatetime": "Hora y Fecha",
|
||||
"LabelDeleteFromFileSystemCheckbox": "Delete from file system (uncheck to only remove from database)",
|
||||
"LabelDeleteFromFileSystemCheckbox": "Eliminar archivos del sistema (desmarcar para eliminar sólo de la base de datos)",
|
||||
"LabelDescription": "Descripción",
|
||||
"LabelDeselectAll": "Deseleccionar Todos",
|
||||
"LabelDevice": "Dispositivo",
|
||||
"LabelDeviceInfo": "Información de Dispositivo",
|
||||
"LabelDeviceIsAvailableTo": "Device is available to...",
|
||||
"LabelDeviceIsAvailableTo": "El dispositivo está disponible para...",
|
||||
"LabelDirectory": "Directorio",
|
||||
"LabelDiscFromFilename": "Disco a partir del Nombre del Archivo",
|
||||
"LabelDiscFromMetadata": "Disco a partir de Metadata",
|
||||
@@ -271,7 +282,7 @@
|
||||
"LabelExample": "Ejemplo",
|
||||
"LabelExplicit": "Explicito",
|
||||
"LabelFeedURL": "Fuente de URL",
|
||||
"LabelFetchingMetadata": "Fetching Metadata",
|
||||
"LabelFetchingMetadata": "Obteniendo metadatos",
|
||||
"LabelFile": "Archivo",
|
||||
"LabelFileBirthtime": "Archivo Creado en",
|
||||
"LabelFileModified": "Archivo modificado",
|
||||
@@ -281,20 +292,23 @@
|
||||
"LabelFinished": "Terminado",
|
||||
"LabelFolder": "Carpeta",
|
||||
"LabelFolders": "Carpetas",
|
||||
"LabelFontBold": "Negrilla",
|
||||
"LabelFontFamily": "Familia tipográfica",
|
||||
"LabelFontItalic": "Itálica",
|
||||
"LabelFontScale": "Tamaño de Fuente",
|
||||
"LabelFontStrikethrough": "Tachado",
|
||||
"LabelFormat": "Formato",
|
||||
"LabelGenre": "Genero",
|
||||
"LabelGenres": "Géneros",
|
||||
"LabelHardDeleteFile": "Eliminar Definitivamente",
|
||||
"LabelHasEbook": "Tiene Ebook",
|
||||
"LabelHasSupplementaryEbook": "Tiene Ebook Suplementario",
|
||||
"LabelHighestPriority": "Highest priority",
|
||||
"LabelHighestPriority": "Mayor prioridad",
|
||||
"LabelHost": "Host",
|
||||
"LabelHour": "Hora",
|
||||
"LabelIcon": "Icono",
|
||||
"LabelImageURLFromTheWeb": "Image URL from the web",
|
||||
"LabelIncludeInTracklist": "Incluir en Tracklist",
|
||||
"LabelImageURLFromTheWeb": "URL de la imagen",
|
||||
"LabelIncludeInTracklist": "Incluir en la Tracklist",
|
||||
"LabelIncomplete": "Incompleto",
|
||||
"LabelInProgress": "En Proceso",
|
||||
"LabelInterval": "Intervalo",
|
||||
@@ -331,20 +345,22 @@
|
||||
"LabelLogLevelInfo": "Información",
|
||||
"LabelLogLevelWarn": "Advertencia",
|
||||
"LabelLookForNewEpisodesAfterDate": "Buscar Nuevos Episodios a partir de esta Fecha",
|
||||
"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": "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",
|
||||
"LabelMediaPlayer": "Reproductor de Medios",
|
||||
"LabelMediaType": "Tipo de Multimedia",
|
||||
"LabelMetadataOrderOfPrecedenceDescription": "Higher priority metadata sources will override lower priority metadata sources",
|
||||
"LabelMetadataProvider": "Proveedor de Metadata",
|
||||
"LabelMetaTag": "Meta Tag",
|
||||
"LabelMetaTags": "Meta Tags",
|
||||
"LabelMetadataOrderOfPrecedenceDescription": "Las fuentes de metadatos de mayor prioridad prevalecerán sobre las de menor prioridad",
|
||||
"LabelMetadataProvider": "Proveedor de Metadatos",
|
||||
"LabelMetaTag": "Metaetiqueta",
|
||||
"LabelMetaTags": "Metaetiquetas",
|
||||
"LabelMinute": "Minuto",
|
||||
"LabelMissing": "Ausente",
|
||||
"LabelMissingEbook": "Has no ebook",
|
||||
"LabelMissingParts": "Partes Ausentes",
|
||||
"LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs",
|
||||
"LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is <code>audiobookshelf://oauth</code>, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (<code>*</code>) as the sole entry permits any URI.",
|
||||
"LabelMissingSupplementaryEbook": "Has no supplementary ebook",
|
||||
"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 <code>audiobookshelf://oauth</code>, la cual puedes remover or corroborar con URIs adicionales para la integración con apps de terceros. Utilizando un asterisco (<code>*</code>) como el único punto de entrada permite cualquier URI.",
|
||||
"LabelMore": "Más",
|
||||
"LabelMoreInfo": "Más Información",
|
||||
"LabelName": "Nombre",
|
||||
@@ -382,11 +398,13 @@
|
||||
"LabelPermissionsDownload": "Puede Descargar",
|
||||
"LabelPermissionsUpdate": "Puede Actualizar",
|
||||
"LabelPermissionsUpload": "Puede Subir",
|
||||
"LabelPersonalYearReview": "Your Year in Review ({0})",
|
||||
"LabelPhotoPathURL": "Ruta de Acceso/URL de Foto",
|
||||
"LabelPlaylists": "Lista de Reproducción",
|
||||
"LabelPlayMethod": "Método de Reproducción",
|
||||
"LabelPodcast": "Podcast",
|
||||
"LabelPodcasts": "Podcasts",
|
||||
"LabelPodcastSearchRegion": "Región de búsqueda de podcasts",
|
||||
"LabelPodcastType": "Tipo Podcast",
|
||||
"LabelPort": "Puerto",
|
||||
"LabelPrefixesToIgnore": "Prefijos para Ignorar (no distingue entre mayúsculas y minúsculas.)",
|
||||
@@ -403,10 +421,11 @@
|
||||
"LabelRecentlyAdded": "Agregado Recientemente",
|
||||
"LabelRecentSeries": "Series Recientes",
|
||||
"LabelRecommended": "Recomendados",
|
||||
"LabelRedo": "Rehacer",
|
||||
"LabelRegion": "Región",
|
||||
"LabelReleaseDate": "Fecha de Estreno",
|
||||
"LabelRemoveCover": "Remover Portada",
|
||||
"LabelRowsPerPage": "Rows per page",
|
||||
"LabelRowsPerPage": "Filas por página",
|
||||
"LabelRSSFeedCustomOwnerEmail": "Email de dueño personalizado",
|
||||
"LabelRSSFeedCustomOwnerName": "Nombre de dueño personalizado",
|
||||
"LabelRSSFeedOpen": "Fuente RSS Abierta",
|
||||
@@ -419,12 +438,13 @@
|
||||
"LabelSeason": "Temporada",
|
||||
"LabelSelectAllEpisodes": "Seleccionar todos los episodios",
|
||||
"LabelSelectEpisodesShowing": "Seleccionar los {0} episodios visibles",
|
||||
"LabelSelectUsers": "Select users",
|
||||
"LabelSelectUsers": "Seleccionar usuarios",
|
||||
"LabelSendEbookToDevice": "Enviar Ebook a...",
|
||||
"LabelSequence": "Secuencia",
|
||||
"LabelSeries": "Series",
|
||||
"LabelSeriesName": "Nombre de la Serie",
|
||||
"LabelSeriesProgress": "Progreso de la Serie",
|
||||
"LabelServerYearReview": "Server Year in Review ({0})",
|
||||
"LabelSetEbookAsPrimary": "Establecer como primario",
|
||||
"LabelSetEbookAsSupplementary": "Establecer como suplementario",
|
||||
"LabelSettingsAudiobooksOnly": "Sólo Audiolibros",
|
||||
@@ -446,6 +466,8 @@
|
||||
"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",
|
||||
"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": "Extraer Subtítulos",
|
||||
"LabelSettingsParseSubtitlesHelp": "Extraer subtítulos de los nombres de las carpetas de los audiolibros.<br>Los subtítulos deben estar separados por \" - \"<br>Por ejemplo: \"Ejemplo de Título - Subtítulo Aquí\" tiene el subtítulo \"Subtítulo Aquí\"",
|
||||
"LabelSettingsPreferMatchedMetadata": "Preferir metadatos encontrados",
|
||||
@@ -491,10 +513,14 @@
|
||||
"LabelTagsAccessibleToUser": "Etiquetas Accessibles al Usuario",
|
||||
"LabelTagsNotAccessibleToUser": "Etiquetas no Accesibles al Usuario",
|
||||
"LabelTasks": "Tareas Corriendo",
|
||||
"LabelTextEditorBulletedList": "Lista con viñetas",
|
||||
"LabelTextEditorLink": "Enlazar",
|
||||
"LabelTextEditorNumberedList": "Lista numerada",
|
||||
"LabelTextEditorUnlink": "Desenlazar",
|
||||
"LabelTheme": "Tema",
|
||||
"LabelThemeDark": "Oscuro",
|
||||
"LabelThemeLight": "Claro",
|
||||
"LabelTimeBase": "Time Base",
|
||||
"LabelTimeBase": "Tiempo Base",
|
||||
"LabelTimeListened": "Tiempo Escuchando",
|
||||
"LabelTimeListenedToday": "Tiempo Escuchando Hoy",
|
||||
"LabelTimeRemaining": "{0} restante",
|
||||
@@ -516,6 +542,7 @@
|
||||
"LabelTracksSingleTrack": "Una pista",
|
||||
"LabelType": "Tipo",
|
||||
"LabelUnabridged": "No Abreviado",
|
||||
"LabelUndo": "Deshacer",
|
||||
"LabelUnknown": "Desconocido",
|
||||
"LabelUpdateCover": "Actualizar Portada",
|
||||
"LabelUpdateCoverHelp": "Permitir sobrescribir las portadas existentes de los libros seleccionados cuando sean encontradas.",
|
||||
@@ -524,7 +551,7 @@
|
||||
"LabelUpdateDetailsHelp": "Permitir sobrescribir detalles existentes de los libros seleccionados cuando sean encontrados",
|
||||
"LabelUploaderDragAndDrop": "Arrastre y suelte archivos o carpetas",
|
||||
"LabelUploaderDropFiles": "Suelte los Archivos",
|
||||
"LabelUploaderItemFetchMetadataHelp": "Automatically fetch title, author, and series",
|
||||
"LabelUploaderItemFetchMetadataHelp": "Buscar título, autor y series automáticamente",
|
||||
"LabelUseChapterTrack": "Usar pista por capitulo",
|
||||
"LabelUseFullTrack": "Usar pista completa",
|
||||
"LabelUser": "Usuario",
|
||||
@@ -536,6 +563,8 @@
|
||||
"LabelViewQueue": "Ver Fila del Reproductor",
|
||||
"LabelVolume": "Volumen",
|
||||
"LabelWeekdaysToRun": "Correr en Días de la Semana",
|
||||
"LabelYearReviewHide": "Hide Year in Review",
|
||||
"LabelYearReviewShow": "See Year in Review",
|
||||
"LabelYourAudiobookDuration": "Duración de tu Audiolibro",
|
||||
"LabelYourBookmarks": "Tus Marcadores",
|
||||
"LabelYourPlaylists": "Tus Listas",
|
||||
@@ -558,15 +587,15 @@
|
||||
"MessageConfirmDeleteBackup": "¿Está seguro de que desea eliminar el respaldo {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": "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": "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?",
|
||||
"MessageConfirmDeleteSession": "¿Está seguro de que desea eliminar esta sesión?",
|
||||
"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?",
|
||||
"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?",
|
||||
"MessageConfirmQuickEmbed": "Warning! Quick embed will not backup your audio files. Make sure that you have a backup of your audio files. <br><br>Would you like to continue?",
|
||||
"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. <br><br>¿Deseas continuar?",
|
||||
"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}\"?",
|
||||
@@ -581,7 +610,7 @@
|
||||
"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": "Are you sure you want to re-scan {0} items?",
|
||||
"MessageConfirmReScanLibraryItems": "¿Estás seguro de querer re escanear {0} elemento(s)?",
|
||||
"MessageConfirmSendEbookToDevice": "¿Está seguro de que enviar {0} ebook(s) \"{1}\" al dispositivo \"{2}\"?",
|
||||
"MessageDownloadingEpisode": "Descargando Capitulo",
|
||||
"MessageDragFilesIntoTrackOrder": "Arrastra los archivos al orden correcto de las pistas.",
|
||||
@@ -652,7 +681,7 @@
|
||||
"MessageRestoreBackupConfirm": "¿Está seguro de que desea para restaurar del respaldo creado en",
|
||||
"MessageRestoreBackupWarning": "Restaurar sobrescribirá toda la base de datos localizada en /config y las imágenes de portadas en /metadata/items y /metadata/authors.<br /><br />El respaldo no modifica ningún archivo en las carpetas de su biblioteca. Si ha habilitado la opción del servidor para almacenar portadas y metadata en las carpetas de su biblioteca, esos archivos no se respaldan o sobrescriben.<br /><br />Todos los clientes que usen su servidor se actualizarán automáticamente.",
|
||||
"MessageSearchResultsFor": "Resultados de la búsqueda de",
|
||||
"MessageSelected": "{0} selected",
|
||||
"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",
|
||||
"MessageStartPlaybackAtTime": "Iniciar reproducción para \"{0}\" en {1}?",
|
||||
@@ -668,7 +697,6 @@
|
||||
"NoteChangeRootPassword": "El usuario Root es el único usuario que puede no tener una contraseña",
|
||||
"NoteChapterEditorTimes": "Nota: El tiempo de inicio del primer capítulo debe permanecer en 0:00, y el tiempo de inicio del último capítulo no puede exceder la duración del audiolibro.",
|
||||
"NoteFolderPicker": "Nota: Las carpetas ya asignadas no se mostrarán",
|
||||
"NoteFolderPickerDebian": "Nota: El selector de archivos no está completamente implementado para instalaciones en Debian. Deberá ingresar la ruta de la carpeta de su biblioteca directamente.",
|
||||
"NoteRSSFeedPodcastAppsHttps": "Advertencia: La mayoría de las aplicaciones de podcast requieren que la URL de la fuente RSS use HTTPS",
|
||||
"NoteRSSFeedPodcastAppsPubDate": "Advertencia: 1 o más de sus episodios no tienen fecha de publicación. Algunas aplicaciones de podcast lo requieren.",
|
||||
"NoteUploaderFoldersWithMediaFiles": "Las carpetas con archivos multimedia se manejarán como elementos separados en la biblioteca.",
|
||||
|
||||
781
client/strings/et.json
Normal file
781
client/strings/et.json
Normal file
@@ -0,0 +1,781 @@
|
||||
{
|
||||
"ButtonAdd": "Lisa",
|
||||
"ButtonAddChapters": "Lisa peatükid",
|
||||
"ButtonAddDevice": "Lisa seade",
|
||||
"ButtonAddLibrary": "Lisa raamatukogu",
|
||||
"ButtonAddPodcasts": "Lisa podcastid",
|
||||
"ButtonAddUser": "Lisa kasutaja",
|
||||
"ButtonAddYourFirstLibrary": "Lisa oma esimene raamatukogu",
|
||||
"ButtonApply": "Rakenda",
|
||||
"ButtonApplyChapters": "Rakenda peatükid",
|
||||
"ButtonAuthors": "Autorid",
|
||||
"ButtonBrowseForFolder": "Sirvi kausta",
|
||||
"ButtonCancel": "Tühista",
|
||||
"ButtonCancelEncode": "Tühista kodeerimine",
|
||||
"ButtonChangeRootPassword": "Muuda põhiparooli",
|
||||
"ButtonCheckAndDownloadNewEpisodes": "Kontrolli ja laadi alla uued episoodid",
|
||||
"ButtonChooseAFolder": "Vali kaust",
|
||||
"ButtonChooseFiles": "Vali failid",
|
||||
"ButtonClearFilter": "Tühista filter",
|
||||
"ButtonCloseFeed": "Sulge voog",
|
||||
"ButtonCollections": "Kogud",
|
||||
"ButtonConfigureScanner": "Konfigureeri skanner",
|
||||
"ButtonCreate": "Loo",
|
||||
"ButtonCreateBackup": "Loo varundus",
|
||||
"ButtonDelete": "Kustuta",
|
||||
"ButtonDownloadQueue": "Järjekord",
|
||||
"ButtonEdit": "Muuda",
|
||||
"ButtonEditChapters": "Muuda peatükke",
|
||||
"ButtonEditPodcast": "Muuda podcasti",
|
||||
"ButtonForceReScan": "Sunnitud uuestiskaneerimine",
|
||||
"ButtonFullPath": "Täielik asukoht",
|
||||
"ButtonHide": "Peida",
|
||||
"ButtonHome": "Avaleht",
|
||||
"ButtonIssues": "Probleemid",
|
||||
"ButtonJumpBackward": "Hüppa tagasi",
|
||||
"ButtonJumpForward": "Hüppa edasi",
|
||||
"ButtonLatest": "Uusim",
|
||||
"ButtonLibrary": "Raamatukogu",
|
||||
"ButtonLogout": "Logi välja",
|
||||
"ButtonLookup": "Otsi",
|
||||
"ButtonManageTracks": "Halda lugusid",
|
||||
"ButtonMapChapterTitles": "Kaardista peatükkide pealkirjad",
|
||||
"ButtonMatchAllAuthors": "Sobita kõik autorid",
|
||||
"ButtonMatchBooks": "Sobita raamatud",
|
||||
"ButtonNevermind": "Pole tähtis",
|
||||
"ButtonNext": "Next",
|
||||
"ButtonNextChapter": "Järgmine peatükk",
|
||||
"ButtonOk": "Ok",
|
||||
"ButtonOpenFeed": "Ava voog",
|
||||
"ButtonOpenManager": "Ava haldur",
|
||||
"ButtonPause": "Peata",
|
||||
"ButtonPlay": "Mängi",
|
||||
"ButtonPlaying": "Mängib",
|
||||
"ButtonPlaylists": "Esitusloendid",
|
||||
"ButtonPrevious": "Previous",
|
||||
"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",
|
||||
"ButtonRead": "Loe",
|
||||
"ButtonRefresh": "Refresh",
|
||||
"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",
|
||||
"ButtonSave": "Salvesta",
|
||||
"ButtonSaveAndClose": "Salvesta ja sulge",
|
||||
"ButtonSaveTracklist": "Salvesta lugude loend",
|
||||
"ButtonScan": "Skanneeri",
|
||||
"ButtonScanLibrary": "Skanneeri raamatukogu",
|
||||
"ButtonSearch": "Otsi",
|
||||
"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",
|
||||
"ButtonUploadOPMLFile": "Lae üles OPML-fail",
|
||||
"ButtonUserDelete": "Kustuta kasutaja {0}",
|
||||
"ButtonUserEdit": "Muuda kasutajat {0}",
|
||||
"ButtonViewAll": "Vaata kõiki",
|
||||
"ButtonYes": "Jah",
|
||||
"ErrorUploadFetchMetadataAPI": "Viga metaandmete hankimisel",
|
||||
"ErrorUploadFetchMetadataNoResults": "Ei saanud metaandmeid hankida - proovi tiitlit ja/või autorit uuendada",
|
||||
"ErrorUploadLacksTitle": "Peab olema pealkiri",
|
||||
"HeaderAccount": "Konto",
|
||||
"HeaderAdvanced": "Täpsem",
|
||||
"HeaderAppriseNotificationSettings": "Apprise teavitamise seaded",
|
||||
"HeaderAudiobookTools": "Heliraamatu failihaldustööriistad",
|
||||
"HeaderAudioTracks": "Helirajad",
|
||||
"HeaderAuthentication": "Autentimine",
|
||||
"HeaderBackups": "Varukoopiad",
|
||||
"HeaderChangePassword": "Muuda parooli",
|
||||
"HeaderChapters": "Peatükid",
|
||||
"HeaderChooseAFolder": "Vali kaust",
|
||||
"HeaderCollection": "Kogu",
|
||||
"HeaderCollectionItems": "Kogu esemed",
|
||||
"HeaderCover": "Ümbris",
|
||||
"HeaderCurrentDownloads": "Praegused allalaadimised",
|
||||
"HeaderCustomMetadataProviders": "Kohandatud metaandmete pakkujad",
|
||||
"HeaderDetails": "Detailid",
|
||||
"HeaderDownloadQueue": "Allalaadimise järjekord",
|
||||
"HeaderEbookFiles": "E-raamatute failid",
|
||||
"HeaderEmail": "E-post",
|
||||
"HeaderEmailSettings": "E-posti seaded",
|
||||
"HeaderEpisodes": "Episoodid",
|
||||
"HeaderEreaderDevices": "E-lugerite seadmed",
|
||||
"HeaderEreaderSettings": "E-lugerite seadistused",
|
||||
"HeaderFiles": "Failid",
|
||||
"HeaderFindChapters": "Leia peatükid",
|
||||
"HeaderIgnoredFiles": "Ignoreeritud failid",
|
||||
"HeaderItemFiles": "Esemete failid",
|
||||
"HeaderItemMetadataUtils": "Eseme metaandmete tööriistad",
|
||||
"HeaderLastListeningSession": "Viimane kuulamissessioon",
|
||||
"HeaderLatestEpisodes": "Viimased episoodid",
|
||||
"HeaderLibraries": "Raamatukogud",
|
||||
"HeaderLibraryFiles": "Raamatukogu failid",
|
||||
"HeaderLibraryStats": "Raamatukogu statistika",
|
||||
"HeaderListeningSessions": "Kuulamissessioonid",
|
||||
"HeaderListeningStats": "Kuulamise statistika",
|
||||
"HeaderLogin": "Logi sisse",
|
||||
"HeaderLogs": "Logid",
|
||||
"HeaderManageGenres": "Halda žanre",
|
||||
"HeaderManageTags": "Halda silte",
|
||||
"HeaderMapDetails": "Kaardi detailid",
|
||||
"HeaderMatch": "Sobita",
|
||||
"HeaderMetadataOrderOfPrecedence": "Metaandmete eelnevusjärjestus",
|
||||
"HeaderMetadataToEmbed": "Manusta metaandmed",
|
||||
"HeaderNewAccount": "Uus konto",
|
||||
"HeaderNewLibrary": "Uus raamatukogu",
|
||||
"HeaderNotifications": "Teatised",
|
||||
"HeaderOpenIDConnectAuthentication": "OpenID Connect autentimine",
|
||||
"HeaderOpenRSSFeed": "Ava RSS-voog",
|
||||
"HeaderOtherFiles": "Muud failid",
|
||||
"HeaderPasswordAuthentication": "Parooli autentimine",
|
||||
"HeaderPermissions": "Õigused",
|
||||
"HeaderPlayerQueue": "Mängija järjekord",
|
||||
"HeaderPlaylist": "Mänguloend",
|
||||
"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",
|
||||
"HeaderSavedMediaProgress": "Salvestatud meedia edenemine",
|
||||
"HeaderSchedule": "Ajakava",
|
||||
"HeaderScheduleLibraryScans": "Ajasta automaatsed raamatukogu skaneerimised",
|
||||
"HeaderSession": "Sessioon",
|
||||
"HeaderSetBackupSchedule": "Määra varunduse ajakava",
|
||||
"HeaderSettings": "Seaded",
|
||||
"HeaderSettingsDisplay": "Kuva",
|
||||
"HeaderSettingsExperimental": "Katsetusfunktsioonid",
|
||||
"HeaderSettingsGeneral": "Üldised",
|
||||
"HeaderSettingsScanner": "Skanner",
|
||||
"HeaderSleepTimer": "Uinaku taimer",
|
||||
"HeaderStatsLargestItems": "Suurimad esemed",
|
||||
"HeaderStatsLongestItems": "Kõige pikemad esemed (tunnid)",
|
||||
"HeaderStatsMinutesListeningChart": "Kuulamise minutid (viimased 7 päeva)",
|
||||
"HeaderStatsRecentSessions": "Hiljutised sessioonid",
|
||||
"HeaderStatsTop10Authors": "Top 10 autorit",
|
||||
"HeaderStatsTop5Genres": "Top 5 žanrit",
|
||||
"HeaderTableOfContents": "Sisukord",
|
||||
"HeaderTools": "Tööriistad",
|
||||
"HeaderUpdateAccount": "Uuenda kontot",
|
||||
"HeaderUpdateAuthor": "Uuenda autorit",
|
||||
"HeaderUpdateDetails": "Uuenda detaile",
|
||||
"HeaderUpdateLibrary": "Uuenda raamatukogu",
|
||||
"HeaderUsers": "Kasutajad",
|
||||
"HeaderYearReview": "Year {0} in Review",
|
||||
"HeaderYourStats": "Sinu statistika",
|
||||
"LabelAbridged": "Kärbitud",
|
||||
"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",
|
||||
"LabelAdminUsersOnly": "Ainult administraatorid",
|
||||
"LabelAll": "Kõik",
|
||||
"LabelAllUsers": "Kõik kasutajad",
|
||||
"LabelAllUsersExcludingGuests": "Kõik kasutajad, välja arvatud külalised",
|
||||
"LabelAllUsersIncludingGuests": "Kõik kasutajad, kaasa arvatud külalised",
|
||||
"LabelAlreadyInYourLibrary": "Juba teie raamatukogus",
|
||||
"LabelAppend": "Lisa",
|
||||
"LabelAuthor": "Autor",
|
||||
"LabelAuthorFirstLast": "Autor (Eesnimi Perekonnanimi)",
|
||||
"LabelAuthorLastFirst": "Autor (Perekonnanimi, Eesnimi)",
|
||||
"LabelAuthors": "Autorid",
|
||||
"LabelAutoDownloadEpisodes": "Automaatne episoodide allalaadimine",
|
||||
"LabelAutoFetchMetadata": "Automaatne metaandmete hankimine",
|
||||
"LabelAutoFetchMetadataHelp": "Toob tiitli, autori ja seeria metaandmed üleslaadimise hõlbustamiseks. Lisametaandmed võivad pärast üleslaadimist vajada vastavust.",
|
||||
"LabelAutoLaunch": "Automaatne käivitamine",
|
||||
"LabelAutoLaunchDescription": "Suunab automaatselt autentimist pakkuvale teenusele, kui navigeeritakse sisselogimislehele (käsitsi ülekirjutuse tee <code>/login?autoLaunch=0</code>)",
|
||||
"LabelAutoRegister": "Automaatne registreerimine",
|
||||
"LabelAutoRegisterDescription": "Loo uued kasutajad automaatselt sisselogimisel",
|
||||
"LabelBackToUser": "Tagasi kasutajale",
|
||||
"LabelBackupLocation": "Varukoopia asukoht",
|
||||
"LabelBackupsEnableAutomaticBackups": "Luba automaatsed varukoopiad",
|
||||
"LabelBackupsEnableAutomaticBackupsHelp": "Varukoopiad salvestatakse /metadata/backups kausta",
|
||||
"LabelBackupsMaxBackupSize": "Maksimaalne varukoopia suurus (GB-des)",
|
||||
"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",
|
||||
"LabelChangePassword": "Muuda parooli",
|
||||
"LabelChannels": "Kanalid",
|
||||
"LabelChapters": "Peatükid",
|
||||
"LabelChaptersFound": "peatükid leitud",
|
||||
"LabelChapterTitle": "Peatüki pealkiri",
|
||||
"LabelClickForMoreInfo": "Klõpsa lisateabe saamiseks",
|
||||
"LabelClosePlayer": "Sulge mängija",
|
||||
"LabelCodec": "Kodek",
|
||||
"LabelCollapseSeries": "Ahenda seeria",
|
||||
"LabelCollection": "Kogu",
|
||||
"LabelCollections": "Kogud",
|
||||
"LabelComplete": "Valmis",
|
||||
"LabelConfirmPassword": "Kinnita parool",
|
||||
"LabelContinueListening": "Jätka kuulamist",
|
||||
"LabelContinueReading": "Jätka lugemist",
|
||||
"LabelContinueSeries": "Jätka seeriat",
|
||||
"LabelCover": "Ümbris",
|
||||
"LabelCoverImageURL": "Ümbrise pildi URL",
|
||||
"LabelCreatedAt": "Loodud",
|
||||
"LabelCronExpression": "Croni valem",
|
||||
"LabelCurrent": "Praegune",
|
||||
"LabelCurrently": "Praegu:",
|
||||
"LabelCustomCronExpression": "Kohandatud Croni valem:",
|
||||
"LabelDatetime": "Kuupäev ja kellaaeg",
|
||||
"LabelDeleteFromFileSystemCheckbox": "Kustuta failisüsteemist (ärge märkige seda ära, et eemaldada ainult andmebaasist)",
|
||||
"LabelDescription": "Kirjeldus",
|
||||
"LabelDeselectAll": "Tühista kõigi valimine",
|
||||
"LabelDevice": "Seade",
|
||||
"LabelDeviceInfo": "Seadme info",
|
||||
"LabelDeviceIsAvailableTo": "Seade on saadaval kasutajale...",
|
||||
"LabelDirectory": "Kataloog",
|
||||
"LabelDiscFromFilename": "Ketas failinimest",
|
||||
"LabelDiscFromMetadata": "Ketas metaandmetest",
|
||||
"LabelDiscover": "Avasta",
|
||||
"LabelDownload": "Lae alla",
|
||||
"LabelDownloadNEpisodes": "Lae alla {0} episoodi",
|
||||
"LabelDuration": "Kestus",
|
||||
"LabelDurationFound": "Leitud kestus:",
|
||||
"LabelEbook": "E-raamat",
|
||||
"LabelEbooks": "E-raamatud",
|
||||
"LabelEdit": "Muuda",
|
||||
"LabelEmail": "E-post",
|
||||
"LabelEmailSettingsFromAddress": "Saatja aadress",
|
||||
"LabelEmailSettingsSecure": "Turvaline",
|
||||
"LabelEmailSettingsSecureHelp": "Kui see on tõene, kasutab ühendus serveriga ühenduse loomisel TLS-i. Kui see on väär, kasutatakse TLS-i, kui server toetab STARTTLS-i laiendust. Enamikul juhtudest seadke see väärtus tõeks, kui ühendate pordile 465. Pordi 587 või 25 korral hoidke seda väär. (nodemailer.com/smtp/#authentication)",
|
||||
"LabelEmailSettingsTestAddress": "Testi aadress",
|
||||
"LabelEmbeddedCover": "Manustatud kaas",
|
||||
"LabelEnable": "Luba",
|
||||
"LabelEnd": "Lõpp",
|
||||
"LabelEpisode": "Episood",
|
||||
"LabelEpisodeTitle": "Episoodi pealkiri",
|
||||
"LabelEpisodeType": "Episoodi tüüp",
|
||||
"LabelExample": "Näide",
|
||||
"LabelExplicit": "Vulgaarne",
|
||||
"LabelFeedURL": "Voogu URL",
|
||||
"LabelFetchingMetadata": "Metaandmete hankimine",
|
||||
"LabelFile": "Fail",
|
||||
"LabelFileBirthtime": "Faili sünniaeg",
|
||||
"LabelFileModified": "Faili muudetud",
|
||||
"LabelFilename": "Failinimi",
|
||||
"LabelFilterByUser": "Filtri alusel kasutaja järgi",
|
||||
"LabelFindEpisodes": "Otsi episoodid",
|
||||
"LabelFinished": "Lõpetatud",
|
||||
"LabelFolder": "Kaust",
|
||||
"LabelFolders": "Kataloogid",
|
||||
"LabelFontBold": "Paks",
|
||||
"LabelFontFamily": "Fondi pere",
|
||||
"LabelFontItalic": "Kaldkiri",
|
||||
"LabelFontScale": "Fondi suurus",
|
||||
"LabelFontStrikethrough": "Üle joonitud",
|
||||
"LabelFormat": "Vorming",
|
||||
"LabelGenre": "Žanr",
|
||||
"LabelGenres": "Žanrid",
|
||||
"LabelHardDeleteFile": "Faili lõplik kustutamine",
|
||||
"LabelHasEbook": "On e-raamat",
|
||||
"LabelHasSupplementaryEbook": "On täiendav e-raamat",
|
||||
"LabelHighestPriority": "Kõrgeim prioriteet",
|
||||
"LabelHost": "Host",
|
||||
"LabelHour": "Tund",
|
||||
"LabelIcon": "Ikoon",
|
||||
"LabelImageURLFromTheWeb": "Pildi URL veebist",
|
||||
"LabelIncludeInTracklist": "Kaasa jälgimisloendis",
|
||||
"LabelIncomplete": "Puudulik",
|
||||
"LabelInProgress": "Pooleli",
|
||||
"LabelInterval": "Intervall",
|
||||
"LabelIntervalCustomDailyWeekly": "Kohandatud päevane/nädalane",
|
||||
"LabelIntervalEvery12Hours": "Iga 12 tunni tagant",
|
||||
"LabelIntervalEvery15Minutes": "Iga 15 minuti tagant",
|
||||
"LabelIntervalEvery2Hours": "Iga 2 tunni tagant",
|
||||
"LabelIntervalEvery30Minutes": "Iga 30 minuti tagant",
|
||||
"LabelIntervalEvery6Hours": "Iga 6 tunni tagant",
|
||||
"LabelIntervalEveryDay": "Iga päev",
|
||||
"LabelIntervalEveryHour": "Iga tunni tagant",
|
||||
"LabelInvalidParts": "Vigased osad",
|
||||
"LabelInvert": "Pööra ümber",
|
||||
"LabelItem": "Kirje",
|
||||
"LabelLanguage": "Keel",
|
||||
"LabelLanguageDefaultServer": "Vaikeserveri keel",
|
||||
"LabelLastBookAdded": "Viimati lisatud raamat",
|
||||
"LabelLastBookUpdated": "Viimati uuendatud raamat",
|
||||
"LabelLastSeen": "Viimati nähtud",
|
||||
"LabelLastTime": "Viimati aeg",
|
||||
"LabelLastUpdate": "Viimane uuendus",
|
||||
"LabelLayout": "Paigutus",
|
||||
"LabelLayoutSinglePage": "Üks lehekülg",
|
||||
"LabelLayoutSplitPage": "Jagatud lehekülg",
|
||||
"LabelLess": "Vähem",
|
||||
"LabelLibrariesAccessibleToUser": "Kasutajale ligipääsetavad raamatukogud",
|
||||
"LabelLibrary": "Raamatukogu",
|
||||
"LabelLibraryItem": "Raamatukogu kirje",
|
||||
"LabelLibraryName": "Raamatukogu nimi",
|
||||
"LabelLimit": "Piirang",
|
||||
"LabelLineSpacing": "Joonevahe",
|
||||
"LabelListenAgain": "Kuula uuesti",
|
||||
"LabelLogLevelDebug": "Silumine",
|
||||
"LabelLogLevelInfo": "Teave",
|
||||
"LabelLogLevelWarn": "Hoiatus",
|
||||
"LabelLookForNewEpisodesAfterDate": "Otsi uusi episoodid pärast seda kuupäeva",
|
||||
"LabelLowestPriority": "Madalaim prioriteet",
|
||||
"LabelMatchExistingUsersBy": "Sobita olemasolevad kasutajad",
|
||||
"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",
|
||||
"LabelMinute": "Minut",
|
||||
"LabelMissing": "Puudub",
|
||||
"LabelMissingEbook": "Has no ebook",
|
||||
"LabelMissingParts": "Puuduvad osad",
|
||||
"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 <code>audiobookshelf://oauth</code>, mida saate eemaldada või täiendada täiendavate URI-dega kolmanda osapoole rakenduste integreerimiseks. Tärni (<code>*</code>) ainukese kirjena kasutamine võimaldab mis tahes URI-d.",
|
||||
"LabelMore": "Rohkem",
|
||||
"LabelMoreInfo": "Rohkem infot",
|
||||
"LabelName": "Nimi",
|
||||
"LabelNarrator": "Jutustaja",
|
||||
"LabelNarrators": "Jutustajad",
|
||||
"LabelNew": "Uus",
|
||||
"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",
|
||||
"LabelNotificationAppriseURL": "Apprise URL-id",
|
||||
"LabelNotificationAvailableVariables": "Saadaolevad muutujad",
|
||||
"LabelNotificationBodyTemplate": "Keha mall",
|
||||
"LabelNotificationEvent": "Teavituse sündmus",
|
||||
"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",
|
||||
"LabelOpenRSSFeed": "Ava RSS voog",
|
||||
"LabelOverwrite": "Kirjuta üle",
|
||||
"LabelPassword": "Parool",
|
||||
"LabelPath": "Asukoht",
|
||||
"LabelPermissionsAccessAllLibraries": "Saab ligi kõikidele raamatukogudele",
|
||||
"LabelPermissionsAccessAllTags": "Saab ligi kõikidele siltidele",
|
||||
"LabelPermissionsAccessExplicitContent": "Saab ligi vulgaarsele sisule",
|
||||
"LabelPermissionsDelete": "Saab kustutada",
|
||||
"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",
|
||||
"LabelPodcastSearchRegion": "Podcasti otsingu piirkond",
|
||||
"LabelPodcastType": "Podcasti tüüp",
|
||||
"LabelPort": "Port",
|
||||
"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",
|
||||
"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",
|
||||
"LabelSearchTerm": "Otsingutermin",
|
||||
"LabelSearchTitle": "Otsi pealkirja",
|
||||
"LabelSearchTitleOrASIN": "Otsi pealkirja või ASIN-i",
|
||||
"LabelSeason": "Hooaeg",
|
||||
"LabelSelectAllEpisodes": "Vali kõik episoodid",
|
||||
"LabelSelectEpisodesShowing": "Valige {0} näidatavat episoodi",
|
||||
"LabelSelectUsers": "Valige kasutajad",
|
||||
"LabelSendEbookToDevice": "Saada e-raamat seadmele...",
|
||||
"LabelSequence": "Järjestus",
|
||||
"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",
|
||||
"LabelSettingsAudiobooksOnlyHelp": "Selle seadistuse lubamine eirab e-raamatute faile, välja arvatud juhul, kui need on heliraamatu kaustas, kus need seatakse täiendavate e-raamatutena",
|
||||
"LabelSettingsBookshelfViewHelp": "Skeumorfne kujundus puidust riiulitega",
|
||||
"LabelSettingsChromecastSupport": "Chromecasti tugi",
|
||||
"LabelSettingsDateFormat": "Kuupäeva vorming",
|
||||
"LabelSettingsDisableWatcher": "Keela vaatamine",
|
||||
"LabelSettingsDisableWatcherForLibrary": "Keela kaustavaatamine raamatukogu jaoks",
|
||||
"LabelSettingsDisableWatcherHelp": "Keelab automaatse lisamise/uuendamise, kui failimuudatusi tuvastatakse. *Nõuab serveri taaskäivitamist",
|
||||
"LabelSettingsEnableWatcher": "Luba vaatamine",
|
||||
"LabelSettingsEnableWatcherForLibrary": "Luba kaustavaatamine raamatukogu jaoks",
|
||||
"LabelSettingsEnableWatcherHelp": "Lubab automaatset lisamist/uuendamist, kui tuvastatakse failimuudatused. *Nõuab serveri taaskäivitamist",
|
||||
"LabelSettingsExperimentalFeatures": "Eksperimentaalsed funktsioonid",
|
||||
"LabelSettingsExperimentalFeaturesHelp": "Arengus olevad funktsioonid, mis vajavad teie tagasisidet ja abi testimisel. Klõpsake GitHubi arutelu avamiseks.",
|
||||
"LabelSettingsFindCovers": "Leia ümbrised",
|
||||
"LabelSettingsFindCoversHelp": "Kui teie heliraamatul pole sisseehitatud ümbrist ega ümbrise pilti kaustas, proovib skanner leida ümbrist.<br>Märkus: see pikendab skaneerimisaega",
|
||||
"LabelSettingsHideSingleBookSeries": "Peida üksikute raamatute seeriad",
|
||||
"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.<br>Subtiitrid peavad olema eraldatud \" - \".<br>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",
|
||||
"LabelSettingsSkipMatchingBooksWithISBN": "Jätke ISBN-iga sobituvad raamatud vahele",
|
||||
"LabelSettingsSortingIgnorePrefixes": "Ignoreeri eesliiteid sortimisel",
|
||||
"LabelSettingsSortingIgnorePrefixesHelp": "nt. eesliidet \"the\" kasutades raamatu pealkiri \"The Book Title\" sorteeritakse \"Book Title, The\"",
|
||||
"LabelSettingsSquareBookCovers": "Kasutage ruudukujulisi raamatu kaasi",
|
||||
"LabelSettingsSquareBookCoversHelp": "Eelistage ruudukujulisi kaasi tavaliste 1.6:1 raamatu ümbrise asemel",
|
||||
"LabelSettingsStoreCoversWithItem": "Salvesta kaaned üksusega",
|
||||
"LabelSettingsStoreCoversWithItemHelp": "Vaikimisi salvestatakse kaaned /metadata/items kausta. Selle seadistuse lubamine salvestab kaaned teie raamatukogu üksuse kausta. Hoitakse ainult ühte faili nimega \"kaas\"",
|
||||
"LabelSettingsStoreMetadataWithItem": "Salvesta metaandmed üksusega",
|
||||
"LabelSettingsStoreMetadataWithItemHelp": "Vaikimisi salvestatakse metaandmed /metadata/items kausta. Selle seadistuse lubamine salvestab metaandmed teie raamatukogu üksuse kaustadesse",
|
||||
"LabelSettingsTimeFormat": "Kellaaja vorming",
|
||||
"LabelShowAll": "Näita kõiki",
|
||||
"LabelSize": "Suurus",
|
||||
"LabelSleepTimer": "Uinaku taimer",
|
||||
"LabelSlug": "Slug",
|
||||
"LabelStart": "Alusta",
|
||||
"LabelStarted": "Alustatud",
|
||||
"LabelStartedAt": "Alustatud",
|
||||
"LabelStartTime": "Alustamise aeg",
|
||||
"LabelStatsAudioTracks": "Audiojäljed",
|
||||
"LabelStatsAuthors": "Autorid",
|
||||
"LabelStatsBestDay": "Parim päev",
|
||||
"LabelStatsDailyAverage": "Päevane keskmine",
|
||||
"LabelStatsDays": "Päevad",
|
||||
"LabelStatsDaysListened": "Kuulatud päevad",
|
||||
"LabelStatsHours": "Tunnid",
|
||||
"LabelStatsInARow": "järjest",
|
||||
"LabelStatsItemsFinished": "Lõpetatud üksused",
|
||||
"LabelStatsItemsInLibrary": "Üksused raamatukogus",
|
||||
"LabelStatsMinutes": "minutit",
|
||||
"LabelStatsMinutesListening": "Kuulamise minutid",
|
||||
"LabelStatsOverallDays": "Kokku päevad",
|
||||
"LabelStatsOverallHours": "Kokku tunnid",
|
||||
"LabelStatsWeekListening": "Nädala kuulamine",
|
||||
"LabelSubtitle": "Alapealkiri",
|
||||
"LabelSupportedFileTypes": "Toetatud failitüübid",
|
||||
"LabelTag": "Silt",
|
||||
"LabelTags": "Sildid",
|
||||
"LabelTagsAccessibleToUser": "Kasutajale kättesaadavad sildid",
|
||||
"LabelTagsNotAccessibleToUser": "Kasutajale mittekättesaadavad sildid",
|
||||
"LabelTasks": "Käimasolevad ülesanded",
|
||||
"LabelTextEditorBulletedList": "Punktloend",
|
||||
"LabelTextEditorLink": "Link",
|
||||
"LabelTextEditorNumberedList": "Numberloend",
|
||||
"LabelTextEditorUnlink": "Eemalda link",
|
||||
"LabelTheme": "Teema",
|
||||
"LabelThemeDark": "Tume",
|
||||
"LabelThemeLight": "Hele",
|
||||
"LabelTimeBase": "Aja alus",
|
||||
"LabelTimeListened": "Kuulatud aeg",
|
||||
"LabelTimeListenedToday": "Täna kuulatud aeg",
|
||||
"LabelTimeRemaining": "{0} jäänud",
|
||||
"LabelTimeToShift": "Nihutamiseks sekundites kuluv aeg",
|
||||
"LabelTitle": "Pealkiri",
|
||||
"LabelToolsEmbedMetadata": "Manusta metaandmed",
|
||||
"LabelToolsEmbedMetadataDescription": "Manusta metaandmed helifailidesse, sealhulgas kaanepilt ja peatükid.",
|
||||
"LabelToolsMakeM4b": "Loo M4B heliraamatu fail",
|
||||
"LabelToolsMakeM4bDescription": "Loo .M4B heliraamatu fail, kuhu on manustatud metaandmed, kaanepilt ja peatükid.",
|
||||
"LabelToolsSplitM4b": "Jaga M4B MP3-deks",
|
||||
"LabelToolsSplitM4bDescription": "Loo MP3-d M4B-st peatükkide kaupa, kus on manustatud metaandmed, kaanepilt ja peatükid.",
|
||||
"LabelTotalDuration": "Kogukestus",
|
||||
"LabelTotalTimeListened": "Kogu kuulatud aeg",
|
||||
"LabelTrackFromFilename": "Jälg nimest",
|
||||
"LabelTrackFromMetadata": "Jälg metaandmetest",
|
||||
"LabelTracks": "Jäljed",
|
||||
"LabelTracksMultiTrack": "Mitmejälg",
|
||||
"LabelTracksNone": "Ühtegi jälgimist",
|
||||
"LabelTracksSingleTrack": "Üksikjälg",
|
||||
"LabelType": "Tüüp",
|
||||
"LabelUnabridged": "Täismahus",
|
||||
"LabelUndo": "Võta tagasi",
|
||||
"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",
|
||||
"LabelUploaderDragAndDrop": "Lohista ja aseta faile või kaustu",
|
||||
"LabelUploaderDropFiles": "Aseta failid",
|
||||
"LabelUploaderItemFetchMetadataHelp": "Hangi automaatselt pealkiri, autor ja seeria",
|
||||
"LabelUseChapterTrack": "Kasuta peatüki jälge",
|
||||
"LabelUseFullTrack": "Kasuta täielikku jälge",
|
||||
"LabelUser": "Kasutaja",
|
||||
"LabelUsername": "Kasutajanimi",
|
||||
"LabelValue": "Väärtus",
|
||||
"LabelVersion": "Versioon",
|
||||
"LabelViewBookmarks": "Vaata järjehoidjaid",
|
||||
"LabelViewChapters": "Vaata peatükke",
|
||||
"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",
|
||||
"LabelYourProgress": "Teie edenemine",
|
||||
"MessageAddToPlayerQueue": "Lisa esitusjärjekorda",
|
||||
"MessageAppriseDescription": "Selle funktsiooni kasutamiseks peate käivitama <a href=\"https://github.com/caronc/apprise-api\" target=\"_blank\">Apprise API</a> eksemplari või API, mis töötleb samu päringuid. <br />Apprise API URL peaks olema täielik URL-rada teatise saatmiseks, näiteks kui teie API eksemplar töötab aadressil <code>http://192.168.1.1:8337</code>, siis peaksite sisestama <code>http://192.168.1.1:8337/notify</code>.",
|
||||
"MessageBackupsDescription": "Varukoopiad hõlmavad kasutajaid, kasutajate edenemist, raamatukogu üksikasju, serveri seadeid ja kaustades <code>/metadata/items</code> ja <code>/metadata/authors</code> 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",
|
||||
"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",
|
||||
"MessageChapterErrorStartGteDuration": "Vigane algusaeg peab olema väiksem kui heliraamatu kestus",
|
||||
"MessageChapterErrorStartLtPrev": "Vigane algusaeg peab olema suurem või võrdne eelneva peatüki algusajaga",
|
||||
"MessageChapterStartIsAfter": "Peatüki algus on pärast teie heliraamatu lõppu",
|
||||
"MessageCheckingCron": "Croni kontrollimine...",
|
||||
"MessageConfirmCloseFeed": "Olete kindel, et soovite selle voo sulgeda?",
|
||||
"MessageConfirmDeleteBackup": "Olete kindel, et soovite varukoopia kustutada {0} kohta?",
|
||||
"MessageConfirmDeleteFile": "See kustutab faili teie failisüsteemist. Olete kindel?",
|
||||
"MessageConfirmDeleteLibrary": "Olete kindel, et soovite raamatukogu \"{0}\" lõplikult kustutada?",
|
||||
"MessageConfirmDeleteLibraryItem": "See kustutab raamatukogu üksuse andmebaasist ja failisüsteemist. Olete kindel?",
|
||||
"MessageConfirmDeleteLibraryItems": "See kustutab {0} raamatukogu üksust andmebaasist ja failisüsteemist. Olete kindel?",
|
||||
"MessageConfirmDeleteSession": "Olete kindel, et soovite selle seansi kustutada?",
|
||||
"MessageConfirmForceReScan": "Olete kindel, et soovite jõuga uuesti skannida?",
|
||||
"MessageConfirmMarkAllEpisodesFinished": "Olete kindel, et soovite kõik episoodid lõpetatuks märkida?",
|
||||
"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?",
|
||||
"MessageConfirmQuickEmbed": "Hoiatus! Quick Embed ei tee varukoopiaid teie helifailidest. Veenduge, et teil oleks varukoopia oma helifailidest. <br><br>Kas soovite jätkata?",
|
||||
"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?",
|
||||
"MessageConfirmRemoveEpisode": "Olete kindel, et soovite episoodi \"{0}\" eemaldada?",
|
||||
"MessageConfirmRemoveEpisodes": "Olete kindel, et soovite eemaldada {0} episoodi?",
|
||||
"MessageConfirmRemoveListeningSessions": "Olete kindel, et soovite eemaldada {0} kuulamise sessiooni?",
|
||||
"MessageConfirmRemoveNarrator": "Olete kindel, et soovite jutustaja \"{0}\" eemaldada?",
|
||||
"MessageConfirmRemovePlaylist": "Olete kindel, et soovite eemaldada oma esitusloendi \"{0}\"?",
|
||||
"MessageConfirmRenameGenre": "Olete kindel, et soovite žanri \"{0}\" ümber nimetada kujule \"{1}\" kõikidele üksustele?",
|
||||
"MessageConfirmRenameGenreMergeNote": "Märkus: See žanr on juba olemas, nii et need ühendatakse.",
|
||||
"MessageConfirmRenameGenreWarning": "Hoiatus! Sarnane žanr erineva puhvriga on juba olemas \"{0}\".",
|
||||
"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",
|
||||
"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.",
|
||||
"MessageImportantNotice": "Oluline märkus!",
|
||||
"MessageInsertChapterBelow": "Sisesta peatükk allapoole",
|
||||
"MessageItemsSelected": "{0} Valitud üksust",
|
||||
"MessageItemsUpdated": "{0} Üksust on uuendatud",
|
||||
"MessageJoinUsOn": "Liitu meiega",
|
||||
"MessageListeningSessionsInTheLastYear": "Kuulamissessioone viimase aasta jooksul: {0}",
|
||||
"MessageLoading": "Laadimine...",
|
||||
"MessageLoadingFolders": "Kaustade laadimine...",
|
||||
"MessageM4BFailed": "M4B ebaõnnestus!",
|
||||
"MessageM4BFinished": "M4B lõpetatud!",
|
||||
"MessageMapChapterTitles": "Kaarda peatükkide pealkirjad olemasolevatele heliraamatu peatükkidele, ajatempe ei muudeta",
|
||||
"MessageMarkAllEpisodesFinished": "Märgi kõik episoodid lõpetatuks",
|
||||
"MessageMarkAllEpisodesNotFinished": "Märgi kõik episoodid mitte lõpetatuks",
|
||||
"MessageMarkAsFinished": "Märgi lõpetatuks",
|
||||
"MessageMarkAsNotFinished": "Märgi mitte lõpetatuks",
|
||||
"MessageMatchBooksDescription": "üritab raamatuid raamatukogus sobitada otsingupakkujast leitud raamatuga ning täita tühjad üksikasjad ja kaas. Ei üle kirjuta üksikasju.",
|
||||
"MessageNoAudioTracks": "Ühtegi helijälge pole",
|
||||
"MessageNoAuthors": "Ühtegi autori pole",
|
||||
"MessageNoBackups": "Ühtegi varukoopia pole",
|
||||
"MessageNoBookmarks": "Ühtegi järjehoidjat pole",
|
||||
"MessageNoChapters": "Ühtegi peatükki pole",
|
||||
"MessageNoCollections": "Ühtegi kogumit pole",
|
||||
"MessageNoCoversFound": "Ühtegi kaant pole leitud",
|
||||
"MessageNoDescription": "Kirjeldust pole",
|
||||
"MessageNoDownloadsInProgress": "Praegu allalaadimisi pole",
|
||||
"MessageNoDownloadsQueued": "Pole järjekorras allalaadimisi",
|
||||
"MessageNoEpisodeMatchesFound": "Ühtegi episoodi vastet pole leitud",
|
||||
"MessageNoEpisodes": "Ühtegi episoodi pole",
|
||||
"MessageNoFoldersAvailable": "Ühtegi kausta pole saadaval",
|
||||
"MessageNoGenres": "Ühtegi žanrit pole",
|
||||
"MessageNoIssues": "Ühtegi probleemi pole",
|
||||
"MessageNoItems": "Ühtegi üksust pole",
|
||||
"MessageNoItemsFound": "Ühtegi üksust pole leitud",
|
||||
"MessageNoListeningSessions": "Ühtegi kuulamissessiooni pole",
|
||||
"MessageNoLogs": "Ühtegi logi pole",
|
||||
"MessageNoMediaProgress": "Ühtegi meediaprogressi pole",
|
||||
"MessageNoNotifications": "Ühtegi teavitust pole",
|
||||
"MessageNoPodcastsFound": "Ühtegi podcasti pole leitud",
|
||||
"MessageNoResults": "Ühtegi tulemust pole",
|
||||
"MessageNoSearchResultsFor": "Otsingutulemusi pole märksõna kohta: \"{0}\"",
|
||||
"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",
|
||||
"MessageOr": "või",
|
||||
"MessagePauseChapter": "Peata peatüki esitamine",
|
||||
"MessagePlayChapter": "Kuula peatüki algust",
|
||||
"MessagePlaylistCreateFromCollection": "Loo esitusloend kogumist",
|
||||
"MessagePodcastHasNoRSSFeedForMatching": "Podcastil pole sobitamiseks RSS-voogu",
|
||||
"MessageQuickMatchDescription": "täidab tühjad üksikasjad ja kaaned raamatukogus esimese otsingutulemusega rakendusest '{0}'. Ei üle kirjuta üksikasju, välja arvatud juhul, kui serveri sätetes on lubatud 'Eelista sobitatud metaandmeid'.",
|
||||
"MessageRemoveChapter": "Eemalda peatükk",
|
||||
"MessageRemoveEpisodes": "Eemalda {0} episood(i)",
|
||||
"MessageRemoveFromPlayerQueue": "Eemalda esitusjärjekorrast",
|
||||
"MessageRemoveUserWarning": "Olete kindel, et soovite kasutaja \"{0}\" lõplikult kustutada?",
|
||||
"MessageReportBugsAndContribute": "Raporteeri vigu, palu funktsioone ja aita kaasa",
|
||||
"MessageResetChaptersConfirm": "Olete kindel, et soovite peatükkide lähtestada ja tehtud muudatused tagasi võtta?",
|
||||
"MessageRestoreBackupConfirm": "Olete kindel, et soovite taastada varukoopia, mis loodi",
|
||||
"MessageRestoreBackupWarning": "Varukoopia taastamine kirjutab üle kogu /config ja /metadata/items & /metadata/authors kaustas oleva andmebaasi. <br /><br />Varukoopiad ei muuda teie raamatukogukaustades olevaid faile. Kui olete lubanud serveri sätetel salvestada kaane kunsti ja metaandmed teie raamatukogu kaustadesse, siis neid ei varundata ega kirjutata üle.<br /><br />Kõik teie serveri kasutavad kliendid värskendatakse automaatselt.",
|
||||
"MessageSearchResultsFor": "Otsingutulemused märksõnale",
|
||||
"MessageSelected": "{0} valitud",
|
||||
"MessageServerCouldNotBeReached": "Serveriga ei saanud ühendust luua",
|
||||
"MessageSetChaptersFromTracksDescription": "Määrake peatükid, kasutades iga helifaili peatükina ja peatüki pealkirjana helifaili nime",
|
||||
"MessageStartPlaybackAtTime": "Alustage \"{0}\" esitamist kell {1}?",
|
||||
"MessageThinking": "Mõtlen...",
|
||||
"MessageUploaderItemFailed": "Üleslaadimine ebaõnnestus",
|
||||
"MessageUploaderItemSuccess": "Edukalt üles laaditud!",
|
||||
"MessageUploading": "Üles laadimine...",
|
||||
"MessageValidCronExpression": "Kehtiv cron-väljend",
|
||||
"MessageWatcherIsDisabledGlobally": "Vaatleja on ülemaailmselt keelatud serveri sätetes",
|
||||
"MessageXLibraryIsEmpty": "{0} raamatukogu on tühi!",
|
||||
"MessageYourAudiobookDurationIsLonger": "Teie heliraamatu kestus on pikem kui leitud kestus",
|
||||
"MessageYourAudiobookDurationIsShorter": "Teie heliraamatu kestus on lühem kui leitud kestus",
|
||||
"NoteChangeRootPassword": "Root kasutajal võib olla ainus kasutaja, kellel võib olla tühi parool",
|
||||
"NoteChapterEditorTimes": "Märkus: Esimese peatüki algusaeg peab jääma 0:00 ja viimase peatüki algusaeg ei tohi ületada selle heliraamatu kestust.",
|
||||
"NoteFolderPicker": "Märkus: juba kaardistatud kaustu ei kuvata",
|
||||
"NoteRSSFeedPodcastAppsHttps": "Hoiatus: Enamik podcasti rakendusi nõuab, et RSS-voogu URL kasutaks HTTPS-i",
|
||||
"NoteRSSFeedPodcastAppsPubDate": "Hoiatus: Üks või mitu teie episoodi ei sisalda publikatsioonikuupäeva. Mõned podcasti rakendused nõuavad seda.",
|
||||
"NoteUploaderFoldersWithMediaFiles": "Kaustu, kus on meediat, käsitletakse eraldi raamatukogu üksustena.",
|
||||
"NoteUploaderOnlyAudioFiles": "Kui laadite üles ainult helifaile, käsitletakse iga helifaili eraldi heliraamatuna.",
|
||||
"NoteUploaderUnsupportedFiles": "Toetamata failid jäetakse tähelepanuta. Kausta valimisel või lohistamisel jäetakse tähelepanuta muud failid, mis pole üksuse kaustas.",
|
||||
"PlaceholderNewCollection": "Uue kogumi nimi",
|
||||
"PlaceholderNewFolderPath": "Uus kausta tee",
|
||||
"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)",
|
||||
"ToastBackupCreateFailed": "Varukoopia loomine ebaõnnestus",
|
||||
"ToastBackupCreateSuccess": "Varukoopia loodud",
|
||||
"ToastBackupDeleteFailed": "Varukoopia kustutamine ebaõnnestus",
|
||||
"ToastBackupDeleteSuccess": "Varukoopia kustutatud",
|
||||
"ToastBackupRestoreFailed": "Varukoopia taastamine ebaõnnestus",
|
||||
"ToastBackupUploadFailed": "Varukoopia üles laadimine ebaõnnestus",
|
||||
"ToastBackupUploadSuccess": "Varukoopia üles laaditud",
|
||||
"ToastBatchUpdateFailed": "Partii värskendamine ebaõnnestus",
|
||||
"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",
|
||||
"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",
|
||||
"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",
|
||||
"ToastItemMarkedAsNotFinishedSuccess": "Üksus märgitud kui mitte lõpetatud",
|
||||
"ToastLibraryCreateFailed": "Raamatukogu loomine ebaõnnestus",
|
||||
"ToastLibraryCreateSuccess": "Raamatukogu \"{0}\" loodud",
|
||||
"ToastLibraryDeleteFailed": "Raamatukogu kustutamine ebaõnnestus",
|
||||
"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",
|
||||
"ToastSendEbookToDeviceFailed": "E-raamatu saatmine seadmesse ebaõnnestus",
|
||||
"ToastSendEbookToDeviceSuccess": "E-raamat saadetud seadmesse \"{0}\"",
|
||||
"ToastSeriesUpdateFailed": "Sarja värskendamine ebaõnnestus",
|
||||
"ToastSeriesUpdateSuccess": "Sarja värskendamine õnnestus",
|
||||
"ToastSessionDeleteFailed": "Seansi kustutamine ebaõnnestus",
|
||||
"ToastSessionDeleteSuccess": "Sessioon kustutatud",
|
||||
"ToastSocketConnected": "Pesa ühendatud",
|
||||
"ToastSocketDisconnected": "Pesa ühendus katkenud",
|
||||
"ToastSocketFailedToConnect": "Pesa ühendamine ebaõnnestus",
|
||||
"ToastUserDeleteFailed": "Kasutaja kustutamine ebaõnnestus",
|
||||
"ToastUserDeleteSuccess": "Kasutaja kustutatud"
|
||||
}
|
||||
@@ -1,13 +1,13 @@
|
||||
{
|
||||
"ButtonAdd": "Ajouter",
|
||||
"ButtonAddChapters": "Ajouter le chapitre",
|
||||
"ButtonAddDevice": "Add Device",
|
||||
"ButtonAddLibrary": "Add Library",
|
||||
"ButtonAddDevice": "Ajouter un appareil",
|
||||
"ButtonAddLibrary": "Ajouter une bibliothèque",
|
||||
"ButtonAddPodcasts": "Ajouter des podcasts",
|
||||
"ButtonAddUser": "Add User",
|
||||
"ButtonAddUser": "Ajouter un utilisateur",
|
||||
"ButtonAddYourFirstLibrary": "Ajouter votre première bibliothèque",
|
||||
"ButtonApply": "Appliquer",
|
||||
"ButtonApplyChapters": "Appliquer les chapitres",
|
||||
"ButtonApplyChapters": "Appliquer aux chapitres",
|
||||
"ButtonAuthors": "Auteurs",
|
||||
"ButtonBrowseForFolder": "Naviguer vers le répertoire",
|
||||
"ButtonCancel": "Annuler",
|
||||
@@ -32,6 +32,8 @@
|
||||
"ButtonHide": "Cacher",
|
||||
"ButtonHome": "Accueil",
|
||||
"ButtonIssues": "Parutions",
|
||||
"ButtonJumpBackward": "Retour",
|
||||
"ButtonJumpForward": "Avancer",
|
||||
"ButtonLatest": "Dernière version",
|
||||
"ButtonLibrary": "Bibliothèque",
|
||||
"ButtonLogout": "Me déconnecter",
|
||||
@@ -41,12 +43,17 @@
|
||||
"ButtonMatchAllAuthors": "Chercher tous les auteurs",
|
||||
"ButtonMatchBooks": "Chercher les livres",
|
||||
"ButtonNevermind": "Non merci",
|
||||
"ButtonNext": "Suivant",
|
||||
"ButtonNextChapter": "Chapitre suivant",
|
||||
"ButtonOk": "Ok",
|
||||
"ButtonOpenFeed": "Ouvrir le flux",
|
||||
"ButtonOpenManager": "Ouvrir le gestionnaire",
|
||||
"ButtonPause": "Pause",
|
||||
"ButtonPlay": "Écouter",
|
||||
"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",
|
||||
@@ -54,6 +61,7 @@
|
||||
"ButtonQueueRemoveItem": "Supprimer de la liste de lecture",
|
||||
"ButtonQuickMatch": "Recherche rapide",
|
||||
"ButtonRead": "Lire",
|
||||
"ButtonRefresh": "Rafraîchir",
|
||||
"ButtonRemove": "Supprimer",
|
||||
"ButtonRemoveAll": "Supprimer tout",
|
||||
"ButtonRemoveAllLibraryItems": "Supprimer tous les articles de la bibliothèque",
|
||||
@@ -62,7 +70,7 @@
|
||||
"ButtonRemoveSeriesFromContinueSeries": "Ne plus continuer à écouter la série",
|
||||
"ButtonReScan": "Nouvelle analyse",
|
||||
"ButtonReset": "Réinitialiser",
|
||||
"ButtonResetToDefault": "Reset to default",
|
||||
"ButtonResetToDefault": "Réinitialiser aux valeurs par défaut",
|
||||
"ButtonRestore": "Rétablir",
|
||||
"ButtonSave": "Sauvegarder",
|
||||
"ButtonSaveAndClose": "Sauvegarder et Fermer",
|
||||
@@ -73,6 +81,7 @@
|
||||
"ButtonSelectFolderPath": "Sélectionner le chemin du dossier",
|
||||
"ButtonSeries": "Séries",
|
||||
"ButtonSetChaptersFromTracks": "Positionner les chapitres par rapports aux pistes",
|
||||
"ButtonShare": "Partager",
|
||||
"ButtonShiftTimes": "Décaler l’horodatage du livre",
|
||||
"ButtonShow": "Afficher",
|
||||
"ButtonStartM4BEncode": "Démarrer l’encodage M4B",
|
||||
@@ -83,17 +92,17 @@
|
||||
"ButtonUploadBackup": "Téléverser une sauvegarde",
|
||||
"ButtonUploadCover": "Téléverser une couverture",
|
||||
"ButtonUploadOPMLFile": "Téléverser un fichier OPML",
|
||||
"ButtonUserDelete": "Effacer l’utilisateur {0}",
|
||||
"ButtonUserDelete": "Supprimer l’utilisateur {0}",
|
||||
"ButtonUserEdit": "Modifier l’utilisateur {0}",
|
||||
"ButtonViewAll": "Afficher tout",
|
||||
"ButtonYes": "Oui",
|
||||
"ErrorUploadFetchMetadataAPI": "Error fetching metadata",
|
||||
"ErrorUploadFetchMetadataNoResults": "Could not fetch metadata - try updating title and/or author",
|
||||
"ErrorUploadLacksTitle": "Must have a title",
|
||||
"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.",
|
||||
"ErrorUploadLacksTitle": "Doit avoir un titre",
|
||||
"HeaderAccount": "Compte",
|
||||
"HeaderAdvanced": "Avancé",
|
||||
"HeaderAppriseNotificationSettings": "Configuration des Notifications Apprise",
|
||||
"HeaderAudiobookTools": "Outils de Gestion de Fichier Audiobook",
|
||||
"HeaderAppriseNotificationSettings": "Configuration des notifications Apprise",
|
||||
"HeaderAudiobookTools": "Outils de gestion de fichiers de livres audio",
|
||||
"HeaderAudioTracks": "Pistes audio",
|
||||
"HeaderAuthentication": "Authentication",
|
||||
"HeaderBackups": "Sauvegardes",
|
||||
@@ -101,9 +110,10 @@
|
||||
"HeaderChapters": "Chapitres",
|
||||
"HeaderChooseAFolder": "Choisir un dossier",
|
||||
"HeaderCollection": "Collection",
|
||||
"HeaderCollectionItems": "Entrées de la Collection",
|
||||
"HeaderCollectionItems": "Entrées de la collection",
|
||||
"HeaderCover": "Couverture",
|
||||
"HeaderCurrentDownloads": "Téléchargements en cours",
|
||||
"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",
|
||||
@@ -114,10 +124,10 @@
|
||||
"HeaderEreaderSettings": "Options Ereader",
|
||||
"HeaderFiles": "Fichiers",
|
||||
"HeaderFindChapters": "Trouver les chapitres",
|
||||
"HeaderIgnoredFiles": "Fichiers Ignorés",
|
||||
"HeaderItemFiles": "Fichiers des Articles",
|
||||
"HeaderIgnoredFiles": "Fichiers ignorés",
|
||||
"HeaderItemFiles": "Fichiers des articles",
|
||||
"HeaderItemMetadataUtils": "Outils de gestion des métadonnées",
|
||||
"HeaderLastListeningSession": "Dernière Session d’écoute",
|
||||
"HeaderLastListeningSession": "Dernière session d’écoute",
|
||||
"HeaderLatestEpisodes": "Dernier épisodes",
|
||||
"HeaderLibraries": "Bibliothèque",
|
||||
"HeaderLibraryFiles": "Fichier de bibliothèque",
|
||||
@@ -130,15 +140,15 @@
|
||||
"HeaderManageTags": "Gérer les étiquettes",
|
||||
"HeaderMapDetails": "Édition en masse",
|
||||
"HeaderMatch": "Chercher",
|
||||
"HeaderMetadataOrderOfPrecedence": "Metadata order of precedence",
|
||||
"HeaderMetadataToEmbed": "Métadonnée à intégrer",
|
||||
"HeaderMetadataOrderOfPrecedence": "Ordre de priorité des métadonnées",
|
||||
"HeaderMetadataToEmbed": "Métadonnées à intégrer",
|
||||
"HeaderNewAccount": "Nouveau compte",
|
||||
"HeaderNewLibrary": "Nouvelle bibliothèque",
|
||||
"HeaderNotifications": "Notifications",
|
||||
"HeaderOpenIDConnectAuthentication": "OpenID Connect Authentication",
|
||||
"HeaderOpenRSSFeed": "Ouvrir Flux RSS",
|
||||
"HeaderOpenIDConnectAuthentication": "Authentification via OpenID Connect",
|
||||
"HeaderOpenRSSFeed": "Ouvrir un flux RSS",
|
||||
"HeaderOtherFiles": "Autres fichiers",
|
||||
"HeaderPasswordAuthentication": "Password Authentication",
|
||||
"HeaderPasswordAuthentication": "Authentification par mot de passe",
|
||||
"HeaderPermissions": "Permissions",
|
||||
"HeaderPlayerQueue": "Liste d’écoute",
|
||||
"HeaderPlaylist": "Liste de lecture",
|
||||
@@ -154,7 +164,7 @@
|
||||
"HeaderSchedule": "Programmation",
|
||||
"HeaderScheduleLibraryScans": "Analyse automatique de la bibliothèque",
|
||||
"HeaderSession": "Session",
|
||||
"HeaderSetBackupSchedule": "Activer la Sauvegarde Automatique",
|
||||
"HeaderSetBackupSchedule": "Activer la sauvegarde automatique",
|
||||
"HeaderSettings": "Paramètres",
|
||||
"HeaderSettingsDisplay": "Affichage",
|
||||
"HeaderSettingsExperimental": "Fonctionnalités expérimentales",
|
||||
@@ -174,6 +184,7 @@
|
||||
"HeaderUpdateDetails": "Mettre à jour les détails",
|
||||
"HeaderUpdateLibrary": "Mettre à jour la bibliothèque",
|
||||
"HeaderUsers": "Utilisateurs",
|
||||
"HeaderYearReview": "Year {0} in Review",
|
||||
"HeaderYourStats": "Vos statistiques",
|
||||
"LabelAbridged": "Version courte",
|
||||
"LabelAccountType": "Type de compte",
|
||||
@@ -187,11 +198,11 @@
|
||||
"LabelAddToCollectionBatch": "Ajout de {0} livres à la lollection",
|
||||
"LabelAddToPlaylist": "Ajouter à la liste de lecture",
|
||||
"LabelAddToPlaylistBatch": "{0} éléments ajoutés à la liste de lecture",
|
||||
"LabelAdminUsersOnly": "Admin users only",
|
||||
"LabelAdminUsersOnly": "Administrateurs uniquement",
|
||||
"LabelAll": "Tout",
|
||||
"LabelAllUsers": "Tous les utilisateurs",
|
||||
"LabelAllUsersExcludingGuests": "All users excluding guests",
|
||||
"LabelAllUsersIncludingGuests": "All users including guests",
|
||||
"LabelAllUsersExcludingGuests": "Tous les utilisateurs à l’exception des invités",
|
||||
"LabelAllUsersIncludingGuests": "Tous les utilisateurs, y compris les invités",
|
||||
"LabelAlreadyInYourLibrary": "Déjà dans la bibliothèque",
|
||||
"LabelAppend": "Ajouter",
|
||||
"LabelAuthor": "Auteur",
|
||||
@@ -199,29 +210,29 @@
|
||||
"LabelAuthorLastFirst": "Auteur (Nom, Prénom)",
|
||||
"LabelAuthors": "Auteurs",
|
||||
"LabelAutoDownloadEpisodes": "Téléchargement automatique d’épisode",
|
||||
"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 <code>/login?autoLaunch=0</code>)",
|
||||
"LabelAutoRegister": "Auto Register",
|
||||
"LabelAutoRegisterDescription": "Automatically create new users after logging in",
|
||||
"LabelBackToUser": "Revenir à l’Utilisateur",
|
||||
"LabelBackupLocation": "Backup Location",
|
||||
"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",
|
||||
"LabelAutoLaunchDescription": "Redirection automatique vers le fournisseur d'authentification lors de la navigation vers la page de connexion (chemin de remplacement manuel <code>/login?autoLaunch=0</code>)",
|
||||
"LabelAutoRegister": "Enregistrement automatique",
|
||||
"LabelAutoRegisterDescription": "Créer automatiquement de nouveaux utilisateurs après la connexion",
|
||||
"LabelBackToUser": "Retour à l’utilisateur",
|
||||
"LabelBackupLocation": "Emplacement de la sauvegarde",
|
||||
"LabelBackupsEnableAutomaticBackups": "Activer les sauvegardes automatiques",
|
||||
"LabelBackupsEnableAutomaticBackupsHelp": "Sauvegardes Enregistrées dans /metadata/backups",
|
||||
"LabelBackupsEnableAutomaticBackupsHelp": "Sauvegardes enregistrées dans /metadata/backups",
|
||||
"LabelBackupsMaxBackupSize": "Taille maximale de la sauvegarde (en Go)",
|
||||
"LabelBackupsMaxBackupSizeHelp": "Afin de prévenir les mauvaises configuration, la sauvegarde échouera si elle excède la taille limite.",
|
||||
"LabelBackupsNumberToKeep": "Nombre de sauvegardes à maintenir",
|
||||
"LabelBackupsNumberToKeepHelp": "Une seule sauvegarde sera effacée à la fois. Si vous avez plus de sauvegardes à effacer, vous devrez le faire manuellement.",
|
||||
"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",
|
||||
"LabelBooks": "Livres",
|
||||
"LabelButtonText": "Button Text",
|
||||
"LabelButtonText": "Texte du bouton",
|
||||
"LabelChangePassword": "Modifier le mot de passe",
|
||||
"LabelChannels": "Canaux",
|
||||
"LabelChapters": "Chapitres",
|
||||
"LabelChaptersFound": "Chapitres trouvés",
|
||||
"LabelChapterTitle": "Titres du chapitre",
|
||||
"LabelClickForMoreInfo": "Click for more info",
|
||||
"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",
|
||||
@@ -235,20 +246,20 @@
|
||||
"LabelCover": "Couverture",
|
||||
"LabelCoverImageURL": "URL vers l’image de couverture",
|
||||
"LabelCreatedAt": "Créé le",
|
||||
"LabelCronExpression": "Expression Cron",
|
||||
"LabelCurrent": "Courrant",
|
||||
"LabelCurrently": "En ce moment :",
|
||||
"LabelCustomCronExpression": "Expression cron personnalisée:",
|
||||
"LabelDatetime": "Datetime",
|
||||
"LabelDeleteFromFileSystemCheckbox": "Delete from file system (uncheck to only remove from database)",
|
||||
"LabelCronExpression": "Expression cron",
|
||||
"LabelCurrent": "Actuel",
|
||||
"LabelCurrently": "Actuellement :",
|
||||
"LabelCustomCronExpression": "Expression cron personnalisée :",
|
||||
"LabelDatetime": "Date",
|
||||
"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",
|
||||
"LabelDevice": "Appareil",
|
||||
"LabelDeviceInfo": "Détail de l’appareil",
|
||||
"LabelDeviceIsAvailableTo": "Device is available to...",
|
||||
"LabelDeviceIsAvailableTo": "L’appareil est disponible pour…",
|
||||
"LabelDirectory": "Répertoire",
|
||||
"LabelDiscFromFilename": "Disque depuis le fichier",
|
||||
"LabelDiscFromMetadata": "Disque depuis les métadonnées",
|
||||
"LabelDiscFromFilename": "Depuis le fichier",
|
||||
"LabelDiscFromMetadata": "Depuis les métadonnées",
|
||||
"LabelDiscover": "Découvrir",
|
||||
"LabelDownload": "Téléchargement",
|
||||
"LabelDownloadNEpisodes": "Télécharger {0} épisode(s)",
|
||||
@@ -271,34 +282,37 @@
|
||||
"LabelExample": "Exemple",
|
||||
"LabelExplicit": "Restriction",
|
||||
"LabelFeedURL": "URL du flux",
|
||||
"LabelFetchingMetadata": "Fetching Metadata",
|
||||
"LabelFetchingMetadata": "Récupération des métadonnées",
|
||||
"LabelFile": "Fichier",
|
||||
"LabelFileBirthtime": "Création du fichier",
|
||||
"LabelFileModified": "Modification du fichier",
|
||||
"LabelFilename": "Nom de fichier",
|
||||
"LabelFilterByUser": "Filtrer par l’utilisateur",
|
||||
"LabelFilterByUser": "Filtrer par utilisateur",
|
||||
"LabelFindEpisodes": "Trouver des épisodes",
|
||||
"LabelFinished": "Fini(e)",
|
||||
"LabelFinished": "Terminé le",
|
||||
"LabelFolder": "Dossier",
|
||||
"LabelFolders": "Dossiers",
|
||||
"LabelFontFamily": "Famille de polices",
|
||||
"LabelFontBold": "Gras",
|
||||
"LabelFontFamily": "Polices de caractères",
|
||||
"LabelFontItalic": "Italique",
|
||||
"LabelFontScale": "Taille de la police de caractère",
|
||||
"LabelFontStrikethrough": "Barrer",
|
||||
"LabelFormat": "Format",
|
||||
"LabelGenre": "Genre",
|
||||
"LabelGenres": "Genres",
|
||||
"LabelHardDeleteFile": "Suppression du fichier",
|
||||
"LabelHasEbook": "Dispose d’un livre numérique",
|
||||
"LabelHasSupplementaryEbook": "Dispose d’un livre numérique supplémentaire",
|
||||
"LabelHighestPriority": "Highest priority",
|
||||
"LabelHighestPriority": "Priorité la plus élevée",
|
||||
"LabelHost": "Hôte",
|
||||
"LabelHour": "Heure",
|
||||
"LabelIcon": "Icone",
|
||||
"LabelImageURLFromTheWeb": "Image URL from the web",
|
||||
"LabelIncludeInTracklist": "Inclure dans la liste des pistes",
|
||||
"LabelIcon": "Icône",
|
||||
"LabelImageURLFromTheWeb": "URL de l’image à partir du web",
|
||||
"LabelIncludeInTracklist": "Inclure dans la liste de lecture",
|
||||
"LabelIncomplete": "Incomplet",
|
||||
"LabelInProgress": "En cours",
|
||||
"LabelInterval": "Intervalle",
|
||||
"LabelIntervalCustomDailyWeekly": "Journalier / Hebdomadaire personnalisé",
|
||||
"LabelIntervalCustomDailyWeekly": "Personnaliser quotidiennement / hebdomadairement",
|
||||
"LabelIntervalEvery12Hours": "Toutes les 12 heures",
|
||||
"LabelIntervalEvery15Minutes": "Toutes les 15 minutes",
|
||||
"LabelIntervalEvery2Hours": "Toutes les 2 heures",
|
||||
@@ -331,22 +345,24 @@
|
||||
"LabelLogLevelInfo": "Info",
|
||||
"LabelLogLevelWarn": "Warn",
|
||||
"LabelLookForNewEpisodesAfterDate": "Chercher de nouveaux épisode après cette 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",
|
||||
"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.",
|
||||
"LabelMediaPlayer": "Lecteur multimédia",
|
||||
"LabelMediaType": "Type de média",
|
||||
"LabelMetadataOrderOfPrecedenceDescription": "Higher priority metadata sources will override lower priority metadata sources",
|
||||
"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": "Etiquette de métadonnée",
|
||||
"LabelMetaTags": "Etiquettes de métadonnée",
|
||||
"LabelMetaTag": "Balise de métadonnée",
|
||||
"LabelMetaTags": "Balises de métadonnée",
|
||||
"LabelMinute": "Minute",
|
||||
"LabelMissing": "Manquant",
|
||||
"LabelMissingEbook": "Has no ebook",
|
||||
"LabelMissingParts": "Parties manquantes",
|
||||
"LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs",
|
||||
"LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is <code>audiobookshelf://oauth</code>, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (<code>*</code>) as the sole entry permits any URI.",
|
||||
"LabelMissingSupplementaryEbook": "Has no supplementary ebook",
|
||||
"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 <code>audiobookshelf://oauth</code>, 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 (<code>*</code>) comme seule entrée autorise n’importe quel URI.",
|
||||
"LabelMore": "Plus",
|
||||
"LabelMoreInfo": "Plus d’info",
|
||||
"LabelMoreInfo": "Plus d’informations",
|
||||
"LabelName": "Nom",
|
||||
"LabelNarrator": "Narrateur",
|
||||
"LabelNarrators": "Narrateurs",
|
||||
@@ -358,7 +374,7 @@
|
||||
"LabelNextScheduledRun": "Prochain lancement prévu",
|
||||
"LabelNoEpisodesSelected": "Aucun épisode sélectionné",
|
||||
"LabelNotes": "Notes",
|
||||
"LabelNotFinished": "Non terminé(e)",
|
||||
"LabelNotFinished": "Non terminé",
|
||||
"LabelNotificationAppriseURL": "URL(s) d’Apprise",
|
||||
"LabelNotificationAvailableVariables": "Variables disponibles",
|
||||
"LabelNotificationBodyTemplate": "Modèle de Message",
|
||||
@@ -367,10 +383,10 @@
|
||||
"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": "Non Démarré(e)",
|
||||
"LabelNumberOfBooks": "Nombre de Livres",
|
||||
"LabelNumberOfEpisodes": "Nombre d’Episodes",
|
||||
"LabelNotificationTitleTemplate": "Modèle de titre",
|
||||
"LabelNotStarted": "Pas commencé",
|
||||
"LabelNumberOfBooks": "Nombre de livres",
|
||||
"LabelNumberOfEpisodes": "Nombre d’épisodes",
|
||||
"LabelOpenRSSFeed": "Ouvrir le flux RSS",
|
||||
"LabelOverwrite": "Écraser",
|
||||
"LabelPassword": "Mot de passe",
|
||||
@@ -382,11 +398,13 @@
|
||||
"LabelPermissionsDownload": "Peut télécharger",
|
||||
"LabelPermissionsUpdate": "Peut mettre à jour",
|
||||
"LabelPermissionsUpload": "Peut téléverser",
|
||||
"LabelPersonalYearReview": "Your Year in Review ({0})",
|
||||
"LabelPhotoPathURL": "Chemin / URL des photos",
|
||||
"LabelPlaylists": "Listes de lecture",
|
||||
"LabelPlayMethod": "Méthode d’écoute",
|
||||
"LabelPodcast": "Podcast",
|
||||
"LabelPodcasts": "Podcasts",
|
||||
"LabelPodcastSearchRegion": "Région de recherche de podcasts",
|
||||
"LabelPodcastType": "Type de Podcast",
|
||||
"LabelPort": "Port",
|
||||
"LabelPrefixesToIgnore": "Préfixes à Ignorer (Insensible à la Casse)",
|
||||
@@ -403,15 +421,16 @@
|
||||
"LabelRecentlyAdded": "Derniers ajouts",
|
||||
"LabelRecentSeries": "Séries récentes",
|
||||
"LabelRecommended": "Recommandé",
|
||||
"LabelRedo": "Refaire",
|
||||
"LabelRegion": "Région",
|
||||
"LabelReleaseDate": "Date de parution",
|
||||
"LabelRemoveCover": "Supprimer la couverture",
|
||||
"LabelRowsPerPage": "Rows per page",
|
||||
"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": "Identificateur d’adresse du Flux RSS ",
|
||||
"LabelRSSFeedSlug": "Balise URL du flux RSS",
|
||||
"LabelRSSFeedURL": "Adresse du flux RSS",
|
||||
"LabelSearchTerm": "Terme de recherche",
|
||||
"LabelSearchTitle": "Titre de recherche",
|
||||
@@ -419,41 +438,44 @@
|
||||
"LabelSeason": "Saison",
|
||||
"LabelSelectAllEpisodes": "Sélectionner tous les épisodes",
|
||||
"LabelSelectEpisodesShowing": "Sélectionner {0} episode(s) en cours",
|
||||
"LabelSelectUsers": "Select users",
|
||||
"LabelSendEbookToDevice": "Envoyer le livre numérique à...",
|
||||
"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})",
|
||||
"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 “ ebook ”, à moins qu’ils ne se trouvent dans un dossier de livres audio, auquel cas ils seront définis comme des livres numériques supplémentaires.",
|
||||
"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",
|
||||
"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",
|
||||
"LabelSettingsEnableWatcherHelp": "Active la mise à jour automatique automatique lorsque des modifications de fichiers sont détectées. * nécessite le redémarrage du serveur",
|
||||
"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.",
|
||||
"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.<br>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",
|
||||
"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 les sous-titres",
|
||||
"LabelSettingsParseSubtitlesHelp": "Extrait les sous-titres depuis le dossier du Livre Audio.<br>Les sous-titres doivent être séparés par « - »<br>i.e. « Titre du Livre - Ceci est un sous-titre » aura le sous-titre « Ceci est un sous-titre »",
|
||||
"LabelSettingsParseSubtitlesHelp": "Extrait les sous-titres depuis le dossier du livre audio.<br>Les sous-titres doivent être séparés par « - »<br>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",
|
||||
"LabelSettingsSortingIgnorePrefixes": "Ignorer les préfixes lors du tri",
|
||||
"LabelSettingsSortingIgnorePrefixesHelp": "i.e. pour le préfixe « le », le livre avec pour titre « Le Titre du Livre » sera trié en tant que « Titre du Livre, Le »",
|
||||
"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",
|
||||
@@ -461,61 +483,66 @@
|
||||
"LabelSettingsStoreMetadataWithItem": "Enregistrer les Métadonnées avec les articles",
|
||||
"LabelSettingsStoreMetadataWithItemHelp": "Par défaut, les métadonnées sont enregistrées dans /metadata/items",
|
||||
"LabelSettingsTimeFormat": "Format d’heure",
|
||||
"LabelShowAll": "Afficher Tout",
|
||||
"LabelShowAll": "Tout afficher",
|
||||
"LabelSize": "Taille",
|
||||
"LabelSleepTimer": "Minuterie",
|
||||
"LabelSlug": "Slug",
|
||||
"LabelSlug": "Balise",
|
||||
"LabelStart": "Démarrer",
|
||||
"LabelStarted": "Démarré",
|
||||
"LabelStartedAt": "Démarré à",
|
||||
"LabelStartTime": "Heure de Démarrage",
|
||||
"LabelStartTime": "Heure de démarrage",
|
||||
"LabelStatsAudioTracks": "Pistes Audios",
|
||||
"LabelStatsAuthors": "Auteurs",
|
||||
"LabelStatsBestDay": "Meilleur Jour",
|
||||
"LabelStatsDailyAverage": "Moyenne Journalière",
|
||||
"LabelStatsBestDay": "Meilleur jour",
|
||||
"LabelStatsDailyAverage": "Moyenne journalière",
|
||||
"LabelStatsDays": "Jours",
|
||||
"LabelStatsDaysListened": "Jours d’écoute",
|
||||
"LabelStatsHours": "Heures",
|
||||
"LabelStatsInARow": "d’affilé(s)",
|
||||
"LabelStatsInARow": "d’affilée(s)",
|
||||
"LabelStatsItemsFinished": "Articles terminés",
|
||||
"LabelStatsItemsInLibrary": "Articles dans la Bibliothèque",
|
||||
"LabelStatsItemsInLibrary": "Articles dans la bibliothèque",
|
||||
"LabelStatsMinutes": "minutes",
|
||||
"LabelStatsMinutesListening": "Minutes d’écoute",
|
||||
"LabelStatsOverallDays": "Jours au total",
|
||||
"LabelStatsOverallHours": "Heures au total",
|
||||
"LabelStatsOverallDays": "Nombre total de jours",
|
||||
"LabelStatsOverallHours": "Nombre total d'heures",
|
||||
"LabelStatsWeekListening": "Écoute de la semaine",
|
||||
"LabelSubtitle": "Sous-Titre",
|
||||
"LabelSubtitle": "Sous-titre",
|
||||
"LabelSupportedFileTypes": "Types de fichiers supportés",
|
||||
"LabelTag": "Étiquette",
|
||||
"LabelTags": "Étiquettes",
|
||||
"LabelTagsAccessibleToUser": "Étiquettes accessibles à l’utilisateur",
|
||||
"LabelTagsNotAccessibleToUser": "Étiquettes non accessibles à l’utilisateur",
|
||||
"LabelTasks": "Tâches en cours",
|
||||
"LabelTextEditorBulletedList": "Liste à puces",
|
||||
"LabelTextEditorLink": "Lien",
|
||||
"LabelTextEditorNumberedList": "Liste numérotée",
|
||||
"LabelTextEditorUnlink": "Dissocier",
|
||||
"LabelTheme": "Thème",
|
||||
"LabelThemeDark": "Sombre",
|
||||
"LabelThemeLight": "Clair",
|
||||
"LabelTimeBase": "Base de temps",
|
||||
"LabelTimeListened": "Temps d’écoute",
|
||||
"LabelTimeListenedToday": "Nombres d’écoutes Aujourd’hui",
|
||||
"LabelTimeListenedToday": "Nombres d’écoutes aujourd’hui",
|
||||
"LabelTimeRemaining": "{0} restantes",
|
||||
"LabelTimeToShift": "Temps de décalage en secondes",
|
||||
"LabelTitle": "Titre",
|
||||
"LabelToolsEmbedMetadata": "Métadonnées Intégrées",
|
||||
"LabelToolsEmbedMetadata": "Métadonnées intégrées",
|
||||
"LabelToolsEmbedMetadataDescription": "Intègre les métadonnées au fichier audio avec la couverture et les chapitres.",
|
||||
"LabelToolsMakeM4b": "Créer un fichier Livre Audio M4B",
|
||||
"LabelToolsMakeM4bDescription": "Génère un fichier Livre Audio .M4B avec intégration des métadonnées, image de couverture et les chapitres.",
|
||||
"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",
|
||||
"LabelToolsSplitM4bDescription": "Créer plusieurs fichier MP3 à partir du découpage par chapitre, en incluant les métadonnées, l’image de couverture et les chapitres.",
|
||||
"LabelTotalDuration": "Durée Totale",
|
||||
"LabelTotalDuration": "Durée totale",
|
||||
"LabelTotalTimeListened": "Temps d’écoute total",
|
||||
"LabelTrackFromFilename": "Piste depuis le fichier",
|
||||
"LabelTrackFromMetadata": "Piste depuis les métadonnées",
|
||||
"LabelTracks": "Pistes",
|
||||
"LabelTracksMultiTrack": "Piste multiple",
|
||||
"LabelTracksNone": "No tracks",
|
||||
"LabelTracksNone": "Aucune piste",
|
||||
"LabelTracksSingleTrack": "Piste simple",
|
||||
"LabelType": "Type",
|
||||
"LabelUnabridged": "Version intégrale",
|
||||
"LabelUndo": "Annuler",
|
||||
"LabelUnknown": "Inconnu",
|
||||
"LabelUpdateCover": "Mettre à jour la couverture",
|
||||
"LabelUpdateCoverHelp": "Autoriser la mise à jour de la couverture existante lorsqu’une correspondance est trouvée",
|
||||
@@ -524,9 +551,9 @@
|
||||
"LabelUpdateDetailsHelp": "Autoriser la mise à jour des détails existants lorsqu’une correspondance est trouvée",
|
||||
"LabelUploaderDragAndDrop": "Glisser et déposer des fichiers ou dossiers",
|
||||
"LabelUploaderDropFiles": "Déposer des fichiers",
|
||||
"LabelUploaderItemFetchMetadataHelp": "Automatically fetch title, author, and series",
|
||||
"LabelUploaderItemFetchMetadataHelp": "Récupérer automatiquement le titre, l’auteur et la série",
|
||||
"LabelUseChapterTrack": "Utiliser la piste du chapitre",
|
||||
"LabelUseFullTrack": "Utiliser la piste Complète",
|
||||
"LabelUseFullTrack": "Utiliser la piste complète",
|
||||
"LabelUser": "Utilisateur",
|
||||
"LabelUsername": "Nom d’utilisateur",
|
||||
"LabelValue": "Valeur",
|
||||
@@ -536,19 +563,21 @@
|
||||
"LabelViewQueue": "Afficher la liste de lecture",
|
||||
"LabelVolume": "Volume",
|
||||
"LabelWeekdaysToRun": "Jours de la semaine à exécuter",
|
||||
"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",
|
||||
"LabelYourProgress": "Votre progression",
|
||||
"MessageAddToPlayerQueue": "Ajouter en file d’attente",
|
||||
"MessageAppriseDescription": "Nécessite une instance d’<a href=\"https://github.com/caronc/apprise-api\" target=\"_blank\">API Apprise</a> pour utiliser cette fonctionnalité ou une api qui prend en charge les mêmes requêtes. <br />l’URL de l’API Apprise doit comprendre le chemin complet pour envoyer la notification. Par exemple, si votre instance écoute sur <code>http://192.168.1.1:8337</code> alors vous devez mettre <code>http://192.168.1.1:8337/notify</code>.",
|
||||
"MessageAppriseDescription": "Nécessite une instance d’<a href=\"https://github.com/caronc/apprise-api\" target=\"_blank\">API Apprise</a> pour utiliser cette fonctionnalité ou une api qui prend en charge les mêmes requêtes.<br>L’URL de l’API Apprise doit comprendre le chemin complet pour envoyer la notification. Par exemple, si votre instance écoute sur <code>http://192.168.1.1:8337</code> alors vous devez mettre <code>http://192.168.1.1:8337/notify</code>.",
|
||||
"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.",
|
||||
"MessageBookshelfNoCollections": "Vous n’avez pas encore de collections",
|
||||
"MessageBookshelfNoResultsForFilter": "Aucun résultat pour le filtre « {0}: {1} »",
|
||||
"MessageBookshelfNoResultsForFilter": "Aucun résultat pour le filtre « {0} : {1} »",
|
||||
"MessageBookshelfNoRSSFeeds": "Aucun flux RSS n’est ouvert",
|
||||
"MessageBookshelfNoSeries": "Vous n’avez aucune série",
|
||||
"MessageChapterEndIsAfter": "Le Chapitre Fin est situé à 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",
|
||||
@@ -558,15 +587,15 @@
|
||||
"MessageConfirmDeleteBackup": "Êtes-vous sûr de vouloir supprimer la sauvegarde de « {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} » ?",
|
||||
"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": "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 ?",
|
||||
"MessageConfirmQuickEmbed": "Warning! Quick embed will not backup your audio files. Make sure that you have a backup of your audio files. <br><br>Would you like to continue?",
|
||||
"MessageConfirmQuickEmbed": "Attention ! L’intégration rapide ne sauvegardera pas vos fichiers audio. Assurez-vous d’avoir effectuer une sauvegarde de vos fichiers audio.<br><br>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} » ?",
|
||||
@@ -581,16 +610,16 @@
|
||||
"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.",
|
||||
"MessageConfirmRenameTagWarning": "Attention ! Une étiquette similaire avec une casse différente existe déjà « {0} ».",
|
||||
"MessageConfirmReScanLibraryItems": "Are you sure you want to re-scan {0} items?",
|
||||
"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} »?",
|
||||
"MessageDownloadingEpisode": "Téléchargement de l’épisode",
|
||||
"MessageDragFilesIntoTrackOrder": "Faire glisser les fichiers dans l’ordre correct",
|
||||
"MessageDragFilesIntoTrackOrder": "Faites glisser les fichiers dans l’ordre correct des pistes",
|
||||
"MessageEmbedFinished": "Intégration terminée !",
|
||||
"MessageEpisodesQueuedForDownload": "{0} épisode(s) mis en file pour téléchargement",
|
||||
"MessageFeedURLWillBe": "l’URL du flux sera {0}",
|
||||
"MessageFeedURLWillBe": "L’URL du flux sera {0}",
|
||||
"MessageFetching": "Récupération…",
|
||||
"MessageForceReScanDescription": "Analysera tous les fichiers de nouveau. Les étiquettes ID3 des fichiers audios, fichiers OPF, et les fichiers textes seront analysés comme s’ils étaient nouveaux.",
|
||||
"MessageImportantNotice": "Information Importante !",
|
||||
"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",
|
||||
@@ -646,13 +675,13 @@
|
||||
"MessageRemoveChapter": "Supprimer le chapitre",
|
||||
"MessageRemoveEpisodes": "Suppression de {0} épisode(s)",
|
||||
"MessageRemoveFromPlayerQueue": "Supprimer de la liste d’écoute",
|
||||
"MessageRemoveUserWarning": "Êtes-vous certain de vouloir supprimer définitivement l’utilisateur « {0} » ?",
|
||||
"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 certain de vouloir réinitialiser les chapitres et annuler les changements effectués ?",
|
||||
"MessageRestoreBackupConfirm": "Êtes-vous certain 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.<br /><br />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.<br /><br />Tous les clients utilisant votre serveur seront automatiquement mis à jour.",
|
||||
"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",
|
||||
"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.<br><br>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.<br><br>Tous les clients utilisant votre serveur seront automatiquement mis à jour.",
|
||||
"MessageSearchResultsFor": "Résultats de recherche pour",
|
||||
"MessageSelected": "{0} selected",
|
||||
"MessageSelected": "{0} sélectionnés",
|
||||
"MessageServerCouldNotBeReached": "Serveur inaccessible",
|
||||
"MessageSetChaptersFromTracksDescription": "Positionne un chapitre par fichier audio, avec le titre du fichier comme titre de chapitre",
|
||||
"MessageStartPlaybackAtTime": "Démarrer la lecture pour « {0} » à {1} ?",
|
||||
@@ -663,12 +692,11 @@
|
||||
"MessageValidCronExpression": "Expression cron valide",
|
||||
"MessageWatcherIsDisabledGlobally": "La surveillance est désactivée par un paramètre global du serveur",
|
||||
"MessageXLibraryIsEmpty": "La bibliothèque {0} est vide !",
|
||||
"MessageYourAudiobookDurationIsLonger": "La durée de votre Livre Audio est plus longue que la durée trouvée",
|
||||
"MessageYourAudiobookDurationIsShorter": "La durée de votre Livre Audio est plus courte que la durée trouvée",
|
||||
"MessageYourAudiobookDurationIsLonger": "La durée de votre livre audio est plus longue que la durée trouvée",
|
||||
"MessageYourAudiobookDurationIsShorter": "La durée de votre livre audio est plus courte que la durée trouvée",
|
||||
"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",
|
||||
"NoteFolderPickerDebian": "Information : La sélection de dossier sur une installation debian n’est pas finalisée. Merci de renseigner le chemin complet vers votre bibliothèque manuellement.",
|
||||
"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.",
|
||||
"NoteUploaderFoldersWithMediaFiles": "Les dossiers contenant des fichiers multimédias seront traités comme des éléments distincts de la bibliothèque.",
|
||||
@@ -677,8 +705,8 @@
|
||||
"PlaceholderNewCollection": "Nom de la nouvelle collection",
|
||||
"PlaceholderNewFolderPath": "Nouveau chemin de dossier",
|
||||
"PlaceholderNewPlaylist": "Nouveau nom de liste de lecture",
|
||||
"PlaceholderSearch": "Recherche...",
|
||||
"PlaceholderSearchEpisode": "Recherche d’épisode...",
|
||||
"PlaceholderSearch": "Recherche…",
|
||||
"PlaceholderSearchEpisode": "Recherche d’épisode…",
|
||||
"ToastAccountUpdateFailed": "Échec de la mise à jour du compte",
|
||||
"ToastAccountUpdateSuccess": "Compte mis à jour",
|
||||
"ToastAuthorImageRemoveFailed": "Échec de la suppression de l’image",
|
||||
|
||||
@@ -32,6 +32,8 @@
|
||||
"ButtonHide": "છુપાવો",
|
||||
"ButtonHome": "ઘર",
|
||||
"ButtonIssues": "સમસ્યાઓ",
|
||||
"ButtonJumpBackward": "Jump Backward",
|
||||
"ButtonJumpForward": "Jump Forward",
|
||||
"ButtonLatest": "નવીનતમ",
|
||||
"ButtonLibrary": "પુસ્તકાલય",
|
||||
"ButtonLogout": "લૉગ આઉટ",
|
||||
@@ -41,12 +43,17 @@
|
||||
"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": "બધું સાંભળ્યું કાઢી નાખો",
|
||||
@@ -54,6 +61,7 @@
|
||||
"ButtonQueueRemoveItem": "કતારથી કાઢી નાખો",
|
||||
"ButtonQuickMatch": "ઝડપી મેળ ખવડાવો",
|
||||
"ButtonRead": "વાંચો",
|
||||
"ButtonRefresh": "Refresh",
|
||||
"ButtonRemove": "કાઢી નાખો",
|
||||
"ButtonRemoveAll": "બધું કાઢી નાખો",
|
||||
"ButtonRemoveAllLibraryItems": "બધું પુસ્તકાલય વસ્તુઓ કાઢી નાખો",
|
||||
@@ -73,6 +81,7 @@
|
||||
"ButtonSelectFolderPath": "ફોલ્ડર પથ પસંદ કરો",
|
||||
"ButtonSeries": "સિરીઝ",
|
||||
"ButtonSetChaptersFromTracks": "ટ્રેક્સથી પ્રકરણો સેટ કરો",
|
||||
"ButtonShare": "Share",
|
||||
"ButtonShiftTimes": "સમય શિફ્ટ કરો",
|
||||
"ButtonShow": "બતાવો",
|
||||
"ButtonStartM4BEncode": "M4B એન્કોડ શરૂ કરો",
|
||||
@@ -104,6 +113,7 @@
|
||||
"HeaderCollectionItems": "સંગ્રહ વસ્તુઓ",
|
||||
"HeaderCover": "આવરણ",
|
||||
"HeaderCurrentDownloads": "વર્તમાન ડાઉનલોડ્સ",
|
||||
"HeaderCustomMetadataProviders": "Custom Metadata Providers",
|
||||
"HeaderDetails": "વિગતો",
|
||||
"HeaderDownloadQueue": "ડાઉનલોડ કતાર",
|
||||
"HeaderEbookFiles": "ઇબુક ફાઇલો",
|
||||
@@ -174,6 +184,7 @@
|
||||
"HeaderUpdateDetails": "Update Details",
|
||||
"HeaderUpdateLibrary": "Update Library",
|
||||
"HeaderUsers": "Users",
|
||||
"HeaderYearReview": "Year {0} in Review",
|
||||
"HeaderYourStats": "Your Stats",
|
||||
"LabelAbridged": "Abridged",
|
||||
"LabelAccountType": "Account Type",
|
||||
@@ -281,8 +292,11 @@
|
||||
"LabelFinished": "Finished",
|
||||
"LabelFolder": "Folder",
|
||||
"LabelFolders": "Folders",
|
||||
"LabelFontBold": "Bold",
|
||||
"LabelFontFamily": "ફોન્ટ કુટુંબ",
|
||||
"LabelFontItalic": "Italic",
|
||||
"LabelFontScale": "Font scale",
|
||||
"LabelFontStrikethrough": "Strikethrough",
|
||||
"LabelFormat": "Format",
|
||||
"LabelGenre": "Genre",
|
||||
"LabelGenres": "Genres",
|
||||
@@ -342,7 +356,9 @@
|
||||
"LabelMetaTags": "Meta Tags",
|
||||
"LabelMinute": "Minute",
|
||||
"LabelMissing": "Missing",
|
||||
"LabelMissingEbook": "Has no ebook",
|
||||
"LabelMissingParts": "Missing Parts",
|
||||
"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 <code>audiobookshelf://oauth</code>, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (<code>*</code>) as the sole entry permits any URI.",
|
||||
"LabelMore": "More",
|
||||
@@ -382,11 +398,13 @@
|
||||
"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)",
|
||||
@@ -403,6 +421,7 @@
|
||||
"LabelRecentlyAdded": "Recently Added",
|
||||
"LabelRecentSeries": "Recent Series",
|
||||
"LabelRecommended": "Recommended",
|
||||
"LabelRedo": "Redo",
|
||||
"LabelRegion": "Region",
|
||||
"LabelReleaseDate": "Release Date",
|
||||
"LabelRemoveCover": "Remove cover",
|
||||
@@ -425,6 +444,7 @@
|
||||
"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",
|
||||
@@ -446,6 +466,8 @@
|
||||
"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.<br>Subtitle must be seperated by \" - \"<br>i.e. \"Book Title - A Subtitle Here\" has the subtitle \"A Subtitle Here\"",
|
||||
"LabelSettingsPreferMatchedMetadata": "Prefer matched metadata",
|
||||
@@ -491,6 +513,10 @@
|
||||
"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",
|
||||
@@ -516,6 +542,7 @@
|
||||
"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",
|
||||
@@ -536,6 +563,8 @@
|
||||
"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",
|
||||
@@ -668,7 +697,6 @@
|
||||
"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",
|
||||
"NoteFolderPickerDebian": "Note: Folder picker for the debian install is not fully implemented. You should enter the path to your library directly.",
|
||||
"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.",
|
||||
|
||||
@@ -32,6 +32,8 @@
|
||||
"ButtonHide": "छुपाएं",
|
||||
"ButtonHome": "घर",
|
||||
"ButtonIssues": "समस्याएं",
|
||||
"ButtonJumpBackward": "Jump Backward",
|
||||
"ButtonJumpForward": "Jump Forward",
|
||||
"ButtonLatest": "नवीनतम",
|
||||
"ButtonLibrary": "पुस्तकालय",
|
||||
"ButtonLogout": "लॉग आउट",
|
||||
@@ -41,12 +43,17 @@
|
||||
"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": "अभी तक सुना हुआ सब हटा दे",
|
||||
@@ -54,6 +61,7 @@
|
||||
"ButtonQueueRemoveItem": "कतार से हटाएं",
|
||||
"ButtonQuickMatch": "जल्दी से समानता की तलाश करें",
|
||||
"ButtonRead": "पढ़ लिया",
|
||||
"ButtonRefresh": "Refresh",
|
||||
"ButtonRemove": "हटाएं",
|
||||
"ButtonRemoveAll": "सभी हटाएं",
|
||||
"ButtonRemoveAllLibraryItems": "पुस्तकालय की सभी आइटम हटाएं",
|
||||
@@ -73,6 +81,7 @@
|
||||
"ButtonSelectFolderPath": "फ़ोल्डर का पथ चुनें",
|
||||
"ButtonSeries": "सीरीज",
|
||||
"ButtonSetChaptersFromTracks": "ट्रैक्स से अध्याय बनाएं",
|
||||
"ButtonShare": "Share",
|
||||
"ButtonShiftTimes": "समय खिसकाए",
|
||||
"ButtonShow": "दिखाएं",
|
||||
"ButtonStartM4BEncode": "M4B एन्कोडिंग शुरू करें",
|
||||
@@ -104,6 +113,7 @@
|
||||
"HeaderCollectionItems": "Collection Items",
|
||||
"HeaderCover": "Cover",
|
||||
"HeaderCurrentDownloads": "Current Downloads",
|
||||
"HeaderCustomMetadataProviders": "Custom Metadata Providers",
|
||||
"HeaderDetails": "Details",
|
||||
"HeaderDownloadQueue": "Download Queue",
|
||||
"HeaderEbookFiles": "Ebook Files",
|
||||
@@ -174,6 +184,7 @@
|
||||
"HeaderUpdateDetails": "Update Details",
|
||||
"HeaderUpdateLibrary": "Update Library",
|
||||
"HeaderUsers": "Users",
|
||||
"HeaderYearReview": "Year {0} in Review",
|
||||
"HeaderYourStats": "Your Stats",
|
||||
"LabelAbridged": "Abridged",
|
||||
"LabelAccountType": "Account Type",
|
||||
@@ -281,8 +292,11 @@
|
||||
"LabelFinished": "Finished",
|
||||
"LabelFolder": "Folder",
|
||||
"LabelFolders": "Folders",
|
||||
"LabelFontBold": "Bold",
|
||||
"LabelFontFamily": "फुहारा परिवार",
|
||||
"LabelFontItalic": "Italic",
|
||||
"LabelFontScale": "Font scale",
|
||||
"LabelFontStrikethrough": "Strikethrough",
|
||||
"LabelFormat": "Format",
|
||||
"LabelGenre": "Genre",
|
||||
"LabelGenres": "Genres",
|
||||
@@ -342,7 +356,9 @@
|
||||
"LabelMetaTags": "Meta Tags",
|
||||
"LabelMinute": "Minute",
|
||||
"LabelMissing": "Missing",
|
||||
"LabelMissingEbook": "Has no ebook",
|
||||
"LabelMissingParts": "Missing Parts",
|
||||
"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 <code>audiobookshelf://oauth</code>, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (<code>*</code>) as the sole entry permits any URI.",
|
||||
"LabelMore": "More",
|
||||
@@ -382,11 +398,13 @@
|
||||
"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)",
|
||||
@@ -403,6 +421,7 @@
|
||||
"LabelRecentlyAdded": "Recently Added",
|
||||
"LabelRecentSeries": "Recent Series",
|
||||
"LabelRecommended": "Recommended",
|
||||
"LabelRedo": "Redo",
|
||||
"LabelRegion": "Region",
|
||||
"LabelReleaseDate": "Release Date",
|
||||
"LabelRemoveCover": "Remove cover",
|
||||
@@ -425,6 +444,7 @@
|
||||
"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",
|
||||
@@ -446,6 +466,8 @@
|
||||
"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.<br>Subtitle must be seperated by \" - \"<br>i.e. \"Book Title - A Subtitle Here\" has the subtitle \"A Subtitle Here\"",
|
||||
"LabelSettingsPreferMatchedMetadata": "Prefer matched metadata",
|
||||
@@ -491,6 +513,10 @@
|
||||
"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",
|
||||
@@ -516,6 +542,7 @@
|
||||
"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",
|
||||
@@ -536,6 +563,8 @@
|
||||
"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",
|
||||
@@ -668,7 +697,6 @@
|
||||
"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",
|
||||
"NoteFolderPickerDebian": "Note: Folder picker for the debian install is not fully implemented. You should enter the path to your library directly.",
|
||||
"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.",
|
||||
|
||||
@@ -32,6 +32,8 @@
|
||||
"ButtonHide": "Sakrij",
|
||||
"ButtonHome": "Početna stranica",
|
||||
"ButtonIssues": "Problemi",
|
||||
"ButtonJumpBackward": "Jump Backward",
|
||||
"ButtonJumpForward": "Jump Forward",
|
||||
"ButtonLatest": "Najnovije",
|
||||
"ButtonLibrary": "Biblioteka",
|
||||
"ButtonLogout": "Odjavi se",
|
||||
@@ -41,12 +43,17 @@
|
||||
"ButtonMatchAllAuthors": "Matchaj sve autore",
|
||||
"ButtonMatchBooks": "Matchaj 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",
|
||||
@@ -54,6 +61,7 @@
|
||||
"ButtonQueueRemoveItem": "Remove from queue",
|
||||
"ButtonQuickMatch": "Brzi match",
|
||||
"ButtonRead": "Pročitaj",
|
||||
"ButtonRefresh": "Refresh",
|
||||
"ButtonRemove": "Ukloni",
|
||||
"ButtonRemoveAll": "Ukloni sve",
|
||||
"ButtonRemoveAllLibraryItems": "Ukloni sve stvari iz biblioteke",
|
||||
@@ -73,6 +81,7 @@
|
||||
"ButtonSelectFolderPath": "Odaberi putanju do folder",
|
||||
"ButtonSeries": "Serije",
|
||||
"ButtonSetChaptersFromTracks": "Set chapters from tracks",
|
||||
"ButtonShare": "Share",
|
||||
"ButtonShiftTimes": "Pomakni vremena",
|
||||
"ButtonShow": "Prikaži",
|
||||
"ButtonStartM4BEncode": "Pokreni M4B kodiranje",
|
||||
@@ -104,6 +113,7 @@
|
||||
"HeaderCollectionItems": "Stvari u kolekciji",
|
||||
"HeaderCover": "Cover",
|
||||
"HeaderCurrentDownloads": "Current Downloads",
|
||||
"HeaderCustomMetadataProviders": "Custom Metadata Providers",
|
||||
"HeaderDetails": "Detalji",
|
||||
"HeaderDownloadQueue": "Download Queue",
|
||||
"HeaderEbookFiles": "Ebook Files",
|
||||
@@ -174,6 +184,7 @@
|
||||
"HeaderUpdateDetails": "Aktualiziraj detalje",
|
||||
"HeaderUpdateLibrary": "Aktualiziraj biblioteku",
|
||||
"HeaderUsers": "Korinici",
|
||||
"HeaderYearReview": "Year {0} in Review",
|
||||
"HeaderYourStats": "Tvoja statistika",
|
||||
"LabelAbridged": "Abridged",
|
||||
"LabelAccountType": "Vrsta korisničkog računa",
|
||||
@@ -281,8 +292,11 @@
|
||||
"LabelFinished": "Finished",
|
||||
"LabelFolder": "Folder",
|
||||
"LabelFolders": "Folderi",
|
||||
"LabelFontBold": "Bold",
|
||||
"LabelFontFamily": "Font family",
|
||||
"LabelFontItalic": "Italic",
|
||||
"LabelFontScale": "Font scale",
|
||||
"LabelFontStrikethrough": "Strikethrough",
|
||||
"LabelFormat": "Format",
|
||||
"LabelGenre": "Genre",
|
||||
"LabelGenres": "Žanrovi",
|
||||
@@ -342,7 +356,9 @@
|
||||
"LabelMetaTags": "Meta Tags",
|
||||
"LabelMinute": "Minuta",
|
||||
"LabelMissing": "Nedostaje",
|
||||
"LabelMissingEbook": "Has no ebook",
|
||||
"LabelMissingParts": "Nedostajali dijelovi",
|
||||
"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 <code>audiobookshelf://oauth</code>, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (<code>*</code>) as the sole entry permits any URI.",
|
||||
"LabelMore": "Više",
|
||||
@@ -382,11 +398,13 @@
|
||||
"LabelPermissionsDownload": "Smije preuzimati",
|
||||
"LabelPermissionsUpdate": "Smije aktualizirati",
|
||||
"LabelPermissionsUpload": "Smije uploadati",
|
||||
"LabelPersonalYearReview": "Your Year in Review ({0})",
|
||||
"LabelPhotoPathURL": "Slika putanja/URL",
|
||||
"LabelPlaylists": "Playlists",
|
||||
"LabelPlayMethod": "Vrsta reprodukcije",
|
||||
"LabelPodcast": "Podcast",
|
||||
"LabelPodcasts": "Podcasts",
|
||||
"LabelPodcastSearchRegion": "Područje pretrage podcasta",
|
||||
"LabelPodcastType": "Podcast Type",
|
||||
"LabelPort": "Port",
|
||||
"LabelPrefixesToIgnore": "Prefiksi za ignorirati (mala i velika slova nisu bitna)",
|
||||
@@ -403,6 +421,7 @@
|
||||
"LabelRecentlyAdded": "Nedavno dodano",
|
||||
"LabelRecentSeries": "Nedavne serije",
|
||||
"LabelRecommended": "Recommended",
|
||||
"LabelRedo": "Redo",
|
||||
"LabelRegion": "Regija",
|
||||
"LabelReleaseDate": "Datum izlaska",
|
||||
"LabelRemoveCover": "Remove cover",
|
||||
@@ -425,6 +444,7 @@
|
||||
"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",
|
||||
@@ -446,6 +466,8 @@
|
||||
"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.<br>Podnapis mora biti odvojen sa \" - \"<br>npr. \"Ime knjige - Podnapis ovdje\" ima podnapis \"Podnapis ovdje\"",
|
||||
"LabelSettingsPreferMatchedMetadata": "Preferiraj matchane metapodatke",
|
||||
@@ -491,6 +513,10 @@
|
||||
"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",
|
||||
@@ -516,6 +542,7 @@
|
||||
"LabelTracksSingleTrack": "Single-track",
|
||||
"LabelType": "Tip",
|
||||
"LabelUnabridged": "Unabridged",
|
||||
"LabelUndo": "Undo",
|
||||
"LabelUnknown": "Nepoznato",
|
||||
"LabelUpdateCover": "Aktualiziraj Cover",
|
||||
"LabelUpdateCoverHelp": "Dozvoli postavljanje novog covera za odabrane knjige nakon što je match pronađen.",
|
||||
@@ -536,6 +563,8 @@
|
||||
"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",
|
||||
@@ -668,7 +697,6 @@
|
||||
"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",
|
||||
"NoteFolderPickerDebian": "Bilješka: Folder picker za debian instalaciju nije potpuno implementiran. Trebate unjeti direktnu putanju do biblioteke.",
|
||||
"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.",
|
||||
|
||||
781
client/strings/hu.json
Normal file
781
client/strings/hu.json
Normal file
@@ -0,0 +1,781 @@
|
||||
{
|
||||
"ButtonAdd": "Hozzáadás",
|
||||
"ButtonAddChapters": "Fejezetek hozzáadása",
|
||||
"ButtonAddDevice": "Eszköz hozzáadása",
|
||||
"ButtonAddLibrary": "Könyvtár hozzáadása",
|
||||
"ButtonAddPodcasts": "Podcastok hozzáadása",
|
||||
"ButtonAddUser": "Felhasználó hozzáadása",
|
||||
"ButtonAddYourFirstLibrary": "Az első könyvtár hozzáadása",
|
||||
"ButtonApply": "Alkalmaz",
|
||||
"ButtonApplyChapters": "Fejezetek alkalmazása",
|
||||
"ButtonAuthors": "Szerzők",
|
||||
"ButtonBrowseForFolder": "Mappa keresése",
|
||||
"ButtonCancel": "Mégse",
|
||||
"ButtonCancelEncode": "Kódolás megszakítása",
|
||||
"ButtonChangeRootPassword": "Gyökérjelszó megváltoztatása",
|
||||
"ButtonCheckAndDownloadNewEpisodes": "Új epizódok ellenőrzése és letöltése",
|
||||
"ButtonChooseAFolder": "Válassz egy mappát",
|
||||
"ButtonChooseFiles": "Fájlok kiválasztása",
|
||||
"ButtonClearFilter": "Szűrő törlése",
|
||||
"ButtonCloseFeed": "Hírcsatorna bezárása",
|
||||
"ButtonCollections": "Gyűjtemény",
|
||||
"ButtonConfigureScanner": "Szkenner konfigurálása",
|
||||
"ButtonCreate": "Létrehozás",
|
||||
"ButtonCreateBackup": "Biztonsági másolat készítése",
|
||||
"ButtonDelete": "Törlés",
|
||||
"ButtonDownloadQueue": "Sor",
|
||||
"ButtonEdit": "Szerkesztés",
|
||||
"ButtonEditChapters": "Fejezetek szerkesztése",
|
||||
"ButtonEditPodcast": "Podcast szerkesztése",
|
||||
"ButtonForceReScan": "Újraszkennelés kényszerítése",
|
||||
"ButtonFullPath": "Teljes útvonal",
|
||||
"ButtonHide": "Elrejtés",
|
||||
"ButtonHome": "Kezdőlap",
|
||||
"ButtonIssues": "Problémák",
|
||||
"ButtonJumpBackward": "Ugrás vissza",
|
||||
"ButtonJumpForward": "Ugrás előre",
|
||||
"ButtonLatest": "Legújabb",
|
||||
"ButtonLibrary": "Könyvtár",
|
||||
"ButtonLogout": "Kijelentkezés",
|
||||
"ButtonLookup": "Keresés",
|
||||
"ButtonManageTracks": "Sávok kezelése",
|
||||
"ButtonMapChapterTitles": "Fejezetcímek hozzárendelése",
|
||||
"ButtonMatchAllAuthors": "Minden szerző egyeztetése",
|
||||
"ButtonMatchBooks": "Könyvek egyeztetése",
|
||||
"ButtonNevermind": "Mindegy",
|
||||
"ButtonNext": "Next",
|
||||
"ButtonNextChapter": "Következő fejezet",
|
||||
"ButtonOk": "Oké",
|
||||
"ButtonOpenFeed": "Hírcsatorna megnyitása",
|
||||
"ButtonOpenManager": "Kezelő megnyitása",
|
||||
"ButtonPause": "Szünet",
|
||||
"ButtonPlay": "Lejátszás",
|
||||
"ButtonPlaying": "Lejátszás folyamatban",
|
||||
"ButtonPlaylists": "Lejátszási listák",
|
||||
"ButtonPrevious": "Previous",
|
||||
"ButtonPreviousChapter": "Előző fejezet",
|
||||
"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",
|
||||
"ButtonQuickMatch": "Gyors egyeztetés",
|
||||
"ButtonRead": "Olvasás",
|
||||
"ButtonRefresh": "Refresh",
|
||||
"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",
|
||||
"ButtonSave": "Mentés",
|
||||
"ButtonSaveAndClose": "Mentés és bezárás",
|
||||
"ButtonSaveTracklist": "Sávlista mentése",
|
||||
"ButtonScan": "Szkennelés",
|
||||
"ButtonScanLibrary": "Könyvtár szkennelése",
|
||||
"ButtonSearch": "Keresés",
|
||||
"ButtonSelectFolderPath": "Mappa útvonalának kiválasztása",
|
||||
"ButtonSeries": "Sorozatok",
|
||||
"ButtonSetChaptersFromTracks": "Fejezetek beállítása sávokból",
|
||||
"ButtonShare": "Share",
|
||||
"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",
|
||||
"ButtonSubmit": "Beküldés",
|
||||
"ButtonTest": "Teszt",
|
||||
"ButtonUpload": "Feltöltés",
|
||||
"ButtonUploadBackup": "Biztonsági másolat feltöltése",
|
||||
"ButtonUploadCover": "Borító feltöltése",
|
||||
"ButtonUploadOPMLFile": "OPML fájl feltöltése",
|
||||
"ButtonUserDelete": "Felhasználó törlése {0}",
|
||||
"ButtonUserEdit": "Felhasználó szerkesztése {0}",
|
||||
"ButtonViewAll": "Összes megtekintése",
|
||||
"ButtonYes": "Igen",
|
||||
"ErrorUploadFetchMetadataAPI": "Hiba a metaadatok lekérésekor",
|
||||
"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",
|
||||
"HeaderAdvanced": "Haladó",
|
||||
"HeaderAppriseNotificationSettings": "Apprise értesítési beállítások",
|
||||
"HeaderAudiobookTools": "Hangoskönyv fájlkezelő eszközök",
|
||||
"HeaderAudioTracks": "Audiósávok",
|
||||
"HeaderAuthentication": "Hitelesítés",
|
||||
"HeaderBackups": "Biztonsági másolatok",
|
||||
"HeaderChangePassword": "Jelszó megváltoztatása",
|
||||
"HeaderChapters": "Fejezetek",
|
||||
"HeaderChooseAFolder": "Válasszon egy mappát",
|
||||
"HeaderCollection": "Gyűjtemény",
|
||||
"HeaderCollectionItems": "Gyűjtemény elemek",
|
||||
"HeaderCover": "Borító",
|
||||
"HeaderCurrentDownloads": "Jelenlegi letöltések",
|
||||
"HeaderCustomMetadataProviders": "Egyéni metaadat-szolgáltatók",
|
||||
"HeaderDetails": "Részletek",
|
||||
"HeaderDownloadQueue": "Letöltési sor",
|
||||
"HeaderEbookFiles": "E-könyv fájlok",
|
||||
"HeaderEmail": "E-mail",
|
||||
"HeaderEmailSettings": "E-mail beállítások",
|
||||
"HeaderEpisodes": "Epizódok",
|
||||
"HeaderEreaderDevices": "E-olvasó eszközök",
|
||||
"HeaderEreaderSettings": "E-olvasó beállítások",
|
||||
"HeaderFiles": "Fájlok",
|
||||
"HeaderFindChapters": "Fejezetek keresése",
|
||||
"HeaderIgnoredFiles": "Figyelmen kívül hagyott fájlok",
|
||||
"HeaderItemFiles": "Elemfájlok",
|
||||
"HeaderItemMetadataUtils": "Elem metaadat eszközök",
|
||||
"HeaderLastListeningSession": "Utolsó hallgatási munkamenet",
|
||||
"HeaderLatestEpisodes": "Legújabb epizódok",
|
||||
"HeaderLibraries": "Könyvtárak",
|
||||
"HeaderLibraryFiles": "Könyvtárfájlok",
|
||||
"HeaderLibraryStats": "Könyvtár statisztikák",
|
||||
"HeaderListeningSessions": "Hallgatási munkamenetek",
|
||||
"HeaderListeningStats": "Hallgatási statisztikák",
|
||||
"HeaderLogin": "Bejelentkezés",
|
||||
"HeaderLogs": "Naplók",
|
||||
"HeaderManageGenres": "Műfajok kezelése",
|
||||
"HeaderManageTags": "Címkék kezelése",
|
||||
"HeaderMapDetails": "Részletek hozzárendelése",
|
||||
"HeaderMatch": "Egyeztetés",
|
||||
"HeaderMetadataOrderOfPrecedence": "Metaadatok előnyben részesítési sorrendje",
|
||||
"HeaderMetadataToEmbed": "Beágyazandó metaadatok",
|
||||
"HeaderNewAccount": "Új fiók",
|
||||
"HeaderNewLibrary": "Új könyvtár",
|
||||
"HeaderNotifications": "Értesítések",
|
||||
"HeaderOpenIDConnectAuthentication": "OpenID Connect hitelesítés",
|
||||
"HeaderOpenRSSFeed": "RSS hírcsatorna megnyitása",
|
||||
"HeaderOtherFiles": "Egyéb fájlok",
|
||||
"HeaderPasswordAuthentication": "Jelszó hitelesítés",
|
||||
"HeaderPermissions": "Engedélyek",
|
||||
"HeaderPlayerQueue": "Lejátszó sor",
|
||||
"HeaderPlaylist": "Lejátszási lista",
|
||||
"HeaderPlaylistItems": "Lejátszási lista elemek",
|
||||
"HeaderPodcastsToAdd": "Hozzáadandó podcastok",
|
||||
"HeaderPreviewCover": "Borító előnézete",
|
||||
"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",
|
||||
"HeaderSession": "Munkamenet",
|
||||
"HeaderSetBackupSchedule": "Biztonsági másolatok ütemezésének beállítása",
|
||||
"HeaderSettings": "Beállítások",
|
||||
"HeaderSettingsDisplay": "Kijelző",
|
||||
"HeaderSettingsExperimental": "Kísérleti funkciók",
|
||||
"HeaderSettingsGeneral": "Általános",
|
||||
"HeaderSettingsScanner": "Szkenner",
|
||||
"HeaderSleepTimer": "Alvásidőzítő",
|
||||
"HeaderStatsLargestItems": "Legnagyobb elemek",
|
||||
"HeaderStatsLongestItems": "Leghosszabb elemek (órákban)",
|
||||
"HeaderStatsMinutesListeningChart": "Hallgatási percek (az utolsó 7 napban)",
|
||||
"HeaderStatsRecentSessions": "Legutóbbi munkamenetek",
|
||||
"HeaderStatsTop10Authors": "Top 10 szerzők",
|
||||
"HeaderStatsTop5Genres": "Top 5 műfajok",
|
||||
"HeaderTableOfContents": "Tartalomjegyzék",
|
||||
"HeaderTools": "Eszközök",
|
||||
"HeaderUpdateAccount": "Fiók frissítése",
|
||||
"HeaderUpdateAuthor": "Szerző frissítése",
|
||||
"HeaderUpdateDetails": "Részletek frissítése",
|
||||
"HeaderUpdateLibrary": "Könyvtár frissítése",
|
||||
"HeaderUsers": "Felhasználók",
|
||||
"HeaderYearReview": "Year {0} in Review",
|
||||
"HeaderYourStats": "Saját statisztikák",
|
||||
"LabelAbridged": "Tömörített",
|
||||
"LabelAccountType": "Fióktípus",
|
||||
"LabelAccountTypeAdmin": "Admin",
|
||||
"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",
|
||||
"LabelAdminUsersOnly": "Csak admin felhasználók",
|
||||
"LabelAll": "Minden",
|
||||
"LabelAllUsers": "Minden felhasználó",
|
||||
"LabelAllUsersExcludingGuests": "Minden felhasználó, vendégek kivételével",
|
||||
"LabelAllUsersIncludingGuests": "Minden felhasználó, beleértve a vendégeket is",
|
||||
"LabelAlreadyInYourLibrary": "Már a könyvtárában van",
|
||||
"LabelAppend": "Hozzáfűzés",
|
||||
"LabelAuthor": "Szerző",
|
||||
"LabelAuthorFirstLast": "Szerző (Keresztnév Vezetéknév)",
|
||||
"LabelAuthorLastFirst": "Szerző (Vezetéknév, Keresztnév)",
|
||||
"LabelAuthors": "Szerzők",
|
||||
"LabelAutoDownloadEpisodes": "Epizódok automatikus letöltése",
|
||||
"LabelAutoFetchMetadata": "Metaadatok automatikus lekérése",
|
||||
"LabelAutoFetchMetadataHelp": "Cím, szerző és sorozat metaadatok automatikus lekérése a feltöltés megkönnyítése érdekében. További metaadatok egyeztetése szükséges lehet a feltöltés után.",
|
||||
"LabelAutoLaunch": "Automatikus indítás",
|
||||
"LabelAutoLaunchDescription": "Automatikus átirányítás az hitelesítő szolgáltatóhoz a bejelentkezési oldalra navigáláskor (kézi felülbírálás útvonala <code>/login?autoLaunch=0</code>)",
|
||||
"LabelAutoRegister": "Automatikus regisztráció",
|
||||
"LabelAutoRegisterDescription": "Új felhasználók automatikus létrehozása bejelentkezés után",
|
||||
"LabelBackToUser": "Vissza a felhasználóhoz",
|
||||
"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)",
|
||||
"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",
|
||||
"LabelChangePassword": "Jelszó megváltoztatása",
|
||||
"LabelChannels": "Csatornák",
|
||||
"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",
|
||||
"LabelCollection": "Gyűjtemény",
|
||||
"LabelCollections": "Gyűjtemények",
|
||||
"LabelComplete": "Teljes",
|
||||
"LabelConfirmPassword": "Jelszó megerősítése",
|
||||
"LabelContinueListening": "Hallgatás folytatása",
|
||||
"LabelContinueReading": "Olvasás folytatása",
|
||||
"LabelContinueSeries": "Sorozat folytatása",
|
||||
"LabelCover": "Borító",
|
||||
"LabelCoverImageURL": "Borítókép URL",
|
||||
"LabelCreatedAt": "Létrehozás ideje",
|
||||
"LabelCronExpression": "Cron kifejezés",
|
||||
"LabelCurrent": "Jelenlegi",
|
||||
"LabelCurrently": "Jelenleg:",
|
||||
"LabelCustomCronExpression": "Egyéni Cron kifejezés:",
|
||||
"LabelDatetime": "Dátumidő",
|
||||
"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",
|
||||
"LabelDevice": "Eszköz",
|
||||
"LabelDeviceInfo": "Eszköz információ",
|
||||
"LabelDeviceIsAvailableTo": "Eszköz elérhető a következő számára...",
|
||||
"LabelDirectory": "Könyvtár",
|
||||
"LabelDiscFromFilename": "Lemez a fájlnévből",
|
||||
"LabelDiscFromMetadata": "Lemez a metaadatokból",
|
||||
"LabelDiscover": "Felfedezés",
|
||||
"LabelDownload": "Letöltés",
|
||||
"LabelDownloadNEpisodes": "{0} epizód letöltése",
|
||||
"LabelDuration": "Időtartam",
|
||||
"LabelDurationFound": "Megtalált időtartam:",
|
||||
"LabelEbook": "E-könyv",
|
||||
"LabelEbooks": "E-könyvek",
|
||||
"LabelEdit": "Szerkesztés",
|
||||
"LabelEmail": "E-mail",
|
||||
"LabelEmailSettingsFromAddress": "Feladó címe",
|
||||
"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",
|
||||
"LabelEpisode": "Epizód",
|
||||
"LabelEpisodeTitle": "Epizód címe",
|
||||
"LabelEpisodeType": "Epizód típusa",
|
||||
"LabelExample": "Példa",
|
||||
"LabelExplicit": "Explicit",
|
||||
"LabelFeedURL": "Hírcsatorna URL",
|
||||
"LabelFetchingMetadata": "Metaadatok lekérése",
|
||||
"LabelFile": "Fájl",
|
||||
"LabelFileBirthtime": "Fájl létrehozásának ideje",
|
||||
"LabelFileModified": "Fájl módosításának ideje",
|
||||
"LabelFilename": "Fájlnév",
|
||||
"LabelFilterByUser": "Szűrés felhasználó szerint",
|
||||
"LabelFindEpisodes": "Epizódok keresése",
|
||||
"LabelFinished": "Befejezett",
|
||||
"LabelFolder": "Mappa",
|
||||
"LabelFolders": "Mappák",
|
||||
"LabelFontBold": "Félkövér",
|
||||
"LabelFontFamily": "Betűtípus család",
|
||||
"LabelFontItalic": "Dőlt",
|
||||
"LabelFontScale": "Betűméret skála",
|
||||
"LabelFontStrikethrough": "Áthúzott",
|
||||
"LabelFormat": "Formátum",
|
||||
"LabelGenre": "Műfaj",
|
||||
"LabelGenres": "Műfajok",
|
||||
"LabelHardDeleteFile": "Fájl végleges törlése",
|
||||
"LabelHasEbook": "Van e-könyve",
|
||||
"LabelHasSupplementaryEbook": "Van kiegészítő e-könyve",
|
||||
"LabelHighestPriority": "Legmagasabb prioritás",
|
||||
"LabelHost": "Hoszt",
|
||||
"LabelHour": "Óra",
|
||||
"LabelIcon": "Ikon",
|
||||
"LabelImageURLFromTheWeb": "Kép URL a weben",
|
||||
"LabelIncludeInTracklist": "Beleértve a sávlistába",
|
||||
"LabelIncomplete": "Befejezetlen",
|
||||
"LabelInProgress": "Folyamatban",
|
||||
"LabelInterval": "Intervallum",
|
||||
"LabelIntervalCustomDailyWeekly": "Egyéni napi/heti",
|
||||
"LabelIntervalEvery12Hours": "Minden 12 órában",
|
||||
"LabelIntervalEvery15Minutes": "Minden 15 percben",
|
||||
"LabelIntervalEvery2Hours": "Minden 2 órában",
|
||||
"LabelIntervalEvery30Minutes": "Minden 30 percben",
|
||||
"LabelIntervalEvery6Hours": "Minden 6 órában",
|
||||
"LabelIntervalEveryDay": "Minden nap",
|
||||
"LabelIntervalEveryHour": "Minden órában",
|
||||
"LabelInvalidParts": "Érvénytelen részek",
|
||||
"LabelInvert": "Megfordítás",
|
||||
"LabelItem": "Elem",
|
||||
"LabelLanguage": "Nyelv",
|
||||
"LabelLanguageDefaultServer": "Szerver alapértelmezett nyelve",
|
||||
"LabelLastBookAdded": "Utolsó hozzáadott könyv",
|
||||
"LabelLastBookUpdated": "Utolsó frissített könyv",
|
||||
"LabelLastSeen": "Utolsó látogatás",
|
||||
"LabelLastTime": "Utolsó alkalom",
|
||||
"LabelLastUpdate": "Utolsó frissítés",
|
||||
"LabelLayout": "Elrendezés",
|
||||
"LabelLayoutSinglePage": "Egyoldalas",
|
||||
"LabelLayoutSplitPage": "Kétoldalas",
|
||||
"LabelLess": "Kevesebb",
|
||||
"LabelLibrariesAccessibleToUser": "A felhasználó számára elérhető könyvtárak",
|
||||
"LabelLibrary": "Könyvtár",
|
||||
"LabelLibraryItem": "Könyvtári elem",
|
||||
"LabelLibraryName": "Könyvtár neve",
|
||||
"LabelLimit": "Korlát",
|
||||
"LabelLineSpacing": "Sorköz",
|
||||
"LabelListenAgain": "Újrahallgatás",
|
||||
"LabelLogLevelDebug": "Debug",
|
||||
"LabelLogLevelInfo": "Információ",
|
||||
"LabelLogLevelWarn": "Figyelmeztetés",
|
||||
"LabelLookForNewEpisodesAfterDate": "Új epizódok keresése ezen a dátum után",
|
||||
"LabelLowestPriority": "Legalacsonyabb prioritás",
|
||||
"LabelMatchExistingUsersBy": "Meglévő felhasználók egyeztetése",
|
||||
"LabelMatchExistingUsersByDescription": "Meglévő felhasználók összekapcsolására használt. Egyszer összekapcsolva, a felhasználók egyedülálló azonosítóval lesznek egyeztetve az Ön SSO szolgáltatójától",
|
||||
"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",
|
||||
"LabelMinute": "Perc",
|
||||
"LabelMissing": "Hiányzó",
|
||||
"LabelMissingEbook": "Has no ebook",
|
||||
"LabelMissingParts": "Hiányzó részek",
|
||||
"LabelMissingSupplementaryEbook": "Has no supplementary ebook",
|
||||
"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 <code>audiobookshelf://oauth</code>, 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 (<code>*</code>), akkor bármely URI engedélyezett.",
|
||||
"LabelMore": "Több",
|
||||
"LabelMoreInfo": "További információ",
|
||||
"LabelName": "Név",
|
||||
"LabelNarrator": "Előadó",
|
||||
"LabelNarrators": "Előadók",
|
||||
"LabelNew": "Új",
|
||||
"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",
|
||||
"LabelNoEpisodesSelected": "Nincsenek kiválasztott epizódok",
|
||||
"LabelNotes": "Megjegyzések",
|
||||
"LabelNotFinished": "Nem befejezett",
|
||||
"LabelNotificationAppriseURL": "Apprise URL(ek)",
|
||||
"LabelNotificationAvailableVariables": "Elérhető változók",
|
||||
"LabelNotificationBodyTemplate": "Törzs sablon",
|
||||
"LabelNotificationEvent": "Értesítési esemény",
|
||||
"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",
|
||||
"LabelOpenRSSFeed": "RSS hírcsatorna megnyitása",
|
||||
"LabelOverwrite": "Felülírás",
|
||||
"LabelPassword": "Jelszó",
|
||||
"LabelPath": "Útvonal",
|
||||
"LabelPermissionsAccessAllLibraries": "Hozzáférhet az összes könyvtárhoz",
|
||||
"LabelPermissionsAccessAllTags": "Hozzáférhet az összes címkéhez",
|
||||
"LabelPermissionsAccessExplicitContent": "Hozzáférhet explicit tartalomhoz",
|
||||
"LabelPermissionsDelete": "Törölhet",
|
||||
"LabelPermissionsDownload": "Letölthet",
|
||||
"LabelPermissionsUpdate": "Frissíthet",
|
||||
"LabelPermissionsUpload": "Feltölthet",
|
||||
"LabelPersonalYearReview": "Your Year in Review ({0})",
|
||||
"LabelPhotoPathURL": "Fénykép útvonal/URL",
|
||||
"LabelPlaylists": "Lejátszási listák",
|
||||
"LabelPlayMethod": "Lejátszási módszer",
|
||||
"LabelPodcast": "Podcast",
|
||||
"LabelPodcasts": "Podcastok",
|
||||
"LabelPodcastSearchRegion": "Podcast keresési régió",
|
||||
"LabelPodcastType": "Podcast típus",
|
||||
"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",
|
||||
"LabelPrimaryEbook": "Elsődleges e-könyv",
|
||||
"LabelProgress": "Haladás",
|
||||
"LabelProvider": "Szolgáltató",
|
||||
"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",
|
||||
"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",
|
||||
"LabelSearchTerm": "Keresési kifejezés",
|
||||
"LabelSearchTitle": "Cím keresése",
|
||||
"LabelSearchTitleOrASIN": "Cím vagy ASIN keresése",
|
||||
"LabelSeason": "Évad",
|
||||
"LabelSelectAllEpisodes": "Összes epizód kiválasztása",
|
||||
"LabelSelectEpisodesShowing": "Kiválasztás {0} megjelenített epizód",
|
||||
"LabelSelectUsers": "Felhasználók kiválasztása",
|
||||
"LabelSendEbookToDevice": "E-könyv küldése...",
|
||||
"LabelSequence": "Sorozat",
|
||||
"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",
|
||||
"LabelSettingsAudiobooksOnlyHelp": "Ennek a beállításnak az engedélyezése figyelmen kívül hagyja az e-könyv fájlokat, kivéve, ha azok egy hangoskönyv mappában vannak, ebben az esetben kiegészítő e-könyvként lesznek beállítva",
|
||||
"LabelSettingsBookshelfViewHelp": "Skeuomorfikus dizájn fa polcokkal",
|
||||
"LabelSettingsChromecastSupport": "Chromecast támogatás",
|
||||
"LabelSettingsDateFormat": "Dátumformátum",
|
||||
"LabelSettingsDisableWatcher": "Figyelő letiltása",
|
||||
"LabelSettingsDisableWatcherForLibrary": "Mappafigyelő letiltása a könyvtárban",
|
||||
"LabelSettingsDisableWatcherHelp": "Letiltja az automatikus elem hozzáadás/frissítés funkciót, amikor fájlváltozásokat észlel. *Szerver újraindítása szükséges",
|
||||
"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",
|
||||
"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",
|
||||
"LabelSettingsFindCoversHelp": "Ha a hangoskönyvnek nincs beágyazott borítója vagy borítóképe a mappában, a szkenner megpróbálja megtalálni a borítót.<br>Megjegyzés: Ez meghosszabbítja a szkennelési időt",
|
||||
"LabelSettingsHideSingleBookSeries": "Egykönyves sorozatok elrejtése",
|
||||
"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.<br>A feliratnak el kell különülnie egy \" - \" jellel<br>például: \"Könyv címe - Egy felirat itt\" esetén a felirat \"Egy felirat itt\"",
|
||||
"LabelSettingsPreferMatchedMetadata": "Preferált egyeztetett metaadatok",
|
||||
"LabelSettingsPreferMatchedMetadataHelp": "Az egyeztetett adatok felülírják az elem részleteit a Gyors egyeztetés használatakor. Alapértelmezés szerint a Gyors egyeztetés csak a hiányzó részleteket tölti ki.",
|
||||
"LabelSettingsSkipMatchingBooksWithASIN": "Már ASIN-nel rendelkező könyvek egyeztetésének kihagyása",
|
||||
"LabelSettingsSkipMatchingBooksWithISBN": "Már ISBN-nel rendelkező könyvek egyeztetésének kihagyása",
|
||||
"LabelSettingsSortingIgnorePrefixes": "Előtagok figyelmen kívül hagyása rendezéskor",
|
||||
"LabelSettingsSortingIgnorePrefixesHelp": "például az \"a\" előtag esetén a \"A könyv címe\" könyv címe \"Könyv címe, A\" szerint rendeződik",
|
||||
"LabelSettingsSquareBookCovers": "Négyzet alakú könyvborítók használata",
|
||||
"LabelSettingsSquareBookCoversHelp": "Négyzet alakú borítók használata az 1,6:1 arányú standard könyvborítók helyett",
|
||||
"LabelSettingsStoreCoversWithItem": "Borítók tárolása az elemmel",
|
||||
"LabelSettingsStoreCoversWithItemHelp": "Alapértelmezés szerint a borítók a /metadata/items mappában vannak tárolva, ennek a beállításnak az engedélyezése a borítókat a könyvtári elem mappájában tárolja. Csak egy \"cover\" nevű fájl lesz megtartva",
|
||||
"LabelSettingsStoreMetadataWithItem": "Metaadatok tárolása az elemmel",
|
||||
"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",
|
||||
"LabelSize": "Méret",
|
||||
"LabelSleepTimer": "Alvásidőzítő",
|
||||
"LabelSlug": "Rövid cím",
|
||||
"LabelStart": "Kezdés",
|
||||
"LabelStarted": "Elkezdődött",
|
||||
"LabelStartedAt": "Kezdés ideje",
|
||||
"LabelStartTime": "Kezdési idő",
|
||||
"LabelStatsAudioTracks": "Audiósávok",
|
||||
"LabelStatsAuthors": "Szerzők",
|
||||
"LabelStatsBestDay": "Legjobb nap",
|
||||
"LabelStatsDailyAverage": "Napi átlag",
|
||||
"LabelStatsDays": "Napok",
|
||||
"LabelStatsDaysListened": "Hallgatott napok",
|
||||
"LabelStatsHours": "Órák",
|
||||
"LabelStatsInARow": "egymás után",
|
||||
"LabelStatsItemsFinished": "Befejezett elemek",
|
||||
"LabelStatsItemsInLibrary": "Elemek a könyvtárban",
|
||||
"LabelStatsMinutes": "percek",
|
||||
"LabelStatsMinutesListening": "Hallgatási percek",
|
||||
"LabelStatsOverallDays": "Összes nap",
|
||||
"LabelStatsOverallHours": "Összes óra",
|
||||
"LabelStatsWeekListening": "Heti hallgatás",
|
||||
"LabelSubtitle": "Felirat",
|
||||
"LabelSupportedFileTypes": "Támogatott fájltípusok",
|
||||
"LabelTag": "Címke",
|
||||
"LabelTags": "Címkék",
|
||||
"LabelTagsAccessibleToUser": "A felhasználó számára elérhető címkék",
|
||||
"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",
|
||||
"LabelThemeDark": "Sötét",
|
||||
"LabelThemeLight": "Világos",
|
||||
"LabelTimeBase": "Időalap",
|
||||
"LabelTimeListened": "Hallgatott idő",
|
||||
"LabelTimeListenedToday": "Ma hallgatott idő",
|
||||
"LabelTimeRemaining": "{0} maradt",
|
||||
"LabelTimeToShift": "Eltolás ideje másodpercben",
|
||||
"LabelTitle": "Cím",
|
||||
"LabelToolsEmbedMetadata": "Metaadatok beágyazása",
|
||||
"LabelToolsEmbedMetadataDescription": "Metaadatok beágyazása az audiofájlokba, beleértve a borítóképet és a fejezeteket.",
|
||||
"LabelToolsMakeM4b": "M4B Hangoskönyv fájl készítése",
|
||||
"LabelToolsMakeM4bDescription": ".M4B hangoskönyv fájl generálása beágyazott metaadatokkal, borítóképpel és fejezetekkel.",
|
||||
"LabelToolsSplitM4b": "M4B felosztása MP3-ra",
|
||||
"LabelToolsSplitM4bDescription": "MP3 fájlok létrehozása egy M4B-ből, fejezetenként felosztva, beágyazott metaadatokkal, borítóképpel és fejezetekkel.",
|
||||
"LabelTotalDuration": "Teljes időtartam",
|
||||
"LabelTotalTimeListened": "Teljes hallgatási idő",
|
||||
"LabelTrackFromFilename": "Sáv a fájlnévből",
|
||||
"LabelTrackFromMetadata": "Sáv a metaadatokból",
|
||||
"LabelTracks": "Sávok",
|
||||
"LabelTracksMultiTrack": "Többsávos",
|
||||
"LabelTracksNone": "Nincsenek sávok",
|
||||
"LabelTracksSingleTrack": "Egysávos",
|
||||
"LabelType": "Típus",
|
||||
"LabelUnabridged": "Nem tömörített",
|
||||
"LabelUndo": "Visszavonás",
|
||||
"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",
|
||||
"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",
|
||||
"LabelUseChapterTrack": "Fejezetsáv használata",
|
||||
"LabelUseFullTrack": "Teljes sáv használata",
|
||||
"LabelUser": "Felhasználó",
|
||||
"LabelUsername": "Felhasználónév",
|
||||
"LabelValue": "Érték",
|
||||
"LabelVersion": "Verzió",
|
||||
"LabelViewBookmarks": "Könyvjelzők megtekintése",
|
||||
"LabelViewChapters": "Fejezetek megtekintése",
|
||||
"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",
|
||||
"LabelYourProgress": "Haladásod",
|
||||
"MessageAddToPlayerQueue": "Hozzáadás a lejátszó sorhoz",
|
||||
"MessageAppriseDescription": "Ennek a funkció használatához futtatnia kell egy <a href=\"https://github.com/caronc/apprise-api\" target=\"_blank\">Apprise API</a> példányt vagy egy olyan API-t, amely kezeli ezeket a kéréseket. <br />Az Apprise API URL-nek a teljes URL útvonalat kell tartalmaznia az értesítés elküldéséhez, például, ha az API példánya a <code>http://192.168.1.1:8337</code> címen szolgáltatva, akkor <code>http://192.168.1.1:8337/notify</code> értéket kell megadnia.",
|
||||
"MessageBackupsDescription": "A biztonsági másolatok tartalmazzák a felhasználókat, a felhasználói haladást, a könyvtári elem részleteit, a szerver beállításait és a képeket, amelyek a <code>/metadata/items</code> és <code>/metadata/authors</code> mappákban vannak tárolva. A biztonsági másolatok <strong>nem</strong> tartalmazzák a könyvtári mappákban tárolt fájlokat.",
|
||||
"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",
|
||||
"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",
|
||||
"MessageChapterErrorStartGteDuration": "Érvénytelen kezdési idő, kevesebbnek kell lennie, mint a hangoskönyv időtartama",
|
||||
"MessageChapterErrorStartLtPrev": "Érvénytelen kezdési idő, nagyobbnak kell lennie, mint az előző fejezet kezdési ideje",
|
||||
"MessageChapterStartIsAfter": "A fejezet kezdete a hangoskönyv végét követi",
|
||||
"MessageCheckingCron": "Cron ellenőrzése...",
|
||||
"MessageConfirmCloseFeed": "Biztosan be szeretné zárni ezt a hírcsatornát?",
|
||||
"MessageConfirmDeleteBackup": "Biztosan törölni szeretné a(z) {0} biztonsági másolatot?",
|
||||
"MessageConfirmDeleteFile": "Ez törölni fogja a fájlt a fájlrendszerből. Biztos benne?",
|
||||
"MessageConfirmDeleteLibrary": "Biztosan véglegesen törölni szeretné a(z) \"{0}\" könyvtárat?",
|
||||
"MessageConfirmDeleteLibraryItem": "Ez eltávolítja a könyvtári elemet az adatbázisból és a fájlrendszerből. Biztos benne?",
|
||||
"MessageConfirmDeleteLibraryItems": "Ez eltávolítja a(z) {0} könyvtári elemet az adatbázisból és a fájlrendszerből. Biztos benne?",
|
||||
"MessageConfirmDeleteSession": "Biztosan törölni szeretné ezt a munkamenetet?",
|
||||
"MessageConfirmForceReScan": "Biztosan kényszeríteni szeretné az újraszkennelést?",
|
||||
"MessageConfirmMarkAllEpisodesFinished": "Biztosan meg szeretné jelölni az összes epizódot befejezettnek?",
|
||||
"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?",
|
||||
"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. <br><br>Szeretné folytatni?",
|
||||
"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?",
|
||||
"MessageConfirmRemoveEpisode": "Biztosan eltávolítja a(z) \"{0}\" epizódot?",
|
||||
"MessageConfirmRemoveEpisodes": "Biztosan eltávolítja a(z) {0} epizódot?",
|
||||
"MessageConfirmRemoveListeningSessions": "Biztosan eltávolítja a(z) {0} hallgatási munkamenetet?",
|
||||
"MessageConfirmRemoveNarrator": "Biztosan eltávolítja a(z) \"{0}\" előadót?",
|
||||
"MessageConfirmRemovePlaylist": "Biztosan eltávolítja a(z) \"{0}\" lejátszási listáját?",
|
||||
"MessageConfirmRenameGenre": "Biztosan át szeretné nevezni a(z) \"{0}\" műfajt \"{1}\"-re az összes elemnél?",
|
||||
"MessageConfirmRenameGenreMergeNote": "Megjegyzés: Ez a műfaj már létezik, így össze lesznek vonva.",
|
||||
"MessageConfirmRenameGenreWarning": "Figyelem! Egy hasonló, de eltérő nagybetűkkel rendelkező műfaj már létezik \"{0}\".",
|
||||
"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",
|
||||
"MessageFeedURLWillBe": "A hírcsatorna URL-je {0} lesz",
|
||||
"MessageFetching": "Lekéré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: ",
|
||||
"MessageListeningSessionsInTheLastYear": "{0} hallgatási munkamenet az elmúlt évben",
|
||||
"MessageLoading": "Betöltés...",
|
||||
"MessageLoadingFolders": "Mappák betöltése...",
|
||||
"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á",
|
||||
"MessageMarkAllEpisodesFinished": "Az összes epizód megjelölése befejezettnek",
|
||||
"MessageMarkAllEpisodesNotFinished": "Az összes epizód megjelölése nem befejezettnek",
|
||||
"MessageMarkAsFinished": "Megjelölés befejezettnek",
|
||||
"MessageMarkAsNotFinished": "Megjelölés nem befejezettnek",
|
||||
"MessageMatchBooksDescription": "megpróbálja egyeztetni a könyvtár könyveit egy kiválasztott keresési szolgáltató könyvével, és kitölti az üres részleteket és a borítót. Nem írja felül a részleteket.",
|
||||
"MessageNoAudioTracks": "Nincsenek audiósávok",
|
||||
"MessageNoAuthors": "Nincsenek szerzők",
|
||||
"MessageNoBackups": "Nincsenek biztonsági másolatok",
|
||||
"MessageNoBookmarks": "Nincsenek könyvjelzők",
|
||||
"MessageNoChapters": "Nincsenek fejezetek",
|
||||
"MessageNoCollections": "Nincsenek gyűjtemények",
|
||||
"MessageNoCoversFound": "Nem találhatóak borítók",
|
||||
"MessageNoDescription": "Nincs leírás",
|
||||
"MessageNoDownloadsInProgress": "Jelenleg nincsenek folyamatban lévő letöltések",
|
||||
"MessageNoDownloadsQueued": "Nincsenek várakozó letöltések",
|
||||
"MessageNoEpisodeMatchesFound": "Nincs találat az epizódokra",
|
||||
"MessageNoEpisodes": "Nincsenek epizódok",
|
||||
"MessageNoFoldersAvailable": "Nincsenek elérhető mappák",
|
||||
"MessageNoGenres": "Nincsenek műfajok",
|
||||
"MessageNoIssues": "Nincsenek problémák",
|
||||
"MessageNoItems": "Nincsenek elemek",
|
||||
"MessageNoItemsFound": "Nem találhatóak elemek",
|
||||
"MessageNoListeningSessions": "Nincsenek hallgatási munkamenetek",
|
||||
"MessageNoLogs": "Nincsenek naplók",
|
||||
"MessageNoMediaProgress": "Nincs előrehaladás a médialejátszásban",
|
||||
"MessageNoNotifications": "Nincsenek értesítések",
|
||||
"MessageNoPodcastsFound": "Nem találhatóak podcastok",
|
||||
"MessageNoResults": "Nincsenek eredmények",
|
||||
"MessageNoSearchResultsFor": "Nincs keresési eredmény erre: \"{0}\"",
|
||||
"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",
|
||||
"MessageOr": "vagy",
|
||||
"MessagePauseChapter": "Fejezet lejátszásának szüneteltetése",
|
||||
"MessagePlayChapter": "Fejezet elejének meghallgatása",
|
||||
"MessagePlaylistCreateFromCollection": "Lejátszási lista létrehozása gyűjteményből",
|
||||
"MessagePodcastHasNoRSSFeedForMatching": "A podcastnak nincs RSS hírcsatorna URL-je az egyeztetéshez",
|
||||
"MessageQuickMatchDescription": "Üres elem részletek és borító feltöltése az első találati eredménnyel a(z) '{0}'-ból. Nem írja felül a részleteket, kivéve, ha a 'Preferált egyeztetett metaadatok' szerverbeállítás engedélyezve van.",
|
||||
"MessageRemoveChapter": "Fejezet eltávolítása",
|
||||
"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:",
|
||||
"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:",
|
||||
"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.<br /><br />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.<br /><br />A szerver használó összes kliens automatikusan frissül.",
|
||||
"MessageSearchResultsFor": "Keresési eredmények",
|
||||
"MessageSelected": "{0} kiválasztva",
|
||||
"MessageServerCouldNotBeReached": "A szervert nem lehet elérni",
|
||||
"MessageSetChaptersFromTracksDescription": "Fejezetek beállítása minden egyes hangfájlt egy fejezetként használva, és a fejezet címét a hangfájl neveként",
|
||||
"MessageStartPlaybackAtTime": "\"{0}\" lejátszásának kezdése {1} -tól?",
|
||||
"MessageThinking": "Gondolkodás...",
|
||||
"MessageUploaderItemFailed": "A feltöltés sikertelen",
|
||||
"MessageUploaderItemSuccess": "Sikeresen feltöltve!",
|
||||
"MessageUploading": "Feltöltés...",
|
||||
"MessageValidCronExpression": "Érvényes cron kifejezés",
|
||||
"MessageWatcherIsDisabledGlobally": "A megfigyelő globálisan le van tiltva a szerver beállításokban",
|
||||
"MessageXLibraryIsEmpty": "{0} könyvtár üres!",
|
||||
"MessageYourAudiobookDurationIsLonger": "Az Ön hangoskönyvének hossza hosszabb, mint a talált időtartam",
|
||||
"MessageYourAudiobookDurationIsShorter": "Az Ön hangoskönyvének hossza rövidebb, mint a talált időtartam",
|
||||
"NoteChangeRootPassword": "A Root felhasználó az egyetlen felhasználó, akinek lehet üres jelszava",
|
||||
"NoteChapterEditorTimes": "Megjegyzés: Az első fejezet kezdőidejének 0:00 kell lennie, és az utolsó fejezet kezdőideje nem haladhatja meg a hangoskönyv időtartamát.",
|
||||
"NoteFolderPicker": "Megjegyzés: azok a mappák, amelyek már hozzá vannak rendelve, nem jelennek meg",
|
||||
"NoteRSSFeedPodcastAppsHttps": "Figyelem: A legtöbb podcast alkalmazás megköveteli, hogy az RSS feed URL HTTPS-t használjon",
|
||||
"NoteRSSFeedPodcastAppsPubDate": "Figyelem: Az egy vagy több epizódnak nincs Közzétételi dátuma. Néhány podcast alkalmazás ezt megköveteli.",
|
||||
"NoteUploaderFoldersWithMediaFiles": "A médiafájlokat tartalmazó mappák külön könyvtári tételekként lesznek kezelve.",
|
||||
"NoteUploaderOnlyAudioFiles": "Ha csak hangfájlokat tölt fel, akkor minden egyes hangfájl külön hangoskönyvként lesz kezelve.",
|
||||
"NoteUploaderUnsupportedFiles": "A nem támogatott fájlok figyelmen kívül hagyásra kerülnek. Mappa kiválasztása vagy elengedésekor az elem mappáján kívüli egyéb fájlok figyelmen kívül lesznek hagyva.",
|
||||
"PlaceholderNewCollection": "Új gyűjtemény neve",
|
||||
"PlaceholderNewFolderPath": "Új mappa útvonala",
|
||||
"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)",
|
||||
"ToastBackupCreateFailed": "A biztonsági mentés létrehozása sikertelen",
|
||||
"ToastBackupCreateSuccess": "Biztonsági mentés létrehozva",
|
||||
"ToastBackupDeleteFailed": "A biztonsági mentés törlése sikertelen",
|
||||
"ToastBackupDeleteSuccess": "Biztonsági mentés törölve",
|
||||
"ToastBackupRestoreFailed": "A biztonsági mentés visszaállítása sikertelen",
|
||||
"ToastBackupUploadFailed": "A biztonsági mentés feltöltése sikertelen",
|
||||
"ToastBackupUploadSuccess": "Biztonsági mentés feltöltve",
|
||||
"ToastBatchUpdateFailed": "Kötegelt frissítés sikertelen",
|
||||
"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",
|
||||
"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",
|
||||
"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",
|
||||
"ToastItemMarkedAsNotFinishedSuccess": "Elem megjelölve Nem Befejezettként",
|
||||
"ToastLibraryCreateFailed": "Könyvtár létrehozása sikertelen",
|
||||
"ToastLibraryCreateSuccess": "\"{0}\" könyvtár létrehozva",
|
||||
"ToastLibraryDeleteFailed": "Könyvtár törlése sikertelen",
|
||||
"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",
|
||||
"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",
|
||||
"ToastSessionDeleteFailed": "Munkamenet törlése sikertelen",
|
||||
"ToastSessionDeleteSuccess": "Munkamenet törölve",
|
||||
"ToastSocketConnected": "Socket csatlakoztatva",
|
||||
"ToastSocketDisconnected": "Socket lecsatlakoztatva",
|
||||
"ToastSocketFailedToConnect": "A Socket csatlakoztatása sikertelen",
|
||||
"ToastUserDeleteFailed": "Felhasználó törlése sikertelen",
|
||||
"ToastUserDeleteSuccess": "Felhasználó törölve"
|
||||
}
|
||||
@@ -32,6 +32,8 @@
|
||||
"ButtonHide": "Nascondi",
|
||||
"ButtonHome": "Home",
|
||||
"ButtonIssues": "Errori",
|
||||
"ButtonJumpBackward": "Salta indietro",
|
||||
"ButtonJumpForward": "Salta Avanti",
|
||||
"ButtonLatest": "Ultimi",
|
||||
"ButtonLibrary": "Libreria",
|
||||
"ButtonLogout": "Disconnetti",
|
||||
@@ -41,12 +43,17 @@
|
||||
"ButtonMatchAllAuthors": "Aggiungi metadata agli Autori",
|
||||
"ButtonMatchBooks": "Aggiungi metadata della Libreria",
|
||||
"ButtonNevermind": "Nevermind",
|
||||
"ButtonNext": "Next",
|
||||
"ButtonNextChapter": "Prossimo Capitolo",
|
||||
"ButtonOk": "Ok",
|
||||
"ButtonOpenFeed": "Apri Feed",
|
||||
"ButtonOpenManager": "Apri Manager",
|
||||
"ButtonPause": "Pausa",
|
||||
"ButtonPlay": "Play",
|
||||
"ButtonPlaying": "In Riproduzione",
|
||||
"ButtonPlaylists": "Playlists",
|
||||
"ButtonPrevious": "Previous",
|
||||
"ButtonPreviousChapter": "Capitolo Precendente",
|
||||
"ButtonPurgeAllCache": "Elimina tutta la Cache",
|
||||
"ButtonPurgeItemsCache": "Elimina la Cache selezionata",
|
||||
"ButtonPurgeMediaProgress": "Elimina info dei media ascoltati",
|
||||
@@ -54,6 +61,7 @@
|
||||
"ButtonQueueRemoveItem": "Rimuovi dalla Coda",
|
||||
"ButtonQuickMatch": "Controlla Metadata Auto",
|
||||
"ButtonRead": "Leggi",
|
||||
"ButtonRefresh": "Refresh",
|
||||
"ButtonRemove": "Rimuovi",
|
||||
"ButtonRemoveAll": "Rimuovi Tutto",
|
||||
"ButtonRemoveAllLibraryItems": "Rimuovi tutto il contenuto della libreria",
|
||||
@@ -73,6 +81,7 @@
|
||||
"ButtonSelectFolderPath": "Seleziona percorso cartella",
|
||||
"ButtonSeries": "Serie",
|
||||
"ButtonSetChaptersFromTracks": "Impostare i capitoli dalle tracce",
|
||||
"ButtonShare": "Share",
|
||||
"ButtonShiftTimes": "Ricerca veloce",
|
||||
"ButtonShow": "Mostra",
|
||||
"ButtonStartM4BEncode": "Inizia L'Encode del M4B",
|
||||
@@ -87,15 +96,15 @@
|
||||
"ButtonUserEdit": "Modifica Utente {0}",
|
||||
"ButtonViewAll": "Mostra Tutto",
|
||||
"ButtonYes": "Si",
|
||||
"ErrorUploadFetchMetadataAPI": "Error fetching metadata",
|
||||
"ErrorUploadFetchMetadataNoResults": "Could not fetch metadata - try updating title and/or author",
|
||||
"ErrorUploadLacksTitle": "Must have a title",
|
||||
"ErrorUploadFetchMetadataAPI": "Errore Recupero metadati",
|
||||
"ErrorUploadFetchMetadataNoResults": "Impossibile recuperare i metadati: prova a modificate il titolo e/o l'autore",
|
||||
"ErrorUploadLacksTitle": "Deve avere un titolo",
|
||||
"HeaderAccount": "Account",
|
||||
"HeaderAdvanced": "Avanzate",
|
||||
"HeaderAppriseNotificationSettings": "Apprendi le impostazioni di Notifica",
|
||||
"HeaderAudiobookTools": "Utilità Audiobook File Management",
|
||||
"HeaderAudioTracks": "Tracce Audio",
|
||||
"HeaderAuthentication": "Authentication",
|
||||
"HeaderAuthentication": "Authenticazione",
|
||||
"HeaderBackups": "Backup",
|
||||
"HeaderChangePassword": "Cambia Password",
|
||||
"HeaderChapters": "Capitoli",
|
||||
@@ -104,8 +113,9 @@
|
||||
"HeaderCollectionItems": "Elementi della Raccolta",
|
||||
"HeaderCover": "Cover",
|
||||
"HeaderCurrentDownloads": "Download Correnti",
|
||||
"HeaderCustomMetadataProviders": "Custom Metadata Providers",
|
||||
"HeaderDetails": "Dettagli",
|
||||
"HeaderDownloadQueue": "Download Queue",
|
||||
"HeaderDownloadQueue": "Download coda",
|
||||
"HeaderEbookFiles": "Ebook File",
|
||||
"HeaderEmail": "Email",
|
||||
"HeaderEmailSettings": "Email Settings",
|
||||
@@ -130,7 +140,7 @@
|
||||
"HeaderManageTags": "Gestisci Tags",
|
||||
"HeaderMapDetails": "Mappa Dettagli",
|
||||
"HeaderMatch": "Trova Corrispondenza",
|
||||
"HeaderMetadataOrderOfPrecedence": "Metadata order of precedence",
|
||||
"HeaderMetadataOrderOfPrecedence": "Priorità ordine Metadata",
|
||||
"HeaderMetadataToEmbed": "Metadata da incorporare",
|
||||
"HeaderNewAccount": "Nuovo Account",
|
||||
"HeaderNewLibrary": "Nuova Libreria",
|
||||
@@ -174,6 +184,7 @@
|
||||
"HeaderUpdateDetails": "Aggiorna Dettagli",
|
||||
"HeaderUpdateLibrary": "Aggiorna Libreria",
|
||||
"HeaderUsers": "Utenti",
|
||||
"HeaderYearReview": "Year {0} in Review",
|
||||
"HeaderYourStats": "Statistiche Personali",
|
||||
"LabelAbridged": "Abbreviato",
|
||||
"LabelAccountType": "Tipo di Account",
|
||||
@@ -199,12 +210,12 @@
|
||||
"LabelAuthorLastFirst": "Autori (Per Cognome)",
|
||||
"LabelAuthors": "Autori",
|
||||
"LabelAutoDownloadEpisodes": "Auto Download Episodi",
|
||||
"LabelAutoFetchMetadata": "Auto Fetch Metadata",
|
||||
"LabelAutoFetchMetadataHelp": "Fetches metadata for title, author, and series to streamline uploading. Additional metadata may have to be matched after upload.",
|
||||
"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",
|
||||
"LabelAutoLaunchDescription": "Redirect to the auth provider automatically when navigating to the login page (manual override path <code>/login?autoLaunch=0</code>)",
|
||||
"LabelAutoRegister": "Auto Register",
|
||||
"LabelAutoRegisterDescription": "Automatically create new users after logging in",
|
||||
"LabelAutoLaunchDescription": "Reindirizzamento automatico al provider di autenticazione quando si accede alla pagina di accesso (percorso di sostituzione manuale <code>/login?autoLaunch=0</code>)",
|
||||
"LabelAutoRegister": "Auto Registrazione",
|
||||
"LabelAutoRegisterDescription": "Crea automaticamente nuovi utenti dopo aver effettuato l'accesso",
|
||||
"LabelBackToUser": "Torna a Utenti",
|
||||
"LabelBackupLocation": "Percorso del Backup",
|
||||
"LabelBackupsEnableAutomaticBackups": "Abilita backup Automatico",
|
||||
@@ -215,7 +226,7 @@
|
||||
"LabelBackupsNumberToKeepHelp": "Verrà rimosso solo 1 backup alla volta, quindi se hai più backup, dovrai rimuoverli manualmente.",
|
||||
"LabelBitrate": "Bitrate",
|
||||
"LabelBooks": "Libri",
|
||||
"LabelButtonText": "Button Text",
|
||||
"LabelButtonText": "Buttone Testo",
|
||||
"LabelChangePassword": "Cambia Password",
|
||||
"LabelChannels": "Canali",
|
||||
"LabelChapters": "Capitoli",
|
||||
@@ -271,7 +282,7 @@
|
||||
"LabelExample": "Esempio",
|
||||
"LabelExplicit": "Esplicito",
|
||||
"LabelFeedURL": "Feed URL",
|
||||
"LabelFetchingMetadata": "Fetching Metadata",
|
||||
"LabelFetchingMetadata": "Recupero dei metadati",
|
||||
"LabelFile": "File",
|
||||
"LabelFileBirthtime": "Data Creazione",
|
||||
"LabelFileModified": "Ultima modifica",
|
||||
@@ -281,15 +292,18 @@
|
||||
"LabelFinished": "Finita",
|
||||
"LabelFolder": "Cartella",
|
||||
"LabelFolders": "Cartelle",
|
||||
"LabelFontBold": "Bold",
|
||||
"LabelFontFamily": "Font family",
|
||||
"LabelFontItalic": "Italic",
|
||||
"LabelFontScale": "Dimensione Font",
|
||||
"LabelFontStrikethrough": "Strikethrough",
|
||||
"LabelFormat": "Formato",
|
||||
"LabelGenre": "Genere",
|
||||
"LabelGenres": "Generi",
|
||||
"LabelHardDeleteFile": "Elimina Definitivamente",
|
||||
"LabelHasEbook": "Un ebook",
|
||||
"LabelHasSupplementaryEbook": "Un ebook Supplementare",
|
||||
"LabelHighestPriority": "Highest priority",
|
||||
"LabelHighestPriority": "Priorità Massima",
|
||||
"LabelHost": "Host",
|
||||
"LabelHour": "Ora",
|
||||
"LabelIcon": "Icona",
|
||||
@@ -331,20 +345,22 @@
|
||||
"LabelLogLevelInfo": "Info",
|
||||
"LabelLogLevelWarn": "Allarme",
|
||||
"LabelLookForNewEpisodesAfterDate": "Cerca nuovi episodi dopo questa data",
|
||||
"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": "Priorità Minima",
|
||||
"LabelMatchExistingUsersBy": "Abbina gli utenti esistenti per",
|
||||
"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": "Higher priority metadata sources will override lower priority metadata sources",
|
||||
"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",
|
||||
"LabelMinute": "Minuto",
|
||||
"LabelMissing": "Altro",
|
||||
"LabelMissingParts": "Parti rimantenti",
|
||||
"LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs",
|
||||
"LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is <code>audiobookshelf://oauth</code>, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (<code>*</code>) as the sole entry permits any URI.",
|
||||
"LabelMissingEbook": "Has no ebook",
|
||||
"LabelMissingParts": "Parti rimanenti",
|
||||
"LabelMissingSupplementaryEbook": "Has no supplementary ebook",
|
||||
"LabelMobileRedirectURIs": "URI di reindirizzamento mobile consentiti",
|
||||
"LabelMobileRedirectURIsDescription": "Questa è una lista bianca di URI di reindirizzamento validi per le app mobili. Quello predefinito è <code>audiobookshelf://oauth</code>, che puoi rimuovere o integrare con URI aggiuntivi per l'integrazione di app di terze parti. Utilizzando un asterisco (<code>*</code>) poiché l'unica voce consente qualsiasi URI.",
|
||||
"LabelMore": "Molto",
|
||||
"LabelMoreInfo": "Più Info",
|
||||
"LabelName": "Nome",
|
||||
@@ -382,11 +398,13 @@
|
||||
"LabelPermissionsDownload": "Può Scaricare",
|
||||
"LabelPermissionsUpdate": "Può Aggiornare",
|
||||
"LabelPermissionsUpload": "Può caricare",
|
||||
"LabelPersonalYearReview": "Your Year in Review ({0})",
|
||||
"LabelPhotoPathURL": "foto Path/URL",
|
||||
"LabelPlaylists": "Playlists",
|
||||
"LabelPlayMethod": "Metodo di riproduzione",
|
||||
"LabelPodcast": "Podcast",
|
||||
"LabelPodcasts": "Podcasts",
|
||||
"LabelPodcastSearchRegion": "Area di ricerca podcast",
|
||||
"LabelPodcastType": "Tipo di Podcast",
|
||||
"LabelPort": "Port",
|
||||
"LabelPrefixesToIgnore": "Suffissi da ignorare (specificando maiuscole e minuscole)",
|
||||
@@ -403,6 +421,7 @@
|
||||
"LabelRecentlyAdded": "Aggiunti Recentemente",
|
||||
"LabelRecentSeries": "Serie Recenti",
|
||||
"LabelRecommended": "Raccomandati",
|
||||
"LabelRedo": "Rifai",
|
||||
"LabelRegion": "Regione",
|
||||
"LabelReleaseDate": "Data Release",
|
||||
"LabelRemoveCover": "Rimuovi cover",
|
||||
@@ -425,6 +444,7 @@
|
||||
"LabelSeries": "Serie",
|
||||
"LabelSeriesName": "Nome Serie",
|
||||
"LabelSeriesProgress": "Cominciato",
|
||||
"LabelServerYearReview": "Server Year in Review ({0})",
|
||||
"LabelSetEbookAsPrimary": "Immposta come Primario",
|
||||
"LabelSetEbookAsSupplementary": "Imposta come Suplementare",
|
||||
"LabelSettingsAudiobooksOnly": "Solo Audiolibri",
|
||||
@@ -446,6 +466,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.",
|
||||
"LabelSettingsParseSubtitles": "Analizza sottotitoli",
|
||||
"LabelSettingsParseSubtitlesHelp": "Estrai i sottotitoli dai nomi delle cartelle degli audiolibri. <br> I sottotitoli devono essere separati da \" - \"<br> Per esempio \"Il signore degli anelli - Le due Torri \" avrà il sottotitolo \"Le due Torri\"",
|
||||
"LabelSettingsPreferMatchedMetadata": "Preferisci i metadata trovati",
|
||||
@@ -464,7 +486,7 @@
|
||||
"LabelShowAll": "Mostra Tutto",
|
||||
"LabelSize": "Dimensione",
|
||||
"LabelSleepTimer": "Sleep timer",
|
||||
"LabelSlug": "Slug",
|
||||
"LabelSlug": "Lento",
|
||||
"LabelStart": "Inizo",
|
||||
"LabelStarted": "Iniziato",
|
||||
"LabelStartedAt": "Iniziato al",
|
||||
@@ -491,6 +513,10 @@
|
||||
"LabelTagsAccessibleToUser": "Tags permessi agli Utenti",
|
||||
"LabelTagsNotAccessibleToUser": "Tags non accessibile agli Utenti",
|
||||
"LabelTasks": "Processi in esecuzione",
|
||||
"LabelTextEditorBulletedList": "Elenco puntato",
|
||||
"LabelTextEditorLink": "Link",
|
||||
"LabelTextEditorNumberedList": "Elenco Numerato",
|
||||
"LabelTextEditorUnlink": "Unlink",
|
||||
"LabelTheme": "Tema",
|
||||
"LabelThemeDark": "Scuro",
|
||||
"LabelThemeLight": "Chiaro",
|
||||
@@ -512,10 +538,11 @@
|
||||
"LabelTrackFromMetadata": "Traccia da Metadata",
|
||||
"LabelTracks": "Traccia",
|
||||
"LabelTracksMultiTrack": "Multi-traccia",
|
||||
"LabelTracksNone": "No tracks",
|
||||
"LabelTracksNone": "Nessuna traccia",
|
||||
"LabelTracksSingleTrack": "Traccia-singola",
|
||||
"LabelType": "Tipo",
|
||||
"LabelUnabridged": "Integrale",
|
||||
"LabelUndo": "Undo",
|
||||
"LabelUnknown": "Sconosciuto",
|
||||
"LabelUpdateCover": "Aggiornamento Cover",
|
||||
"LabelUpdateCoverHelp": "Consenti la sovrascrittura delle copertine esistenti per i libri selezionati quando viene trovata una corrispondenza",
|
||||
@@ -524,7 +551,7 @@
|
||||
"LabelUpdateDetailsHelp": "Consenti la sovrascrittura dei dettagli esistenti per i libri selezionati quando viene individuata una corrispondenza",
|
||||
"LabelUploaderDragAndDrop": "Drag & drop file o Cartelle",
|
||||
"LabelUploaderDropFiles": "Elimina file",
|
||||
"LabelUploaderItemFetchMetadataHelp": "Automatically fetch title, author, and series",
|
||||
"LabelUploaderItemFetchMetadataHelp": "Recupera automaticamente titolo, autore e serie",
|
||||
"LabelUseChapterTrack": "Usa il Capitolo della Traccia",
|
||||
"LabelUseFullTrack": "Usa la traccia totale",
|
||||
"LabelUser": "Utente",
|
||||
@@ -536,6 +563,8 @@
|
||||
"LabelViewQueue": "Visualizza coda",
|
||||
"LabelVolume": "Volume",
|
||||
"LabelWeekdaysToRun": "Giorni feriali da eseguire",
|
||||
"LabelYearReviewHide": "Hide Year in Review",
|
||||
"LabelYearReviewShow": "See Year in Review",
|
||||
"LabelYourAudiobookDuration": "La durata dell'audiolibro",
|
||||
"LabelYourBookmarks": "I tuoi Preferiti",
|
||||
"LabelYourPlaylists": "le tue Playlist",
|
||||
@@ -572,7 +601,7 @@
|
||||
"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?",
|
||||
"MessageConfirmRemoveListeningSessions": "Are you sure you want to remove {0} listening sessions?",
|
||||
"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?",
|
||||
@@ -652,7 +681,7 @@
|
||||
"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.<br /><br />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.<br /><br />Tutti i client che utilizzano il tuo server verranno aggiornati automaticamente.",
|
||||
"MessageSearchResultsFor": "cerca risultati per",
|
||||
"MessageSelected": "{0} selected",
|
||||
"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",
|
||||
"MessageStartPlaybackAtTime": "Avvia la riproduzione per \"{0}\" a {1}?",
|
||||
@@ -668,7 +697,6 @@
|
||||
"NoteChangeRootPassword": "L'utente root è l'unico utente che può avere una password vuota",
|
||||
"NoteChapterEditorTimes": "Nota: l'ora di inizio del primo capitolo deve rimanere alle 0:00 e l'ora di inizio dell'ultimo capitolo non può superare la durata di questo audiolibro.",
|
||||
"NoteFolderPicker": "Nota: le cartelle già mappate non verranno visualizzate",
|
||||
"NoteFolderPickerDebian": "Nota: il selettore di cartelle per l'installazione di Debian non è completamente implementato. Dovresti inserire direttamente il percorso della tua libreria.",
|
||||
"NoteRSSFeedPodcastAppsHttps": "Avviso: la maggior parte delle app di podcast richiede che l'URL del feed RSS utilizzi HTTPS",
|
||||
"NoteRSSFeedPodcastAppsPubDate": "Avviso: 1 o più delle tue puntate non hanno una data di pubblicazione. Alcune app di podcast lo richiedono.",
|
||||
"NoteUploaderFoldersWithMediaFiles": "Le cartelle con file multimediali verranno gestite come elementi della libreria separati.",
|
||||
@@ -742,7 +770,7 @@
|
||||
"ToastSendEbookToDeviceFailed": "Impossibile inviare l'ebook al dispositivo",
|
||||
"ToastSendEbookToDeviceSuccess": "Ebook inviato al dispositivo \"{0}\"",
|
||||
"ToastSeriesUpdateFailed": "Aggiornamento Serie Fallito",
|
||||
"ToastSeriesUpdateSuccess": "Serie Aggornate",
|
||||
"ToastSeriesUpdateSuccess": "Serie Aggiornate",
|
||||
"ToastSessionDeleteFailed": "Errore eliminazione sessione",
|
||||
"ToastSessionDeleteSuccess": "Sessione cancellata",
|
||||
"ToastSocketConnected": "Socket connesso",
|
||||
|
||||
@@ -32,6 +32,8 @@
|
||||
"ButtonHide": "Slėpti",
|
||||
"ButtonHome": "Pradžia",
|
||||
"ButtonIssues": "Problemos",
|
||||
"ButtonJumpBackward": "Jump Backward",
|
||||
"ButtonJumpForward": "Jump Forward",
|
||||
"ButtonLatest": "Naujausias",
|
||||
"ButtonLibrary": "Biblioteka",
|
||||
"ButtonLogout": "Atsijungti",
|
||||
@@ -41,12 +43,17 @@
|
||||
"ButtonMatchAllAuthors": "Pritaikyti visus autorius",
|
||||
"ButtonMatchBooks": "Pritaikyti knygas",
|
||||
"ButtonNevermind": "Nesvarbu",
|
||||
"ButtonNext": "Next",
|
||||
"ButtonNextChapter": "Next Chapter",
|
||||
"ButtonOk": "Ok",
|
||||
"ButtonOpenFeed": "Atidaryti srautą",
|
||||
"ButtonOpenManager": "Atidaryti tvarkyklę",
|
||||
"ButtonPause": "Pause",
|
||||
"ButtonPlay": "Groti",
|
||||
"ButtonPlaying": "Grojama",
|
||||
"ButtonPlaylists": "Grojaraščiai",
|
||||
"ButtonPrevious": "Previous",
|
||||
"ButtonPreviousChapter": "Previous Chapter",
|
||||
"ButtonPurgeAllCache": "Valyti visą saugyklą",
|
||||
"ButtonPurgeItemsCache": "Valyti elementų saugyklą",
|
||||
"ButtonPurgeMediaProgress": "Valyti medijos progresą",
|
||||
@@ -54,6 +61,7 @@
|
||||
"ButtonQueueRemoveItem": "Pašalinti iš eilės",
|
||||
"ButtonQuickMatch": "Greitas pritaikymas",
|
||||
"ButtonRead": "Skaityti",
|
||||
"ButtonRefresh": "Refresh",
|
||||
"ButtonRemove": "Pašalinti",
|
||||
"ButtonRemoveAll": "Pašalinti viską",
|
||||
"ButtonRemoveAllLibraryItems": "Pašalinti visus bibliotekos elementus",
|
||||
@@ -73,6 +81,7 @@
|
||||
"ButtonSelectFolderPath": "Pasirinkti aplanko kelią",
|
||||
"ButtonSeries": "Serijos",
|
||||
"ButtonSetChaptersFromTracks": "Nustatyti skyrius iš takelių",
|
||||
"ButtonShare": "Share",
|
||||
"ButtonShiftTimes": "Perstumti laikus",
|
||||
"ButtonShow": "Rodyti",
|
||||
"ButtonStartM4BEncode": "Pradėti M4B kodavimą",
|
||||
@@ -104,6 +113,7 @@
|
||||
"HeaderCollectionItems": "Kolekcijos elementai",
|
||||
"HeaderCover": "Viršelis",
|
||||
"HeaderCurrentDownloads": "Dabartiniai parsisiuntimai",
|
||||
"HeaderCustomMetadataProviders": "Custom Metadata Providers",
|
||||
"HeaderDetails": "Detalės",
|
||||
"HeaderDownloadQueue": "Parsisiuntimo eilė",
|
||||
"HeaderEbookFiles": "Eknygos failai",
|
||||
@@ -174,6 +184,7 @@
|
||||
"HeaderUpdateDetails": "Atnaujinti informaciją",
|
||||
"HeaderUpdateLibrary": "Atnaujinti biblioteką",
|
||||
"HeaderUsers": "Naudotojai",
|
||||
"HeaderYearReview": "Year {0} in Review",
|
||||
"HeaderYourStats": "Jūsų statistika",
|
||||
"LabelAbridged": "Santrauka",
|
||||
"LabelAccountType": "Paskyros tipas",
|
||||
@@ -281,8 +292,11 @@
|
||||
"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",
|
||||
@@ -342,7 +356,9 @@
|
||||
"LabelMetaTags": "Meta žymos",
|
||||
"LabelMinute": "Minutė",
|
||||
"LabelMissing": "Trūksta",
|
||||
"LabelMissingEbook": "Has no ebook",
|
||||
"LabelMissingParts": "Trūkstamos dalys",
|
||||
"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 <code>audiobookshelf://oauth</code>, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (<code>*</code>) as the sole entry permits any URI.",
|
||||
"LabelMore": "Daugiau",
|
||||
@@ -382,11 +398,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",
|
||||
"LabelPodcast": "Tinklalaidė",
|
||||
"LabelPodcasts": "Tinklalaidės",
|
||||
"LabelPodcastSearchRegion": "Podcast paieškos regionas",
|
||||
"LabelPodcastType": "Tinklalaidės tipas",
|
||||
"LabelPort": "Prievadas",
|
||||
"LabelPrefixesToIgnore": "Ignoruojami priešdėliai (didžiosios/mažosios nesvarbu)",
|
||||
@@ -403,6 +421,7 @@
|
||||
"LabelRecentlyAdded": "Neseniai pridėta",
|
||||
"LabelRecentSeries": "Naujausios serijos",
|
||||
"LabelRecommended": "Rekomenduojama",
|
||||
"LabelRedo": "Redo",
|
||||
"LabelRegion": "Regionas",
|
||||
"LabelReleaseDate": "Išleidimo data",
|
||||
"LabelRemoveCover": "Pašalinti viršelį",
|
||||
@@ -425,6 +444,7 @@
|
||||
"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",
|
||||
@@ -446,6 +466,8 @@
|
||||
"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ų.<br>Subtitrai turi būti atskirti brūkšniu \"-\"<br>pavyzdžiui, \"Knygos pavadinimas - Čia yra subtitrai\" turi subtitrą \"Čia yra subtitrai\"",
|
||||
"LabelSettingsPreferMatchedMetadata": "Pirmenybė atitaikytiems metaduomenis",
|
||||
@@ -491,6 +513,10 @@
|
||||
"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",
|
||||
@@ -516,6 +542,7 @@
|
||||
"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ų",
|
||||
@@ -536,6 +563,8 @@
|
||||
"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",
|
||||
@@ -668,7 +697,6 @@
|
||||
"NoteChangeRootPassword": "Tik root vartotojas gali turėti tuščią slaptažodį",
|
||||
"NoteChapterEditorTimes": "Pastaba: Pirmasis skyriaus pradžios laikas turi likti 0:00, o paskutinio skyriaus pradžios laikas negali viršyti šios garso knygos trukmės.",
|
||||
"NoteFolderPicker": "Pastaba: jau susieti aplankai nebus rodomi",
|
||||
"NoteFolderPickerDebian": "Pastaba: Aplanko pasirinkimo įrankis „Debian“ sistemoje nėra visiškai įgyvendintas. Turėtumėte tiesiogiai įvesti kelią į savo biblioteką.",
|
||||
"NoteRSSFeedPodcastAppsHttps": "Įspėjimas: Dauguma tinklalaidžių programų reikalauja, kad RSS kanalo URL būtų naudojamas su HTTPS",
|
||||
"NoteRSSFeedPodcastAppsPubDate": "Įspėjimas: Vienas ar daugiau jūsų epizodų neturi publikavimo datos. Kai kurios tinklalaidžių programos to reikalauja.",
|
||||
"NoteUploaderFoldersWithMediaFiles": "Aplankai su medijos failais bus tvarkomi kaip atskiri bibliotekos elementai.",
|
||||
|
||||
@@ -32,6 +32,8 @@
|
||||
"ButtonHide": "Verberg",
|
||||
"ButtonHome": "Home",
|
||||
"ButtonIssues": "Issues",
|
||||
"ButtonJumpBackward": "Jump Backward",
|
||||
"ButtonJumpForward": "Jump Forward",
|
||||
"ButtonLatest": "Meest recent",
|
||||
"ButtonLibrary": "Bibliotheek",
|
||||
"ButtonLogout": "Log uit",
|
||||
@@ -41,12 +43,17 @@
|
||||
"ButtonMatchAllAuthors": "Alle auteurs matchen",
|
||||
"ButtonMatchBooks": "Alle boeken matchen",
|
||||
"ButtonNevermind": "Laat maar",
|
||||
"ButtonNext": "Next",
|
||||
"ButtonNextChapter": "Next Chapter",
|
||||
"ButtonOk": "Ok",
|
||||
"ButtonOpenFeed": "Feed openen",
|
||||
"ButtonOpenManager": "Manager openen",
|
||||
"ButtonPause": "Pause",
|
||||
"ButtonPlay": "Afspelen",
|
||||
"ButtonPlaying": "Speelt",
|
||||
"ButtonPlaylists": "Afspeellijsten",
|
||||
"ButtonPrevious": "Previous",
|
||||
"ButtonPreviousChapter": "Previous Chapter",
|
||||
"ButtonPurgeAllCache": "Volledige cache legen",
|
||||
"ButtonPurgeItemsCache": "Onderdelen-cache legen",
|
||||
"ButtonPurgeMediaProgress": "Mediavoortgang legen",
|
||||
@@ -54,6 +61,7 @@
|
||||
"ButtonQueueRemoveItem": "Uit wachtrij verwijderen",
|
||||
"ButtonQuickMatch": "Snelle match",
|
||||
"ButtonRead": "Lees",
|
||||
"ButtonRefresh": "Refresh",
|
||||
"ButtonRemove": "Verwijder",
|
||||
"ButtonRemoveAll": "Alles verwijderen",
|
||||
"ButtonRemoveAllLibraryItems": "Verwijder volledige bibliotheekinhoud",
|
||||
@@ -73,6 +81,7 @@
|
||||
"ButtonSelectFolderPath": "Maplocatie selecteren",
|
||||
"ButtonSeries": "Series",
|
||||
"ButtonSetChaptersFromTracks": "Maak hoofdstukken op basis van tracks",
|
||||
"ButtonShare": "Share",
|
||||
"ButtonShiftTimes": "Tijden verschuiven",
|
||||
"ButtonShow": "Toon",
|
||||
"ButtonStartM4BEncode": "Start M4B-encoding",
|
||||
@@ -104,6 +113,7 @@
|
||||
"HeaderCollectionItems": "Collectie-objecten",
|
||||
"HeaderCover": "Cover",
|
||||
"HeaderCurrentDownloads": "Huidige downloads",
|
||||
"HeaderCustomMetadataProviders": "Custom Metadata Providers",
|
||||
"HeaderDetails": "Details",
|
||||
"HeaderDownloadQueue": "Download-wachtrij",
|
||||
"HeaderEbookFiles": "Ebook Files",
|
||||
@@ -174,6 +184,7 @@
|
||||
"HeaderUpdateDetails": "Details bijwerken",
|
||||
"HeaderUpdateLibrary": "Bibliotheek bijwerken",
|
||||
"HeaderUsers": "Gebruikers",
|
||||
"HeaderYearReview": "Year {0} in Review",
|
||||
"HeaderYourStats": "Je statistieken",
|
||||
"LabelAbridged": "Verkort",
|
||||
"LabelAccountType": "Accounttype",
|
||||
@@ -281,8 +292,11 @@
|
||||
"LabelFinished": "Voltooid",
|
||||
"LabelFolder": "Map",
|
||||
"LabelFolders": "Mappen",
|
||||
"LabelFontBold": "Bold",
|
||||
"LabelFontFamily": "Lettertypefamilie",
|
||||
"LabelFontItalic": "Italic",
|
||||
"LabelFontScale": "Lettertype schaal",
|
||||
"LabelFontStrikethrough": "Strikethrough",
|
||||
"LabelFormat": "Formaat",
|
||||
"LabelGenre": "Genre",
|
||||
"LabelGenres": "Genres",
|
||||
@@ -342,7 +356,9 @@
|
||||
"LabelMetaTags": "Meta-tags",
|
||||
"LabelMinute": "Minuut",
|
||||
"LabelMissing": "Ontbrekend",
|
||||
"LabelMissingEbook": "Has no ebook",
|
||||
"LabelMissingParts": "Ontbrekende delen",
|
||||
"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 <code>audiobookshelf://oauth</code>, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (<code>*</code>) as the sole entry permits any URI.",
|
||||
"LabelMore": "Meer",
|
||||
@@ -382,11 +398,13 @@
|
||||
"LabelPermissionsDownload": "Kan downloaden",
|
||||
"LabelPermissionsUpdate": "Kan bijwerken",
|
||||
"LabelPermissionsUpload": "Kan uploaden",
|
||||
"LabelPersonalYearReview": "Your Year in Review ({0})",
|
||||
"LabelPhotoPathURL": "Foto pad/URL",
|
||||
"LabelPlaylists": "Afspeellijsten",
|
||||
"LabelPlayMethod": "Afspeelwijze",
|
||||
"LabelPodcast": "Podcast",
|
||||
"LabelPodcasts": "Podcasts",
|
||||
"LabelPodcastSearchRegion": "Podcast zoekregio",
|
||||
"LabelPodcastType": "Podcasttype",
|
||||
"LabelPort": "Poort",
|
||||
"LabelPrefixesToIgnore": "Te negeren voorzetsels (ongeacht hoofdlettergebruik)",
|
||||
@@ -403,6 +421,7 @@
|
||||
"LabelRecentlyAdded": "Recent toegevoegd",
|
||||
"LabelRecentSeries": "Recente series",
|
||||
"LabelRecommended": "Aangeraden",
|
||||
"LabelRedo": "Redo",
|
||||
"LabelRegion": "Regio",
|
||||
"LabelReleaseDate": "Verschijningsdatum",
|
||||
"LabelRemoveCover": "Verwijder cover",
|
||||
@@ -425,6 +444,7 @@
|
||||
"LabelSeries": "Serie",
|
||||
"LabelSeriesName": "Naam serie",
|
||||
"LabelSeriesProgress": "Voortgang serie",
|
||||
"LabelServerYearReview": "Server Year in Review ({0})",
|
||||
"LabelSetEbookAsPrimary": "Stel in als primair",
|
||||
"LabelSetEbookAsSupplementary": "Stel in als supplementair",
|
||||
"LabelSettingsAudiobooksOnly": "Alleen audiobooks",
|
||||
@@ -446,6 +466,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.",
|
||||
"LabelSettingsParseSubtitles": "Parseer subtitel",
|
||||
"LabelSettingsParseSubtitlesHelp": "Haal subtitels uit mapnaam van audioboek.<br>Subtitel moet gescheiden zijn met \" - \"<br>b.v. \"Boektitel - Een Subtitel Hier\" heeft als subtitel \"Een Subtitel Hier\"",
|
||||
"LabelSettingsPreferMatchedMetadata": "Prefereer gematchte metadata",
|
||||
@@ -491,6 +513,10 @@
|
||||
"LabelTagsAccessibleToUser": "Tags toegankelijk voor de gebruiker",
|
||||
"LabelTagsNotAccessibleToUser": "Tags niet toegankelijk voor de gebruiker",
|
||||
"LabelTasks": "Lopende taken",
|
||||
"LabelTextEditorBulletedList": "Bulleted list",
|
||||
"LabelTextEditorLink": "Link",
|
||||
"LabelTextEditorNumberedList": "Numbered list",
|
||||
"LabelTextEditorUnlink": "Unlink",
|
||||
"LabelTheme": "Thema",
|
||||
"LabelThemeDark": "Donker",
|
||||
"LabelThemeLight": "Licht",
|
||||
@@ -516,6 +542,7 @@
|
||||
"LabelTracksSingleTrack": "Enkele track",
|
||||
"LabelType": "Type",
|
||||
"LabelUnabridged": "Onverkort",
|
||||
"LabelUndo": "Undo",
|
||||
"LabelUnknown": "Onbekend",
|
||||
"LabelUpdateCover": "Cover bijwerken",
|
||||
"LabelUpdateCoverHelp": "Sta overschrijven van bestaande covers toe voor de geselecteerde boeken wanneer een match is gevonden",
|
||||
@@ -536,6 +563,8 @@
|
||||
"LabelViewQueue": "Bekijk afspeelwachtrij",
|
||||
"LabelVolume": "Volume",
|
||||
"LabelWeekdaysToRun": "Weekdagen om te draaien",
|
||||
"LabelYearReviewHide": "Hide Year in Review",
|
||||
"LabelYearReviewShow": "See Year in Review",
|
||||
"LabelYourAudiobookDuration": "Je audioboekduur",
|
||||
"LabelYourBookmarks": "Je boekwijzers",
|
||||
"LabelYourPlaylists": "Je afspeellijsten",
|
||||
@@ -668,7 +697,6 @@
|
||||
"NoteChangeRootPassword": "Root-gebruiker is de enige gebruiker die een leeg wachtwoord kan hebben",
|
||||
"NoteChapterEditorTimes": "Opmerking: Starttijd van het eerste hoofdstuk moet op 0:00 blijven en de starttijd van het laatste hoofdstuk mag niet de duur van het audioboek overschrijden.",
|
||||
"NoteFolderPicker": "Opmerking: Reeds gemapte mappen worden niet getoond",
|
||||
"NoteFolderPickerDebian": "Opmerking: Mappenkiezer voor de debian installatie is niet volledig geimplementeerd. Je moet het pad naar je map zelf invoeren.",
|
||||
"NoteRSSFeedPodcastAppsHttps": "Waarschuwing: De meeste podcast-apps zullen eisen dat de RSS-feed URL HTTPS gebruikt",
|
||||
"NoteRSSFeedPodcastAppsPubDate": "Waarschuwing: 1 of meer van je afleveringen hebben geen Pub Datum. Sommige podcast-apps vereisen dit.",
|
||||
"NoteUploaderFoldersWithMediaFiles": "Mappen met mediabestanden zullen worden behandeld als aparte bibliotheekonderdelen.",
|
||||
|
||||
@@ -32,6 +32,8 @@
|
||||
"ButtonHide": "Gjøm",
|
||||
"ButtonHome": "Hjem",
|
||||
"ButtonIssues": "Problemer",
|
||||
"ButtonJumpBackward": "Jump Backward",
|
||||
"ButtonJumpForward": "Jump Forward",
|
||||
"ButtonLatest": "Siste",
|
||||
"ButtonLibrary": "Bibliotek",
|
||||
"ButtonLogout": "Logg ut",
|
||||
@@ -41,12 +43,17 @@
|
||||
"ButtonMatchAllAuthors": "Søk opp alle forfattere",
|
||||
"ButtonMatchBooks": "Søk opp bøker",
|
||||
"ButtonNevermind": "Avbryt",
|
||||
"ButtonNext": "Next",
|
||||
"ButtonNextChapter": "Next Chapter",
|
||||
"ButtonOk": "Ok",
|
||||
"ButtonOpenFeed": "Åpne Feed",
|
||||
"ButtonOpenManager": "Åpne behandler",
|
||||
"ButtonPause": "Pause",
|
||||
"ButtonPlay": "Spill av",
|
||||
"ButtonPlaying": "Spiller av",
|
||||
"ButtonPlaylists": "Spilleliste",
|
||||
"ButtonPrevious": "Previous",
|
||||
"ButtonPreviousChapter": "Previous Chapter",
|
||||
"ButtonPurgeAllCache": "Tøm alle mellomlager",
|
||||
"ButtonPurgeItemsCache": "Tøm mellomlager",
|
||||
"ButtonPurgeMediaProgress": "Slett medie fremgang",
|
||||
@@ -54,6 +61,7 @@
|
||||
"ButtonQueueRemoveItem": "Fjern fra kø",
|
||||
"ButtonQuickMatch": "Kjapt søk",
|
||||
"ButtonRead": "Les",
|
||||
"ButtonRefresh": "Refresh",
|
||||
"ButtonRemove": "Fjern",
|
||||
"ButtonRemoveAll": "Fjern alle",
|
||||
"ButtonRemoveAllLibraryItems": "Fjern alle bibliotekobjekter",
|
||||
@@ -73,6 +81,7 @@
|
||||
"ButtonSelectFolderPath": "Velg mappe",
|
||||
"ButtonSeries": "Serier",
|
||||
"ButtonSetChaptersFromTracks": "Sett kapittel fra spor",
|
||||
"ButtonShare": "Share",
|
||||
"ButtonShiftTimes": "Forskyv tider",
|
||||
"ButtonShow": "Vis",
|
||||
"ButtonStartM4BEncode": "Start M4B Koding",
|
||||
@@ -104,6 +113,7 @@
|
||||
"HeaderCollectionItems": "Samlingsgjenstander",
|
||||
"HeaderCover": "Omslag",
|
||||
"HeaderCurrentDownloads": "Aktive nedlastinger",
|
||||
"HeaderCustomMetadataProviders": "Custom Metadata Providers",
|
||||
"HeaderDetails": "Detaljer",
|
||||
"HeaderDownloadQueue": "Last ned kø",
|
||||
"HeaderEbookFiles": "Ebook filer",
|
||||
@@ -174,6 +184,7 @@
|
||||
"HeaderUpdateDetails": "Oppdater detaljer",
|
||||
"HeaderUpdateLibrary": "Oppdater bibliotek",
|
||||
"HeaderUsers": "Brukere",
|
||||
"HeaderYearReview": "Year {0} in Review",
|
||||
"HeaderYourStats": "Din statistikk",
|
||||
"LabelAbridged": "Forkortet",
|
||||
"LabelAccountType": "Kontotype",
|
||||
@@ -281,8 +292,11 @@
|
||||
"LabelFinished": "Fullført",
|
||||
"LabelFolder": "Mappe",
|
||||
"LabelFolders": "Mapper",
|
||||
"LabelFontBold": "Bold",
|
||||
"LabelFontFamily": "Fontfamilie",
|
||||
"LabelFontItalic": "Italic",
|
||||
"LabelFontScale": "Font størrelse",
|
||||
"LabelFontStrikethrough": "Strikethrough",
|
||||
"LabelFormat": "Format",
|
||||
"LabelGenre": "Sjanger",
|
||||
"LabelGenres": "Sjangers",
|
||||
@@ -342,7 +356,9 @@
|
||||
"LabelMetaTags": "Meta Tags",
|
||||
"LabelMinute": "Minutt",
|
||||
"LabelMissing": "Mangler",
|
||||
"LabelMissingEbook": "Has no ebook",
|
||||
"LabelMissingParts": "Manglende deler",
|
||||
"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 <code>audiobookshelf://oauth</code>, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (<code>*</code>) as the sole entry permits any URI.",
|
||||
"LabelMore": "Mer",
|
||||
@@ -382,11 +398,13 @@
|
||||
"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",
|
||||
"LabelPodcastSearchRegion": "Podcast-søkeområde",
|
||||
"LabelPodcastType": "Podcast type",
|
||||
"LabelPort": "Port",
|
||||
"LabelPrefixesToIgnore": "Prefiks som skal ignoreres (skiller ikke mellom store og små bokstaver)",
|
||||
@@ -403,6 +421,7 @@
|
||||
"LabelRecentlyAdded": "Nylig lagt til",
|
||||
"LabelRecentSeries": "Nylige serier",
|
||||
"LabelRecommended": "Anbefalte",
|
||||
"LabelRedo": "Redo",
|
||||
"LabelRegion": "Region",
|
||||
"LabelReleaseDate": "Utgivelsesdato",
|
||||
"LabelRemoveCover": "Fjern omslag",
|
||||
@@ -425,6 +444,7 @@
|
||||
"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",
|
||||
@@ -446,6 +466,8 @@
|
||||
"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.<br>undertekster må være separert med \" - \"<br>f.eks. \"Boktittel - Undertekst her\" har Undertekst \"Undertekst her\"",
|
||||
"LabelSettingsPreferMatchedMetadata": "Foretrekk funnet metadata",
|
||||
@@ -491,6 +513,10 @@
|
||||
"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",
|
||||
@@ -516,6 +542,7 @@
|
||||
"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",
|
||||
@@ -536,6 +563,8 @@
|
||||
"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",
|
||||
@@ -668,7 +697,6 @@
|
||||
"NoteChangeRootPassword": "Root-bruker er eneste bruker som kan ha tumt passord",
|
||||
"NoteChapterEditorTimes": "Notis: Første kapittel start tid må være 0:00 og siste kapittel start tid kan ikke overskride denne lydbokens lengde.",
|
||||
"NoteFolderPicker": "Notis: allerede funnet mapper vil ikke bli vist",
|
||||
"NoteFolderPickerDebian": "Notis: Mappevelger for debian er ikke fullstendig implementert. Du burde skrive inn stien til biblioteket direkte.",
|
||||
"NoteRSSFeedPodcastAppsHttps": "Advarsel! De fleste podcast applikasjoner trenger RSS feed URL som bruker HTTPS",
|
||||
"NoteRSSFeedPodcastAppsPubDate": "Advarsel! 1 eller flere av episodene har ikke publikasjonsdato. Noen podcast applikasjoner trenger dette.",
|
||||
"NoteUploaderFoldersWithMediaFiles": "Mapper med mediefiler vil bli behandlet som separate bibliotekgjenstander.",
|
||||
|
||||
@@ -32,6 +32,8 @@
|
||||
"ButtonHide": "Ukryj",
|
||||
"ButtonHome": "Strona główna",
|
||||
"ButtonIssues": "Błędy",
|
||||
"ButtonJumpBackward": "Jump Backward",
|
||||
"ButtonJumpForward": "Jump Forward",
|
||||
"ButtonLatest": "Aktualna wersja:",
|
||||
"ButtonLibrary": "Biblioteka",
|
||||
"ButtonLogout": "Wyloguj",
|
||||
@@ -41,12 +43,17 @@
|
||||
"ButtonMatchAllAuthors": "Dopasuj wszystkich autorów",
|
||||
"ButtonMatchBooks": "Dopasuj książki",
|
||||
"ButtonNevermind": "Anuluj",
|
||||
"ButtonNext": "Next",
|
||||
"ButtonNextChapter": "Next Chapter",
|
||||
"ButtonOk": "Ok",
|
||||
"ButtonOpenFeed": "Otwórz feed",
|
||||
"ButtonOpenManager": "Otwórz menadżera",
|
||||
"ButtonPause": "Pause",
|
||||
"ButtonPlay": "Odtwarzaj",
|
||||
"ButtonPlaying": "Odtwarzane",
|
||||
"ButtonPlaylists": "Playlists",
|
||||
"ButtonPrevious": "Previous",
|
||||
"ButtonPreviousChapter": "Previous Chapter",
|
||||
"ButtonPurgeAllCache": "Wyczyść dane tymczasowe",
|
||||
"ButtonPurgeItemsCache": "Wyczyść dane tymczasowe pozycji",
|
||||
"ButtonPurgeMediaProgress": "Wyczyść postęp",
|
||||
@@ -54,6 +61,7 @@
|
||||
"ButtonQueueRemoveItem": "Usuń z kolejki",
|
||||
"ButtonQuickMatch": "Szybkie dopasowanie",
|
||||
"ButtonRead": "Czytaj",
|
||||
"ButtonRefresh": "Refresh",
|
||||
"ButtonRemove": "Usuń",
|
||||
"ButtonRemoveAll": "Usuń wszystko",
|
||||
"ButtonRemoveAllLibraryItems": "Usuń wszystkie elementy z biblioteki",
|
||||
@@ -73,6 +81,7 @@
|
||||
"ButtonSelectFolderPath": "Wybierz ścieżkę folderu",
|
||||
"ButtonSeries": "Seria",
|
||||
"ButtonSetChaptersFromTracks": "Set chapters from tracks",
|
||||
"ButtonShare": "Share",
|
||||
"ButtonShiftTimes": "Przesunięcie czasowe",
|
||||
"ButtonShow": "Pokaż",
|
||||
"ButtonStartM4BEncode": "Eksportuj jako plik M4B",
|
||||
@@ -104,6 +113,7 @@
|
||||
"HeaderCollectionItems": "Elementy kolekcji",
|
||||
"HeaderCover": "Okładka",
|
||||
"HeaderCurrentDownloads": "Current Downloads",
|
||||
"HeaderCustomMetadataProviders": "Custom Metadata Providers",
|
||||
"HeaderDetails": "Szczegóły",
|
||||
"HeaderDownloadQueue": "Download Queue",
|
||||
"HeaderEbookFiles": "Ebook Files",
|
||||
@@ -174,6 +184,7 @@
|
||||
"HeaderUpdateDetails": "Zaktualizuj szczegóły",
|
||||
"HeaderUpdateLibrary": "Zaktualizuj bibliotekę",
|
||||
"HeaderUsers": "Użytkownicy",
|
||||
"HeaderYearReview": "Year {0} in Review",
|
||||
"HeaderYourStats": "Twoje statystyki",
|
||||
"LabelAbridged": "Abridged",
|
||||
"LabelAccountType": "Typ konta",
|
||||
@@ -281,8 +292,11 @@
|
||||
"LabelFinished": "Zakończone",
|
||||
"LabelFolder": "Folder",
|
||||
"LabelFolders": "Foldery",
|
||||
"LabelFontBold": "Bold",
|
||||
"LabelFontFamily": "Rodzina czcionek",
|
||||
"LabelFontItalic": "Italic",
|
||||
"LabelFontScale": "Font scale",
|
||||
"LabelFontStrikethrough": "Strikethrough",
|
||||
"LabelFormat": "Format",
|
||||
"LabelGenre": "Gatunek",
|
||||
"LabelGenres": "Gatunki",
|
||||
@@ -342,7 +356,9 @@
|
||||
"LabelMetaTags": "Meta Tags",
|
||||
"LabelMinute": "Minuta",
|
||||
"LabelMissing": "Brakujący",
|
||||
"LabelMissingEbook": "Has no ebook",
|
||||
"LabelMissingParts": "Brakujące cześci",
|
||||
"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 <code>audiobookshelf://oauth</code>, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (<code>*</code>) as the sole entry permits any URI.",
|
||||
"LabelMore": "Więcej",
|
||||
@@ -382,11 +398,13 @@
|
||||
"LabelPermissionsDownload": "Ma możliwość pobierania",
|
||||
"LabelPermissionsUpdate": "Ma możliwość aktualizowania",
|
||||
"LabelPermissionsUpload": "Ma możliwość dodawania",
|
||||
"LabelPersonalYearReview": "Your Year in Review ({0})",
|
||||
"LabelPhotoPathURL": "Scieżka/URL do zdjęcia",
|
||||
"LabelPlaylists": "Playlists",
|
||||
"LabelPlayMethod": "Metoda odtwarzania",
|
||||
"LabelPodcast": "Podcast",
|
||||
"LabelPodcasts": "Podcasty",
|
||||
"LabelPodcastSearchRegion": "Obszar wyszukiwania podcastów",
|
||||
"LabelPodcastType": "Podcast Type",
|
||||
"LabelPort": "Port",
|
||||
"LabelPrefixesToIgnore": "Ignorowane prefiksy (wielkość liter nie ma znaczenia)",
|
||||
@@ -403,6 +421,7 @@
|
||||
"LabelRecentlyAdded": "Niedawno dodany",
|
||||
"LabelRecentSeries": "Ostatnie serie",
|
||||
"LabelRecommended": "Recommended",
|
||||
"LabelRedo": "Redo",
|
||||
"LabelRegion": "Region",
|
||||
"LabelReleaseDate": "Data wydania",
|
||||
"LabelRemoveCover": "Remove cover",
|
||||
@@ -425,6 +444,7 @@
|
||||
"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",
|
||||
@@ -446,6 +466,8 @@
|
||||
"LabelSettingsHideSingleBookSeriesHelp": "Series that have a single book will be hidden from the series page and home page shelves.",
|
||||
"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. <br>Podtytuł musi być rozdzielony za pomocą separatora \" - \"<br>Przykład: \"Book Title - A Subtitle Here\" podtytuł \"A Subtitle Here\"",
|
||||
"LabelSettingsPreferMatchedMetadata": "Preferowanie dopasowanych metadanych",
|
||||
@@ -491,6 +513,10 @@
|
||||
"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",
|
||||
@@ -516,6 +542,7 @@
|
||||
"LabelTracksSingleTrack": "Single-track",
|
||||
"LabelType": "Typ",
|
||||
"LabelUnabridged": "Unabridged",
|
||||
"LabelUndo": "Undo",
|
||||
"LabelUnknown": "Nieznany",
|
||||
"LabelUpdateCover": "Zaktalizuj odkładkę",
|
||||
"LabelUpdateCoverHelp": "Umożliwienie nadpisania istniejących okładek dla wybranych książek w przypadku znalezienia dopasowania",
|
||||
@@ -536,6 +563,8 @@
|
||||
"LabelViewQueue": "Wyświetlaj kolejkę odtwarzania",
|
||||
"LabelVolume": "Głośność",
|
||||
"LabelWeekdaysToRun": "Dni tygodnia",
|
||||
"LabelYearReviewHide": "Hide Year in Review",
|
||||
"LabelYearReviewShow": "See Year in Review",
|
||||
"LabelYourAudiobookDuration": "Czas trwania audiobooka",
|
||||
"LabelYourBookmarks": "Twoje zakładki",
|
||||
"LabelYourPlaylists": "Your Playlists",
|
||||
@@ -668,7 +697,6 @@
|
||||
"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",
|
||||
"NoteFolderPickerDebian": "Uwaga: Wybór folderu w instalcji opartej o system debian nie jest w pełni zaimplementowany. Powinieneś wprowadzić ścieżkę do swojej biblioteki bezpośrednio.",
|
||||
"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.",
|
||||
|
||||
781
client/strings/pt-br.json
Normal file
781
client/strings/pt-br.json
Normal file
@@ -0,0 +1,781 @@
|
||||
{
|
||||
"ButtonAdd": "Adicionar",
|
||||
"ButtonAddChapters": "Adicionar Capítulos",
|
||||
"ButtonAddDevice": "Adicionar Dispositivo",
|
||||
"ButtonAddLibrary": "Adicionar Biblioteca",
|
||||
"ButtonAddPodcasts": "Adicionar Podcasts",
|
||||
"ButtonAddUser": "Adicionar Usuário",
|
||||
"ButtonAddYourFirstLibrary": "Adicionar sua primeira biblioteca",
|
||||
"ButtonApply": "Aplicar",
|
||||
"ButtonApplyChapters": "Aplicar Capítulos",
|
||||
"ButtonAuthors": "Autores",
|
||||
"ButtonBrowseForFolder": "Procurar por Pasta",
|
||||
"ButtonCancel": "Cancelar",
|
||||
"ButtonCancelEncode": "Cancelar Codificação",
|
||||
"ButtonChangeRootPassword": "Alterar senha do administrador",
|
||||
"ButtonCheckAndDownloadNewEpisodes": "Verificar & Baixar Novos Episódios",
|
||||
"ButtonChooseAFolder": "Escolha uma pasta",
|
||||
"ButtonChooseFiles": "Escolha arquivos",
|
||||
"ButtonClearFilter": "Limpar Filtro",
|
||||
"ButtonCloseFeed": "Fechar Feed",
|
||||
"ButtonCollections": "Coleções",
|
||||
"ButtonConfigureScanner": "Configurar Verificador",
|
||||
"ButtonCreate": "Criar",
|
||||
"ButtonCreateBackup": "Criar Backup",
|
||||
"ButtonDelete": "Apagar",
|
||||
"ButtonDownloadQueue": "Fila de download",
|
||||
"ButtonEdit": "Editar",
|
||||
"ButtonEditChapters": "Editar Capítulos",
|
||||
"ButtonEditPodcast": "Editar Podcast",
|
||||
"ButtonForceReScan": "Forcar Nova Verificação",
|
||||
"ButtonFullPath": "Caminho Completo",
|
||||
"ButtonHide": "Ocultar",
|
||||
"ButtonHome": "Principal",
|
||||
"ButtonIssues": "Problemas",
|
||||
"ButtonJumpBackward": "Retroceder",
|
||||
"ButtonJumpForward": "Adiantar",
|
||||
"ButtonLatest": "Mais Recentes",
|
||||
"ButtonLibrary": "Biblioteca",
|
||||
"ButtonLogout": "Logout",
|
||||
"ButtonLookup": "Procurar",
|
||||
"ButtonManageTracks": "Gerenciar Faixas",
|
||||
"ButtonMapChapterTitles": "Designar Títulos de Capítulos",
|
||||
"ButtonMatchAllAuthors": "Consultar Todos os Autores",
|
||||
"ButtonMatchBooks": "Consultar Livros",
|
||||
"ButtonNevermind": "Cancelar",
|
||||
"ButtonNext": "Próximo",
|
||||
"ButtonNextChapter": "Próximo Capítulo",
|
||||
"ButtonOk": "Ok",
|
||||
"ButtonOpenFeed": "Abrir Feed",
|
||||
"ButtonOpenManager": "Abrir Gerenciador",
|
||||
"ButtonPause": "Pausar",
|
||||
"ButtonPlay": "Reproduzir",
|
||||
"ButtonPlaying": "Reproduzindo",
|
||||
"ButtonPlaylists": "Lista de Reprodução",
|
||||
"ButtonPrevious": "Anterior",
|
||||
"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",
|
||||
"ButtonRead": "Ler",
|
||||
"ButtonRefresh": "Atualizar",
|
||||
"ButtonRemove": "Remover",
|
||||
"ButtonRemoveAll": "Remover Todos",
|
||||
"ButtonRemoveAllLibraryItems": "Remover Todos os Itens da Biblioteca",
|
||||
"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",
|
||||
"ButtonSave": "Salvar",
|
||||
"ButtonSaveAndClose": "Salvar & Fechar",
|
||||
"ButtonSaveTracklist": "Salvar Lista de Faixas",
|
||||
"ButtonScan": "Verificar",
|
||||
"ButtonScanLibrary": "Verificar Biblioteca",
|
||||
"ButtonSearch": "Pesquisar",
|
||||
"ButtonSelectFolderPath": "Selecionar Caminho da Pasta",
|
||||
"ButtonSeries": "Séries",
|
||||
"ButtonSetChaptersFromTracks": "Definir Capítulos Segundo Faixas",
|
||||
"ButtonShare": "Compartilhar",
|
||||
"ButtonShiftTimes": "Deslocar tempos",
|
||||
"ButtonShow": "Exibir",
|
||||
"ButtonStartM4BEncode": "Iniciar Codificação M4B",
|
||||
"ButtonStartMetadataEmbed": "Iniciar Inclusão de Metadados",
|
||||
"ButtonSubmit": "Enviar",
|
||||
"ButtonTest": "Testar",
|
||||
"ButtonUpload": "Upload",
|
||||
"ButtonUploadBackup": "Upload de Backup",
|
||||
"ButtonUploadCover": "Upload de Capa",
|
||||
"ButtonUploadOPMLFile": "Upload Arquivo OPML",
|
||||
"ButtonUserDelete": "Apagar usuário {0}",
|
||||
"ButtonUserEdit": "Editar usuário {0}",
|
||||
"ButtonViewAll": "Ver tudo",
|
||||
"ButtonYes": "Sim",
|
||||
"ErrorUploadFetchMetadataAPI": "Erro buscando metadados",
|
||||
"ErrorUploadFetchMetadataNoResults": "Não foi possível buscar metadados - tente atualizar o título e/ou autor",
|
||||
"ErrorUploadLacksTitle": "É preciso ter um título",
|
||||
"HeaderAccount": "Conta",
|
||||
"HeaderAdvanced": "Avançado",
|
||||
"HeaderAppriseNotificationSettings": "Configuração de notificações Apprise",
|
||||
"HeaderAudiobookTools": "Ferramentas de Gerenciamento de Arquivos de Audiobooks",
|
||||
"HeaderAudioTracks": "Trilhas de áudio",
|
||||
"HeaderAuthentication": "Autenticação",
|
||||
"HeaderBackups": "Backups",
|
||||
"HeaderChangePassword": "Trocar Senha",
|
||||
"HeaderChapters": "Capítulos",
|
||||
"HeaderChooseAFolder": "Escolha uma Pasta",
|
||||
"HeaderCollection": "Coleção",
|
||||
"HeaderCollectionItems": "Itens da Coleção",
|
||||
"HeaderCover": "Capas",
|
||||
"HeaderCurrentDownloads": "Downloads em andamento",
|
||||
"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",
|
||||
"HeaderEreaderSettings": "Configurações Ereader",
|
||||
"HeaderFiles": "Arquivos",
|
||||
"HeaderFindChapters": "Localizar Capítulos",
|
||||
"HeaderIgnoredFiles": "Arquivos Ignorados",
|
||||
"HeaderItemFiles": "Arquivos de Itens",
|
||||
"HeaderItemMetadataUtils": "Utilidades para Metadados dos Itens",
|
||||
"HeaderLastListeningSession": "Última sessão",
|
||||
"HeaderLatestEpisodes": "Últimos episódios",
|
||||
"HeaderLibraries": "Bibliotecas",
|
||||
"HeaderLibraryFiles": "Arquivos da Biblioteca",
|
||||
"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",
|
||||
"HeaderMatch": "Consultar",
|
||||
"HeaderMetadataOrderOfPrecedence": "Ordem de Prioridade dos Metadados",
|
||||
"HeaderMetadataToEmbed": "Metadados a Serem Incluídos",
|
||||
"HeaderNewAccount": "Nova Conta",
|
||||
"HeaderNewLibrary": "Nova Biblioteca",
|
||||
"HeaderNotifications": "Notificações",
|
||||
"HeaderOpenIDConnectAuthentication": "Autenticação via OpenID Connect",
|
||||
"HeaderOpenRSSFeed": "Abrir Feed RSS",
|
||||
"HeaderOtherFiles": "Outros Arquivos",
|
||||
"HeaderPasswordAuthentication": "Autenticação por Senha",
|
||||
"HeaderPermissions": "Permissões",
|
||||
"HeaderPlayerQueue": "Fila do reprodutor",
|
||||
"HeaderPlaylist": "Lista de Reprodução",
|
||||
"HeaderPlaylistItems": "Itens da lista de reprodução",
|
||||
"HeaderPodcastsToAdd": "Podcasts para Adicionar",
|
||||
"HeaderPreviewCover": "Visualização da Capa",
|
||||
"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",
|
||||
"HeaderSession": "Sessão",
|
||||
"HeaderSetBackupSchedule": "Definir Programação de Backup",
|
||||
"HeaderSettings": "Configurações",
|
||||
"HeaderSettingsDisplay": "Exibição",
|
||||
"HeaderSettingsExperimental": "Funcionalidades experimentais",
|
||||
"HeaderSettingsGeneral": "Geral",
|
||||
"HeaderSettingsScanner": "Verificador",
|
||||
"HeaderSleepTimer": "Timer",
|
||||
"HeaderStatsLargestItems": "Maiores Itens",
|
||||
"HeaderStatsLongestItems": "Itens mais longos (hrs)",
|
||||
"HeaderStatsMinutesListeningChart": "Minutos Escutados (últimos 7 dias)",
|
||||
"HeaderStatsRecentSessions": "Sessões Recentes",
|
||||
"HeaderStatsTop10Authors": "Top 10 Autores",
|
||||
"HeaderStatsTop5Genres": "Top 5 Gêneros",
|
||||
"HeaderTableOfContents": "Sumário",
|
||||
"HeaderTools": "Ferramentas",
|
||||
"HeaderUpdateAccount": "Atualizar Conta",
|
||||
"HeaderUpdateAuthor": "Atualizar Autor",
|
||||
"HeaderUpdateDetails": "Atualizar Detalhes",
|
||||
"HeaderUpdateLibrary": "Atualizar Biblioteca",
|
||||
"HeaderUsers": "Usuários",
|
||||
"HeaderYearReview": "Retrospectiva de {0} ",
|
||||
"HeaderYourStats": "Suas Estatísticas",
|
||||
"LabelAbridged": "Versão Abreviada",
|
||||
"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",
|
||||
"LabelAdminUsersOnly": "Apenas usuários administradores",
|
||||
"LabelAll": "Todos",
|
||||
"LabelAllUsers": "Todos Usuários",
|
||||
"LabelAllUsersExcludingGuests": "Todos usuários exceto convidados",
|
||||
"LabelAllUsersIncludingGuests": "Todos usuários incluindo convidados",
|
||||
"LabelAlreadyInYourLibrary": "Já na sua biblioteca",
|
||||
"LabelAppend": "Acrescentar",
|
||||
"LabelAuthor": "Autor",
|
||||
"LabelAuthorFirstLast": "Autor (Nome Sobrenome)",
|
||||
"LabelAuthorLastFirst": "Autor (Sobrenome, Nome)",
|
||||
"LabelAuthors": "Autores",
|
||||
"LabelAutoDownloadEpisodes": "Download Automático de Episódios",
|
||||
"LabelAutoFetchMetadata": "Buscar Metadados Automaticamente",
|
||||
"LabelAutoFetchMetadataHelp": "Busca metadados de título, autor e série para otimizar o upload. Pode ser necessário buscas metadados adicionais após o upload.",
|
||||
"LabelAutoLaunch": "Iniciar Automaticamente",
|
||||
"LabelAutoLaunchDescription": "Redireciona para o fornecedor de autenticação automaticamente ao navegar para a tela de login (caminho para substituição manual <code>/login?autoLaunch=0</code>)",
|
||||
"LabelAutoRegister": "Registrar Automaticamente",
|
||||
"LabelAutoRegisterDescription": "Registra automaticamente novos usuários após login",
|
||||
"LabelBackToUser": "Voltar para Usuário",
|
||||
"LabelBackupLocation": "Localização do Backup",
|
||||
"LabelBackupsEnableAutomaticBackups": "Ativar backups automáticos",
|
||||
"LabelBackupsEnableAutomaticBackupsHelp": "Backups salvos em /metadata/backups",
|
||||
"LabelBackupsMaxBackupSize": "Tamanho máximo do backup (em GB)",
|
||||
"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",
|
||||
"LabelChangePassword": "Trocar Senha",
|
||||
"LabelChannels": "Canais",
|
||||
"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",
|
||||
"LabelComplete": "Concluído",
|
||||
"LabelConfirmPassword": "Confirmar Senha",
|
||||
"LabelContinueListening": "Continuar Escutando",
|
||||
"LabelContinueReading": "Continuar Lendo",
|
||||
"LabelContinueSeries": "Continuar Série",
|
||||
"LabelCover": "Capa",
|
||||
"LabelCoverImageURL": "URL da Imagem da Capa",
|
||||
"LabelCreatedAt": "Criado em",
|
||||
"LabelCronExpression": "Expressão para o Cron",
|
||||
"LabelCurrent": "Atual",
|
||||
"LabelCurrently": "Atualmente:",
|
||||
"LabelCustomCronExpression": "Expressão personalizada para o Cron:",
|
||||
"LabelDatetime": "Data e Hora",
|
||||
"LabelDeleteFromFileSystemCheckbox": "Apagar do sistema de arquivos (desmarcar para remover apenas da base de dados)",
|
||||
"LabelDescription": "Descrição",
|
||||
"LabelDeselectAll": "Desmarcar tudo",
|
||||
"LabelDevice": "Dispositivo",
|
||||
"LabelDeviceInfo": "Informação do Dispositivo",
|
||||
"LabelDeviceIsAvailableTo": "Dispositivo está disponível para...",
|
||||
"LabelDirectory": "Diretório",
|
||||
"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",
|
||||
"LabelDurationFound": "Duração comprovada:",
|
||||
"LabelEbook": "Ebook",
|
||||
"LabelEbooks": "Ebooks",
|
||||
"LabelEdit": "Editar",
|
||||
"LabelEmail": "Email",
|
||||
"LabelEmailSettingsFromAddress": "Remetente",
|
||||
"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",
|
||||
"LabelEmbeddedCover": "Capa Integrada",
|
||||
"LabelEnable": "Habilitar",
|
||||
"LabelEnd": "Fim",
|
||||
"LabelEpisode": "Episódio",
|
||||
"LabelEpisodeTitle": "Título do Episódio",
|
||||
"LabelEpisodeType": "Tipo do Episódio",
|
||||
"LabelExample": "Exemplo",
|
||||
"LabelExplicit": "Explícito",
|
||||
"LabelFeedURL": "URL do Feed",
|
||||
"LabelFetchingMetadata": "Buscando Metadados",
|
||||
"LabelFile": "Arquivo",
|
||||
"LabelFileBirthtime": "Criação do Arquivo",
|
||||
"LabelFileModified": "Modificação do Arquivo",
|
||||
"LabelFilename": "Nome do Arquivo",
|
||||
"LabelFilterByUser": "Filtrar por Usuário",
|
||||
"LabelFindEpisodes": "Localizar Episódios",
|
||||
"LabelFinished": "Concluído",
|
||||
"LabelFolder": "Pasta",
|
||||
"LabelFolders": "Pastas",
|
||||
"LabelFontBold": "Negrito",
|
||||
"LabelFontFamily": "Família de fonte",
|
||||
"LabelFontItalic": "Itálico",
|
||||
"LabelFontScale": "Escala de fonte",
|
||||
"LabelFontStrikethrough": "Tachado",
|
||||
"LabelFormat": "Formato",
|
||||
"LabelGenre": "Gênero",
|
||||
"LabelGenres": "Gêneros",
|
||||
"LabelHardDeleteFile": "Apagar definitivamente",
|
||||
"LabelHasEbook": "Tem ebook",
|
||||
"LabelHasSupplementaryEbook": "Tem ebook complementar",
|
||||
"LabelHighestPriority": "Prioridade mais alta",
|
||||
"LabelHost": "Host",
|
||||
"LabelHour": "Hora",
|
||||
"LabelIcon": "Ícone",
|
||||
"LabelImageURLFromTheWeb": "URL da imagem na internet",
|
||||
"LabelIncludeInTracklist": "Incluir na Lista de Faixas",
|
||||
"LabelIncomplete": "Incompleto",
|
||||
"LabelInProgress": "Em Andamento",
|
||||
"LabelInterval": "Intervalo",
|
||||
"LabelIntervalCustomDailyWeekly": "Personalizar diário/semanal",
|
||||
"LabelIntervalEvery12Hours": "A cada 12 horas",
|
||||
"LabelIntervalEvery15Minutes": "A cada 15 minutos",
|
||||
"LabelIntervalEvery2Hours": "A cada 2 horas",
|
||||
"LabelIntervalEvery30Minutes": "A cada 30 minutos",
|
||||
"LabelIntervalEvery6Hours": "A cada 6 horas",
|
||||
"LabelIntervalEveryDay": "Todo dia",
|
||||
"LabelIntervalEveryHour": "Toda hora",
|
||||
"LabelInvalidParts": "Partes Inválidas",
|
||||
"LabelInvert": "Inverter",
|
||||
"LabelItem": "Item",
|
||||
"LabelLanguage": "Idioma",
|
||||
"LabelLanguageDefaultServer": "Idioma Padrão do Servidor",
|
||||
"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",
|
||||
"LabelLibrariesAccessibleToUser": "Bibliotecas Acessíveis ao Usuário",
|
||||
"LabelLibrary": "Biblioteca",
|
||||
"LabelLibraryItem": "Item da Biblioteca",
|
||||
"LabelLibraryName": "Nome da Biblioteca",
|
||||
"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",
|
||||
"LabelMatchExistingUsersBy": "Consultar usuários existentes usando",
|
||||
"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",
|
||||
"LabelMinute": "Minuto",
|
||||
"LabelMissing": "Ausente",
|
||||
"LabelMissingEbook": "Ebook não existe",
|
||||
"LabelMissingParts": "Partes Ausentes",
|
||||
"LabelMissingSupplementaryEbook": "Ebook complementar não existe",
|
||||
"LabelMobileRedirectURIs": "URIs de redirecionamento móveis permitidas",
|
||||
"LabelMobileRedirectURIsDescription": "Essa é uma lista de permissionamento para URIs válidas para o redirecionamento de aplicativos móveis. A padrão é <code>audiobookshelf://oauth</code>, que pode ser removida ou acrescentada com novas URIs para integração com apps de terceiros. Usando um asterisco (<code>*</code>) como um item único dará permissão para qualquer URI.",
|
||||
"LabelMore": "Mais",
|
||||
"LabelMoreInfo": "Mais Informações",
|
||||
"LabelName": "Nome",
|
||||
"LabelNarrator": "Narrador",
|
||||
"LabelNarrators": "Narradores",
|
||||
"LabelNew": "Novo",
|
||||
"LabelNewestAuthors": "Novos Autores",
|
||||
"LabelNewestEpisodes": "Episódios mais recentes",
|
||||
"LabelNewPassword": "Nova Senha",
|
||||
"LabelNextBackupDate": "Data do próximo backup",
|
||||
"LabelNextScheduledRun": "Próxima execução programada",
|
||||
"LabelNoEpisodesSelected": "Nenhum episódio selecionado",
|
||||
"LabelNotes": "Notas",
|
||||
"LabelNotFinished": "Não concluído",
|
||||
"LabelNotificationAppriseURL": "URL(s) Apprise",
|
||||
"LabelNotificationAvailableVariables": "Variáveis disponíveis",
|
||||
"LabelNotificationBodyTemplate": "Modelo de Corpo",
|
||||
"LabelNotificationEvent": "Evento de Notificação",
|
||||
"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",
|
||||
"LabelOpenRSSFeed": "Abrir Feed RSS",
|
||||
"LabelOverwrite": "Sobrescrever",
|
||||
"LabelPassword": "Senha",
|
||||
"LabelPath": "Caminho",
|
||||
"LabelPermissionsAccessAllLibraries": "Pode Acessar Todas Bibliotecas",
|
||||
"LabelPermissionsAccessAllTags": "Pode Acessar Todas as Etiquetas",
|
||||
"LabelPermissionsAccessExplicitContent": "Pode Acessar Conteúdos Explícitos",
|
||||
"LabelPermissionsDelete": "Pode Apagar",
|
||||
"LabelPermissionsDownload": "Pode Fazer Download",
|
||||
"LabelPermissionsUpdate": "Pode Atualizar",
|
||||
"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",
|
||||
"LabelPodcastSearchRegion": "Região de busca do podcast",
|
||||
"LabelPodcastType": "Tipo de Podcast",
|
||||
"LabelPort": "Porta",
|
||||
"LabelPrefixesToIgnore": "Prefixos para Ignorar (sem distinção entre maiúsculas e minúsculas)",
|
||||
"LabelPreventIndexing": "Evitar que o seu feed seja indexado pelos diretórios de podcast do iTunes e Google",
|
||||
"LabelPrimaryEbook": "Ebook principal",
|
||||
"LabelProgress": "Progresso",
|
||||
"LabelProvider": "Fonte",
|
||||
"LabelPubDate": "Data de Publicação",
|
||||
"LabelPublisher": "Editora",
|
||||
"LabelPublishYear": "Ano de Publicação",
|
||||
"LabelRead": "Lido",
|
||||
"LabelReadAgain": "Ler novamente",
|
||||
"LabelReadEbookWithoutProgress": "Ler ebook sem armazenar progresso",
|
||||
"LabelRecentlyAdded": "Novidades",
|
||||
"LabelRecentSeries": "Séries Recentes",
|
||||
"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",
|
||||
"LabelSeason": "Temporada",
|
||||
"LabelSelectAllEpisodes": "Selecionar todos os Episódios",
|
||||
"LabelSelectEpisodesShowing": "Selecionar os {0} Episódios Visíveis",
|
||||
"LabelSelectUsers": "Selecionar usuários",
|
||||
"LabelSendEbookToDevice": "Enviar Ebook para...",
|
||||
"LabelSequence": "Sequência",
|
||||
"LabelSeries": "Série",
|
||||
"LabelSeriesName": "Nome da Série",
|
||||
"LabelSeriesProgress": "Progresso da Série",
|
||||
"LabelServerYearReview": "Retrospectiva Anual do Servidor ({0})",
|
||||
"LabelSetEbookAsPrimary": "Definir como principal",
|
||||
"LabelSetEbookAsSupplementary": "Definir como complementar",
|
||||
"LabelSettingsAudiobooksOnly": "Apenas Audiobooks",
|
||||
"LabelSettingsAudiobooksOnlyHelp": "Ao ativar essa configuração os arquivos de ebooks serão ignorados a não ser que estejam dentro de uma pasta com um audiobook. Nesse caso eles serão definidos como ebooks complementares",
|
||||
"LabelSettingsBookshelfViewHelp": "Aparência esqueomorfa com prateleiras de madeira",
|
||||
"LabelSettingsChromecastSupport": "Suporte ao Chromecast",
|
||||
"LabelSettingsDateFormat": "Formato de data",
|
||||
"LabelSettingsDisableWatcher": "Desativar Monitoramento",
|
||||
"LabelSettingsDisableWatcherForLibrary": "Desativa o monitoramento de pastas para a biblioteca",
|
||||
"LabelSettingsDisableWatcherHelp": "Desativa o acréscimo/atualização de itens quando forem detectadas mudanças no arquivo. *Requer reiniciar o servidor",
|
||||
"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",
|
||||
"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",
|
||||
"LabelSettingsFindCoversHelp": "Se o seu audiobook não tiver uma capa incluída ou uma imagem de capa na pasta, o verificador tentará localizar uma capa.<br>Atenção: Isso irá estender o tempo de análise",
|
||||
"LabelSettingsHideSingleBookSeries": "Ocultar séries com um só livro",
|
||||
"LabelSettingsHideSingleBookSeriesHelp": "Séries com um só livro serão ocultadas na página de séries e na prateleira de séries na página principal.",
|
||||
"LabelSettingsHomePageBookshelfView": "Usar visão estante na página principal",
|
||||
"LabelSettingsLibraryBookshelfView": "Usar visão estante na página da biblioteca",
|
||||
"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": "Analisar subtítulos",
|
||||
"LabelSettingsParseSubtitlesHelp": "Extrair subtítulos do nome da pasta do audiobook.<br>Subtítulo deve estar separado por \" - \"<br>ex: \"Título do Livro - Um Subtítulo Aqui\" tem o subtítulo \"Um Subtítulo Aqui\"",
|
||||
"LabelSettingsPreferMatchedMetadata": "Preferir metadados consultados",
|
||||
"LabelSettingsPreferMatchedMetadataHelp": "Dados consultados serão priorizados sobre os detalhes do item quando usada a Consulta Rápida. Por padrão, Consulta Rápida só preencherá os detalhes ausentes.",
|
||||
"LabelSettingsSkipMatchingBooksWithASIN": "Pular consulta de livros que já têm um ASIN",
|
||||
"LabelSettingsSkipMatchingBooksWithISBN": "Pular consulta de livros que já têm um ISBN",
|
||||
"LabelSettingsSortingIgnorePrefixes": "Ignorar prefixos ao ordenar",
|
||||
"LabelSettingsSortingIgnorePrefixesHelp": "ex: o prefixo \"o\" do título \"O Título do Livro\" seria ordenado como \"Título do Livro, O\"",
|
||||
"LabelSettingsSquareBookCovers": "Usar capas de livro quadradas",
|
||||
"LabelSettingsSquareBookCoversHelp": "Preferir capas quadradas ao invés das capas 1.6:1 padrão",
|
||||
"LabelSettingsStoreCoversWithItem": "Armazenar capas com o item",
|
||||
"LabelSettingsStoreCoversWithItemHelp": "Por padrão as capas são armazenadas em /metadata/items. Ao ativar essa configuração as capas serão armazenadas na pasta do item na sua biblioteca. Apenas um arquivo chamado \"cover\" será mantido",
|
||||
"LabelSettingsStoreMetadataWithItem": "Armazenar metadados com o item",
|
||||
"LabelSettingsStoreMetadataWithItemHelp": "Por padrão os arquivos de metadados são armazenados em /metadata/items. Ao ativar essa configuração os arquivos de metadados serão armazenadas nas pastas dos itens na sua biblioteca",
|
||||
"LabelSettingsTimeFormat": "Formato da Tempo",
|
||||
"LabelShowAll": "Exibir Todos",
|
||||
"LabelSize": "Tamanho",
|
||||
"LabelSleepTimer": "Timer",
|
||||
"LabelSlug": "Slug",
|
||||
"LabelStart": "Iniciar",
|
||||
"LabelStarted": "Iniciado",
|
||||
"LabelStartedAt": "Iniciado Em",
|
||||
"LabelStartTime": "Horário do Início",
|
||||
"LabelStatsAudioTracks": "Trilhas de Áudio",
|
||||
"LabelStatsAuthors": "Autores",
|
||||
"LabelStatsBestDay": "Melhor Dia",
|
||||
"LabelStatsDailyAverage": "Média Diária",
|
||||
"LabelStatsDays": "Dias",
|
||||
"LabelStatsDaysListened": "Dias Escutando",
|
||||
"LabelStatsHours": "Horas",
|
||||
"LabelStatsInARow": "seguidos",
|
||||
"LabelStatsItemsFinished": "itens Concluídos",
|
||||
"LabelStatsItemsInLibrary": "itens na biblioteca",
|
||||
"LabelStatsMinutes": "minutos",
|
||||
"LabelStatsMinutesListening": "Minutos Escutando",
|
||||
"LabelStatsOverallDays": "Total de Dias",
|
||||
"LabelStatsOverallHours": "Total de Horas",
|
||||
"LabelStatsWeekListening": "Tempo escutando na semana",
|
||||
"LabelSubtitle": "Subtítulo",
|
||||
"LabelSupportedFileTypes": "Tipos de arquivos suportados",
|
||||
"LabelTag": "Etiqueta",
|
||||
"LabelTags": "Etiquetas",
|
||||
"LabelTagsAccessibleToUser": "Etiquetas Acessíveis ao Usuário",
|
||||
"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",
|
||||
"LabelThemeDark": "Escuro",
|
||||
"LabelThemeLight": "Claro",
|
||||
"LabelTimeBase": "Base de tempo",
|
||||
"LabelTimeListened": "Tempo de escuta",
|
||||
"LabelTimeListenedToday": "Tempo de escuta hoje",
|
||||
"LabelTimeRemaining": "{0} restantes",
|
||||
"LabelTimeToShift": "Deslocamento de tempo em segundos",
|
||||
"LabelTitle": "Título",
|
||||
"LabelToolsEmbedMetadata": "Incluir Metadados",
|
||||
"LabelToolsEmbedMetadataDescription": "Incluir metadados no arquivo de áudio, com imagem da capa e capítulos.",
|
||||
"LabelToolsMakeM4b": "Gerar audiobook no formato M4B",
|
||||
"LabelToolsMakeM4bDescription": "Gerar um arquivo de audiobook no formato .M4B com metadados, imagem da capa e capítulos.",
|
||||
"LabelToolsSplitM4b": "Dividir um M4B em MP3s",
|
||||
"LabelToolsSplitM4bDescription": "Criar arquivos MP3s a partir da divisão de um M4B em capítulos, com metadados e imagem de capa.",
|
||||
"LabelTotalDuration": "Duração Total",
|
||||
"LabelTotalTimeListened": "Tempo Total Escutado",
|
||||
"LabelTrackFromFilename": "Trilha a partir do nome do arquivo",
|
||||
"LabelTrackFromMetadata": "Trilha a partir dos Metadados",
|
||||
"LabelTracks": "Trilhas",
|
||||
"LabelTracksMultiTrack": "Várias trilhas",
|
||||
"LabelTracksNone": "Sem trilha",
|
||||
"LabelTracksSingleTrack": "Trilha única",
|
||||
"LabelType": "Tipo",
|
||||
"LabelUnabridged": "Não Abreviada",
|
||||
"LabelUndo": "Undo",
|
||||
"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",
|
||||
"LabelUploaderDragAndDrop": "Arraste e solte arquivos ou pastas",
|
||||
"LabelUploaderDropFiles": "Solte os arquivos",
|
||||
"LabelUploaderItemFetchMetadataHelp": "Busca título, autor e série automaticamente",
|
||||
"LabelUseChapterTrack": "Usar a trilha do capítulo",
|
||||
"LabelUseFullTrack": "Usar a trilha toda",
|
||||
"LabelUser": "Usuário",
|
||||
"LabelUsername": "Nome do usuário",
|
||||
"LabelValue": "Valor",
|
||||
"LabelVersion": "Versão",
|
||||
"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",
|
||||
"LabelYourAudiobookDuration": "Duração do seu audiobook",
|
||||
"LabelYourBookmarks": "Seus Marcadores",
|
||||
"LabelYourPlaylists": "Suas Listas de Reprodução",
|
||||
"LabelYourProgress": "Seu Progresso",
|
||||
"MessageAddToPlayerQueue": "Adicionar à lista do reprodutor",
|
||||
"MessageAppriseDescription": "Para utilizar essa funcionalidade é preciso ter uma instância da <a href=\"https://github.com/caronc/apprise-api\" target=\"_blank\">API do Apprise</a> em execução ou uma api que possa tratar esses mesmos chamados. <br />A URL da API do Apprise deve conter o caminho completo da URL para enviar as notificações. Ex: se a sua instância da API estiver em <code>http://192.168.1.1:8337</code> você deve utilizar <code>http://192.168.1.1:8337/notify</code>.",
|
||||
"MessageBackupsDescription": "Backups incluem usuários, progresso dos usuários, detalhes dos itens da biblioteca, configurações do servidor e imagens armazenadas em <code>/metadata/items</code> & <code>/metadata/authors</code>. Backups <strong>não</strong> 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",
|
||||
"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",
|
||||
"MessageChapterErrorStartGteDuration": "Tempo de início não é válido pois precisa ser menor do que a duração do audioboook",
|
||||
"MessageChapterErrorStartLtPrev": "Tempo de início não é válido pois precisa ser igual ou maior que o tempo de início do capítulo anterior",
|
||||
"MessageChapterStartIsAfter": "Início do capítulo está além do final do seu audiobook",
|
||||
"MessageCheckingCron": "Verificando o cron...",
|
||||
"MessageConfirmCloseFeed": "Tem certeza de que deseja fechar esse feed?",
|
||||
"MessageConfirmDeleteBackup": "Tem certeza de que deseja apagar o backup {0}?",
|
||||
"MessageConfirmDeleteFile": "Essa ação apagará o arquivo do seu sistema de arquivos. Tem certeza?",
|
||||
"MessageConfirmDeleteLibrary": "Tem certeza de que deseja apagar a biblioteca \"{0}\" definitivamente?",
|
||||
"MessageConfirmDeleteLibraryItem": "Essa ação apagará o item da biblioteca do banco de dados e do seu sistema de arquivos. Tem certeza?",
|
||||
"MessageConfirmDeleteLibraryItems": "Essa ação apagará {0} itens da biblioteca do banco de dados e do seu sistema de arquivos. Tem certeza?",
|
||||
"MessageConfirmDeleteSession": "Tem certeza de que deseja apagar essa sessão?",
|
||||
"MessageConfirmForceReScan": "Tem certeza de que deseja forçar a nova verificação?",
|
||||
"MessageConfirmMarkAllEpisodesFinished": "Tem certeza de que deseja marcar todos os episódios como concluídos?",
|
||||
"MessageConfirmMarkAllEpisodesNotFinished": "Tem certeza de que deseja marcar todos os episódios como não concluídos?",
|
||||
"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?",
|
||||
"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. <br><br>Quer continuar?",
|
||||
"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}\"?",
|
||||
"MessageConfirmRemoveEpisode": "Tem certeza de que deseja remover o episódio \"{0}\"?",
|
||||
"MessageConfirmRemoveEpisodes": "Tem certeza de que deseja remover os {0} episódios?",
|
||||
"MessageConfirmRemoveListeningSessions": "Tem certeza de que deseja remover as {0} sessões de escuta?",
|
||||
"MessageConfirmRemoveNarrator": "Tem certeza de que deseja remover o narrador \"{0}\"?",
|
||||
"MessageConfirmRemovePlaylist": "Tem certeza de que deseja remover a sua lista de reprodução \"{0}\"?",
|
||||
"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?",
|
||||
"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",
|
||||
"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.",
|
||||
"MessageImportantNotice": "Aviso Importante!",
|
||||
"MessageInsertChapterBelow": "Inserir capítulo abaixo",
|
||||
"MessageItemsSelected": "{0} Itens Selecionados",
|
||||
"MessageItemsUpdated": "{0} Itens Atualizados",
|
||||
"MessageJoinUsOn": "Junte-se a nós",
|
||||
"MessageListeningSessionsInTheLastYear": "{0} sessões de escuta no ano anterior",
|
||||
"MessageLoading": "Carregando...",
|
||||
"MessageLoadingFolders": "Carregando pastas...",
|
||||
"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",
|
||||
"MessageMarkAllEpisodesFinished": "Marcar todos os episódios como concluídos",
|
||||
"MessageMarkAllEpisodesNotFinished": "Marcar todos os episódios como não concluídos",
|
||||
"MessageMarkAsFinished": "Marcar como Concluído",
|
||||
"MessageMarkAsNotFinished": "Marcar como Não Concluído",
|
||||
"MessageMatchBooksDescription": "tentará consultar os livros da biblioteca no fornecedor de busca selecionado e preencher os detalhes ausentes e a capa. Não sobrescreve os detalhes.",
|
||||
"MessageNoAudioTracks": "Sem trilhas de áudio",
|
||||
"MessageNoAuthors": "Sem Autores",
|
||||
"MessageNoBackups": "Sem Backups",
|
||||
"MessageNoBookmarks": "Sem Marcadores",
|
||||
"MessageNoChapters": "Sem Capítulos",
|
||||
"MessageNoCollections": "Sem Coleções",
|
||||
"MessageNoCoversFound": "Nenhuma Capa Encontrada",
|
||||
"MessageNoDescription": "Sem Descrições",
|
||||
"MessageNoDownloadsInProgress": "Não existem downloads em andamento",
|
||||
"MessageNoDownloadsQueued": "Não existem itens na fila de download",
|
||||
"MessageNoEpisodeMatchesFound": "Não existem episódios correspondentes",
|
||||
"MessageNoEpisodes": "Sem Episódios",
|
||||
"MessageNoFoldersAvailable": "Nenhuma Pasta Disponível",
|
||||
"MessageNoGenres": "Sem Gêneros",
|
||||
"MessageNoIssues": "Sem Problemas",
|
||||
"MessageNoItems": "Sem Itens",
|
||||
"MessageNoItemsFound": "Nenhum item encontrado",
|
||||
"MessageNoListeningSessions": "Sem Sessões de Escuta",
|
||||
"MessageNoLogs": "Sem Logs",
|
||||
"MessageNoMediaProgress": "Sem Progresso de Mídia",
|
||||
"MessageNoNotifications": "Sem Notificações",
|
||||
"MessageNoPodcastsFound": "Nenhum podcast encontrado",
|
||||
"MessageNoResults": "Sem resultados",
|
||||
"MessageNoSearchResultsFor": "Sem resultados para \"{0}\"",
|
||||
"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",
|
||||
"MessageOr": "ou",
|
||||
"MessagePauseChapter": "Pausar reprodução do capítulo",
|
||||
"MessagePlayChapter": "Escutar o início do capítulo",
|
||||
"MessagePlaylistCreateFromCollection": "Criar uma lista de reprodução a partir da coleção",
|
||||
"MessagePodcastHasNoRSSFeedForMatching": "Podcast não tem uma URL do feed RSS para ser usada na consulta",
|
||||
"MessageQuickMatchDescription": "Preenche detalhes vazios do item & capa com o primeiro resultado de '{0}'. Não sobrescreve detalhes a não ser que a configuração 'Preferir metadados consultados' do servidor esteja ativa.",
|
||||
"MessageRemoveChapter": "Remover capítulo",
|
||||
"MessageRemoveEpisodes": "Remover {0} episódio(s)",
|
||||
"MessageRemoveFromPlayerQueue": "Remover da lista do reprodutor",
|
||||
"MessageRemoveUserWarning": "Tem certeza de que deseja apagar definitivamente o usuário \"{0}\"?",
|
||||
"MessageReportBugsAndContribute": "Reporte bugs, peça funcionalidades e contribua em",
|
||||
"MessageResetChaptersConfirm": "Tem certeza de que deseja resetar os capítulos e desfazer as alterações realizadas?",
|
||||
"MessageRestoreBackupConfirm": "Tem certeza de que deseja restaurar o backup criado em",
|
||||
"MessageRestoreBackupWarning": "Restaurar um backup sobrescreverá totalmente o banco de dados localizado em /config e as imagens de capa em /metadata/items & /metadata/authors.<br /><br />Backups não alteram quaisquer arquivos nas pastas da sua biblioteca. Se a configuração do servidor de armazenar a arte da capa e os metadados nas pastas da sua biblioteca estiver ativa, esses itens não estão no backup e não serão sobrescritos.<br /><br />Todos os clientes usando o seu servidor serão atualizados automaticamente.",
|
||||
"MessageSearchResultsFor": "Resultado da busca por",
|
||||
"MessageSelected": "{0} selecionado(s)",
|
||||
"MessageServerCouldNotBeReached": "Não foi possível estabelecer conexão com o servidor",
|
||||
"MessageSetChaptersFromTracksDescription": "Definir os capítulos usando cada arquivo de áudio como um capítulo e o nome do arquivo como o título do capítulo",
|
||||
"MessageStartPlaybackAtTime": "Iniciar a reprodução de \"{0}\" em {1}?",
|
||||
"MessageThinking": "Pensando...",
|
||||
"MessageUploaderItemFailed": "Falha no upload",
|
||||
"MessageUploaderItemSuccess": "Upload realizado!",
|
||||
"MessageUploading": "Realizando o upload...",
|
||||
"MessageValidCronExpression": "Expressão do cron válida",
|
||||
"MessageWatcherIsDisabledGlobally": "Monitoramento está desativado nas configurações do servidor",
|
||||
"MessageXLibraryIsEmpty": "Biblioteca {0} está vazia!",
|
||||
"MessageYourAudiobookDurationIsLonger": "A duração do seu audiobook é maior do que a duração encontrada",
|
||||
"MessageYourAudiobookDurationIsShorter": "A duração do seu audiobook é menor do que a duração encontrada",
|
||||
"NoteChangeRootPassword": "O usuário Admiistrador é o único usuário que pode não ter uma senha",
|
||||
"NoteChapterEditorTimes": "Aviso: O tempo de início do primeiro capítulo precisa ficar em 0:00 e o tempo de início do último capítulo não pode exceder a duração deste audiobook.",
|
||||
"NoteFolderPicker": "Aviso: pastas já designadas não serão exibidas",
|
||||
"NoteRSSFeedPodcastAppsHttps": "Atenção: A maioria dos aplicativos de podcasts requer que a URL do feed RSS use HTTPS",
|
||||
"NoteRSSFeedPodcastAppsPubDate": "Atenção: Um ou mais dos seus episódios não tem uma data de publicação. Alguns aplicativos de podcasts requerem isto.",
|
||||
"NoteUploaderFoldersWithMediaFiles": "Pastas com arquivos de mídia serão tratadas como itens de biblioteca distintos.",
|
||||
"NoteUploaderOnlyAudioFiles": "Ao subir apenas arquivos de áudio, cada arquivo será tratado como um audiobook distinto.",
|
||||
"NoteUploaderUnsupportedFiles": "Arquivos não suportados serão ignorados. Ao escolher ou arrastar uma pasta, outros arquivos que não estão em uma pasta dentro do item serão ignorados.",
|
||||
"PlaceholderNewCollection": "Novo nome da coleção",
|
||||
"PlaceholderNewFolderPath": "Novo caminho para a pasta",
|
||||
"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)",
|
||||
"ToastBackupCreateFailed": "Falha ao criar backup",
|
||||
"ToastBackupCreateSuccess": "Backup criado",
|
||||
"ToastBackupDeleteFailed": "Falha ao apagar backup",
|
||||
"ToastBackupDeleteSuccess": "Backup apagado",
|
||||
"ToastBackupRestoreFailed": "Falha ao restaurar backup",
|
||||
"ToastBackupUploadFailed": "Falha no upload do backup",
|
||||
"ToastBackupUploadSuccess": "Upload do backup realizado",
|
||||
"ToastBatchUpdateFailed": "Falha na atualização em lote",
|
||||
"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",
|
||||
"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",
|
||||
"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",
|
||||
"ToastItemMarkedAsNotFinishedSuccess": "Item marcado como Não Concluído",
|
||||
"ToastLibraryCreateFailed": "Falha ao criar biblioteca",
|
||||
"ToastLibraryCreateSuccess": "Biblioteca \"{0}\" criada",
|
||||
"ToastLibraryDeleteFailed": "Falha ao apagar biblioteca",
|
||||
"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",
|
||||
"ToastSendEbookToDeviceFailed": "Falha ao enviar ebook para dispositivo",
|
||||
"ToastSendEbookToDeviceSuccess": "Ebook enviado para o dispositivo \"{0}\"",
|
||||
"ToastSeriesUpdateFailed": "Falha ao atualizar série",
|
||||
"ToastSeriesUpdateSuccess": "Série atualizada",
|
||||
"ToastSessionDeleteFailed": "Falha ao apagar sessão",
|
||||
"ToastSessionDeleteSuccess": "Sessão apagada",
|
||||
"ToastSocketConnected": "Socket conectado",
|
||||
"ToastSocketDisconnected": "Socket desconectado",
|
||||
"ToastSocketFailedToConnect": "Falha na conexão do socket",
|
||||
"ToastUserDeleteFailed": "Falha ao apagar usuário",
|
||||
"ToastUserDeleteSuccess": "Usuário apagado"
|
||||
}
|
||||
@@ -32,6 +32,8 @@
|
||||
"ButtonHide": "Скрыть",
|
||||
"ButtonHome": "Домой",
|
||||
"ButtonIssues": "Проблемы",
|
||||
"ButtonJumpBackward": "Jump Backward",
|
||||
"ButtonJumpForward": "Jump Forward",
|
||||
"ButtonLatest": "Последнее",
|
||||
"ButtonLibrary": "Библиотека",
|
||||
"ButtonLogout": "Выход",
|
||||
@@ -41,12 +43,17 @@
|
||||
"ButtonMatchAllAuthors": "Найти всех авторов",
|
||||
"ButtonMatchBooks": "Найти книги",
|
||||
"ButtonNevermind": "Не важно",
|
||||
"ButtonNext": "Next",
|
||||
"ButtonNextChapter": "Next Chapter",
|
||||
"ButtonOk": "Ok",
|
||||
"ButtonOpenFeed": "Открыть канал",
|
||||
"ButtonOpenManager": "Открыть менеджер",
|
||||
"ButtonPause": "Pause",
|
||||
"ButtonPlay": "Слушать",
|
||||
"ButtonPlaying": "Проигрывается",
|
||||
"ButtonPlaylists": "Плейлисты",
|
||||
"ButtonPrevious": "Previous",
|
||||
"ButtonPreviousChapter": "Previous Chapter",
|
||||
"ButtonPurgeAllCache": "Очистить весь кэш",
|
||||
"ButtonPurgeItemsCache": "Очистить кэш элементов",
|
||||
"ButtonPurgeMediaProgress": "Очистить прогресс медиа",
|
||||
@@ -54,6 +61,7 @@
|
||||
"ButtonQueueRemoveItem": "Удалить из очереди",
|
||||
"ButtonQuickMatch": "Быстрый поиск",
|
||||
"ButtonRead": "Читать",
|
||||
"ButtonRefresh": "Refresh",
|
||||
"ButtonRemove": "Удалить",
|
||||
"ButtonRemoveAll": "Удалить всё",
|
||||
"ButtonRemoveAllLibraryItems": "Удалить все элементы библиотеки",
|
||||
@@ -73,6 +81,7 @@
|
||||
"ButtonSelectFolderPath": "Выберите путь папки",
|
||||
"ButtonSeries": "Серии",
|
||||
"ButtonSetChaptersFromTracks": "Установить главы из треков",
|
||||
"ButtonShare": "Share",
|
||||
"ButtonShiftTimes": "Смещение",
|
||||
"ButtonShow": "Показать",
|
||||
"ButtonStartM4BEncode": "Начать кодирование M4B",
|
||||
@@ -104,6 +113,7 @@
|
||||
"HeaderCollectionItems": "Элементы коллекции",
|
||||
"HeaderCover": "Обложка",
|
||||
"HeaderCurrentDownloads": "Текущие закачки",
|
||||
"HeaderCustomMetadataProviders": "Custom Metadata Providers",
|
||||
"HeaderDetails": "Подробности",
|
||||
"HeaderDownloadQueue": "Очередь скачивания",
|
||||
"HeaderEbookFiles": "Файлы e-книг",
|
||||
@@ -174,6 +184,7 @@
|
||||
"HeaderUpdateDetails": "Обновить детали",
|
||||
"HeaderUpdateLibrary": "Обновить библиотеку",
|
||||
"HeaderUsers": "Пользователи",
|
||||
"HeaderYearReview": "Year {0} in Review",
|
||||
"HeaderYourStats": "Ваша статистика",
|
||||
"LabelAbridged": "Сокращенное издание",
|
||||
"LabelAccountType": "Тип учетной записи",
|
||||
@@ -281,8 +292,11 @@
|
||||
"LabelFinished": "Закончен",
|
||||
"LabelFolder": "Папка",
|
||||
"LabelFolders": "Папки",
|
||||
"LabelFontBold": "Bold",
|
||||
"LabelFontFamily": "Семейство шрифтов",
|
||||
"LabelFontItalic": "Italic",
|
||||
"LabelFontScale": "Масштаб шрифта",
|
||||
"LabelFontStrikethrough": "Strikethrough",
|
||||
"LabelFormat": "Формат",
|
||||
"LabelGenre": "Жанр",
|
||||
"LabelGenres": "Жанры",
|
||||
@@ -342,7 +356,9 @@
|
||||
"LabelMetaTags": "Мета теги",
|
||||
"LabelMinute": "Минуты",
|
||||
"LabelMissing": "Потеряно",
|
||||
"LabelMissingEbook": "Has no ebook",
|
||||
"LabelMissingParts": "Потерянные части",
|
||||
"LabelMissingSupplementaryEbook": "Has no supplementary ebook",
|
||||
"LabelMobileRedirectURIs": "Разрешенные URI перенаправления с мобильных устройств",
|
||||
"LabelMobileRedirectURIsDescription": "Это белый список допустимых URI перенаправления для мобильных приложений. По умолчанию используется <code>audiobookshelf://oauth</code>, который можно удалить или дополнить дополнительными URI для интеграции со сторонними приложениями. Использование звездочки (<code>*</code>) в качестве единственной записи разрешает любой URI.",
|
||||
"LabelMore": "Еще",
|
||||
@@ -382,11 +398,13 @@
|
||||
"LabelPermissionsDownload": "Может скачивать",
|
||||
"LabelPermissionsUpdate": "Может обновлять",
|
||||
"LabelPermissionsUpload": "Может закачивать",
|
||||
"LabelPersonalYearReview": "Your Year in Review ({0})",
|
||||
"LabelPhotoPathURL": "Путь к фото/URL",
|
||||
"LabelPlaylists": "Плейлисты",
|
||||
"LabelPlayMethod": "Метод воспроизведения",
|
||||
"LabelPodcast": "Подкаст",
|
||||
"LabelPodcasts": "Подкасты",
|
||||
"LabelPodcastSearchRegion": "Регион поиска подкастов",
|
||||
"LabelPodcastType": "Тип подкаста",
|
||||
"LabelPort": "Порт",
|
||||
"LabelPrefixesToIgnore": "Игнорируемые префиксы (без учета регистра)",
|
||||
@@ -403,6 +421,7 @@
|
||||
"LabelRecentlyAdded": "Недавно добавленные",
|
||||
"LabelRecentSeries": "Последние серии",
|
||||
"LabelRecommended": "Рекомендованное",
|
||||
"LabelRedo": "Redo",
|
||||
"LabelRegion": "Регион",
|
||||
"LabelReleaseDate": "Дата выхода",
|
||||
"LabelRemoveCover": "Удалить обложку",
|
||||
@@ -425,6 +444,7 @@
|
||||
"LabelSeries": "Серия",
|
||||
"LabelSeriesName": "Имя серии",
|
||||
"LabelSeriesProgress": "Прогресс серии",
|
||||
"LabelServerYearReview": "Server Year in Review ({0})",
|
||||
"LabelSetEbookAsPrimary": "Установить как основную",
|
||||
"LabelSetEbookAsSupplementary": "Установить как дополнительную",
|
||||
"LabelSettingsAudiobooksOnly": "Только аудиокниги",
|
||||
@@ -446,6 +466,8 @@
|
||||
"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.",
|
||||
"LabelSettingsParseSubtitles": "Разбор подзаголовков",
|
||||
"LabelSettingsParseSubtitlesHelp": "Извлечение подзаголовков из имен папок аудиокниг.<br>Подзаголовок должны быть отделен \" - \"<br>например \"Название Книги - Тут Подзаголовок\" подзаголовок будет \"Тут Подзаголовок\"",
|
||||
"LabelSettingsPreferMatchedMetadata": "Предпочитать метаданные поиска",
|
||||
@@ -491,6 +513,10 @@
|
||||
"LabelTagsAccessibleToUser": "Теги доступные для пользователя",
|
||||
"LabelTagsNotAccessibleToUser": "Теги не доступные для пользователя",
|
||||
"LabelTasks": "Запущенные задачи",
|
||||
"LabelTextEditorBulletedList": "Bulleted list",
|
||||
"LabelTextEditorLink": "Link",
|
||||
"LabelTextEditorNumberedList": "Numbered list",
|
||||
"LabelTextEditorUnlink": "Unlink",
|
||||
"LabelTheme": "Тема",
|
||||
"LabelThemeDark": "Темная",
|
||||
"LabelThemeLight": "Светлая",
|
||||
@@ -516,6 +542,7 @@
|
||||
"LabelTracksSingleTrack": "Один трек",
|
||||
"LabelType": "Тип",
|
||||
"LabelUnabridged": "Полное издание",
|
||||
"LabelUndo": "Undo",
|
||||
"LabelUnknown": "Неизвестно",
|
||||
"LabelUpdateCover": "Обновить обложку",
|
||||
"LabelUpdateCoverHelp": "Позволяет перезаписывать существующие обложки для выбранных книг если будут найдены",
|
||||
@@ -536,6 +563,8 @@
|
||||
"LabelViewQueue": "Очередь воспроизведения",
|
||||
"LabelVolume": "Громкость",
|
||||
"LabelWeekdaysToRun": "Дни недели для запуска",
|
||||
"LabelYearReviewHide": "Hide Year in Review",
|
||||
"LabelYearReviewShow": "See Year in Review",
|
||||
"LabelYourAudiobookDuration": "Продолжительность Вашей книги",
|
||||
"LabelYourBookmarks": "Ваши закладки",
|
||||
"LabelYourPlaylists": "Ваши плейлисты",
|
||||
@@ -668,7 +697,6 @@
|
||||
"NoteChangeRootPassword": "Пользователь root — единственный пользователь, который может иметь пустой пароль",
|
||||
"NoteChapterEditorTimes": "Примечание: Время начала первой главы должно оставаться в 0:00, а время начала последней главы не может превышать продолжительность этой аудиокниги.",
|
||||
"NoteFolderPicker": "Примечание: папки, уже сопоставленные, не будут отображаться",
|
||||
"NoteFolderPickerDebian": "Примечание: Выбор папок debian не реализован полностью. Необходимо ввести путь к библиотеке напрямую.",
|
||||
"NoteRSSFeedPodcastAppsHttps": "Предупреждение: Большинству приложений подкастов потребуется, чтобы URL-адрес RSS-канала использовал HTTPS",
|
||||
"NoteRSSFeedPodcastAppsPubDate": "Предупреждение: 1 или более эпизодов не имеют даты публикации. Некоторые приложения для подкастов требуют этого.",
|
||||
"NoteUploaderFoldersWithMediaFiles": "Папки с медиафайлами будут обрабатываться как отдельные элементы библиотеки.",
|
||||
|
||||
@@ -32,6 +32,8 @@
|
||||
"ButtonHide": "Dölj",
|
||||
"ButtonHome": "Hem",
|
||||
"ButtonIssues": "Problem",
|
||||
"ButtonJumpBackward": "Jump Backward",
|
||||
"ButtonJumpForward": "Jump Forward",
|
||||
"ButtonLatest": "Senaste",
|
||||
"ButtonLibrary": "Bibliotek",
|
||||
"ButtonLogout": "Logga ut",
|
||||
@@ -41,12 +43,17 @@
|
||||
"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",
|
||||
"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",
|
||||
@@ -54,6 +61,7 @@
|
||||
"ButtonQueueRemoveItem": "Ta bort från kön",
|
||||
"ButtonQuickMatch": "Snabb matchning",
|
||||
"ButtonRead": "Läs",
|
||||
"ButtonRefresh": "Refresh",
|
||||
"ButtonRemove": "Ta bort",
|
||||
"ButtonRemoveAll": "Ta bort alla",
|
||||
"ButtonRemoveAllLibraryItems": "Ta bort alla biblioteksobjekt",
|
||||
@@ -73,6 +81,7 @@
|
||||
"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",
|
||||
@@ -104,6 +113,7 @@
|
||||
"HeaderCollectionItems": "Samlingselement",
|
||||
"HeaderCover": "Omslag",
|
||||
"HeaderCurrentDownloads": "Aktuella nedladdningar",
|
||||
"HeaderCustomMetadataProviders": "Custom Metadata Providers",
|
||||
"HeaderDetails": "Detaljer",
|
||||
"HeaderDownloadQueue": "Nedladdningskö",
|
||||
"HeaderEbookFiles": "E-boksfiler",
|
||||
@@ -174,6 +184,7 @@
|
||||
"HeaderUpdateDetails": "Uppdatera detaljer",
|
||||
"HeaderUpdateLibrary": "Uppdatera bibliotek",
|
||||
"HeaderUsers": "Användare",
|
||||
"HeaderYearReview": "Year {0} in Review",
|
||||
"HeaderYourStats": "Dina statistik",
|
||||
"LabelAbridged": "Förkortad",
|
||||
"LabelAccountType": "Kontotyp",
|
||||
@@ -281,8 +292,11 @@
|
||||
"LabelFinished": "Avslutad",
|
||||
"LabelFolder": "Mapp",
|
||||
"LabelFolders": "Mappar",
|
||||
"LabelFontBold": "Bold",
|
||||
"LabelFontFamily": "Teckensnittsfamilj",
|
||||
"LabelFontItalic": "Italic",
|
||||
"LabelFontScale": "Teckensnittsskala",
|
||||
"LabelFontStrikethrough": "Strikethrough",
|
||||
"LabelFormat": "Format",
|
||||
"LabelGenre": "Genre",
|
||||
"LabelGenres": "Genrer",
|
||||
@@ -342,7 +356,9 @@
|
||||
"LabelMetaTags": "Metamärken",
|
||||
"LabelMinute": "Minut",
|
||||
"LabelMissing": "Saknad",
|
||||
"LabelMissingEbook": "Has no ebook",
|
||||
"LabelMissingParts": "Saknade delar",
|
||||
"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 <code>audiobookshelf://oauth</code>, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (<code>*</code>) as the sole entry permits any URI.",
|
||||
"LabelMore": "Mer",
|
||||
@@ -382,11 +398,13 @@
|
||||
"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",
|
||||
"LabelPodcast": "Podcast",
|
||||
"LabelPodcasts": "Podcasts",
|
||||
"LabelPodcastSearchRegion": "Podcast-sökområde",
|
||||
"LabelPodcastType": "Podcasttyp",
|
||||
"LabelPort": "Port",
|
||||
"LabelPrefixesToIgnore": "Prefix att ignorera (skiftlägesokänsligt)",
|
||||
@@ -403,6 +421,7 @@
|
||||
"LabelRecentlyAdded": "Nyligen tillagd",
|
||||
"LabelRecentSeries": "Senaste serier",
|
||||
"LabelRecommended": "Rekommenderad",
|
||||
"LabelRedo": "Redo",
|
||||
"LabelRegion": "Region",
|
||||
"LabelReleaseDate": "Utgivningsdatum",
|
||||
"LabelRemoveCover": "Ta bort omslag",
|
||||
@@ -425,6 +444,7 @@
|
||||
"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",
|
||||
@@ -446,6 +466,8 @@
|
||||
"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.<br>Undertext måste vara åtskilda av \" - \"<br>t.ex. \"Boktitel - En undertitel här\" har undertiteln \"En undertitel här\"",
|
||||
"LabelSettingsPreferMatchedMetadata": "Föredra matchad metadata",
|
||||
@@ -491,6 +513,10 @@
|
||||
"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",
|
||||
@@ -516,6 +542,7 @@
|
||||
"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",
|
||||
@@ -536,6 +563,8 @@
|
||||
"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",
|
||||
@@ -668,7 +697,6 @@
|
||||
"NoteChangeRootPassword": "Rotanvändaren är den enda användaren som kan ha ett tomt lösenord",
|
||||
"NoteChapterEditorTimes": "Obs: Starttiden för första kapitlet måste förbli 0:00 och starttiden för det sista kapitlet får inte överstiga ljudbokens varaktighet.",
|
||||
"NoteFolderPicker": "Obs: Mappar som redan är kartlagda kommer inte att visas",
|
||||
"NoteFolderPickerDebian": "Obs: Mappväljaren för Debian-installationen är inte fullständigt implementerad. Du bör ange sökvägen till ditt bibliotek direkt.",
|
||||
"NoteRSSFeedPodcastAppsHttps": "Varning: De flesta podcastappar kräver att RSS-flödets URL används med HTTPS",
|
||||
"NoteRSSFeedPodcastAppsPubDate": "Varning: 1 eller flera av dina avsnitt har inte ett publiceringsdatum. Vissa podcastappar kräver detta.",
|
||||
"NoteUploaderFoldersWithMediaFiles": "Mappar med mediefiler hanteras som separata biblioteksobjekt.",
|
||||
|
||||
781
client/strings/vi-vn.json
Normal file
781
client/strings/vi-vn.json
Normal file
@@ -0,0 +1,781 @@
|
||||
{
|
||||
"ButtonAdd": "Thêm",
|
||||
"ButtonAddChapters": "Thêm Chương",
|
||||
"ButtonAddDevice": "Thêm Thiết Bị",
|
||||
"ButtonAddLibrary": "Thêm Thư Viện",
|
||||
"ButtonAddPodcasts": "Thêm Podcasts",
|
||||
"ButtonAddUser": "Thêm Người Dùng",
|
||||
"ButtonAddYourFirstLibrary": "Thêm thư viện đầu tiên của bạn",
|
||||
"ButtonApply": "Áp Dụng",
|
||||
"ButtonApplyChapters": "Áp Dụng Chương",
|
||||
"ButtonAuthors": "Tác Giả",
|
||||
"ButtonBrowseForFolder": "Duyệt Thư Mục",
|
||||
"ButtonCancel": "Hủy",
|
||||
"ButtonCancelEncode": "Hủy Mã Hóa",
|
||||
"ButtonChangeRootPassword": "Thay Đổi Mật Khẩu Root",
|
||||
"ButtonCheckAndDownloadNewEpisodes": "Kiểm Tra và Tải Xuống Các Tập Phim Mới",
|
||||
"ButtonChooseAFolder": "Chọn một thư mục",
|
||||
"ButtonChooseFiles": "Chọn tập tin",
|
||||
"ButtonClearFilter": "Xóa Bộ Lọc",
|
||||
"ButtonCloseFeed": "Đóng Feed",
|
||||
"ButtonCollections": "Bộ Sưu Tập",
|
||||
"ButtonConfigureScanner": "Cấu Hình Bộ Quét",
|
||||
"ButtonCreate": "Tạo",
|
||||
"ButtonCreateBackup": "Tạo Bản Sao Lưu",
|
||||
"ButtonDelete": "Xóa",
|
||||
"ButtonDownloadQueue": "Hàng Chờ",
|
||||
"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ủ",
|
||||
"ButtonIssues": "Vấn Đề",
|
||||
"ButtonJumpBackward": "Bước Lùi",
|
||||
"ButtonJumpForward": "Bước Tiến",
|
||||
"ButtonLatest": "Mới Nhất",
|
||||
"ButtonLibrary": "Thư Viện",
|
||||
"ButtonLogout": "Đăng Xuất",
|
||||
"ButtonLookup": "Tra Cứu",
|
||||
"ButtonManageTracks": "Quản Lý Tracks",
|
||||
"ButtonMapChapterTitles": "Ánh Xạ Tiêu Đề Chương",
|
||||
"ButtonMatchAllAuthors": "Khớp Tất Cả Tác Giả",
|
||||
"ButtonMatchBooks": "Khớp Sách",
|
||||
"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",
|
||||
"ButtonPlay": "Phát",
|
||||
"ButtonPlaying": "Đang Phát",
|
||||
"ButtonPlaylists": "Danh Sách Phát",
|
||||
"ButtonPrevious": "Trước",
|
||||
"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",
|
||||
"ButtonRead": "Đọc",
|
||||
"ButtonRefresh": "Làm Mới",
|
||||
"ButtonRemove": "Xóa",
|
||||
"ButtonRemoveAll": "Xóa Tất Cả",
|
||||
"ButtonRemoveAllLibraryItems": "Xóa Tất Cả Các Mục Thư Viện",
|
||||
"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",
|
||||
"ButtonSave": "Lưu",
|
||||
"ButtonSaveAndClose": "Lưu & Đóng",
|
||||
"ButtonSaveTracklist": "Lưu Danh Sách Track",
|
||||
"ButtonScan": "Quét",
|
||||
"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",
|
||||
"ButtonShow": "Hiện",
|
||||
"ButtonStartM4BEncode": "Bắt đầu Mã Hóa M4B",
|
||||
"ButtonStartMetadataEmbed": "Bắt đầu Nhúng Dữ Liệu",
|
||||
"ButtonSubmit": "Gửi",
|
||||
"ButtonTest": "Kiểm Tra",
|
||||
"ButtonUpload": "Tải Lên",
|
||||
"ButtonUploadBackup": "Tải Lên Bản Sao Lưu",
|
||||
"ButtonUploadCover": "Tải Lên Bìa",
|
||||
"ButtonUploadOPMLFile": "Tải Lên Tệp OPML",
|
||||
"ButtonUserDelete": "Xóa người dùng {0}",
|
||||
"ButtonUserEdit": "Chỉnh Sửa người dùng {0}",
|
||||
"ButtonViewAll": "Xem Tất Cả",
|
||||
"ButtonYes": "Có",
|
||||
"ErrorUploadFetchMetadataAPI": "Lỗi khi lấy dữ liệu metadata",
|
||||
"ErrorUploadFetchMetadataNoResults": "Không thể lấy dữ liệu metadata - hãy thử cập nhật tiêu đề và/hoặc tác giả",
|
||||
"ErrorUploadLacksTitle": "Phải có một tiêu đề",
|
||||
"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",
|
||||
"HeaderAuthentication": "Xác Thực",
|
||||
"HeaderBackups": "Bản Sao Lưu",
|
||||
"HeaderChangePassword": "Thay Đổi Mật Khẩu",
|
||||
"HeaderChapters": "Chương",
|
||||
"HeaderChooseAFolder": "Chọn Một Thư Mục",
|
||||
"HeaderCollection": "Bộ Sưu Tập",
|
||||
"HeaderCollectionItems": "Các Mục Bộ Sưu Tập",
|
||||
"HeaderCover": "Bìa",
|
||||
"HeaderCurrentDownloads": "Tải Xuống Hiện Tại",
|
||||
"HeaderCustomMetadataProviders": "Các Nhà Cung Cấp Metadata Tùy Chỉnh",
|
||||
"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",
|
||||
"HeaderEreaderSettings": "Cài Đặt Thiết Bị Đọc Sách",
|
||||
"HeaderFiles": "Tệp",
|
||||
"HeaderFindChapters": "Tìm Kiếm Chương",
|
||||
"HeaderIgnoredFiles": "Tệp Bị Bỏ Qua",
|
||||
"HeaderItemFiles": "Tệp Mục",
|
||||
"HeaderItemMetadataUtils": "Công Cụ Metadata Mục",
|
||||
"HeaderLastListeningSession": "Phiên Nghe Gần Nhất",
|
||||
"HeaderLatestEpisodes": "Tập Mới Nhất",
|
||||
"HeaderLibraries": "Thư Viện",
|
||||
"HeaderLibraryFiles": "Tệp Thư Viện",
|
||||
"HeaderLibraryStats": "Thống Kê Thư Viện",
|
||||
"HeaderListeningSessions": "Phiên Nghe",
|
||||
"HeaderListeningStats": "Thống Kê Nghe",
|
||||
"HeaderLogin": "Đăng Nhập",
|
||||
"HeaderLogs": "Nhật Ký",
|
||||
"HeaderManageGenres": "Quản Lý Thể Loại",
|
||||
"HeaderManageTags": "Quản Lý Thẻ",
|
||||
"HeaderMapDetails": "Bản Đồ Chi Tiết",
|
||||
"HeaderMatch": "Kết Hợp",
|
||||
"HeaderMetadataOrderOfPrecedence": "Thứ Tự Ưu Tiên Metadata",
|
||||
"HeaderMetadataToEmbed": "Metadata để nhúng",
|
||||
"HeaderNewAccount": "Tài Khoản Mới",
|
||||
"HeaderNewLibrary": "Thư Viện Mới",
|
||||
"HeaderNotifications": "Thông Báo",
|
||||
"HeaderOpenIDConnectAuthentication": "Xác Thực Mở ID Connect",
|
||||
"HeaderOpenRSSFeed": "Mở RSS Feed",
|
||||
"HeaderOtherFiles": "Các Tệp Khác",
|
||||
"HeaderPasswordAuthentication": "Xác Thực Mật Khẩu",
|
||||
"HeaderPermissions": "Quyền Hạn",
|
||||
"HeaderPlayerQueue": "Hàng Đợi Người Chơi",
|
||||
"HeaderPlaylist": "Danh Sách Phát",
|
||||
"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",
|
||||
"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",
|
||||
"HeaderSession": "Phiên",
|
||||
"HeaderSetBackupSchedule": "Đặt Lịch Sao Lưu",
|
||||
"HeaderSettings": "Cài Đặt",
|
||||
"HeaderSettingsDisplay": "Hiển Thị",
|
||||
"HeaderSettingsExperimental": "Tính Năng Thử Nghiệm",
|
||||
"HeaderSettingsGeneral": "Chung",
|
||||
"HeaderSettingsScanner": "Máy Quét",
|
||||
"HeaderSleepTimer": "Hẹn Giờ Tắt",
|
||||
"HeaderStatsLargestItems": "Các Mục Lớn Nhất",
|
||||
"HeaderStatsLongestItems": "Các Mục Dài Nhất (giờ)",
|
||||
"HeaderStatsMinutesListeningChart": "Thống Kê Thời Gian Nghe (7 ngày gần nhất)",
|
||||
"HeaderStatsRecentSessions": "Các Phiên Gần Đây",
|
||||
"HeaderStatsTop10Authors": "10 Tác Giả Hàng Đầu",
|
||||
"HeaderStatsTop5Genres": "5 Thể Loại Hàng Đầu",
|
||||
"HeaderTableOfContents": "Mục Lục",
|
||||
"HeaderTools": "Công Cụ",
|
||||
"HeaderUpdateAccount": "Cập Nhật Tài Khoản",
|
||||
"HeaderUpdateAuthor": "Cập Nhật Tác Giả",
|
||||
"HeaderUpdateDetails": "Cập Nhật Chi Tiết",
|
||||
"HeaderUpdateLibrary": "Cập Nhật Thư Viện",
|
||||
"HeaderUsers": "Người Dùng",
|
||||
"HeaderYearReview": "Năm {0} trong Xem Xét",
|
||||
"HeaderYourStats": "Thống Kê Của Bạn",
|
||||
"LabelAbridged": "Rút Gọn",
|
||||
"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 <code>/login?autoLaunch=0</code>)",
|
||||
"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": "Sách",
|
||||
"LabelButtonText": "Nút Văn Bản",
|
||||
"LabelChangePassword": "Đổi Mật Khẩu",
|
||||
"LabelChannels": "Kênh",
|
||||
"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",
|
||||
"LabelCollapseSeries": "Thu gọn Series",
|
||||
"LabelCollection": "Bộ Sưu Tập",
|
||||
"LabelCollections": "Các Bộ Sưu Tập",
|
||||
"LabelComplete": "Hoàn Thành",
|
||||
"LabelConfirmPassword": "Xác Nhận Mật Khẩu",
|
||||
"LabelContinueListening": "Tiếp Tục Nghe",
|
||||
"LabelContinueReading": "Tiếp Tục Đọc",
|
||||
"LabelContinueSeries": "Tiếp Tục Series",
|
||||
"LabelCover": "Bìa",
|
||||
"LabelCoverImageURL": "URL Ảnh Bìa",
|
||||
"LabelCreatedAt": "Được Tạo Lúc",
|
||||
"LabelCronExpression": "Biểu Thức Cron",
|
||||
"LabelCurrent": "Hiện tại",
|
||||
"LabelCurrently": "Hiện tại:",
|
||||
"LabelCustomCronExpression": "Biểu Thức Cron Tùy Chỉnh:",
|
||||
"LabelDatetime": "Ngày giờ",
|
||||
"LabelDeleteFromFileSystemCheckbox": "Xóa khỏi hệ thống tệp (bỏ chọn để chỉ xóa khỏi cơ sở dữ liệu)",
|
||||
"LabelDescription": "Mô Tả",
|
||||
"LabelDeselectAll": "Bỏ Chọn Tất Cả",
|
||||
"LabelDevice": "Thiết Bị",
|
||||
"LabelDeviceInfo": "Thông Tin Thiết Bị",
|
||||
"LabelDeviceIsAvailableTo": "Thiết Bị Đã Sẵn Sàng Cho...",
|
||||
"LabelDirectory": "Thư Mục",
|
||||
"LabelDiscFromFilename": "Đĩa từ Tên Tệp",
|
||||
"LabelDiscFromMetadata": "Đĩa từ Metadata",
|
||||
"LabelDiscover": "Khám Phá",
|
||||
"LabelDownload": "Tải Xuống",
|
||||
"LabelDownloadNEpisodes": "Tải Xuống {0} Tập",
|
||||
"LabelDuration": "Thời Lượng",
|
||||
"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)",
|
||||
"LabelEmailSettingsTestAddress": "Địa Chỉ Kiểm Tra",
|
||||
"LabelEmbeddedCover": "Bìa Nội",
|
||||
"LabelEnable": "Bật",
|
||||
"LabelEnd": "Kết Thúc",
|
||||
"LabelEpisode": "Tập",
|
||||
"LabelEpisodeTitle": "Tiêu Đề Tập",
|
||||
"LabelEpisodeType": "Loại Tập",
|
||||
"LabelExample": "Ví Dụ",
|
||||
"LabelExplicit": "Rõ Ràng",
|
||||
"LabelFeedURL": "URL Feed",
|
||||
"LabelFetchingMetadata": "Đang Lấy Metadata",
|
||||
"LabelFile": "Tệp",
|
||||
"LabelFileBirthtime": "Thời Gian Tạo Tệp",
|
||||
"LabelFileModified": "Sửa Đổi Tệp",
|
||||
"LabelFilename": "Tên Tệp",
|
||||
"LabelFilterByUser": "Lọc theo Người Dùng",
|
||||
"LabelFindEpisodes": "Tìm Tập",
|
||||
"LabelFinished": "Hoàn Thành",
|
||||
"LabelFolder": "Thư Mục",
|
||||
"LabelFolders": "Các Thư Mục",
|
||||
"LabelFontBold": "Đậm",
|
||||
"LabelFontFamily": "Gia đình font",
|
||||
"LabelFontItalic": "Nghiêng",
|
||||
"LabelFontScale": "Tỷ lệ font",
|
||||
"LabelFontStrikethrough": "Gạch ngang",
|
||||
"LabelFormat": "Định dạng",
|
||||
"LabelGenre": "Thể loại",
|
||||
"LabelGenres": "Các thể loại",
|
||||
"LabelHardDeleteFile": "Xóa tập tin vĩnh viễn",
|
||||
"LabelHasEbook": "Có ebook",
|
||||
"LabelHasSupplementaryEbook": "Có ebook bổ sung",
|
||||
"LabelHighestPriority": "Ưu tiên cao nhất",
|
||||
"LabelHost": "Máy chủ",
|
||||
"LabelHour": "Giờ",
|
||||
"LabelIcon": "Biểu tượng",
|
||||
"LabelImageURLFromTheWeb": "URL hình ảnh từ web",
|
||||
"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ờ",
|
||||
"LabelIntervalEvery15Minutes": "Mỗi 15 phút",
|
||||
"LabelIntervalEvery2Hours": "Mỗi 2 giờ",
|
||||
"LabelIntervalEvery30Minutes": "Mỗi 30 phút",
|
||||
"LabelIntervalEvery6Hours": "Mỗi 6 giờ",
|
||||
"LabelIntervalEveryDay": "Mỗi ngày",
|
||||
"LabelIntervalEveryHour": "Mỗi giờ",
|
||||
"LabelInvalidParts": "Phần không hợp lệ",
|
||||
"LabelInvert": "Nghịch đảo",
|
||||
"LabelItem": "Mục",
|
||||
"LabelLanguage": "Ngôn ngữ",
|
||||
"LabelLanguageDefaultServer": "Ngôn ngữ Máy chủ mặc định",
|
||||
"LabelLastBookAdded": "Sách mới nhất được thêm",
|
||||
"LabelLastBookUpdated": "Sách mới nhất được cập nhật",
|
||||
"LabelLastSeen": "Lần cuối nhìn thấy",
|
||||
"LabelLastTime": "Lần cuối",
|
||||
"LabelLastUpdate": "Cập nhật cuối cùng",
|
||||
"LabelLayout": "Bố cục",
|
||||
"LabelLayoutSinglePage": "Một trang",
|
||||
"LabelLayoutSplitPage": "Chia trang",
|
||||
"LabelLess": "Ít hơn",
|
||||
"LabelLibrariesAccessibleToUser": "Thư viện có thể truy cập cho người dùng",
|
||||
"LabelLibrary": "Thư viện",
|
||||
"LabelLibraryItem": "Mục thư viện",
|
||||
"LabelLibraryName": "Tên thư viện",
|
||||
"LabelLimit": "Giới hạn",
|
||||
"LabelLineSpacing": "Khoảng cách dòng",
|
||||
"LabelListenAgain": "Nghe lại",
|
||||
"LabelLogLevelDebug": "Gỡ lỗi",
|
||||
"LabelLogLevelInfo": "Thông tin",
|
||||
"LabelLogLevelWarn": "Cảnh báo",
|
||||
"LabelLookForNewEpisodesAfterDate": "Tìm tập mới sau ngày này",
|
||||
"LabelLowestPriority": "Ưu tiên thấp nhất",
|
||||
"LabelMatchExistingUsersBy": "Kết hợp người dùng hiện có theo",
|
||||
"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",
|
||||
"LabelMinute": "Phút",
|
||||
"LabelMissing": "Thiếu",
|
||||
"LabelMissingEbook": "Không có ebook",
|
||||
"LabelMissingParts": "Các phần thiếu",
|
||||
"LabelMissingSupplementaryEbook": "Không có ebook bổ sung",
|
||||
"LabelMobileRedirectURIs": "URI chuyển hướng di động được cho phép",
|
||||
"LabelMobileRedirectURIsDescription": "Đây là danh sách trắng các URI chuyển hướng hợp lệ cho ứng dụng di động. Mặc định là <code>audiobookshelf://oauth</code>, bạn có thể loại bỏ hoặc bổ sung thêm các URI cho tích hợp ứng dụng bên thứ ba. Sử dụng dấu hoa thị (<code>*</code>) như một mục duy nhất cho phép bất kỳ URI nào.",
|
||||
"LabelMore": "Thêm",
|
||||
"LabelMoreInfo": "Thông tin thêm",
|
||||
"LabelName": "Tên",
|
||||
"LabelNarrator": "Người kể",
|
||||
"LabelNarrators": "Các người kể",
|
||||
"LabelNew": "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",
|
||||
"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",
|
||||
"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",
|
||||
"LabelOpenRSSFeed": "Mở RSS Feed",
|
||||
"LabelOverwrite": "Ghi đè",
|
||||
"LabelPassword": "Mật khẩu",
|
||||
"LabelPath": "Đường dẫn",
|
||||
"LabelPermissionsAccessAllLibraries": "Có Thể Truy Cập Tất Cả Thư Viện",
|
||||
"LabelPermissionsAccessAllTags": "Có Thể Truy Cập Tất Cả Thẻ",
|
||||
"LabelPermissionsAccessExplicitContent": "Có Thể Truy Cập Nội Dung Rõ Ràng",
|
||||
"LabelPermissionsDelete": "Có Thể Xóa",
|
||||
"LabelPermissionsDownload": "Có Thể Tải Xuống",
|
||||
"LabelPermissionsUpdate": "Có Thể Cập Nhật",
|
||||
"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",
|
||||
"LabelPodcastSearchRegion": "Vùng tìm kiếm podcast",
|
||||
"LabelPodcastType": "Loại 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",
|
||||
"LabelPrimaryEbook": "Ebook chính",
|
||||
"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",
|
||||
"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",
|
||||
"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",
|
||||
"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",
|
||||
"LabelSendEbookToDevice": "Gửi Ebook tới...",
|
||||
"LabelSequence": "Trình tự",
|
||||
"LabelSeries": "Loạt",
|
||||
"LabelSeriesName": "Tên loạt",
|
||||
"LabelSeriesProgress": "Tiến độ loạt",
|
||||
"LabelServerYearReview": "Năm của Máy chủ trong Bài Đánh Giá ({0})",
|
||||
"LabelSetEbookAsPrimary": "Đặt làm chính",
|
||||
"LabelSetEbookAsSupplementary": "Đặt là bổ sung",
|
||||
"LabelSettingsAudiobooksOnly": "Chỉ sách nói",
|
||||
"LabelSettingsAudiobooksOnlyHelp": "Bật cài đặt này sẽ bỏ qua các tập tin ebook trừ khi chúng ở trong một thư mục sách nói, trong trường hợp đó chúng sẽ được đặt làm ebook bổ sung",
|
||||
"LabelSettingsBookshelfViewHelp": "Thiết kế giả lập với kệ gỗ",
|
||||
"LabelSettingsChromecastSupport": "Hỗ trợ Chromecast",
|
||||
"LabelSettingsDateFormat": "Định dạng Ngày",
|
||||
"LabelSettingsDisableWatcher": "Tắt Watcher",
|
||||
"LabelSettingsDisableWatcherForLibrary": "Tắt watcher thư mục cho thư viện",
|
||||
"LabelSettingsDisableWatcherHelp": "Tắ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ủ",
|
||||
"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ủ",
|
||||
"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",
|
||||
"LabelSettingsFindCoversHelp": "Nếu sách nói của bạn không có ảnh bìa nhúng hoặc ảnh bìa trong thư mục, trình quét sẽ cố gắng tìm ảnh bìa.<br>Lưu ý: Điều này sẽ kéo dài thời gian quét",
|
||||
"LabelSettingsHideSingleBookSeries": "Ẩn loạt sách đơn lẻ",
|
||||
"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.<br>Phụ đề phải được tách bằng \" - \"<br>i.e. \"Book Title - A Subtitle Here\" có phụ đề \"A Subtitle Here\"",
|
||||
"LabelSettingsPreferMatchedMetadata": "Ưu tiên siêu dữ liệu phù hợp",
|
||||
"LabelSettingsPreferMatchedMetadataHelp": "Dữ liệu phù hợp sẽ ghi đè lên chi tiết mục khi sử dụng Kết hợp Nhanh. Theo mặc định, Kết hợp Nhanh chỉ điền vào các chi tiết bị thiếu.",
|
||||
"LabelSettingsSkipMatchingBooksWithASIN": "Bỏ qua sách khớp có ASIN",
|
||||
"LabelSettingsSkipMatchingBooksWithISBN": "Bỏ qua sách khớp có ISBN",
|
||||
"LabelSettingsSortingIgnorePrefixes": "Bỏ qua tiền tố khi sắp xếp",
|
||||
"LabelSettingsSortingIgnorePrefixesHelp": "ví dụ. với tiền tố \"the\" tiêu đề sách \"The Book Title\" sẽ được sắp xếp như \"Book Title, The\"",
|
||||
"LabelSettingsSquareBookCovers": "Sử dụng ảnh bìa vuông",
|
||||
"LabelSettingsSquareBookCoversHelp": "Ưu tiên sử dụng ảnh bìa vuông hơn ảnh bìa tiêu chuẩn 1.6:1",
|
||||
"LabelSettingsStoreCoversWithItem": "Lưu trữ ảnh bìa với mục",
|
||||
"LabelSettingsStoreCoversWithItemHelp": "Theo mặc định, ảnh bìa được lưu trữ trong /metadata/items, bật cài đặt này sẽ lưu trữ ảnh bìa trong thư mục mục của thư viện bạn. Chỉ một tệp có tên là \"cover\" sẽ được giữ lại",
|
||||
"LabelSettingsStoreMetadataWithItem": "Lưu trữ siêu dữ liệu với mục",
|
||||
"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ả",
|
||||
"LabelSize": "Kích thước",
|
||||
"LabelSleepTimer": "Hẹn giờ tắt",
|
||||
"LabelSlug": "Slug",
|
||||
"LabelStart": "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",
|
||||
"LabelStatsDays": "Ngày",
|
||||
"LabelStatsDaysListened": "Ngày đã nghe",
|
||||
"LabelStatsHours": "Giờ",
|
||||
"LabelStatsInARow": "liên tiếp",
|
||||
"LabelStatsItemsFinished": "Mục đã hoàn thành",
|
||||
"LabelStatsItemsInLibrary": "Mục trong thư viện",
|
||||
"LabelStatsMinutes": "phút",
|
||||
"LabelStatsMinutesListening": "Phút Nghe",
|
||||
"LabelStatsOverallDays": "Tổng số ngày",
|
||||
"LabelStatsOverallHours": "Tổng số giờ",
|
||||
"LabelStatsWeekListening": "Tuần nghe",
|
||||
"LabelSubtitle": "Phụ đề",
|
||||
"LabelSupportedFileTypes": "Loại tệp được hỗ trợ",
|
||||
"LabelTag": "Thẻ",
|
||||
"LabelTags": "Thẻ",
|
||||
"LabelTagsAccessibleToUser": "Thẻ Có Thể Truy Cập Cho Người Dùng",
|
||||
"LabelTagsNotAccessibleToUser": "Thẻ Không Thể Truy Cập Cho Người Dùng",
|
||||
"LabelTasks": "Nhiệm vụ Đang chạy",
|
||||
"LabelTextEditorBulletedList": "Danh sách có dấu đầu dòng",
|
||||
"LabelTextEditorLink": "Liên kết",
|
||||
"LabelTextEditorNumberedList": "Danh sách đánh số",
|
||||
"LabelTextEditorUnlink": "Gỡ liên kết",
|
||||
"LabelTheme": "Chủ đề",
|
||||
"LabelThemeDark": "Tối",
|
||||
"LabelThemeLight": "Sáng",
|
||||
"LabelTimeBase": "Thời gian cơ bản",
|
||||
"LabelTimeListened": "Thời gian đã nghe",
|
||||
"LabelTimeListenedToday": "Thời gian đã nghe hôm nay",
|
||||
"LabelTimeRemaining": "{0} còn lại",
|
||||
"LabelTimeToShift": "Thời gian dời chuyển theo giây",
|
||||
"LabelTitle": "Tiêu đề",
|
||||
"LabelToolsEmbedMetadata": "Nhúng siêu dữ liệu",
|
||||
"LabelToolsEmbedMetadataDescription": "Nhúng siêu dữ liệu vào tệp âm thanh bao gồm ảnh bìa và chương.",
|
||||
"LabelToolsMakeM4b": "Tạo Tệp Audiobook M4B",
|
||||
"LabelToolsMakeM4bDescription": "Tạo tệp audiobook .M4B với siêu dữ liệu nhúng, ảnh bìa và chương.",
|
||||
"LabelToolsSplitM4b": "Chia M4B thành MP3",
|
||||
"LabelToolsSplitM4bDescription": "Tạo MP3 từ M4B được chia theo chương với siêu dữ liệu nhúng, ảnh bìa và chương.",
|
||||
"LabelTotalDuration": "Tổng thời lượng",
|
||||
"LabelTotalTimeListened": "Tổng thời gian đã nghe",
|
||||
"LabelTrackFromFilename": "Từ tên tệp",
|
||||
"LabelTrackFromMetadata": "Từ siêu dữ liệu",
|
||||
"LabelTracks": "Bài hát",
|
||||
"LabelTracksMultiTrack": "Nhiều track",
|
||||
"LabelTracksNone": "Không có track",
|
||||
"LabelTracksSingleTrack": "Một track",
|
||||
"LabelType": "Loại",
|
||||
"LabelUnabridged": "Không rút gọn",
|
||||
"LabelUndo": "Hoàn tác",
|
||||
"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",
|
||||
"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",
|
||||
"LabelUseChapterTrack": "Sử dụng track chương",
|
||||
"LabelUseFullTrack": "Sử dụng toàn bộ track",
|
||||
"LabelUser": "Người dùng",
|
||||
"LabelUsername": "Tên người dùng",
|
||||
"LabelValue": "Giá trị",
|
||||
"LabelVersion": "Phiên bản",
|
||||
"LabelViewBookmarks": "Xem các đánh dấu",
|
||||
"LabelViewChapters": "Xem các chương",
|
||||
"LabelViewQueue": "Xem hàng đợi phát",
|
||||
"LabelVolume": "Âm lượng",
|
||||
"LabelWeekdaysToRun": "Ngày trong tuần để chạy",
|
||||
"LabelYearReviewHide": "Ẩn Năm trong Bài Đánh Giá",
|
||||
"LabelYearReviewShow": "Xem Năm trong Bài Đánh Giá",
|
||||
"LabelYourAudiobookDuration": "Thời lượng sách nói của bạn",
|
||||
"LabelYourBookmarks": "Đánh dấu của bạn",
|
||||
"LabelYourPlaylists": "Danh sách phát của bạn",
|
||||
"LabelYourProgress": "Tiến trình của bạn",
|
||||
"MessageAddToPlayerQueue": "Thêm vào hàng đợi phát",
|
||||
"MessageAppriseDescription": "Để sử dụng tính năng này, bạn cần có một phiên bản của <a href=\"https://github.com/caronc/apprise-api\" target=\"_blank\">Apprise API</a> đang chạy hoặc một api sẽ xử lý các yêu cầu tương tự. <br /> Địa chỉ URL của Apprise API nên là đường dẫn URL đầy đủ để gửi thông báo, ví dụ, nếu phiên bản API của bạn được phục vụ tại <code>http://192.168.1.1:8337</code> thì bạn sẽ đặt <code>http://192.168.1.1:8337/notify</code>.",
|
||||
"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 <code>/metadata/items</code> & <code>/metadata/authors</code>. Bản sao <strong>không</strong> 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ở",
|
||||
"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",
|
||||
"MessageChapterErrorStartGteDuration": "Thời gian bắt đầu không hợp lệ phải nhỏ hơn thời lượng sách nói",
|
||||
"MessageChapterErrorStartLtPrev": "Thời gian bắt đầu không hợp lệ phải lớn hơn hoặc bằng thời gian bắt đầu của chương trước",
|
||||
"MessageChapterStartIsAfter": "Bắt đầu chương sau khi kết thúc sách nói của bạn",
|
||||
"MessageCheckingCron": "Kiểm tra cron...",
|
||||
"MessageConfirmCloseFeed": "Bạn có chắc chắn muốn đóng nguồn cung cấp này không?",
|
||||
"MessageConfirmDeleteBackup": "Bạn có chắc chắn muốn xóa bản sao lưu cho {0} không?",
|
||||
"MessageConfirmDeleteFile": "Điều này sẽ xóa tệp khỏi hệ thống tệp của bạn. Bạn có chắc chắn không?",
|
||||
"MessageConfirmDeleteLibrary": "Bạn có chắc chắn muốn xóa vĩnh viễn thư viện \"{0}\" không?",
|
||||
"MessageConfirmDeleteLibraryItem": "Điều này sẽ xóa mục thư viện khỏi cơ sở dữ liệu và hệ thống tệp của bạn. Bạn có chắc chắn không?",
|
||||
"MessageConfirmDeleteLibraryItems": "Điều này sẽ xóa {0} mục thư viện khỏi cơ sở dữ liệu và hệ thống tệp của bạn. Bạn có chắc chắn không?",
|
||||
"MessageConfirmDeleteSession": "Bạn có chắc chắn muốn xóa phiên này không?",
|
||||
"MessageConfirmForceReScan": "Bạn có chắc chắn muốn buộc quét lại không?",
|
||||
"MessageConfirmMarkAllEpisodesFinished": "Bạn có chắc chắn muốn đánh dấu tất cả các tập phim đã kết thúc không?",
|
||||
"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?",
|
||||
"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. <br><br>Bạn có muốn tiếp tục không?",
|
||||
"MessageConfirmRemoveAllChapters": "Bạn có chắc chắn muốn xóa tất cả các chương không?",
|
||||
"MessageConfirmRemoveAuthor": "Bạn có chắc chắn muốn xóa tác giả \"{0}\" không?",
|
||||
"MessageConfirmRemoveCollection": "Bạn có chắc chắn muốn xóa bộ sưu tập \"{0}\" không?",
|
||||
"MessageConfirmRemoveEpisode": "Bạn có chắc chắn muốn xóa tập phim \"{0}\" không?",
|
||||
"MessageConfirmRemoveEpisodes": "Bạn có chắc chắn muốn xóa {0} tập phim không?",
|
||||
"MessageConfirmRemoveListeningSessions": "Bạn có chắc chắn muốn xóa {0} phiên nghe không?",
|
||||
"MessageConfirmRemoveNarrator": "Bạn có chắc chắn muốn xóa người kể chuyện \"{0}\" không?",
|
||||
"MessageConfirmRemovePlaylist": "Bạn có chắc chắn muốn xóa danh sách phát của bạn \"{0}\" không?",
|
||||
"MessageConfirmRenameGenre": "Bạn có chắc chắn muốn đổi tên thể loại \"{0}\" thành \"{1}\" cho tất cả các mục không?",
|
||||
"MessageConfirmRenameGenreMergeNote": "Lưu ý: Thể loại này đã tồn tại nên chúng sẽ được hợp nhất.",
|
||||
"MessageConfirmRenameGenreWarning": "Cảnh báo! Một thể loại tương tự với kiểu chữ khác đã tồn tại \"{0}\".",
|
||||
"MessageConfirmRenameTag": "Bạn có chắc chắn muốn đổi tên tag \"{0}\" thành \"{1}\" cho tất cả các mục không?",
|
||||
"MessageConfirmRenameTagMergeNote": "Lưu ý: Thẻ này đã tồn tại nên chúng sẽ được hợp nhất.",
|
||||
"MessageConfirmRenameTagWarning": "Cảnh báo! Một thẻ tương tự với kiểu chữ khác đã tồn tại \"{0}\".",
|
||||
"MessageConfirmReScanLibraryItems": "Bạn có chắc chắn muốn quét lại {0} mục không?",
|
||||
"MessageConfirmSendEbookToDevice": "Bạn có chắc chắn muốn gửi {0} ebook \"{1}\" đến thiết bị \"{2}\" không?",
|
||||
"MessageDownloadingEpisode": "Đang tải tập phim",
|
||||
"MessageDragFilesIntoTrackOrder": "Kéo tệp vào thứ tự track đúng",
|
||||
"MessageEmbedFinished": "Nhúng Hoàn thành!",
|
||||
"MessageEpisodesQueuedForDownload": "{0} Tập(s) đã được thêm vào hàng đợi để tải xuống",
|
||||
"MessageFeedURLWillBe": "URL nguồn cấp sẽ là {0}",
|
||||
"MessageFetching": "Đang tìm...",
|
||||
"MessageForceReScanDescription": "sẽ quét lại tất cả các tệp như một quét mới. Các thẻ ID3 của tệp âm thanh, tệp OPF và tệp văn bản sẽ được quét làm mới.",
|
||||
"MessageImportantNotice": "Thông báo quan trọng!",
|
||||
"MessageInsertChapterBelow": "Chèn chương dưới đây",
|
||||
"MessageItemsSelected": "{0} Mục Đã Chọn",
|
||||
"MessageItemsUpdated": "{0} Mục Đã Cập Nhật",
|
||||
"MessageJoinUsOn": "Tham gia cùng chúng tôi trên",
|
||||
"MessageListeningSessionsInTheLastYear": "{0} phiên nghe trong năm qua",
|
||||
"MessageLoading": "Đang tải...",
|
||||
"MessageLoadingFolders": "Đang tải các thư mục...",
|
||||
"MessageM4BFailed": "M4B thất bại!",
|
||||
"MessageM4BFinished": "M4B Hoàn thành!",
|
||||
"MessageMapChapterTitles": "Ánh xạ tiêu đề chương với các chương hiện có của sách audio của bạn mà không điều chỉnh thời gian",
|
||||
"MessageMarkAllEpisodesFinished": "Đánh dấu tất cả các tập phim đã kết thúc",
|
||||
"MessageMarkAllEpisodesNotFinished": "Đánh dấu tất cả các tập phim chưa kết thúc",
|
||||
"MessageMarkAsFinished": "Đánh dấu là Đã Kết Thúc",
|
||||
"MessageMarkAsNotFinished": "Đánh dấu là Chưa Kết Thúc",
|
||||
"MessageMatchBooksDescription": "sẽ cố gắng kết hợp các sách trong thư viện với một cuốn sách từ nhà cung cấp tìm kiếm được chọn và điền vào các chi tiết trống và ảnh bìa. Không ghi đè các chi tiết.",
|
||||
"MessageNoAudioTracks": "Không có track âm thanh",
|
||||
"MessageNoAuthors": "Không có Tác giả",
|
||||
"MessageNoBackups": "Không có Bản sao lưu",
|
||||
"MessageNoBookmarks": "Không có Đánh dấu",
|
||||
"MessageNoChapters": "Không có Chương",
|
||||
"MessageNoCollections": "Không có Bộ sưu tập",
|
||||
"MessageNoCoversFound": "Không tìm thấy Ảnh bìa",
|
||||
"MessageNoDescription": "Không có mô tả",
|
||||
"MessageNoDownloadsInProgress": "Không có tải xuống đang tiến hành",
|
||||
"MessageNoDownloadsQueued": "Không có tải xuống được xếp hàng",
|
||||
"MessageNoEpisodeMatchesFound": "Không tìm thấy tập phim nào phù hợp",
|
||||
"MessageNoEpisodes": "Không có Tập phim",
|
||||
"MessageNoFoldersAvailable": "Không có Thư mục nào có sẵn",
|
||||
"MessageNoGenres": "Không có Thể loại",
|
||||
"MessageNoIssues": "Không có Vấn đề",
|
||||
"MessageNoItems": "Không có Mục",
|
||||
"MessageNoItemsFound": "Không tìm thấy mục nào",
|
||||
"MessageNoListeningSessions": "Không có Phiên Nghe",
|
||||
"MessageNoLogs": "Không có Log",
|
||||
"MessageNoMediaProgress": "Không có Tiến độ Phương tiện",
|
||||
"MessageNoNotifications": "Không có Thông báo",
|
||||
"MessageNoPodcastsFound": "Không tìm thấy podcast nào",
|
||||
"MessageNoResults": "Không có Kết quả",
|
||||
"MessageNoSearchResultsFor": "Không có kết quả tìm kiếm cho \"{0}\"",
|
||||
"MessageNoSeries": "Không có Bộ",
|
||||
"MessageNoTags": "Không có Thẻ",
|
||||
"MessageNoTasksRunning": "Không có Công việc đang chạy",
|
||||
"MessageNotYetImplemented": "Chưa được triển khai",
|
||||
"MessageNoUpdateNecessary": "Không cần cập nhật",
|
||||
"MessageNoUpdatesWereNecessary": "Không cần cập nhật",
|
||||
"MessageNoUserPlaylists": "Bạn chưa có danh sách phát",
|
||||
"MessageOr": "hoặc",
|
||||
"MessagePauseChapter": "Tạm dừng phát chương",
|
||||
"MessagePlayChapter": "Nghe từ đầu chương",
|
||||
"MessagePlaylistCreateFromCollection": "Tạo danh sách phát từ bộ sưu tập",
|
||||
"MessagePodcastHasNoRSSFeedForMatching": "Podcast không có RSS feed để sử dụng cho việc kết hợp",
|
||||
"MessageQuickMatchDescription": "Điền chi tiết mục trống và ảnh bìa với kết quả phù hợp đầu tiên từ '{0}'. Không ghi đè chi tiết trừ khi cài đặt máy chủ 'Ưu tiên dữ liệu phù hợp' được bật.",
|
||||
"MessageRemoveChapter": "Xóa chương",
|
||||
"MessageRemoveEpisodes": "Xóa {0} tập",
|
||||
"MessageRemoveFromPlayerQueue": "Xóa khỏi hàng đợi phát",
|
||||
"MessageRemoveUserWarning": "Bạn có chắc chắn muốn xóa người dùng \"{0}\" một cách vĩnh viễn không?",
|
||||
"MessageReportBugsAndContribute": "Báo cáo lỗi, yêu cầu tính năng và đóng góp tại",
|
||||
"MessageResetChaptersConfirm": "Bạn có chắc chắn muốn đặt lại các chương và hủy những thay đổi bạn đã thực hiện không?",
|
||||
"MessageRestoreBackupConfirm": "Bạn có chắc chắn muốn khôi phục bản sao lưu được tạo vào",
|
||||
"MessageRestoreBackupWarning": "Việc khôi phục bản sao lưu sẽ ghi đè lên toàn bộ cơ sở dữ liệu được đặt tại /config và ảnh bìa trong /metadata/items & /metadata/authors.<br /><br />Bản sao lưu không sửa đổi bất kỳ tệp nào trong các thư mục thư viện của bạn. Nếu bạn đã bật các cài đặt máy chủ để lưu ảnh bìa và dữ liệu phần mềm trong các thư mục thư viện của mình thì chúng sẽ không được sao lưu hoặc ghi đè.<br /><br />Tất cả các máy khách sử dụng máy chủ của bạn sẽ được làm mới tự động.",
|
||||
"MessageSearchResultsFor": "Kết quả tìm kiếm cho",
|
||||
"MessageSelected": "{0} đã được chọn",
|
||||
"MessageServerCouldNotBeReached": "Không thể kết nối đến máy chủ",
|
||||
"MessageSetChaptersFromTracksDescription": "Đặt chương sử dụng mỗi tệp âm thanh là một chương và tiêu đề chương là tên tệp âm thanh",
|
||||
"MessageStartPlaybackAtTime": "Bắt đầu phát \"{0}\" tại thời điểm {1}?",
|
||||
"MessageThinking": "Đang suy nghĩ...",
|
||||
"MessageUploaderItemFailed": "Không thể tải lên",
|
||||
"MessageUploaderItemSuccess": "Tải lên thành công!",
|
||||
"MessageUploading": "Đang tải lên...",
|
||||
"MessageValidCronExpression": "Biểu thức cron hợp lệ",
|
||||
"MessageWatcherIsDisabledGlobally": "Watcher đã bị vô hiệu hóa toàn cầu trong cài đặt máy chủ",
|
||||
"MessageXLibraryIsEmpty": "Thư viện {0} rỗng!",
|
||||
"MessageYourAudiobookDurationIsLonger": "Thời lượng sách nói của bạn dài hơn so với thời lượng tìm thấy",
|
||||
"MessageYourAudiobookDurationIsShorter": "Thời lượng sách nói của bạn ngắn hơn so với thời lượng tìm thấy",
|
||||
"NoteChangeRootPassword": "Người dùng Root là người dùng duy nhất có thể có mật khẩu trống",
|
||||
"NoteChapterEditorTimes": "Lưu ý: Thời gian bắt đầu của chương đầu tiên phải ở 0:00 và thời gian bắt đầu của chương cuối cùng không thể vượt quá thời lượng của sách nói này.",
|
||||
"NoteFolderPicker": "Lưu ý: các thư mục đã được ánh xạ trước đó sẽ không được hiển thị",
|
||||
"NoteRSSFeedPodcastAppsHttps": "Cảnh báo: Hầu hết các ứng dụng podcast sẽ yêu cầu URL của RSS feed sử dụng HTTPS",
|
||||
"NoteRSSFeedPodcastAppsPubDate": "Cảnh báo: 1 hoặc nhiều tập của bạn không có Pub Date. Một số ứng dụng podcast yêu cầu điều này.",
|
||||
"NoteUploaderFoldersWithMediaFiles": "Các thư mục có tệp phương tiện sẽ được xử lý như các mục thư viện riêng biệt.",
|
||||
"NoteUploaderOnlyAudioFiles": "Nếu chỉ tải lên các tệp âm thanh thì mỗi tệp âm thanh sẽ được xử lý như một cuốn sách nói riêng biệt.",
|
||||
"NoteUploaderUnsupportedFiles": "Các tệp không được hỗ trợ sẽ bị bỏ qua. Khi chọn hoặc thả một thư mục, các tệp khác không có trong thư mục mục sẽ bị bỏ qua.",
|
||||
"PlaceholderNewCollection": "Tên bộ sưu tập mới",
|
||||
"PlaceholderNewFolderPath": "Đường dẫn thư mục mới",
|
||||
"PlaceholderNewPlaylist": "Tên danh sách phát mới",
|
||||
"PlaceholderSearch": "Tìm kiếm..",
|
||||
"PlaceholderSearchEpisode": "Tìm kiếm tập..",
|
||||
"ToastAccountUpdateFailed": "Cập nhật tài khoản thất bại",
|
||||
"ToastAccountUpdateSuccess": "Tài khoản đã được cập nhật",
|
||||
"ToastAuthorImageRemoveFailed": "Không thể xóa ảnh tác giả",
|
||||
"ToastAuthorImageRemoveSuccess": "Ảnh tác giả đã được xóa",
|
||||
"ToastAuthorUpdateFailed": "Cập nhật tác giả thất bại",
|
||||
"ToastAuthorUpdateMerged": "Tác giả đã được hợp nhất",
|
||||
"ToastAuthorUpdateSuccess": "Cập nhật tác giả thành công",
|
||||
"ToastAuthorUpdateSuccessNoImageFound": "Cập nhật tác giả thành công (không tìm thấy ảnh)",
|
||||
"ToastBackupCreateFailed": "Tạo bản sao lưu thất bại",
|
||||
"ToastBackupCreateSuccess": "Bản sao lưu được tạo",
|
||||
"ToastBackupDeleteFailed": "Xóa bản sao lưu thất bại",
|
||||
"ToastBackupDeleteSuccess": "Bản sao lưu đã được xóa",
|
||||
"ToastBackupRestoreFailed": "Khôi phục bản sao lưu thất bại",
|
||||
"ToastBackupUploadFailed": "Tải lên bản sao lưu thất bại",
|
||||
"ToastBackupUploadSuccess": "Bản sao lưu đã được tải lên",
|
||||
"ToastBatchUpdateFailed": "Cập nhật nhóm thất bại",
|
||||
"ToastBatchUpdateSuccess": "Cập nhật nhóm thành công",
|
||||
"ToastBookmarkCreateFailed": "Tạo đánh dấu thất bại",
|
||||
"ToastBookmarkCreateSuccess": "Đã thêm đánh dấu",
|
||||
"ToastBookmarkRemoveFailed": "Xóa đánh dấu thất bại",
|
||||
"ToastBookmarkRemoveSuccess": "Đánh dấu đã được xóa",
|
||||
"ToastBookmarkUpdateFailed": "Cập nhật đánh dấu thất bại",
|
||||
"ToastBookmarkUpdateSuccess": "Đánh dấu đã được cập nhật",
|
||||
"ToastChaptersHaveErrors": "Các chương có lỗi",
|
||||
"ToastChaptersMustHaveTitles": "Các chương phải có tiêu đề",
|
||||
"ToastCollectionItemsRemoveFailed": "Xóa mục từ bộ sưu tập thất bại",
|
||||
"ToastCollectionItemsRemoveSuccess": "Mục đã được xóa khỏi bộ sưu tập",
|
||||
"ToastCollectionRemoveFailed": "Xóa bộ sưu tập thất bại",
|
||||
"ToastCollectionRemoveSuccess": "Bộ sưu tập đã được xóa",
|
||||
"ToastCollectionUpdateFailed": "Cập nhật bộ sưu tập thất bại",
|
||||
"ToastCollectionUpdateSuccess": "Bộ sưu tập đã được cập nhật",
|
||||
"ToastItemCoverUpdateFailed": "Cập nhật ảnh bìa mục thất bại",
|
||||
"ToastItemCoverUpdateSuccess": "Ảnh bìa mục đã được cập nhật",
|
||||
"ToastItemDetailsUpdateFailed": "Cập nhật chi tiết mục thất bại",
|
||||
"ToastItemDetailsUpdateSuccess": "Chi tiết mục đã được cập nhật",
|
||||
"ToastItemDetailsUpdateUnneeded": "Không cần cập nhật chi tiết mục",
|
||||
"ToastItemMarkedAsFinishedFailed": "Đánh dấu mục là Hoàn thành thất bại",
|
||||
"ToastItemMarkedAsFinishedSuccess": "Mục đã được đánh dấu là Hoàn thành",
|
||||
"ToastItemMarkedAsNotFinishedFailed": "Đánh dấu mục là Chưa hoàn thành thất bại",
|
||||
"ToastItemMarkedAsNotFinishedSuccess": "Mục đã được đánh dấu là Chưa hoàn thành",
|
||||
"ToastLibraryCreateFailed": "Tạo thư viện thất bại",
|
||||
"ToastLibraryCreateSuccess": "Thư viện \"{0}\" đã được tạo",
|
||||
"ToastLibraryDeleteFailed": "Xóa thư viện thất bại",
|
||||
"ToastLibraryDeleteSuccess": "Thư viện đã được xóa",
|
||||
"ToastLibraryScanFailedToStart": "Không thể bắt đầu quét thư viện",
|
||||
"ToastLibraryScanStarted": "Quét thư viện đã được bắt đầu",
|
||||
"ToastLibraryUpdateFailed": "Cập nhật thư viện thất bại",
|
||||
"ToastLibraryUpdateSuccess": "Thư viện \"{0}\" đã được cập nhật",
|
||||
"ToastPlaylistCreateFailed": "Tạo danh sách phát thất bại",
|
||||
"ToastPlaylistCreateSuccess": "Danh sách phát đã được tạo",
|
||||
"ToastPlaylistRemoveFailed": "Xóa danh sách phát thất bại",
|
||||
"ToastPlaylistRemoveSuccess": "Danh sách phát đã được xóa",
|
||||
"ToastPlaylistUpdateFailed": "Cập nhật danh sách phát thất bại",
|
||||
"ToastPlaylistUpdateSuccess": "Danh sách phát đã được cập nhật",
|
||||
"ToastPodcastCreateFailed": "Tạo podcast thất bại",
|
||||
"ToastPodcastCreateSuccess": "Podcast đã được tạo thành công",
|
||||
"ToastRemoveItemFromCollectionFailed": "Xóa mục khỏi bộ sưu tập thất bại",
|
||||
"ToastRemoveItemFromCollectionSuccess": "Mục đã được xóa khỏi bộ sưu tập",
|
||||
"ToastRSSFeedCloseFailed": "Đóng nguồn cấp RSS thất bại",
|
||||
"ToastRSSFeedCloseSuccess": "Nguồn cấp RSS đã được đóng",
|
||||
"ToastSendEbookToDeviceFailed": "Gửi ebook đến thiết bị thất bại",
|
||||
"ToastSendEbookToDeviceSuccess": "Ebook đã được gửi đến thiết bị \"{0}\"",
|
||||
"ToastSeriesUpdateFailed": "Cập nhật loạt truyện thất bại",
|
||||
"ToastSeriesUpdateSuccess": "Cập nhật loạt truyện thành công",
|
||||
"ToastSessionDeleteFailed": "Xóa phiên thất bại",
|
||||
"ToastSessionDeleteSuccess": "Phiên đã được xóa",
|
||||
"ToastSocketConnected": "Kết nối socket",
|
||||
"ToastSocketDisconnected": "Ngắt kết nối socket",
|
||||
"ToastSocketFailedToConnect": "Không thể kết nối socket",
|
||||
"ToastUserDeleteFailed": "Xóa người dùng thất bại",
|
||||
"ToastUserDeleteSuccess": "Người dùng đã được xóa"
|
||||
}
|
||||
@@ -32,6 +32,8 @@
|
||||
"ButtonHide": "隐藏",
|
||||
"ButtonHome": "首页",
|
||||
"ButtonIssues": "问题",
|
||||
"ButtonJumpBackward": "Jump Backward",
|
||||
"ButtonJumpForward": "Jump Forward",
|
||||
"ButtonLatest": "最新",
|
||||
"ButtonLibrary": "媒体库",
|
||||
"ButtonLogout": "注销",
|
||||
@@ -41,12 +43,17 @@
|
||||
"ButtonMatchAllAuthors": "匹配所有作者",
|
||||
"ButtonMatchBooks": "匹配图书",
|
||||
"ButtonNevermind": "没有关系",
|
||||
"ButtonNext": "Next",
|
||||
"ButtonNextChapter": "Next Chapter",
|
||||
"ButtonOk": "确定",
|
||||
"ButtonOpenFeed": "打开源",
|
||||
"ButtonOpenManager": "打开管理器",
|
||||
"ButtonPause": "Pause",
|
||||
"ButtonPlay": "播放",
|
||||
"ButtonPlaying": "正在播放",
|
||||
"ButtonPlaylists": "播放列表",
|
||||
"ButtonPrevious": "Previous",
|
||||
"ButtonPreviousChapter": "Previous Chapter",
|
||||
"ButtonPurgeAllCache": "清理所有缓存",
|
||||
"ButtonPurgeItemsCache": "清理项目缓存",
|
||||
"ButtonPurgeMediaProgress": "清理媒体进度",
|
||||
@@ -54,6 +61,7 @@
|
||||
"ButtonQueueRemoveItem": "从队列中移除",
|
||||
"ButtonQuickMatch": "快速匹配",
|
||||
"ButtonRead": "读取",
|
||||
"ButtonRefresh": "Refresh",
|
||||
"ButtonRemove": "移除",
|
||||
"ButtonRemoveAll": "移除所有",
|
||||
"ButtonRemoveAllLibraryItems": "移除所有媒体库项目",
|
||||
@@ -73,6 +81,7 @@
|
||||
"ButtonSelectFolderPath": "选择文件夹路径",
|
||||
"ButtonSeries": "系列",
|
||||
"ButtonSetChaptersFromTracks": "将音轨设置为章节",
|
||||
"ButtonShare": "Share",
|
||||
"ButtonShiftTimes": "快速调整时间",
|
||||
"ButtonShow": "显示",
|
||||
"ButtonStartM4BEncode": "开始 M4B 编码",
|
||||
@@ -104,6 +113,7 @@
|
||||
"HeaderCollectionItems": "收藏项目",
|
||||
"HeaderCover": "封面",
|
||||
"HeaderCurrentDownloads": "当前下载",
|
||||
"HeaderCustomMetadataProviders": "Custom Metadata Providers",
|
||||
"HeaderDetails": "详情",
|
||||
"HeaderDownloadQueue": "下载队列",
|
||||
"HeaderEbookFiles": "电子书文件",
|
||||
@@ -174,6 +184,7 @@
|
||||
"HeaderUpdateDetails": "更新详情",
|
||||
"HeaderUpdateLibrary": "更新媒体库",
|
||||
"HeaderUsers": "用户",
|
||||
"HeaderYearReview": "Year {0} in Review",
|
||||
"HeaderYourStats": "你的统计数据",
|
||||
"LabelAbridged": "概要",
|
||||
"LabelAccountType": "帐户类型",
|
||||
@@ -281,8 +292,11 @@
|
||||
"LabelFinished": "已听完",
|
||||
"LabelFolder": "文件夹",
|
||||
"LabelFolders": "文件夹",
|
||||
"LabelFontBold": "Bold",
|
||||
"LabelFontFamily": "字体系列",
|
||||
"LabelFontItalic": "Italic",
|
||||
"LabelFontScale": "字体比例",
|
||||
"LabelFontStrikethrough": "Strikethrough",
|
||||
"LabelFormat": "编码格式",
|
||||
"LabelGenre": "流派",
|
||||
"LabelGenres": "流派",
|
||||
@@ -342,7 +356,9 @@
|
||||
"LabelMetaTags": "元标签",
|
||||
"LabelMinute": "分钟",
|
||||
"LabelMissing": "丢失",
|
||||
"LabelMissingEbook": "Has no ebook",
|
||||
"LabelMissingParts": "丢失的部分",
|
||||
"LabelMissingSupplementaryEbook": "Has no supplementary ebook",
|
||||
"LabelMobileRedirectURIs": "允许移动应用重定向 URI",
|
||||
"LabelMobileRedirectURIsDescription": "这是移动应用程序的有效重定向 URI 白名单. 默认值为 <code>audiobookshelf://oauth</code>,您可以删除它或添加其他 URI 以进行第三方应用集成. 使用星号 (<code>*</code>) 作为唯一条目允许任何 URI.",
|
||||
"LabelMore": "更多",
|
||||
@@ -382,11 +398,13 @@
|
||||
"LabelPermissionsDownload": "可以下载",
|
||||
"LabelPermissionsUpdate": "可以更新",
|
||||
"LabelPermissionsUpload": "可以上传",
|
||||
"LabelPersonalYearReview": "Your Year in Review ({0})",
|
||||
"LabelPhotoPathURL": "图片路径或 URL",
|
||||
"LabelPlaylists": "播放列表",
|
||||
"LabelPlayMethod": "播放方法",
|
||||
"LabelPodcast": "播客",
|
||||
"LabelPodcasts": "播客",
|
||||
"LabelPodcastSearchRegion": "播客搜索地区",
|
||||
"LabelPodcastType": "播客类型",
|
||||
"LabelPort": "端口",
|
||||
"LabelPrefixesToIgnore": "忽略的前缀 (不区分大小写)",
|
||||
@@ -403,6 +421,7 @@
|
||||
"LabelRecentlyAdded": "最近添加",
|
||||
"LabelRecentSeries": "最近添加系列",
|
||||
"LabelRecommended": "推荐内容",
|
||||
"LabelRedo": "Redo",
|
||||
"LabelRegion": "区域",
|
||||
"LabelReleaseDate": "发布日期",
|
||||
"LabelRemoveCover": "移除封面",
|
||||
@@ -425,6 +444,7 @@
|
||||
"LabelSeries": "系列",
|
||||
"LabelSeriesName": "系列名称",
|
||||
"LabelSeriesProgress": "系列进度",
|
||||
"LabelServerYearReview": "Server Year in Review ({0})",
|
||||
"LabelSetEbookAsPrimary": "设置为主",
|
||||
"LabelSetEbookAsSupplementary": "设置为补充",
|
||||
"LabelSettingsAudiobooksOnly": "只有有声读物",
|
||||
@@ -446,6 +466,8 @@
|
||||
"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.",
|
||||
"LabelSettingsParseSubtitles": "解析副标题",
|
||||
"LabelSettingsParseSubtitlesHelp": "从有声读物文件夹中提取副标题.<br>副标题必须用 \" - \" 分隔.<br>例: \"书名 - 这里是副标题\" 则显示副标题 \"这里是副标题\"",
|
||||
"LabelSettingsPreferMatchedMetadata": "首选匹配的元数据",
|
||||
@@ -491,6 +513,10 @@
|
||||
"LabelTagsAccessibleToUser": "用户可访问的标签",
|
||||
"LabelTagsNotAccessibleToUser": "用户无法访问标签",
|
||||
"LabelTasks": "正在运行的任务",
|
||||
"LabelTextEditorBulletedList": "Bulleted list",
|
||||
"LabelTextEditorLink": "Link",
|
||||
"LabelTextEditorNumberedList": "Numbered list",
|
||||
"LabelTextEditorUnlink": "Unlink",
|
||||
"LabelTheme": "主题",
|
||||
"LabelThemeDark": "黑暗",
|
||||
"LabelThemeLight": "明亮",
|
||||
@@ -516,6 +542,7 @@
|
||||
"LabelTracksSingleTrack": "单轨",
|
||||
"LabelType": "类型",
|
||||
"LabelUnabridged": "未删节",
|
||||
"LabelUndo": "Undo",
|
||||
"LabelUnknown": "未知",
|
||||
"LabelUpdateCover": "更新封面",
|
||||
"LabelUpdateCoverHelp": "找到匹配项时允许覆盖所选书籍存在的封面",
|
||||
@@ -536,6 +563,8 @@
|
||||
"LabelViewQueue": "查看播放列表",
|
||||
"LabelVolume": "音量",
|
||||
"LabelWeekdaysToRun": "工作日运行",
|
||||
"LabelYearReviewHide": "Hide Year in Review",
|
||||
"LabelYearReviewShow": "See Year in Review",
|
||||
"LabelYourAudiobookDuration": "你的有声读物持续时间",
|
||||
"LabelYourBookmarks": "你的书签",
|
||||
"LabelYourPlaylists": "你的播放列表",
|
||||
@@ -668,7 +697,6 @@
|
||||
"NoteChangeRootPassword": "Root 是唯一可以拥有空密码的用户",
|
||||
"NoteChapterEditorTimes": "注意: 第一章开始时间必须保持在 0:00, 最后一章开始时间不能超过有声读物持续时间.",
|
||||
"NoteFolderPicker": "注意: 将不显示已映射的文件夹",
|
||||
"NoteFolderPickerDebian": "注意: debian 安装的文件夹选择器尚未完全实现. 您应该直接输入媒体库的路径.",
|
||||
"NoteRSSFeedPodcastAppsHttps": "警告: 大多数播客应用程序都需要 RSS 源 URL 使用 HTTPS",
|
||||
"NoteRSSFeedPodcastAppsPubDate": "警告: 您的一集或多集没有发布日期. 一些播客应用程序要求这样做.",
|
||||
"NoteUploaderFoldersWithMediaFiles": "包含媒体文件的文件夹将作为单独的媒体库项目处理.",
|
||||
|
||||
779
client/strings/zh-tw.json
Normal file
779
client/strings/zh-tw.json
Normal file
@@ -0,0 +1,779 @@
|
||||
{
|
||||
"ButtonAdd": "增加",
|
||||
"ButtonAddChapters": "新增章節",
|
||||
"ButtonAddDevice": "新增設備",
|
||||
"ButtonAddLibrary": "新增庫",
|
||||
"ButtonAddPodcasts": "新增播客",
|
||||
"ButtonAddUser": "新增使用者",
|
||||
"ButtonAddYourFirstLibrary": "新增第一個媒體庫",
|
||||
"ButtonApply": "應用",
|
||||
"ButtonApplyChapters": "應用到章節",
|
||||
"ButtonAuthors": "作者",
|
||||
"ButtonBrowseForFolder": "瀏覽資料夾",
|
||||
"ButtonCancel": "取消",
|
||||
"ButtonCancelEncode": "取消編碼",
|
||||
"ButtonChangeRootPassword": "更改 Root 密碼",
|
||||
"ButtonCheckAndDownloadNewEpisodes": "檢查並下載新劇集",
|
||||
"ButtonChooseAFolder": "選擇資料夾",
|
||||
"ButtonChooseFiles": "選擇檔案",
|
||||
"ButtonClearFilter": "清除過濾器",
|
||||
"ButtonCloseFeed": "關閉源",
|
||||
"ButtonCollections": "收藏",
|
||||
"ButtonConfigureScanner": "配置掃描",
|
||||
"ButtonCreate": "創建",
|
||||
"ButtonCreateBackup": "創建備份",
|
||||
"ButtonDelete": "刪除",
|
||||
"ButtonDownloadQueue": "下載佇列",
|
||||
"ButtonEdit": "編輯",
|
||||
"ButtonEditChapters": "編輯章節",
|
||||
"ButtonEditPodcast": "編輯播客",
|
||||
"ButtonForceReScan": "強制重新掃描",
|
||||
"ButtonFullPath": "完整路徑",
|
||||
"ButtonHide": "隱藏",
|
||||
"ButtonHome": "首頁",
|
||||
"ButtonIssues": "問題",
|
||||
"ButtonJumpBackward": "Jump Backward",
|
||||
"ButtonJumpForward": "Jump Forward",
|
||||
"ButtonLatest": "最新",
|
||||
"ButtonLibrary": "媒體庫",
|
||||
"ButtonLogout": "登出",
|
||||
"ButtonLookup": "查找",
|
||||
"ButtonManageTracks": "管理音軌",
|
||||
"ButtonMapChapterTitles": "章節標題結構",
|
||||
"ButtonMatchAllAuthors": "匹配所有作者",
|
||||
"ButtonMatchBooks": "匹配圖書",
|
||||
"ButtonNevermind": "沒關係",
|
||||
"ButtonNext": "下個",
|
||||
"ButtonNextChapter": "下個章節",
|
||||
"ButtonOk": "確定",
|
||||
"ButtonOpenFeed": "打開源",
|
||||
"ButtonOpenManager": "打開管理器",
|
||||
"ButtonPause": "暫停",
|
||||
"ButtonPlay": "播放",
|
||||
"ButtonPlaying": "正在播放",
|
||||
"ButtonPlaylists": "播放列表",
|
||||
"ButtonPrevious": "Previous",
|
||||
"ButtonPreviousChapter": "過去的章節",
|
||||
"ButtonPurgeAllCache": "清理所有快取",
|
||||
"ButtonPurgeItemsCache": "清理項目快取",
|
||||
"ButtonPurgeMediaProgress": "清理媒體進度",
|
||||
"ButtonQueueAddItem": "新增到佇列",
|
||||
"ButtonQueueRemoveItem": "從佇列中移除",
|
||||
"ButtonQuickMatch": "快速匹配",
|
||||
"ButtonRead": "讀取",
|
||||
"ButtonRefresh": "重整",
|
||||
"ButtonRemove": "移除",
|
||||
"ButtonRemoveAll": "移除所有",
|
||||
"ButtonRemoveAllLibraryItems": "移除所有媒體庫項目",
|
||||
"ButtonRemoveFromContinueListening": "從繼續收聽中刪除",
|
||||
"ButtonRemoveFromContinueReading": "從繼續閱讀中刪除",
|
||||
"ButtonRemoveSeriesFromContinueSeries": "從繼續收聽系列中刪除",
|
||||
"ButtonReScan": "重新掃描",
|
||||
"ButtonReset": "重置",
|
||||
"ButtonResetToDefault": "重置為預設",
|
||||
"ButtonRestore": "恢復",
|
||||
"ButtonSave": "保存",
|
||||
"ButtonSaveAndClose": "保存並關閉",
|
||||
"ButtonSaveTracklist": "保存音軌列表",
|
||||
"ButtonScan": "掃描",
|
||||
"ButtonScanLibrary": "掃描庫",
|
||||
"ButtonSearch": "查找",
|
||||
"ButtonSelectFolderPath": "選擇資料夾路徑",
|
||||
"ButtonSeries": "系列",
|
||||
"ButtonSetChaptersFromTracks": "將音軌設定為章節",
|
||||
"ButtonShare": "Share",
|
||||
"ButtonShiftTimes": "快速調整時間",
|
||||
"ButtonShow": "顯示",
|
||||
"ButtonStartM4BEncode": "開始 M4B 編碼",
|
||||
"ButtonStartMetadataEmbed": "開始嵌入元數據",
|
||||
"ButtonSubmit": "提交",
|
||||
"ButtonTest": "測試",
|
||||
"ButtonUpload": "上傳",
|
||||
"ButtonUploadBackup": "上傳備份",
|
||||
"ButtonUploadCover": "上傳封面",
|
||||
"ButtonUploadOPMLFile": "上傳 OPML 檔",
|
||||
"ButtonUserDelete": "刪除使用者 {0}",
|
||||
"ButtonUserEdit": "編輯使用者 {0}",
|
||||
"ButtonViewAll": "查看全部",
|
||||
"ButtonYes": "確定",
|
||||
"ErrorUploadFetchMetadataAPI": "獲取元數據時出錯",
|
||||
"ErrorUploadFetchMetadataNoResults": "無法獲取元數據 - 嘗試更新標題和/或作者",
|
||||
"ErrorUploadLacksTitle": "必須有標題",
|
||||
"HeaderAccount": "帳號",
|
||||
"HeaderAdvanced": "高級",
|
||||
"HeaderAppriseNotificationSettings": "測試通知設定",
|
||||
"HeaderAudiobookTools": "有聲書檔案管理工具",
|
||||
"HeaderAudioTracks": "音軌",
|
||||
"HeaderAuthentication": "身份驗證",
|
||||
"HeaderBackups": "備份",
|
||||
"HeaderChangePassword": "更改密碼",
|
||||
"HeaderChapters": "章節",
|
||||
"HeaderChooseAFolder": "選擇資料夾",
|
||||
"HeaderCollection": "收藏",
|
||||
"HeaderCollectionItems": "收藏項目",
|
||||
"HeaderCover": "封面",
|
||||
"HeaderCurrentDownloads": "當前下載",
|
||||
"HeaderCustomMetadataProviders": "自訂 Metadata 提供者",
|
||||
"HeaderDetails": "詳情",
|
||||
"HeaderDownloadQueue": "下載佇列",
|
||||
"HeaderEbookFiles": "電子書檔",
|
||||
"HeaderEmail": "郵箱",
|
||||
"HeaderEmailSettings": "郵箱設定",
|
||||
"HeaderEpisodes": "劇集",
|
||||
"HeaderEreaderDevices": "Ereader 設備",
|
||||
"HeaderEreaderSettings": "Ereader 設定",
|
||||
"HeaderFiles": "檔案",
|
||||
"HeaderFindChapters": "查找章節",
|
||||
"HeaderIgnoredFiles": "忽略的檔案",
|
||||
"HeaderItemFiles": "項目檔案",
|
||||
"HeaderItemMetadataUtils": "項目元數據管理",
|
||||
"HeaderLastListeningSession": "最後一次收聽會話",
|
||||
"HeaderLatestEpisodes": "最新劇集",
|
||||
"HeaderLibraries": "媒體庫",
|
||||
"HeaderLibraryFiles": "媒體庫檔案",
|
||||
"HeaderLibraryStats": "媒體庫統計數據",
|
||||
"HeaderListeningSessions": "收聽會話",
|
||||
"HeaderListeningStats": "收聽統計數據",
|
||||
"HeaderLogin": "登入",
|
||||
"HeaderLogs": "日誌",
|
||||
"HeaderManageGenres": "管理流派",
|
||||
"HeaderManageTags": "管理標籤",
|
||||
"HeaderMapDetails": "編輯詳情",
|
||||
"HeaderMatch": "匹配",
|
||||
"HeaderMetadataOrderOfPrecedence": "元數據優先級",
|
||||
"HeaderMetadataToEmbed": "嵌入元數據",
|
||||
"HeaderNewAccount": "新建帳號",
|
||||
"HeaderNewLibrary": "新建媒體庫",
|
||||
"HeaderNotifications": "通知",
|
||||
"HeaderOpenIDConnectAuthentication": "OpenID 連接身份驗證",
|
||||
"HeaderOpenRSSFeed": "打開 RSS 源",
|
||||
"HeaderOtherFiles": "其他檔案",
|
||||
"HeaderPasswordAuthentication": "密碼認證",
|
||||
"HeaderPermissions": "權限",
|
||||
"HeaderPlayerQueue": "播放佇列",
|
||||
"HeaderPlaylist": "播放列表",
|
||||
"HeaderPlaylistItems": "播放列表項目",
|
||||
"HeaderPodcastsToAdd": "要新增的播客",
|
||||
"HeaderPreviewCover": "預覽封面",
|
||||
"HeaderRemoveEpisode": "移除劇集",
|
||||
"HeaderRemoveEpisodes": "移除 {0} 劇集",
|
||||
"HeaderRSSFeedGeneral": "RSS 詳細信息",
|
||||
"HeaderRSSFeedIsOpen": "RSS 源已打開",
|
||||
"HeaderRSSFeeds": "RSS 訂閱",
|
||||
"HeaderSavedMediaProgress": "保存媒體進度",
|
||||
"HeaderSchedule": "計劃任務",
|
||||
"HeaderScheduleLibraryScans": "自動掃描媒體庫",
|
||||
"HeaderSession": "會話",
|
||||
"HeaderSetBackupSchedule": "設定備份計劃任務",
|
||||
"HeaderSettings": "設定",
|
||||
"HeaderSettingsDisplay": "顯示",
|
||||
"HeaderSettingsExperimental": "實驗功能",
|
||||
"HeaderSettingsGeneral": "通用",
|
||||
"HeaderSettingsScanner": "掃描",
|
||||
"HeaderSleepTimer": "睡眠計時",
|
||||
"HeaderStatsLargestItems": "最大的項目",
|
||||
"HeaderStatsLongestItems": "項目時長(小時)",
|
||||
"HeaderStatsMinutesListeningChart": "收聽分鐘數(最近7天)",
|
||||
"HeaderStatsRecentSessions": "歷史會話",
|
||||
"HeaderStatsTop10Authors": "前 10 位作者",
|
||||
"HeaderStatsTop5Genres": "前 5 種流派",
|
||||
"HeaderTableOfContents": "目錄",
|
||||
"HeaderTools": "工具",
|
||||
"HeaderUpdateAccount": "更新帳號",
|
||||
"HeaderUpdateAuthor": "更新作者",
|
||||
"HeaderUpdateDetails": "更新詳情",
|
||||
"HeaderUpdateLibrary": "更新媒體庫",
|
||||
"HeaderUsers": "使用者",
|
||||
"HeaderYearReview": "Year {0} in Review",
|
||||
"HeaderYourStats": "你的統計數據",
|
||||
"LabelAbridged": "概要",
|
||||
"LabelAccountType": "帳號類型",
|
||||
"LabelAccountTypeAdmin": "管理員",
|
||||
"LabelAccountTypeGuest": "來賓",
|
||||
"LabelAccountTypeUser": "使用者",
|
||||
"LabelActivity": "活動",
|
||||
"LabelAdded": "新增",
|
||||
"LabelAddedAt": "新增於",
|
||||
"LabelAddToCollection": "新增到收藏",
|
||||
"LabelAddToCollectionBatch": "批量新增 {0} 個媒體到收藏",
|
||||
"LabelAddToPlaylist": "新增到播放列表",
|
||||
"LabelAddToPlaylistBatch": "新增 {0} 個項目到播放列表",
|
||||
"LabelAdminUsersOnly": "僅限管理員使用者",
|
||||
"LabelAll": "全部",
|
||||
"LabelAllUsers": "所有使用者",
|
||||
"LabelAllUsersExcludingGuests": "除訪客外的所有使用者",
|
||||
"LabelAllUsersIncludingGuests": "包括訪客的所有使用者",
|
||||
"LabelAlreadyInYourLibrary": "已存在你的庫中",
|
||||
"LabelAppend": "附加",
|
||||
"LabelAuthor": "作者",
|
||||
"LabelAuthorFirstLast": "作者 (姓 名)",
|
||||
"LabelAuthorLastFirst": "作者 (名, 姓)",
|
||||
"LabelAuthors": "作者",
|
||||
"LabelAutoDownloadEpisodes": "自動下載劇集",
|
||||
"LabelAutoFetchMetadata": "自動獲取元數據",
|
||||
"LabelAutoFetchMetadataHelp": "獲取標題, 作者和系列的元數據以簡化上傳. 上傳後可能需要匹配其他元數據.",
|
||||
"LabelAutoLaunch": "自動啟動",
|
||||
"LabelAutoLaunchDescription": "導航到登入頁面時自動重定向到身份驗證提供程序 (手動覆蓋路徑 <code>/login?autoLaunch=0</code>)",
|
||||
"LabelAutoRegister": "自動註冊",
|
||||
"LabelAutoRegisterDescription": "登入後自動創建新使用者",
|
||||
"LabelBackToUser": "返回到使用者",
|
||||
"LabelBackupLocation": "備份位置",
|
||||
"LabelBackupsEnableAutomaticBackups": "啟用自動備份",
|
||||
"LabelBackupsEnableAutomaticBackupsHelp": "備份保存到 /metadata/backups",
|
||||
"LabelBackupsMaxBackupSize": "最大備份大小 (GB)",
|
||||
"LabelBackupsMaxBackupSizeHelp": "為了防止錯誤配置, 如果備份超過配置的大小, 備份將失敗.",
|
||||
"LabelBackupsNumberToKeep": "要保留的備份個數",
|
||||
"LabelBackupsNumberToKeepHelp": "一次只能刪除一個備份, 因此如果你已經有超過此數量的備份, 則應手動刪除它們.",
|
||||
"LabelBitrate": "位元率",
|
||||
"LabelBooks": "圖書",
|
||||
"LabelButtonText": "按鈕文本",
|
||||
"LabelChangePassword": "修改密碼",
|
||||
"LabelChannels": "聲道",
|
||||
"LabelChapters": "章節",
|
||||
"LabelChaptersFound": "找到的章節",
|
||||
"LabelChapterTitle": "章節標題",
|
||||
"LabelClickForMoreInfo": "點擊了解更多資訊",
|
||||
"LabelClosePlayer": "關閉播放器",
|
||||
"LabelCodec": "編解碼",
|
||||
"LabelCollapseSeries": "折疊系列",
|
||||
"LabelCollection": "收藏",
|
||||
"LabelCollections": "收藏",
|
||||
"LabelComplete": "已完成",
|
||||
"LabelConfirmPassword": "確認密碼",
|
||||
"LabelContinueListening": "繼續收聽",
|
||||
"LabelContinueReading": "繼續閱讀",
|
||||
"LabelContinueSeries": "繼續收聽系列",
|
||||
"LabelCover": "封面",
|
||||
"LabelCoverImageURL": "封面圖像 URL",
|
||||
"LabelCreatedAt": "創建時間",
|
||||
"LabelCronExpression": "計劃任務表達式",
|
||||
"LabelCurrent": "當前",
|
||||
"LabelCurrently": "當前:",
|
||||
"LabelCustomCronExpression": "自定義計劃任務表達式:",
|
||||
"LabelDatetime": "日期時間",
|
||||
"LabelDeleteFromFileSystemCheckbox": "從檔案系統刪除 (取消選中僅從資料庫中刪除)",
|
||||
"LabelDescription": "描述",
|
||||
"LabelDeselectAll": "全部取消選擇",
|
||||
"LabelDevice": "設備",
|
||||
"LabelDeviceInfo": "設備資訊",
|
||||
"LabelDeviceIsAvailableTo": "設備可用於...",
|
||||
"LabelDirectory": "目錄",
|
||||
"LabelDiscFromFilename": "從檔名獲取光碟",
|
||||
"LabelDiscFromMetadata": "從元數據獲取光碟",
|
||||
"LabelDiscover": "發現",
|
||||
"LabelDownload": "下載",
|
||||
"LabelDownloadNEpisodes": "下載 {0} 集",
|
||||
"LabelDuration": "持續時間",
|
||||
"LabelDurationFound": "找到持續時間:",
|
||||
"LabelEbook": "電子書",
|
||||
"LabelEbooks": "電子書",
|
||||
"LabelEdit": "編輯",
|
||||
"LabelEmail": "郵箱",
|
||||
"LabelEmailSettingsFromAddress": "發件人位址",
|
||||
"LabelEmailSettingsSecure": "安全",
|
||||
"LabelEmailSettingsSecureHelp": "如果選是, 則連接將在連接到伺服器時使用TLS. 如果選否, 則若伺服器支援STARTTLS擴展, 則使用TLS. 在大多數情況下, 如果連接到465埠, 請將該值設定為是. 對於587或25埠, 請保持為否. (來自nodemailer.com/smtp/#authentication)",
|
||||
"LabelEmailSettingsTestAddress": "測試位址",
|
||||
"LabelEmbeddedCover": "嵌入封面",
|
||||
"LabelEnable": "啟用",
|
||||
"LabelEnd": "結束",
|
||||
"LabelEpisode": "劇集",
|
||||
"LabelEpisodeTitle": "劇集標題",
|
||||
"LabelEpisodeType": "劇集類型",
|
||||
"LabelExample": "示例",
|
||||
"LabelExplicit": "信息準確",
|
||||
"LabelFeedURL": "源 URL",
|
||||
"LabelFetchingMetadata": "正在獲取元數據",
|
||||
"LabelFile": "檔案",
|
||||
"LabelFileBirthtime": "檔案創建時間",
|
||||
"LabelFileModified": "檔案修改時間",
|
||||
"LabelFilename": "檔名",
|
||||
"LabelFilterByUser": "按使用者篩選",
|
||||
"LabelFindEpisodes": "查找劇集",
|
||||
"LabelFinished": "已聽完",
|
||||
"LabelFolder": "資料夾",
|
||||
"LabelFolders": "資料夾",
|
||||
"LabelFontBold": "Bold",
|
||||
"LabelFontFamily": "字體系列",
|
||||
"LabelFontItalic": "斜體",
|
||||
"LabelFontScale": "字體比例",
|
||||
"LabelFontStrikethrough": "刪除線",
|
||||
"LabelFormat": "編碼格式",
|
||||
"LabelGenre": "流派",
|
||||
"LabelGenres": "流派",
|
||||
"LabelHardDeleteFile": "完全刪除檔案",
|
||||
"LabelHasEbook": "有電子書",
|
||||
"LabelHasSupplementaryEbook": "有補充電子書",
|
||||
"LabelHighestPriority": "最高優先級",
|
||||
"LabelHost": "主機",
|
||||
"LabelHour": "小時",
|
||||
"LabelIcon": "圖標",
|
||||
"LabelImageURLFromTheWeb": "來自 Web 圖像的 URL",
|
||||
"LabelIncludeInTracklist": "包含在音軌列表中",
|
||||
"LabelIncomplete": "未聽完",
|
||||
"LabelInProgress": "正在聽",
|
||||
"LabelInterval": "間隔",
|
||||
"LabelIntervalCustomDailyWeekly": "自定義 每天 / 每周",
|
||||
"LabelIntervalEvery12Hours": "每 12 小時",
|
||||
"LabelIntervalEvery15Minutes": "每 15 分鐘",
|
||||
"LabelIntervalEvery2Hours": "每 2 小時",
|
||||
"LabelIntervalEvery30Minutes": "每 30 分鐘",
|
||||
"LabelIntervalEvery6Hours": "每 6 小時",
|
||||
"LabelIntervalEveryDay": "每天",
|
||||
"LabelIntervalEveryHour": "每小時",
|
||||
"LabelInvalidParts": "無效部件",
|
||||
"LabelInvert": "倒轉",
|
||||
"LabelItem": "項目",
|
||||
"LabelLanguage": "語言",
|
||||
"LabelLanguageDefaultServer": "預設伺服器語言",
|
||||
"LabelLastBookAdded": "最後新增的書",
|
||||
"LabelLastBookUpdated": "最後更新的書",
|
||||
"LabelLastSeen": "上次查看時間",
|
||||
"LabelLastTime": "最近一次",
|
||||
"LabelLastUpdate": "最近更新",
|
||||
"LabelLayout": "布局",
|
||||
"LabelLayoutSinglePage": "單頁",
|
||||
"LabelLayoutSplitPage": "分頁",
|
||||
"LabelLess": "較少",
|
||||
"LabelLibrariesAccessibleToUser": "使用者可存取的媒體庫",
|
||||
"LabelLibrary": "媒體庫",
|
||||
"LabelLibraryItem": "媒體庫項目",
|
||||
"LabelLibraryName": "媒體庫名稱",
|
||||
"LabelLimit": "限制",
|
||||
"LabelLineSpacing": "行間距",
|
||||
"LabelListenAgain": "再次收聽",
|
||||
"LabelLogLevelDebug": "調試",
|
||||
"LabelLogLevelInfo": "信息",
|
||||
"LabelLogLevelWarn": "警告",
|
||||
"LabelLookForNewEpisodesAfterDate": "在此日期後查找新劇集",
|
||||
"LabelLowestPriority": "最低優先級",
|
||||
"LabelMatchExistingUsersBy": "匹配現有使用者",
|
||||
"LabelMatchExistingUsersByDescription": "用於連接現有使用者. 連接後, 使用者將通過SSO提供商提供的唯一 id 進行匹配",
|
||||
"LabelMediaPlayer": "媒體播放器",
|
||||
"LabelMediaType": "媒體類型",
|
||||
"LabelMetadataOrderOfPrecedenceDescription": "較高優先級的元數據源將覆蓋較低優先級的元數據源",
|
||||
"LabelMetadataProvider": "元數據提供者",
|
||||
"LabelMetaTag": "元數據標籤",
|
||||
"LabelMetaTags": "元標籤",
|
||||
"LabelMinute": "分鐘",
|
||||
"LabelMissing": "丟失",
|
||||
"LabelMissingEbook": "Has no ebook",
|
||||
"LabelMissingParts": "丟失的部分",
|
||||
"LabelMissingSupplementaryEbook": "Has no supplementary ebook",
|
||||
"LabelMobileRedirectURIs": "允許移動應用重定向 URI",
|
||||
"LabelMobileRedirectURIsDescription": "這是移動應用程序的有效重定向 URI 白名單. 預設值為 <code>audiobookshelf://oauth</code>,您可以刪除它或加入其他 URI 以進行第三方應用集成. 使用星號 (<code>*</code>) 作為唯一條目允許任何 URI.",
|
||||
"LabelMore": "更多",
|
||||
"LabelMoreInfo": "更多..",
|
||||
"LabelName": "名稱",
|
||||
"LabelNarrator": "講述者",
|
||||
"LabelNarrators": "講述者",
|
||||
"LabelNew": "新建",
|
||||
"LabelNewestAuthors": "最新作者",
|
||||
"LabelNewestEpisodes": "最新劇集",
|
||||
"LabelNewPassword": "新密碼",
|
||||
"LabelNextBackupDate": "下次備份日期",
|
||||
"LabelNextScheduledRun": "下次任務運行",
|
||||
"LabelNoEpisodesSelected": "未選擇任何劇集",
|
||||
"LabelNotes": "注釋",
|
||||
"LabelNotFinished": "未聽完",
|
||||
"LabelNotificationAppriseURL": "通知 URL(s)",
|
||||
"LabelNotificationAvailableVariables": "可用變量",
|
||||
"LabelNotificationBodyTemplate": "正文模板",
|
||||
"LabelNotificationEvent": "通知事件",
|
||||
"LabelNotificationsMaxFailedAttempts": "最大失敗嘗試次數",
|
||||
"LabelNotificationsMaxFailedAttemptsHelp": "如果多次發送失敗,通知將被禁用",
|
||||
"LabelNotificationsMaxQueueSize": "通知事件的最大佇列大小",
|
||||
"LabelNotificationsMaxQueueSizeHelp": "通知事件被限制為每秒觸發 1 個. 如果佇列處於最大大小, 則將忽略事件. 這可以防止通知垃圾郵件.",
|
||||
"LabelNotificationTitleTemplate": "標題模板",
|
||||
"LabelNotStarted": "未開始",
|
||||
"LabelNumberOfBooks": "圖書數量",
|
||||
"LabelNumberOfEpisodes": "# 集",
|
||||
"LabelOpenRSSFeed": "打開 RSS 源",
|
||||
"LabelOverwrite": "覆蓋",
|
||||
"LabelPassword": "密碼",
|
||||
"LabelPath": "路徑",
|
||||
"LabelPermissionsAccessAllLibraries": "可以存取所有媒體庫",
|
||||
"LabelPermissionsAccessAllTags": "可以存取所有標籤",
|
||||
"LabelPermissionsAccessExplicitContent": "可以存取顯式內容",
|
||||
"LabelPermissionsDelete": "可以刪除",
|
||||
"LabelPermissionsDownload": "可以下載",
|
||||
"LabelPermissionsUpdate": "可以更新",
|
||||
"LabelPermissionsUpload": "可以上傳",
|
||||
"LabelPersonalYearReview": "你的年度回顧 ({0})",
|
||||
"LabelPhotoPathURL": "圖片路徑或 URL",
|
||||
"LabelPlaylists": "播放列表",
|
||||
"LabelPlayMethod": "播放方法",
|
||||
"LabelPodcast": "播客",
|
||||
"LabelPodcasts": "播客",
|
||||
"LabelPodcastSearchRegion": "播客搜尋地區",
|
||||
"LabelPodcastType": "播客類型",
|
||||
"LabelPort": "埠",
|
||||
"LabelPrefixesToIgnore": "忽略的前綴 (不區分大小寫)",
|
||||
"LabelPreventIndexing": "防止 iTunes 和 Google 播客目錄對你的源進行索引",
|
||||
"LabelPrimaryEbook": "主電子書",
|
||||
"LabelProgress": "進度",
|
||||
"LabelProvider": "供應商",
|
||||
"LabelPubDate": "出版日期",
|
||||
"LabelPublisher": "出版商",
|
||||
"LabelPublishYear": "發布年份",
|
||||
"LabelRead": "閱讀",
|
||||
"LabelReadAgain": "再次閱讀",
|
||||
"LabelReadEbookWithoutProgress": "閱讀電子書而不保存進度",
|
||||
"LabelRecentlyAdded": "最近新增",
|
||||
"LabelRecentSeries": "最近新增系列",
|
||||
"LabelRecommended": "推薦內容",
|
||||
"LabelRedo": "重做",
|
||||
"LabelRegion": "區域",
|
||||
"LabelReleaseDate": "發布日期",
|
||||
"LabelRemoveCover": "移除封面",
|
||||
"LabelRowsPerPage": "每頁行數",
|
||||
"LabelRSSFeedCustomOwnerEmail": "自定義所有者電子郵件",
|
||||
"LabelRSSFeedCustomOwnerName": "自定義所有者名稱",
|
||||
"LabelRSSFeedOpen": "打開 RSS 源",
|
||||
"LabelRSSFeedPreventIndexing": "防止索引",
|
||||
"LabelRSSFeedSlug": "RSS 源段",
|
||||
"LabelRSSFeedURL": "RSS 源 URL",
|
||||
"LabelSearchTerm": "搜尋項",
|
||||
"LabelSearchTitle": "搜尋標題",
|
||||
"LabelSearchTitleOrASIN": "搜尋標題或 ASIN",
|
||||
"LabelSeason": "季",
|
||||
"LabelSelectAllEpisodes": "選擇所有劇集",
|
||||
"LabelSelectEpisodesShowing": "選擇正在播放的 {0} 劇集",
|
||||
"LabelSelectUsers": "Select users",
|
||||
"LabelSendEbookToDevice": "發送電子書到...",
|
||||
"LabelSequence": "序列",
|
||||
"LabelSeries": "系列",
|
||||
"LabelSeriesName": "系列名稱",
|
||||
"LabelSeriesProgress": "系列進度",
|
||||
"LabelServerYearReview": "伺服器年度回顧 ({0})",
|
||||
"LabelSetEbookAsPrimary": "設定為主",
|
||||
"LabelSetEbookAsSupplementary": "設定為補充",
|
||||
"LabelSettingsAudiobooksOnly": "僅有聲書",
|
||||
"LabelSettingsAudiobooksOnlyHelp": "啟用此設定將忽略電子書檔, 除非它們位於有聲書資料夾中, 在這種情況下, 它們將被設定為補充電子書",
|
||||
"LabelSettingsBookshelfViewHelp": "帶有木架子的擬物化設計",
|
||||
"LabelSettingsChromecastSupport": "Chromecast 支援",
|
||||
"LabelSettingsDateFormat": "日期格式",
|
||||
"LabelSettingsDisableWatcher": "禁用監視程序",
|
||||
"LabelSettingsDisableWatcherForLibrary": "禁用媒體庫的資料夾監視程序",
|
||||
"LabelSettingsDisableWatcherHelp": "檢測到檔案更改時禁用自動新增和更新項目. *需要重啟伺服器",
|
||||
"LabelSettingsEnableWatcher": "啟用監視程序",
|
||||
"LabelSettingsEnableWatcherForLibrary": "為庫啟用資料夾監視程序",
|
||||
"LabelSettingsEnableWatcherHelp": "當檢測到檔案更改時, 啟用項目的自動新增/更新. *需要重新啟動伺服器",
|
||||
"LabelSettingsExperimentalFeatures": "實驗功能",
|
||||
"LabelSettingsExperimentalFeaturesHelp": "開發中的功能需要你的反饋並幫助測試. 點擊打開 github 討論.",
|
||||
"LabelSettingsFindCovers": "查找封面",
|
||||
"LabelSettingsFindCoversHelp": "如果你的有聲書在資料夾中沒有嵌入封面或封面圖像, 掃描將嘗試查找封面.<br>注意: 這將延長掃描時間",
|
||||
"LabelSettingsHideSingleBookSeries": "隱藏單書系列",
|
||||
"LabelSettingsHideSingleBookSeriesHelp": "只有一本書的系列將從系列頁面和主頁書架中隱藏.",
|
||||
"LabelSettingsHomePageBookshelfView": "首頁使用書架視圖",
|
||||
"LabelSettingsLibraryBookshelfView": "媒體庫使用書架視圖",
|
||||
"LabelSettingsParseSubtitles": "解析副標題",
|
||||
"LabelSettingsParseSubtitlesHelp": "從有聲書資料夾中提取副標題.<br>副標題必須用 \" - \" 分隔.<br>例: \"書名 - 這裡是副標題\" 則顯示副標題 \"這裡是副標題\"",
|
||||
"LabelSettingsPreferMatchedMetadata": "首選匹配的元數據",
|
||||
"LabelSettingsPreferMatchedMetadataHelp": "使用快速匹配時, 匹配的數據將覆蓋項目詳細信息. 預設情況下, 快速匹配將只填充缺少的詳細信息.",
|
||||
"LabelSettingsSkipMatchingBooksWithASIN": "跳過匹配已有 ASIN 的圖書",
|
||||
"LabelSettingsSkipMatchingBooksWithISBN": "跳過匹配已有 ISBN 的圖書",
|
||||
"LabelSettingsSortingIgnorePrefixes": "排序時忽略前綴",
|
||||
"LabelSettingsSortingIgnorePrefixesHelp": "例如: 前綴為 \"The\" 的圖書標題 \"The Book Title\" 將按 \"Book Title, The\" 進行排序",
|
||||
"LabelSettingsSquareBookCovers": "使用者方形圖書封面",
|
||||
"LabelSettingsSquareBookCoversHelp": "比起標準的 1.6:1 圖書封面,更喜歡使用方形封面",
|
||||
"LabelSettingsStoreCoversWithItem": "存儲項目封面",
|
||||
"LabelSettingsStoreCoversWithItemHelp": "預設情況下封面存儲在/metadata/items資料夾中, 啟用此設定將存儲封面在你媒體項目資料夾中. 只保留一個名為 \"cover\" 的檔案",
|
||||
"LabelSettingsStoreMetadataWithItem": "存儲項目元數據",
|
||||
"LabelSettingsStoreMetadataWithItemHelp": "預設情況下元數據檔案存儲在/metadata/items資料夾中, 啟用此設定將存儲元數據在你媒體項目資料夾中",
|
||||
"LabelSettingsTimeFormat": "時間格式",
|
||||
"LabelShowAll": "全部顯示",
|
||||
"LabelSize": "檔案大小",
|
||||
"LabelSleepTimer": "睡眠定時",
|
||||
"LabelSlug": "Slug",
|
||||
"LabelStart": "開始",
|
||||
"LabelStarted": "開始於",
|
||||
"LabelStartedAt": "從這開始",
|
||||
"LabelStartTime": "開始時間",
|
||||
"LabelStatsAudioTracks": "音軌",
|
||||
"LabelStatsAuthors": "作者",
|
||||
"LabelStatsBestDay": "最好的一天",
|
||||
"LabelStatsDailyAverage": "每日平均值",
|
||||
"LabelStatsDays": "天",
|
||||
"LabelStatsDaysListened": "收聽天數",
|
||||
"LabelStatsHours": "小時",
|
||||
"LabelStatsInARow": "在一行",
|
||||
"LabelStatsItemsFinished": "已完成的項目",
|
||||
"LabelStatsItemsInLibrary": "媒體庫中的項目",
|
||||
"LabelStatsMinutes": "分鐘",
|
||||
"LabelStatsMinutesListening": "收聽分鐘數",
|
||||
"LabelStatsOverallDays": "總計天數",
|
||||
"LabelStatsOverallHours": "總計小時",
|
||||
"LabelStatsWeekListening": "每周收聽",
|
||||
"LabelSubtitle": "副標題",
|
||||
"LabelSupportedFileTypes": "支援的檔案類型",
|
||||
"LabelTag": "標籤",
|
||||
"LabelTags": "標籤",
|
||||
"LabelTagsAccessibleToUser": "使用者可存取的標籤",
|
||||
"LabelTagsNotAccessibleToUser": "使用者無法存取標籤",
|
||||
"LabelTasks": "正在運行的任務",
|
||||
"LabelTextEditorBulletedList": "項目符號列表",
|
||||
"LabelTextEditorLink": "Link",
|
||||
"LabelTextEditorNumberedList": "編號列表",
|
||||
"LabelTextEditorUnlink": "取消連結",
|
||||
"LabelTheme": "主題",
|
||||
"LabelThemeDark": "黑暗",
|
||||
"LabelThemeLight": "明亮",
|
||||
"LabelTimeBase": "時間基準",
|
||||
"LabelTimeListened": "收聽時間",
|
||||
"LabelTimeListenedToday": "今日收聽的時間",
|
||||
"LabelTimeRemaining": "剩餘 {0}",
|
||||
"LabelTimeToShift": "快速調整時間以秒為單位",
|
||||
"LabelTitle": "標題",
|
||||
"LabelToolsEmbedMetadata": "嵌入元數據",
|
||||
"LabelToolsEmbedMetadataDescription": "將元數據嵌入音頻檔案, 包括封面圖像和章節.",
|
||||
"LabelToolsMakeM4b": "制作 M4B 有聲書檔案",
|
||||
"LabelToolsMakeM4bDescription": "生成帶有嵌入元數據, 封面圖像和章節的 .M4B 有聲書檔.",
|
||||
"LabelToolsSplitM4b": "將 M4B 檔拆分為 MP3 檔",
|
||||
"LabelToolsSplitM4bDescription": "從 M4B 檔創建 MP3 檔, 按章節分割, 並嵌入元數據, 封面圖像和章節.",
|
||||
"LabelTotalDuration": "總持續時間",
|
||||
"LabelTotalTimeListened": "總收聽時間",
|
||||
"LabelTrackFromFilename": "從檔案名獲取音軌",
|
||||
"LabelTrackFromMetadata": "從源數據獲取音軌",
|
||||
"LabelTracks": "音軌",
|
||||
"LabelTracksMultiTrack": "多軌",
|
||||
"LabelTracksNone": "沒有音軌",
|
||||
"LabelTracksSingleTrack": "單軌",
|
||||
"LabelType": "類型",
|
||||
"LabelUnabridged": "未刪節",
|
||||
"LabelUndo": "Undo",
|
||||
"LabelUnknown": "未知",
|
||||
"LabelUpdateCover": "更新封面",
|
||||
"LabelUpdateCoverHelp": "找到匹配項時允許覆蓋所選書籍存在的封面",
|
||||
"LabelUpdatedAt": "更新時間",
|
||||
"LabelUpdateDetails": "更新詳細信息",
|
||||
"LabelUpdateDetailsHelp": "找到匹配項時允許覆蓋所選書籍存在的詳細信息",
|
||||
"LabelUploaderDragAndDrop": "拖放檔案或資料夾",
|
||||
"LabelUploaderDropFiles": "刪除檔案",
|
||||
"LabelUploaderItemFetchMetadataHelp": "自動獲取標題, 作者和系列",
|
||||
"LabelUseChapterTrack": "使用章節音軌",
|
||||
"LabelUseFullTrack": "使用完整音軌",
|
||||
"LabelUser": "使用者",
|
||||
"LabelUsername": "使用者名",
|
||||
"LabelValue": "值",
|
||||
"LabelVersion": "版本",
|
||||
"LabelViewBookmarks": "查看書籤",
|
||||
"LabelViewChapters": "查看章節",
|
||||
"LabelViewQueue": "查看播放列表",
|
||||
"LabelVolume": "音量",
|
||||
"LabelWeekdaysToRun": "工作日運行",
|
||||
"LabelYearReviewHide": "隱藏年度回顧",
|
||||
"LabelYearReviewShow": "顯示年度回顧",
|
||||
"LabelYourAudiobookDuration": "你的有聲書持續時間",
|
||||
"LabelYourBookmarks": "你的書籤",
|
||||
"LabelYourPlaylists": "你的播放列表",
|
||||
"LabelYourProgress": "你的進度",
|
||||
"MessageAddToPlayerQueue": "新增到播放佇列",
|
||||
"MessageAppriseDescription": "要使用此功能,您需要運行一個 <a href=\"https://github.com/caronc/apprise-api\" target=\"_blank\">Apprise API</a> 實例或一個可以處理這些相同請求的 API. <br />Apprise API Url 應該是發送通知的完整 URL 路徑, 例如: 如果你的 API 實例運行在 <code>http://192.168.1.1:8337</code>, 那么你可以輸入 <code>http://192.168.1.1:8337/notify</code>.",
|
||||
"MessageBackupsDescription": "備份包括使用者, 使用者進度, 媒體庫項目詳細信息, 伺服器設定和圖像, 存儲在 <code>/metadata/items</code> & <code>/metadata/authors</code>. 備份不包括存儲在您的媒體庫資料夾中的任何檔案.",
|
||||
"MessageBatchQuickMatchDescription": "快速匹配將嘗試為所選項目新增缺少的封面和元數據. 啟用以下選項以允許快速匹配覆蓋現有封面和或元數據.",
|
||||
"MessageBookshelfNoCollections": "你尚未進行任何收藏",
|
||||
"MessageBookshelfNoResultsForFilter": "過濾器無結果 \"{0}: {1}\"",
|
||||
"MessageBookshelfNoRSSFeeds": "沒有打開的 RSS 源",
|
||||
"MessageBookshelfNoSeries": "你沒有系列",
|
||||
"MessageChapterEndIsAfter": "章節結束是在有聲書結束之後",
|
||||
"MessageChapterErrorFirstNotZero": "第一章節必須從 0 開始",
|
||||
"MessageChapterErrorStartGteDuration": "無效的開始時間, 必須小於有聲書持續時間",
|
||||
"MessageChapterErrorStartLtPrev": "無效的開始時間, 必須大於或等於上一章節的開始時間",
|
||||
"MessageChapterStartIsAfter": "章節開始是在有聲書結束之後",
|
||||
"MessageCheckingCron": "檢查計劃任務...",
|
||||
"MessageConfirmCloseFeed": "你確定要關閉此訂閱源嗎?",
|
||||
"MessageConfirmDeleteBackup": "你確定要刪除備份 {0}?",
|
||||
"MessageConfirmDeleteFile": "這將從檔案系統中刪除該檔案. 你確定嗎?",
|
||||
"MessageConfirmDeleteLibrary": "你確定要永久刪除媒體庫 \"{0}\"?",
|
||||
"MessageConfirmDeleteLibraryItem": "這將從資料庫和檔案系統中刪除庫項目. 你確定嗎?",
|
||||
"MessageConfirmDeleteLibraryItems": "這將從資料庫和檔案系統中刪除 {0} 個庫項目. 你確定嗎?",
|
||||
"MessageConfirmDeleteSession": "你確定要刪除此會話嗎?",
|
||||
"MessageConfirmForceReScan": "你確定要強制重新掃描嗎?",
|
||||
"MessageConfirmMarkAllEpisodesFinished": "你確定要將所有劇集都標記為已完成嗎?",
|
||||
"MessageConfirmMarkAllEpisodesNotFinished": "你確定要將所有劇集都標記為未完成嗎?",
|
||||
"MessageConfirmMarkSeriesFinished": "你確定要將此系列中的所有書籍都標記為已聽完嗎?",
|
||||
"MessageConfirmMarkSeriesNotFinished": "你確定要將此系列中的所有書籍都標記為未聽完嗎?",
|
||||
"MessageConfirmQuickEmbed": "警告! 快速嵌入不會備份你的音頻檔案. 確保你有音頻檔案的備份. <br><br>你是否想繼續嗎?",
|
||||
"MessageConfirmRemoveAllChapters": "你確定要移除所有章節嗎?",
|
||||
"MessageConfirmRemoveAuthor": "你確定要刪除作者 \"{0}\"?",
|
||||
"MessageConfirmRemoveCollection": "你確定要移除收藏 \"{0}\"?",
|
||||
"MessageConfirmRemoveEpisode": "你確定要移除劇集 \"{0}\"?",
|
||||
"MessageConfirmRemoveEpisodes": "你確定要移除 {0} 劇集?",
|
||||
"MessageConfirmRemoveListeningSessions": "你確定要移除 {0} 收聽會話嗎?",
|
||||
"MessageConfirmRemoveNarrator": "你確定要刪除演播者 \"{0}\"?",
|
||||
"MessageConfirmRemovePlaylist": "你確定要移除播放列表 \"{0}\"?",
|
||||
"MessageConfirmRenameGenre": "你確定要將所有項目流派 \"{0}\" 重命名到 \"{1}\"?",
|
||||
"MessageConfirmRenameGenreMergeNote": "注意: 該流派已經存在, 因此它們將被合併.",
|
||||
"MessageConfirmRenameGenreWarning": "警告! 已經存在有大小寫不同的類似流派 \"{0}\".",
|
||||
"MessageConfirmRenameTag": "你確定要將所有項目標籤 \"{0}\" 重命名到 \"{1}\"?",
|
||||
"MessageConfirmRenameTagMergeNote": "注意: 該標籤已經存在, 因此它們將被合併.",
|
||||
"MessageConfirmRenameTagWarning": "警告! 已經存在有大小寫不同的類似標籤 \"{0}\".",
|
||||
"MessageConfirmReScanLibraryItems": "你確定要重新掃描 {0} 個項目嗎?",
|
||||
"MessageConfirmSendEbookToDevice": "你確定要發送 {0} 電子書 \"{1}\" 到設備 \"{2}\"?",
|
||||
"MessageDownloadingEpisode": "正在下載劇集",
|
||||
"MessageDragFilesIntoTrackOrder": "將檔案拖動到正確的音軌順序",
|
||||
"MessageEmbedFinished": "嵌入完成!",
|
||||
"MessageEpisodesQueuedForDownload": "{0} 個劇集排隊等待下載",
|
||||
"MessageFeedURLWillBe": "源 URL 將改為 {0}",
|
||||
"MessageFetching": "正在獲取...",
|
||||
"MessageForceReScanDescription": "將像重新掃描一樣再次掃描所有檔案. 音頻檔 ID3 標籤, OPF 檔和文本檔將被掃描為新檔案.",
|
||||
"MessageImportantNotice": "重要通知!",
|
||||
"MessageInsertChapterBelow": "在下面插入章節",
|
||||
"MessageItemsSelected": "已選定 {0} 個項目",
|
||||
"MessageItemsUpdated": "已更新 {0} 個項目",
|
||||
"MessageJoinUsOn": "加入我們",
|
||||
"MessageListeningSessionsInTheLastYear": "去年收聽 {0} 個會話",
|
||||
"MessageLoading": "讀取...",
|
||||
"MessageLoadingFolders": "讀取資料夾...",
|
||||
"MessageM4BFailed": "M4B 失敗!",
|
||||
"MessageM4BFinished": "M4B 完成!",
|
||||
"MessageMapChapterTitles": "將章節標題映射到現有的有聲書章節, 無需調整時間戳",
|
||||
"MessageMarkAllEpisodesFinished": "標記所有劇集為已完成",
|
||||
"MessageMarkAllEpisodesNotFinished": "標記所有劇集為未完成",
|
||||
"MessageMarkAsFinished": "標記為已聽完",
|
||||
"MessageMarkAsNotFinished": "標記為未聽完",
|
||||
"MessageMatchBooksDescription": "嘗試將媒體庫中的圖書與所選搜尋提供商的圖書進行匹配, 並填寫空白的詳細信息和封面. 不覆蓋詳細信息.",
|
||||
"MessageNoAudioTracks": "沒有音軌",
|
||||
"MessageNoAuthors": "沒有作者",
|
||||
"MessageNoBackups": "沒有備份",
|
||||
"MessageNoBookmarks": "沒有書籤",
|
||||
"MessageNoChapters": "沒有章節",
|
||||
"MessageNoCollections": "沒有收藏",
|
||||
"MessageNoCoversFound": "沒有找到封面",
|
||||
"MessageNoDescription": "沒有描述",
|
||||
"MessageNoDownloadsInProgress": "當前沒有正在進行的下載",
|
||||
"MessageNoDownloadsQueued": "下載佇列無任務",
|
||||
"MessageNoEpisodeMatchesFound": "沒有找到任何劇集匹配項",
|
||||
"MessageNoEpisodes": "沒有劇集",
|
||||
"MessageNoFoldersAvailable": "沒有可用資料夾",
|
||||
"MessageNoGenres": "無流派",
|
||||
"MessageNoIssues": "無問題",
|
||||
"MessageNoItems": "無項目",
|
||||
"MessageNoItemsFound": "未找到任何項目",
|
||||
"MessageNoListeningSessions": "無收聽會話",
|
||||
"MessageNoLogs": "無日誌",
|
||||
"MessageNoMediaProgress": "無媒體進度",
|
||||
"MessageNoNotifications": "無通知",
|
||||
"MessageNoPodcastsFound": "未找到播客",
|
||||
"MessageNoResults": "無結果",
|
||||
"MessageNoSearchResultsFor": "沒有搜尋到結果 \"{0}\"",
|
||||
"MessageNoSeries": "無系列",
|
||||
"MessageNoTags": "無標籤",
|
||||
"MessageNoTasksRunning": "沒有正在運行的任務",
|
||||
"MessageNotYetImplemented": "尚未實施",
|
||||
"MessageNoUpdateNecessary": "無需更新",
|
||||
"MessageNoUpdatesWereNecessary": "無需更新",
|
||||
"MessageNoUserPlaylists": "你沒有播放列表",
|
||||
"MessageOr": "或",
|
||||
"MessagePauseChapter": "暫停章節播放",
|
||||
"MessagePlayChapter": "開始章節播放",
|
||||
"MessagePlaylistCreateFromCollection": "從收藏中創建播放列表",
|
||||
"MessagePodcastHasNoRSSFeedForMatching": "播客沒有可用於匹配 RSS 源的 url",
|
||||
"MessageQuickMatchDescription": "使用來自 '{0}' 的第一個匹配結果填充空白詳細信息和封面. 除非啟用 '首選匹配元數據' 伺服器設定, 否則不會覆蓋詳細信息.",
|
||||
"MessageRemoveChapter": "移除章節",
|
||||
"MessageRemoveEpisodes": "移除 {0} 劇集",
|
||||
"MessageRemoveFromPlayerQueue": "從播放佇列中移除",
|
||||
"MessageRemoveUserWarning": "是否確實要永久刪除使用者 \"{0}\"?",
|
||||
"MessageReportBugsAndContribute": "報告錯誤、請求功能和貢獻在",
|
||||
"MessageResetChaptersConfirm": "你確定要重置章節並撤消你所做的更改嗎?",
|
||||
"MessageRestoreBackupConfirm": "你確定要恢復創建的這個備份",
|
||||
"MessageRestoreBackupWarning": "恢復備份將覆蓋位於 /config 的整個資料庫並覆蓋 /metadata/items & /metadata/authors 中的圖像.<br /><br />備份不會修改媒體庫資料夾中的任何檔案. 如果您已啟用伺服器設定將封面和元數據存儲在庫資料夾中,則不會備份或覆蓋這些內容.<br /><br />將自動刷新使用伺服器的所有客戶端.",
|
||||
"MessageSearchResultsFor": "搜尋結果",
|
||||
"MessageSelected": "{0} 被選取",
|
||||
"MessageServerCouldNotBeReached": "無法連接伺服器",
|
||||
"MessageSetChaptersFromTracksDescription": "把每個音頻檔設定為章節並將章節標題設定為音頻檔名",
|
||||
"MessageStartPlaybackAtTime": "開始播放 \"{0}\" 在 {1}?",
|
||||
"MessageThinking": "正在查找...",
|
||||
"MessageUploaderItemFailed": "上傳失敗",
|
||||
"MessageUploaderItemSuccess": "上傳成功!",
|
||||
"MessageUploading": "正在上傳...",
|
||||
"MessageValidCronExpression": "有效的計劃任務表達式",
|
||||
"MessageWatcherIsDisabledGlobally": "在伺服器設定中禁用全域監視程序",
|
||||
"MessageXLibraryIsEmpty": "{0} 庫為空!",
|
||||
"MessageYourAudiobookDurationIsLonger": "您的有聲書持續時間比找到的持續時間長",
|
||||
"MessageYourAudiobookDurationIsShorter": "您的有聲書持續時間比找到的持續時間短",
|
||||
"NoteChangeRootPassword": "Root 是唯一可以擁有空密碼的使用者",
|
||||
"NoteChapterEditorTimes": "注意: 第一章開始時間必須保持在 0:00, 最後一章開始時間不能超過有聲書持續時間.",
|
||||
"NoteFolderPicker": "注意: 將不顯示已映射的資料夾",
|
||||
"NoteRSSFeedPodcastAppsHttps": "警告: 大多數播客應用程序都需要 RSS 源 URL 使用 HTTPS",
|
||||
"NoteRSSFeedPodcastAppsPubDate": "警告: 您的一集或多集沒有發布日期. 一些播客應用程序要求這樣做.",
|
||||
"NoteUploaderFoldersWithMediaFiles": "包含媒體檔案的資料夾將作為單獨的媒體庫項目處理.",
|
||||
"NoteUploaderOnlyAudioFiles": "如果只上傳音頻檔, 則每個音頻檔將作為單獨的有聲書處理.",
|
||||
"NoteUploaderUnsupportedFiles": "不支援的檔案將被忽略. 選擇或刪除資料夾時, 將忽略不在項目資料夾中的其他檔案.",
|
||||
"PlaceholderNewCollection": "輸入收藏夾名稱",
|
||||
"PlaceholderNewFolderPath": "輸入資料夾路徑",
|
||||
"PlaceholderNewPlaylist": "輸入播放列表名稱",
|
||||
"PlaceholderSearch": "查找..",
|
||||
"PlaceholderSearchEpisode": "搜尋劇集..",
|
||||
"ToastAccountUpdateFailed": "帳號更新失敗",
|
||||
"ToastAccountUpdateSuccess": "帳號已更新",
|
||||
"ToastAuthorImageRemoveFailed": "作者圖像刪除失敗",
|
||||
"ToastAuthorImageRemoveSuccess": "作者圖像已刪除",
|
||||
"ToastAuthorUpdateFailed": "作者更新失敗",
|
||||
"ToastAuthorUpdateMerged": "作者已合併",
|
||||
"ToastAuthorUpdateSuccess": "作者已更新",
|
||||
"ToastAuthorUpdateSuccessNoImageFound": "作者已更新 (未找到圖像)",
|
||||
"ToastBackupCreateFailed": "備份創建失敗",
|
||||
"ToastBackupCreateSuccess": "備份已創建",
|
||||
"ToastBackupDeleteFailed": "備份刪除失敗",
|
||||
"ToastBackupDeleteSuccess": "備份已刪除",
|
||||
"ToastBackupRestoreFailed": "備份還原失敗",
|
||||
"ToastBackupUploadFailed": "上傳備份失敗",
|
||||
"ToastBackupUploadSuccess": "備份已上傳",
|
||||
"ToastBatchUpdateFailed": "批量更新失敗",
|
||||
"ToastBatchUpdateSuccess": "批量更新成功",
|
||||
"ToastBookmarkCreateFailed": "創建書籤失敗",
|
||||
"ToastBookmarkCreateSuccess": "書籤已新增",
|
||||
"ToastBookmarkRemoveFailed": "書籤刪除失敗",
|
||||
"ToastBookmarkRemoveSuccess": "書籤已刪除",
|
||||
"ToastBookmarkUpdateFailed": "書籤更新失敗",
|
||||
"ToastBookmarkUpdateSuccess": "書籤已更新",
|
||||
"ToastChaptersHaveErrors": "章節有錯誤",
|
||||
"ToastChaptersMustHaveTitles": "章節必須有標題",
|
||||
"ToastCollectionItemsRemoveFailed": "從收藏夾移除項目失敗",
|
||||
"ToastCollectionItemsRemoveSuccess": "項目從收藏夾移除",
|
||||
"ToastCollectionRemoveFailed": "刪除收藏夾失敗",
|
||||
"ToastCollectionRemoveSuccess": "收藏夾已刪除",
|
||||
"ToastCollectionUpdateFailed": "更新收藏夾失敗",
|
||||
"ToastCollectionUpdateSuccess": "收藏夾已更新",
|
||||
"ToastItemCoverUpdateFailed": "更新項目封面失敗",
|
||||
"ToastItemCoverUpdateSuccess": "項目封面已更新",
|
||||
"ToastItemDetailsUpdateFailed": "更新項目詳細信息失敗",
|
||||
"ToastItemDetailsUpdateSuccess": "項目詳細信息已更新",
|
||||
"ToastItemDetailsUpdateUnneeded": "項目詳細信息無需更新",
|
||||
"ToastItemMarkedAsFinishedFailed": "標記為聽完失敗",
|
||||
"ToastItemMarkedAsFinishedSuccess": "標記為聽完的項目",
|
||||
"ToastItemMarkedAsNotFinishedFailed": "標記為未聽完失敗",
|
||||
"ToastItemMarkedAsNotFinishedSuccess": "標記為未聽完的項目",
|
||||
"ToastLibraryCreateFailed": "創建媒體庫失敗",
|
||||
"ToastLibraryCreateSuccess": "媒體庫 \"{0}\" 創建成功",
|
||||
"ToastLibraryDeleteFailed": "刪除媒體庫失敗",
|
||||
"ToastLibraryDeleteSuccess": "媒體庫已刪除",
|
||||
"ToastLibraryScanFailedToStart": "無法啟動掃描",
|
||||
"ToastLibraryScanStarted": "媒體庫掃描已啟動",
|
||||
"ToastLibraryUpdateFailed": "更新圖書庫失敗",
|
||||
"ToastLibraryUpdateSuccess": "媒體庫 \"{0}\" 已更新",
|
||||
"ToastPlaylistCreateFailed": "創建播放列表失敗",
|
||||
"ToastPlaylistCreateSuccess": "已成功創建播放列表",
|
||||
"ToastPlaylistRemoveFailed": "刪除播放列表失敗",
|
||||
"ToastPlaylistRemoveSuccess": "播放列表已刪除",
|
||||
"ToastPlaylistUpdateFailed": "更新播放列表失敗",
|
||||
"ToastPlaylistUpdateSuccess": "播放列表已更新",
|
||||
"ToastPodcastCreateFailed": "創建播客失敗",
|
||||
"ToastPodcastCreateSuccess": "已成功創建播客",
|
||||
"ToastRemoveItemFromCollectionFailed": "從收藏中刪除項目失敗",
|
||||
"ToastRemoveItemFromCollectionSuccess": "項目已從收藏中刪除",
|
||||
"ToastRSSFeedCloseFailed": "關閉 RSS 源失敗",
|
||||
"ToastRSSFeedCloseSuccess": "RSS 源已關閉",
|
||||
"ToastSendEbookToDeviceFailed": "發送電子書到設備失敗",
|
||||
"ToastSendEbookToDeviceSuccess": "電子書已經發送到設備 \"{0}\"",
|
||||
"ToastSeriesUpdateFailed": "更新系列失敗",
|
||||
"ToastSeriesUpdateSuccess": "系列已更新",
|
||||
"ToastSessionDeleteFailed": "刪除會話失敗",
|
||||
"ToastSessionDeleteSuccess": "會話已刪除",
|
||||
"ToastSocketConnected": "網路已連接",
|
||||
"ToastSocketDisconnected": "網路已斷開",
|
||||
"ToastSocketFailedToConnect": "網路連接失敗",
|
||||
"ToastUserDeleteFailed": "刪除使用者失敗",
|
||||
"ToastUserDeleteSuccess": "使用者已刪除"
|
||||
}
|
||||
@@ -1,29 +1,18 @@
|
||||
module.exports = {
|
||||
purge: {
|
||||
content: [
|
||||
'components/**/*.vue',
|
||||
'layouts/**/*.vue',
|
||||
'pages/**/*.vue',
|
||||
'templates/**/*.vue',
|
||||
'plugins/**/*.js',
|
||||
'nuxt.config.js'
|
||||
],
|
||||
safelist: [
|
||||
'bg-success',
|
||||
'bg-red-600',
|
||||
'bg-yellow-400',
|
||||
'text-green-500',
|
||||
'py-1.5',
|
||||
'bg-info',
|
||||
'px-1.5',
|
||||
'min-w-5',
|
||||
'w-3.5',
|
||||
'h-3.5',
|
||||
'border-warning',
|
||||
'mb-px',
|
||||
'text-1.5xl'
|
||||
],
|
||||
},
|
||||
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: {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user