Merge branch 'develop'
This commit is contained in:
3
.github/workflows/support.yml
vendored
3
.github/workflows/support.yml
vendored
@@ -19,7 +19,8 @@ jobs:
|
||||
to get help with Overseerr.
|
||||
|
||||
- [Discord](https://discord.gg/PkCWJSeCk7)
|
||||
|
||||
- [GitHub Discussions](https://github.com/sct/overseerr/discussions)
|
||||
close-issue: true
|
||||
lock-issue: false
|
||||
lock-issue: true
|
||||
issue-lock-reason: 'off-topic'
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
"bowser": "^2.11.0",
|
||||
"connect-typeorm": "^1.1.4",
|
||||
"cookie-parser": "^1.4.5",
|
||||
"country-code-emoji": "^2.2.0",
|
||||
"country-flag-icons": "^1.2.9",
|
||||
"csurf": "^1.11.0",
|
||||
"email-templates": "^8.0.3",
|
||||
"express": "^4.17.1",
|
||||
@@ -83,6 +83,7 @@
|
||||
"@types/bcrypt": "^3.0.0",
|
||||
"@types/body-parser": "^1.19.0",
|
||||
"@types/cookie-parser": "^1.4.2",
|
||||
"@types/country-flag-icons": "^1.2.0",
|
||||
"@types/csurf": "^1.11.0",
|
||||
"@types/email-templates": "^8.0.2",
|
||||
"@types/express": "^4.17.11",
|
||||
|
||||
@@ -13,6 +13,7 @@ export interface PublicSettingsResponse {
|
||||
movie4kEnabled: boolean;
|
||||
series4kEnabled: boolean;
|
||||
region: string;
|
||||
originalLanguage: string;
|
||||
}
|
||||
|
||||
export interface CacheItem {
|
||||
|
||||
@@ -666,7 +666,9 @@ class JobPlexSync {
|
||||
isAllStandardSeasons || shouldStayAvailable
|
||||
? MediaStatus.AVAILABLE
|
||||
: media.seasons.some(
|
||||
(season) => season.status !== MediaStatus.UNKNOWN
|
||||
(season) =>
|
||||
season.status === MediaStatus.PARTIALLY_AVAILABLE ||
|
||||
season.status === MediaStatus.AVAILABLE
|
||||
)
|
||||
? MediaStatus.PARTIALLY_AVAILABLE
|
||||
: MediaStatus.UNKNOWN;
|
||||
@@ -675,7 +677,9 @@ class JobPlexSync {
|
||||
? MediaStatus.AVAILABLE
|
||||
: this.enable4kShow &&
|
||||
media.seasons.some(
|
||||
(season) => season.status4k !== MediaStatus.UNKNOWN
|
||||
(season) =>
|
||||
season.status4k === MediaStatus.PARTIALLY_AVAILABLE ||
|
||||
season.status4k === MediaStatus.AVAILABLE
|
||||
)
|
||||
? MediaStatus.PARTIALLY_AVAILABLE
|
||||
: MediaStatus.UNKNOWN;
|
||||
@@ -691,7 +695,9 @@ class JobPlexSync {
|
||||
status: isAllStandardSeasons
|
||||
? MediaStatus.AVAILABLE
|
||||
: newSeasons.some(
|
||||
(season) => season.status !== MediaStatus.UNKNOWN
|
||||
(season) =>
|
||||
season.status === MediaStatus.PARTIALLY_AVAILABLE ||
|
||||
season.status === MediaStatus.AVAILABLE
|
||||
)
|
||||
? MediaStatus.PARTIALLY_AVAILABLE
|
||||
: MediaStatus.UNKNOWN,
|
||||
@@ -700,7 +706,9 @@ class JobPlexSync {
|
||||
? MediaStatus.AVAILABLE
|
||||
: this.enable4kShow &&
|
||||
newSeasons.some(
|
||||
(season) => season.status4k !== MediaStatus.UNKNOWN
|
||||
(season) =>
|
||||
season.status4k === MediaStatus.PARTIALLY_AVAILABLE ||
|
||||
season.status4k === MediaStatus.AVAILABLE
|
||||
)
|
||||
? MediaStatus.PARTIALLY_AVAILABLE
|
||||
: MediaStatus.UNKNOWN,
|
||||
|
||||
@@ -53,6 +53,7 @@ class TelegramAgent
|
||||
const title = this.escapeText(payload.subject);
|
||||
const plot = this.escapeText(payload.message);
|
||||
const user = this.escapeText(payload.notifyUser.displayName);
|
||||
const applicationTitle = this.escapeText(settings.main.applicationTitle);
|
||||
|
||||
/* eslint-disable no-useless-escape */
|
||||
switch (type) {
|
||||
@@ -109,7 +110,7 @@ class TelegramAgent
|
||||
|
||||
if (settings.main.applicationUrl && payload.media) {
|
||||
const actionUrl = `${settings.main.applicationUrl}/${payload.media.mediaType}/${payload.media.tmdbId}`;
|
||||
message += `\n\n\[Open in ${settings.main.applicationTitle}\]\(${actionUrl}\)`;
|
||||
message += `\n\n\[Open in ${applicationTitle}\]\(${actionUrl}\)`;
|
||||
}
|
||||
/* eslint-enable */
|
||||
|
||||
|
||||
@@ -85,6 +85,7 @@ interface FullPublicSettings extends PublicSettings {
|
||||
movie4kEnabled: boolean;
|
||||
series4kEnabled: boolean;
|
||||
region: string;
|
||||
originalLanguage: string;
|
||||
}
|
||||
|
||||
export interface NotificationAgentConfig {
|
||||
@@ -337,6 +338,7 @@ class Settings {
|
||||
(sonarr) => sonarr.is4k && sonarr.isDefault
|
||||
),
|
||||
region: this.data.main.region,
|
||||
originalLanguage: this.data.main.originalLanguage,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -5,16 +5,35 @@ import Media from '../entity/Media';
|
||||
import { isMovie, isPerson } from '../utils/typeHelpers';
|
||||
import { MediaType } from '../constants/media';
|
||||
import { getSettings } from '../lib/settings';
|
||||
import { User } from '../entity/User';
|
||||
|
||||
const createTmdbWithRegionLanaguage = (user?: User): TheMovieDb => {
|
||||
const settings = getSettings();
|
||||
|
||||
const region =
|
||||
user?.settings?.region === 'all'
|
||||
? ''
|
||||
: user?.settings?.region
|
||||
? user?.settings?.region
|
||||
: settings.main.region;
|
||||
|
||||
const originalLanguage =
|
||||
user?.settings?.originalLanguage === 'all'
|
||||
? ''
|
||||
: user?.settings?.originalLanguage
|
||||
? user?.settings?.originalLanguage
|
||||
: settings.main.originalLanguage;
|
||||
|
||||
return new TheMovieDb({
|
||||
region,
|
||||
originalLanguage,
|
||||
});
|
||||
};
|
||||
|
||||
const discoverRoutes = Router();
|
||||
|
||||
discoverRoutes.get('/movies', async (req, res) => {
|
||||
const settings = getSettings();
|
||||
const tmdb = new TheMovieDb({
|
||||
region: req.user?.settings?.region ?? settings.main.region,
|
||||
originalLanguage:
|
||||
req.user?.settings?.originalLanguage ?? settings.main.originalLanguage,
|
||||
});
|
||||
const tmdb = createTmdbWithRegionLanaguage(req.user);
|
||||
|
||||
const data = await tmdb.getDiscoverMovies({
|
||||
page: Number(req.query.page),
|
||||
@@ -41,12 +60,7 @@ discoverRoutes.get('/movies', async (req, res) => {
|
||||
});
|
||||
|
||||
discoverRoutes.get('/movies/upcoming', async (req, res) => {
|
||||
const settings = getSettings();
|
||||
const tmdb = new TheMovieDb({
|
||||
region: req.user?.settings?.region ?? settings.main.region,
|
||||
originalLanguage:
|
||||
req.user?.settings?.originalLanguage ?? settings.main.originalLanguage,
|
||||
});
|
||||
const tmdb = createTmdbWithRegionLanaguage(req.user);
|
||||
|
||||
const now = new Date();
|
||||
const offset = now.getTimezoneOffset();
|
||||
@@ -80,12 +94,7 @@ discoverRoutes.get('/movies/upcoming', async (req, res) => {
|
||||
});
|
||||
|
||||
discoverRoutes.get('/tv', async (req, res) => {
|
||||
const settings = getSettings();
|
||||
const tmdb = new TheMovieDb({
|
||||
region: req.user?.settings?.region ?? settings.main.region,
|
||||
originalLanguage:
|
||||
req.user?.settings?.originalLanguage ?? settings.main.originalLanguage,
|
||||
});
|
||||
const tmdb = createTmdbWithRegionLanaguage(req.user);
|
||||
|
||||
const data = await tmdb.getDiscoverTv({
|
||||
page: Number(req.query.page),
|
||||
@@ -112,12 +121,7 @@ discoverRoutes.get('/tv', async (req, res) => {
|
||||
});
|
||||
|
||||
discoverRoutes.get('/tv/upcoming', async (req, res) => {
|
||||
const settings = getSettings();
|
||||
const tmdb = new TheMovieDb({
|
||||
region: req.user?.settings?.region ?? settings.main.region,
|
||||
originalLanguage:
|
||||
req.user?.settings?.originalLanguage ?? settings.main.originalLanguage,
|
||||
});
|
||||
const tmdb = createTmdbWithRegionLanaguage(req.user);
|
||||
|
||||
const now = new Date();
|
||||
const offset = now.getTimezoneOffset();
|
||||
@@ -151,12 +155,7 @@ discoverRoutes.get('/tv/upcoming', async (req, res) => {
|
||||
});
|
||||
|
||||
discoverRoutes.get('/trending', async (req, res) => {
|
||||
const settings = getSettings();
|
||||
const tmdb = new TheMovieDb({
|
||||
region: req.user?.settings?.region ?? settings.main.region,
|
||||
originalLanguage:
|
||||
req.user?.settings?.originalLanguage ?? settings.main.originalLanguage,
|
||||
});
|
||||
const tmdb = createTmdbWithRegionLanaguage(req.user);
|
||||
|
||||
const data = await tmdb.getAllTrending({
|
||||
page: Number(req.query.page),
|
||||
|
||||
@@ -283,9 +283,7 @@ requestRoutes.post(
|
||||
|
||||
const request = new MediaRequest({
|
||||
type: MediaType.TV,
|
||||
media: {
|
||||
id: media.id,
|
||||
} as Media,
|
||||
media,
|
||||
requestedBy: requestUser,
|
||||
// If the user is an admin or has the "auto approve" permission, automatically approve the request
|
||||
status:
|
||||
|
||||
@@ -1,37 +1,59 @@
|
||||
import React, { useEffect, useState } from 'react';
|
||||
import React, { useEffect, useMemo, useState } from 'react';
|
||||
import { Listbox, Transition } from '@headlessui/react';
|
||||
import { countryCodeEmoji } from 'country-code-emoji';
|
||||
import useSWR from 'swr';
|
||||
import type { Region } from '../../../server/lib/settings';
|
||||
import { defineMessages, useIntl } from 'react-intl';
|
||||
import useSettings from '../../hooks/useSettings';
|
||||
import { hasFlag } from 'country-flag-icons';
|
||||
import 'country-flag-icons/3x2/flags.css';
|
||||
|
||||
const messages = defineMessages({
|
||||
regionDefault: 'All Regions',
|
||||
regionServerDefault: 'Default ({region})',
|
||||
});
|
||||
|
||||
interface RegionSelectorProps {
|
||||
value: string;
|
||||
name: string;
|
||||
isUserSetting?: boolean;
|
||||
onChange?: (fieldName: string, region: string) => void;
|
||||
}
|
||||
|
||||
const RegionSelector: React.FC<RegionSelectorProps> = ({
|
||||
name,
|
||||
value,
|
||||
isUserSetting = false,
|
||||
onChange,
|
||||
}) => {
|
||||
const { currentSettings } = useSettings();
|
||||
const intl = useIntl();
|
||||
const { data: regions } = useSWR<Region[]>('/api/v1/regions');
|
||||
const [selectedRegion, setSelectedRegion] = useState<Region | null>(null);
|
||||
|
||||
const allRegion: Region = useMemo(
|
||||
() => ({
|
||||
iso_3166_1: 'all',
|
||||
english_name: 'All',
|
||||
}),
|
||||
[]
|
||||
);
|
||||
|
||||
const defaultRegionNameFallback =
|
||||
regions?.find((region) => region.iso_3166_1 === currentSettings.region)
|
||||
?.english_name ?? currentSettings.region;
|
||||
|
||||
useEffect(() => {
|
||||
if (regions && value) {
|
||||
const matchedRegion = regions.find(
|
||||
(region) => region.iso_3166_1 === value
|
||||
);
|
||||
setSelectedRegion(matchedRegion ?? null);
|
||||
if (value === 'all') {
|
||||
setSelectedRegion(allRegion);
|
||||
} else {
|
||||
const matchedRegion = regions.find(
|
||||
(region) => region.iso_3166_1 === value
|
||||
);
|
||||
setSelectedRegion(matchedRegion ?? null);
|
||||
}
|
||||
}
|
||||
}, [value, regions]);
|
||||
}, [value, regions, allRegion]);
|
||||
|
||||
useEffect(() => {
|
||||
if (onChange && regions) {
|
||||
@@ -47,15 +69,35 @@ const RegionSelector: React.FC<RegionSelectorProps> = ({
|
||||
<div className="relative">
|
||||
<span className="inline-block w-full rounded-md shadow-sm">
|
||||
<Listbox.Button className="relative flex items-center w-full py-2 pl-3 pr-10 text-left text-white transition duration-150 ease-in-out bg-gray-700 border border-gray-500 rounded-md cursor-default focus:outline-none focus:shadow-outline-blue focus:border-blue-300 sm:text-sm sm:leading-5">
|
||||
{selectedRegion && (
|
||||
<span className="h-4 mr-2 overflow-hidden text-lg leading-4">
|
||||
{countryCodeEmoji(selectedRegion.iso_3166_1)}
|
||||
{((selectedRegion && hasFlag(selectedRegion?.iso_3166_1)) ||
|
||||
(isUserSetting &&
|
||||
!selectedRegion &&
|
||||
currentSettings.region &&
|
||||
hasFlag(currentSettings.region))) && (
|
||||
<span className="h-4 mr-2 overflow-hidden text-base leading-4">
|
||||
<span
|
||||
className={`flag:${
|
||||
selectedRegion
|
||||
? selectedRegion.iso_3166_1
|
||||
: currentSettings.region
|
||||
}`}
|
||||
/>
|
||||
</span>
|
||||
)}
|
||||
<span className="block truncate">
|
||||
{selectedRegion
|
||||
{selectedRegion && selectedRegion.iso_3166_1 !== 'all'
|
||||
? intl.formatDisplayName(selectedRegion.iso_3166_1, {
|
||||
type: 'region',
|
||||
fallback: 'none',
|
||||
}) ?? selectedRegion.english_name
|
||||
: isUserSetting && selectedRegion?.iso_3166_1 !== 'all'
|
||||
? intl.formatMessage(messages.regionServerDefault, {
|
||||
region: currentSettings.region
|
||||
? intl.formatDisplayName(currentSettings.region, {
|
||||
type: 'region',
|
||||
fallback: 'none',
|
||||
}) ?? defaultRegionNameFallback
|
||||
: intl.formatMessage(messages.regionDefault),
|
||||
})
|
||||
: intl.formatMessage(messages.regionDefault)}
|
||||
</span>
|
||||
@@ -89,7 +131,67 @@ const RegionSelector: React.FC<RegionSelectorProps> = ({
|
||||
static
|
||||
className="py-1 overflow-auto text-base leading-6 rounded-md shadow-xs max-h-60 focus:outline-none sm:text-sm sm:leading-5"
|
||||
>
|
||||
<Listbox.Option value={null}>
|
||||
{isUserSetting && (
|
||||
<Listbox.Option value={null}>
|
||||
{({ selected, active }) => (
|
||||
<div
|
||||
className={`${
|
||||
active
|
||||
? 'text-white bg-indigo-600'
|
||||
: 'text-gray-300'
|
||||
} cursor-default select-none relative py-2 pl-8 pr-4 flex items-center`}
|
||||
>
|
||||
<span className="mr-2 text-base">
|
||||
<span
|
||||
className={
|
||||
hasFlag(currentSettings.region)
|
||||
? `flag:${currentSettings.region}`
|
||||
: 'pr-6'
|
||||
}
|
||||
/>
|
||||
</span>
|
||||
<span
|
||||
className={`${
|
||||
selected ? 'font-semibold' : 'font-normal'
|
||||
} block truncate`}
|
||||
>
|
||||
{intl.formatMessage(messages.regionServerDefault, {
|
||||
region: currentSettings.region
|
||||
? intl.formatDisplayName(
|
||||
currentSettings.region,
|
||||
{
|
||||
type: 'region',
|
||||
fallback: 'none',
|
||||
}
|
||||
) ?? defaultRegionNameFallback
|
||||
: intl.formatMessage(messages.regionDefault),
|
||||
})}
|
||||
</span>
|
||||
{selected && (
|
||||
<span
|
||||
className={`${
|
||||
active ? 'text-white' : 'text-indigo-600'
|
||||
} absolute inset-y-0 left-0 flex items-center pl-1.5`}
|
||||
>
|
||||
<svg
|
||||
className="w-5 h-5"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 20 20"
|
||||
fill="currentColor"
|
||||
>
|
||||
<path
|
||||
fillRule="evenodd"
|
||||
d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z"
|
||||
clipRule="evenodd"
|
||||
/>
|
||||
</svg>
|
||||
</span>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
</Listbox.Option>
|
||||
)}
|
||||
<Listbox.Option value={isUserSetting ? allRegion : null}>
|
||||
{({ selected, active }) => (
|
||||
<div
|
||||
className={`${
|
||||
@@ -99,7 +201,7 @@ const RegionSelector: React.FC<RegionSelectorProps> = ({
|
||||
<span
|
||||
className={`${
|
||||
selected ? 'font-semibold' : 'font-normal'
|
||||
} block truncate`}
|
||||
} block truncate pl-8`}
|
||||
>
|
||||
{intl.formatMessage(messages.regionDefault)}
|
||||
</span>
|
||||
@@ -136,8 +238,14 @@ const RegionSelector: React.FC<RegionSelectorProps> = ({
|
||||
: 'text-gray-300'
|
||||
} cursor-default select-none relative py-2 pl-8 pr-4 flex items-center`}
|
||||
>
|
||||
<span className="mr-2 text-lg">
|
||||
{countryCodeEmoji(region.iso_3166_1)}
|
||||
<span className="mr-2 text-base">
|
||||
<span
|
||||
className={
|
||||
hasFlag(region.iso_3166_1)
|
||||
? `flag:${region.iso_3166_1}`
|
||||
: 'pr-6'
|
||||
}
|
||||
/>
|
||||
</span>
|
||||
<span
|
||||
className={`${
|
||||
|
||||
@@ -24,9 +24,9 @@ const messages = defineMessages({
|
||||
test: 'Test',
|
||||
settinguppushover: 'Setting Up Pushover Notifications',
|
||||
settinguppushoverDescription:
|
||||
'To configure Pushover notifications, you will need to <RegisterApplicationLink>register an application</RegisterApplicationLink> and enter the API key below.\
|
||||
'To configure Pushover notifications, you will need to <RegisterApplicationLink>register an application</RegisterApplicationLink> and enter the API token below.\
|
||||
(You can use one of our <IconLink>official icons on GitHub</IconLink>.)\
|
||||
You will need also need your user key.',
|
||||
You will also need your user key.',
|
||||
notificationtypes: 'Notification Types',
|
||||
});
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ const messages = defineMessages({
|
||||
botAPI: 'Bot Authentication Token',
|
||||
chatId: 'Chat ID',
|
||||
validationBotAPIRequired: 'You must provide a bot authentication token',
|
||||
validationChatIdRequired: 'You must provide a valid chat ID',
|
||||
validationChatIdRequired: 'You must provide a chat ID',
|
||||
telegramsettingssaved: 'Telegram notification settings saved successfully!',
|
||||
telegramsettingsfailed: 'Telegram notification settings failed to save.',
|
||||
testsent: 'Test notification sent!',
|
||||
@@ -43,9 +43,9 @@ const NotificationsTelegram: React.FC = () => {
|
||||
botAPI: Yup.string().required(
|
||||
intl.formatMessage(messages.validationBotAPIRequired)
|
||||
),
|
||||
chatId: Yup.string()
|
||||
.required(intl.formatMessage(messages.validationChatIdRequired))
|
||||
.matches(/^\d+$/, intl.formatMessage(messages.validationChatIdRequired)),
|
||||
chatId: Yup.string().required(
|
||||
intl.formatMessage(messages.validationChatIdRequired)
|
||||
),
|
||||
});
|
||||
|
||||
if (!data && !error) {
|
||||
|
||||
@@ -185,7 +185,7 @@ const SonarrModal: React.FC<SonarrModalProps> = ({
|
||||
setIsValidated(true);
|
||||
setTestResponse(response.data);
|
||||
if (initialLoad.current) {
|
||||
addToast('Sonarr connection established!', {
|
||||
addToast(intl.formatMessage(messages.toastSonarrTestSuccess), {
|
||||
appearance: 'success',
|
||||
autoDismiss: true,
|
||||
});
|
||||
@@ -193,7 +193,7 @@ const SonarrModal: React.FC<SonarrModalProps> = ({
|
||||
} catch (e) {
|
||||
setIsValidated(false);
|
||||
if (initialLoad.current) {
|
||||
addToast('Failed to connect to Sonarr server', {
|
||||
addToast(intl.formatMessage(messages.toastSonarrTestFailure), {
|
||||
appearance: 'error',
|
||||
autoDismiss: true,
|
||||
});
|
||||
|
||||
@@ -6,6 +6,7 @@ import { defineMessages, useIntl } from 'react-intl';
|
||||
import { useToasts } from 'react-toast-notifications';
|
||||
import useSWR from 'swr';
|
||||
import { Language } from '../../../../../server/lib/settings';
|
||||
import useSettings from '../../../../hooks/useSettings';
|
||||
import { UserType, useUser } from '../../../../hooks/useUser';
|
||||
import Error from '../../../../pages/_error';
|
||||
import Badge from '../../../Common/Badge';
|
||||
@@ -29,6 +30,7 @@ const messages = defineMessages({
|
||||
originallanguageTip:
|
||||
'Filter content by original language (only applies to the "Popular" and "Upcoming" categories)',
|
||||
originalLanguageDefault: 'All Languages',
|
||||
languageServerDefault: 'Default ({language})',
|
||||
});
|
||||
|
||||
const UserGeneralSettings: React.FC = () => {
|
||||
@@ -36,6 +38,7 @@ const UserGeneralSettings: React.FC = () => {
|
||||
const { addToast } = useToasts();
|
||||
const router = useRouter();
|
||||
const { user, mutate } = useUser({ id: Number(router.query.userId) });
|
||||
const { currentSettings } = useSettings();
|
||||
const { data, error, revalidate } = useSWR<{
|
||||
username?: string;
|
||||
region?: string;
|
||||
@@ -58,6 +61,11 @@ const UserGeneralSettings: React.FC = () => {
|
||||
return <Error statusCode={500} />;
|
||||
}
|
||||
|
||||
const defaultLanguageNameFallback =
|
||||
languages.find(
|
||||
(language) => language.iso_639_1 === currentSettings.originalLanguage
|
||||
)?.english_name ?? currentSettings.originalLanguage;
|
||||
|
||||
return (
|
||||
<>
|
||||
<div className="mb-6">
|
||||
@@ -143,6 +151,7 @@ const UserGeneralSettings: React.FC = () => {
|
||||
<RegionSelector
|
||||
name="region"
|
||||
value={values.region ?? ''}
|
||||
isUserSetting
|
||||
onChange={setFieldValue}
|
||||
/>
|
||||
</div>
|
||||
@@ -162,6 +171,21 @@ const UserGeneralSettings: React.FC = () => {
|
||||
name="originalLanguage"
|
||||
>
|
||||
<option value="">
|
||||
{intl.formatMessage(messages.languageServerDefault, {
|
||||
language: currentSettings.originalLanguage
|
||||
? intl.formatDisplayName(
|
||||
currentSettings.originalLanguage,
|
||||
{
|
||||
type: 'language',
|
||||
fallback: 'none',
|
||||
}
|
||||
) ?? defaultLanguageNameFallback
|
||||
: intl.formatMessage(
|
||||
messages.originalLanguageDefault
|
||||
),
|
||||
})}
|
||||
</option>
|
||||
<option value="all">
|
||||
{intl.formatMessage(messages.originalLanguageDefault)}
|
||||
</option>
|
||||
{languages?.map((language) => (
|
||||
|
||||
@@ -14,6 +14,7 @@ const defaultSettings = {
|
||||
movie4kEnabled: false,
|
||||
series4kEnabled: false,
|
||||
region: '',
|
||||
originalLanguage: '',
|
||||
};
|
||||
|
||||
export const SettingsContext = React.createContext<SettingsContextProps>({
|
||||
|
||||
@@ -408,7 +408,7 @@
|
||||
"components.UserEdit.autoapproveSeriesDescription": "Gewährt die automatische Genehmigung für Serienanfragen von diesem Benutzer.",
|
||||
"components.UserEdit.autoapproveMoviesDescription": "Gewährt die automatische Genehmigung für Filmanfragen von diesem Benutzer.",
|
||||
"components.Settings.Notifications.NotificationsSlack.validationWebhookUrlRequired": "Du musst eine Webhook-URL angeben",
|
||||
"components.Settings.Notifications.validationChatIdRequired": "Du musst eine gültige Chat-ID angeben",
|
||||
"components.Settings.Notifications.validationChatIdRequired": "Du musst eine Chat-ID angeben",
|
||||
"components.Settings.Notifications.validationBotAPIRequired": "Du musst ein Bot-Authentifizierungstoken angeben",
|
||||
"components.Settings.Notifications.telegramsettingssaved": "Telegram-Benachrichtigungseinstellungen erfolgreich gespeichert!",
|
||||
"components.Settings.Notifications.telegramsettingsfailed": "Telegram-Benachrichtigungseinstellungen konnten nicht gespeichert werden.",
|
||||
@@ -445,7 +445,7 @@
|
||||
"components.Settings.Notifications.NotificationsPushover.notificationtypes": "Benachrichtigungsarten",
|
||||
"components.Settings.Notifications.NotificationsPushover.pushoversettingsfailed": "Pushover-Benachrichtigungseinstellungen konnten nicht gespeichert werden.",
|
||||
"components.Settings.Notifications.NotificationsPushover.agentenabled": "Agent aktivieren",
|
||||
"components.Settings.Notifications.NotificationsPushover.accessToken": "Anwendungs-/API Token",
|
||||
"components.Settings.Notifications.NotificationsPushover.accessToken": "Anwendungs-/API-Token",
|
||||
"components.RequestList.sortModified": "Zuletzt geändert",
|
||||
"components.RequestList.sortAdded": "Anfragedatum",
|
||||
"components.RequestList.showallrequests": "Zeige alle Anfragen",
|
||||
@@ -830,5 +830,7 @@
|
||||
"components.Settings.Notifications.emailNotificationTypesAlert": "E-Mail-Benachrichtigungen-Empfänger",
|
||||
"components.RegionSelector.regionDefault": "Alle Regionen",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.originalLanguageDefault": "Alle Sprachen",
|
||||
"components.Settings.originalLanguageDefault": "Alle Sprachen"
|
||||
"components.Settings.originalLanguageDefault": "Alle Sprachen",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.languageServerDefault": "Standard ({language})",
|
||||
"components.RegionSelector.regionServerDefault": "Standard ({region})"
|
||||
}
|
||||
|
||||
@@ -139,6 +139,7 @@
|
||||
"components.PlexLoginButton.signingin": "Signing in…",
|
||||
"components.PlexLoginButton.signinwithplex": "Sign In",
|
||||
"components.RegionSelector.regionDefault": "All Regions",
|
||||
"components.RegionSelector.regionServerDefault": "Default ({region})",
|
||||
"components.RequestBlock.profilechanged": "Quality Profile",
|
||||
"components.RequestBlock.requestoverrides": "Request Overrides",
|
||||
"components.RequestBlock.rootfolder": "Root Folder",
|
||||
@@ -262,7 +263,7 @@
|
||||
"components.Settings.Notifications.NotificationsPushover.save": "Save Changes",
|
||||
"components.Settings.Notifications.NotificationsPushover.saving": "Saving…",
|
||||
"components.Settings.Notifications.NotificationsPushover.settinguppushover": "Setting Up Pushover Notifications",
|
||||
"components.Settings.Notifications.NotificationsPushover.settinguppushoverDescription": "To configure Pushover notifications, you will need to <RegisterApplicationLink>register an application</RegisterApplicationLink> and enter the API key below. (You can use one of our <IconLink>official icons on GitHub</IconLink>.) You will need also need your user key.",
|
||||
"components.Settings.Notifications.NotificationsPushover.settinguppushoverDescription": "To configure Pushover notifications, you will need to <RegisterApplicationLink>register an application</RegisterApplicationLink> and enter the API token below. (You can use one of our <IconLink>official icons on GitHub</IconLink>.) You will also need your user key.",
|
||||
"components.Settings.Notifications.NotificationsPushover.test": "Test",
|
||||
"components.Settings.Notifications.NotificationsPushover.testsent": "Test notification sent!",
|
||||
"components.Settings.Notifications.NotificationsPushover.userToken": "User Key",
|
||||
@@ -326,7 +327,7 @@
|
||||
"components.Settings.Notifications.test": "Test",
|
||||
"components.Settings.Notifications.testsent": "Test notification sent!",
|
||||
"components.Settings.Notifications.validationBotAPIRequired": "You must provide a bot authentication token",
|
||||
"components.Settings.Notifications.validationChatIdRequired": "You must provide a valid chat ID",
|
||||
"components.Settings.Notifications.validationChatIdRequired": "You must provide a chat ID",
|
||||
"components.Settings.Notifications.validationEmail": "You must provide a valid email address",
|
||||
"components.Settings.Notifications.validationSmtpHostRequired": "You must provide an SMTP host",
|
||||
"components.Settings.Notifications.validationSmtpPortRequired": "You must provide an SMTP port",
|
||||
@@ -679,6 +680,7 @@
|
||||
"components.UserProfile.ProfileHeader.settings": "Edit Settings",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.displayName": "Display Name",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.generalsettings": "General Settings",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.languageServerDefault": "Default ({language})",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.localuser": "Local User",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.originalLanguageDefault": "All Languages",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.originallanguage": "Discover Language",
|
||||
|
||||
@@ -29,15 +29,15 @@
|
||||
"components.Settings.SettingsAbout.overseerrinformation": "Información de Overseerr",
|
||||
"components.Settings.SettingsAbout.githubdiscussions": "Discursiones en GitHub",
|
||||
"components.Settings.SettingsAbout.gettingsupport": "Soporte",
|
||||
"components.Settings.SettingsAbout.clickheretojoindiscord": "Click aquín para unirte a nuestro servidor de Discord.",
|
||||
"components.Settings.RadarrModal.validationRootFolderRequired": "Debes seleccionar una carpeta raíz.",
|
||||
"components.Settings.RadarrModal.validationProfileRequired": "Debes seleccionar un perfil de calidad.",
|
||||
"components.Settings.RadarrModal.validationPortRequired": "Debes proporcionar un puerto.",
|
||||
"components.Settings.RadarrModal.validationNameRequired": "Debes proporcionar un nombre de servidor.",
|
||||
"components.Settings.RadarrModal.validationHostnameRequired": "Debes proporcionar un hostname/IP.",
|
||||
"components.Settings.RadarrModal.validationApiKeyRequired": "Debes proporcionar la clave API.",
|
||||
"components.Settings.SettingsAbout.clickheretojoindiscord": "Click aquín para unirte a nuestro servidor de Discord!",
|
||||
"components.Settings.RadarrModal.validationRootFolderRequired": "Debes seleccionar una carpeta raíz",
|
||||
"components.Settings.RadarrModal.validationProfileRequired": "Debes seleccionar un perfil de calidad",
|
||||
"components.Settings.RadarrModal.validationPortRequired": "Debes proporcionar un puerto",
|
||||
"components.Settings.RadarrModal.validationNameRequired": "Debes proporcionar un nombre de servidor",
|
||||
"components.Settings.RadarrModal.validationHostnameRequired": "Debes proporcionar un hostname/IP",
|
||||
"components.Settings.RadarrModal.validationApiKeyRequired": "Debes proporcionar la clave API",
|
||||
"components.Settings.RadarrModal.toastRadarrTestSuccess": "¡Conexión con Radarr establecida!",
|
||||
"components.Settings.RadarrModal.toastRadarrTestFailure": "Error al connectar al Servidor Radarr",
|
||||
"components.Settings.RadarrModal.toastRadarrTestFailure": "Error al connectar al Radarr.",
|
||||
"components.Settings.RadarrModal.testing": "Comprobando…",
|
||||
"components.Settings.RadarrModal.test": "Comprobar",
|
||||
"components.Settings.RadarrModal.ssl": "SSL",
|
||||
@@ -65,8 +65,8 @@
|
||||
"components.Settings.Notifications.webhookUrlPlaceholder": "Ajustes del servidor -> Integraciones -> Webhooks",
|
||||
"components.Settings.Notifications.webhookUrl": "URL de Webhook",
|
||||
"components.Settings.Notifications.validationWebhookUrlRequired": "Debes proporcionar una URL del webhook.",
|
||||
"components.Settings.Notifications.validationSmtpPortRequired": "Debes proporcionar un puerto SMTP.",
|
||||
"components.Settings.Notifications.validationSmtpHostRequired": "Debes proporcionar un host SMTP.",
|
||||
"components.Settings.Notifications.validationSmtpPortRequired": "Debes proporcionar un puerto SMTP",
|
||||
"components.Settings.Notifications.validationSmtpHostRequired": "Debes proporcionar un host SMTP",
|
||||
"components.Settings.Notifications.validationFromRequired": "Debe proporcionar una dirección de remitente de correo electrónico.",
|
||||
"components.Settings.Notifications.smtpPort": "Puerto SMTP",
|
||||
"components.Settings.Notifications.smtpHost": "Host SMTP",
|
||||
@@ -93,7 +93,7 @@
|
||||
"components.RequestModal.requestadmin": "Tu petición será aprovada inmediatamente.",
|
||||
"components.RequestModal.requestSuccess": "<strong>{title}</strong> solicitado.",
|
||||
"components.RequestList.showingresults": "Mostrando <strong>{from}</strong> a <strong>{to}</strong> de <strong>{total}</strong> resultados",
|
||||
"components.RequestModal.requestCancel": "Solicitud para <strong>{title}</strong> cancelada",
|
||||
"components.RequestModal.requestCancel": "Solicitud para <strong>{title}</strong> cancelada.",
|
||||
"components.RequestModal.request": "Solicitar",
|
||||
"components.RequestModal.pendingrequest": "Solicitud pendiente para {title}",
|
||||
"components.RequestModal.numberofepisodes": "# de Episodios",
|
||||
@@ -174,12 +174,12 @@
|
||||
"components.Settings.address": "Dirección",
|
||||
"components.Settings.addradarr": "Agregar servidor Radarr",
|
||||
"components.Settings.activeProfile": "Perfil activo",
|
||||
"components.Settings.SonarrModal.validationRootFolderRequired": "Debes seleccionar una carpeta raíz.",
|
||||
"components.Settings.SonarrModal.validationProfileRequired": "Debes seleccionar un perfil.",
|
||||
"components.Settings.SonarrModal.validationPortRequired": "Debes proporcionar un puerto.",
|
||||
"components.Settings.SonarrModal.validationNameRequired": "Debes proporcionar un nombre de servidor.",
|
||||
"components.Settings.SonarrModal.validationHostnameRequired": "Debes proporcionar un hostname/IP.",
|
||||
"components.Settings.SonarrModal.validationApiKeyRequired": "Debes proporcionar la clave API.",
|
||||
"components.Settings.SonarrModal.validationRootFolderRequired": "Debes seleccionar una carpeta raíz",
|
||||
"components.Settings.SonarrModal.validationProfileRequired": "Debes seleccionar un perfil",
|
||||
"components.Settings.SonarrModal.validationPortRequired": "Debes proporcionar un puerto",
|
||||
"components.Settings.SonarrModal.validationNameRequired": "Debes proporcionar un nombre de servidor",
|
||||
"components.Settings.SonarrModal.validationHostnameRequired": "Debes proporcionar un hostname/IP",
|
||||
"components.Settings.SonarrModal.validationApiKeyRequired": "Debes proporcionar la clave API",
|
||||
"components.Settings.SonarrModal.toastRadarrTestSuccess": "¡Conexión con Sonarr establecida!",
|
||||
"components.Settings.menuLogs": "Registro",
|
||||
"pages.somethingWentWrong": "{statusCode} – Algo salió mal",
|
||||
@@ -274,8 +274,8 @@
|
||||
"components.Setup.continue": "Continuar",
|
||||
"components.Setup.configureplex": "Configurar Plex",
|
||||
"components.Setup.configureservices": "Configurar servicios",
|
||||
"components.Settings.validationPortRequired": "Debes proporcionar un puerto.",
|
||||
"components.Settings.validationHostnameRequired": "Debe proporcionar un nombre de host / IP.",
|
||||
"components.Settings.validationPortRequired": "Debes proporcionar un puerto",
|
||||
"components.Settings.validationHostnameRequired": "Debe proporcionar un nombre de host / IP",
|
||||
"components.Settings.syncing": "Sincronizando…",
|
||||
"components.Settings.sync": "Sincronizar bibliotecas de Plex",
|
||||
"components.Settings.startscan": "Iniciar escaneo",
|
||||
@@ -316,15 +316,15 @@
|
||||
"components.Settings.default4k": "4K predeterminado",
|
||||
"components.Settings.default": "Predeterminado",
|
||||
"components.Settings.currentlibrary": "Biblioteca actual: {name}",
|
||||
"components.Settings.copied": "Clave API copiada en el portapapeles",
|
||||
"components.Settings.copied": "Clave API copiada en el portapapeles.",
|
||||
"components.Settings.cancelscan": "Cancelar escaneo",
|
||||
"components.Settings.applicationurl": "URL de la aplicación",
|
||||
"components.Settings.apikey": "Clave API",
|
||||
"components.Setup.tip": "Consejo",
|
||||
"components.Setup.syncingbackground": "La sincronización se ejecutará en segundo plano. Mientras tanto, puede continuar con el proceso de configuración.",
|
||||
"i18n.deleting": "Eliminando…",
|
||||
"components.UserList.userdeleteerror": "Algo salió mal al eliminar al usuario",
|
||||
"components.UserList.userdeleted": "Usuario eliminado",
|
||||
"components.UserList.userdeleteerror": "Algo salió mal al eliminar al usuario.",
|
||||
"components.UserList.userdeleted": "Usuario eliminado.",
|
||||
"components.UserList.deleteuser": "Eliminar usuario",
|
||||
"components.UserList.deleteconfirm": "¿Está seguro de que desea eliminar este usuario? Se eliminarán todas las solicitudes existentes de este usuario.",
|
||||
"components.Settings.nodefaultdescription": "Al menos un servidor debe estar marcado como predeterminado antes de que cualquier solicitud llegue a sus servicios.",
|
||||
@@ -334,7 +334,7 @@
|
||||
"components.Settings.SonarrModal.testFirstQualityProfiles": "Prueba la conexión para cargar perfiles de calidad",
|
||||
"components.Settings.SonarrModal.loadingrootfolders": "Cargando carpetas raíz…",
|
||||
"components.Settings.SonarrModal.loadingprofiles": "Cargando perfiles de calidad…",
|
||||
"components.Settings.RadarrModal.validationMinimumAvailabilityRequired": "Debes seleccionar disponibilidad mínima.",
|
||||
"components.Settings.RadarrModal.validationMinimumAvailabilityRequired": "Debes seleccionar disponibilidad mínima",
|
||||
"components.Settings.RadarrModal.testFirstRootFolders": "Prueba la conexión para cargar carpetas raíz",
|
||||
"components.Settings.RadarrModal.testFirstQualityProfiles": "Prueba la conexión para cargar perfiles de calidad",
|
||||
"components.Settings.RadarrModal.loadingrootfolders": "Cargando carpetas raíz…",
|
||||
@@ -365,7 +365,7 @@
|
||||
"components.Settings.Notifications.testsent": "¡Notificación de prueba enviada!",
|
||||
"components.Settings.Notifications.test": "Comprobar",
|
||||
"components.MovieDetails.studio": "Estudio",
|
||||
"components.UserList.importfromplexerror": "Algo salió mal importando usuarios de Plex",
|
||||
"components.UserList.importfromplexerror": "Algo salió mal importando usuarios de Plex.",
|
||||
"components.UserList.importfromplex": "Importar usuarios de Plex",
|
||||
"components.UserList.importedfromplex": "{userCount, plural, =0 {Ningún} one {# Nuevo usuario} other {# Nuevos usuarios}} importado/s de Plex",
|
||||
"components.TvDetails.viewfullcrew": "Ver Equipo Completo",
|
||||
@@ -405,7 +405,7 @@
|
||||
"components.Settings.Notifications.NotificationsSlack.saving": "Guardando…",
|
||||
"components.Settings.Notifications.NotificationsSlack.save": "Guardar cambios",
|
||||
"components.Settings.Notifications.NotificationsSlack.agentenabled": "Agente habilitado",
|
||||
"components.RequestList.RequestItem.failedretry": "Algo salió mal al reintentar la solicitud",
|
||||
"components.RequestList.RequestItem.failedretry": "Algo salió mal al reintentar la solicitud.",
|
||||
"components.MovieDetails.watchtrailer": "Ver Trailer",
|
||||
"components.MovieDetails.view": "Ver",
|
||||
"components.NotificationTypeSelector.mediarequestedDescription": "Envía una notificación cuando se solicitan nuevos medios. Para ciertos agentes, esto solo enviará la notificación a los administradores o usuarios con el permiso \"Administrar solicitudes\".",
|
||||
@@ -464,7 +464,7 @@
|
||||
"components.UserList.password": "Contraseña",
|
||||
"components.UserList.localuser": "Usuario local",
|
||||
"components.UserList.email": "Dirección de correo electrónico",
|
||||
"components.UserList.creating": "Creando",
|
||||
"components.UserList.creating": "Creando…",
|
||||
"components.UserList.createuser": "Crear usuario",
|
||||
"components.UserList.createlocaluser": "Crear usuario local",
|
||||
"components.UserList.create": "Crear",
|
||||
@@ -498,7 +498,7 @@
|
||||
"components.RequestModal.requestedited": "Solicitud editada.",
|
||||
"components.RequestModal.requestcancelled": "Solicitud cancelada.",
|
||||
"components.RequestModal.request4ktitle": "Solicitar {title} en 4K",
|
||||
"components.RequestModal.request4kfrom": "Actualmente hay una solicitud 4K pendiente de {username}",
|
||||
"components.RequestModal.request4kfrom": "Actualmente hay una solicitud 4K pendiente de {username}.",
|
||||
"components.RequestModal.request4k": "Solicitar 4K",
|
||||
"components.RequestModal.pending4krequest": "Solicitud pendiente para {title} en 4K",
|
||||
"components.RequestModal.errorediting": "Algo salió mal al editar la solicitud.",
|
||||
|
||||
@@ -297,7 +297,7 @@
|
||||
"i18n.processing": "Traitement en cours…",
|
||||
"i18n.tvshows": "Séries",
|
||||
"i18n.unavailable": "Indisponible",
|
||||
"pages.internalServerError": "{statusCode} – Erreur du serveur interne",
|
||||
"pages.internalServerError": "{statusCode} – Erreur interne au serveur",
|
||||
"pages.oops": "Oups",
|
||||
"pages.pageNotFound": "404 – Page non trouvée",
|
||||
"pages.returnHome": "Retourner à l'acceuil",
|
||||
@@ -305,8 +305,8 @@
|
||||
"pages.somethingWentWrong": "{statusCode} – Une erreur est survenue",
|
||||
"components.TvDetails.TvCast.fullseriescast": "Casting complet de la série",
|
||||
"components.MovieDetails.MovieCast.fullcast": "Casting complet",
|
||||
"components.Settings.Notifications.emailsettingssaved": "Paramètres de notification par courriel enregistrés avec succès !",
|
||||
"components.Settings.Notifications.emailsettingsfailed": "Les paramètres de notification par courriel n'ont pas pu être enregistrés.",
|
||||
"components.Settings.Notifications.emailsettingssaved": "Paramètres de notification par e-mail enregistrés avec succès !",
|
||||
"components.Settings.Notifications.emailsettingsfailed": "Les paramètres de notification par e-mail n'ont pas pu être enregistrés.",
|
||||
"components.Settings.Notifications.discordsettingssaved": "Paramètres de notification Discord enregistrés avec succès !",
|
||||
"components.Settings.Notifications.discordsettingsfailed": "Les paramètres de notification Discord n'ont pas pu être enregistrés.",
|
||||
"components.Settings.validationPortRequired": "Vous devez fournir un port",
|
||||
@@ -408,7 +408,7 @@
|
||||
"components.Settings.Notifications.NotificationsSlack.save": "Enregistrer les changements",
|
||||
"components.Settings.Notifications.NotificationsSlack.agentenabled": "Activer l'agent",
|
||||
"components.RequestList.RequestItem.failedretry": "Une erreur s'est produite lors du renvoi de la demande d'ajout.",
|
||||
"components.Settings.Notifications.validationChatIdRequired": "Vous devez fournir un identifiant de discussion valide",
|
||||
"components.Settings.Notifications.validationChatIdRequired": "Vous devez fournir un identifiant de discussion",
|
||||
"components.Settings.Notifications.botAPI": "Jeton d'authentification du bot",
|
||||
"components.Settings.Notifications.validationBotAPIRequired": "Vous devez fournir la clé d'authentification du bot",
|
||||
"components.Settings.Notifications.telegramsettingssaved": "Paramètres de notification Telegram enregistrés avec succès !",
|
||||
@@ -418,7 +418,7 @@
|
||||
"components.Settings.Notifications.settinguptelegramDescription": "Pour configurer les notifications Telegram, vous aurez besoin de <CreateBotLink>créer un bot</CreateBotLink> et obtenir la clé API du bot. De plus, vous aurez besoin de l'identifiant de conversion pour la conversation à laquelle vous souhaitez envoyer des notifications. Vous pouvez le récupérer en ajoutant <GetIdBotLink>@get_id_bot</GetIdBotLink> à la conversation -de groupe-.",
|
||||
"components.Settings.Notifications.settinguptelegram": "Configuration des notifications Telegram",
|
||||
"components.StatusChacker.reloadOverseerr": "Recharger Overseerr",
|
||||
"components.StatusChacker.newversionavailable": "Nouvelle version disponible",
|
||||
"components.StatusChacker.newversionavailable": "Une nouvelle version est disponible",
|
||||
"components.StatusChacker.newversionDescription": "Une mise à jour est maintenant disponible. Cliquez sur le bouton ci-dessous pour recharger l'application.",
|
||||
"components.Settings.SettingsAbout.documentation": "Documentation",
|
||||
"components.Settings.Notifications.notificationtypes": "Types de notification",
|
||||
@@ -437,7 +437,7 @@
|
||||
"components.Settings.Notifications.NotificationsPushover.userToken": "Clé d'utilisateur",
|
||||
"components.Settings.Notifications.NotificationsPushover.testsent": "Notification de test envoyée !",
|
||||
"components.Settings.Notifications.NotificationsPushover.test": "Test",
|
||||
"components.Settings.Notifications.NotificationsPushover.settinguppushoverDescription": "Pour configurer Pushover, vous aurez besoin <RegisterApplicationLink>d'enregistrer une application</RegisterApplicationLink> et d'ajouter la clé API ci-dessous. Vous pouvez utiliser l'une des icônes présentes dans le <IconLink>dossier public</IconLink> sur GitHub. Vous aurez également besoin du jeton d'utilisateur.",
|
||||
"components.Settings.Notifications.NotificationsPushover.settinguppushoverDescription": "Pour configurer Pushover, vous aurez besoin <RegisterApplicationLink>d'enregistrer une application</RegisterApplicationLink> et d'ajouter le jeton API ci-dessous. Vous pouvez utiliser l'une des icônes présentes dans le <IconLink>dossier public</IconLink> sur GitHub. Vous aurez également besoin du jeton d'utilisateur.",
|
||||
"components.Settings.Notifications.NotificationsPushover.settinguppushover": "Configuration des notifications Pushover",
|
||||
"components.Settings.Notifications.NotificationsPushover.saving": "Enregistrement…",
|
||||
"components.Settings.Notifications.NotificationsPushover.save": "Enregistrer les changements",
|
||||
@@ -459,7 +459,7 @@
|
||||
"components.UserEdit.request4kMovies": "Demander des films 4K",
|
||||
"components.UserEdit.request4kDescription": "Accorde la permission de demander des films et séries en 4K.",
|
||||
"components.UserEdit.request4k": "Demander la 4K",
|
||||
"components.StatusBadge.status4k": "{status} 4K",
|
||||
"components.StatusBadge.status4k": "{status} en 4K",
|
||||
"components.Settings.Notifications.NotificationsWebhook.webhooksettingssaved": "Paramètres de notification Webhook enregistrés avec succès !",
|
||||
"components.Settings.Notifications.NotificationsWebhook.webhooksettingsfailed": "Échec de l'enregistrement des paramètres de notification du webhook.",
|
||||
"components.Settings.Notifications.NotificationsWebhook.webhookUrlPlaceholder": "URL webhook distante",
|
||||
@@ -506,11 +506,11 @@
|
||||
"components.UserList.createlocaluser": "Créer un utilisateur local",
|
||||
"components.UserList.create": "Créer",
|
||||
"components.UserList.autogeneratepassword": "Générer automatiquement le mot de passe",
|
||||
"components.UserList.passwordinfodescription": "Les notifications par courrier électronique doivent être configurées et activées afin de pouvoir utiliser les mots de passe générés automatiquement.",
|
||||
"components.UserList.email": "Adresse électronique",
|
||||
"components.UserList.passwordinfodescription": "Les notifications par e-mail doivent être configurées et activées afin de pouvoir utiliser les mots de passe générés automatiquement.",
|
||||
"components.UserList.email": "Adresse e-mail",
|
||||
"components.UserList.validationemailrequired": "Vous devez entrer une adresse électronique valide",
|
||||
"components.Login.validationpasswordrequired": "Vous devez fournir un mot de passe",
|
||||
"components.Login.validationemailrequired": "Vous devez fournir une adresse électronique valide",
|
||||
"components.Login.validationemailrequired": "Vous devez fournir un e-mail valide",
|
||||
"components.Login.signinwithoverseerr": "Utilisez votre compte {applicationTitle}",
|
||||
"components.Login.password": "Mot de passe",
|
||||
"components.Login.loginerror": "Une erreur s'est produite lors de la tentative de connexion.",
|
||||
@@ -685,7 +685,7 @@
|
||||
"components.PermissionEdit.viewrequestsDescription": "Accorde l'autorisation de consulter les demandes des autres utilisateurs.",
|
||||
"components.PermissionEdit.viewrequests": "Voir les demandes",
|
||||
"components.Discover.discover": "Découverte",
|
||||
"components.UserList.validationEmail": "Vous devez fournir une adresse électronique valide",
|
||||
"components.UserList.validationEmail": "Vous devez fournir un e-mail valide",
|
||||
"components.UserEdit.validationEmail": "Vous devez fournir une adresse électronique valide",
|
||||
"components.TvDetails.nextAirDate": "Prochaine diffusion",
|
||||
"components.Settings.SonarrModal.validationBaseUrlTrailingSlash": "L'URL de base ne doit pas se terminer par une barre oblique finale",
|
||||
@@ -693,21 +693,21 @@
|
||||
"components.Settings.RadarrModal.validationBaseUrlTrailingSlash": "L'URL de base ne doit pas se terminer par une barre oblique finale",
|
||||
"components.Settings.RadarrModal.validationBaseUrlLeadingSlash": "L'URL de base doit être précédée d'une barre oblique",
|
||||
"components.Settings.Notifications.validationWebhookUrl": "Vous devez fournir une URL valide",
|
||||
"components.Settings.Notifications.validationEmail": "Vous devez fournir une adresse électronique valide",
|
||||
"components.Settings.Notifications.validationEmail": "Vous devez fournir un e-mail valide",
|
||||
"components.Settings.Notifications.NotificationsWebhook.validationWebhookUrl": "Vous devez fournir une URL valide",
|
||||
"components.Settings.Notifications.NotificationsSlack.validationWebhookUrl": "Vous devez fournir une URL valide",
|
||||
"components.ResetPassword.validationpasswordrequired": "Vous devez fournir un mot de passe",
|
||||
"components.ResetPassword.validationpasswordminchars": "Le mot de passe est trop court ; il doit comporter au moins 8 caractères",
|
||||
"components.ResetPassword.validationpasswordmatch": "Le mot de passe doit correspondre",
|
||||
"components.ResetPassword.validationemailrequired": "Vous devez fournir une adresse électronique valide",
|
||||
"components.ResetPassword.validationemailrequired": "Vous devez fournir un e-mail valide",
|
||||
"components.ResetPassword.resetpasswordsuccessmessage": "Le mot de passe a été réinitialisé avec succès, sous réserve que le lien était bien valide et associé à un utilisateur existant.",
|
||||
"components.ResetPassword.resetpassword": "Réinitialiser votre mot de passe",
|
||||
"components.ResetPassword.requestresetlinksuccessmessage": "Un lien de réinitialisation du mot de passe sera envoyé à l'adresse électronique fournie si elle est associée à un utilisateur valide.",
|
||||
"components.ResetPassword.requestresetlinksuccessmessage": "Un lien de réinitialisation du mot de passe sera envoyé à l'e-mail fourni si il est associé à un utilisateur valide.",
|
||||
"components.ResetPassword.password": "Mot de passe",
|
||||
"components.ResetPassword.gobacklogin": "Retourner à la page de connexion",
|
||||
"components.ResetPassword.forgotpassword": "Réinitialiser votre mot de passe",
|
||||
"components.ResetPassword.emailresetlink": "M'envoyer un lien de récupération",
|
||||
"components.ResetPassword.email": "Adresse électronique",
|
||||
"components.ResetPassword.emailresetlink": "Envoyez-moi un lien de récupération par e-mail",
|
||||
"components.ResetPassword.email": "Adresse e-mail",
|
||||
"components.ResetPassword.confirmpassword": "Confirmez le mot de passe",
|
||||
"components.Login.forgotpassword": "Mot de passe oublié ?",
|
||||
"components.Settings.SettingsJobsCache.process": "Procès",
|
||||
@@ -825,9 +825,11 @@
|
||||
"components.Settings.originallanguage": "Langue à découvrir",
|
||||
"components.RegionSelector.regionDefault": "Toutes les régions",
|
||||
"components.Settings.Notifications.emailNotificationTypesAlertDescription": "Les notifications « Média demandé » et « Échec d’ajout du média » seront exclusivement envoyées aux utilisateurs bénéficiant de l'autorisation « Gérer les demandes ».",
|
||||
"components.Settings.Notifications.emailNotificationTypesAlert": "Destinataires des notifications par courriel",
|
||||
"components.Settings.Notifications.emailNotificationTypesAlert": "Destinataires des notifications par e-mail",
|
||||
"components.Settings.webhook": "Webhook",
|
||||
"components.Settings.email": "Courriel",
|
||||
"components.Settings.email": "E-mail",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.originalLanguageDefault": "Toutes les langues",
|
||||
"components.Settings.originalLanguageDefault": "Toutes les langues"
|
||||
"components.Settings.originalLanguageDefault": "Toutes les langues",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.languageServerDefault": "Défaut ({language})",
|
||||
"components.RegionSelector.regionServerDefault": "Défaut ({region})"
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
"components.PersonDetails.crewmember": "Stáb tag",
|
||||
"components.PersonDetails.ascharacter": "mint {character}",
|
||||
"components.PersonDetails.appearsin": "Szerepel a következőkben",
|
||||
"components.PermissionEdit.voteDescription": "Engedélyt ad a kérelmek szavazására. (A szavazás funkció még nincs implementálva)",
|
||||
"components.PermissionEdit.voteDescription": "Engedélyt ad a kérelmek szavazására. (A szavazás funkció még nincs implementálva).",
|
||||
"components.PermissionEdit.vote": "Szavazás",
|
||||
"components.PermissionEdit.usersDescription": "Engedélyt ad az Overseerr felhasználók kezelésére. Az ezzel az engedéllyel rendelkező felhasználók nem módosíthatják a rendszergazdai jogosultsággal rendelkező felhasználókat, és nem adhatják meg a jogosultságot más felhasználónak.",
|
||||
"components.PermissionEdit.users": "Felhasználók kezelése",
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
"components.Discover.discovermovies": "Film popolari",
|
||||
"components.UserEdit.email": "Indirizzo e-mail",
|
||||
"components.Settings.Notifications.validationFromRequired": "È necessario fornire un indirizzo mittente di posta elettronica.",
|
||||
"components.Settings.Notifications.emailsettingssaved": "Impostazioni di notifica tramite posta elettronica salvate!",
|
||||
"components.Settings.Notifications.emailsettingssaved": "Impostazioni di notifica tramite posta elettronica salvate con successo!",
|
||||
"components.Settings.Notifications.emailsettingsfailed": "Impossibile salvare le impostazioni di notifica tramite posta elettronica.",
|
||||
"components.Settings.Notifications.emailsender": "Indirizzo del mittente",
|
||||
"components.Settings.SonarrModal.testing": "Test in corso…",
|
||||
@@ -131,7 +131,7 @@
|
||||
"i18n.available": "Disponibile",
|
||||
"i18n.approved": "Approvato",
|
||||
"i18n.approve": "Approva",
|
||||
"components.UserList.usertype": "Tipo di utente",
|
||||
"components.UserList.usertype": "Tipo Utente",
|
||||
"components.UserList.username": "Nome utente",
|
||||
"i18n.unavailable": "Non disponibile",
|
||||
"i18n.tvshows": "Serie",
|
||||
@@ -208,7 +208,7 @@
|
||||
"components.Settings.librariesRemaining": "Biblioteche rimanenti: {count}",
|
||||
"components.Settings.hostname": "Nome host/IP",
|
||||
"components.Settings.generalsettingsDescription": "Configura le impostazioni globali e predefinite per Overseerr.",
|
||||
"components.Settings.generalsettings": "Impostazioni generali",
|
||||
"components.Settings.generalsettings": "Impostazioni Generali",
|
||||
"components.Settings.edit": "Modifica",
|
||||
"components.Settings.deleteserverconfirm": "Sei sicuro/a di voler eliminare questo server?",
|
||||
"components.Settings.delete": "Elimina",
|
||||
@@ -287,7 +287,7 @@
|
||||
"components.Settings.Notifications.smtpPort": "Porta SMTP",
|
||||
"components.Settings.Notifications.smtpHost": "Host SMTP",
|
||||
"components.Settings.Notifications.enableSsl": "Abilita SSL",
|
||||
"components.Settings.Notifications.discordsettingssaved": "Impostazioni di Discord salvate!",
|
||||
"components.Settings.Notifications.discordsettingssaved": "Impostazioni di Discord salvate con successo!",
|
||||
"components.Settings.Notifications.authUser": "Nome utente SMTP",
|
||||
"components.Settings.Notifications.authPass": "Password SMTP",
|
||||
"components.RequestModal.requestseasons": "Richiedi {seasonCount} {seasonCount, plural, one {Season} other {Seasons}}",
|
||||
@@ -401,7 +401,7 @@
|
||||
"components.Settings.Notifications.NotificationsSlack.validationWebhookUrlRequired": "È necessario fornire un URL per il webhook.",
|
||||
"components.Settings.Notifications.NotificationsSlack.test": "Prova",
|
||||
"components.Settings.Notifications.NotificationsSlack.testsent": "Notifica di prova inviata!",
|
||||
"components.Settings.Notifications.NotificationsSlack.slacksettingssaved": "Impostazioni di Slack salvate!",
|
||||
"components.Settings.Notifications.NotificationsSlack.slacksettingssaved": "Impostazioni di Slack salvate con successo!",
|
||||
"components.Settings.Notifications.NotificationsSlack.slacksettingsfailed": "Impossibile salvare le impostazioni di Slack.",
|
||||
"components.Settings.Notifications.NotificationsSlack.settingupslackDescription": "Per configurare le notifiche con Slack, sarà necessario creare un'integrazione con un <WebhookLink>Webhook in ingresso</WebhookLink> e utilizzare l'URL del webhook fornito di seguito.",
|
||||
"components.Settings.Notifications.NotificationsSlack.settingupslack": "Impostazione delle notifiche di Slack",
|
||||
@@ -410,13 +410,13 @@
|
||||
"components.Settings.Notifications.NotificationsSlack.agentenabled": "Abilita Agente",
|
||||
"components.Settings.Notifications.validationChatIdRequired": "Devi fornire un ID discussione",
|
||||
"components.Settings.Notifications.validationBotAPIRequired": "Devi fornire una chiave API bot",
|
||||
"components.Settings.Notifications.telegramsettingssaved": "Impostazioni di Telegram salvate!",
|
||||
"components.Settings.Notifications.telegramsettingssaved": "Impostazioni di Telegram salvate con successo!",
|
||||
"components.Settings.Notifications.telegramsettingsfailed": "Impossibile salvare le impostazioni di Telegram.",
|
||||
"components.Settings.Notifications.senderName": "Nome del mittente",
|
||||
"components.Settings.Notifications.settinguptelegramDescription": "Per configurare le notifiche di Telegram, è necessario <CreateBotLink>creare un bot</CreateBotLink> e ottenere la chiave API. Inoltre, è necessario l'ID chat per la chat in cui si desidera che il bot invii notifiche. Puoi ottenerlo aggiungendo <GetIdBotLink>@get_id_bot</GetIdBotLink> alla chat o alla chat di gruppo.",
|
||||
"components.Settings.Notifications.settinguptelegram": "Configurazione delle notifiche di Telegram",
|
||||
"components.Settings.Notifications.chatId": "ID chat",
|
||||
"components.Settings.Notifications.botAPI": "API bot",
|
||||
"components.Settings.Notifications.botAPI": "Token di autenticazione bot",
|
||||
"components.StatusChacker.reloadOverseerr": "Ricarica Overseerr",
|
||||
"components.StatusChacker.newversionavailable": "Nuova versione disponibile",
|
||||
"components.StatusChacker.newversionDescription": "È ora disponibile un aggiornamento. Fai clic sul pulsante in basso per ricaricare l'applicazione.",
|
||||
@@ -424,7 +424,7 @@
|
||||
"components.Settings.Notifications.notificationtypes": "Tipi di notifica",
|
||||
"components.Settings.Notifications.NotificationsSlack.notificationtypes": "Tipi di notifica",
|
||||
"components.NotificationTypeSelector.mediarequestedDescription": "Invia una notifica quando un nuovo media viene richiesto. Per alcuni agenti, la notifica verrà inviata solo agli amministratori o agli utenti con l'autorizzazione «Gestione richieste».",
|
||||
"components.NotificationTypeSelector.mediarequested": "Media richiesto",
|
||||
"components.NotificationTypeSelector.mediarequested": "Media Richiesto",
|
||||
"components.NotificationTypeSelector.mediafailedDescription": "Invia una notifica quando il media non viene aggiunto a Radarr o Sonarr.",
|
||||
"components.NotificationTypeSelector.mediafailed": "Aggiunta media non riuscita",
|
||||
"components.NotificationTypeSelector.mediaavailableDescription": "Invia una notifica quando il media diventa disponibile.",
|
||||
@@ -433,19 +433,19 @@
|
||||
"components.NotificationTypeSelector.mediaavailable": "Media disponibile",
|
||||
"i18n.request": "Richiedi",
|
||||
"components.Settings.Notifications.NotificationsPushover.test": "Test",
|
||||
"components.Settings.Notifications.NotificationsPushover.validationUserTokenRequired": "È necessario fornire un token utente",
|
||||
"components.Settings.Notifications.NotificationsPushover.validationAccessTokenRequired": "È necessario fornire un token di accesso",
|
||||
"components.Settings.Notifications.NotificationsPushover.userToken": "Token utente",
|
||||
"components.Settings.Notifications.NotificationsPushover.validationUserTokenRequired": "È necessario fornire una chiave utente valida",
|
||||
"components.Settings.Notifications.NotificationsPushover.validationAccessTokenRequired": "È necessario fornire un token di applicazione valido",
|
||||
"components.Settings.Notifications.NotificationsPushover.userToken": "Chiave utente",
|
||||
"components.Settings.Notifications.NotificationsPushover.testsent": "Notifica di prova inviata!",
|
||||
"components.Settings.Notifications.NotificationsPushover.settinguppushoverDescription": "Per configurare Pushover è necessario <RegisterApplicationLink>registrare un'applicazione</RegisterApplicationLink> e ottenere il token di accesso. Quando si configura l'applicazione, è possibile utilizzare una delle icone nella <IconLink>cartella pubblica</IconLink> su GitHub. È inoltre necessario il token utente, che può essere trovato nella pagina iniziale di Pushover quando si accede.",
|
||||
"components.Settings.Notifications.NotificationsPushover.settinguppushover": "Impostazione delle notifiche di Pushover",
|
||||
"components.Settings.Notifications.NotificationsPushover.saving": "Salvataggio…",
|
||||
"components.Settings.Notifications.NotificationsPushover.save": "Salva le modifiche",
|
||||
"components.Settings.Notifications.NotificationsPushover.pushoversettingssaved": "Impostazioni di Pushover salvate!",
|
||||
"components.Settings.Notifications.NotificationsPushover.pushoversettingssaved": "Impostazioni di Pushover salvate con successo!",
|
||||
"components.Settings.Notifications.NotificationsPushover.pushoversettingsfailed": "Impossibile salvare le impostazioni di Pushover.",
|
||||
"components.Settings.Notifications.NotificationsPushover.notificationtypes": "Tipi di notifica",
|
||||
"components.Settings.Notifications.NotificationsPushover.agentenabled": "Abilita Agente",
|
||||
"components.Settings.Notifications.NotificationsPushover.accessToken": "Token di accesso",
|
||||
"components.Settings.Notifications.NotificationsPushover.accessToken": "Token di API/applicazione",
|
||||
"components.RequestList.sortModified": "Ultima modifica",
|
||||
"components.RequestList.sortAdded": "Data della richiesta",
|
||||
"components.RequestList.showallrequests": "Mostra tutte le richieste",
|
||||
@@ -515,17 +515,17 @@
|
||||
"components.UserEdit.advancedrequest": "Richieste avanzate",
|
||||
"components.StatusBadge.status4k": "4K {status}",
|
||||
"components.Settings.hideAvailable": "Nascondi i media disponibili",
|
||||
"components.Settings.Notifications.NotificationsWebhook.webhooksettingssaved": "Impostazioni di Webhook salvate!",
|
||||
"components.Settings.Notifications.NotificationsWebhook.webhooksettingssaved": "Impostazioni di Webhook salvate con successo!",
|
||||
"components.Settings.Notifications.NotificationsWebhook.webhooksettingsfailed": "Impossibile salvare le impostazioni di Webhook.",
|
||||
"components.Settings.Notifications.NotificationsWebhook.webhookUrlPlaceholder": "URL del webhook remoto",
|
||||
"components.Settings.Notifications.NotificationsWebhook.webhookUrl": "URL del webhook",
|
||||
"components.Settings.Notifications.NotificationsWebhook.validationWebhookUrlRequired": "Devi fornire un URL webhook.",
|
||||
"components.Settings.Notifications.NotificationsWebhook.validationJsonPayloadRequired": "È necessario fornire un payload JSON",
|
||||
"components.Settings.Notifications.NotificationsWebhook.validationJsonPayloadRequired": "È necessario fornire un payload JSON valido",
|
||||
"components.Settings.Notifications.NotificationsWebhook.test": "Test",
|
||||
"components.Settings.Notifications.NotificationsWebhook.resetPayloadSuccess": "Payload JSON reimpostato correttamente.",
|
||||
"components.Settings.Notifications.NotificationsWebhook.resetPayloadSuccess": "Payload JSON reimpostato correttamente!",
|
||||
"components.Settings.Notifications.NotificationsWebhook.resetPayload": "Ripristino delle impostazioni predefinite",
|
||||
"components.Settings.Notifications.NotificationsWebhook.notificationtypes": "Tipi di notifica",
|
||||
"components.Settings.Notifications.NotificationsWebhook.customJson": "Payload JSON personalizzato",
|
||||
"components.Settings.Notifications.NotificationsWebhook.customJson": "Payload JSON",
|
||||
"components.RequestModal.requestedited": "Richiesta modificata.",
|
||||
"components.RequestModal.requestcancelled": "Richiesta annullata.",
|
||||
"components.RequestModal.request4kfrom": "Al momento è presente una richiesta 4K in sospeso da {username}.",
|
||||
@@ -552,7 +552,7 @@
|
||||
"components.PermissionEdit.settings": "Gestisci le impostazioni",
|
||||
"components.PermissionEdit.request4kTv": "Richiedi serie in 4K",
|
||||
"components.PermissionEdit.request4kMovies": "Rechiedi film in 4K",
|
||||
"components.PermissionEdit.managerequests": "Gestisci le richieste",
|
||||
"components.PermissionEdit.managerequests": "Gestisci Richieste",
|
||||
"components.PermissionEdit.autoapproveSeries": "Approva Automaticamente le Serie",
|
||||
"components.PermissionEdit.autoapproveMovies": "Approva Automaticamente i Film",
|
||||
"components.PermissionEdit.autoapprove": "Approvazione automatica",
|
||||
@@ -739,7 +739,7 @@
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.notificationsettings": "Impostazioni Notifiche",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.localuser": "Utente Locale",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.enableNotifications": "Abilita Notifiche",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.discordIdTip": "Il <FindDiscordIdLink> numero ID </FindDiscordIdLink> per il tuo account Discord",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.discordIdTip": "<FindDiscordIdLink>ID utente</FindDiscordIdLink> del tuo account Discord",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.discordId": "ID Discord",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsSuccess": "Impostazioni salvate correttamente!",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.saving": "Salvataggio…",
|
||||
@@ -764,10 +764,10 @@
|
||||
"components.Settings.Notifications.NotificationsPushbullet.validationAccessTokenRequired": "È necessario fornire un token di accesso",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.testSent": "Notifica di prova inviata!",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.test": "Test",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.settingUpPushbulletDescription": "Per configurare le notifiche di Pushbullet, è necessario creare un <CreateAccessTokenLink>token di accesso</CreateAccessTokenLink> e immetterlo di seguito.",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.settingUpPushbulletDescription": "Per configurare le notifiche di Pushbullet, sarà necessario creare un <CreateAccessTokenLink>token di accesso</CreateAccessTokenLink> e immetterlo di seguito.",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.settingUpPushbullet": "Configurazione delle notifiche di Pushover",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.save": "Salva le modifiche",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.pushbulletSettingsSaved": "Impostazioni di Pushover salvate!",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.pushbulletSettingsSaved": "Impostazioni di Pushover salvate correttamente!",
|
||||
"components.Layout.UserDropdown.settings": "Impostazioni",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.pushbulletSettingsFailed": "Impossibile salvare le impostazioni di Pushbullet.",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.notificationTypes": "Tipi di Notifica",
|
||||
@@ -817,10 +817,15 @@
|
||||
"components.Settings.originallanguage": "Lingua da scoprire",
|
||||
"components.Settings.email": "E-mail",
|
||||
"components.Settings.Notifications.emailNotificationTypesAlert": "Destinatari delle notifiche via posta elettronica",
|
||||
"components.RegionSelector.regionDefault": "Tutto",
|
||||
"components.RegionSelector.regionDefault": "Tutte le regioni",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.regionTip": "Filtra contenuto per area (si applica solo alle categorie «Popolare» e «In uscita»)",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.originallanguageTip": "Filtra il contenuto in base alla lingua originale (si applica solo alle categorie «Popolare» e «In uscita»)",
|
||||
"components.Settings.regionTip": "Filtra contenuto per regione (si applica solo alle categorie «Popolare» e «In uscita»)",
|
||||
"components.Settings.originallanguageTip": "Filtra il contenuto in base alla lingua originale (si applica solo alle categorie «Popolare» e «In uscita»)",
|
||||
"components.Discover.upcomingtv": "Serie in uscita"
|
||||
"components.Discover.upcomingtv": "Serie in uscita",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.originalLanguageDefault": "Tutte le lingue",
|
||||
"components.Settings.originalLanguageDefault": "Tutte le lingue",
|
||||
"components.Settings.Notifications.emailNotificationTypesAlertDescription": "Le notifiche «Media richiesto» e «Aggiunta media non riuscita» saranno inviate solo agli utenti con il permesso «Gestisci richieste».",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.languageServerDefault": "Predefinito ({language})",
|
||||
"components.RegionSelector.regionServerDefault": "Predefinito ({region})"
|
||||
}
|
||||
|
||||
@@ -390,7 +390,7 @@
|
||||
"components.Settings.SettingsAbout.Releases.viewchangelog": "Changelog bekijken",
|
||||
"components.Settings.SettingsAbout.Releases.runningDevelopMessage": "De wijzigingen in je versie zijn hieronder niet beschikbaar. Bekijk de <GithubLink>GitHub repository</GithubLink> voor de laatste updates.",
|
||||
"components.Settings.SettingsAbout.Releases.runningDevelop": "Je gebruikt een ontwikkelversie van Overseerr!",
|
||||
"components.Settings.Notifications.validationChatIdRequired": "Je moet een geldige chat-ID opgeven",
|
||||
"components.Settings.Notifications.validationChatIdRequired": "Je moet een chat-ID opgeven",
|
||||
"components.Settings.Notifications.validationBotAPIRequired": "Je moet een bot-verificatietoken opgeven",
|
||||
"components.Settings.Notifications.telegramsettingssaved": "Instellingen Telegrammeldingen met succes opgeslagen!",
|
||||
"components.Settings.Notifications.telegramsettingsfailed": "De instellingen voor Telegrammeldingen konden niet opgeslagen worden.",
|
||||
@@ -450,7 +450,7 @@
|
||||
"components.Settings.Notifications.NotificationsPushover.userToken": "Gebruikerssleutel",
|
||||
"components.Settings.Notifications.NotificationsPushover.testsent": "Testmelding verzonden!",
|
||||
"components.Settings.Notifications.NotificationsPushover.test": "Test",
|
||||
"components.Settings.Notifications.NotificationsPushover.settinguppushoverDescription": "Om Pushover in te stellen, moet je <RegisterApplicationLink>een applicatie registreren</RegisterApplicationLink> en de API-sleutel hieronder invoeren. (Je kunt een van onze <IconLink>officiële pictogrammen op GitHub</IconLink> gebruiken.) Je hebt ook je gebruikerssleutel nodig.",
|
||||
"components.Settings.Notifications.NotificationsPushover.settinguppushoverDescription": "Om Pushover in te stellen, moet je <RegisterApplicationLink>een applicatie registreren</RegisterApplicationLink> en de API-token hieronder invoeren. (Je kunt een van onze <IconLink>officiële pictogrammen op GitHub</IconLink> gebruiken.) Je hebt ook je gebruikerssleutel nodig.",
|
||||
"components.Settings.Notifications.NotificationsPushover.settinguppushover": "Pushover-meldingen instellen",
|
||||
"i18n.request": "Aanvragen",
|
||||
"components.RequestButton.requestmore4k": "Meer 4K aanvragen",
|
||||
|
||||
@@ -398,13 +398,13 @@
|
||||
"components.UserEdit.autoapproveMovies": "Aprovar Filmes Automaticamente",
|
||||
"components.TvDetails.watchtrailer": "Assisitir Trailer",
|
||||
"components.TvDetails.firstAirDate": "Primeira Exibição",
|
||||
"components.Settings.Notifications.validationChatIdRequired": "Você deve prover um ID válido de Chat",
|
||||
"components.Settings.Notifications.validationChatIdRequired": "Você deve prover um ID de Chat",
|
||||
"components.Settings.Notifications.validationBotAPIRequired": "Você deve prover uma chave de autenticação do Bot",
|
||||
"components.Settings.Notifications.senderName": "Nome do Remetente",
|
||||
"components.Settings.Notifications.telegramsettingssaved": "Configurações de notificação via Telegram salvas com sucesso!",
|
||||
"components.Settings.Notifications.telegramsettingsfailed": "Falha ao salvar configurações de notificação via Telegram.",
|
||||
"components.Settings.Notifications.ssldisabletip": "SSL deve ser desabilitado em conexões TLS padrão (porta 587)",
|
||||
"components.Settings.Notifications.settinguptelegramDescription": "Para configurar notificações via Telegram, você precisa <CreateBotLink>criar um bot</CreateBotLink> e obter a chave de API do mesmo. Além disso, você irá precisar do ID de Chat de onde você deseja que o bot envie as notificações. Você pode obter o ID de Chat adicionando <GetIdBotLink>@get_id_bot</GetIdBotLink> ao chat ou grupo ao qual você deseja obter o ID.",
|
||||
"components.Settings.Notifications.settinguptelegramDescription": "Para configurar notificações via Telegram, você precisará <CreateBotLink>criar um bot</CreateBotLink> e obter a chave de API do mesmo. Além disso, você irá precisar do ID de Chat de onde você deseja que o bot envie as notificações. Você pode obter o ID de Chat adicionando <GetIdBotLink>@get_id_bot</GetIdBotLink> ao chat ou grupo ao qual você deseja obter o ID.",
|
||||
"components.Settings.Notifications.settinguptelegram": "Configurando Notificações Via Telegram",
|
||||
"components.Settings.Notifications.chatId": "ID de Chat",
|
||||
"components.Settings.Notifications.botAPI": "Token de Autenticação do Bot",
|
||||
@@ -437,7 +437,7 @@
|
||||
"components.Settings.Notifications.NotificationsPushover.userToken": "Chave do Usuário",
|
||||
"components.Settings.Notifications.NotificationsPushover.testsent": "Notificação de teste enviada!",
|
||||
"components.Settings.Notifications.NotificationsPushover.test": "Testar",
|
||||
"components.Settings.Notifications.NotificationsPushover.settinguppushoverDescription": "Para configurar notificações via Pushover, você precisa <RegisterApplicationLink>registrar um aplicativo</RegisterApplicationLink> e obter a chave de acesso. Quando estiver configurando o aplicativo, você pode usar um dos ícones no <IconLink>diretório público</IconLink> do GitHub. Você também precisa da chave de acesso que pode ser encontrada na página inicial do usuário Pushover.",
|
||||
"components.Settings.Notifications.NotificationsPushover.settinguppushoverDescription": "Para configurar notificações via Pushover, você precisará <RegisterApplicationLink>registrar um aplicativo</RegisterApplicationLink> e inserir a chave de API abaixo. (Você pode user um de nossos <IconLink>ícones oficiais</IconLink>.) Você precisará também sua chave de usuário.",
|
||||
"components.Settings.Notifications.NotificationsPushover.settinguppushover": "Configurando Notificações Via Pushover",
|
||||
"components.Settings.Notifications.NotificationsPushover.saving": "Salvando…",
|
||||
"components.Settings.Notifications.NotificationsPushover.save": "Salvar Mudanças",
|
||||
@@ -830,13 +830,22 @@
|
||||
"components.CollectionDetails.requestswillbecreated4k": "Serão feitas solicitações em 4K dos seguintes títulos:",
|
||||
"components.CollectionDetails.requestcollection4k": "Solicitar Coleção em 4K",
|
||||
"components.CollectionDetails.request4k": "Solicitar 4K",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.region": "País de Exploração",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.region": "Região de Exploração",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.originallanguage": "Idioma de Exploração",
|
||||
"components.Settings.webhook": "Webhook",
|
||||
"components.Settings.region": "País de Exploração",
|
||||
"components.Settings.region": "Região de Exploração",
|
||||
"components.Settings.originallanguage": "Idioma de Exploração",
|
||||
"components.Settings.email": "E-mail",
|
||||
"components.Settings.Notifications.emailNotificationTypesAlert": "E-mail de Destinatários",
|
||||
"components.RegionSelector.regionDefault": "Todas",
|
||||
"components.Discover.upcomingtv": "Séries Em Breve"
|
||||
"components.RegionSelector.regionDefault": "Todas Regiões",
|
||||
"components.Discover.upcomingtv": "Séries Em Breve",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.regionTip": "Filtra conteúdo por região (se aplica apenas às categorias \"Popular\" e \"Em Breve\")",
|
||||
"components.Settings.regionTip": "Filtra conteúdo por região (se aplica apenas às categorias \"Popular\" e \"Em Breve\")",
|
||||
"components.Settings.Notifications.emailNotificationTypesAlertDescription": "Para notificações do tipo \"Mídia Solicitada\" e \"Solicitação Falhou\", as notificações serão enviadas apenas para usuários com permissão de \"Gerenciar Solicitações\".",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.originallanguageTip": "Filtra conteúdo pela língua original (se aplica apenas às categorias \"Popular\" e \"Em Breve\")",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.originalLanguageDefault": "Todos Idiomas",
|
||||
"components.Settings.originallanguageTip": "Filtra conteúdo pela língua original (se aplica apenas às categorias \"Popular\" e \"Em Breve\")",
|
||||
"components.Settings.originalLanguageDefault": "Todos Idiomas",
|
||||
"components.RegionSelector.regionServerDefault": "Padrão ({region})",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.languageServerDefault": "Padrão ({language})"
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
"components.Settings.Notifications.validationSmtpPortRequired": "Você deve fornecer a porta SMTP",
|
||||
"components.Settings.Notifications.validationSmtpHostRequired": "Você deve fornecer um servidor SMTP",
|
||||
"components.Settings.Notifications.validationFromRequired": "Você deve fornecer um endereço do remetente",
|
||||
"components.Settings.Notifications.validationChatIdRequired": "Você deve fornecer um ID de chat válido",
|
||||
"components.Settings.Notifications.validationChatIdRequired": "Você deve fornecer um ID de chat",
|
||||
"components.Settings.Notifications.validationBotAPIRequired": "Você deve fornecer um token de autenticação de bot",
|
||||
"components.Settings.Notifications.telegramsettingssaved": "Configurações de notificação Telegram salvas com sucesso!",
|
||||
"components.Settings.Notifications.telegramsettingsfailed": "Falhou o salvar das configurações de notificação Telegram.",
|
||||
@@ -85,7 +85,7 @@
|
||||
"components.Settings.Notifications.NotificationsSlack.slacksettingssaved": "Configurações de notificação Slack salvas com sucesso!",
|
||||
"components.Settings.Notifications.NotificationsSlack.slacksettingsfailed": "Falhou o salvar das configurações de notificação do Slack.",
|
||||
"components.Settings.Notifications.NotificationsSlack.settingupslackDescription": "Para configurar notificações Slack, você precisará criar uma integração <WebhookLink>Webhook de entrada</WebhookLink> insire o URL do webhook fornecido abaixo.",
|
||||
"components.Settings.Notifications.NotificationsPushover.settinguppushoverDescription": "Para configurar notificações Pushover, você precisará <RegisterApplicationLink>registrar uma aplicação</RegisterApplicationLink> e inserir a chave API abaixo. (Você pode utilizar um dos nossos <IconLink>ícones oficiais no GitHub</IconLink>.) Você também precisará da sua chave de utilizador.",
|
||||
"components.Settings.Notifications.NotificationsPushover.settinguppushoverDescription": "Para configurar notificações Pushover, você precisará <RegisterApplicationLink>registrar uma aplicação</RegisterApplicationLink> e inserir o token do API abaixo. (Você pode utilizar um dos nossos <IconLink>ícones oficiais no GitHub</IconLink>.) Você também precisará da sua chave de utilizador.",
|
||||
"components.Settings.Notifications.NotificationsPushover.settinguppushover": "Configurando Notificações Pushover",
|
||||
"components.Settings.Notifications.NotificationsSlack.settingupslack": "Configurando Notificações Slack",
|
||||
"components.Settings.save": "Salvar Mudanças",
|
||||
@@ -824,5 +824,7 @@
|
||||
"components.Settings.Notifications.emailNotificationTypesAlertDescription": "Para os tipos de notificação \"Mídia Solicitada\" e \"Mídia Falhou\", as notificações serão enviadas apenas para utilizadores com a permissão \"Gerir Solicitações\".",
|
||||
"components.Settings.Notifications.emailNotificationTypesAlert": "Destinatários de E-Mail de Notificação",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.originalLanguageDefault": "Todas as Idiomas",
|
||||
"components.Settings.originalLanguageDefault": "Todas as Idiomas"
|
||||
"components.Settings.originalLanguageDefault": "Todas as Idiomas",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.languageServerDefault": "Padrão ({language})",
|
||||
"components.RegionSelector.regionServerDefault": "Padrão ({region})"
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
"components.UserList.username": "Korisničko Ime",
|
||||
"components.UserList.userlist": "Lista Korisnika",
|
||||
"components.UserList.userdeleteerror": "Neuspešno brisanje korisnika",
|
||||
"components.UserList.userdeleted": "Korisnik izbrisan",
|
||||
"components.UserList.userdeleted": "Korisnik izbrisan.",
|
||||
"components.UserList.user": "Korisnik",
|
||||
"components.UserList.totalrequests": "Ukupno Zahteva",
|
||||
"components.UserList.role": "Uloga",
|
||||
@@ -76,7 +76,7 @@
|
||||
"components.TvDetails.recommendationssubtext": "Ako vam se svidja {title}, možda vam se svidi…",
|
||||
"components.TvDetails.recommendations": "Preporuke",
|
||||
"components.TvDetails.pending": "Na čekanju",
|
||||
"components.TvDetails.overviewunavailable": "Pregled nije dostupan",
|
||||
"components.TvDetails.overviewunavailable": "Pregled nije dostupan.",
|
||||
"components.TvDetails.overview": "Pregled",
|
||||
"components.TvDetails.originallanguage": "Originalni Jezik",
|
||||
"components.TvDetails.network": "Mreža",
|
||||
@@ -94,7 +94,7 @@
|
||||
"components.TvDetails.TvCast.fullseriescast": "Ceo Repertoar Serije",
|
||||
"components.TitleCard.tvshow": "Serija",
|
||||
"components.TitleCard.movie": "Film",
|
||||
"components.Slider.noresults": "Nema Rezultata",
|
||||
"components.Slider.noresults": "Nema rezultata.",
|
||||
"components.Setup.welcome": "Dobrodošli u Overseerr",
|
||||
"components.Setup.tip": "Savet",
|
||||
"components.Setup.syncingbackground": "Sinhronizacija će raditi u pozadini. Možete da nastavite podešavanja u toku rada.",
|
||||
@@ -155,7 +155,7 @@
|
||||
"components.Settings.default4k": "Defaultno 4K",
|
||||
"components.Settings.default": "Defaultno",
|
||||
"components.Settings.currentlibrary": "Trenutna Biblioteka: {name}",
|
||||
"components.Settings.copied": "Kopiran API ključ",
|
||||
"components.Settings.copied": "Kopiran API ključ.",
|
||||
"components.Settings.cancelscan": "Otkaži skeniranje",
|
||||
"components.Settings.applicationurl": "URL Aplikacije",
|
||||
"components.Settings.apikey": "API Ključ",
|
||||
@@ -206,7 +206,7 @@
|
||||
"components.Settings.SettingsAbout.overseerrinformation": "Overseerr Informacije",
|
||||
"components.Settings.SettingsAbout.githubdiscussions": "GitHub rasprave",
|
||||
"components.Settings.SettingsAbout.gettingsupport": "Pomoć",
|
||||
"components.Settings.SettingsAbout.clickheretojoindiscord": "Kliknite ovde da se učlanite u naš Discord server.",
|
||||
"components.Settings.SettingsAbout.clickheretojoindiscord": "Kliknite ovde da se učlanite u naš Discord server!",
|
||||
"components.Settings.RadarrModal.validationRootFolderRequired": "Morate odabrati root folder",
|
||||
"components.Settings.RadarrModal.validationProfileRequired": "Morate odabrati profil",
|
||||
"components.Settings.RadarrModal.validationPortRequired": "Morate dodati port",
|
||||
@@ -274,7 +274,7 @@
|
||||
"components.RequestModal.requestfrom": "Trenutno postoji zahtev na čekanju od {username}",
|
||||
"components.RequestModal.requestadmin": "Vaš zahtev će odmah biti prihvaćen.",
|
||||
"components.RequestModal.requestSuccess": "poslat zahtev za <strong>{title}</strong> .",
|
||||
"components.RequestModal.requestCancel": "Zahtev za <strong>{title}</strong> otkazan",
|
||||
"components.RequestModal.requestCancel": "Zahtev za <strong>{title}</strong> otkazan.",
|
||||
"components.RequestModal.request": "Zahtev",
|
||||
"components.RequestModal.pendingrequest": "Zahtev za {title} na čekanju",
|
||||
"components.RequestModal.numberofepisodes": "Broj Epizoda",
|
||||
@@ -317,7 +317,7 @@
|
||||
"components.MovieDetails.recommendationssubtext": "Ako vam se svidja {title}, možda vam se dopadne…",
|
||||
"components.MovieDetails.recommendations": "Predlozi",
|
||||
"components.MovieDetails.pending": "Na čekanju",
|
||||
"components.MovieDetails.overviewunavailable": "Pregled nije dostupan",
|
||||
"components.MovieDetails.overviewunavailable": "Pregled nije dostupan.",
|
||||
"components.MovieDetails.overview": "Pregled",
|
||||
"components.MovieDetails.originallanguage": "Originalni Jezik",
|
||||
"components.MovieDetails.manageModalTitle": "Upravljaj Filmom",
|
||||
|
||||
@@ -449,7 +449,7 @@
|
||||
"components.Settings.RadarrModal.validationNameRequired": "必須輸入伺服器名稱",
|
||||
"components.Settings.RadarrModal.validationHostnameRequired": "必須輸入主機名稱或 IP 位址",
|
||||
"components.Settings.RadarrModal.validationApiKeyRequired": "必須輸入應用程式密鑰",
|
||||
"components.Settings.Notifications.validationChatIdRequired": "必須輸入有效 Chat ID",
|
||||
"components.Settings.Notifications.validationChatIdRequired": "必須輸入 Chat ID",
|
||||
"components.Settings.Notifications.NotificationsWebhook.validationJsonPayloadRequired": "必須輸入有效的 JSON 有效負載",
|
||||
"components.Settings.Notifications.NotificationsWebhook.authheader": "Authorization 頭欄位",
|
||||
"components.Settings.RadarrModal.minimumAvailability": "最低狀態",
|
||||
@@ -807,5 +807,8 @@
|
||||
"components.Settings.SettingsJobsCache.jobsDescription": "Overseerr 將定時運行以下的維護任務。手動執行工作不會影響它正常的時間表。",
|
||||
"components.Settings.plexsettingsDescription": "關於 Plex 伺服器的設置。Overseerr 將定時執行媒體庫掃描。",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.originalLanguageDefault": "所有語言",
|
||||
"components.Settings.originalLanguageDefault": "所有語言"
|
||||
"components.Settings.originalLanguageDefault": "所有語言",
|
||||
"components.Settings.manualscanDescription": "在正常情況下,Overseerr 會每24小時掃描您的 Plex 媒體庫。最近添加的媒體將更頻繁掃描。設置新的 Plex 伺服器時,我們建議您執行一次手動掃描!",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.languageServerDefault": "默認({language})",
|
||||
"components.RegionSelector.regionServerDefault": "默認({region})"
|
||||
}
|
||||
|
||||
@@ -145,6 +145,7 @@ CoreApp.getInitialProps = async (initialProps) => {
|
||||
series4kEnabled: false,
|
||||
localLogin: true,
|
||||
region: '',
|
||||
originalLanguage: '',
|
||||
};
|
||||
|
||||
let locale = 'en';
|
||||
|
||||
13
yarn.lock
13
yarn.lock
@@ -2025,6 +2025,11 @@
|
||||
dependencies:
|
||||
"@types/express" "*"
|
||||
|
||||
"@types/country-flag-icons@^1.2.0":
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/country-flag-icons/-/country-flag-icons-1.2.0.tgz#5d13276405a5701ca29bbd7f1026f45c0d2962be"
|
||||
integrity sha512-96aveJfAw9iSfBxAD8DCgFYjMFmLIGa+vBvg3cKiHjX+o4Szz5HHv2DSbEVm9a4kLixsYkioGB4SnJs17Zypzw==
|
||||
|
||||
"@types/csurf@^1.11.0":
|
||||
version "1.11.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/csurf/-/csurf-1.11.0.tgz#2809e89f55f12a2df8cd2826c06dfd66600dd14d"
|
||||
@@ -4593,10 +4598,10 @@ cosmiconfig@^7.0.0:
|
||||
path-type "^4.0.0"
|
||||
yaml "^1.10.0"
|
||||
|
||||
country-code-emoji@^2.2.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/country-code-emoji/-/country-code-emoji-2.2.0.tgz#afc99b8bbaff9cb038e370dc46faabbd7af48f64"
|
||||
integrity sha512-iK7tw8pRbFIad7a3UDbx13SJpZj4ZReozc6oW6K6Wu4sAphQkJVxK8qfaPjFIXp22RoP/238WEDrKpIWxxI9CQ==
|
||||
country-flag-icons@^1.2.9:
|
||||
version "1.2.9"
|
||||
resolved "https://registry.yarnpkg.com/country-flag-icons/-/country-flag-icons-1.2.9.tgz#cee7d150b23d3532adcc1e22c2ebb59962e04633"
|
||||
integrity sha512-qn1cKt9PJrghEb1IbyIIqHcvNLPJ8mul0lbz6lFSBmzbGqYC38PJ4wPSIT0gV/iB/DbPylHE04zJNedrj1BXvA==
|
||||
|
||||
country-language@^0.1.7:
|
||||
version "0.1.7"
|
||||
|
||||
Reference in New Issue
Block a user