Merge branch 'develop'

pull/570/head
sct 4 years ago
commit ac0f95b773

@ -0,0 +1,82 @@
{
"files": [
"README.md"
],
"imageSize": 100,
"commit": false,
"contributors": [
{
"login": "sct",
"name": "sct",
"avatar_url": "https://avatars1.githubusercontent.com/u/234213?v=4",
"profile": "https://sct.dev",
"contributions": [
"code",
"design",
"ideas"
]
},
{
"login": "azoitos",
"name": "Alex Zoitos",
"avatar_url": "https://avatars2.githubusercontent.com/u/26529049?v=4",
"profile": "https://github.com/azoitos",
"contributions": [
"code"
]
},
{
"login": "OwsleyJr",
"name": "Brandon Cohen",
"avatar_url": "https://avatars3.githubusercontent.com/u/8635678?v=4",
"profile": "https://github.com/OwsleyJr",
"contributions": [
"code",
"doc"
]
},
{
"login": "Ahreluth",
"name": "Ahreluth",
"avatar_url": "https://avatars2.githubusercontent.com/u/75682440?v=4",
"profile": "https://github.com/Ahreluth",
"contributions": [
"translation"
]
},
{
"login": "KovalevArtem",
"name": "KovalevArtem",
"avatar_url": "https://avatars0.githubusercontent.com/u/36500228?v=4",
"profile": "https://github.com/KovalevArtem",
"contributions": [
"translation"
]
},
{
"login": "GiyomuWeb",
"name": "GiyomuWeb",
"avatar_url": "https://avatars0.githubusercontent.com/u/62489209?v=4",
"profile": "https://github.com/GiyomuWeb",
"contributions": [
"translation"
]
},
{
"login": "angrycuban13",
"name": "Angry Cuban",
"avatar_url": "https://avatars3.githubusercontent.com/u/39564898?v=4",
"profile": "https://github.com/angrycuban13",
"contributions": [
"doc"
]
}
],
"badgeTemplate": "<a href=\"#contributors-\"><img alt=\"All Contributors\" src=\"https://img.shields.io/badge/all_contributors-<%= contributors.length %>-orange.svg\"/></a>",
"contributorsPerLine": 7,
"projectName": "overseerr",
"projectOwner": "sct",
"repoType": "github",
"repoHost": "https://github.com",
"skipCi": true
}

@ -26,7 +26,7 @@ jobs:
build_and_push:
name: Build and push Docker image to Docker Hub
needs: test
if: github.ref == 'refs/heads/develop'
if: github.ref == 'refs/heads/develop' && !contains(github.event.head_commit.message, 'skip ci')
runs-on: ubuntu-latest
steps:
- name: checkout

@ -20,7 +20,7 @@ jobs:
run: yarn lint
- name: build
run: yarn build
semnatic-release:
semantic-release:
name: Tag and release latest version
needs: test
runs-on: ubuntu-latest

@ -15,9 +15,12 @@
</a>
<a href="https://lgtm.com/projects/g/sct/overseerr/context:javascript"><img alt="Language grade: JavaScript" src="https://img.shields.io/lgtm/grade/javascript/g/sct/overseerr.svg?logo=lgtm&logoWidth=18"/></a>
<img alt="GitHub" src="https://img.shields.io/github/license/sct/overseerr">
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
<a href="#contributors-"><img alt="All Contributors" src="https://img.shields.io/badge/all_contributors-7-orange.svg"/></a>
<!-- ALL-CONTRIBUTORS-BADGE:END -->
</p>
**Overseerr** is a libre software tool for managing requests for your media library. It integrates with existing services such as **Sonarr** and **Radarr**!
**Overseerr** is a free and open source software application for managing requests for your media library. It integrates with your existing services such as **Sonarr**, **Radarr** and **Plex**!
## Current Features
@ -52,9 +55,9 @@ docker run -d \
-e LOG_LEVEL=info \
-e TZ=Asia/Tokyo \
-p 5055:3000 \
-v /path/to/appdata/config:/config \
-v /path/to/appdata/config:/app/config \
--restart unless-stopped \
sctx/overseer
sctx/overseerr
```
After running Overseerr for the first time, configure it by visiting the web UI at http://[address]:5055 and completing the setup steps.
@ -85,9 +88,25 @@ Our [Code of Conduct](https://github.com/sct/overseerr/blob/develop/CODE_OF_COND
## Contributors
<a href="https://github.com/sct/overseerr/graphs/contributors">
<img src="https://contributors-img.web.app/image?repo=sct/overseerr" />
</a>
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
<tr>
<td align="center"><a href="https://sct.dev"><img src="https://avatars1.githubusercontent.com/u/234213?v=4" width="100px;" alt=""/><br /><sub><b>sct</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=sct" title="Code">💻</a> <a href="#design-sct" title="Design">🎨</a> <a href="#ideas-sct" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center"><a href="https://github.com/azoitos"><img src="https://avatars2.githubusercontent.com/u/26529049?v=4" width="100px;" alt=""/><br /><sub><b>Alex Zoitos</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=azoitos" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/OwsleyJr"><img src="https://avatars3.githubusercontent.com/u/8635678?v=4" width="100px;" alt=""/><br /><sub><b>Brandon Cohen</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=OwsleyJr" title="Code">💻</a> <a href="https://github.com/sct/overseerr/commits?author=OwsleyJr" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/Ahreluth"><img src="https://avatars2.githubusercontent.com/u/75682440?v=4" width="100px;" alt=""/><br /><sub><b>Ahreluth</b></sub></a><br /><a href="#translation-Ahreluth" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/KovalevArtem"><img src="https://avatars0.githubusercontent.com/u/36500228?v=4" width="100px;" alt=""/><br /><sub><b>KovalevArtem</b></sub></a><br /><a href="#translation-KovalevArtem" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/GiyomuWeb"><img src="https://avatars0.githubusercontent.com/u/62489209?v=4" width="100px;" alt=""/><br /><sub><b>GiyomuWeb</b></sub></a><br /><a href="#translation-GiyomuWeb" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/angrycuban13"><img src="https://avatars3.githubusercontent.com/u/39564898?v=4" width="100px;" alt=""/><br /><sub><b>Angry Cuban</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=angrycuban13" title="Documentation">📖</a></td>
</tr>
</table>
<!-- markdownlint-enable -->
<!-- prettier-ignore-end -->
<!-- ALL-CONTRIBUTORS-LIST:END -->
## Contributing

@ -9,7 +9,7 @@
"build": "yarn build:next && yarn build:server",
"lint": "eslint \"./server/**/*.{ts,tsx}\" \"./src/**/*.{ts,tsx}\"",
"start": "NODE_ENV=production node dist/index.js",
"i18n:extract": "extract-messages -l=en,ja,fr,nb_NO,de,ru,nl -o src/i18n/locale -d en --flat true --overwriteDefault false './src/**/!(*.test).{ts,tsx}'",
"i18n:extract": "extract-messages -l=en -o src/i18n/locale -d en --flat true --overwriteDefault false './src/**/!(*.test).{ts,tsx}'",
"migration:generate": "ts-node --project server/tsconfig.json ./node_modules/.bin/typeorm migration:generate",
"migration:run": "ts-node --project server/tsconfig.json ./node_modules/.bin/typeorm migration:run",
"format": "prettier --write ."
@ -52,7 +52,7 @@
"winston": "^3.3.3",
"xml2js": "^0.4.23",
"yamljs": "^0.3.0",
"yup": "^0.32.6"
"yup": "^0.32.8"
},
"devDependencies": {
"@babel/cli": "^7.12.8",

@ -100,7 +100,7 @@ class Settings {
constructor(initialSettings?: AllSettings) {
this.data = {
clientId: '',
clientId: uuidv4(),
main: {
apiKey: '',
applicationUrl: '',
@ -222,10 +222,10 @@ class Settings {
* @param overrideSettings If passed in, will override all existing settings with these
* values
*/
public load(overrideSettings?: AllSettings): AllSettings {
public load(overrideSettings?: AllSettings): Settings {
if (overrideSettings) {
this.data = overrideSettings;
return this.data;
return this;
}
if (!fs.existsSync(SETTINGS_PATH)) {
@ -237,7 +237,7 @@ class Settings {
this.data = merge(this.data, JSON.parse(data));
this.save();
}
return this.data;
return this;
}
public save(): void {

@ -2,7 +2,7 @@ import React from 'react';
interface HeaderProps {
extraMargin?: number;
subtext?: string;
subtext?: React.ReactNode;
}
const Header: React.FC<HeaderProps> = ({

@ -0,0 +1,66 @@
import Link from 'next/link';
import { useRouter } from 'next/router';
import React, { useContext } from 'react';
import { defineMessages, useIntl } from 'react-intl';
import useSWR from 'swr';
import { MovieDetails } from '../../../../server/models/Movie';
import { LanguageContext } from '../../../context/LanguageContext';
import Error from '../../../pages/_error';
import Header from '../../Common/Header';
import LoadingSpinner from '../../Common/LoadingSpinner';
import PersonCard from '../../PersonCard';
const messages = defineMessages({
fullcast: 'Full Cast',
});
const MovieCast: React.FC = () => {
const router = useRouter();
const intl = useIntl();
const { locale } = useContext(LanguageContext);
const { data, error } = useSWR<MovieDetails>(
`/api/v1/movie/${router.query.movieId}?language=${locale}`
);
if (!data && !error) {
return <LoadingSpinner />;
}
if (!data) {
return <Error statusCode={404} />;
}
return (
<>
<Header
subtext={
<Link href={`/movie/${data.id}`}>
<a className="hover:underline">{data.title}</a>
</Link>
}
>
{intl.formatMessage(messages.fullcast)}
</Header>
<ul className="grid grid-cols-2 gap-6 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 xl:grid-cols-7 2xl:grid-cols-8">
{data?.credits.cast.map((person) => {
return (
<li
key={person.id}
className="col-span-1 flex flex-col text-center items-center"
>
<PersonCard
name={person.name}
personId={person.id}
subName={person.character}
profilePath={person.profilePath}
canExpand
/>
</li>
);
})}
</ul>
</>
);
};
export default MovieCast;

@ -5,7 +5,6 @@ import type { PersonDetail } from '../../../server/models/Person';
import type { PersonCombinedCreditsResponse } from '../../../server/interfaces/api/personInterfaces';
import Error from '../../pages/_error';
import LoadingSpinner from '../Common/LoadingSpinner';
import Slider from '../Slider';
import TitleCard from '../TitleCard';
import { defineMessages, useIntl } from 'react-intl';
import { LanguageContext } from '../../context/LanguageContext';
@ -54,9 +53,11 @@ const PersonDetails: React.FC = () => {
return 1;
});
const isLoading = !combinedCredits && !errorCombinedCredits;
return (
<>
<div className="flex mt-8 mb-8 flex-col md:flex-row items-center">
<div className="flex mt-8 mb-8 flex-col md:flex-row items-center md:items-start">
{data.profilePath && (
<div
style={{
@ -81,13 +82,13 @@ const PersonDetails: React.FC = () => {
</div>
</div>
</div>
<Slider
isEmpty={!sortedCast}
isLoading={!combinedCredits && !errorCombinedCredits}
sliderKey={`person-${data.id}-slider-cast`}
items={sortedCast?.map((media) => {
<ul className="grid grid-cols-2 gap-6 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 xl:grid-cols-7 2xl:grid-cols-8">
{sortedCast?.map((media) => {
return (
<div key={`slider-cast-item-${media.id}`} className="flex flex-col">
<li
key={`list-cast-item-${media.id}`}
className="col-span-1 flex flex-col text-center items-center"
>
<TitleCard
id={media.id}
title={media.mediaType === 'movie' ? media.title : media.name}
@ -101,6 +102,7 @@ const PersonDetails: React.FC = () => {
summary={media.overview}
mediaType={media.mediaType as 'movie' | 'tv'}
status={media.mediaInfo?.status}
canExpand
/>
{media.character && (
<div className="mt-2 text-gray-300 text-xs truncate w-36 sm:w-36 md:w-44 text-center">
@ -109,10 +111,19 @@ const PersonDetails: React.FC = () => {
})}
</div>
)}
</div>
</li>
);
})}
/>
{isLoading &&
[...Array(20)].map((_item, i) => (
<li
key={`placeholder-${i}`}
className="col-span-1 flex flex-col text-center items-center"
>
<TitleCard.Placeholder canExpand />
</li>
))}
</ul>
</>
);
};

@ -0,0 +1,66 @@
import Link from 'next/link';
import { useRouter } from 'next/router';
import React, { useContext } from 'react';
import { defineMessages, useIntl } from 'react-intl';
import useSWR from 'swr';
import type { TvDetails } from '../../../../server/models/Tv';
import { LanguageContext } from '../../../context/LanguageContext';
import Error from '../../../pages/_error';
import Header from '../../Common/Header';
import LoadingSpinner from '../../Common/LoadingSpinner';
import PersonCard from '../../PersonCard';
const messages = defineMessages({
fullseriescast: 'Full Series Cast',
});
const TvCast: React.FC = () => {
const router = useRouter();
const intl = useIntl();
const { locale } = useContext(LanguageContext);
const { data, error } = useSWR<TvDetails>(
`/api/v1/tv/${router.query.tvId}?language=${locale}`
);
if (!data && !error) {
return <LoadingSpinner />;
}
if (!data) {
return <Error statusCode={404} />;
}
return (
<>
<Header
subtext={
<Link href={`/tv/${data.id}`}>
<a className="hover:underline">{data.name}</a>
</Link>
}
>
{intl.formatMessage(messages.fullseriescast)}
</Header>
<ul className="grid grid-cols-2 gap-6 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 xl:grid-cols-7 2xl:grid-cols-8">
{data?.credits.cast.map((person) => {
return (
<li
key={person.id}
className="col-span-1 flex flex-col text-center items-center"
>
<PersonCard
name={person.name}
personId={person.id}
subName={person.character}
profilePath={person.profilePath}
canExpand
/>
</li>
);
})}
</ul>
</>
);
};
export default TvCast;

@ -45,14 +45,14 @@
"components.MovieDetails.unavailable": "Nicht verfügbar",
"components.MovieDetails.userrating": "Benutzerbewertung",
"components.MovieDetails.viewrequest": "Antrag anzeigen",
"components.PersonDetails.appearsin": "",
"components.PersonDetails.ascharacter": "",
"components.PersonDetails.nobiography": "",
"components.PersonDetails.appearsin": "Erscheint in",
"components.PersonDetails.ascharacter": "als {character}",
"components.PersonDetails.nobiography": "Keine Biografie verfügbar.",
"components.PlexLoginButton.loading": "Wird geladen …",
"components.PlexLoginButton.loggingin": "Wird angemeldet …",
"components.PlexLoginButton.loginwithplex": "Anmeldung mit Plex",
"components.RequestBlock.seasons": "Staffeln",
"components.RequestCard.all": "",
"components.RequestCard.all": "Alle",
"components.RequestCard.requestedby": "Antrag von {username}",
"components.RequestCard.seasons": "Staffeln",
"components.RequestList.RequestItem.notavailable": "entf.",
@ -62,7 +62,7 @@
"components.RequestList.modifiedBy": "Zuletzt geändert von",
"components.RequestList.next": "Nächste",
"components.RequestList.previous": "Vorherige",
"components.RequestList.requestedAt": "Antrag erstellt um",
"components.RequestList.requestedAt": "Antrag erstellt am",
"components.RequestList.requests": "Anträge",
"components.RequestList.showingresults": "Anzeigen von <strong>{from}</strong> bis <strong> {to} </strong> von <strong> {total} </strong> Ergebnissen",
"components.RequestList.status": "Status",
@ -88,22 +88,22 @@
"components.RequestModal.status": "Status",
"components.Search.searchresults": "Suchergebnisse",
"components.Settings.Notifications.agentenabled": "Agent aktiviert",
"components.Settings.Notifications.authPass": "",
"components.Settings.Notifications.authUser": "",
"components.Settings.Notifications.authPass": "Auth Pass",
"components.Settings.Notifications.authUser": "Auth User",
"components.Settings.Notifications.emailsender": "E-Mail-Absenderadresse",
"components.Settings.Notifications.enableSsl": "SSL aktivieren",
"components.Settings.Notifications.save": "",
"components.Settings.Notifications.saving": "",
"components.Settings.Notifications.smtpHost": "",
"components.Settings.Notifications.smtpPort": "",
"components.Settings.Notifications.validationFromRequired": "",
"components.Settings.Notifications.validationSmtpHostRequired": "",
"components.Settings.Notifications.save": "Änderungen speichern",
"components.Settings.Notifications.saving": "Speichern ",
"components.Settings.Notifications.smtpHost": "SMTP-Host",
"components.Settings.Notifications.smtpPort": "SMTP-Port",
"components.Settings.Notifications.validationFromRequired": "Sie müssen eine E-Mail-Absenderadresse angeben",
"components.Settings.Notifications.validationSmtpHostRequired": "Sie müssen einen SMTP-Host bereitstellen",
"components.Settings.Notifications.validationSmtpPortRequired": "Sie müssen einen SMTP-Port bereitstellen",
"components.Settings.Notifications.validationWebhookUrlRequired": "Sie müssen eine Webhook-URL angeben",
"components.Settings.Notifications.webhookUrl": "Webhook-URL",
"components.Settings.Notifications.webhookUrlPlaceholder": "Servereinstellungen -> Integrationen -> Webhooks",
"components.Settings.RadarrModal.add": "",
"components.Settings.RadarrModal.apiKey": "",
"components.Settings.RadarrModal.add": "Server hinzufügen",
"components.Settings.RadarrModal.apiKey": "API-Schlüssel",
"components.Settings.RadarrModal.apiKeyPlaceholder": "Ihr Radarr-API-Schlüssel",
"components.Settings.RadarrModal.baseUrl": "Basis-URL",
"components.Settings.RadarrModal.baseUrlPlaceholder": "Beispiel: /radarr",
@ -138,169 +138,171 @@
"components.Settings.SonarrModal.apiKeyPlaceholder": "Ihr Sonarr-API-Schlüssel",
"components.Settings.SonarrModal.baseUrl": "Basis-URL",
"components.Settings.SonarrModal.baseUrlPlaceholder": "Beispiel: /sonarr",
"components.Settings.SonarrModal.createsonarr": "",
"components.Settings.SonarrModal.defaultserver": "",
"components.Settings.SonarrModal.editsonarr": "",
"components.Settings.SonarrModal.hostname": "",
"components.Settings.SonarrModal.port": "",
"components.Settings.SonarrModal.qualityprofile": "",
"components.Settings.SonarrModal.rootfolder": "",
"components.Settings.SonarrModal.save": "",
"components.Settings.SonarrModal.saving": "",
"components.Settings.SonarrModal.seasonfolders": "",
"components.Settings.SonarrModal.selectQualityProfile": "",
"components.Settings.SonarrModal.selectRootFolder": "",
"components.Settings.SonarrModal.server4k": "",
"components.Settings.SonarrModal.servername": "",
"components.Settings.SonarrModal.servernamePlaceholder": "",
"components.Settings.SonarrModal.ssl": "",
"components.Settings.SonarrModal.test": "",
"components.Settings.SonarrModal.testing": "",
"components.Settings.SonarrModal.toastRadarrTestFailure": "",
"components.Settings.SonarrModal.toastRadarrTestSuccess": "",
"components.Settings.SonarrModal.validationApiKeyRequired": "",
"components.Settings.SonarrModal.validationHostnameRequired": "",
"components.Settings.SonarrModal.validationPortRequired": "",
"components.Settings.SonarrModal.validationProfileRequired": "",
"components.Settings.SonarrModal.validationRootFolderRequired": "",
"components.Settings.activeProfile": "",
"components.Settings.addradarr": "",
"components.Settings.address": "",
"components.Settings.addsonarr": "",
"components.Settings.apikey": "",
"components.Settings.applicationurl": "",
"components.Settings.cancelscan": "",
"components.Settings.copied": "",
"components.Settings.currentlibrary": "",
"components.Settings.default": "",
"components.Settings.default4k": "",
"components.Settings.delete": "",
"components.Settings.deleteserverconfirm": "",
"components.Settings.edit": "",
"components.Settings.generalsettings": "",
"components.Settings.generalsettingsDescription": "",
"components.Settings.hostname": "",
"components.Settings.jobname": "",
"components.Settings.librariesRemaining": "",
"components.Settings.manualscan": "",
"components.Settings.manualscanDescription": "",
"components.Settings.menuAbout": "",
"components.Settings.menuGeneralSettings": "",
"components.Settings.menuJobs": "",
"components.Settings.menuLogs": "",
"components.Settings.menuNotifications": "",
"components.Settings.menuPlexSettings": "",
"components.Settings.menuServices": "",
"components.Settings.nextexecution": "",
"components.Settings.notificationsettings": "",
"components.Settings.notificationsettingsDescription": "",
"components.Settings.notrunning": "",
"components.Settings.plexlibraries": "",
"components.Settings.plexlibrariesDescription": "",
"components.Settings.plexsettings": "",
"components.Settings.plexsettingsDescription": "",
"components.Settings.port": "",
"components.Settings.radarrSettingsDescription": "",
"components.Settings.radarrsettings": "",
"components.Settings.runnow": "",
"components.Settings.save": "",
"components.Settings.saving": "",
"components.Settings.servername": "",
"components.Settings.servernamePlaceholder": "",
"components.Settings.sonarrSettingsDescription": "",
"components.Settings.sonarrsettings": "",
"components.Settings.ssl": "",
"components.Settings.startscan": "",
"components.Settings.sync": "",
"components.Settings.syncing": "",
"components.Setup.configureplex": "",
"components.Setup.configureservices": "",
"components.Setup.continue": "",
"components.Setup.finish": "",
"components.Setup.finishing": "",
"components.Setup.loginwithplex": "",
"components.Setup.signinMessage": "",
"components.Setup.welcome": "",
"components.Slider.noresults": "",
"components.TitleCard.movie": "",
"components.TitleCard.tvshow": "",
"components.TvDetails.approve": "",
"components.TvDetails.approverequests": "",
"components.TvDetails.available": "",
"components.TvDetails.cancelrequest": "",
"components.TvDetails.cast": "",
"components.TvDetails.decline": "",
"components.TvDetails.declinerequests": "",
"components.TvDetails.manageModalClearMedia": "",
"components.TvDetails.manageModalClearMediaWarning": "",
"components.TvDetails.manageModalNoRequests": "",
"components.TvDetails.manageModalRequests": "",
"components.TvDetails.manageModalTitle": "",
"components.TvDetails.originallanguage": "",
"components.TvDetails.overview": "",
"components.TvDetails.overviewunavailable": "",
"components.TvDetails.pending": "",
"components.TvDetails.recommendations": "",
"components.TvDetails.recommendationssubtext": "",
"components.TvDetails.request": "",
"components.TvDetails.requestmore": "",
"components.TvDetails.similar": "",
"components.TvDetails.similarsubtext": "",
"components.TvDetails.status": "",
"components.TvDetails.unavailable": "",
"components.TvDetails.userrating": "",
"components.UserEdit.admin": "",
"components.UserEdit.adminDescription": "",
"components.UserEdit.autoapprove": "",
"components.UserEdit.autoapproveDescription": "",
"components.UserEdit.avatar": "",
"components.UserEdit.edituser": "",
"components.UserEdit.email": "",
"components.UserEdit.managerequests": "",
"components.UserEdit.managerequestsDescription": "",
"components.UserEdit.permissions": "",
"components.UserEdit.request": "",
"components.UserEdit.requestDescription": "",
"components.UserEdit.save": "",
"components.UserEdit.saving": "",
"components.UserEdit.settings": "",
"components.UserEdit.settingsDescription": "",
"components.UserEdit.userfail": "",
"components.UserEdit.username": "",
"components.UserEdit.users": "",
"components.UserEdit.usersDescription": "",
"components.UserEdit.usersaved": "",
"components.UserEdit.vote": "",
"components.UserEdit.voteDescription": "",
"components.UserList.admin": "",
"components.UserList.created": "",
"components.UserList.delete": "",
"components.UserList.edit": "",
"components.UserList.lastupdated": "",
"components.UserList.plexuser": "",
"components.UserList.role": "",
"components.UserList.totalrequests": "",
"components.UserList.user": "",
"components.UserList.userlist": "",
"components.UserList.username": "",
"components.UserList.usertype": "",
"i18n.approve": "",
"i18n.approved": "",
"i18n.available": "",
"i18n.cancel": "",
"i18n.decline": "",
"i18n.declined": "",
"i18n.delete": "",
"i18n.movies": "",
"i18n.partiallyavailable": "",
"i18n.pending": "",
"i18n.processing": "",
"i18n.tvshows": "",
"i18n.unavailable": "",
"pages.internalServerError": "",
"pages.oops": "",
"pages.pageNotFound": "",
"pages.returnHome": "",
"pages.serviceUnavailable": "",
"pages.somethingWentWrong": ""
"components.Settings.SonarrModal.createsonarr": "Neuen Sonarr-Server erstellen",
"components.Settings.SonarrModal.defaultserver": "Standardserver",
"components.Settings.SonarrModal.editsonarr": "Sonarr-Server bearbeiten",
"components.Settings.SonarrModal.hostname": "Hostname",
"components.Settings.SonarrModal.port": "Port",
"components.Settings.SonarrModal.qualityprofile": "Qualitätsprofil",
"components.Settings.SonarrModal.rootfolder": "Stammordner",
"components.Settings.SonarrModal.save": "Änderungen speichern",
"components.Settings.SonarrModal.saving": "Speichern …",
"components.Settings.SonarrModal.seasonfolders": "Staffelnordner",
"components.Settings.SonarrModal.selectQualityProfile": "Wählen Sie ein Qualitätsprofil",
"components.Settings.SonarrModal.selectRootFolder": "Wählen Sie einen Stammordner",
"components.Settings.SonarrModal.server4k": "4K-Server",
"components.Settings.SonarrModal.servername": "Servername",
"components.Settings.SonarrModal.servernamePlaceholder": "Ein Sonarr-Server",
"components.Settings.SonarrModal.ssl": "SSL",
"components.Settings.SonarrModal.test": "Test",
"components.Settings.SonarrModal.testing": "Testen …",
"components.Settings.SonarrModal.toastRadarrTestFailure": "Es konnte keine Verbindung zu Sonarr-Server hergestellt werden",
"components.Settings.SonarrModal.toastRadarrTestSuccess": "Sonarr-Verbindung hergestellt!",
"components.Settings.SonarrModal.validationApiKeyRequired": "Sie müssen einen API-Schlüssel angeben",
"components.Settings.SonarrModal.validationHostnameRequired": "Sie müssen einen Hostnamen/IP angeben",
"components.Settings.SonarrModal.validationPortRequired": "Sie müssen einen Port angeben",
"components.Settings.SonarrModal.validationProfileRequired": "Sie müssen ein Profil auswählen",
"components.Settings.SonarrModal.validationRootFolderRequired": "Sie müssen einen Stammordner auswählen",
"components.Settings.activeProfile": "Aktives Profil",
"components.Settings.addradarr": "Radarr-Server hinzufügen",
"components.Settings.address": "Adresse",
"components.Settings.addsonarr": "Sonarr-Server hinzufügen",
"components.Settings.apikey": "API-Schlüssel",
"components.Settings.applicationurl": "Anwendungs-URL",
"components.Settings.cancelscan": "Scan abbrechen",
"components.Settings.copied": "Kopierter API-Schlüssel in die Zwischenablage",
"components.Settings.currentlibrary": "Aktuelle Bibliothek: {name}",
"components.Settings.default": "Standardmäßig",
"components.Settings.default4k": "Standard-4K",
"components.Settings.delete": "Löschen",
"components.Settings.deleteserverconfirm": "Sind Sie sicher, dass Sie diesen Server löschen möchten?",
"components.Settings.edit": "Bearbeiten",
"components.Settings.generalsettings": "Allgemeine Einstellungen",
"components.Settings.generalsettingsDescription": "Dies sind Einstellungen, die sich auf die allgemeine Overseerr-Konfiguration beziehen.",
"components.Settings.hostname": "Hostname/IP",
"components.Settings.jobname": "Auftragsname",
"components.Settings.librariesRemaining": "Verbleibende Bibliotheken: {count}",
"components.Settings.manualscan": "Manueller Bibliotheksscan",
"components.Settings.manualscanDescription": "Normalerweise wird dies nur einmal alle 6 Stunden ausgeführt. Overseerr überprüft die kürzlich hinzugefügten Plex-Server aggressiver. Wenn Sie Plex zum ersten Mal konfigurieren, wird ein einmaliger vollständiger manueller Bibliotheksscan empfohlen!",
"components.Settings.menuAbout": "Über",
"components.Settings.menuGeneralSettings": "Allgemeine Einstellungen",
"components.Settings.menuJobs": "Anträge",
"components.Settings.menuLogs": "Protokolle",
"components.Settings.menuNotifications": "Benachrichtigungen",
"components.Settings.menuPlexSettings": "Plex",
"components.Settings.menuServices": "Dienste",
"components.Settings.nextexecution": "Nächste Ausführung",
"components.Settings.notificationsettings": "Benachrichtigungseinstellungen",
"components.Settings.notificationsettingsDescription": "Hier können Sie auswählen, welche Arten von Benachrichtigungen gesendet werden sollen und über welche Arten von Diensten.",
"components.Settings.notrunning": "Nicht aktiv",
"components.Settings.plexlibraries": "Plex-Bibliotheken",
"components.Settings.plexlibrariesDescription": "Die Bibliotheken-Overseerr sucht nach Titeln. Richten Sie Ihre Plex-Verbindungseinstellungen ein und speichern Sie sie, und klicken Sie auf die Schaltfläche unten, wenn keine aufgeführt sind.",
"components.Settings.plexsettings": "Plex-Einstellungen",
"components.Settings.plexsettingsDescription": "Konfigurieren Sie die Einstellungen für Ihren Plex-Server. Overseerr verwendet Ihren Plex-Server, um Ihre Bibliothek in regelmäßigen Abständen zu scannen und festzustellen, welche Inhalte verfügbar sind.",
"components.Settings.port": "Port",
"components.Settings.radarrSettingsDescription": "Richten Sie unten Ihre Radarr-Verbindung ein. Sie können jederzeit mehrere, aber nur zwei standardmäßig aktiv haben (eine für Standard-HD und eine für 4K). Administratoren können überschreiben, welcher Server für neue Anforderungen verwendet wird.",
"components.Settings.radarrsettings": "Radarr-Einstellungen",
"components.Settings.runnow": "Jetzt ausführen",
"components.Settings.save": "Änderungen speichern",
"components.Settings.saving": "Speichern …",
"components.Settings.servername": "Servername (automatisch festgelegt)",
"components.Settings.servernamePlaceholder": "Plex-Servername",
"components.Settings.sonarrSettingsDescription": "Richten Sie unten Ihre Sonarr-Verbindung ein. Sie können jederzeit mehrere, aber nur zwei standardmäßig aktiv haben (eine für Standard-HD und eine für 4K). Administratoren können überschreiben, welcher Server für neue Anforderungen verwendet wird.",
"components.Settings.sonarrsettings": "Sonarr-Einstellungen",
"components.Settings.ssl": "SSL",
"components.Settings.startscan": "Scan starten",
"components.Settings.sync": "Plex-Bibliotheken synchronisieren",
"components.Settings.syncing": "Synchronisierung …",
"components.Setup.configureplex": "Plex konfigurieren",
"components.Setup.configureservices": "Dienste konfigurieren",
"components.Setup.continue": "Fortfahren",
"components.Setup.finish": "Konfiguration beenden",
"components.Setup.finishing": "Fertigstellung …",
"components.Setup.loginwithplex": "Anmeldung mit Plex",
"components.Setup.signinMessage": "Melden Sie sich zunächst mit Ihrem Plex-Konto an",
"components.Setup.welcome": "Willkommen bei Overseerr",
"components.Slider.noresults": "Keine Ergebnisse",
"components.TitleCard.movie": "Film",
"components.TitleCard.tvshow": "Serie",
"components.TvDetails.approve": "Genehmigen",
"components.TvDetails.approverequests": "{requestCount} {requestCount, plural, one {Request} other {Requests}} genehmigen",
"components.TvDetails.available": "Verfügbar",
"components.TvDetails.cancelrequest": "Antrag abbrechen",
"components.TvDetails.cast": "Besetzung",
"components.TvDetails.decline": "Ablehnen",
"components.TvDetails.declinerequests": "{requestCount} {requestCount, plural, one {Request} andere {Requests}} ablehnen",
"components.TvDetails.manageModalClearMedia": "Alle Mediendaten löschen",
"components.TvDetails.manageModalClearMediaWarning": "Dadurch werden alle Mediendaten einschließlich aller Anträge für dieses Element irreversibel entfernt. Wenn dieses Element in Ihrer Plex-Bibliothek vorhanden ist, werden die Medieninformationen bei der nächsten Synchronisierung neu erstellt.",
"components.TvDetails.manageModalNoRequests": "Keine Anträge",
"components.TvDetails.manageModalRequests": "Anträge",
"components.TvDetails.manageModalTitle": "Serien verwalten",
"components.TvDetails.originallanguage": "Originalsprache",
"components.TvDetails.overview": "Übersicht",
"components.TvDetails.overviewunavailable": "Übersicht nicht verfügbar",
"components.TvDetails.pending": "Ausstehend",
"components.TvDetails.recommendations": "Empfehlungen",
"components.TvDetails.recommendationssubtext": "Wenn Ihnen {title} gefallen hat, könnte Ihnen auch gefallen …",
"components.TvDetails.request": "Antrag",
"components.TvDetails.requestmore": "Mehr anfordern",
"components.TvDetails.similar": "Ähnliche Serien",
"components.TvDetails.similarsubtext": "Andere Serien {title} ähnlich",
"components.TvDetails.status": "Status",
"components.TvDetails.unavailable": "Nicht verfügbar",
"components.TvDetails.userrating": "Benutzerbewertung",
"components.UserEdit.admin": "Administrator/in",
"components.UserEdit.adminDescription": "Voller Administratorzugriff. Umgeht alle Berechtigungsprüfungen.",
"components.UserEdit.autoapprove": "Automatische Genehmigung",
"components.UserEdit.autoapproveDescription": "Gewährt die automatische Genehmigung für alle Anträge dieses Benutzers.",
"components.UserEdit.avatar": "Avatar",
"components.UserEdit.edituser": "Benutzer/in bearbeiten",
"components.UserEdit.email": "E-Mail",
"components.UserEdit.managerequests": "Anträge verwalten",
"components.UserEdit.managerequestsDescription": "Erteilt die Berechtigung zum Verwalten von Overseerr-Anträgen. Dies umfasst das Genehmigen und Ablehnen von Anträgen.",
"components.UserEdit.permissions": "Berechtigungen",
"components.UserEdit.request": "Antrag",
"components.UserEdit.requestDescription": "Erteilt die Berechtigung zum Anfordern von Filmen und Serien.",
"components.UserEdit.save": "Speichern",
"components.UserEdit.saving": "Speichern …",
"components.UserEdit.settings": "Einstellungen verwalten",
"components.UserEdit.settingsDescription": "Erteilt die Berechtigung zum Ändern aller Overseerr-Einstellungen. Ein/e Benutzer/in muss über diese Berechtigung verfügen, um sie anderen Personen erteilen zu können.",
"components.UserEdit.userfail": "Beim Speichern des Benutzers ist ein Fehler aufgetreten.",
"components.UserEdit.username": "Benutzername",
"components.UserEdit.users": "Benutzer verwalten",
"components.UserEdit.usersDescription": "Erteilt die Berechtigung zum Verwalten von Overseerr-Benutzern. Benutzer/innen mit dieser Berechtigung können Benutzer/innen mit Administratorrechten nicht ändern oder gewähren.",
"components.UserEdit.usersaved": "Benutzer/in gespeichert",
"components.UserEdit.vote": "Abstimmen",
"components.UserEdit.voteDescription": "Erteilt die Erlaubnis, über Anträge abzustimmen (Abstimmung noch nicht durchgeführt)",
"components.UserList.admin": "Admin",
"components.UserList.created": "Erstellt",
"components.UserList.delete": "Löschen",
"components.UserList.edit": "Bearbeiten",
"components.UserList.lastupdated": "Zuletzt aktualisiert",
"components.UserList.plexuser": "Plex-Benutzer/in",
"components.UserList.role": "Rolle",
"components.UserList.totalrequests": "Anträge insgesamt",
"components.UserList.user": "Benutzer/in",
"components.UserList.userlist": "Benutzer/innen-Liste",
"components.UserList.username": "Benutzername",
"components.UserList.usertype": "Benutzertyp",
"i18n.approve": "Genehmigen",
"i18n.approved": "Genehmigt",
"i18n.available": "Verfügbar",
"i18n.cancel": "Abbrechen",
"i18n.decline": "Ablehnen",
"i18n.declined": "Abgelehnt",
"i18n.delete": "Löschen",
"i18n.movies": "Films",
"i18n.partiallyavailable": "Teilweise verfügbar",
"i18n.pending": "Ausstehend",
"i18n.processing": "Verarbeitung …",
"i18n.tvshows": "Serien",
"i18n.unavailable": "Nicht verfügbar",
"pages.internalServerError": "{statusCode} Interner Serverfehler",
"pages.oops": "Hoppla",
"pages.pageNotFound": "404 Seite nicht gefunden",
"pages.returnHome": "Zur Starseite",
"pages.serviceUnavailable": "{statusCode} Dienst nicht verfügbar",
"pages.somethingWentWrong": "{statusCode} Es ist ein Fehler aufgetreten",
"components.TvDetails.TvCast.fullseriescast": "Vollserienbesetzung",
"components.MovieDetails.MovieCast.fullcast": "Vollständige Besetzung"
}

@ -18,6 +18,7 @@
"components.Layout.UserDropdown.signout": "Sign Out",
"components.Layout.alphawarning": "This is ALPHA software. Almost everything is bound to be nearly broken and/or unstable. Please report issues to the Overseerr GitHub!",
"components.Login.signinplex": "Sign in to continue",
"components.MovieDetails.MovieCast.fullcast": "Full Cast",
"components.MovieDetails.approve": "Approve",
"components.MovieDetails.available": "Available",
"components.MovieDetails.budget": "Budget",
@ -212,7 +213,7 @@
"components.Settings.ssl": "SSL",
"components.Settings.startscan": "Start Scan",
"components.Settings.sync": "Sync Plex Libraries",
"components.Settings.syncing": "Syncing",
"components.Settings.syncing": "Syncing",
"components.Setup.configureplex": "Configure Plex",
"components.Setup.configureservices": "Configure Services",
"components.Setup.continue": "Continue",
@ -224,6 +225,7 @@
"components.Slider.noresults": "No Results",
"components.TitleCard.movie": "Movie",
"components.TitleCard.tvshow": "Series",
"components.TvDetails.TvCast.fullseriescast": "Full Series Cast",
"components.TvDetails.approve": "Approve",
"components.TvDetails.approverequests": "Approve {requestCount} {requestCount, plural, one {Request} other {Requests}}",
"components.TvDetails.available": "Available",
@ -260,7 +262,7 @@
"components.UserEdit.managerequestsDescription": "Grants permission to manage Overseerr requests. This includes approving and denying requests.",
"components.UserEdit.permissions": "Permissions",
"components.UserEdit.request": "Request",
"components.UserEdit.requestDescription": "Grants permission to make requests for movies or tv shows.",
"components.UserEdit.requestDescription": "Grants permission to request movies and series.",
"components.UserEdit.save": "Save",
"components.UserEdit.saving": "Saving...",
"components.UserEdit.settings": "Manage Settings",
@ -294,7 +296,7 @@
"i18n.movies": "Movies",
"i18n.partiallyavailable": "Partially Available",
"i18n.pending": "Pending",
"i18n.processing": "Processing",
"i18n.processing": "Processing",
"i18n.tvshows": "Series",
"i18n.unavailable": "Unavailable",
"pages.internalServerError": "{statusCode} - Internal Server Error",

@ -10,7 +10,7 @@
"components.Discover.upcoming": "Prochaines sorties",
"components.Discover.upcomingmovies": "Prochaines sorties",
"components.Layout.LanguagePicker.changelanguage": "Changer la langue",
"components.Layout.SearchInput.searchPlaceholder": "Rechercher films et TV",
"components.Layout.SearchInput.searchPlaceholder": "Rechercher des films et des séries",
"components.Layout.Sidebar.dashboard": "Découverte",
"components.Layout.Sidebar.requests": "Demandes d'ajouts",
"components.Layout.Sidebar.settings": "Paramètres",
@ -22,12 +22,12 @@
"components.MovieDetails.available": "Disponible",
"components.MovieDetails.budget": "Budget",
"components.MovieDetails.cancelrequest": "Annuler la demande",
"components.MovieDetails.cast": "Distribution",
"components.MovieDetails.cast": "Casting",
"components.MovieDetails.decline": "Refuser",
"components.MovieDetails.manageModalClearMedia": "Effacer toutes les données médias",
"components.MovieDetails.manageModalClearMediaWarning": "Toutes les donnés de médias vont être éffacées pour cet élément irréversiblement. Si cet élément existe dans votre bibliothèque Plex, les informations du média seront recrées à la prochaine synchronisation.",
"components.MovieDetails.manageModalNoRequests": "Aucune demande",
"components.MovieDetails.manageModalRequests": "Demandes d'ajouts",
"components.MovieDetails.manageModalRequests": "Demandes d'ajout",
"components.MovieDetails.manageModalTitle": "Gérer les films",
"components.MovieDetails.originallanguage": "Langue originale",
"components.MovieDetails.overview": "Résumé",
@ -45,14 +45,14 @@
"components.MovieDetails.unavailable": "Indisponible",
"components.MovieDetails.userrating": "Note utilisateur",
"components.MovieDetails.viewrequest": "Voir la demande",
"components.PersonDetails.appearsin": "",
"components.PersonDetails.ascharacter": "",
"components.PersonDetails.nobiography": "",
"components.PersonDetails.appearsin": "Apparaît dans",
"components.PersonDetails.ascharacter": "comme {character}",
"components.PersonDetails.nobiography": "Aucune biographie disponible.",
"components.PlexLoginButton.loading": "Chargement…",
"components.PlexLoginButton.loggingin": "Connexion en cours…",
"components.PlexLoginButton.loginwithplex": "Se connecter avec Plex",
"components.RequestBlock.seasons": "Saisons",
"components.RequestCard.all": "",
"components.RequestCard.all": "Toutes",
"components.RequestCard.requestedby": "Demandé par {username}",
"components.RequestCard.seasons": "Saisons",
"components.RequestList.RequestItem.notavailable": "s.o.",
@ -62,7 +62,7 @@
"components.RequestList.modifiedBy": "Dernière modification par",
"components.RequestList.next": "Suivant",
"components.RequestList.previous": "Précédent",
"components.RequestList.requestedAt": "Demandé à",
"components.RequestList.requestedAt": "Demandé le",
"components.RequestList.requests": "Demandes",
"components.RequestList.showingresults": "Affichage de <strong>{from}</strong> à <strong>{to}</strong> sur <strong>{total </strong> résultats",
"components.RequestList.status": "Statut",
@ -212,7 +212,7 @@
"components.Settings.ssl": "SSL",
"components.Settings.startscan": "Commencer le scan",
"components.Settings.sync": "Synchroniser les bibliothèques Plex",
"components.Settings.syncing": "Synchronisation en cours",
"components.Settings.syncing": "Synchronisation",
"components.Setup.configureplex": "Configurer Plex",
"components.Setup.configureservices": "Configurer les Services",
"components.Setup.continue": "Continuer",
@ -227,7 +227,7 @@
"components.TvDetails.approve": "Valider",
"components.TvDetails.approverequests": "Valider {requestCount} {requestCount, plural, one {Request} other {Requests}}",
"components.TvDetails.available": "Disponible",
"components.TvDetails.cancelrequest": "Annuler la Demande",
"components.TvDetails.cancelrequest": "Annuler la demande",
"components.TvDetails.cast": "Casting",
"components.TvDetails.decline": "Refuser",
"components.TvDetails.declinerequests": "Refuser {requestCount} {requestCount, plural, one {Request} other {Requests}}",
@ -250,7 +250,7 @@
"components.TvDetails.unavailable": "Indisponible",
"components.TvDetails.userrating": "Note utilisateurs",
"components.UserEdit.admin": "Administrateur",
"components.UserEdit.adminDescription": "Accès administrateur complet. Contourner toutes les demandes de permissions.",
"components.UserEdit.adminDescription": "Accès administrateur complet. Contourne toutes les demandes de permissions.",
"components.UserEdit.autoapprove": "Validation automatique",
"components.UserEdit.autoapproveDescription": "Active la validation automatique de toutes les demandes d'ajouts de cet utilisateur.",
"components.UserEdit.avatar": "Avatar",
@ -258,9 +258,9 @@
"components.UserEdit.email": "Courriel",
"components.UserEdit.managerequests": "Gérer les demandes d'ajouts",
"components.UserEdit.managerequestsDescription": "Donne la permission de gérer les demandes d'ajouts sur Overseerr. Ceci inclut la possibilité de valider ou refuser une demande.",
"components.UserEdit.permissions": "Permissions",
"components.UserEdit.permissions": "Autorisations",
"components.UserEdit.request": "Demandes d'ajouts",
"components.UserEdit.requestDescription": "Donne la permission de faire des demandes d'ajouts pour les films et séries.",
"components.UserEdit.requestDescription": "Accorde l'autorisation de demander des films et des séries.",
"components.UserEdit.save": "Sauvegarder",
"components.UserEdit.saving": "Enregistrement en cours…",
"components.UserEdit.settings": "Gérer les paramètres",
@ -279,7 +279,7 @@
"components.UserList.lastupdated": "Denière mise à jour",
"components.UserList.plexuser": "Utilisateur Plex",
"components.UserList.role": "Rôle",
"components.UserList.totalrequests": "Demandes d'ajouts total",
"components.UserList.totalrequests": "Demandes d'ajout totales",
"components.UserList.user": "Utilisateur",
"components.UserList.userlist": "Liste des utilisateurs",
"components.UserList.username": "Nom d'utilisateur",
@ -294,7 +294,7 @@
"i18n.movies": "Films",
"i18n.partiallyavailable": "Partiellement disponible",
"i18n.pending": "En attente",
"i18n.processing": "En cours",
"i18n.processing": "Traitement en cours…",
"i18n.tvshows": "Séries",
"i18n.unavailable": "Indisponible",
"pages.internalServerError": "{statusCode} Erreur du serveur interne",
@ -302,5 +302,7 @@
"pages.pageNotFound": "404 Page non trouvée",
"pages.returnHome": "Retourner à l'acceuil",
"pages.serviceUnavailable": "{statusCode} Service indisponible",
"pages.somethingWentWrong": "{statusCode} Il y a eu un problème"
"pages.somethingWentWrong": "{statusCode} Une erreur est survenue",
"components.TvDetails.TvCast.fullseriescast": "Casting complet de la série",
"components.MovieDetails.MovieCast.fullcast": "Casting complet"
}

@ -6,7 +6,7 @@
"components.Discover.populartv": "人気のテレビ番組",
"components.Discover.recentlyAdded": "最近追加された動画",
"components.Discover.recentrequests": "最近のリクエスト",
"components.Discover.trending": "最近のトレンド",
"components.Discover.trending": "トレンド",
"components.Discover.upcoming": "今後リリースされる映画",
"components.Discover.upcomingmovies": "今後リリースされる映画",
"components.Layout.LanguagePicker.changelanguage": "言語",
@ -16,16 +16,16 @@
"components.Layout.Sidebar.settings": "設定",
"components.Layout.Sidebar.users": "ユーザー",
"components.Layout.UserDropdown.signout": "ログアウト",
"components.Layout.alphawarning": "このソフトはアルファ版です。ほとんどの機能は不安定又は故障している可能性があります。バグ発見したとき、OverseerrのGithubまでご連絡ください",
"components.Login.signinplex": "続にはログインしてください",
"components.Layout.alphawarning": "このソフトはアルファ版です。ほとんどの機能は不安定又は故障している可能性があります。バグを発見した場合、OverseerrのGithubまでご連絡ください",
"components.Login.signinplex": "続けるにはログインしてください",
"components.MovieDetails.approve": "承認",
"components.MovieDetails.available": "鑑賞可能",
"components.MovieDetails.budget": "予算",
"components.MovieDetails.cancelrequest": "リクエストを取り消す",
"components.MovieDetails.cast": "キャスト",
"components.MovieDetails.decline": "拒否する",
"components.MovieDetails.manageModalClearMedia": "メディアのデータを消去",
"components.MovieDetails.manageModalClearMediaWarning": "リクエストを含め、メーディアのデータをすべて消去されます。この操作は元に戻すことができません。このアイテムが Plex ライブラリに存在する場合、メディア情報は次の同期で再作成されます。",
"components.MovieDetails.decline": "拒否",
"components.MovieDetails.manageModalClearMedia": "メディア情報を消去",
"components.MovieDetails.manageModalClearMediaWarning": "リクエストを含め、すべての詳細情報が消去されます。この操作は元に戻すことができません。この作品が Plex ライブラリに存在する場合、詳細情報は次の同期で再作成されます。",
"components.MovieDetails.manageModalNoRequests": "リクエストがありません",
"components.MovieDetails.manageModalRequests": "リクエスト",
"components.MovieDetails.manageModalTitle": "映画を管理",
@ -36,7 +36,7 @@
"components.MovieDetails.recommendations": "オススメの作品",
"components.MovieDetails.recommendationssubtext": "{title}が好きだった人は、こんなのも好きかもしれません...",
"components.MovieDetails.releasedate": "公開日",
"components.MovieDetails.request": "リクエストする",
"components.MovieDetails.request": "リクエストする",
"components.MovieDetails.revenue": "収益",
"components.MovieDetails.runtime": "{minutes}分",
"components.MovieDetails.similar": "関連作品",
@ -45,28 +45,28 @@
"components.MovieDetails.unavailable": "鑑賞不可",
"components.MovieDetails.userrating": "ユーザー評価",
"components.MovieDetails.viewrequest": "リクエストを閲覧",
"components.PersonDetails.appearsin": "",
"components.PersonDetails.ascharacter": "",
"components.PersonDetails.nobiography": "",
"components.PersonDetails.appearsin": "出演作品",
"components.PersonDetails.ascharacter": "{character}役",
"components.PersonDetails.nobiography": "出演作品の情報はありません。",
"components.PlexLoginButton.loading": "ロード中…",
"components.PlexLoginButton.loggingin": "ログイン中…",
"components.PlexLoginButton.loginwithplex": "Plexでログイン",
"components.RequestBlock.seasons": "シーズン",
"components.RequestCard.all": "",
"components.RequestCard.all": "すべて",
"components.RequestCard.requestedby": "{username}のリクエスト",
"components.RequestCard.seasons": "シーズン",
"components.RequestList.RequestItem.notavailable": "N/A",
"components.RequestList.RequestItem.requestedby": "{username}のリクエスト",
"components.RequestList.RequestItem.seasons": "シーズン",
"components.RequestList.mediaInfo": "メディア情報",
"components.RequestList.mediaInfo": "詳細情報",
"components.RequestList.modifiedBy": "最終更新者",
"components.RequestList.next": "次",
"components.RequestList.previous": "戻る",
"components.RequestList.requestedAt": "リクエスト日時",
"components.RequestList.requests": "リクエスト",
"components.RequestList.showingresults": "<strong>{total}</strong>中<strong>{from}</strong><strong>{to}</strong>件",
"components.RequestList.status": "ステータス",
"components.RequestModal.cancel": "ャンセルリクエスト",
"components.RequestList.status": "状態",
"components.RequestModal.cancel": "ャンセルリクエスト",
"components.RequestModal.cancelling": "取り消し中...",
"components.RequestModal.cancelrequest": "このリクエストをキャンセルしてよろしいですか?",
"components.RequestModal.close": "閉じる",
@ -75,9 +75,9 @@
"components.RequestModal.numberofepisodes": "エピソード数",
"components.RequestModal.pendingrequest": "{title}がリクエスト中",
"components.RequestModal.request": "リクエストする",
"components.RequestModal.requestCancel": "<strong>{title}</strong>のリクエストは取り消された",
"components.RequestModal.requestSuccess": "<strong>{title}</strong>のリクエストは完了した。",
"components.RequestModal.requestadmin": "このリクエストが今すぐ承認します。",
"components.RequestModal.requestCancel": "<strong>{title}</strong>のリクエストは取り消されました",
"components.RequestModal.requestSuccess": "<strong>{title}</strong>のリクエストは完了しました。",
"components.RequestModal.requestadmin": "このリクエストは今すぐ承認されます。",
"components.RequestModal.requestfrom": "{username}はすでにリクエストを上げています",
"components.RequestModal.requesting": "リクエスト中…",
"components.RequestModal.requestseasons": "{seasonCount} {seasonCount, plural, one {Season} other {Seasons}}をリクエスト",
@ -128,11 +128,11 @@
"components.Settings.RadarrModal.testing": "テスト中...",
"components.Settings.RadarrModal.toastRadarrTestFailure": "Radarrサーバーの接続は失敗しました",
"components.Settings.RadarrModal.toastRadarrTestSuccess": "Radarrサーバーの接続は成功しました!",
"components.Settings.RadarrModal.validationApiKeyRequired": "APIキーの入力必要です",
"components.Settings.RadarrModal.validationHostnameRequired": "ホスト名/IPの入力必要です",
"components.Settings.RadarrModal.validationPortRequired": "ポートの入力必要です",
"components.Settings.RadarrModal.validationProfileRequired": "プロファイルの選択必要です",
"components.Settings.RadarrModal.validationRootFolderRequired": "ルートフォルダーの選択必要です",
"components.Settings.RadarrModal.validationApiKeyRequired": "APIキーの入力必要です",
"components.Settings.RadarrModal.validationHostnameRequired": "ホスト名/IPの入力必要です",
"components.Settings.RadarrModal.validationPortRequired": "ポートの入力必要です",
"components.Settings.RadarrModal.validationProfileRequired": "プロファイルの選択必要です",
"components.Settings.RadarrModal.validationRootFolderRequired": "ルートフォルダーの選択必要です",
"components.Settings.SonarrModal.add": "サーバーを追加",
"components.Settings.SonarrModal.apiKey": "APIキー",
"components.Settings.SonarrModal.apiKeyPlaceholder": "SonarrのAPIキー",
@ -157,12 +157,12 @@
"components.Settings.SonarrModal.test": "テストする",
"components.Settings.SonarrModal.testing": "テスト中...",
"components.Settings.SonarrModal.toastRadarrTestFailure": "Sonarrサーバーに接続できませんでした",
"components.Settings.SonarrModal.toastRadarrTestSuccess": "Sonarrサーバーの接続成功しました!",
"components.Settings.SonarrModal.validationApiKeyRequired": "APIキーの入力必要です",
"components.Settings.SonarrModal.validationHostnameRequired": "ホスト名/IPの入力必要です",
"components.Settings.SonarrModal.validationPortRequired": "ポートの入力必要です",
"components.Settings.SonarrModal.validationProfileRequired": "プロファイルの選択必要です",
"components.Settings.SonarrModal.validationRootFolderRequired": "ルートフォルダーの選択必要です",
"components.Settings.SonarrModal.toastRadarrTestSuccess": "Sonarrサーバーの接続成功しました!",
"components.Settings.SonarrModal.validationApiKeyRequired": "APIキーの入力必要です",
"components.Settings.SonarrModal.validationHostnameRequired": "ホスト名/IPの入力必要です",
"components.Settings.SonarrModal.validationPortRequired": "ポートの入力必要です",
"components.Settings.SonarrModal.validationProfileRequired": "プロファイルの選択必要です",
"components.Settings.SonarrModal.validationRootFolderRequired": "ルートフォルダーの選択必要です",
"components.Settings.activeProfile": "アクティブプロファイル",
"components.Settings.addradarr": "Radarrサーバーを追加",
"components.Settings.address": "アドレス",
@ -183,7 +183,7 @@
"components.Settings.jobname": "ジョブ名",
"components.Settings.librariesRemaining": "残りのライブラリー: {count}",
"components.Settings.manualscan": "手動ライブラリースキャン",
"components.Settings.manualscanDescription": "通常は6時間に一度しか実行されません。Overseerr は、Plex サーバーの最近追加されたフォルダをより頻繁にチェックします。初めて Plex を設定する場合は、一度だけ手動でライブラリーをスキャンすることをお勧めします。",
"components.Settings.manualscanDescription": "通常は6時間に一度しか実行されません。Overseerr は、Plex サーバーの最近追加されたフォルダをより頻繁にチェックします。初めて Plex を設定する場合は、一度手動でライブラリーをスキャンすることをお勧めします。",
"components.Settings.menuAbout": "Overseerrについて",
"components.Settings.menuGeneralSettings": "一般設定",
"components.Settings.menuJobs": "ジョブ",
@ -212,7 +212,7 @@
"components.Settings.ssl": "SSL",
"components.Settings.startscan": "スキャンを開始",
"components.Settings.sync": "Plexライブラリーの同期",
"components.Settings.syncing": "同期中",
"components.Settings.syncing": "同期中",
"components.Setup.configureplex": "Plexの設定",
"components.Setup.configureservices": "連携サービスの設定",
"components.Setup.continue": "続行",
@ -294,7 +294,7 @@
"i18n.movies": "映画",
"i18n.partiallyavailable": "一部鑑賞可能",
"i18n.pending": "リクエスト中",
"i18n.processing": "処理中",
"i18n.processing": "処理中",
"i18n.tvshows": "シリーズ",
"i18n.unavailable": "鑑賞不可",
"pages.internalServerError": "{statusCode} - 内部サーバーエラー",

@ -45,14 +45,14 @@
"components.MovieDetails.unavailable": "Utilgjengelig",
"components.MovieDetails.userrating": "Brukervurdering",
"components.MovieDetails.viewrequest": "Vis forespørsel",
"components.PersonDetails.appearsin": "",
"components.PersonDetails.ascharacter": "",
"components.PersonDetails.nobiography": "",
"components.PersonDetails.appearsin": "Finnes i",
"components.PersonDetails.ascharacter": "som {character}",
"components.PersonDetails.nobiography": "Ingen biografi tilgjengelig.",
"components.PlexLoginButton.loading": "Laster inn …",
"components.PlexLoginButton.loggingin": "Logger inn …",
"components.PlexLoginButton.loginwithplex": "Logg inn med Plex",
"components.RequestBlock.seasons": "Sesonger",
"components.RequestCard.all": "",
"components.RequestCard.all": "Alle",
"components.RequestCard.requestedby": "Forespurt av {username}",
"components.RequestCard.seasons": "Sesonger",
"components.RequestList.RequestItem.notavailable": "I/T",

@ -1,61 +1,61 @@
{
"components.Discover.discovermovies": "",
"components.Discover.discovertv": "",
"components.Discover.nopending": "",
"components.Discover.popularmovies": "",
"components.Discover.populartv": "",
"components.Discover.recentlyAdded": "",
"components.Discover.recentrequests": "",
"components.Discover.trending": "",
"components.Discover.upcoming": "",
"components.Discover.upcomingmovies": "",
"components.Layout.LanguagePicker.changelanguage": "",
"components.Layout.SearchInput.searchPlaceholder": "",
"components.Layout.Sidebar.dashboard": "",
"components.Layout.Sidebar.requests": "",
"components.Layout.Sidebar.settings": "",
"components.Layout.Sidebar.users": "",
"components.Layout.UserDropdown.signout": "",
"components.Layout.alphawarning": "",
"components.Login.signinplex": "",
"components.MovieDetails.approve": "",
"components.MovieDetails.available": "",
"components.MovieDetails.budget": "",
"components.MovieDetails.cancelrequest": "",
"components.MovieDetails.cast": "",
"components.MovieDetails.decline": "",
"components.MovieDetails.manageModalClearMedia": "",
"components.MovieDetails.manageModalClearMediaWarning": "",
"components.MovieDetails.manageModalNoRequests": "",
"components.MovieDetails.manageModalRequests": "",
"components.MovieDetails.manageModalTitle": "",
"components.MovieDetails.originallanguage": "",
"components.MovieDetails.overview": "",
"components.MovieDetails.overviewunavailable": "",
"components.MovieDetails.pending": "",
"components.MovieDetails.recommendations": "",
"components.MovieDetails.recommendationssubtext": "",
"components.MovieDetails.releasedate": "",
"components.MovieDetails.request": "",
"components.MovieDetails.revenue": "",
"components.MovieDetails.runtime": "",
"components.MovieDetails.similar": "",
"components.MovieDetails.similarsubtext": "",
"components.MovieDetails.status": "",
"components.MovieDetails.unavailable": "",
"components.MovieDetails.userrating": "",
"components.MovieDetails.viewrequest": "",
"components.PersonDetails.appearsin": "",
"components.PersonDetails.ascharacter": "",
"components.PersonDetails.nobiography": "",
"components.PlexLoginButton.loading": "",
"components.PlexLoginButton.loggingin": "",
"components.PlexLoginButton.loginwithplex": "",
"components.RequestBlock.seasons": "",
"components.RequestCard.all": "",
"components.RequestCard.requestedby": "",
"components.RequestCard.seasons": "",
"components.RequestList.RequestItem.notavailable": "",
"components.Discover.discovermovies": "Populaire Films",
"components.Discover.discovertv": "Populaire Series",
"components.Discover.nopending": "Geen Wachtende Verzoeken",
"components.Discover.popularmovies": "Populaire Films",
"components.Discover.populartv": "Populaire Series",
"components.Discover.recentlyAdded": "RecentelijkToegevoegd",
"components.Discover.recentrequests": "Recente Verzoeken",
"components.Discover.trending": "Trending",
"components.Discover.upcoming": "Verwachte Films",
"components.Discover.upcomingmovies": "Verwachte Films",
"components.Layout.LanguagePicker.changelanguage": "Wijzig Taal",
"components.Layout.SearchInput.searchPlaceholder": "Zoek Films & TV",
"components.Layout.Sidebar.dashboard": "Ontdek",
"components.Layout.Sidebar.requests": "Verzoeken",
"components.Layout.Sidebar.settings": "Instellingen",
"components.Layout.Sidebar.users": "Gebruikers",
"components.Layout.UserDropdown.signout": "Uitloggen",
"components.Layout.alphawarning": "Dit is ALPHA software. Bijna alles is waarschijnlijk kapot of onstabiel. Rapporteer issues bij de Overseerr GitHub!",
"components.Login.signinplex": "Log in om door te gaan",
"components.MovieDetails.approve": "Goedkeuren",
"components.MovieDetails.available": "Beschikbaar",
"components.MovieDetails.budget": "Budget",
"components.MovieDetails.cancelrequest": "Annuleer Verzoek",
"components.MovieDetails.cast": "Acteurs",
"components.MovieDetails.decline": "Weigeren",
"components.MovieDetails.manageModalClearMedia": "Wis Alle Media Data",
"components.MovieDetails.manageModalClearMediaWarning": "Dit wist alle media data inclusief alle verzoeken voor dit item zonder herstelmogelijkheden. Als dit item in je Plex bibliotheek bestaat zal alle media info bij de volgende sync hersteld worden.",
"components.MovieDetails.manageModalNoRequests": "Geen Verzoeken",
"components.MovieDetails.manageModalRequests": "Verzoeken",
"components.MovieDetails.manageModalTitle": "Beheer Film",
"components.MovieDetails.originallanguage": "Originele Taal",
"components.MovieDetails.overview": "Overzicht",
"components.MovieDetails.overviewunavailable": "Overzicht onbeschikbaar",
"components.MovieDetails.pending": "In afwachting",
"components.MovieDetails.recommendations": "Aanbevelingen",
"components.MovieDetails.recommendationssubtext": "Als je {title} leuk vond, vind je dit misschien ook leuk...",
"components.MovieDetails.releasedate": "Release Datum",
"components.MovieDetails.request": "Verzoek",
"components.MovieDetails.revenue": "Omzet",
"components.MovieDetails.runtime": "{minutes} minuten",
"components.MovieDetails.similar": "Vergelijkbare Titels",
"components.MovieDetails.similarsubtext": "Andere films vergelijkbaar met {title}",
"components.MovieDetails.status": "Status",
"components.MovieDetails.unavailable": "Onbeschikbaar",
"components.MovieDetails.userrating": "Gebruikersbeoordeling",
"components.MovieDetails.viewrequest": "Verzoek Bekijken",
"components.PersonDetails.appearsin": "Verschijnt in",
"components.PersonDetails.ascharacter": "als {character}",
"components.PersonDetails.nobiography": "Geen biografie beschikbaar.",
"components.PlexLoginButton.loading": "Bezig met laden...",
"components.PlexLoginButton.loggingin": "Bezig met inloggen...",
"components.PlexLoginButton.loginwithplex": "Login met Plex",
"components.RequestBlock.seasons": "Seizoenen",
"components.RequestCard.all": "Alle",
"components.RequestCard.requestedby": "Verzocht door {username}",
"components.RequestCard.seasons": "Seizoenen",
"components.RequestList.RequestItem.notavailable": "Nvt",
"components.RequestList.RequestItem.requestedby": "",
"components.RequestList.RequestItem.seasons": "",
"components.RequestList.mediaInfo": "",

@ -1,7 +1,7 @@
{
"components.Discover.discovermovies": "Популярные фильмы",
"components.Discover.discovertv": "Популярные серии",
"components.Discover.nopending": "",
"components.Discover.nopending": "Нет отложенных запросов",
"components.Discover.popularmovies": "Популярные фильмы",
"components.Discover.populartv": "Популярные серии",
"components.Discover.recentlyAdded": "Недавно добавленные",

@ -0,0 +1,9 @@
import { NextPage } from 'next';
import React from 'react';
import MovieCast from '../../../components/MovieDetails/MovieCast';
const MovieCastPage: NextPage = () => {
return <MovieCast />;
};
export default MovieCastPage;

@ -0,0 +1,9 @@
import { NextPage } from 'next';
import React from 'react';
import TvCast from '../../../components/TvDetails/TvCast';
const TvCastPage: NextPage = () => {
return <TvCast />;
};
export default TvCastPage;

@ -1020,27 +1020,13 @@
core-js-pure "^3.0.0"
regenerator-runtime "^0.13.4"
"@babel/runtime@7.12.5":
"@babel/runtime@7.12.5", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.5", "@babel/runtime@^7.11.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7":
version "7.12.5"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e"
integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==
dependencies:
regenerator-runtime "^0.13.4"
"@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7":
version "7.11.2"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736"
integrity sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==
dependencies:
regenerator-runtime "^0.13.4"
"@babel/runtime@^7.10.5":
version "7.12.1"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.1.tgz#b4116a6b6711d010b2dad3b7b6e43bf1b9954740"
integrity sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==
dependencies:
regenerator-runtime "^0.13.4"
"@babel/template@^7.10.4":
version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278"
@ -7109,9 +7095,9 @@ inherits@2.0.3:
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
ini@^1.3.4, ini@^1.3.5, ini@~1.3.0:
version "1.3.5"
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
version "1.3.8"
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
init-package-json@^1.10.3:
version "1.10.3"
@ -14197,10 +14183,10 @@ yn@3.1.1:
resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==
yup@^0.32.6:
version "0.32.6"
resolved "https://registry.yarnpkg.com/yup/-/yup-0.32.6.tgz#7fd924536cdf61ec5df7a4bd0576d0a3954b03f6"
integrity sha512-i5poB/ZWU0zGoCwViLw++NQbUFy+X9xfoSSK31JOLh3RoBVUaYrNlYIyxqK8HGrxTHPIl5BBNu/mJYKNeFVvdA==
yup@^0.32.8:
version "0.32.8"
resolved "https://registry.yarnpkg.com/yup/-/yup-0.32.8.tgz#16e4a949a86a69505abf99fd0941305ac9adfc39"
integrity sha512-SZulv5FIZ9d5H99EN5tRCRPXL0eyoYxWIP1AacCrjC9d4DfP13J1dROdKGfpfRHT3eQB6/ikBl5jG21smAfCkA==
dependencies:
"@babel/runtime" "^7.10.5"
"@types/lodash" "^4.14.165"

Loading…
Cancel
Save