1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

Merge branch 'master' into fix-icons-webos2

This commit is contained in:
Dmitry Lyzo 2020-04-30 00:55:43 +03:00 committed by GitHub
commit d98645135b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
80 changed files with 981 additions and 312 deletions

1
.copr/Makefile Symbolic link
View file

@ -0,0 +1 @@
../fedora/Makefile

3
.github/CODEOWNERS vendored Normal file
View file

@ -0,0 +1,3 @@
# Joshua must review all changes to deployment and build.sh
deployment/* @joshuaboniface
build.sh @joshuaboniface

3
.gitignore vendored
View file

@ -3,8 +3,9 @@ config.json
# npm
dist
web
node_modules
# ide
.idea
.vscode
.vscode

110
build.sh Executable file
View file

@ -0,0 +1,110 @@
#!/usr/bin/env bash
# build.sh - Build Jellyfin binary packages
# Part of the Jellyfin Project
set -o errexit
set -o pipefail
usage() {
echo -e "build.sh - Build Jellyfin binary packages"
echo -e "Usage:"
echo -e " $0 -t/--type <BUILD_TYPE> -p/--platform <PLATFORM> [-k/--keep-artifacts] [-l/--list-platforms]"
echo -e "Notes:"
echo -e " * BUILD_TYPE can be one of: [native, docker] and must be specified"
echo -e " * native: Build using the build script in the host OS"
echo -e " * docker: Build using the build script in a standardized Docker container"
echo -e " * PLATFORM can be any platform shown by -l/--list-platforms and must be specified"
echo -e " * If -k/--keep-artifacts is specified, transient artifacts (e.g. Docker containers) will be"
echo -e " retained after the build is finished; the source directory will still be cleaned"
echo -e " * If -l/--list-platforms is specified, all other arguments are ignored; the script will print"
echo -e " the list of supported platforms and exit"
}
list_platforms() {
declare -a platforms
platforms=(
$( find deployment -maxdepth 1 -mindepth 1 -name "build.*" | awk -F'.' '{ $1=""; printf $2; if ($3 != ""){ printf "." $3; }; if ($4 != ""){ printf "." $4; }; print ""; }' | sort )
)
echo -e "Valid platforms:"
echo
for platform in ${platforms[@]}; do
echo -e "* ${platform} : $( grep '^#=' deployment/build.${platform} | sed 's/^#= //' )"
done
}
do_build_native() {
export IS_DOCKER=NO
deployment/build.${PLATFORM}
}
do_build_docker() {
if ! dpkg --print-architecture | grep -q 'amd64'; then
echo "Docker-based builds only support amd64-based cross-building; use a 'native' build instead."
exit 1
fi
if [[ ! -f deployment/Dockerfile.${PLATFORM} ]]; then
echo "Missing Dockerfile for platform ${PLATFORM}"
exit 1
fi
if [[ ${KEEP_ARTIFACTS} == YES ]]; then
docker_args=""
else
docker_args="--rm"
fi
docker build . -t "jellyfin-builder.${PLATFORM}" -f deployment/Dockerfile.${PLATFORM}
mkdir -p ${ARTIFACT_DIR}
docker run $docker_args -v "${SOURCE_DIR}:/jellyfin" -v "${ARTIFACT_DIR}:/dist" "jellyfin-builder.${PLATFORM}"
}
while [[ $# -gt 0 ]]; do
key="$1"
case $key in
-t|--type)
BUILD_TYPE="$2"
shift
shift
;;
-p|--platform)
PLATFORM="$2"
shift
shift
;;
-k|--keep-artifacts)
KEEP_ARTIFACTS=YES
shift
;;
-l|--list-platforms)
list_platforms
exit 0
;;
-h|--help)
usage
exit 0
;;
*)
echo "Unknown option $1"
usage
exit 1
;;
esac
done
if [[ -z ${BUILD_TYPE} || -z ${PLATFORM} ]]; then
usage
exit 1
fi
export SOURCE_DIR="$( pwd )"
export ARTIFACT_DIR="${SOURCE_DIR}/../bin/${PLATFORM}"
# Determine build type
case ${BUILD_TYPE} in
native)
do_build_native
;;
docker)
do_build_docker
;;
esac

9
build.yaml Normal file
View file

@ -0,0 +1,9 @@
---
# We just wrap `build` so this is really it
name: "jellyfin-web"
version: "10.6.0"
packages:
- debian.all
- fedora.all
- centos.all
- portable

96
bump_version Executable file
View file

@ -0,0 +1,96 @@
#!/usr/bin/env bash
# bump_version - increase the shared version and generate changelogs
set -o errexit
set -o pipefail
usage() {
echo -e "bump_version - increase the shared version and generate changelogs"
echo -e ""
echo -e "Usage:"
echo -e " $ bump_version <new_version>"
}
if [[ -z $1 ]]; then
usage
exit 1
fi
shared_version_file="src/components/apphost.js"
build_file="./build.yaml"
new_version="$1"
# Parse the version from shared version file
old_version="$(
grep "appVersion" ${shared_version_file} | head -1 \
| sed -E 's/var appVersion = "([0-9\.]+)";/\1/'
)"
echo "Old version in appHost is: $old_version"
# Set the shared version to the specified new_version
old_version_sed="$( sed 's/\./\\./g' <<<"${old_version}" )" # Escape the '.' chars
new_version_sed="$( cut -f1 -d'-' <<<"${new_version}" )"
sed -i "s/${old_version_sed}/${new_version_sed}/g" ${shared_version_file}
old_version="$(
grep "version:" ${build_file} \
| sed -E 's/version: "([0-9\.]+[-a-z0-9]*)"/\1/'
)"
echo "Old version in ${build_file}: $old_version`"
# Set the build.yaml version to the specified new_version
old_version_sed="$( sed 's/\./\\./g' <<<"${old_version}" )" # Escape the '.' chars
sed -i "s/${old_version_sed}/${new_version}/g" ${build_file}
if [[ ${new_version} == *"-"* ]]; then
new_version_deb="$( sed 's/-/~/g' <<<"${new_version}" )"
else
new_version_deb="${new_version}-1"
fi
# Write out a temporary Debian changelog with our new stuff appended and some templated formatting
debian_changelog_file="debian/changelog"
debian_changelog_temp="$( mktemp )"
# Create new temp file with our changelog
echo -e "jellyfin (${new_version_deb}) unstable; urgency=medium
* New upstream version ${new_version}; release changelog at https://github.com/jellyfin/jellyfin-web/releases/tag/v${new_version}
-- Jellyfin Packaging Team <packaging@jellyfin.org> $( date --rfc-2822 )
" >> ${debian_changelog_temp}
cat ${debian_changelog_file} >> ${debian_changelog_temp}
# Move into place
mv ${debian_changelog_temp} ${debian_changelog_file}
# Write out a temporary Yum changelog with our new stuff prepended and some templated formatting
fedora_spec_file="fedora/jellyfin.spec"
fedora_changelog_temp="$( mktemp )"
fedora_spec_temp_dir="$( mktemp -d )"
fedora_spec_temp="${fedora_spec_temp_dir}/jellyfin.spec.tmp"
# Make a copy of our spec file for hacking
cp ${fedora_spec_file} ${fedora_spec_temp_dir}/
pushd ${fedora_spec_temp_dir}
# Split out the stuff before and after changelog
csplit jellyfin.spec "/^%changelog/" # produces xx00 xx01
# Update the version in xx00
sed -i "s/${old_version_sed}/${new_version_sed}/g" xx00
# Remove the header from xx01
sed -i '/^%changelog/d' xx01
# Create new temp file with our changelog
echo -e "%changelog
* $( LANG=C date '+%a %b %d %Y' ) Jellyfin Packaging Team <packaging@jellyfin.org>
- New upstream version ${new_version}; release changelog at https://github.com/jellyfin/jellyfin-web/releases/tag/v${new_version}" >> ${fedora_changelog_temp}
cat xx01 >> ${fedora_changelog_temp}
# Reassembble
cat xx00 ${fedora_changelog_temp} > ${fedora_spec_temp}
popd
# Move into place
mv ${fedora_spec_temp} ${fedora_spec_file}
# Clean up
rm -rf ${fedora_changelog_temp} ${fedora_spec_temp_dir}
# Stage the changed files for commit
git add ${shared_version_file} ${build_file} ${debian_changelog_file} ${fedora_spec_file} Dockerfile*
git status

5
debian/changelog vendored Normal file
View file

@ -0,0 +1,5 @@
jellyfin-web (10.6.0-1) unstable; urgency=medium
* New upstream version 10.6.0; release changelog at https://github.com/jellyfin/jellyfin-web/releases/tag/v10.6.0
-- Jellyfin Packaging Team <packaging@jellyfin.org> Mon, 16 Mar 2020 11:15:00 -0400

1
debian/compat vendored Normal file
View file

@ -0,0 +1 @@
8

16
debian/control vendored Normal file
View file

@ -0,0 +1,16 @@
Source: jellyfin-web
Section: misc
Priority: optional
Maintainer: Jellyfin Team <team@jellyfin.org>
Build-Depends: debhelper (>= 9),
npm | nodejs
Standards-Version: 3.9.4
Homepage: https://jellyfin.org/
Vcs-Git: https://github.org/jellyfin/jellyfin-web.git
Vcs-Browser: https://github.org/jellyfin/jellyfin-web
Package: jellyfin-web
Recommends: jellyfin-server
Architecture: all
Description: Jellyfin is the Free Software Media System.
This package provides the Jellyfin web client.

28
debian/copyright vendored Normal file
View file

@ -0,0 +1,28 @@
Format: http://dep.debian.net/deps/dep5
Upstream-Name: jellyfin-web
Source: https://github.com/jellyfin/jellyfin-web
Files: *
Copyright: 2018-2020 Jellyfin Team
License: GPL-3.0
Files: debian/*
Copyright: 2020 Joshua Boniface <joshua@boniface.me>
License: GPL-3.0
License: GPL-3.0
This package is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
.
This package is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>
.
On Debian systems, the complete text of the GNU General
Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".

6
debian/gbp.conf vendored Normal file
View file

@ -0,0 +1,6 @@
[DEFAULT]
pristine-tar = False
cleaner = fakeroot debian/rules clean
[import-orig]
filter = [ ".git*", ".hg*", ".vs*", ".vscode*" ]

1
debian/install vendored Normal file
View file

@ -0,0 +1 @@
web usr/share/jellyfin/

1
debian/po/POTFILES.in vendored Normal file
View file

@ -0,0 +1 @@
[type: gettext/rfc822deb] templates

57
debian/po/templates.pot vendored Normal file
View file

@ -0,0 +1,57 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: jellyfin-server\n"
"Report-Msgid-Bugs-To: jellyfin-server@packages.debian.org\n"
"POT-Creation-Date: 2015-06-12 20:51-0600\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#. Type: note
#. Description
#: ../templates:1001
msgid "Jellyfin permission info:"
msgstr ""
#. Type: note
#. Description
#: ../templates:1001
msgid ""
"Jellyfin by default runs under a user named \"jellyfin\". Please ensure that the "
"user jellyfin has read and write access to any folders you wish to add to your "
"library. Otherwise please run jellyfin under a different user."
msgstr ""
#. Type: string
#. Description
#: ../templates:2001
msgid "Username to run Jellyfin as:"
msgstr ""
#. Type: string
#. Description
#: ../templates:2001
msgid "The user that jellyfin will run as."
msgstr ""
#. Type: note
#. Description
#: ../templates:3001
msgid "Jellyfin still running"
msgstr ""
#. Type: note
#. Description
#: ../templates:3001
msgid "Jellyfin is currently running. Please close it and try again."
msgstr ""

20
debian/rules vendored Executable file
View file

@ -0,0 +1,20 @@
#! /usr/bin/make -f
export DH_VERBOSE=1
%:
dh $@
# disable "make check"
override_dh_auto_test:
# disable stripping debugging symbols
override_dh_clistrip:
override_dh_auto_build:
npx yarn install
mv $(CURDIR)/dist $(CURDIR)/web
override_dh_auto_clean:
test -d $(CURDIR)/dist && rm -rf '$(CURDIR)/dist' || true
test -d $(CURDIR)/web && rm -rf '$(CURDIR)/web' || true
test -d $(CURDIR)/node_modules && rm -rf '$(CURDIR)/node_modules' || true

1
debian/source/format vendored Normal file
View file

@ -0,0 +1 @@
1.0

7
debian/source/options vendored Normal file
View file

@ -0,0 +1,7 @@
tar-ignore='.git*'
tar-ignore='**/.git'
tar-ignore='**/.hg'
tar-ignore='**/.vs'
tar-ignore='**/.vscode'
tar-ignore='deployment'
tar-ignore='*.deb'

View file

@ -0,0 +1,27 @@
FROM centos:7
# Docker build arguments
ARG SOURCE_DIR=/jellyfin
ARG ARTIFACT_DIR=/dist
# Docker run environment
ENV SOURCE_DIR=/jellyfin
ENV ARTIFACT_DIR=/dist
ENV IS_DOCKER=YES
# Prepare CentOS environment
RUN yum update -y \
&& yum install -y epel-release \
&& yum install -y @buildsys-build rpmdevtools git yum-plugins-core nodejs-yarn autoconf automake glibc-devel
# Install recent NodeJS and Yarn
RUN curl -fSsLo /etc/yum.repos.d/yarn.repo https://dl.yarnpkg.com/rpm/yarn.repo \
&& rpm -i https://rpm.nodesource.com/pub_10.x/el/7/x86_64/nodesource-release-el7-1.noarch.rpm \
&& yum install -y yarn
# Link to build script
RUN ln -sf ${SOURCE_DIR}/deployment/build.centos.all /build.sh
VOLUME ${SOURCE_DIR}/
VOLUME ${ARTIFACT_DIR}/
ENTRYPOINT ["/build.sh"]

View file

@ -0,0 +1,25 @@
FROM debian:10
# Docker build arguments
ARG SOURCE_DIR=/jellyfin
ARG ARTIFACT_DIR=/dist
# Docker run environment
ENV SOURCE_DIR=/jellyfin
ENV ARTIFACT_DIR=/dist
ENV DEB_BUILD_OPTIONS=noddebs
ENV IS_DOCKER=YES
# Prepare Debian build environment
RUN apt-get update \
&& apt-get install -y debhelper mmv npm git
# Prepare Yarn
RUN npm install -g yarn
# Link to build script
RUN ln -sf ${SOURCE_DIR}/deployment/build.debian.all /build.sh
VOLUME ${SOURCE_DIR}/
VOLUME ${ARTIFACT_DIR}/
ENTRYPOINT ["/build.sh"]

View file

@ -0,0 +1,21 @@
FROM fedora:31
# Docker build arguments
ARG SOURCE_DIR=/jellyfin
ARG ARTIFACT_DIR=/dist
# Docker run environment
ENV SOURCE_DIR=/jellyfin
ENV ARTIFACT_DIR=/dist
ENV IS_DOCKER=YES
# Prepare Fedora environment
RUN dnf update -y \
&& dnf install -y @buildsys-build rpmdevtools git dnf-plugins-core nodejs-yarn autoconf automake glibc-devel
# Link to build script
RUN ln -sf ${SOURCE_DIR}/deployment/build.fedora.all /build.sh
VOLUME ${SOURCE_DIR}/
VOLUME ${ARTIFACT_DIR}/
ENTRYPOINT ["/build.sh"]

View file

@ -0,0 +1,25 @@
FROM debian:10
# Docker build arguments
ARG SOURCE_DIR=/jellyfin
ARG ARTIFACT_DIR=/dist
# Docker run environment
ENV SOURCE_DIR=/jellyfin
ENV ARTIFACT_DIR=/dist
ENV DEB_BUILD_OPTIONS=noddebs
ENV IS_DOCKER=YES
# Prepare Debian build environment
RUN apt-get update \
&& apt-get install -y mmv npm git
# Prepare Yarn
RUN npm install -g yarn
# Link to build script
RUN ln -sf ${SOURCE_DIR}/deployment/build.portable /build.sh
VOLUME ${SOURCE_DIR}/
VOLUME ${ARTIFACT_DIR}/
ENTRYPOINT ["/build.sh"]

27
deployment/build.centos.all Executable file
View file

@ -0,0 +1,27 @@
#!/bin/bash
#= CentOS 7 all .rpm
set -o errexit
set -o xtrace
# Move to source directory
pushd ${SOURCE_DIR}
cp -a yarn.lock /tmp/yarn.lock
# Build RPM
make -f fedora/Makefile srpm outdir=/root/rpmbuild/SRPMS
rpmbuild --rebuild -bb /root/rpmbuild/SRPMS/jellyfin-*.src.rpm
# Move the artifacts out
mv /root/rpmbuild/RPMS/noarch/jellyfin-*.rpm /root/rpmbuild/SRPMS/jellyfin-*.src.rpm ${ARTIFACT_DIR}/
if [[ ${IS_DOCKER} == YES ]]; then
chown -Rc $(stat -c %u:%g ${ARTIFACT_DIR}) ${ARTIFACT_DIR}
fi
rm -f fedora/jellyfin*.tar.gz
cp -a /tmp/yarn.lock yarn.lock
popd

25
deployment/build.debian.all Executable file
View file

@ -0,0 +1,25 @@
#!/bin/bash
#= Debian/Ubuntu all .deb
set -o errexit
set -o xtrace
# Move to source directory
pushd ${SOURCE_DIR}
cp -a yarn.lock /tmp/yarn.lock
# Build DEB
dpkg-buildpackage -us -uc --pre-clean --post-clean
mkdir -p ${ARTIFACT_DIR}/
mv ../jellyfin*.{deb,dsc,tar.gz,buildinfo,changes} ${ARTIFACT_DIR}/
cp -a /tmp/yarn.lock yarn.lock
if [[ ${IS_DOCKER} == YES ]]; then
chown -Rc $(stat -c %u:%g ${ARTIFACT_DIR}) ${ARTIFACT_DIR}
fi
popd

27
deployment/build.fedora.all Executable file
View file

@ -0,0 +1,27 @@
#!/bin/bash
#= Fedora 29+ all .rpm
set -o errexit
set -o xtrace
# Move to source directory
pushd ${SOURCE_DIR}
cp -a yarn.lock /tmp/yarn.lock
# Build RPM
make -f fedora/Makefile srpm outdir=/root/rpmbuild/SRPMS
rpmbuild -rb /root/rpmbuild/SRPMS/jellyfin-*.src.rpm
# Move the artifacts out
mv /root/rpmbuild/RPMS/noarch/jellyfin-*.rpm /root/rpmbuild/SRPMS/jellyfin-*.src.rpm ${ARTIFACT_DIR}/
if [[ ${IS_DOCKER} == YES ]]; then
chown -Rc $(stat -c %u:%g ${ARTIFACT_DIR}) ${ARTIFACT_DIR}
fi
rm -f fedora/jellyfin*.tar.gz
cp -a /tmp/yarn.lock yarn.lock
popd

28
deployment/build.portable Executable file
View file

@ -0,0 +1,28 @@
#!/bin/bash
#= Portable .NET DLL .tar.gz
set -o errexit
set -o xtrace
# Move to source directory
pushd ${SOURCE_DIR}
# Get version
version="$( grep "version:" ./build.yaml | sed -E 's/version: "([0-9\.]+.*)"/\1/' )"
# Build archives
npx yarn install
mv dist/ jellyfin-web_${version}
tar -czf jellyfin-web_${version}_portable.tar.gz jellyfin-web_${version}
rm -rf dist/
# Move the artifacts out
mkdir -p ${ARTIFACT_DIR}/
mv jellyfin[-_]*.tar.gz ${ARTIFACT_DIR}/
if [[ ${IS_DOCKER} == YES ]]; then
chown -Rc $(stat -c %u:%g ${ARTIFACT_DIR}) ${ARTIFACT_DIR}
fi
popd

21
fedora/Makefile Normal file
View file

@ -0,0 +1,21 @@
VERSION := $(shell sed -ne '/^Version:/s/.* *//p' fedora/jellyfin-web.spec)
srpm:
cd fedora/; \
SOURCE_DIR=.. \
WORKDIR="$${PWD}"; \
tar \
--transform "s,^\.,jellyfin-web-$(VERSION)," \
--exclude='.git*' \
--exclude='**/.git' \
--exclude='**/.hg' \
--exclude='deployment' \
--exclude='*.deb' \
--exclude='*.rpm' \
--exclude='jellyfin-web-$(VERSION).tar.gz' \
-czf "jellyfin-web-$(VERSION).tar.gz" \
-C $${SOURCE_DIR} ./
cd fedora/; \
rpmbuild -bs jellyfin-web.spec \
--define "_sourcedir $$PWD/" \
--define "_srcrpmdir $(outdir)"

43
fedora/jellyfin-web.spec Normal file
View file

@ -0,0 +1,43 @@
%global debug_package %{nil}
Name: jellyfin-web
Version: 10.6.0
Release: 1%{?dist}
Summary: The Free Software Media System web client
License: GPLv3
URL: https://jellyfin.org
# Jellyfin Server tarball created by `make -f .copr/Makefile srpm`, real URL ends with `v%{version}.tar.gz`
Source0: jellyfin-web-%{version}.tar.gz
%if 0%{?centos}
BuildRequires: yarn
%else
BuildRequires nodejs-yarn
%endif
BuildArch: noarch
# Disable Automatic Dependency Processing
AutoReqProv: no
%description
Jellyfin is a free software media system that puts you in control of managing and streaming your media.
%prep
%autosetup -n jellyfin-web-%{version} -b 0
%build
%install
yarn install
%{__mkdir} -p %{buildroot}%{_datadir}
mv dist %{buildroot}%{_datadir}/jellyfin-web
%{__install} -D -m 0644 LICENSE %{buildroot}%{_datadir}/licenses/jellyfin/LICENSE
%files
%attr(755,root,root) %{_datadir}/jellyfin-web
%{_datadir}/licenses/jellyfin/LICENSE
%changelog
* Mon Mar 23 2020 Jellyfin Packaging Team <packaging@jellyfin.org>
- Forthcoming stable release

View file

@ -1,4 +1,4 @@
define(["dialogHelper", "datetime", "emby-select", "paper-icon-button-light", "formDialogStyle"], function (dialogHelper, datetime) {
define(["dialogHelper", "datetime", "globalize", "emby-select", "paper-icon-button-light", "formDialogStyle"], function (dialogHelper, datetime, globalize) {
"use strict";
function getDisplayTime(hours) {
@ -38,7 +38,7 @@ define(["dialogHelper", "datetime", "emby-select", "paper-icon-button-light", "f
};
if (parseFloat(updatedSchedule.StartHour) >= parseFloat(updatedSchedule.EndHour)) {
return void alert(Globalize.translate("ErrorMessageStartHourGreaterThanEnd"));
return void alert(globalize.translate("ErrorMessageStartHourGreaterThanEnd"));
}
context.submitted = true;
@ -60,7 +60,7 @@ define(["dialogHelper", "datetime", "emby-select", "paper-icon-button-light", "f
});
dlg.classList.add("formDialog");
var html = "";
html += Globalize.translateDocument(template);
html += globalize.translateDocument(template);
dlg.innerHTML = html;
populateHours(dlg);
loadSchedule(dlg, options.schedule);

View file

@ -1,4 +1,4 @@
define(["appSettings", "browser", "events", "htmlMediaHelper", "webSettings"], function (appSettings, browser, events, htmlMediaHelper, webSettings) {
define(["appSettings", "browser", "events", "htmlMediaHelper", "webSettings", "globalize"], function (appSettings, browser, events, htmlMediaHelper, webSettings, globalize) {
"use strict";
function getBaseProfileOptions(item) {
@ -328,10 +328,10 @@ define(["appSettings", "browser", "events", "htmlMediaHelper", "webSettings"], f
require(["actionsheet"], function (actionsheet) {
exitPromise = actionsheet.show({
title: Globalize.translate("MessageConfirmAppExit"),
title: globalize.translate("MessageConfirmAppExit"),
items: [
{id: "yes", name: Globalize.translate("Yes")},
{id: "no", name: Globalize.translate("No")}
{id: "yes", name: globalize.translate("Yes")},
{id: "no", name: globalize.translate("No")}
]
}).then(function (value) {
if (value === "yes") {
@ -346,7 +346,7 @@ define(["appSettings", "browser", "events", "htmlMediaHelper", "webSettings"], f
var deviceId;
var deviceName;
var appName = "Jellyfin Web";
var appVersion = "10.5.0";
var appVersion = "10.6.0";
var appHost = {
getWindowState: function () {

View file

@ -1,4 +1,4 @@
define(['loading', 'dialogHelper', 'dom', 'listViewStyle', 'emby-input', 'paper-icon-button-light', 'css!./directorybrowser', 'formDialogStyle', 'emby-button'], function(loading, dialogHelper, dom) {
define(['loading', 'dialogHelper', 'dom', 'globalize', 'listViewStyle', 'emby-input', 'paper-icon-button-light', 'css!./directorybrowser', 'formDialogStyle', 'emby-button'], function(loading, dialogHelper, dom, globalize) {
'use strict';
function getSystemInfo() {
@ -53,7 +53,7 @@ define(['loading', 'dialogHelper', 'dom', 'listViewStyle', 'emby-input', 'paper-
}
if (!path) {
html += getItem("lnkPath lnkDirectory", "", "Network", Globalize.translate("ButtonNetwork"));
html += getItem("lnkPath lnkDirectory", "", "Network", globalize.translate("ButtonNetwork"));
}
page.querySelector(".results").innerHTML = html;
@ -89,16 +89,16 @@ define(['loading', 'dialogHelper', 'dom', 'listViewStyle', 'emby-input', 'paper-
var instruction = options.instruction ? options.instruction + "<br/><br/>" : "";
html += '<div class="infoBanner" style="margin-bottom:1.5em;">';
html += instruction;
html += Globalize.translate("MessageDirectoryPickerInstruction", "<b>\\\\server</b>", "<b>\\\\192.168.1.101</b>");
html += globalize.translate("MessageDirectoryPickerInstruction", "<b>\\\\server</b>", "<b>\\\\192.168.1.101</b>");
if ("bsd" === systemInfo.OperatingSystem.toLowerCase()) {
html += "<br/>";
html += "<br/>";
html += Globalize.translate("MessageDirectoryPickerBSDInstruction");
html += globalize.translate("MessageDirectoryPickerBSDInstruction");
html += "<br/>";
} else if ("linux" === systemInfo.OperatingSystem.toLowerCase()) {
html += "<br/>";
html += "<br/>";
html += Globalize.translate("MessageDirectoryPickerLinuxInstruction");
html += globalize.translate("MessageDirectoryPickerLinuxInstruction");
html += "<br/>";
}
html += "</div>";
@ -113,10 +113,10 @@ define(['loading', 'dialogHelper', 'dom', 'listViewStyle', 'emby-input', 'paper-
labelKey = "LabelPath";
}
var readOnlyAttribute = options.pathReadOnly ? " readonly" : "";
html += '<input is="emby-input" id="txtDirectoryPickerPath" type="text" required="required" ' + readOnlyAttribute + ' label="' + Globalize.translate(labelKey) + '"/>';
html += '<input is="emby-input" id="txtDirectoryPickerPath" type="text" required="required" ' + readOnlyAttribute + ' label="' + globalize.translate(labelKey) + '"/>';
html += "</div>";
if (!readOnlyAttribute) {
html += '<button type="button" is="paper-icon-button-light" class="btnRefreshDirectories emby-input-iconbutton" title="' + Globalize.translate("ButtonRefresh") + '"><span class="material-icons search"></span></button>';
html += '<button type="button" is="paper-icon-button-light" class="btnRefreshDirectories emby-input-iconbutton" title="' + globalize.translate("ButtonRefresh") + '"><span class="material-icons search"></span></button>';
}
html += "</div>";
if (!readOnlyAttribute) {
@ -124,14 +124,14 @@ define(['loading', 'dialogHelper', 'dom', 'listViewStyle', 'emby-input', 'paper-
}
if (options.enableNetworkSharePath) {
html += '<div class="inputContainer" style="margin-top:2em;">';
html += '<input is="emby-input" id="txtNetworkPath" type="text" label="' + Globalize.translate("LabelOptionalNetworkPath") + '"/>';
html += '<input is="emby-input" id="txtNetworkPath" type="text" label="' + globalize.translate("LabelOptionalNetworkPath") + '"/>';
html += '<div class="fieldDescription">';
html += Globalize.translate("LabelOptionalNetworkPathHelp");
html += globalize.translate("LabelOptionalNetworkPathHelp");
html += "</div>";
html += "</div>";
}
html += '<div class="formDialogFooter">';
html += '<button is="emby-button" type="submit" class="raised button-submit block formDialogFooterItem">' + Globalize.translate("ButtonOk") + "</button>";
html += '<button is="emby-button" type="submit" class="raised button-submit block formDialogFooterItem">' + globalize.translate("ButtonOk") + "</button>";
html += "</div>";
html += "</form>";
html += "</div>";
@ -164,14 +164,14 @@ define(['loading', 'dialogHelper', 'dom', 'listViewStyle', 'emby-input', 'paper-
}).catch(function(response) {
if (response) {
if (response.status === 404) {
alertText(Globalize.translate("PathNotFound"));
alertText(globalize.translate("PathNotFound"));
return Promise.reject();
}
if (response.status === 500) {
if (validateWriteable) {
alertText(Globalize.translate("WriteAccessRequired"));
alertText(globalize.translate("WriteAccessRequired"));
} else {
alertText(Globalize.translate("PathNotFound"));
alertText(globalize.translate("PathNotFound"));
}
return Promise.reject();
}
@ -266,7 +266,7 @@ define(['loading', 'dialogHelper', 'dom', 'listViewStyle', 'emby-input', 'paper-
html += '<div class="formDialogHeader">';
html += '<button is="paper-icon-button-light" class="btnCloseDialog autoSize" tabindex="-1"><span class="material-icons arrow_back"></span></button>';
html += '<h3 class="formDialogHeaderTitle">';
html += options.header || Globalize.translate("HeaderSelectPath");
html += options.header || globalize.translate("HeaderSelectPath");
html += "</h3>";
html += "</div>";
html += getEditorHtml(options, systemInfo);

View file

@ -64,13 +64,13 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la
} else {
var noLibDescription;
if (user['Policy'] && user['Policy']['IsAdministrator']) {
noLibDescription = Globalize.translate("NoCreatedLibraries", '<br><a id="button-createLibrary" class="button-link">', '</a>');
noLibDescription = globalize.translate("NoCreatedLibraries", '<br><a id="button-createLibrary" class="button-link">', '</a>');
} else {
noLibDescription = Globalize.translate("AskAdminToCreateLibrary");
noLibDescription = globalize.translate("AskAdminToCreateLibrary");
}
html += '<div class="centerMessage padded-left padded-right">';
html += '<h2>' + Globalize.translate("MessageNothingHere") + '</h2>';
html += '<h2>' + globalize.translate("MessageNothingHere") + '</h2>';
html += '<p>' + noLibDescription + '</p>';
html += '</div>';
elem.innerHTML = html;

View file

@ -218,7 +218,7 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter",
if (item.Type === "Program" && options.record !== false) {
if (item.TimerId) {
commands.push({
name: Globalize.translate("ManageRecording"),
name: globalize.translate("ManageRecording"),
id: "record",
icon: "fiber_manual_record"
});
@ -228,7 +228,7 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter",
if (item.Type === "Program" && options.record !== false) {
if (!item.TimerId) {
commands.push({
name: Globalize.translate("Record"),
name: globalize.translate("Record"),
id: "record",
icon: "fiber_manual_record"
});
@ -283,7 +283,7 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter",
if (options.openAlbum !== false && item.AlbumId && item.MediaType !== "Photo") {
commands.push({
name: Globalize.translate("ViewAlbum"),
name: globalize.translate("ViewAlbum"),
id: "album",
icon: "album"
});
@ -291,7 +291,7 @@ define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter",
if (options.openArtist !== false && item.ArtistItems && item.ArtistItems.length) {
commands.push({
name: Globalize.translate("ViewArtist"),
name: globalize.translate("ViewArtist"),
id: "artist",
icon: "person"
});

View file

@ -1,4 +1,4 @@
define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionseditor/libraryoptionseditor", "emby-toggle", "emby-input", "emby-select", "paper-icon-button-light", "listViewStyle", "formDialogStyle", "emby-button", "flexStyles"], function (loading, dialogHelper, dom, $, libraryoptionseditor) {
define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionseditor/libraryoptionseditor", "globalize", "emby-toggle", "emby-input", "emby-select", "paper-icon-button-light", "listViewStyle", "formDialogStyle", "emby-button", "flexStyles"], function (loading, dialogHelper, dom, $, libraryoptionseditor, globalize) {
"use strict";
function onAddLibrary() {
@ -9,7 +9,7 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed
if (pathInfos.length == 0) {
require(["alert"], function (alert) {
alert({
text: Globalize.translate("PleaseAddAtLeastOneFolder"),
text: globalize.translate("PleaseAddAtLeastOneFolder"),
type: "error"
});
});
@ -36,7 +36,7 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed
dialogHelper.close(dlg);
}, function () {
require(["toast"], function (toast) {
toast(Globalize.translate("ErrorAddingMediaPathToVirtualFolder"));
toast(globalize.translate("ErrorAddingMediaPathToVirtualFolder"));
});
isCreating = false;
@ -196,7 +196,7 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed
dlg.classList.add("background-theme-a");
dlg.classList.add("dlg-librarycreator");
dlg.classList.add("formDialog");
dlg.innerHTML = Globalize.translateDocument(template);
dlg.innerHTML = globalize.translateDocument(template);
initEditor(dlg, options.collectionTypeOptions);
dlg.addEventListener("close", onDialogClosed);
dialogHelper.open(dlg);

View file

@ -1,4 +1,4 @@
define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionseditor/libraryoptionseditor", "emby-button", "listViewStyle", "paper-icon-button-light", "formDialogStyle", "emby-toggle", "flexStyles"], function (jQuery, loading, dialogHelper, dom, libraryoptionseditor) {
define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionseditor/libraryoptionseditor", "globalize", "emby-button", "listViewStyle", "paper-icon-button-light", "formDialogStyle", "emby-toggle", "flexStyles"], function (jQuery, loading, dialogHelper, dom, libraryoptionseditor, globalize) {
"use strict";
function onEditLibrary() {
@ -31,7 +31,7 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed
refreshLibraryFromServer(page);
}, function () {
require(["toast"], function (toast) {
toast(Globalize.translate("ErrorAddingMediaPathToVirtualFolder"));
toast(globalize.translate("ErrorAddingMediaPathToVirtualFolder"));
});
});
}
@ -46,7 +46,7 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed
refreshLibraryFromServer(page);
}, function () {
require(["toast"], function (toast) {
toast(Globalize.translate("ErrorAddingMediaPathToVirtualFolder"));
toast(globalize.translate("ErrorAddingMediaPathToVirtualFolder"));
});
});
}
@ -57,9 +57,9 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed
require(["confirm"], function (confirm) {
confirm({
title: Globalize.translate("HeaderRemoveMediaLocation"),
text: Globalize.translate("MessageConfirmRemoveMediaLocation"),
confirmText: Globalize.translate("ButtonDelete"),
title: globalize.translate("HeaderRemoveMediaLocation"),
text: globalize.translate("MessageConfirmRemoveMediaLocation"),
confirmText: globalize.translate("ButtonDelete"),
primary: "delete"
}).then(function () {
var refreshAfterChange = currentOptions.refresh;
@ -68,7 +68,7 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed
refreshLibraryFromServer(dom.parentWithClass(button, "dlg-libraryeditor"));
}, function () {
require(["toast"], function (toast) {
toast(Globalize.translate("DefaultErrorMessage"));
toast(globalize.translate("DefaultErrorMessage"));
});
});
});
@ -213,7 +213,7 @@ define(["jQuery", "loading", "dialogHelper", "dom", "components/libraryoptionsed
dlg.classList.add("ui-body-a");
dlg.classList.add("background-theme-a");
dlg.classList.add("formDialog");
dlg.innerHTML = Globalize.translateDocument(template);
dlg.innerHTML = globalize.translateDocument(template);
dlg.querySelector(".formDialogHeaderTitle").innerHTML = options.library.Name;
initEditor(dlg, options);
dlg.addEventListener("close", onDialogClosed);

View file

@ -212,7 +212,7 @@ define(["browser", "appStorage", "apphost", "loading", "connectionManager", "glo
if (user.Policy.EnableContentDownloading && appHost.supports("filedownload")) {
menuItems.push({
name: Globalize.translate("ButtonDownload"),
name: globalize.translate("ButtonDownload"),
id: "download",
icon: "file_download"
});

View file

@ -397,7 +397,7 @@ define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings',
var items = [];
items.push({
name: Globalize.translate('Download'),
name: globalize.translate('Download'),
id: 'download'
});

View file

@ -1,4 +1,4 @@
define(["jQuery", "loading", "emby-checkbox", "listViewStyle", "emby-input", "emby-select", "emby-button", "flexStyles"], function ($, loading) {
define(["jQuery", "loading", "globalize", "emby-checkbox", "listViewStyle", "emby-input", "emby-select", "emby-button", "flexStyles"], function ($, loading, globalize) {
"use strict";
return function (page, providerId, options) {
@ -69,7 +69,7 @@ define(["jQuery", "loading", "emby-checkbox", "listViewStyle", "emby-input", "em
$(page.querySelector(".txtZipCode")).trigger("change");
}, function () { // ApiClient.getJSON() error handler
Dashboard.alert({
message: Globalize.translate("ErrorGettingTvLineups")
message: globalize.translate("ErrorGettingTvLineups")
});
});
loading.hide();
@ -130,7 +130,7 @@ define(["jQuery", "loading", "emby-checkbox", "listViewStyle", "emby-input", "em
reload();
}, function () {
Dashboard.alert({ // ApiClient.ajax() error handler
message: Globalize.translate("ErrorSavingTvProvider")
message: globalize.translate("ErrorSavingTvProvider")
});
});
});
@ -141,7 +141,7 @@ define(["jQuery", "loading", "emby-checkbox", "listViewStyle", "emby-input", "em
if (!selectedListingsId) {
return void Dashboard.alert({
message: Globalize.translate("ErrorPleaseSelectLineup")
message: globalize.translate("ErrorPleaseSelectLineup")
});
}
@ -178,7 +178,7 @@ define(["jQuery", "loading", "emby-checkbox", "listViewStyle", "emby-input", "em
}, function () {
loading.hide();
Dashboard.alert({
message: Globalize.translate("ErrorAddingListingsToSchedulesDirect")
message: globalize.translate("ErrorAddingListingsToSchedulesDirect")
});
});
});
@ -210,7 +210,7 @@ define(["jQuery", "loading", "emby-checkbox", "listViewStyle", "emby-input", "em
loading.hide();
}, function (result) {
Dashboard.alert({
message: Globalize.translate("ErrorGettingTvLineups")
message: globalize.translate("ErrorGettingTvLineups")
});
refreshListings("");
loading.hide();
@ -290,7 +290,7 @@ define(["jQuery", "loading", "emby-checkbox", "listViewStyle", "emby-input", "em
page.querySelector(".selectTunersSection").classList.remove("hide");
}
});
$(".createAccountHelp", page).html(Globalize.translate("MessageCreateAccountAt", '<a is="emby-linkbutton" class="button-link" href="http://www.schedulesdirect.org" target="_blank">http://www.schedulesdirect.org</a>'));
$(".createAccountHelp", page).html(globalize.translate("MessageCreateAccountAt", '<a is="emby-linkbutton" class="button-link" href="http://www.schedulesdirect.org" target="_blank">http://www.schedulesdirect.org</a>'));
reload();
};
};

View file

@ -1,4 +1,4 @@
define(["jQuery", "loading", "emby-checkbox", "emby-input", "listViewStyle", "paper-icon-button-light"], function ($, loading) {
define(["jQuery", "loading", "globalize", "emby-checkbox", "emby-input", "listViewStyle", "paper-icon-button-light"], function ($, loading, globalize) {
"use strict";
return function (page, providerId, options) {
@ -92,7 +92,7 @@ define(["jQuery", "loading", "emby-checkbox", "emby-input", "listViewStyle", "pa
}, function () {
loading.hide();
Dashboard.alert({
message: Globalize.translate("ErrorAddingXmlTvFile")
message: globalize.translate("ErrorAddingXmlTvFile")
});
});
});

View file

@ -1,4 +1,4 @@
define(["appSettings", "loading", "browser", "emby-button"], function(appSettings, loading, browser) {
define(["appSettings", "loading", "browser", "globalize", "emby-button"], function(appSettings, loading, browser, globalize) {
"use strict";
function handleConnectionResult(page, result) {
@ -17,13 +17,13 @@ define(["appSettings", "loading", "browser", "emby-button"], function(appSetting
break;
case "ServerUpdateNeeded":
Dashboard.alert({
message: Globalize.translate("ServerUpdateNeeded", '<a href="https://github.com/jellyfin/jellyfin">https://github.com/jellyfin/jellyfin</a>')
message: globalize.translate("ServerUpdateNeeded", '<a href="https://github.com/jellyfin/jellyfin">https://github.com/jellyfin/jellyfin</a>')
});
break;
case "Unavailable":
Dashboard.alert({
message: Globalize.translate("MessageUnableToConnectToServer"),
title: Globalize.translate("HeaderConnectionFailure")
message: globalize.translate("MessageUnableToConnectToServer"),
title: globalize.translate("HeaderConnectionFailure")
});
}
}

View file

@ -1,23 +1,23 @@
define([], function () {
define(["globalize"], function (globalize) {
"use strict";
function processForgotPasswordResult(result) {
if ("ContactAdmin" == result.Action) {
return void Dashboard.alert({
message: Globalize.translate("MessageContactAdminToResetPassword"),
title: Globalize.translate("HeaderForgotPassword")
message: globalize.translate("MessageContactAdminToResetPassword"),
title: globalize.translate("HeaderForgotPassword")
});
}
if ("InNetworkRequired" == result.Action) {
return void Dashboard.alert({
message: Globalize.translate("MessageForgotPasswordInNetworkRequired"),
title: Globalize.translate("HeaderForgotPassword")
message: globalize.translate("MessageForgotPasswordInNetworkRequired"),
title: globalize.translate("HeaderForgotPassword")
});
}
if ("PinCode" == result.Action) {
var msg = Globalize.translate("MessageForgotPasswordFileCreated");
var msg = globalize.translate("MessageForgotPasswordFileCreated");
msg += "<br/>";
msg += "<br/>";
msg += "Enter PIN here to finish Password Reset<br/>";
@ -26,7 +26,7 @@ define([], function () {
msg += "<br/>";
return void Dashboard.alert({
message: msg,
title: Globalize.translate("HeaderForgotPassword"),
title: globalize.translate("HeaderForgotPassword"),
callback: function () {
Dashboard.navigate("forgotpasswordpin.html");
}

View file

@ -1,15 +1,15 @@
define([], function () {
define(["globalize"], function (globalize) {
"use strict";
function processForgotPasswordResult(result) {
if (result.Success) {
var msg = Globalize.translate("MessagePasswordResetForUsers");
var msg = globalize.translate("MessagePasswordResetForUsers");
msg += "<br/>";
msg += "<br/>";
msg += result.UsersReset.join("<br/>");
return void Dashboard.alert({
message: msg,
title: Globalize.translate("HeaderPasswordReset"),
title: globalize.translate("HeaderPasswordReset"),
callback: function () {
window.location.href = "index.html";
}
@ -17,8 +17,8 @@ define([], function () {
}
Dashboard.alert({
message: Globalize.translate("MessageInvalidForgotPasswordPin"),
title: Globalize.translate("HeaderPasswordReset")
message: globalize.translate("MessageInvalidForgotPasswordPin"),
title: globalize.translate("HeaderPasswordReset")
});
}

View file

@ -1,4 +1,4 @@
define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layoutManager", "browser", "cardStyle", "emby-checkbox"], function (appHost, appSettings, dom, connectionManager, loading, layoutManager, browser) {
define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layoutManager", "browser", "globalize", "cardStyle", "emby-checkbox"], function (appHost, appSettings, dom, connectionManager, loading, layoutManager, browser, globalize) {
"use strict";
var enableFocusTransform = !browser.slow && !browser.edge;
@ -28,12 +28,12 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout
if (UnauthorizedOrForbidden.includes(response.status)) {
require(["toast"], function (toast) {
const messageKey = response.status === 401 ? "MessageInvalidUser" : "MessageUnauthorizedUser";
toast(Globalize.translate(messageKey));
toast(globalize.translate(messageKey));
});
} else {
Dashboard.alert({
message: Globalize.translate("MessageUnableToConnectToServer"),
title: Globalize.translate("HeaderConnectionFailure")
message: globalize.translate("MessageUnableToConnectToServer"),
title: globalize.translate("HeaderConnectionFailure")
});
}
});

View file

@ -1,4 +1,4 @@
define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-input", "emby-checkbox", "listViewStyle", "emby-button"], function ($, loading) {
define(["jQuery", "loading", "globalize", "fnchecked", "emby-select", "emby-button", "emby-input", "emby-checkbox", "listViewStyle", "emby-button"], function ($, loading, globalize) {
"use strict";
function loadProfile(page) {
@ -258,14 +258,14 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in
html += "<div>";
html += '<a is="emby-linkbutton" href="#" class="lnkEditSubProfile" data-profileindex="' + i + '">';
html += "<p>" + Globalize.translate("ValueContainer", profile.Container || allText) + "</p>";
html += "<p>" + globalize.translate("ValueContainer", profile.Container || allText) + "</p>";
if ("Video" == profile.Type) {
html += "<p>" + Globalize.translate("ValueVideoCodec", profile.VideoCodec || allText) + "</p>";
html += "<p>" + Globalize.translate("ValueAudioCodec", profile.AudioCodec || allText) + "</p>";
html += "<p>" + globalize.translate("ValueVideoCodec", profile.VideoCodec || allText) + "</p>";
html += "<p>" + globalize.translate("ValueAudioCodec", profile.AudioCodec || allText) + "</p>";
} else {
if ("Audio" == profile.Type) {
html += "<p>" + Globalize.translate("ValueCodec", profile.AudioCodec || allText) + "</p>";
html += "<p>" + globalize.translate("ValueCodec", profile.AudioCodec || allText) + "</p>";
}
}
@ -319,14 +319,14 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in
html += "<div>";
html += '<a is="emby-linkbutton" href="#" class="lnkEditSubProfile" data-profileindex="' + i + '">';
html += "<p>Protocol: " + (profile.Protocol || "Http") + "</p>";
html += "<p>" + Globalize.translate("ValueContainer", profile.Container || allText) + "</p>";
html += "<p>" + globalize.translate("ValueContainer", profile.Container || allText) + "</p>";
if ("Video" == profile.Type) {
html += "<p>" + Globalize.translate("ValueVideoCodec", profile.VideoCodec || allText) + "</p>";
html += "<p>" + Globalize.translate("ValueAudioCodec", profile.AudioCodec || allText) + "</p>";
html += "<p>" + globalize.translate("ValueVideoCodec", profile.VideoCodec || allText) + "</p>";
html += "<p>" + globalize.translate("ValueAudioCodec", profile.AudioCodec || allText) + "</p>";
} else {
if ("Audio" == profile.Type) {
html += "<p>" + Globalize.translate("ValueCodec", profile.AudioCodec || allText) + "</p>";
html += "<p>" + globalize.translate("ValueCodec", profile.AudioCodec || allText) + "</p>";
}
}
@ -404,11 +404,11 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in
html += "<div>";
html += '<a is="emby-linkbutton" href="#" class="lnkEditSubProfile" data-profileindex="' + i + '">';
html += "<p>" + Globalize.translate("ValueContainer", profile.Container || allText) + "</p>";
html += "<p>" + globalize.translate("ValueContainer", profile.Container || allText) + "</p>";
if (profile.Conditions && profile.Conditions.length) {
html += "<p>";
html += Globalize.translate("ValueConditions", profile.Conditions.map(function (c) {
html += globalize.translate("ValueConditions", profile.Conditions.map(function (c) {
return c.Property;
}).join(", "));
html += "</p>";
@ -476,11 +476,11 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in
html += "<div>";
html += '<a is="emby-linkbutton" href="#" class="lnkEditSubProfile" data-profileindex="' + i + '">';
html += "<p>" + Globalize.translate("ValueCodec", profile.Codec || allText) + "</p>";
html += "<p>" + globalize.translate("ValueCodec", profile.Codec || allText) + "</p>";
if (profile.Conditions && profile.Conditions.length) {
html += "<p>";
html += Globalize.translate("ValueConditions", profile.Conditions.map(function (c) {
html += globalize.translate("ValueConditions", profile.Conditions.map(function (c) {
return c.Property;
}).join(", "));
html += "</p>";
@ -547,20 +547,20 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in
html += "<div>";
html += '<a is="emby-linkbutton" href="#" class="lnkEditSubProfile" data-profileindex="' + i + '">';
html += "<p>" + Globalize.translate("ValueContainer", profile.Container || allText) + "</p>";
html += "<p>" + globalize.translate("ValueContainer", profile.Container || allText) + "</p>";
if ("Video" == profile.Type) {
html += "<p>" + Globalize.translate("ValueVideoCodec", profile.VideoCodec || allText) + "</p>";
html += "<p>" + Globalize.translate("ValueAudioCodec", profile.AudioCodec || allText) + "</p>";
html += "<p>" + globalize.translate("ValueVideoCodec", profile.VideoCodec || allText) + "</p>";
html += "<p>" + globalize.translate("ValueAudioCodec", profile.AudioCodec || allText) + "</p>";
} else {
if ("Audio" == profile.Type) {
html += "<p>" + Globalize.translate("ValueCodec", profile.AudioCodec || allText) + "</p>";
html += "<p>" + globalize.translate("ValueCodec", profile.AudioCodec || allText) + "</p>";
}
}
if (profile.Conditions && profile.Conditions.length) {
html += "<p>";
html += Globalize.translate("ValueConditions", profile.Conditions.map(function (c) {
html += globalize.translate("ValueConditions", profile.Conditions.map(function (c) {
return c.Property;
}).join(", "));
html += "</p>";
@ -690,7 +690,7 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in
var currentProfile;
var currentSubProfile;
var isSubProfileNew;
var allText = Globalize.translate("LabelAll");
var allText = globalize.translate("LabelAll");
$(document).on("pageinit", "#dlnaProfilePage", function () {
var page = this;

View file

@ -1,4 +1,4 @@
define(["jQuery", "loading", "libraryMenu", "fnchecked"], function ($, loading, libraryMenu) {
define(["jQuery", "loading", "libraryMenu", "globalize", "fnchecked"], function ($, loading, libraryMenu, globalize) {
"use strict";
function loadPage(page, config, users) {
@ -34,10 +34,10 @@ define(["jQuery", "loading", "libraryMenu", "fnchecked"], function ($, loading,
function getTabs() {
return [{
href: "dlnasettings.html",
name: Globalize.translate("TabSettings")
name: globalize.translate("TabSettings")
}, {
href: "dlnaprofiles.html",
name: Globalize.translate("TabProfiles")
name: globalize.translate("TabProfiles")
}];
}

View file

@ -116,13 +116,13 @@ define(["jQuery", "loading", "globalize", "dom", "libraryMenu"], function ($, lo
function getTabs() {
return [{
href: "encodingsettings.html",
name: Globalize.translate("Transcoding")
name: globalize.translate("Transcoding")
}, {
href: "playbackconfiguration.html",
name: Globalize.translate("TabResumeSettings")
name: globalize.translate("TabResumeSettings")
}, {
href: "streamingsettings.html",
name: Globalize.translate("TabStreaming")
name: globalize.translate("TabStreaming")
}];
}

View file

@ -1,4 +1,4 @@
define(["jQuery", "loading", "fnchecked", "emby-checkbox", "emby-textarea", "emby-input", "emby-select", "emby-button"], function ($, loading) {
define(["jQuery", "loading", "globalize", "fnchecked", "emby-checkbox", "emby-textarea", "emby-input", "emby-select", "emby-button"], function ($, loading, globalize) {
"use strict";
function loadPage(page, config, languageOptions, systemInfo) {
@ -58,7 +58,7 @@ define(["jQuery", "loading", "fnchecked", "emby-checkbox", "emby-textarea", "emb
});
}, function () {
require(["alert"], function (alert) {
alert(Globalize.translate("DefaultErrorMessage"));
alert(globalize.translate("DefaultErrorMessage"));
});
Dashboard.processServerConfigurationUpdateResult();
@ -83,8 +83,8 @@ define(["jQuery", "loading", "fnchecked", "emby-checkbox", "emby-textarea", "emb
picker.close();
},
validateWriteable: true,
header: Globalize.translate("HeaderSelectServerCachePath"),
instruction: Globalize.translate("HeaderSelectServerCachePathHelp")
header: globalize.translate("HeaderSelectServerCachePath"),
instruction: globalize.translate("HeaderSelectServerCachePathHelp")
});
});
});
@ -106,8 +106,8 @@ define(["jQuery", "loading", "fnchecked", "emby-checkbox", "emby-textarea", "emb
picker.close();
},
validateWriteable: true,
header: Globalize.translate("HeaderSelectMetadataPath"),
instruction: Globalize.translate("HeaderSelectMetadataPathHelp"),
header: globalize.translate("HeaderSelectMetadataPath"),
instruction: globalize.translate("HeaderSelectMetadataPathHelp"),
enableNetworkSharePath: true
});
});

View file

@ -4,16 +4,16 @@ define(["globalize", "loading", "libraryMenu", "emby-checkbox", "emby-button", "
function getTabs() {
return [{
href: "library.html",
name: Globalize.translate("HeaderLibraries")
name: globalize.translate("HeaderLibraries")
}, {
href: "librarydisplay.html",
name: Globalize.translate("TabDisplay")
name: globalize.translate("TabDisplay")
}, {
href: "metadataimages.html",
name: Globalize.translate("TabMetadata")
name: globalize.translate("TabMetadata")
}, {
href: "metadatanfo.html",
name: Globalize.translate("TabNfoSettings")
name: globalize.translate("TabNfoSettings")
}];
}

View file

@ -1,4 +1,4 @@
define(["jQuery", "dom", "loading", "libraryMenu", "listViewStyle"], function($, dom, loading, libraryMenu) {
define(["jQuery", "dom", "loading", "libraryMenu", "globalize", "listViewStyle"], function($, dom, loading, libraryMenu, globalize) {
"use strict";
function populateLanguages(select) {
@ -43,16 +43,16 @@ define(["jQuery", "dom", "loading", "libraryMenu", "listViewStyle"], function($,
function getTabs() {
return [{
href: "library.html",
name: Globalize.translate("HeaderLibraries")
name: globalize.translate("HeaderLibraries")
}, {
href: "librarydisplay.html",
name: Globalize.translate("TabDisplay")
name: globalize.translate("TabDisplay")
}, {
href: "metadataimages.html",
name: Globalize.translate("TabMetadata")
name: globalize.translate("TabMetadata")
}, {
href: "metadatanfo.html",
name: Globalize.translate("TabNfoSettings")
name: globalize.translate("TabNfoSettings")
}];
}

View file

@ -1,8 +1,8 @@
define(["jQuery", "loading", "libraryMenu"], function ($, loading, libraryMenu) {
define(["jQuery", "loading", "libraryMenu", "globalize"], function ($, loading, libraryMenu, globalize) {
"use strict";
function loadPage(page, config, users) {
var html = '<option value="" selected="selected">' + Globalize.translate("OptionNone") + "</option>";
var html = '<option value="" selected="selected">' + globalize.translate("OptionNone") + "</option>";
html += users.map(function (user) {
return '<option value="' + user.Id + '">' + user.Name + "</option>";
}).join("");
@ -33,7 +33,7 @@ define(["jQuery", "loading", "libraryMenu"], function ($, loading, libraryMenu)
function showConfirmMessage(config) {
var msg = [];
msg.push(Globalize.translate("MetadataSettingChangeHelp"));
msg.push(globalize.translate("MetadataSettingChangeHelp"));
require(["alert"], function (alert) {
alert({
@ -45,16 +45,16 @@ define(["jQuery", "loading", "libraryMenu"], function ($, loading, libraryMenu)
function getTabs() {
return [{
href: "library.html",
name: Globalize.translate("HeaderLibraries")
name: globalize.translate("HeaderLibraries")
}, {
href: "librarydisplay.html",
name: Globalize.translate("TabDisplay")
name: globalize.translate("TabDisplay")
}, {
href: "metadataimages.html",
name: Globalize.translate("TabMetadata")
name: globalize.translate("TabMetadata")
}, {
href: "metadatanfo.html",
name: Globalize.translate("TabNfoSettings")
name: globalize.translate("TabNfoSettings")
}];
}

View file

@ -1,4 +1,4 @@
define(["jQuery", "loading", "libraryMenu"], function ($, loading, libraryMenu) {
define(["jQuery", "loading", "libraryMenu", "globalize"], function ($, loading, libraryMenu, globalize) {
"use strict";
function loadPage(page, config) {
@ -25,13 +25,13 @@ define(["jQuery", "loading", "libraryMenu"], function ($, loading, libraryMenu)
function getTabs() {
return [{
href: "encodingsettings.html",
name: Globalize.translate("Transcoding")
name: globalize.translate("Transcoding")
}, {
href: "playbackconfiguration.html",
name: Globalize.translate("TabResumeSettings")
name: globalize.translate("TabResumeSettings")
}, {
href: "streamingsettings.html",
name: Globalize.translate("TabStreaming")
name: globalize.translate("TabStreaming")
}];
}

View file

@ -1,4 +1,4 @@
define(["jQuery", "libraryMenu", "loading"], function ($, libraryMenu, loading) {
define(["jQuery", "libraryMenu", "loading", "globalize"], function ($, libraryMenu, loading, globalize) {
"use strict";
function loadPage(page, config) {
@ -20,13 +20,13 @@ define(["jQuery", "libraryMenu", "loading"], function ($, libraryMenu, loading)
function getTabs() {
return [{
href: "encodingsettings.html",
name: Globalize.translate("Transcoding")
name: globalize.translate("Transcoding")
}, {
href: "playbackconfiguration.html",
name: Globalize.translate("TabResumeSettings")
name: globalize.translate("TabResumeSettings")
}, {
href: "streamingsettings.html",
name: Globalize.translate("TabStreaming")
name: globalize.translate("TabStreaming")
}];
}

View file

@ -1,4 +1,4 @@
define(["events", "loading"], function (events, loading) {
define(["events", "loading", "globalize"], function (events, loading, globalize) {
"use strict";
function onListingsSubmitted() {
@ -17,7 +17,7 @@ define(["events", "loading"], function (events, loading) {
function loadTemplate(page, type, providerId) {
require(["text!./components/tvproviders/" + type + ".template.html"], function (html) {
page.querySelector(".providerTemplate").innerHTML = Globalize.translateDocument(html);
page.querySelector(".providerTemplate").innerHTML = globalize.translateDocument(html);
init(page, type, providerId);
});
}

View file

@ -1,4 +1,4 @@
define(["jQuery", "loading", "fnchecked", "emby-button"], function ($, loading) {
define(["jQuery", "loading", "globalize", "fnchecked", "emby-button"], function ($, loading, globalize) {
"use strict";
function loadPage(page, config) {
@ -44,7 +44,7 @@ define(["jQuery", "loading", "fnchecked", "emby-button"], function ($, loading)
var msg = "";
if (recordingPathChanged) {
msg += Globalize.translate("RecordingPathChangeMessage");
msg += globalize.translate("RecordingPathChangeMessage");
}
if (msg) {

View file

@ -1,4 +1,4 @@
define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardBuilder", "userSettings", "emby-itemscontainer"], function (loading, events, libraryBrowser, imageLoader, listView, cardBuilder, userSettings) {
define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardBuilder", "userSettings", "globalize", "emby-itemscontainer"], function (loading, events, libraryBrowser, imageLoader, listView, cardBuilder, userSettings, globalize) {
"use strict";
return function (view, params, tabContent) {
@ -171,7 +171,7 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB
}
if (!result.Items.length) {
html = '<p style="text-align:center;">' + Globalize.translate("MessageNoCollectionsAvailable") + "</p>";
html = '<p style="text-align:center;">' + globalize.translate("MessageNoCollectionsAvailable") + "</p>";
}
var itemsContainer = tabContent.querySelector(".itemsContainer");
@ -199,19 +199,19 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB
tabContent.querySelector(".btnSort").addEventListener("click", function (e) {
libraryBrowser.showSortMenu({
items: [{
name: Globalize.translate("OptionNameSort"),
name: globalize.translate("OptionNameSort"),
id: "SortName"
}, {
name: Globalize.translate("OptionImdbRating"),
name: globalize.translate("OptionImdbRating"),
id: "CommunityRating,SortName"
}, {
name: Globalize.translate("OptionDateAdded"),
name: globalize.translate("OptionDateAdded"),
id: "DateCreated,SortName"
}, {
name: Globalize.translate("OptionParentalRating"),
name: globalize.translate("OptionParentalRating"),
id: "OfficialRating,SortName"
}, {
name: Globalize.translate("OptionReleaseDate"),
name: globalize.translate("OptionReleaseDate"),
id: "PremiereDate,SortName"
}],
callback: function () {

View file

@ -1,4 +1,4 @@
define(["loading", "layoutManager", "userSettings", "events", "libraryBrowser", "alphaPicker", "listView", "cardBuilder", "emby-itemscontainer"], function (loading, layoutManager, userSettings, events, libraryBrowser, alphaPicker, listView, cardBuilder) {
define(["loading", "layoutManager", "userSettings", "events", "libraryBrowser", "alphaPicker", "listView", "cardBuilder", "globalize", "emby-itemscontainer"], function (loading, layoutManager, userSettings, events, libraryBrowser, alphaPicker, listView, cardBuilder, globalize) {
"use strict";
return function (view, params, tabContent, options) {
@ -191,31 +191,31 @@ define(["loading", "layoutManager", "userSettings", "events", "libraryBrowser",
btnSort.addEventListener("click", function (e) {
libraryBrowser.showSortMenu({
items: [{
name: Globalize.translate("OptionNameSort"),
name: globalize.translate("OptionNameSort"),
id: "SortName,ProductionYear"
}, {
name: Globalize.translate("OptionImdbRating"),
name: globalize.translate("OptionImdbRating"),
id: "CommunityRating,SortName,ProductionYear"
}, {
name: Globalize.translate("OptionCriticRating"),
name: globalize.translate("OptionCriticRating"),
id: "CriticRating,SortName,ProductionYear"
}, {
name: Globalize.translate("OptionDateAdded"),
name: globalize.translate("OptionDateAdded"),
id: "DateCreated,SortName,ProductionYear"
}, {
name: Globalize.translate("OptionDatePlayed"),
name: globalize.translate("OptionDatePlayed"),
id: "DatePlayed,SortName,ProductionYear"
}, {
name: Globalize.translate("OptionParentalRating"),
name: globalize.translate("OptionParentalRating"),
id: "OfficialRating,SortName,ProductionYear"
}, {
name: Globalize.translate("OptionPlayCount"),
name: globalize.translate("OptionPlayCount"),
id: "PlayCount,SortName,ProductionYear"
}, {
name: Globalize.translate("OptionReleaseDate"),
name: globalize.translate("OptionReleaseDate"),
id: "PremiereDate,SortName,ProductionYear"
}, {
name: Globalize.translate("OptionRuntime"),
name: globalize.translate("OptionRuntime"),
id: "Runtime,SortName,ProductionYear"
}],
callback: function () {

View file

@ -1,4 +1,4 @@
define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu", "mainTabsManager", "cardBuilder", "dom", "imageLoader", "playbackManager", "emby-scroller", "emby-itemscontainer", "emby-tabs", "emby-button"], function (events, layoutManager, inputManager, userSettings, libraryMenu, mainTabsManager, cardBuilder, dom, imageLoader, playbackManager) {
define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu", "mainTabsManager", "cardBuilder", "dom", "imageLoader", "playbackManager", "globalize", "emby-scroller", "emby-itemscontainer", "emby-tabs", "emby-button"], function (events, layoutManager, inputManager, userSettings, libraryMenu, mainTabsManager, cardBuilder, dom, imageLoader, playbackManager, globalize) {
"use strict";
function enableScrollX() {
@ -91,21 +91,21 @@ define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu"
switch (recommendation.RecommendationType) {
case "SimilarToRecentlyPlayed":
title = Globalize.translate("RecommendationBecauseYouWatched", recommendation.BaselineItemName);
title = globalize.translate("RecommendationBecauseYouWatched", recommendation.BaselineItemName);
break;
case "SimilarToLikedItem":
title = Globalize.translate("RecommendationBecauseYouLike", recommendation.BaselineItemName);
title = globalize.translate("RecommendationBecauseYouLike", recommendation.BaselineItemName);
break;
case "HasDirectorFromRecentlyPlayed":
case "HasLikedDirector":
title = Globalize.translate("RecommendationDirectedBy", recommendation.BaselineItemName);
title = globalize.translate("RecommendationDirectedBy", recommendation.BaselineItemName);
break;
case "HasActorFromRecentlyPlayed":
case "HasLikedActor":
title = Globalize.translate("RecommendationStarring", recommendation.BaselineItemName);
title = globalize.translate("RecommendationStarring", recommendation.BaselineItemName);
break;
}
@ -211,19 +211,19 @@ define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu"
function getTabs() {
return [{
name: Globalize.translate("Movies")
name: globalize.translate("Movies")
}, {
name: Globalize.translate("TabSuggestions")
name: globalize.translate("TabSuggestions")
}, {
name: Globalize.translate("TabTrailers")
name: globalize.translate("TabTrailers")
}, {
name: Globalize.translate("TabFavorites")
name: globalize.translate("TabFavorites")
}, {
name: Globalize.translate("TabCollections")
name: globalize.translate("TabCollections")
}, {
name: Globalize.translate("TabGenres")
name: globalize.translate("TabGenres")
}, {
name: Globalize.translate("ButtonSearch"),
name: globalize.translate("ButtonSearch"),
cssClass: "searchTabButton"
}];
}
@ -398,8 +398,8 @@ define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu"
libraryMenu.setTitle(item.Name);
});
} else {
view.setAttribute("data-title", Globalize.translate("TabMovies"));
libraryMenu.setTitle(Globalize.translate("TabMovies"));
view.setAttribute("data-title", globalize.translate("TabMovies"));
libraryMenu.setTitle(globalize.translate("TabMovies"));
}
}

View file

@ -1,4 +1,4 @@
define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "alphaPicker", "listView", "cardBuilder", "userSettings", "emby-itemscontainer"], function (layoutManager, loading, events, libraryBrowser, imageLoader, alphaPicker, listView, cardBuilder, userSettings) {
define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "alphaPicker", "listView", "cardBuilder", "userSettings", "globalize", "emby-itemscontainer"], function (layoutManager, loading, events, libraryBrowser, imageLoader, alphaPicker, listView, cardBuilder, userSettings, globalize) {
"use strict";
return function (view, params, tabContent) {
@ -158,7 +158,7 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "
}
if (!result.Items.length) {
html = '<p style="text-align:center;">' + Globalize.translate("MessageNoTrailersFound") + "</p>";
html = '<p style="text-align:center;">' + globalize.translate("MessageNoTrailersFound") + "</p>";
}
var itemsContainer = tabContent.querySelector(".itemsContainer");
@ -223,25 +223,25 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "
tabContent.querySelector(".btnSort").addEventListener("click", function (e) {
libraryBrowser.showSortMenu({
items: [{
name: Globalize.translate("OptionNameSort"),
name: globalize.translate("OptionNameSort"),
id: "SortName"
}, {
name: Globalize.translate("OptionImdbRating"),
name: globalize.translate("OptionImdbRating"),
id: "CommunityRating,SortName"
}, {
name: Globalize.translate("OptionDateAdded"),
name: globalize.translate("OptionDateAdded"),
id: "DateCreated,SortName"
}, {
name: Globalize.translate("OptionDatePlayed"),
name: globalize.translate("OptionDatePlayed"),
id: "DatePlayed,SortName"
}, {
name: Globalize.translate("OptionParentalRating"),
name: globalize.translate("OptionParentalRating"),
id: "OfficialRating,SortName"
}, {
name: Globalize.translate("OptionPlayCount"),
name: globalize.translate("OptionPlayCount"),
id: "PlayCount,SortName"
}, {
name: Globalize.translate("OptionReleaseDate"),
name: globalize.translate("OptionReleaseDate"),
id: "PremiereDate,SortName"
}],
callback: function () {

View file

@ -1,4 +1,4 @@
define(["layoutManager", "playbackManager", "loading", "events", "libraryBrowser", "imageLoader", "alphaPicker", "listView", "cardBuilder", "userSettings", "emby-itemscontainer"], function (layoutManager, playbackManager, loading, events, libraryBrowser, imageLoader, alphaPicker, listView, cardBuilder, userSettings) {
define(["layoutManager", "playbackManager", "loading", "events", "libraryBrowser", "imageLoader", "alphaPicker", "listView", "cardBuilder", "userSettings", "globalize", "emby-itemscontainer"], function (layoutManager, playbackManager, loading, events, libraryBrowser, imageLoader, alphaPicker, listView, cardBuilder, userSettings, globalize) {
"use strict";
return function (view, params, tabContent) {
@ -230,25 +230,25 @@ define(["layoutManager", "playbackManager", "loading", "events", "libraryBrowser
tabContent.querySelector(".btnSort").addEventListener("click", function (e) {
libraryBrowser.showSortMenu({
items: [{
name: Globalize.translate("OptionNameSort"),
name: globalize.translate("OptionNameSort"),
id: "SortName"
}, {
name: Globalize.translate("OptionAlbumArtist"),
name: globalize.translate("OptionAlbumArtist"),
id: "AlbumArtist,SortName"
}, {
name: Globalize.translate("OptionCommunityRating"),
name: globalize.translate("OptionCommunityRating"),
id: "CommunityRating,SortName"
}, {
name: Globalize.translate("OptionCriticRating"),
name: globalize.translate("OptionCriticRating"),
id: "CriticRating,SortName"
}, {
name: Globalize.translate("OptionDateAdded"),
name: globalize.translate("OptionDateAdded"),
id: "DateCreated,SortName"
}, {
name: Globalize.translate("OptionReleaseDate"),
name: globalize.translate("OptionReleaseDate"),
id: "ProductionYear,PremiereDate,SortName"
}, {
name: Globalize.translate("OptionRandom"),
name: globalize.translate("OptionRandom"),
id: "Random,SortName"
}],
callback: function () {

View file

@ -1,4 +1,4 @@
define(["browser", "layoutManager", "userSettings", "inputManager", "loading", "cardBuilder", "dom", "apphost", "imageLoader", "libraryMenu", "playbackManager", "mainTabsManager", "scrollStyles", "emby-itemscontainer", "emby-tabs", "emby-button", "flexStyles"], function (browser, layoutManager, userSettings, inputManager, loading, cardBuilder, dom, appHost, imageLoader, libraryMenu, playbackManager, mainTabsManager) {
define(["browser", "layoutManager", "userSettings", "inputManager", "loading", "cardBuilder", "dom", "apphost", "imageLoader", "libraryMenu", "playbackManager", "mainTabsManager", "globalize", "scrollStyles", "emby-itemscontainer", "emby-tabs", "emby-button", "flexStyles"], function (browser, layoutManager, userSettings, inputManager, loading, cardBuilder, dom, appHost, imageLoader, libraryMenu, playbackManager, mainTabsManager, globalize) {
"use strict";
function itemsPerRow() {
@ -167,21 +167,21 @@ define(["browser", "layoutManager", "userSettings", "inputManager", "loading", "
function getTabs() {
return [{
name: Globalize.translate("TabSuggestions")
name: globalize.translate("TabSuggestions")
}, {
name: Globalize.translate("TabAlbums")
name: globalize.translate("TabAlbums")
}, {
name: Globalize.translate("TabAlbumArtists")
name: globalize.translate("TabAlbumArtists")
}, {
name: Globalize.translate("TabArtists")
name: globalize.translate("TabArtists")
}, {
name: Globalize.translate("TabPlaylists")
name: globalize.translate("TabPlaylists")
}, {
name: Globalize.translate("TabSongs")
name: globalize.translate("TabSongs")
}, {
name: Globalize.translate("TabGenres")
name: globalize.translate("TabGenres")
}, {
name: Globalize.translate("ButtonSearch"),
name: globalize.translate("ButtonSearch"),
cssClass: "searchTabButton"
}];
}
@ -388,8 +388,8 @@ define(["browser", "layoutManager", "userSettings", "inputManager", "loading", "
libraryMenu.setTitle(item.Name);
});
} else {
view.setAttribute("data-title", Globalize.translate("TabMusic"));
libraryMenu.setTitle(Globalize.translate("TabMusic"));
view.setAttribute("data-title", globalize.translate("TabMusic"));
libraryMenu.setTitle(globalize.translate("TabMusic"));
}
}

View file

@ -1,4 +1,4 @@
define(["events", "libraryBrowser", "imageLoader", "listView", "loading", "userSettings", "emby-itemscontainer"], function (events, libraryBrowser, imageLoader, listView, loading, userSettings) {
define(["events", "libraryBrowser", "imageLoader", "listView", "loading", "userSettings", "globalize", "emby-itemscontainer"], function (events, libraryBrowser, imageLoader, listView, loading, userSettings, globalize) {
"use strict";
return function (view, params, tabContent) {
@ -149,31 +149,31 @@ define(["events", "libraryBrowser", "imageLoader", "listView", "loading", "userS
tabContent.querySelector(".btnSort").addEventListener("click", function (e) {
libraryBrowser.showSortMenu({
items: [{
name: Globalize.translate("OptionTrackName"),
name: globalize.translate("OptionTrackName"),
id: "Name"
}, {
name: Globalize.translate("OptionAlbum"),
name: globalize.translate("OptionAlbum"),
id: "Album,SortName"
}, {
name: Globalize.translate("OptionAlbumArtist"),
name: globalize.translate("OptionAlbumArtist"),
id: "AlbumArtist,Album,SortName"
}, {
name: Globalize.translate("OptionArtist"),
name: globalize.translate("OptionArtist"),
id: "Artist,Album,SortName"
}, {
name: Globalize.translate("OptionDateAdded"),
name: globalize.translate("OptionDateAdded"),
id: "DateCreated,SortName"
}, {
name: Globalize.translate("OptionDatePlayed"),
name: globalize.translate("OptionDatePlayed"),
id: "DatePlayed,SortName"
}, {
name: Globalize.translate("OptionPlayCount"),
name: globalize.translate("OptionPlayCount"),
id: "PlayCount,SortName"
}, {
name: Globalize.translate("OptionReleaseDate"),
name: globalize.translate("OptionReleaseDate"),
id: "PremiereDate,AlbumArtist,Album,SortName"
}, {
name: Globalize.translate("OptionRuntime"),
name: globalize.translate("OptionRuntime"),
id: "Runtime,AlbumArtist,Album,SortName"
}],
callback: function () {

View file

@ -1,4 +1,4 @@
define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardBuilder", "userSettings", "emby-itemscontainer"], function (loading, events, libraryBrowser, imageLoader, listView, cardBuilder, userSettings) {
define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardBuilder", "userSettings", "globalize", "emby-itemscontainer"], function (loading, events, libraryBrowser, imageLoader, listView, cardBuilder, userSettings, globalize) {
"use strict";
return function (view, params, tabContent) {
@ -188,28 +188,28 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB
tabContent.querySelector(".btnSort").addEventListener("click", function (e) {
libraryBrowser.showSortMenu({
items: [{
name: Globalize.translate("OptionNameSort"),
name: globalize.translate("OptionNameSort"),
id: "SeriesSortName,SortName"
}, {
name: Globalize.translate("OptionTvdbRating"),
name: globalize.translate("OptionTvdbRating"),
id: "CommunityRating,SeriesSortName,SortName"
}, {
name: Globalize.translate("OptionDateAdded"),
name: globalize.translate("OptionDateAdded"),
id: "DateCreated,SeriesSortName,SortName"
}, {
name: Globalize.translate("OptionPremiereDate"),
name: globalize.translate("OptionPremiereDate"),
id: "PremiereDate,SeriesSortName,SortName"
}, {
name: Globalize.translate("OptionDatePlayed"),
name: globalize.translate("OptionDatePlayed"),
id: "DatePlayed,SeriesSortName,SortName"
}, {
name: Globalize.translate("OptionParentalRating"),
name: globalize.translate("OptionParentalRating"),
id: "OfficialRating,SeriesSortName,SortName"
}, {
name: Globalize.translate("OptionPlayCount"),
name: globalize.translate("OptionPlayCount"),
id: "PlayCount,SeriesSortName,SortName"
}, {
name: Globalize.translate("OptionRuntime"),
name: globalize.translate("OptionRuntime"),
id: "Runtime,SeriesSortName,SortName"
}],
callback: function () {

View file

@ -1,23 +1,23 @@
define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "dom", "userSettings", "cardBuilder", "playbackManager", "mainTabsManager", "scrollStyles", "emby-itemscontainer", "emby-button"], function (events, inputManager, libraryMenu, layoutManager, loading, dom, userSettings, cardBuilder, playbackManager, mainTabsManager) {
define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "dom", "userSettings", "cardBuilder", "playbackManager", "mainTabsManager", "globalize", "scrollStyles", "emby-itemscontainer", "emby-button"], function (events, inputManager, libraryMenu, layoutManager, loading, dom, userSettings, cardBuilder, playbackManager, mainTabsManager, globalize) {
"use strict";
function getTabs() {
return [{
name: Globalize.translate("TabShows")
name: globalize.translate("TabShows")
}, {
name: Globalize.translate("TabSuggestions")
name: globalize.translate("TabSuggestions")
}, {
name: Globalize.translate("TabLatest")
name: globalize.translate("TabLatest")
}, {
name: Globalize.translate("TabUpcoming")
name: globalize.translate("TabUpcoming")
}, {
name: Globalize.translate("TabGenres")
name: globalize.translate("TabGenres")
}, {
name: Globalize.translate("TabNetworks")
name: globalize.translate("TabNetworks")
}, {
name: Globalize.translate("TabEpisodes")
name: globalize.translate("TabEpisodes")
}, {
name: Globalize.translate("ButtonSearch"),
name: globalize.translate("ButtonSearch"),
cssClass: "searchTabButton"
}];
}
@ -314,8 +314,8 @@ define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "do
libraryMenu.setTitle(item.Name);
});
} else {
view.setAttribute("data-title", Globalize.translate("TabShows"));
libraryMenu.setTitle(Globalize.translate("TabShows"));
view.setAttribute("data-title", globalize.translate("TabShows"));
libraryMenu.setTitle(globalize.translate("TabShows"));
}
}

View file

@ -1,4 +1,4 @@
define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "listView", "cardBuilder", "alphaPicker", "userSettings", "emby-itemscontainer"], function (layoutManager, loading, events, libraryBrowser, imageLoader, listView, cardBuilder, alphaPicker, userSettings) {
define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "listView", "cardBuilder", "alphaPicker", "userSettings", "globalize", "emby-itemscontainer"], function (layoutManager, loading, events, libraryBrowser, imageLoader, listView, cardBuilder, alphaPicker, userSettings, globalize) {
"use strict";
return function (view, params, tabContent) {
@ -241,22 +241,22 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "
tabContent.querySelector(".btnSort").addEventListener("click", function (e) {
libraryBrowser.showSortMenu({
items: [{
name: Globalize.translate("OptionNameSort"),
name: globalize.translate("OptionNameSort"),
id: "SortName"
}, {
name: Globalize.translate("OptionImdbRating"),
name: globalize.translate("OptionImdbRating"),
id: "CommunityRating,SortName"
}, {
name: Globalize.translate("OptionDateAdded"),
name: globalize.translate("OptionDateAdded"),
id: "DateCreated,SortName"
}, {
name: Globalize.translate("OptionDatePlayed"),
name: globalize.translate("OptionDatePlayed"),
id: "DatePlayed,SortName"
}, {
name: Globalize.translate("OptionParentalRating"),
name: globalize.translate("OptionParentalRating"),
id: "OfficialRating,SortName"
}, {
name: Globalize.translate("OptionReleaseDate"),
name: globalize.translate("OptionReleaseDate"),
id: "PremiereDate,SortName"
}],
callback: function () {

View file

@ -1,4 +1,4 @@
define(["layoutManager", "loading", "datetime", "libraryBrowser", "cardBuilder", "apphost", "imageLoader", "scrollStyles", "emby-itemscontainer"], function (layoutManager, loading, datetime, libraryBrowser, cardBuilder, appHost, imageLoader) {
define(["layoutManager", "loading", "datetime", "libraryBrowser", "cardBuilder", "apphost", "imageLoader", "globalize", "scrollStyles", "emby-itemscontainer"], function (layoutManager, loading, datetime, libraryBrowser, cardBuilder, appHost, imageLoader, globalize) {
"use strict";
function getUpcomingPromise(context, params) {
@ -52,7 +52,7 @@ define(["layoutManager", "loading", "datetime", "libraryBrowser", "cardBuilder",
if (item.PremiereDate) {
try {
var premiereDate = datetime.parseISO8601Date(item.PremiereDate, true);
dateText = datetime.isRelativeDay(premiereDate, -1) ? Globalize.translate("Yesterday") : datetime.toLocaleDateString(premiereDate, {
dateText = datetime.isRelativeDay(premiereDate, -1) ? globalize.translate("Yesterday") : datetime.toLocaleDateString(premiereDate, {
weekday: "long",
month: "short",
day: "numeric"

View file

@ -1,4 +1,4 @@
define(["controllers/userpasswordpage", "loading", "libraryMenu", "apphost", "emby-button"], function (UserPasswordPage, loading, libraryMenu, appHost) {
define(["controllers/userpasswordpage", "loading", "libraryMenu", "apphost", "globalize", "emby-button"], function (UserPasswordPage, loading, libraryMenu, appHost, globalize) {
"use strict";
function reloadUser(page) {
@ -37,7 +37,7 @@ define(["controllers/userpasswordpage", "loading", "libraryMenu", "apphost", "em
switch (evt.target.error.code) {
case evt.target.error.NOT_FOUND_ERR:
require(["toast"], function (toast) {
toast(Globalize.translate("FileNotFound"));
toast(globalize.translate("FileNotFound"));
});
break;
case evt.target.error.ABORT_ERR:
@ -46,7 +46,7 @@ define(["controllers/userpasswordpage", "loading", "libraryMenu", "apphost", "em
case evt.target.error.NOT_READABLE_ERR:
default:
require(["toast"], function (toast) {
toast(Globalize.translate("FileReadError"));
toast(globalize.translate("FileReadError"));
});
}
}
@ -54,7 +54,7 @@ define(["controllers/userpasswordpage", "loading", "libraryMenu", "apphost", "em
function onFileReaderAbort(evt) {
loading.hide();
require(["toast"], function (toast) {
toast(Globalize.translate("FileReadCancelled"));
toast(globalize.translate("FileReadCancelled"));
});
}
@ -86,7 +86,7 @@ define(["controllers/userpasswordpage", "loading", "libraryMenu", "apphost", "em
new UserPasswordPage(view, params);
view.querySelector("#btnDeleteImage").addEventListener("click", function () {
require(["confirm"], function (confirm) {
confirm(Globalize.translate("DeleteImageConfirmation"), Globalize.translate("DeleteImage")).then(function () {
confirm(globalize.translate("DeleteImageConfirmation"), globalize.translate("DeleteImage")).then(function () {
loading.show();
var userId = getParameterByName("userId");
ApiClient.deleteUserImage(userId, "primary").then(function () {

View file

@ -1,4 +1,4 @@
define(["jQuery", "loading", "libraryMenu", "fnchecked"], function ($, loading, libraryMenu) {
define(["jQuery", "loading", "libraryMenu", "globalize", "fnchecked"], function ($, loading, libraryMenu, globalize) {
"use strict";
function loadDeleteFolders(page, user, mediaFolders) {
@ -112,7 +112,7 @@ define(["jQuery", "loading", "libraryMenu", "fnchecked"], function ($, loading,
loading.hide();
require(["toast"], function (toast) {
toast(Globalize.translate("SettingsSaved"));
toast(globalize.translate("SettingsSaved"));
});
}
@ -176,7 +176,7 @@ define(["jQuery", "loading", "libraryMenu", "fnchecked"], function ($, loading,
var currentUser;
$(document).on("pageinit", "#editUserPage", function () {
$(".editUserProfileForm").off("submit", onSubmit).on("submit", onSubmit);
this.querySelector(".sharingHelp").innerHTML = Globalize.translate("OptionAllowLinkSharingHelp", 30);
this.querySelector(".sharingHelp").innerHTML = globalize.translate("OptionAllowLinkSharingHelp", 30);
var page = this;
$("#chkEnableDeleteAllFolders", this).on("change", function () {
if (this.checked) {

View file

@ -1,4 +1,4 @@
define(["jQuery", "loading", "libraryMenu", "fnchecked"], function ($, loading, libraryMenu) {
define(["jQuery", "loading", "libraryMenu", "globalize", "fnchecked"], function ($, loading, libraryMenu, globalize) {
"use strict";
function triggerChange(select) {
@ -9,7 +9,7 @@ define(["jQuery", "loading", "libraryMenu", "fnchecked"], function ($, loading,
function loadMediaFolders(page, user, mediaFolders) {
var html = "";
html += '<h3 class="checkboxListLabel">' + Globalize.translate("HeaderLibraries") + "</h3>";
html += '<h3 class="checkboxListLabel">' + globalize.translate("HeaderLibraries") + "</h3>";
html += '<div class="checkboxList paperList checkboxList-paperList">';
for (var i = 0, length = mediaFolders.length; i < length; i++) {
@ -28,7 +28,7 @@ define(["jQuery", "loading", "libraryMenu", "fnchecked"], function ($, loading,
function loadChannels(page, user, channels) {
var html = "";
html += '<h3 class="checkboxListLabel">' + Globalize.translate("HeaderChannels") + "</h3>";
html += '<h3 class="checkboxListLabel">' + globalize.translate("HeaderChannels") + "</h3>";
html += '<div class="checkboxList paperList checkboxList-paperList">';
for (var i = 0, length = channels.length; i < length; i++) {
@ -52,7 +52,7 @@ define(["jQuery", "loading", "libraryMenu", "fnchecked"], function ($, loading,
function loadDevices(page, user, devices) {
var html = "";
html += '<h3 class="checkboxListLabel">' + Globalize.translate("HeaderDevices") + "</h3>";
html += '<h3 class="checkboxListLabel">' + globalize.translate("HeaderDevices") + "</h3>";
html += '<div class="checkboxList paperList checkboxList-paperList">';
for (var i = 0, length = devices.length; i < length; i++) {
@ -85,7 +85,7 @@ define(["jQuery", "loading", "libraryMenu", "fnchecked"], function ($, loading,
loading.hide();
require(["toast"], function (toast) {
toast(Globalize.translate("SettingsSaved"));
toast(globalize.translate("SettingsSaved"));
});
}

View file

@ -1,9 +1,9 @@
define(["jQuery", "loading", "fnchecked", "emby-checkbox"], function ($, loading) {
define(["jQuery", "loading", "globalize", "fnchecked", "emby-checkbox"], function ($, loading, globalize) {
"use strict";
function loadMediaFolders(page, mediaFolders) {
var html = "";
html += '<h3 class="checkboxListLabel">' + Globalize.translate("HeaderLibraries") + "</h3>";
html += '<h3 class="checkboxListLabel">' + globalize.translate("HeaderLibraries") + "</h3>";
html += '<div class="checkboxList paperList" style="padding:.5em 1em;">';
for (var i = 0; i < mediaFolders.length; i++) {
@ -18,7 +18,7 @@ define(["jQuery", "loading", "fnchecked", "emby-checkbox"], function ($, loading
function loadChannels(page, channels) {
var html = "";
html += '<h3 class="checkboxListLabel">' + Globalize.translate("HeaderChannels") + "</h3>";
html += '<h3 class="checkboxListLabel">' + globalize.translate("HeaderChannels") + "</h3>";
html += '<div class="checkboxList paperList" style="padding:.5em 1em;">';
for (var i = 0; i < channels.length; i++) {
@ -85,7 +85,7 @@ define(["jQuery", "loading", "fnchecked", "emby-checkbox"], function ($, loading
});
}, function (response) {
require(["toast"], function (toast) {
toast(Globalize.translate("DefaultErrorMessage"));
toast(globalize.translate("DefaultErrorMessage"));
});
loading.hide();

View file

@ -1,4 +1,4 @@
define(["jQuery", "datetime", "loading", "libraryMenu", "listViewStyle", "paper-icon-button-light"], function ($, datetime, loading, libraryMenu) {
define(["jQuery", "datetime", "loading", "libraryMenu", "globalize", "listViewStyle", "paper-icon-button-light"], function ($, datetime, loading, libraryMenu, globalize) {
"use strict";
function populateRatings(allParentalRatings, page) {
@ -35,29 +35,29 @@ define(["jQuery", "datetime", "loading", "libraryMenu", "listViewStyle", "paper-
function loadUnratedItems(page, user) {
var items = [{
name: Globalize.translate("OptionBlockBooks"),
name: globalize.translate("OptionBlockBooks"),
value: "Book"
}, {
name: Globalize.translate("OptionBlockChannelContent"),
name: globalize.translate("OptionBlockChannelContent"),
value: "ChannelContent"
}, {
name: Globalize.translate("OptionBlockLiveTvChannels"),
name: globalize.translate("OptionBlockLiveTvChannels"),
value: "LiveTvChannel"
}, {
name: Globalize.translate("OptionBlockMovies"),
name: globalize.translate("OptionBlockMovies"),
value: "Movie"
}, {
name: Globalize.translate("OptionBlockMusic"),
name: globalize.translate("OptionBlockMusic"),
value: "Music"
}, {
name: Globalize.translate("OptionBlockTrailers"),
name: globalize.translate("OptionBlockTrailers"),
value: "Trailer"
}, {
name: Globalize.translate("OptionBlockTvShows"),
name: globalize.translate("OptionBlockTvShows"),
value: "Series"
}];
var html = "";
html += '<h3 class="checkboxListLabel">' + Globalize.translate("HeaderBlockItemsWithNoRating") + "</h3>";
html += '<h3 class="checkboxListLabel">' + globalize.translate("HeaderBlockItemsWithNoRating") + "</h3>";
html += '<div class="checkboxList paperList checkboxList-paperList">';
for (var i = 0, length = items.length; i < length; i++) {
@ -139,7 +139,7 @@ define(["jQuery", "datetime", "loading", "libraryMenu", "listViewStyle", "paper-
itemHtml += '<div class="liSchedule listItem" data-day="' + a.DayOfWeek + '" data-start="' + a.StartHour + '" data-end="' + a.EndHour + '">';
itemHtml += '<div class="listItemBody two-line">';
itemHtml += '<h3 class="listItemBodyText">';
itemHtml += Globalize.translate("Option" + a.DayOfWeek);
itemHtml += globalize.translate("Option" + a.DayOfWeek);
itemHtml += "</h3>";
itemHtml += '<div class="listItemBodyText secondary">' + getDisplayTime(a.StartHour) + " - " + getDisplayTime(a.EndHour) + "</div>";
itemHtml += "</div>";
@ -159,7 +159,7 @@ define(["jQuery", "datetime", "loading", "libraryMenu", "listViewStyle", "paper-
loading.hide();
require(["toast"], function (toast) {
toast(Globalize.translate("SettingsSaved"));
toast(globalize.translate("SettingsSaved"));
});
}
@ -226,7 +226,7 @@ define(["jQuery", "datetime", "loading", "libraryMenu", "listViewStyle", "paper-
function showBlockedTagPopup(page) {
require(["prompt"], function (prompt) {
prompt({
label: Globalize.translate("LabelTag")
label: globalize.translate("LabelTag")
}).then(function (value) {
var tags = getBlockedTagsFromPage(page);

View file

@ -1,4 +1,4 @@
define(["loading", "libraryMenu", "emby-button"], function (loading, libraryMenu) {
define(["loading", "libraryMenu", "globalize", "emby-button"], function (loading, libraryMenu, globalize) {
"use strict";
function loadUser(page, params) {
@ -79,7 +79,7 @@ define(["loading", "libraryMenu", "emby-button"], function (loading, libraryMenu
loading.hide();
require(["toast"], function (toast) {
toast(Globalize.translate("MessageSettingsSaved"));
toast(globalize.translate("MessageSettingsSaved"));
});
loadUser(view, params);
@ -102,15 +102,15 @@ define(["loading", "libraryMenu", "emby-button"], function (loading, libraryMenu
loading.hide();
require(["toast"], function (toast) {
toast(Globalize.translate("PasswordSaved"));
toast(globalize.translate("PasswordSaved"));
});
loadUser(view, params);
}, function () {
loading.hide();
Dashboard.alert({
title: Globalize.translate("HeaderLoginFailure"),
message: Globalize.translate("MessageInvalidUser")
title: globalize.translate("HeaderLoginFailure"),
message: globalize.translate("MessageInvalidUser")
});
});
}
@ -120,7 +120,7 @@ define(["loading", "libraryMenu", "emby-button"], function (loading, libraryMenu
if (form.querySelector("#txtNewPassword").value != form.querySelector("#txtNewPasswordConfirm").value) {
require(["toast"], function (toast) {
toast(Globalize.translate("PasswordMatchError"));
toast(globalize.translate("PasswordMatchError"));
});
} else {
loading.show();
@ -139,17 +139,17 @@ define(["loading", "libraryMenu", "emby-button"], function (loading, libraryMenu
}
function resetPassword() {
var msg = Globalize.translate("PasswordResetConfirmation");
var msg = globalize.translate("PasswordResetConfirmation");
require(["confirm"], function (confirm) {
confirm(msg, Globalize.translate("PasswordResetHeader")).then(function () {
confirm(msg, globalize.translate("PasswordResetHeader")).then(function () {
var userId = params.userId;
loading.show();
ApiClient.resetUserPassword(userId).then(function () {
loading.hide();
Dashboard.alert({
message: Globalize.translate("PasswordResetComplete"),
title: Globalize.translate("PasswordResetHeader")
message: globalize.translate("PasswordResetComplete"),
title: globalize.translate("PasswordResetHeader")
});
loadUser(view, params);
});
@ -158,17 +158,17 @@ define(["loading", "libraryMenu", "emby-button"], function (loading, libraryMenu
}
function resetEasyPassword() {
var msg = Globalize.translate("PinCodeResetConfirmation");
var msg = globalize.translate("PinCodeResetConfirmation");
require(["confirm"], function (confirm) {
confirm(msg, Globalize.translate("HeaderPinCodeReset")).then(function () {
confirm(msg, globalize.translate("HeaderPinCodeReset")).then(function () {
var userId = params.userId;
loading.show();
ApiClient.resetEasyPassword(userId).then(function () {
loading.hide();
Dashboard.alert({
message: Globalize.translate("PinCodeResetComplete"),
title: Globalize.translate("HeaderPinCodeReset")
message: globalize.translate("PinCodeResetComplete"),
title: globalize.translate("HeaderPinCodeReset")
});
loadUser(view, params);
});

View file

@ -33,7 +33,7 @@ define(["loading", "globalize", "dashboardcss", "emby-input", "emby-button", "em
if (form.querySelector("#txtManualPassword").value != form.querySelector("#txtPasswordConfirm").value) {
require(["toast"], function (toast) {
toast(Globalize.translate("PasswordMatchError"));
toast(globalize.translate("PasswordMatchError"));
});
} else {
submit(form);

View file

@ -1,4 +1,4 @@
define(["datetime", "jQuery", "material-icons"], function (datetime, $) {
define(["datetime", "jQuery", "globalize", "material-icons"], function (datetime, $, globalize) {
"use strict";
function getNode(item, folderState, selected) {
@ -70,7 +70,7 @@ define(["datetime", "jQuery", "material-icons"], function (datetime, $) {
var nodes = [];
nodes.push({
id: "MediaFolders",
text: Globalize.translate("HeaderMediaFolders"),
text: globalize.translate("HeaderMediaFolders"),
state: {
opened: true
},
@ -83,7 +83,7 @@ define(["datetime", "jQuery", "material-icons"], function (datetime, $) {
if (result.TotalRecordCount) {
nodes.push({
id: "livetv",
text: Globalize.translate("HeaderLiveTV"),
text: globalize.translate("HeaderLiveTV"),
state: {
opened: false
},

View file

@ -1,4 +1,4 @@
define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryBrowser", "emby-itemscontainer", "emby-button"], function (connectionManager, listView, cardBuilder, imageLoader, libraryBrowser) {
define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryBrowser", "globalize", "emby-itemscontainer", "emby-button"], function (connectionManager, listView, cardBuilder, imageLoader, libraryBrowser, globalize) {
"use strict";
function renderItems(page, item) {
@ -6,56 +6,56 @@ define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryB
if (item.ArtistCount) {
sections.push({
name: Globalize.translate("TabArtists"),
name: globalize.translate("TabArtists"),
type: "MusicArtist"
});
}
if (item.ProgramCount && "Person" == item.Type) {
sections.push({
name: Globalize.translate("HeaderUpcomingOnTV"),
name: globalize.translate("HeaderUpcomingOnTV"),
type: "Program"
});
}
if (item.MovieCount) {
sections.push({
name: Globalize.translate("TabMovies"),
name: globalize.translate("TabMovies"),
type: "Movie"
});
}
if (item.SeriesCount) {
sections.push({
name: Globalize.translate("TabShows"),
name: globalize.translate("TabShows"),
type: "Series"
});
}
if (item.EpisodeCount) {
sections.push({
name: Globalize.translate("TabEpisodes"),
name: globalize.translate("TabEpisodes"),
type: "Episode"
});
}
if (item.TrailerCount) {
sections.push({
name: Globalize.translate("TabTrailers"),
name: globalize.translate("TabTrailers"),
type: "Trailer"
});
}
if (item.AlbumCount) {
sections.push({
name: Globalize.translate("TabAlbums"),
name: globalize.translate("TabAlbums"),
type: "MusicAlbum"
});
}
if (item.MusicVideoCount) {
sections.push({
name: Globalize.translate("TabMusicVideos"),
name: globalize.translate("TabMusicVideos"),
type: "MusicVideo"
});
}
@ -74,7 +74,7 @@ define(["connectionManager", "listView", "cardBuilder", "imageLoader", "libraryB
html += '<h2 class="sectionTitle sectionTitle-cards padded-left">';
html += section.name;
html += "</h2>";
html += '<a is="emby-linkbutton" href="#" class="clearLink hide" style="margin-left:1em;vertical-align:middle;"><button is="emby-button" type="button" class="raised more raised-mini noIcon">' + Globalize.translate("ButtonMore") + "</button></a>";
html += '<a is="emby-linkbutton" href="#" class="clearLink hide" style="margin-left:1em;vertical-align:middle;"><button is="emby-button" type="button" class="raised more raised-mini noIcon">' + globalize.translate("ButtonMore") + "</button></a>";
html += "</div>";
html += '<div is="emby-itemscontainer" class="itemsContainer padded-left padded-right">';
html += "</div>";

View file

@ -1,4 +1,4 @@
define(["userSettings"], function (userSettings) {
define(["userSettings", "globalize"], function (userSettings, globalize) {
"use strict";
var libraryBrowser = {
@ -45,7 +45,7 @@ define(["userSettings"], function (userSettings) {
var menuItems = views.map(function (v) {
return {
name: Globalize.translate("Option" + v),
name: globalize.translate("Option" + v),
id: v,
selected: currentLayout == v
};
@ -83,7 +83,7 @@ define(["userSettings"], function (userSettings) {
if (html += '<div class="listPaging">', showControls) {
html += '<span style="vertical-align:middle;">';
html += Globalize.translate("ListPaging", (totalRecordCount ? startIndex + 1 : 0), recordsEnd, totalRecordCount);
html += globalize.translate("ListPaging", (totalRecordCount ? startIndex + 1 : 0), recordsEnd, totalRecordCount);
html += "</span>";
}
@ -96,15 +96,15 @@ define(["userSettings"], function (userSettings) {
}
if (options.addLayoutButton) {
html += '<button is="paper-icon-button-light" title="' + Globalize.translate("ButtonSelectView") + '" class="btnChangeLayout autoSize" data-layouts="' + (options.layouts || "") + '" onclick="LibraryBrowser.showLayoutMenu(this, \'' + (options.currentLayout || "") + '\');"><span class="material-icons view_comfy"></span></button>';
html += '<button is="paper-icon-button-light" title="' + globalize.translate("ButtonSelectView") + '" class="btnChangeLayout autoSize" data-layouts="' + (options.layouts || "") + '" onclick="LibraryBrowser.showLayoutMenu(this, \'' + (options.currentLayout || "") + '\');"><span class="material-icons view_comfy"></span></button>';
}
if (options.sortButton) {
html += '<button is="paper-icon-button-light" class="btnSort autoSize" title="' + Globalize.translate("ButtonSort") + '"><span class="material-icons sort_by_alpha"></span></button>';
html += '<button is="paper-icon-button-light" class="btnSort autoSize" title="' + globalize.translate("ButtonSort") + '"><span class="material-icons sort_by_alpha"></span></button>';
}
if (options.filterButton) {
html += '<button is="paper-icon-button-light" class="btnFilter autoSize" title="' + Globalize.translate("ButtonFilter") + '"><span class="material-icons filter_list"></span></button>';
html += '<button is="paper-icon-button-light" class="btnFilter autoSize" title="' + globalize.translate("ButtonFilter") + '"><span class="material-icons filter_list"></span></button>';
}
html += "</div>";
@ -154,7 +154,7 @@ define(["userSettings"], function (userSettings) {
var html = "";
html += '<div style="margin:0;padding:1.25em 1.5em 1.5em;">';
html += '<h2 style="margin:0 0 .5em;">';
html += Globalize.translate("HeaderSortBy");
html += globalize.translate("HeaderSortBy");
html += "</h2>";
var i;
var length;
@ -169,13 +169,13 @@ define(["userSettings"], function (userSettings) {
html += "</div>";
html += '<h2 style="margin: 1em 0 .5em;">';
html += Globalize.translate("HeaderSortOrder");
html += globalize.translate("HeaderSortOrder");
html += "</h2>";
html += "<div>";
isChecked = "Ascending" == options.query.SortOrder ? " checked" : "";
html += '<label class="radio-label-block"><input type="radio" is="emby-radio" name="SortOrder" value="Ascending" class="menuSortOrder" ' + isChecked + " /><span>" + Globalize.translate("OptionAscending") + "</span></label>";
html += '<label class="radio-label-block"><input type="radio" is="emby-radio" name="SortOrder" value="Ascending" class="menuSortOrder" ' + isChecked + " /><span>" + globalize.translate("OptionAscending") + "</span></label>";
isChecked = "Descending" == options.query.SortOrder ? " checked" : "";
html += '<label class="radio-label-block"><input type="radio" is="emby-radio" name="SortOrder" value="Descending" class="menuSortOrder" ' + isChecked + " /><span>" + Globalize.translate("OptionDescending") + "</span></label>";
html += '<label class="radio-label-block"><input type="radio" is="emby-radio" name="SortOrder" value="Descending" class="menuSortOrder" ' + isChecked + " /><span>" + globalize.translate("OptionDescending") + "</span></label>";
html += "</div>";
html += "</div>";
dlg.innerHTML = html;

View file

@ -1,4 +1,4 @@
define(["events", "userSettings", "serverNotifications", "connectionManager", "emby-button"], function (events, userSettings, serverNotifications, connectionManager) {
define(["events", "userSettings", "serverNotifications", "connectionManager", "globalize", "emby-button"], function (events, userSettings, serverNotifications, connectionManager, globalize) {
"use strict";
return function (options) {
@ -48,11 +48,11 @@ define(["events", "userSettings", "serverNotifications", "connectionManager", "e
var lastResult = task.LastExecutionResult ? task.LastExecutionResult.Status : '';
if (lastResult == "Failed") {
options.lastResultElem.html('<span style="color:#FF0000;">(' + Globalize.translate('LabelFailed') + ')</span>');
options.lastResultElem.html('<span style="color:#FF0000;">(' + globalize.translate('LabelFailed') + ')</span>');
} else if (lastResult == "Cancelled") {
options.lastResultElem.html('<span style="color:#0026FF;">(' + Globalize.translate('LabelCancelled') + ')</span>');
options.lastResultElem.html('<span style="color:#0026FF;">(' + globalize.translate('LabelCancelled') + ')</span>');
} else if (lastResult == "Aborted") {
options.lastResultElem.html('<span style="color:#FF0000;">' + Globalize.translate('LabelAbortedByServerShutdown') + '</span>');
options.lastResultElem.html('<span style="color:#FF0000;">' + globalize.translate('LabelAbortedByServerShutdown') + '</span>');
} else {
options.lastResultElem.html(lastResult);
}

View file

@ -1508,5 +1508,7 @@
"UnsupportedPlayback": "No es posible desencriptar contenido protegido mediante DRM; sin embargo se intentará su reproducción. Algunos archivos pueden aparecer completamente negros debido a encriptación u otras características no soportadas, como títulos interactivos.",
"YadifBob": "YADIF Bob",
"Yadif": "YADIF",
"MessageUnauthorizedUser": "No tiene autorización para acceder al servidor en este momento. Póngase en contacto con el administrador del servidor para obtener más información."
"MessageUnauthorizedUser": "No tiene autorización para acceder al servidor en este momento. Póngase en contacto con el administrador del servidor para obtener más información.",
"ButtonTogglePlaylist": "Lista de reproducción",
"ButtonToggleContextMenu": "Más"
}

View file

@ -106,7 +106,7 @@
"TabProfiles": "پروفایل ها",
"TabShows": "سریال ها",
"TabSongs": "آهنگ ها",
"TabSuggestions": "پیشنهادات",
"TabSuggestions": "پیشنهادها",
"TabUpcoming": "بزودی",
"TellUsAboutYourself": "در مورد خودتان به ما بگویید",
"ThisWizardWillGuideYou": "این عمل برای انجام تنظیمات به شما کمک می‌کند. برای شروع، لطفا زبان مورد نظر خود را انتخاب کنید.",
@ -641,5 +641,34 @@
"OptionPlainStorageFolders": "نمایش همه پوشه‌ها به عنوان پوشه‌های ذخیره سازی ساده",
"OptionParentalRating": "رتبه بندی والدین",
"OptionOnInterval": "در یک فاصله",
"BookLibraryHelp": "کتاب‌های صوتی و متنی پشتیبانی می‌شوند. {0}راهنمای نامگذاری کتاب{1} را مرور کنید."
"BookLibraryHelp": "کتاب‌های صوتی و متنی پشتیبانی می‌شوند. {0}راهنمای نامگذاری کتاب{1} را مرور کنید.",
"TabInfo": "اطلاعات",
"TabGuide": "راهنما",
"TabFavorites": "مورد علاقه‌ها",
"TabDisplay": "نمایش",
"TabDirectPlay": "پخش مستقیم",
"TabDevices": "دستگاه‌ها",
"TabDashboard": "داشبورد",
"TabCollections": "مجموعه‌ها",
"TabCodecs": "کدک‌ها",
"TabChannels": "کانال‌ها",
"TabCatalog": "فهرست",
"TV": "تلویزیون",
"Sunday": "یکشنبه",
"TabTranscoding": "کدگذاری",
"TabTrailers": "تریلرها",
"Suggestions": "پیشنهادها",
"Subtitles": "زیرنویس‌ها",
"Studios": "استودیو‌ها",
"StopRecording": "توقف ضبط",
"Sports": "ورزش‌ها",
"SortName": "مرتب سازی نام",
"SortChannelsBy": "مرتب سازی کانال‌ها بر اساس:",
"SortByValue": "مرتب شده بر اساس {0}",
"Sort": "مرتب سازی",
"Smart": "باهوش",
"Smaller": "کوچکتر",
"Small": "کوچک",
"ButtonTogglePlaylist": "لیست پخش",
"ButtonToggleContextMenu": "بیشتر"
}

View file

@ -23,11 +23,11 @@
"AllowMediaConversion": "Autoriser la conversion des médias",
"AllowMediaConversionHelp": "Autoriser ou refuser l'accès à la fonctionnalité de conversion des médias.",
"AllowOnTheFlySubtitleExtraction": "Autoriser l'extraction des sous-titres à la volée",
"AllowOnTheFlySubtitleExtractionHelp": "Les sous-titres intégrés peuvent être extraits des vidéos et distribués aux clients au format texte pour éviter le transcodage. Sur certains systèmes, cela peut prendre du temps et arrêter la lecture de la vidéo pendant le processus d'extraction. Désactivez cette option pour graver les sous-titres avec un transcodage quand l'appareil ne les prend pas en charge nativement.",
"AllowOnTheFlySubtitleExtractionHelp": "Les sous-titres intégrés peuvent être extraits des vidéos et distribués aux clients au format texte pour éviter le transcodage. Sur certains systèmes, cela peut prendre du temps et arrêter la lecture de la vidéo pendant le processus d'extraction. Désactivez cette option pour graver les sous-titres avec un transcodage quand l'appareil client ne les prend pas en charge nativement.",
"AllowRemoteAccess": "Autoriser les connexions distantes à ce serveur Jellyfin.",
"AllowRemoteAccessHelp": "Si l'option est désactivée, toutes les connexions distantes seront bloquées.",
"AllowedRemoteAddressesHelp": "Liste d'adresses IP ou d'IP/masque de sous-réseau séparées par des virgules qui seront autorisées à se connecter à distance. Si la liste est vide, toutes les adresses distantes seront autorisées.",
"AlwaysPlaySubtitles": "Toujours lancer les sous-titres",
"AlwaysPlaySubtitles": "Toujours afficher les sous-titres",
"AlwaysPlaySubtitlesHelp": "Les sous-titres correspondant à la préférence linguistique seront chargés indépendamment de la langue de l'audio.",
"AnyLanguage": "N'importe quel langage",
"Anytime": "N'importe quand",
@ -100,7 +100,7 @@
"ButtonRemove": "Supprimer",
"ButtonRename": "Renommer",
"ButtonRepeat": "Répéter",
"ButtonResetEasyPassword": "Réinitialiser le code Easy PIN",
"ButtonResetEasyPassword": "Réinitialiser le code easy PIN",
"ButtonResetPassword": "Réinitialiser le mot de passe",
"ButtonRestart": "Redémarrer",
"ButtonResume": "Reprendre",
@ -1399,7 +1399,7 @@
"AuthProviderHelp": "Sélectionner un fournisseur d'authentification pour authentifier le mot de passe de cet utilisateur.",
"PasswordResetProviderHelp": "Choisissez un Fournisseur de réinitialisation de mot de passe à utiliser lorsqu'un utilisateur demande la réinitialisation de son mot de passe",
"HeaderHome": "Accueil",
"LabelUserLoginAttemptsBeforeLockout": "Tentatives de connexion échouées avant que l'utilisateur ne soit verrouillé:",
"LabelUserLoginAttemptsBeforeLockout": "Tentatives de connexion échouées avant que l'utilisateur ne soit verrouillé:",
"DashboardOperatingSystem": "Système d'Exploitation: {0}",
"DashboardArchitecture": "Architecture : {0}",
"LaunchWebAppOnStartup": "Démarrer l'interface web dans mon navigateur quand le serveur est démarré",
@ -1465,7 +1465,7 @@
"LabelCorruptedFrames": "Images corrompues:",
"CopyStreamURLError": "Une erreur est survenue lors de la copie de l'URL.",
"AskAdminToCreateLibrary": "Demander à un administrateur de créer une médiathèque.",
"AllowFfmpegThrottlingHelp": "Quand le transcodage ou le remultiplexage est suffisamment loin de la position de lecture, le processus se mettra en pause afin déconomiser des ressources. Plus utile lors dune lecture continue. À désactiver en cas de problèmes de lecture.",
"AllowFfmpegThrottlingHelp": "Quand le transcodage ou le remultiplexage est suffisamment en avant de la position de lecture, le processus se mettra en pause afin déconomiser des ressources. Plus utile lors dune lecture continue. À désactiver en cas de problèmes de lecture.",
"AllowFfmpegThrottling": "Adapter la vitesse du transcodage",
"NoCreatedLibraries": "Il semble que vous n'ayez pas encore créé de bibliothèques. {0}Voulez-vous en créer une maintenant ?{1}",
"PlaybackErrorNoCompatibleStream": "Ce client n'est pas compatible avec le média et le serveur n'envoie pas de format compatible.",
@ -1502,5 +1502,7 @@
"LabelLibraryPageSize": "Taille de la page de la médiathèque :",
"LabelLibraryPageSizeHelp": "Définit la quantité d'éléments à afficher sur une page de médiathèque. Définir à 0 afin de désactiver la pagination.",
"UnsupportedPlayback": "Jellyfin ne peut pas décoder du contenu protégé par un système de gestion des droits numériques, mais une tentative de lecture sera effectuée sur tout le contenu, y compris les titres protégés. Certains fichiers peuvent apparaître complètement noir, du fait de protections ou de fonctionnalités non supportées, comme les titres interactifs.",
"MessageUnauthorizedUser": "Vous n'êtes pas autorisé à accéder au serveur pour le moment. Veuillez contacter l'administrateur de votre serveur pour plus d'informations."
"MessageUnauthorizedUser": "Vous n'êtes pas autorisé à accéder au serveur pour le moment. Veuillez contacter l'administrateur de votre serveur pour plus d'informations.",
"ButtonTogglePlaylist": "Liste de lecture",
"ButtonToggleContextMenu": "Plus"
}

View file

@ -1506,5 +1506,7 @@
"YadifBob": "YADIF Bob",
"Yadif": "YADIF",
"ReleaseGroup": "Kiadócsoport",
"MessageUnauthorizedUser": "Jelenleg nincs jogosultságod a szerverhez való hozzáféréshez. Kérjük, lépj kapcsolatba az adminisztrátorral további információkért!"
"MessageUnauthorizedUser": "Jelenleg nincs jogosultságod a szerverhez való hozzáféréshez. Kérjük, lépj kapcsolatba az adminisztrátorral további információkért!",
"ButtonTogglePlaylist": "Lejátszási listák",
"ButtonToggleContextMenu": "Továbbiak"
}

View file

@ -1500,5 +1500,7 @@
"UnsupportedPlayback": "Jellyfin nu poate decripta conținut protejat de DRM, dar tot conținutul va fi încercat indiferent de titlurile protejate. Unele fișiere pot părea complet negre din cauza criptării sau a altor funcții neacceptate, cum ar fi titluri interactive.",
"LabelLibraryPageSizeHelp": "Setează cantitatea de elemente de afișat pe o pagină a bibliotecii. Setați la 0 pentru a dezactiva paginarea.",
"LabelLibraryPageSize": "Mărimea paginii Bibliotecă:",
"MessageUnauthorizedUser": "Nu sunteți autorizat să accesați serverul în acest moment. Vă rugăm să contactați administratorul serverului pentru mai multe informații."
"MessageUnauthorizedUser": "Nu sunteți autorizat să accesați serverul în acest moment. Vă rugăm să contactați administratorul serverului pentru mai multe informații.",
"ButtonTogglePlaylist": "Listă de redare",
"ButtonToggleContextMenu": "Mai mult"
}