mirror of
https://github.com/Readarr/Readarr.git
synced 2026-03-26 17:44:27 -04:00
Compare commits
78 Commits
v0.4.5.269
...
v0.4.14.27
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
55763dae43 | ||
|
|
a362dab503 | ||
|
|
dba9fbf254 | ||
|
|
59a7605385 | ||
|
|
f819e582cf | ||
|
|
0972d41bf8 | ||
|
|
05d2335bfe | ||
|
|
5b4f54a959 | ||
|
|
bb5ad605fd | ||
|
|
52c3a95e63 | ||
|
|
52c5460537 | ||
|
|
280cec3d0e | ||
|
|
f10c2c01d8 | ||
|
|
2b6a328dac | ||
|
|
4078525f67 | ||
|
|
214e4270ac | ||
|
|
5396dd3e8e | ||
|
|
d5d4996c40 | ||
|
|
8b2223a9c4 | ||
|
|
2a3e7f8dae | ||
|
|
6406ed6289 | ||
|
|
d5b0831b0f | ||
|
|
8d72d5dbab | ||
|
|
74d1ab84e2 | ||
|
|
7341d20c51 | ||
|
|
5abf4f2992 | ||
|
|
cc90050c77 | ||
|
|
7ba8f8baee | ||
|
|
70aec175ef | ||
|
|
080dd301f3 | ||
|
|
bab45481db | ||
|
|
3e1e03e0ce | ||
|
|
bb599d6dc9 | ||
|
|
c94685842f | ||
|
|
5966f6da51 | ||
|
|
229e0dfe5d | ||
|
|
5173daa265 | ||
|
|
c2f770f242 | ||
|
|
0b7ce67635 | ||
|
|
bc74456944 | ||
|
|
fa460567a7 | ||
|
|
7dfceb307b | ||
|
|
305ad235a5 | ||
|
|
74c20e41bf | ||
|
|
347289b173 | ||
|
|
0ef3d2a5cc | ||
|
|
e5519d60c9 | ||
|
|
3a85b3a060 | ||
|
|
c1cdf44322 | ||
|
|
f861e54139 | ||
|
|
279e1029e0 | ||
|
|
b9ed39175b | ||
|
|
faba3ada95 | ||
|
|
e8647aee05 | ||
|
|
eaf5ce52bc | ||
|
|
73ab2760e4 | ||
|
|
3bb036e8c6 | ||
|
|
6e05456d6a | ||
|
|
8563a42822 | ||
|
|
841d38f4a5 | ||
|
|
9326d88eb6 | ||
|
|
015da61004 | ||
|
|
d02ea4b121 | ||
|
|
7bc9d700f9 | ||
|
|
661d72ef9b | ||
|
|
258a8d1c95 | ||
|
|
d4459b9475 | ||
|
|
a550c6554f | ||
|
|
c1b26eec8d | ||
|
|
ffe5ede55d | ||
|
|
9005860899 | ||
|
|
c67f67109e | ||
|
|
51b9744e25 | ||
|
|
334d824633 | ||
|
|
ae01387ca9 | ||
|
|
4eb13e0938 | ||
|
|
6dbb826f2f | ||
|
|
52dfa57dd7 |
@@ -9,7 +9,7 @@ variables:
|
||||
testsFolder: './_tests'
|
||||
yarnCacheFolder: $(Pipeline.Workspace)/.yarn
|
||||
nugetCacheFolder: $(Pipeline.Workspace)/.nuget/packages
|
||||
majorVersion: '0.4.5'
|
||||
majorVersion: '0.4.14'
|
||||
minorVersion: $[counter('minorVersion', 1)]
|
||||
readarrVersion: '$(majorVersion).$(minorVersion)'
|
||||
buildName: '$(Build.SourceBranchName).$(readarrVersion)'
|
||||
@@ -19,7 +19,7 @@ variables:
|
||||
nodeVersion: '20.X'
|
||||
innoVersion: '6.2.0'
|
||||
windowsImage: 'windows-2022'
|
||||
linuxImage: 'ubuntu-20.04'
|
||||
linuxImage: 'ubuntu-22.04'
|
||||
macImage: 'macOS-13'
|
||||
|
||||
trigger:
|
||||
@@ -1102,19 +1102,19 @@ stages:
|
||||
vmImage: ${{ variables.windowsImage }}
|
||||
steps:
|
||||
- checkout: self # Need history for Sonar analysis
|
||||
- task: SonarCloudPrepare@2
|
||||
- task: SonarCloudPrepare@3
|
||||
env:
|
||||
SONAR_SCANNER_OPTS: ''
|
||||
inputs:
|
||||
SonarCloud: 'SonarCloud'
|
||||
organization: 'readarr'
|
||||
scannerMode: 'CLI'
|
||||
scannerMode: 'cli'
|
||||
configMode: 'manual'
|
||||
cliProjectKey: 'readarrui'
|
||||
cliProjectName: 'ReadarrUI'
|
||||
cliProjectVersion: '$(readarrVersion)'
|
||||
cliSources: './frontend'
|
||||
- task: SonarCloudAnalyze@2
|
||||
- task: SonarCloudAnalyze@3
|
||||
|
||||
- job: Api_Docs
|
||||
displayName: API Docs
|
||||
@@ -1190,12 +1190,12 @@ stages:
|
||||
submodules: true
|
||||
- powershell: Set-Service SCardSvr -StartupType Manual
|
||||
displayName: Enable Windows Test Service
|
||||
- task: SonarCloudPrepare@2
|
||||
- task: SonarCloudPrepare@3
|
||||
condition: eq(variables['System.PullRequest.IsFork'], 'False')
|
||||
inputs:
|
||||
SonarCloud: 'SonarCloud'
|
||||
organization: 'readarr'
|
||||
scannerMode: 'MSBuild'
|
||||
scannerMode: 'dotnet'
|
||||
projectKey: 'Readarr_Readarr'
|
||||
projectName: 'Readarr'
|
||||
projectVersion: '$(readarrVersion)'
|
||||
@@ -1208,7 +1208,7 @@ stages:
|
||||
./build.sh --backend -f net6.0 -r win-x64
|
||||
TEST_DIR=_tests/net6.0/win-x64/publish/ ./test.sh Windows Unit Coverage
|
||||
displayName: Coverage Unit Tests
|
||||
- task: SonarCloudAnalyze@2
|
||||
- task: SonarCloudAnalyze@3
|
||||
condition: eq(variables['System.PullRequest.IsFork'], 'False')
|
||||
displayName: Publish SonarCloud Results
|
||||
- task: reportgenerator@5.3.11
|
||||
|
||||
@@ -182,7 +182,7 @@ module.exports = (env) => {
|
||||
loose: true,
|
||||
debug: false,
|
||||
useBuiltIns: 'entry',
|
||||
corejs: 3
|
||||
corejs: '3.39'
|
||||
}
|
||||
]
|
||||
]
|
||||
|
||||
@@ -165,7 +165,8 @@ function HistoryDetails(props) {
|
||||
|
||||
if (eventType === 'downloadFailed') {
|
||||
const {
|
||||
message
|
||||
message,
|
||||
indexer
|
||||
} = data;
|
||||
|
||||
return (
|
||||
@@ -177,11 +178,21 @@ function HistoryDetails(props) {
|
||||
/>
|
||||
|
||||
{
|
||||
!!message &&
|
||||
indexer ?
|
||||
<DescriptionListItem
|
||||
title={translate('Indexer')}
|
||||
data={indexer}
|
||||
/> :
|
||||
null
|
||||
}
|
||||
|
||||
{
|
||||
message ?
|
||||
<DescriptionListItem
|
||||
title={translate('Message')}
|
||||
data={message}
|
||||
/>
|
||||
/> :
|
||||
null
|
||||
}
|
||||
</DescriptionList>
|
||||
);
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import ModelBase from 'App/ModelBase';
|
||||
|
||||
export type AuthorStatus = 'continuing' | 'ended';
|
||||
|
||||
interface Author extends ModelBase {
|
||||
added: string;
|
||||
genres: string[];
|
||||
@@ -10,6 +12,7 @@ interface Author extends ModelBase {
|
||||
metadataProfileId: number;
|
||||
rootFolderPath: string;
|
||||
sortName: string;
|
||||
status: AuthorStatus;
|
||||
tags: number[];
|
||||
authorName: string;
|
||||
isSaving?: boolean;
|
||||
|
||||
21
frontend/src/Author/AuthorStatus.ts
Normal file
21
frontend/src/Author/AuthorStatus.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import { AuthorStatus } from 'Author/Author';
|
||||
import { icons } from 'Helpers/Props';
|
||||
import translate from 'Utilities/String/translate';
|
||||
|
||||
export function getAuthorStatusDetails(status: AuthorStatus) {
|
||||
let statusDetails = {
|
||||
icon: icons.AUTHOR_CONTINUING,
|
||||
title: translate('StatusEndedContinuing'),
|
||||
message: translate('ContinuingMoreBooksAreExpected'),
|
||||
};
|
||||
|
||||
if (status === 'ended') {
|
||||
statusDetails = {
|
||||
icon: icons.AUTHOR_ENDED,
|
||||
title: translate('StatusEndedEnded'),
|
||||
message: translate('ContinuingNoAdditionalBooksAreExpected'),
|
||||
};
|
||||
}
|
||||
|
||||
return statusDetails;
|
||||
}
|
||||
@@ -7,6 +7,7 @@ import AuthorHistoryTable from 'Author/History/AuthorHistoryTable';
|
||||
import MonitoringOptionsModal from 'Author/MonitoringOptions/MonitoringOptionsModal';
|
||||
import BookEditorFooter from 'Book/Editor/BookEditorFooter';
|
||||
import BookFileEditorTable from 'BookFile/Editor/BookFileEditorTable';
|
||||
import Alert from 'Components/Alert';
|
||||
import IconButton from 'Components/Link/IconButton';
|
||||
import Link from 'Components/Link/Link';
|
||||
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
|
||||
@@ -17,7 +18,7 @@ import PageToolbarButton from 'Components/Page/Toolbar/PageToolbarButton';
|
||||
import PageToolbarSection from 'Components/Page/Toolbar/PageToolbarSection';
|
||||
import PageToolbarSeparator from 'Components/Page/Toolbar/PageToolbarSeparator';
|
||||
import SwipeHeaderConnector from 'Components/Swipe/SwipeHeaderConnector';
|
||||
import { align, icons } from 'Helpers/Props';
|
||||
import { align, icons, kinds } from 'Helpers/Props';
|
||||
import InteractiveSearchFilterMenuConnector from 'InteractiveSearch/InteractiveSearchFilterMenuConnector';
|
||||
import InteractiveSearchTable from 'InteractiveSearch/InteractiveSearchTable';
|
||||
import OrganizePreviewModalConnector from 'Organize/OrganizePreviewModalConnector';
|
||||
@@ -412,22 +413,25 @@ class AuthorDetails extends Component {
|
||||
|
||||
<div className={styles.contentContainer}>
|
||||
{
|
||||
!isPopulated && !booksError && !bookFilesError &&
|
||||
<LoadingIndicator />
|
||||
!isPopulated && !booksError && !bookFilesError ?
|
||||
<LoadingIndicator /> :
|
||||
null
|
||||
}
|
||||
|
||||
{
|
||||
!isFetching && booksError &&
|
||||
<div>
|
||||
!isFetching && booksError ?
|
||||
<Alert kind={kinds.DANGER}>
|
||||
{translate('LoadingBooksFailed')}
|
||||
</div>
|
||||
</Alert> :
|
||||
null
|
||||
}
|
||||
|
||||
{
|
||||
!isFetching && bookFilesError &&
|
||||
<div>
|
||||
!isFetching && bookFilesError ?
|
||||
<Alert kind={kinds.DANGER}>
|
||||
{translate('LoadingBookFilesFailed')}
|
||||
</div>
|
||||
</Alert> :
|
||||
null
|
||||
}
|
||||
|
||||
{
|
||||
|
||||
@@ -2,6 +2,7 @@ import PropTypes from 'prop-types';
|
||||
import React, { Component } from 'react';
|
||||
import TextTruncate from 'react-text-truncate';
|
||||
import AuthorPoster from 'Author/AuthorPoster';
|
||||
import { getAuthorStatusDetails } from 'Author/AuthorStatus';
|
||||
import HeartRating from 'Components/HeartRating';
|
||||
import Icon from 'Components/Icon';
|
||||
import Label from 'Components/Label';
|
||||
@@ -11,7 +12,7 @@ import MonitorToggleButton from 'Components/MonitorToggleButton';
|
||||
import Popover from 'Components/Tooltip/Popover';
|
||||
import Tooltip from 'Components/Tooltip/Tooltip';
|
||||
import { icons, kinds, sizes, tooltipPositions } from 'Helpers/Props';
|
||||
import QualityProfileNameConnector from 'Settings/Profiles/Quality/QualityProfileNameConnector';
|
||||
import QualityProfileName from 'Settings/Profiles/Quality/QualityProfileName';
|
||||
import fonts from 'Styles/Variables/fonts';
|
||||
import formatBytes from 'Utilities/Number/formatBytes';
|
||||
import stripHtml from 'Utilities/String/stripHtml';
|
||||
@@ -87,11 +88,11 @@ class AuthorDetailsHeader extends Component {
|
||||
titleWidth
|
||||
} = this.state;
|
||||
|
||||
const statusDetails = getAuthorStatusDetails(status);
|
||||
|
||||
const fanartUrl = getFanartUrl(images);
|
||||
const marqueeWidth = titleWidth - (isSmallScreen ? 85 : 160);
|
||||
|
||||
const continuing = status === 'continuing';
|
||||
|
||||
let bookFilesCountMessage = translate('BookFilesCountMessage');
|
||||
|
||||
if (bookFileCount === 1) {
|
||||
@@ -213,7 +214,7 @@ class AuthorDetailsHeader extends Component {
|
||||
|
||||
<span className={styles.qualityProfileName}>
|
||||
{
|
||||
<QualityProfileNameConnector
|
||||
<QualityProfileName
|
||||
qualityProfileId={qualityProfileId}
|
||||
/>
|
||||
}
|
||||
@@ -236,16 +237,16 @@ class AuthorDetailsHeader extends Component {
|
||||
|
||||
<Label
|
||||
className={styles.detailsLabel}
|
||||
title={continuing ? translate('ContinuingMoreBooksAreExpected') : translate('ContinuingNoAdditionalBooksAreExpected')}
|
||||
title={statusDetails.message}
|
||||
size={sizes.LARGE}
|
||||
>
|
||||
<Icon
|
||||
name={continuing ? icons.AUTHOR_CONTINUING : icons.AUTHOR_ENDED}
|
||||
name={statusDetails.icon}
|
||||
size={17}
|
||||
/>
|
||||
|
||||
<span className={styles.qualityProfileName}>
|
||||
{continuing ? 'Continuing' : 'Deceased'}
|
||||
{statusDetails.title}
|
||||
</span>
|
||||
</Label>
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import PropTypes from 'prop-types';
|
||||
import React from 'react';
|
||||
import { getAuthorStatusDetails } from 'Author/AuthorStatus';
|
||||
import Icon from 'Components/Icon';
|
||||
import VirtualTableRowCell from 'Components/Table/Cells/TableRowCell';
|
||||
import { icons } from 'Helpers/Props';
|
||||
@@ -15,6 +16,8 @@ function AuthorStatusCell(props) {
|
||||
...otherProps
|
||||
} = props;
|
||||
|
||||
const statusDetails = getAuthorStatusDetails(status);
|
||||
|
||||
return (
|
||||
<Component
|
||||
className={className}
|
||||
@@ -28,8 +31,8 @@ function AuthorStatusCell(props) {
|
||||
|
||||
<Icon
|
||||
className={styles.statusIcon}
|
||||
name={status === 'ended' ? icons.AUTHOR_ENDED : icons.AUTHOR_CONTINUING}
|
||||
title={status === 'ended' ? translate('StatusEndedDeceased') : translate('StatusEndedContinuing')}
|
||||
name={statusDetails.icon}
|
||||
title={`${statusDetails.title}: ${statusDetails.message}`}
|
||||
/>
|
||||
</Component>
|
||||
);
|
||||
|
||||
@@ -2,6 +2,7 @@ import PropTypes from 'prop-types';
|
||||
import React from 'react';
|
||||
import Button from 'Components/Link/Button';
|
||||
import { kinds } from 'Helpers/Props';
|
||||
import translate from 'Utilities/String/translate';
|
||||
import styles from './NoAuthor.css';
|
||||
|
||||
function NoAuthor(props) {
|
||||
@@ -31,7 +32,7 @@ function NoAuthor(props) {
|
||||
to="/settings/mediamanagement"
|
||||
kind={kinds.PRIMARY}
|
||||
>
|
||||
Add Root Folder
|
||||
{translate('AddRootFolder')}
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
@@ -40,7 +41,7 @@ function NoAuthor(props) {
|
||||
to="/add/search"
|
||||
kind={kinds.PRIMARY}
|
||||
>
|
||||
Add New Author
|
||||
{translate('AddNewAuthor')}
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
import PropTypes from 'prop-types';
|
||||
import React, { Component } from 'react';
|
||||
import AuthorNameLink from 'Author/AuthorNameLink';
|
||||
import { getAuthorStatusDetails } from 'Author/AuthorStatus';
|
||||
import Icon from 'Components/Icon';
|
||||
import MonitorToggleButton from 'Components/MonitorToggleButton';
|
||||
import VirtualTableRowCell from 'Components/Table/Cells/VirtualTableRowCell';
|
||||
import VirtualTableSelectCell from 'Components/Table/Cells/VirtualTableSelectCell';
|
||||
import { icons } from 'Helpers/Props';
|
||||
import translate from 'Utilities/String/translate';
|
||||
import BookshelfBook from './BookshelfBook';
|
||||
import styles from './BookshelfRow.css';
|
||||
|
||||
@@ -30,6 +29,8 @@ class BookshelfRow extends Component {
|
||||
onBookMonitoredPress
|
||||
} = this.props;
|
||||
|
||||
const statusDetails = getAuthorStatusDetails(status);
|
||||
|
||||
return (
|
||||
<>
|
||||
<VirtualTableSelectCell
|
||||
@@ -52,8 +53,8 @@ class BookshelfRow extends Component {
|
||||
<VirtualTableRowCell className={styles.status}>
|
||||
<Icon
|
||||
className={styles.statusIcon}
|
||||
name={status === 'ended' ? icons.AUTHOR_ENDED : icons.AUTHOR_CONTINUING}
|
||||
title={status === 'ended' ? translate('StatusEndedEnded') : translate('StatusEndedContinuing')}
|
||||
name={statusDetails.icon}
|
||||
title={statusDetails.title}
|
||||
/>
|
||||
</VirtualTableRowCell>
|
||||
|
||||
|
||||
@@ -20,6 +20,8 @@ import HintedSelectInputSelectedValue from './HintedSelectInputSelectedValue';
|
||||
import TextInput from './TextInput';
|
||||
import styles from './EnhancedSelectInput.css';
|
||||
|
||||
const MINIMUM_DISTANCE_FROM_EDGE = 10;
|
||||
|
||||
function isArrowKey(keyCode) {
|
||||
return keyCode === keyCodes.UP_ARROW || keyCode === keyCodes.DOWN_ARROW;
|
||||
}
|
||||
@@ -137,18 +139,9 @@ class EnhancedSelectInput extends Component {
|
||||
// Listeners
|
||||
|
||||
onComputeMaxHeight = (data) => {
|
||||
const {
|
||||
top,
|
||||
bottom
|
||||
} = data.offsets.reference;
|
||||
|
||||
const windowHeight = window.innerHeight;
|
||||
|
||||
if ((/^botton/).test(data.placement)) {
|
||||
data.styles.maxHeight = windowHeight - bottom;
|
||||
} else {
|
||||
data.styles.maxHeight = top;
|
||||
}
|
||||
data.styles.maxHeight = windowHeight - MINIMUM_DISTANCE_FROM_EDGE;
|
||||
|
||||
return data;
|
||||
};
|
||||
@@ -457,6 +450,10 @@ class EnhancedSelectInput extends Component {
|
||||
order: 851,
|
||||
enabled: true,
|
||||
fn: this.onComputeMaxHeight
|
||||
},
|
||||
preventOverflow: {
|
||||
enabled: true,
|
||||
boundariesElement: 'viewport'
|
||||
}
|
||||
}}
|
||||
>
|
||||
|
||||
@@ -28,8 +28,7 @@ function createMapStateToProps() {
|
||||
if (includeNoChange) {
|
||||
values.unshift({
|
||||
key: 'noChange',
|
||||
value: '',
|
||||
name: translate('NoChange'),
|
||||
value: translate('NoChange'),
|
||||
isDisabled: includeNoChangeDisabled,
|
||||
isMissing: false
|
||||
});
|
||||
@@ -39,7 +38,6 @@ function createMapStateToProps() {
|
||||
values.push({
|
||||
key: '',
|
||||
value: '',
|
||||
name: '',
|
||||
isDisabled: true,
|
||||
isHidden: true
|
||||
});
|
||||
@@ -56,8 +54,7 @@ function createMapStateToProps() {
|
||||
|
||||
values.push({
|
||||
key: ADD_NEW_KEY,
|
||||
value: '',
|
||||
name: 'Add a new path'
|
||||
value: 'Add a new path'
|
||||
});
|
||||
|
||||
return {
|
||||
@@ -105,6 +102,27 @@ class RootFolderSelectInputConnector extends Component {
|
||||
}
|
||||
}
|
||||
|
||||
componentDidUpdate(prevProps) {
|
||||
const {
|
||||
name,
|
||||
value,
|
||||
values,
|
||||
onChange
|
||||
} = this.props;
|
||||
|
||||
if (prevProps.values === values) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!value && values.length && values.some((v) => !!v.key && v.key !== ADD_NEW_KEY)) {
|
||||
const defaultValue = values[0];
|
||||
|
||||
if (defaultValue.key !== ADD_NEW_KEY) {
|
||||
onChange({ name, value: defaultValue.key });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Render
|
||||
|
||||
|
||||
@@ -13,6 +13,15 @@
|
||||
}
|
||||
}
|
||||
|
||||
.value {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.authorFolder {
|
||||
flex: 0 0 auto;
|
||||
color: var(--disabledColor);
|
||||
}
|
||||
|
||||
.freeSpace {
|
||||
margin-left: 15px;
|
||||
color: var(--darkGray);
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
// This file is automatically generated.
|
||||
// Please do not change this file!
|
||||
interface CssExports {
|
||||
'authorFolder': string;
|
||||
'freeSpace': string;
|
||||
'isMissing': string;
|
||||
'isMobile': string;
|
||||
'optionText': string;
|
||||
'value': string;
|
||||
}
|
||||
export const cssExports: CssExports;
|
||||
export default cssExports;
|
||||
|
||||
@@ -7,18 +7,24 @@ import styles from './RootFolderSelectInputOption.css';
|
||||
|
||||
function RootFolderSelectInputOption(props) {
|
||||
const {
|
||||
id,
|
||||
value,
|
||||
name,
|
||||
freeSpace,
|
||||
authorFolder,
|
||||
isMissing,
|
||||
isMobile,
|
||||
isWindows,
|
||||
...otherProps
|
||||
} = props;
|
||||
|
||||
const text = value === '' ? name : `${name} [${value}]`;
|
||||
const slashCharacter = isWindows ? '\\' : '/';
|
||||
|
||||
const text = name === '' ? value : `[${name}] ${value}`;
|
||||
|
||||
return (
|
||||
<EnhancedSelectInputOption
|
||||
id={id}
|
||||
isMobile={isMobile}
|
||||
{...otherProps}
|
||||
>
|
||||
@@ -27,7 +33,18 @@ function RootFolderSelectInputOption(props) {
|
||||
isMobile && styles.isMobile
|
||||
)}
|
||||
>
|
||||
<div>{text}</div>
|
||||
<div className={styles.value}>
|
||||
{text}
|
||||
|
||||
{
|
||||
authorFolder && id !== 'addNew' ?
|
||||
<div className={styles.authorFolder}>
|
||||
{slashCharacter}
|
||||
{authorFolder}
|
||||
</div> :
|
||||
null
|
||||
}
|
||||
</div>
|
||||
|
||||
{
|
||||
freeSpace == null ?
|
||||
@@ -50,11 +67,18 @@ function RootFolderSelectInputOption(props) {
|
||||
}
|
||||
|
||||
RootFolderSelectInputOption.propTypes = {
|
||||
id: PropTypes.string.isRequired,
|
||||
name: PropTypes.string.isRequired,
|
||||
value: PropTypes.string.isRequired,
|
||||
freeSpace: PropTypes.number,
|
||||
authorFolder: PropTypes.string,
|
||||
isMissing: PropTypes.bool,
|
||||
isMobile: PropTypes.bool.isRequired
|
||||
isMobile: PropTypes.bool.isRequired,
|
||||
isWindows: PropTypes.bool
|
||||
};
|
||||
|
||||
RootFolderSelectInputOption.defaultProps = {
|
||||
name: ''
|
||||
};
|
||||
|
||||
export default RootFolderSelectInputOption;
|
||||
|
||||
@@ -7,10 +7,20 @@
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.pathContainer {
|
||||
@add-mixin truncate;
|
||||
display: flex;
|
||||
flex: 1 0 0;
|
||||
}
|
||||
|
||||
.path {
|
||||
@add-mixin truncate;
|
||||
flex: 0 1 auto;
|
||||
}
|
||||
|
||||
flex: 1 0 0;
|
||||
.authorFolder {
|
||||
flex: 0 1 auto;
|
||||
color: var(--disabledColor);
|
||||
}
|
||||
|
||||
.freeSpace {
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
// This file is automatically generated.
|
||||
// Please do not change this file!
|
||||
interface CssExports {
|
||||
'authorFolder': string;
|
||||
'freeSpace': string;
|
||||
'path': string;
|
||||
'pathContainer': string;
|
||||
'selectedValue': string;
|
||||
}
|
||||
export const cssExports: CssExports;
|
||||
|
||||
@@ -9,19 +9,34 @@ function RootFolderSelectInputSelectedValue(props) {
|
||||
name,
|
||||
value,
|
||||
freeSpace,
|
||||
authorFolder,
|
||||
includeFreeSpace,
|
||||
isWindows,
|
||||
...otherProps
|
||||
} = props;
|
||||
|
||||
const text = value === '' ? name : `${name} [${value}]`;
|
||||
const slashCharacter = isWindows ? '\\' : '/';
|
||||
|
||||
const text = name === '' ? value : `[${name}] ${value}`;
|
||||
|
||||
return (
|
||||
<EnhancedSelectInputSelectedValue
|
||||
className={styles.selectedValue}
|
||||
{...otherProps}
|
||||
>
|
||||
<div className={styles.path}>
|
||||
{text}
|
||||
<div className={styles.pathContainer}>
|
||||
<div className={styles.path}>
|
||||
{text}
|
||||
</div>
|
||||
|
||||
{
|
||||
authorFolder ?
|
||||
<div className={styles.authorFolder}>
|
||||
{slashCharacter}
|
||||
{authorFolder}
|
||||
</div> :
|
||||
null
|
||||
}
|
||||
</div>
|
||||
|
||||
{
|
||||
@@ -38,10 +53,13 @@ RootFolderSelectInputSelectedValue.propTypes = {
|
||||
name: PropTypes.string,
|
||||
value: PropTypes.string,
|
||||
freeSpace: PropTypes.number,
|
||||
authorFolder: PropTypes.string,
|
||||
isWindows: PropTypes.bool,
|
||||
includeFreeSpace: PropTypes.bool.isRequired
|
||||
};
|
||||
|
||||
RootFolderSelectInputSelectedValue.defaultProps = {
|
||||
name: '',
|
||||
includeFreeSpace: true
|
||||
};
|
||||
|
||||
|
||||
@@ -52,6 +52,7 @@ class SelectInput extends Component {
|
||||
const {
|
||||
key,
|
||||
value: optionValue,
|
||||
isDisabled: optionIsDisabled = false,
|
||||
...otherOptionProps
|
||||
} = option;
|
||||
|
||||
@@ -59,6 +60,7 @@ class SelectInput extends Component {
|
||||
<option
|
||||
key={key}
|
||||
value={key}
|
||||
disabled={optionIsDisabled}
|
||||
{...otherOptionProps}
|
||||
>
|
||||
{typeof optionValue === 'function' ? optionValue() : optionValue}
|
||||
|
||||
@@ -83,13 +83,6 @@
|
||||
}
|
||||
|
||||
@media only screen and (max-width: $breakpointMedium) {
|
||||
.modal.small,
|
||||
.modal.medium {
|
||||
width: 90%;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: $breakpointSmall) {
|
||||
.modalContainer {
|
||||
position: fixed;
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
line-height: 1.52857143;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: $breakpointSmall) {
|
||||
@media only screen and (max-width: $breakpointMedium) {
|
||||
.cell {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: $breakpointSmall) {
|
||||
@media only screen and (max-width: $breakpointMedium) {
|
||||
.cell {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: $breakpointSmall) {
|
||||
@media only screen and (max-width: $breakpointMedium) {
|
||||
.tableContainer {
|
||||
min-width: 100%;
|
||||
width: fit-content;
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: $breakpointSmall) {
|
||||
@media only screen and (max-width: $breakpointMedium) {
|
||||
.headerCell {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
height: 25px;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: $breakpointSmall) {
|
||||
@media only screen and (max-width: $breakpointMedium) {
|
||||
.pager {
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: $breakpointSmall) {
|
||||
@media only screen and (max-width: $breakpointMedium) {
|
||||
.headerCell {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
@@ -35,11 +35,12 @@
|
||||
.message {
|
||||
margin-top: 30px;
|
||||
text-align: center;
|
||||
font-weight: 300;
|
||||
font-size: $largeFontSize;
|
||||
}
|
||||
|
||||
.helpText {
|
||||
margin-bottom: 10px;
|
||||
font-weight: 300;
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
|
||||
@@ -82,7 +82,8 @@ class AddNewItem extends Component {
|
||||
render() {
|
||||
const {
|
||||
error,
|
||||
items
|
||||
items,
|
||||
hasExistingAuthors
|
||||
} = this.props;
|
||||
|
||||
const term = this.state.term;
|
||||
@@ -186,7 +187,8 @@ class AddNewItem extends Component {
|
||||
}
|
||||
|
||||
{
|
||||
!term &&
|
||||
term ?
|
||||
null :
|
||||
<div className={styles.message}>
|
||||
<div className={styles.helpText}>
|
||||
{translate('ItsEasyToAddANewAuthorOrBookJustStartTypingTheNameOfTheItemYouWantToAdd')}
|
||||
@@ -199,6 +201,24 @@ class AddNewItem extends Component {
|
||||
</div>
|
||||
}
|
||||
|
||||
{
|
||||
!term && !hasExistingAuthors ?
|
||||
<div className={styles.message}>
|
||||
<div className={styles.noAuthorsText}>
|
||||
You haven't added any authors yet, do you want to add an existing library location (Root Folder) and update?
|
||||
</div>
|
||||
<div>
|
||||
<Button
|
||||
to="/settings/mediamanagement"
|
||||
kind={kinds.PRIMARY}
|
||||
>
|
||||
{translate('AddRootFolder')}
|
||||
</Button>
|
||||
</div>
|
||||
</div> :
|
||||
null
|
||||
}
|
||||
|
||||
<div />
|
||||
</PageContentBody>
|
||||
</PageContent>
|
||||
@@ -213,6 +233,7 @@ AddNewItem.propTypes = {
|
||||
isAdding: PropTypes.bool.isRequired,
|
||||
addError: PropTypes.object,
|
||||
items: PropTypes.arrayOf(PropTypes.object).isRequired,
|
||||
hasExistingAuthors: PropTypes.bool.isRequired,
|
||||
onSearchChange: PropTypes.func.isRequired,
|
||||
onClearSearch: PropTypes.func.isRequired
|
||||
};
|
||||
|
||||
@@ -10,13 +10,15 @@ import AddNewItem from './AddNewItem';
|
||||
function createMapStateToProps() {
|
||||
return createSelector(
|
||||
(state) => state.search,
|
||||
(state) => state.authors.items.length,
|
||||
(state) => state.router.location,
|
||||
(search, location) => {
|
||||
(search, existingAuthorsCount, location) => {
|
||||
const { params } = parseUrl(location.search);
|
||||
|
||||
return {
|
||||
...search,
|
||||
term: params.term,
|
||||
...search
|
||||
hasExistingAuthors: existingAuthorsCount > 0
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
@@ -9,6 +9,7 @@ import ModalContent from 'Components/Modal/ModalContent';
|
||||
import ModalFooter from 'Components/Modal/ModalFooter';
|
||||
import ModalHeader from 'Components/Modal/ModalHeader';
|
||||
import { kinds } from 'Helpers/Props';
|
||||
import translate from 'Utilities/String/translate';
|
||||
import AddAuthorOptionsForm from '../Common/AddAuthorOptionsForm.js';
|
||||
import styles from './AddNewAuthorModalContent.css';
|
||||
|
||||
@@ -54,7 +55,7 @@ class AddNewAuthorModalContent extends Component {
|
||||
return (
|
||||
<ModalContent onModalClose={onModalClose}>
|
||||
<ModalHeader>
|
||||
Add new Author
|
||||
{translate('AddNewAuthor')}
|
||||
</ModalHeader>
|
||||
|
||||
<ModalBody>
|
||||
@@ -133,7 +134,7 @@ class AddNewAuthorModalContent extends Component {
|
||||
|
||||
AddNewAuthorModalContent.propTypes = {
|
||||
authorName: PropTypes.string.isRequired,
|
||||
disambiguation: PropTypes.string.isRequired,
|
||||
disambiguation: PropTypes.string,
|
||||
overview: PropTypes.string,
|
||||
images: PropTypes.arrayOf(PropTypes.object).isRequired,
|
||||
isAdding: PropTypes.bool.isRequired,
|
||||
|
||||
@@ -4,6 +4,7 @@ import { connect } from 'react-redux';
|
||||
import { createSelector } from 'reselect';
|
||||
import { addAuthor, setAuthorAddDefault } from 'Store/Actions/searchActions';
|
||||
import createDimensionsSelector from 'Store/Selectors/createDimensionsSelector';
|
||||
import createSystemStatusSelector from 'Store/Selectors/createSystemStatusSelector';
|
||||
import selectSettings from 'Store/Selectors/selectSettings';
|
||||
import AddNewAuthorModalContent from './AddNewAuthorModalContent';
|
||||
|
||||
@@ -12,7 +13,8 @@ function createMapStateToProps() {
|
||||
(state) => state.search,
|
||||
(state) => state.settings.metadataProfiles,
|
||||
createDimensionsSelector(),
|
||||
(searchState, metadataProfiles, dimensions) => {
|
||||
createSystemStatusSelector(),
|
||||
(searchState, metadataProfiles, dimensions, systemStatus) => {
|
||||
const {
|
||||
isAdding,
|
||||
addError,
|
||||
@@ -32,6 +34,7 @@ function createMapStateToProps() {
|
||||
isSmallScreen: dimensions.isSmallScreen,
|
||||
validationErrors,
|
||||
validationWarnings,
|
||||
isWindows: systemStatus.isWindows,
|
||||
...settings
|
||||
};
|
||||
}
|
||||
|
||||
@@ -78,6 +78,7 @@ class AddNewAuthorSearchResult extends Component {
|
||||
status,
|
||||
overview,
|
||||
ratings,
|
||||
folder,
|
||||
images,
|
||||
isExistingAuthor,
|
||||
isSmallScreen
|
||||
@@ -205,6 +206,7 @@ class AddNewAuthorSearchResult extends Component {
|
||||
disambiguation={disambiguation}
|
||||
year={year}
|
||||
overview={overview}
|
||||
folder={folder}
|
||||
images={images}
|
||||
onModalClose={this.onAddAuthorModalClose}
|
||||
/>
|
||||
@@ -222,6 +224,7 @@ AddNewAuthorSearchResult.propTypes = {
|
||||
status: PropTypes.string.isRequired,
|
||||
overview: PropTypes.string,
|
||||
ratings: PropTypes.object.isRequired,
|
||||
folder: PropTypes.string.isRequired,
|
||||
images: PropTypes.arrayOf(PropTypes.object).isRequired,
|
||||
isExistingAuthor: PropTypes.bool.isRequired,
|
||||
isSmallScreen: PropTypes.bool.isRequired
|
||||
|
||||
@@ -10,6 +10,7 @@ import ModalFooter from 'Components/Modal/ModalFooter';
|
||||
import ModalHeader from 'Components/Modal/ModalHeader';
|
||||
import { kinds } from 'Helpers/Props';
|
||||
import stripHtml from 'Utilities/String/stripHtml';
|
||||
import translate from 'Utilities/String/translate';
|
||||
import AddAuthorOptionsForm from '../Common/AddAuthorOptionsForm.js';
|
||||
import styles from './AddNewBookModalContent.css';
|
||||
|
||||
@@ -58,7 +59,7 @@ class AddNewBookModalContent extends Component {
|
||||
return (
|
||||
<ModalContent onModalClose={onModalClose}>
|
||||
<ModalHeader>
|
||||
Add new Book
|
||||
{translate('AddNewBook')}
|
||||
</ModalHeader>
|
||||
|
||||
<ModalBody>
|
||||
|
||||
@@ -4,6 +4,7 @@ import { connect } from 'react-redux';
|
||||
import { createSelector } from 'reselect';
|
||||
import { addBook, setBookAddDefault } from 'Store/Actions/searchActions';
|
||||
import createDimensionsSelector from 'Store/Selectors/createDimensionsSelector';
|
||||
import createSystemStatusSelector from 'Store/Selectors/createSystemStatusSelector';
|
||||
import selectSettings from 'Store/Selectors/selectSettings';
|
||||
import AddNewBookModalContent from './AddNewBookModalContent';
|
||||
|
||||
@@ -13,7 +14,8 @@ function createMapStateToProps() {
|
||||
(state) => state.search,
|
||||
(state) => state.settings.metadataProfiles,
|
||||
createDimensionsSelector(),
|
||||
(isExistingAuthor, searchState, metadataProfiles, dimensions) => {
|
||||
createSystemStatusSelector(),
|
||||
(isExistingAuthor, searchState, metadataProfiles, dimensions, systemStatus) => {
|
||||
const {
|
||||
isAdding,
|
||||
addError,
|
||||
@@ -33,6 +35,7 @@ function createMapStateToProps() {
|
||||
isSmallScreen: dimensions.isSmallScreen,
|
||||
validationErrors,
|
||||
validationWarnings,
|
||||
isWindows: systemStatus.isWindows,
|
||||
...settings
|
||||
};
|
||||
}
|
||||
|
||||
@@ -203,6 +203,7 @@ class AddNewBookSearchResult extends Component {
|
||||
disambiguation={disambiguation}
|
||||
authorName={author.authorName}
|
||||
overview={overview}
|
||||
folder={author.folder}
|
||||
images={images}
|
||||
onModalClose={this.onAddBookModalClose}
|
||||
/>
|
||||
|
||||
@@ -39,7 +39,9 @@ class AddAuthorOptionsForm extends Component {
|
||||
includeNoneMetadataProfile,
|
||||
includeSpecificBookMonitor,
|
||||
showMetadataProfile,
|
||||
folder,
|
||||
tags,
|
||||
isWindows,
|
||||
onInputChange,
|
||||
...otherProps
|
||||
} = this.props;
|
||||
@@ -54,6 +56,15 @@ class AddAuthorOptionsForm extends Component {
|
||||
<FormInputGroup
|
||||
type={inputTypes.ROOT_FOLDER_SELECT}
|
||||
name="rootFolderPath"
|
||||
valueOptions={{
|
||||
authorFolder: folder,
|
||||
isWindows
|
||||
}}
|
||||
selectedValueOptions={{
|
||||
authorFolder: folder,
|
||||
isWindows
|
||||
}}
|
||||
helpText={translate('AddNewAuthorRootFolderHelpText', { folder })}
|
||||
onChange={onInputChange}
|
||||
{...rootFolderPath}
|
||||
/>
|
||||
@@ -179,8 +190,14 @@ AddAuthorOptionsForm.propTypes = {
|
||||
showMetadataProfile: PropTypes.bool.isRequired,
|
||||
includeNoneMetadataProfile: PropTypes.bool.isRequired,
|
||||
includeSpecificBookMonitor: PropTypes.bool.isRequired,
|
||||
folder: PropTypes.string.isRequired,
|
||||
tags: PropTypes.object.isRequired,
|
||||
isWindows: PropTypes.bool.isRequired,
|
||||
onInputChange: PropTypes.func.isRequired
|
||||
};
|
||||
|
||||
AddAuthorOptionsForm.defaultProps = {
|
||||
includeSpecificBookMonitor: false
|
||||
};
|
||||
|
||||
export default AddAuthorOptionsForm;
|
||||
|
||||
@@ -10,11 +10,11 @@ import ModalBody from 'Components/Modal/ModalBody';
|
||||
import ModalContent from 'Components/Modal/ModalContent';
|
||||
import ModalFooter from 'Components/Modal/ModalFooter';
|
||||
import ModalHeader from 'Components/Modal/ModalHeader';
|
||||
import Column from 'Components/Table/Column';
|
||||
import Table from 'Components/Table/Table';
|
||||
import TableBody from 'Components/Table/TableBody';
|
||||
import useSelectState from 'Helpers/Hooks/useSelectState';
|
||||
import { kinds } from 'Helpers/Props';
|
||||
import SortDirection from 'Helpers/Props/SortDirection';
|
||||
import {
|
||||
bulkDeleteDownloadClients,
|
||||
bulkEditDownloadClients,
|
||||
@@ -35,7 +35,7 @@ type OnSelectedChangeCallback = React.ComponentProps<
|
||||
typeof ManageDownloadClientsModalRow
|
||||
>['onSelectedChange'];
|
||||
|
||||
const COLUMNS = [
|
||||
const COLUMNS: Column[] = [
|
||||
{
|
||||
name: 'name',
|
||||
label: () => translate('Name'),
|
||||
@@ -82,8 +82,6 @@ const COLUMNS = [
|
||||
|
||||
interface ManageDownloadClientsModalContentProps {
|
||||
onModalClose(): void;
|
||||
sortKey?: string;
|
||||
sortDirection?: SortDirection;
|
||||
}
|
||||
|
||||
function ManageDownloadClientsModalContent(
|
||||
|
||||
@@ -76,7 +76,7 @@ function EditImportListExclusionModalContent(props) {
|
||||
|
||||
<FormGroup>
|
||||
<FormLabel>
|
||||
{translate('MusicbrainzId')}
|
||||
{translate('ForeignId')}
|
||||
</FormLabel>
|
||||
|
||||
<FormInputGroup
|
||||
|
||||
@@ -10,11 +10,11 @@ import ModalBody from 'Components/Modal/ModalBody';
|
||||
import ModalContent from 'Components/Modal/ModalContent';
|
||||
import ModalFooter from 'Components/Modal/ModalFooter';
|
||||
import ModalHeader from 'Components/Modal/ModalHeader';
|
||||
import Column from 'Components/Table/Column';
|
||||
import Table from 'Components/Table/Table';
|
||||
import TableBody from 'Components/Table/TableBody';
|
||||
import useSelectState from 'Helpers/Hooks/useSelectState';
|
||||
import { kinds } from 'Helpers/Props';
|
||||
import SortDirection from 'Helpers/Props/SortDirection';
|
||||
import {
|
||||
bulkDeleteIndexers,
|
||||
bulkEditIndexers,
|
||||
@@ -35,7 +35,7 @@ type OnSelectedChangeCallback = React.ComponentProps<
|
||||
typeof ManageIndexersModalRow
|
||||
>['onSelectedChange'];
|
||||
|
||||
const COLUMNS = [
|
||||
const COLUMNS: Column[] = [
|
||||
{
|
||||
name: 'name',
|
||||
label: () => translate('Name'),
|
||||
@@ -82,8 +82,6 @@ const COLUMNS = [
|
||||
|
||||
interface ManageIndexersModalContentProps {
|
||||
onModalClose(): void;
|
||||
sortKey?: string;
|
||||
sortDirection?: SortDirection;
|
||||
}
|
||||
|
||||
function ManageIndexersModalContent(props: ManageIndexersModalContentProps) {
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
import React from 'react';
|
||||
import { useSelector } from 'react-redux';
|
||||
import { createQualityProfileSelectorForHook } from 'Store/Selectors/createQualityProfileSelector';
|
||||
import translate from 'Utilities/String/translate';
|
||||
|
||||
interface QualityProfileNameProps {
|
||||
qualityProfileId: number;
|
||||
}
|
||||
|
||||
function QualityProfileName({ qualityProfileId }: QualityProfileNameProps) {
|
||||
const qualityProfile = useSelector(
|
||||
createQualityProfileSelectorForHook(qualityProfileId)
|
||||
);
|
||||
|
||||
return <span>{qualityProfile?.name ?? translate('Unknown')}</span>;
|
||||
}
|
||||
|
||||
export default QualityProfileName;
|
||||
@@ -1,31 +0,0 @@
|
||||
import PropTypes from 'prop-types';
|
||||
import React from 'react';
|
||||
import { connect } from 'react-redux';
|
||||
import { createSelector } from 'reselect';
|
||||
import createQualityProfileSelector from 'Store/Selectors/createQualityProfileSelector';
|
||||
|
||||
function createMapStateToProps() {
|
||||
return createSelector(
|
||||
createQualityProfileSelector(),
|
||||
(qualityProfile) => {
|
||||
return {
|
||||
name: qualityProfile.name
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function QualityProfileNameConnector({ name, ...otherProps }) {
|
||||
return (
|
||||
<span>
|
||||
{name}
|
||||
</span>
|
||||
);
|
||||
}
|
||||
|
||||
QualityProfileNameConnector.propTypes = {
|
||||
qualityProfileId: PropTypes.number.isRequired,
|
||||
name: PropTypes.string.isRequired
|
||||
};
|
||||
|
||||
export default connect(createMapStateToProps)(QualityProfileNameConnector);
|
||||
@@ -45,6 +45,12 @@ export const defaultState = {
|
||||
isSortable: true,
|
||||
isVisible: true
|
||||
},
|
||||
{
|
||||
name: 'books.lastSearchTime',
|
||||
label: 'Last Searched',
|
||||
isSortable: true,
|
||||
isVisible: false
|
||||
},
|
||||
{
|
||||
name: 'actions',
|
||||
columnLabel: 'Actions',
|
||||
@@ -108,6 +114,12 @@ export const defaultState = {
|
||||
isSortable: true,
|
||||
isVisible: true
|
||||
},
|
||||
{
|
||||
name: 'books.lastSearchTime',
|
||||
label: 'Last Searched',
|
||||
isSortable: true,
|
||||
isVisible: false
|
||||
},
|
||||
{
|
||||
name: 'actions',
|
||||
columnLabel: 'Actions',
|
||||
|
||||
@@ -27,6 +27,12 @@ export default function translate(
|
||||
key: string,
|
||||
tokens: Record<string, string | number | boolean> = {}
|
||||
) {
|
||||
const { isProduction = true } = window.Readarr;
|
||||
|
||||
if (!isProduction && !(key in translations)) {
|
||||
console.warn(`Missing translation for key: ${key}`);
|
||||
}
|
||||
|
||||
const translation = translations[key] || key;
|
||||
|
||||
tokens.appName = 'Readarr';
|
||||
|
||||
@@ -131,13 +131,15 @@ class CutoffUnmetConnector extends Component {
|
||||
onSearchSelectedPress = (selected) => {
|
||||
this.props.executeCommand({
|
||||
name: commandNames.BOOK_SEARCH,
|
||||
bookIds: selected
|
||||
bookIds: selected,
|
||||
commandFinished: this.repopulate
|
||||
});
|
||||
};
|
||||
|
||||
onSearchAllCutoffUnmetPress = () => {
|
||||
this.props.executeCommand({
|
||||
name: commandNames.CUTOFF_UNMET_BOOK_SEARCH
|
||||
name: commandNames.CUTOFF_UNMET_BOOK_SEARCH,
|
||||
commandFinished: this.repopulate
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@ function CutoffUnmetRow(props) {
|
||||
releaseDate,
|
||||
titleSlug,
|
||||
title,
|
||||
lastSearchTime,
|
||||
disambiguation,
|
||||
isSelected,
|
||||
columns,
|
||||
@@ -68,6 +69,15 @@ function CutoffUnmetRow(props) {
|
||||
);
|
||||
}
|
||||
|
||||
if (name === 'books.lastSearchTime') {
|
||||
return (
|
||||
<RelativeDateCellConnector
|
||||
key={name}
|
||||
date={lastSearchTime}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
if (name === 'releaseDate') {
|
||||
return (
|
||||
<RelativeDateCellConnector
|
||||
@@ -105,6 +115,7 @@ CutoffUnmetRow.propTypes = {
|
||||
releaseDate: PropTypes.string.isRequired,
|
||||
titleSlug: PropTypes.string.isRequired,
|
||||
title: PropTypes.string.isRequired,
|
||||
lastSearchTime: PropTypes.string,
|
||||
disambiguation: PropTypes.string,
|
||||
isSelected: PropTypes.bool,
|
||||
columns: PropTypes.arrayOf(PropTypes.object).isRequired,
|
||||
|
||||
@@ -121,13 +121,15 @@ class MissingConnector extends Component {
|
||||
onSearchSelectedPress = (selected) => {
|
||||
this.props.executeCommand({
|
||||
name: commandNames.BOOK_SEARCH,
|
||||
bookIds: selected
|
||||
bookIds: selected,
|
||||
commandFinished: this.repopulate
|
||||
});
|
||||
};
|
||||
|
||||
onSearchAllMissingPress = () => {
|
||||
this.props.executeCommand({
|
||||
name: commandNames.MISSING_BOOK_SEARCH
|
||||
name: commandNames.MISSING_BOOK_SEARCH,
|
||||
commandFinished: this.repopulate
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@ function MissingRow(props) {
|
||||
releaseDate,
|
||||
titleSlug,
|
||||
title,
|
||||
lastSearchTime,
|
||||
disambiguation,
|
||||
isSelected,
|
||||
columns,
|
||||
@@ -77,6 +78,15 @@ function MissingRow(props) {
|
||||
);
|
||||
}
|
||||
|
||||
if (name === 'books.lastSearchTime') {
|
||||
return (
|
||||
<RelativeDateCellConnector
|
||||
key={name}
|
||||
date={lastSearchTime}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
if (name === 'actions') {
|
||||
return (
|
||||
<BookSearchCellConnector
|
||||
@@ -104,6 +114,7 @@ MissingRow.propTypes = {
|
||||
releaseDate: PropTypes.string.isRequired,
|
||||
titleSlug: PropTypes.string.isRequired,
|
||||
title: PropTypes.string.isRequired,
|
||||
lastSearchTime: PropTypes.string,
|
||||
disambiguation: PropTypes.string,
|
||||
isSelected: PropTypes.bool,
|
||||
columns: PropTypes.arrayOf(PropTypes.object).isRequired,
|
||||
|
||||
1
frontend/typings/Globals.d.ts
vendored
1
frontend/typings/Globals.d.ts
vendored
@@ -7,5 +7,6 @@ interface Window {
|
||||
theme: string;
|
||||
urlBase: string;
|
||||
version: string;
|
||||
isProduction: boolean;
|
||||
};
|
||||
}
|
||||
|
||||
24
package.json
24
package.json
@@ -25,10 +25,10 @@
|
||||
"defaults"
|
||||
],
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome-free": "6.6.0",
|
||||
"@fortawesome/fontawesome-svg-core": "6.6.0",
|
||||
"@fortawesome/free-regular-svg-icons": "6.6.0",
|
||||
"@fortawesome/free-solid-svg-icons": "6.6.0",
|
||||
"@fortawesome/fontawesome-free": "6.7.1",
|
||||
"@fortawesome/fontawesome-svg-core": "6.7.1",
|
||||
"@fortawesome/free-regular-svg-icons": "6.7.1",
|
||||
"@fortawesome/free-solid-svg-icons": "6.7.1",
|
||||
"@fortawesome/react-fontawesome": "0.2.2",
|
||||
"@microsoft/signalr": "6.0.25",
|
||||
"@sentry/browser": "7.119.1",
|
||||
@@ -86,13 +86,13 @@
|
||||
"typescript": "5.1.6"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "7.25.8",
|
||||
"@babel/eslint-parser": "7.25.8",
|
||||
"@babel/plugin-proposal-export-default-from": "7.25.8",
|
||||
"@babel/core": "7.26.0",
|
||||
"@babel/eslint-parser": "7.25.9",
|
||||
"@babel/plugin-proposal-export-default-from": "7.25.9",
|
||||
"@babel/plugin-syntax-dynamic-import": "7.8.3",
|
||||
"@babel/preset-env": "7.25.8",
|
||||
"@babel/preset-react": "7.25.7",
|
||||
"@babel/preset-typescript": "7.25.7",
|
||||
"@babel/preset-env": "7.26.0",
|
||||
"@babel/preset-react": "7.26.3",
|
||||
"@babel/preset-typescript": "7.26.0",
|
||||
"@types/lodash": "4.14.195",
|
||||
"@types/react-lazyload": "3.2.3",
|
||||
"@types/redux-actions": "2.6.5",
|
||||
@@ -102,7 +102,7 @@
|
||||
"babel-loader": "9.2.1",
|
||||
"babel-plugin-inline-classnames": "2.0.1",
|
||||
"babel-plugin-transform-react-remove-prop-types": "0.4.24",
|
||||
"core-js": "3.38.1",
|
||||
"core-js": "3.39.0",
|
||||
"css-loader": "6.8.1",
|
||||
"css-modules-typescript-loader": "4.0.1",
|
||||
"eslint": "8.57.1",
|
||||
@@ -142,7 +142,7 @@
|
||||
"worker-loader": "3.0.8"
|
||||
},
|
||||
"volta": {
|
||||
"node": "16.17.0",
|
||||
"node": "20.11.1",
|
||||
"yarn": "1.22.19"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -99,6 +99,35 @@
|
||||
<RootNamespace Condition="'$(ReadarrProject)'=='true'">$(MSBuildProjectName.Replace('Readarr','NzbDrone'))</RootNamespace>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup Condition="'$(TestProject)'!='true'">
|
||||
<!-- Annotates .NET assemblies with repository information including SHA -->
|
||||
<!-- Sentry uses this to link directly to GitHub at the exact version/file/line -->
|
||||
<!-- This is built-in on .NET 8 and can be removed once the project is updated -->
|
||||
<PackageReference Include="Microsoft.SourceLink.GitHub" />
|
||||
</ItemGroup>
|
||||
|
||||
<!-- Sentry specific configuration: Only in Release mode -->
|
||||
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
|
||||
<!-- https://docs.sentry.io/platforms/dotnet/configuration/msbuild/ -->
|
||||
<!-- OrgSlug, ProjectSlug and AuthToken are required.
|
||||
They can be set below, via argument to 'msbuild -p:' or environment variable -->
|
||||
<SentryOrg></SentryOrg>
|
||||
<SentryProject></SentryProject>
|
||||
<SentryUrl></SentryUrl> <!-- If empty, assumed to be sentry.io -->
|
||||
<SentryAuthToken></SentryAuthToken> <!-- Use env var instead: SENTRY_AUTH_TOKEN -->
|
||||
|
||||
<!-- Upload PDBs to Sentry, enabling stack traces with line numbers and file paths
|
||||
without the need to deploy the application with PDBs -->
|
||||
<SentryUploadSymbols>true</SentryUploadSymbols>
|
||||
|
||||
<!-- Source Link settings -->
|
||||
<!-- https://github.com/dotnet/sourcelink/blob/main/docs/README.md#publishrepositoryurl -->
|
||||
<PublishRepositoryUrl>true</PublishRepositoryUrl>
|
||||
<!-- Embeds all source code in the respective PDB. This can make it a bit bigger but since it'll be uploaded
|
||||
to Sentry and not distributed to run on the server, it helps debug crashes while making releases smaller -->
|
||||
<EmbedAllSources>true</EmbedAllSources>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- Standard testing packages -->
|
||||
<ItemGroup Condition="'$(TestProject)'=='true'">
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" />
|
||||
|
||||
@@ -9,7 +9,8 @@
|
||||
<PackageVersion Include="DryIoc.Microsoft.DependencyInjection" Version="6.2.0" />
|
||||
<PackageVersion Include="Equ" Version="2.3.0" />
|
||||
<PackageVersion Include="FluentAssertions" Version="5.10.3" />
|
||||
<PackageVersion Include="Polly" Version="8.5.0" />
|
||||
<PackageVersion Include="IPAddressRange" Version="6.1.0" />
|
||||
<PackageVersion Include="Polly" Version="8.5.2" />
|
||||
<PackageVersion Include="Servarr.FluentMigrator.Runner" Version="3.3.2.9" />
|
||||
<PackageVersion Include="Servarr.FluentMigrator.Runner.SQLite" Version="3.3.2.9" />
|
||||
<PackageVersion Include="Servarr.FluentMigrator.Runner.Postgres" Version="3.3.2.9" />
|
||||
@@ -17,14 +18,16 @@
|
||||
<PackageVersion Include="Ical.Net" Version="4.3.1" />
|
||||
<PackageVersion Include="ImpromptuInterface" Version="7.0.1" />
|
||||
<PackageVersion Include="LazyCache" Version="2.4.0" />
|
||||
<PackageVersion Include="Mailkit" Version="3.6.0" />
|
||||
<PackageVersion Include="Mailkit" Version="4.8.0" />
|
||||
<PackageVersion Include="Microsoft.AspNetCore.SignalR.Client" Version="6.0.35" />
|
||||
<PackageVersion Include="Microsoft.Data.SqlClient" Version="2.1.7" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="6.0.2" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="6.0.1" />
|
||||
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="6.0.1" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Hosting.WindowsServices" Version="6.0.2" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Logging" Version="6.0.0" />
|
||||
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
|
||||
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="1.1.1" PrivateAssets="All" />
|
||||
<PackageVersion Include="Microsoft.Win32.Registry" Version="5.0.0" />
|
||||
<PackageVersion Include="Mono.Posix.NETStandard" Version="5.20.1.34-servarr22" />
|
||||
<PackageVersion Include="Moq" Version="4.17.2" />
|
||||
@@ -34,7 +37,7 @@
|
||||
<PackageVersion Include="NLog.Extensions.Logging" Version="5.2.3" />
|
||||
<PackageVersion Include="NLog" Version="5.1.4" />
|
||||
<PackageVersion Include="NLog.Targets.Syslog" Version="7.0.0" />
|
||||
<PackageVersion Include="Npgsql" Version="7.0.9" />
|
||||
<PackageVersion Include="Npgsql" Version="7.0.10" />
|
||||
<PackageVersion Include="NUnit3TestAdapter" Version="4.2.1" />
|
||||
<PackageVersion Include="NUnit" Version="3.14.0" />
|
||||
<PackageVersion Include="NunitXml.TestLogger" Version="3.0.117" />
|
||||
@@ -42,20 +45,20 @@
|
||||
<PackageVersion Include="RestSharp.Serializers.SystemTextJson" Version="106.15.0" />
|
||||
<PackageVersion Include="RestSharp" Version="106.15.0" />
|
||||
<PackageVersion Include="Selenium.Support" Version="3.141.0" />
|
||||
<PackageVersion Include="Selenium.WebDriver.ChromeDriver" Version="91.0.4472.10100" />
|
||||
<PackageVersion Include="Sentry" Version="3.31.0" />
|
||||
<PackageVersion Include="Selenium.WebDriver.ChromeDriver" Version="134.0.6998.16500" />
|
||||
<PackageVersion Include="Sentry" Version="4.0.2" />
|
||||
<PackageVersion Include="SharpZipLib" Version="1.4.2" />
|
||||
<PackageVersion Include="SixLabors.ImageSharp" Version="3.1.6" />
|
||||
<PackageVersion Include="SixLabors.ImageSharp" Version="3.1.7" />
|
||||
<PackageVersion Include="StyleCop.Analyzers" Version="1.1.118" />
|
||||
<PackageVersion Include="Swashbuckle.AspNetCore.Annotations" Version="6.6.2" />
|
||||
<PackageVersion Include="Swashbuckle.AspNetCore.SwaggerGen" Version="6.6.2" />
|
||||
<PackageVersion Include="System.Buffers" Version="4.5.1" />
|
||||
<PackageVersion Include="System.Buffers" Version="4.6.0" />
|
||||
<PackageVersion Include="System.Configuration.ConfigurationManager" Version="6.0.1" />
|
||||
<PackageVersion Include="System.Data.SQLite.Core.Servarr" Version="1.0.115.5-18" />
|
||||
<PackageVersion Include="System.IO.Abstractions.TestingHelpers" Version="17.0.24" />
|
||||
<PackageVersion Include="System.IO.Abstractions" Version="17.0.24" />
|
||||
<PackageVersion Include="System.IO.FileSystem.AccessControl" Version="5.0.0" />
|
||||
<PackageVersion Include="System.Memory" Version="4.5.5" />
|
||||
<PackageVersion Include="System.Memory" Version="4.6.2" />
|
||||
<PackageVersion Include="System.Reflection.TypeExtensions" Version="4.7.0" />
|
||||
<PackageVersion Include="System.Resources.Extensions" Version="6.0.0" />
|
||||
<PackageVersion Include="System.Runtime.Loader" Version="4.3.0" />
|
||||
@@ -63,7 +66,7 @@
|
||||
<PackageVersion Include="System.ServiceProcess.ServiceController" Version="6.0.1" />
|
||||
<PackageVersion Include="System.Text.Encoding.CodePages" Version="6.0.0" />
|
||||
<PackageVersion Include="System.Text.Json" Version="6.0.10" />
|
||||
<PackageVersion Include="System.ValueTuple" Version="4.5.0" />
|
||||
<PackageVersion Include="System.ValueTuple" Version="4.6.1" />
|
||||
<PackageVersion Include="TagLibSharp-Lidarr" Version="2.2.0.19" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
</Project>
|
||||
|
||||
@@ -4,6 +4,7 @@ using System.Linq;
|
||||
using FluentAssertions;
|
||||
using NLog;
|
||||
using NUnit.Framework;
|
||||
using NzbDrone.Common.EnvironmentInfo;
|
||||
using NzbDrone.Common.Instrumentation.Sentry;
|
||||
using NzbDrone.Test.Common;
|
||||
|
||||
@@ -27,7 +28,7 @@ namespace NzbDrone.Common.Test.InstrumentationTests
|
||||
[SetUp]
|
||||
public void Setup()
|
||||
{
|
||||
_subject = new SentryTarget("https://aaaaaaaaaaaaaaaaaaaaaaaaaa@sentry.io/111111");
|
||||
_subject = new SentryTarget("https://aaaaaaaaaaaaaaaaaaaaaaaaaa@sentry.io/111111", Mocker.GetMock<IAppFolderInfo>().Object);
|
||||
}
|
||||
|
||||
private LogEventInfo GivenLogEvent(LogLevel level, Exception ex, string message)
|
||||
|
||||
@@ -42,17 +42,18 @@ namespace NzbDrone.Common
|
||||
|
||||
public void CreateZip(string path, IEnumerable<string> files)
|
||||
{
|
||||
using (var zipFile = ZipFile.Create(path))
|
||||
_logger.Debug("Creating archive {0}", path);
|
||||
|
||||
using var zipFile = ZipFile.Create(path);
|
||||
|
||||
zipFile.BeginUpdate();
|
||||
|
||||
foreach (var file in files)
|
||||
{
|
||||
zipFile.BeginUpdate();
|
||||
|
||||
foreach (var file in files)
|
||||
{
|
||||
zipFile.Add(file, Path.GetFileName(file));
|
||||
}
|
||||
|
||||
zipFile.CommitUpdate();
|
||||
zipFile.Add(file, Path.GetFileName(file));
|
||||
}
|
||||
|
||||
zipFile.CommitUpdate();
|
||||
}
|
||||
|
||||
private void ExtractZip(string compressedFile, string destination)
|
||||
|
||||
@@ -3,6 +3,7 @@ using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.IO.Abstractions;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using NLog;
|
||||
using NzbDrone.Common.EnsureThat;
|
||||
using NzbDrone.Common.EnvironmentInfo;
|
||||
@@ -306,9 +307,26 @@ namespace NzbDrone.Common.Disk
|
||||
{
|
||||
Ensure.That(path, () => path).IsValidPath(PathValidationType.CurrentOs);
|
||||
|
||||
var files = GetFiles(path, recursive);
|
||||
var files = GetFiles(path, recursive).ToList();
|
||||
|
||||
files.ToList().ForEach(RemoveReadOnly);
|
||||
files.ForEach(RemoveReadOnly);
|
||||
|
||||
var attempts = 0;
|
||||
|
||||
while (attempts < 3 && files.Any())
|
||||
{
|
||||
EmptyFolder(path);
|
||||
|
||||
if (GetFiles(path, recursive).Any())
|
||||
{
|
||||
// Wait for IO operations to complete after emptying the folder since they aren't always
|
||||
// instantly removed and it can lead to false positives that files are still present.
|
||||
Thread.Sleep(3000);
|
||||
}
|
||||
|
||||
attempts++;
|
||||
files = GetFiles(path, recursive).ToList();
|
||||
}
|
||||
|
||||
_fileSystem.Directory.Delete(path, recursive);
|
||||
}
|
||||
|
||||
@@ -342,10 +342,11 @@ namespace NzbDrone.Common.Disk
|
||||
|
||||
var isCifs = targetDriveFormat == "cifs";
|
||||
var isBtrfs = sourceDriveFormat == "btrfs" && targetDriveFormat == "btrfs";
|
||||
var isZfs = sourceDriveFormat == "zfs" && targetDriveFormat == "zfs";
|
||||
|
||||
if (mode.HasFlag(TransferMode.Copy))
|
||||
{
|
||||
if (isBtrfs)
|
||||
if (isBtrfs || isZfs)
|
||||
{
|
||||
if (_diskProvider.TryCreateRefLink(sourcePath, targetPath))
|
||||
{
|
||||
@@ -359,7 +360,7 @@ namespace NzbDrone.Common.Disk
|
||||
|
||||
if (mode.HasFlag(TransferMode.Move))
|
||||
{
|
||||
if (isBtrfs)
|
||||
if (isBtrfs || isZfs)
|
||||
{
|
||||
if (isSameMount && _diskProvider.TryRenameFile(sourcePath, targetPath))
|
||||
{
|
||||
|
||||
@@ -108,6 +108,15 @@ namespace NzbDrone.Common.Extensions
|
||||
return Directory.GetParent(cleanPath)?.FullName;
|
||||
}
|
||||
|
||||
public static string GetCleanPath(this string path)
|
||||
{
|
||||
var cleanPath = OsInfo.IsWindows
|
||||
? PARENT_PATH_END_SLASH_REGEX.Replace(path, "")
|
||||
: path.TrimEnd(Path.DirectorySeparatorChar);
|
||||
|
||||
return cleanPath;
|
||||
}
|
||||
|
||||
public static bool IsParentPath(this string parentPath, string childPath)
|
||||
{
|
||||
if (parentPath != "/" && !parentPath.EndsWith(":\\"))
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using System;
|
||||
using NzbDrone.Common.Extensions;
|
||||
|
||||
namespace NzbDrone.Common.Http.Proxy
|
||||
@@ -29,7 +30,8 @@ namespace NzbDrone.Common.Http.Proxy
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(BypassFilter))
|
||||
{
|
||||
var hostlist = BypassFilter.Split(',');
|
||||
var hostlist = BypassFilter.Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
|
||||
|
||||
for (var i = 0; i < hostlist.Length; i++)
|
||||
{
|
||||
if (hostlist[i].StartsWith("*"))
|
||||
@@ -41,7 +43,7 @@ namespace NzbDrone.Common.Http.Proxy
|
||||
return hostlist;
|
||||
}
|
||||
|
||||
return new string[] { };
|
||||
return Array.Empty<string>();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ namespace NzbDrone.Common.Instrumentation
|
||||
RegisterDebugger();
|
||||
}
|
||||
|
||||
RegisterSentry(updateApp);
|
||||
RegisterSentry(updateApp, appFolderInfo);
|
||||
|
||||
if (updateApp)
|
||||
{
|
||||
@@ -62,7 +62,7 @@ namespace NzbDrone.Common.Instrumentation
|
||||
LogManager.ReconfigExistingLoggers();
|
||||
}
|
||||
|
||||
private static void RegisterSentry(bool updateClient)
|
||||
private static void RegisterSentry(bool updateClient, IAppFolderInfo appFolderInfo)
|
||||
{
|
||||
string dsn;
|
||||
|
||||
@@ -77,7 +77,7 @@ namespace NzbDrone.Common.Instrumentation
|
||||
: "https://31e00a6c63ea42c8b5fe70358526a30d@sentry.servarr.com/4";
|
||||
}
|
||||
|
||||
var target = new SentryTarget(dsn)
|
||||
var target = new SentryTarget(dsn, appFolderInfo)
|
||||
{
|
||||
Name = "sentryTarget",
|
||||
Layout = "${message}"
|
||||
|
||||
@@ -9,6 +9,7 @@ using NLog;
|
||||
using NLog.Common;
|
||||
using NLog.Targets;
|
||||
using NzbDrone.Common.EnvironmentInfo;
|
||||
using NzbDrone.Common.Extensions;
|
||||
using Sentry;
|
||||
|
||||
namespace NzbDrone.Common.Instrumentation.Sentry
|
||||
@@ -99,7 +100,7 @@ namespace NzbDrone.Common.Instrumentation.Sentry
|
||||
public bool FilterEvents { get; set; }
|
||||
public bool SentryEnabled { get; set; }
|
||||
|
||||
public SentryTarget(string dsn)
|
||||
public SentryTarget(string dsn, IAppFolderInfo appFolderInfo)
|
||||
{
|
||||
_sdk = SentrySdk.Init(o =>
|
||||
{
|
||||
@@ -107,9 +108,33 @@ namespace NzbDrone.Common.Instrumentation.Sentry
|
||||
o.AttachStacktrace = true;
|
||||
o.MaxBreadcrumbs = 200;
|
||||
o.Release = $"{BuildInfo.AppName}@{BuildInfo.Release}";
|
||||
o.BeforeSend = x => SentryCleanser.CleanseEvent(x);
|
||||
o.BeforeBreadcrumb = x => SentryCleanser.CleanseBreadcrumb(x);
|
||||
o.SetBeforeSend(x => SentryCleanser.CleanseEvent(x));
|
||||
o.SetBeforeBreadcrumb(x => SentryCleanser.CleanseBreadcrumb(x));
|
||||
o.Environment = BuildInfo.Branch;
|
||||
|
||||
// Crash free run statistics (sends a ping for healthy and for crashes sessions)
|
||||
o.AutoSessionTracking = false;
|
||||
|
||||
// Caches files in the event device is offline
|
||||
// Sentry creates a 'sentry' sub directory, no need to concat here
|
||||
o.CacheDirectoryPath = appFolderInfo.GetAppDataPath();
|
||||
|
||||
// default environment is production
|
||||
if (!RuntimeInfo.IsProduction)
|
||||
{
|
||||
if (RuntimeInfo.IsDevelopment)
|
||||
{
|
||||
o.Environment = "development";
|
||||
}
|
||||
else if (RuntimeInfo.IsTesting)
|
||||
{
|
||||
o.Environment = "testing";
|
||||
}
|
||||
else
|
||||
{
|
||||
o.Environment = "other";
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
InitializeScope();
|
||||
@@ -127,7 +152,7 @@ namespace NzbDrone.Common.Instrumentation.Sentry
|
||||
{
|
||||
SentrySdk.ConfigureScope(scope =>
|
||||
{
|
||||
scope.User = new User
|
||||
scope.User = new SentryUser
|
||||
{
|
||||
Id = HashUtil.AnonymousToken()
|
||||
};
|
||||
@@ -169,9 +194,7 @@ namespace NzbDrone.Common.Instrumentation.Sentry
|
||||
|
||||
private void OnError(Exception ex)
|
||||
{
|
||||
var webException = ex as WebException;
|
||||
|
||||
if (webException != null)
|
||||
if (ex is WebException webException)
|
||||
{
|
||||
var response = webException.Response as HttpWebResponse;
|
||||
var statusCode = response?.StatusCode;
|
||||
@@ -290,13 +313,21 @@ namespace NzbDrone.Common.Instrumentation.Sentry
|
||||
}
|
||||
}
|
||||
|
||||
var level = LoggingLevelMap[logEvent.Level];
|
||||
var sentryEvent = new SentryEvent(logEvent.Exception)
|
||||
{
|
||||
Level = LoggingLevelMap[logEvent.Level],
|
||||
Level = level,
|
||||
Logger = logEvent.LoggerName,
|
||||
Message = logEvent.FormattedMessage
|
||||
};
|
||||
|
||||
if (level is SentryLevel.Fatal && logEvent.Exception is not null)
|
||||
{
|
||||
// Usages of 'fatal' here indicates the process will crash. In Sentry this is represented with
|
||||
// the 'unhandled' exception flag
|
||||
logEvent.Exception.SetSentryMechanism("Logger.Fatal", "Logger.Fatal was called", false);
|
||||
}
|
||||
|
||||
sentryEvent.SetExtras(extras);
|
||||
sentryEvent.SetFingerprint(fingerPrint);
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ using System.ComponentModel;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using NLog;
|
||||
using NzbDrone.Common.EnvironmentInfo;
|
||||
using NzbDrone.Common.Model;
|
||||
@@ -117,7 +118,9 @@ namespace NzbDrone.Common.Processes
|
||||
UseShellExecute = false,
|
||||
RedirectStandardError = true,
|
||||
RedirectStandardOutput = true,
|
||||
RedirectStandardInput = true
|
||||
RedirectStandardInput = true,
|
||||
StandardOutputEncoding = Encoding.UTF8,
|
||||
StandardErrorEncoding = Encoding.UTF8
|
||||
};
|
||||
|
||||
if (environmentVariables != null)
|
||||
@@ -313,7 +316,7 @@ namespace NzbDrone.Common.Processes
|
||||
processInfo = new ProcessInfo();
|
||||
processInfo.Id = process.Id;
|
||||
processInfo.Name = process.ProcessName;
|
||||
processInfo.StartPath = process.MainModule.FileName;
|
||||
processInfo.StartPath = process.MainModule?.FileName;
|
||||
|
||||
if (process.Id != GetCurrentProcessId() && process.HasExited)
|
||||
{
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="DryIoc.dll" />
|
||||
<PackageReference Include="IPAddressRange" />
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" />
|
||||
<PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" />
|
||||
<PackageReference Include="NLog.Extensions.Logging" />
|
||||
|
||||
@@ -711,6 +711,30 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.QBittorrentTests
|
||||
item.CanMoveFiles.Should().BeTrue();
|
||||
}
|
||||
|
||||
[TestCase("pausedUP")]
|
||||
[TestCase("stoppedUP")]
|
||||
public void should_be_removable_and_should_allow_move_files_if_max_ratio_reached_after_rounding_and_paused(string state)
|
||||
{
|
||||
GivenGlobalSeedLimits(1.0f);
|
||||
GivenCompletedTorrent(state, ratio: 1.1006066990976857f);
|
||||
|
||||
var item = Subject.GetItems().Single();
|
||||
item.CanBeRemoved.Should().BeTrue();
|
||||
item.CanMoveFiles.Should().BeTrue();
|
||||
}
|
||||
|
||||
[TestCase("pausedUP")]
|
||||
[TestCase("stoppedUP")]
|
||||
public void should_be_removable_and_should_allow_move_files_if_just_under_max_ratio_reached_after_rounding_and_paused(string state)
|
||||
{
|
||||
GivenGlobalSeedLimits(1.0f);
|
||||
GivenCompletedTorrent(state, ratio: 0.9999f);
|
||||
|
||||
var item = Subject.GetItems().Single();
|
||||
item.CanBeRemoved.Should().BeTrue();
|
||||
item.CanMoveFiles.Should().BeTrue();
|
||||
}
|
||||
|
||||
[TestCase("pausedUP")]
|
||||
[TestCase("stoppedUP")]
|
||||
public void should_be_removable_and_should_allow_move_files_if_overridden_max_ratio_reached_and_paused(string state)
|
||||
@@ -723,6 +747,30 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.QBittorrentTests
|
||||
item.CanMoveFiles.Should().BeTrue();
|
||||
}
|
||||
|
||||
[TestCase("pausedUP")]
|
||||
[TestCase("stoppedUP")]
|
||||
public void should_be_removable_and_should_allow_move_files_if_overridden_max_ratio_reached_after_rounding_and_paused(string state)
|
||||
{
|
||||
GivenGlobalSeedLimits(2.0f);
|
||||
GivenCompletedTorrent(state, ratio: 1.1006066990976857f, ratioLimit: 1.1f);
|
||||
|
||||
var item = Subject.GetItems().Single();
|
||||
item.CanBeRemoved.Should().BeTrue();
|
||||
item.CanMoveFiles.Should().BeTrue();
|
||||
}
|
||||
|
||||
[TestCase("pausedUP")]
|
||||
[TestCase("stoppedUP")]
|
||||
public void should_be_removable_and_should_allow_move_files_if_just_under_overridden_max_ratio_reached_after_rounding_and_paused(string state)
|
||||
{
|
||||
GivenGlobalSeedLimits(2.0f);
|
||||
GivenCompletedTorrent(state, ratio: 0.9999f, ratioLimit: 1.0f);
|
||||
|
||||
var item = Subject.GetItems().Single();
|
||||
item.CanBeRemoved.Should().BeTrue();
|
||||
item.CanMoveFiles.Should().BeTrue();
|
||||
}
|
||||
|
||||
[TestCase("pausedUP")]
|
||||
[TestCase("stoppedUP")]
|
||||
public void should_not_be_removable_if_overridden_max_ratio_not_reached_and_paused(string state)
|
||||
|
||||
@@ -12,7 +12,7 @@ namespace NzbDrone.Core.Test.Http
|
||||
{
|
||||
private HttpProxySettings GetProxySettings()
|
||||
{
|
||||
return new HttpProxySettings(ProxyType.Socks5, "localhost", 8080, "*.httpbin.org,google.com", true, null, null);
|
||||
return new HttpProxySettings(ProxyType.Socks5, "localhost", 8080, "*.httpbin.org,google.com,172.16.0.0/12", true, null, null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -23,6 +23,7 @@ namespace NzbDrone.Core.Test.Http
|
||||
Subject.ShouldProxyBeBypassed(settings, new HttpUri("http://eu.httpbin.org/get")).Should().BeTrue();
|
||||
Subject.ShouldProxyBeBypassed(settings, new HttpUri("http://google.com/get")).Should().BeTrue();
|
||||
Subject.ShouldProxyBeBypassed(settings, new HttpUri("http://localhost:8654/get")).Should().BeTrue();
|
||||
Subject.ShouldProxyBeBypassed(settings, new HttpUri("http://172.21.0.1:8989/api/v3/indexer/schema")).Should().BeTrue();
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -31,6 +32,7 @@ namespace NzbDrone.Core.Test.Http
|
||||
var settings = GetProxySettings();
|
||||
|
||||
Subject.ShouldProxyBeBypassed(settings, new HttpUri("http://bing.com/get")).Should().BeFalse();
|
||||
Subject.ShouldProxyBeBypassed(settings, new HttpUri("http://172.3.0.1:8989/api/v3/indexer/schema")).Should().BeFalse();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ using NzbDrone.Core.Test.Framework;
|
||||
namespace NzbDrone.Core.Test.MetadataSource.Goodreads
|
||||
{
|
||||
[TestFixture]
|
||||
[Ignore("Waiting for metadata to be back again", Until = "2024-12-15 00:00:00Z")]
|
||||
[Ignore("Waiting for metadata to be back again", Until = "2025-05-15 00:00:00Z")]
|
||||
public class BookInfoProxyFixture : CoreTest<BookInfoProxy>
|
||||
{
|
||||
private MetadataProfile _metadataProfile;
|
||||
|
||||
@@ -15,7 +15,7 @@ using NzbDrone.Test.Common;
|
||||
namespace NzbDrone.Core.Test.MetadataSource.Goodreads
|
||||
{
|
||||
[TestFixture]
|
||||
[Ignore("Waiting for metadata to be back again", Until = "2024-12-15 00:00:00Z")]
|
||||
[Ignore("Waiting for metadata to be back again", Until = "2025-05-15 00:00:00Z")]
|
||||
public class BookInfoProxySearchFixture : CoreTest<BookInfoProxy>
|
||||
{
|
||||
[SetUp]
|
||||
|
||||
@@ -21,14 +21,14 @@ namespace NzbDrone.Core.Test.UpdateTests
|
||||
public void no_update_when_version_higher()
|
||||
{
|
||||
UseRealHttp();
|
||||
Subject.GetLatestUpdate("nightly", new Version(10, 0)).Should().BeNull();
|
||||
Subject.GetLatestUpdate("develop", new Version(10, 0)).Should().BeNull();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void finds_update_when_version_lower()
|
||||
{
|
||||
UseRealHttp();
|
||||
Subject.GetLatestUpdate("nightly", new Version(0, 1)).Should().NotBeNull();
|
||||
Subject.GetLatestUpdate("develop", new Version(0, 1)).Should().NotBeNull();
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -42,10 +42,9 @@ namespace NzbDrone.Core.Test.UpdateTests
|
||||
[Test]
|
||||
public void should_get_recent_updates()
|
||||
{
|
||||
const string branch = "nightly";
|
||||
const string branch = "develop";
|
||||
UseRealHttp();
|
||||
var recent = Subject.GetRecentUpdates(branch, new Version(0, 1), null);
|
||||
var recentWithChanges = recent.Where(c => c.Changes != null);
|
||||
|
||||
recent.Should().NotBeEmpty();
|
||||
recent.Should().OnlyContain(c => c.Hash.IsNotNullOrWhiteSpace());
|
||||
|
||||
@@ -66,12 +66,19 @@ namespace NzbDrone.Core.Backup
|
||||
{
|
||||
_logger.ProgressInfo("Starting Backup");
|
||||
|
||||
var backupFolder = GetBackupFolder(backupType);
|
||||
|
||||
_diskProvider.EnsureFolder(_backupTempFolder);
|
||||
_diskProvider.EnsureFolder(GetBackupFolder(backupType));
|
||||
_diskProvider.EnsureFolder(backupFolder);
|
||||
|
||||
if (!_diskProvider.FolderWritable(backupFolder))
|
||||
{
|
||||
throw new UnauthorizedAccessException($"Backup folder {backupFolder} is not writable");
|
||||
}
|
||||
|
||||
var dateNow = DateTime.Now;
|
||||
var backupFilename = $"readarr_backup_v{BuildInfo.Version}_{dateNow:yyyy.MM.dd_HH.mm.ss}.zip";
|
||||
var backupPath = Path.Combine(GetBackupFolder(backupType), backupFilename);
|
||||
var backupPath = Path.Combine(backupFolder, backupFilename);
|
||||
|
||||
Cleanup();
|
||||
|
||||
|
||||
@@ -102,9 +102,9 @@ namespace NzbDrone.Core.Books
|
||||
_logger.Error("ReadarrId {0} was not found, it may have been removed from Goodreads.", newAuthor.Metadata.Value.ForeignAuthorId);
|
||||
|
||||
throw new ValidationException(new List<ValidationFailure>
|
||||
{
|
||||
new ValidationFailure("MusicbrainzId", "An author with this ID was not found", newAuthor.Metadata.Value.ForeignAuthorId)
|
||||
});
|
||||
{
|
||||
new ("ForeignAuthorId", "An author with this ID was not found", newAuthor.Metadata.Value.ForeignAuthorId)
|
||||
});
|
||||
}
|
||||
|
||||
author.ApplyChanges(newAuthor);
|
||||
|
||||
@@ -254,7 +254,21 @@ namespace NzbDrone.Core.Configuration
|
||||
}
|
||||
|
||||
public string UiFolder => BuildInfo.IsDebug ? Path.Combine("..", "UI") : "UI";
|
||||
public string InstanceName => _appOptions.InstanceName ?? GetValue("InstanceName", BuildInfo.AppName);
|
||||
|
||||
public string InstanceName
|
||||
{
|
||||
get
|
||||
{
|
||||
var instanceName = _appOptions.InstanceName ?? GetValue("InstanceName", BuildInfo.AppName);
|
||||
|
||||
if (instanceName.Contains(BuildInfo.AppName, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
return instanceName;
|
||||
}
|
||||
|
||||
return BuildInfo.AppName;
|
||||
}
|
||||
}
|
||||
|
||||
public bool UpdateAutomatically => _updateOptions.Automatically ?? GetValueBoolean("UpdateAutomatically", OsInfo.IsWindows, false);
|
||||
|
||||
|
||||
@@ -264,7 +264,7 @@ namespace NzbDrone.Core.Datastore
|
||||
|
||||
protected void Delete(SqlBuilder builder)
|
||||
{
|
||||
var sql = builder.AddDeleteTemplate(typeof(TModel)).LogQuery();
|
||||
var sql = builder.AddDeleteTemplate(typeof(TModel));
|
||||
|
||||
using (var conn = _database.OpenConnection())
|
||||
{
|
||||
|
||||
@@ -620,14 +620,14 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
|
||||
{
|
||||
if (torrent.RatioLimit >= 0)
|
||||
{
|
||||
if (torrent.Ratio >= torrent.RatioLimit)
|
||||
if (torrent.RatioLimit - torrent.Ratio <= 0.001f)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else if (torrent.RatioLimit == -2 && config.MaxRatioEnabled)
|
||||
{
|
||||
if (Math.Round(torrent.Ratio, 2) >= config.MaxRatio)
|
||||
if (config.MaxRatio - torrent.Ratio <= 0.001f)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ using System.Net;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using NLog;
|
||||
using NzbDrone.Common.Cache;
|
||||
using NzbDrone.Common.EnvironmentInfo;
|
||||
using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Common.Http;
|
||||
using NzbDrone.Common.Serializer;
|
||||
@@ -208,7 +209,7 @@ namespace NzbDrone.Core.Download.Clients.Transmission
|
||||
|
||||
private void AuthenticateClient(HttpRequestBuilder requestBuilder, TransmissionSettings settings, bool reauthenticate = false)
|
||||
{
|
||||
var authKey = string.Format("{0}:{1}", requestBuilder.BaseUrl, settings.Password);
|
||||
var authKey = $"{requestBuilder.BaseUrl}:{settings.Password}";
|
||||
|
||||
var sessionId = _authSessionIDCache.Find(authKey);
|
||||
|
||||
@@ -220,24 +221,26 @@ namespace NzbDrone.Core.Download.Clients.Transmission
|
||||
authLoginRequest.SuppressHttpError = true;
|
||||
|
||||
var response = _httpClient.Execute(authLoginRequest);
|
||||
if (response.StatusCode == HttpStatusCode.MovedPermanently)
|
||||
{
|
||||
var url = response.Headers.GetSingleValue("Location");
|
||||
|
||||
throw new DownloadClientException("Remote site redirected to " + url);
|
||||
}
|
||||
else if (response.StatusCode == HttpStatusCode.Conflict)
|
||||
switch (response.StatusCode)
|
||||
{
|
||||
sessionId = response.Headers.GetSingleValue("X-Transmission-Session-Id");
|
||||
case HttpStatusCode.MovedPermanently:
|
||||
var url = response.Headers.GetSingleValue("Location");
|
||||
|
||||
if (sessionId == null)
|
||||
{
|
||||
throw new DownloadClientException("Remote host did not return a Session Id.");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new DownloadClientAuthenticationException("Failed to authenticate with Transmission.");
|
||||
throw new DownloadClientException("Remote site redirected to " + url);
|
||||
case HttpStatusCode.Forbidden:
|
||||
throw new DownloadClientException($"Failed to authenticate with Transmission. It may be necessary to add {BuildInfo.AppName}'s IP address to RPC whitelist.");
|
||||
case HttpStatusCode.Conflict:
|
||||
sessionId = response.Headers.GetSingleValue("X-Transmission-Session-Id");
|
||||
|
||||
if (sessionId == null)
|
||||
{
|
||||
throw new DownloadClientException("Remote host did not return a Session Id.");
|
||||
}
|
||||
|
||||
break;
|
||||
default:
|
||||
throw new DownloadClientAuthenticationException("Failed to authenticate with Transmission.");
|
||||
}
|
||||
|
||||
_logger.Debug("Transmission authentication succeeded.");
|
||||
|
||||
@@ -4,24 +4,24 @@ namespace NzbDrone.Core.Exceptions
|
||||
{
|
||||
public class AuthorNotFoundException : NzbDroneException
|
||||
{
|
||||
public string MusicBrainzId { get; set; }
|
||||
public string ForeignAuthorId { get; set; }
|
||||
|
||||
public AuthorNotFoundException(string musicbrainzId)
|
||||
: base(string.Format("Author with id {0} was not found, it may have been removed from the metadata server.", musicbrainzId))
|
||||
public AuthorNotFoundException(string foreignAuthorId)
|
||||
: base($"Author with id {foreignAuthorId} was not found, it may have been removed from the metadata server.")
|
||||
{
|
||||
MusicBrainzId = musicbrainzId;
|
||||
ForeignAuthorId = foreignAuthorId;
|
||||
}
|
||||
|
||||
public AuthorNotFoundException(string musicbrainzId, string message, params object[] args)
|
||||
public AuthorNotFoundException(string foreignAuthorId, string message, params object[] args)
|
||||
: base(message, args)
|
||||
{
|
||||
MusicBrainzId = musicbrainzId;
|
||||
ForeignAuthorId = foreignAuthorId;
|
||||
}
|
||||
|
||||
public AuthorNotFoundException(string musicbrainzId, string message)
|
||||
public AuthorNotFoundException(string foreignAuthorId, string message)
|
||||
: base(message)
|
||||
{
|
||||
MusicBrainzId = musicbrainzId;
|
||||
ForeignAuthorId = foreignAuthorId;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,24 +4,24 @@ namespace NzbDrone.Core.Exceptions
|
||||
{
|
||||
public class BookNotFoundException : NzbDroneException
|
||||
{
|
||||
public string MusicBrainzId { get; set; }
|
||||
public string ForeignBookId { get; set; }
|
||||
|
||||
public BookNotFoundException(string musicbrainzId)
|
||||
: base(string.Format("Book with id {0} was not found, it may have been removed from metadata server.", musicbrainzId))
|
||||
public BookNotFoundException(string foreignBookId)
|
||||
: base($"Book with id {foreignBookId} was not found, it may have been removed from metadata server.")
|
||||
{
|
||||
MusicBrainzId = musicbrainzId;
|
||||
ForeignBookId = foreignBookId;
|
||||
}
|
||||
|
||||
public BookNotFoundException(string musicbrainzId, string message, params object[] args)
|
||||
public BookNotFoundException(string foreignBookId, string message, params object[] args)
|
||||
: base(message, args)
|
||||
{
|
||||
MusicBrainzId = musicbrainzId;
|
||||
ForeignBookId = foreignBookId;
|
||||
}
|
||||
|
||||
public BookNotFoundException(string musicbrainzId, string message)
|
||||
public BookNotFoundException(string foreignBookId, string message)
|
||||
: base(message)
|
||||
{
|
||||
MusicBrainzId = musicbrainzId;
|
||||
ForeignBookId = foreignBookId;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,24 +4,24 @@ namespace NzbDrone.Core.Exceptions
|
||||
{
|
||||
public class EditionNotFoundException : NzbDroneException
|
||||
{
|
||||
public string MusicBrainzId { get; set; }
|
||||
public string ForeignEditionId { get; set; }
|
||||
|
||||
public EditionNotFoundException(string musicbrainzId)
|
||||
: base(string.Format("Edition with id {0} was not found, it may have been removed from metadata server.", musicbrainzId))
|
||||
public EditionNotFoundException(string foreignEditionId)
|
||||
: base($"Edition with id {foreignEditionId} was not found, it may have been removed from metadata server.")
|
||||
{
|
||||
MusicBrainzId = musicbrainzId;
|
||||
ForeignEditionId = foreignEditionId;
|
||||
}
|
||||
|
||||
public EditionNotFoundException(string musicbrainzId, string message, params object[] args)
|
||||
public EditionNotFoundException(string foreignEditionId, string message, params object[] args)
|
||||
: base(message, args)
|
||||
{
|
||||
MusicBrainzId = musicbrainzId;
|
||||
ForeignEditionId = foreignEditionId;
|
||||
}
|
||||
|
||||
public EditionNotFoundException(string musicbrainzId, string message)
|
||||
public EditionNotFoundException(string foreignEditionId, string message)
|
||||
: base(message)
|
||||
{
|
||||
MusicBrainzId = musicbrainzId;
|
||||
ForeignEditionId = foreignEditionId;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,6 +10,9 @@ namespace NzbDrone.Core.History
|
||||
{
|
||||
public const string DOWNLOAD_CLIENT = "downloadClient";
|
||||
public const string RELEASE_SOURCE = "releaseSource";
|
||||
public const string RELEASE_GROUP = "releaseGroup";
|
||||
public const string SIZE = "size";
|
||||
public const string INDEXER = "indexer";
|
||||
|
||||
public EntityHistory()
|
||||
{
|
||||
|
||||
@@ -116,6 +116,7 @@ namespace NzbDrone.Core.History
|
||||
{
|
||||
var builder = Builder()
|
||||
.Join<EntityHistory, Author>((h, a) => h.AuthorId == a.Id)
|
||||
.LeftJoin<EntityHistory, Book>((h, b) => h.BookId == b.Id)
|
||||
.Where<EntityHistory>(x => x.Date >= date);
|
||||
|
||||
if (eventType.HasValue)
|
||||
@@ -123,9 +124,10 @@ namespace NzbDrone.Core.History
|
||||
builder.Where<EntityHistory>(h => h.EventType == eventType);
|
||||
}
|
||||
|
||||
return _database.QueryJoined<EntityHistory, Author>(builder, (history, author) =>
|
||||
return _database.QueryJoined<EntityHistory, Author, Book>(builder, (history, author, book) =>
|
||||
{
|
||||
history.Author = author;
|
||||
history.Book = book;
|
||||
return history;
|
||||
}).OrderBy(h => h.Date).ToList();
|
||||
}
|
||||
|
||||
@@ -263,7 +263,9 @@ namespace NzbDrone.Core.History
|
||||
history.Data.Add("DownloadClient", message.DownloadClient);
|
||||
history.Data.Add("DownloadClientName", message.TrackedDownload?.DownloadItem.DownloadClientInfo.Name);
|
||||
history.Data.Add("Message", message.Message);
|
||||
history.Data.Add("Size", message.TrackedDownload?.DownloadItem.TotalSize.ToString());
|
||||
history.Data.Add("ReleaseGroup", message.TrackedDownload?.RemoteBook?.ParsedBookInfo?.ReleaseGroup ?? message.Data.GetValueOrDefault(EntityHistory.RELEASE_GROUP));
|
||||
history.Data.Add("Size", message.TrackedDownload?.DownloadItem.TotalSize.ToString() ?? message.Data.GetValueOrDefault(EntityHistory.SIZE));
|
||||
history.Data.Add("Indexer", message.TrackedDownload?.RemoteBook?.Release?.Indexer ?? message.Data.GetValueOrDefault(EntityHistory.INDEXER));
|
||||
|
||||
_historyRepository.Insert(history);
|
||||
}
|
||||
@@ -373,6 +375,7 @@ namespace NzbDrone.Core.History
|
||||
history.Data.Add("Message", message.Message);
|
||||
history.Data.Add("ReleaseGroup", message.TrackedDownload?.RemoteBook?.ParsedBookInfo?.ReleaseGroup);
|
||||
history.Data.Add("Size", message.TrackedDownload?.DownloadItem.TotalSize.ToString());
|
||||
history.Data.Add("Indexer", message.TrackedDownload?.RemoteBook?.Release?.Indexer);
|
||||
|
||||
historyToAdd.Add(history);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using NetTools;
|
||||
using NzbDrone.Common.Http;
|
||||
using NzbDrone.Common.Http.Proxy;
|
||||
using NzbDrone.Core.Configuration;
|
||||
@@ -52,7 +54,15 @@ namespace NzbDrone.Core.Http
|
||||
//We are utilizing the WebProxy implementation here to save us having to re-implement it. This way we use Microsofts implementation
|
||||
var proxy = new WebProxy(proxySettings.Host + ":" + proxySettings.Port, proxySettings.BypassLocalAddress, proxySettings.BypassListAsArray);
|
||||
|
||||
return proxy.IsBypassed((Uri)url);
|
||||
return proxy.IsBypassed((Uri)url) || IsBypassedByIpAddressRange(proxySettings.BypassListAsArray, url.Host);
|
||||
}
|
||||
|
||||
private static bool IsBypassedByIpAddressRange(string[] bypassList, string host)
|
||||
{
|
||||
return bypassList.Any(bypass =>
|
||||
IPAddressRange.TryParse(bypass, out var ipAddressRange) &&
|
||||
IPAddress.TryParse(host, out var ipAddress) &&
|
||||
ipAddressRange.Contains(ipAddress));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -184,7 +184,7 @@ namespace NzbDrone.Core.ImportLists
|
||||
report.BookGoodreadsId = remoteBook.ForeignBookId;
|
||||
report.Book = remoteBook.Title;
|
||||
report.Author ??= remoteBook.AuthorMetadata.Value.Name;
|
||||
report.AuthorGoodreadsId ??= remoteBook.AuthorMetadata.Value.Name;
|
||||
report.AuthorGoodreadsId ??= remoteBook.AuthorMetadata.Value.ForeignAuthorId;
|
||||
}
|
||||
catch (BookNotFoundException)
|
||||
{
|
||||
|
||||
@@ -77,7 +77,7 @@ namespace NzbDrone.Core.Indexers.FileList
|
||||
var url = new HttpUri(_settings.BaseUrl)
|
||||
.CombinePath("download.php")
|
||||
.AddQueryParam("id", torrentId)
|
||||
.AddQueryParam("passkey", _settings.Passkey);
|
||||
.AddQueryParam("passkey", _settings.Passkey.Trim());
|
||||
|
||||
return url.FullUri;
|
||||
}
|
||||
|
||||
@@ -653,5 +653,47 @@
|
||||
"Clone": "Близо",
|
||||
"DockerUpdater": "актуализирайте контейнера на докера, за да получите актуализацията",
|
||||
"InstallLatest": "Инсталирайте най-новите",
|
||||
"OnLatestVersion": "Вече е инсталирана най-новата версия на {appName}"
|
||||
"OnLatestVersion": "Вече е инсталирана най-новата версия на {appName}",
|
||||
"BlocklistAndSearch": "Списък за блокиране и търсене",
|
||||
"BlocklistMultipleOnlyHint": "Списък за блокиране без търсене на заместители",
|
||||
"BlocklistAndSearchHint": "Започнете търсене на заместител след блокиране",
|
||||
"BlocklistAndSearchMultipleHint": "Започнете търсене на заместители след блокиране",
|
||||
"DoNotBlocklistHint": "Премахване без блокиране",
|
||||
"Database": "База данни",
|
||||
"DoNotBlocklist": "Не блокирайте",
|
||||
"AutoRedownloadFailedFromInteractiveSearchHelpText": "Автоматично търсене и опит за изтегляне на различна версия, когато неуспешната версия е била взета от интерактивно търсене",
|
||||
"DownloadClientDelugeSettingsDirectoryHelpText": "Незадължителна локация за изтеглянията, оставете празно, за да използвате мястото по подразбиране на Deluge",
|
||||
"CustomFormatsSettingsTriggerInfo": "Персонализиран формат ще бъде приложен към издание или файл, когато съвпада с поне един от всеки от избраните различни типове условия.",
|
||||
"AutomaticAdd": "Автоматично добавяне",
|
||||
"BlocklistOnly": "Само списък за блокиране",
|
||||
"BlocklistOnlyHint": "Списък за блокиране без търсене на заместител",
|
||||
"DownloadClientDelugeSettingsDirectoryCompleted": "Директория за вече завършените изтегляния",
|
||||
"DownloadClientDelugeSettingsDirectoryCompletedHelpText": "Незадължителна локация за преместване на вече завършените изтегляния, оставете празно, за да използвате мястото по подразбиране на Deluge",
|
||||
"Library": "Библиотека",
|
||||
"ApplicationURL": "URL адрес на приложението",
|
||||
"ApplicationUrlHelpText": "Външният URL на това приложение, включително http(s)://, порт и базов URL",
|
||||
"CustomFormatsSpecificationFlag": "Флаг",
|
||||
"BypassIfAboveCustomFormatScore": "Пропусни, ако е над рейтинга на персонализирания формат",
|
||||
"AppUpdated": "{appName} Актуализиран",
|
||||
"AppUpdatedVersion": "{appName} е актуализиранa до версия `{version}`, за да получите най-новите промени, ще трябва да презаредите {appName}",
|
||||
"CatalogNumber": "каталожен номер",
|
||||
"AutoAdd": "Автоматично добавяне",
|
||||
"CustomFormatsSpecificationRegularExpression": "Регулярни изрази",
|
||||
"CustomFormatsSpecificationRegularExpressionHelpText": "Персонализираният формат RegEx не е чувствителен към главни и малки букви",
|
||||
"Label": "Етикет",
|
||||
"AutomaticUpdatesDisabledDocker": "Автоматичните актуализации не се поддържат директно при използване на механизма за актуализация на Docker. Ще трябва да актуализирате Image-a на контейнера извън {appName} или да използвате скрипт",
|
||||
"NoCutoffUnmetItems": "Няма неизпълнени елементи за прекъсване",
|
||||
"Publisher": "Издател",
|
||||
"Series": "Сериали",
|
||||
"Theme": "Тема",
|
||||
"BypassIfAboveCustomFormatScoreHelpText": "Активиране на пропускане, когато изданието има резултат, по-висок от конфигурирания минимален резултат за потребителски формат",
|
||||
"MinimumCustomFormatScoreHelpText": "Минимална резултат на персонализирания формат, необходима за пропускане на забавянето за предпочитания протокол",
|
||||
"DownloadClientDelugeSettingsDirectory": "Директория за изтегляне",
|
||||
"AuthenticationMethodHelpTextWarning": "Моля, изберете валиден метод за удостоверяване",
|
||||
"AuthenticationMethod": "Метод за удостоверяване",
|
||||
"AuthenticationRequiredHelpText": "Променете за кои заявки се изисква удостоверяване. Не променяйте, освен ако не разбирате рисковете.",
|
||||
"AuthenticationRequired": "Изисква се удостоверяване",
|
||||
"AuthenticationRequiredPasswordHelpTextWarning": "Въведете нова парола",
|
||||
"ApplyChanges": "Прилагане на промените",
|
||||
"AuthenticationRequiredPasswordConfirmationHelpTextWarning": "Потвърдете новата парола"
|
||||
}
|
||||
|
||||
@@ -316,7 +316,7 @@
|
||||
"URLBase": "Base URL",
|
||||
"Backups": "Còpies de seguretat",
|
||||
"Connections": "Connexions",
|
||||
"CopyUsingHardlinksHelpText": "Utilitzeu els enllaços durs quan intenteu copiar fitxers de torrents que encara s'estan sembrant",
|
||||
"CopyUsingHardlinksHelpText": "Els enllaços durs permeten a Readarr importar torrents de sembra a la carpeta de la sèrie sense prendre espai de disc extra o copiar tot el contingut del fitxer. Els enllaços durs només funcionaran si l'origen i la destinació estan en el mateix volum",
|
||||
"DeleteBackup": "Suprimeix la còpia de seguretat",
|
||||
"DeleteBackupMessageText": "Esteu segur que voleu suprimir la còpia de seguretat '{name}'?",
|
||||
"DeleteDownloadClient": "Suprimeix el client de descàrrega",
|
||||
@@ -428,52 +428,52 @@
|
||||
"BlocklistRelease": "Publicació de la llista de bloqueig",
|
||||
"HasPendingChangesNoChanges": "Sense Canvis",
|
||||
"ManualImportSelectEdition": "Importació manual - Seleccioneu la pel·lícula",
|
||||
"MissingFromDisk": "{appName} no ha pogut trobar el fitxer al disc, de manera que el fitxer es desenllaçarà de la pel·lícula a la base de dades",
|
||||
"MissingFromDisk": "Readarr no ha pogut trobar el fitxer al disc, de manera que el fitxer es desenllaçarà de la pel·lícula a la base de dades",
|
||||
"SupportsRssvalueRSSIsNotSupportedWithThisIndexer": "RSS no és compatible amb aquest indexador",
|
||||
"SupportsSearchvalueWillBeUsedWhenAutomaticSearchesArePerformedViaTheUIOrByReadarr": "S'utilitzarà quan es realitzin cerques automàtiques mitjançant la interfície d'usuari o per {appName}",
|
||||
"CutoffHelpText": "Un cop s'assoleixi aquesta qualitat, {appName} ja no baixarà pel·lícules",
|
||||
"SupportsSearchvalueWillBeUsedWhenAutomaticSearchesArePerformedViaTheUIOrByReadarr": "S'utilitzarà quan es realitzin cerques automàtiques mitjançant la interfície d'usuari o per Readarr",
|
||||
"CutoffHelpText": "Un cop s'assoleixi aquesta qualitat, Readarr ja no baixarà pel·lícules",
|
||||
"ResetAPIKeyMessageText": "Esteu segur que voleu restablir la clau API?",
|
||||
"PropersAndRepacks": "Propietats i Repacks",
|
||||
"RemotePathMappingCheckFolderPermissions": "{appName} pot veure però no accedir al directori de descàrregues {0}. Error de permisos probable.",
|
||||
"RemotePathMappingCheckFolderPermissions": "Readarr pot veure però no accedir al directori de descàrregues {1}. Error de permisos probable.",
|
||||
"RescanAuthorFolderAfterRefresh": "Torna a escanejar la carpeta de pel·lícules després de l'actualització",
|
||||
"RescanAfterRefreshHelpText": "Torneu a escanejar la carpeta de la pel·lícula després d'actualitzar la pel·lícula",
|
||||
"RestartReadarr": "Reinicia {appName}",
|
||||
"RestartReadarr": "Reinicia Readarr",
|
||||
"ShowRelativeDatesHelpText": "Mostra dates relatives (avui/ahir/etc) o absolutes",
|
||||
"ShowSearchActionHelpText": "Mostra el botó de cerca al passar el cursor",
|
||||
"TheAuthorFolderAndAllOfItsContentWillBeDeleted": "La carpeta de pel·lícules '{0}' i tot el seu contingut es suprimiran.",
|
||||
"UrlBaseHelpTextWarning": "Cal reiniciar perquè tingui efecte",
|
||||
"ApplicationURL": "URL de l'aplicació",
|
||||
"ApplicationUrlHelpText": "URL extern de l'aplicació, inclòs http(s)://, port i URL base",
|
||||
"BackupFolderHelpText": "Els camins relatius estaran sota el directori AppData del {appName}",
|
||||
"BackupFolderHelpText": "Els camins relatius estaran sota el directori AppData de Readarr",
|
||||
"CancelPendingTask": "Esteu segur que voleu cancel·lar aquesta tasca pendent?",
|
||||
"ChownGroupHelpTextWarning": "Això només funciona si l'usuari que executa {appName} és el propietari del fitxer. És millor assegurar-se que el client de descàrrega utilitza el mateix grup que {appName}.",
|
||||
"ChownGroupHelpTextWarning": "Això només funciona si l'usuari que executa Readarr és el propietari del fitxer. És millor assegurar-se que el client de descàrrega utilitza el mateix grup que Readarr.",
|
||||
"ConnectSettingsSummary": "Notificacions, connexions a servidors/reproductors multimèdia i scripts personalitzats",
|
||||
"DeleteEmptyFoldersHelpText": "Suprimeix les carpetes de pel·lícules buides durant l'exploració del disc i quan s'esborren els fitxers de pel·lícules",
|
||||
"DeleteImportListMessageText": "Esteu segur que voleu suprimir la llista '{name}'?",
|
||||
"DeleteMetadataProfileMessageText": "Esteu segur que voleu suprimir el perfil de qualitat {0}",
|
||||
"DeleteMetadataProfileMessageText": "Esteu segur que voleu suprimir el perfil de metadades ‘{name}’?",
|
||||
"ForMoreInformationOnTheIndividualDownloadClientsClickOnTheInfoButtons": "Per obtenir més informació sobre els clients de baixada individuals, feu clic als botons de més informació.",
|
||||
"ForMoreInformationOnTheIndividualIndexersClickOnTheInfoButtons": "Per obtenir més informació sobre els indexadors individuals, feu clic als botons d'informació.",
|
||||
"ForMoreInformationOnTheIndividualListsClickOnTheInfoButtons": "Per obtenir més informació sobre les llistes d'importació individuals, feu clic als botons d'informació.",
|
||||
"IndexerPriorityHelpText": "Prioritat de l'indexador d'1 (la més alta) a 50 (la més baixa). Per defecte: 25. S'utilitza quan s'agafa llançaments com a desempat per a versions iguals, {appName} encara utilitzarà tots els indexadors habilitats per a la sincronització i la cerca RSS",
|
||||
"IndexerRssHealthCheckNoIndexers": "No hi ha indexadors disponibles amb la sincronització RSS activada, {appName} no capturarà les noves versions automàticament",
|
||||
"IndexerSearchCheckNoAutomaticMessage": "No hi ha indexadors disponibles amb la cerca automàtica activada, {appName} no proporcionarà cap resultat de cerca automàtica",
|
||||
"IndexerSearchCheckNoInteractiveMessage": "No hi ha indexadors amb la cerca interactiva activada, {appName} no obtindrà cap resultat de cerca",
|
||||
"IndexerPriorityHelpText": "Prioritat de l'indexador d'1 (la més alta) a 50 (la més baixa). Per defecte: 25. Usada per a desempatar llançaments iguals quan es capturen, Readarr continuarà usant tots els indexadores habilitats per a Sincronització d'RSS i Cerca.",
|
||||
"IndexerRssHealthCheckNoIndexers": "No hi ha indexadors disponibles amb la sincronització RSS activada, Readarr no capturarà les noves versions automàticament",
|
||||
"IndexerSearchCheckNoAutomaticMessage": "No hi ha indexadors disponibles amb la cerca automàtica activada, Readarr no proporcionarà cap resultat de cerca automàtica",
|
||||
"IndexerSearchCheckNoInteractiveMessage": "No hi ha indexadors amb la cerca interactiva activada, Readarr no obtindrà cap resultat de cerca",
|
||||
"IsCutoffUpgradeUntilThisQualityIsMetOrExceeded": "Actualitzeu fins que s'assoleixi o superi aquesta qualitat",
|
||||
"IsTagUsedCannotBeDeletedWhileInUse": "No es pot suprimir mentre està en ús",
|
||||
"LaunchBrowserHelpText": " Obriu un navegador web i navegueu a la pàgina d'inici de {appName} a l'inici de l'aplicació.",
|
||||
"LaunchBrowserHelpText": " Obriu un navegador web i navegueu a la pàgina d'inici de Readarr a l'inici de l'aplicació.",
|
||||
"LoadingBookFilesFailed": "No s'han pogut carregar els fitxers de pel·lícules",
|
||||
"NoHistory": "Sense història",
|
||||
"OnBookFileDeleteForUpgradeHelpText": "Al suprimir el fitxer de pel·lícula per a l'actualització",
|
||||
"OnBookFileDeleteHelpText": "Al suprimir fitxer de pel·lícula",
|
||||
"ReleaseBranchCheckOfficialBranchMessage": "La branca {0} no és una branca de llançament de {appName} vàlida, no rebreu actualitzacions",
|
||||
"ReleaseBranchCheckOfficialBranchMessage": "La branca {0} no és una branca de llançament de Readarr vàlida, no rebreu actualitzacions",
|
||||
"ReleaseDate": "Dates de llançament",
|
||||
"RemotePathMappingCheckDownloadPermissions": "{appName} pot veure però no accedir a la pel·lícula baixada {0}. Error de permisos probable.",
|
||||
"RemotePathMappingCheckFilesGenericPermissions": "El client de baixada {0} ha informat de fitxers a {1} però {appName} no pot veure aquest directori. És possible que hàgiu d'ajustar els permisos de la carpeta.",
|
||||
"RemotePathMappingCheckGenericPermissions": "El client de baixada {0} col·loca les baixades a {1} però {appName} no pot veure aquest directori. És possible que hàgiu d'ajustar els permisos de la carpeta.",
|
||||
"ReplaceIllegalCharactersHelpText": "Substitueix caràcters il·legals. Si no es marca, {appName} els eliminarà",
|
||||
"RemotePathMappingCheckDownloadPermissions": "Readarr pot veure però no accedir a la pel·lícula baixada {0}. Error de permisos probable.",
|
||||
"RemotePathMappingCheckFilesGenericPermissions": "El client de baixada {0} ha informat de fitxers a {1} però Readarr no pot veure aquest directori. És possible que hàgiu d'ajustar els permisos de la carpeta.",
|
||||
"RemotePathMappingCheckGenericPermissions": "El client de baixada {0} col·loca les baixades a {1} però Readarr no pot veure aquest directori. És possible que hàgiu d'ajustar els permisos de la carpeta.",
|
||||
"ReplaceIllegalCharactersHelpText": "Substitueix caràcters il·legals. Si no es marca, Readarr els eliminarà",
|
||||
"RssSyncIntervalHelpText": "Interval en minuts. Establiu a zero per desactivar (això aturarà tota captura automàtica de llançaments)",
|
||||
"SelectedCountBooksSelectedInterp": "S'han seleccionat {0} pel·lícules",
|
||||
"SettingsRemotePathMappingLocalPathHelpText": "Camí que {appName} hauria d'utilitzar per accedir al camí remot localment",
|
||||
"SettingsRemotePathMappingLocalPathHelpText": "Camí que Readarr hauria d'utilitzar per accedir al camí remot localment",
|
||||
"ShortDateFormat": "Format de data curta",
|
||||
"ShowBookTitleHelpText": "Mostra el títol de la pel·lícula sota el cartell",
|
||||
"ShowRelativeDates": "Mostra les dates relatives",
|
||||
@@ -491,7 +491,7 @@
|
||||
"UserAgentProvidedByTheAppThatCalledTheAPI": "Agent d'usuari proporcionat per l'aplicació per fer peticions a l'API",
|
||||
"BranchUpdateMechanism": "Branca utilitzada pel mecanisme d'actualització extern",
|
||||
"WriteTagsNo": "Mai",
|
||||
"RestartReloadNote": "Nota: {appName} es reiniciarà i tornarà a carregar automàticament la interfície d'usuari durant el procés de restauració.",
|
||||
"RestartReloadNote": "Nota: Readarr es reiniciarà i tornarà a carregar automàticament la interfície d'usuari durant el procés de restauració.",
|
||||
"Series": "Sèries",
|
||||
"ShownAboveEachColumnWhenWeekIsTheActiveView": "Es mostra a sobre de cada columna quan la setmana és la visualització activa",
|
||||
"SorryThatAuthorCannotBeFound": "Ho sentim, aquesta pel·lícula no s'ha trobat.",
|
||||
@@ -500,25 +500,25 @@
|
||||
"ThisWillApplyToAllIndexersPleaseFollowTheRulesSetForthByThem": "Això s'aplicarà a tots els indexadors, si us plau, seguiu les regles establertes per ells",
|
||||
"UnableToLoadHistory": "No es pot carregar l'historial",
|
||||
"IconTooltip": "Programat",
|
||||
"ReadarrTags": "Etiquetes de {appName}",
|
||||
"ReadarrTags": "Etiquetes de Readarr",
|
||||
"DownloadPropersAndRepacksHelpTexts1": "Si s'ha d'actualitzar automàticament o no a Propers/Repacks",
|
||||
"GrabReleaseMessageText": "{appName} no ha pogut determinar per a quina pel·lícula era aquest llançament. És possible que {appName} no pugui importar automàticament aquesta versió. Voleu capturar \"{0}\"?",
|
||||
"GrabReleaseMessageText": "Readarr no ha pogut determinar per a quina pel·lícula era aquest llançament. És possible que Readarr no pugui importar automàticament aquesta versió. Voleu capturar '{0}'?",
|
||||
"IsCutoffCutoff": "Requisit",
|
||||
"MountCheckMessage": "El muntatge que conté una ruta de pel·lícula es munta com a només de lectura: ",
|
||||
"RescanAfterRefreshHelpTextWarning": "{appName} no detectarà automàticament els canvis als fitxers quan no estigui configurat com a \"Sempre\"",
|
||||
"RescanAfterRefreshHelpTextWarning": "Readarr no detectarà automàticament els canvis als fitxers quan no estigui configurat com a \"Sempre\"",
|
||||
"ShowUnknownAuthorItems": "Mostra elements de pel·lícula desconeguda",
|
||||
"Size": " Mida",
|
||||
"SkipFreeSpaceCheckWhenImportingHelpText": "Utilitzeu-lo quan {appName} no pugui detectar espai lliure a la carpeta arrel de la pel·lícula",
|
||||
"SkipFreeSpaceCheckWhenImportingHelpText": "Utilitzeu-lo quan Readarr no pugui detectar espai lliure a la carpeta arrel de la pel·lícula",
|
||||
"StandardBookFormat": "Format de pel·lícula estàndard",
|
||||
"UnableToAddANewImportListExclusionPleaseTryAgain": "No es pot afegir una nova llista d'exclusió, torneu-ho a provar.",
|
||||
"UnableToLoadReleaseProfiles": "No es poden carregar els perfils de retard",
|
||||
"UnmonitoredHelpText": "Inclou pel·lícules no monitorades al canal iCal",
|
||||
"UpdateAll": "Actualitzar-ho tot",
|
||||
"AutoUnmonitorPreviouslyDownloadedBooksHelpText": "Les pel·lícules suprimides del disc no es descarten automàticament al {appName}",
|
||||
"AutoUnmonitorPreviouslyDownloadedBooksHelpText": "Les pel·lícules suprimides del disc no es descarten automàticament al Readarr",
|
||||
"ChownGroupHelpText": "Nom del grup o gid. Utilitzeu gid per a sistemes de fitxers remots.",
|
||||
"AuthorClickToChangeBook": "Feu clic per canviar la pel·lícula",
|
||||
"ChmodFolderHelpTextWarning": "Això només funciona si l'usuari que executa {appName} és el propietari del fitxer. És millor assegurar-se que el client de descàrrega estableixi correctament els permisos.",
|
||||
"CopyUsingHardlinksHelpTextWarning": "De tant en tant, els bloquejos de fitxers poden impedir reanomenar els fitxers que s'estan sembrant. Podeu desactivar temporalment la compartició i utilitzar la funció de reanomenar de {appName} com a solució.",
|
||||
"ChmodFolderHelpTextWarning": "Això només funciona si l'usuari que executa Readarr és el propietari del fitxer. És millor assegurar-se que el client de descàrrega estableixi correctament els permisos.",
|
||||
"CopyUsingHardlinksHelpTextWarning": "De tant en tant, els bloquejos de fitxers poden impedir reanomenar els fitxers que s'estan sembrant. Podeu desactivar temporalment la compartició i utilitzar la funció de reanomenar de Readarr com a solució.",
|
||||
"CouldntFindAnyResultsForTerm": "No s'ha pogut trobar cap resultat per a '{0}'",
|
||||
"CreateEmptyAuthorFolders": "Creeu carpetes buides per a les pel·lícules",
|
||||
"CreateEmptyAuthorFoldersHelpText": "Creeu carpetes de pel·lícules que falten durant l'exploració del disc",
|
||||
@@ -536,27 +536,27 @@
|
||||
"MetadataProfiles": "perfil de metadades",
|
||||
"OnBookFileDelete": "Al suprimir fitxer de pel·lícula",
|
||||
"OnBookFileDeleteForUpgrade": "Al suprimir el fitxer de pel·lícula per a l'actualització",
|
||||
"ReadarrSupportsAnyDownloadClient": "{appName} admet molts clients de baixada de torrent i usenet populars.",
|
||||
"ReadarrSupportsAnyIndexerThatUsesTheNewznabStandardAsWellAsOtherIndexersListedBelow": "{appName} admet qualsevol indexador que utilitzi l'estàndard Newznab, així com altres indexadors que s'enumeren a continuació.",
|
||||
"ReadarrSupportsAnyDownloadClient": "Readarr admet molts clients de baixada de torrent i usenet populars.",
|
||||
"ReadarrSupportsAnyIndexerThatUsesTheNewznabStandardAsWellAsOtherIndexersListedBelow": "Readarr admet qualsevol indexador que utilitzi l'estàndard Newznab, així com altres indexadors que s'enumeren a continuació.",
|
||||
"RecycleBinHelpText": "Els fitxers de pel·lícula aniran aquí quan se suprimeixin en lloc de suprimir-se permanentment",
|
||||
"RenameBooksHelpText": "{appName} utilitzarà el nom del fitxer existent si el reanomenat està desactivat",
|
||||
"RequiredHelpText": "El llançament ha de contenir almenys un d'aquests termes (no distingeix entre majúscules i minúscules)",
|
||||
"UILanguageHelpText": "Idioma que utilitzarà {appName} per a la interfície d'usuari",
|
||||
"RenameBooksHelpText": "Readarr utilitzarà el nom del fitxer existent si el reanomenat està desactivat",
|
||||
"RequiredHelpText": "Aquesta condició {0} ha de coincidir amb el format personalitzat a aplicar. En cas contrari, una única coincidència {0} és suficient.",
|
||||
"UILanguageHelpText": "Idioma que utilitzarà Readarr per a la interfície d'usuari",
|
||||
"UnableToAddANewRootFolderPleaseTryAgain": "No es pot afegir un indexador nou, torneu-ho a provar.",
|
||||
"UnableToLoadMetadataProfiles": "No es poden carregar els perfils de qualitat",
|
||||
"UpdateMechanismHelpText": "Utilitzeu l'actualitzador integrat de {appName} o un script",
|
||||
"UpdateMechanismHelpText": "Utilitzeu l'actualitzador integrat de Readarr o un script",
|
||||
"UpdateSelected": "Actualització seleccionada",
|
||||
"Database": "Base de dades",
|
||||
"DeleteQualityProfileMessageText": "Esteu segur que voleu suprimir el perfil de qualitat '{name}'?",
|
||||
"DeleteReleaseProfile": "Suprimeix el perfil de llançament",
|
||||
"DeleteReleaseProfileMessageText": "Esteu segur que voleu suprimir aquest perfil de retard?",
|
||||
"DeleteRootFolderMessageText": "Esteu segur que voleu suprimir l'indexador '{0}'?",
|
||||
"DeleteRootFolderMessageText": "Esteu segur que voleu suprimir la carpeta arrel '{name}'?",
|
||||
"DeleteSelectedBookFiles": "Suprimeix els fitxers de pel·lícules seleccionats",
|
||||
"DeleteSelectedBookFilesMessageText": "Esteu segur que voleu suprimir els fitxers de pel·lícules seleccionats?",
|
||||
"IncludeUnknownAuthorItemsHelpText": "Mostra elements sense pel·lícula a la cua. Això podria incloure pel·lícules eliminades o qualsevol altra cosa de la categoria de {appName}",
|
||||
"IncludeUnknownAuthorItemsHelpText": "Mostra elements sense pel·lícula a la cua. Això podria incloure pel·lícules eliminades o qualsevol altra cosa de la categoria de Readarr",
|
||||
"LogLevelvalueTraceTraceLoggingShouldOnlyBeEnabledTemporarily": "El registre de traça només s'hauria d'habilitar temporalment",
|
||||
"PortHelpTextWarning": "Cal reiniciar perquè tingui efecte",
|
||||
"RemotePathMappingCheckImportFailed": "{appName} no ha pogut importar una pel·lícula. Comproveu els vostres registres per obtenir més informació.",
|
||||
"RemotePathMappingCheckImportFailed": "Readarr no ha pogut importar una pel·lícula. Comproveu els vostres registres per obtenir més informació.",
|
||||
"RemoveTagExistingTag": "Etiqueta existent",
|
||||
"RemoveTagRemovingTag": "S'està eliminant l'etiqueta",
|
||||
"SupportsSearchvalueSearchIsNotSupportedWithThisIndexer": "La cerca no és compatible amb aquest indexador",
|
||||
@@ -564,9 +564,9 @@
|
||||
"RequiredPlaceHolder": "Afegeix una nova restricció",
|
||||
"20MinutesTwenty": "20 minuts: {0}",
|
||||
"AlternateTitles": "Títols alternatius",
|
||||
"AnalyticsEnabledHelpText": "Envieu informació anònima d'ús i errors als servidors de {appName}. Això inclou informació sobre el vostre navegador, quines pàgines {appName} WebUI feu servir, informes d'errors, així com el sistema operatiu i la versió del temps d'execució. Utilitzarem aquesta informació per prioritzar les funcions i les correccions d'errors.",
|
||||
"AnalyticsEnabledHelpText": "Envieu informació anònima d'ús i errors als servidors de Readarr. Això inclou informació sobre el vostre navegador, quines pàgines de l'interfície de Readarr feu servir, informes d'errors, així com el sistema operatiu i la versió del temps d'execució. Utilitzarem aquesta informació per prioritzar les funcions i les correccions d'errors.",
|
||||
"AnalyticsEnabledHelpTextWarning": "Cal reiniciar perquè tingui efecte",
|
||||
"AuthenticationMethodHelpText": "Requereix nom d'usuari i contrasenya per accedir al radar",
|
||||
"AuthenticationMethodHelpText": "Requereix el nom d'usuari i la contrasenya per accedir a {appName}",
|
||||
"CalendarWeekColumnHeaderHelpText": "Es mostra a sobre de cada columna quan la setmana és la visualització activa",
|
||||
"45MinutesFourtyFive": "45 minuts: {0}",
|
||||
"60MinutesSixty": "60 minuts: {0}",
|
||||
@@ -584,13 +584,13 @@
|
||||
"BypassIfHighestQuality": "Bypass si és de màxima qualitat",
|
||||
"MinimumCustomFormatScore": "Puntuació mínima de format personalitzat",
|
||||
"CustomFormatScore": "Puntuació de format personalitzat",
|
||||
"EnableRssHelpText": "S'utilitzarà quan {appName} cerqui publicacions periòdicament mitjançant RSS Sync",
|
||||
"EnableRssHelpText": "S'utilitzarà quan Readarr cerqui publicacions periòdicament mitjançant RSS Sync",
|
||||
"ImportListMultipleMissingRoots": "Falten diverses carpetes arrel per a les llistes d'importació: {0}",
|
||||
"IndexerDownloadClientHelpText": "Especifiqueu quin client de baixada s'utilitza per a capturar des d'aquest indexador",
|
||||
"ThemeHelpText": "Canvieu el tema de la interfície d'usuari de l'aplicació, el tema \"Automàtic\" utilitzarà el tema del vostre sistema operatiu per configurar el mode clar o fosc. Inspirat en Theme.Park",
|
||||
"UnableToLoadCustomFormats": "No es poden carregar formats personalitzats",
|
||||
"DeleteCustomFormat": "Suprimeix el format personalitzat",
|
||||
"DeleteFormatMessageText": "Esteu segur que voleu suprimir l'etiqueta de format {0} ?",
|
||||
"DeleteFormatMessageText": "Esteu segur que voleu suprimir l'etiqueta de format '{0}'?",
|
||||
"ExportCustomFormat": "Exporta el format personalitzat",
|
||||
"Formats": "Formats",
|
||||
"IncludeCustomFormatWhenRenamingHelpText": "Inclou en {Custom Formats} el format de canvi de nom",
|
||||
@@ -607,8 +607,8 @@
|
||||
"CustomFormat": "Format personalitzat",
|
||||
"CustomFormatSettings": "Configuració de formats personalitzats",
|
||||
"CustomFormats": "Formats personalitzats",
|
||||
"CutoffFormatScoreHelpText": "Un cop s'arribi a aquesta puntuació de format personalitzat, {appName} ja no baixarà pel·lícules",
|
||||
"DeleteCustomFormatMessageText": "Esteu segur que voleu suprimir l'indexador '{0}'?",
|
||||
"CutoffFormatScoreHelpText": "Un cop s'arribi a aquesta puntuació de format personalitzat, Readarr ja no baixarà pel·lícules",
|
||||
"DeleteCustomFormatMessageText": "Esteu segur que voleu suprimir el format personalitzat ‘{name}’?",
|
||||
"ImportListMissingRoot": "Falta la carpeta arrel per a les llistes d'importació: {0}",
|
||||
"IndexerTagsHelpText": "Utilitzeu aquest indexador només per a pel·lícules amb almenys una etiqueta coincident. Deixeu-ho en blanc per utilitzar-ho amb totes les pel·lícules.",
|
||||
"ColonReplacement": "Substitució de dos punts",
|
||||
@@ -711,7 +711,7 @@
|
||||
"DownloadClientDelugeSettingsDirectoryCompleted": "Directori al qual es mou quan s'hagi completat",
|
||||
"DownloadClientDelugeSettingsDirectoryCompletedHelpText": "Ubicació opcional de les baixades completades, deixeu-lo en blanc per utilitzar la ubicació predeterminada de Deluge",
|
||||
"DownloadClientDelugeSettingsDirectoryHelpText": "Ubicació opcional de les baixades completades, deixeu-lo en blanc per utilitzar la ubicació predeterminada de Deluge",
|
||||
"WhatsNew": "Novetats",
|
||||
"WhatsNew": "Què hi ha de nou?",
|
||||
"SelectDropdown": "Seleccioneu...",
|
||||
"NoCutoffUnmetItems": "No hi ha elements de tall no assolits",
|
||||
"ApplyTagsHelpTextHowToApplyAuthors": "Com aplicar etiquetes a les pel·lícules seleccionades",
|
||||
@@ -723,7 +723,7 @@
|
||||
"ResetQualityDefinitions": "Restableix les definicions de qualitat",
|
||||
"Small": "Petita",
|
||||
"TotalSpace": "Espai total",
|
||||
"BlocklistReleaseHelpText": "Impedeix que {appName} torni a capturar aquesta versió automàticament",
|
||||
"BlocklistReleaseHelpText": "Impedeix que Readarr torni a capturar aquesta versió automàticament",
|
||||
"CatalogNumber": "número de catàleg",
|
||||
"LastWriteTime": "La darrera hora d'escriptura",
|
||||
"NextExecution": "Propera execució",
|
||||
@@ -750,7 +750,7 @@
|
||||
"RecentChanges": "Canvis recents",
|
||||
"Rejections": "Rebutjats",
|
||||
"StatusEndedContinuing": "Continua",
|
||||
"DeleteBookFileMessageText": "Esteu segur que voleu suprimir '{path}'?",
|
||||
"DeleteBookFileMessageText": "Esteu segur que voleu suprimir '{0}'?",
|
||||
"DownloadClientTagHelpText": "Utilitzeu aquest indexador només per a pel·lícules amb almenys una etiqueta coincident. Deixeu-ho en blanc per utilitzar-ho amb totes les pel·lícules.",
|
||||
"DownloadClientRemovesCompletedDownloadsHealthCheckMessage": "El client de baixada {downloadClientName} està configurat per eliminar les baixades completades. Això pot provocar que les baixades s'eliminin del vostre client abans que {1} pugui importar-les.",
|
||||
"AutoRedownloadFailedFromInteractiveSearchHelpText": "Cerqueu i intenteu baixar automàticament una versió diferent quan es trobi una versió fallida a la cerca interactiva",
|
||||
@@ -784,5 +784,338 @@
|
||||
"DisabledForLocalAddresses": "Desactivat per a adreces locals",
|
||||
"Enabled": "Habilitat",
|
||||
"External": "Extern",
|
||||
"ApiKey": "Clau API"
|
||||
"ApiKey": "Clau API",
|
||||
"FailedToFetchUpdates": "No s'han pogut obtenir les actualitzacions",
|
||||
"AptUpdater": "Utilitzeu apt per a instal·lar l'actualització",
|
||||
"BuiltIn": "Integrat",
|
||||
"CurrentlyInstalled": "Instal·lat actualment",
|
||||
"DockerUpdater": "actualitzeu el contenidor Docker per a rebre l'actualització",
|
||||
"ExternalUpdater": "{appName} està configurat per a utilitzar un mecanisme d'actualització extern",
|
||||
"InstallLatest": "Instal·la l'últim",
|
||||
"OnLatestVersion": "La darrera versió de {appName} ja està instal·lada",
|
||||
"Script": "Script",
|
||||
"UnmappedFiles": "Carpetes sense mapejar",
|
||||
"UpdateAppDirectlyLoadError": "No es pot actualitzar {appName} directament,",
|
||||
"AddMissing": "Afegeix faltants",
|
||||
"Install": "Instal·la",
|
||||
"PasswordConfirmation": "Confirmeu la contrasenya",
|
||||
"PreviouslyInstalled": "Instal·lat anteriorment",
|
||||
"AddNewItem": "Afegeix un nou element",
|
||||
"ErrorLoadingContent": "S'ha produït un error en carregar aquest contingut",
|
||||
"DashOrSpaceDashDependingOnName": "Traç o guió d'espai depenent del nom",
|
||||
"EnabledHelpText": "Marqueu-ho per a habilitar el perfil de la versió",
|
||||
"IgnoreDownload": "Ignora la baixada",
|
||||
"IgnoreDownloadHint": "Atura {appName} de processar aquesta baixada més",
|
||||
"IgnoreDownloads": "Ignora les baixades",
|
||||
"IgnoreDownloadsHint": "Atura {appName} de processar aquestes baixades més",
|
||||
"IndexerIdHelpText": "Especifiqueu a quin indexador s'aplica el perfil",
|
||||
"LabelIsRequired": "L'etiqueta és necessària",
|
||||
"MediaManagementSettingsSummary": "Nomenat, configuració de la gestió de fitxers i carpetes arrel",
|
||||
"MetadataSource": "Font de les metadades",
|
||||
"NotificationsPlexSettingsAuthenticateWithPlexTv": "Autentica amb Plex.tv",
|
||||
"RemoveCompletedDownloads": "Elimina les baixades completes",
|
||||
"RemoveFailedDownloads": "Elimina les baixades fallides",
|
||||
"RemoveFromDownloadClientHint": "Elimina la baixada i el(s) fitxer(s) del client de baixada",
|
||||
"RemoveMultipleFromDownloadClientHint": "Elimina les baixades i els fitxers del client de baixada",
|
||||
"IndexerSettingsSeedTime": "Temps de la llavor",
|
||||
"IndexerSettingsSeedTimeHelpText": "El temps en què s'ha de sembrar un torrent abans d'aturar-lo, el buit utilitza el valor per defecte del client de baixada",
|
||||
"IndexerSettingsSeedRatio": "Ràtio de la llavor",
|
||||
"ResetQualityDefinitionsMessageText": "Esteu segur que voleu restablir les definicions de qualitat?",
|
||||
"SelectIndexerFlags": "Selecciona les banderes de l'indexador",
|
||||
"ShowBanners": "Mostra els bàners",
|
||||
"SkipRedownload": "Omet que es torni a descarregar",
|
||||
"SmartReplace": "Reemplaçament intel·ligent",
|
||||
"UseSSL": "Usa SSL",
|
||||
"WhySearchesCouldBeFailing": "Feu clic aquí per saber per què les cerques podrien estar fallant",
|
||||
"ThereWasAnErrorLoadingThisItem": "S'ha produït un error en carregar aquest element",
|
||||
"SearchMonitored": "Cerca monitorats",
|
||||
"DeleteSelected": "Suprimeix els seleccionats",
|
||||
"AllExpandedExpandAll": "Expandeix-ho tot",
|
||||
"CustomFormatsSettingsTriggerInfo": "Un format personalitzat s'aplicarà a un llançament o fitxer quan coincideixi almenys amb un de cada un dels diferents tipus de condició escollits.",
|
||||
"InstallMajorVersionUpdate": "Instal·la l'actualització",
|
||||
"InstallMajorVersionUpdateMessage": "Aquesta actualització instal·larà una nova versió principal i pot no ser compatible amb el vostre sistema. Esteu segur que voleu instal·lar aquesta actualització?",
|
||||
"NotificationsPlexSettingsAuthToken": "Testimoni d'autenticació",
|
||||
"Unknown": "Desconegut",
|
||||
"IsShowingMonitoredMonitorSelected": "Monitor seleccionat",
|
||||
"IsShowingMonitoredUnmonitorSelected": "Unmonitor seleccionat",
|
||||
"NotificationsSettingsUpdateMapPathsFromHelpText": "Camí de {appName}, utilitzat per modificar els camins de sèries quan {serviceName} veu la ubicació del camí de la biblioteca diferent de {appName} (requereix 'Biblioteca d'actualització')",
|
||||
"NotificationsSettingsUpdateMapPathsToHelpText": "Camí de {serviceName}, utilitzat per modificar els camins de sèries quan {serviceName} veu la ubicació del camí de la biblioteca diferent de {appName} (requereix 'Biblioteca d'actualització')",
|
||||
"NoMissingItems": "No falten elements",
|
||||
"InstallMajorVersionUpdateMessageLink": "Si us plau, comproveu [{domain}]({url}) per a més informació.",
|
||||
"RemoveQueueItemsRemovalMethodHelpTextWarning": "'Elimina del client de baixada' eliminarà les baixades i els fitxers del client de baixada.",
|
||||
"Monitoring": "Monitorant",
|
||||
"RemoveSelectedItemBlocklistMessageText": "Esteu segur que voleu eliminar els elements seleccionats de la llista de bloqueigs?",
|
||||
"NotificationsSettingsUseSslHelpText": "Connecta a {serviceName} a través d'HTTPS en lloc d'HTTP",
|
||||
"RemoveQueueItemRemovalMethod": "Mètode d'eliminació",
|
||||
"RemoveQueueItemRemovalMethodHelpTextWarning": "'Elimina des del client de baixada' eliminarà la baixada i el(s) fitxer(s) del client de baixada.",
|
||||
"LastSearched": "Darrera cerca",
|
||||
"NotificationsSettingsUpdateMapPathsFrom": "Mapear els camins des de",
|
||||
"NotificationsSettingsUpdateMapPathsTo": "Mapear els camins a",
|
||||
"RemoveQueueItem": "Elimina - {sourceTitle}",
|
||||
"SetIndexerFlags": "Estableix els indicadors de l'indexador",
|
||||
"NotificationsSettingsUpdateLibrary": "Actualitza la biblioteca",
|
||||
"IndexerSettingsSeedRatioHelpText": "Ràtio a la qual ha d'arribar un torrent abans d'aturar-se, buit utilitza el valor per defecte del client de baixada. La relació ha de ser com a mínim 1.0 i seguir les regles dels indexadors",
|
||||
"FailedToFetchSettings": "No s'ha pogut recuperar la configuració",
|
||||
"MonitoringOptions": "Opcions de monitoratge",
|
||||
"RootFolderPathHelpText": "Els elements de la llista del directori arrel s'afegiran a",
|
||||
"ThereWasAnErrorLoadingThisPage": "S'ha produït un error en carregar aquesta pàgina",
|
||||
"BookEditor": "Editor de llibres",
|
||||
"BookProgressBarText": "{bookCount} / {totalBookCount} (Files: {bookFileCount})",
|
||||
"ConsoleLogLevel": "Nivell de registre de la consola",
|
||||
"Country": "País",
|
||||
"DataFutureBooks": "Controla els llibres que encara no s'han publicat",
|
||||
"EmbedMetadataInBookFiles": "Incrusta les metadades als fitxers de llibre",
|
||||
"ForeignId": "ID estranger",
|
||||
"GoToAuthorListing": "Ves a la llista d'autors",
|
||||
"HasMonitoredBooksNoMonitoredBooksForThisAuthor": "No hi ha llibres supervisats per a aquest autor",
|
||||
"HideBooks": "Oculta els llibres",
|
||||
"ISBN": "ISBN",
|
||||
"IgnoreDeletedBooks": "Ignora els llibres eliminats",
|
||||
"IfYouDontAddAnImportListExclusionAndTheAuthorHasAMetadataProfileOtherThanNoneThenThisBookMayBeReaddedDuringTheNextAuthorRefresh": "Si no afegeixes una exclusió de llista d'importació i l'autor té un perfil de metadades distint de 'Cap', llavors aquest llibre pot ser de nou afegit durant el següent refresc d'autor.",
|
||||
"IgnoredMetaHelpText": "Els llibres s'ignoraran si contenen un o més termes (insensible a majúscules i minúscules)",
|
||||
"MassBookSearchWarning": "Esteu segur que voleu realitzar una cerca massiva de llibres per {0} llibres?",
|
||||
"InteractiveSearchModalHeaderBookAuthor": "Cerca interactiva - {bookTitle} per {authorName}",
|
||||
"IsCalibreLibraryHelpText": "Usa el servidor de contingut del Calibre per manipular la biblioteca",
|
||||
"IsExpandedHideBooks": "Oculta els llibres",
|
||||
"IsExpandedShowBooks": "Mostra els llibres",
|
||||
"IsInUseCantDeleteAQualityProfileThatIsAttachedToAnAuthorOrImportList": "No es pot suprimir un perfil de qualitat que està adjuntat a un autor o llista d'importació",
|
||||
"Iso639-3": "Codis de llengua ISO 639-3, o 'null', separats per comes",
|
||||
"LibraryHelpText": "Nom de la biblioteca del servidor de contingut del Calibre. Deixeu-ho en blanc per defecte.",
|
||||
"LogRotation": "Rotació del registre",
|
||||
"LogSqlHelpText": "Registra totes les consultes SQL des de Readarr",
|
||||
"MassBookSearch": "Cerca massiva de llibres",
|
||||
"MetadataConsumers": "Consumidors de metadades",
|
||||
"MetadataSourceHelpText": "Font alternativa de metadades (Deixa en blanc per defecte)",
|
||||
"BookNaming": "Nom del llibre",
|
||||
"CalibreLibrary": "Biblioteca del Calibre",
|
||||
"OnImportFailure": "En importar fallada",
|
||||
"OnAuthorAdded": "En afegir l'autor",
|
||||
"SendMetadataToCalibre": "Envia les metadades al Calibre",
|
||||
"SeriesNumber": "Número de sèrie",
|
||||
"SeriesTotal": "Sèries ({0})",
|
||||
"AllowFingerprintingHelpTextWarning": "Això requereix que el Readarr llegeixi parts del fitxer que alentiran els escanejos i poden causar una alta activitat de disc o de xarxa.",
|
||||
"AuthorProgressBarText": "{availableBookCount} / {bookCount} (Total: {totalBookCount}, Fitxers: {bookFileCount})",
|
||||
"AutomaticallySwitchEdition": "Canvia l'edició automàticament",
|
||||
"BackupIntervalHelpText": "Interval per a fer una còpia de seguretat de la base de dades de Readarr i de la configuració",
|
||||
"CalibreContentServer": "Servidor de contingut del Calibre",
|
||||
"CalibreContentServerText": "L'ús d'un Servidor de Contingut Calibre (no Calibre Web) permet a Readarr afegir llibres a la vostra biblioteca Calibre i activar les conversions entre formats",
|
||||
"CalibrePassword": "Contrasenya del Calibre",
|
||||
"CalibreUsername": "Nom d'usuari del Calibre",
|
||||
"CountIndexersSelected": "{selectedCount} indexador(s) seleccionat",
|
||||
"DataListMonitorAll": "Controla els autors i tots els llibres de cada autor inclosos a la llista d'importació",
|
||||
"DataMissingBooks": "Monitoritza els llibres que encara no tenen fitxers o que encara no s'han publicat",
|
||||
"DefaultMonitorOptionHelpText": "Quins llibres s'han de controlar en afegir-los inicialment per als autors detectats en aquesta carpeta",
|
||||
"DefaultQualityProfileIdHelpText": "Perfil de qualitat per defecte per als autors detectats en aquesta carpeta",
|
||||
"EditList": "Edita la llista",
|
||||
"EmbedMetadataHelpText": "Digues al Calibre que escrigui les metadades al fitxer de llibre real",
|
||||
"ExistingBooks": "Llibres existents",
|
||||
"ForeignIdHelpText": "L'identificador estranger de l'autor/llibre a excloure",
|
||||
"FutureDaysHelpText": "Dies per a l'alimentació iCal per mirar al futur",
|
||||
"ImportFailures": "Importa fallades",
|
||||
"ImportListSpecificSettings": "Importa la configuració específica de la llista",
|
||||
"ItsEasyToAddANewAuthorOrBookJustStartTypingTheNameOfTheItemYouWantToAdd": "És fàcil afegir un Autor nou o un Llibre simplement començar a escriure el nom de l'element que voleu afegir",
|
||||
"LatestBook": "Últim llibre",
|
||||
"MinPagesHelpText": "Ignora els llibres amb menys pàgines que això",
|
||||
"MinPopularityHelpText": "La popularitat és la qualificació mitjana * nombre de vots",
|
||||
"MinimumPopularity": "Popularitat mínima",
|
||||
"MissingBooks": "Llibres que falten",
|
||||
"MonitorAuthor": "Autor del monitor",
|
||||
"MonitorBook": "Llibre del monitor",
|
||||
"MonitorBookExistingOnlyWarning": "Aquest és un ajust ajustat de la configuració supervisada per a cada llibre. Utilitzeu l'opció d'Autor/Edita per controlar què passa amb els llibres acabats d'afegir",
|
||||
"MonitorNewBooks": "Monitora els llibres nous",
|
||||
"MonitorNewItemsHelpText": "Quins llibres nous s'han de controlar",
|
||||
"MonitoredAuthorIsMonitored": "L'autor està monitoritzat",
|
||||
"MonitoredAuthorIsUnmonitored": "L'autor no està monitoritzat",
|
||||
"MonitoringOptionsHelpText": "Quins llibres s'han de controlar després d'afegir l'autor (ajust d'un sol cop)",
|
||||
"MusicBrainzBookID": "ID del llibre MusicBrainz",
|
||||
"MusicBrainzReleaseID": "ID de llançament del MusicBrainz",
|
||||
"MusicBrainzTrackID": "ID de la pista MusicBrainz",
|
||||
"NameLastFirst": "Cognom Nom",
|
||||
"NewBooks": "Llibres nous",
|
||||
"NoName": "No mostris el nom",
|
||||
"OnAuthorAddedHelpText": "En afegir l'autor",
|
||||
"OnAuthorDelete": "En suprimir l'autor",
|
||||
"OnAuthorDeleteHelpText": "En suprimir l'autor",
|
||||
"OnBookDeleteHelpText": "En suprimir el llibre",
|
||||
"OnBookRetagHelpText": "En reetiquetar el llibre",
|
||||
"OnDownloadFailure": "A la fallada de baixada",
|
||||
"OnDownloadFailureHelpText": "A la fallada de baixada",
|
||||
"OnImportFailureHelpText": "En importar fallada",
|
||||
"OnReleaseImport": "En publicar la importació",
|
||||
"OnReleaseImportHelpText": "En publicar la importació",
|
||||
"OutputFormatHelpText": "Opcionalment, demaneu al Calibre que es converteixi a altres formats en importar. Llista separada per comes.",
|
||||
"PathHelpText": "Carpeta arrel que conté la biblioteca de llibres",
|
||||
"PathHelpTextWarning": "Això ha de ser diferent del directori on el vostre client de baixada posa fitxers",
|
||||
"PortHelpText": "Port del servidor de contingut del Calibre",
|
||||
"PreviewRetag": "Reetiqueta de la vista prèvia",
|
||||
"QualityProfileIdHelpText": "Els elements de la llista de perfils de qualitat s'han d'afegir amb",
|
||||
"ReadarrSupportsMultipleListsForImportingBooksAndAuthorsIntoTheDatabase": "Readarr admet múltiples llistes per importar llibres i autors a la base de dades.",
|
||||
"RecycleBinUnableToWriteHealthCheck": "No s'ha pogut escriure a la carpeta de contenidors de reciclatge configurada: {0}. Assegureu-vos que aquest camí existeix i que l'usuari que executa el Readarr pot escriure",
|
||||
"RefreshAuthor": "Actualitza l'autor",
|
||||
"RefreshBook": "Actualitza el llibre",
|
||||
"RefreshInformation": "Actualitza la informació",
|
||||
"RemotePathMappingsInfo": "Remote Path Mappings són molt rarament necessaris, si {app} i el vostre client de descàrrega estan en el mateix sistema, és millor que coincideixi amb els vostres camins. Per a més informació, vegeu el [wiki]({wikiLink}).",
|
||||
"SearchForMonitoredBooks": "Cerca llibres monitoritzats",
|
||||
"SearchForNewItems": "Cerca elements nous",
|
||||
"SelectBook": "Selecciona el llibre",
|
||||
"SelectEdition": "Selecciona l'edició",
|
||||
"ShouldMonitorExisting": "Controla els llibres existents",
|
||||
"ShouldSearchHelpText": "Cerca indexadors per als elements nous afegits. Utilitza amb precaució per a llistes grans.",
|
||||
"ShowBookCount": "Mostra el recompte de llibres",
|
||||
"ShowTitleHelpText": "Mostra el nom de l'autor sota el cartell",
|
||||
"StatusEndedDeceased": "Defunció",
|
||||
"TooManyBooks": "Falten o hi ha massa llibres? Modifica o crea un nou",
|
||||
"UnableToLoadMetadataProviderSettings": "No s'ha pogut carregar la configuració del proveïdor de metadades",
|
||||
"UrlBaseHelpText": "Afegeix un prefix a l'URL del Calibre, p. ex. http://[host]:[port]/[urlBase]",
|
||||
"ShouldMonitorExistingHelpText": "Controla automàticament els llibres d'aquesta llista que ja són a Readarr",
|
||||
"ShowBannersHelpText": "Mostra els bàners en lloc dels noms",
|
||||
"ShowLastBook": "Mostra l'últim llibre",
|
||||
"ShowName": "Mostra el nom",
|
||||
"SkipBooksWithNoISBNOrASIN": "Omet els llibres sense ISBN ni ASIN",
|
||||
"SkipPartBooksAndSets": "Omet els llibres de parts i els conjunts",
|
||||
"SkipSecondarySeriesBooks": "Omet els llibres de les sèries secundàries",
|
||||
"SpecificBook": "Llibre específic",
|
||||
"FileDetails": "Detalls del fitxer",
|
||||
"FilesTotal": "Fitxers ({0})",
|
||||
"FilterAnalyticsEvents": "Filtra els esdeveniments d'anàlisi",
|
||||
"FilterAuthor": "Filtra l'autor",
|
||||
"FilterSentryEventsHelpText": "Filtra els esdeveniments d'error d'usuari coneguts perquè s'enviïn com a Analytics",
|
||||
"IsExpandedShowFileInfo": "Mostra la informació del fitxer",
|
||||
"IsInUseCantDeleteAMetadataProfileThatIsAttachedToAnAuthorOrImportList": "No es pot suprimir un perfil de metadades que està adjuntat a un autor o a una llista d'importació",
|
||||
"PasswordHelpText": "Contrasenya del servidor de contingut del Calibre",
|
||||
"PastDays": "Dies passats",
|
||||
"WriteTagsAll": "Tots els fitxers; només importació inicial",
|
||||
"TagsHelpText": "Aplica als autors amb almenys una etiqueta coincident. Deixa en blanc per aplicar a tots els autors",
|
||||
"TotalBookCountBooksTotalBookFileCountBooksWithFilesInterp": "{0} llibres en total. {1} llibres amb fitxers.",
|
||||
"TrackNumber": "Número de pista",
|
||||
"TrackTitle": "Títol de la pista",
|
||||
"WatchLibraryForChangesHelpText": "Torna a explorar automàticament quan els fitxers canviïn en una carpeta arrel",
|
||||
"WatchRootFoldersForFileChanges": "Vigila les carpetes arrel per als canvis de fitxer",
|
||||
"WriteAudioTagsScrub": "Neteja les etiquetes existents",
|
||||
"WriteAudioTagsScrubHelp": "Elimina les etiquetes existents dels fitxers, deixant només les afegides pel Readarr.",
|
||||
"LogSQL": "Log SQL",
|
||||
"AnyEditionOkHelpText": "Readarr canviarà automàticament a l'edició que coincideixi millor amb els fitxers baixats",
|
||||
"AudioFileMetadata": "Escriu les metadades als fitxers d'àudio",
|
||||
"AuthorEditor": "Editor de l'autor",
|
||||
"AuthorFolderFormat": "Format de carpeta d'autor",
|
||||
"EntityName": "Nom de l'entitat",
|
||||
"FilterPlaceHolder": "Filtra el llibre",
|
||||
"UsernameHelpText": "Nom d'usuari del servidor de contingut del Calibre",
|
||||
"OnBookDelete": "En suprimir el llibre",
|
||||
"BypassIfHighestQualityHelpText": "Evita el retard quan el llançament tingui la qualitat més alta habilitada en el perfil de qualitat",
|
||||
"CountImportListsSelected": "{selectedCount} llista(es) d'importació seleccionada",
|
||||
"DataNone": "No es controlarà cap llibre",
|
||||
"IsExpandedHideFileInfo": "Amaga la informació del fitxer",
|
||||
"NoTagsHaveBeenAddedYet": "No s'han afegit etiquetes encara. Afegeix etiquetes per enllaçar autors amb perfils de retard, restriccions o notificacions. Feu clic a {0} per obtenir més informació sobre les etiquetes a Readarr.",
|
||||
"DeleteMetadataProfile": "Suprimeix el perfil de metadades",
|
||||
"FutureBooks": "Llibres futurs",
|
||||
"FutureDays": "Dies de futur",
|
||||
"MetadataProfileIdHelpText": "Els elements de la llista de perfils de metadades s'han d'afegir amb",
|
||||
"NameFirstLast": "Nom Cognom",
|
||||
"DownloadPropersAndRepacksHelpTexts2": "Usa 'No prefereixis' per ordenar per puntuació de paraules preferida sobre propers/repacks",
|
||||
"IndexerIdHelpTextWarning": "L'ús d'un indexador específic amb paraules preferides pot conduir a versions duplicades",
|
||||
"LogRotateHelpText": "Nombre màxim de fitxers de registre a mantenir desats a la carpeta de registres",
|
||||
"MetadataProviderSource": "Font del proveïdor de metadades",
|
||||
"MissingBooksAuthorMonitored": "Llibres que falten (controlat per l'autor)",
|
||||
"MissingBooksAuthorNotMonitored": "Llibres que falten (Autor no supervisat)",
|
||||
"MonitoredHelpText": "Readarr cercarà i descarregarà un llibre",
|
||||
"UseCalibreContentServer": "Usa el servidor de contingut del Calibre",
|
||||
"MonitorNewItems": "Monitora els llibres nous",
|
||||
"SearchForAllCutoffUnmetBooks": "Cerca tots els llibres retallats i no satisfets",
|
||||
"SearchForAllMissingBooks": "Cerca tots els llibres que falten",
|
||||
"TheFollowingFilesWillBeDeleted": "S'eliminaran els següents fitxers:",
|
||||
"TagsSettingsSummary": "Gestiona les etiquetes d'autor, perfil, restricció i notificació",
|
||||
"WriteAudioTags": "Etiqueta els fitxers d'àudio amb metadades",
|
||||
"AddImportListExclusionHelpText": "Evita que el llibre s'afegeixi al Readarr mitjançant la importació de llistes o l'actualització de l'autor",
|
||||
"BookStudio": "Book Studio",
|
||||
"BookTitle": "Títol del llibre",
|
||||
"Books": "Llibres",
|
||||
"DataListMonitorSpecificBook": "Autors de monitors, però només monitoritza els llibres inclosos explícitament a la llista",
|
||||
"OnBookTagUpdate": "En actualitzar l'etiqueta del llibre",
|
||||
"CalibreNotCalibreWeb": "Readarr pot interactuar amb el servidor de continguts de Calibre. No pot utilitzar Calibre-Web, que és programari no relacionat.",
|
||||
"ShouldMonitorHelpText": "Monitora els autors i llibres nous afegits d'aquesta llista",
|
||||
"MusicBrainzRecordingID": "ID d'enregistrament del MusicBrainz",
|
||||
"AllAuthorBooks": "Tots els autors",
|
||||
"EditionsHelpText": "Canvia l'edició d'aquest llibre",
|
||||
"BooksTotal": "Llibres ({0})",
|
||||
"CountAuthorsSelected": "{selectedCount} autors seleccionats",
|
||||
"DataNewAllBooks": "Monitora tots els llibres nous",
|
||||
"LoadingEditionsFailed": "Ha fallat la càrrega d'edicions",
|
||||
"MetadataSettingsSummary": "Crea fitxers de metadades quan s'importin llibres o s'actualitzi l'autor",
|
||||
"SearchBoxPlaceHolder": "P. ex. Guerra i pau, goodreads:656, isbn:067003469X, asin:B00JCDK5ME",
|
||||
"SkipRedownloadHelpText": "Evita que el Readarr intenti baixar versions alternatives per als elements eliminats",
|
||||
"CalibreMetadata": "Metadades del Calibre",
|
||||
"Bookshelf": "Prestatge",
|
||||
"DataListMonitorNone": "No vigilar autors ni llibres",
|
||||
"ImportListSettings": "Configuració general de la llista d'importació",
|
||||
"AuthorIndex": "Índex de l'autor",
|
||||
"AuthorNameHelpText": "El nom de l'autor/llibre a excloure (pot ser qualsevol cosa significativa)",
|
||||
"BookIndex": "Índex del llibre",
|
||||
"BookList": "Llista de llibres",
|
||||
"CalibreHost": "Amfitrió del Calibre",
|
||||
"CalibrePort": "Port del Calibre",
|
||||
"CalibreSettings": "Paràmetres del Calibre",
|
||||
"CalibreUrlBase": "Base d'url del Calibre",
|
||||
"UpdateCovers": "Actualitza les converses",
|
||||
"UpdateCoversHelpText": "Estableix les portades del llibre al Calibre perquè coincideixin amb les del Readarr",
|
||||
"UseSslHelpText": "Usa SSL per a connectar al servidor de contingut Calibre",
|
||||
"WriteBookTagsHelpTextWarning": "En seleccionar ‘Tots els fitxers’ s'alteraran els fitxers existents quan s'importin.",
|
||||
"WriteTagsNew": "Només per a baixades noves",
|
||||
"AddedAuthorSettings": "Configuració de l'autor afegit",
|
||||
"DefaultMetadataProfileIdHelpText": "Perfil predeterminat de metadades per als autors detectats en aquesta carpeta",
|
||||
"ContinuingMoreBooksAreExpected": "S'esperen més llibres",
|
||||
"DataNewBooks": "Supervisa els llibres nous publicats després del llibre més nou existent",
|
||||
"AllowAuthorChangeClickToChangeAuthor": "Feu clic per canviar l'autor",
|
||||
"AllowedLanguages": "Llengües permeses",
|
||||
"ContinuingNoAdditionalBooksAreExpected": "No s'espera cap llibre addicional",
|
||||
"DeleteBookFile": "Suprimeix el fitxer de llibre",
|
||||
"ConvertToFormat": "Converteix a format",
|
||||
"DataAllBooks": "Controla tots els llibres",
|
||||
"DataExistingBooks": "Controla els llibres que tenen fitxers o que encara no s'han publicat",
|
||||
"DeleteFormat": "Suprimeix el format",
|
||||
"DeleteFilesHelpText": "Suprimeix els fitxers del llibre i la carpeta de l'autor",
|
||||
"DiscNumber": "Número de disc",
|
||||
"EndedAllBooksDownloaded": "Ended (Tots els llibres baixats)",
|
||||
"FirstBook": "Primer llibre",
|
||||
"HostHelpText": "Servidor de contingut del Calibre",
|
||||
"MonitorExistingBooks": "Monitora els llibres existents",
|
||||
"MusicBrainzAuthorID": "ID de l'autor del MusicBrainz",
|
||||
"NameStyle": "Estil del nom de l'autor",
|
||||
"PastDaysHelpText": "Dies per a l'alimentació iCal per a mirar el passat",
|
||||
"DataFirstBook": "Fes el seguiment del primer llibre. Tots els altres llibres seran ignorats",
|
||||
"DataLatestBook": "Controla els últims llibres i futurs",
|
||||
"DataNewNone": "No vigila cap llibre nou",
|
||||
"DefaultReadarrTags": "Etiquetes del lector per defecte",
|
||||
"DefaultTagsHelpText": "Etiquetes de Readarr per defecte per als autors detectats en aquesta carpeta",
|
||||
"DiscCount": "Comptador de discs",
|
||||
"EditAuthor": "Edita l'autor",
|
||||
"EditBook": "Edita el llibre",
|
||||
"ExistingItems": "Elements existents",
|
||||
"ManualDownload": "Baixada manual",
|
||||
"MinimumPages": "Pàgines mínimes",
|
||||
"CollapseMultipleBooks": "Redueix diversos llibres",
|
||||
"CollapseMultipleBooksHelpText": "Redueix diversos llibres que es publiquen el mateix dia",
|
||||
"ContinuingAllBooksDownloaded": "Continuant (tots els llibres baixats)",
|
||||
"Development": "Desenvolupament",
|
||||
"EnableAutomaticAddHelpText": "Afegeix autor/llibres al Readarr quan es realitzin sincronitzacions a través de la IU o per Readarr",
|
||||
"RenameBooks": "Canvia el nom dels llibres",
|
||||
"SearchBook": "Cerca al llibre",
|
||||
"SelectedCountAuthorsSelectedInterp": "{0} Autor/s seleccionat/s",
|
||||
"SetReadarrTags": "Estableix les etiquetes del Readarr",
|
||||
"SkipBooksWithMissingReleaseDate": "Omet els llibres amb la data de publicació que manca",
|
||||
"TheBooksFilesWillBeDeleted": "S'eliminaran els fitxers del llibre.",
|
||||
"UpdatingIsDisabledInsideADockerContainerUpdateTheContainerImageInstead": "L'actualització està desactivada dins d'un contenidor d'acobladors. Actualitza la imatge del contenidor.",
|
||||
"WriteTagsSync": "Tots els fitxers; mantén la sincronització amb Goodreads",
|
||||
"ASIN": "ASIN",
|
||||
"BookAvailableButMissing": "Llibre disponible, però desaparegut",
|
||||
"CalibreOutputFormat": "Format de sortida del Calibre",
|
||||
"CalibreOutputProfile": "Perfil de sortida del Calibre",
|
||||
"BookFilesCountMessage": "No hi ha fitxers de llibre",
|
||||
"BookMonitoring": "Seguiment del llibre",
|
||||
"AllBooks": "Tots els llibres",
|
||||
"AllowFingerprinting": "Permet la impressió digital",
|
||||
"AllowFingerprintingHelpText": "Utilitza l'empremta digital per millorar la precisió de la coincidència de llibres",
|
||||
"ExistingTagsScrubbed": "Etiquetes existents rastrejades",
|
||||
"NETCore": ".NET Core",
|
||||
"WriteMetadataTags": "Escriu les etiquetes de les metadades"
|
||||
}
|
||||
|
||||
@@ -13,26 +13,26 @@
|
||||
"60MinutesSixty": "60 minut: {0}",
|
||||
"About": "O aplikaci",
|
||||
"AddListExclusion": "Přidat vyloučení seznamu",
|
||||
"AddingTag": "Přidání značky",
|
||||
"AddingTag": "Přidávání štítku",
|
||||
"AgeWhenGrabbed": "Stáří (kdy bylo získáno)",
|
||||
"AlreadyInYourLibrary": "Již máte ve své knihovně",
|
||||
"AlternateTitles": "Alternativní název",
|
||||
"Analytics": "Analýzy",
|
||||
"AnalyticsEnabledHelpText": "Odesílejte anonymní informace o použití a chybách na servery {appName}u. To zahrnuje informace o vašem prohlížeči, které stránky {appName} WebUI používáte, hlášení chyb a také verzi operačního systému a běhového prostředí. Tyto informace použijeme k upřednostnění funkcí a oprav chyb.",
|
||||
"AppDataDirectory": "Adresář AppData",
|
||||
"ApplyTags": "Použít značky",
|
||||
"ApplyTags": "Použít štítky",
|
||||
"Authentication": "Ověřování",
|
||||
"AuthenticationMethodHelpText": "Vyžadovat uživatelské jméno a heslo pro přístup k {appName}",
|
||||
"AuthenticationMethodHelpText": "Vyžadovat uživatelské jméno a heslo pro přístup k {appName}u",
|
||||
"AuthorClickToChangeBook": "Kliknutím změníte film",
|
||||
"AutoRedownloadFailedHelpText": "Automatické vyhledání a pokus o stažení jiného vydání",
|
||||
"AutoUnmonitorPreviouslyDownloadedBooksHelpText": "Filmy odstraněné z disku jsou automaticky sledovány v {appName}u",
|
||||
"Automatic": "Automatický",
|
||||
"BackupFolderHelpText": "Relativní cesty budou v adresáři AppData společnosti {appName}",
|
||||
"BackupNow": "Ihned zálohovat",
|
||||
"BackupNow": "Zálohovat nyní",
|
||||
"BackupRetentionHelpText": "Automatické zálohy starší než doba uchovávání budou automaticky vyčištěny",
|
||||
"Backups": "Zálohy",
|
||||
"BindAddress": "Vázat adresu",
|
||||
"BindAddressHelpText": "Platná IP adresa, localhost nebo '*' pro všechna rozhraní",
|
||||
"BindAddressHelpText": "Platná IP adresa, localhost nebo ‚*‘ pro všechna rozhraní",
|
||||
"BindAddressHelpTextWarning": "Vyžaduje restart, aby se projevilo",
|
||||
"BookIsDownloading": "Film se stahuje",
|
||||
"BookIsDownloadingInterp": "Film se stahuje - {0}% {1}",
|
||||
@@ -41,8 +41,8 @@
|
||||
"Calendar": "Kalendář",
|
||||
"CalendarWeekColumnHeaderHelpText": "Zobrazuje se nad každým sloupcem, když je aktivní zobrazení týden",
|
||||
"Cancel": "Zrušit",
|
||||
"CancelPendingTask": "Opravdu chcete zrušit tento nevyřízený úkol?",
|
||||
"CertificateValidation": "Ověření certifikátu",
|
||||
"CancelPendingTask": "Opravdu chcete zrušit tento úkol čekající na vyřízení?",
|
||||
"CertificateValidation": "Ověřování certifikátu",
|
||||
"CertificateValidationHelpText": "Změňte přísnost ověřování certifikátů HTTPS. Neměňte, pokud nerozumíte rizikům.",
|
||||
"ChangeFileDate": "Změnit datum souboru",
|
||||
"ChangeHasNotBeenSavedYet": "Změna ještě nebyla uložena",
|
||||
@@ -51,7 +51,7 @@
|
||||
"ChmodFolderHelpTextWarning": "Funguje to pouze v případě, že je uživatel souboru {appName} vlastníkem souboru. Je lepší zajistit, aby stahovací klient správně nastavil oprávnění.",
|
||||
"ChownGroupHelpText": "Název skupiny nebo gid. Použijte gid pro vzdálené systémy souborů.",
|
||||
"ChownGroupHelpTextWarning": "Funguje to pouze v případě, že je uživatel souboru {appName} vlastníkem souboru. Je lepší zajistit, aby stahovací klient používal stejnou skupinu jako {appName}.",
|
||||
"Clear": "Vyčistit",
|
||||
"Clear": "Vymazat",
|
||||
"ClickToChangeQuality": "Kliknutím změníte kvalitu",
|
||||
"ClientPriority": "Priorita klienta",
|
||||
"CloneIndexer": "Klonovat indexátor",
|
||||
@@ -68,7 +68,7 @@
|
||||
"CutoffHelpText": "Jakmile je této kvality dosaženo, {appName} již nebude stahovat filmy",
|
||||
"CutoffUnmet": "Mezní hodnota nesplněna",
|
||||
"DatabaseMigration": "Migrace databáze",
|
||||
"Dates": "Termíny",
|
||||
"Dates": "Data",
|
||||
"DelayProfile": "Profil zpoždění",
|
||||
"DelayProfiles": "Profily zpoždění",
|
||||
"DelayingDownloadUntilInterp": "Zpoždění stahování do {0} o {1}",
|
||||
@@ -429,8 +429,8 @@
|
||||
"UsenetDelay": "Usenet Zpoždění",
|
||||
"UsenetDelayHelpText": "Zpoždění v minutách čekání před uvolněním z Usenetu",
|
||||
"Username": "Uživatelské jméno",
|
||||
"BranchUpdate": "Pobočka, která se má použít k aktualizaci {appName}",
|
||||
"BranchUpdateMechanism": "Pobočka používaná mechanismem externí aktualizace",
|
||||
"BranchUpdate": "Větev použitá k aktualizaci {appName}u",
|
||||
"BranchUpdateMechanism": "Větev použitá externím aktualizačním mechanismem",
|
||||
"Version": "Verze",
|
||||
"WeekColumnHeader": "Záhlaví sloupce týdne",
|
||||
"Year": "Rok",
|
||||
@@ -593,12 +593,12 @@
|
||||
"NoChange": "Žádná změna",
|
||||
"RemovingTag": "Odebírání značky",
|
||||
"SetTags": "Nastavit značky",
|
||||
"ApplyTagsHelpTextAdd": "Přidat: Přidá značky k již existujícímu seznamu",
|
||||
"ApplyTagsHelpTextAdd": "Přidat: Přidat štítky do existujícího seznamu štítků",
|
||||
"ApplyTagsHelpTextHowToApplyDownloadClients": "Jak použít značky na vybrané klienty pro stahování",
|
||||
"ApplyTagsHelpTextHowToApplyImportLists": "Jak použít značky na vybrané seznamy k importu",
|
||||
"ApplyTagsHelpTextHowToApplyIndexers": "Jak použít značky na vybrané indexery",
|
||||
"ApplyTagsHelpTextRemove": "Odebrat: Odebrat zadané značky",
|
||||
"ApplyTagsHelpTextReplace": "Nahradit: Nahradit značky zadanými značkami (prázdné pole vymaže všechny značky)",
|
||||
"ApplyTagsHelpTextHowToApplyIndexers": "Jak použít štítky na vybrané indexery",
|
||||
"ApplyTagsHelpTextRemove": "Odebrat: Odebrat zadané štítky",
|
||||
"ApplyTagsHelpTextReplace": "Nahradit: Nahradit štítky zadanými štítky (prázdné pole vymaže všechny štítky)",
|
||||
"DeleteSelectedDownloadClients": "Odstranit klienta pro stahování",
|
||||
"DeleteSelectedIndexersMessageText": "Opravdu chcete smazat {count} vybraný(ch) indexer(ů)?",
|
||||
"Yes": "Ano",
|
||||
@@ -618,9 +618,9 @@
|
||||
"FreeSpace": "Volný prostor",
|
||||
"System": "Systém",
|
||||
"TotalSpace": "Celkový prostor",
|
||||
"ConnectionLost": "Spojení ztraceno",
|
||||
"ConnectionLost": "Ztráta spojení",
|
||||
"ConnectionLostReconnect": "{appName} se pokusí připojit automaticky, nebo můžete kliknout na tlačítko znovunačtení níže.",
|
||||
"ConnectionLostToBackend": "{appName} ztratil spojení s backendem a pro obnovení funkčnosti bude třebaho znovu načíst.",
|
||||
"ConnectionLostToBackend": "{appName} ztratil spojení s backendem a pro obnovení funkčnosti bude potřeba ho znovu načíst.",
|
||||
"Large": "Velký",
|
||||
"LastDuration": "lastDuration",
|
||||
"Ui": "UI",
|
||||
@@ -630,7 +630,7 @@
|
||||
"NextExecution": "Další spuštění",
|
||||
"ClickToChangeReleaseGroup": "Kliknutím změníte skupinu vydání",
|
||||
"ApplicationURL": "URL aplikace",
|
||||
"ApplicationUrlHelpText": "Externí adresa URL této aplikace včetně http(s)://, portu a základní adresy URL",
|
||||
"ApplicationUrlHelpText": "Externí adresa URL této aplikace včetně http(s)://, portu a základu URL",
|
||||
"Continuing": "Pokračující",
|
||||
"AutomaticUpdatesDisabledDocker": "Automatické aktualizace nejsou při použití aktualizačního mechanismu Docker přímo podporovány. Obraz kontejneru je nutné aktualizovat mimo {appName} nebo použít skript",
|
||||
"AppUpdated": "{appName} aktualizován",
|
||||
@@ -688,7 +688,7 @@
|
||||
"AutoRedownloadFailedFromInteractiveSearch": "Opětovné stažení z interaktivního vyhledávání selhalo",
|
||||
"AutoRedownloadFailedFromInteractiveSearchHelpText": "Automaticky vyhledat a pokusit se o stažení jiného vydání, pokud bylo neúspěšné vydání zachyceno z interaktivního vyhledávání",
|
||||
"SelectDropdown": "'Vybrat...",
|
||||
"CustomFilter": "Vlastní filtry",
|
||||
"CustomFilter": "Vlastní filtr",
|
||||
"SelectQuality": "Vyberte kvalitu",
|
||||
"IndexerFlags": "Příznaky indexeru",
|
||||
"InteractiveSearchModalHeader": "Interaktivní vyhledávání",
|
||||
@@ -702,13 +702,13 @@
|
||||
"ConnectionSettingsUrlBaseHelpText": "Přidá předponu do {connectionName} url, jako např. {url}",
|
||||
"AuthBasic": "Základní (vyskakovací okno prohlížeče)",
|
||||
"AuthenticationMethod": "Metoda ověřování",
|
||||
"AuthenticationMethodHelpTextWarning": "Prosím vyberte platnou metodu ověřování",
|
||||
"AuthenticationRequired": "Vyžadované ověření",
|
||||
"AuthenticationRequiredHelpText": "Změnit, pro které požadavky je vyžadováno ověření. Pokud nerozumíte rizikům, neměňte je.",
|
||||
"AuthenticationMethodHelpTextWarning": "Vyberte platnou metodu ověřování",
|
||||
"AuthenticationRequired": "Vyžadováno ověření",
|
||||
"AuthenticationRequiredHelpText": "Změnit, pro které požadavky je vyžadováno ověření. Neměňte, pokud nerozumíte rizikům.",
|
||||
"AuthenticationRequiredPasswordConfirmationHelpTextWarning": "Potvrďte nové heslo",
|
||||
"AuthenticationRequiredPasswordHelpTextWarning": "Vložte nové heslo",
|
||||
"AuthenticationRequiredUsernameHelpTextWarning": "Vložte nové uživatelské jméno",
|
||||
"AuthenticationRequiredWarning": "Aby se zabránilo vzdálenému přístupu bez ověření, vyžaduje nyní {appName} povolení ověření. Ověřování z místních adres můžete volitelně zakázat.",
|
||||
"AuthenticationRequiredPasswordHelpTextWarning": "Zadejte nové heslo",
|
||||
"AuthenticationRequiredUsernameHelpTextWarning": "Zadejte nové uživatelské jméno",
|
||||
"AuthenticationRequiredWarning": "Aby se zabránilo vzdálenému přístupu bez ověření, vyžaduje nyní {appName}, aby bylo povoleno ověřování. Volitelně můžete zakázat ověřování z místních adres.",
|
||||
"BlocklistOnlyHint": "Blokovat a nehledat náhradu",
|
||||
"Enabled": "Povoleno",
|
||||
"ApiKey": "Klíč API",
|
||||
@@ -724,5 +724,39 @@
|
||||
"InstallLatest": "Nainstalujte nejnovější",
|
||||
"CurrentlyInstalled": "Aktuálně nainstalováno",
|
||||
"UnmappedFiles": "Nezmapované složky",
|
||||
"AptUpdater": "K instalaci aktualizace použijte apt"
|
||||
"AptUpdater": "K instalaci aktualizace používat apt",
|
||||
"Author": "Autor",
|
||||
"Book": "Kniha",
|
||||
"AllowFingerprinting": "Povol Digitální Otisk (Fingerprinting)",
|
||||
"AllowedLanguages": "Povolené Jazyky",
|
||||
"ASIN": "ASIN",
|
||||
"AllAuthorBooks": "Všechny Knihy Autora",
|
||||
"AllBooks": "Všechny Knihy",
|
||||
"AllExpandedCollapseAll": "Sbalit Všechny",
|
||||
"AllExpandedExpandAll": "Rozbal Všechny",
|
||||
"AnyEditionOkHelpText": "Readarr automaticky přepne edici, která nejlépe odpovídá staženým souborům",
|
||||
"AllowFingerprintingHelpText": "Použít digitální otisk (fingerprinting) ke zlepšení přesnosti párování knih",
|
||||
"AllowFingerprintingHelpTextWarning": "To vyžaduje, aby Readarr četl části souboru, což zpomaluje skenování a může způsobit vysokou aktivitu disku nebo sítě.",
|
||||
"AddImportListExclusionHelpText": "Zabránit přidání knihy do Readarr pomocí Importovaných Seznamů nebo Obnovení Autora",
|
||||
"AllowAuthorChangeClickToChangeAuthor": "Klikni pro změnu autora",
|
||||
"BlocklistOnly": "Pouze seznam blokování",
|
||||
"DoNotBlocklistHint": "Odstraň bez přidání do seznamu blokování",
|
||||
"External": "Externí",
|
||||
"Implementation": "Implementace",
|
||||
"DoNotBlocklist": "Nepřidávat do Seznamu blokování",
|
||||
"DownloadClientDelugeSettingsDirectory": "Adresář stahování",
|
||||
"BlocklistAndSearchHint": "Začne hledat náhradu po blokaci",
|
||||
"BlocklistAndSearchMultipleHint": "Začne vyhledávat náhrady po blokaci",
|
||||
"ChangeCategoryHint": "Změní stahování do kategorie „Post-Import“ z aplikace Download Client",
|
||||
"DeleteSelected": "Smazat vybrané",
|
||||
"ClickToChangeIndexerFlags": "Kliknutím změníte značky indexeru",
|
||||
"DownloadClientQbittorrentSettingsContentLayoutHelpText": "Zda použít rozvržení obsahu nakonfigurované v qBittorrentu, původní rozvržení z torrentu nebo vždy vytvořit podsložku (qBittorrent 4.3.2+)",
|
||||
"DownloadClientQbittorrentSettingsContentLayout": "Rozvržení obsahu",
|
||||
"CustomFormatsSpecificationRegularExpression": "Běžný výraz",
|
||||
"ChangeCategoryMultipleHint": "Změní stahování do kategorie „Post-Import“ z aplikace Download Client",
|
||||
"FailedToFetchSettings": "Nepodařilo se načíst nastavení",
|
||||
"NoCutoffUnmetItems": "Žádné neodpovídající nesplněné položky",
|
||||
"DownloadClientDelugeSettingsDirectoryCompleted": "Adresář kam přesunout po dokončení",
|
||||
"DownloadClientDelugeSettingsDirectoryCompletedHelpText": "Nepovinné - umístění kam přesunout dokončená stahování, pokud ponecháte prázné, použije se výchozí umístění Deluge",
|
||||
"DownloadClientDelugeSettingsDirectoryHelpText": "Nepovinné - umístění stahovaných souborů, pokud ponecháte prázné, použije se výchozí umístění Deluge"
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
"AlternateTitles": "Alternativ Titel",
|
||||
"Analytics": "Analyse",
|
||||
"AnalyticsEnabledHelpText": "Send anonym brugs- og fejlinformation til {appName}s servere. Dette inkluderer information i din browser, hvilke {appName} WebUI-sider du bruger, fejlrapportering samt OS og runtime-version. Vi bruger disse oplysninger til at prioritere funktioner og fejlrettelser.",
|
||||
"AppDataDirectory": "AppData-bibliotek",
|
||||
"AppDataDirectory": "AppData-mappe",
|
||||
"ApplyTags": "Anvend tags",
|
||||
"Authentication": "Godkendelse",
|
||||
"AuthenticationMethodHelpText": "Kræv brugernavn og adgangskode for at få adgang til {appName}",
|
||||
@@ -40,7 +40,7 @@
|
||||
"Cancel": "Afbryd",
|
||||
"CancelPendingTask": "Er du sikker på, at du vil annullere denne afventende opgave?",
|
||||
"CertificateValidation": "Validering af certifikat",
|
||||
"CertificateValidationHelpText": "Skift, hvor streng HTTPS-certificering er",
|
||||
"CertificateValidationHelpText": "Skift, hvor streng HTTPS-certificering er. Ændr kun dette hvis du forstå risiciene.",
|
||||
"ChangeFileDate": "Skift fildato",
|
||||
"ChangeHasNotBeenSavedYet": "Ændring er endnu ikke gemt",
|
||||
"ChmodFolder": "chmod mappe",
|
||||
@@ -63,31 +63,31 @@
|
||||
"CreateEmptyAuthorFoldersHelpText": "Opret manglende filmmapper under diskscanning",
|
||||
"CreateGroup": "Opret gruppe",
|
||||
"CutoffHelpText": "Når denne kvalitet er nået, downloader {appName} ikke længere film",
|
||||
"CutoffUnmet": "Afskåret ude",
|
||||
"CutoffUnmet": "Grænse ikke opnået",
|
||||
"DatabaseMigration": "DB Migration",
|
||||
"DelayProfile": "Udskyd Profiler",
|
||||
"DelayProfiles": "Udskyd Profiler",
|
||||
"DelayingDownloadUntilInterp": "Forsinker download indtil {0} kl. {1}",
|
||||
"Delete": "Slet",
|
||||
"DeleteBackup": "Slet sikkerhedskopi",
|
||||
"DeleteBackupMessageText": "Er du sikker på, at du vil slette sikkerhedskopien '{0}'?",
|
||||
"DeleteBackupMessageText": "Er du sikker på, at du vil slette sikkerhedskopien »{name}«?",
|
||||
"DeleteDelayProfile": "Slet forsinkelsesprofil",
|
||||
"DeleteDelayProfileMessageText": "Er du sikker på, at du vil slette denne forsinkelsesprofil?",
|
||||
"DeleteDownloadClient": "Slet Download Client",
|
||||
"DeleteDownloadClientMessageText": "Er du sikker på, at du vil slette downloadklienten '{0}'?",
|
||||
"DeleteDownloadClientMessageText": "Er du sikker på, at du vil fjerne downloadklienten »{name}«?",
|
||||
"DeleteEmptyFolders": "Slet tomme mapper",
|
||||
"DeleteEmptyFoldersHelpText": "Slet tomme filmmapper under diskscanning, og når filmfiler slettes",
|
||||
"DeleteImportListExclusion": "Slet udelukkelse af importliste",
|
||||
"DeleteImportListExclusionMessageText": "Er du sikker på, at du vil slette denne undtagelse fra importlisten?",
|
||||
"DeleteImportListMessageText": "Er du sikker på, at du vil slette listen '{0}'?",
|
||||
"DeleteImportListMessageText": "Er du sikker på, at du vil slette listen »{name}«?",
|
||||
"DeleteIndexer": "Slet Indexer",
|
||||
"DeleteIndexerMessageText": "Er du sikker på, at du vil slette indeksøren '{0}'?",
|
||||
"DeleteIndexerMessageText": "Er du sikker på, at du vil slette indeksøren »{name}«?",
|
||||
"DeleteMetadataProfileMessageText": "Er du sikker på, at du vil slette kvalitetsprofilen {0}",
|
||||
"DeleteNotification": "Slet underretning",
|
||||
"DeleteNotificationMessageText": "Er du sikker på, at du vil slette underretningen '{0}'?",
|
||||
"DeleteNotificationMessageText": "Er du sikker på, at du vil slette notifikationen »{name}«?",
|
||||
"DeleteQualityProfile": "Slet kvalitetsprofil",
|
||||
"DeleteQualityProfileMessageText": "Er du sikker på, at du vil slette kvalitetsprofilen {0}",
|
||||
"DeleteReleaseProfile": "Slet forsinkelsesprofil",
|
||||
"DeleteQualityProfileMessageText": "Er du sikker på, at du vil slette kvalitetsprofilen »{name}«?",
|
||||
"DeleteReleaseProfile": "Slet udgivelsesprofil",
|
||||
"DeleteReleaseProfileMessageText": "Er du sikker på, at du vil slette denne forsinkelsesprofil?",
|
||||
"DeleteSelectedBookFiles": "Slet valgte filmfiler",
|
||||
"DeleteSelectedBookFilesMessageText": "Er du sikker på, at du vil slette de valgte filmfiler?",
|
||||
@@ -140,7 +140,7 @@
|
||||
"GoToInterp": "Gå til {0}",
|
||||
"Grab": "Tag fat",
|
||||
"GrabID": "Grab ID",
|
||||
"GrabRelease": "Grab Release",
|
||||
"GrabRelease": "Hent udgivelse",
|
||||
"GrabReleaseMessageText": "{appName} var ikke i stand til at bestemme, hvilken film denne udgivelse var til. {appName} kan muligvis ikke automatisk importere denne udgivelse. Vil du hente '{0}'?",
|
||||
"GrabSelected": "Greb Valgt",
|
||||
"Group": "Gruppe",
|
||||
@@ -151,7 +151,7 @@
|
||||
"Hostname": "Værtsnavn",
|
||||
"ICalFeed": "iCal-feed",
|
||||
"ICalHttpUrlHelpText": "Kopier denne URL til dine klienter eller klik for at abonnere, hvis din browser understøtter webcal",
|
||||
"ICalLink": "iCal Link",
|
||||
"ICalLink": "iCal-link",
|
||||
"IconForCutoffUnmet": "Ikon til Cutoff Unmet",
|
||||
"IconTooltip": "Planlagt",
|
||||
"IgnoredAddresses": "Ignorerede adresser",
|
||||
@@ -274,7 +274,7 @@
|
||||
"ReleaseRejected": "Udgivelse afvist",
|
||||
"ReleaseWillBeProcessedInterp": "Udgivelsen behandles {0}",
|
||||
"Reload": "Genindlæs",
|
||||
"RemotePathMappings": "Remote Path Mappings",
|
||||
"RemotePathMappings": "Sammenkædning med fjernsti",
|
||||
"Remove": "Fjerne",
|
||||
"RemoveCompletedDownloadsHelpText": "Fjern importerede downloads fra downloadklienthistorik",
|
||||
"RemoveFailedDownloadsHelpText": "Fjern mislykkede downloads fra downloadklienthistorik",
|
||||
@@ -458,7 +458,7 @@
|
||||
"Blocklist": "Blacklist",
|
||||
"BlocklistRelease": "Udgivelse af sortliste",
|
||||
"SelectedCountBooksSelectedInterp": "{0} Film (er) valgt",
|
||||
"ThisCannotBeCancelled": "Dette kan ikke annulleres en gang startet uden genstart af {appName}.",
|
||||
"ThisCannotBeCancelled": "Dette kan ikke annulleres når først det er startet uden at du deaktiverer alle dine indeksører.",
|
||||
"UnselectAll": "Fravælg alle",
|
||||
"UpdateSelected": "Opdatering valgt",
|
||||
"Wanted": "Ønskede",
|
||||
@@ -549,7 +549,7 @@
|
||||
"MoveFiles": "Flyt filer",
|
||||
"Label": "Etiket",
|
||||
"HardlinkCopyFiles": "Hardlink/Kopir Filer",
|
||||
"CustomFormatScore": "Bruger Tilpasset Format score",
|
||||
"CustomFormatScore": "Brugerdefineret formats resultat",
|
||||
"MinimumCustomFormatScore": "Minimum tilpasset format score",
|
||||
"CloneCustomFormat": "Klon brugerdefineret format",
|
||||
"Conditions": "Betingelser",
|
||||
@@ -572,7 +572,7 @@
|
||||
"ShownClickToHide": "Vist, klik for at skjule",
|
||||
"HideAdvanced": "Gemt Avancerede",
|
||||
"ShowAdvanced": "Vis avanceret",
|
||||
"ColonReplacement": "Udskiftning af tyktarm",
|
||||
"ColonReplacement": "Udskiftning af kolon",
|
||||
"ReplaceWithDash": "Udskift med Dash",
|
||||
"ReplaceWithSpaceDash": "Udskift med Space Dash",
|
||||
"ReplaceWithSpaceDashSpace": "Udskift med Space Dash Space",
|
||||
@@ -582,7 +582,7 @@
|
||||
"Negated": "Negeret",
|
||||
"RemoveSelectedItemBlocklistMessageText": "Er du sikker på, at du vil fjerne de valgte emner fra sortlisten?",
|
||||
"BlocklistReleases": "Udgivelse af sortliste",
|
||||
"RemoveSelectedItemQueueMessageText": "Er du sikker på, at du vil fjerne {0} element {1} fra køen?",
|
||||
"RemoveSelectedItemQueueMessageText": "Er du sikker på, at du vil fjerne 1 element fra køen?",
|
||||
"RemoveSelectedItemsQueueMessageText": "Er du sikker på, at du vil fjerne {0} element {1} fra køen?",
|
||||
"Required": "Påkrævet",
|
||||
"NoEventsFound": "Ingen begivenheder fundet",
|
||||
@@ -618,8 +618,8 @@
|
||||
"System": "System",
|
||||
"NextExecution": "Næste udførelse",
|
||||
"NoResultsFound": "Ingen resultater fundet",
|
||||
"ConnectionLost": "Forbindelse Mistet",
|
||||
"ConnectionLostReconnect": "{appName} vil prøve at tilslutte automatisk, eller du kan klikke genindlæs forneden.",
|
||||
"ConnectionLost": "Forbindelse mistet",
|
||||
"ConnectionLostReconnect": "{appName} vil prøve at tilslutte automatisk. Ellers du kan klikke genindlæs forneden.",
|
||||
"Location": "Beliggenhed",
|
||||
"RecentChanges": "Seneste ændringer",
|
||||
"SomeResultsAreHiddenByTheAppliedFilter": "Nogle resultater skjules af det anvendte filter",
|
||||
@@ -636,7 +636,7 @@
|
||||
"ExtraFileExtensionsHelpTextsExamples": "Eksempler: '.sub, .nfo' eller 'sub, nfo'",
|
||||
"AutoRedownloadFailed": "Download fejlede",
|
||||
"SourceTitle": "Kildetitel",
|
||||
"RemoveQueueItemConfirmation": "Er du sikker på, at du vil fjerne {0} element {1} fra køen?",
|
||||
"RemoveQueueItemConfirmation": "Er du sikker på, at du vil fjerne »{sourceTitle}« fra køen?",
|
||||
"ImportLists": "Lister",
|
||||
"ListsSettingsSummary": "Lister",
|
||||
"CustomFilter": "Bruger Tilpassede Filtere",
|
||||
@@ -668,5 +668,8 @@
|
||||
"UnmappedFiles": "Ikke-kortlagte mapper",
|
||||
"DockerUpdater": "opdater docker-containeren for at modtage opdateringen",
|
||||
"ExternalUpdater": "{appName} er konfigureret til at bruge en ekstern opdateringsmekanisme",
|
||||
"OnLatestVersion": "Den seneste version af {appName} er allerede installeret"
|
||||
"OnLatestVersion": "Den seneste version af {appName} er allerede installeret",
|
||||
"WouldYouLikeToRestoreBackup": "Vil du gendanne sikkerhedskopien »{name}«?",
|
||||
"MetadataProfile": "metadataprofil",
|
||||
"Unknown": "Ukendt"
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"PreviewRename": "Umbenennen",
|
||||
"PreviewRename": "Vorschau Umbenennung",
|
||||
"RecyclingBin": "Papierkorb",
|
||||
"Usenet": "Usenet",
|
||||
"20MinutesTwenty": "20 Minuten: {0}",
|
||||
@@ -17,7 +17,7 @@
|
||||
"AppDataDirectory": "AppData-Verzeichnis",
|
||||
"ApplyTags": "Schlagworte anwenden",
|
||||
"Authentication": "Authentifizierung",
|
||||
"AuthenticationMethodHelpText": "Für den Zugriff auf Readarr sind Benutzername und Passwort erforderlich",
|
||||
"AuthenticationMethodHelpText": "Für den Zugriff auf {appName} sind Benutzername und Passwort erforderlich",
|
||||
"AuthorClickToChangeBook": "Klicken um den Film zu bearbeiten",
|
||||
"AutoRedownloadFailedHelpText": "Suchen Sie automatisch nach einer anderen Version und versuchen Sie, sie herunterzuladen",
|
||||
"AutoUnmonitorPreviouslyDownloadedBooksHelpText": "Auf der Festplatte gelöschte Filme auch automatisch in {appName} nicht mehr beobachten",
|
||||
@@ -55,9 +55,9 @@
|
||||
"CompletedDownloadHandling": "Download-Handhabung abgeschlossen",
|
||||
"ConnectSettings": "Verbindungseinstellungen",
|
||||
"Connections": "Verbindungen",
|
||||
"CopyUsingHardlinksHelpText": "Hardlinks erstellen wenn Torrents die noch geseeded werden kopiert werden sollen",
|
||||
"CopyUsingHardlinksHelpText": "Hardlinks ermöglichen es Readarr, seeding Torrents in den Serienordner zu importieren, ohne zusätzlichen Speicherplatz zu beanspruchen oder den gesamten Inhalt der Datei zu kopieren. Hardlinks funktionieren nur, wenn Quelle und Ziel auf demselben Volume liegen",
|
||||
"CopyUsingHardlinksHelpTextWarning": "Dateisperren Gelegentlich kann es vorkommen, dass Dateisperren das Umbenennen von Dateien verhindern, die gerade geseeded werden. Sie können das Seeding vorübergehend deaktivieren und die Umbenennungsfunktion von Readarr als Workaround verwenden.",
|
||||
"CreateEmptyAuthorFoldersHelpText": "Leere Filmordner für fehlende Filme beim Scan erstellen",
|
||||
"CreateEmptyAuthorFoldersHelpText": "Leere Autorenordner für fehlende Autoren beim Scan erstellen",
|
||||
"CreateGroup": "Gruppe erstellen",
|
||||
"CutoffHelpText": "Sobald diese Qualität erreicht wird, werden keine neuen Releases erfasst",
|
||||
"CutoffUnmet": "Schwelle nicht erreicht",
|
||||
@@ -96,7 +96,7 @@
|
||||
"DiskSpace": "Festplattenplatz",
|
||||
"Docker": "Docker",
|
||||
"DownloadClientSettings": "Downloader Einstellungen",
|
||||
"DownloadClients": "Downloader",
|
||||
"DownloadClients": "Download Clients",
|
||||
"DownloadFailedCheckDownloadClientForMoreDetails": "Download fehlgeschlagen: Prüfe den Downloader für mehr Details",
|
||||
"DownloadFailedInterp": "Download fehlgeschlagen: {0}",
|
||||
"DownloadPropersAndRepacksHelpTexts1": "Automatisch Proper oder Repacks zum upgraden eines Filmes zulassen",
|
||||
@@ -104,18 +104,18 @@
|
||||
"Edit": "Bearbeiten",
|
||||
"Edition": "Auflage",
|
||||
"Enable": "Aktivieren",
|
||||
"EnableAutomaticAdd": "Automatisch hinzufügen",
|
||||
"EnableAutomaticAdd": "Automatisches Hinzufügen aktivieren",
|
||||
"EnableAutomaticSearch": "Automatische Suche einschalten",
|
||||
"EnableColorImpairedMode": "Farbbeeinträchtigter Modus aktivieren",
|
||||
"EnableColorImpairedModeHelpText": "Alternativer Stil, um farbbeeinträchtigten Benutzern eine bessere Unterscheidung farbcodierter Informationen zu ermöglichen",
|
||||
"EnableCompletedDownloadHandlingHelpText": "Importiere fertige Downloads vom Downloader automatisch",
|
||||
"EnableHelpText": "Metadaten Dateien erstellen für diesen Metadata Typ",
|
||||
"EnableColorImpairedMode": "Farbenblindmodus aktivieren",
|
||||
"EnableColorImpairedModeHelpText": "Stiländerung, um es Farbenblinden Benutzern zu ermöglichen, farbcodierte Informationen besser zu unterscheiden",
|
||||
"EnableCompletedDownloadHandlingHelpText": "Automatischer Import abgeschlossener Downloads vom Download Client",
|
||||
"EnableHelpText": "Aktiviere die Erstellung von Metadaten-Dateien für diesen Metadaten-Typ",
|
||||
"EnableInteractiveSearch": "Interaktive Suche einschalten",
|
||||
"EnableRSS": "RSS aktivieren",
|
||||
"EnableSSL": "SSL",
|
||||
"EnableSslHelpText": " Erfordert einen Neustart als Administrator",
|
||||
"Ended": "Beendet",
|
||||
"ErrorLoadingContents": "Fehler beim laden der Inhalte",
|
||||
"ErrorLoadingContents": "Fehler beim Laden von Inhalten",
|
||||
"ErrorLoadingPreviews": "Fehler beim laden der Vorschauen",
|
||||
"Exception": "Ausnahme",
|
||||
"FailedDownloadHandling": "Verarbeitung fehlgeschlagener Downloads",
|
||||
@@ -132,20 +132,20 @@
|
||||
"ForMoreInformationOnTheIndividualIndexersClickOnTheInfoButtons": "Für mehr Infomationen klicke auf die Info-Knöpfe.",
|
||||
"ForMoreInformationOnTheIndividualListsClickOnTheInfoButtons": "Für mehr Infomationen klicke auf die Info-Knöpfe.",
|
||||
"GeneralSettings": "Allgemeine Einstellungen",
|
||||
"Global": "Global",
|
||||
"Global": "Weltweit",
|
||||
"GoToInterp": "Zu {0} gehen",
|
||||
"Grab": "Erfasse",
|
||||
"Grab": "Holen",
|
||||
"GrabID": "Erfass ID",
|
||||
"GrabRelease": "Release erfassen",
|
||||
"GrabRelease": "Release holen",
|
||||
"GrabReleaseMessageText": "Das Release konnte keinem Film zugeordnet werden. Ein automatischer Import wird nicht möglich sein. Trotzdem '{0}' erfassen?",
|
||||
"GrabSelected": "Auswahl erfassen",
|
||||
"GrabSelected": "Auswahl abrufen",
|
||||
"Group": "Gruppe",
|
||||
"HasPendingChangesNoChanges": "Keine Änderungen",
|
||||
"HasPendingChangesSaveChanges": "Änderungen speichern",
|
||||
"History": "Verlauf",
|
||||
"Host": "Host",
|
||||
"Hostname": "Hostname",
|
||||
"ICalFeed": "iCal-Feed",
|
||||
"ICalFeed": "iCal Feed",
|
||||
"ICalHttpUrlHelpText": "Füge diese URL in deinen Client ein oder klicke auf abonnieren wenn dein Browser Webcal untertützt",
|
||||
"ICalLink": "iCal Link",
|
||||
"IconForCutoffUnmet": "Symbol für Schwelle nicht erreicht",
|
||||
@@ -154,17 +154,17 @@
|
||||
"IgnoredHelpText": "Ein Release wird abgelehnt, wenn es einen oder mehrere dieser Begriffe enthält (Groß- und Kleinschreibung wird nicht berücksichtigt)",
|
||||
"IgnoredPlaceHolder": "Neue Beschränkung hinzufügen",
|
||||
"IllRestartLater": "Später neustarten",
|
||||
"ImportExtraFiles": "Extra Dateien importieren",
|
||||
"ImportExtraFiles": "Zusätzliche Dateien importieren",
|
||||
"ImportExtraFilesHelpText": "Importiere zutreffende Extra Dateien (Untertitel, nfo, etc.) nach dem Importieren einer Filmdatei",
|
||||
"ImportFailedInterp": "Import fehlgeschlagen: {0}",
|
||||
"ImportedTo": "Importiert nach",
|
||||
"Importing": "Importiere",
|
||||
"IncludeHealthWarningsHelpText": "Zustandswarnung",
|
||||
"IncludeUnknownAuthorItemsHelpText": "Einträge ohne eine Zuordnung in der Warteschlange anzeigen. Dies könnten gelöschte Autoren, Bücher oder alles andere mit Readarrs Downloadkategorie sein",
|
||||
"IncludeUnmonitored": "Nicht beobachtete einbeziehen",
|
||||
"IncludeUnmonitored": "Unüberwachte einbeziehen",
|
||||
"Indexer": "Indexer",
|
||||
"IndexerPriority": "Priorität",
|
||||
"IndexerSettings": "Indexer Einstellungen",
|
||||
"IndexerPriority": "Indexer-Priorität",
|
||||
"IndexerSettings": "Indexer-Einstellungen",
|
||||
"Indexers": "Indexer",
|
||||
"Interval": "Intervall",
|
||||
"IsCutoffCutoff": "Schwelle",
|
||||
@@ -175,7 +175,7 @@
|
||||
"LoadingBookFilesFailed": "Laden der Film-Dateien fehlgeschlagen",
|
||||
"Local": "Lokal",
|
||||
"LogFiles": "Protokolldateien",
|
||||
"LogLevel": "Log Level",
|
||||
"LogLevel": "Protokollstufe",
|
||||
"LogLevelvalueTraceTraceLoggingShouldOnlyBeEnabledTemporarily": "Trace logging sollte nur kurzzeitig aktiviert werden",
|
||||
"Logging": "Protokollierung",
|
||||
"Logs": "Protokolle",
|
||||
@@ -187,52 +187,52 @@
|
||||
"MaximumLimits": "Maximale Grenzen",
|
||||
"MaximumSize": "Maximale Größe",
|
||||
"MaximumSizeHelpText": "Maximale Größe für ein zu erfassendes Release in MB. 0 bedeutet unbegrenzt.",
|
||||
"Mechanism": "Verfahren",
|
||||
"MediaInfo": "Medien Information",
|
||||
"MediaManagementSettings": "Medienverwaltungs Einstellungen",
|
||||
"Mechanism": "Mechanismus",
|
||||
"MediaInfo": "Medieninfo",
|
||||
"MediaManagementSettings": "Einstellungen zur Medienverwaltung",
|
||||
"Message": "Nachricht",
|
||||
"MetadataSettings": "Metadaten Einstellungen",
|
||||
"MetadataSettings": "Einstellungen für Metadaten",
|
||||
"MinimumAge": "Mindestalter",
|
||||
"MinimumAgeHelpText": "Nur Usenet: Mindestalter in Minuten der NZBs bevor sie erfasst werden. Gebe damit neuen Releases Zeit, sich bei deinem Usenet Provider zu verbreiten.",
|
||||
"MinimumFreeSpace": "Mindest freier Speicher",
|
||||
"MinimumAgeHelpText": "Nur Usenet: Mindestalter in Minuten von NZBs, bevor sie heruntergeladen werden. Verwende dies, um neuen Releases Zeit zu geben, zu deinem Usenet-Anbieter zu propagieren.",
|
||||
"MinimumFreeSpace": "Mindestfreier Speicherplatz",
|
||||
"MinimumFreeSpaceWhenImportingHelpText": "Importieren verhindern wenn weniger als dieser Wert als freier Speicher zur Verfügung steht",
|
||||
"MinimumLimits": "Mindest Grenzen",
|
||||
"MinimumLimits": "Minimale Grenzen",
|
||||
"Missing": "Fehlend",
|
||||
"Mode": "Modus",
|
||||
"Monitored": "Beobachtet",
|
||||
"Monitored": "Überwacht",
|
||||
"MoreInfo": "Mehr Infos",
|
||||
"MustContain": "Muss beinhalten",
|
||||
"MustNotContain": "Darf nicht beinhalten",
|
||||
"MustContain": "Muss enthalten",
|
||||
"MustNotContain": "Darf nicht enthalten",
|
||||
"Name": "Name",
|
||||
"NamingSettings": "Bennenungs Einstellungen",
|
||||
"NamingSettings": "Benennungseinstellungen",
|
||||
"New": "Neu",
|
||||
"NoBackupsAreAvailable": "Es sind keine Backups vorhanden",
|
||||
"NoBackupsAreAvailable": "Keine Sicherungen verfügbar",
|
||||
"NoHistory": "Kein Verlauf.",
|
||||
"NoLeaveIt": "Nein, nicht ändern",
|
||||
"NoLimitForAnyRuntime": "Keine Begrenzung der Laufzeiten",
|
||||
"NoLogFiles": "Keine Log-Dateien",
|
||||
"NoMinimumForAnyRuntime": "Kein Minimum für Laufzeiten",
|
||||
"NoLeaveIt": "Nein, lass es",
|
||||
"NoLimitForAnyRuntime": "Kein Limit für beliebige Laufzeit",
|
||||
"NoLogFiles": "Keine Logdateien",
|
||||
"NoMinimumForAnyRuntime": "Kein Minimum für beliebige Laufzeit",
|
||||
"NoUpdatesAreAvailable": "Es sind keine Updates verfügbar",
|
||||
"None": "Keine",
|
||||
"NotificationTriggers": "Benachrichtigungs Auslöser",
|
||||
"NotificationTriggers": "Benachrichtigungs-Auslöser",
|
||||
"OnGrabHelpText": "Erfassen",
|
||||
"OnHealthIssueHelpText": "Zustandsproblem",
|
||||
"OnRenameHelpText": "Umbennenen",
|
||||
"OnRenameHelpText": "Umbenennen",
|
||||
"OnUpgradeHelpText": "Upgrade",
|
||||
"OpenBrowserOnStart": "Browser beim Start öffnen",
|
||||
"Options": "Optionen",
|
||||
"Original": "Orginal",
|
||||
"Overview": "Übersicht",
|
||||
"PackageVersion": "Paket Version",
|
||||
"Original": "Original",
|
||||
"Overview": "Überblick",
|
||||
"PackageVersion": "Paketversion",
|
||||
"PageSize": "Einträge pro Seite",
|
||||
"PageSizeHelpText": "Anzahl der Einträge pro Seite",
|
||||
"Password": "Passwort",
|
||||
"Path": "Pfad",
|
||||
"Permissions": "Rechte",
|
||||
"Permissions": "Berechtigungen",
|
||||
"Port": "Port",
|
||||
"PortHelpTextWarning": "Erfordert einen Neustart",
|
||||
"PortNumber": "Port Nummer",
|
||||
"PosterSize": "Plakatgröße",
|
||||
"PortNumber": "Portnummer",
|
||||
"PosterSize": "Postergröße",
|
||||
"Profiles": "Profile",
|
||||
"Proper": "Korrekt",
|
||||
"PropersAndRepacks": "Propers und Repacks",
|
||||
@@ -267,23 +267,23 @@
|
||||
"ReleaseGroup": "Release-Gruppe",
|
||||
"ReleaseRejected": "Release abgelehnt",
|
||||
"ReleaseWillBeProcessedInterp": "Release wird verarbeitet {0}",
|
||||
"Reload": "Neuladen",
|
||||
"Reload": "Neu laden",
|
||||
"RemotePathMappings": "Remote-Pfadzuordnungen",
|
||||
"Remove": "Entfernen",
|
||||
"RemoveCompletedDownloadsHelpText": "Importierte Downloads aus dem Downloader Verlauf entfernen",
|
||||
"RemoveCompletedDownloadsHelpText": "Entferne importierte Downloads aus der Download-Client-Historie",
|
||||
"RemoveFailedDownloadsHelpText": "Fehlgeschlagene Downloads aus dem Downloader Verlauf entfernen",
|
||||
"RemoveFilter": "Filter entfernen",
|
||||
"RemoveFromDownloadClient": "Aus dem Download Client entfernen",
|
||||
"RemoveFromQueue": "Aus der Warteschlage entfernen",
|
||||
"RemoveFromQueue": "Aus der Warteschlange entfernen",
|
||||
"RemoveHelpTextWarning": "Dies wird den Download und alle bereits heruntergeladenen Dateien aus dem Downloader entfernen.",
|
||||
"RemoveSelected": "Auswahl entfernen",
|
||||
"RemoveSelected": "Ausgewählte entfernen",
|
||||
"RemoveTagExistingTag": "Vorhandener Tag",
|
||||
"RemoveTagRemovingTag": "Tag entfernen",
|
||||
"RemovedFromTaskQueue": "Aus der Aufgabenwarteschlange entfernt",
|
||||
"RenameBooksHelpText": "Wenn das umbennen deaktiviert ist, wird der vorhandene Dateiname benutzt",
|
||||
"Reorder": "Neu sortieren",
|
||||
"ReplaceIllegalCharacters": "Sonderzeichen ersetzen",
|
||||
"RequiredHelpText": "Das Release mus mindesten eines der Begriffe beinhalten ( Groß-/Kleinschreibung wird nicht beachtet )",
|
||||
"RenameBooksHelpText": "Wenn das Umbenennen deaktiviert ist, wird der vorhandene Dateiname benutzt",
|
||||
"Reorder": "Neu anordnen",
|
||||
"ReplaceIllegalCharacters": "Illegale Zeichen ersetzen",
|
||||
"RequiredHelpText": "Diese {0}-Bedingung muss übereinstimmen, damit das benutzerdefinierte Format angewendet wird. Andernfalls reicht eine einzelne {0}-Übereinstimmung aus.",
|
||||
"RequiredPlaceHolder": "Neue Beschränkung hinzufügen",
|
||||
"RescanAfterRefreshHelpTextWarning": "Wenn nicht \"Immer (Always)\" ausgewählt wird, werden Dateiänderungen nicht automatisch erkannt",
|
||||
"RescanAuthorFolderAfterRefresh": "Nach dem Aktualisieren den Autorordner neu scannen",
|
||||
@@ -298,35 +298,35 @@
|
||||
"Result": "Ergebnis",
|
||||
"RetentionHelpText": "Nur Usenet: Auf Null setzen, um eine unbegrenzte Aufbewahrung festzulegen",
|
||||
"RetryingDownloadInterp": "Herunterladen nochmal versuchen {0} um {1}",
|
||||
"RootFolder": "Stammordner",
|
||||
"RootFolders": "Stammordner",
|
||||
"RssSyncIntervalHelpText": "Intervall in Minuten. Zum deaktivieren auf 0 setzen ( Dies wird das automatische Release erfassen deaktivieren )",
|
||||
"RootFolder": "Root-Ordner",
|
||||
"RootFolders": "Root-Ordner",
|
||||
"RssSyncIntervalHelpText": "Intervall in Minuten. Setze auf null, um es zu deaktivieren (dies stoppt alle automatischen Release-Abfragen)",
|
||||
"SSLCertPassword": "SSL Zertifikat Passwort",
|
||||
"SSLCertPath": "Pfad zum SSL Zertifikat",
|
||||
"SSLPort": "SSL Port",
|
||||
"Scheduled": "Geplant",
|
||||
"ScriptPath": "Script Pfad",
|
||||
"Search": "Suche",
|
||||
"SearchAll": "Suche alle",
|
||||
"SearchForMissing": "Suche fehlende",
|
||||
"SearchSelected": "Auswahl suchen",
|
||||
"ScriptPath": "Skript-Pfad",
|
||||
"Search": "Suchen",
|
||||
"SearchAll": "Alle durchsuchen",
|
||||
"SearchForMissing": "Suche nach fehlenden Episoden",
|
||||
"SearchSelected": "Ausgewählte durchsuchen",
|
||||
"Security": "Sicherheit",
|
||||
"SendAnonymousUsageData": "Sende anonyme Nutzungsdaten",
|
||||
"SetPermissions": "Rechte setzen",
|
||||
"SetPermissionsLinuxHelpText": "Soll CHMOD ausgeführt werden wenn Datien importiert/umbenannt werden?",
|
||||
"SetPermissions": "Berechtigungen festlegen",
|
||||
"SetPermissionsLinuxHelpText": "Soll chmod beim Importieren/Umbenennen von Dateien ausgeführt werden?",
|
||||
"SetPermissionsLinuxHelpTextWarning": "Wenn Sie nicht sicher sind, was diese Einstellungen bewirken, ändern Sie sie nicht.",
|
||||
"Settings": "Einstellungen",
|
||||
"ShortDateFormat": "Kurzes Datumsformat",
|
||||
"ShowCutoffUnmetIconHelpText": "Symbol zeigen wenn die Qualitätsschwelle noch nicht erreicht wurde",
|
||||
"ShowDateAdded": "Datum der Hinzufügung anzeigen",
|
||||
"ShowPath": "Pfad anzeigen",
|
||||
"ShowQualityProfile": "Qualitätsdefinition anzeigen",
|
||||
"ShowQualityProfileHelpText": "Qualitätsprofil unter dem Plakat anzeigen",
|
||||
"ShowRelativeDates": "Relatives Datum anzeigen",
|
||||
"ShowRelativeDatesHelpText": "Relatives (z.B.: Heute, gestern, etc) oder absolutes Datum anzeigen",
|
||||
"ShowQualityProfile": "Qualitätsprofil anzeigen",
|
||||
"ShowQualityProfileHelpText": "Qualitätsprofil unter dem Poster anzeigen",
|
||||
"ShowRelativeDates": "Relative Daten anzeigen",
|
||||
"ShowRelativeDatesHelpText": "Relative (Heute/Gestern/etc.) oder absolute Daten anzeigen",
|
||||
"ShowSearch": "Suche anzeigen",
|
||||
"ShowSearchActionHelpText": "Suchbutton anzeigen beim draufzeigen",
|
||||
"ShowSizeOnDisk": "Belegter Speicherplatz anzeigen",
|
||||
"ShowSizeOnDisk": "Größe auf der Festplatte anzeigen",
|
||||
"ShownAboveEachColumnWhenWeekIsTheActiveView": "Wird in der Wochenansicht über jeder Spalte angezeigt",
|
||||
"Size": " Größe",
|
||||
"SkipFreeSpaceCheck": "Prüfung des freien Speichers überspringen",
|
||||
@@ -345,8 +345,8 @@
|
||||
"Status": "Status",
|
||||
"StatusEndedEnded": "Beendet",
|
||||
"Style": "Stil",
|
||||
"SuccessMyWorkIsDoneNoFilesToRename": "Fertig! Keine weiteren Dateien zum umbennenen.",
|
||||
"SuccessMyWorkIsDoneNoFilesToRetag": "Fertig! Keine weiteren Dateien zum umbennenen.",
|
||||
"SuccessMyWorkIsDoneNoFilesToRename": "Fertig! Keine weiteren Dateien zum Umbenennen.",
|
||||
"SuccessMyWorkIsDoneNoFilesToRetag": "Fertig! Keine weiteren Dateien zum retaggen.",
|
||||
"SupportsRssvalueRSSIsNotSupportedWithThisIndexer": "Der Indexer unterstützt kein RSS",
|
||||
"SupportsSearchvalueSearchIsNotSupportedWithThisIndexer": "Der Indexer unterstützt keine Suchen",
|
||||
"SupportsSearchvalueWillBeUsedWhenAutomaticSearchesArePerformedViaTheUIOrByReadarr": "Wird für automatische Suchen genutzt die vom Benutzer oder von {appName} gestartet werden",
|
||||
@@ -400,7 +400,7 @@
|
||||
"UnableToLoadTags": "Tags konnten nicht geladen werden",
|
||||
"UnableToLoadTheCalendar": "Kalender konnte nicht geladen werden",
|
||||
"UnableToLoadUISettings": "Oberflächen Einstellungen konnten nicht geladen werden",
|
||||
"Ungroup": "Gruppe entfernen",
|
||||
"Ungroup": "Gruppierung aufheben",
|
||||
"UnmonitoredHelpText": "Nicht beobachtete Filme im iCal-Feed einschließen",
|
||||
"UpdateAll": "Alle aktualisieren",
|
||||
"UpdateAutomaticallyHelpText": "Updates automatisch herunterladen und installieren. Sie können weiterhin über System: Updates installieren",
|
||||
@@ -473,7 +473,7 @@
|
||||
"OutputPath": "Ausgabe-Pfad",
|
||||
"PortHelpText": "Calibre-Content-Server",
|
||||
"Progress": "Fortschritt",
|
||||
"ReleaseTitle": "Release Titel",
|
||||
"ReleaseTitle": "Release-Titel",
|
||||
"Actions": "Aktionen",
|
||||
"Today": "Heute",
|
||||
"Tomorrow": "Morgen",
|
||||
@@ -489,7 +489,7 @@
|
||||
"TheAuthorFolderAndAllOfItsContentWillBeDeleted": "Der Filmordner und dessen Inhalt wird gelöscht.",
|
||||
"DeleteFilesHelpText": "Lösche die Buchdateien und Autorordner",
|
||||
"Component": "Komponente",
|
||||
"Level": "Stufe",
|
||||
"Level": "Level",
|
||||
"Time": "Zeit",
|
||||
"RemoveFromBlocklist": "Aus der Sperrliste entfernen",
|
||||
"UnableToLoadBlocklist": "Sperrliste konnte nicht geladen werden",
|
||||
@@ -514,7 +514,7 @@
|
||||
"CatalogNumber": "Katalog Nummer",
|
||||
"ContinuingAllBooksDownloaded": "Fortfahren (Alle Bücher heruntergeladen)",
|
||||
"DeleteMetadataProfile": "Metadaten Profil löschen",
|
||||
"ImportListExclusions": "Ausschlüsse der Importliste",
|
||||
"ImportListExclusions": "Ausschlüsse aus der Importliste",
|
||||
"ImportLists": "Importlisten",
|
||||
"ImportListSettings": "Allgemeine Importlisten-Einstellungen",
|
||||
"ImportListSpecificSettings": "Listenspezifische Einstellungen importieren",
|
||||
@@ -531,8 +531,7 @@
|
||||
"MetadataProfile": "Metadaten Profil",
|
||||
"MetadataProfileIdHelpText": "Metadaten Profil Listenelemente sollten hinzugefügt werden mit",
|
||||
"MetadataProfiles": "Metadaten Profile",
|
||||
"MonitoringOptions": "Beobachtungsoptionen",
|
||||
"MusicbrainzId": "MusicBrainz Id",
|
||||
"MonitoringOptions": "Überwachungsoptionen",
|
||||
"WatchRootFoldersForFileChanges": "Beobachte Stammverzeichnis auf Dateiänderungen",
|
||||
"OnDownloadFailure": "Bei fehlgeschlagenem Download",
|
||||
"OnDownloadFailureHelpText": "Bei fehlgeschlagenem Download",
|
||||
@@ -556,7 +555,7 @@
|
||||
"FutureDays": "Zukünftige Tage",
|
||||
"FutureDaysHelpText": "Tage die iCal-Feed in die Zukunft schauen soll",
|
||||
"FutureBooks": "Zukünftige Bücher",
|
||||
"GeneralSettingsSummary": "Port, SSL, Benutzername/Passwort, Proxy, Analytik und Updates",
|
||||
"GeneralSettingsSummary": "Port, SSL, Benutzername/Kennwort, Proxy, Analyse und Updates",
|
||||
"IndexerJackettAll": "Indexer, welche den nicht unterstützten 'all'-Endpoint von Jackett verwenden: {0}",
|
||||
"IndexerLongTermStatusCheckAllClientMessage": "Alle Indexer sind wegen über 6 Stunden langen bestehender Fehler nicht verfügbar",
|
||||
"IsExpandedShowFileInfo": "Dateiinformationen anzeigen",
|
||||
@@ -569,7 +568,7 @@
|
||||
"BookList": "Buchliste",
|
||||
"Continuing": "Fortsetzung",
|
||||
"ExistingItems": "Existierende Artikel",
|
||||
"ForeignIdHelpText": "Die Musicbrainz Id des Autors/Buches die ausgeschlossen werden soll",
|
||||
"ForeignIdHelpText": "Die Fremd-ID des Autors/Buchs, der/das ausgeschlossen werden soll",
|
||||
"IndexersSettingsSummary": "Indexer- und Releasebeschränkungen",
|
||||
"ISBN": "ISBN",
|
||||
"IsExpandedHideFileInfo": "Dateiinformationen verstecken",
|
||||
@@ -595,23 +594,23 @@
|
||||
"IndexerIdHelpTextWarning": "Die Verwendung eines bestimmten Indexers mit bevorzugten Wörtern kann dazu führen, dass Veröffentlichungen mehrfach erfasst werden",
|
||||
"LatestBook": "Neuestes Buch",
|
||||
"MetadataProviderSource": "Metadaten Anbieter Quelle",
|
||||
"MetadataSource": "Metadaten Quelle",
|
||||
"MetadataSource": "Metadatenquelle",
|
||||
"MetadataSourceHelpText": "Alternative Metadaten Quelle (Leer lassen für Standard)",
|
||||
"MusicBrainzRecordingID": "MusicBrainz Aufnahme Id",
|
||||
"MusicBrainzReleaseID": "MusicBrainz Veröffentlichung Id",
|
||||
"MusicBrainzTrackID": "MusicBrainz Titel Id",
|
||||
"OnGrab": "Bei Erfassung",
|
||||
"OnGrab": "Bei Abruf",
|
||||
"OnImportFailureHelpText": "Bei fehlgeschlagenem Import",
|
||||
"OnReleaseImport": "Bei Veröffentlichungsimport",
|
||||
"OnReleaseImportHelpText": "Bei Veröffentlichungsimport",
|
||||
"OnRename": "Bei Umbenennung",
|
||||
"PastDaysHelpText": "Tage für iCal-Feed, um in die Vergangenheit zu schauen",
|
||||
"PathHelpTextWarning": "Dies muss ein anderes Verzeichnis sein als das, in dem der Download Client die Dateien ablegt",
|
||||
"ReleaseProfiles": "Veröffentlichungsprofile",
|
||||
"ReleaseProfiles": "Release-Profile",
|
||||
"RootFolderPathHelpText": "Die Elemente im Stammverzeichnis werden hinzugefügt zu",
|
||||
"SearchMonitored": "Suche beobachtete",
|
||||
"SearchMonitored": "Suche überwachte Episoden",
|
||||
"ShowName": "Zeige Name",
|
||||
"SkipRedownload": "Überspringe erneuten Download",
|
||||
"SkipRedownload": "Neu-Download überspringen",
|
||||
"StatusEndedContinuing": "Fortfahren",
|
||||
"UnableToLoadMetadataProviderSettings": "Einstellungen für Metadata Provider konnten nicht geladen werden",
|
||||
"UpdatingIsDisabledInsideADockerContainerUpdateTheContainerImageInstead": "Aktualisierung innerhalb des Docker Containers ist deaktiviert. Aktualisieren Sie stattdessen das Container Image.",
|
||||
@@ -622,7 +621,7 @@
|
||||
"DefaultQualityProfileIdHelpText": "Standard Qualitätsprofil für Autoren, die in diesem Ordner gefunden werden",
|
||||
"DefaultReadarrTags": "Standard Readarr Tags",
|
||||
"DeleteBookFile": "Buchdatei löschen",
|
||||
"OnHealthIssue": "Bei Zustandsproblem",
|
||||
"OnHealthIssue": "Bei Gesundheitsproblem",
|
||||
"QualityProfileIdHelpText": "Qualitätsprofil mit dem Listemelemente hinzugefügt werden sollen",
|
||||
"UnmappedFiles": "Nicht zugewiesene Dateien",
|
||||
"AppDataLocationHealthCheckMessage": "Ein Update ist nicht möglich, um das Löschen von AppData beim Update zu verhindern",
|
||||
@@ -644,7 +643,7 @@
|
||||
"Disabled": "Deaktiviert",
|
||||
"DownloadClientCheckNoneAvailableMessage": "Kein Download Client verfügbar",
|
||||
"DownloadClientCheckUnableToCommunicateMessage": "Kommunikation mit {0} nicht möglich.",
|
||||
"DownloadClientsSettingsSummary": "Download Clients, Downloadverarbeitung und Remote-Pfadzuordnungen",
|
||||
"DownloadClientsSettingsSummary": "Download Clients, Download-Verwaltung und Remote-Pfadzuordnungen",
|
||||
"DownloadClientStatusCheckAllClientMessage": "Alle Download Clients sind aufgrund von Fehlern nicht verfügbar",
|
||||
"DownloadClientStatusCheckSingleClientMessage": "Download Clients aufgrund von Fehlern nicht verfügbar: {0}",
|
||||
"EditAuthor": "Autor bearbeiten",
|
||||
@@ -693,7 +692,7 @@
|
||||
"RemotePathMappingCheckFolderPermissions": "{appName} kann das Downloadverzeichnis sehen, aber nicht verarbeiten {0}. Möglicherwiese ein Rechteproblem.",
|
||||
"RemotePathMappingCheckGenericPermissions": "Downloader {0} speichert Downloads in {1}, aber Readarr kann dieses Verzeichnis nicht sehen. Möglicherweise müssen die Verzeichnisrechte angepasst werden.",
|
||||
"RemotePathMappingCheckLocalWrongOSPath": "Downloader {0} speichert Downloads in {1}, aber dies ist kein valider {2} Pfad. Überprüfe die Downloader Einstellungen.",
|
||||
"Monitor": "Beobachten",
|
||||
"Monitor": "Überwachen",
|
||||
"MusicBrainzAuthorID": "MusicBranz Künstler Id",
|
||||
"MusicBrainzBookID": "MusicBrainz Titel Id",
|
||||
"WriteAudioTags": "Audiodateien mit Metadaten versehen",
|
||||
@@ -701,7 +700,7 @@
|
||||
"SearchForAllMissingBooks": "Suche nach allen fehlenden Alben",
|
||||
"SearchForMonitoredBooks": "Suche nach beobachteten Alben",
|
||||
"SelectedCountAuthorsSelectedInterp": "{0} Künstler ausgewählt",
|
||||
"SizeLimit": "Grössenlimit",
|
||||
"SizeLimit": "Größenlimit",
|
||||
"TheBooksFilesWillBeDeleted": "Die Dateien des Albums werden gelöscht.",
|
||||
"MediaManagement": "Medienverwaltung",
|
||||
"Metadata": "Metadaten",
|
||||
@@ -742,7 +741,7 @@
|
||||
"SearchFiltered": "Suche gefilterte",
|
||||
"AddList": "Liste hinzufügen",
|
||||
"InstanceName": "Instanzname",
|
||||
"InstanceNameHelpText": "Instanzname im Browser-Tab und für Syslog-Anwendungsname",
|
||||
"InstanceNameHelpText": "Instanzname im Tab und für den Syslog-App-Namen",
|
||||
"RestartRequiredHelpTextWarning": "Erfordert einen Neustart, damit die Aktion wirksam wird",
|
||||
"UseCalibreContentServer": "Calibre-Content-Server",
|
||||
"DataExistingBooks": "Beobachte Bücher die Dateien haben oder noch nicht veröffentlicht wurden",
|
||||
@@ -756,7 +755,7 @@
|
||||
"MonitorBook": "Buch überwachen",
|
||||
"MinimumPages": "Mindestseiten",
|
||||
"MassBookSearch": "Massensuche nach Büchern",
|
||||
"MediaManagementSettingsSummary": "Namensgebung, Dateimanagement-Einstellungen und Root-Ordner",
|
||||
"MediaManagementSettingsSummary": "Einstellungen zu Benennung, Dateiverwaltung und Root-Ordnern",
|
||||
"MinimumPopularity": "Mindestpolularität",
|
||||
"MinPagesHelpText": "Bücher mit weniger Seiten als dieses ignorieren",
|
||||
"MinPopularityHelpText": "Popularität ist Durchschnittsbewertung * Anzahl der Stimmen",
|
||||
@@ -854,7 +853,7 @@
|
||||
"Theme": "Design",
|
||||
"ThemeHelpText": "Ändern Sie das Benutzeroberflächen-Design der Anwendung. Das „Auto“-Design verwendet Ihr Betriebssystemdesign, um den Hell- oder Dunkelmodus festzulegen. Inspiriert vom Theme.Park",
|
||||
"BypassIfHighestQuality": "Ignoriere wenn höchste Qualität",
|
||||
"MinimumCustomFormatScore": "Minimum der eigenen Formate Bewertungspunkte",
|
||||
"MinimumCustomFormatScore": "Mindestwert für benutzerdefinierte Formate",
|
||||
"CustomFormatScore": "Eigenes Format Bewertungspunkte",
|
||||
"CloneCustomFormat": "Benutzerdefiniertes Format klonen",
|
||||
"Conditions": "Bedingungen",
|
||||
@@ -862,8 +861,8 @@
|
||||
"CustomFormat": "Benutzerdefiniertes Format",
|
||||
"CustomFormats": "Eigene Formate",
|
||||
"CutoffFormatScoreHelpText": "Sobald diese eigener Format Bewertung erreicht wird, werden keine neuen Releases erfasst",
|
||||
"DeleteFormatMessageText": "Bist du sicher, dass du das Formatierungstag {0} löschen willst?",
|
||||
"ExportCustomFormat": "Eigenes Format exportieren",
|
||||
"DeleteFormatMessageText": "Bist du sicher, dass du das Format-Tag '{0}' löschen möchtest?",
|
||||
"ExportCustomFormat": "Benutzerdefiniertes Format exportieren",
|
||||
"Formats": "Formate",
|
||||
"MinFormatScoreHelpText": "Mindester eigener Format Score bis zum Download",
|
||||
"NegateHelpText": "Wenn aktiviert wird das eigene Format nicht angewendet solange diese {0} Bedingung zutrifft.",
|
||||
@@ -874,16 +873,16 @@
|
||||
"DataFutureBooks": "Überwachung von Alben die noch nicht veröffentlicht wurden",
|
||||
"DeleteCustomFormat": "Benutzerdefiniertes Format löschen",
|
||||
"DeleteCustomFormatMessageText": "Bist du sicher, dass du das benutzerdefinierte Format '{name}' wirklich löschen willst?",
|
||||
"IncludeCustomFormatWhenRenamingHelpText": "In {Custom Formats} umbennenungs Format",
|
||||
"IncludeCustomFormatWhenRenamingHelpText": "In {Custom Formats} Umbenennungs-Format",
|
||||
"ResetTitles": "Titel zurücksetzen",
|
||||
"UnableToLoadCustomFormats": "Eigene Formate konnten nicht geladen werden",
|
||||
"ImportListMissingRoot": "Fehlendes Stammverzeichnis für Importlist(en): {0}",
|
||||
"ImportListMultipleMissingRoots": "Mehrere Stammverzeichnisse fehlen für Importlist: {0}",
|
||||
"IndexerDownloadClientHelpText": "Wähle aus, welcher Download-Client für diesen Indexer verwendet wird",
|
||||
"IndexerDownloadClientHelpText": "Gib an, welcher Download-Client für Abrufe von diesem Indexer verwendet wird",
|
||||
"IndexerTagsHelpText": "Benutze den Indexer nur für Filme mit mindesens einen zutreffenden Tag. Leer lassen für alle Filme.",
|
||||
"RecycleBinUnableToWriteHealthCheck": "Schreiben in konfigurierten Papierkorbordner nicht möglich: {0}. Stelle sicher, dass dieser Pfad existiert und von dem Benutzer, der {appName} ausführt, beschreibbar ist",
|
||||
"HiddenClickToShow": "Versteckt, klicken zum anzeigen",
|
||||
"HideAdvanced": "Erweiterte Ansicht",
|
||||
"HiddenClickToShow": "Versteckt, zum Anzeigen anklicken",
|
||||
"HideAdvanced": "Erweiterte Einstellungen ausblenden",
|
||||
"ShowAdvanced": "Erweitert anzeigen",
|
||||
"ShownClickToHide": "Angezeigt, zum Ausblenden klicken",
|
||||
"ColonReplacement": "Doppelpunktersatz",
|
||||
@@ -909,20 +908,20 @@
|
||||
"DeleteSelectedIndexersMessageText": "Sind Sie sicher, dass Sie {count} ausgewählte(n) Indexer löschen möchten?",
|
||||
"EditSelectedDownloadClients": "Ausgewählte Download Clienten bearbeiten",
|
||||
"Implementation": "Integration",
|
||||
"NoEventsFound": "Keine Events gefunden",
|
||||
"NoEventsFound": "Keine Ereignisse gefunden",
|
||||
"NoImportListsFound": "Keine Einspiel-Listen gefunden",
|
||||
"NoIndexersFound": "Keine Indexer gefunden",
|
||||
"RemoveCompletedDownloads": "Entferne abgeschlossene Downloads",
|
||||
"RemoveDownloadsAlert": "Die Einstellungen zum Entfernen wurden in die individuellen Download Client Einstellungen in der obigen Tabelle verschoben.",
|
||||
"RemoveDownloadsAlert": "Die Entfernen-Einstellungen wurden in die einzelnen Download-Client-Einstellungen in der Tabelle oben verschoben.",
|
||||
"RemovingTag": "Tag entfernen",
|
||||
"Yes": "Ja",
|
||||
"BlocklistReleaseHelpText": "Dieses Release nicht automatisch erneut erfassen",
|
||||
"RemoveFailedDownloads": "Fehlgeschlagene Downloads entfernen",
|
||||
"BlocklistReleases": "Release sperren",
|
||||
"DeleteConditionMessageText": "Bist du sicher, dass du die Bedingung '{0}' löschen willst?",
|
||||
"DeleteConditionMessageText": "Bist du sicher, dass du die Bedingung '{name}' löschen möchtest?",
|
||||
"Negated": "Negiert",
|
||||
"ResetQualityDefinitions": "Qualitätsdefinitionen zurücksetzen",
|
||||
"RemoveSelectedItem": "Entferne ausgewählten Eintrag",
|
||||
"RemoveSelectedItem": "Ausgewähltes Element entfernen",
|
||||
"RemoveSelectedItems": "Markierte Einträge löschen",
|
||||
"Required": "Erforderlich",
|
||||
"RedownloadFailed": "Download fehlgeschlagen",
|
||||
@@ -936,7 +935,7 @@
|
||||
"ApplyTagsHelpTextRemove": "Entfernen: Entferne die hinterlegten Tags",
|
||||
"ApplyTagsHelpTextReplace": "Ersetzen: Ersetze die Tags mit den eingegebenen Tags (keine Tags eingeben um alle Tags zu löschen)",
|
||||
"ApplyTagsHelpTextHowToApplyDownloadClients": "Wie Tags zu den selektierten Downloadclients hinzugefügt werden können",
|
||||
"CountIndexersSelected": "{0} Indexer ausgewählt",
|
||||
"CountIndexersSelected": "{selectedCount} Indexer(s) ausgewählt",
|
||||
"DeleteSelectedDownloadClients": "Lösche Download Client(s)",
|
||||
"DeleteSelectedDownloadClientsMessageText": "Sind Sie sicher, dass Sie {count} ausgewählte Download-Clients löschen möchten?",
|
||||
"DeleteSelectedIndexers": "Lösche Indexer",
|
||||
@@ -956,19 +955,19 @@
|
||||
"Loading": "Lade",
|
||||
"ConnectionLostReconnect": "{appName} wird versuchen, automatisch eine Verbindung herzustellen, oder Sie können unten auf „Neu laden“ klicken.",
|
||||
"ConnectionLostToBackend": "{appName} hat die Verbindung zum Backend verloren und muss neu geladen werden, um die Funktionalität wiederherzustellen.",
|
||||
"NotificationStatusAllClientHealthCheckMessage": "Wegen Fehlern sind keine Applikationen verfügbar",
|
||||
"NotificationStatusAllClientHealthCheckMessage": "Alle Benachrichtigungen sind aufgrund von Fehlern nicht verfügbar",
|
||||
"NotificationStatusSingleClientHealthCheckMessage": "Applikationen wegen folgender Fehler nicht verfügbar: {0}",
|
||||
"TotalSpace": "Gesamter Speicherplatz",
|
||||
"Ui": "Benutzeroberfläche",
|
||||
"FreeSpace": "Freier Speicher",
|
||||
"FreeSpace": "Freier Platz",
|
||||
"Large": "Groß",
|
||||
"LastExecution": "Letzte Ausführung",
|
||||
"LastWriteTime": "Zuletzt beschrieben",
|
||||
"LastWriteTime": "Letzte Schreibzeit",
|
||||
"Library": "Bibliothek",
|
||||
"Location": "Speicherort",
|
||||
"Location": "Standort",
|
||||
"Small": "Klein",
|
||||
"ConnectionLost": "Verbindung unterbrochen",
|
||||
"Events": "Events",
|
||||
"Events": "Ereignisse",
|
||||
"LastDuration": "Letzte Dauer",
|
||||
"RecentChanges": "Kürzliche Änderungen",
|
||||
"System": "System",
|
||||
@@ -987,8 +986,8 @@
|
||||
"AutomaticUpdatesDisabledDocker": "Automatische Updates werden bei Verwendung des Docker-Update-Mechanismus nicht direkt unterstützt. Sie müssen das Container-Image außerhalb von {appName} aktualisieren oder ein Skript verwenden",
|
||||
"AutoAdd": "Automatisch hinzufügen",
|
||||
"WouldYouLikeToRestoreBackup": "Willst du das Backup '{name}' wiederherstellen?",
|
||||
"Unmonitored": "Nicht beobachtet",
|
||||
"Retention": "Aufbewahrung ( Retention )",
|
||||
"Unmonitored": "Nicht überwacht",
|
||||
"Retention": "Aufbewahrung",
|
||||
"ClickToChangeIndexerFlags": "Klicken, um Indexer-Flags zu ändern",
|
||||
"BlocklistAndSearch": "Sperrliste und Suche",
|
||||
"BlocklistAndSearchHint": "Starte Suche nach einer Alternative, falls es der Sperrliste hinzugefügt wurde",
|
||||
@@ -997,14 +996,14 @@
|
||||
"BlocklistOnly": "Nur der Sperrliste hinzufügen",
|
||||
"BlocklistOnlyHint": "Der Sperrliste hinzufügen, ohne nach Alternative zu suchen",
|
||||
"ChangeCategory": "Kategorie wechseln",
|
||||
"TagIsNotUsedAndCanBeDeleted": "Tag wird nicht benutzt und kann gelöscht werden",
|
||||
"ExtraFileExtensionsHelpText": "Kommaseparierte Liste von Dateiendungen die als Extra Dateien importiert werden sollen ( .nfo wird in .nfo-orig umbenannt )",
|
||||
"TagIsNotUsedAndCanBeDeleted": "Tag wird nicht verwendet und kann gelöscht werden",
|
||||
"ExtraFileExtensionsHelpText": "Kommagetrennte Liste von zusätzlichen Dateien, die importiert werden sollen (.nfo wird als .nfo-orig importiert)",
|
||||
"DeleteImportListExclusion": "Importlisten Ausschluss löschen",
|
||||
"IndexerFlags": "Indexer-Flags",
|
||||
"CountAuthorsSelected": "{selectedCount} Künstler ausgewählt",
|
||||
"ExtraFileExtensionsHelpTextsExamples": "Vorschläge: sub, nfo, srt, jpg",
|
||||
"ExtraFileExtensionsHelpTextsExamples": "Beispiele: '.sub, .nfo' oder 'sub,nfo'",
|
||||
"DownloadClient": "Downloader",
|
||||
"ShowMonitoredHelpText": "Beobachtungsstatus unter dem Plakat anzeigen",
|
||||
"ShowMonitoredHelpText": "Überwachungsstatus unter dem Poster anzeigen",
|
||||
"CountDownloadClientsSelected": "{count} Download-Client(s) ausgewählt",
|
||||
"CountImportListsSelected": "{selectedCount} Künstler ausgewählt",
|
||||
"CustomFormatsSpecificationRegularExpression": "Regulären Ausdruck",
|
||||
@@ -1013,8 +1012,8 @@
|
||||
"AutoRedownloadFailed": "Erneuter Download fehlgeschlagen",
|
||||
"SourceTitle": "Quellentitel",
|
||||
"Tags": "Tags",
|
||||
"DownloadClientDelugeSettingsDirectoryHelpText": "Optionaler Speicherort für Downloads. Lassen Sie das Feld leer, um den standardmäßigen rTorrent-Speicherort zu verwenden",
|
||||
"ErrorLoadingContent": "Beim Laden des Eintrags ist ein Fehler aufgetreten",
|
||||
"DownloadClientDelugeSettingsDirectoryHelpText": "Optionaler Ort für Downloads, leer lassen, um den Standard-Deluge-Ort zu verwenden",
|
||||
"ErrorLoadingContent": "Es ist ein Fehler beim Laden dieses Inhalts aufgetreten",
|
||||
"BypassIfAboveCustomFormatScore": "Umgehen, wenn über dem Wert des benutzerdefinierten Formats liegt",
|
||||
"BypassIfAboveCustomFormatScoreHelpText": "Aktivieren Sie die Umgehung, wenn die Veröffentlichung einen Wert hat, der höher ist als der konfigurierte Mindestwert für das benutzerdefinierte Format",
|
||||
"DownloadClientRemovesCompletedDownloadsHealthCheckMessage": "Der Download-Client {downloadClientName} ist so eingestellt, dass abgeschlossene Downloads entfernt werden. Dies kann dazu führen, dass Downloads von Ihrem Client entfernt werden, bevor {appName} sie importieren kann.",
|
||||
@@ -1024,12 +1023,12 @@
|
||||
"InteractiveSearchModalHeader": "Interaktive Suche",
|
||||
"MinimumCustomFormatScoreHelpText": "Mindestwert für benutzerdefiniertes Format, der erforderlich ist, um Verzögerungen für das bevorzugte Protokoll zu umgehen",
|
||||
"Rejections": "Ablehnungen",
|
||||
"RemoveQueueItemConfirmation": "Bist du sicher, dass du {0} Einträge aus der Warteschlange entfernen willst?",
|
||||
"RemoveQueueItemConfirmation": "Bist du sicher, dass du '{sourceTitle}' aus der Warteschlange entfernen möchtest?",
|
||||
"SelectDropdown": "Auswählen...",
|
||||
"SelectQuality": "Qualität auswählen",
|
||||
"SelectReleaseGroup": "Wähle Release-Gruppe",
|
||||
"ShowMonitored": "Beobachtete anzeigen",
|
||||
"DeleteSelected": "Markierte löschen",
|
||||
"ShowMonitored": "Überwachter Status anzeigen",
|
||||
"DeleteSelected": "Ausgewählte löschen",
|
||||
"Bookshelf": "Bücherregal",
|
||||
"BypassIfHighestQualityHelpText": "Umgehen der Verzögerung, wenn die Freigabe die höchste aktivierte Qualität im Qualitätsprofil hat",
|
||||
"CustomFormatsSpecificationFlag": "Markierung",
|
||||
@@ -1045,12 +1044,12 @@
|
||||
"CustomFormatsSettingsTriggerInfo": "Ein Eigenes Format wird auf eine Veröffentlichung oder Datei angewandt, wenn sie mindestens einer der verschiedenen ausgewählten Bedingungen entspricht.",
|
||||
"ConnectionSettingsUrlBaseHelpText": "Fügt ein Präfix zur {connectionName} URL hinzu, z. B. {url}",
|
||||
"DownloadClientDelugeSettingsDirectory": "Download Verzeichnis",
|
||||
"DownloadClientDelugeSettingsDirectoryCompleted": "Verschieben, wenn Verzeichnis abgeschlossen",
|
||||
"DownloadClientDelugeSettingsDirectoryCompleted": "Verschieben, wenn abgeschlossen Verzeichnis",
|
||||
"IgnoreDownloadHint": "Hält {appName} von der weiteren Verarbeitung dieses Downloads ab",
|
||||
"IgnoreDownloads": "Downloads ignorieren",
|
||||
"IgnoreDownload": "Download ignorieren",
|
||||
"IgnoreDownloadsHint": "Hindert {appName}, diese Downloads weiter zu verarbeiten",
|
||||
"DownloadClientDelugeSettingsDirectoryCompletedHelpText": "Optionaler Speicherort für Downloads. Lassen Sie das Feld leer, um den standardmäßigen rTorrent-Speicherort zu verwenden",
|
||||
"DownloadClientDelugeSettingsDirectoryCompletedHelpText": "Optionaler Ort, an den abgeschlossene Downloads verschoben werden, leer lassen, um den Standard-Deluge-Ort zu verwenden",
|
||||
"ApiKey": "API-Schlüssel",
|
||||
"AuthBasic": "Basis (Browser-Popup)",
|
||||
"AuthForm": "Formulare (Anmeldeseite)",
|
||||
@@ -1059,18 +1058,65 @@
|
||||
"AuthenticationRequired": "Authentifizierung benötigt",
|
||||
"AuthenticationRequiredHelpText": "Ändern, welche anfragen Authentifizierung benötigen. Ändere nichts wenn du dir nicht des Risikos bewusst bist.",
|
||||
"AuthenticationRequiredPasswordConfirmationHelpTextWarning": "Neues Passwort bestätigen",
|
||||
"AuthenticationRequiredPasswordHelpTextWarning": "Gib ein neues Passwort ein",
|
||||
"AuthenticationRequiredUsernameHelpTextWarning": "Gib einen neuen Benutzernamen ein",
|
||||
"AuthenticationRequiredPasswordHelpTextWarning": "Neues Passwort eingeben",
|
||||
"AuthenticationRequiredUsernameHelpTextWarning": "Neuen Benutzernamen eingeben",
|
||||
"AuthenticationRequiredWarning": "Um unberechtigte Fernzugriffe zu vermeiden benötigt {appName} jetzt , dass Authentifizierung eingeschaltet ist. Du kannst Authentifizierung optional für lokale Adressen ausschalten.",
|
||||
"DisabledForLocalAddresses": "Für lokale Adressen deaktiviert",
|
||||
"Enabled": "Aktiviert",
|
||||
"BuiltIn": "Eingebaut",
|
||||
"CurrentlyInstalled": "Derzeit installiert",
|
||||
"InstallLatest": "Jetzt updaten",
|
||||
"OnLatestVersion": "Die aktuellste Version ist bereits installiert",
|
||||
"InstallLatest": "Neueste Version installieren",
|
||||
"OnLatestVersion": "Die neueste Version von {appName} ist bereits installiert",
|
||||
"Script": "Skript",
|
||||
"AptUpdater": "Verwenden Sie apt, um das Update zu installieren",
|
||||
"DockerUpdater": "Aktualisieren Sie den Docker-Container, um das Update zu erhalten",
|
||||
"ExternalUpdater": "{appName} wurde so konfiguriert, dass ein externer Update Mechanismus benutzt wird",
|
||||
"UpdateAppDirectlyLoadError": "{appName} kann nicht direkt aktualisiert werden."
|
||||
"ExternalUpdater": "{appName} ist so konfiguriert, dass es einen externen Aktualisierungsmechanismus verwendet",
|
||||
"UpdateAppDirectlyLoadError": "{appName} kann nicht direkt aktualisiert werden.",
|
||||
"External": "Extern",
|
||||
"FailedToFetchSettings": "Einstellungen können nicht abgerufen werden",
|
||||
"FailedToFetchUpdates": "Updates konnten nicht abgerufen werden",
|
||||
"DownloadClientQbittorrentSettingsContentLayout": "Inhaltslayout",
|
||||
"IndexerSettingsSeedRatio": "Seed-Verhältnis",
|
||||
"RemoveMultipleFromDownloadClientHint": "Entfernt Downloads und Dateien aus dem Download-Client",
|
||||
"IndexerSettingsSeedTime": "Seed-Zeit",
|
||||
"Install": "Installieren",
|
||||
"InstallMajorVersionUpdate": "Update installieren",
|
||||
"RemoveQueueItem": "Entfernen - {sourceTitle}",
|
||||
"NotificationsPlexSettingsAuthenticateWithPlexTv": "Mit Plex.tv authentifizieren",
|
||||
"SmartReplace": "Smart Replace",
|
||||
"DownloadClientQbittorrentSettingsContentLayoutHelpText": "Ob das konfigurierte Inhaltslayout von qBittorrent, das ursprüngliche Layout des Torrents oder immer ein Unterordner erstellt werden soll (qBittorrent 4.3.2+)",
|
||||
"IndexerSettingsSeedRatioHelpText": "Das Verhältnis, das ein Torrent erreichen muss, bevor er gestoppt wird. Leer verwendet das Standardverhältnis des Download-Clients. Das Verhältnis sollte mindestens 1,0 betragen und den Regeln des Indexers folgen.",
|
||||
"IndexerSettingsSeedTimeHelpText": "Die Zeit, die ein Torrent gesät werden sollte, bevor er gestoppt wird. Leer verwendet die Standardzeit des Download-Clients",
|
||||
"InstallMajorVersionUpdateMessage": "Dieses Update wird eine neue Hauptversion installieren und ist möglicherweise nicht mit deinem System kompatibel. Bist du sicher, dass du dieses Update installieren möchtest?",
|
||||
"InstallMajorVersionUpdateMessageLink": "Weitere Informationen findest du unter [{domain}]({url}).",
|
||||
"InvalidUILanguage": "Die UI ist auf eine ungültige Sprache eingestellt, korrigiere sie und speichere die Einstellungen",
|
||||
"LabelIsRequired": "Label ist erforderlich",
|
||||
"NotificationsPlexSettingsAuthToken": "Auth-Token",
|
||||
"NotificationsSettingsUpdateLibrary": "Bibliothek aktualisieren",
|
||||
"NotificationsSettingsUpdateMapPathsFrom": "Pfade von",
|
||||
"NotificationsSettingsUpdateMapPathsTo": "Pfade zu",
|
||||
"NotificationsSettingsUseSslHelpText": "Mit {serviceName} über HTTPS anstatt HTTP verbinden",
|
||||
"PasswordConfirmation": "Passwortbestätigung",
|
||||
"PreviouslyInstalled": "Früher installiert",
|
||||
"RemoveFromDownloadClientHint": "Entfernt den Download und die Datei(en) aus dem Download-Client",
|
||||
"RemoveQueueItemRemovalMethod": "Entfernmethode",
|
||||
"RemoveQueueItemRemovalMethodHelpTextWarning": "'Aus dem Download-Client entfernen' wird den Download und die Datei(en) aus dem Download-Client löschen.",
|
||||
"RemoveQueueItemsRemovalMethodHelpTextWarning": "'Aus dem Download-Client entfernen' wird die Downloads und die Dateien aus dem Download-Client löschen.",
|
||||
"SelectIndexerFlags": "Indexer-Flags auswählen",
|
||||
"SetIndexerFlags": "Indexer-Flags festlegen",
|
||||
"InteractiveSearchModalHeaderBookAuthor": "Interaktive Suche - {bookTitle} von {authorName}",
|
||||
"NoMissingItems": "Keine fehlenden Einträge",
|
||||
"NoCutoffUnmetItems": "Keine nicht erfüllten Cutoff-Elemente",
|
||||
"DashOrSpaceDashDependingOnName": "Dash oder Space Dash je nach Name",
|
||||
"NotificationsSettingsUpdateMapPathsFromHelpText": "{appName}-Pfad, wird verwendet, um Serienpfade zu ändern, wenn {serviceName} den Bibliothekspfad anders sieht als {appName} (benötigt 'Bibliothek aktualisieren')",
|
||||
"NotificationsSettingsUpdateMapPathsToHelpText": "{serviceName}-Pfad, wird verwendet, um Serienpfade zu ändern, wenn {serviceName} den Bibliothekspfad anders sieht als {appName} (benötigt 'Bibliothek aktualisieren')",
|
||||
"RemotePathMappingsInfo": "Remote Path Mappings sind nur in seltenen Fällen erforderlich. Wenn {app} und dein Download-Client auf demselben System laufen, ist es besser, die Pfade anzupassen. Weitere Informationen findest du im [Wiki]({wikiLink}).",
|
||||
"WhySearchesCouldBeFailing": "Klicke hier, um herauszufinden, warum die Suchen fehlschlagen könnten",
|
||||
"SkipRedownloadHelpText": "Verhindert, dass Readarr versucht, alternative Releases für die entfernten Elemente herunterzuladen",
|
||||
"OnAuthorAdded": "Beim Hinzufügen des Autors",
|
||||
"OnAuthorAddedHelpText": "Beim Hinzufügen des Autors",
|
||||
"SelectBook": "Buch auswählen",
|
||||
"SelectEdition": "Wähle Edition",
|
||||
"LastSearched": "Letzte Suche",
|
||||
"Unknown": "Unbekannt"
|
||||
}
|
||||
|
||||
@@ -597,7 +597,6 @@
|
||||
"MonitorNewItemsHelpText": "Ποια νέα βιβλία πρέπει να παρακολουθούνται",
|
||||
"MusicBrainzRecordingID": "Αναγνωριστικό ηχογράφησης MusicBrainz",
|
||||
"MusicBrainzBookID": "Αναγνωριστικό βιβλίου MusicBrainz",
|
||||
"MusicbrainzId": "Musicbrainz Id",
|
||||
"MusicBrainzAuthorID": "MusicBrainz Αναγνωριστικό συγγραφέα",
|
||||
"NoName": "Να μην εμφανίζεται το όνομα",
|
||||
"NoTagsHaveBeenAddedYet": "Δεν έχουν προστεθεί ακόμη ετικέτες. Προσθέστε ετικέτες για να συνδέσετε τους συγγραφείς με προφίλ καθυστέρησης, περιορισμούς ή ειδοποιήσεις. Κάντε κλικ στο {0} για να μάθετε περισσότερα σχετικά με τις ετικέτες στο Readarr.",
|
||||
|
||||
@@ -11,7 +11,11 @@
|
||||
"AddListExclusion": "Add List Exclusion",
|
||||
"AddMissing": "Add missing",
|
||||
"AddNew": "Add New",
|
||||
"AddNewBook": "Add New Book",
|
||||
"AddNewAuthor": "Add New Author",
|
||||
"AddNewAuthorRootFolderHelpText": "'{folder}' subfolder will be created automatically",
|
||||
"AddNewItem": "Add New Item",
|
||||
"AddRootFolder": "Add Root Folder",
|
||||
"AddedAuthorSettings": "Added Author Settings",
|
||||
"AddingTag": "Adding tag",
|
||||
"AgeWhenGrabbed": "Age (when grabbed)",
|
||||
@@ -394,7 +398,7 @@
|
||||
"ForMoreInformationOnTheIndividualIndexersClickOnTheInfoButtons": "For more information on the individual indexers, click on the info buttons.",
|
||||
"ForMoreInformationOnTheIndividualListsClickOnTheInfoButtons": "For more information on the individual lists, click on the info buttons.",
|
||||
"ForeignId": "Foreign ID",
|
||||
"ForeignIdHelpText": "The Musicbrainz Id of the author/book to exclude",
|
||||
"ForeignIdHelpText": "The Foreign Id of the author/book to exclude",
|
||||
"Formats": "Formats",
|
||||
"FreeSpace": "Free Space",
|
||||
"FutureBooks": "Future Books",
|
||||
@@ -518,6 +522,7 @@
|
||||
"Large": "Large",
|
||||
"LastDuration": "Last Duration",
|
||||
"LastExecution": "Last Execution",
|
||||
"LastSearched": "Last Searched",
|
||||
"LastWriteTime": "Last Write Time",
|
||||
"LatestBook": "Latest Book",
|
||||
"LaunchBrowserHelpText": " Open a web browser and navigate to Readarr homepage on app start.",
|
||||
@@ -619,7 +624,6 @@
|
||||
"MusicBrainzRecordingID": "MusicBrainz Recording ID",
|
||||
"MusicBrainzReleaseID": "MusicBrainz Release ID",
|
||||
"MusicBrainzTrackID": "MusicBrainz Track ID",
|
||||
"MusicbrainzId": "Musicbrainz Id",
|
||||
"MustContain": "Must Contain",
|
||||
"MustNotContain": "Must Not Contain",
|
||||
"NETCore": ".NET Core",
|
||||
@@ -1063,6 +1067,7 @@
|
||||
"UnableToLoadTheCalendar": "Unable to load the calendar",
|
||||
"UnableToLoadUISettings": "Unable to load UI settings",
|
||||
"Ungroup": "Ungroup",
|
||||
"Unknown": "Unknown",
|
||||
"UnmappedFiles": "Unmapped Files",
|
||||
"Unmonitored": "Unmonitored",
|
||||
"UnmonitoredHelpText": "Include unmonitored books in the iCal feed",
|
||||
|
||||
@@ -423,7 +423,7 @@
|
||||
"UsenetDelay": "Retraso de usenet",
|
||||
"UsenetDelayHelpText": "Retraso en minutos a esperar antes de capturar un lanzamiento desde usenet",
|
||||
"Username": "Usuario",
|
||||
"BranchUpdate": "Rama a utilizar para actualizar Readarr",
|
||||
"BranchUpdate": "Rama a utilizar para actualizar {appName}",
|
||||
"BranchUpdateMechanism": "Rama usada por el mecanismo de actualización externo",
|
||||
"Version": "Versión",
|
||||
"WeekColumnHeader": "Cabecera de columna de semana",
|
||||
@@ -955,7 +955,6 @@
|
||||
"IgnoredMetaHelpText": "Los libros serán ignorados si contienen uno o más de los siguientes términos (insensible a mayúsculas)",
|
||||
"IsExpandedHideBooks": "Esconder libros",
|
||||
"LogSQL": "Registro SQL",
|
||||
"MusicbrainzId": "ID de MusicBrainz",
|
||||
"OnBookTagUpdate": "En actualización de etiqueta de libro",
|
||||
"PasswordHelpText": "Contraseña del servidor de contenido de Calibre",
|
||||
"OnAuthorAddedHelpText": "En autor añadido",
|
||||
@@ -975,7 +974,7 @@
|
||||
"CalibreLibrary": "Biblioteca de Calibre",
|
||||
"DeleteMetadataProfile": "Eliminar el perfil de metadatos",
|
||||
"PathHelpText": "Carpeta raíz que contiene tu biblitoteca de libros",
|
||||
"ForeignIdHelpText": "La ID de Musicbrainz del autor/libro a excluir",
|
||||
"ForeignIdHelpText": "La ID foránea del autor/libro a excluir",
|
||||
"HostHelpText": "Host del servidor de contenido de Calibre",
|
||||
"MetadataProviderSource": "Fuente del proveedor de metadatos",
|
||||
"MonitorAuthor": "Monitorizar autor",
|
||||
@@ -1117,5 +1116,7 @@
|
||||
"InstallLatest": "Instala el último",
|
||||
"InstallMajorVersionUpdate": "Instalar actualización",
|
||||
"InstallMajorVersionUpdateMessage": "Esta actualización instalará una nueva versión principal y podría no ser compatible con tu sistema. ¿Estás seguro que quieres instalar esta actualización?",
|
||||
"InstallMajorVersionUpdateMessageLink": "Por favor revisa [{domain}]({url}) para más información."
|
||||
"InstallMajorVersionUpdateMessageLink": "Por favor revisa [{domain}]({url}) para más información.",
|
||||
"LastSearched": "Último buscado",
|
||||
"Unknown": "Desconocido"
|
||||
}
|
||||
|
||||
@@ -1 +1,12 @@
|
||||
{}
|
||||
{
|
||||
"20MinutesTwenty": "۲۰ دقیقه: {0}",
|
||||
"ApiKey": "کلید API",
|
||||
"Usenet": "Usenet",
|
||||
"45MinutesFourtyFive": "۴۵ دقیقه: {0}",
|
||||
"60MinutesSixty": "۶۰ دقیقه: {0}",
|
||||
"About": "درباره",
|
||||
"Actions": "اقدامات",
|
||||
"Docker": "Docker",
|
||||
"Torrents": "تورنت ها",
|
||||
"Activity": "فعالیت"
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -328,11 +328,11 @@
|
||||
"ShortDateFormat": "Format de date courte",
|
||||
"ShowCutoffUnmetIconHelpText": "Afficher l'icône des fichiers lorsque la limite n'a pas été atteinte",
|
||||
"ShowDateAdded": "Afficher la date d'ajout",
|
||||
"ShowMonitored": "Afficher le chemin",
|
||||
"ShowMonitoredHelpText": "Afficher l'état de surveillance sous le poster",
|
||||
"ShowMonitored": "Afficher l'état de surveillance",
|
||||
"ShowMonitoredHelpText": "Affiche l'état de surveillance sous le poster",
|
||||
"ShowPath": "Afficher le chemin",
|
||||
"ShowQualityProfile": "Afficher le profil de qualité",
|
||||
"ShowQualityProfileHelpText": "Afficher le profil de qualité sous l'affiche",
|
||||
"ShowQualityProfileHelpText": "Affiche le profil de qualité sous l'affiche",
|
||||
"ShowRelativeDates": "Afficher les dates relatives",
|
||||
"ShowRelativeDatesHelpText": "Afficher les dates relatives (Aujourd'hui/Hier/etc) ou absolues",
|
||||
"ShowSearch": "Afficher la recherche",
|
||||
@@ -456,7 +456,7 @@
|
||||
"ReleaseTitle": "Titre de la version",
|
||||
"ShowBookTitleHelpText": "Affiche le titre du livre sous l'affiche",
|
||||
"ShowReleaseDate": "Afficher la date de sortie",
|
||||
"ShowTitle": "Montrer le titre",
|
||||
"ShowTitle": "Afficher le titre",
|
||||
"TheAuthorFolderAndAllOfItsContentWillBeDeleted": "Le dossier '{0}' et son contenu vont être supprimés.",
|
||||
"ReplaceIllegalCharactersHelpText": "Remplacer les caractères illégaux. Si non coché, Readarr les supprimera",
|
||||
"Level": "Niveau",
|
||||
@@ -862,7 +862,6 @@
|
||||
"ManageIndexers": "Gérer les indexeurs",
|
||||
"ManageLists": "Gérer les listes",
|
||||
"ManualDownload": "Téléchargement manuel",
|
||||
"MusicbrainzId": "Identifiant Musicbrainz",
|
||||
"PastDays": "Jours passés",
|
||||
"TrackNumber": "Numéro de piste",
|
||||
"IsExpandedShowFileInfo": "Afficher les informations sur le fichier",
|
||||
@@ -1117,5 +1116,7 @@
|
||||
"PreviouslyInstalled": "Installé précédemment",
|
||||
"Script": "Script",
|
||||
"UpdateAppDirectlyLoadError": "Impossible de mettre à jour directement {appName},",
|
||||
"InstallMajorVersionUpdateMessage": "Cette mise à jour installera une nouvelle version majeure et pourrait ne pas être compatible avec votre système. Êtes-vous sûr de vouloir installer cette mise à jour ?"
|
||||
"InstallMajorVersionUpdateMessage": "Cette mise à jour installera une nouvelle version majeure et pourrait ne pas être compatible avec votre système. Êtes-vous sûr de vouloir installer cette mise à jour ?",
|
||||
"LastSearched": "Dernière recherche",
|
||||
"Unknown": "Inconnu"
|
||||
}
|
||||
|
||||
@@ -561,7 +561,6 @@
|
||||
"MusicBrainzRecordingID": "MusicBrainz felvételi azonosító",
|
||||
"MusicBrainzReleaseID": "MusicBrainz kiadási azonosító",
|
||||
"MusicBrainzTrackID": "MusicBrainz zeneszám azonosítója",
|
||||
"MusicbrainzId": "MusicBrainz azonosító",
|
||||
"NETCore": ".NET Mag",
|
||||
"AnalyticsEnabledHelpTextWarning": "Újraindítás szükséges a hatálybalépéshez",
|
||||
"DeleteRootFolderMessageText": "Biztosan törli a(z) \"{name}\" gyökérmappát?",
|
||||
@@ -1085,5 +1084,6 @@
|
||||
"OnLatestVersion": "A {appName} legújabb verziója már telepítva van",
|
||||
"PreviouslyInstalled": "Korábban telepítve",
|
||||
"Script": "Szkript",
|
||||
"UpdateAppDirectlyLoadError": "Nem lehetséges közvetlenül frissíteni a {appName}-t"
|
||||
"UpdateAppDirectlyLoadError": "Nem lehetséges közvetlenül frissíteni a {appName}-t",
|
||||
"Unknown": "Ismeretlen"
|
||||
}
|
||||
|
||||
@@ -725,7 +725,7 @@
|
||||
"AppUpdated": "{appName} Aggiornato",
|
||||
"AllResultsAreHiddenByTheAppliedFilter": "Tutti i risultati sono nascosti dal filtro applicato",
|
||||
"AutoRedownloadFailed": "Download fallito",
|
||||
"AddListExclusion": "Aggiungi Lista esclusioni",
|
||||
"AddListExclusion": "Aggiungi elenco esclusioni",
|
||||
"Location": "Posizione",
|
||||
"ListsSettingsSummary": "Liste",
|
||||
"RecentChanges": "Cambiamenti Recenti",
|
||||
@@ -858,7 +858,6 @@
|
||||
"EditSelectedIndexers": "Modifica Indicizzatori Selezionati",
|
||||
"IsExpandedHideFileInfo": "Nascondi info file",
|
||||
"LogSQL": "Log SQL",
|
||||
"MusicbrainzId": "ID MusicBrainz",
|
||||
"MonitoredAuthorIsUnmonitored": "Autore non monitorato",
|
||||
"Monitoring": "Monitorando",
|
||||
"BookProgressBarText": "{bookCount} / {totalBookCount} (File: {bookFileCount})",
|
||||
@@ -911,5 +910,8 @@
|
||||
"OnLatestVersion": "L'ultima versione di {appName} è già installata",
|
||||
"PreviouslyInstalled": "Precedentemente Installato",
|
||||
"Script": "Script",
|
||||
"UpdateAppDirectlyLoadError": "Impossibile aggiornare {appName} direttamente,"
|
||||
"UpdateAppDirectlyLoadError": "Impossibile aggiornare {appName} direttamente,",
|
||||
"AutoRedownloadFailedFromInteractiveSearch": "Riesecuzione del download non riuscita dalla ricerca interattiva",
|
||||
"AutoRedownloadFailedFromInteractiveSearchHelpText": "Cerca automaticamente e tenta di scaricare una versione diversa quando il rilascio non riuscito è stato acquisito dalla ricerca interattiva",
|
||||
"Unknown": "Sconosciuto"
|
||||
}
|
||||
|
||||
@@ -28,9 +28,9 @@
|
||||
"MinimumAge": "최소 연령",
|
||||
"TimeFormat": "시간 형식",
|
||||
"Title": "표제",
|
||||
"TorrentDelay": "급류 지연",
|
||||
"TorrentDelayHelpText": "급류를 잡기 전에 대기하는 데 몇 분이 걸립니다.",
|
||||
"Torrents": "급류",
|
||||
"TorrentDelay": "토렌트 지연",
|
||||
"TorrentDelayHelpText": "토렌트를 잡기 전에 대기까지 소요되는 지연 (분)",
|
||||
"Torrents": "토렌트",
|
||||
"TotalFileSize": "총 파일 크기",
|
||||
"UILanguage": "UI 언어",
|
||||
"UILanguageHelpText": "{appName}가 UI에 사용할 언어",
|
||||
@@ -639,5 +639,146 @@
|
||||
"DockerUpdater": "Docker 컨테이너를 업데이트하여 업데이트를 받으십시오.",
|
||||
"ExternalUpdater": "{appName}는 외부 업데이트 메커니즘을 사용하도록 구성됩니다.",
|
||||
"OnLatestVersion": "최신 버전의 {appName}가 이미 설치되어 있습니다.",
|
||||
"UpdateAppDirectlyLoadError": "{appName}를 직접 업데이트 할 수 없습니다."
|
||||
"UpdateAppDirectlyLoadError": "{appName}를 직접 업데이트 할 수 없습니다.",
|
||||
"ApiKeyValidationHealthCheckMessage": "API 키를 {length}자 이상으로 업데이트하세요. 설정 또는 구성 파일을 통해 이 작업을 수행할 수 있습니다.",
|
||||
"AppUpdated": "{appName} 업데이트",
|
||||
"AppUpdatedVersion": "{appName}이 버전 `{version}`으로 업데이트되었습니다. 최신 변경 사항을 받으려면 {appName}을 다시 로드해야 합니다",
|
||||
"WouldYouLikeToRestoreBackup": "'{name}' 백업을 복원하시겠습니까?",
|
||||
"UseSSL": "SSL 사용",
|
||||
"AutomaticAdd": "자동 추가",
|
||||
"BlocklistAndSearch": "차단 목록 및 검색",
|
||||
"BlocklistAndSearchHint": "차단 목록에 추가한 후 대체 항목 검색 시작",
|
||||
"BlocklistAndSearchMultipleHint": "차단 목록에 추가한 후 대체 항목 검색 시작",
|
||||
"RemoveCompletedDownloads": "완료된 다운로드 제거",
|
||||
"DeleteCondition": "조건 삭제",
|
||||
"AutoRedownloadFailedFromInteractiveSearch": "상호작용 검색에서 재다운로드를 실패함",
|
||||
"CustomFormatsSettingsTriggerInfo": "사용자 정의 형식은 선택한 다양한 조건 유형 중 하나 이상과 일치할 경우 출시 또는 파일에 적용됩니다.",
|
||||
"DoNotBlocklistHint": "차단 목록에 추가하지 않고 제거",
|
||||
"ResetDefinitions": "정의 초기화",
|
||||
"Loading": "로딩중",
|
||||
"NoCutoffUnmetItems": "조건 미충족 항목 없음",
|
||||
"AuthenticationRequiredWarning": "인증 없이 원격 액세스를 방지하기 위해 {appName}은(는) 이제 인증을 활성화해야 합니다. 선택적으로 로컬 주소에서 인증을 비활성화할 수 있습니다.",
|
||||
"DeleteRemotePathMappingMessageText": "정말로 이 원격 경로 매핑을 삭제하시겠습니까?",
|
||||
"ApplyChanges": "변경 사항 적용",
|
||||
"Label": "라벨",
|
||||
"SkipRedownload": "재다운로드 건너뛰기",
|
||||
"Duration": "기간",
|
||||
"ReplaceWithSpaceDash": "공백 대시로 바꾸기",
|
||||
"ReplaceWithSpaceDashSpace": "공백 대시 공백으로 바꾸기",
|
||||
"Started": "시작됨",
|
||||
"DeleteSelected": "선택된 것을 삭제",
|
||||
"AuthenticationRequiredHelpText": "필수 인증을 요청하는 변경 사항. 위험을 이해하지 못한다면 변경하지 마세요.",
|
||||
"Required": "필수",
|
||||
"ClickToChangeReleaseGroup": "출시 그룹을 변경하려면 클릭",
|
||||
"ConnectionSettingsUrlBaseHelpText": "{connectionName} url에 {url}와(과) 같은 접두사를 추가합니다",
|
||||
"DeleteImportList": "가져오기 목록 삭제",
|
||||
"ColonReplacement": "콜론 바꾸기",
|
||||
"RemoveQueueItemRemovalMethodHelpTextWarning": "'다운로드 클라이언트에서 제거'를 선택하면 다운로드 및 파일이 다운로드 클라이언트에서 제거됩니다.",
|
||||
"RemoveFailed": "제거 실패",
|
||||
"ResetTitles": "제목 초기화",
|
||||
"UserAgentProvidedByTheAppThatCalledTheAPI": "API를 호출한 앱에서 제공하는 사용자 에이전트",
|
||||
"ApplicationURL": "애플리케이션 URL",
|
||||
"ApplicationUrlHelpText": "이 애플리케이션의 외부 URL - http(s)://, port 및 URL 기반 포함",
|
||||
"Author": "저작자",
|
||||
"ClickToChangeIndexerFlags": "인덱서 플래그를 변경하려면 클릭",
|
||||
"NotificationsPlexSettingsAuthToken": "인증 토큰",
|
||||
"SelectIndexerFlags": "인덱서 플래그 선택",
|
||||
"ThereWasAnErrorLoadingThisItem": "이 항목을 로드하는 중에 오류가 발생했습니다",
|
||||
"SmartReplace": "지능형 바꾸기",
|
||||
"AutomaticUpdatesDisabledDocker": "Docker 업데이트 메커니즘을 사용할 때는 자동 업데이트가 직접 지원되지 않습니다. {appName} 외부에서 컨테이너 이미지를 업데이트하거나 스크립트를 사용해야 합니다",
|
||||
"BlocklistOnly": "차단 목록만",
|
||||
"BlocklistOnlyHint": "대체 항목을 검색하지 않고 차단 목록에 추가",
|
||||
"BypassIfHighestQuality": "최고 품질일 경우 무시",
|
||||
"ChangeCategory": "카테고리 변경",
|
||||
"ChangeCategoryMultipleHint": "다운로드 클라이언트에서 다운로드를 '가져오기 이후 카테고리'로 변경",
|
||||
"ChownGroup": "chown 그룹",
|
||||
"CloneCondition": "조건 복제",
|
||||
"IndexerIdHelpText": "프로필이 적용되는 인덱서를 지정하세요",
|
||||
"MinimumCustomFormatScoreHelpText": "선호하는 프로토콜의 지연을 우회하는 데 필요한 최소 사용자 정의 형식 점수",
|
||||
"ReplaceWithDash": "대시로 바꾸기",
|
||||
"DownloadClientQbittorrentSettingsContentLayout": "콘텐츠 레이아웃",
|
||||
"CustomFormatsSpecificationFlag": "국기",
|
||||
"Database": "데이터베이스",
|
||||
"DoNotBlocklist": "차단 목록에 추가하지 않음",
|
||||
"DownloadClientDelugeSettingsDirectory": "다운로드 디렉토리",
|
||||
"DownloadClientDelugeSettingsDirectoryCompleted": "완료 후 이동할 디렉토리",
|
||||
"DownloadClientDelugeSettingsDirectoryCompletedHelpText": "완료된 다운로드를 이동할 선택적 위치. 기본 Deluge 위치를 사용하려면 비워두세요",
|
||||
"DownloadClientDelugeSettingsDirectoryHelpText": "다운로드를 이동할 선택적 위치. 기본 Deluge 위치를 사용하려면 비워두세요",
|
||||
"External": "외부",
|
||||
"Install": "설치",
|
||||
"IsShowingMonitoredUnmonitorSelected": "선택 항목 모니터링 해제",
|
||||
"Large": "크게",
|
||||
"RemoveCompleted": "제거 완료",
|
||||
"RemoveDownloadsAlert": "제거 설정은 위 표의 개별 다운로드 클라이언트 설정으로 이동되었습니다.",
|
||||
"RemoveQueueItem": "제거 - {sourceTitle}",
|
||||
"RemoveQueueItemRemovalMethod": "제거 방식",
|
||||
"RemoveQueueItemsRemovalMethodHelpTextWarning": "'다운로드 클라이언트에서 제거'를 선택하면 다운로드 및 파일이 다운로드 클라이언트에서 제거됩니다.",
|
||||
"RemoveSelectedItem": "선택한 항목 제거",
|
||||
"RemoveSelectedItems": "선택한 항목 제거",
|
||||
"ResetQualityDefinitions": "품질 정의 초기화",
|
||||
"Script": "스크립트",
|
||||
"SelectReleaseGroup": "출시 그룹 선택",
|
||||
"SizeLimit": "크기 제한",
|
||||
"Theme": "테마",
|
||||
"WhatsNew": "새로운 소식?",
|
||||
"AuthenticationMethod": "인증 방식",
|
||||
"AuthenticationMethodHelpTextWarning": "인증 방식을 선택해주세요",
|
||||
"AuthenticationRequired": "인증 필수",
|
||||
"AuthenticationRequiredPasswordConfirmationHelpTextWarning": "새 비밀번호 확인",
|
||||
"AuthenticationRequiredPasswordHelpTextWarning": "새 비밀번호를 입력하세요",
|
||||
"AuthenticationRequiredUsernameHelpTextWarning": "새 사용자이름을 입력하세요",
|
||||
"AutoRedownloadFailedFromInteractiveSearchHelpText": "대화형 검색에서 실패한 출시가 잡혔을 때 다른 출시를 자동으로 검색하여 다운로드 시도",
|
||||
"BlocklistMultipleOnlyHint": "대체 항목을 검색하지 않고 차단 목록에 추가",
|
||||
"ChangeCategoryHint": "다운로드 클라이언트에서 다운로드를 '가져오기 이후 카테고리'로 변경",
|
||||
"DeleteSelectedImportLists": "가져오기 목록 삭제",
|
||||
"NoResultsFound": "결과를 찾을 수 없습니다",
|
||||
"PasswordConfirmation": "비밀번호 확인",
|
||||
"Rejections": "거부",
|
||||
"ReleaseProfiles": "출시 프로필",
|
||||
"RemoveFailedDownloads": "실패한 다운로드 제거",
|
||||
"RemoveFromDownloadClientHint": "다운로드 클라이언트에서 다운로드 및 파일을 제거합니다",
|
||||
"RemoveMultipleFromDownloadClientHint": "다운로드 클라이언트에서 다운로드 및 파일을 제거합니다",
|
||||
"ResetDefinitionTitlesHelpText": "정의 제목과 값을 초기화하세요",
|
||||
"ResetQualityDefinitionsMessageText": "품질 정의를 초기화하시겠습니까?",
|
||||
"SetIndexerFlags": "인덱서 플래그 설정",
|
||||
"ShownClickToHide": "표시됨, 숨기려면 클릭",
|
||||
"Small": "작게",
|
||||
"CustomFormatsSpecificationRegularExpression": "일반 표현",
|
||||
"CustomFormatsSpecificationRegularExpressionHelpText": "사용자 정의 형식 정규표현식은 대소문자를 구분하지 않습니다",
|
||||
"DeleteRootFolder": "루트 폴더 삭제",
|
||||
"WriteTagsNo": "절대",
|
||||
"BypassIfAboveCustomFormatScoreHelpText": "구성된 최소 사용자 정의 형식 점수보다 출시 점수가 높을 경우 무시를 활성화합니다",
|
||||
"DashOrSpaceDashDependingOnName": "이름에 따라 대시 또는 띄어쓰고 대시",
|
||||
"BypassIfAboveCustomFormatScore": "사용자 정의 형식 점수보다 높으면 무시",
|
||||
"ThemeHelpText": "애플리케이션 UI 테마 변경, '자동' 테마는 OS 테마를 사용하여 라이트 또는 다크 모드를 설정합니다. Theme.Park에서 영감을 받음",
|
||||
"ThereWasAnErrorLoadingThisPage": "이 페이지를 로드하는 중ㅇ 오류가 발생했습니다",
|
||||
"WhySearchesCouldBeFailing": "검색이 실패하는 이유를 알아보려면 여기를 클릭하세요",
|
||||
"AllExpandedExpandAll": "모두 펼치기",
|
||||
"RootFolderPathHelpText": "루트 폴더 목록 항목이 다음에 추가됩니다:",
|
||||
"AllExpandedCollapseAll": "모두 접기",
|
||||
"IsShowingMonitoredMonitorSelected": "선택 모니터링 설정",
|
||||
"NotificationsSettingsUpdateMapPathsToHelpText": "{serviceName} 경로는 {serviceName}이 라이브러리 경로 위치를 {appName}와 다르게 볼 때 시리즈 경로를 수정하는 데 사용됨 (라이브러리 업데이트 필요)",
|
||||
"NotificationsSettingsUpdateMapPathsFromHelpText": "{appName} 경로는 {serviceName}이 라이브러리 경로 위치를 {appName}와 다르게 볼 때 시리즈 경로를 수정하는 데 사용됨 (라이브러리 업데이트 필요)",
|
||||
"InvalidUILanguage": "UI가 잘못된 언어로 설정되어 있습니다, 수정하고 설정을 저장하세요",
|
||||
"IndexerSettingsSeedRatio": "시드 비율",
|
||||
"EnabledHelpText": "출시 프로필을 활성화하려면 체크하세요",
|
||||
"ErrorLoadingContent": "이 콘텐트를 로드하는 중 오류가 발생했습니다",
|
||||
"NotificationsSettingsUpdateMapPathsFrom": "다음 위치부터 경로 매핑하기",
|
||||
"Unknown": "알 수 없음",
|
||||
"Negated": "부정",
|
||||
"NoDownloadClientsFound": "다운로드 클라이언트를 찾을 수 없음",
|
||||
"DownloadClientQbittorrentSettingsContentLayoutHelpText": "qBittorrent의 구성된 콘텐츠 레이아웃을 사용할지, 토런트의 원래 레이아웃을 사용할지, 항상 하위 폴더를 생성할지(qBittorrent 4.3.2+)",
|
||||
"FailedToFetchSettings": "설정을 가져오는데 실패함",
|
||||
"FailedToFetchUpdates": "업데이트를 가져오는데 실패함",
|
||||
"IndexerDownloadClientHelpText": "이 인덱서에서 가져온 것을 가져오는 데 사용되는 다운로드 클라이언트를 지정하세요",
|
||||
"IndexerSettingsSeedRatioHelpText": "토렌드가 멈추기 전에 도달해야 하는 비율, 비어 있을 경우 다운로드 클라이언트의 기본값을 사용합니다. 비율은 최소 1.0이어야 하며 인덱서 규칙을 따라야 합니다",
|
||||
"IndexerSettingsSeedTimeHelpText": "토렌드가 중지되기 전에 시드되어야 하는 시간, 비어 있을 경우 다운로드 클라이언트의 기본값을 사용합니다",
|
||||
"Monitoring": "모니터링 중",
|
||||
"NoEventsFound": "이벤트가 없음",
|
||||
"Other": "기타",
|
||||
"IgnoreDownloadHint": "{appName}가 이 다운로드를 더 이상 처리하지 못하도록 합니다",
|
||||
"NotificationsSettingsUpdateMapPathsTo": "지도 경로",
|
||||
"Series": "시리즈",
|
||||
"IgnoreDownloadsHint": "{appName}가 이러한 다운로드를 더 이상 처리하지 않도록 중지합니다",
|
||||
"InstallMajorVersionUpdateMessageLink": "상세 내용은 [{domain}]({url})을 확인하세요."
|
||||
}
|
||||
|
||||
@@ -202,5 +202,9 @@
|
||||
"Reason": "Sesong",
|
||||
"Clone": "Lukk",
|
||||
"AptUpdater": "Bruk apt til å installere oppdateringen",
|
||||
"BuiltIn": "Bygget inn"
|
||||
"BuiltIn": "Bygget inn",
|
||||
"FailedLoadingSearchResults": "Kunne ikke laste søkeresultat, vennligst prøv igjen.",
|
||||
"IgnoredPlaceHolder": "Legg til ny begrensning",
|
||||
"RequiredPlaceHolder": "Legg til ny begrensning",
|
||||
"UnableToAddANewRemotePathMappingPleaseTryAgain": "Kunne ikke legge til ny ekstern stimapping, vennligst prøv igjen."
|
||||
}
|
||||
|
||||
@@ -584,7 +584,6 @@
|
||||
"MusicBrainzBookID": "ID do livro no MusicBrainz",
|
||||
"MusicBrainzRecordingID": "ID da gravação no MusicBrainz",
|
||||
"MusicBrainzTrackID": "ID da faixa no MusicBrainz",
|
||||
"MusicbrainzId": "ID do MusicBrainz",
|
||||
"NETCore": ".NET Core",
|
||||
"LogSQL": "Registar SQL",
|
||||
"LogSqlHelpText": "Registar todas as consultas de SQL do {appName}",
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"Monitored": "Monitorado",
|
||||
"URLBase": "URL base",
|
||||
"UnableToAddANewDownloadClientPleaseTryAgain": "Não foi possível adicionar um novo cliente de download. Tente novamente.",
|
||||
"UnableToAddANewImportListExclusionPleaseTryAgain": "Não foi possível adicionar uma nova exclusão da lista de importação. Tente novamente.",
|
||||
"UnableToAddANewImportListExclusionPleaseTryAgain": "Não foi possível adicionar uma nova exclusão à lista de importação. Tente novamente.",
|
||||
"UnableToAddANewIndexerPleaseTryAgain": "Não foi possível adicionar um novo indexador. Tente novamente.",
|
||||
"UnableToAddANewListPleaseTryAgain": "Não foi possível adicionar uma nova lista. Tente novamente.",
|
||||
"UnableToAddANewMetadataProfilePleaseTryAgain": "Não foi possível adicionar um novo perfil de metadados, tente novamente.",
|
||||
@@ -25,20 +25,20 @@
|
||||
"AlreadyInYourLibrary": "Já está na sua biblioteca",
|
||||
"AlternateTitles": "Títulos alternativos",
|
||||
"Analytics": "Análises",
|
||||
"AnalyticsEnabledHelpText": "Envie informações anônimas de uso e erro para os servidores do Readarr. Isso inclui informações sobre seu navegador, quais páginas da interface Web do Readarr você usa, relatórios de erros, e a versão do sistema operacional e do tempo de execução. Usaremos essas informações para priorizar recursos e correções de bugs.",
|
||||
"AnalyticsEnabledHelpText": "Envie informações anônimas de uso e erro para os servidores do Readarr. Isso inclui informações sobre seu navegador, quais páginas da interface Web do Readarr você usa, relatórios de erros, a versão do sistema operacional e do tempo de execução. Usaremos essas informações para priorizar recursos e correções de bugs.",
|
||||
"AppDataDirectory": "Diretório AppData",
|
||||
"ApplyTags": "Aplicar Tags",
|
||||
"ApplyTags": "Aplicar etiquetas",
|
||||
"Authentication": "Autenticação",
|
||||
"AuthenticationMethodHelpText": "Exigir Nome de Usuário e Senha para acessar {appName}",
|
||||
"AuthenticationMethodHelpText": "Exigir nome de usuário e senha para acessar o {appName}",
|
||||
"AuthorClickToChangeBook": "Clique para alterar o livro",
|
||||
"AutoRedownloadFailedHelpText": "Procurar e tentar baixar automaticamente uma versão diferente",
|
||||
"AutoRedownloadFailedHelpText": "Procurar e tentar baixar automaticamente um lançamento diferente",
|
||||
"AutoUnmonitorPreviouslyDownloadedBooksHelpText": "Livros excluídos do disco deixam de ser monitorados no Readarr automaticamente",
|
||||
"Automatic": "Automático",
|
||||
"BackupFolderHelpText": "Os caminhos relativos estarão no diretório AppData do Readarr",
|
||||
"BackupNow": "Fazer backup agora",
|
||||
"BackupRetentionHelpText": "Backups automáticos anteriores ao período de retenção serão limpos automaticamente",
|
||||
"BackupRetentionHelpText": "Backups automáticos anteriores ao período de retenção serão excluídos automaticamente",
|
||||
"Backups": "Backups",
|
||||
"BindAddress": "Fixar endereço",
|
||||
"BindAddress": "Vincular endereço",
|
||||
"BindAddressHelpText": "Endereço IP válido, localhost ou '*' para todas as interfaces",
|
||||
"BindAddressHelpTextWarning": "Requer reiniciar para ter efeito",
|
||||
"BookIsDownloading": "O livro está baixando",
|
||||
@@ -75,14 +75,14 @@
|
||||
"Cancel": "Cancelar",
|
||||
"CancelPendingTask": "Tem certeza que deseja cancelar esta tarefa pendente?",
|
||||
"CertificateValidation": "Validação de certificado",
|
||||
"CertificateValidationHelpText": "Altere a rigidez da validação da certificação HTTPS. Não mude a menos que você entenda os riscos.",
|
||||
"CertificateValidationHelpText": "Alterar a rigidez da validação da certificação HTTPS. Não mude a menos que você entenda os riscos.",
|
||||
"ChangeFileDate": "Alterar data do arquivo",
|
||||
"ChangeHasNotBeenSavedYet": "Mudar o que não foi salvo ainda",
|
||||
"ChmodFolder": "Fazer chmod de pasta",
|
||||
"ChmodFolder": "Fazer chmod na pasta",
|
||||
"ChmodFolderHelpText": "Octal, aplicado durante a importação/renomeação de pastas e arquivos de mídia (sem bits de execução)",
|
||||
"ChmodFolderHelpTextWarning": "Isso só funciona se o usuário que está executando o Readarr for o proprietário do arquivo. É melhor garantir que o cliente de download defina as permissões corretamente.",
|
||||
"ChmodFolderHelpTextWarning": "Isso só funciona se o usuário que executa o Readarr for o proprietário do arquivo. É melhor garantir que o cliente de download defina as permissões corretamente.",
|
||||
"ChownGroupHelpText": "Nome do grupo ou gid. Use gid para sistemas de arquivos remotos.",
|
||||
"ChownGroupHelpTextWarning": "Isso só funciona se o usuário que está executando o Readarr for o proprietário do arquivo. É melhor garantir que o cliente de download use o mesmo grupo que o Readarr.",
|
||||
"ChownGroupHelpTextWarning": "Isso só funciona se o usuário que executa o Readarr for o proprietário do arquivo. É melhor garantir que o cliente de download use o mesmo grupo que o Readarr.",
|
||||
"Clear": "Limpar",
|
||||
"ClickToChangeQuality": "Clique para alterar a qualidade",
|
||||
"ClientPriority": "Prioridade do cliente",
|
||||
@@ -98,14 +98,14 @@
|
||||
"CreateEmptyAuthorFoldersHelpText": "Criar pastas de autor ausente durante a verificação do disco",
|
||||
"CreateGroup": "Criar grupo",
|
||||
"CutoffHelpText": "Assim que esta qualidade for alcançada, o Readarr não baixará mais livros",
|
||||
"CutoffUnmet": "Corte Não Alcançado",
|
||||
"CutoffUnmet": "Limite não atingido",
|
||||
"DatabaseMigration": "Migração de banco de dados",
|
||||
"Dates": "Datas",
|
||||
"DelayProfile": "Perfil de atraso",
|
||||
"DelayProfiles": "Perfis de atraso",
|
||||
"DelayingDownloadUntilInterp": "Atrasando o download até {0} às {1}",
|
||||
"Delete": "Excluir",
|
||||
"DeleteBackup": "Excluir Backup",
|
||||
"DeleteBackup": "Excluir backup",
|
||||
"DeleteBackupMessageText": "Tem certeza de que deseja excluir o backup '{name}'?",
|
||||
"DeleteDelayProfile": "Excluir perfil de atraso",
|
||||
"DeleteDelayProfileMessageText": "Tem certeza de que deseja excluir este perfil de atraso?",
|
||||
@@ -123,12 +123,12 @@
|
||||
"DeleteNotificationMessageText": "Tem certeza de que deseja excluir a notificação '{name}'?",
|
||||
"DeleteQualityProfile": "Excluir perfil de qualidade",
|
||||
"DeleteQualityProfileMessageText": "Tem certeza de que deseja excluir o perfil de qualidade '{name}'?",
|
||||
"DeleteReleaseProfile": "Excluir Perfil de Lançamento",
|
||||
"DeleteReleaseProfileMessageText": "Tem certeza de que deseja excluir este Perfil de Lançamento?",
|
||||
"DeleteRootFolderMessageText": "Tem certeza de que deseja excluir a pasta raiz '{name}'?",
|
||||
"DeleteReleaseProfile": "Excluir perfil de lançamento",
|
||||
"DeleteReleaseProfileMessageText": "Tem certeza de que deseja excluir este perfil de lançamento?",
|
||||
"DeleteRootFolderMessageText": "Tem certeza de que deseja excluir a pasta raiz \"{name}\"?",
|
||||
"DeleteSelectedBookFiles": "Excluir arquivos do livro selecionado",
|
||||
"DeleteSelectedBookFilesMessageText": "Tem certeza de que deseja excluir os arquivos do livro selecionado?",
|
||||
"DeleteTag": "Excluir Etiqueta",
|
||||
"DeleteTag": "Excluir etiqueta",
|
||||
"DeleteTagMessageText": "Tem certeza de que deseja excluir a tag \"{0}\"?",
|
||||
"DestinationPath": "Caminho de destino",
|
||||
"DetailedProgressBarHelpText": "Mostrar texto na barra de progresso",
|
||||
@@ -149,7 +149,7 @@
|
||||
"FailedDownloadHandling": "Falha no gerenciamento de download",
|
||||
"FileDateHelpText": "Alterar a data do arquivo ao importar/verificar novamente",
|
||||
"FileManagement": "Gerenciamento de arquivo",
|
||||
"FileNames": "Nomes de arquivo",
|
||||
"FileNames": "Nomes de arquivos",
|
||||
"Filename": "Nome do arquivo",
|
||||
"Files": "Arquivos",
|
||||
"FirstDayOfWeek": "Primeiro dia da semana",
|
||||
@@ -167,7 +167,7 @@
|
||||
"IconForCutoffUnmet": "Ícone para limite não atendido",
|
||||
"IconTooltip": "Agendado",
|
||||
"IgnoredAddresses": "Endereços ignorados",
|
||||
"IgnoredHelpText": "O lançamento será rejeitado se contiver um ou mais destes termos (sem distinção entre maiúsculas e minúsculas)",
|
||||
"IgnoredHelpText": "O lançamento será rejeitado se contiver um ou mais destes termos (não diferencia maiúsculas e minúsculas)",
|
||||
"IgnoredPlaceHolder": "Adicionar nova restrição",
|
||||
"IllRestartLater": "Reiniciarei mais tarde",
|
||||
"ImportExtraFiles": "Importar arquivos adicionais",
|
||||
@@ -194,7 +194,7 @@
|
||||
"Local": "Local",
|
||||
"LogFiles": "Arquivos de registro",
|
||||
"LogLevel": "Nível de registro",
|
||||
"LogLevelvalueTraceTraceLoggingShouldOnlyBeEnabledTemporarily": "O registro em log deve ser habilitado apenas temporariamente",
|
||||
"LogLevelvalueTraceTraceLoggingShouldOnlyBeEnabledTemporarily": "O registro em log para rastreamento deve ser habilitado apenas temporariamente",
|
||||
"Logging": "Registro em log",
|
||||
"LongDateFormat": "Formato longo de data",
|
||||
"MIA": "Ausentes",
|
||||
@@ -203,7 +203,7 @@
|
||||
"MarkAsFailedMessageText": "Tem certeza que deseja marcar \"{0}\" como falhado?",
|
||||
"MaximumLimits": "Limites máximos",
|
||||
"MaximumSize": "Tamanho máximo",
|
||||
"MaximumSizeHelpText": "Tamanho máximo para um lançamento ser baixado, em MB. Defina como zero para definir como ilimitado.",
|
||||
"MaximumSizeHelpText": "Tamanho máximo, em MB, para obter um lançamento. Zero significa ilimitado.",
|
||||
"Mechanism": "Mecanismo",
|
||||
"MediaInfo": "Informações da mídia",
|
||||
"MediaManagementSettings": "Configurações de gerenciamento de mídia",
|
||||
@@ -292,7 +292,7 @@
|
||||
"RemoveFromQueue": "Remover da fila",
|
||||
"RemoveHelpTextWarning": "Isso removerá o download e o(s) arquivo(s) do cliente de download.",
|
||||
"RemoveSelected": "Remover Selecionado",
|
||||
"RemoveTagExistingTag": "Tag existente",
|
||||
"RemoveTagExistingTag": "Etiqueta existente",
|
||||
"RemoveTagRemovingTag": "Removendo tag",
|
||||
"RemovedFromTaskQueue": "Removido da Fila de Tarefas",
|
||||
"RenameBooksHelpText": "O Readarr usará o nome de arquivo existente se a renomeação estiver deshabilitada",
|
||||
@@ -333,7 +333,7 @@
|
||||
"SetPermissionsLinuxHelpTextWarning": "Se você não tiver certeza do que essas configurações fazem, não as altere.",
|
||||
"Settings": "Configurações",
|
||||
"ShortDateFormat": "Formato de Data Curta",
|
||||
"ShowCutoffUnmetIconHelpText": "Mostrar ícone para arquivos quando o limite não foi atingindo",
|
||||
"ShowCutoffUnmetIconHelpText": "Mostrar ícone para arquivos cujo limite não foi atingido",
|
||||
"ShowDateAdded": "Mostrar Data de Adição",
|
||||
"ShowMonitored": "Mostrar Monitorados",
|
||||
"ShowMonitoredHelpText": "Mostrar status monitorado sob o pôster",
|
||||
@@ -360,7 +360,7 @@
|
||||
"StartTypingOrSelectAPathBelow": "Comece a digitar ou selecione um caminho abaixo",
|
||||
"StartupDirectory": "Diretório de Inicialização",
|
||||
"Status": "Status",
|
||||
"StatusEndedEnded": "Terminado",
|
||||
"StatusEndedEnded": "Finalizado",
|
||||
"Style": "Estilo",
|
||||
"SuccessMyWorkIsDoneNoFilesToRename": "Êba, já terminei! Não há arquivos a renomear.",
|
||||
"SuccessMyWorkIsDoneNoFilesToRetag": "Êba, já terminei! Não há novas tags a adicionar a arquivos.",
|
||||
@@ -393,7 +393,7 @@
|
||||
"UnableToLoadDownloadClients": "Não foi possível carregar os clientes de download",
|
||||
"UnableToLoadGeneralSettings": "Não foi possível carregar as configurações gerais",
|
||||
"UnableToLoadHistory": "Não foi possível carregar o histórico.",
|
||||
"UnableToLoadImportListExclusions": "Não foi possível carregar Importar exclusões de lista",
|
||||
"UnableToLoadImportListExclusions": "Não foi possível carregar as exclusões da lista de importação",
|
||||
"UnableToLoadIndexerOptions": "Não foi possível carregar as opções do indexador",
|
||||
"UnableToLoadIndexers": "Não foi possível carregar os indexadores",
|
||||
"UnableToLoadLists": "Não foi possível carregar as listas",
|
||||
@@ -427,7 +427,7 @@
|
||||
"UsenetDelay": "Atraso da Usenet",
|
||||
"UsenetDelayHelpText": "Atraso em minutos para esperar antes de pegar um lançamento da Usenet",
|
||||
"Username": "Nome do usuário",
|
||||
"BranchUpdate": "Ramificação para atualizar o Readarr",
|
||||
"BranchUpdate": "Ramificação para atualizar o {appName}",
|
||||
"BranchUpdateMechanism": "Ramificação usada pelo mecanismo de atualização externo",
|
||||
"Version": "Versão",
|
||||
"WeekColumnHeader": "Cabeçalho da Coluna da Semana",
|
||||
@@ -451,7 +451,7 @@
|
||||
"TheBooksFilesWillBeDeleted": "Os arquivos do livro serão excluídos.",
|
||||
"TagsHelpText": "Aplica-se a autores com pelo menos uma tag correspondente. Deixe em branco para aplicar a todos os autores",
|
||||
"StatusEndedDeceased": "Falecido",
|
||||
"StatusEndedContinuing": "Continuação",
|
||||
"StatusEndedContinuing": "Continuando",
|
||||
"SslCertPasswordHelpTextWarning": "Requer reinício para ter efeito",
|
||||
"SpecificBook": "Livro específico",
|
||||
"SkipSecondarySeriesBooks": "Ignorar livros de série secundária",
|
||||
@@ -479,7 +479,7 @@
|
||||
"SearchForAllCutoffUnmetBooks": "Pesquisar todos os livros com Limite não atingido",
|
||||
"SearchBoxPlaceHolder": "Por ex. Guerra e Paz, goodreads:656, isbn:067003469X, asin:B00JCDK5ME",
|
||||
"SearchBook": "Pesquisar livro",
|
||||
"RootFolderPathHelpText": "Os itens da pasta raiz serão adicionados a",
|
||||
"RootFolderPathHelpText": "Os itens da lista da Pasta raiz serão adicionados a",
|
||||
"RescanAfterRefreshHelpText": "Verificar novamente a pasta de autor após atualizar o autor",
|
||||
"ReplaceIllegalCharactersHelpText": "Substituir caracteres ilegais. Se desmarcada, o Readarr irá removê-los",
|
||||
"RenameBooks": "Renomear livros",
|
||||
@@ -504,7 +504,6 @@
|
||||
"OnBookRetagHelpText": "Ao adicionar nova tag ao livro",
|
||||
"NoTagsHaveBeenAddedYet": "Você ainda não adicionou tags. Adicione tags para vincular autores a perfis de atraso, restrições ou notificações. Clique em {0} para saber mais sobre tags no Readarr.",
|
||||
"NETCore": ".NET Core",
|
||||
"MusicbrainzId": "ID do MusicBrainz",
|
||||
"MusicBrainzTrackID": "ID da faixa no MusicBrainz",
|
||||
"MusicBrainzReleaseID": "ID do lançamento no MusicBrainz",
|
||||
"MusicBrainzRecordingID": "ID da gravação no MusicBrainz",
|
||||
@@ -548,7 +547,7 @@
|
||||
"IsCalibreLibraryHelpText": "Usar o Servidor de Conteúdo do Calibre para gerenciar a biblioteca",
|
||||
"IndexerIdHelpText": "Especificar a qual indexador o perfil se aplica",
|
||||
"ImportLists": "Listas de importação",
|
||||
"ImportListSettings": "Configurações gerais de Importar listas",
|
||||
"ImportListSettings": "Configurações gerais de listas de importação",
|
||||
"ImportListExclusions": "Importar exclusões de lista",
|
||||
"ImportFailures": "Falhas na importação",
|
||||
"IgnoreDeletedBooks": "Ignorar livros excluídos",
|
||||
@@ -560,7 +559,7 @@
|
||||
"FutureDaysHelpText": "Próximos dias a exibir no feed do iCal",
|
||||
"FutureDays": "Próximos dias",
|
||||
"FutureBooks": "Próximos livros",
|
||||
"ForeignIdHelpText": "A ID do Musicbrainz para o autor/livro a excluir",
|
||||
"ForeignIdHelpText": "A identificação estrangeira do autor/livro a ser excluída",
|
||||
"FirstBook": "Primeiro livro",
|
||||
"FilterSentryEventsHelpText": "Filtrar eventos de erro de usuário conhecidos para que não sejam enviados para análise",
|
||||
"FilterPlaceHolder": "Filtrar Livro",
|
||||
@@ -571,7 +570,7 @@
|
||||
"EntityName": "Nome da entidade",
|
||||
"EndedAllBooksDownloaded": "Terminado (todos os livros baixados)",
|
||||
"EnabledHelpText": "Marque para habilitar o perfil de lançamento",
|
||||
"EnableProfile": "Habilitar Perfil",
|
||||
"EnableProfile": "Habilitar perfil",
|
||||
"EnableAutomaticAddHelpText": "Adicionar autor/livros ao Readarr ao sincronizar pela interface ou pelo Readarr",
|
||||
"EmbedMetadataInBookFiles": "Incorporar metadados nos arquivos do livro",
|
||||
"EmbedMetadataHelpText": "Pedir ao Calibre para gravar metadados no arquivo do livro",
|
||||
@@ -682,9 +681,9 @@
|
||||
"TooManyBooks": "Livros ausentes ou muitos? Modifique ou crie um novo",
|
||||
"BlocklistRelease": "Lançamento na lista de bloqueio",
|
||||
"NoHistoryBlocklist": "Não há lista de bloqueio no histórico",
|
||||
"Blocklist": "Lista de Bloqueio",
|
||||
"Blocklist": "Lista de bloqueio",
|
||||
"RemoveFromBlocklist": "Remover da lista de bloqueio",
|
||||
"UnableToLoadBlocklist": "Incapaz de carregar a lista de bloqueio",
|
||||
"UnableToLoadBlocklist": "Não foi possível carregar a lista de bloqueio",
|
||||
"ReleaseBranchCheckOfficialBranchMessage": "Ramo {0} não é um ramo válido de lançamentos do Readarr, você não irá receber atualizações",
|
||||
"Time": "Tempo",
|
||||
"IgnoredMetaHelpText": "Livros irão ser ignorados se eles conterem um ou mais termos (não diferenciando maiúscula de minuscula)",
|
||||
@@ -708,7 +707,7 @@
|
||||
"CalibreContentServerText": "Usando um Servidor de Conteúdo do Calibre (não o Calibre Web) permite ao Readarr adicione livros a sua biblioteca Calibre e ativar conversões entre formatos",
|
||||
"AddedAuthorSettings": "Adicionado Configurações de Autor",
|
||||
"MonitoringOptionsHelpText": "Quais livros devem ser monitorados após o autor ser adicionado (ajuste único)",
|
||||
"MonitorNewItems": "Monitorar Novos Livros",
|
||||
"MonitorNewItems": "Monitorar novos livros",
|
||||
"MonitorNewItemsHelpText": "Quais novos livros devem ser monitorados",
|
||||
"CalibreNotCalibreWeb": "Readarr pode interagir com o servidor de conteúdo do Calibre. Ele não pode usar o Caliber-Web, que é um software não relacionado.",
|
||||
"ImportListSpecificSettings": "Importar configurações específicas da lista",
|
||||
@@ -734,9 +733,9 @@
|
||||
"OnReleaseImport": "Ao Importar Lançamento",
|
||||
"OnRename": "Ao Renomear",
|
||||
"OnUpgrade": "Ao Atualizar",
|
||||
"AppDataLocationHealthCheckMessage": "A atualização não será possível para evitar a exclusão de AppData na atualização",
|
||||
"IndexerSearchCheckNoInteractiveMessage": "Nenhum indexador disponível com a Pesquisa Interativa habilitada, o Readarr não dará nenhum resultado para pesquisa interativa",
|
||||
"ConnectSettingsSummary": "Notificações, conexões com servidores/tocadores de mídia e scripts personalizados",
|
||||
"AppDataLocationHealthCheckMessage": "Não será possível atualizar para evitar a exclusão de AppData na Atualização",
|
||||
"IndexerSearchCheckNoInteractiveMessage": "Nenhum indexador disponível com a Pesquisa interativa habilitada, o Readarr não fornecerá resultados de pesquisa interativas",
|
||||
"ConnectSettingsSummary": "Notificações, conexões com servidores/reprodutores de mídia e scripts personalizados",
|
||||
"DownloadClientStatusCheckAllClientMessage": "Todos os clientes de download estão indisponíveis devido a falhas",
|
||||
"DownloadClientsSettingsSummary": "Clientes de download, gerenciamento de download e mapeamentos de caminhos remotos",
|
||||
"Yesterday": "Ontem",
|
||||
@@ -760,18 +759,18 @@
|
||||
"GeneralSettingsSummary": "Porta, SSL, nome de usuário/senha, proxy, análises e atualizações",
|
||||
"HealthNoIssues": "Nenhum problema com sua configuração",
|
||||
"ImportListStatusCheckAllClientMessage": "Todas as listas estão indisponíveis devido a falhas",
|
||||
"IndexerRssHealthCheckNoAvailableIndexers": "Todos os indexadores compatíveis com rss estão temporariamente indisponíveis devido a erros recentes do indexador",
|
||||
"IndexerRssHealthCheckNoAvailableIndexers": "Todos os indexadores compatíveis com RSS estão temporariamente indisponíveis devido a erros recentes do indexador",
|
||||
"IndexerSearchCheckNoAvailableIndexersMessage": "Todos os indexadores com capacidade de pesquisa estão temporariamente indisponíveis devido a erros recentes do indexador",
|
||||
"ItsEasyToAddANewAuthorOrBookJustStartTypingTheNameOfTheItemYouWantToAdd": "É fácil adicionar um novo autor ou livro, basta começar a digitar o nome do item que deseja adicionar",
|
||||
"MetadataSettingsSummary": "Criar arquivos de metadados ao importar livros ou atualizar o autor",
|
||||
"ListsSettingsSummary": "Importar Listas",
|
||||
"ListsSettingsSummary": "Listas de importação",
|
||||
"ImportListStatusCheckSingleClientMessage": "Listas indisponíveis devido a falhas: {0}",
|
||||
"ImportMechanismHealthCheckMessage": "Habilitar Gerenciamento de Download Concluído",
|
||||
"IndexerJackettAll": "Indexadores usando o Jackett 'all' endpoint sem suporte: {0}",
|
||||
"ImportMechanismHealthCheckMessage": "Habilitar gerenciamento de download concluído",
|
||||
"IndexerJackettAll": "Indexadores que usam o ponto de extremidade \"all\" (tudo) incompatível do Jackett: {0}",
|
||||
"IndexerLongTermStatusCheckAllClientMessage": "Todos os indexadores estão indisponíveis devido a falhas por mais de 6 horas",
|
||||
"IndexerLongTermStatusCheckSingleClientMessage": "Indexadores indisponíveis devido a falhas por mais de 6 horas: {0}",
|
||||
"IndexerPriorityHelpText": "Prioridade do Indexador de 1 (Mais Alta) a 50 (Mais Baixa). Padrão: 25. Usado ao obter lançamentos como um desempate para lançamentos iguais, Readarr ainda usará todos os indexadores habilitados para sincronização e pesquisa de RSS.",
|
||||
"IndexerRssHealthCheckNoIndexers": "Nenhum indexador disponível com sincronização RSS habilitada, Readarr não pegará novos lançamentos automaticamente",
|
||||
"IndexerPriorityHelpText": "Prioridade do indexador, de 1 (mais alta) a 50 (mais baixa). Padrão: 25. Usado como um desempate ao obter lançamentos, o Readarr ainda usará todos os indexadores habilitados para sincronização RSS e pesquisa.",
|
||||
"IndexerRssHealthCheckNoIndexers": "Nenhum indexador disponível com a sincronização RSS habilitada, o Readarr não obterá novos lançamentos automaticamente",
|
||||
"IndexerSearchCheckNoAutomaticMessage": "Nenhum indexador disponível com a pesquisa automática habilitada, o Readarr não fornecerá nenhum resultado de pesquisa automática",
|
||||
"IndexersSettingsSummary": "Indexadores e restrições de lançamento",
|
||||
"IndexerStatusCheckAllClientMessage": "Todos os indexadores estão indisponíveis devido a falhas",
|
||||
@@ -863,19 +862,19 @@
|
||||
"ChooseImportMethod": "Escolha o método de importação",
|
||||
"ClickToChangeReleaseGroup": "Clique para alterar o grupo de lançamento",
|
||||
"BypassIfAboveCustomFormatScore": "Ignorar se estiver acima da pontuação do formato personalizado",
|
||||
"BypassIfAboveCustomFormatScoreHelpText": "Ativar ignorar quando a versão tiver uma pontuação maior que a pontuação mínima configurada do formato personalizado",
|
||||
"BypassIfAboveCustomFormatScoreHelpText": "Ignorar quando o lançamento tiver uma pontuação mais alta que a pontuação mínima configurada do formato personalizado",
|
||||
"BypassIfHighestQuality": "Ignorar se a qualidade é mais alta",
|
||||
"BypassIfHighestQualityHelpText": "Ignorar o atraso quando o lançamento tiver a qualidade habilitada mais alta no perfil de qualidade",
|
||||
"CustomFormatScore": "Pontuação do formato personalizado",
|
||||
"MinimumCustomFormatScore": "Pontuação mínima de formato personalizado",
|
||||
"MinimumCustomFormatScoreHelpText": "Pontuação mínima de formato personalizado necessária para ignorar o atraso do protocolo preferido",
|
||||
"MinimumCustomFormatScore": "Pontuação mínima do formato personalizado",
|
||||
"MinimumCustomFormatScoreHelpText": "Pontuação mínima do formato personalizado necessária para ignorar o atraso do protocolo preferido",
|
||||
"ApiKeyValidationHealthCheckMessage": "Atualize sua chave de API para ter pelo menos {0} caracteres. Você pode fazer isso através das configurações ou do arquivo de configuração",
|
||||
"DeleteFormat": "Excluir Formato",
|
||||
"DataFutureBooks": "Monitorar livros que ainda não foram lançados",
|
||||
"DeleteFormatMessageText": "Tem certeza de que deseja excluir a tag de formato '{0}'?",
|
||||
"IncludeCustomFormatWhenRenamingHelpText": "\"Incluir no formato de renomeação {Custom Formats}\"",
|
||||
"IndexerTagsHelpText": "Use este indexador apenas para autores com pelo menos uma tag correspondente. Deixe em branco para usar com todos os autores.",
|
||||
"MinFormatScoreHelpText": "Pontuação mínima de formato personalizado permitida para download",
|
||||
"MinFormatScoreHelpText": "Pontuação mínima do formato personalizado permitida para download",
|
||||
"RecycleBinUnableToWriteHealthCheck": "Não é possível gravar na pasta da lixeira configurada: {0}. Certifique-se de que este caminho exista e seja gravável pelo usuário executando o Readarr",
|
||||
"Clone": "Clonar",
|
||||
"CloneCustomFormat": "Clonar formato personalizado",
|
||||
@@ -889,7 +888,7 @@
|
||||
"ExportCustomFormat": "Exportar formato personalizado",
|
||||
"Formats": "Formatos",
|
||||
"Loading": "carregando",
|
||||
"NegateHelpText": "Se marcado, o formato personalizado não será aplicado se esta condição {0} corresponder.",
|
||||
"NegateHelpText": "Se marcado, o formato personalizado não será aplicado se a condição {0} corresponder.",
|
||||
"ThereWasAnErrorLoadingThisItem": "Ocorreu um erro ao carregar este item",
|
||||
"ThereWasAnErrorLoadingThisPage": "Ocorreu um erro ao carregar esta página",
|
||||
"UpgradesAllowed": "Atualizações Permitidas",
|
||||
@@ -915,7 +914,7 @@
|
||||
"ReplaceWithSpaceDashSpace": "Substituir com Espaço, Traço e Espaço",
|
||||
"DeleteRemotePathMapping": "Excluir mapeamento de caminho remoto",
|
||||
"BlocklistReleases": "Lançamentos na lista de bloqueio",
|
||||
"CloneCondition": "Clonar Condição",
|
||||
"CloneCondition": "Clonar condição",
|
||||
"DeleteConditionMessageText": "Tem certeza de que deseja excluir a condição '{name}'?",
|
||||
"DeleteRemotePathMappingMessageText": "Tem certeza de que deseja excluir este mapeamento de caminho remoto?",
|
||||
"DeleteCondition": "Excluir condição",
|
||||
@@ -928,7 +927,7 @@
|
||||
"Required": "Necessário",
|
||||
"ResetQualityDefinitions": "Redefinir definições de qualidade",
|
||||
"ResetQualityDefinitionsMessageText": "Tem certeza de que deseja redefinir as definições de qualidade?",
|
||||
"BlocklistReleaseHelpText": "Impede que o Readarr obtenha automaticamente esses arquivos novamente",
|
||||
"BlocklistReleaseHelpText": "Impede que o Readarr obtenha esses arquivos novamente de forma automática",
|
||||
"NoCutoffUnmetItems": "Nenhum item com limite não atingido",
|
||||
"NoEventsFound": "Não foram encontrados eventos",
|
||||
"NoMissingItems": "Nenhum item ausente",
|
||||
@@ -956,23 +955,23 @@
|
||||
"ManageImportLists": "Gerenciar listas de importação",
|
||||
"RemoveCompleted": "Remoção Concluída",
|
||||
"AutoAdd": "Adicionar automaticamente",
|
||||
"AutomaticAdd": "Adição Automática",
|
||||
"ApplyChanges": "Aplicar Mudanças",
|
||||
"ApplyTagsHelpTextAdd": "Adicionar: Adicione as tags à lista existente de tags",
|
||||
"ApplyTagsHelpTextRemove": "Remover: Remove as tags inseridas",
|
||||
"ApplyTagsHelpTextReplace": "Substituir: Substitua as tags pelas tags inseridas (não digite nenhuma tag para limpar todas as tags)",
|
||||
"ApplyTagsHelpTextHowToApplyDownloadClients": "Como aplicar tags aos clientes de download selecionados",
|
||||
"ApplyTagsHelpTextHowToApplyImportLists": "Como aplicar tags às listas de importação selecionadas",
|
||||
"ApplyTagsHelpTextHowToApplyIndexers": "Como aplicar tags aos indexadores selecionados",
|
||||
"AutomaticAdd": "Adição automática",
|
||||
"ApplyChanges": "Aplicar mudanças",
|
||||
"ApplyTagsHelpTextAdd": "Adicionar: adicione as etiquetas à lista existente de etiquetas",
|
||||
"ApplyTagsHelpTextRemove": "Remover: remove as etiquetas inseridas",
|
||||
"ApplyTagsHelpTextReplace": "Substituir: substitui as etiquetas atuais pelas inseridas (deixe em branco para limpar todas as etiquetas)",
|
||||
"ApplyTagsHelpTextHowToApplyDownloadClients": "Como aplicar etiquetas aos clientes de download selecionados",
|
||||
"ApplyTagsHelpTextHowToApplyImportLists": "Como aplicar etiquetas às listas de importação selecionadas",
|
||||
"ApplyTagsHelpTextHowToApplyIndexers": "Como aplicar etiquetas aos indexadores selecionados",
|
||||
"CountDownloadClientsSelected": "{selectedCount} cliente(s) de download selecionado(s)",
|
||||
"DeleteSelectedIndexersMessageText": "Tem certeza de que deseja excluir {count} indexadores selecionados?",
|
||||
"DeleteSelectedIndexersMessageText": "Tem certeza de que deseja excluir o(s) {count} indexador(es) selecionado(s)?",
|
||||
"DeleteSelectedDownloadClients": "Excluir cliente(s) de download",
|
||||
"DeleteSelectedDownloadClientsMessageText": "Tem certeza de que deseja excluir {count} cliente(s) de download selecionado(s)?",
|
||||
"DeleteSelectedDownloadClientsMessageText": "Tem certeza de que deseja excluir o(s) {count} cliente(s) de download selecionado(s)?",
|
||||
"DeleteSelectedImportLists": "Excluir lista(s) de importação",
|
||||
"DeleteSelectedImportListsMessageText": "Tem certeza de que deseja excluir {count} lista(s) de importação selecionada(s)?",
|
||||
"DeleteSelectedImportListsMessageText": "Tem certeza de que deseja excluir a(s) {count} lista(s) de importação selecionada(s)?",
|
||||
"DeleteSelectedIndexers": "Excluir indexador(es)",
|
||||
"DownloadClientTagHelpText": "Use este cliente de download apenas para autores com pelo menos uma tag correspondente. Deixe em branco para usar com todos os autores.",
|
||||
"ExistingTag": "Tag existente",
|
||||
"ExistingTag": "Etiqueta existente",
|
||||
"No": "Não",
|
||||
"RemoveCompletedDownloads": "Remover downloads concluídos",
|
||||
"RemovingTag": "Removendo a tag",
|
||||
@@ -981,7 +980,7 @@
|
||||
"Activity": "Atividade",
|
||||
"Bookshelf": "Prateleira",
|
||||
"Events": "Eventos",
|
||||
"FreeSpace": "Espaço Livre",
|
||||
"FreeSpace": "Espaço livre",
|
||||
"NextExecution": "Próxima Execução",
|
||||
"Small": "Pequeno",
|
||||
"TotalSpace": "Espaço Total",
|
||||
@@ -990,7 +989,7 @@
|
||||
"AddNew": "Adicionar Novo",
|
||||
"Backup": "Backup",
|
||||
"Large": "Grande",
|
||||
"LastDuration": "Última Duração",
|
||||
"LastDuration": "Última duração",
|
||||
"LastExecution": "Última Execução",
|
||||
"LastWriteTime": "Hora da Última Gravação",
|
||||
"Library": "Biblioteca",
|
||||
@@ -1002,10 +1001,10 @@
|
||||
"SomeResultsAreHiddenByTheAppliedFilter": "Alguns resultados estão ocultos pelo filtro aplicado",
|
||||
"NoResultsFound": "Nenhum resultado encontrado",
|
||||
"ConnectionLostReconnect": "{appName} tentará se conectar automaticamente ou você pode clicar em recarregar abaixo.",
|
||||
"AutomaticUpdatesDisabledDocker": "As atualizações automáticas não têm suporte direto ao usar o mecanismo de atualização do Docker. Você precisará atualizar a imagem do contêiner fora de {appName} ou usar um script",
|
||||
"AutomaticUpdatesDisabledDocker": "As atualizações automáticas não têm suporte direto ao usar o mecanismo de atualização do Docker. Você precisará atualizar a imagem do contêiner fora do {appName} ou usar um script",
|
||||
"WouldYouLikeToRestoreBackup": "Gostaria de restaurar o backup '{name}'?",
|
||||
"AppUpdated": "{appName} atualizado",
|
||||
"AppUpdatedVersion": "{appName} foi atualizado para a versão `{version}`. Para obter as alterações mais recentes, você precisará recarregar {appName}",
|
||||
"AppUpdatedVersion": "O {appName} foi atualizado para a versão `{version}`. Para obter as alterações mais recentes, recarregue o {appName}",
|
||||
"ConnectionLost": "Conexão perdida",
|
||||
"ConnectionLostToBackend": "{appName} perdeu a conexão com o backend e precisará ser recarregado para restaurar a funcionalidade.",
|
||||
"CountAuthorsSelected": "{selectedCount} autor(es) selecionado(s)",
|
||||
@@ -1016,16 +1015,16 @@
|
||||
"DownloadClientRemovesCompletedDownloadsHealthCheckMessage": "O cliente de download {0} está configurado para remover downloads concluídos. Isso pode resultar na remoção dos downloads do seu cliente antes que {1} possa importá-los.",
|
||||
"OnAuthorAdded": "Sobre o Autor Adicionado",
|
||||
"OnAuthorAddedHelpText": "Sobre o Autor Adicionado",
|
||||
"ExtraFileExtensionsHelpTextsExamples": "Exemplos: '.sub, .nfo' or 'sub,nfo'",
|
||||
"ExtraFileExtensionsHelpText": "Lista separada por vírgulas de arquivos extras para importar (.nfo será importado como .nfo-orig)",
|
||||
"ExtraFileExtensionsHelpTextsExamples": "Exemplos: \".sub, .nfo\" ou \"sub,nfo\"",
|
||||
"ExtraFileExtensionsHelpText": "Lista separada por vírgulas de arquivos adicionais a importar (.nfo será importado como .nfo-orig)",
|
||||
"DeleteSelected": "Excluir Selecionado",
|
||||
"DownloadClientQbittorrentSettingsContentLayout": "Layout de Conteúdo",
|
||||
"DownloadClientQbittorrentSettingsContentLayout": "Layout de conteúdo",
|
||||
"InvalidUILanguage": "Sua UI está definida com um idioma inválido, corrija-a e salve suas configurações",
|
||||
"DownloadClientQbittorrentSettingsContentLayoutHelpText": "Seja para usar o layout de conteúdo configurado do qBittorrent, o layout original do torrent ou sempre criar uma subpasta (qBittorrent 4.3.2+)",
|
||||
"DownloadClientQbittorrentSettingsContentLayoutHelpText": "Se devemos usar o layout de conteúdo configurado do qBittorrent, o layout original do torrent ou sempre criar uma subpasta (qBittorrent 4.3.2+)",
|
||||
"SourceTitle": "Título da Fonte",
|
||||
"AutoRedownloadFailed": "Falha no Novo Download",
|
||||
"AutoRedownloadFailedFromInteractiveSearch": "Falha no Novo Download da Pesquisa Interativa",
|
||||
"AutoRedownloadFailedFromInteractiveSearchHelpText": "Procure e tente baixar automaticamente uma versão diferente quando a versão com falha for obtida da pesquisa interativa",
|
||||
"AutoRedownloadFailed": "Falha no novo download",
|
||||
"AutoRedownloadFailedFromInteractiveSearch": "Falha no novo download usando a pesquisa interativa",
|
||||
"AutoRedownloadFailedFromInteractiveSearchHelpText": "Procurar e tentar baixar automaticamente um lançamento diferente quando for obtido um lançamento com falha na pesquisa interativa",
|
||||
"BlocklistAndSearchMultipleHint": "Iniciar pesquisas por substitutos após adicionar à lista de bloqueio",
|
||||
"BlocklistMultipleOnlyHint": "Adicionar à lista de bloqueio sem procurar por substitutos",
|
||||
"BlocklistOnly": "Apenas adicionar à lista de bloqueio",
|
||||
@@ -1060,7 +1059,7 @@
|
||||
"CustomFilter": "Filtro Personalizado",
|
||||
"LabelIsRequired": "Rótulo é requerido",
|
||||
"ConnectionSettingsUrlBaseHelpText": "Adiciona um prefixo ao URL {connectionName}, como {url}",
|
||||
"InteractiveSearchModalHeader": "Pesquisa Interativa",
|
||||
"InteractiveSearchModalHeader": "Pesquisa interativa",
|
||||
"DownloadClientDelugeSettingsDirectory": "Diretório de Download",
|
||||
"DownloadClientDelugeSettingsDirectoryCompleted": "Mover para o Diretório Quando Concluído",
|
||||
"DownloadClientDelugeSettingsDirectoryCompletedHelpText": "Local opcional para mover os downloads concluídos, deixe em branco para usar o local padrão do Deluge",
|
||||
@@ -1079,7 +1078,7 @@
|
||||
"Rejections": "Rejeições",
|
||||
"SelectIndexerFlags": "Selecionar Sinalizadores do Indexador",
|
||||
"SetIndexerFlags": "Definir Sinalizadores de Indexador",
|
||||
"IndexerFlags": "Sinalizadores do Indexador",
|
||||
"IndexerFlags": "Sinalizadores do indexador",
|
||||
"CustomFormatsSettingsTriggerInfo": "Um formato personalizado será aplicado a um lançamento ou arquivo quando corresponder a pelo menos um dos diferentes tipos de condição escolhidos.",
|
||||
"IndexerSettingsSeedTime": "Tempo de semeação",
|
||||
"IndexerSettingsSeedRatio": "Proporção de semeação",
|
||||
@@ -1096,11 +1095,11 @@
|
||||
"AuthenticationRequiredPasswordConfirmationHelpTextWarning": "Confirme a nova senha",
|
||||
"AuthenticationRequiredPasswordHelpTextWarning": "Digite uma nova senha",
|
||||
"AuthenticationRequiredUsernameHelpTextWarning": "Digite um novo nome de usuário",
|
||||
"AuthenticationRequiredWarning": "Para evitar o acesso remoto sem autenticação, {appName} agora exige que a autenticação esteja habilitada. Opcionalmente, você pode desabilitar a autenticação de endereços locais.",
|
||||
"AuthenticationRequiredWarning": "Para evitar o acesso remoto sem autenticação, o {appName} agora exige que a autenticação esteja habilitada. Opcionalmente, você pode desabilitar a autenticação para endereços locais.",
|
||||
"DisabledForLocalAddresses": "Desabilitado para endereços locais",
|
||||
"Enabled": "Habilitado",
|
||||
"External": "Externo",
|
||||
"ApiKey": "Chave API",
|
||||
"ApiKey": "Chave da API",
|
||||
"PasswordConfirmation": "Confirmação Da Senha",
|
||||
"AptUpdater": "Usar apt para instalar atualizações",
|
||||
"BuiltIn": "Embutido",
|
||||
@@ -1112,10 +1111,12 @@
|
||||
"Script": "Script",
|
||||
"UpdateAppDirectlyLoadError": "Incapaz de atualizar o {appName} diretamente,",
|
||||
"CurrentlyInstalled": "Atualmente instalado",
|
||||
"DockerUpdater": "Atualize o contêiner docker para receber a atualização",
|
||||
"DockerUpdater": "Atualize o contêiner do Docker para receber a atualização",
|
||||
"ExternalUpdater": "O {appName} está configurado para usar um mecanismo de atualização externo",
|
||||
"FailedToFetchSettings": "Falha ao buscar configurações",
|
||||
"FailedToFetchSettings": "Falha ao obter configurações",
|
||||
"FailedToFetchUpdates": "Falha ao buscar atualizações",
|
||||
"InstallMajorVersionUpdateMessage": "Esta atualização instalará uma nova versão principal e pode não ser compatível com o seu sistema. Tem certeza de que deseja instalar esta atualização?",
|
||||
"InstallMajorVersionUpdateMessageLink": "Verifique [{domain}]({url}) para obter mais informações."
|
||||
"InstallMajorVersionUpdateMessageLink": "Verifique [{domain}]({url}) para obter mais informações.",
|
||||
"LastSearched": "Última Pesquisa",
|
||||
"Unknown": "Desconhecido"
|
||||
}
|
||||
|
||||
@@ -671,5 +671,6 @@
|
||||
"InstallLatest": "Instalați cel mai recent",
|
||||
"OnLatestVersion": "Cea mai recentă versiune a {appName} este deja instalată",
|
||||
"Script": "Script",
|
||||
"UpdateAppDirectlyLoadError": "Imposibil de actualizat direct {appName},"
|
||||
"UpdateAppDirectlyLoadError": "Imposibil de actualizat direct {appName},",
|
||||
"Unknown": "Necunoscut"
|
||||
}
|
||||
|
||||
@@ -676,7 +676,7 @@
|
||||
"Medium": "Средний",
|
||||
"NotificationStatusAllClientHealthCheckMessage": "Все уведомления недоступны из-за ошибок",
|
||||
"TotalSpace": "Общее сводное место",
|
||||
"Ui": "Пользовательский интерфейс",
|
||||
"Ui": "Интерфейс",
|
||||
"Backup": "Резервное копирование",
|
||||
"Events": "События",
|
||||
"FreeSpace": "Свободное место",
|
||||
@@ -877,5 +877,10 @@
|
||||
"InstallMajorVersionUpdate": "Установить обновление",
|
||||
"InstallMajorVersionUpdateMessage": "Это обновление установит новую версию, которая может не поддерживаться вашей системой. Вы уверены, что хотите установить это обновление?",
|
||||
"InstallMajorVersionUpdateMessageLink": "Пожалуйста, проверьте [{domain}]({url}) для получения дополнительной информации.",
|
||||
"UpdateAppDirectlyLoadError": "Невозможно обновить {appName} напрямую,"
|
||||
"UpdateAppDirectlyLoadError": "Невозможно обновить {appName} напрямую,",
|
||||
"NoCutoffUnmetItems": "Нет элементов не достигших максимального качества",
|
||||
"DeleteSelected": "Удалить выбранные",
|
||||
"Unknown": "Неизвестный",
|
||||
"WhySearchesCouldBeFailing": "Нажмите здесь, чтобы найти причину ошибок писка",
|
||||
"LastSearched": "Искали недавно"
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user