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)
|
||||
- [Anantharaju S](https://github.com/Anantharajus)
|
||||
- [Merlin Sievers](https://github.com/dann-merlin)
|
||||
- [Fishbigger](https://github.com/fishbigger)
|
||||
- [sleepycatcoding](https://github.com/sleepycatcoding)
|
||||
|
||||
# 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/loadable__component": "5.13.4",
|
||||
"@types/lodash-es": "4.17.7",
|
||||
"@types/react": "17.0.58",
|
||||
"@types/react": "17.0.59",
|
||||
"@types/react-dom": "17.0.20",
|
||||
"@typescript-eslint/eslint-plugin": "5.59.2",
|
||||
"@typescript-eslint/parser": "5.59.2",
|
||||
"@typescript-eslint/eslint-plugin": "5.59.5",
|
||||
"@typescript-eslint/parser": "5.59.5",
|
||||
"@uupaa/dynamic-import-polyfill": "1.0.2",
|
||||
"autoprefixer": "10.4.14",
|
||||
"babel-loader": "9.1.2",
|
||||
|
@ -29,7 +29,7 @@
|
|||
"css-loader": "6.7.3",
|
||||
"cssnano": "6.0.1",
|
||||
"es-check": "7.1.1",
|
||||
"eslint": "8.39.0",
|
||||
"eslint": "8.40.0",
|
||||
"eslint-plugin-compat": "4.1.4",
|
||||
"eslint-plugin-eslint-comments": "3.2.0",
|
||||
"eslint-plugin-import": "2.27.5",
|
||||
|
@ -57,16 +57,16 @@
|
|||
"stylelint-scss": "5.0.0",
|
||||
"ts-loader": "9.4.2",
|
||||
"typescript": "5.0.4",
|
||||
"webpack": "5.82.0",
|
||||
"webpack-cli": "5.0.2",
|
||||
"webpack-dev-server": "4.13.3",
|
||||
"webpack": "5.82.1",
|
||||
"webpack-cli": "5.1.1",
|
||||
"webpack-dev-server": "4.15.0",
|
||||
"webpack-merge": "5.8.0",
|
||||
"workbox-webpack-plugin": "6.5.4",
|
||||
"worker-loader": "3.0.8"
|
||||
},
|
||||
"dependencies": {
|
||||
"@emotion/react": "11.10.5",
|
||||
"@emotion/styled": "11.10.5",
|
||||
"@emotion/react": "11.11.0",
|
||||
"@emotion/styled": "11.11.0",
|
||||
"@fontsource/noto-sans": "4.5.11",
|
||||
"@fontsource/noto-sans-hk": "4.5.12",
|
||||
"@fontsource/noto-sans-jp": "4.5.12",
|
||||
|
@ -75,12 +75,12 @@
|
|||
"@fontsource/noto-sans-tc": "4.5.12",
|
||||
"@jellyfin/sdk": "unstable",
|
||||
"@loadable/component": "5.15.3",
|
||||
"@mui/icons-material": "5.10.14",
|
||||
"@mui/material": "5.10.14",
|
||||
"@mui/icons-material": "5.11.16",
|
||||
"@mui/material": "5.13.0",
|
||||
"blurhash": "2.0.5",
|
||||
"classlist.js": "https://github.com/eligrey/classList.js/archive/1.2.20180112.tar.gz",
|
||||
"classnames": "2.3.2",
|
||||
"core-js": "3.30.1",
|
||||
"core-js": "3.30.2",
|
||||
"date-fns": "2.30.0",
|
||||
"dompurify": "3.0.1",
|
||||
"epubjs": "0.3.93",
|
||||
|
@ -90,25 +90,25 @@
|
|||
"flv.js": "1.6.2",
|
||||
"headroom.js": "0.12.0",
|
||||
"history": "5.3.0",
|
||||
"hls.js": "1.4.1",
|
||||
"hls.js": "1.4.3",
|
||||
"intersection-observer": "0.12.2",
|
||||
"jassub": "1.5.13",
|
||||
"jellyfin-apiclient": "1.10.0",
|
||||
"jquery": "3.6.4",
|
||||
"jquery": "3.7.0",
|
||||
"jstree": "3.3.15",
|
||||
"libarchive.js": "1.3.0",
|
||||
"lodash-es": "4.17.21",
|
||||
"marked": "4.3.0",
|
||||
"material-design-icons-iconfont": "6.7.0",
|
||||
"native-promise-only": "0.8.1",
|
||||
"pdfjs-dist": "3.5.141",
|
||||
"pdfjs-dist": "3.6.172",
|
||||
"react": "17.0.2",
|
||||
"react-dom": "17.0.2",
|
||||
"react-router-dom": "6.11.1",
|
||||
"resize-observer-polyfill": "1.5.1",
|
||||
"screenfull": "6.0.2",
|
||||
"sortablejs": "1.15.0",
|
||||
"swiper": "9.2.4",
|
||||
"swiper": "9.3.2",
|
||||
"webcomponents.js": "0.7.24",
|
||||
"whatwg-fetch": "3.6.2",
|
||||
"workbox-core": "6.5.4",
|
||||
|
|
|
@ -10,7 +10,6 @@ import { useApi } from 'hooks/useApi';
|
|||
import { useLocalStorage } from 'hooks/useLocalStorage';
|
||||
|
||||
import AppToolbar from './components/AppToolbar';
|
||||
import AppUserMenu from './components/AppUserMenu';
|
||||
import AppDrawer, { DRAWER_WIDTH, isDrawerPath } from './components/drawers/AppDrawer';
|
||||
import ElevationScroll from './components/ElevationScroll';
|
||||
import { ExperimentalAppRoutes } from './routes/AppRoutes';
|
||||
|
@ -35,9 +34,6 @@ const ExperimentalApp = () => {
|
|||
const isDrawerAvailable = isDrawerPath(location.pathname);
|
||||
const isDrawerOpen = isDrawerActive && isDrawerAvailable && Boolean(user);
|
||||
|
||||
const [ userMenuAnchorEl, setUserMenuAnchorEl ] = useState<null | HTMLElement>(null);
|
||||
const isUserMenuOpen = Boolean(userMenuAnchorEl);
|
||||
|
||||
useEffect(() => {
|
||||
if (isDrawerActive !== appSettings.isDrawerPinned) {
|
||||
setAppSettings({
|
||||
|
@ -51,14 +47,6 @@ const ExperimentalApp = () => {
|
|||
setIsDrawerActive(!isDrawerActive);
|
||||
}, [ isDrawerActive, setIsDrawerActive ]);
|
||||
|
||||
const onUserButtonClick = useCallback((event) => {
|
||||
setUserMenuAnchorEl(event.currentTarget);
|
||||
}, [ setUserMenuAnchorEl ]);
|
||||
|
||||
const onUserMenuClose = useCallback(() => {
|
||||
setUserMenuAnchorEl(null);
|
||||
}, [ setUserMenuAnchorEl ]);
|
||||
|
||||
return (
|
||||
<ThemeProvider theme={theme}>
|
||||
<Backdrop />
|
||||
|
@ -80,7 +68,6 @@ const ExperimentalApp = () => {
|
|||
<AppToolbar
|
||||
isDrawerOpen={isDrawerOpen}
|
||||
onDrawerButtonClick={onToggleDrawer}
|
||||
onUserButtonClick={onUserButtonClick}
|
||||
/>
|
||||
</AppBar>
|
||||
</ElevationScroll>
|
||||
|
@ -120,12 +107,6 @@ const ExperimentalApp = () => {
|
|||
<ExperimentalAppRoutes />
|
||||
</div>
|
||||
</Box>
|
||||
|
||||
<AppUserMenu
|
||||
open={isUserMenuOpen}
|
||||
anchorEl={userMenuAnchorEl}
|
||||
onMenuClose={onUserMenuClose}
|
||||
/>
|
||||
</Box>
|
||||
</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 SearchIcon from '@mui/icons-material/Search';
|
||||
import Avatar from '@mui/material/Avatar';
|
||||
import Box from '@mui/material/Box';
|
||||
import IconButton from '@mui/material/IconButton';
|
||||
import { useTheme } from '@mui/material/styles';
|
||||
import Toolbar from '@mui/material/Toolbar';
|
||||
import Tooltip from '@mui/material/Tooltip';
|
||||
import Typography from '@mui/material/Typography';
|
||||
|
@ -14,23 +12,20 @@ import appIcon from 'assets/img/icon-transparent.png';
|
|||
import { useApi } from 'hooks/useApi';
|
||||
import globalize from 'scripts/globalize';
|
||||
|
||||
import { ID as UserMenuId } from './AppUserMenu';
|
||||
import AppTabs from './tabs/AppTabs';
|
||||
import { isDrawerPath } from './drawers/AppDrawer';
|
||||
import AppTabs from '../tabs/AppTabs';
|
||||
import { isDrawerPath } from '../drawers/AppDrawer';
|
||||
import UserMenuButton from './UserMenuButton';
|
||||
|
||||
interface AppToolbarProps {
|
||||
isDrawerOpen: boolean
|
||||
onDrawerButtonClick: (event: React.MouseEvent<HTMLElement>) => void
|
||||
onUserButtonClick: (event: React.MouseEvent<HTMLElement>) => void
|
||||
}
|
||||
|
||||
const AppToolbar: FC<AppToolbarProps> = ({
|
||||
isDrawerOpen,
|
||||
onDrawerButtonClick,
|
||||
onUserButtonClick
|
||||
onDrawerButtonClick
|
||||
}) => {
|
||||
const theme = useTheme();
|
||||
const { api, user } = useApi();
|
||||
const { user } = useApi();
|
||||
const isUserLoggedIn = Boolean(user);
|
||||
const location = useLocation();
|
||||
|
||||
|
@ -108,31 +103,7 @@ const AppToolbar: FC<AppToolbarProps> = ({
|
|||
</Box>
|
||||
|
||||
<Box sx={{ flexGrow: 0 }}>
|
||||
<Tooltip title={globalize.translate('UserMenu')}>
|
||||
<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>
|
||||
<UserMenuButton />
|
||||
</Box>
|
||||
</>
|
||||
)}
|
|
@ -16,6 +16,7 @@ const PLUGIN_PATHS = [
|
|||
'/installedplugins.html',
|
||||
'/availableplugins.html',
|
||||
'/repositories.html',
|
||||
'/addplugin.html',
|
||||
'/configurationpage'
|
||||
];
|
||||
|
||||
|
|
|
@ -2123,7 +2123,7 @@ class PlaybackManager {
|
|||
const getAdditionalParts = async (items) => {
|
||||
const getOneAdditionalPart = async function (item) {
|
||||
let retVal = [item];
|
||||
if (item.Type === 'Movie') {
|
||||
if (item.Type === 'Movie' || item.Type === 'Episode') {
|
||||
const client = ServerConnections.getApiClient(item.ServerId);
|
||||
const user = await client.getCurrentUser();
|
||||
const additionalParts = await client.getAdditionalVideoParts(user.Id, item.Id);
|
||||
|
|
|
@ -40,13 +40,13 @@ function getTextStyles(settings, preview) {
|
|||
|
||||
switch (settings.dropShadow || '') {
|
||||
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;
|
||||
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;
|
||||
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;
|
||||
case 'none':
|
||||
list.push({ name: 'text-shadow', value: 'none' });
|
||||
|
@ -93,7 +93,7 @@ function getTextStyles(settings, preview) {
|
|||
list.push({ name: 'font-variant', value: 'small-caps' });
|
||||
break;
|
||||
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' });
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -69,6 +69,10 @@
|
|||
<div class="osdRatingsText">
|
||||
</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}">
|
||||
<span class="xlargePaperIconButton material-icons closed_caption" aria-hidden="true"></span>
|
||||
</button>
|
||||
|
|
|
@ -17,6 +17,7 @@ import keyboardnavigation from '../../../scripts/keyboardNavigation';
|
|||
import '../../../styles/scrollstyles.scss';
|
||||
import '../../../elements/emby-slider/emby-slider';
|
||||
import '../../../elements/emby-button/paper-icon-button-light';
|
||||
import '../../../elements/emby-ratingbutton/emby-ratingbutton';
|
||||
import '../../../styles/videoosd.scss';
|
||||
import ServerConnections from '../../../components/ServerConnections';
|
||||
import shell from '../../../scripts/shell';
|
||||
|
@ -133,6 +134,17 @@ export default function (view) {
|
|||
programStartDateMs = 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) {
|
||||
|
@ -1727,6 +1739,9 @@ export default function (view) {
|
|||
view.querySelector('.btnAudio').addEventListener('click', showAudioTrackSelection);
|
||||
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
|
||||
const showIcon = (action) => {
|
||||
let primary_icon_name = '';
|
||||
|
|
|
@ -624,6 +624,7 @@ class ChromecastPlayer {
|
|||
isLocalPlayer: false,
|
||||
appName: PlayerName,
|
||||
deviceName: appName,
|
||||
deviceType: 'cast',
|
||||
supportedCommands: [
|
||||
'VolumeUp',
|
||||
'VolumeDown',
|
||||
|
|
|
@ -1459,5 +1459,15 @@
|
|||
"IgnoreDtsHelp": "Изключването на опцията може да теши някои проблеми, напр. липсващ звук на канали с отделни звукови и видео потоци.",
|
||||
"LabelHDHomerunPortRangeHelp": "Ограничи портовете на HDHomeRun UDP до тези стойности. (По подразбиране 1024 - 645535).",
|
||||
"LabelHDHomerunPortRange": "HDHomeRun диапазон на портове",
|
||||
"DownloadAll": "Изтегли всички"
|
||||
"DownloadAll": "Изтегли всички",
|
||||
"LabelChapterImageResolution": "Резолюция",
|
||||
"LabelMaxDaysForNextUpHelp": "Задайте максималния брой дни, през които едно шоу би трябвало да остане в списъка „Next Up“, без да го гледате.",
|
||||
"LabelEnableAudioVbr": "Разреши VBR звуково кодиране",
|
||||
"HeaderPerformance": "Производителност",
|
||||
"LabelChapterImageResolutionHelp": "Резолюцията на извлечените снимки към раздела.",
|
||||
"AllowCollectionManagement": "Позволи този потребител да управлява колекции",
|
||||
"LabelDummyChapterDuration": "Интервал",
|
||||
"LabelDummyChapterCount": "Граница",
|
||||
"LabelEnableAudioVbrHelp": "Динамичният битрейт предлага по-добро съотношение между качество и среден битрейт, но в някои редки случаи може да причини проблеми с буферирането и съвместимостта.",
|
||||
"LabelIconMaxResHelp": "Максимална резолюция на изображенията предоставена чрез \"upnp:icon\" полето."
|
||||
}
|
||||
|
|
|
@ -15,5 +15,7 @@
|
|||
"Playlists": "প্লে লিস্ট সমূহ",
|
||||
"Songs": "সঙ্গীতসমূহ",
|
||||
"Sync": "সমলয় স্থাপন",
|
||||
"ValueSpecialEpisodeName": "বিশেষ পর্ব - {0}"
|
||||
"ValueSpecialEpisodeName": "বিশেষ পর্ব - {0}",
|
||||
"Default": "ডিফল্ট",
|
||||
"Shows": "টিভি পর্ব"
|
||||
}
|
||||
|
|
|
@ -138,7 +138,7 @@
|
|||
"Authorize": "অনুমোদন",
|
||||
"AspectRatio": "এস্পেক্ট রেসিও",
|
||||
"ApiKeysCaption": "বর্তমানে অনুমোদিত এ.পি.আই. কী গুলোর তালিকা",
|
||||
"AllowTonemappingHelp": "টোন-ম্যাপিং একটি ভিডিওর গতিশীল পরিসরকে ছবির বিবরণ এবং রঙ বজায় রেখে HDR থেকে SDR-তে রূপান্তরিত করতে পারে। বর্তমানে শুধুমাত্র HDR10 বা HLG ভিডিওগুলির সাথে কাজ করে৷ যার জন্য সংশ্লিষ্ট OpenCL বা CUDA প্রয়োজন।",
|
||||
"AllowTonemappingHelp": "টোন-ম্যাপিং একটি ভিডিওর গতিশীল পরিসরকে ছবির বিবরণ এবং রঙ বজায় রেখে HDR থেকে SDR-তে রূপান্তরিত করতে পারে। বর্তমানে শুধুমাত্র 10bit HDR10, HLG এবং DoVi ভিডিওগুলির সাথে কাজ করে৷ যার জন্য সংশ্লিষ্ট OpenCL বা CUDA প্রয়োজন।",
|
||||
"AllowOnTheFlySubtitleExtractionHelp": "এমবেডেড সাবটাইটেল ভিডিও থেকে আলাদা করে প্লেইন টেক্সটে ক্লায়েন্টদের কাছে বিতরণ করা যেতে পারে যাতে ভিডিও ট্রান্সকোডিং এড়ানো যায়। কিন্তু কিছু সিস্টেমে এটি দীর্ঘ সময় নিতে পারে এবং এই প্রক্রিয়াটি চলাকালী্ন, ভিডিও প্লেব্যাক থেমে থাকতে পারে। ক্লায়েন্ট ডিভাইস দ্বারা সমর্থিত না হলে ভিডিও ট্রান্সকোডিংয়ের সাথে এম্বেড করা সাবটাইটেলগুলিকে বার্ন করার জন্য অপশনটি ডিসেবল করুন.",
|
||||
"AllowMediaConversionHelp": "কনভার্ট মিডিয়া ফিচারটির জন্য অনুমোদন দিন বা বাতিল করুন।",
|
||||
"AllowFfmpegThrottlingHelp": "যখন একটি ট্রান্সকোড বা রিমুক্স বর্তমান প্লেব্যাক অবস্থান থেকে যথেষ্ট এগিয়ে যায়, তখন প্রক্রিয়াটি থামানো যাতে এটি কম প্রসেস পাওয়ার গ্রহণ করে। প্রায়ই না টেনে (Seek) দেখার সময় এটি সবচেয়ে কার্যকর। আপনি যদি প্লেব্যাক সমস্যা অনুভব করেন তবে এটি বন্ধ করুন।",
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
"AlwaysPlaySubtitles": "Vždy zobrazovat",
|
||||
"AlwaysPlaySubtitlesHelp": "Titulky odpovídající jazykové předvolbě se načtou bez ohledu na jazyk audia.",
|
||||
"Anytime": "Kdykoliv",
|
||||
"AroundTime": "Okolo",
|
||||
"AroundTime": "Okolo {0}",
|
||||
"Art": "Čistý obrázek",
|
||||
"Artists": "Umělci",
|
||||
"AsManyAsPossible": "Tolikrát jak je možné",
|
||||
|
@ -717,7 +717,7 @@
|
|||
"MySubtitles": "Mé titulky",
|
||||
"Name": "Název",
|
||||
"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",
|
||||
"NewEpisodes": "Nové episody",
|
||||
"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.",
|
||||
"MenuOpen": "Otevří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.",
|
||||
"MenuOpen": "Menü öffnen",
|
||||
"MenuClose": "Menü schließen",
|
||||
"UserMenu": "Benutzermenü"
|
||||
"UserMenu": "Benutzermenü",
|
||||
"Studio": "Studio",
|
||||
"AllowCollectionManagement": "Dieser Benutzer darf Sammlungen verwalten"
|
||||
}
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
"AllLanguages": "All languages",
|
||||
"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.",
|
||||
"AllowCollectionManagement": "Allow this user to manage collections",
|
||||
"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.",
|
||||
"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",
|
||||
"StopPlayback": "Stop playback",
|
||||
"StopRecording": "Stop recording",
|
||||
"Studio": "Studio",
|
||||
"Studios": "Studios",
|
||||
"Subtitle": "Subtitle",
|
||||
"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.",
|
||||
"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.",
|
||||
"AroundTime": "Alrededor",
|
||||
"AroundTime": "Alrededor de {0}",
|
||||
"Art": "Arte",
|
||||
"AsManyAsPossible": "Tantos como sea posible",
|
||||
"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.",
|
||||
"MenuOpen": "Abrir 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?",
|
||||
"ConfirmDeleteItems": "Al borrar este elemento se borrará del sistema de archivos y de la biblioteca. ¿Quieres continuar?",
|
||||
"ConfirmDeletion": "Confirmar borrado",
|
||||
"ConfirmEndPlayerSession": "¿Quieres cerrar Jellyfin en el dispositivo?",
|
||||
"ConfirmEndPlayerSession": "¿Quieres cerrar Jellyfin en el dispositivo {0}?",
|
||||
"Connect": "Conectar",
|
||||
"Continuing": "Continuando",
|
||||
"CustomDlnaProfilesHelp": "Crear un perfil personalizado para un nuevo dispositivo o reemplazar un perfil del sistema.",
|
||||
|
@ -1055,7 +1055,7 @@
|
|||
"Aired": "Emitido",
|
||||
"AnyLanguage": "Cualquier idioma",
|
||||
"Anytime": "En cualquier momento",
|
||||
"AroundTime": "Aproximadamente",
|
||||
"AroundTime": "Aproximadamente {0}",
|
||||
"Ascending": "Ascendente",
|
||||
"Audio": "Audio",
|
||||
"Auto": "Automático",
|
||||
|
@ -1724,5 +1724,10 @@
|
|||
"HeaderPerformance": "Rendimiento",
|
||||
"LabelTonemappingMode": "Modo de mapeo de tono",
|
||||
"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",
|
||||
"Shows": "Sarjat",
|
||||
"CopyStreamURLSuccess": "Osoite kopioitu onnistuneesti.",
|
||||
"DeathDateValue": "Kuoli: {}",
|
||||
"DeathDateValue": "Kuoli: {0}",
|
||||
"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.",
|
||||
"Episodes": "Jaksot",
|
||||
|
@ -1007,7 +1007,7 @@
|
|||
"ValueTimeLimitSingleHour": "Aikaraja: 1 tunti",
|
||||
"ValueTimeLimitMultiHour": "Aikaraja: {0} tuntia",
|
||||
"ValueContainer": "Säiliö: {0}",
|
||||
"ValueConditions": "Ehdot: {0]",
|
||||
"ValueConditions": "Ehdot: {0}",
|
||||
"ValueCodec": "Codec: {0}",
|
||||
"ValueAudioCodec": "Audio Codec: {0}",
|
||||
"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.",
|
||||
"LabelTonemappingDesat": "Sävykartoituksen desaturaatio",
|
||||
"LabelTonemappingAlgorithm": "Valitse käytettävä sävykartoitusalgoritmi",
|
||||
"LabelSyncPlayTimeSyncOffset": "Ajan säätö",
|
||||
"LabelSyncPlayTimeSyncOffset": "Aika poikkeama",
|
||||
"LabelSyncPlayTimeSyncDevice": "Synkronoi aika",
|
||||
"LabelSyncPlaySyncMethod": "Synkronointimetodi",
|
||||
"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.",
|
||||
"LabelPublishedServerUri": "Julkaistut palvelimen URIt",
|
||||
"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",
|
||||
"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",
|
||||
|
@ -1333,7 +1333,7 @@
|
|||
"LabelMoviePrefix": "Elokuvan etuliite",
|
||||
"LabelMonitorUsers": "Monitoroi toimintaa",
|
||||
"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",
|
||||
"LabelMatchType": "Täsmäystyyppi",
|
||||
"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.",
|
||||
"Select": "Valitse",
|
||||
"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",
|
||||
"LabelDummyChapterDuration": "Intervalle",
|
||||
"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",
|
||||
"MenuOpen": "Ouvrir 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",
|
||||
"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",
|
||||
"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",
|
||||
"Bwdif": "BWDIF",
|
||||
"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",
|
||||
"HeaderUninstallPlugin": "Copot Plugin",
|
||||
"LabelTonemappingAlgorithm": "Pilih algoritma Tone Mapping untuk digunakan",
|
||||
|
|
|
@ -752,7 +752,7 @@
|
|||
"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.",
|
||||
"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.",
|
||||
"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.",
|
||||
|
@ -929,7 +929,7 @@
|
|||
"Rate": "Beoordelen",
|
||||
"RecentlyWatched": "Onlangs bekeken",
|
||||
"RecommendationBecauseYouLike": "Omdat je {0} leuk vindt",
|
||||
"RecommendationBecauseYouWatched": "Omdat je keek naar {0}",
|
||||
"RecommendationBecauseYouWatched": "Omdat je {0} hebt gekeken",
|
||||
"RecommendationDirectedBy": "Geregisseerd door {0}",
|
||||
"RecommendationStarring": "Met {0}",
|
||||
"Record": "Opnemen",
|
||||
|
@ -1660,9 +1660,9 @@
|
|||
"MediaInfoVideoRangeType": "Type videobereik",
|
||||
"LabelVideoRangeType": "Type videobereik",
|
||||
"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",
|
||||
"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",
|
||||
"EnableSplashScreen": "Opstartscherm inschakelen",
|
||||
"EnableEnhancedNvdecDecoderHelp": "Experimentele NVDEC-implementatie; deze instelling niet inschakelen tenzij u decoderingsfouten tegenkomt.",
|
||||
|
@ -1724,7 +1724,9 @@
|
|||
"Select": "Selecteren",
|
||||
"LabelTonemappingMode": "Tonemapping-modus",
|
||||
"TonemappingModeHelp": "Selecteer de tonemapping-modus. Indien je overbelichtingsfouten ervaart, probeer dan de RGB-modus.",
|
||||
"MenuOpen": "Open Menu",
|
||||
"MenuClose": "Menu Sluiten",
|
||||
"UserMenu": "Gebruiker Menu"
|
||||
"MenuOpen": "Menu openen",
|
||||
"MenuClose": "Menu sluiten",
|
||||
"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.",
|
||||
"AnyLanguage": "W dowolnym języku",
|
||||
"Anytime": "O dowolnej porze",
|
||||
"AroundTime": "Około",
|
||||
"AroundTime": "Około {0}",
|
||||
"Art": "Przezrocze",
|
||||
"Artists": "Wykonawcy",
|
||||
"AsManyAsPossible": "Tak wiele jak to możliwe",
|
||||
|
@ -948,7 +948,7 @@
|
|||
"Overview": "Opis",
|
||||
"PackageInstallCancelled": "Instalacja {0} (wersja {1}) anulowana.",
|
||||
"PackageInstallCompleted": "Instalacja {0} (wersja {1}) zakończona.",
|
||||
"PackageInstallFailed": "Instalacja {0} nieudana.",
|
||||
"PackageInstallFailed": "Instalacja {0} (wersja {1}) nieudana.",
|
||||
"ParentalRating": "Kategoria wiekowa",
|
||||
"PasswordMatchError": "Hasło i potwierdzenie hasła muszą się zgadzać.",
|
||||
"PasswordResetComplete": "Hasło zostało zresetowane.",
|
||||
|
@ -1694,7 +1694,7 @@
|
|||
"HeaderDummyChapter": "Obrazy rozdziału",
|
||||
"LabelDummyChapterDuration": "Interwał",
|
||||
"LabelDummyChapterDurationHelp": "Interwał ekstrakcji obrazu rozdziału w sekundach.",
|
||||
"LabelDummyChapterCount": "Limit",
|
||||
"LabelDummyChapterCount": "Ograniczenie",
|
||||
"LabelChapterImageResolution": "Rozdzielczość",
|
||||
"LabelChapterImageResolutionHelp": "Rozdzielczość wyodrębnionych obrazów rozdziałów.",
|
||||
"ResolutionMatchSource": "Źródło dopasowania",
|
||||
|
@ -1724,5 +1724,10 @@
|
|||
"LabelEnableAudioVbr": "Włącz kodowanie audio VBR",
|
||||
"LabelTonemappingMode": "Tryb mapowania tonów",
|
||||
"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": "Сбой соединения",
|
||||
"HeaderContainerProfile": "Профиль контейнера",
|
||||
"HeaderContainerProfileHelp": "Профили контейнеров обозначают ограничения устройства при воспроизведении определённых форматов. Если применяется ограничение, то медиаданные перекодируются, даже если формат настроен для прямого воспроизведения.",
|
||||
"HeaderContinueListening": "Продолжение прослушивания",
|
||||
"HeaderContinueListening": "Продолжить прослушивание",
|
||||
"HeaderContinueWatching": "Продолжить просмотр",
|
||||
"HeaderCustomDlnaProfiles": "Настраиваемые профили",
|
||||
"HeaderDateIssued": "Дата выдачи",
|
||||
|
@ -319,14 +319,14 @@
|
|||
"HeaderLibrarySettings": "Параметры медиатеки",
|
||||
"HeaderLiveTvTunerSetup": "Установка и настройка тюнера",
|
||||
"HeaderLoginFailure": "Сбой входа",
|
||||
"HeaderMedia": "Медиаданные",
|
||||
"HeaderMedia": "Медиатеки",
|
||||
"HeaderMediaFolders": "Медиапапки",
|
||||
"HeaderMetadataSettings": "Параметры метаданных",
|
||||
"HeaderMoreLikeThis": "Ещё подобное этому",
|
||||
"HeaderMusicQuality": "Качество музыки",
|
||||
"HeaderMyDevice": "Моё устройство",
|
||||
"HeaderMyMedia": "Мои медиаданные",
|
||||
"HeaderMyMediaSmall": "Мои медиаданные (компактно)",
|
||||
"HeaderMyMedia": "Мои медиатеки",
|
||||
"HeaderMyMediaSmall": "Мои медиатеки (компактно)",
|
||||
"HeaderNewApiKey": "Новый API-ключ",
|
||||
"HeaderNewDevices": "Новые устройства",
|
||||
"HeaderNextEpisodePlayingInValue": "Следующий эпизод начнётся через {0}",
|
||||
|
@ -410,7 +410,7 @@
|
|||
"Help": "Справка",
|
||||
"Hide": "Скрыть",
|
||||
"HideWatchedContentFromLatestMedia": "Скрыть просмотренное содержание в разделе «Недавно добавленные медиаданные»",
|
||||
"Home": "Главное",
|
||||
"Home": "Главная",
|
||||
"Horizontal": "Горизонтально",
|
||||
"HttpsRequiresCert": "Чтобы включить HTTPS для внешних подключений, вам нужно будет предоставить доверенный SSL-cертификат, например, Let's Encrypt. Предоставьте сертификат или отключите защищенные соединения.",
|
||||
"Identify": "Распознать",
|
||||
|
@ -1512,7 +1512,7 @@
|
|||
"EnablePlugin": "Включить",
|
||||
"Framerate": "Частота кадров",
|
||||
"DirectPlayHelp": "Исходный файл полностью совместим с этим клиентом, а сеанс получает файл без изменений.",
|
||||
"HeaderContinueReading": "Продолжение чтения",
|
||||
"HeaderContinueReading": "Продолжить чтение",
|
||||
"EnableGamepadHelp": "Слушать ввод от любых подключенных контроллеров. (Необходим режим отображения \"TV\")",
|
||||
"LabelEnableGamepad": "Включить Gamepad",
|
||||
"Controls": "Управление",
|
||||
|
@ -1703,5 +1703,8 @@
|
|||
"HeaderPerformance": "Производительность",
|
||||
"LabelDummyChapterDurationHelp": "Интервал извлечения изображения главы в секундах.",
|
||||
"LabelChapterImageResolutionHelp": "Разрешение извлеченных изображений глав.",
|
||||
"ResolutionMatchSource": "Соответствовать источнику"
|
||||
"ResolutionMatchSource": "Соответствовать источнику",
|
||||
"MenuOpen": "Открыть Меню",
|
||||
"MenuClose": "Закрыть Меню",
|
||||
"AllowCollectionManagement": "Разрешить этому пользователю управлять настройками коллекций"
|
||||
}
|
||||
|
|
|
@ -1244,7 +1244,7 @@
|
|||
"Primary": "Первинний",
|
||||
"PreviousTrack": "Перейти до попереднього",
|
||||
"PreviousChapter": "Попередній розділ",
|
||||
"Previous": "Попередній",
|
||||
"Previous": "Попередні",
|
||||
"Preview": "Попередній перегляд",
|
||||
"Premieres": "Прем'єри",
|
||||
"Premiere": "Прем'єра",
|
||||
|
@ -1381,7 +1381,7 @@
|
|||
"NextUp": "Далі",
|
||||
"NextTrack": "Перейти до наступного",
|
||||
"NextChapter": "Наступна частина",
|
||||
"Next": "Наступне",
|
||||
"Next": "Наступні",
|
||||
"News": "Новини",
|
||||
"TabDirectPlay": "Пряме відтворення",
|
||||
"TypeOptionPluralMovie": "Фільми",
|
||||
|
@ -1724,5 +1724,7 @@
|
|||
"TonemappingModeHelp": "Виберіть режим тонального відображення. Якщо ви спостерігаєте вигоряння яскравих ділянок, спробуйте переключитися в режим RGB.",
|
||||
"MenuOpen": "Відкрити меню",
|
||||
"MenuClose": "Закрити меню",
|
||||
"UserMenu": "Меню користувача"
|
||||
"UserMenu": "Меню користувача",
|
||||
"Studio": "Студія",
|
||||
"AllowCollectionManagement": "Дозволити цьому користувачеві керувати колекціями"
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
"AlwaysPlaySubtitles": "总是显示",
|
||||
"AlwaysPlaySubtitlesHelp": "无论音频为何种语言,都将加载与语言偏好匹配的字幕。",
|
||||
"Anytime": "任何时间",
|
||||
"AroundTime": "大约",
|
||||
"AroundTime": "大约 {0}",
|
||||
"Artists": "艺术家",
|
||||
"AsManyAsPossible": "尽可能多",
|
||||
"Ascending": "升序",
|
||||
|
@ -405,8 +405,8 @@
|
|||
"LabelAutomaticallyAddToCollection": "自动添加到合集",
|
||||
"LabelAutomaticallyAddToCollectionHelp": "至少有2个电影属于相同的合集时,它们将会自动添加到合集中.",
|
||||
"LabelAutomaticallyRefreshInternetMetadataEvery": "自动从互联网获取元数据并刷新",
|
||||
"LabelBindToLocalNetworkAddress": "监听的本地网络地址",
|
||||
"LabelBindToLocalNetworkAddressHelp": "覆盖 HTTP 服务器绑定的本地 IP 地址。如果留空,服务器将会监听所有可用的地址。重启后生效。",
|
||||
"LabelBindToLocalNetworkAddress": "本地网络地址",
|
||||
"LabelBindToLocalNetworkAddressHelp": "(可选)覆盖 HTTP 服务端绑定的本地 IP 地址。如果留空,服务端将会监听所有可用的地址。改变这个值需要重启服务端。",
|
||||
"LabelBirthDate": "出生日期",
|
||||
"LabelBirthYear": "出生年份",
|
||||
"LabelBlastMessageInterval": "活动信号的时间间隔",
|
||||
|
@ -524,7 +524,7 @@
|
|||
"LabelKodiMetadataSaveImagePathsHelp": "如果你的图像文件名不符合Kodi的规范,推荐使用。",
|
||||
"LabelKodiMetadataUser": "为以下用户保存观看历史数据到 NFO 文件中",
|
||||
"LabelKodiMetadataUserHelp": "保存观看历史数据至 NFO 文件中以供其他应用程序利用。",
|
||||
"LabelLanNetworks": "LAN 网络",
|
||||
"LabelLanNetworks": "局域网",
|
||||
"LabelLanguage": "语言",
|
||||
"LabelLineup": "排队",
|
||||
"LabelLocalHttpServerPortNumber": "本地 HTTP 端口号",
|
||||
|
@ -586,7 +586,7 @@
|
|||
"LabelOptionalNetworkPathHelp": "如果这个文件夹在你的网络上是共享的,提供这个网络共享地址能够允许其他设备上的客户端直接访问媒体文件,例如 {0} 或者 {1}。",
|
||||
"LabelOriginalAspectRatio": "原始长宽比",
|
||||
"LabelOriginalTitle": "原标题",
|
||||
"LabelOverview": "内容概述",
|
||||
"LabelOverview": "内容简介",
|
||||
"LabelParentNumber": "父编号",
|
||||
"LabelParentalRating": "家长分级",
|
||||
"LabelPassword": "密码",
|
||||
|
@ -915,7 +915,7 @@
|
|||
"OptionWeekends": "周末",
|
||||
"OptionWeekly": "每周",
|
||||
"OriginalAirDateValue": "首映日期:{0}",
|
||||
"Overview": "概述",
|
||||
"Overview": "简介",
|
||||
"PackageInstallCancelled": "{0}(版本 {1}) 的安装被取消。",
|
||||
"PackageInstallCompleted": "{0}(版本 {1})安装完成。",
|
||||
"PackageInstallFailed": "{0}(版本 {1})安装失败。",
|
||||
|
@ -1213,7 +1213,7 @@
|
|||
"SmallCaps": "小型大写字母",
|
||||
"SubtitleOffset": "字幕偏移",
|
||||
"MessageNoServersAvailable": "未能自动发现服务器。",
|
||||
"TabNetworking": "联网",
|
||||
"TabNetworking": "网络",
|
||||
"LabelVideoCodec": "视频编码",
|
||||
"LabelVideoBitrate": "视频码率",
|
||||
"LabelTranscodingProgress": "转码进度",
|
||||
|
@ -1254,7 +1254,7 @@
|
|||
"Person": "人物",
|
||||
"Movie": "电影",
|
||||
"Episode": "剧集",
|
||||
"BoxSet": "套装",
|
||||
"BoxSet": "合集",
|
||||
"Artist": "艺术家",
|
||||
"AlbumArtist": "专辑艺术家",
|
||||
"Album": "专辑",
|
||||
|
@ -1727,5 +1727,7 @@
|
|||
"Select": "选择",
|
||||
"MenuOpen": "打开菜单",
|
||||
"MenuClose": "关闭菜单",
|
||||
"UserMenu": "用户菜单"
|
||||
"UserMenu": "用户菜单",
|
||||
"Studio": "广播",
|
||||
"AllowCollectionManagement": "允许该用户管理收藏夹"
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@ export function getCurrentUser() {
|
|||
|
||||
// TODO: investigate url prefix support for serverAddress function
|
||||
export async function serverAddress() {
|
||||
const apiClient = window.ApiClient;
|
||||
const apiClient = window.ApiClient ?? ServerConnections.currentApiClient();
|
||||
|
||||
if (apiClient) {
|
||||
return Promise.resolve(apiClient.serverAddress());
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue