chore: rename Jellyseerr -> Seerr, part 2 (#1987)

This commit is contained in:
TheCatLady
2025-10-06 16:47:10 -07:00
committed by GitHub
parent 2e2d2a031b
commit 94a43ea480
21 changed files with 72 additions and 112 deletions

View File

@@ -71,8 +71,7 @@ You can help improve Seerr too! Check out our [Contribution Guide](./CONTRIBUTIN
## Contributors ✨ ## Contributors ✨
[![contributors](https://opencollective.com/seerr/contributors.svg?width=890)](https://opencollective.com/seerr/#backers) [![Contributors](https://opencollective.com/seerr/contributors.svg?width=890)](https://opencollective.com/seerr/#backers)
[![backers](https://opencollective.com/seerr/backers.svg?width=890)](https://opencollective.com/seerr/#backers) [![Become a Backer](https://opencollective.com/seerr/backers.svg)](https://opencollective.com/seerr/#backers)
[![Become a Sponsor](https://opencollective.com/seerr/sponsors.svg)](https://opencollective.com/seerr/#sponsors)
[![sponsors](https://opencollective.com/seerr/sponsors.svg?width=890)](https://opencollective.com/seerr/#sponsors)

View File

@@ -11,8 +11,8 @@ import { useIntl } from 'react-intl';
import useSWR from 'swr'; import useSWR from 'swr';
const messages = defineMessages('components.Layout.VersionStatus', { const messages = defineMessages('components.Layout.VersionStatus', {
streamdevelop: 'Jellyseerr Develop', streamdevelop: 'Seerr Develop',
streamstable: 'Jellyseerr Stable', streamstable: 'Seerr Stable',
outofdate: 'Out of Date', outofdate: 'Out of Date',
commitsbehind: commitsbehind:
'{commitsBehind} {commitsBehind, plural, one {commit} other {commits}} behind', '{commitsBehind} {commitsBehind, plural, one {commit} other {commits}} behind',

View File

@@ -122,8 +122,8 @@ const Login = () => {
settings.currentSettings.localLogin && settings.currentSettings.localLogin &&
(mediaServerLogin ? ( (mediaServerLogin ? (
<Button <Button
key="jellyseerr" key="seerr"
data-testid="jellyseerr-login-button" data-testid="seerr-login-button"
className="flex-1 bg-transparent" className="flex-1 bg-transparent"
onClick={() => setMediaServerLogin(false)} onClick={() => setMediaServerLogin(false)}
> >

View File

@@ -2,7 +2,7 @@ interface PWAHeaderProps {
applicationTitle?: string; applicationTitle?: string;
} }
const PWAHeader = ({ applicationTitle = 'Jellyseerr' }: PWAHeaderProps) => { const PWAHeader = ({ applicationTitle = 'Seerr' }: PWAHeaderProps) => {
return ( return (
<> <>
<link <link

View File

@@ -20,7 +20,7 @@ const messages = defineMessages(
embedPoster: 'Embed Poster', embedPoster: 'Embed Poster',
accessToken: 'Application API Token', accessToken: 'Application API Token',
accessTokenTip: accessTokenTip:
'<ApplicationRegistrationLink>Register an application</ApplicationRegistrationLink> for use with Jellyseerr', '<ApplicationRegistrationLink>Register an application</ApplicationRegistrationLink> for use with Seerr',
userToken: 'User or Group Key', userToken: 'User or Group Key',
userTokenTip: userTokenTip:
'Your 30-character <UsersGroupsLink>user or group identifier</UsersGroupsLink>', 'Your 30-character <UsersGroupsLink>user or group identifier</UsersGroupsLink>',

View File

@@ -20,8 +20,7 @@ const messages = defineMessages('components.Settings.Notifications', {
botUsernameTip: botUsernameTip:
'Allow users to also start a chat with your bot and configure their own notifications', 'Allow users to also start a chat with your bot and configure their own notifications',
botAPI: 'Bot Authorization Token', botAPI: 'Bot Authorization Token',
botApiTip: botApiTip: '<CreateBotLink>Create a bot</CreateBotLink> for use with Seerr',
'<CreateBotLink>Create a bot</CreateBotLink> for use with Jellyseerr',
chatId: 'Chat ID', chatId: 'Chat ID',
chatIdTip: chatIdTip:
'Start a chat with your bot, add <GetIdBotLink>@get_id_bot</GetIdBotLink>, and issue the <code>/my_id</code> command', 'Start a chat with your bot, add <GetIdBotLink>@get_id_bot</GetIdBotLink>, and issue the <code>/my_id</code> command',

View File

@@ -22,7 +22,7 @@ const messages = defineMessages(
toastWebPushTestSuccess: 'Web push test notification sent!', toastWebPushTestSuccess: 'Web push test notification sent!',
toastWebPushTestFailed: 'Web push test notification failed to send.', toastWebPushTestFailed: 'Web push test notification failed to send.',
httpsRequirement: httpsRequirement:
'In order to receive web push notifications, Jellyseerr must be served over HTTPS.', 'In order to receive web push notifications, Seerr must be served over HTTPS.',
} }
); );

View File

@@ -29,7 +29,7 @@ const messages = defineMessages('components.Settings.SettingsAbout.Releases', {
}); });
const REPO_RELEASE_API = const REPO_RELEASE_API =
'https://api.github.com/repos/fallenbagel/jellyseerr/releases?per_page=20'; 'https://api.github.com/repos/seerr-team/seerr/releases?per_page=20';
interface GitHubRelease { interface GitHubRelease {
url: string; url: string;

View File

@@ -17,7 +17,7 @@ import useSWR from 'swr';
const messages = defineMessages('components.Settings.SettingsAbout', { const messages = defineMessages('components.Settings.SettingsAbout', {
about: 'About', about: 'About',
overseerrinformation: 'About Jellyseerr', aboutseerr: 'About Seerr',
version: 'Version', version: 'Version',
totalmedia: 'Total Media', totalmedia: 'Total Media',
totalrequests: 'Total Requests', totalrequests: 'Total Requests',
@@ -25,17 +25,15 @@ const messages = defineMessages('components.Settings.SettingsAbout', {
githubdiscussions: 'GitHub Discussions', githubdiscussions: 'GitHub Discussions',
timezone: 'Time Zone', timezone: 'Time Zone',
appDataPath: 'Data Directory', appDataPath: 'Data Directory',
supportoverseerr: 'Support Overseerr', supportseerr: 'Support Seerr',
supportjellyseerr: 'Support Jellyseerr', contribute: 'Make a Contribution',
helppaycoffee: 'Help Pay for Coffee',
documentation: 'Documentation', documentation: 'Documentation',
preferredmethod: 'Preferred',
outofdate: 'Out of Date', outofdate: 'Out of Date',
uptodate: 'Up to Date', uptodate: 'Up to Date',
betawarning: betawarning:
'This is BETA software. Features may be broken and/or unstable. Please report any issues on GitHub!', 'This is BETA software. Features may be broken and/or unstable. Please report any issues on GitHub!',
runningDevelop: runningDevelop:
'You are running the <code>develop</code> branch of Jellyseerr, which is only recommended for those contributing to development or assisting with bleeding-edge testing.', 'You are running the <code>develop</code> branch of Seerr, which is only recommended for those contributing to development or assisting with bleeding-edge testing.',
}); });
const SettingsAbout = () => { const SettingsAbout = () => {
@@ -73,7 +71,7 @@ const SettingsAbout = () => {
</p> </p>
<p className="mt-3 text-sm leading-5 md:mt-0 md:ml-6"> <p className="mt-3 text-sm leading-5 md:mt-0 md:ml-6">
<a <a
href="http://github.com/fallenbagel/jellyseerr" href="http://github.com/seerr-team/seerr"
className="whitespace-nowrap font-medium text-gray-100 transition duration-150 ease-in-out hover:text-white" className="whitespace-nowrap font-medium text-gray-100 transition duration-150 ease-in-out hover:text-white"
target="_blank" target="_blank"
rel="noreferrer" rel="noreferrer"
@@ -85,7 +83,7 @@ const SettingsAbout = () => {
</div> </div>
</div> </div>
<div className="section"> <div className="section">
<List title={intl.formatMessage(messages.overseerrinformation)}> <List title={intl.formatMessage(messages.aboutseerr)}>
{data.version.startsWith('develop-') && ( {data.version.startsWith('develop-') && (
<Alert <Alert
title={intl.formatMessage(messages.runningDevelop, { title={intl.formatMessage(messages.runningDevelop, {
@@ -107,8 +105,8 @@ const SettingsAbout = () => {
<a <a
href={ href={
data.version.startsWith('develop-') data.version.startsWith('develop-')
? `https://github.com/fallenbagel/jellyseerr/compare/${status.commitTag}...develop` ? `https://github.com/seerr-team/seerr/compare/${status.commitTag}...develop`
: 'https://github.com/fallenbagel/jellyseerr/releases' : 'https://github.com/seerr-team/seerr/releases'
} }
target="_blank" target="_blank"
rel="noopener noreferrer" rel="noopener noreferrer"
@@ -124,8 +122,8 @@ const SettingsAbout = () => {
<a <a
href={ href={
data.version.startsWith('develop-') data.version.startsWith('develop-')
? 'https://github.com/fallenbagel/jellyseerr/commits/develop' ? 'https://github.com/seerr-team/seerr/commits/develop'
: 'https://github.com/fallenbagel/jellyseerr/releases' : 'https://github.com/seerr-team/seerr/releases'
} }
target="_blank" target="_blank"
rel="noopener noreferrer" rel="noopener noreferrer"
@@ -169,12 +167,12 @@ const SettingsAbout = () => {
</List.Item> </List.Item>
<List.Item title={intl.formatMessage(messages.githubdiscussions)}> <List.Item title={intl.formatMessage(messages.githubdiscussions)}>
<a <a
href="https://github.com/fallenbagel/jellyseerr/discussions" href="https://github.com/seerr-team/seerr/discussions"
target="_blank" target="_blank"
rel="noreferrer" rel="noreferrer"
className="text-indigo-500 transition duration-300 hover:underline" className="text-indigo-500 transition duration-300 hover:underline"
> >
https://github.com/fallenbagel/jellyseerr/discussions https://github.com/seerr-team/seerr/discussions
</a> </a>
</List.Item> </List.Item>
<List.Item title="Discord"> <List.Item title="Discord">
@@ -190,50 +188,16 @@ const SettingsAbout = () => {
</List> </List>
</div> </div>
<div className="section"> <div className="section">
<List title={intl.formatMessage(messages.supportoverseerr)}> <List title={intl.formatMessage(messages.supportseerr)}>
<List.Item <List.Item title={intl.formatMessage(messages.contribute)}>
title={`${intl.formatMessage(messages.helppaycoffee)} ☕️`}
>
<a <a
href="https://github.com/sponsors/sct" href="https://opencollective.com/seerr"
target="_blank" target="_blank"
rel="noreferrer" rel="noreferrer"
className="text-indigo-500 transition duration-300 hover:underline" className="text-indigo-500 transition duration-300 hover:underline"
> >
https://github.com/sponsors/sct https://opencollective.com/seerr
</a> </a>
<Badge className="ml-2">
{intl.formatMessage(messages.preferredmethod)}
</Badge>
</List.Item>
<List.Item title="">
<a
href="https://patreon.com/overseerr"
target="_blank"
rel="noreferrer"
className="text-indigo-500 transition duration-300 hover:underline"
>
https://patreon.com/overseerr
</a>
</List.Item>
</List>
</div>
<div className="section">
<List title={intl.formatMessage(messages.supportjellyseerr)}>
<List.Item
title={`${intl.formatMessage(messages.helppaycoffee)} ☕️`}
>
<a
href="https://www.buymeacoffee.com/fallen.bagel"
target="_blank"
rel="noreferrer"
className="text-indigo-500 transition duration-300 hover:underline"
>
https://www.buymeacoffee.com/fallen.bagel
</a>
<Badge className="ml-2">
{intl.formatMessage(messages.preferredmethod)}
</Badge>
</List.Item> </List.Item>
</List> </List>
</div> </div>

View File

@@ -10,7 +10,7 @@ const messages = defineMessages('components.Settings', {
experimentalTooltip: experimentalTooltip:
'Enabling this setting may result in unexpected application behavior', 'Enabling this setting may result in unexpected application behavior',
restartrequiredTooltip: restartrequiredTooltip:
'Jellyseerr must be restarted for changes to this setting to take effect', 'Seerr must be restarted for changes to this setting to take effect',
}); });
const SettingsBadge = ({ const SettingsBadge = ({

View File

@@ -52,7 +52,7 @@ const messages = defineMessages('components.Settings', {
syncJellyfin: 'Sync Libraries', syncJellyfin: 'Sync Libraries',
manualscanJellyfin: 'Manual Library Scan', manualscanJellyfin: 'Manual Library Scan',
manualscanDescriptionJellyfin: manualscanDescriptionJellyfin:
"Normally, this will only be run once every 24 hours. Jellyseerr will check your {mediaServerName} server's recently added more aggressively. If this is your first time configuring Jellyseerr, a one-time full manual library scan is recommended!", "Normally, this will only be run once every 24 hours. Seerr will check your {mediaServerName} server's recently added more aggressively. If this is your first time configuring Seerr, a one-time full manual library scan is recommended!",
notrunning: 'Not Running', notrunning: 'Not Running',
currentlibrary: 'Current Library: {name}', currentlibrary: 'Current Library: {name}',
librariesRemaining: 'Libraries Remaining: {count}', librariesRemaining: 'Libraries Remaining: {count}',

View File

@@ -35,7 +35,7 @@ const messages: { [messageName: string]: MessageDescriptor } = defineMessages(
jobsandcache: 'Jobs & Cache', jobsandcache: 'Jobs & Cache',
jobs: 'Jobs', jobs: 'Jobs',
jobsDescription: jobsDescription:
'Jellyseerr performs certain maintenance tasks as regularly-scheduled jobs, but they can also be manually triggered below. Manually running a job will not alter its schedule.', 'Seerr performs certain maintenance tasks as regularly-scheduled jobs, but they can also be manually triggered below. Manually running a job will not alter its schedule.',
jobname: 'Job Name', jobname: 'Job Name',
jobtype: 'Type', jobtype: 'Type',
nextexecution: 'Next Execution', nextexecution: 'Next Execution',
@@ -47,7 +47,7 @@ const messages: { [messageName: string]: MessageDescriptor } = defineMessages(
command: 'Command', command: 'Command',
cache: 'Cache', cache: 'Cache',
cacheDescription: cacheDescription:
'Jellyseerr caches requests to external API endpoints to optimize performance and avoid making unnecessary API calls.', 'Seerr caches requests to external API endpoints to optimize performance and avoid making unnecessary API calls.',
cacheflushed: '{cachename} cache flushed.', cacheflushed: '{cachename} cache flushed.',
cachename: 'Cache Name', cachename: 'Cache Name',
cachehits: 'Hits', cachehits: 'Hits',
@@ -58,7 +58,7 @@ const messages: { [messageName: string]: MessageDescriptor } = defineMessages(
flushcache: 'Flush Cache', flushcache: 'Flush Cache',
dnsCache: 'DNS Cache', dnsCache: 'DNS Cache',
dnsCacheDescription: dnsCacheDescription:
'Jellyseerr caches DNS lookups to optimize performance and avoid making unnecessary API calls.', 'Seerr caches DNS lookups to optimize performance and avoid making unnecessary API calls.',
dnscacheflushed: '{hostname} dns cache flushed.', dnscacheflushed: '{hostname} dns cache flushed.',
dnscachename: 'Hostname', dnscachename: 'Hostname',
dnscacheactiveaddress: 'Active Address', dnscacheactiveaddress: 'Active Address',
@@ -104,7 +104,7 @@ const messages: { [messageName: string]: MessageDescriptor } = defineMessages(
'Every {jobScheduleSeconds, plural, one {second} other {{jobScheduleSeconds} seconds}}', 'Every {jobScheduleSeconds, plural, one {second} other {{jobScheduleSeconds} seconds}}',
imagecache: 'Image Cache', imagecache: 'Image Cache',
imagecacheDescription: imagecacheDescription:
'When enabled in settings, Jellyseerr will proxy and cache images from pre-configured external sources. Cached images are saved into your config folder. You can find the files in <code>{appDataPath}/cache/images</code>.', 'When enabled in settings, Seerr will proxy and cache images from pre-configured external sources. Cached images are saved into your config folder. You can find the files in <code>{appDataPath}/cache/images</code>.',
imagecachecount: 'Images Cached', imagecachecount: 'Images Cached',
imagecachesize: 'Total Cache Size', imagecachesize: 'Total Cache Size',
usersavatars: "Users' Avatars", usersavatars: "Users' Avatars",

View File

@@ -29,7 +29,7 @@ const messages = defineMessages('components.Settings.SettingsMain', {
general: 'General', general: 'General',
generalsettings: 'General Settings', generalsettings: 'General Settings',
generalsettingsDescription: generalsettingsDescription:
'Configure global and default settings for Jellyseerr.', 'Configure global and default settings for Seerr.',
apikey: 'API Key', apikey: 'API Key',
apikeyCopied: 'Copied API key to clipboard.', apikeyCopied: 'Copied API key to clipboard.',
applicationTitle: 'Application Title', applicationTitle: 'Application Title',

View File

@@ -20,14 +20,14 @@ const messages = defineMessages('components.Settings.SettingsNetwork', {
network: 'Network', network: 'Network',
networksettings: 'Network Settings', networksettings: 'Network Settings',
networksettingsDescription: networksettingsDescription:
'Configure network settings for your Jellyseerr instance.', 'Configure network settings for your Seerr instance.',
csrfProtection: 'Enable CSRF Protection', csrfProtection: 'Enable CSRF Protection',
csrfProtectionTip: 'Set external API access to read-only (requires HTTPS)', csrfProtectionTip: 'Set external API access to read-only (requires HTTPS)',
csrfProtectionHoverTip: csrfProtectionHoverTip:
'Do NOT enable this setting unless you understand what you are doing!', 'Do NOT enable this setting unless you understand what you are doing!',
trustProxy: 'Enable Proxy Support', trustProxy: 'Enable Proxy Support',
trustProxyTip: trustProxyTip:
'Allow Jellyseerr to correctly register client IP addresses behind a proxy', 'Allow Seerr to correctly register client IP addresses behind a proxy',
proxyEnabled: 'HTTP(S) Proxy', proxyEnabled: 'HTTP(S) Proxy',
proxyHostname: 'Proxy Hostname', proxyHostname: 'Proxy Hostname',
proxyPort: 'Proxy Port', proxyPort: 'Proxy Port',
@@ -44,7 +44,7 @@ const messages = defineMessages('components.Settings.SettingsNetwork', {
docs: 'documentation', docs: 'documentation',
forceIpv4First: 'Force IPv4 Resolution First', forceIpv4First: 'Force IPv4 Resolution First',
forceIpv4FirstTip: forceIpv4FirstTip:
'Force Jellyseerr to resolve IPv4 addresses first instead of IPv6', 'Force Seerr to resolve IPv4 addresses first instead of IPv6',
dnsCache: 'DNS Cache', dnsCache: 'DNS Cache',
dnsCacheTip: dnsCacheTip:
'Enable caching of DNS lookups to optimize performance and avoid making unnecessary API calls', 'Enable caching of DNS lookups to optimize performance and avoid making unnecessary API calls',

View File

@@ -30,7 +30,7 @@ const messages = defineMessages('components.Settings', {
plex: 'Plex', plex: 'Plex',
plexsettings: 'Plex Settings', plexsettings: 'Plex Settings',
plexsettingsDescription: plexsettingsDescription:
'Configure the settings for your Plex server. Jellyseerr scans your Plex libraries to determine content availability.', 'Configure the settings for your Plex server. Seerr scans your Plex libraries to determine content availability.',
serverpreset: 'Server', serverpreset: 'Server',
serverLocal: 'local', serverLocal: 'local',
serverRemote: 'remote', serverRemote: 'remote',
@@ -51,12 +51,12 @@ const messages = defineMessages('components.Settings', {
enablessl: 'Use SSL', enablessl: 'Use SSL',
plexlibraries: 'Plex Libraries', plexlibraries: 'Plex Libraries',
plexlibrariesDescription: plexlibrariesDescription:
'The libraries Jellyseerr scans for titles. Set up and save your Plex connection settings, then click the button below if no libraries are listed.', 'The libraries Seerr scans for titles. Set up and save your Plex connection settings, then click the button below if no libraries are listed.',
scanning: 'Syncing…', scanning: 'Syncing…',
scan: 'Sync Libraries', scan: 'Sync Libraries',
manualscan: 'Manual Library Scan', manualscan: 'Manual Library Scan',
manualscanDescription: manualscanDescription:
"Normally, this will only be run once every 24 hours. Jellyseerr will check your Plex server's recently added more aggressively. If this is your first time configuring Plex, a one-time full manual library scan is recommended!", "Normally, this will only be run once every 24 hours. Seerr will check your Plex server's recently added more aggressively. If this is your first time configuring Plex, a one-time full manual library scan is recommended!",
notrunning: 'Not Running', notrunning: 'Not Running',
currentlibrary: 'Current Library: {name}', currentlibrary: 'Current Library: {name}',
librariesRemaining: 'Libraries Remaining: {count}', librariesRemaining: 'Libraries Remaining: {count}',
@@ -69,7 +69,7 @@ const messages = defineMessages('components.Settings', {
'Optionally direct users to the web app on your server instead of the "hosted" web app', 'Optionally direct users to the web app on your server instead of the "hosted" web app',
tautulliSettings: 'Tautulli Settings', tautulliSettings: 'Tautulli Settings',
tautulliSettingsDescription: tautulliSettingsDescription:
'Optionally configure the settings for your Tautulli server. Jellyseerr fetches watch history data for your Plex media from Tautulli.', 'Optionally configure the settings for your Tautulli server. Seerr fetches watch history data for your Plex media from Tautulli.',
urlBase: 'URL Base', urlBase: 'URL Base',
tautulliApiKey: 'API Key', tautulliApiKey: 'API Key',
externalUrl: 'External URL', externalUrl: 'External URL',

View File

@@ -6,7 +6,7 @@ import { useEffect, useState } from 'react';
import { useIntl } from 'react-intl'; import { useIntl } from 'react-intl';
const messages = defineMessages('components.Setup', { const messages = defineMessages('components.Setup', {
welcome: 'Welcome to Jellyseerr', welcome: 'Welcome to Seerr',
signinMessage: 'Get started by signing in with your Plex account', signinMessage: 'Get started by signing in with your Plex account',
}); });

View File

@@ -9,7 +9,7 @@ import { useEffect, useState } from 'react';
import { FormattedMessage } from 'react-intl'; import { FormattedMessage } from 'react-intl';
const messages = defineMessages('components.Setup', { const messages = defineMessages('components.Setup', {
welcome: 'Welcome to Jellyseerr', welcome: 'Welcome to Seerr',
signinMessage: 'Get started by signing in', signinMessage: 'Get started by signing in',
signin: 'Sign in to your account', signin: 'Sign in to your account',
signinWithJellyfin: 'Enter your Jellyfin details', signinWithJellyfin: 'Enter your Jellyfin details',

View File

@@ -25,7 +25,7 @@ import useSWR, { mutate } from 'swr';
import SetupLogin from './SetupLogin'; import SetupLogin from './SetupLogin';
const messages = defineMessages('components.Setup', { const messages = defineMessages('components.Setup', {
welcome: 'Welcome to Jellyseerr', welcome: 'Welcome to Seerr',
subtitle: 'Get started by choosing your media server', subtitle: 'Get started by choosing your media server',
configjellyfin: 'Configure Jellyfin', configjellyfin: 'Configure Jellyfin',
configplex: 'Configure Plex', configplex: 'Configure Plex',

View File

@@ -10,7 +10,7 @@ export interface SettingsContextProps {
const defaultSettings = { const defaultSettings = {
initialized: false, initialized: false,
applicationTitle: 'Jellyseerr', applicationTitle: 'Seerr',
applicationUrl: '', applicationUrl: '',
hideAvailable: false, hideAvailable: false,
hideBlacklisted: false, hideBlacklisted: false,

View File

@@ -237,8 +237,8 @@
"components.Layout.UserWarnings.passwordRequired": "A password is required.", "components.Layout.UserWarnings.passwordRequired": "A password is required.",
"components.Layout.VersionStatus.commitsbehind": "{commitsBehind} {commitsBehind, plural, one {commit} other {commits}} behind", "components.Layout.VersionStatus.commitsbehind": "{commitsBehind} {commitsBehind, plural, one {commit} other {commits}} behind",
"components.Layout.VersionStatus.outofdate": "Out of Date", "components.Layout.VersionStatus.outofdate": "Out of Date",
"components.Layout.VersionStatus.streamdevelop": "Jellyseerr Develop", "components.Layout.VersionStatus.streamdevelop": "Seerr Develop",
"components.Layout.VersionStatus.streamstable": "Jellyseerr Stable", "components.Layout.VersionStatus.streamstable": "Seerr Stable",
"components.Login.adminerror": "You must use an admin account to sign in.", "components.Login.adminerror": "You must use an admin account to sign in.",
"components.Login.back": "Go back", "components.Login.back": "Go back",
"components.Login.credentialerror": "The username or password is incorrect.", "components.Login.credentialerror": "The username or password is incorrect.",
@@ -653,7 +653,7 @@
"components.Settings.Notifications.NotificationsPushbullet.validationAccessTokenRequired": "You must provide an access token", "components.Settings.Notifications.NotificationsPushbullet.validationAccessTokenRequired": "You must provide an access token",
"components.Settings.Notifications.NotificationsPushbullet.validationTypes": "You must select at least one notification type", "components.Settings.Notifications.NotificationsPushbullet.validationTypes": "You must select at least one notification type",
"components.Settings.Notifications.NotificationsPushover.accessToken": "Application API Token", "components.Settings.Notifications.NotificationsPushover.accessToken": "Application API Token",
"components.Settings.Notifications.NotificationsPushover.accessTokenTip": "<ApplicationRegistrationLink>Register an application</ApplicationRegistrationLink> for use with Jellyseerr", "components.Settings.Notifications.NotificationsPushover.accessTokenTip": "<ApplicationRegistrationLink>Register an application</ApplicationRegistrationLink> for use with Seerr",
"components.Settings.Notifications.NotificationsPushover.agentenabled": "Enable Agent", "components.Settings.Notifications.NotificationsPushover.agentenabled": "Enable Agent",
"components.Settings.Notifications.NotificationsPushover.deviceDefault": "Device Default", "components.Settings.Notifications.NotificationsPushover.deviceDefault": "Device Default",
"components.Settings.Notifications.NotificationsPushover.embedPoster": "Embed Poster", "components.Settings.Notifications.NotificationsPushover.embedPoster": "Embed Poster",
@@ -699,7 +699,7 @@
"components.Settings.Notifications.NotificationsWebhook.webhooksettingssaved": "Webhook notification settings saved successfully!", "components.Settings.Notifications.NotificationsWebhook.webhooksettingssaved": "Webhook notification settings saved successfully!",
"components.Settings.Notifications.NotificationsWebPush.agentenabled": "Enable Agent", "components.Settings.Notifications.NotificationsWebPush.agentenabled": "Enable Agent",
"components.Settings.Notifications.NotificationsWebPush.embedPoster": "Embed Poster", "components.Settings.Notifications.NotificationsWebPush.embedPoster": "Embed Poster",
"components.Settings.Notifications.NotificationsWebPush.httpsRequirement": "In order to receive web push notifications, Jellyseerr must be served over HTTPS.", "components.Settings.Notifications.NotificationsWebPush.httpsRequirement": "In order to receive web push notifications, Seerr must be served over HTTPS.",
"components.Settings.Notifications.NotificationsWebPush.toastWebPushTestFailed": "Web push test notification failed to send.", "components.Settings.Notifications.NotificationsWebPush.toastWebPushTestFailed": "Web push test notification failed to send.",
"components.Settings.Notifications.NotificationsWebPush.toastWebPushTestSending": "Sending web push test notification…", "components.Settings.Notifications.NotificationsWebPush.toastWebPushTestSending": "Sending web push test notification…",
"components.Settings.Notifications.NotificationsWebPush.toastWebPushTestSuccess": "Web push test notification sent!", "components.Settings.Notifications.NotificationsWebPush.toastWebPushTestSuccess": "Web push test notification sent!",
@@ -710,7 +710,7 @@
"components.Settings.Notifications.authPass": "SMTP Password", "components.Settings.Notifications.authPass": "SMTP Password",
"components.Settings.Notifications.authUser": "SMTP Username", "components.Settings.Notifications.authUser": "SMTP Username",
"components.Settings.Notifications.botAPI": "Bot Authorization Token", "components.Settings.Notifications.botAPI": "Bot Authorization Token",
"components.Settings.Notifications.botApiTip": "<CreateBotLink>Create a bot</CreateBotLink> for use with Jellyseerr", "components.Settings.Notifications.botApiTip": "<CreateBotLink>Create a bot</CreateBotLink> for use with Seerr",
"components.Settings.Notifications.botAvatarUrl": "Bot Avatar URL", "components.Settings.Notifications.botAvatarUrl": "Bot Avatar URL",
"components.Settings.Notifications.botUsername": "Bot Username", "components.Settings.Notifications.botUsername": "Bot Username",
"components.Settings.Notifications.botUsernameTip": "Allow users to also start a chat with your bot and configure their own notifications", "components.Settings.Notifications.botUsernameTip": "Allow users to also start a chat with your bot and configure their own notifications",
@@ -857,18 +857,16 @@
"components.Settings.SettingsAbout.Releases.viewchangelog": "View Changelog", "components.Settings.SettingsAbout.Releases.viewchangelog": "View Changelog",
"components.Settings.SettingsAbout.Releases.viewongithub": "View on GitHub", "components.Settings.SettingsAbout.Releases.viewongithub": "View on GitHub",
"components.Settings.SettingsAbout.about": "About", "components.Settings.SettingsAbout.about": "About",
"components.Settings.SettingsAbout.aboutseerr": "About Seerr",
"components.Settings.SettingsAbout.appDataPath": "Data Directory", "components.Settings.SettingsAbout.appDataPath": "Data Directory",
"components.Settings.SettingsAbout.betawarning": "This is BETA software. Features may be broken and/or unstable. Please report any issues on GitHub!", "components.Settings.SettingsAbout.betawarning": "This is BETA software. Features may be broken and/or unstable. Please report any issues on GitHub!",
"components.Settings.SettingsAbout.contribute": "Make a Contribution",
"components.Settings.SettingsAbout.documentation": "Documentation", "components.Settings.SettingsAbout.documentation": "Documentation",
"components.Settings.SettingsAbout.gettingsupport": "Getting Support", "components.Settings.SettingsAbout.gettingsupport": "Getting Support",
"components.Settings.SettingsAbout.githubdiscussions": "GitHub Discussions", "components.Settings.SettingsAbout.githubdiscussions": "GitHub Discussions",
"components.Settings.SettingsAbout.helppaycoffee": "Help Pay for Coffee",
"components.Settings.SettingsAbout.outofdate": "Out of Date", "components.Settings.SettingsAbout.outofdate": "Out of Date",
"components.Settings.SettingsAbout.overseerrinformation": "About Jellyseerr", "components.Settings.SettingsAbout.runningDevelop": "You are running the <code>develop</code> branch of Seerr, which is only recommended for those contributing to development or assisting with bleeding-edge testing.",
"components.Settings.SettingsAbout.preferredmethod": "Preferred", "components.Settings.SettingsAbout.supportseerr": "Support Seerr",
"components.Settings.SettingsAbout.runningDevelop": "You are running the <code>develop</code> branch of Jellyseerr, which is only recommended for those contributing to development or assisting with bleeding-edge testing.",
"components.Settings.SettingsAbout.supportjellyseerr": "Support Jellyseerr",
"components.Settings.SettingsAbout.supportoverseerr": "Support Overseerr",
"components.Settings.SettingsAbout.timezone": "Time Zone", "components.Settings.SettingsAbout.timezone": "Time Zone",
"components.Settings.SettingsAbout.totalmedia": "Total Media", "components.Settings.SettingsAbout.totalmedia": "Total Media",
"components.Settings.SettingsAbout.totalrequests": "Total Requests", "components.Settings.SettingsAbout.totalrequests": "Total Requests",
@@ -876,7 +874,7 @@
"components.Settings.SettingsAbout.version": "Version", "components.Settings.SettingsAbout.version": "Version",
"components.Settings.SettingsJobsCache.availability-sync": "Media Availability Sync", "components.Settings.SettingsJobsCache.availability-sync": "Media Availability Sync",
"components.Settings.SettingsJobsCache.cache": "Cache", "components.Settings.SettingsJobsCache.cache": "Cache",
"components.Settings.SettingsJobsCache.cacheDescription": "Jellyseerr caches requests to external API endpoints to optimize performance and avoid making unnecessary API calls.", "components.Settings.SettingsJobsCache.cacheDescription": "Seerr caches requests to external API endpoints to optimize performance and avoid making unnecessary API calls.",
"components.Settings.SettingsJobsCache.cacheflushed": "{cachename} cache flushed.", "components.Settings.SettingsJobsCache.cacheflushed": "{cachename} cache flushed.",
"components.Settings.SettingsJobsCache.cachehits": "Hits", "components.Settings.SettingsJobsCache.cachehits": "Hits",
"components.Settings.SettingsJobsCache.cachekeys": "Total Keys", "components.Settings.SettingsJobsCache.cachekeys": "Total Keys",
@@ -887,7 +885,7 @@
"components.Settings.SettingsJobsCache.canceljob": "Cancel Job", "components.Settings.SettingsJobsCache.canceljob": "Cancel Job",
"components.Settings.SettingsJobsCache.command": "Command", "components.Settings.SettingsJobsCache.command": "Command",
"components.Settings.SettingsJobsCache.dnsCache": "DNS Cache", "components.Settings.SettingsJobsCache.dnsCache": "DNS Cache",
"components.Settings.SettingsJobsCache.dnsCacheDescription": "Jellyseerr caches DNS lookups to optimize performance and avoid making unnecessary API calls.", "components.Settings.SettingsJobsCache.dnsCacheDescription": "Seerr caches DNS lookups to optimize performance and avoid making unnecessary API calls.",
"components.Settings.SettingsJobsCache.dnsCacheGlobalStats": "Global DNS Cache Stats", "components.Settings.SettingsJobsCache.dnsCacheGlobalStats": "Global DNS Cache Stats",
"components.Settings.SettingsJobsCache.dnsCacheGlobalStatsDescription": "These stats are aggregated across all DNS cache entries.", "components.Settings.SettingsJobsCache.dnsCacheGlobalStatsDescription": "These stats are aggregated across all DNS cache entries.",
"components.Settings.SettingsJobsCache.dnscacheactiveaddress": "Active Address", "components.Settings.SettingsJobsCache.dnscacheactiveaddress": "Active Address",
@@ -912,7 +910,7 @@
"components.Settings.SettingsJobsCache.hits": "Hits", "components.Settings.SettingsJobsCache.hits": "Hits",
"components.Settings.SettingsJobsCache.image-cache-cleanup": "Image Cache Cleanup", "components.Settings.SettingsJobsCache.image-cache-cleanup": "Image Cache Cleanup",
"components.Settings.SettingsJobsCache.imagecache": "Image Cache", "components.Settings.SettingsJobsCache.imagecache": "Image Cache",
"components.Settings.SettingsJobsCache.imagecacheDescription": "When enabled in settings, Jellyseerr will proxy and cache images from pre-configured external sources. Cached images are saved into your config folder. You can find the files in <code>{appDataPath}/cache/images</code>.", "components.Settings.SettingsJobsCache.imagecacheDescription": "When enabled in settings, Seerr will proxy and cache images from pre-configured external sources. Cached images are saved into your config folder. You can find the files in <code>{appDataPath}/cache/images</code>.",
"components.Settings.SettingsJobsCache.imagecachecount": "Images Cached", "components.Settings.SettingsJobsCache.imagecachecount": "Images Cached",
"components.Settings.SettingsJobsCache.imagecachesize": "Total Cache Size", "components.Settings.SettingsJobsCache.imagecachesize": "Total Cache Size",
"components.Settings.SettingsJobsCache.ipv4Fallbacks": "IPv4 Fallbacks", "components.Settings.SettingsJobsCache.ipv4Fallbacks": "IPv4 Fallbacks",
@@ -923,7 +921,7 @@
"components.Settings.SettingsJobsCache.jobcancelled": "{jobname} canceled.", "components.Settings.SettingsJobsCache.jobcancelled": "{jobname} canceled.",
"components.Settings.SettingsJobsCache.jobname": "Job Name", "components.Settings.SettingsJobsCache.jobname": "Job Name",
"components.Settings.SettingsJobsCache.jobs": "Jobs", "components.Settings.SettingsJobsCache.jobs": "Jobs",
"components.Settings.SettingsJobsCache.jobsDescription": "Jellyseerr performs certain maintenance tasks as regularly-scheduled jobs, but they can also be manually triggered below. Manually running a job will not alter its schedule.", "components.Settings.SettingsJobsCache.jobsDescription": "Seerr performs certain maintenance tasks as regularly-scheduled jobs, but they can also be manually triggered below. Manually running a job will not alter its schedule.",
"components.Settings.SettingsJobsCache.jobsandcache": "Jobs & Cache", "components.Settings.SettingsJobsCache.jobsandcache": "Jobs & Cache",
"components.Settings.SettingsJobsCache.jobstarted": "{jobname} started.", "components.Settings.SettingsJobsCache.jobstarted": "{jobname} started.",
"components.Settings.SettingsJobsCache.jobtype": "Type", "components.Settings.SettingsJobsCache.jobtype": "Type",
@@ -974,7 +972,7 @@
"components.Settings.SettingsMain.enableSpecialEpisodes": "Allow Special Episodes Requests", "components.Settings.SettingsMain.enableSpecialEpisodes": "Allow Special Episodes Requests",
"components.Settings.SettingsMain.general": "General", "components.Settings.SettingsMain.general": "General",
"components.Settings.SettingsMain.generalsettings": "General Settings", "components.Settings.SettingsMain.generalsettings": "General Settings",
"components.Settings.SettingsMain.generalsettingsDescription": "Configure global and default settings for Jellyseerr.", "components.Settings.SettingsMain.generalsettingsDescription": "Configure global and default settings for Seerr.",
"components.Settings.SettingsMain.hideAvailable": "Hide Available Media", "components.Settings.SettingsMain.hideAvailable": "Hide Available Media",
"components.Settings.SettingsMain.hideAvailableTip": "Hide available media from the discover pages but not search results", "components.Settings.SettingsMain.hideAvailableTip": "Hide available media from the discover pages but not search results",
"components.Settings.SettingsMain.hideBlacklisted": "Hide Blacklisted Items", "components.Settings.SettingsMain.hideBlacklisted": "Hide Blacklisted Items",
@@ -1006,11 +1004,11 @@
"components.Settings.SettingsNetwork.dnsCacheTip": "Enable caching of DNS lookups to optimize performance and avoid making unnecessary API calls", "components.Settings.SettingsNetwork.dnsCacheTip": "Enable caching of DNS lookups to optimize performance and avoid making unnecessary API calls",
"components.Settings.SettingsNetwork.docs": "documentation", "components.Settings.SettingsNetwork.docs": "documentation",
"components.Settings.SettingsNetwork.forceIpv4First": "Force IPv4 Resolution First", "components.Settings.SettingsNetwork.forceIpv4First": "Force IPv4 Resolution First",
"components.Settings.SettingsNetwork.forceIpv4FirstTip": "Force Jellyseerr to resolve IPv4 addresses first instead of IPv6", "components.Settings.SettingsNetwork.forceIpv4FirstTip": "Force Seerr to resolve IPv4 addresses first instead of IPv6",
"components.Settings.SettingsNetwork.network": "Network", "components.Settings.SettingsNetwork.network": "Network",
"components.Settings.SettingsNetwork.networkDisclaimer": "Network parameters from your container/system should be used instead of these settings. See the {docs} for more information.", "components.Settings.SettingsNetwork.networkDisclaimer": "Network parameters from your container/system should be used instead of these settings. See the {docs} for more information.",
"components.Settings.SettingsNetwork.networksettings": "Network Settings", "components.Settings.SettingsNetwork.networksettings": "Network Settings",
"components.Settings.SettingsNetwork.networksettingsDescription": "Configure network settings for your Jellyseerr instance.", "components.Settings.SettingsNetwork.networksettingsDescription": "Configure network settings for your Seerr instance.",
"components.Settings.SettingsNetwork.proxyBypassFilter": "Proxy Ignored Addresses", "components.Settings.SettingsNetwork.proxyBypassFilter": "Proxy Ignored Addresses",
"components.Settings.SettingsNetwork.proxyBypassFilterTip": "Use ',' as a separator, and '*.' as a wildcard for subdomains", "components.Settings.SettingsNetwork.proxyBypassFilterTip": "Use ',' as a separator, and '*.' as a wildcard for subdomains",
"components.Settings.SettingsNetwork.proxyBypassLocalAddresses": "Bypass Proxy for Local Addresses", "components.Settings.SettingsNetwork.proxyBypassLocalAddresses": "Bypass Proxy for Local Addresses",
@@ -1023,7 +1021,7 @@
"components.Settings.SettingsNetwork.toastSettingsFailure": "Something went wrong while saving settings.", "components.Settings.SettingsNetwork.toastSettingsFailure": "Something went wrong while saving settings.",
"components.Settings.SettingsNetwork.toastSettingsSuccess": "Settings saved successfully!", "components.Settings.SettingsNetwork.toastSettingsSuccess": "Settings saved successfully!",
"components.Settings.SettingsNetwork.trustProxy": "Enable Proxy Support", "components.Settings.SettingsNetwork.trustProxy": "Enable Proxy Support",
"components.Settings.SettingsNetwork.trustProxyTip": "Allow Jellyseerr to correctly register client IP addresses behind a proxy", "components.Settings.SettingsNetwork.trustProxyTip": "Allow Seerr to correctly register client IP addresses behind a proxy",
"components.Settings.SettingsNetwork.validationProxyPort": "You must provide a valid port", "components.Settings.SettingsNetwork.validationProxyPort": "You must provide a valid port",
"components.Settings.SettingsUsers.atLeastOneAuth": "At least one authentication method must be selected.", "components.Settings.SettingsUsers.atLeastOneAuth": "At least one authentication method must be selected.",
"components.Settings.SettingsUsers.defaultPermissions": "Default Permissions", "components.Settings.SettingsUsers.defaultPermissions": "Default Permissions",
@@ -1150,8 +1148,8 @@
"components.Settings.jellyfinsettingsDescription": "Configure the settings for your {mediaServerName} server. {mediaServerName} scans your {mediaServerName} libraries to see what content is available.", "components.Settings.jellyfinsettingsDescription": "Configure the settings for your {mediaServerName} server. {mediaServerName} scans your {mediaServerName} libraries to see what content is available.",
"components.Settings.librariesRemaining": "Libraries Remaining: {count}", "components.Settings.librariesRemaining": "Libraries Remaining: {count}",
"components.Settings.manualscan": "Manual Library Scan", "components.Settings.manualscan": "Manual Library Scan",
"components.Settings.manualscanDescription": "Normally, this will only be run once every 24 hours. Jellyseerr will check your Plex server's recently added more aggressively. If this is your first time configuring Plex, a one-time full manual library scan is recommended!", "components.Settings.manualscanDescription": "Normally, this will only be run once every 24 hours. Seerr will check your Plex server's recently added more aggressively. If this is your first time configuring Plex, a one-time full manual library scan is recommended!",
"components.Settings.manualscanDescriptionJellyfin": "Normally, this will only be run once every 24 hours. Jellyseerr will check your {mediaServerName} server's recently added more aggressively. If this is your first time configuring Jellyseerr, a one-time full manual library scan is recommended!", "components.Settings.manualscanDescriptionJellyfin": "Normally, this will only be run once every 24 hours. Seerr will check your {mediaServerName} server's recently added more aggressively. If this is your first time configuring Seerr, a one-time full manual library scan is recommended!",
"components.Settings.manualscanJellyfin": "Manual Library Scan", "components.Settings.manualscanJellyfin": "Manual Library Scan",
"components.Settings.mediaTypeMovie": "movie", "components.Settings.mediaTypeMovie": "movie",
"components.Settings.mediaTypeSeries": "series", "components.Settings.mediaTypeSeries": "series",
@@ -1186,13 +1184,13 @@
"components.Settings.overrideRulesDescription": "Override rules allow you to specify properties that will be replaced if a request matches the rule.", "components.Settings.overrideRulesDescription": "Override rules allow you to specify properties that will be replaced if a request matches the rule.",
"components.Settings.plex": "Plex", "components.Settings.plex": "Plex",
"components.Settings.plexlibraries": "Plex Libraries", "components.Settings.plexlibraries": "Plex Libraries",
"components.Settings.plexlibrariesDescription": "The libraries Jellyseerr scans for titles. Set up and save your Plex connection settings, then click the button below if no libraries are listed.", "components.Settings.plexlibrariesDescription": "The libraries Seerr scans for titles. Set up and save your Plex connection settings, then click the button below if no libraries are listed.",
"components.Settings.plexsettings": "Plex Settings", "components.Settings.plexsettings": "Plex Settings",
"components.Settings.plexsettingsDescription": "Configure the settings for your Plex server. Jellyseerr scans your Plex libraries to determine content availability.", "components.Settings.plexsettingsDescription": "Configure the settings for your Plex server. Seerr scans your Plex libraries to determine content availability.",
"components.Settings.port": "Port", "components.Settings.port": "Port",
"components.Settings.providerStatus": "Metadata Provider Status", "components.Settings.providerStatus": "Metadata Provider Status",
"components.Settings.radarrsettings": "Radarr Settings", "components.Settings.radarrsettings": "Radarr Settings",
"components.Settings.restartrequiredTooltip": "Jellyseerr must be restarted for changes to this setting to take effect", "components.Settings.restartrequiredTooltip": "Seerr must be restarted for changes to this setting to take effect",
"components.Settings.save": "Save Changes", "components.Settings.save": "Save Changes",
"components.Settings.saving": "Saving…", "components.Settings.saving": "Saving…",
"components.Settings.scan": "Sync Libraries", "components.Settings.scan": "Sync Libraries",
@@ -1219,7 +1217,7 @@
"components.Settings.syncing": "Syncing", "components.Settings.syncing": "Syncing",
"components.Settings.tautulliApiKey": "API Key", "components.Settings.tautulliApiKey": "API Key",
"components.Settings.tautulliSettings": "Tautulli Settings", "components.Settings.tautulliSettings": "Tautulli Settings",
"components.Settings.tautulliSettingsDescription": "Optionally configure the settings for your Tautulli server. Jellyseerr fetches watch history data for your Plex media from Tautulli.", "components.Settings.tautulliSettingsDescription": "Optionally configure the settings for your Tautulli server. Seerr fetches watch history data for your Plex media from Tautulli.",
"components.Settings.timeout": "Timeout", "components.Settings.timeout": "Timeout",
"components.Settings.tip": "Tip", "components.Settings.tip": "Tip",
"components.Settings.tmdbProviderDoesnotWork": "TMDB provider does not work, please select another metadata provider", "components.Settings.tmdbProviderDoesnotWork": "TMDB provider does not work, please select another metadata provider",
@@ -1264,7 +1262,7 @@
"components.Setup.signinWithJellyfin": "Enter your Jellyfin details", "components.Setup.signinWithJellyfin": "Enter your Jellyfin details",
"components.Setup.signinWithPlex": "Enter your Plex details", "components.Setup.signinWithPlex": "Enter your Plex details",
"components.Setup.subtitle": "Get started by choosing your media server", "components.Setup.subtitle": "Get started by choosing your media server",
"components.Setup.welcome": "Welcome to Jellyseerr", "components.Setup.welcome": "Welcome to Seerr",
"components.StatusBadge.managemedia": "Manage {mediaType}", "components.StatusBadge.managemedia": "Manage {mediaType}",
"components.StatusBadge.openinarr": "Open in {arr}", "components.StatusBadge.openinarr": "Open in {arr}",
"components.StatusBadge.playonplex": "Play on {mediaServerName}", "components.StatusBadge.playonplex": "Play on {mediaServerName}",

View File

@@ -58,14 +58,14 @@ class PlexOAuth {
const browser = Bowser.getParser(window.navigator.userAgent); const browser = Bowser.getParser(window.navigator.userAgent);
this.plexHeaders = { this.plexHeaders = {
Accept: 'application/json', Accept: 'application/json',
'X-Plex-Product': 'Jellyseerr', 'X-Plex-Product': 'Seerr',
'X-Plex-Version': 'Plex OAuth', 'X-Plex-Version': 'Plex OAuth',
'X-Plex-Client-Identifier': clientId, 'X-Plex-Client-Identifier': clientId,
'X-Plex-Model': 'Plex OAuth', 'X-Plex-Model': 'Plex OAuth',
'X-Plex-Platform': browser.getBrowserName(), 'X-Plex-Platform': browser.getBrowserName(),
'X-Plex-Platform-Version': browser.getBrowserVersion(), 'X-Plex-Platform-Version': browser.getBrowserVersion(),
'X-Plex-Device': browser.getOSName(), 'X-Plex-Device': browser.getOSName(),
'X-Plex-Device-Name': `${browser.getBrowserName()} (Jellyseerr)`, 'X-Plex-Device-Name': `${browser.getBrowserName()} (Seerr)`,
'X-Plex-Device-Screen-Resolution': 'X-Plex-Device-Screen-Resolution':
window.screen.width + 'x' + window.screen.height, window.screen.width + 'x' + window.screen.height,
'X-Plex-Language': 'en', 'X-Plex-Language': 'en',