mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
Merge branch 'master' into fix-some-of-the-code-smells
This commit is contained in:
commit
dd5fb8778e
32 changed files with 923 additions and 656 deletions
|
@ -62,6 +62,8 @@
|
||||||
- [Pier-Luc Ducharme](https://github.com/pl-ducharme)
|
- [Pier-Luc Ducharme](https://github.com/pl-ducharme)
|
||||||
- [Anantharaju S](https://github.com/Anantharajus)
|
- [Anantharaju S](https://github.com/Anantharajus)
|
||||||
- [Merlin Sievers](https://github.com/dann-merlin)
|
- [Merlin Sievers](https://github.com/dann-merlin)
|
||||||
|
- [Fishbigger](https://github.com/fishbigger)
|
||||||
|
- [sleepycatcoding](https://github.com/sleepycatcoding)
|
||||||
|
|
||||||
# Emby Contributors
|
# Emby Contributors
|
||||||
|
|
||||||
|
|
1048
package-lock.json
generated
1048
package-lock.json
generated
File diff suppressed because it is too large
Load diff
32
package.json
32
package.json
|
@ -14,10 +14,10 @@
|
||||||
"@types/escape-html": "1.0.2",
|
"@types/escape-html": "1.0.2",
|
||||||
"@types/loadable__component": "5.13.4",
|
"@types/loadable__component": "5.13.4",
|
||||||
"@types/lodash-es": "4.17.7",
|
"@types/lodash-es": "4.17.7",
|
||||||
"@types/react": "17.0.58",
|
"@types/react": "17.0.59",
|
||||||
"@types/react-dom": "17.0.20",
|
"@types/react-dom": "17.0.20",
|
||||||
"@typescript-eslint/eslint-plugin": "5.59.2",
|
"@typescript-eslint/eslint-plugin": "5.59.5",
|
||||||
"@typescript-eslint/parser": "5.59.2",
|
"@typescript-eslint/parser": "5.59.5",
|
||||||
"@uupaa/dynamic-import-polyfill": "1.0.2",
|
"@uupaa/dynamic-import-polyfill": "1.0.2",
|
||||||
"autoprefixer": "10.4.14",
|
"autoprefixer": "10.4.14",
|
||||||
"babel-loader": "9.1.2",
|
"babel-loader": "9.1.2",
|
||||||
|
@ -29,7 +29,7 @@
|
||||||
"css-loader": "6.7.3",
|
"css-loader": "6.7.3",
|
||||||
"cssnano": "6.0.1",
|
"cssnano": "6.0.1",
|
||||||
"es-check": "7.1.1",
|
"es-check": "7.1.1",
|
||||||
"eslint": "8.39.0",
|
"eslint": "8.40.0",
|
||||||
"eslint-plugin-compat": "4.1.4",
|
"eslint-plugin-compat": "4.1.4",
|
||||||
"eslint-plugin-eslint-comments": "3.2.0",
|
"eslint-plugin-eslint-comments": "3.2.0",
|
||||||
"eslint-plugin-import": "2.27.5",
|
"eslint-plugin-import": "2.27.5",
|
||||||
|
@ -57,16 +57,16 @@
|
||||||
"stylelint-scss": "5.0.0",
|
"stylelint-scss": "5.0.0",
|
||||||
"ts-loader": "9.4.2",
|
"ts-loader": "9.4.2",
|
||||||
"typescript": "5.0.4",
|
"typescript": "5.0.4",
|
||||||
"webpack": "5.82.0",
|
"webpack": "5.82.1",
|
||||||
"webpack-cli": "5.0.2",
|
"webpack-cli": "5.1.1",
|
||||||
"webpack-dev-server": "4.13.3",
|
"webpack-dev-server": "4.15.0",
|
||||||
"webpack-merge": "5.8.0",
|
"webpack-merge": "5.8.0",
|
||||||
"workbox-webpack-plugin": "6.5.4",
|
"workbox-webpack-plugin": "6.5.4",
|
||||||
"worker-loader": "3.0.8"
|
"worker-loader": "3.0.8"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@emotion/react": "11.10.5",
|
"@emotion/react": "11.11.0",
|
||||||
"@emotion/styled": "11.10.5",
|
"@emotion/styled": "11.11.0",
|
||||||
"@fontsource/noto-sans": "4.5.11",
|
"@fontsource/noto-sans": "4.5.11",
|
||||||
"@fontsource/noto-sans-hk": "4.5.12",
|
"@fontsource/noto-sans-hk": "4.5.12",
|
||||||
"@fontsource/noto-sans-jp": "4.5.12",
|
"@fontsource/noto-sans-jp": "4.5.12",
|
||||||
|
@ -75,12 +75,12 @@
|
||||||
"@fontsource/noto-sans-tc": "4.5.12",
|
"@fontsource/noto-sans-tc": "4.5.12",
|
||||||
"@jellyfin/sdk": "unstable",
|
"@jellyfin/sdk": "unstable",
|
||||||
"@loadable/component": "5.15.3",
|
"@loadable/component": "5.15.3",
|
||||||
"@mui/icons-material": "5.10.14",
|
"@mui/icons-material": "5.11.16",
|
||||||
"@mui/material": "5.10.14",
|
"@mui/material": "5.13.0",
|
||||||
"blurhash": "2.0.5",
|
"blurhash": "2.0.5",
|
||||||
"classlist.js": "https://github.com/eligrey/classList.js/archive/1.2.20180112.tar.gz",
|
"classlist.js": "https://github.com/eligrey/classList.js/archive/1.2.20180112.tar.gz",
|
||||||
"classnames": "2.3.2",
|
"classnames": "2.3.2",
|
||||||
"core-js": "3.30.1",
|
"core-js": "3.30.2",
|
||||||
"date-fns": "2.30.0",
|
"date-fns": "2.30.0",
|
||||||
"dompurify": "3.0.1",
|
"dompurify": "3.0.1",
|
||||||
"epubjs": "0.3.93",
|
"epubjs": "0.3.93",
|
||||||
|
@ -90,25 +90,25 @@
|
||||||
"flv.js": "1.6.2",
|
"flv.js": "1.6.2",
|
||||||
"headroom.js": "0.12.0",
|
"headroom.js": "0.12.0",
|
||||||
"history": "5.3.0",
|
"history": "5.3.0",
|
||||||
"hls.js": "1.4.1",
|
"hls.js": "1.4.3",
|
||||||
"intersection-observer": "0.12.2",
|
"intersection-observer": "0.12.2",
|
||||||
"jassub": "1.5.13",
|
"jassub": "1.5.13",
|
||||||
"jellyfin-apiclient": "1.10.0",
|
"jellyfin-apiclient": "1.10.0",
|
||||||
"jquery": "3.6.4",
|
"jquery": "3.7.0",
|
||||||
"jstree": "3.3.15",
|
"jstree": "3.3.15",
|
||||||
"libarchive.js": "1.3.0",
|
"libarchive.js": "1.3.0",
|
||||||
"lodash-es": "4.17.21",
|
"lodash-es": "4.17.21",
|
||||||
"marked": "4.3.0",
|
"marked": "4.3.0",
|
||||||
"material-design-icons-iconfont": "6.7.0",
|
"material-design-icons-iconfont": "6.7.0",
|
||||||
"native-promise-only": "0.8.1",
|
"native-promise-only": "0.8.1",
|
||||||
"pdfjs-dist": "3.5.141",
|
"pdfjs-dist": "3.6.172",
|
||||||
"react": "17.0.2",
|
"react": "17.0.2",
|
||||||
"react-dom": "17.0.2",
|
"react-dom": "17.0.2",
|
||||||
"react-router-dom": "6.11.1",
|
"react-router-dom": "6.11.1",
|
||||||
"resize-observer-polyfill": "1.5.1",
|
"resize-observer-polyfill": "1.5.1",
|
||||||
"screenfull": "6.0.2",
|
"screenfull": "6.0.2",
|
||||||
"sortablejs": "1.15.0",
|
"sortablejs": "1.15.0",
|
||||||
"swiper": "9.2.4",
|
"swiper": "9.3.2",
|
||||||
"webcomponents.js": "0.7.24",
|
"webcomponents.js": "0.7.24",
|
||||||
"whatwg-fetch": "3.6.2",
|
"whatwg-fetch": "3.6.2",
|
||||||
"workbox-core": "6.5.4",
|
"workbox-core": "6.5.4",
|
||||||
|
|
|
@ -10,7 +10,6 @@ import { useApi } from 'hooks/useApi';
|
||||||
import { useLocalStorage } from 'hooks/useLocalStorage';
|
import { useLocalStorage } from 'hooks/useLocalStorage';
|
||||||
|
|
||||||
import AppToolbar from './components/AppToolbar';
|
import AppToolbar from './components/AppToolbar';
|
||||||
import AppUserMenu from './components/AppUserMenu';
|
|
||||||
import AppDrawer, { DRAWER_WIDTH, isDrawerPath } from './components/drawers/AppDrawer';
|
import AppDrawer, { DRAWER_WIDTH, isDrawerPath } from './components/drawers/AppDrawer';
|
||||||
import ElevationScroll from './components/ElevationScroll';
|
import ElevationScroll from './components/ElevationScroll';
|
||||||
import { ExperimentalAppRoutes } from './routes/AppRoutes';
|
import { ExperimentalAppRoutes } from './routes/AppRoutes';
|
||||||
|
@ -35,9 +34,6 @@ const ExperimentalApp = () => {
|
||||||
const isDrawerAvailable = isDrawerPath(location.pathname);
|
const isDrawerAvailable = isDrawerPath(location.pathname);
|
||||||
const isDrawerOpen = isDrawerActive && isDrawerAvailable && Boolean(user);
|
const isDrawerOpen = isDrawerActive && isDrawerAvailable && Boolean(user);
|
||||||
|
|
||||||
const [ userMenuAnchorEl, setUserMenuAnchorEl ] = useState<null | HTMLElement>(null);
|
|
||||||
const isUserMenuOpen = Boolean(userMenuAnchorEl);
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (isDrawerActive !== appSettings.isDrawerPinned) {
|
if (isDrawerActive !== appSettings.isDrawerPinned) {
|
||||||
setAppSettings({
|
setAppSettings({
|
||||||
|
@ -51,14 +47,6 @@ const ExperimentalApp = () => {
|
||||||
setIsDrawerActive(!isDrawerActive);
|
setIsDrawerActive(!isDrawerActive);
|
||||||
}, [ isDrawerActive, setIsDrawerActive ]);
|
}, [ isDrawerActive, setIsDrawerActive ]);
|
||||||
|
|
||||||
const onUserButtonClick = useCallback((event) => {
|
|
||||||
setUserMenuAnchorEl(event.currentTarget);
|
|
||||||
}, [ setUserMenuAnchorEl ]);
|
|
||||||
|
|
||||||
const onUserMenuClose = useCallback(() => {
|
|
||||||
setUserMenuAnchorEl(null);
|
|
||||||
}, [ setUserMenuAnchorEl ]);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ThemeProvider theme={theme}>
|
<ThemeProvider theme={theme}>
|
||||||
<Backdrop />
|
<Backdrop />
|
||||||
|
@ -80,7 +68,6 @@ const ExperimentalApp = () => {
|
||||||
<AppToolbar
|
<AppToolbar
|
||||||
isDrawerOpen={isDrawerOpen}
|
isDrawerOpen={isDrawerOpen}
|
||||||
onDrawerButtonClick={onToggleDrawer}
|
onDrawerButtonClick={onToggleDrawer}
|
||||||
onUserButtonClick={onUserButtonClick}
|
|
||||||
/>
|
/>
|
||||||
</AppBar>
|
</AppBar>
|
||||||
</ElevationScroll>
|
</ElevationScroll>
|
||||||
|
@ -120,12 +107,6 @@ const ExperimentalApp = () => {
|
||||||
<ExperimentalAppRoutes />
|
<ExperimentalAppRoutes />
|
||||||
</div>
|
</div>
|
||||||
</Box>
|
</Box>
|
||||||
|
|
||||||
<AppUserMenu
|
|
||||||
open={isUserMenuOpen}
|
|
||||||
anchorEl={userMenuAnchorEl}
|
|
||||||
onMenuClose={onUserMenuClose}
|
|
||||||
/>
|
|
||||||
</Box>
|
</Box>
|
||||||
</ThemeProvider>
|
</ThemeProvider>
|
||||||
);
|
);
|
||||||
|
|
|
@ -0,0 +1,64 @@
|
||||||
|
import Avatar from '@mui/material/Avatar';
|
||||||
|
import IconButton from '@mui/material/IconButton';
|
||||||
|
import { useTheme } from '@mui/material/styles';
|
||||||
|
import Tooltip from '@mui/material/Tooltip';
|
||||||
|
import React, { useCallback, useState } from 'react';
|
||||||
|
|
||||||
|
import { useApi } from 'hooks/useApi';
|
||||||
|
import globalize from 'scripts/globalize';
|
||||||
|
|
||||||
|
import AppUserMenu, { ID } from './menus/AppUserMenu';
|
||||||
|
|
||||||
|
const UserMenuButton = () => {
|
||||||
|
const theme = useTheme();
|
||||||
|
const { api, user } = useApi();
|
||||||
|
|
||||||
|
const [ userMenuAnchorEl, setUserMenuAnchorEl ] = useState<null | HTMLElement>(null);
|
||||||
|
const isUserMenuOpen = Boolean(userMenuAnchorEl);
|
||||||
|
|
||||||
|
const onUserButtonClick = useCallback((event) => {
|
||||||
|
setUserMenuAnchorEl(event.currentTarget);
|
||||||
|
}, [ setUserMenuAnchorEl ]);
|
||||||
|
|
||||||
|
const onUserMenuClose = useCallback(() => {
|
||||||
|
setUserMenuAnchorEl(null);
|
||||||
|
}, [ setUserMenuAnchorEl ]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<Tooltip title={globalize.translate('UserMenu')}>
|
||||||
|
<IconButton
|
||||||
|
size='large'
|
||||||
|
edge='end'
|
||||||
|
aria-label={globalize.translate('UserMenu')}
|
||||||
|
aria-controls={ID}
|
||||||
|
aria-haspopup='true'
|
||||||
|
onClick={onUserButtonClick}
|
||||||
|
color='inherit'
|
||||||
|
sx={{ padding: 0 }}
|
||||||
|
>
|
||||||
|
<Avatar
|
||||||
|
alt={user?.Name || undefined}
|
||||||
|
src={
|
||||||
|
api && user?.Id ?
|
||||||
|
`${api.basePath}/Users/${user.Id}/Images/Primary?tag=${user.PrimaryImageTag}` :
|
||||||
|
undefined
|
||||||
|
}
|
||||||
|
sx={{
|
||||||
|
bgcolor: theme.palette.primary.dark,
|
||||||
|
color: 'inherit'
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</IconButton>
|
||||||
|
</Tooltip>
|
||||||
|
|
||||||
|
<AppUserMenu
|
||||||
|
open={isUserMenuOpen}
|
||||||
|
anchorEl={userMenuAnchorEl}
|
||||||
|
onMenuClose={onUserMenuClose}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default UserMenuButton;
|
|
@ -1,9 +1,7 @@
|
||||||
import MenuIcon from '@mui/icons-material/Menu';
|
import MenuIcon from '@mui/icons-material/Menu';
|
||||||
import SearchIcon from '@mui/icons-material/Search';
|
import SearchIcon from '@mui/icons-material/Search';
|
||||||
import Avatar from '@mui/material/Avatar';
|
|
||||||
import Box from '@mui/material/Box';
|
import Box from '@mui/material/Box';
|
||||||
import IconButton from '@mui/material/IconButton';
|
import IconButton from '@mui/material/IconButton';
|
||||||
import { useTheme } from '@mui/material/styles';
|
|
||||||
import Toolbar from '@mui/material/Toolbar';
|
import Toolbar from '@mui/material/Toolbar';
|
||||||
import Tooltip from '@mui/material/Tooltip';
|
import Tooltip from '@mui/material/Tooltip';
|
||||||
import Typography from '@mui/material/Typography';
|
import Typography from '@mui/material/Typography';
|
||||||
|
@ -14,23 +12,20 @@ import appIcon from 'assets/img/icon-transparent.png';
|
||||||
import { useApi } from 'hooks/useApi';
|
import { useApi } from 'hooks/useApi';
|
||||||
import globalize from 'scripts/globalize';
|
import globalize from 'scripts/globalize';
|
||||||
|
|
||||||
import { ID as UserMenuId } from './AppUserMenu';
|
import AppTabs from '../tabs/AppTabs';
|
||||||
import AppTabs from './tabs/AppTabs';
|
import { isDrawerPath } from '../drawers/AppDrawer';
|
||||||
import { isDrawerPath } from './drawers/AppDrawer';
|
import UserMenuButton from './UserMenuButton';
|
||||||
|
|
||||||
interface AppToolbarProps {
|
interface AppToolbarProps {
|
||||||
isDrawerOpen: boolean
|
isDrawerOpen: boolean
|
||||||
onDrawerButtonClick: (event: React.MouseEvent<HTMLElement>) => void
|
onDrawerButtonClick: (event: React.MouseEvent<HTMLElement>) => void
|
||||||
onUserButtonClick: (event: React.MouseEvent<HTMLElement>) => void
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const AppToolbar: FC<AppToolbarProps> = ({
|
const AppToolbar: FC<AppToolbarProps> = ({
|
||||||
isDrawerOpen,
|
isDrawerOpen,
|
||||||
onDrawerButtonClick,
|
onDrawerButtonClick
|
||||||
onUserButtonClick
|
|
||||||
}) => {
|
}) => {
|
||||||
const theme = useTheme();
|
const { user } = useApi();
|
||||||
const { api, user } = useApi();
|
|
||||||
const isUserLoggedIn = Boolean(user);
|
const isUserLoggedIn = Boolean(user);
|
||||||
const location = useLocation();
|
const location = useLocation();
|
||||||
|
|
||||||
|
@ -108,31 +103,7 @@ const AppToolbar: FC<AppToolbarProps> = ({
|
||||||
</Box>
|
</Box>
|
||||||
|
|
||||||
<Box sx={{ flexGrow: 0 }}>
|
<Box sx={{ flexGrow: 0 }}>
|
||||||
<Tooltip title={globalize.translate('UserMenu')}>
|
<UserMenuButton />
|
||||||
<IconButton
|
|
||||||
size='large'
|
|
||||||
edge='end'
|
|
||||||
aria-label={globalize.translate('UserMenu')}
|
|
||||||
aria-controls={UserMenuId}
|
|
||||||
aria-haspopup='true'
|
|
||||||
onClick={onUserButtonClick}
|
|
||||||
color='inherit'
|
|
||||||
sx={{ padding: 0 }}
|
|
||||||
>
|
|
||||||
<Avatar
|
|
||||||
alt={user?.Name || undefined}
|
|
||||||
src={
|
|
||||||
api && user?.Id ?
|
|
||||||
`${api.basePath}/Users/${user.Id}/Images/Primary?tag=${user.PrimaryImageTag}` :
|
|
||||||
undefined
|
|
||||||
}
|
|
||||||
sx={{
|
|
||||||
bgcolor: theme.palette.primary.dark,
|
|
||||||
color: 'inherit'
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
</IconButton>
|
|
||||||
</Tooltip>
|
|
||||||
</Box>
|
</Box>
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
|
@ -16,6 +16,7 @@ const PLUGIN_PATHS = [
|
||||||
'/installedplugins.html',
|
'/installedplugins.html',
|
||||||
'/availableplugins.html',
|
'/availableplugins.html',
|
||||||
'/repositories.html',
|
'/repositories.html',
|
||||||
|
'/addplugin.html',
|
||||||
'/configurationpage'
|
'/configurationpage'
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
@ -2123,7 +2123,7 @@ class PlaybackManager {
|
||||||
const getAdditionalParts = async (items) => {
|
const getAdditionalParts = async (items) => {
|
||||||
const getOneAdditionalPart = async function (item) {
|
const getOneAdditionalPart = async function (item) {
|
||||||
let retVal = [item];
|
let retVal = [item];
|
||||||
if (item.Type === 'Movie') {
|
if (item.Type === 'Movie' || item.Type === 'Episode') {
|
||||||
const client = ServerConnections.getApiClient(item.ServerId);
|
const client = ServerConnections.getApiClient(item.ServerId);
|
||||||
const user = await client.getCurrentUser();
|
const user = await client.getCurrentUser();
|
||||||
const additionalParts = await client.getAdditionalVideoParts(user.Id, item.Id);
|
const additionalParts = await client.getAdditionalVideoParts(user.Id, item.Id);
|
||||||
|
|
|
@ -40,13 +40,13 @@ function getTextStyles(settings, preview) {
|
||||||
|
|
||||||
switch (settings.dropShadow || '') {
|
switch (settings.dropShadow || '') {
|
||||||
case 'raised':
|
case 'raised':
|
||||||
list.push({ name: 'text-shadow', value: '-1px -1px white, 0px -1px white, -1px 0px white, 1px 1px black, 0px 1px black, 1px 0px black' });
|
list.push({ name: 'text-shadow', value: '-0.04em -0.04em #fff, 0px -0.04em #fff, -0.04em 0px #fff, 0.04em 0.04em #000, 0px 0.04em #000, 0.04em 0px #000' });
|
||||||
break;
|
break;
|
||||||
case 'depressed':
|
case 'depressed':
|
||||||
list.push({ name: 'text-shadow', value: '1px 1px white, 0px 1px white, 1px 0px white, -1px -1px black, 0px -1px black, -1px 0px black' });
|
list.push({ name: 'text-shadow', value: '0.04em 0.04em #fff, 0px 0.04em #fff, 0.04em 0px #fff, -0.04em -0.04em #000, 0px -0.04em #000, -0.04em 0px #000' });
|
||||||
break;
|
break;
|
||||||
case 'uniform':
|
case 'uniform':
|
||||||
list.push({ name: 'text-shadow', value: '-1px 0px #000000, 0px 1px #000000, 1px 0px #000000, 0px -1px #000000' });
|
list.push({ name: 'text-shadow', value: '#000 0px 0.03em, #000 0px -0.03em, #000 0px 0.05em, #000 0px -0.05em, #000 0.03em 0px, #000 -0.03em 0px, #000 0.03em 0.03em, #000 -0.03em 0.03em, #000 0.03em -0.03em, #000 -0.03em -0.03em, #000 0.03em 0.05em, #000 -0.03em 0.05em, #000 0.03em -0.05em, #000 -0.03em -0.05em, #000 0.05em 0px, #000 -0.05em 0px, #000 0.05em 0.03em, #000 -0.05em 0.03em, #000 0.05em -0.03em, #000 -0.05em -0.03em' });
|
||||||
break;
|
break;
|
||||||
case 'none':
|
case 'none':
|
||||||
list.push({ name: 'text-shadow', value: 'none' });
|
list.push({ name: 'text-shadow', value: 'none' });
|
||||||
|
@ -93,7 +93,7 @@ function getTextStyles(settings, preview) {
|
||||||
list.push({ name: 'font-variant', value: 'small-caps' });
|
list.push({ name: 'font-variant', value: 'small-caps' });
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
list.push({ name: 'font-family', value: 'inherit' });
|
list.push({ name: 'font-family', value: '-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol' });
|
||||||
list.push({ name: 'font-variant', value: 'none' });
|
list.push({ name: 'font-variant', value: 'none' });
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -69,6 +69,10 @@
|
||||||
<div class="osdRatingsText">
|
<div class="osdRatingsText">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<button is="emby-ratingbutton" type="button" class="btnUserRating hide autoSize paper-icon-button-light" title="${Rate}">
|
||||||
|
<span class="xlargePaperIconButton material-icons favorite" aria-hidden="true"></span>
|
||||||
|
</button>
|
||||||
|
|
||||||
<button is="paper-icon-button-light" class="btnSubtitles hide autoSize" title="${Subtitles}">
|
<button is="paper-icon-button-light" class="btnSubtitles hide autoSize" title="${Subtitles}">
|
||||||
<span class="xlargePaperIconButton material-icons closed_caption" aria-hidden="true"></span>
|
<span class="xlargePaperIconButton material-icons closed_caption" aria-hidden="true"></span>
|
||||||
</button>
|
</button>
|
||||||
|
|
|
@ -17,6 +17,7 @@ import keyboardnavigation from '../../../scripts/keyboardNavigation';
|
||||||
import '../../../styles/scrollstyles.scss';
|
import '../../../styles/scrollstyles.scss';
|
||||||
import '../../../elements/emby-slider/emby-slider';
|
import '../../../elements/emby-slider/emby-slider';
|
||||||
import '../../../elements/emby-button/paper-icon-button-light';
|
import '../../../elements/emby-button/paper-icon-button-light';
|
||||||
|
import '../../../elements/emby-ratingbutton/emby-ratingbutton';
|
||||||
import '../../../styles/videoosd.scss';
|
import '../../../styles/videoosd.scss';
|
||||||
import ServerConnections from '../../../components/ServerConnections';
|
import ServerConnections from '../../../components/ServerConnections';
|
||||||
import shell from '../../../scripts/shell';
|
import shell from '../../../scripts/shell';
|
||||||
|
@ -133,6 +134,17 @@ export default function (view) {
|
||||||
programStartDateMs = 0;
|
programStartDateMs = 0;
|
||||||
programEndDateMs = 0;
|
programEndDateMs = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Set currently playing item for favorite button
|
||||||
|
const btnUserRating = view.querySelector('.btnUserRating');
|
||||||
|
|
||||||
|
if (itemHelper.canRate(currentItem)) {
|
||||||
|
btnUserRating.classList.remove('hide');
|
||||||
|
btnUserRating.setItem(currentItem);
|
||||||
|
} else {
|
||||||
|
btnUserRating.classList.add('hide');
|
||||||
|
btnUserRating.setItem(null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function getDisplayTimeWithoutAmPm(date, showSeconds) {
|
function getDisplayTimeWithoutAmPm(date, showSeconds) {
|
||||||
|
@ -1727,6 +1739,9 @@ export default function (view) {
|
||||||
view.querySelector('.btnAudio').addEventListener('click', showAudioTrackSelection);
|
view.querySelector('.btnAudio').addEventListener('click', showAudioTrackSelection);
|
||||||
view.querySelector('.btnSubtitles').addEventListener('click', showSubtitleTrackSelection);
|
view.querySelector('.btnSubtitles').addEventListener('click', showSubtitleTrackSelection);
|
||||||
|
|
||||||
|
// HACK: Remove `emby-button` from the rating button to make it look like the other buttons
|
||||||
|
view.querySelector('.btnUserRating').classList.remove('emby-button');
|
||||||
|
|
||||||
// Register to SyncPlay playback events and show big animated icon
|
// Register to SyncPlay playback events and show big animated icon
|
||||||
const showIcon = (action) => {
|
const showIcon = (action) => {
|
||||||
let primary_icon_name = '';
|
let primary_icon_name = '';
|
||||||
|
|
|
@ -624,6 +624,7 @@ class ChromecastPlayer {
|
||||||
isLocalPlayer: false,
|
isLocalPlayer: false,
|
||||||
appName: PlayerName,
|
appName: PlayerName,
|
||||||
deviceName: appName,
|
deviceName: appName,
|
||||||
|
deviceType: 'cast',
|
||||||
supportedCommands: [
|
supportedCommands: [
|
||||||
'VolumeUp',
|
'VolumeUp',
|
||||||
'VolumeDown',
|
'VolumeDown',
|
||||||
|
|
|
@ -1459,5 +1459,15 @@
|
||||||
"IgnoreDtsHelp": "Изключването на опцията може да теши някои проблеми, напр. липсващ звук на канали с отделни звукови и видео потоци.",
|
"IgnoreDtsHelp": "Изключването на опцията може да теши някои проблеми, напр. липсващ звук на канали с отделни звукови и видео потоци.",
|
||||||
"LabelHDHomerunPortRangeHelp": "Ограничи портовете на HDHomeRun UDP до тези стойности. (По подразбиране 1024 - 645535).",
|
"LabelHDHomerunPortRangeHelp": "Ограничи портовете на HDHomeRun UDP до тези стойности. (По подразбиране 1024 - 645535).",
|
||||||
"LabelHDHomerunPortRange": "HDHomeRun диапазон на портове",
|
"LabelHDHomerunPortRange": "HDHomeRun диапазон на портове",
|
||||||
"DownloadAll": "Изтегли всички"
|
"DownloadAll": "Изтегли всички",
|
||||||
|
"LabelChapterImageResolution": "Резолюция",
|
||||||
|
"LabelMaxDaysForNextUpHelp": "Задайте максималния брой дни, през които едно шоу би трябвало да остане в списъка „Next Up“, без да го гледате.",
|
||||||
|
"LabelEnableAudioVbr": "Разреши VBR звуково кодиране",
|
||||||
|
"HeaderPerformance": "Производителност",
|
||||||
|
"LabelChapterImageResolutionHelp": "Резолюцията на извлечените снимки към раздела.",
|
||||||
|
"AllowCollectionManagement": "Позволи този потребител да управлява колекции",
|
||||||
|
"LabelDummyChapterDuration": "Интервал",
|
||||||
|
"LabelDummyChapterCount": "Граница",
|
||||||
|
"LabelEnableAudioVbrHelp": "Динамичният битрейт предлага по-добро съотношение между качество и среден битрейт, но в някои редки случаи може да причини проблеми с буферирането и съвместимостта.",
|
||||||
|
"LabelIconMaxResHelp": "Максимална резолюция на изображенията предоставена чрез \"upnp:icon\" полето."
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,5 +15,7 @@
|
||||||
"Playlists": "প্লে লিস্ট সমূহ",
|
"Playlists": "প্লে লিস্ট সমূহ",
|
||||||
"Songs": "সঙ্গীতসমূহ",
|
"Songs": "সঙ্গীতসমূহ",
|
||||||
"Sync": "সমলয় স্থাপন",
|
"Sync": "সমলয় স্থাপন",
|
||||||
"ValueSpecialEpisodeName": "বিশেষ পর্ব - {0}"
|
"ValueSpecialEpisodeName": "বিশেষ পর্ব - {0}",
|
||||||
|
"Default": "ডিফল্ট",
|
||||||
|
"Shows": "টিভি পর্ব"
|
||||||
}
|
}
|
||||||
|
|
|
@ -138,7 +138,7 @@
|
||||||
"Authorize": "অনুমোদন",
|
"Authorize": "অনুমোদন",
|
||||||
"AspectRatio": "এস্পেক্ট রেসিও",
|
"AspectRatio": "এস্পেক্ট রেসিও",
|
||||||
"ApiKeysCaption": "বর্তমানে অনুমোদিত এ.পি.আই. কী গুলোর তালিকা",
|
"ApiKeysCaption": "বর্তমানে অনুমোদিত এ.পি.আই. কী গুলোর তালিকা",
|
||||||
"AllowTonemappingHelp": "টোন-ম্যাপিং একটি ভিডিওর গতিশীল পরিসরকে ছবির বিবরণ এবং রঙ বজায় রেখে HDR থেকে SDR-তে রূপান্তরিত করতে পারে। বর্তমানে শুধুমাত্র HDR10 বা HLG ভিডিওগুলির সাথে কাজ করে৷ যার জন্য সংশ্লিষ্ট OpenCL বা CUDA প্রয়োজন।",
|
"AllowTonemappingHelp": "টোন-ম্যাপিং একটি ভিডিওর গতিশীল পরিসরকে ছবির বিবরণ এবং রঙ বজায় রেখে HDR থেকে SDR-তে রূপান্তরিত করতে পারে। বর্তমানে শুধুমাত্র 10bit HDR10, HLG এবং DoVi ভিডিওগুলির সাথে কাজ করে৷ যার জন্য সংশ্লিষ্ট OpenCL বা CUDA প্রয়োজন।",
|
||||||
"AllowOnTheFlySubtitleExtractionHelp": "এমবেডেড সাবটাইটেল ভিডিও থেকে আলাদা করে প্লেইন টেক্সটে ক্লায়েন্টদের কাছে বিতরণ করা যেতে পারে যাতে ভিডিও ট্রান্সকোডিং এড়ানো যায়। কিন্তু কিছু সিস্টেমে এটি দীর্ঘ সময় নিতে পারে এবং এই প্রক্রিয়াটি চলাকালী্ন, ভিডিও প্লেব্যাক থেমে থাকতে পারে। ক্লায়েন্ট ডিভাইস দ্বারা সমর্থিত না হলে ভিডিও ট্রান্সকোডিংয়ের সাথে এম্বেড করা সাবটাইটেলগুলিকে বার্ন করার জন্য অপশনটি ডিসেবল করুন.",
|
"AllowOnTheFlySubtitleExtractionHelp": "এমবেডেড সাবটাইটেল ভিডিও থেকে আলাদা করে প্লেইন টেক্সটে ক্লায়েন্টদের কাছে বিতরণ করা যেতে পারে যাতে ভিডিও ট্রান্সকোডিং এড়ানো যায়। কিন্তু কিছু সিস্টেমে এটি দীর্ঘ সময় নিতে পারে এবং এই প্রক্রিয়াটি চলাকালী্ন, ভিডিও প্লেব্যাক থেমে থাকতে পারে। ক্লায়েন্ট ডিভাইস দ্বারা সমর্থিত না হলে ভিডিও ট্রান্সকোডিংয়ের সাথে এম্বেড করা সাবটাইটেলগুলিকে বার্ন করার জন্য অপশনটি ডিসেবল করুন.",
|
||||||
"AllowMediaConversionHelp": "কনভার্ট মিডিয়া ফিচারটির জন্য অনুমোদন দিন বা বাতিল করুন।",
|
"AllowMediaConversionHelp": "কনভার্ট মিডিয়া ফিচারটির জন্য অনুমোদন দিন বা বাতিল করুন।",
|
||||||
"AllowFfmpegThrottlingHelp": "যখন একটি ট্রান্সকোড বা রিমুক্স বর্তমান প্লেব্যাক অবস্থান থেকে যথেষ্ট এগিয়ে যায়, তখন প্রক্রিয়াটি থামানো যাতে এটি কম প্রসেস পাওয়ার গ্রহণ করে। প্রায়ই না টেনে (Seek) দেখার সময় এটি সবচেয়ে কার্যকর। আপনি যদি প্লেব্যাক সমস্যা অনুভব করেন তবে এটি বন্ধ করুন।",
|
"AllowFfmpegThrottlingHelp": "যখন একটি ট্রান্সকোড বা রিমুক্স বর্তমান প্লেব্যাক অবস্থান থেকে যথেষ্ট এগিয়ে যায়, তখন প্রক্রিয়াটি থামানো যাতে এটি কম প্রসেস পাওয়ার গ্রহণ করে। প্রায়ই না টেনে (Seek) দেখার সময় এটি সবচেয়ে কার্যকর। আপনি যদি প্লেব্যাক সমস্যা অনুভব করেন তবে এটি বন্ধ করুন।",
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
"AlwaysPlaySubtitles": "Vždy zobrazovat",
|
"AlwaysPlaySubtitles": "Vždy zobrazovat",
|
||||||
"AlwaysPlaySubtitlesHelp": "Titulky odpovídající jazykové předvolbě se načtou bez ohledu na jazyk audia.",
|
"AlwaysPlaySubtitlesHelp": "Titulky odpovídající jazykové předvolbě se načtou bez ohledu na jazyk audia.",
|
||||||
"Anytime": "Kdykoliv",
|
"Anytime": "Kdykoliv",
|
||||||
"AroundTime": "Okolo",
|
"AroundTime": "Okolo {0}",
|
||||||
"Art": "Čistý obrázek",
|
"Art": "Čistý obrázek",
|
||||||
"Artists": "Umělci",
|
"Artists": "Umělci",
|
||||||
"AsManyAsPossible": "Tolikrát jak je možné",
|
"AsManyAsPossible": "Tolikrát jak je možné",
|
||||||
|
@ -717,7 +717,7 @@
|
||||||
"MySubtitles": "Mé titulky",
|
"MySubtitles": "Mé titulky",
|
||||||
"Name": "Název",
|
"Name": "Název",
|
||||||
"NewCollection": "Nová kolekce",
|
"NewCollection": "Nová kolekce",
|
||||||
"NewCollectionHelp": "Kolekce dovolí vytvořit personalizované seskupení filmů a dalšího obsahu knihoven.",
|
"NewCollectionHelp": "Kolekce umožňují vytvořit vlastní skupiny filmů a dalšího obsahu knihoven.",
|
||||||
"NewCollectionNameExample": "Příklad: Kolekce Star Wars",
|
"NewCollectionNameExample": "Příklad: Kolekce Star Wars",
|
||||||
"NewEpisodes": "Nové episody",
|
"NewEpisodes": "Nové episody",
|
||||||
"NewEpisodesOnly": "Jen nové epizody",
|
"NewEpisodesOnly": "Jen nové epizody",
|
||||||
|
@ -1727,5 +1727,7 @@
|
||||||
"TonemappingModeHelp": "Určute režim mapování tónů. Pokud narazíte na přeexponovaná světlá místa, zkuste přepnout do režimu RGB.",
|
"TonemappingModeHelp": "Určute režim mapování tónů. Pokud narazíte na přeexponovaná světlá místa, zkuste přepnout do režimu RGB.",
|
||||||
"MenuOpen": "Otevřít nabídku",
|
"MenuOpen": "Otevřít nabídku",
|
||||||
"MenuClose": "Zavřít nabídku",
|
"MenuClose": "Zavřít nabídku",
|
||||||
"UserMenu": "Uživatelská nabídka"
|
"UserMenu": "Uživatelská nabídka",
|
||||||
|
"Studio": "Studio",
|
||||||
|
"AllowCollectionManagement": "Povolit tomuto uživateli spravovat kolekce"
|
||||||
}
|
}
|
||||||
|
|
|
@ -1727,5 +1727,7 @@
|
||||||
"TonemappingModeHelp": "Dynamikkompressionsmodus auswählen. Falls etwas überbelichtet ist, versuche in den RGB-Modus zu wechseln.",
|
"TonemappingModeHelp": "Dynamikkompressionsmodus auswählen. Falls etwas überbelichtet ist, versuche in den RGB-Modus zu wechseln.",
|
||||||
"MenuOpen": "Menü öffnen",
|
"MenuOpen": "Menü öffnen",
|
||||||
"MenuClose": "Menü schließen",
|
"MenuClose": "Menü schließen",
|
||||||
"UserMenu": "Benutzermenü"
|
"UserMenu": "Benutzermenü",
|
||||||
|
"Studio": "Studio",
|
||||||
|
"AllowCollectionManagement": "Dieser Benutzer darf Sammlungen verwalten"
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
"AllLanguages": "All languages",
|
"AllLanguages": "All languages",
|
||||||
"AllLibraries": "All libraries",
|
"AllLibraries": "All libraries",
|
||||||
"AllowedRemoteAddressesHelp": "Comma separated list of IP addresses or IP/netmask entries for networks that will be allowed to connect remotely. If left blank, all remote addresses will be allowed.",
|
"AllowedRemoteAddressesHelp": "Comma separated list of IP addresses or IP/netmask entries for networks that will be allowed to connect remotely. If left blank, all remote addresses will be allowed.",
|
||||||
|
"AllowCollectionManagement": "Allow this user to manage collections",
|
||||||
"AllowFfmpegThrottling": "Throttle Transcodes",
|
"AllowFfmpegThrottling": "Throttle Transcodes",
|
||||||
"AllowFfmpegThrottlingHelp": "When a transcode or remux gets far enough ahead from the current playback position, pause the process so it will consume less resources. This is most useful when watching without seeking often. Turn this off if you experience playback issues.",
|
"AllowFfmpegThrottlingHelp": "When a transcode or remux gets far enough ahead from the current playback position, pause the process so it will consume less resources. This is most useful when watching without seeking often. Turn this off if you experience playback issues.",
|
||||||
"AllowHWTranscodingHelp": "Allow the tuner to transcode streams on the fly. This may help reduce transcoding required by the server.",
|
"AllowHWTranscodingHelp": "Allow the tuner to transcode streams on the fly. This may help reduce transcoding required by the server.",
|
||||||
|
@ -1465,6 +1466,7 @@
|
||||||
"StoryArc": "Story Arc",
|
"StoryArc": "Story Arc",
|
||||||
"StopPlayback": "Stop playback",
|
"StopPlayback": "Stop playback",
|
||||||
"StopRecording": "Stop recording",
|
"StopRecording": "Stop recording",
|
||||||
|
"Studio": "Studio",
|
||||||
"Studios": "Studios",
|
"Studios": "Studios",
|
||||||
"Subtitle": "Subtitle",
|
"Subtitle": "Subtitle",
|
||||||
"SubtitleAppearanceSettingsAlsoPassedToCastDevices": "These settings also apply to any Google Cast playback started by this device.",
|
"SubtitleAppearanceSettingsAlsoPassedToCastDevices": "These settings also apply to any Google Cast playback started by this device.",
|
||||||
|
|
|
@ -69,7 +69,7 @@
|
||||||
"AllowHWTranscodingHelp": "Permita que el sintonizador transcodifique transmisiones sobre la marcha. Esto puede ayudar a reducir la transcodificación requerida por el servidor.",
|
"AllowHWTranscodingHelp": "Permita que el sintonizador transcodifique transmisiones sobre la marcha. Esto puede ayudar a reducir la transcodificación requerida por el servidor.",
|
||||||
"AllowedRemoteAddressesHelp": "Lista separada por comas de direcciones IP o IP/máscara de red para redes a las que se les permitirá conectarse de forma remota. Si se deja vacía, todas las direcciones remotas serán permitidas.",
|
"AllowedRemoteAddressesHelp": "Lista separada por comas de direcciones IP o IP/máscara de red para redes a las que se les permitirá conectarse de forma remota. Si se deja vacía, todas las direcciones remotas serán permitidas.",
|
||||||
"AlwaysPlaySubtitlesHelp": "Los subtítulos que concuerden con la preferencia de idioma se cargarán independientemente del idioma del audio.",
|
"AlwaysPlaySubtitlesHelp": "Los subtítulos que concuerden con la preferencia de idioma se cargarán independientemente del idioma del audio.",
|
||||||
"AroundTime": "Alrededor",
|
"AroundTime": "Alrededor de {0}",
|
||||||
"Art": "Arte",
|
"Art": "Arte",
|
||||||
"AsManyAsPossible": "Tantos como sea posible",
|
"AsManyAsPossible": "Tantos como sea posible",
|
||||||
"AspectRatio": "Relación de aspecto",
|
"AspectRatio": "Relación de aspecto",
|
||||||
|
@ -1726,5 +1726,7 @@
|
||||||
"TonemappingModeHelp": "Seleccionar el modo de mapeo de tono. Si experimenta sobreexposición intente cambiar al modo RGB.",
|
"TonemappingModeHelp": "Seleccionar el modo de mapeo de tono. Si experimenta sobreexposición intente cambiar al modo RGB.",
|
||||||
"MenuOpen": "Abrir menú",
|
"MenuOpen": "Abrir menú",
|
||||||
"MenuClose": "Cerrar menú",
|
"MenuClose": "Cerrar menú",
|
||||||
"UserMenu": "Menú del usuario"
|
"UserMenu": "Menú del usuario",
|
||||||
|
"Studio": "Estudio",
|
||||||
|
"AllowCollectionManagement": "Permitir que este usuario administre colecciones"
|
||||||
}
|
}
|
||||||
|
|
|
@ -98,7 +98,7 @@
|
||||||
"ConfirmDeleteItem": "Al borrar este elemento se borrará del sistema de archivos y de la biblioteca. ¿Quieres continuar?",
|
"ConfirmDeleteItem": "Al borrar este elemento se borrará del sistema de archivos y de la biblioteca. ¿Quieres continuar?",
|
||||||
"ConfirmDeleteItems": "Al borrar este elemento se borrará del sistema de archivos y de la biblioteca. ¿Quieres continuar?",
|
"ConfirmDeleteItems": "Al borrar este elemento se borrará del sistema de archivos y de la biblioteca. ¿Quieres continuar?",
|
||||||
"ConfirmDeletion": "Confirmar borrado",
|
"ConfirmDeletion": "Confirmar borrado",
|
||||||
"ConfirmEndPlayerSession": "¿Quieres cerrar Jellyfin en el dispositivo?",
|
"ConfirmEndPlayerSession": "¿Quieres cerrar Jellyfin en el dispositivo {0}?",
|
||||||
"Connect": "Conectar",
|
"Connect": "Conectar",
|
||||||
"Continuing": "Continuando",
|
"Continuing": "Continuando",
|
||||||
"CustomDlnaProfilesHelp": "Crear un perfil personalizado para un nuevo dispositivo o reemplazar un perfil del sistema.",
|
"CustomDlnaProfilesHelp": "Crear un perfil personalizado para un nuevo dispositivo o reemplazar un perfil del sistema.",
|
||||||
|
@ -1055,7 +1055,7 @@
|
||||||
"Aired": "Emitido",
|
"Aired": "Emitido",
|
||||||
"AnyLanguage": "Cualquier idioma",
|
"AnyLanguage": "Cualquier idioma",
|
||||||
"Anytime": "En cualquier momento",
|
"Anytime": "En cualquier momento",
|
||||||
"AroundTime": "Aproximadamente",
|
"AroundTime": "Aproximadamente {0}",
|
||||||
"Ascending": "Ascendente",
|
"Ascending": "Ascendente",
|
||||||
"Audio": "Audio",
|
"Audio": "Audio",
|
||||||
"Auto": "Automático",
|
"Auto": "Automático",
|
||||||
|
@ -1724,5 +1724,10 @@
|
||||||
"HeaderPerformance": "Rendimiento",
|
"HeaderPerformance": "Rendimiento",
|
||||||
"LabelTonemappingMode": "Modo de mapeo de tono",
|
"LabelTonemappingMode": "Modo de mapeo de tono",
|
||||||
"TonemappingModeHelp": "Seleccione el modo de mapeado de tono. Si experimenta sobreiluminación intente cambiar al modo RGB.",
|
"TonemappingModeHelp": "Seleccione el modo de mapeado de tono. Si experimenta sobreiluminación intente cambiar al modo RGB.",
|
||||||
"Select": "Seleccionar"
|
"Select": "Seleccionar",
|
||||||
|
"MenuOpen": "Abrir Menú",
|
||||||
|
"MenuClose": "Cerrar Menú",
|
||||||
|
"UserMenu": "Menú de Usuario",
|
||||||
|
"Studio": "Estudio",
|
||||||
|
"AllowCollectionManagement": "Permitir que este usuario administre colecciones"
|
||||||
}
|
}
|
||||||
|
|
|
@ -209,7 +209,7 @@
|
||||||
"Songs": "Kappaleet",
|
"Songs": "Kappaleet",
|
||||||
"Shows": "Sarjat",
|
"Shows": "Sarjat",
|
||||||
"CopyStreamURLSuccess": "Osoite kopioitu onnistuneesti.",
|
"CopyStreamURLSuccess": "Osoite kopioitu onnistuneesti.",
|
||||||
"DeathDateValue": "Kuoli: {}",
|
"DeathDateValue": "Kuoli: {0}",
|
||||||
"CustomDlnaProfilesHelp": "Luo uusi profiili kohdistaaksesi uuteen laitteeseen tai ohittaaksesi järjestelmäprofiilin.",
|
"CustomDlnaProfilesHelp": "Luo uusi profiili kohdistaaksesi uuteen laitteeseen tai ohittaaksesi järjestelmäprofiilin.",
|
||||||
"ErrorAddingMediaPathToVirtualFolder": "Lisättäessä mediasijaintia tapahtui virhe. Varmista, että se on oikein ja Jellyfinillä on sen käyttöoikeus.",
|
"ErrorAddingMediaPathToVirtualFolder": "Lisättäessä mediasijaintia tapahtui virhe. Varmista, että se on oikein ja Jellyfinillä on sen käyttöoikeus.",
|
||||||
"Episodes": "Jaksot",
|
"Episodes": "Jaksot",
|
||||||
|
@ -1007,7 +1007,7 @@
|
||||||
"ValueTimeLimitSingleHour": "Aikaraja: 1 tunti",
|
"ValueTimeLimitSingleHour": "Aikaraja: 1 tunti",
|
||||||
"ValueTimeLimitMultiHour": "Aikaraja: {0} tuntia",
|
"ValueTimeLimitMultiHour": "Aikaraja: {0} tuntia",
|
||||||
"ValueContainer": "Säiliö: {0}",
|
"ValueContainer": "Säiliö: {0}",
|
||||||
"ValueConditions": "Ehdot: {0]",
|
"ValueConditions": "Ehdot: {0}",
|
||||||
"ValueCodec": "Codec: {0}",
|
"ValueCodec": "Codec: {0}",
|
||||||
"ValueAudioCodec": "Audio Codec: {0}",
|
"ValueAudioCodec": "Audio Codec: {0}",
|
||||||
"SeriesYearToPresent": "{0} - Nykyhetki",
|
"SeriesYearToPresent": "{0} - Nykyhetki",
|
||||||
|
@ -1285,7 +1285,7 @@
|
||||||
"LabelTonemappingDesatHelp": "Käytä desaturaatiota korostuksille, jotka ylittävät tämän kirkkaustason. Korkeampi arvo säilyttää enemmän värejä. Asetus auttaa estämään kirkkaiden kohtien epäluonnollisen ylikorostuneet värit muuttamalla ne (pehmeästi) valkoiseksi. Tekee kuvasta luonnollisemman vähentämällä teitoja väriavaruuden ulkopuolisista väreistä. Suositellut ja oletusarovot ovat 0 ja 0.5.",
|
"LabelTonemappingDesatHelp": "Käytä desaturaatiota korostuksille, jotka ylittävät tämän kirkkaustason. Korkeampi arvo säilyttää enemmän värejä. Asetus auttaa estämään kirkkaiden kohtien epäluonnollisen ylikorostuneet värit muuttamalla ne (pehmeästi) valkoiseksi. Tekee kuvasta luonnollisemman vähentämällä teitoja väriavaruuden ulkopuolisista väreistä. Suositellut ja oletusarovot ovat 0 ja 0.5.",
|
||||||
"LabelTonemappingDesat": "Sävykartoituksen desaturaatio",
|
"LabelTonemappingDesat": "Sävykartoituksen desaturaatio",
|
||||||
"LabelTonemappingAlgorithm": "Valitse käytettävä sävykartoitusalgoritmi",
|
"LabelTonemappingAlgorithm": "Valitse käytettävä sävykartoitusalgoritmi",
|
||||||
"LabelSyncPlayTimeSyncOffset": "Ajan säätö",
|
"LabelSyncPlayTimeSyncOffset": "Aika poikkeama",
|
||||||
"LabelSyncPlayTimeSyncDevice": "Synkronoi aika",
|
"LabelSyncPlayTimeSyncDevice": "Synkronoi aika",
|
||||||
"LabelSyncPlaySyncMethod": "Synkronointimetodi",
|
"LabelSyncPlaySyncMethod": "Synkronointimetodi",
|
||||||
"LabelSyncPlayResumePlaybackDescription": "Liitä takaisin ryhmätoisto",
|
"LabelSyncPlayResumePlaybackDescription": "Liitä takaisin ryhmätoisto",
|
||||||
|
@ -1325,7 +1325,7 @@
|
||||||
"LabelPublishedServerUriHelp": "Ohita Jellyfinin käyttämä URI perustuen käyttöliittymän tai asiakasohjelman IP-osoitteeseen.",
|
"LabelPublishedServerUriHelp": "Ohita Jellyfinin käyttämä URI perustuen käyttöliittymän tai asiakasohjelman IP-osoitteeseen.",
|
||||||
"LabelPublishedServerUri": "Julkaistut palvelimen URIt",
|
"LabelPublishedServerUri": "Julkaistut palvelimen URIt",
|
||||||
"LabelPostProcessorArgumentsHelp": "Käytä sijaintia {path} tallenteen tiedostosijaintina.",
|
"LabelPostProcessorArgumentsHelp": "Käytä sijaintia {path} tallenteen tiedostosijaintina.",
|
||||||
"LabelOpenclDeviceHelp": "Tämä on savykartoitukseen käytettävä OpenCL-laite. Pisteen vasemmalla puolella on alustanumero ja oikealla alustan laitenumero. Oletusarvo on 0.0. Vaatii OpenCL-laitteistokiihdytyksen sisältävän FFmpeg-ohjelmatiedoston.",
|
"LabelOpenclDeviceHelp": "Tämä on sävykartoitukseen käytettävä OpenCL-laite. Pisteen vasemmalla puolella on alustanumero ja oikealla alustan laitenumero. Oletusarvo on 0.0. Vaatii OpenCL-laitteistokiihdytyksen sisältävän FFmpeg-ohjelmatiedoston.",
|
||||||
"LabelOpenclDevice": "OpenCL-laite",
|
"LabelOpenclDevice": "OpenCL-laite",
|
||||||
"LabelNumberOfGuideDaysHelp": "Lataamalla ohjelmaoppaan useammalle päivälle, voidaan näyttää kattavammat ohjelmatiedot ja ajoittaa ajastuksia aiemmin, mutta lataukset myös kestävät pidempään. Automaattinen asetus määrittää aikajakson kanavien määrän perusteella.",
|
"LabelNumberOfGuideDaysHelp": "Lataamalla ohjelmaoppaan useammalle päivälle, voidaan näyttää kattavammat ohjelmatiedot ja ajoittaa ajastuksia aiemmin, mutta lataukset myös kestävät pidempään. Automaattinen asetus määrittää aikajakson kanavien määrän perusteella.",
|
||||||
"LabelNumberOfGuideDays": "Päivien lukumäärä jolta ohjelmaoppaan tiedot ladataan",
|
"LabelNumberOfGuideDays": "Päivien lukumäärä jolta ohjelmaoppaan tiedot ladataan",
|
||||||
|
@ -1333,7 +1333,7 @@
|
||||||
"LabelMoviePrefix": "Elokuvan etuliite",
|
"LabelMoviePrefix": "Elokuvan etuliite",
|
||||||
"LabelMonitorUsers": "Monitoroi toimintaa",
|
"LabelMonitorUsers": "Monitoroi toimintaa",
|
||||||
"LabelMinAudiobookResume": "Äänikirjan toiston jatkamisen vähimmäismäärä minuutteina",
|
"LabelMinAudiobookResume": "Äänikirjan toiston jatkamisen vähimmäismäärä minuutteina",
|
||||||
"LabelMaxMuxingQueueSizeHelp": "Suoratoiston alustusta odotettaessa puskuroitavien pakettien enimmäismäärä. Kokeile arovon korotusta, jos havaitset \"Too many packets buffered for output stream\" -virheen FFmpeg-lokissa. Suositeltava arvo on 2048.",
|
"LabelMaxMuxingQueueSizeHelp": "Suoratoiston alustusta odotettaessa puskuroitavien pakettien enimmäismäärä. Kokeile arvon korotusta, jos havaitset \"Too many packets buffered for output stream\" -virheen FFmpeg-lokissa. Suositeltava arvo on 2048.",
|
||||||
"LabelMaxMuxingQueueSize": "Muxausjonon enimmäispituus",
|
"LabelMaxMuxingQueueSize": "Muxausjonon enimmäispituus",
|
||||||
"LabelMatchType": "Täsmäystyyppi",
|
"LabelMatchType": "Täsmäystyyppi",
|
||||||
"LabelKodiMetadataUserHelp": "Tallenna NFO-tiedostoihin katselutiedot, joita muut sovellukset voivat hyödyntää.",
|
"LabelKodiMetadataUserHelp": "Tallenna NFO-tiedostoihin katselutiedot, joita muut sovellukset voivat hyödyntää.",
|
||||||
|
@ -1722,5 +1722,10 @@
|
||||||
"LabelEnableAudioVbrHelp": "Muuttuva bittinopeus (variable bitrate, VBR) tuottaa keskitasoista paremman laadun, mutta saattaa joissakin harvoissa tapauksissa aiheuttaa puskurointi ja yhteensopivuusongelmia.",
|
"LabelEnableAudioVbrHelp": "Muuttuva bittinopeus (variable bitrate, VBR) tuottaa keskitasoista paremman laadun, mutta saattaa joissakin harvoissa tapauksissa aiheuttaa puskurointi ja yhteensopivuusongelmia.",
|
||||||
"Select": "Valitse",
|
"Select": "Valitse",
|
||||||
"LabelTonemappingMode": "Sävykartoituksen tila",
|
"LabelTonemappingMode": "Sävykartoituksen tila",
|
||||||
"TonemappingModeHelp": "Valitse sävykartoituksen tila. Jos esiintyy ylikorostuneita värejä, kokeile RGB>-tilaa."
|
"TonemappingModeHelp": "Valitse sävykartoituksen tila. Jos esiintyy ylikorostuneita värejä, kokeile RGB>-tilaa.",
|
||||||
|
"MenuOpen": "Avaa valikko",
|
||||||
|
"MenuClose": "Sulje valikko",
|
||||||
|
"UserMenu": "Käyttäjä-valikko",
|
||||||
|
"Studio": "Studio",
|
||||||
|
"AllowCollectionManagement": "Salli tämän käyttäjän hallita kokoelmia"
|
||||||
}
|
}
|
||||||
|
|
|
@ -1040,5 +1040,11 @@
|
||||||
"LabelMetadataPath": "Chemin des métadonnées",
|
"LabelMetadataPath": "Chemin des métadonnées",
|
||||||
"LabelDummyChapterDuration": "Intervalle",
|
"LabelDummyChapterDuration": "Intervalle",
|
||||||
"LabelDummyChapterCount": "Limite",
|
"LabelDummyChapterCount": "Limite",
|
||||||
"LabelChapterImageResolution": "Résolution"
|
"LabelChapterImageResolution": "Résolution",
|
||||||
|
"HeaderPerformance": "Performance",
|
||||||
|
"LabelEnableAudioVbrHelp": "Le débit binaire variable offre une qualité supérieure à la moyenne mais peut, dans de rares cas, causer des problèmes de mise en mémoire tampon et de compatibilité.",
|
||||||
|
"HeaderRecordingMetadataSaving": "Enregistrement des métadonnées",
|
||||||
|
"HeaderDummyChapter": "Images des chapitres",
|
||||||
|
"LabelDummyChapterCountHelp": "Le nombre maximum d'images de chapitre qui seront extraites pour chaque fichier média.",
|
||||||
|
"LabelChapterImageResolutionHelp": "La résolution des images de chapitre."
|
||||||
}
|
}
|
||||||
|
|
|
@ -1727,5 +1727,7 @@
|
||||||
"Select": "Sélectionner",
|
"Select": "Sélectionner",
|
||||||
"MenuOpen": "Ouvrir le menu",
|
"MenuOpen": "Ouvrir le menu",
|
||||||
"MenuClose": "Fermer le menu",
|
"MenuClose": "Fermer le menu",
|
||||||
"UserMenu": "Menu utilisateur"
|
"UserMenu": "Menu utilisateur",
|
||||||
|
"Studio": "Studio",
|
||||||
|
"AllowCollectionManagement": "Autoriser cet utilisateur à gérer les collections"
|
||||||
}
|
}
|
||||||
|
|
|
@ -207,5 +207,189 @@
|
||||||
"ButtonScanAllLibraries": "Escanear tódalas bibliotecas",
|
"ButtonScanAllLibraries": "Escanear tódalas bibliotecas",
|
||||||
"BurnSubtitlesHelp": "Indica se o servidor debería incluír os subtítulos ao recodificar os vídeos. Se non fas esto mellorarás moito o rendemento. Elixe Auto para incluir formatos baseados na imaxe (VobSub, PGS, SUB, IDX, etc.) e certos subtítulos ASS ou SSA.",
|
"BurnSubtitlesHelp": "Indica se o servidor debería incluír os subtítulos ao recodificar os vídeos. Se non fas esto mellorarás moito o rendemento. Elixe Auto para incluir formatos baseados na imaxe (VobSub, PGS, SUB, IDX, etc.) e certos subtítulos ASS ou SSA.",
|
||||||
"ButtonAddScheduledTaskTrigger": "Engadir activador",
|
"ButtonAddScheduledTaskTrigger": "Engadir activador",
|
||||||
"ButtonForgotPassword": "Contrasinal esquecido"
|
"ButtonForgotPassword": "Contrasinal esquecido",
|
||||||
|
"DownloadsValue": "{0} descargas",
|
||||||
|
"EditImages": "Editar imaxes",
|
||||||
|
"EnableHardwareEncoding": "Habilitar codificación por hardware",
|
||||||
|
"EnableNextVideoInfoOverlay": "Mostrar próximo vídeo durante a reprodución",
|
||||||
|
"EnableTonemapping": "Habilitar mapeamento de Ton",
|
||||||
|
"BookLibraryHelp": "Libros de audio e texto soportados. Revise a guía {0} de nomenclatura de libros {1}.",
|
||||||
|
"ButtonPlayer": "Reprodutor",
|
||||||
|
"ButtonTogglePlaylist": "Lista de reprodución",
|
||||||
|
"Bwdif": "BWDIF",
|
||||||
|
"ChannelNumber": "Número da canle",
|
||||||
|
"AllowTonemappingHelp": "O mapeamento de tons pode transformar o rango dinámico do vídeo de HDR a SDR, á vez que se manteñen detalles da imaxe e cor. Sendo estas moi importantes para a reconstrución da escena orixinal. Actualmente só funciona con vídeos 10bit HDR10, HLG e Dovi. Isto require as correspondentes librarías de OpenCL ou Cuda.",
|
||||||
|
"ClientSettings": "Configuración do cliente",
|
||||||
|
"ColorTransfer": "Transferencia de cor",
|
||||||
|
"ConfirmDeleteItem": "Borrar este elemento eliminarao do sistema e da súa biblioteca. Está seguro?",
|
||||||
|
"ConfirmDeletion": "Confirmar borrado",
|
||||||
|
"Copied": "Copiado",
|
||||||
|
"CopyFailed": "Non se puido copiar",
|
||||||
|
"CopyStreamURL": "Copiar URL de transmisión",
|
||||||
|
"CustomDlnaProfilesHelp": "Cre un perfil personalizado para un novo dispositivo ou substituía un perfil do sistema.",
|
||||||
|
"DashboardVersionNumber": "Versión: {0}",
|
||||||
|
"Data": "Datos",
|
||||||
|
"DatePlayed": "Reproducido o",
|
||||||
|
"DateAdded": "Engadido o",
|
||||||
|
"DeleteDeviceConfirmation": "Está seguro de querer borrar este dispositivo? Volverá aparecer a próxima vez que o usuario inicie sesión con el.",
|
||||||
|
"DeleteDevicesConfirmation": "Está seguro de querer borrar todos os dispositivos? Todas as sesións serán fechadas. Os dispositivos reaparecerán a próxima vez que os usuarios inicien sesión.",
|
||||||
|
"DetectingDevices": "Detectando dispositivos",
|
||||||
|
"DeviceAccessHelp": "Isto só aplica a dispositivos que poidan ser completamente identificados e non evitará o acceso co navegador web. Filtrar o acceso a dispositivos a un usuario, evitará o seu uso sen a súa aprobación.",
|
||||||
|
"Arranger": "Organizador",
|
||||||
|
"DisablePlugin": "Deshabilitar",
|
||||||
|
"EditMetadata": "Editar metadatos",
|
||||||
|
"Backdrop": "Imaxe de fondo",
|
||||||
|
"Box": "Caixa",
|
||||||
|
"ButtonActivate": "Activar",
|
||||||
|
"ChannelNameOnly": "Só a canle {0}",
|
||||||
|
"ConfirmDeleteItems": "Borrar estes elementos eliminaraos do sistema e da súa biblioteca. Está seguro?",
|
||||||
|
"CriticRating": "Puntuación dos críticos",
|
||||||
|
"BoxRear": "Caixa (reverso)",
|
||||||
|
"DeleteImage": "Borrar imaxe",
|
||||||
|
"DeleteMedia": "Borrar multimedia",
|
||||||
|
"Episode": "Episodio",
|
||||||
|
"DisplayMissingEpisodesWithinSeasons": "Mostrar episodios perdidos nas temporadas",
|
||||||
|
"DeleteUserConfirmation": "Está seguro de querer borrar este usuario?",
|
||||||
|
"EnableBlurHashHelp": "As imaxes que se están a carregar serán mostradas cun marcador único.",
|
||||||
|
"EnableAutoCast": "Definir como predeterminado",
|
||||||
|
"EnableCinemaMode": "Modo cinema",
|
||||||
|
"ClearQueue": "Borrar fila",
|
||||||
|
"EnableFasterAnimations": "Animacións máis rápidas",
|
||||||
|
"EndsAtValue": "Termina ás {0}",
|
||||||
|
"DirectPlaying": "Reprodución directa",
|
||||||
|
"ButtonUseQuickConnect": "Usar Conexión rápida",
|
||||||
|
"Backdrops": "Imaxes de fondo",
|
||||||
|
"DeathDateValue": "Faleceu: {0}",
|
||||||
|
"EasyPasswordHelp": "O código PIN é usado para inciar sesión sen conexión en clientes soportados, así como para un fácil inicio de sesión na rede local.",
|
||||||
|
"CinemaModeConfigurationHelp": "O modo cinema trae a experiencia do cinema á súa sala, permitindo a reprodución de tráilers e introducións personalizadas antes do acto principal.",
|
||||||
|
"DeleteUser": "Borrar usuario",
|
||||||
|
"Directors": "Directores",
|
||||||
|
"EnableDecodingColorDepth10Hevc": "Habilitar decodificación por hardware de 10 bits para HEVC",
|
||||||
|
"ConfirmDeleteImage": "Borrar a imaxe?",
|
||||||
|
"DailyAt": "Diariamente, ás {0}",
|
||||||
|
"DashboardServerName": "Servidor: {0}",
|
||||||
|
"ColorSpace": "Espazo de cor",
|
||||||
|
"EnableDisplayMirroring": "Duplicado de pantallas",
|
||||||
|
"ColorPrimaries": "Cores primarias",
|
||||||
|
"EditSubtitles": "Editar subtítulos",
|
||||||
|
"DefaultMetadataLangaugeDescription": "Estes son os valores por defecto, mais poden ser personalizados por cada biblioteca.",
|
||||||
|
"CopyStreamURLSuccess": "URL copiada exitosamente.",
|
||||||
|
"DeleteAll": "Borrar todo",
|
||||||
|
"BoxSet": "Colección",
|
||||||
|
"ConfirmEndPlayerSession": "Desexa apagar Jellyfin en {0}?",
|
||||||
|
"ButtonBackspace": "Retroceso",
|
||||||
|
"ButtonClose": "Fechar",
|
||||||
|
"ButtonSpace": "Espazo",
|
||||||
|
"Casual": "Casual",
|
||||||
|
"Console": "Consola",
|
||||||
|
"DoNotRecord": "Non gravar",
|
||||||
|
"DeleteImageConfirmation": "Está seguro de querer borrar esta imaxe?",
|
||||||
|
"EnablePhotosHelp": "As imaxes serán borradas e mostradas xunto outros arquivos multimedia.",
|
||||||
|
"Cursive": "Cursiva",
|
||||||
|
"DirectStreamHelp1": "Esta transmisión de vídeo é compatíbel con este dispositivo, mais posúen un formato de audio (DTS, Dolby TrueHD, etc.) ou número de canles de audio incompatíbeis. A transmisión de vídeo será retransmitida se perdas e en tempo real, antes de ser enviada ao dispositivo. Só a transmisión de audio será transcodificada.",
|
||||||
|
"Copy": "Copiar",
|
||||||
|
"EnablePhotos": "Mostrar fotos",
|
||||||
|
"CommunityRating": "Avaliación da comunidade",
|
||||||
|
"Digital": "Dixital",
|
||||||
|
"DisplayMissingEpisodesWithinSeasonsHelp": "Isto tamén debe ser habilitado para as bibliotecas de TV na configuración do servidor.",
|
||||||
|
"EnableExternalVideoPlayers": "Reprodutores externos",
|
||||||
|
"DirectPlayHelp": "O arquivo de orixe é completamente compatíbel con este cliente, e esta sesión está a recibir o arquivo sen modificacións.",
|
||||||
|
"EnablePlugin": "Habilitar",
|
||||||
|
"DisableCustomCss": "Desactivar o código CSS personalizado provisto polo servidor",
|
||||||
|
"DrmChannelsNotImported": "Canles con DRM non serán importadas.",
|
||||||
|
"EnableExternalVideoPlayersHelp": "O menú de reprodución externo será mostrado ao inicio da repordución do vídeo.",
|
||||||
|
"ButtonExitApp": "Saír da Aplicación",
|
||||||
|
"ChannelAccessHelp": "Seleccione as canles a compartillar con este usuario. Os administradores poderán editar todas as canles usando o xestor de metadatos.",
|
||||||
|
"ConfigureDateAdded": "Configure a forma de determinar os metadatos no Panel de control > Librarías > Configuración NFO",
|
||||||
|
"DownloadAll": "Descarregar todo",
|
||||||
|
"EncoderPresetHelp": "Escolla un valor máis rápido para mellorar o rendemento, ou un menor para mellorar a calidade.",
|
||||||
|
"Engineer": "Enxeñeiro de son",
|
||||||
|
"ErrorPlayerNotFound": "Non foi detectado ningún reprodutor para a multimedia solicitada.",
|
||||||
|
"HeaderCodecProfileHelp": "Os perfís dos códecs indican as limitacións do dispositivo ao reproducir códecs específicos. Se unha limitación ocorrer, o ficheiro multimedia sería transcodificado, aínda se o codec estiver configurado para reprodución directa.",
|
||||||
|
"EnableColorCodedBackgrounds": "Fondos con códigos de cores",
|
||||||
|
"GroupVersions": "Agrupar versións",
|
||||||
|
"HeaderDeleteDevice": "Borrar Dispositivo",
|
||||||
|
"HeaderDeleteItems": "Borrar Elementos",
|
||||||
|
"HeaderDirectPlayProfile": "Perfil de Reprodución Directa",
|
||||||
|
"EnableBackdropsHelp": "Mostrar as imaxes de fondo nalgunhas páxinas durante a navegación pola Biblioteca.",
|
||||||
|
"EnableThemeVideosHelp": "Reproducir vídeos temáticos durante a exploración da bilblioteca.",
|
||||||
|
"EveryNDays": "Cada {0} días",
|
||||||
|
"GroupBySeries": "Agrupar por series",
|
||||||
|
"ExtraLarge": "Extragrande",
|
||||||
|
"DirectStreamHelp2": "A enerxía consumida pola transmisión en directo dependerá xeralmente do perfil de audio. Só a transmisión de vídeo será sen perdas.",
|
||||||
|
"HeaderAddUpdateImage": "Engadir/Actualizar imaxe",
|
||||||
|
"ErrorStartHourGreaterThanEnd": "A hora de finalización debe ser maior ca de incio.",
|
||||||
|
"Genre": "Xénero",
|
||||||
|
"HeaderAddToPlaylist": "Engadir á Lista de Reprodución",
|
||||||
|
"Filter": "Filtro",
|
||||||
|
"HeaderConfirmPluginInstallation": "Configurar Instalación de Plugin",
|
||||||
|
"ErrorSavingTvProvider": "Houbo un erro ao gardar o provedor de servizos de TV. Por favor, verifique a accesibilidade aos contidos do provedor.",
|
||||||
|
"HeaderApiKeys": "Claves da API",
|
||||||
|
"HeaderAddUpdateSubtitle": "Engadir/Actualizar Subtítulo",
|
||||||
|
"Fullscreen": "Pantalla completa",
|
||||||
|
"HeaderAccessSchedule": "Restrición horaria",
|
||||||
|
"ErrorDefault": "Houbo un erro durante o procesamento da petición. Por favor, probe máis tarde.",
|
||||||
|
"HeaderCancelSeries": "Cancelar Series",
|
||||||
|
"HeaderAllowMediaDeletionFrom": "Permitir borrado de multimedia desde",
|
||||||
|
"HeaderConnectionFailure": "Fallo de Conexión",
|
||||||
|
"HeaderConnectToServer": "Conectar ao Servidor",
|
||||||
|
"DirectStreaming": "Transmisión directa",
|
||||||
|
"ErrorAddingXmlTvFile": "Houbo un erro ao acceder ao ficheiro XMLTV. Por favor, verifique a súa existencia e tenteo outra vez.",
|
||||||
|
"EveryXMinutes": "Cada {0} minutos",
|
||||||
|
"HeaderAudioSettings": "Configuracións de Audio",
|
||||||
|
"HeaderApiKey": "Clave da API",
|
||||||
|
"FormatValue": "Formato: {0}",
|
||||||
|
"HeaderContainerProfile": "Perfil do Contedor",
|
||||||
|
"GuestStar": "Estrela invitada",
|
||||||
|
"HeaderChapterImages": "Imaxes dos Capítulos",
|
||||||
|
"HeaderAddToCollection": "Engadir á Colección",
|
||||||
|
"HeaderActiveRecordings": "Gravacións activas",
|
||||||
|
"HeaderDebugging": "Depuración e Rastrexamento",
|
||||||
|
"EnableQuickConnect": "Activar Ligazón Rápida neste servidor",
|
||||||
|
"FetchingData": "Obtendo datos adicionais",
|
||||||
|
"HeaderCodecProfile": "Perfil do Códec",
|
||||||
|
"HeaderCastAndCrew": "Elenco e Persoal",
|
||||||
|
"EveryHour": "Cada hora",
|
||||||
|
"ErrorPleaseSelectLineup": "Por favor, seleccione a programación outra vez. Se a programación non estiver dispoñíbel, revise que o seu nome de usuario contrasinal, e código postal sexan correctos.",
|
||||||
|
"EveryXHours": "Cada {0} horas",
|
||||||
|
"FFmpegSavePathNotFound": "Non foi posíbel atopar o FFmeg en base a localización que proveu. FFprobe tamén é necesario e debe estar no mesmo directorio. Estes compoñentes son, xeralmente, instalados conxuntamente. Por favor, verifique a localización e tenteo outra vez.",
|
||||||
|
"FileReadCancelled": "A lectura do arquivo foi cancelada.",
|
||||||
|
"FileReadError": "Aconteceu un erro durante a lectura do ficheiro.",
|
||||||
|
"Framerate": "Taxa de cadros",
|
||||||
|
"HDPrograms": "Programas en HD",
|
||||||
|
"HardwareAccelerationWarning": "Habilitar a aceleración por hardware pode causar inestabilidade nalgúns entornos. Verifique que o seu sistema operativo e drivers de vídeo estean actualizados. Se tiver dificultades durante a reprodución após a súa habilitación, precisará cambiar a configuración novamente a Ningunha.",
|
||||||
|
"EnableDecodingColorDepth10Vp9": "Habilitar decodificación en hardware de 10 bits para VP9",
|
||||||
|
"EnableFasterAnimationsHelp": "Usar animacións e transicións máis rápidas",
|
||||||
|
"GoogleCastUnsupported": "Google Cast non soportado",
|
||||||
|
"HeaderActiveDevices": "Dispositivos activos",
|
||||||
|
"HeaderConfirmProfileDeletion": "Configurar Borrado de Perfil",
|
||||||
|
"EnableThemeSongsHelp": "Reproducir música temática durante a exploración da bilblioteca.",
|
||||||
|
"Experimental": "Experimental",
|
||||||
|
"HeaderAdditionalParts": "Partes adicionais",
|
||||||
|
"HeaderAppearsOn": "Aparece en",
|
||||||
|
"HeaderAddUser": "Engadir Usuario",
|
||||||
|
"HeaderApiKeysHelp": "As aplicacións externas requiren o uso dunha clave API co fin de se comunicar co servidor. As claves son emitidas durante o inicio de sesión cunha conta de usuario normal.",
|
||||||
|
"HeaderCancelRecording": "Cancelar Gravación",
|
||||||
|
"HeaderChannelAccess": "Acceso ás Canles",
|
||||||
|
"HeaderCustomDlnaProfiles": "Perfís Personalizados",
|
||||||
|
"HeaderDateIssued": "Data de Emisión",
|
||||||
|
"HeaderDeleteDevices": "Borrar Todos os Dispositivos",
|
||||||
|
"HeaderDeleteItem": "Borrar Elemento",
|
||||||
|
"ErrorAddingMediaPathToVirtualFolder": "Houbo un erro ao engadir a localización da multimedia. Por favor, verifique que a localización é válida e que Jellyfin posúe acceso a ela.",
|
||||||
|
"ExitFullscreen": "Saír da pantalla completa",
|
||||||
|
"AllowCollectionManagement": "Permitir a este usuario xestionar coleccións",
|
||||||
|
"ErrorDeletingItem": "Houbo un erro durante o borrado do elemento do servidor. Por favor, verifique que Jellyfin posúe permisos de escritura sobre o ficheiro multimedia antes de o intentar outra vez.",
|
||||||
|
"ErrorGettingTvLineups": "Houbo un erro ao descarregar a programación da TV. Por favor, verifique a información e tenteo novamente.",
|
||||||
|
"FileNotFound": "Arquivo non encontrado.",
|
||||||
|
"HeaderConfigureRemoteAccess": "Configurar Acceso Remoto",
|
||||||
|
"HeaderContinueReading": "Continuar Lendo",
|
||||||
|
"HeaderContinueListening": "Continuar Escoitando",
|
||||||
|
"HeaderDeleteProvider": "Borrar Provedor",
|
||||||
|
"HeaderDetectMyDevices": "Detectar os Meus Dispositivos",
|
||||||
|
"HeaderDeviceAccess": "Acceso ao Dispositivo",
|
||||||
|
"H264CrfHelp": "O 'Factor de Velocidade Constante' (CRF) é a configuración por defecto para os codificadores x264 e x265. Pode definir os valores entre 0 e 51, onde valores baixos resultan nunha mellor calidade (coa consecuencia de ficheiros máis grandes). Os valores recomendados están entre 18 e 28. Por defecto para x264 usa 23, e x265 28, polo que pode usar iso como punto de partida.",
|
||||||
|
"HeaderAccessScheduleHelp": "Cre unha restrición horaria para limitar o acceso durante determinadas horas.",
|
||||||
|
"HeaderAudioBooks": "Audiolibros",
|
||||||
|
"HeaderConfirmRevokeApiKey": "Revocar Clave da API",
|
||||||
|
"HeaderContainerProfileHelp": "Os Perfís do Contedor indican as limitacións do dispositivo ao reproducir formatos específicos. Se unha limitación ocorrer, o ficheiro multimedia sería transcodificado, aínda se o formato estiver configurado para reprodución directa."
|
||||||
}
|
}
|
||||||
|
|
|
@ -1039,7 +1039,7 @@
|
||||||
"ClearQueue": "Hapus antrian",
|
"ClearQueue": "Hapus antrian",
|
||||||
"Bwdif": "BWDIF",
|
"Bwdif": "BWDIF",
|
||||||
"ButtonCast": "Putar ke perangkat",
|
"ButtonCast": "Putar ke perangkat",
|
||||||
"AllowTonemappingHelp": "Pemetaan corak dapat mengubah rentang dinamis sebuah video dari HDR menjadi SDR sembari mempertahankan detail dan warna gambar, yang merupakan informasi yang sangat penting untuk merepresentasikan adegan orisinal. Saat ini hanya bekerja dengan video HDR10 atau HLG. Hal ini memerlukan waktu proses OpenCL atau CUDA yang sesuai.",
|
"AllowTonemappingHelp": "Tone-mapping dapat mengubah jangkauan dinamis video dari HDR ke SDR dengan tetap mempertahankan detail dan warna gambar, yang merupakan informasi yang sangat penting untuk merepresentasikan pemandangan aslinya. Saat ini hanya berfungsi dengan video 10bit HDR10,HLG dan DoVi. Fitur ini membutuhkan runtime OpenCL atau CUDA yang sesuai.",
|
||||||
"HeaderPortRanges": "Pengaturan Proxy dan Firewall",
|
"HeaderPortRanges": "Pengaturan Proxy dan Firewall",
|
||||||
"HeaderUninstallPlugin": "Copot Plugin",
|
"HeaderUninstallPlugin": "Copot Plugin",
|
||||||
"LabelTonemappingAlgorithm": "Pilih algoritma Tone Mapping untuk digunakan",
|
"LabelTonemappingAlgorithm": "Pilih algoritma Tone Mapping untuk digunakan",
|
||||||
|
|
|
@ -752,7 +752,7 @@
|
||||||
"MessageNoAvailablePlugins": "Geen beschikbare plug-ins.",
|
"MessageNoAvailablePlugins": "Geen beschikbare plug-ins.",
|
||||||
"MessageNoMovieSuggestionsAvailable": "Er zijn momenteel geen filmsuggesties beschikbaar. Begin met het bekijken en beoordelen van je films; kom daarna terug om je aanbevelingen te bekijken.",
|
"MessageNoMovieSuggestionsAvailable": "Er zijn momenteel geen filmsuggesties beschikbaar. Begin met het bekijken en beoordelen van je films; kom daarna terug om je aanbevelingen te bekijken.",
|
||||||
"MessageNoPluginsInstalled": "U heeft geen plug-ins geïnstalleerd.",
|
"MessageNoPluginsInstalled": "U heeft geen plug-ins geïnstalleerd.",
|
||||||
"MessageNoTrailersFound": "Installeer het trailerkanaal om je film ervaring te verbeteren door middel van het toevoegen van een bibliotheek met internettrailers.",
|
"MessageNoTrailersFound": "Installeer het trailerkanaal om een bibliotheek met internettrailers toe te voegen en zo je filmervaring te verbeteren.",
|
||||||
"MessageNothingHere": "Lijst is leeg.",
|
"MessageNothingHere": "Lijst is leeg.",
|
||||||
"MessagePasswordResetForUsers": "De wachtwoorden van de volgende gebruikers zijn hersteld. Zij kunnen nu inloggen met de Easy-pincodes die voor het herstellen zijn gebruikt.",
|
"MessagePasswordResetForUsers": "De wachtwoorden van de volgende gebruikers zijn hersteld. Zij kunnen nu inloggen met de Easy-pincodes die voor het herstellen zijn gebruikt.",
|
||||||
"MessagePlayAccessRestricted": "Afspelen hiervan is op dit moment niet toegestaan. Neem contact op met je serverbeheerder voor meer informatie.",
|
"MessagePlayAccessRestricted": "Afspelen hiervan is op dit moment niet toegestaan. Neem contact op met je serverbeheerder voor meer informatie.",
|
||||||
|
@ -929,7 +929,7 @@
|
||||||
"Rate": "Beoordelen",
|
"Rate": "Beoordelen",
|
||||||
"RecentlyWatched": "Onlangs bekeken",
|
"RecentlyWatched": "Onlangs bekeken",
|
||||||
"RecommendationBecauseYouLike": "Omdat je {0} leuk vindt",
|
"RecommendationBecauseYouLike": "Omdat je {0} leuk vindt",
|
||||||
"RecommendationBecauseYouWatched": "Omdat je keek naar {0}",
|
"RecommendationBecauseYouWatched": "Omdat je {0} hebt gekeken",
|
||||||
"RecommendationDirectedBy": "Geregisseerd door {0}",
|
"RecommendationDirectedBy": "Geregisseerd door {0}",
|
||||||
"RecommendationStarring": "Met {0}",
|
"RecommendationStarring": "Met {0}",
|
||||||
"Record": "Opnemen",
|
"Record": "Opnemen",
|
||||||
|
@ -1660,9 +1660,9 @@
|
||||||
"MediaInfoVideoRangeType": "Type videobereik",
|
"MediaInfoVideoRangeType": "Type videobereik",
|
||||||
"LabelVideoRangeType": "Type videobereik",
|
"LabelVideoRangeType": "Type videobereik",
|
||||||
"VideoRangeTypeNotSupported": "Het bereiktype van de video wordt niet ondersteund",
|
"VideoRangeTypeNotSupported": "Het bereiktype van de video wordt niet ondersteund",
|
||||||
"LabelVppTonemappingContrastHelp": "Pas contrastversterking toe in VPP-tonemapping. De aanbevolen en standaardwaarden zijn 1.2 en 1.",
|
"LabelVppTonemappingContrastHelp": "Pas contrastversterking toe in VPP-tonemapping. De aanbevolen en standaardwaarden zijn 1.",
|
||||||
"LabelVppTonemappingContrast": "Contrastversterking VPP-tonemapping",
|
"LabelVppTonemappingContrast": "Contrastversterking VPP-tonemapping",
|
||||||
"LabelVppTonemappingBrightnessHelp": "Pas helderheidsversterking toe bij VPP-tonemapping. De aanbevolen en standaardwaarden zijn 0.",
|
"LabelVppTonemappingBrightnessHelp": "Pas helderheidsversterking toe bij VPP-tonemapping. De aanbevolen en standaardwaarden zijn 16 en 0.",
|
||||||
"LabelVppTonemappingBrightness": "Helderheidsversterking VPP-tonemapping",
|
"LabelVppTonemappingBrightness": "Helderheidsversterking VPP-tonemapping",
|
||||||
"EnableSplashScreen": "Opstartscherm inschakelen",
|
"EnableSplashScreen": "Opstartscherm inschakelen",
|
||||||
"EnableEnhancedNvdecDecoderHelp": "Experimentele NVDEC-implementatie; deze instelling niet inschakelen tenzij u decoderingsfouten tegenkomt.",
|
"EnableEnhancedNvdecDecoderHelp": "Experimentele NVDEC-implementatie; deze instelling niet inschakelen tenzij u decoderingsfouten tegenkomt.",
|
||||||
|
@ -1724,7 +1724,9 @@
|
||||||
"Select": "Selecteren",
|
"Select": "Selecteren",
|
||||||
"LabelTonemappingMode": "Tonemapping-modus",
|
"LabelTonemappingMode": "Tonemapping-modus",
|
||||||
"TonemappingModeHelp": "Selecteer de tonemapping-modus. Indien je overbelichtingsfouten ervaart, probeer dan de RGB-modus.",
|
"TonemappingModeHelp": "Selecteer de tonemapping-modus. Indien je overbelichtingsfouten ervaart, probeer dan de RGB-modus.",
|
||||||
"MenuOpen": "Open Menu",
|
"MenuOpen": "Menu openen",
|
||||||
"MenuClose": "Menu Sluiten",
|
"MenuClose": "Menu sluiten",
|
||||||
"UserMenu": "Gebruiker Menu"
|
"UserMenu": "Gebruikersmenu",
|
||||||
|
"Studio": "Studio",
|
||||||
|
"AllowCollectionManagement": "Deze gebruiker toestaan verzamelingen te beheren"
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
"AlwaysPlaySubtitlesHelp": "Napisy pasujące do preferowanego języka będą wczytywane, niezależnie od języka ścieżki dźwiękowej.",
|
"AlwaysPlaySubtitlesHelp": "Napisy pasujące do preferowanego języka będą wczytywane, niezależnie od języka ścieżki dźwiękowej.",
|
||||||
"AnyLanguage": "W dowolnym języku",
|
"AnyLanguage": "W dowolnym języku",
|
||||||
"Anytime": "O dowolnej porze",
|
"Anytime": "O dowolnej porze",
|
||||||
"AroundTime": "Około",
|
"AroundTime": "Około {0}",
|
||||||
"Art": "Przezrocze",
|
"Art": "Przezrocze",
|
||||||
"Artists": "Wykonawcy",
|
"Artists": "Wykonawcy",
|
||||||
"AsManyAsPossible": "Tak wiele jak to możliwe",
|
"AsManyAsPossible": "Tak wiele jak to możliwe",
|
||||||
|
@ -948,7 +948,7 @@
|
||||||
"Overview": "Opis",
|
"Overview": "Opis",
|
||||||
"PackageInstallCancelled": "Instalacja {0} (wersja {1}) anulowana.",
|
"PackageInstallCancelled": "Instalacja {0} (wersja {1}) anulowana.",
|
||||||
"PackageInstallCompleted": "Instalacja {0} (wersja {1}) zakończona.",
|
"PackageInstallCompleted": "Instalacja {0} (wersja {1}) zakończona.",
|
||||||
"PackageInstallFailed": "Instalacja {0} nieudana.",
|
"PackageInstallFailed": "Instalacja {0} (wersja {1}) nieudana.",
|
||||||
"ParentalRating": "Kategoria wiekowa",
|
"ParentalRating": "Kategoria wiekowa",
|
||||||
"PasswordMatchError": "Hasło i potwierdzenie hasła muszą się zgadzać.",
|
"PasswordMatchError": "Hasło i potwierdzenie hasła muszą się zgadzać.",
|
||||||
"PasswordResetComplete": "Hasło zostało zresetowane.",
|
"PasswordResetComplete": "Hasło zostało zresetowane.",
|
||||||
|
@ -1694,7 +1694,7 @@
|
||||||
"HeaderDummyChapter": "Obrazy rozdziału",
|
"HeaderDummyChapter": "Obrazy rozdziału",
|
||||||
"LabelDummyChapterDuration": "Interwał",
|
"LabelDummyChapterDuration": "Interwał",
|
||||||
"LabelDummyChapterDurationHelp": "Interwał ekstrakcji obrazu rozdziału w sekundach.",
|
"LabelDummyChapterDurationHelp": "Interwał ekstrakcji obrazu rozdziału w sekundach.",
|
||||||
"LabelDummyChapterCount": "Limit",
|
"LabelDummyChapterCount": "Ograniczenie",
|
||||||
"LabelChapterImageResolution": "Rozdzielczość",
|
"LabelChapterImageResolution": "Rozdzielczość",
|
||||||
"LabelChapterImageResolutionHelp": "Rozdzielczość wyodrębnionych obrazów rozdziałów.",
|
"LabelChapterImageResolutionHelp": "Rozdzielczość wyodrębnionych obrazów rozdziałów.",
|
||||||
"ResolutionMatchSource": "Źródło dopasowania",
|
"ResolutionMatchSource": "Źródło dopasowania",
|
||||||
|
@ -1724,5 +1724,10 @@
|
||||||
"LabelEnableAudioVbr": "Włącz kodowanie audio VBR",
|
"LabelEnableAudioVbr": "Włącz kodowanie audio VBR",
|
||||||
"LabelTonemappingMode": "Tryb mapowania tonów",
|
"LabelTonemappingMode": "Tryb mapowania tonów",
|
||||||
"Select": "Wybierz",
|
"Select": "Wybierz",
|
||||||
"TonemappingModeHelp": "Wybierz tryb mapowania tonalnego. Jeśli zauważysz artefakty, spróbuj przełączyć się na tryb RGB."
|
"TonemappingModeHelp": "Wybierz tryb mapowania tonalnego. Jeśli zauważysz artefakty, spróbuj przełączyć się na tryb RGB.",
|
||||||
|
"MenuOpen": "Otwórz Menu",
|
||||||
|
"MenuClose": "Zamknij Menu",
|
||||||
|
"UserMenu": "Menu Użytkownika",
|
||||||
|
"AllowCollectionManagement": "Zezwól temu użytkownikowi na zarządzanie kolekcjami",
|
||||||
|
"Studio": "Wytwórnia"
|
||||||
}
|
}
|
||||||
|
|
|
@ -266,7 +266,7 @@
|
||||||
"HeaderConnectionFailure": "Сбой соединения",
|
"HeaderConnectionFailure": "Сбой соединения",
|
||||||
"HeaderContainerProfile": "Профиль контейнера",
|
"HeaderContainerProfile": "Профиль контейнера",
|
||||||
"HeaderContainerProfileHelp": "Профили контейнеров обозначают ограничения устройства при воспроизведении определённых форматов. Если применяется ограничение, то медиаданные перекодируются, даже если формат настроен для прямого воспроизведения.",
|
"HeaderContainerProfileHelp": "Профили контейнеров обозначают ограничения устройства при воспроизведении определённых форматов. Если применяется ограничение, то медиаданные перекодируются, даже если формат настроен для прямого воспроизведения.",
|
||||||
"HeaderContinueListening": "Продолжение прослушивания",
|
"HeaderContinueListening": "Продолжить прослушивание",
|
||||||
"HeaderContinueWatching": "Продолжить просмотр",
|
"HeaderContinueWatching": "Продолжить просмотр",
|
||||||
"HeaderCustomDlnaProfiles": "Настраиваемые профили",
|
"HeaderCustomDlnaProfiles": "Настраиваемые профили",
|
||||||
"HeaderDateIssued": "Дата выдачи",
|
"HeaderDateIssued": "Дата выдачи",
|
||||||
|
@ -319,14 +319,14 @@
|
||||||
"HeaderLibrarySettings": "Параметры медиатеки",
|
"HeaderLibrarySettings": "Параметры медиатеки",
|
||||||
"HeaderLiveTvTunerSetup": "Установка и настройка тюнера",
|
"HeaderLiveTvTunerSetup": "Установка и настройка тюнера",
|
||||||
"HeaderLoginFailure": "Сбой входа",
|
"HeaderLoginFailure": "Сбой входа",
|
||||||
"HeaderMedia": "Медиаданные",
|
"HeaderMedia": "Медиатеки",
|
||||||
"HeaderMediaFolders": "Медиапапки",
|
"HeaderMediaFolders": "Медиапапки",
|
||||||
"HeaderMetadataSettings": "Параметры метаданных",
|
"HeaderMetadataSettings": "Параметры метаданных",
|
||||||
"HeaderMoreLikeThis": "Ещё подобное этому",
|
"HeaderMoreLikeThis": "Ещё подобное этому",
|
||||||
"HeaderMusicQuality": "Качество музыки",
|
"HeaderMusicQuality": "Качество музыки",
|
||||||
"HeaderMyDevice": "Моё устройство",
|
"HeaderMyDevice": "Моё устройство",
|
||||||
"HeaderMyMedia": "Мои медиаданные",
|
"HeaderMyMedia": "Мои медиатеки",
|
||||||
"HeaderMyMediaSmall": "Мои медиаданные (компактно)",
|
"HeaderMyMediaSmall": "Мои медиатеки (компактно)",
|
||||||
"HeaderNewApiKey": "Новый API-ключ",
|
"HeaderNewApiKey": "Новый API-ключ",
|
||||||
"HeaderNewDevices": "Новые устройства",
|
"HeaderNewDevices": "Новые устройства",
|
||||||
"HeaderNextEpisodePlayingInValue": "Следующий эпизод начнётся через {0}",
|
"HeaderNextEpisodePlayingInValue": "Следующий эпизод начнётся через {0}",
|
||||||
|
@ -410,7 +410,7 @@
|
||||||
"Help": "Справка",
|
"Help": "Справка",
|
||||||
"Hide": "Скрыть",
|
"Hide": "Скрыть",
|
||||||
"HideWatchedContentFromLatestMedia": "Скрыть просмотренное содержание в разделе «Недавно добавленные медиаданные»",
|
"HideWatchedContentFromLatestMedia": "Скрыть просмотренное содержание в разделе «Недавно добавленные медиаданные»",
|
||||||
"Home": "Главное",
|
"Home": "Главная",
|
||||||
"Horizontal": "Горизонтально",
|
"Horizontal": "Горизонтально",
|
||||||
"HttpsRequiresCert": "Чтобы включить HTTPS для внешних подключений, вам нужно будет предоставить доверенный SSL-cертификат, например, Let's Encrypt. Предоставьте сертификат или отключите защищенные соединения.",
|
"HttpsRequiresCert": "Чтобы включить HTTPS для внешних подключений, вам нужно будет предоставить доверенный SSL-cертификат, например, Let's Encrypt. Предоставьте сертификат или отключите защищенные соединения.",
|
||||||
"Identify": "Распознать",
|
"Identify": "Распознать",
|
||||||
|
@ -1512,7 +1512,7 @@
|
||||||
"EnablePlugin": "Включить",
|
"EnablePlugin": "Включить",
|
||||||
"Framerate": "Частота кадров",
|
"Framerate": "Частота кадров",
|
||||||
"DirectPlayHelp": "Исходный файл полностью совместим с этим клиентом, а сеанс получает файл без изменений.",
|
"DirectPlayHelp": "Исходный файл полностью совместим с этим клиентом, а сеанс получает файл без изменений.",
|
||||||
"HeaderContinueReading": "Продолжение чтения",
|
"HeaderContinueReading": "Продолжить чтение",
|
||||||
"EnableGamepadHelp": "Слушать ввод от любых подключенных контроллеров. (Необходим режим отображения \"TV\")",
|
"EnableGamepadHelp": "Слушать ввод от любых подключенных контроллеров. (Необходим режим отображения \"TV\")",
|
||||||
"LabelEnableGamepad": "Включить Gamepad",
|
"LabelEnableGamepad": "Включить Gamepad",
|
||||||
"Controls": "Управление",
|
"Controls": "Управление",
|
||||||
|
@ -1703,5 +1703,8 @@
|
||||||
"HeaderPerformance": "Производительность",
|
"HeaderPerformance": "Производительность",
|
||||||
"LabelDummyChapterDurationHelp": "Интервал извлечения изображения главы в секундах.",
|
"LabelDummyChapterDurationHelp": "Интервал извлечения изображения главы в секундах.",
|
||||||
"LabelChapterImageResolutionHelp": "Разрешение извлеченных изображений глав.",
|
"LabelChapterImageResolutionHelp": "Разрешение извлеченных изображений глав.",
|
||||||
"ResolutionMatchSource": "Соответствовать источнику"
|
"ResolutionMatchSource": "Соответствовать источнику",
|
||||||
|
"MenuOpen": "Открыть Меню",
|
||||||
|
"MenuClose": "Закрыть Меню",
|
||||||
|
"AllowCollectionManagement": "Разрешить этому пользователю управлять настройками коллекций"
|
||||||
}
|
}
|
||||||
|
|
|
@ -1244,7 +1244,7 @@
|
||||||
"Primary": "Первинний",
|
"Primary": "Первинний",
|
||||||
"PreviousTrack": "Перейти до попереднього",
|
"PreviousTrack": "Перейти до попереднього",
|
||||||
"PreviousChapter": "Попередній розділ",
|
"PreviousChapter": "Попередній розділ",
|
||||||
"Previous": "Попередній",
|
"Previous": "Попередні",
|
||||||
"Preview": "Попередній перегляд",
|
"Preview": "Попередній перегляд",
|
||||||
"Premieres": "Прем'єри",
|
"Premieres": "Прем'єри",
|
||||||
"Premiere": "Прем'єра",
|
"Premiere": "Прем'єра",
|
||||||
|
@ -1381,7 +1381,7 @@
|
||||||
"NextUp": "Далі",
|
"NextUp": "Далі",
|
||||||
"NextTrack": "Перейти до наступного",
|
"NextTrack": "Перейти до наступного",
|
||||||
"NextChapter": "Наступна частина",
|
"NextChapter": "Наступна частина",
|
||||||
"Next": "Наступне",
|
"Next": "Наступні",
|
||||||
"News": "Новини",
|
"News": "Новини",
|
||||||
"TabDirectPlay": "Пряме відтворення",
|
"TabDirectPlay": "Пряме відтворення",
|
||||||
"TypeOptionPluralMovie": "Фільми",
|
"TypeOptionPluralMovie": "Фільми",
|
||||||
|
@ -1724,5 +1724,7 @@
|
||||||
"TonemappingModeHelp": "Виберіть режим тонального відображення. Якщо ви спостерігаєте вигоряння яскравих ділянок, спробуйте переключитися в режим RGB.",
|
"TonemappingModeHelp": "Виберіть режим тонального відображення. Якщо ви спостерігаєте вигоряння яскравих ділянок, спробуйте переключитися в режим RGB.",
|
||||||
"MenuOpen": "Відкрити меню",
|
"MenuOpen": "Відкрити меню",
|
||||||
"MenuClose": "Закрити меню",
|
"MenuClose": "Закрити меню",
|
||||||
"UserMenu": "Меню користувача"
|
"UserMenu": "Меню користувача",
|
||||||
|
"Studio": "Студія",
|
||||||
|
"AllowCollectionManagement": "Дозволити цьому користувачеві керувати колекціями"
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
"AlwaysPlaySubtitles": "总是显示",
|
"AlwaysPlaySubtitles": "总是显示",
|
||||||
"AlwaysPlaySubtitlesHelp": "无论音频为何种语言,都将加载与语言偏好匹配的字幕。",
|
"AlwaysPlaySubtitlesHelp": "无论音频为何种语言,都将加载与语言偏好匹配的字幕。",
|
||||||
"Anytime": "任何时间",
|
"Anytime": "任何时间",
|
||||||
"AroundTime": "大约",
|
"AroundTime": "大约 {0}",
|
||||||
"Artists": "艺术家",
|
"Artists": "艺术家",
|
||||||
"AsManyAsPossible": "尽可能多",
|
"AsManyAsPossible": "尽可能多",
|
||||||
"Ascending": "升序",
|
"Ascending": "升序",
|
||||||
|
@ -405,8 +405,8 @@
|
||||||
"LabelAutomaticallyAddToCollection": "自动添加到合集",
|
"LabelAutomaticallyAddToCollection": "自动添加到合集",
|
||||||
"LabelAutomaticallyAddToCollectionHelp": "至少有2个电影属于相同的合集时,它们将会自动添加到合集中.",
|
"LabelAutomaticallyAddToCollectionHelp": "至少有2个电影属于相同的合集时,它们将会自动添加到合集中.",
|
||||||
"LabelAutomaticallyRefreshInternetMetadataEvery": "自动从互联网获取元数据并刷新",
|
"LabelAutomaticallyRefreshInternetMetadataEvery": "自动从互联网获取元数据并刷新",
|
||||||
"LabelBindToLocalNetworkAddress": "监听的本地网络地址",
|
"LabelBindToLocalNetworkAddress": "本地网络地址",
|
||||||
"LabelBindToLocalNetworkAddressHelp": "覆盖 HTTP 服务器绑定的本地 IP 地址。如果留空,服务器将会监听所有可用的地址。重启后生效。",
|
"LabelBindToLocalNetworkAddressHelp": "(可选)覆盖 HTTP 服务端绑定的本地 IP 地址。如果留空,服务端将会监听所有可用的地址。改变这个值需要重启服务端。",
|
||||||
"LabelBirthDate": "出生日期",
|
"LabelBirthDate": "出生日期",
|
||||||
"LabelBirthYear": "出生年份",
|
"LabelBirthYear": "出生年份",
|
||||||
"LabelBlastMessageInterval": "活动信号的时间间隔",
|
"LabelBlastMessageInterval": "活动信号的时间间隔",
|
||||||
|
@ -524,7 +524,7 @@
|
||||||
"LabelKodiMetadataSaveImagePathsHelp": "如果你的图像文件名不符合Kodi的规范,推荐使用。",
|
"LabelKodiMetadataSaveImagePathsHelp": "如果你的图像文件名不符合Kodi的规范,推荐使用。",
|
||||||
"LabelKodiMetadataUser": "为以下用户保存观看历史数据到 NFO 文件中",
|
"LabelKodiMetadataUser": "为以下用户保存观看历史数据到 NFO 文件中",
|
||||||
"LabelKodiMetadataUserHelp": "保存观看历史数据至 NFO 文件中以供其他应用程序利用。",
|
"LabelKodiMetadataUserHelp": "保存观看历史数据至 NFO 文件中以供其他应用程序利用。",
|
||||||
"LabelLanNetworks": "LAN 网络",
|
"LabelLanNetworks": "局域网",
|
||||||
"LabelLanguage": "语言",
|
"LabelLanguage": "语言",
|
||||||
"LabelLineup": "排队",
|
"LabelLineup": "排队",
|
||||||
"LabelLocalHttpServerPortNumber": "本地 HTTP 端口号",
|
"LabelLocalHttpServerPortNumber": "本地 HTTP 端口号",
|
||||||
|
@ -586,7 +586,7 @@
|
||||||
"LabelOptionalNetworkPathHelp": "如果这个文件夹在你的网络上是共享的,提供这个网络共享地址能够允许其他设备上的客户端直接访问媒体文件,例如 {0} 或者 {1}。",
|
"LabelOptionalNetworkPathHelp": "如果这个文件夹在你的网络上是共享的,提供这个网络共享地址能够允许其他设备上的客户端直接访问媒体文件,例如 {0} 或者 {1}。",
|
||||||
"LabelOriginalAspectRatio": "原始长宽比",
|
"LabelOriginalAspectRatio": "原始长宽比",
|
||||||
"LabelOriginalTitle": "原标题",
|
"LabelOriginalTitle": "原标题",
|
||||||
"LabelOverview": "内容概述",
|
"LabelOverview": "内容简介",
|
||||||
"LabelParentNumber": "父编号",
|
"LabelParentNumber": "父编号",
|
||||||
"LabelParentalRating": "家长分级",
|
"LabelParentalRating": "家长分级",
|
||||||
"LabelPassword": "密码",
|
"LabelPassword": "密码",
|
||||||
|
@ -915,7 +915,7 @@
|
||||||
"OptionWeekends": "周末",
|
"OptionWeekends": "周末",
|
||||||
"OptionWeekly": "每周",
|
"OptionWeekly": "每周",
|
||||||
"OriginalAirDateValue": "首映日期:{0}",
|
"OriginalAirDateValue": "首映日期:{0}",
|
||||||
"Overview": "概述",
|
"Overview": "简介",
|
||||||
"PackageInstallCancelled": "{0}(版本 {1}) 的安装被取消。",
|
"PackageInstallCancelled": "{0}(版本 {1}) 的安装被取消。",
|
||||||
"PackageInstallCompleted": "{0}(版本 {1})安装完成。",
|
"PackageInstallCompleted": "{0}(版本 {1})安装完成。",
|
||||||
"PackageInstallFailed": "{0}(版本 {1})安装失败。",
|
"PackageInstallFailed": "{0}(版本 {1})安装失败。",
|
||||||
|
@ -1213,7 +1213,7 @@
|
||||||
"SmallCaps": "小型大写字母",
|
"SmallCaps": "小型大写字母",
|
||||||
"SubtitleOffset": "字幕偏移",
|
"SubtitleOffset": "字幕偏移",
|
||||||
"MessageNoServersAvailable": "未能自动发现服务器。",
|
"MessageNoServersAvailable": "未能自动发现服务器。",
|
||||||
"TabNetworking": "联网",
|
"TabNetworking": "网络",
|
||||||
"LabelVideoCodec": "视频编码",
|
"LabelVideoCodec": "视频编码",
|
||||||
"LabelVideoBitrate": "视频码率",
|
"LabelVideoBitrate": "视频码率",
|
||||||
"LabelTranscodingProgress": "转码进度",
|
"LabelTranscodingProgress": "转码进度",
|
||||||
|
@ -1254,7 +1254,7 @@
|
||||||
"Person": "人物",
|
"Person": "人物",
|
||||||
"Movie": "电影",
|
"Movie": "电影",
|
||||||
"Episode": "剧集",
|
"Episode": "剧集",
|
||||||
"BoxSet": "套装",
|
"BoxSet": "合集",
|
||||||
"Artist": "艺术家",
|
"Artist": "艺术家",
|
||||||
"AlbumArtist": "专辑艺术家",
|
"AlbumArtist": "专辑艺术家",
|
||||||
"Album": "专辑",
|
"Album": "专辑",
|
||||||
|
@ -1727,5 +1727,7 @@
|
||||||
"Select": "选择",
|
"Select": "选择",
|
||||||
"MenuOpen": "打开菜单",
|
"MenuOpen": "打开菜单",
|
||||||
"MenuClose": "关闭菜单",
|
"MenuClose": "关闭菜单",
|
||||||
"UserMenu": "用户菜单"
|
"UserMenu": "用户菜单",
|
||||||
|
"Studio": "广播",
|
||||||
|
"AllowCollectionManagement": "允许该用户管理收藏夹"
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,7 @@ export function getCurrentUser() {
|
||||||
|
|
||||||
// TODO: investigate url prefix support for serverAddress function
|
// TODO: investigate url prefix support for serverAddress function
|
||||||
export async function serverAddress() {
|
export async function serverAddress() {
|
||||||
const apiClient = window.ApiClient;
|
const apiClient = window.ApiClient ?? ServerConnections.currentApiClient();
|
||||||
|
|
||||||
if (apiClient) {
|
if (apiClient) {
|
||||||
return Promise.resolve(apiClient.serverAddress());
|
return Promise.resolve(apiClient.serverAddress());
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue