Merge branch 'master' into Razer_Chroma_Support

# Conflicts:
#	assets/webconfig/i18n/en.json
#	assets/webconfig/js/content_leds.js
#	libsrc/leddevice/dev_net/ProviderRestApi.cpp
#	libsrc/leddevice/dev_net/ProviderRestApi.h
This commit is contained in:
LordGrey 2021-11-01 15:40:37 +01:00
commit bf11b7dc1b
474 changed files with 24405 additions and 24526 deletions

View File

@ -1,14 +1,8 @@
#!/bin/bash
# detect CI
if [ "$SYSTEM_COLLECTIONID" != "" ]; then
# Azure Pipelines
echo "Azure detected"
CI_NAME="$(echo "$AGENT_OS" | tr '[:upper:]' '[:lower:]')"
CI_BUILD_DIR="$BUILD_SOURCESDIRECTORY"
elif [ "$HOME" != "" ]; then
if [ "$HOME" != "" ]; then
# GitHub Actions
echo "Github Actions detected"
CI_NAME="$(uname -s | tr '[:upper:]' '[:lower:]')"
CI_BUILD_DIR="$GITHUB_WORKSPACE"
else

View File

@ -1,11 +1,7 @@
#!/bin/bash
# detect CI
if [ "$SYSTEM_COLLECTIONID" != "" ]; then
# Azure Pipelines
CI_NAME="$(echo "$AGENT_OS" | tr '[:upper:]' '[:lower:]')"
CI_BUILD_DIR="$BUILD_SOURCESDIRECTORY"
elif [ "$HOME" != "" ]; then
if [ "$HOME" != "" ]; then
# GitHub Actions
CI_NAME="$(uname -s | tr '[:upper:]' '[:lower:]')"
CI_BUILD_DIR="$GITHUB_WORKSPACE"
@ -19,12 +15,15 @@ function installAndUpgrade()
arr=("$@")
for i in "${arr[@]}";
do
list_output=`brew list | grep $i`
list_output=`brew list --formula | grep $i`
outdated_output=`brew outdated | grep $i`
if [[ ! -z "$list_output" ]]; then
if [[ ! -z "$outdated_output" ]]; then
echo "Outdated package: ${outdated_output}"
brew unlink ${outdated_output}
brew upgrade $i
brew link --overwrite $i
fi
else
brew install $i

1
.github/FUNDING.yml vendored Normal file
View File

@ -0,0 +1 @@
custom: "https://www.paypal.me/HyperionAmbi"

View File

@ -1,17 +1,20 @@
PullRequest:
opened: |
Hello @$AUTHOR :wave:
Hello @$AUTHOR :wave:
I'm your friendly neighborhood bot and would like to say thank you for
submitting a pull request to Hyperion!
I'm the Hyperion Project Bot and I want to thank you for
contributing to Hyperion with your pull requests!
So that you and other users can test your changes more quickly,
you can find your workflow artifacts [here](https://github.com/$REPO_FULL_NAME/actions/runs/$RUN_ID).
To help you and other users test your pull requests faster,
I'll create a link for you to your workflow artifacts.
If you make changes to your PR, i create a new link to your workflow artifacts.
:link: https://github.com/$REPO_FULL_NAME/actions/runs/$RUN_ID
Of course, if you make changes to your PR, I will create a new link.
Best regards,
Hyperion-Project
Hyperion Project
synchronize: |
[Here](https://github.com/$REPO_FULL_NAME/actions/runs/$RUN_ID) is your new link to your workflow artifacts.
Hey @$AUTHOR I created a new link to your workflow artifacts:
:link: https://github.com/$REPO_FULL_NAME/actions/runs/$RUN_ID

82
.github/workflows/apt.json vendored Normal file
View File

@ -0,0 +1,82 @@
{
"include":
[
{
"distribution": "Bionic",
"architecture": "amd64",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, zlib1g-dev, libmbedtls-dev",
"package-depends": "libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls10, libturbojpeg, libcec4",
"description": "Ubuntu 18.04 (Bionic Beaver) (amd64)"
},
{
"distribution": "Focal",
"architecture": "amd64",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, zlib1g-dev, libmbedtls-dev",
"package-depends": "libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls12, libturbojpeg, libcec4",
"description": "Ubuntu 20.04 (Focal Fossa) (amd64)"
},
{
"distribution": "Groovy",
"architecture": "amd64",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, zlib1g-dev, libmbedtls-dev",
"package-depends": "libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls12, libturbojpeg, libcec6",
"description": "Ubuntu 20.10 (Groovy Gorilla) (amd64)"
},
{
"distribution": "Hirsute",
"architecture": "amd64",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, zlib1g-dev, libmbedtls-dev",
"package-depends": "libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls12, libturbojpeg, libcec6",
"description": "Ubuntu 21.04 (Hirsute Hippo) (amd64)"
},
{
"distribution": "Impish",
"architecture": "amd64",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, zlib1g-dev, libmbedtls-dev",
"package-depends": "libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls12, libturbojpeg, libcec6",
"description": "Ubuntu 21.10 (Impish Indri) (amd64)"
},
{
"distribution": "Stretch",
"architecture": "amd64",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl1.0-dev, zlib1g-dev, libmbedtls-dev",
"package-depends": "libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls10, libturbojpeg0, libcec4",
"description": "Debian 9.x (Stretch) (amd64)"
},
{
"distribution": "Stretch",
"architecture": "armhf",
"build-depends": "git, cmake, python3-dev, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, build-essential, libusb-1.0-0-dev, libcec-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, zlib1g-dev, libssl1.0-dev, libraspberrypi-dev, libturbojpeg0-dev, libmbedtls-dev",
"package-depends": "libqt5widgets5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls10, libturbojpeg0, libcec4",
"description":"Debian 9.x (Stretch) (armhf)"
},
{
"distribution": "Buster",
"architecture": "amd64",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, zlib1g-dev, libmbedtls-dev",
"package-depends": "libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls12, libturbojpeg0, libcec4",
"description": "Debian 10.x (Buster) (amd64)"
},
{
"distribution": "Buster",
"architecture": "armhf",
"build-depends": "git, cmake, python3-dev, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, build-essential, libusb-1.0-0-dev, libcec-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, zlib1g-dev, libssl1.0-dev, libraspberrypi-dev, libturbojpeg0-dev, libmbedtls-dev",
"package-depends": "libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls12, libturbojpeg0, libcec4",
"description": "Debian 10.x (Buster) (armhf)"
},
{
"distribution": "Bullseye",
"architecture": "amd64",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, zlib1g-dev, libmbedtls-dev",
"package-depends": "libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls12, libturbojpeg0, libcec6",
"description": "Debian 11.x (Bullseye) (amd64)"
},
{
"distribution": "Bullseye",
"architecture": "armhf",
"build-depends": "git, cmake, python3-dev, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, build-essential, libusb-1.0-0-dev, libcec-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, zlib1g-dev, libssl1.0-dev, libraspberrypi-dev, libturbojpeg0-dev, libmbedtls-dev",
"package-depends": "libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls12, libturbojpeg0, libcec6",
"description": "Debian 11.x (Bullseye) (armhf)"
}
]
}

111
.github/workflows/apt.yml vendored Normal file
View File

@ -0,0 +1,111 @@
name: Hyperion APT Build
on: [workflow_call]
jobs:
setup:
name: Setup APT build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set APT matrix
id: apt-ppa
run: |
APT=$(echo $(cat .github/workflows/apt.json) | jq --compact-output .)
echo "::set-output name=apt::$APT"
outputs:
apt-matrix: ${{ steps.apt-ppa.outputs.apt }}
build:
name: ${{ matrix.description }}
needs: [setup]
runs-on: ubuntu-latest
strategy:
matrix: ${{ fromJson(needs.setup.outputs.apt-matrix) }}
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Generate environment variables
run: |
tr -d '\n' < .version > temp && mv temp .version
VERSION=$(cat .version)
echo VERSION=${VERSION} >> $GITHUB_ENV
echo STANDARDS_VERSION=$(echo ${VERSION%+*}) >> $GITHUB_ENV
echo DISTRIBUTION=$(echo ${{ matrix.distribution }} | tr '[:upper:]' '[:lower:]') >> $GITHUB_ENV
- name: Build package
shell: bash
run: |
mkdir -p "${GITHUB_WORKSPACE}/deploy"
docker run --rm \
-v "${GITHUB_WORKSPACE}/deploy:/deploy" \
-v "${GITHUB_WORKSPACE}:/source:rw" \
ghcr.io/hyperion-project/${{ matrix.architecture }}:${{ env.DISTRIBUTION }} \
/bin/bash -c "cd /source && \
mkdir -p debian/source && echo '3.0 (native)' > debian/source/format && \
dch --create --distribution ${{ env.DISTRIBUTION }} --package 'hyperion' -v '${{ env.VERSION }}~${{ env.DISTRIBUTION }}' '${{ github.event.commits[0].message }}' && \
cp -fr LICENSE debian/copyright && \
sed 's/@BUILD_DEPENDS@/${{ matrix.build-depends }}/g; s/@DEPENDS@/${{ matrix.package-depends }}/g; s/@ARCHITECTURE@/${{ matrix.architecture }}/g; s/@STANDARDS_VERSION@/${{ env.STANDARDS_VERSION }}/g' debian/control.in > debian/control && \
tar -cJf ../hyperion_${{ env.VERSION }}~${{ env.DISTRIBUTION }}.orig.tar.xz . && \
debuild --no-lintian -uc -us && \
cp ../hyperion_* /deploy"
- name: Upload package artifact
if: startsWith(github.event.ref, 'refs/tags')
uses: actions/upload-artifact@v2
with:
path: deploy
retention-days: 1
publish:
name: Publish APT packages
if: startsWith(github.event.ref, 'refs/tags')
needs: [setup, build]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Import GPG key
uses: crazy-max/ghaction-import-gpg@v3.1.0
with:
gpg-private-key: ${{ secrets.APT_GPG }}
- name: Install reprepro
run: sudo apt -y install reprepro
- name: Make build folders, export public GPG key and copy distributions file
run: |
mkdir -p apt/{conf,dists,db}
gpg --armor --output apt/hyperion.pub.key --export 'admin@hyperion-project.org'
cp debian/distributions apt/conf/distributions
- name: Create initial structure/packages files and symbolic links
run: |
reprepro -Vb apt createsymlinks
reprepro -Vb apt export
- name: Download artifacts
uses: actions/download-artifact@v2.0.10
- name: Include artifacts into the package source
run: |
for file in artifact/*.deb; do
if [ -f "$file" ]; then
dist=${file#*~}
dist=${dist%_*}
reprepro -Vb apt/ includedeb "$dist" "$file"
fi
done
- name: Upload packages to APT server (DRAFT)
uses: SamKirkland/FTP-Deploy-Action@4.1.0
with:
server: apt.hyperion-project.org
username: ${{ secrets.APT_USER }}
password: ${{ secrets.APT_PASSWORD }}
local-dir: "./apt/"
server-dir: ${{ secrets.APT_DRAFT }}
dangerous-clean-slate: true

View File

@ -1,5 +1,6 @@
name: Clean artifacts
# Run cleanup workflow at the end of every day
on:
schedule:
- cron: '0 0 * * *'

139
.github/workflows/nightly.yml vendored Normal file
View File

@ -0,0 +1,139 @@
name: Nightly build
# Create nightly builds at the end of every day
on:
schedule:
- cron: '0 0 * * *'
jobs:
check:
name: Compare local <-> nightly
if: github.repository_owner == 'hyperion-project'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Check if commit has changed
id: build-necessary
run: |
if wget --spider "https://nightly.apt.hyperion-project.org/$(git rev-parse --short HEAD)" 2>/dev/null; then
echo "::set-output name=commit-has-changed::false"
else
echo "::set-output name=commit-has-changed::true"
fi
outputs:
build-nightly: ${{ steps.build-necessary.outputs.commit-has-changed }}
setup:
name: Setup nightly build
needs: [check]
if: ${{ needs.check.outputs.build-nightly == 'true' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set nightly matrix
id: nightly-ppa
run: |
NIGHTLY=$(echo $(cat .github/workflows/apt.json) | jq --compact-output .)
echo "::set-output name=nightly::$NIGHTLY"
outputs:
nightly-matrix: ${{ steps.nightly-ppa.outputs.nightly }}
build:
name: ${{ matrix.description }}
needs: [setup]
runs-on: ubuntu-latest
strategy:
matrix: ${{ fromJson(needs.setup.outputs.nightly-matrix) }}
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Generate environment variables
run: |
echo "$(tr -d '\n' < .version)+nightly$(date '+%Y%m%d')$(git rev-parse --short HEAD)" > .version
VERSION=$(cat .version)
echo VERSION=${VERSION} >> $GITHUB_ENV
echo STANDARDS_VERSION=$(echo ${VERSION%+*}) >> $GITHUB_ENV
echo DISTRIBUTION=$(echo ${{ matrix.distribution }} | tr '[:upper:]' '[:lower:]') >> $GITHUB_ENV
- name: Build package
shell: bash
run: |
mkdir -p "${GITHUB_WORKSPACE}/deploy"
docker run --rm \
-v "${GITHUB_WORKSPACE}/deploy:/deploy" \
-v "${GITHUB_WORKSPACE}:/source:rw" \
ghcr.io/hyperion-project/${{ matrix.architecture }}:${{ env.DISTRIBUTION }} \
/bin/bash -c "cd /source && \
mkdir -p debian/source && echo '3.0 (native)' > debian/source/format && \
dch --create --distribution ${{ env.DISTRIBUTION }} --package 'hyperion' -v '${{ env.VERSION }}~${{ env.DISTRIBUTION }}' '${{ github.event.commits[0].message }}' && \
cp -fr LICENSE debian/copyright && \
sed 's/@BUILD_DEPENDS@/${{ matrix.build-depends }}/g; s/@DEPENDS@/${{ matrix.package-depends }}/g; s/@ARCHITECTURE@/${{ matrix.architecture }}/g; s/@STANDARDS_VERSION@/${{ env.STANDARDS_VERSION }}/g' debian/control.in > debian/control && \
tar -cJf ../hyperion_${{ env.VERSION }}~${{ env.DISTRIBUTION }}.orig.tar.xz . && \
debuild --no-lintian -uc -us && \
cp ../hyperion_* /deploy"
- name: Upload package artifact
uses: actions/upload-artifact@v2.2.4
with:
path: deploy
retention-days: 1
publish:
name: Publish nightly packages
needs: [setup, build]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Import GPG key
uses: crazy-max/ghaction-import-gpg@v3.1.0
with:
gpg-private-key: ${{ secrets.APT_GPG }}
- name: Install reprepro
run: sudo apt -y install reprepro
- name: Make build folders, export public GPG key, copy distributions file and create short sha file for nightly build check
run: |
mkdir -p nightly/{conf,dists,db}
gpg --armor --output nightly/hyperion.pub.key --export 'admin@hyperion-project.org'
cp debian/distributions nightly/conf/distributions
touch "nightly/$(git rev-parse --short HEAD)"
- name: Create initial structure/packages files and symbolic links
run: |
reprepro -Vb nightly createsymlinks
reprepro -Vb nightly export
- name: Download artifacts
uses: actions/download-artifact@v2.0.10
- name: Include artifacts into the package source
run: |
for file in artifact/*.deb; do
if [ -f "$file" ]; then
dist=${file#*~}
dist=${dist%_*}
reprepro -Vb nightly/ includedeb "$dist" "$file"
fi
done
- name: Upload packages to nightly server
uses: SamKirkland/FTP-Deploy-Action@4.1.0
with:
server: nightly.apt.hyperion-project.org
username: ${{ secrets.NIGHTLY_USER }}
password: ${{ secrets.NIGHTLY_PASSWORD }}
local-dir: "./nightly/"
server-dir: "./"
dangerous-clean-slate: true
- name: Remove intermediate artifacts
uses: geekyeggo/delete-artifact@v1
with:
name: artifact
failOnError: false

View File

@ -36,12 +36,12 @@ jobs:
with:
submodules: true
# Append PR number to version
# Append PR number to .version
- name: Append PR number to version
shell: bash
run: |
tr -d '\n' < version > temp && mv temp version
echo -n -PR#${{ github.event.pull_request.number }} >> version
tr -d '\n' < .version > temp && mv temp .version
echo -n "+PR${{ github.event.pull_request.number }}" >> .version
# Build packages
- name: Build packages
@ -63,7 +63,7 @@ jobs:
# Upload artifacts
- name: Upload artifacts
uses: actions/upload-artifact@v1
uses: actions/upload-artifact@v2
with:
name: ${{ matrix.dockerImage }}
path: ${{ matrix.dockerImage }}
@ -82,12 +82,12 @@ jobs:
with:
submodules: true
# Append PR number to version
# Append PR number to .version
- name: Append PR number to version
shell: bash
run: |
tr -d '\n' < version > temp && mv temp version
echo -n "-PR#${{ github.event.pull_request.number }}" >> version
tr -d '\n' < .version > temp && mv temp .version
echo -n "+PR${{ github.event.pull_request.number }}" >> .version
# Install dependencies
- name: Install dependencies
@ -106,11 +106,11 @@ jobs:
shell: bash
run: |
mkdir -p macOS
mv build/*.tar.gz macOS
mv build/*.dmg macOS
# Upload artifacts
- name: Upload artifacts
uses: actions/upload-artifact@v1
uses: actions/upload-artifact@v2
with:
name: macOS
path: macOS
@ -131,12 +131,12 @@ jobs:
with:
submodules: true
# Append PR number to version
# Append PR number to .version
- name: Append PR number to version
shell: bash
run: |
tr -d '\n' < version > temp && mv temp version
echo -n "-PR#${{ github.event.pull_request.number }}" >> version
tr -d '\n' < .version > temp && mv temp .version
echo -n "+PR${{ github.event.pull_request.number }}" >> .version
- name: Cache Qt
uses: actions/cache@v2
@ -170,6 +170,11 @@ jobs:
run: |
choco install --no-progress python nsis openssl directx-sdk -y
- name: Install libjpeg-turbo
run: |
Invoke-WebRequest https://netcologne.dl.sourceforge.net/project/libjpeg-turbo/2.0.6/libjpeg-turbo-2.0.6-vc64.exe -OutFile libjpeg-turbo.exe -UserAgent NativeHost
.\libjpeg-turbo /S
- name: Set up x64 build architecture environment
shell: cmd
run: call "${{env.VCINSTALLDIR}}\Auxiliary\Build\vcvars64.bat"
@ -190,34 +195,15 @@ jobs:
# Upload artifacts
- name: Upload artifacts
uses: actions/upload-artifact@v1
uses: actions/upload-artifact@v2
with:
name: windows
path: windows
######################
#### Documentation ###
######################
##########################
###### APT workflow ######
##########################
docs:
name: Documentation
runs-on: ubuntu-latest
defaults:
run:
working-directory: docs
steps:
- name: Checkout
uses: actions/checkout@v2
# Install dependencies
- name: Setup node 12
uses: actions/setup-node@v1
with:
node-version: '12'
# Build Docs
- name: Build docs
run: |
npm install -g yarn
yarn install
yarn docs:build
apt_build:
name: APT Build
uses: hyperion-project/hyperion.ng/.github/workflows/apt.yml@master

View File

@ -1,17 +1,16 @@
name: Hyperion CI Build
on:
push:
branches-ignore:
- 'gh-pages'
- 'docker-ci'
branches:
- '**'
tags:
- '*'
jobs:
######################
###### Linux #########
######################
###################
###### Linux ######
###################
Linux:
name: ${{ matrix.dockerName }}
@ -38,7 +37,7 @@ jobs:
with:
submodules: true
# build process
# Build process
- name: Build packages
env:
DOCKER_IMAGE: ${{ matrix.dockerImage }}
@ -48,16 +47,16 @@ jobs:
shell: bash
run: ./.ci/ci_build.sh
# upload artifacts (only on tagged commit)
# Upload artifacts (only on tagged commit)
- name: Upload artifacts
if: startsWith(github.event.ref, 'refs/tags')
uses: actions/upload-artifact@v2
with:
path: deploy/Hyperion-*
######################
###### macOS #########
######################
###################
###### macOS ######
###################
macOS:
name: macOS
@ -67,28 +66,28 @@ jobs:
with:
submodules: true
# install dependencies
# Install dependencies
- name: Install dependencies
shell: bash
run: ./.ci/ci_install.sh
# build process
# Build process
- name: Build packages
env:
PLATFORM: osx
shell: bash
run: ./.ci/ci_build.sh
# upload artifacts (only on tagged commit)
# Upload artifacts (only on tagged commit)
- name: Upload artifacts
if: startsWith(github.event.ref, 'refs/tags')
uses: actions/upload-artifact@v2
with:
path: build/Hyperion-*
######################
###### Windows #######
######################
#####################
###### Windows ######
#####################
windows:
name: Windows
@ -134,6 +133,11 @@ jobs:
run: |
choco install --no-progress python nsis openssl directx-sdk -y
- name: Install libjpeg-turbo
run: |
Invoke-WebRequest https://netcologne.dl.sourceforge.net/project/libjpeg-turbo/2.0.6/libjpeg-turbo-2.0.6-vc64.exe -OutFile libjpeg-turbo.exe -UserAgent NativeHost
.\libjpeg-turbo /S
- name: Set up x64 build architecture environment
shell: cmd
run: call "${{env.VCINSTALLDIR}}\Auxiliary\Build\vcvars64.bat"
@ -145,74 +149,32 @@ jobs:
shell: bash
run: ./.ci/ci_build.sh
# upload artifacts (only on tagged commit)
# Upload artifacts (only on tagged commit)
- name: Upload artifacts
if: startsWith(github.event.ref, 'refs/tags')
uses: actions/upload-artifact@v2
with:
path: build/Hyperion-*
retention-days: 1
######################
#### Documentation ###
######################
#####################################
###### Publish GitHub Releases ######
#####################################
Docs:
name: Documentation
runs-on: ubuntu-latest
defaults:
run:
working-directory: docs
steps:
- name: Checkout
uses: actions/checkout@v2
# Install dependencies
- name: Setup node 12
uses: actions/setup-node@v1
with:
node-version: '12'
# Build Docs
- name: Build docs
run: |
cd docs
npm install -g yarn
yarn install
yarn docs:build
# Deploy to gh-pages (only on tagged commit)
- name: Deploy to gh-pages
if: startsWith(github.event.ref, 'refs/tags')
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./docs/dist
cname: docs.hyperion-project.org
################################
###### Publish Releases ########
################################
publish:
name: Publish Releases
github_publish:
name: Publish GitHub Releases
if: startsWith(github.event.ref, 'refs/tags')
needs: [Linux, macOS, windows, Docs]
needs: [Linux, macOS, windows]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
# generate environment variables
- name: Generate environment variables from version and tag
# Generate environment variables
- name: Generate environment variables from .version and tag
run: |
echo "TAG=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV
echo "VERSION=$(tr -d '\n' < version)" >> $GITHUB_ENV
echo "preRelease=false" >> $GITHUB_ENV
# If version contains alpha or beta, mark draft release as pre-release
- name: Mark release as pre-release
if: contains(env.VERSION, 'alpha') || contains(env.VERSION, 'beta')
run: echo "preRelease=true" >> $GITHUB_ENV
echo "VERSION=$(tr -d '\n' < .version)" >> $GITHUB_ENV
# Download artifacts from previous build process
- name: Download artifacts
@ -220,7 +182,7 @@ jobs:
with:
path: artifacts
# create draft release and upload artifacts
# Create draft release and upload artifacts
- name: Create draft release
uses: softprops/action-gh-release@v1
with:
@ -228,6 +190,14 @@ jobs:
tag_name: ${{ env.TAG }}
files: "artifacts/**"
draft: true
prerelease: ${{ env.preRelease }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
##########################
###### APT workflow ######
##########################
apt_build:
name: APT Build
needs: [Linux, macOS, windows]
uses: hyperion-project/hyperion.ng/.github/workflows/apt.yml@master

View File

@ -5,11 +5,12 @@ on:
jobs:
hyperbian:
name: Let HyperBian create
runs-on: ubuntu-latest
steps:
# Dispatch event to build new HyperBian image
- name: Dispatch HyperBian build
uses: peter-evans/repository-dispatch@v1
uses: peter-evans/repository-dispatch@v1.1.3
if: ${{ github.repository_owner == 'hyperion-project'}}
with:
repository: hyperion-project/HyperBian

8
.gitignore vendored
View File

@ -27,5 +27,11 @@ libsrc/flatbufserver/hyperion_request_generated.h
*.kdev*
# Visual Studio 2015/2017/2019 cache/options directory
.vs/
# Ignore
.vs/*
CMakeSettings.json
# Allow
!.vs/launch.vs.json
# LedDevice 'File' output
NULL

27
.lgtm.yml Normal file
View File

@ -0,0 +1,27 @@
extraction:
cpp:
prepare:
packages:
- "git"
- "cmake"
- "build-essential"
- "qtbase5-dev"
- "libqt5serialport5-dev"
- "libqt5sql5-sqlite"
- "libqt5svg5-dev"
- "libqt5x11extras5-dev"
- "libusb-1.0-0-dev"
- "python3-dev"
- "libcec-dev"
- "libxcb-image0-dev"
- "libxcb-util0-dev"
- "libxcb-shm0-dev"
- "libxcb-render0-dev"
- "libxcb-randr0-dev"
- "libxrandr-dev"
- "libxrender-dev"
- "libavahi-core-dev"
- "libavahi-compat-libdnssd-dev"
- "libturbojpeg0-dev"
- "libssl-dev"
- "zlib1g-dev"

1
.version Normal file
View File

@ -0,0 +1 @@
2.0.12

17
.vs/launch.vs.json Normal file
View File

@ -0,0 +1,17 @@
{
"version": "0.2.1",
"defaults": {},
"configurations": [
{
"type": "default",
"project": "CMakeLists.txt",
"projectTarget": "hyperiond.exe (bin\\hyperiond.exe)",
"name": "Run hyperion with debug option and external console",
"args": [
"-d",
"-c"
],
"externalConsole": true
}
]
}

16
.vscode/launch.json vendored
View File

@ -27,12 +27,24 @@
"name": "(Windows) hyperiond",
"type": "cppvsdbg",
"request": "launch",
"program": "${workspaceFolder}/build/bin/Debug/hyperiond.exe",
"program": "${command:cmake.launchTargetDirectory}/hyperiond",
"args": ["-d"],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false
"console": "internalConsole"
},
{
"name": "(macOS) Hyperion.app",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/bin/hyperiond.app/Contents/MacOS/hyperiond",
"args": ["-d"],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"console": "internalConsole",
"MIMode": "lldb"
}
]
}

View File

@ -704,6 +704,64 @@ trademarks does not indicate endorsement of the trademark holder by Font
Awesome, nor vice versa. **Please do not use brand logos for any purpose except
to represent the company, product, or service to which they refer.**
============
Material Design Icons
============
Copyright (c) 2014, Austin Andrews (http://materialdesignicons.com/), with Reserved Font Name Material Design Icons.
Copyright (c) 2014, Google (http://www.google.com/design/) uses the license at https://github.com/google/material-design-icons/blob/master/LICENSE
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
PREAMBLE The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects,
to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and
improved in partnership with others.
The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves.
The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works.
The fonts and derivatives, however, cannot be released under any other type of license.
The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives.
DEFINITIONS "Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such.
This may include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the copyright statement(s).
"Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version,
by changing formats or by porting the Font Software to a new environment.
"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software,
to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions:
Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself.
Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software,
provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files,
human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user.
No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder.
This restriction only applies to the primary font name as presented to the users.
The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote,
endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission.
The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license.
The requirement for fonts to remain under this license does not apply to any document created using the Font Software.
TERMINATION This license becomes null and void if any of the above conditions are not met.
DISCLAIMER THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
=====
Gijgo
=====
@ -739,11 +797,40 @@ HIDAPI
Copyright 2009, Alan Ott, Signal 11 Software.
All Rights Reserved.
This software may be used by anyone for any reason so
long as the copyright notice in the source files
remains intact.
==============================
HyperHDR
==============================
MIT License
Copyright (c) 2021 awawa-dev
Project homesite: https://github.com/awawa-dev/HyperHDR
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
===========
JSON-Editor
===========
@ -856,8 +943,8 @@ THE SOFTWARE.
## Markdown
Copyright © 2004, John Gruber
http://daringfireball.net/
Copyright © 2004, John Gruber
http://daringfireball.net/
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
@ -1377,7 +1464,7 @@ tinkerforge
Copyright (C) 2012-2013 Matthias Bolte <matthias@tinkerforge.com>
Copyright (C) 2011 Olaf Lüke <olaf@tinkerforge.com>
Redistribution and use in source and binary forms of this file,
with or without modification, are permitted.
@ -1415,7 +1502,7 @@ Pulse-Eight Licensing <license@pulse-eight.com>
http://www.pulse-eight.net/
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
@ -1696,4 +1783,3 @@ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS

View File

@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased](https://github.com/hyperion-project/hyperion.ng/compare/2.0.0-alpha.9...HEAD)
## [Unreleased](https://github.com/hyperion-project/hyperion.ng/compare/2.0.0-alpha.11...HEAD)
### Breaking
@ -16,6 +16,187 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Removed
## [2.0.0-alpha.11](https://github.com/hyperion-project/hyperion.ng/releases/tag/2.0.0-alpha.11) - 2021-10-06
The release is primarily fixing issues introduced with alpha 10, but covering other findings too.
Thanks to everybody highlighting real problem areas, as well as to those proactively providing fixes for integration via pull requests.
Besides bug fixing, you will find some smaller enhancements which make everybodys life easier.
The fact that WS281x devices must run under root caused many headaches before in getting them running.
We did not weaken security, but provide you with an easy to use script to switch the user-id of hyperion going forward. Furthermore, device configuration is blocked, if the environment does not allow it.
### Added:
- Script to change the user Hyperion is executed with.
To run Hyperion with root privileges (e.g. for WS281x) execute <br> `sudo updateHyperionUser -u root`
- Gif effects can source Gifs via URLs in addition to local files as input
- System info screen: Added used config path and "is run under root/admin"
- LED-Device enhancements
- WS281x: Ensure that a device cannot be configured via the UI when Hyperion is not run with root privileges
- Nanoleaf: Support discovering additional Nanoleaf devices, e.g. Shapes
- Nanoleaf: Ability to restore state when Hyperion stops streaming<br>
Note: In case previous state was a dynamic/temporary effect, the state cannot be restored
- Nanoleaf: New Feature: allow to overwrite brightness by Hyperion
### Changed:
- The Systemd/Upstart/System-V-Init service registers Hyperion under the name hyperion instead of hyperiond, as this has caused confusion among users in the past.
- WLED and UDP-Raw: Limit maximum LEDs number to 490
- WS281x: Update DMA default as per rpi_ws281x recommendation
- Smoothing is paused when no input source is available (to save resources)
- Disable LED update streaming, if LED updates are not required, Sync. Video-Streaming between Layout and Simulation
- Load configuration of last instance used when loading the UI page, Streamline API requests to avoid unnecessary invocations (#1311)
- BobLight: Priorities are not limited any longer. BobLight can feed Priorities [2-253], default is still 128 (#1269)
- Amlogic grabber: Limit grabber to 30fps during discovery
- Amlogic grabber: Continuous image feed even when paused (to not have LEDs switched off), plus no delay when pausing/unpausing
### Fixed:
- Fixed that Smoothing with "Continuous Updates" disabled does not provides LED updates (#1068, #1240)
- Fixed Issue Blinking / flickering cursor with QT screen capture on Windows (#1328)
- Fixed Colour effect priority is not deleted when Colorpicker is open (double click on delete is required)
- Fixed reuse local SSDP address (#1324)
- Exclude FB Grabber on Amlogic platform, as FB is included in Amlogic Grabber
- Escape XSS payload to avoid execution (#1292)
- Include libqt5sql5-sqlite packaging dependency
- Fixed embedded Python location (#1109)
- LED-Devices
- Fixed Philips Hue wizard (#1276)
- Fixed AtmoOrb wizard
- Fixed that Lightpack device does not core when lack of permissions error (LIBUSB_ERROR_ACCESS)
- Fixed Atmo/Karate LED count constraint handling
- Fixed Hue, Disable LED general options (HW Led count & RGB Byte order) as calculated
- Fixed SPI, Tpm2.Net - Memory issues
- Fixed: Nanoleaf does not turn on
- Fixed LED layout - Additional parameters for classic layout were not saved (#1314)
- Fixed Network LED-Device UI: Trigger getProperties for the configured host, when no hosts were discovered
### Removed:
- Smoothing: Removed "Continuous Updates" flag as it is obsolete.
In case an LED-device requires continuous updates, use the LED-Device's "Rewrite Time" parameter.
## [2.0.0-alpha.10](https://github.com/hyperion-project/hyperion.ng/releases/tag/2.0.0-alpha.10) - 2021-07-17
The focus of this release is on user experience.
We tried as much as possible supporting you in getting valid setup done, as well as providing enough room for expert users to tweak configurations here and there.
The reworked dashboard provides you now with the ability to control individual components, jump to key configuration items, as well as to switch between LED instances easily.
The refined color coding in the user-interfaces, helps you to quickly identify instance specific and global configuration items.
Of course, the release brings new features (e.g. USB Capture on Windows), as well as minor enhancements and a good number of fixes.
Note:
- **IMPORTANT:** Due to the rework of the grabbers, both screen- and video grabbers are disabled after the upgrade to the new version.
Please, re-enable the grabber of choice via the UI, validate the configuration and save the setup. The grabber should the restart.
- Hyperion packages can now be installed under Ubuntu (x64) and Debian (amd64/armhf) (incl. Raspberry Pi OS) via our own APT server.
Details about the installation can be found in the [installation.md](https://github.com/hyperion-project/hyperion.ng/blob/master/Installation.md) and at [apt.hyperion-project.org](apt.hyperion-project.org).
- Find here more details on [supported platforms and configuration sets](https://github.com/hyperion-project/hyperion.ng/blob/master/doc/development/SupportedPlatforms.md)
### Breaking
### Added
- The Dashboard is now a one-stop control element to control instances and link into configuration areas
- LED Instance independent configuration objects (e.g. capturing hardware) are now separated out in the menu
- New menu item "Sources" per LED instances configuration to enable/disable screen or usb grabber per instance
#### Grabbers
- Windows Media Foundation USB grabber (incl. Media Foundation transform/Turbo-JPEG scaling)
- Linux V4L2 Grabber now supports the following formats: NV12, YUV420
- Image flipping ability in ImageResampler/Turbo-JPEG
- UI: Simplified screens for non-expert usage, do only show elements relevant
- Discover available Grabbers (incl. their capabilities for selection), not supported grabbers are not presented. Note: Screen capturing on Wayland is not supported (given the Wayland security architecture)
- USB Grabber: New ability to configure hardware controls (brightness, contrast, saturation, hue), as well as populating defaults
- Configuration item ranges are automatically adopted based on grabber capabilities,
- Grabbers can only be saved with a valid configuration
- Standalone grabbers: Added consistent options/capabilities for standalone grabbers, debug logging support
- Screen grabbers: Allow to set capture frequency, size decimation and cropping across all grabber types
- Screen grabber: QT-Grabber allows to capture individual displays or all displays in a multi-display setup
- Display Signal Detection area in preview (expert users)
- UI: Only show CEC detection, if supported by platform
#### LED-Devices
- Select device from list of available devices (UI Optimization - Select device from list of available devices #1053) - Cololight, Nanoleaf, Serial Devices (e.g. Adalight), SPI-Device, Pi-Blaster
- Get device properties for automatic configuration of number of LEDs and initial layout (WLED, Cololight, Nanoleaf)
- Identify/Test device (WLED, Cololight, Nanoleaf, Adalight)
- For selected devices a default layout configuration is created, if the user chooses "Overwrite" (WLED, Cololight, Nanoleaf, all serial devices, all spi device, pi-blaster)
- Ensure Hardware LED count matches number of lights (Philips Hue, Yeelight, Atmo Orb)
- User is presented a warning/error, if there is a mismatch between configured LED number and available hardware LEDs
- Add udev support for Serial-Devices
- Allow to get properties for Atmo and Karatedevices to limit LED numbers configurable
- Philips Hue: Add basic support for the Play Gradient Lightstrip
- WLED: Support of ["live" property] (https://github.com/Aircoookie/WLED/issues/1308) (#1095)
- WLED: Brightness overwrite control by configuration
- WLED: Allow to disable WLED synchronization when streaming via hyperion
- WLED: Support storing/restoring state (#1101)
- Adalight: Fix LED Num for non analogue output in arduino firmware
- Allow to blacklist LEDs in layout via UI
- Live Video image to LedLayout preview (#1136)
#### Other
- Effects: Support Custom Effect Templates in UI for custom effect creation and configuration
- Effects: Custom effect separation in the systray menu
- New languages - Portuguese (Std/Brazil) & Norwegian (Bokmål)
- New Flags: Russia, Cameroon, Great Britain, England, Scotland
- Provide cross compilation on x86_64 for developers using docker. This includes the ability to use local code, as well as build incrementally
### Changed
- Grabbers use now precise timings for better timing accuracy
- Nanoleaf: Consider Nanoleaf-Shape Controllers
- LED-Devices: Show HW-Ledcount in all setting levels
- System Log Screen: Support to copy loglines, system info and status of the current instance to the clipboard (to share it for investigation)
- Updated dependency rpi_ws281x to latest upstream
- Fix High CPU load (RPI3B+) (#1013)
### Fixed
- Active grabbers are displayed correctly after updating the WebUI
- Issue Crop values are checked against decimated resolution (#1160)
- Framebuffer grabber is deactivated in case of error
- Fix/no signal detection (#1087)
- Fix that global settings were not correctly reflected across instances after updates in other non default instance (#1131,#1186,#1188)
- Fix UI: Handle error scenario properly, when last instance number used does not exist any longer.
- UI Allow to have password handled by Password-Manager (#1263)
- Fixed effect freezing during startup
- Effects were not started from tray (#1199)
- Interrupt effect on timeout (#1013)
- Fixed color and effect handling and duplicate priorities (#993,#1113,#1216)
- Stop background effect, when it gets out of scope (to not use resources unnecessarily)
- Custom Effect Templates (schemas) are now loaded
- Effects: Uploaded images were not found executing custom image effects
- "LED Test" effect description is in wrong order (#1229)
- LED-Devices: Only consider Hardware LED count (#673)
- LED-Devices: Correct total packet count in tpm2net implementation (#1127)
- LED-Hue: Proper black in Entertainment mode if min brightness is set
- LED-Hue: Minor fix of setColor command
- Nanoleaf: Fixed behaviour, if external control mode cannot be set
- System Log Screen: Fixed Auto-Scrolling, Update Look & Feel, Works across multiple Browser tabs/windows, as log stream is not stopped by a new UI
- Rename Instance and Change Password: Modal did not close
- Read-Only mode was not handled in the SysInfo function
- WebSockets: Handling of fragmented frames fixed
- Fixed libcec dependencies
- General language and grammar updates
### Removed
## [2.0.0-alpha.9](https://github.com/hyperion-project/hyperion.ng/releases/tag/2.0.0-alpha.9) - 2020-11-18
### Added
- Grabber: DirectX9 support (#1039)
@ -94,8 +275,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- AtmoOrb Fix (#988)
- Return TAN to API requests whenever possible (#1002)
### Removed
## [2.0.0-alpha.7](https://github.com/hyperion-project/hyperion.ng/releases/tag/2.0.0-alpha.7) - 2020-07-23
### Added
- [HyperBian](https://github.com/hyperion-project/HyperBian/releases) - A Raspberry Pi OS Lite image with Hyperion pre installed. (#832)
@ -258,3 +437,4 @@ If you used a `.deb` package please uninstall it before you upgrade
## [2.0.0-alpha.1](https://github.com/hyperion-project/hyperion.ng/releases/tag/2.0.0-alpha.1) - 2020-02-16
### Added
- Initial Release

View File

@ -4,10 +4,15 @@ message( STATUS "CMake Version: ${CMAKE_VERSION}" )
PROJECT(hyperion)
# Parse semantic version of version file
# Parse semantic version of version file and write version to config
include (${CMAKE_CURRENT_SOURCE_DIR}/cmake/version.cmake)
file (STRINGS "version" HYPERION_VERSION)
file (STRINGS ".version" HYPERION_VERSION)
SetVersionNumber(HYPERION ${HYPERION_VERSION})
set(DEFAULT_JSON_CONFIG_FILE ${CMAKE_CURRENT_SOURCE_DIR}/config/hyperion.config.json.default)
file(READ ${DEFAULT_JSON_CONFIG_FILE} DEFAULT_JSON_CONFIG_VAR)
string(REPLACE "configVersionValue" ${HYPERION_VERSION} DEFAULT_JSON_CONFIG_VAR "${DEFAULT_JSON_CONFIG_VAR}")
string(REPLACE "previousVersionValue" ${HYPERION_VERSION} DEFAULT_JSON_CONFIG_VAR "${DEFAULT_JSON_CONFIG_VAR}")
file(WRITE ${CMAKE_BINARY_DIR}/config/hyperion.config.json.default "${DEFAULT_JSON_CONFIG_VAR}")
# Instruct CMake to run moc automatically when needed.
set(CMAKE_AUTOMOC ON)
@ -25,23 +30,27 @@ if ( CCACHE_FOUND )
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
endif(CCACHE_FOUND)
if (NOT CMAKE_VERSION VERSION_LESS "3.12")
find_package(Python3 COMPONENTS Interpreter Development REQUIRED)
if(Python_FOUND)
if ("${CMAKE_VERSION}" VERSION_LESS "3.12.0")
set(Python_ADDITIONAL_VERSIONS 3.5)
find_package(PythonInterp 3.5 REQUIRED)
else()
find_package(Python3 3.5 COMPONENTS Interpreter Development REQUIRED)
if(Python3_FOUND)
set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
endif()
else()
set(Python_ADDITIONAL_VERSIONS 3.5)
find_package( PythonInterp 3.5 REQUIRED )
endif()
# Set build variables
SET ( DEFAULT_AMLOGIC OFF )
SET ( DEFAULT_BOBLIGHT ON )
SET ( DEFAULT_DISPMANX OFF )
SET ( DEFAULT_DX OFF )
SET ( DEFAULT_MF OFF )
SET ( DEFAULT_OSX OFF )
SET ( DEFAULT_QT ON )
SET ( DEFAULT_X11 OFF )
SET ( DEFAULT_XCB OFF )
SET ( DEFAULT_V4L2 OFF )
SET ( DEFAULT_WS281XPWM OFF )
SET ( DEFAULT_AVAHI ON )
SET ( DEFAULT_USE_SHARED_AVAHI_LIBS ON )
@ -50,6 +59,8 @@ SET ( DEFAULT_USE_SYSTEM_PROTO_LIBS OFF )
SET ( DEFAULT_USE_SYSTEM_MBEDTLS_LIBS OFF )
SET ( DEFAULT_TESTS OFF )
SET ( DEFAULT_EXPERIMENTAL OFF )
SET ( DEFAULT_CEC OFF )
SET ( DEFAULT_DEPLOY_DEPENDENCIES ON )
IF ( ${CMAKE_SYSTEM} MATCHES "Linux" )
SET ( DEFAULT_V4L2 ON )
@ -60,6 +71,7 @@ IF ( ${CMAKE_SYSTEM} MATCHES "Linux" )
SET ( DEFAULT_CEC ON )
ELSEIF ( WIN32 )
SET ( DEFAULT_DX ON )
SET ( DEFAULT_MF ON )
ELSE()
SET ( DEFAULT_V4L2 OFF )
SET ( DEFAULT_FB OFF )
@ -109,6 +121,8 @@ MACRO(FIRSTSUBDIR result curdir)
ENDMACRO()
if ( "${PLATFORM}" MATCHES "osx" )
# specify the min version of the target platform
SET ( CMAKE_OSX_DEPLOYMENT_TARGET "10.15" )
# add specific prefix paths
FIRSTSUBDIR(SUBDIRQT "/usr/local/Cellar/qt")
FIRSTSUBDIR(SUBDIRPY "/usr/local/opt/python3/Frameworks/Python.framework/Versions")
@ -120,9 +134,14 @@ elseif ( "${PLATFORM}" MATCHES "rpi" )
SET ( DEFAULT_DISPMANX ON )
SET ( DEFAULT_WS281XPWM ON )
elseif ( "${PLATFORM}" STREQUAL "amlogic" )
SET ( DEFAULT_AMLOGIC ON )
SET ( DEFAULT_AMLOGIC ON )
elseif ( "${PLATFORM}" STREQUAL "amlogic-dev" )
SET ( DEFAULT_AMLOGIC ON )
SET ( DEFAULT_DISPMANX OFF )
SET ( DEFAULT_QT OFF )
SET ( DEFAULT_CEC OFF )
elseif ( "${PLATFORM}" STREQUAL "amlogic64" )
SET ( DEFAULT_AMLOGIC ON )
SET ( DEFAULT_AMLOGIC ON )
elseif ( "${PLATFORM}" MATCHES "x11" )
SET ( DEFAULT_X11 ON )
SET ( DEFAULT_XCB ON )
@ -146,20 +165,25 @@ STRING( REPLACE "-DEV" "" PLATFORM_DEFINE "${PLATFORM_DEFINE}" )
ADD_DEFINITIONS( ${PLATFORM_DEFINE} )
# set the build options
option(ENABLE_BOBLIGHT "Enable BOBLIGHT server" ${DEFAULT_BOBLIGHT} )
message(STATUS "ENABLE_BOBLIGHT = ${ENABLE_BOBLIGHT}")
option(ENABLE_AMLOGIC "Enable the AMLOGIC video grabber" ${DEFAULT_AMLOGIC} )
message(STATUS "ENABLE_AMLOGIC = ${ENABLE_AMLOGIC}")
option(ENABLE_DISPMANX "Enable the RPi dispmanx grabber" ${DEFAULT_DISPMANX} )
message(STATUS "ENABLE_DISPMANX = ${ENABLE_DISPMANX}")
if (ENABLE_AMLOGIC)
SET(ENABLE_FB ON)
else()
option(ENABLE_FB "Enable the framebuffer grabber" ${DEFAULT_FB} )
endif()
message(STATUS "ENABLE_FB = ${ENABLE_FB}")
option(ENABLE_OSX "Enable the osx grabber" ${DEFAULT_OSX} )
option(ENABLE_DISPMANX "Enable the RPi dispmanx grabber" ${DEFAULT_DISPMANX} )
message(STATUS "ENABLE_DISPMANX = ${ENABLE_DISPMANX}")
option(ENABLE_OSX "Enable the OSX grabber" ${DEFAULT_OSX} )
message(STATUS "ENABLE_OSX = ${ENABLE_OSX}")
option(ENABLE_SPIDEV "Enable the SPIDEV device" ${DEFAULT_SPIDEV} )
@ -171,6 +195,9 @@ message(STATUS "ENABLE_TINKERFORGE = ${ENABLE_TINKERFORGE}")
option(ENABLE_V4L2 "Enable the V4L2 grabber" ${DEFAULT_V4L2})
message(STATUS "ENABLE_V4L2 = ${ENABLE_V4L2}")
option(ENABLE_MF "Enable the Media Foundation grabber" ${DEFAULT_MF})
message(STATUS "ENABLE_MF = ${ENABLE_MF}")
option(ENABLE_WS281XPWM "Enable the WS281x-PWM device" ${DEFAULT_WS281XPWM} )
message(STATUS "ENABLE_WS281XPWM = ${ENABLE_WS281XPWM}")
@ -189,7 +216,7 @@ message(STATUS "ENABLE_X11 = ${ENABLE_X11}")
option(ENABLE_XCB "Enable the XCB grabber" ${DEFAULT_XCB})
message(STATUS "ENABLE_XCB = ${ENABLE_XCB}")
option(ENABLE_QT "Enable the qt grabber" ${DEFAULT_QT})
option(ENABLE_QT "Enable the Qt grabber" ${DEFAULT_QT})
message(STATUS "ENABLE_QT = ${ENABLE_QT}")
option(ENABLE_DX "Enable the DirectX grabber" ${DEFAULT_DX})
@ -204,6 +231,9 @@ message(STATUS "ENABLE_PROFILER = ${ENABLE_PROFILER}")
option(ENABLE_EXPERIMENTAL "Compile experimental features" ${DEFAULT_EXPERIMENTAL})
message(STATUS "ENABLE_EXPERIMENTAL = ${ENABLE_EXPERIMENTAL}")
option(ENABLE_DEPLOY_DEPENDENCIES "Deploy with dependencies" ${DEFAULT_DEPLOY_DEPENDENCIES})
message(STATUS "ENABLE_DEPLOY_DEPENDENCIES = ${ENABLE_DEPLOY_DEPENDENCIES}")
SET ( FLATBUFFERS_INSTALL_BIN_DIR ${CMAKE_BINARY_DIR}/flatbuf )
SET ( FLATBUFFERS_INSTALL_LIB_DIR ${CMAKE_BINARY_DIR}/flatbuf )
@ -212,10 +242,7 @@ SET ( PROTOBUF_INSTALL_LIB_DIR ${CMAKE_BINARY_DIR}/proto )
# check all json files
FILE ( GLOB_RECURSE HYPERION_SCHEMAS RELATIVE ${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/libsrc/*schema*.json )
SET( JSON_FILES
config/hyperion.config.json.default
${HYPERION_SCHEMAS}
)
SET( JSON_FILES ${CMAKE_BINARY_DIR}/config/hyperion.config.json.default ${HYPERION_SCHEMAS})
EXECUTE_PROCESS (
COMMAND ${PYTHON_EXECUTABLE} test/jsonchecks/checkjson.py ${JSON_FILES}
@ -239,7 +266,7 @@ ENDIF ()
# TODO on windows it can't resolve the path inside the file (Das System kann den angegebenen Pfad nicht finden: '\\schema\\schema-general.json')
IF (NOT WIN32)
EXECUTE_PROCESS (
COMMAND python test/jsonchecks/checkschema.py config/hyperion.config.json.default libsrc/hyperion/hyperion.schema.json
COMMAND python test/jsonchecks/checkschema.py ${CMAKE_BINARY_DIR}/config/hyperion.config.json.default libsrc/hyperion/hyperion.schema.json
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
RESULT_VARIABLE CHECK_CONFIG_FAILED
)
@ -303,7 +330,7 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
# The Qt5_DIR should point to Qt5Config.cmake -> C:/Qt/5.xx/msvc2017_64/lib/cmake/Qt5
# The CMAKE_PREFIX_PATH should point to the install directory -> C:/Qt/5.xx/msvc2017_64
#
# Alternatively, use Qt5_BASE_DIR environment variable to point to Qt version to be used
# Alternatively, use Qt5_BASE_DIR environment variable to point to Qt version to be used
# In MSVC19 add into CMakeSettings.json
#
# "environments": [
@ -333,14 +360,14 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
message(STATUS "Add ${qt_module_path} to CMAKE_MODULE_PATH")
SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${qt_module_path}")
#message(STATUS "CMAKE_PREFIX_PATH: ${CMAKE_PREFIX_PATH}")
#message(STATUS "CMAKE_MODULE_PATH: ${CMAKE_MODULE_PATH}")
# Search for DirectX9
if (ENABLE_DX)
find_package(DirectX9 REQUIRED)
endif()
endif(ENABLE_DX)
endif()
@ -349,17 +376,19 @@ if (NOT WIN32)
include (${CMAKE_CURRENT_SOURCE_DIR}/cmake/LDGold.cmake)
endif()
# Don't create new dynamic tags (RUNPATH)
if (NOT CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--disable-new-dtags")
endif()
if (ENABLE_DEPLOY_DEPENDENCIES)
# Don't create new dynamic tags (RUNPATH)
if (NOT CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--disable-new-dtags")
endif()
# setup -rpath to search for shared libs in BINARY/../lib folder
if (UNIX AND NOT APPLE)
SET(CMAKE_SKIP_BUILD_RPATH FALSE)
SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:$ORIGIN/../lib")
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
# setup -rpath to search for shared libs in BINARY/../lib folder
if (UNIX AND NOT APPLE)
SET(CMAKE_SKIP_BUILD_RPATH FALSE)
SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:$ORIGIN/../lib")
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
endif ()
endif ()
# add QT5 dependency
@ -393,31 +422,6 @@ find_package(libusb-1.0 REQUIRED)
find_package(Threads REQUIRED)
add_definitions(${QT_DEFINITIONS})
# Add JPEG library
if (ENABLE_V4L2)
# Turbo JPEG
find_package(TurboJPEG)
if (TURBOJPEG_FOUND)
add_definitions(-DHAVE_TURBO_JPEG)
message( STATUS "Using Turbo JPEG library: ${TurboJPEG_LIBRARY}")
include_directories(${TurboJPEG_INCLUDE_DIRS})
else()
# System JPEG
find_package(JPEG)
if (JPEG_FOUND)
add_definitions(-DHAVE_JPEG)
message( STATUS "Using system JPEG library: ${JPEG_LIBRARIES}")
include_directories(${JPEG_INCLUDE_DIR})
else()
message( STATUS "JPEG library not found, MJPEG camera format won't work in V4L2 grabber.")
endif()
endif (TURBOJPEG_FOUND)
if (TURBOJPEG_FOUND OR JPEG_FOUND)
add_definitions(-DHAVE_JPEG_DECODER)
endif()
endif()
if(APPLE)
set(CMAKE_EXE_LINKER_FLAGS "-framework CoreGraphics")
endif()

View File

@ -1,93 +0,0 @@
# Cross-Compile Hyperion-NG
Leverage the power of a host environment (here Ubuntu) compiling for a target platform (here Raspberry Pi).
Use a clean Raspbian Stretch Lite (on target) and Ubuntu 18/19 (on host) to execute the steps outlined below.
## On the Target system (here Raspberry Pi)
Install required additional packages.
```
sudo apt-get install qtbase5-dev libqt5serialport5-dev libqt5svg5-dev libusb-1.0-0-dev python3-dev libcec-dev libxcb-util0-dev libxcb-randr0-dev libxrandr-dev libxrender-dev libavahi-core-dev libavahi-compat-libdnssd-dev libjpeg-dev libturbojpeg0-dev libqt5sql5-sqlite aptitude qt5-default rsync libssl-dev zlib1g-dev
```
## On the Host system (here Ubuntu)
Update the Ubuntu environment to the latest stage and install required additional packages.
```
sudo apt-get update
sudo apt-get upgrade
sudo apt-get -qq -y install git rsync cmake build-essential qtbase5-dev libqt5serialport5-dev libqt5svg5-dev libqt5sql5-sqlite libqt5x11extras5-dev libusb-1.0-0-dev python3-dev libcec-dev libxcb-image0-dev libxcb-util0-dev libxcb-shm0-dev libxcb-render0-dev libxcb-randr0-dev libxrandr-dev libxrender-dev libavahi-core-dev libavahi-compat-libdnssd-dev libjpeg-dev libturbojpeg0-dev libssl-dev zlib1g-dev
```
Refine the target IP or hostname, plus userID as required and set-up cross-compilation environment:
```
export TARGET_IP=x.x.x.x
export TARGET_USER=pi
```
```
export CROSSROOT="$HOME/crosscompile"
export RASCROSS_DIR="$CROSSROOT/raspberrypi"
export ROOTFS_DIR="$RASCROSS_DIR/rootfs"
export TOOLCHAIN_DIR="$RASCROSS_DIR/tools"
export QT5_DIR="$CROSSROOT/Qt5"
export HYPERION_DIR="$HOME/hyperion.ng"
```
Get native files from target platform into the host-environment:
```
mkdir -p "$ROOTFS_DIR/lib"
mkdir -p "$ROOTFS_DIR/usr"
rsync -rl --delete-after --copy-unsafe-links $TARGET_USER@$TARGET_IP:/lib "$ROOTFS_DIR"
rsync -rl --delete-after --copy-unsafe-links $TARGET_USER@$TARGET_IP:/usr/include "$ROOTFS_DIR/usr"
rsync -rl --delete-after --copy-unsafe-links $TARGET_USER@$TARGET_IP:/usr/lib "$ROOTFS_DIR/usr"
```
### Raspberry Pi specific steps
Get Raspberry Pi firmware:
```
mkdir -p "$RASCROSS_DIR/firmware"
git clone --depth 1 https://github.com/raspberrypi/firmware.git "$RASCROSS_DIR/firmware"
ln -s "$RASCROSS_DIR/firmware/hardfp/opt" "$ROOTFS_DIR/opt"
```
Get toolchain files which allows to build ARM executables on x86 platforms:
```
mkdir -p "$TOOLCHAIN_DIR"
cd $TOOLCHAIN_DIR
wget -c https://releases.linaro.org/components/toolchain/binaries/7.4-2019.02/arm-linux-gnueabihf/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf.tar.xz --no-check-certificate
tar -xvf gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf.tar.xz
```
### Install the Qt5 framework
```
mkdir -p "$QT5_DIR"
cd "$QT5_DIR"
wget -c https://download.qt.io/new_archive/qt/5.7/5.7.1/qt-opensource-linux-x64-5.7.1.run
chmod +x $QT5_DIR/*.run
```
Display absolute installation directory to be used in Qt5 installer:
```
echo $HOME/crosscompile/Qt5
```
Start the Qt5 installation.
Follow the dialogs and install in absolute directory of ```$HOME/crosscompile/Qt5``` (copy from above)
```
./qt-opensource-linux-x64-5.7.1.run
```
### Get the Hyperion-NG source files
```
git clone --recursive https://github.com/hyperion-project/hyperion.ng.git "$HYPERION_DIR"
```
### Get required submodules for Hyperion
```
cd "$HYPERION_DIR"
git fetch --recurse-submodules -j2
```
### Compile Hyperion-NG
```
cd "$HYPERION_DIR"
chmod +x "$HYPERION_DIR/bin/"*.sh
./bin/create_all_releases.sh
```
### Transfer output packages to target platform and install Hyperion-NG
Output packages for target platform (.deb, .tar.gz, .sh) can be found here:
```
$HYPERION_DIR/deploy/rpi
```
# Install Hyperion-NG on target platform
t.b.d.

View File

@ -1,48 +1,54 @@
// Generated config file
// Define to enable the dispmanx grabber
// Define to enable the DispmanX grabber
#cmakedefine ENABLE_DISPMANX
// Define to enable the v4l2 grabber
// Define to enable the V4L2 grabber
#cmakedefine ENABLE_V4L2
// Define to enable the framebuffer grabber
// Define to enable the Media Foundation grabber
#cmakedefine ENABLE_MF
// Define to enable the Framebuffer grabber
#cmakedefine ENABLE_FB
// Define to enable the amlogic grabber
// Define to enable the AMLogic grabber
#cmakedefine ENABLE_AMLOGIC
// Define to enable the osx grabber
// Define to enable the OSX grabber
#cmakedefine ENABLE_OSX
// Define to enable the x11 grabber
// Define to enable the X11 grabber
#cmakedefine ENABLE_X11
// Define to enable the xcb grabber
// Define to enable the XCB grabber
#cmakedefine ENABLE_XCB
// Define to enable the qt grabber
// Define to enable the Qt grabber
#cmakedefine ENABLE_QT
// Define to enable the DirectX grabber
#cmakedefine ENABLE_DX
// Define to enable the spi-device
// Define to enable the SPI-Device
#cmakedefine ENABLE_SPIDEV
// Define to enable the ws281x-pwm-via-dma-device using jgarff's library
// Define to enable the WS281x-PWM-via-DMA-device using jgarff's library
#cmakedefine ENABLE_WS281XPWM
// Define to enable the tinkerforge device
// Define to enable the Tinkerforge device
#cmakedefine ENABLE_TINKERFORGE
// Define to enable avahi
// Define to enable AVAHI
#cmakedefine ENABLE_AVAHI
// Define to enable cec
// Define to enable CEC
#cmakedefine ENABLE_CEC
// Define to enable the usb / hid devices
// Define to enable boblight server
#cmakedefine ENABLE_BOBLIGHT
// Define to enable the USB / HID devices
#cmakedefine ENABLE_USB_HID
// Define to enable profiler for development purpose
@ -51,6 +57,9 @@
// Define to enable experimental features
#cmakedefine ENABLE_EXPERIMENTAL
// Define to enable deploy dependencies to packages
#cmakedefine ENABLE_DEPLOY_DEPENDENCIES
// the hyperion build id string
#define HYPERION_BUILD_ID "${HYPERION_BUILD_ID}"
#define HYPERION_GIT_REMOTE "${HYPERION_GIT_REMOTE}"

46
Installation.md Normal file
View File

@ -0,0 +1,46 @@
# Installation
This page contains general installation steps for Hyperion. For Linux please follow the instructions below. For Windows is an installation file available on our [Release page](https://github.com/hyperion-project/hyperion.ng/releases).
## Linux:
On the following operating systems, Hyperion can currently be installed/updated using the method listed below:
- Raspbian Stretch/Raspberry Pi OS and later (armhf)
- Debian Stretch (9) and later (armhf/x64)
- Ubuntu 18.04 and later (x64)
***
### Install Hyperion:
1. Add Hyperions official GPG key:
```bash
wget -qO- https://apt.hyperion-project.org/hyperion.pub.key | sudo gpg --dearmor -o /usr/share/keyrings/hyperion.pub.gpg
```
2. Add Hyperion-Project to your APT sources:
```bash
echo "deb [signed-by=/usr/share/keyrings/hyperion.pub.gpg] https://apt.hyperion-project.org/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hyperion.list
```
3. Update your local package index and install Hyperion:
```bash
sudo apt-get update && sudo apt-get install hyperion
```
***
### Update Hyperion:
```bash
sudo apt-get install hyperion
```
***
### If you want to uninstall Hyperion, use the following commands:
1. Remove Hyperion:
```bash
sudo apt-get --purge autoremove hyperion
```
2. Remove the Hyperion-Project APT source from your system:
```bash
sudo rm /usr/share/keyrings/hyperion.pub.gpg /etc/apt/sources.list.d/hyperion.list
```

View File

@ -1,6 +1,6 @@
MIT License
Copyright (c) 2014-2020 Hyperion Project
Copyright (c) 2014-2021 Hyperion Project
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@ -1,9 +1,10 @@
![Hyperion](https://raw.githubusercontent.com/hyperion-project/hyperion.ng/master/assets/webconfig/img/hyperion/hyperionlogo.png)
![Hyperion](doc/logo.png)
[![Latest-Release](https://img.shields.io/github/v/release/hyperion-project/hyperion.ng?include_prereleases)](https://github.com/hyperion-project/hyperion.ng/releases)
[![GitHub Actions](https://github.com/hyperion-project/hyperion.ng/workflows/Hyperion%20CI%20Build/badge.svg?branch=master)](https://github.com/hyperion-project/hyperion.ng/actions)
[![LGTM](https://img.shields.io/lgtm/alerts/g/hyperion-project/hyperion.ng.svg)](https://lgtm.com/projects/g/hyperion-project/hyperion.ng/alerts/)
[![Documentation](https://codedocs.xyz/hyperion-project/hyperion.ng.svg)](https://codedocs.xyz/hyperion-project/hyperion.ng/)
[![made-with-love](https://img.shields.io/badge/Made%20with-&#9829;-ff0000.svg)](#)
## About Hyperion
@ -18,7 +19,7 @@
* A command line utility for testing and integration in automated environment
* Priority channels are not coupled to a specific led data provider which means that a provider can post led data and leave without the need to maintain a connection to Hyperion. This is ideal for a remote application (like our [Android app](https://play.google.com/store/apps/details?id=nl.hyperion.hyperionpro)).
* Black border detector and processor
* A scriptable (Python) effect engine
* A scriptable (Python) effect engine with 39 build-in effects for your inspiration
* A multi language web interface to configure and remote control hyperion
If you need further support please open a topic at the forum!<br>
@ -32,10 +33,9 @@ Contributions are welcome! Feel free to join us! We are looking always for peopl
For an example, you can participate in the translation.<br>
[![Join Translation](https://img.shields.io/badge/POEditor-translate-green.svg)](https://poeditor.com/join/project/Y4F6vHRFjA)
## Requirements
Debian 9, Ubuntu 16.04 or higher.
## Supported Platforms
We provide a macOS Build but we can not support this.
Find here more details on [supported platforms and configuration sets](doc/development/SupportedPlatforms.md)
## Documentation
Covers these topics (WorkInProgress)
@ -50,7 +50,7 @@ Covers these topics (WorkInProgress)
Released and unreleased changes at [Changelog.md](CHANGELOG.md)
## Building
See [CompileHowto](CompileHowto.md) and [CrossCompileHowto](CrossCompileHowto.md).
See [CompileHowto](doc/development/CompileHowto.md).
## Download
Alpha releases available from the [Hyperion release page](https://github.com/hyperion-project/hyperion.ng/releases)

View File

@ -139,7 +139,7 @@ void setup() {
}
int ledCount = MAX_LEDS;
if (ANALOG_MODE == ANALOG_MODE_LAST_LED) {
if (ANALOG_OUTPUT_ENABLED == true && ANALOG_MODE == ANALOG_MODE_LAST_LED) {
ledCount--;
}
@ -170,7 +170,7 @@ void setup() {
showColor(CRGB(0, 0, 0));
Serial.print("Ada\n"); // Send "Magic Word" string to host
Serial.println("Ada: LED num: " + String(FastLED.size())); //Return number of LEDs configured
boolean transmissionSuccess;
unsigned long sum_r, sum_g, sum_b;
@ -254,4 +254,3 @@ void setup() {
void loop() {
// Not used. See note in setup() function.
}

View File

@ -138,7 +138,7 @@ to this service over the network.
sys.stderr.write(
'--- UDP to Serial redirector\n'
'--- listening on udp port {a.localport}\n'
'--- sending to {p.name} {p.baudrate},{p.bytesize}{p.parity}{p.stopbits}\n'
'--- sending to {p.name} {p.baudrate},{p.bytesize}{p.parity}{p.stopbits}\n'
'--- type Ctrl-C / BREAK to quit\n'.format(p=ser, a=args))
try:
@ -153,7 +153,7 @@ to this service over the network.
srv = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
srv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
srv.bind(('0.0.0.0', args.localport))
srv.bind(('0.0.0.0', args.localport)) # lgtm [py/bind-socket-all-network-interfaces]
try:
intentional_exit = False
@ -165,14 +165,14 @@ to this service over the network.
if not data:
break
if args.ada:
numleds = len(data)/3
hi = (numleds-1)/256
lo = (numleds-1)&255
sum = hi^lo^0x55
ser.write ("Ada"+ chr(hi) + chr(lo) + chr(sum))
if args.ada:
numleds = len(data)/3
hi = (numleds-1)/256
lo = (numleds-1)&255
sum = hi^lo^0x55
ser.write ("Ada"+ chr(hi) + chr(lo) + chr(sum))
ser.write(data) # get a bunch of bytes and send them
ser.write(data) # get a bunch of bytes and send them
except socket.error as msg:
if args.develop:
raise

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

@ -1,106 +1,75 @@
<div class="container-fluid">
<h3 class="page-header"><i class="fa fa-info-circle fa-fw"></i><span data-i18n="main_menu_about_token">About
Hyperion</span></h3>
<div class="row">
<div class="col-lg-12">
<div id="about_cont"></div>
<h3 class="page-header">
<i class="fa fa-info-circle fa-fw"></i><span data-i18n="main_menu_about_token">
About
Hyperion
</span>
</h3>
<div class="row">
<div class="col-lg-12">
<div id="about_cont"></div>
</div>
<div id="danger_act" class="col-lg-6" style="display:none;padding-top:20px">
<h4>You found a hidden service menu!</h4>
<button id="reset_cache" class="btn btn-danger">Reset Browser Cache</button>
<button id="hyp_restart" class="btn btn-danger">Force Hyperion Restart</button>
</div>
</div>
</div>
<div id="danger_act" class="col-lg-6" style="display:none;padding-top:20px">
<h4>You found a hidden service menu!</h4>
<button id="reset_cache" class="btn btn-danger">Reset Browser Cache</button>
<button id="hyp_restart" class="btn btn-danger">Force Hyperion Restart</button>
</div>
</div>
</div>
<script type="text/javascript">
performTranslation();
performTranslation();
var si = sysInfo.hyperion;
var libs = { "Bootstrap 3": "https://getbootstrap.com/", "JQuery": "https://jquery.com/", "Bootstrap Colorpicker": "https://itsjavi.com/bootstrap-colorpicker/", "Bootstrap Toggle": "https://www.bootstraptoggle.com/", "Bootstrap Select": "https://developer.snapappointments.com/bootstrap-select/", "JSON-Editor": "https://www.jeremydorn.com/json-editor", "jQuery.i18n": "https://github.com/wikimedia/jquery.i18n", "metisMenu": "https://mm.onokumus.com/index.html", "download.js": "https://github.com/rndme/download", "gijgo": "https://gijgo.com/" };
var libh = "";
var lang = [];
var dcount = 0;
var si = window.sysInfo.hyperion;
var libs = { "Bootstrap 3": "https://getbootstrap.com/", "JQuery": "https://jquery.com/", "Bootstrap Colorpicker": "https://itsjavi.com/bootstrap-colorpicker/", "Bootstrap Toggle": "https://www.bootstraptoggle.com/", "Bootstrap Select": "https://developer.snapappointments.com/bootstrap-select/", "JSON-Editor": "https://www.jeremydorn.com/json-editor", "jQuery.i18n": "https://github.com/wikimedia/jquery.i18n", "metisMenu": "https://mm.onokumus.com/index.html", "download.js": "https://github.com/rndme/download", "gijgo": "https://gijgo.com/" };
var libh = "";
var lang = [];
var dcount = 0;
for (var i = 0; i < availLang.length; i++)
lang.push($.i18n('general_speech_' + availLang[i]));
lang.sort();
for (key in libs)
libh += '<a href="' + libs[key] + '" target="_blank">' + key + '</a>, ';
libh += "<br/>" + $.i18n("about_credits");
lang = lang.toString().replace(/,/g, ", ");
for (var i = 0; i < availLang.length; i++)
lang.push($.i18n('general_speech_' + availLang[i]));
lang.sort();
for (key in libs)
libh += '<a href="' + libs[key] + '" target="_blank">' + key + '</a>, ';
libh += "<br/>" + $.i18n("about_credits");
lang = lang.toString().replace(/,/g, ", ");
// Github Issue bugreport infos
var sys = window.sysInfo.system;
var shy = window.sysInfo.hyperion;
var info = "<pre>Hyperion Server: \n";
info += '- Build: ' + shy.build + '\n';
info += '- Build time: ' + shy.time + '\n';
info += '- Git Remote: ' + shy.gitremote + '\n';
info += '- Version: ' + shy.version + '\n';
info += '- UI Lang: ' + storedLang + ' (BrowserLang: ' + navigator.language + ')\n';
info += '- UI Access: ' + storedAccess + '\n';
//info += '- Log lvl: ' + window.serverConfig.logger.level + '\n';
info += '- Avail Capt: ' + window.serverInfo.grabbers.available + '\n';
info += '- Database: ' + (shy.readOnlyMode ? "ready-only" : "read/write") + '\n';
var info = '<pre>' + getSystemInfo() + '</pre>';
info += '\n';
var fc = ['<span id="danger_trig">' + $.i18n("about_version") + '<span>', $.i18n("about_build"), $.i18n("about_builddate"), $.i18n("about_translations"), $.i18n("about_resources", $.i18n("general_webui_title")), "System info (Github Issue)", $.i18n("about_3rd_party_licenses")];
var sc = [currentVersion, si.build, si.time, '(' + availLang.length + ')<p>' + lang + '</p><p><a href="https://github.com/hyperion-project/hyperion.ng" target="_blank">' + $.i18n("about_contribute") + '</a></p>', libh, info, '<pre><div id="3rdpartylicenses" style="overflow:scroll;max-height:400px"></div></pre>'];
info += 'Hyperion Server OS: \n';
info += '- Distribution: ' + sys.prettyName + '\n';
info += '- Architecture: ' + sys.architecture + '\n';
createTable("", "atb", "about_cont");
for (var i = 0; i < fc.length; i++)
$('.atb').append(createTableRow([fc[i], sc[i]], "atb", false));
if (sys.cpuModelName)
info += '- CPU Model: ' + sys.cpuModelName + '\n';
if (sys.cpuModelType)
info += '- CPU Type: ' + sys.cpuModelType + '\n';
if (sys.cpuRevision)
info += '- CPU Revision: ' + sys.cpuRevision + '\n';
if (sys.cpuHardware)
info += '- CPU Hardware: ' + sys.cpuHardware + '\n';
$('#danger_trig').off().on('click', function () {
dcount++;
if (dcount > 2)
$('#danger_act').toggle(true);
});
info += '- Kernel: ' + sys.kernelType + ' (' + sys.kernelVersion + ' (WS: ' + sys.wordSize + '))\n';
info += '- Qt Version: ' + sys.qtVersion + '\n';
info += '- Python Version: ' + sys.pyVersion + '\n';
info += '- Browser: ' + navigator.userAgent + ' </pre>';
$('#reset_cache').off().on('click', function () {
localStorage.clear();
});
var fc = ['<span id="danger_trig">' + $.i18n("about_version") + '<span>', $.i18n("about_build"), $.i18n("about_builddate"), $.i18n("about_translations"), $.i18n("about_resources", $.i18n("general_webui_title")), "System info (Github Issue)", $.i18n("about_3rd_party_licenses")];
var sc = [currentVersion, si.build, si.time, '(' + availLang.length + ')<p>' + lang + '</p><p><a href="https://github.com/hyperion-project/hyperion.ng" target="_blank">' + $.i18n("about_contribute") + '</a></p>', libh, info, '<pre><div id="3rdpartylicenses" style="overflow:scroll;max-height:400px"></div></pre>'];
$('#hyp_restart').off().on('click', function () {
initRestart();
});
createTable("", "atb", "about_cont");
for (var i = 0; i < fc.length; i++)
$('.atb').append(createTableRow([fc[i], sc[i]], "atb", false));
$.ajax({
url:'3RD_PARTY_LICENSES',
dataType: "text",
success: function(data)
{
$("#3rdpartylicenses").html('<code>' + data + '</code>');
},
error: function()
{
$("#3rdpartylicenses").html('<a href="https://raw.githubusercontent.com/hyperion-project/hyperion.ng/master/3RD_PARTY_LICENSES">' + $.i18n("about_3rd_party_licenses_error") + '</a>');
}
});
$('#danger_trig').off().on('click', function () {
dcount++;
if (dcount > 2)
$('#danger_act').toggle(true);
});
$('#reset_cache').off().on('click', function () {
localStorage.clear();
});
$('#hyp_restart').off().on('click', function () {
initRestart();
});
var url = 'https://raw.githubusercontent.com/hyperion-project/hyperion.ng/master/3RD_PARTY_LICENSES';
fetch(url)
.then(function (response) {
if (!response.ok) {
$("#3rdpartylicenses").html('<a href="' + url + '">' + $.i18n("about_3rd_party_licenses_error") + '</a>');
}
else {
response.text().then(function (text) {
$("#3rdpartylicenses").html('<code>' + text + '</code>');
});
}
})
.catch(function (rejected) {
$("#3rdpartylicenses").html('<a href="' + url + '">' + $.i18n("about_3rd_party_licenses_error") + '</a>');
});
removeOverlay();
removeOverlay();
</script>

View File

@ -2,11 +2,23 @@
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header"><i class="fa fa-photo fa-fw"></i><span data-i18n="main_menu_colors_conf_token">Image Processing</span></h3>
<div id="conf_cont"></div>
<h3 class="page-header"><i class="fa fa-photo fa-fw"></i><span data-i18n="main_menu_colors_conf_token">Image Processing</span></h3>
<div class="panel panel-default" style="border:0px;">
<div class="panel-heading panel-instance" style="border-radius:3px; border-bottom:0px;">
<div class="dropdown">
<a id="active_instance_dropdown" class="dropdown-toggle" data-toggle="dropdown" href="#" style="text-decoration:none;display:flex;align-items:center;">
<div id="active_instance_friendly_name"></div>
<div id="btn_hypinstanceswitch" style="white-space:nowrap;"><span class="mdi mdi-lightbulb-group mdi-24px" style="margin-right:0; margin-left:5px;"></span><span class="mdi mdi-menu-down mdi-24px"></span></div>
</a>
<ul id="hyp_inst_listing" class="dropdown-menu dropdown-alerts" style="cursor:pointer;"></ul>
</div>
</div>
</div>
<div id="conf_cont"></div>
</div>
</div>
</div>
<script src="/js/content_colors.js"></script>

View File

@ -2,6 +2,19 @@
<div class="row">
<div class="col-lg-12">
<h3 class="page-header"><i class="fa fa-spinner fa-fw"></i><span data-i18n="main_menu_effect_conf_token">Effects</span></h3>
<div class="panel panel-default" style="border:0px;">
<div class="panel-heading panel-instance" style="border-radius:3px; border-bottom:0px;">
<div class="dropdown">
<a id="active_instance_dropdown" class="dropdown-toggle" data-toggle="dropdown" href="#" style="text-decoration:none;display:flex;align-items:center;">
<div id="active_instance_friendly_name"></div>
<div id="btn_hypinstanceswitch" style="white-space:nowrap;"><span class="mdi mdi-lightbulb-group mdi-24px" style="margin-right:0; margin-left:5px;"></span><span class="mdi mdi-menu-down mdi-24px"></span></div>
</a>
<ul id="hyp_inst_listing" class="dropdown-menu dropdown-alerts" style="cursor:pointer;"></ul>
</div>
</div>
</div>
<div id="conf_cont"></div>
</div>
</div>

View File

@ -6,7 +6,7 @@
<div class="row">
<div class="col-lg-6" id="inst_desc">
<div class="panel panel-default">
<div class="panel-heading"><i class="fa fa-plus fa-fw"></i><span data-i18n="conf_general_inst_title"></span></div>
<div class="panel-heading panel-instance"><i class="mdi mdi-lightbulb-group mdi-24px"></i><span data-i18n="conf_general_inst_title"></span></div>
<div class="panel-body">
<div id="inst_desc_cont"></div>
<div id="itable"></div>

View File

@ -2,7 +2,7 @@
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header"><i class="fa fa-camera fa-fw"></i><span data-i18n="main_menu_grabber_conf_token">Capturing Hardware</span></h3>
<h3 class="page-header"><i class="fa fa-camera fa-fw"></i><span data-i18n="main_menu_grabber_conf_token">Capturing Hardware</span></h3>
<div id="conf_cont"></div>
</div>
</div>

View File

@ -0,0 +1,24 @@
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header"><i class="fa fa-camera fa-fw"></i><span data-i18n="main_menu_grabber_conf_token">Capturing Hardware</span></h3>
<div class="panel panel-default" style="border:0px;">
<div class="panel-heading panel-instance" style="border-radius:3px; border-bottom:0px;">
<div class="dropdown">
<a id="active_instance_dropdown" class="dropdown-toggle" data-toggle="dropdown" href="#" style="text-decoration:none;display:flex;align-items:center;">
<div id="active_instance_friendly_name"></div>
<div id="btn_hypinstanceswitch" style="white-space:nowrap;"><span class="mdi mdi-lightbulb-group mdi-24px" style="margin-right:0; margin-left:5px;"></span><span class="mdi mdi-menu-down mdi-24px"></span></div>
</a>
<ul id="hyp_inst_listing" class="dropdown-menu dropdown-alerts" style="cursor:pointer;"></ul>
</div>
</div>
</div>
<div id="conf_cont"></div>
</div>
</div>
</div>
<script src="/js/content_instcapture.js"></script>

View File

@ -1,374 +1,404 @@
<!DOCTYPE html>
<html>
<head>
<title>Hyperion - LED Device Configuration</title>
</head>
<div class="container-fluid">
<h3 class="page-header"><i class="fa fa-lightbulb-o fa-fw"></i><span data-i18n="main_menu_leds_conf_token">LED Hardware</span></h3>
<ul id="leds_cfg_nav" class="nav nav-tabs">
<li class="active"><a data-toggle="tab" href="#menu_controller" data-i18n="conf_leds_nav_label_ledcontroller">LED Controller</a></li>
<li><a data-toggle="tab" href="#menu_gencfg" data-i18n="conf_leds_nav_label_ledlayout">LED Layout</a></li>
</ul>
<h3 class="page-header"><i class="mdi mdi-lightbulb-on fa-fw"></i><span data-i18n="main_menu_leds_conf_token">LED Hardware</span></h3>
<div class="tab-content">
<div class="panel panel-default" style="border:0px;">
<div class="panel-heading panel-instance" style="border-radius:3px; border-bottom:0px;">
<div class="dropdown">
<a id="active_instance_dropdown" class="dropdown-toggle" data-toggle="dropdown" href="#" style="text-decoration:none;display:flex;align-items:center;">
<div id="active_instance_friendly_name"></div>
<div id="btn_hypinstanceswitch" style="white-space:nowrap;"><span class="mdi mdi-lightbulb-group mdi-24px" style="margin-right:0; margin-left:5px;"></span><span class="mdi mdi-menu-down mdi-24px"></span></div>
</a>
<ul id="hyp_inst_listing" class="dropdown-menu dropdown-alerts" style="cursor:pointer;"></ul>
</div>
</div>
</div>
<div id="menu_controller" class="tab-pane fade in active" style="padding-top:10px">
<div class="row">
<div class="col-lg-12" id="leddevice_intro"></div>
<div class="col-lg-6">
<div class="panel panel-default">
<div class="panel-heading form-group">
<label for="leddevices" class="panel-title" data-i18n="conf_leds_contr_label_contrtype">Controller type:</label>
<select id="leddevices" class="form-control" style="color:black;width:auto;margin-left:10px;display:inline-block" />
</div>
<ul id="leds_cfg_nav" class="nav nav-tabs">
<li class="active"><a data-toggle="tab" href="#menu_controller" data-i18n="conf_leds_nav_label_ledcontroller">LED Controller</a></li>
<li><a data-toggle="tab" href="#menu_gencfg" data-i18n="conf_leds_nav_label_ledlayout">LED Layout</a></li>
</ul>
<div class="panel-body">
<div id="btn_wiz_holder"></div>
<div id="ledDeviceOptions"> <div id='editor_container'></div> </div>
</div>
<div class="panel-footer" style="text-align:right">
<button id='btn_submit_controller' class="btn btn-primary"><i class="fa fa-fw fa-save" /><span data-i18n="general_button_savesettings">Save Settings</span></button>
</div>
</div>
</div>
</div>
</div>
<div class="tab-content">
<div id="menu_controller" class="tab-pane fade in active" style="padding-top:10px">
<div class="row">
<div class="col-lg-12" id="leddevice_intro"></div>
<div class="col-lg-6">
<div class="panel panel-default">
<div class="panel-heading form-group">
<label for="leddevices" class="panel-title" data-i18n="conf_leds_contr_label_contrtype">Controller type:</label>
<select id="leddevices" class="form-control" style="color:black;width:auto;margin-left:10px;display:inline-block"></select>
</div>
<div id="menu_gencfg" class="tab-pane fade" style="padding-top:10px">
<div class="panel-body">
<div id="btn_wiz_holder"></div>
<div id='editor_container_leddevice'></div>
<div id='info_container' class="bs-callout bs-callout-info" style="margin-top:0px">
<h4 data-i18n="dashboard_infobox_label_title">Information</h4>
<div id='info_container_text'>
<span data-i18n="conf_leds_device_info_log"> In case your LEDs do not work, check here for errors: </span>
<a onclick="SwitchToMenuItem('MenuItemLogging')" data-i18n="main_menu_logging_token" style="cursor:pointer"></a>
</div>
</div>
</div>
<div class="panel-footer" style="text-align:right">
<button id='btn_test_controller' class="btn btn-primary" disabled data-toggle="tooltip" data-placement="top" title="Identify configured device by lighting it up">
<i class="fa fa-fw fa-save"></i><span data-i18n="wiz_identify">Identify/Test</span>
</button>
<button id='btn_submit_controller' class="btn btn-primary" data-toggle="tooltip" data-placement="top" title="Save the device's connectivity configuration">
<i class="fa fa-fw fa-save"></i><span data-i18n="general_button_savesettings">Save Settings</span>
</button>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-12" id="layout_intro"></div>
<div class="col-lg-6 col-md-12">
<div class="panel-group" id="accordion">
<div class="panel panel-primary">
<div class="panel-heading headcollapse" data-toggle="collapse" data-parent="#accordion" data-target="#collapse1">
<h4 class="panel-title">
<a><i class="fa fa-television fa-fw"></i><span data-i18n="conf_leds_layout_frame">Classic Layout (LED Frame)</span></a>
</h4>
</div>
<div id="collapse1" class="panel-collapse collapse in">
<div class="panel-body">
<table class="table borderless">
<tbody>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_top" data-i18n="conf_leds_layout_cl_top">Top</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr " id="ip_cl_top" type="number" value="1" min="0" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_bottom" data-i18n="conf_leds_layout_cl_bottom">Bottom</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_bottom" type="number" value="0" min="0" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_left" data-i18n="conf_leds_layout_cl_left">Left</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_left" type="number" value="0" min="0" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_right" data-i18n="conf_leds_layout_cl_right">Right</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_right" type="number" value="0" min="0" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_glength" data-i18n="conf_leds_layout_cl_gaglength">Gap length</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_glength" type="number" value="0" min="0" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_gpos" data-i18n="conf_leds_layout_cl_gappos">Gap position</label>
</td>
<td class="itd">
<input class="form-control ledCLconstr" id="ip_cl_gpos" type="number" value="0" min="0" step="1">
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_position" data-i18n="conf_leds_layout_cl_inppos">Input position</label>
</td>
<td class="itd">
<input class="form-control ledCLconstr" id="ip_cl_position" type="number" value="0" min="0" step="1">
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_reverse" data-i18n="conf_leds_layout_cl_reversdir">Reverse direction</label>
</td>
<td class="itd">
<div class="checkbox">
<input class="ledCLconstr" id="ip_cl_reverse" type="checkbox" value="false"></input>
<label></label>
</div>
</td>
</tr>
</tbody>
</table>
<div class="panel panel-default">
<div class="panel-heading headcollapse" data-toggle="collapse" data-target="#collapse3">
<h4 class="panel-title">
<a><span data-i18n="conf_leds_layout_advanced">Advanced settings</span></a>
</h4>
</div>
<div id="collapse3" class="panel-collapse collapse">
<div class="panel-body ">
<table class="tableform borderless">
<tbody>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_hdepth" data-i18n="conf_leds_layout_cl_hleddepth">Horizontal LED depth</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_hdepth" type="number" value="8" min="1" max="100" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent">%</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_vdepth" data-i18n="conf_leds_layout_cl_vleddepth">Vertical LED depth</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_vdepth" type="number" value="5" min="1" max="100" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent">%</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_overlap" data-i18n="conf_leds_layout_cl_overlap">Edge Gap</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_overlap" type="number" value="0" min="0" max="200" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent">%</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_edgegap" data-i18n="conf_leds_layout_cl_edgegap">Edge Gap</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_edgegap" type="number" value="0" min="0" max="50" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent">%</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_ptl" data-i18n="conf_leds_layout_ptl">Point Top Left</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_ptlh" type="number" value="0" min="0" max="40" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent_h">%h</div>
</td>
</tr>
<tr>
<td class="ltd"></td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_ptlv" type="number" value="0" min="0" max="40" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent_v">%v</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_ptr" data-i18n="conf_leds_layout_ptr">Point Top Right</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_ptrh" type="number" value="100" min="60" max="100" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent_h">%</div>
</td>
</tr>
<tr>
<td class="ltd"></td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_ptrv" type="number" value="0" min="0" max="40" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent_v">%</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_pbr" data-i18n="conf_leds_layout_pbr">Point Bottom Right</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_pbrh" type="number" value="100" min="60" max="100" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent_h">%</div>
</td>
</tr>
<tr>
<td class="ltd"></td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_pbrv" type="number" value="100" min="60" max="100" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent_v">%</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_pbl" data-i18n="conf_leds_layout_pbl">Point Bottom Left</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_pblh" type="number" value="0" min="0" max="40" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent_h">%</div>
</td>
</tr>
<tr>
<td class="ltd"></td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_pblv" type="number" value="100" min="60" max="100" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent_v">%</div>
</td>
</tr>
<!-- <tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_cornergap" data-i18n="conf_leds_layout_cl_cornergap">Corner Gap</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr " id="ip_cl_cornergap" type="number" value="0" min="0" max="50" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent">%</div>
</td>
</tr>
-->
</tbody>
</table>
</div>
</div>
</div>
<div id="menu_gencfg" class="tab-pane fade" style="padding-top:10px">
</div>
<div class="panel-footer" style="text-align:right;">
<button id="btn_cl_save" class="btn btn-primary"><i class="fa fa-fw fa-save"></i><span data-i18n="conf_leds_layout_button_savelay">Save layout</span></button>
</div>
</div>
</div>
<div class="panel panel-primary">
<div class="panel-heading headcollapse" data-toggle="collapse" data-parent="#accordion" data-target="#collapse2">
<h4 class="panel-title">
<a><i class="fa fa-th fa-fw"></i><span data-i18n="conf_leds_layout_matrix">Matrix Configuration (LED wall)</span></a>
</h4>
</div>
<div id="collapse2" class="panel-collapse collapse">
<div class="panel-body">
<table>
<tbody>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_ma_ledshoriz" data-i18n="conf_leds_layout_ma_horiz">Horizontal</label>
</td>
<td class="itd input-group">
<input class="form-control ledMAconstr" id="ip_ma_ledshoriz" type="number" value="1" min="1" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_ma_ledsvert" data-i18n="conf_leds_layout_ma_vert">Vertical</label>
</td>
<td class="itd input-group">
<input class="form-control ledMAconstr" id="ip_ma_ledsvert" type="number" value="1" min="1" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_ma_cabling" data-i18n="conf_leds_layout_ma_cabling">Cabling</label>
</td>
<td class="itd">
<select class="form-control ledMAconstr" id="ip_ma_cabling">
<option value="snake" data-i18n="conf_leds_layout_ma_optsnake">Snake</option>
<option value="parallel" data-i18n="conf_leds_layout_ma_optparallel">Parallel</option>
</select>
</td>
</tr>
<!--- <tr>
<td class="ltd">
<label class="ltdlabel" for="ip_ma_order" data-i18n="conf_leds_layout_ma_order">Order</label>
</td>
<td class="itd">
<select class="form-control ledMAconstr" id="ip_ma_order">
<option value="horizontal" data-i18n="conf_leds_layout_ma_opthoriz">Horizontal</option>
<option value="vertical" data-i18n="conf_leds_layout_ma_optvert">Vertical</option>
</select>
</td>
</tr>
--->
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_ma_start" data-i18n="conf_leds_layout_ma_position">Input</label>
</td>
<td class="itd">
<select class="form-control ledMAconstr" id="ip_ma_start">
<option value="top-left" data-i18n="conf_leds_layout_ma_opttopleft">Top left</option>
<option value="top-right" data-i18n="conf_leds_layout_ma_opttopright">Top right</option>
<option value="bottom-left" data-i18n="conf_leds_layout_ma_optbottomleft">Bottom left</option>
<option value="bottom-right" data-i18n="conf_leds_layout_ma_optbottomright">Bottom right</option>
</select>
</td>
</tr>
</tbody>
</table>
</div>
<div class="panel-footer" style="text-align:right;">
<button id="btn_ma_save" class="btn btn-primary"><i class="fa fa-fw fa-save"></i><span data-i18n="conf_leds_layout_button_savelay">Save layout</span></button>
</div>
</div>
</div>
<div id="texfield_panel" class="panel panel-primary">
<div class="panel-heading headcollapse" data-toggle="collapse" data-parent="#accordion" data-target="#collapse4">
<h4 class="panel-title">
<a><i class="fa fa-wrench fa-fw"></i><span data-i18n="conf_leds_layout_generatedconf">Generated/Actual LED Configuration</span></a>
</h4>
</div>
<div id="collapse4" class="panel-collapse collapse">
<div class="panel-body">
<p id="leds_wl" data-i18n="conf_leds_layout_textf1">This textfield shows by default your current loaded layout and will be overwritten if you generate a new one above. Optional you could perform further edits.</p>
<div id="aceedit" style="width:100%;height:500px"></div>
</div>
<div class="panel-footer">
<button type="button" class="btn btn-warning" id="leds_custom_updsim"><i class="fa fa-search fa-fw"></i><span data-i18n="conf_leds_layout_button_updsim">Update preview</span></button>
<button type="button" class="btn btn-primary pull-right" id="leds_custom_save"><i class="fa fa-fw fa-save"></i><span data-i18n="conf_leds_layout_button_savelay">Save layout</span></button>
</div>
</div>
</div>
</div>
</div> <!-- accordion -->
<div class="col-lg-6 col-md-12">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title"><i class="fa fa-search fa-fw"></i><span data-i18n="conf_leds_layout_peview">LED Layout preview</span></h4>
</div>
<div class="panel-body">
<p id="previewcreator" style="font-weight:bold"></p>
<p id="previewledcount" style="font-weight:bold"></p>
<p id="previewledpower" style="font-weight:bold"></p>
<div id="led_vis_help"></div>
<div class="col-lg-12 st_helper" style="padding-left:0px; padding-right:0px">
<div id="leds_preview"></div>
</div>
</div>
<div class="panel-footer">
<button type="button" class="btn btn-danger" id="leds_prev_toggle_num"><i class="fa fa-info fa-fw"></i><span data-i18n="main_ledsim_btn_togglelednumber">toggle led numbers</span></button>
<button type="button" class="btn btn-primary" id="leds_prev_checklist"><i class="fa fa-info-circle fa-fw"></i><span data-i18n="conf_leds_layout_btn_checklist">toggle led numbers</span></button>
</div>
</div>
</div>
</div>
</div> <!-- row layout -->
</div>
</div>
</div> <!-- tab content -->
<div class="row">
<div class="col-lg-12" id="layout_intro"></div>
<div class="col-lg-6 col-md-12">
<div class="panel-group" id="accordion">
<div class="panel panel-primary">
<div class="panel-heading headcollapse" id="classic_panel" data-toggle="collapse" data-parent="#accordion" data-target="#collapse1">
<h4 class="panel-title">
<a><i class="fa fa-television fa-fw"></i><span data-i18n="conf_leds_layout_frame">Classic Layout (LED Frame)</span></a>
</h4>
</div>
<div id="collapse1" class="panel-collapse collapse">
<div class="panel-body">
<table class="table borderless">
<tbody>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_top" data-i18n="conf_leds_layout_cl_top">Top</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr " id="ip_cl_top" type="number" value="1" min="0" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_bottom" data-i18n="conf_leds_layout_cl_bottom">Bottom</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_bottom" type="number" value="0" min="0" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_left" data-i18n="conf_leds_layout_cl_left">Left</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_left" type="number" value="0" min="0" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_right" data-i18n="conf_leds_layout_cl_right">Right</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_right" type="number" value="0" min="0" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_glength" data-i18n="conf_leds_layout_cl_gaglength">Gap length</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_glength" type="number" value="0" min="0" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_gpos" data-i18n="conf_leds_layout_cl_gappos">Gap position</label>
</td>
<td class="itd">
<input class="form-control ledCLconstr" id="ip_cl_gpos" type="number" value="0" min="0" step="1">
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_position" data-i18n="conf_leds_layout_cl_inppos">Input position</label>
</td>
<td class="itd">
<input class="form-control ledCLconstr" id="ip_cl_position" type="number" value="0" min="0" step="1">
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_reverse" data-i18n="conf_leds_layout_cl_reversdir">Reverse direction</label>
</td>
<td class="itd">
<div class="checkbox">
<input class="ledCLconstr" id="ip_cl_reverse" type="checkbox" value="false"></input>
<label></label>
</div>
</td>
</tr>
</tbody>
</table>
<div class="panel panel-default">
<div class="panel-heading headcollapse" data-toggle="collapse" data-target="#collapse3">
<h4 class="panel-title">
<a><span data-i18n="conf_leds_layout_advanced">Advanced settings</span></a>
</h4>
</div>
<div id="collapse3" class="panel-collapse collapse">
<div class="panel-body ">
<table class="tableform borderless">
<tbody>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_hdepth" data-i18n="conf_leds_layout_cl_hleddepth">Horizontal LED depth</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_hdepth" type="number" value="8" min="1" max="100" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent">%</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_vdepth" data-i18n="conf_leds_layout_cl_vleddepth">Vertical LED depth</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_vdepth" type="number" value="5" min="1" max="100" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent">%</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_overlap" data-i18n="conf_leds_layout_cl_overlap">Edge Gap</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_overlap" type="number" value="0" min="0" max="200" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent">%</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_edgegap" data-i18n="conf_leds_layout_cl_edgegap">Edge Gap</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_edgegap" type="number" value="0" min="0" max="50" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent">%</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_ptl" data-i18n="conf_leds_layout_ptl">Point Top Left</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_ptlh" type="number" value="0" min="0" max="40" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent_h">%h</div>
</td>
</tr>
<tr>
<td class="ltd"></td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_ptlv" type="number" value="0" min="0" max="40" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent_v">%v</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_ptr" data-i18n="conf_leds_layout_ptr">Point Top Right</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_ptrh" type="number" value="100" min="60" max="100" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent_h">%</div>
</td>
</tr>
<tr>
<td class="ltd"></td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_ptrv" type="number" value="0" min="0" max="40" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent_v">%</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_pbr" data-i18n="conf_leds_layout_pbr">Point Bottom Right</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_pbrh" type="number" value="100" min="60" max="100" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent_h">%</div>
</td>
</tr>
<tr>
<td class="ltd"></td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_pbrv" type="number" value="100" min="60" max="100" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent_v">%</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_pbl" data-i18n="conf_leds_layout_pbl">Point Bottom Left</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_pblh" type="number" value="0" min="0" max="40" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent_h">%</div>
</td>
</tr>
<tr>
<td class="ltd"></td>
<td class="itd input-group">
<input class="form-control ledCLconstr" id="ip_cl_pblv" type="number" value="100" min="60" max="100" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent_v">%</div>
</td>
</tr>
<!-- <tr>
<td class="ltd">
<label class="ltdlabel" for="ip_cl_cornergap" data-i18n="conf_leds_layout_cl_cornergap">Corner Gap</label>
</td>
<td class="itd input-group">
<input class="form-control ledCLconstr " id="ip_cl_cornergap" type="number" value="0" min="0" max="50" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_percent">%</div>
</td>
</tr>
-->
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="panel-footer" style="text-align:right;">
<button id="btn_cl_save" class="btn btn-primary"><i class="fa fa-fw fa-save"></i><span data-i18n="conf_leds_layout_button_savelay">Save layout</span></button>
</div>
</div>
</div>
<div class="panel panel-primary">
<div class="panel-heading headcollapse" id="matrix_panel" data-toggle="collapse" data-parent="#accordion" data-target="#collapse2">
<h4 class="panel-title">
<a><i class="fa fa-th fa-fw"></i><span data-i18n="conf_leds_layout_matrix">Matrix Configuration (LED wall)</span></a>
</h4>
</div>
<div id="collapse2" class="panel-collapse collapse">
<div class="panel-body">
<table>
<tbody>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_ma_ledshoriz" data-i18n="conf_leds_layout_ma_horiz">Horizontal</label>
</td>
<td class="itd input-group">
<input class="form-control ledMAconstr" id="ip_ma_ledshoriz" type="number" value="1" min="1" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_ma_ledsvert" data-i18n="conf_leds_layout_ma_vert">Vertical</label>
</td>
<td class="itd input-group">
<input class="form-control ledMAconstr" id="ip_ma_ledsvert" type="number" value="1" min="1" step="1"></input>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_ma_cabling" data-i18n="conf_leds_layout_ma_cabling">Cabling</label>
</td>
<td class="itd">
<select class="form-control ledMAconstr" id="ip_ma_cabling">
<option value="snake" data-i18n="conf_leds_layout_ma_optsnake">Snake</option>
<option value="parallel" data-i18n="conf_leds_layout_ma_optparallel">Parallel</option>
</select>
</td>
</tr>
<tr>
<td class="ltd">
<label class="ltdlabel" for="ip_ma_start" data-i18n="conf_leds_layout_ma_position">Input</label>
</td>
<td class="itd">
<select class="form-control ledMAconstr" id="ip_ma_start">
<option value="top-left" data-i18n="conf_leds_layout_ma_opttopleft">Top left</option>
<option value="top-right" data-i18n="conf_leds_layout_ma_opttopright">Top right</option>
<option value="bottom-left" data-i18n="conf_leds_layout_ma_optbottomleft">Bottom left</option>
<option value="bottom-right" data-i18n="conf_leds_layout_ma_optbottomright">Bottom right</option>
</select>
</td>
</tr>
</tbody>
</table>
</div>
<div class="panel-footer" style="text-align:right;">
<button id="btn_ma_save" class="btn btn-primary"><i class="fa fa-fw fa-save"></i><span data-i18n="conf_leds_layout_button_savelay">Save layout</span></button>
</div>
</div>
</div>
<div id="blacklist_panel" class="panel panel-primary">
<div class="panel-heading headcollapse" id="blacklist_config_panel" data-toggle="collapse" data-parent="#accordion" data-target="#collapse4">
<h4 class="panel-title">
<a><i class="fa fa-ban fa-fw"></i><span data-i18n="conf_leds_layout_blacklistleds_title">Blacklist LEDs</span></a>
</h4>
</div>
<div id="collapse4" class="panel-collapse collapse">
<div class="panel-body">
<div id="editor_container_blacklist_conf"></div>
</div>
<div class="panel-footer" style="text-align:right;">
<button id="btn_bl_save" class="btn btn-primary"><i class="fa fa-fw fa-save"></i><span data-i18n="conf_leds_layout_button_savelay">Save layout</span></button>
</div>
</div>
</div>
<div id="texfield_panel" class="panel panel-primary">
<div class="panel-heading headcollapse" id="current_config_panel" data-toggle="collapse" data-parent="#accordion" data-target="#collapse5">
<h4 class="panel-title">
<a><i class="fa fa-wrench fa-fw"></i><span data-i18n="conf_leds_layout_generatedconf">Generated/Actual LED Configuration</span></a>
</h4>
</div>
<div id="collapse5" class="panel-collapse collapse in">
<div class="panel-body">
<p id="leds_wl" data-i18n="conf_leds_layout_textf1">This textfield shows by default your current loaded layout and will be overwritten if you generate a new one above. Optional you could perform further edits.</p>
<div id="aceedit" style="width:100%;height:500px"></div>
</div>
<div class="panel-footer">
<button type="button" class="btn btn-warning" id="leds_custom_updsim"><i class="fa fa-search fa-fw"></i><span data-i18n="conf_leds_layout_button_updsim">Update preview</span></button>
<button type="button" class="btn btn-primary pull-right" id="leds_custom_save"><i class="fa fa-fw fa-save"></i><span data-i18n="conf_leds_layout_button_savelay">Save layout</span></button>
</div>
</div>
</div>
</div>
</div> <!-- accordion -->
<div class="col-lg-6 col-md-12">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title"><i class="fa fa-search fa-fw"></i><span data-i18n="conf_leds_layout_peview">LED Layout preview</span></h4>
</div>
<div class="panel-body">
<p id="previewcreator" style="font-weight:bold"></p>
<p id="previewledcount" style="font-weight:bold"></p>
<p id="previewledpower" style="font-weight:bold"></p>
<div id="led_vis_help"></div>
<div class="col-lg-12 st_helper" style="position:relative; padding-left:0px; padding-right:0px">
<canvas id="image_preview" style="position:absolute; z-index:0"></canvas>
<div id="leds_preview"></div>
</div>
</div>
<div class="panel-footer">
<button type="button" class="btn btn-danger" id="leds_prev_toggle_num"><i class="fa fa-info fa-fw"></i><span data-i18n="main_ledsim_btn_togglelednumber">toggle led numbers</span></button>
<button type="button" class="btn btn-danger" id="leds_prev_toggle_live_video"><i class="fa fa-fw fa-television"></i><span data-i18n="main_ledsim_btn_togglelivevideo">toggle live video</span></button>
<button type="button" class="btn btn-primary" id="leds_prev_checklist"><i class="fa fa-info-circle fa-fw"></i><span data-i18n="conf_leds_layout_btn_checklist">toggle led numbers</span></button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="/js/content_leds.js"></script>

View File

@ -1,21 +1,22 @@
<div class="container-fluid" id="trans_conf_logging">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header"><i class="fa fa-reorder fa-fw"></i><span data-i18n="main_menu_logging_token">Log</span></h3>
<div id="log_head"></div>
<div class="row" id='conf_cont'></div>
<hr />
<div id="log_content"><span style="font-weight:bold;font-size:17px" data-i18n="conf_logging_nomessage"></span></div>
<hr>
<div style="display:none">
<h4 style="font-weight:bold"><i class="fa fa-reorder fa-fw"></i><span data-i18n="conf_logging_report">Bericht</span></h4>
<button class="btn btn-primary" id="btn_logupload"><i class="fa fa-upload fa-fw"></i><span data-i18n="conf_logging_btn_pbupload"></span></button>
<div id="log_upl_pol"></div>
<div id="upl_link" style="margin-top:10px;font-weight:bold;"></div>
<div id="prev_reports"></div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<h3 class="page-header"><i class="fa fa-reorder fa-fw"></i><span data-i18n="main_menu_logging_token">Log</span></h3>
<div id="log_head"></div>
<div class="row" id='conf_cont'></div>
</div>
<div class="col-lg-12">
<div class="panel panel-default">
<div class="panel-heading"><i class="fa fa-book fa-fw"></i><span data-i18n="conf_logging_logoutput"></span></div>
<div class="panel-body">
<div id="log_content"><span style="font-weight:bold;font-size:17px" data-i18n="conf_logging_nomessage"></span></div>
</div>
<div class="panel-footer" id="log_footer">
</div>
</div>
</div>
</div>
</div>
<script src="/js/content_logging.js"></script>

View File

@ -1,12 +1,12 @@
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header"><i class="fa fa-sitemap fa-fw"></i><span data-i18n="main_menu_network_conf_token">Network Services</span></h3>
<h3 class="page-header"><i class="fa fa-sitemap fa-fw"></i><span data-i18n="main_menu_network_conf_token">Network Services</span></h3>
<div id="conf_cont">
<div class="row" id="conf_cont_tok">
<div class="col-lg-6" id="tok_desc">
<div class="panel panel-default">
<div class="panel-heading"><i class="fa fa-key fa-fw"></i><span data-i18n="conf_network_tok_title"></span></div>
<div class="panel-heading panel-system"><i class="fa fa-key fa-fw"></i><span data-i18n="conf_network_tok_title"></span></div>
<div class="panel-body">
<div id="tok_desc_cont"></div>
<div id="tktable"></div>
@ -34,4 +34,4 @@
</div>
</div>
<script src="/js/content_network.js"></script>
<script src="/js/content_network.js"></script>

File diff suppressed because one or more lines are too long

View File

@ -1,98 +1,132 @@
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header"><i class="fa fa-dashboard fa-fw"></i><span data-i18n="main_menu_dashboard_token">Dashboard</span></h3>
<div id="dash_intro">
<div class="row">
<div class="col-md-6 col-xxl-4">
<div class="panel panel-default">
<div class="panel-heading">
<i class="fa fa-info-circle fa-fw"></i>
<span data-i18n="dashboard_infobox_label_title">Information</span>
</div>
<div class="panel-body">
<table class="table borderless">
<tbody>
<tr>
<td data-i18n="dashboard_infobox_label_statush"></td>
<td id="dash_statush" style="font-weight:bold">unknown</td>
</tr>
<tr>
<td data-i18n="dashboard_infobox_label_platform">Platform:</td>
<td id="dash_platform"></td>
</tr>
<tr>
<td data-i18n="conf_leds_contr_label_contrtype">LED type:</td>
<td id="dash_leddevice"></td>
</tr>
<tr>
<td data-i18n="dashboard_infobox_label_instance">Instance</td>
<td id="dash_instance"></td>
</tr>
<tr>
<td data-i18n="dashboard_infobox_label_ports">Ports</td>
<td id="dash_ports"></td>
</tr>
<tr>
<td data-i18n="dashboard_infobox_label_currenthyp">Hyperion version:</td>
<td id="dash_currv">unknown</td>
</tr>
<tr>
<td data-i18n="dashboard_infobox_label_watchedversionbranch">Watched version branch:</td>
<td id="dash_watchedversionbranch">unknown</td>
</tr>
<tr>
<td data-i18n="dashboard_infobox_label_latesthyp">Latest version:</td>
<td id="dash_latev">unknown</td>
</tr>
</tbody>
</table>
<hr>
<p style="font-weight:bold" data-i18n="dashboard_infobox_label_smartacc">Smart Access<p>
<span id="btn_hsc"></span>
<hr>
<span id="versioninforesult"></span>
</div>
</div>
</div>
<div class="col-md-6 col-xxl-3">
<div class="panel panel-default">
<div class="panel-heading">
<i class="fa fa-eye fa-fw"></i>
<span data-i18n="dashboard_componentbox_label_title">Components status</span>
</div>
<div class="panel-body">
<table class="table">
<thead>
<tr>
<th data-i18n="dashboard_componentbox_label_comp">Component</th>
<th data-i18n="dashboard_componentbox_label_status">Status</th>
</tr>
</thead>
<tbody id="tab_components">
</tbody>
</table>
</div>
</div>
</div>
<div class="col-md-12 col-xxl-5" style="display:none">
<div class="panel panel-default">
<div class="panel-heading">
<i class="fa fa-newspaper-o fa-fw"></i>
<span data-i18n="dashboard_newsbox_label_title">Visit Hyperion Blog</span>
</div>
<div class="panel-body">
<div id="dash_news" style="margin-bottom:7px"></div>
<a href="https://hyperion-project.org/blog/?pk_campaign=WebUI&pk_kwd=visitblog" target="_blank" data-i18n="dashboard_newsbox_visitblog"></a>
</div>
</div>
</div>
</div>
</div>
<!-- /.col-lg-12 -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header"><i class="fa fa-dashboard fa-fw"></i><span data-i18n="main_menu_dashboard_token">Dashboard</span></h3>
<script src="/js/content_dashboard.js"></script>
<!-- Infobox -->
<div id="dash_intro">
<!-- Instance(s) -->
<div class="row instances">
<!-- Config status -->
<div class="col-md-6 col-xxl-4">
<div class="panel panel-default">
<div class="panel-heading panel-system">
<span id="dash_config_status">Status</span>
</div>
<div class="panel-body">
<table class="table borderless">
<thead>
<tr>
<th colspan="3">
<i class="mdi mdi-camera"></i>
<span data-i18n="main_menu_grabber_conf_token">Capturing Hardware</span>
</th>
</tr>
</thead>
<tbody>
<tr>
<td></td>
<td data-i18n="edt_conf_fg_heading_title">Screen-Grabber</td>
<td style="text-align: right; padding-right: 0">
<span id="dash_screen_grabber">disabled</span>
<a class="fa fa-cog fa-fw" onclick="SwitchToMenuItem('MenuItemGrabber', 'editor_container_screengrabber')" style="text-decoration: none; cursor: pointer"></a>
</td>
</tr>
<tr>
<td></td>
<td data-i18n="edt_conf_v4l2_heading_title">Video-Grabber</td>
<td style="text-align: right; padding-right: 0">
<span id="dash_video_grabber">disabled</span>
<a class="fa fa-cog fa-fw" onclick="SwitchToMenuItem('MenuItemGrabber', 'editor_container_videograbber')" style="text-decoration: none; cursor: pointer"></a>
</td>
</tr>
</tbody>
</table>
<table class="table borderless">
<thead>
<tr>
<th colspan="3">
<i class="mdi mdi-lan"></i>
<span data-i18n="dashboard_infobox_label_ports">Ports</span>
</th>
</tr>
</thead>
<tbody>
<tr>
<td></td>
<td data-i18n="dashboard_infobox_label_port_proto">proto</td>
<td style="text-align: right; padding-right: 0">
<span id="dash_pbPort">unknown</span>
<a class="fa fa-cog fa-fw" onclick="SwitchToMenuItem('MenuItemNetwork', 'editor_container_protoserver')" style="text-decoration: none; cursor: pointer"></a>
</td>
</tr>
<tr>
<td></td>
<td data-i18n="dashboard_infobox_label_port_flat">flat</td>
<td style="text-align: right; padding-right: 0">
<span id="dash_fbPort">unknown</span>
<a class="fa fa-cog fa-fw" onclick="SwitchToMenuItem('MenuItemNetwork', 'editor_container_fbserver')" style="text-decoration: none; cursor: pointer"></a>
</td>
</tr>
<tr>
<td></td>
<td data-i18n="dashboard_infobox_label_port_json">json</td>
<td style="text-align: right; padding-right: 0">
<span id="dash_jsonPort">unknown</span>
<a class="fa fa-cog fa-fw" onclick="SwitchToMenuItem('MenuItemNetwork', 'editor_container_jsonserver')" style="text-decoration: none; cursor: pointer"></a>
</td>
</tr>
<tr>
<td></td>
<td data-i18n="dashboard_infobox_label_ports_websocket">websocket</td>
<td style="text-align: right; padding-right: 0">
<span id="dash_wsPorts">unknown</span>
<a class="fa fa-cog fa-fw" onclick="SwitchToMenuItem('MenuItemWeb')" style="text-decoration: none; cursor: pointer"></a>
</td>
</tr>
</tbody>
</table>
<table class="table borderless">
<thead>
<tr>
<th colspan="3">
<i class="mdi mdi-numeric"></i>
<span data-i18n="about_version">Version</span>
</th>
</tr>
</thead>
<tbody>
<tr>
<td></td>
<td data-i18n="dashboard_infobox_label_currenthyp">Hyperion version:</td>
<td id="dash_currv" style="text-align: right">unknown</td>
</tr>
<tr>
<td></td>
<td data-i18n="dashboard_infobox_label_watchedversionbranch">Watched version branch:</td>
<td id="dash_watchedversionbranch" style="text-align: right">unknown</td>
</tr>
<tr>
<td></td>
<td data-i18n="dashboard_infobox_label_latesthyp">Latest version:</td>
<td id="dash_latev" style="text-align: right">unknown</td>
</tr>
</tbody>
</table>
<hr>
<span id="versioninforesult"></span>
</div>
</div>
</div>
</div>
</div>
<!-- /.col-lg-12 -->
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
<script src="/js/content_dashboard.js"></script>

View File

@ -1,7 +1,20 @@
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header"><i class="fa fa-cogs fa-fw"></i><span data-i18n="main_menu_effectsconfigurator_token">Effects Configurator</span></h3>
<h3 class="page-header"><i class="fa fa-cogs fa-fw"></i><span data-i18n="main_menu_effectsconfigurator_token">Effects Configurator</span></h3>
<div class="panel panel-default" style="border:0px;">
<div class="panel-heading panel-instance" style="border-radius:3px; border-bottom:0px;">
<div class="dropdown">
<a id="active_instance_dropdown" class="dropdown-toggle" data-toggle="dropdown" href="#" style="text-decoration:none;display:flex;align-items:center;">
<div id="active_instance_friendly_name"></div>
<div id="btn_hypinstanceswitch" style="white-space:nowrap;"><span class="mdi mdi-lightbulb-group mdi-24px" style="margin-right:0; margin-left:5px;"></span><span class="mdi mdi-menu-down mdi-24px"></span></div>
</a>
<ul id="hyp_inst_listing" class="dropdown-menu dropdown-alerts" style="cursor:pointer;"></ul>
</div>
</div>
</div>
<div id="intro_effc">
</div>
<div class="row">
@ -20,7 +33,7 @@
<td class="itd"><input class="form-control" type="text" id="name-input" /></td>
</tr>
</tbody>
</table>
</table>
<div id="editor_container" />
</div>
<div class="panel-footer" id="eff_footer">

View File

@ -5,7 +5,7 @@
<style> body {margin:auto; padding:2%; text-align:center; font-family:arial;}</style>
</head>
<body>
<img src="../img/hyperion/hyperionlogo.png" alt="Redefine ambient light!" style="margin-bottom:20px;">
<img src="../img/hyperion/logo_positiv.png" alt="Redefine ambient light!" style="margin-bottom:20px;">
<h2><span style="color:red">We are sorry, Internet Explorer is not supported!</span><br /><br /> Please use recent versions of Firefox, Chrome, Safari or MS Edge.</h2>
</body>
</html>

View File

@ -1,35 +1,40 @@
<div class="container" style="margin:20px auto;max-width:500px;">
<center>
<div>
<div class="panel panel-danger">
<div class="panel-heading">
<h3 class="panel-title">Login</h3>
</div>
<div class="panel-body">
<form>
<div class="form-group">
<input name="password" class="form-control" type="password" id="password" placeholder="Password" autocomplete="off"/>
<input name="show_pw" type="checkbox" id="show_pw"/><label for="show_pw">Show/Hide Password</label>
</div>
<div class="form-group">
<button type="submit" class="btn btn-sm btn-success" id="btn_password" onclick="requestAuthorization(document.getElementById('password').value); return false;" disabled><i class="fa fa-fw fa-unlock"></i>Login</button>
</div>
</form>
</div>
</div>
</div>
</center>
<center>
<div>
<div class="panel panel-danger">
<div class="panel-heading panel-system">
<h3 class="panel-title">Login</h3>
</div>
<div class="panel-body">
<form>
<div class="form-group">
<input type="name="username" class="form-control" type="text" id="username" value="Hyperion" disabled/></br>
<input name="password" class="form-control" type="password" id="password" placeholder="Password" autocomplete="off"/>
<input name="show_pw" type="checkbox" id="show_pw" /><label for="show_pw">Show/Hide Password</label>
</div>
<div class="form-group">
<button type="submit" class="btn btn-sm btn-success" id="btn_password" onclick="requestAuthorization(document.getElementById('password').value); return false;"><i class="fa fa-fw fa-unlock"></i>Login</button>
</div>
</form>
</div>
</div>
</div>
</center>
</div>
<script>
removeOverlay();
removeOverlay();
$('#password').off().on('input',function(e) {
if(e.currentTarget.value.length >= 8)
$('#btn_password').removeAttr('disabled');
});
$('#password').off().on('input', function (e) {
if (e.currentTarget.value.length >= 8) {
$('#btn_password').prop('disabled', false);
}
else {
$('#btn_password').prop('disabled', true);
}
});
$('#show_pw').off().on('change',function(e) {
(e.currentTarget.checked ? $('#password').attr('type', 'text') : $('#password').attr('type', 'password'))
});
$('#show_pw').off().on('change', function (e) {
(e.currentTarget.checked ? $('#password').attr('type', 'text') : $('#password').attr('type', 'password'))
});
</script>

View File

@ -1,5 +1,18 @@
<div class="container-fluid">
<h3 class="page-header"><i class="fa fa-wifi fa-fw"></i><span data-i18n="main_menu_remotecontrol_token">Remote Control</span></h3>
<div class="panel panel-default" style="border:0px;">
<div class="panel-heading panel-instance" style="border-radius:3px; border-bottom:0px;">
<div class="dropdown">
<a id="active_instance_dropdown" class="dropdown-toggle" data-toggle="dropdown" href="#" style="text-decoration:none;display:flex;align-items:center;">
<div id="active_instance_friendly_name"></div>
<div id="btn_hypinstanceswitch" style="white-space:nowrap;"><span class="mdi mdi-lightbulb-group mdi-24px" style="margin-right:0; margin-left:5px;"></span><span class="mdi mdi-menu-down mdi-24px"></span></div>
</a>
<ul id="hyp_inst_listing" class="dropdown-menu dropdown-alerts" style="cursor:pointer;"></ul>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12 col-lg-8 col-xxl-7">
<div class="panel panel-default" >

View File

@ -3,110 +3,24 @@
<div class="col-xs-12">
<h3 class="page-header"><i class="fa fa-info fa-fw"></i><span data-i18n="support_label_title">Support Hyperion</span></h3>
<div id="supp_intro"></div>
<div style="display:none">
<h4 style="font-weight: bold" data-i18n="support_label_spreadtheword">Spread the word</h4>
<a href="https://www.facebook.com/Hyperion-1415088231896140/" target="_blank" class="unlink">
<div class="col-xs-12 col-sm-6 col-lg-3 support-container">
<i class="fa fa-facebook bg-color-fb"></i>
<h4>Facebook</h4>
<p data-i18n="support_label_fbtext">Share our Hyperion Facebook page and get a notice when new updates are released</p>
</div>
</a>
<a href="https://twitter.com/HyperionAmbient" target="_blank" class="unlink">
<div class="col-xs-12 col-sm-6 col-lg-3 support-container">
<i class="fa fa-twitter bg-color-tw"></i>
<h4>Twitter</h4>
<p data-i18n="support_label_twtext">Share and follow on Twitter, be always up to date with latest post about the Hyperion development</p>
</div>
</a>
<a href="https://plus.google.com/103082579494653418604" target="_blank" class="unlink">
<div class="col-xs-12 col-sm-6 col-lg-3 support-container">
<i class="fa fa-google-plus bg-color-g"></i>
<h4>Google+</h4>
<p data-i18n="support_label_ggtext">Circle us on Google +!</p>
</div>
</a>
<a href="https://www.youtube.com/channel/UCCah_idbSMqgo4UwP6R9H-A" target="_blank" class="unlink">
<div class="col-xs-12 col-sm-6 col-lg-3 support-container">
<i class="fa fa-youtube bg-color-g"></i>
<h4>Youtube</h4>
<p data-i18n="support_label_yttext">Bored from pictures? Checkout our Youtube channel!</p>
</div>
</a>
<a href="https://www.instagram.com/hyperionambient/" target="_blank" class="unlink">
<div class="col-xs-12 col-sm-6 col-lg-3 support-container">
<i class="fa fa-instagram bg-color-ig"></i>
<h4>Instagram</h4>
<p data-i18n="support_label_igtext"></p>
</div>
</a>
</div>
</div>
<div class="col-xs-12" style="display:none">
<hr>
<h4 style="font-weight: bold" data-i18n="support_label_donate">Donate or use our affiliate links</h4>
<ol>
<li data-i18n="support_label_affinstr1">Click on the appropriate link of your country</li>
<li data-i18n="support_label_affinstr2">Everything you buy (doesnt matter what) we get a small fee based on your turnover</li>
<li data-i18n="support_label_affinstr3">You ALWAYS pay the same price, there is absolutely no difference. Try it out!</li>
</ol>
<div class="col-xs-12 col-sm-6 col-lg-3 support-container">
<i class="fa fa-amazon bg-color-am"></i>
<h4>Amazon</h4>
<ul>
<li><a href="https://www.amazon.de/?tag=hyperionproje-21" target="_blank" data-i18n="general_country_de">Germany</a></li>
<li><a href="https://www.amazon.com/?tag=hyperionpro05-20" target="_blank" data-i18n="general_country_us">United States</a></li>
<li><a href="https://www.amazon.co.uk/?tag=hyperionpro02-21" target="_blank" data-i18n="general_country_uk">United Kingdom</a></li>
<li><a href="https://www.amazon.fr/?tag=hyperionpro0c-21" target="_blank" data-i18n="general_country_fr">France</a></li>
<li><a href="https://www.amazon.es/?tag=hyperionpro07-21" target="_blank" data-i18n="general_country_es">Spain</a></li>
<li><a href="https://www.amazon.it/?tag=hyperionpro00-21" target="_blank" data-i18n="general_country_it">Italy</a></li>
</ul>
</div>
<div class="col-xs-12 col-sm-6 col-lg-3 support-container">
<i class="fa fa-shopping-cart bg-color-am"></i>
<h4>eBay</h4>
<ul>
<li><a href="https://rover.ebay.com/rover/1/707-53477-19255-0/1?pub=5575174930&toolid=10001&campid=707-53477-19255-0&customid=&mpt=9592320&mpre=https%3A%2F%2Fwww.ebay.de" target="_blank" data-i18n="general_country_de">Germany</a></li>
<li><a href="https://rover.ebay.com/rover/1/711-53200-19255-0/1?pub=5575174930&toolid=10001&campid=711-53200-19255-0&customid=&mpt=8091563&mpre=https%3A%2F%2Fwww.ebay.com" target="_blank" data-i18n="general_country_us">United States</a></li>
<li><a href="https://rover.ebay.com/rover/1/710-53481-19255-0/1?pub=5575174930&toolid=10001&campid=710-53481-19255-0&customid=&mpt=9837178&mpre=https%3A%2F%2Fwww.ebay.co.uk" target="_blank" data-i18n="general_country_uk">United Kingdom</a></li>
<li><a href="https://rover.ebay.com/rover/1/1346-53482-19255-0/1?pub=5575174930&toolid=10001&campid=1346-53482-19255-0&customid=&mpt=9890408&mpre=https%3A%2F%2Fwww.ebay.nl" target="_blank" data-i18n="general_country_nl">Netherlands</a></li>
<li><a href="https://rover.ebay.com/rover/1/709-53476-19255-0/1?pub=5575174930&toolid=10001&campid=709-53476-19255-0&customid=&mpt=9865977&mpre=https%3A%2F%2Fwww.ebay.fr" target="_blank" data-i18n="general_country_fr">France</a></li>
<li><a href="https://rover.ebay.com/rover/1/1185-53479-19255-0/1?pub=5575174930&toolid=10001&campid=1185-53479-19255-0&customid=&mpt=1016300&mpre=https%3A%2F%2Fwww.ebay.es" target="_blank" data-i18n="general_country_es">Spain</a></li>
</ul>
</div>
<div class="col-xs-12 col-sm-6 col-lg-3 support-container">
<i class="fa fa-paypal bg-color-pp"></i>
<h4>PayPal</h4>
<p data-i18n="support_label_donationpp">Donation:</p><a href="https://www.paypal.me/hyperionproject/10" target="_blank">Paypal</a>
</div>
<div class="col-xs-12 col-sm-6 col-lg-3 support-container">
<i class="fa fa-btc bg-color-btc"></i>
<h4>Bitcoin</h4>
<p data-i18n="support_label_btctext">Address:</p>
<p style="word-break: break-all;">1GGZbsT6fH3cGq25H5HS2PfisPfDnffSJR</p>
</div>
</div>
<div class="col-xs-12">
<hr>
<h4 style="font-weight: bold" data-i18n="support_label_webrestitle">Information and help ressources</h4>
<a href="https://www.hyperion-project.org?pk_campaign=WebUI&pk_kwd=support_webpage" target="_blank" class="unlink">
<a href="https://hyperion-project.org" target="_blank" class="unlink">
<div class="col-xs-12 col-sm-6 col-lg-3 support-container">
<i class="fa fa-globe bg-color-wf"></i>
<h4 data-i18n="support_label_webpagetitle">Webpage</h4>
<p data-i18n="support_label_webpagetext">Home of Hyperion</p>
</div>
</a>
<a href="https://wiki.hyperion-project.org?pk_campaign=WebUI&pk_kwd=support_wiki" target="_blank" class="unlink">
<a href="https://docs.hyperion-project.org" target="_blank" class="unlink">
<div class="col-xs-12 col-sm-6 col-lg-3 support-container">
<i class="fa fa-book bg-color-wf"></i>
<h4 data-i18n="support_label_wikititle">Wiki</h4>
<h4 data-i18n="support_label_wikititle">Documentation</h4>
<p data-i18n="support_label_wikitext">The A to Z source for almost everything Hyperion related</p>
</div>
</a>
<a href="https://forum.hyperion-project.org?pk_campaign=WebUI&pk_kwd=support_forum" target="_blank" class="unlink">
<a href="https://hyperion-project.org/forum/" target="_blank" class="unlink">
<div class="col-xs-12 col-sm-6 col-lg-3 support-container">
<i class="fa fa-comments bg-color-wf"></i>
<h4 data-i18n="support_label_forumtitle">Forum</h4>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -14,6 +14,10 @@ body {
border-color: #212121;
}
.navbar-default li a {
color: #C6C6C6 !important;
}
.panel-body {
background-color: #424242;
}
@ -189,7 +193,7 @@ tr:hover td {
}
.dropdown-menu>li>a {
color: #2e6da4;
color: #DDDDDD;
}
/*Panels*/
@ -220,6 +224,18 @@ tr:hover td {
color: #DDDDDD;
}
.panel-default>.panel-system{
background-color: #0E83E7 !important;
border-color: #212121 !important;
color: #fff ;
}
.panel-default>.panel-instance{
background-color:#E18300 !important;
border-color: #212121 !important;
color: #DDDDDD;
}
.panel-footer {
background-color: #424242 !important;
border-top: 1px solid #616161 !important;
@ -271,18 +287,22 @@ select.form-control {
}
.checklist li::before {
color: greenyellow;
color: #DDDDDD;
}
.checkbox-success input[type="checkbox"]:checked + label::before, .checkbox-success input[type="radio"]:checked + label::before {
background-color: greenyellow;
border-color: #5cb85c;
.checkbox input[type="checkbox"]:checked + label::before, .checkbox-success input[type="checkbox"]:checked + label::before, .checkbox-success input[type="radio"]:checked + label::before {
border-color: #616161;
background-color: #212121;
}
.checkbox-success input[type="checkbox"]:checked + label::after, .checkbox-success input[type="radio"]:checked + label::after {
color: #1e1e1e;
.checkbox input[type="checkbox"]:checked + label::after, .checkbox-success input[type="checkbox"]:checked + label::after, .checkbox-success input[type="radio"]:checked + label::after {
color: #DDDDDD;
}
.radio__field:checked ~ .radio__icon::before {
background: #fff;
}
.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle) {
border-bottom-right-radius: 4px;
border-top-right-radius: 4px;
@ -416,7 +436,7 @@ button.close:hover {
}
.bs-callout-success {
border-left-color: greenyellow;
border-left-color: #67FF01;
}
.bs-callout-success h4 {

View File

@ -2,12 +2,12 @@
@font-face {
font-family: "Roboto";
src: url("../fonts/Roboto-Regular.woff") format('woff'),
url("../fonts/Roboto-Regular.ttf") format('ttf');
url("../fonts/Roboto-Regular.ttf") format('ttf');
}
body{font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;max-width:2000px;margin: 0 auto;}
.form-group{margin-bottom:11px;}
#page-content {
padding-bottom:50px;
padding-bottom:50px;
}
body{
overflow-y: scroll;
@ -15,22 +15,43 @@ body{
/*
#page-wrapper a[target=_blank]::after {
content:"\f08e";
position:relative;
font:normal normal normal 10px/1 FontAwesome;
top:-3px;
left:3px;
margin-right:5px;
position:relative;
font:normal normal normal 10px/1 FontAwesome;
top:-3px;
left:3px;
margin-right:5px;
}
*/
/* fixed brand icon */
@media (min-width: 768px){
.navbar-brand{position:fixed}
#wrapper{
padding-left: 10px;
padding-bottom: 10px;
padding-right: 10px;
}
.navbar-brand{
position:fixed;
height: 80px;
}
#main-nav{
position:absolute !important;
}
.navbar-top-links li a > .fa{
font-size: 22px;
}
}
/*mobile nav*/
@media (max-width: 768px){
.navbar-toggle{position:fixed;right:0px;}
#main-nav{position:fixed;right:-200px;}
#wrapper{
padding: 0px;
}
.navbar-toggle{
position:fixed;right:0px;
}
#main-nav{
position:fixed;right:-200px;
}
}
.navbar-toggle .icon-bar {
background-color:#4c4c4c !important;
@ -71,40 +92,80 @@ table.input-group{width:100%}
@media (max-width: 767px) {.ltd{white-space:normal;}}
/*icon spacing*/
.fa-fw{margin-right:5px;}
.fa-fw, .mdi-24px{margin-right:5px;}
/*table*/
table.borderless td,table.borderless th{border: none !important;}
table.borderless td:first-child{width: 25px !important;}
.borderless {margin-bottom:0px}
table label{margin:0}
table.first_cell_borderless td:first-child,table.first_cell_borderless th:first-child{border: none !important;}
table.first_cell_borderless td:first-child{width: 25px !important;}
/*Header*/
.navbar-brand{padding-top:0px;padding-bottom:5px;padding-left:20px;height:60px;}
.sidebar{margin-top:62px;padding-top:20px;}
.navbar-brand{top:0px;left:17px;padding-top:0;}
.sidebar{margin-top:85px;}
.dropdown{font-size:18px;}
@media (max-width: 767px) {.sidebar{margin-top:0px;padding-top:0px !important;}}
.page-header{margin-top:15px;}
.page-header{margin-top:0px;}
.navbar-top-links li a {
min-height: 84px;
display: flex;
align-items: center;
}
.navbar-default li a {
color: #303030 !important;
}
.sidebar ul li a.active{
padding-left:5px;
border-left:10px solid #0E83E7;
}
.sidebar ul li ul li a.active{
padding-left:27px;
border-left:10px solid #0E83E7;
}
.itbody td:not(:first-child){
width: 1px;
text-align: center;
}
/*Panels*/
.panel-heading{font-size:18px;}
.headcollapse{cursor:pointer;}
.headcollapse a:hover{text-decoration:none;}
.panel-default{
background-color:#fff !important;
border-color:#d0d0d0 !important;
background-color:#fff !important;
border-color:#d0d0d0 !important;
}
.panel-default>.panel-heading{
background-color:#f3f3f3 !important;
border-color:#ddd !important;
background-color:#F3F3F3 !important;
border-color:#ddd !important;
}
.panel-default > .panel-system, .panel-danger > .panel-system {
background-color: #0E83E7 !important;
border-color: #ddd !important;
color: #fff;
}
.panel-default>.panel-instance{
background-color:#E18300 !important;
border-color:#ddd !important;
color: #fff;
}
/*remote page*/
@media (max-width: 500px) {.ssthead th:nth-child(1), .sstbody td:nth-child(1){display:none}}
/*Dashboard*/
.component-on{color:green;}
.component-off{color:grey;}
#dash_news hr{margin:10px 0}
.component-on{color: #67FF01;}
.component-off{color: grey;}
#dash_news hr{margin: 10px 0}
/*Colorpicker 2x*/
.colorpicker-2x {z-index:99999}
@ -114,16 +175,16 @@ table label{margin:0}
/*Hint*/
.info-hint{
background-color:rgb(236,236,236);
border-radius:10px;
background-color:rgb(236,236,236);
border-radius:10px;
}
.intro-hint{
padding:8px 8px 8px 14px;
margin:0px 0px 15px 0px;
border-left:8px solid #0088cc;
border-top:1px solid #0088cc;
box-shadow: 1px 1px 1px 0px rgba(0,0,0,0.25);
font-size:97%;
padding:8px 8px 8px 14px;
margin:0px 0px 15px 0px;
border-left:8px solid #0088cc;
border-top:1px solid #0088cc;
box-shadow: 1px 1px 1px 0px rgba(0,0,0,0.25);
font-size:97%;
}
/*Support page*/
@ -151,6 +212,11 @@ table label{margin:0}
margin-bottom: 0;
}
/*backported bootstrap 4 font weight*/
.font-weight-bold {
font-weight: 700;
}
/*wizard button*/
.btn-wizard {
color: #fff;
@ -172,10 +238,15 @@ table label{margin:0}
.btn-transparent {
background-color: transparent;
border-style: none;
padding-left: 0;
}
/*general instance management button*/
[id^=instdel_], [id^=instren_] { padding: 0px 12px;}
.mdi-lead-pencil, .mdi-delete-forever {font-size: 22px;}
/*led preview & led visualisation*/
#leds_canvas {background-color:#AAAAAA; position:absolute; margin:15px; background-image:url(/img/hyperion/hyperionlogo.png); background-repeat:no-repeat; background-position: center;}
#leds_canvas {position:absolute; margin:15px; background-repeat:no-repeat; background-position: center;}
.led { display:inline-block; border: 1px solid black; position:absolute; opacity:0.8; text-align:center; vertical-align:middle; padding:4px; border-radius:2px;}
.led_num, .led_prev_num {display:none; position:relative; color:black; background-color: white; border-radius:2px; padding:1px; vertical-align:middle; text-align:center; font-size:0.8em;}
.led_ex{height:15px;width:25px;border-radius:3px;display:inline-block;border:1px solid black}
@ -189,36 +260,44 @@ table label{margin:0}
/*Modal icons*/
[class*="modal-icon"]{
padding:30px;
border-radius: 60px;
color:white;
font-size:50px !important;
padding:30px;
border-radius: 60px;
color:white;
font-size:50px !important;
}
.modal-icon-check{
background-color:#71c341;
background-color:#71c341;
}
.modal-icon-warning{
background-color:#f7c44a;
background-color:#f7c44a;
}
.modal-icon-error{
background-color:#d1322e;
background-color:#d1322e;
}
.modal-icon-edit{
background-color:#3579b6;
background-color:#3579b6;
}
/* Overlay for desktop devices */
.overlay {
background-image: url('/img/hyperion/hyperionwhitelogo.png');
background-repeat: no-repeat;
background-position: center center;
background-color: rgba(1, 1, 1, 0.7);
position: fixed;
bottom: 0;
left: 0;
right: 0;
top: 0;
z-index:99999;
background-image: url('/img/hyperion/logo_negativ.png');
background-repeat: no-repeat;
background-position: center center;
background-color: rgba(1, 1, 1, 0.7);
position: fixed;
bottom: 0;
left: 0;
right: 0;
top: 0;
z-index:99999;
}
/* Overlay for mobile devices */
@media (max-width: 768px) {
.overlay {
background-size: contain;
}
}
/*simple ripple effect for li a and btn*/
@ -307,7 +386,7 @@ li a:active:after {
color: #428bca;
}
.bs-callout-success {
border-left-color: #5cb85c;
border-left-color: #67FF01;
}
.bs-callout-success h4 {
color: #5cb85c;
@ -341,8 +420,8 @@ li a:active:after {
@media (min-width: 1500px) {
.col-xxl-1, .col-xxl-2, .col-xxl-3, .col-xxl-4, .col-xxl-5, .col-xxl-6, .col-xxl-7, .col-xxl-8, .col-xxl-9, .col-xxl-10, .col-xxl-11, .col-xxl-12 {
float: left;
padding-left:15px;
padding-right:15px;
padding-left:15px;
padding-right:15px;
}
.col-xxl-12 {
width: 100%;
@ -588,39 +667,39 @@ li a:active:after {
left: 0;
}
.gj-resizable-w {
cursor: w-resize;
width: 7px;
left: -5px;
top: 0;
height: 100%;
cursor: w-resize;
width: 7px;
left: -5px;
top: 0;
height: 100%;
}
.gj-resizable-se {
cursor: se-resize;
width: 12px;
height: 12px;
right: 1px;
bottom: 1px;
cursor: se-resize;
width: 12px;
height: 12px;
right: 1px;
bottom: 1px;
}
.gj-resizable-sw {
cursor: sw-resize;
width: 9px;
height: 9px;
left: -5px;
bottom: -5px;
cursor: sw-resize;
width: 9px;
height: 9px;
left: -5px;
bottom: -5px;
}
.gj-resizable-nw {
cursor: nw-resize;
width: 9px;
height: 9px;
left: -5px;
top: -5px;
cursor: nw-resize;
width: 9px;
height: 9px;
left: -5px;
top: -5px;
}
.gj-resizable-ne {
cursor: ne-resize;
width: 9px;
height: 9px;
right: -5px;
top: -5px;
cursor: ne-resize;
width: 9px;
height: 9px;
right: -5px;
top: -5px;
}
.gj-dialog-footer {
@ -685,6 +764,88 @@ li a:active:after {
padding: 15px;
}
/*https://github.com/json-editor/json-editor/blob/2e005a2bd34c05803702d8bc1347efde7a4926ce/docs/radio.html#L37 radiobox for Json-Editor*/
.radio {
position: relative;
display: inline-block;
min-width: 1.625rem;
min-height: 1.625rem;
max-width: 100%;
}
.radio:first-child {
margin-right: 20px;
}
.radio__field {
display: none;
}
.radio__icon {
position: absolute;
top: -0.125rem;
left: -0.125rem;
width: 1.875rem;
height: 1.875rem;
-webkit-box-sizing: border-box;
box-sizing: border-box;
border: 0.125rem solid #616161;
border-radius: 50%;
cursor: pointer;
}
.radio__icon::before {
position: absolute;
content: '';
top: 50%;
left: 50%;
width: 0.75rem;
height: 0.75rem;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
border-radius: 50%;
visibility: hidden;
}
.radio__icon::after {
position: absolute;
content: '';
top: -0.4375rem;
right: -0.4375rem;
bottom: -0.4375rem;
left: -0.4375rem;
}
.radio__label {
line-height: 1.5rem;
display: block;
padding: 0.0625rem 0 0 2.375rem;
cursor: pointer;
}
.radio__field:checked ~ .radio__icon::before {
background: #616161;
visibility: visible;
}
/* disabled state css */
.radio__field:disabled:checked ~ .radio__icon,
.radio__field:disabled:not(:checked) ~ .radio__icon {
cursor: default;
border-color: #959899;
}
.radio__field:disabled:checked ~ .radio__label,
.radio__field:disabled:not(:checked) ~ .radio__label {
cursor: default;
color: #959899;
}
.radio__field:disabled:checked ~ .radio__icon::before,
.radio__field:disabled:not(:checked) ~ .radio__icon::before {
cursor: default;
background-color: #959899;
}
/*https://github.com/flatlogic/awesome-bootstrap-checkbox slighty edited for our purposes*/
.checkbox {
@ -815,11 +976,14 @@ li a:active:after {
color: #fff;
}
.checkbox input[type="checkbox"]:checked + label::before,
.checkbox-success input[type="checkbox"]:checked + label::before,
.checkbox-success input[type="radio"]:checked + label::before {
background-color: #5cb85c;
border-color: #5cb85c;
}
.checkbox input[type="checkbox"]:checked + label::after,
.checkbox-success input[type="checkbox"]:checked + label::after,
.checkbox-success input[type="radio"]:checked + label::after {
color: #fff;

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Binary file not shown.

View File

@ -5,8 +5,6 @@
"InfoDialog_changePassword_title": "Změnit heslo",
"InfoDialog_iswitch_text": "Pokud spustíte program Hyperion více než jednou v místní síti, můžete přepínat mezi webovými konfiguracemi. Vyberte níže uvedenou instanci Hyperion a přepněte ji!",
"InfoDialog_iswitch_title": "Přepínač Hyperion",
"InfoDialog_lang_text": "Pokud se vám výsledek automatické detekce jazyka nelíbí, můžete jej zde přepsat. \nIf you don't like the result of the automatic language detection you can overwrite it here.\n",
"InfoDialog_lang_title": "Nastavení jazyka",
"InfoDialog_nowrite_foottext": "Po vyřešení problému bude WebUI automaticky odemknut!",
"InfoDialog_nowrite_text": "Hyperion nemůže zapisovat do aktuálně načteného konfiguračního souboru. Opravte oprávnění souboru, abyste mohli pokračovat.",
"InfoDialog_nowrite_title": "Chyba při zápisu!",
@ -99,7 +97,6 @@
"conf_leds_optgroup_RPiGPIO": "RPi GPIO",
"conf_leds_optgroup_RPiPWM": "RPi PWM",
"conf_leds_optgroup_RPiSPI": "RPi SPI\n",
"conf_leds_optgroup_debug": "Ladit",
"conf_leds_optgroup_network": "Síť",
"conf_leds_optgroup_usb": "USB",
"conf_logging_btn_autoscroll": "Automatické posouvání",
@ -145,7 +142,7 @@
"dashboard_infobox_label_instance": "Instance:",
"dashboard_infobox_label_latesthyp": "Poslední dostupná verze Hyperionu",
"dashboard_infobox_label_platform": "Platforma:",
"dashboard_infobox_label_ports": "Port (json|proto):",
"dashboard_infobox_label_ports": "Port",
"dashboard_infobox_label_smartacc": "Inteligentní přístup",
"dashboard_infobox_label_statush": "Stav Hyperionu:",
"dashboard_infobox_label_title": "Informace",
@ -625,7 +622,7 @@
"general_comp_BOBLIGHTSERVER": "Boblight Server",
"general_comp_FLATBUFSERVER": "Flatbuffers Server",
"general_comp_FORWARDER": "Zasílat",
"general_comp_GRABBER": "Platforma snímaní",
"general_comp_GRABBER": "Sn",
"general_comp_LEDDEVICE": "LED zařízení",
"general_comp_PROTOSERVER": "Protokol vyrovnávací paměti severu",
"general_comp_SMOOTHING": "Vyhlazení",

View File

@ -5,8 +5,8 @@
"InfoDialog_changePassword_title": "Ändere Passwort",
"InfoDialog_iswitch_text": "Sollte in deinem lokalen Netzwerk Hyperion mehr als einmal laufen, kannst du hier zwischen den Web Konfigurationen hin und her schalten. Wähle dazu die Instanz unten aus und switche!",
"InfoDialog_iswitch_title": "Hyperion-Switcher",
"InfoDialog_lang_text": "Sollte dir die Vorauswahl der automatischen Spracherkennung nicht gefallen, kannst du die Sprache hier manuell festlegen.",
"InfoDialog_lang_title": "Spracheinstellung",
"InfoDialog_nostorage_text": "Dein Browser unterstützt nicht, dass Einstellung lokal abgespeichert werden. Darum kannst Du die gesetzte Sprach- und Einstellungsstufe nicht speichern und ggf. nicht alles sehen. Ansonsten solltest Du das Webinterface ohne Probleme benutzen können.",
"InfoDialog_nostorage_title": "Einstellungen können nicht gespeichert werden.",
"InfoDialog_nowrite_foottext": "Die Webkonfiguration wird automatisch wieder freigegeben, sobald das Problem behoben wurde!",
"InfoDialog_nowrite_text": "Hyperion hat keinen Schreibzugriff auf die aktuell geladene Konfiguration. Bitte korrigiere die Dateizugriffsrechte, um fortzufahren.",
"InfoDialog_nowrite_title": "Fehler beim Schreibzugriff!",
@ -41,13 +41,26 @@
"conf_general_inst_title": "LED-Hardware Instanzverwaltung",
"conf_general_intro": "Grundsätzliche Einstellungen zu Hyperion oder WebUI, die in keine andere Kategorie passen.",
"conf_general_label_title": "Allgemeine Einstellungen",
"conf_grabber_fg_intro": "Plattform Aufnahme ist das lokale System auf dem Hyperion installiert wurde, welches als Bildquelle dient.",
"conf_grabber_fg_intro": "Bildschirm Aufnahme ist das lokale System auf dem Hyperion installiert wurde, welches als Bildquelle dient.",
"conf_grabber_inst_grabber_config_info": "Konfiguriere deine Aufnahmegeräte bevor du sie in einer LED-Instanz benutzt.",
"conf_grabber_v4l_intro": "USB-Aufnahme ist ein Gerät, welches via USB angeschlossen ist und als Bildquelle dient.",
"conf_helptable_expl": "Erklärung",
"conf_helptable_option": "Option",
"conf_leds_config_error": "Fehler in der LED/LED Layout Konfiguration",
"conf_leds_config_warning": "Überprüfe die LED/LED Layout Konfiguration",
"conf_leds_contr_label_contrtype": "Steuerungstyp:",
"conf_leds_device_info_log": "Falls die LEDs nicht leuchten, schaue hier ob es einen Fehler gab: ",
"conf_leds_device_intro": "Wähle eine Methode zur Steuerung deiner LEDs aus, sie sind unterteilt in verschiedene Kategorien. Neben den allgemeinen Optionen die für alle gültig sind, gibt es auch spezifische, die sich unterscheiden je nach Wahl.",
"conf_leds_error_hwled_gt_layout": "Die Zahl der gegebenen Hardware LEDs ($1) ist größer, als die Anzahl der im LED-Layout definierten ($2), $3 {{plural:$3|LED wird|LEDs werden}} schwarz bleiben.",
"conf_leds_error_hwled_gt_maxled": "Die Zahl der gegebenen Hardware LEDs ($1) ist größer, als die Anzahl der durch den LED-Steuerungstyp unterstützen ($2). <br>Die Anzahl Hardware LEDs wir auf ($3) gesetzt.",
"conf_leds_error_hwled_lt_layout": "Die Zahl der gegebenen Hardware LEDs ($1) ist kleiner, als die Anzahl der im LED-Layout definierten ($2). <br> Im LED-Layout dürfen nicht mehr LEDs konfiguriert sein, als vorhanden.",
"conf_leds_info_ws281x": "Hyperion muss mit 'root' Rechten für diesen LED-Steuerungstyp laufen!",
"conf_leds_layout_advanced": "Erweiterte Optionen",
"conf_leds_layout_blacklist_num_title": "LED-Anzahl",
"conf_leds_layout_blacklist_rule_title": "Ausschluss Regel",
"conf_leds_layout_blacklist_rules_title": "Ausschluss Regeln",
"conf_leds_layout_blacklist_start_title": "Start-LED",
"conf_leds_layout_blacklistleds_title": "Auszuschließende LEDs",
"conf_leds_layout_btn_checklist": "Zeige Checkliste",
"conf_leds_layout_button_savelay": "Speichere Layout",
"conf_leds_layout_button_updsim": "Aktualisiere Vorschau",
@ -113,17 +126,21 @@
"conf_leds_layout_textf1": "Das Textfeld zeigt dir dein aktuell geladenes Layout, sofern du kein neues Layout mit den Optionen oben erstellt hast. Optional kann man die Werte hier weiter bearbeiten.",
"conf_leds_nav_label_ledcontroller": "LED-Steuerung",
"conf_leds_nav_label_ledlayout": "LED-Layout",
"conf_leds_note_layout_overwrite": "Achtung: Überschreiben erzeugt ein Standardlayout für {{plural:$1| eine LED| alle $1 LEDs}} gemäß der gegebenen Hardware LED-Anzahl",
"conf_leds_optgroup_RPiGPIO": "RPi GPIO",
"conf_leds_optgroup_RPiPWM": "RPi PWM",
"conf_leds_optgroup_RPiSPI": "RPi SPI",
"conf_leds_optgroup_debug": "Debug",
"conf_leds_optgroup_network": "Netzwerk",
"conf_leds_optgroup_other": "Andere",
"conf_leds_optgroup_usb": "USB/Seriell",
"conf_logging_btn_autoscroll": "Automatisch scrollen",
"conf_logging_btn_clipboard": "In Zwischenablage kopieren",
"conf_logging_btn_pbupload": "Bericht für Supportanfrage hochladen",
"conf_logging_contpolicy": "Berichts-Datenschutzerklärung",
"conf_logging_label_intro": "Überprüfe die Meldungen im Protokoll um zu erfahren was Hyperion gerade beschäftigt. Je nach eingestellter Protokoll-Stufe siehst du mehr oder weniger Informationen.",
"conf_logging_lastreports": "Frühere Berichte",
"conf_logging_logoutput": "Protokollausgabe",
"conf_logging_nomessage": "Keine Einträge vorhanden.",
"conf_logging_report": "Bericht",
"conf_logging_uplfailed": "Hochladen fehlgeschlagen! Überprüfe deine Internetverbindung!",
@ -133,7 +150,7 @@
"conf_network_bobl_intro": "Boblight Empfänger",
"conf_network_createToken_btn": "Erstelle Token",
"conf_network_fbs_intro": "Google Flatbuffers Empfänger. Wird genutzt für schnellen Bildempfang.",
"conf_network_forw_intro": "Leite alles an eine zweite Hyperion Instanz weiter, diese kann dann mit einer anderen LED-Steuerung genutzt werden",
"conf_network_forw_intro": "Leite alles an eine zweite Hyperion Installation weiter, diese kann dann mit einer anderen LED-Steuerung genutzt werden",
"conf_network_json_intro": "Der JSON-RPC-Port aller Hyperion-Instanzen, wird genutzt zur Fernsteuerung.",
"conf_network_net_intro": "Einstellungen zum Netzwerk die für alle Netzwerk-Dienste gelten",
"conf_network_proto_intro": "Der PROTO-Port aller Hyperion-Instanzen, wird genutzt für \"Bildstreams\" (HyperionScreenCap, Kodi Add-on, Android Hyperion Grabber, ...)",
@ -163,15 +180,19 @@
"dashboard_infobox_label_enableh": "Aktiviere Instanz: $1",
"dashboard_infobox_label_instance": "Instanz:",
"dashboard_infobox_label_latesthyp": "Aktuellste Hyperion Version:",
"dashboard_infobox_label_platform": "Plattform:",
"dashboard_infobox_label_ports": "Ports (flat|proto):",
"dashboard_infobox_label_platform": "Bildschirm:",
"dashboard_infobox_label_port_flat": "Flatbuffer:",
"dashboard_infobox_label_port_json": "JSON-Server:",
"dashboard_infobox_label_port_proto": "\nProtobuffer:",
"dashboard_infobox_label_ports": "Ports",
"dashboard_infobox_label_ports_websocket": "WebSocket (ws|wss):",
"dashboard_infobox_label_smartacc": "Schnellzugriff",
"dashboard_infobox_label_statush": "Hyperion Status:",
"dashboard_infobox_label_title": "Information",
"dashboard_infobox_label_watchedversionbranch": "Ausgewählter Versionszweig:",
"dashboard_infobox_message_updatesuccess": "Du nutzt die aktuellste Version von Hyperion.",
"dashboard_infobox_message_updatewarning": "Eine aktuellere Version von Hyperion ist verfügbar! ($1)",
"dashboard_label_intro": "Das Dashboard zeigt dir Informationen zum Systemstatus, ob Updates verfügbar sind, den Komponentenstatus sowie die letzten Blog-Posts vom Hyperion Team.",
"dashboard_label_intro": "Das Dashboard zeigt dir Informationen zum Status und ob Updates verfügbar sind.",
"dashboard_message_default_password": "Das Standardpasswort der WebUI ist gesetzt. Wir empfehlen dringend, dieses zu ändern.",
"dashboard_message_default_password_t": "WebUI Standardpasswort gesetzt",
"dashboard_message_do_not_show_again": "Diese Meldung nicht mehr anzeigen",
@ -254,10 +275,13 @@
"edt_conf_effp_paths_expl": "Es können mehrere Ordner definiert werden die Effekte enthalten. Der Effekt Konfigurator speichert immer im Ersten Ordner.",
"edt_conf_effp_paths_itemtitle": "Pfad",
"edt_conf_effp_paths_title": "Effekt Pfad(e)",
"edt_conf_enum_BOTH": "Horizontal & Vertikal",
"edt_conf_enum_HORIZONTAL": "Horizontal",
"edt_conf_enum_NO_CHANGE": "Automatisch",
"edt_conf_enum_NTSC": "NTSC",
"edt_conf_enum_PAL": "PAL",
"edt_conf_enum_SECAM": "SECAM",
"edt_conf_enum_VERTICAL": "Horizontal",
"edt_conf_enum_automatic": "Automatisch",
"edt_conf_enum_bbclassic": "Klassisch",
"edt_conf_enum_bbdefault": "Standard",
@ -288,6 +312,7 @@
"edt_conf_enum_logverbose": "Ausführlich",
"edt_conf_enum_logwarn": "Warnung",
"edt_conf_enum_multicolor_mean": "Mehrfarbig",
"edt_conf_enum_please_select": "Bitte auswählen",
"edt_conf_enum_rbg": "RBG",
"edt_conf_enum_rgb": "RGB",
"edt_conf_enum_right_left": "von rechts nach links",
@ -302,12 +327,12 @@
"edt_conf_fg_display_title": "Display",
"edt_conf_fg_frequency_Hz_expl": "Wie schnell werden neue Bilder aufgenommen.",
"edt_conf_fg_frequency_Hz_title": "Aufnahmefrequenz",
"edt_conf_fg_heading_title": "Plattform Aufnahme",
"edt_conf_fg_heading_title": "Bildschirm Aufnahme",
"edt_conf_fg_height_expl": "Verkleinere Bild auf dieser Höhe, da das Rohmaterial viel Leistung benötigen würde.",
"edt_conf_fg_height_title": "Höhe",
"edt_conf_fg_pixelDecimation_expl": "Bildverkleinerung (Faktor) ausgehend von der ursprünglichen Größe. 1 für die unveränderte/ursprüngliche Größe.",
"edt_conf_fg_pixelDecimation_title": "Bildverkleinerung Faktor",
"edt_conf_fg_type_expl": "Art der Plattform Aufnahme; Standard ist 'auto'",
"edt_conf_fg_type_expl": "Art der Bildschirm Aufnahme; Standard ist 'auto'",
"edt_conf_fg_type_title": "Typ",
"edt_conf_fg_width_expl": "Verkleinere Bild auf dieser Breite, da das Rohmaterial viel Leistung benötigen würde.",
"edt_conf_fg_width_title": "Breite",
@ -322,11 +347,12 @@
"edt_conf_fge_type_title": "Typ",
"edt_conf_fw_flat_expl": "Ein Flatbuffer Ziel pro Zeile. Bestehend aus IP:PORT (Beispiel: 127.0.0.1:19401)",
"edt_conf_fw_flat_itemtitle": "Flatbuffer Ziel",
"edt_conf_fw_flat_title": "Liste von Flatbuffer zielen",
"edt_conf_fw_flat_title": "Liste von Flatbuffer Zielen",
"edt_conf_fw_heading_title": "Weiterleitung",
"edt_conf_fw_json_expl": "Ein Json Ziel pro Zeile. Bestehend aus IP:PORT (Beispiel: 127.0.0.1:19446)",
"edt_conf_fw_json_itemtitle": "Json Ziel",
"edt_conf_fw_json_title": "Liste von Json zielen",
"edt_conf_fw_json_title": "Liste von Json Zielen",
"edt_conf_gen_configVersion_title": "Konfiguration per Version",
"edt_conf_gen_heading_title": "Allgemeine Einstellungen",
"edt_conf_gen_name_expl": "Der Name wird verwendet, um Hyperion besser zu identifizieren. (Hilfreich bei mehreren Instanzen)",
"edt_conf_gen_name_title": "Name der Konfiguration",
@ -340,10 +366,19 @@
"edt_conf_general_port_title": "Port",
"edt_conf_general_priority_expl": "Die Priorität dieser Komponente.",
"edt_conf_general_priority_title": "Priorität",
"edt_conf_instC_systemEnable_expl": "Aktiviert die Plattform Aufnahme für diese LED Hardware Instanz.",
"edt_conf_instC_systemEnable_title": "Aktiviere Plattform Aufnahme",
"edt_conf_grabber_discovered_expl": "Wähle dein gefundenes Aufnahmegerät aus.",
"edt_conf_grabber_discovered_none": "Keine Aufnahmegeräte gefunden.",
"edt_conf_grabber_discovered_title": "Gefundenes Aufnahmegerät",
"edt_conf_grabber_discovered_title_info": "Wähle dein gefundenes Aufnahmegerät aus.",
"edt_conf_grabber_discovery_inprogress": "Suche Aufnahmegeräte",
"edt_conf_instC_screen_grabber_device_expl": "Das verwendet Bildschirmaufnahmegerät",
"edt_conf_instC_screen_grabber_device_title": "Bildschirmaufnahmegerät",
"edt_conf_instC_systemEnable_expl": "Aktiviert die Bildschirm Aufnahme für diese LED Hardware Instanz.",
"edt_conf_instC_systemEnable_title": "Aktiviere Bildschirm Aufnahme",
"edt_conf_instC_v4lEnable_expl": "Aktiviert die USB Aufnahme für diese LED -Hardware Instanz.",
"edt_conf_instC_v4lEnable_title": "Aktiviere USB-Aufnahme",
"edt_conf_instC_video_grabber_device_expl": "Das verwendete Videoaufnahmegerät.",
"edt_conf_instC_video_grabber_device_title": "Videoaufnahmegerät",
"edt_conf_instCapture_heading_title": "Instance Aufnahme",
"edt_conf_js_heading_title": "JSON Server",
"edt_conf_log_heading_title": "Protokoll",
@ -375,7 +410,7 @@
"edt_conf_smooth_heading_title": "Glättung",
"edt_conf_smooth_interpolationRate_expl": "Frequenz in der Zwischenschritte zur Glättung berechnet werden.",
"edt_conf_smooth_interpolationRate_title": "Interpolationsfrequenz",
"edt_conf_smooth_outputRate_expl": "Die Ausgangfrequnz zum LED-Device",
"edt_conf_smooth_outputRate_expl": "Die Ausgangfrequenz zum LED-Gerät",
"edt_conf_smooth_outputRate_title": "Ausgabefrequenz",
"edt_conf_smooth_time_ms_expl": "Wie lange soll die Glättung Bilder sammeln?",
"edt_conf_smooth_time_ms_title": "Zeit",
@ -391,21 +426,41 @@
"edt_conf_v4l2_cecDetection_title": "CEC-Erkennung",
"edt_conf_v4l2_cropBottom_expl": "Anzahl der Pixel auf der unteren Seite die vom Bild entfernt werden.",
"edt_conf_v4l2_cropBottom_title": "Entferne unten",
"edt_conf_v4l2_cropHeightValidation_error": "Entferne oben + Entferne unten darf nicht größer als die Höhe ($1) sein",
"edt_conf_v4l2_cropLeft_expl": "Anzahl der Pixel auf der linken Seite die vom Bild entfernt werden.",
"edt_conf_v4l2_cropLeft_title": "Entferne links",
"edt_conf_v4l2_cropRight_expl": "Anzahl der Pixel auf der rechten Seite die vom Bild entfernt werden.",
"edt_conf_v4l2_cropRight_title": "Entferne rechts",
"edt_conf_v4l2_cropTop_expl": "Anzahl der Pixel auf der oberen Seite die vom Bild entfernt werden.",
"edt_conf_v4l2_cropTop_title": "Entferne oben",
"edt_conf_v4l2_cropWidthValidation_error": "Entferne links+ Entferne rechts darf nicht größer als die Breite ($1) sein",
"edt_conf_v4l2_device_expl": "Eine Liste von USB (v4l) Aufnahmegeräten. Wähle 'Automatisch' für automatische Erkennung. Benutzerdefiniert z.b.: '/dev/video0'",
"edt_conf_v4l2_device_title": "Gerät",
"edt_conf_v4l2_encoding_expl": "Erzwinge die die Videocodierung für multiformatfähige Grabber",
"edt_conf_v4l2_encoding_title": "Videokodierungsformat",
"edt_conf_v4l2_flip_expl": "Hiermit kannst du das Bild in horizontaler, vertikaler oder in beide Richtungen spiegeln.",
"edt_conf_v4l2_flip_title": "Spiegelung",
"edt_conf_v4l2_fpsSoftwareDecimation_expl": "Jeder n-te Frame wird übersprungen um Ressourcen zu sparen.\nBeispiel: Ein Wert von 5 resultiert bei einem Aufnahmegerät mit 30fps in einer neuen Framerate von 6 fps.",
"edt_conf_v4l2_fpsSoftwareDecimation_title": "Überspringen von Frames",
"edt_conf_v4l2_framerate_expl": "Die unterstützten Bilder pro Sekunde des aktiven Gerätes. Auf 'Automatisch' wird der gewählte Modus vom v4l interface beibehalten.",
"edt_conf_v4l2_framerate_title": "Bilder pro Sekunde",
"edt_conf_v4l2_greenSignalThreshold_expl": "Je höher der Grünwert ist, je eher wird bei entsprechendem Grünanteil abgeschaltet..",
"edt_conf_v4l2_greenSignalThreshold_title": "Schwelle Grünwert",
"edt_conf_v4l2_hardware_brightness_expl": "Setze die Hardware-Helligkeitssteuerung.",
"edt_conf_v4l2_hardware_brightness_title": "Hardware-Helligkeitssteuerung",
"edt_conf_v4l2_hardware_contrast_expl": "Setze die Hardware-Kontraststeuerung.",
"edt_conf_v4l2_hardware_contrast_title": "Hardware-Kontraststeuerung",
"edt_conf_v4l2_hardware_hue_expl": "Setze die Hardware-Farbtonsteuerung.",
"edt_conf_v4l2_hardware_hue_title": "Hardware-Farbtonsteuerung",
"edt_conf_v4l2_hardware_saturation_expl": "Setze die Hardware-Sättigungssteuerung.",
"edt_conf_v4l2_hardware_saturation_title": "Hardware-Sättigungssteuerung",
"edt_conf_v4l2_hardware_set_defaults": "Standard Werte des Geräts",
"edt_conf_v4l2_hardware_set_defaults_tip": "Setzt die Standardwerte des Geräts für Helligkeit, Kontrast, Farbton und Sättigung.",
"edt_conf_v4l2_heading_title": "USB Aufnahme",
"edt_conf_v4l2_input_expl": "Wähle den Videoeingang deines Gerätes. Auf 'Automatisch' wird der Videoeingang vom v4l interface beibehalten.",
"edt_conf_v4l2_input_title": "Eingang",
"edt_conf_v4l2_noSignalCounterThreshold_expl": "Anzahl der Frames nach dem die Signalerkennung auslöst. Bei der Konfiguration berücksichtige die gesetzte FPS-Rate deines Gerätes.",
"edt_conf_v4l2_noSignalCounterThreshold_title": "Schwelle Signalzähler",
"edt_conf_v4l2_redSignalThreshold_expl": "Je höher der Rotwert ist, je eher wird bei entsprechendem Rotanteil abgeschaltet.",
"edt_conf_v4l2_redSignalThreshold_title": "Schwelle Rotwert",
"edt_conf_v4l2_resolution_expl": "Eine Liste von unterstützten Auflösungen des aktiven Gerätes. Auf 'Automatisch' wird der gewählte Modus vom v4l interface beibehalten.",
@ -436,12 +491,15 @@
"edt_conf_webc_sslport_expl": "Port des HTTPS-Webservers",
"edt_conf_webc_sslport_title": "HTTPS Port",
"edt_dev_auth_key_title": "Authentisierungstoken",
"edt_dev_auth_key_title_info": "Authentifizierungstoken für das Gerät",
"edt_dev_enum_sub_min_cool_adjust": "Minimale Anpassung: cool",
"edt_dev_enum_sub_min_warm_adjust": "Minimale Anpassung: warm",
"edt_dev_enum_subtract_minimum": "Subtrahiere Minimum",
"edt_dev_enum_white_off": "Weiß ist aus",
"edt_dev_general_colorOrder_title": "RGB Byte Reihenfolge",
"edt_dev_general_colorOrder_title_info": "Die Farbreihenfolge des Gerätes",
"edt_dev_general_hardwareLedCount_title": "Anzahl Hardware LEDs",
"edt_dev_general_hardwareLedCount_title_info": "Die verfügbare LED Anzahl des Gerätes",
"edt_dev_general_heading_title": "Allgemeine Einstellungen",
"edt_dev_general_name_title": "Name der Konfiguration",
"edt_dev_general_rewriteTime_title": "Aktualisierungszeit",
@ -455,7 +513,9 @@
"edt_dev_spec_brightnessFactor_title": "Helligkeitsfaktor",
"edt_dev_spec_brightnessMax_title": "Helligkeitsmaximum",
"edt_dev_spec_brightnessMin_title": "Helligkeitsminimum",
"edt_dev_spec_brightnessOverwrite_title": "Helligkeit überschreiben",
"edt_dev_spec_brightnessThreshold_title": "Signal Erkennung Helligkeitsminimum",
"edt_dev_spec_brightness_title": "Helligkeit",
"edt_dev_spec_chanperfixture_title": "Kanäle pro Gerät",
"edt_dev_spec_cid_title": "CID",
"edt_dev_spec_clientKey_title": "Clientkey",
@ -463,6 +523,11 @@
"edt_dev_spec_debugLevel_title": "Debug Stufe",
"edt_dev_spec_debugStreamer_title": "Streamer Debugging",
"edt_dev_spec_delayAfterConnect_title": "Verzögerung nach Verbindung",
"edt_dev_spec_devices_discovered_none": "Keine Geräte gefunden",
"edt_dev_spec_devices_discovered_title": "Gefundene LED-Geräte",
"edt_dev_spec_devices_discovered_title_info": "Wähle ein gefundenes LED-Gerät aus",
"edt_dev_spec_devices_discovered_title_info_custom": "Wähle ein gefundenes LED-Device aus oder setzte einen benutzerspezifischen Wert",
"edt_dev_spec_devices_discovery_inprogress": "Suche Geräte",
"edt_dev_spec_dithering_title": "Dithering",
"edt_dev_spec_dmaNumber_title": "DMA Kanal",
"edt_dev_spec_gamma_title": "Gamma",
@ -477,6 +542,7 @@
"edt_dev_spec_intervall_title": "Intervall",
"edt_dev_spec_invert_title": "Invertiere Signal",
"edt_dev_spec_latchtime_title": "Sperrzeit",
"edt_dev_spec_latchtime_title_info": "Die Sperrzeit ist der Zeitrahmen, den ein Gerät benötigt, bis das nächste Update verarbeitet werden kann. Während dieses Zeitraums werden Aktualisierungen ignoriert.",
"edt_dev_spec_ledIndex_title": "LED-Index",
"edt_dev_spec_ledType_title": "LED-Typ",
"edt_dev_spec_lightid_itemtitle": "ID",
@ -500,7 +566,8 @@
"edt_dev_spec_port_title": "Port",
"edt_dev_spec_printTimeStamp_title": "Mit Zeitstempel",
"edt_dev_spec_pwmChannel_title": "PWM Kanal",
"edt_dev_spec_restoreOriginalState_title": "Bei Deaktivierung, Lampen Originalzustand wiederherstellen",
"edt_dev_spec_restoreOriginalState_title": "Originalzustand wiederherstellen",
"edt_dev_spec_restoreOriginalState_title_info": "Bei Deaktivierung, Lampen Originalzustand wiederherstellen",
"edt_dev_spec_serial_title": "Seriennummer",
"edt_dev_spec_spipath_title": "SPI Pfad",
"edt_dev_spec_sslHSTimeoutMax_title": "Streamer Handshake maximum Timeout",
@ -508,7 +575,9 @@
"edt_dev_spec_sslReadTimeout_title": "Streamer lese Timeout",
"edt_dev_spec_switchOffOnBlack_title": "Aus bei schwarz",
"edt_dev_spec_switchOffOnbelowMinBrightness_title": "Aus bei Minimum",
"edt_dev_spec_targetIpHost_title": "Ziel IP-Adresse/Rechnername",
"edt_dev_spec_syncOverwrite_title": "Deaktivierung der Synchronisierung",
"edt_dev_spec_targetIpHost_title": "Rechnername/IP-Adresse",
"edt_dev_spec_targetIpHost_title_info": "Der Rechnername oder die IP-Adresse des Gerätes",
"edt_dev_spec_targetIp_title": "Ziel IP-Adresse",
"edt_dev_spec_transeffect_title": "Übergangseffekt",
"edt_dev_spec_transistionTimeExtra_title": "Extra Übergangszeit bei Schwarz",
@ -572,9 +641,14 @@
"edt_eff_frequency": "Frequenz",
"edt_eff_gif_header": "GIFs",
"edt_eff_gif_header_desc": "Dieser Effekt spielt .gif Dateien ab. Bietet die Möglichkeit kleine GIF-Videos abzuspielen.",
"edt_eff_grayscale": "Graustufen",
"edt_eff_height": "Höhe",
"edt_eff_huechange": "Farbänderung",
"edt_eff_image": "Bilddatei",
"edt_eff_image_source": "Bildquelle",
"edt_eff_image_source_file": "Lokale Datei",
"edt_eff_image_source_url": "URL",
"edt_eff_initial_blink": "Blinken beim Start",
"edt_eff_interval": "Intervall",
"edt_eff_knightrider_header": "Knight Rider",
"edt_eff_knightrider_header_desc": "K.I.T.T ist zurück! Der Front-Scanner des bekannten Autos, diesmal nicht nur in rot.",
@ -612,6 +686,7 @@
"edt_eff_reversedirection": "Richtung umkehren",
"edt_eff_rotationtime": "Rotationszeit",
"edt_eff_saturation": "Sättigung",
"edt_eff_set_post_color": "Farbe nach dem Alarm",
"edt_eff_showseconds": "Zeige Sekunden",
"edt_eff_sleeptime": "Schlafzeit",
"edt_eff_smooth_custom": "Aktivere Glättung",
@ -630,6 +705,7 @@
"edt_eff_traces_header_desc": "Erfordert eine Neugestaltung",
"edt_eff_trails_header": "Sternschnuppen",
"edt_eff_trails_header_desc": "In verschiedenen Farben, wünsch dir was!",
"edt_eff_url": "Bildadresse",
"edt_eff_waves_header": "Wellen",
"edt_eff_waves_header_desc": "Gestalte Wellen aus Farbe! Mische dazu deine Lieblingsfarben und wähle einen Mittelpunkt.",
"edt_eff_whichleds": "Welche LEDs",
@ -698,6 +774,7 @@
"general_btn_off": "Aus",
"general_btn_ok": "OK",
"general_btn_on": "An",
"general_btn_overwrite": "Überschreiben",
"general_btn_rename": "Umbenennen",
"general_btn_restarthyperion": "Hyperion neustarten",
"general_btn_save": "Speichern",
@ -715,7 +792,7 @@
"general_comp_BOBLIGHTSERVER": "Boblight Server",
"general_comp_FLATBUFSERVER": "Flatbuffers Server",
"general_comp_FORWARDER": "Weiterleitung",
"general_comp_GRABBER": "Plattform Aufnahme",
"general_comp_GRABBER": "Bildschirm Aufnahme",
"general_comp_LEDDEVICE": "LED-Hardware",
"general_comp_PROTOSERVER": "Protocol Buffers Server",
"general_comp_SMOOTHING": "Glättung",
@ -729,14 +806,18 @@
"general_country_ru": "Russland",
"general_country_uk": "England",
"general_country_us": "Amerika",
"general_disabled": "deaktiviert",
"general_enabled": "aktiviert",
"general_speech_cs": "Tschechisch",
"general_speech_de": "Deutsch",
"general_speech_en": "Englisch",
"general_speech_es": "Spanisch",
"general_speech_fr": "Französisch",
"general_speech_it": "Italienisch",
"general_speech_nb": "Norwegisch (Bokmål)",
"general_speech_nl": "Niederländisch",
"general_speech_pl": "Polnisch",
"general_speech_pt": "Portugisisch",
"general_speech_ro": "Rumänisch",
"general_speech_ru": "Russisch",
"general_speech_sv": "Schwedisch",
@ -756,6 +837,10 @@
"infoDialog_import_confirm_title": "Bestätige den Import",
"infoDialog_import_hyperror_text": "Die ausgewählte Konfigurations-Datei \"$1\" kann nicht importiert werden. Sie ist nicht kompatibel mit Hyperion 2.0 und höher!",
"infoDialog_import_jsonerror_text": "Die ausgewählte Konfigurationsdatei \"$1\" ist nicht im JSON-Format oder ist beschädigt! Fehlermeldung: ($2)",
"infoDialog_password_current_text": "Aktuelles Passwort",
"infoDialog_password_minimum_length": "Ein Passwort muss mindestens aus 8 Zeichen bestehen.",
"infoDialog_password_new_text": "Neues Passwort",
"infoDialog_username_text": "Benutzername",
"infoDialog_wizrgb_text": "Deine RGB Byte Reihenfolge ist bereits richtig eingestellt.",
"infoDialog_writeconf_error_text": "Das Speichern der Konfiguration ist fehlgeschlagen.",
"infoDialog_writeimage_error_text": "Die ausgewählte Datei \"$1\" ist keine Bilddatei oder ist beschädigt! Bitte wähle eine andere Bilddatei aus.",
@ -775,17 +860,19 @@
"main_ledsim_btn_togglelednumber": "LED Nummern",
"main_ledsim_btn_toggleleds": "Zeige LEDs",
"main_ledsim_btn_togglelivevideo": "Live Video",
"main_ledsim_btn_togglesigdetect": "Signalerkennungsbereich",
"main_ledsim_text": "Eine live Visualisierung deiner LED-Farben und Vorschau des erfassten Videosignals.",
"main_ledsim_title": "LED-Visualisierung",
"main_menu_about_token": "Über Hyperion",
"main_menu_colors_conf_token": "Bildverarbeitung",
"main_menu_configuration_token": "Konfiguration",
"main_menu_configuration_token": "LED Instanzen",
"main_menu_dashboard_token": "Dashboard",
"main_menu_effect_conf_token": "Effekte",
"main_menu_effectsconfigurator_token": "Effekt Konfigurator",
"main_menu_general_conf_token": "Allgemein",
"main_menu_grabber_conf_token": "Aufnahme Hardware",
"main_menu_input_selection_token": "Eingabeauswahl",
"main_menu_instcapture_conf_token": "Aufnahmequellen",
"main_menu_leds_conf_token": "LED-Hardware",
"main_menu_logging_token": "Protokoll",
"main_menu_network_conf_token": "Netzwerk",
@ -806,7 +893,7 @@
"remote_effects_label_picture": "Bild:",
"remote_input_clearall": "Lösche alle Effekte/Farben",
"remote_input_duration": "Dauer:",
"remote_input_intro": "Hyperion nutzt ein Prioritätensystem, um die Quelle zu wählen. Alles was du setzt hat eine Priorität (Effekte,Farben,Plattform Aufnahme,USB Aufnahme und Netzwerkquellen). Standardmäßig nutzt Hyperion die Quelle mit der niedrigsten Priorität. Hier kannst du aktiv Einfluss darauf nehmen. $1",
"remote_input_intro": "Hyperion nutzt ein Prioritätensystem, um die Quelle zu wählen. Alles was du setzt hat eine Priorität (Effekte,Bildschirm ,Plattform Aufnahme,USB Aufnahme und Netzwerkquellen). Standardmäßig nutzt Hyperion die Quelle mit der niedrigsten Priorität. Hier kannst du aktiv Einfluss darauf nehmen. $1",
"remote_input_ip": "IP:",
"remote_input_label": "Quellenauswahl",
"remote_input_label_autoselect": "Automatische Auswahl",
@ -822,6 +909,8 @@
"remote_maptype_label_multicolor_mean": "Mehrfarbig",
"remote_maptype_label_unicolor_mean": "Einfarbig",
"remote_optgroup_syseffets": "Mitgelieferte Effekte",
"remote_optgroup_templates_custom": "Nutzer Vorlage",
"remote_optgroup_templates_system": "System Vorlage",
"remote_optgroup_usreffets": "Benutzer Effekte",
"remote_videoMode_2D": "2D",
"remote_videoMode_3DSBS": "3DSBS",
@ -869,7 +958,7 @@
"wiz_cc_chooseid": "Wähle einen Namen für dieses Farb-Profil.",
"wiz_cc_intro1": "Der Assistent wird dich durch die Kalibrierung deiner LEDs leiten. Sofern du Kodi nutzt, können die Bilder und Testvideos direkt an Kodi geschickt werden. Andernfalls musst du das Material selbst herunterladen und anwenden.",
"wiz_cc_kodicon": "Kodi Webserver gefunden, fahre mit Kodi-Unterstützung fort.",
"wiz_cc_kodidiscon": "Kodi Webserver nicht gefunden, fahre ohne Kodi-Unterstützung fort.",
"wiz_cc_kodidiscon": "Kodi Webserver nicht gefunden, fahre ohne Kodi-Unterstützung fort (prüfe, ob Fernsteuerung durch Programme auf anderen Rechnern erlaubt ist).",
"wiz_cc_kodidisconlink": "Download Link Bilder:",
"wiz_cc_kodimsg_start": "Test bestanden - Zeit zu beginnen",
"wiz_cc_kodishould": "Kodi sollte jetzt folgendes Bild anzeigen: $1",
@ -885,7 +974,7 @@
"wiz_cc_title": "Farbkalibrierungs Assistent",
"wiz_cololight_desc2": "Nun kannst du auswählen, welche der Lampen hinzugefügt werden sollen. Als Hilfe zur Identifizierung kannst du sie mit einem Klick auf den rechten Button kurz aufleuchten lassen.",
"wiz_cololight_intro1": "Dieser Assistent hilft dir bei der Konfiguration von Hyperion für Cololight. Zu den Funktionen zählen ein automatisches Finden der Cololights und weitere Einstellungen von Hyperion automatisch anzupassen. Kurz gesagt: Komplette Einrichtung mit ein paar Klicks.<br />Achtung: Wenn Du ein Cololight Strip benutzt, musst Du ggf. die Anzahl der LEDs und das Layout manuell anpassen.",
"wiz_cololight_noprops": "Auf die Device Eigenschaften kann nicht zugegriffen werden - Konfiguriere die Anzahl der LEDs manuell.",
"wiz_cololight_noprops": "Auf die Geräteeigenschaften kann nicht zugegriffen werden - Konfiguriere die Anzahl der LEDs manuell.",
"wiz_cololight_title": "Cololight Einrichtungsassistent",
"wiz_guideyou": "Der $1 wird dich durch die Konfiguration leiten, drücke dazu einfach den Button!",
"wiz_hue_blinkblue": "Lasse ID $1 blau aufleuchten",
@ -918,6 +1007,7 @@
"wiz_hue_username": "Benutzer ID:",
"wiz_identify": "Identifiziere",
"wiz_identify_light": "Identifiziere $1",
"wiz_identify_tip": "Lasse das konfigurierte Gerät kurz aufleuchten",
"wiz_ids_disabled": "Deaktiviert",
"wiz_ids_entire": "Ganzes Bild",
"wiz_noLights": "Es wurden keine $1s gefunden! Bitte verbinde die $1s mit dem Netzwerk oder konfiguriere sie manuell.",

View File

@ -5,11 +5,15 @@
"InfoDialog_changePassword_title": "Change Password",
"InfoDialog_iswitch_text": "If you run Hyperion more than once in your local network, you could switch between the web configurations. Select the Hyperion instance below and switch!",
"InfoDialog_iswitch_title": "Hyperion switcher",
"InfoDialog_lang_text": "If you don't like the result of the automatic language detection you could overwrite it here.",
"InfoDialog_lang_title": "Language setting",
"InfoDialog_nostorage_text": "Your browser does not support localStorage. You cannot save a specific language setting (fallback to 'auto detection') and access level (fallback to 'default'). Some wizards may be hidden. You could still use the webinterface without further issues",
"InfoDialog_nostorage_title": "Cannot store settings",
"InfoDialog_nowrite_foottext": "The WebUI will be unlocked automatically after you solved the problem!",
"InfoDialog_nowrite_text": "Hyperion can't write to your current loaded configuration file. Please repair the file permissions to proceed.",
"InfoDialog_nowrite_title": "write permission error!",
"infoDialog_password_current_text": "Current password",
"infoDialog_password_minimum_length": "Passwords must be minimum 8 characters.",
"infoDialog_password_new_text": "New password",
"infoDialog_username_text": "Username",
"about_3rd_party_licenses": "3rd party licenses",
"about_3rd_party_licenses_error": "We had trouble collecting 3rd party licenses information from web. <br />Please follow this link to the GitHub Resource.",
"about_build": "Build",
@ -41,17 +45,30 @@
"conf_general_inst_title": "LED Hardware Instance Management",
"conf_general_intro": "Basic settings around Hyperion and WebUI that don't fit into another category.",
"conf_general_label_title": "General settings",
"conf_grabber_fg_intro": "Platform capture is your local system capture as input source, Hyperion is installed on.",
"conf_grabber_v4l_intro": "USB capture is a (capture)device connected via USB which is used to input source pictures for processing.",
"conf_grabber_fg_intro": "Screen capture is your local system capture as input source, Hyperion is installed on.",
"conf_grabber_inst_grabber_config_info": "Configure your capturing hardware devices to be used by the instance in advance",
"conf_grabber_v4l_intro": "USB capture is a (capture) device connected via USB which is used to input source pictures for processing.",
"conf_helptable_expl": "Explanation",
"conf_helptable_option": "Option",
"conf_leds_config_error": "Error in LED/LED layout configuration",
"conf_leds_config_warning": "Check your LED/LED layout configuration",
"conf_leds_contr_label_contrtype": "Controller type:",
"conf_leds_device_info_log": "In case your LEDs do not work, check here for errors:",
"conf_leds_device_intro": "Hyperion supports a lot of controllers to transmit data to your target device. Select a LED controller out of the sorted list and configure it. We have chosen the best default settings for each device.",
"conf_leds_error_hwled_gt_layout": "The hardware LED count ($1) is greater than LEDs configured via layout ($2),<br>$3 {{plural:$3|LED|LEDs}} will stay black if you continue.",
"conf_leds_error_hwled_lt_layout": "The hardware LED count ($1) is less than LEDs configured via layout ($2). <br> The number of LEDs configured in the layout must not exceed the available LEDs",
"conf_leds_error_hwled_gt_maxled": "The hardware LED count ($1) is greater than the maximum number of LEDs supported by the device ($2). <br> The hardware LED count is set to ($3).",
"conf_leds_info_ws281x": "Hyperion must run with 'root' privileges for this controller type!",
"conf_leds_layout_advanced": "Advanced Settings",
"conf_leds_layout_blacklist_num_title": "Number of LEDs",
"conf_leds_layout_blacklist_rule_title": "Blacklist rule",
"conf_leds_layout_blacklist_rules_title": "Blacklist rules",
"conf_leds_layout_blacklist_start_title": "Start LED",
"conf_leds_layout_blacklistleds_title": "Blacklist LEDs",
"conf_leds_layout_btn_checklist": "Show checklist",
"conf_leds_layout_button_savelay": "Save Layout",
"conf_leds_layout_button_updsim": "Update Preview",
"conf_leds_layout_checkp1": "The black led is your first led, the first led is the point where you input your data signal.",
"conf_leds_layout_checkp1": "The black LED is your first LED, the first LED is the point where you input your data signal.",
"conf_leds_layout_checkp2": "The layout is always the front view of your TV, never the back view.",
"conf_leds_layout_checkp3": "Make sure the direction is right. The grey LEDs indicate LED number 2 and 3 to visualise the data direction.",
"conf_leds_layout_checkp4": "Case Gap: To create a gap, ignore it first when you define Top/Bottom/Left/Right and set afterwards your gap length to remove a amount of leds. Modify the gap position until it matches.",
@ -80,7 +97,7 @@
"conf_leds_layout_cl_vleddepth": "Vertical LED depth",
"conf_leds_layout_frame": "Classic Layout (LED Frame)",
"conf_leds_layout_generatedconf": "Generated/Current LED Configuration",
"conf_leds_layout_intro": "You need also a led layout, which reflects your led positions. The classic layout is the usual used tv frame, but we also support led matrix (led walls) creation. The view on this layout is ALWAYS of the FRONT of your TV.",
"conf_leds_layout_intro": "You also need an LED layout, which reflects your LED positions. The classic layout is the usually used TV frame, but we also support LED matrix (LED walls) creation. The view on this layout is ALWAYS from the FRONT of your TV.",
"conf_leds_layout_ma_cabling": "Cabling",
"conf_leds_layout_ma_horiz": "Horizontal",
"conf_leds_layout_ma_optbottomleft": "Bottom left",
@ -98,8 +115,8 @@
"conf_leds_layout_pbl": "Point Bottom Left",
"conf_leds_layout_pbr": "Point Bottom Right",
"conf_leds_layout_peview": "LED Layout Preview",
"conf_leds_layout_preview_l1": "This is your first led (input position)",
"conf_leds_layout_preview_l2": "This visualizes the data direction (second/third led)",
"conf_leds_layout_preview_l1": "This is your first LED (input position)",
"conf_leds_layout_preview_l2": "This visualizes the data direction (second/third LED)",
"conf_leds_layout_preview_ledpower": "Max. power consumption: $1 A",
"conf_leds_layout_preview_originCL": "Created from: Classic Layout (LED Frame)",
"conf_leds_layout_preview_originMA": "Created from: Matrix Layout(LED wall)",
@ -110,20 +127,24 @@
"conf_leds_layout_ptln": "Tripplepoints",
"conf_leds_layout_ptlv": "Vertical",
"conf_leds_layout_ptr": "Point Top Right",
"conf_leds_layout_textf1": "This text field shows by default your current loaded layout and will be overwritten if you generate a new one with the options above. Optional you could perform further edits.",
"conf_leds_layout_textf1": "This text field shows by default your current loaded layout and will be overwritten if you generate a new one with the options above. Optionally, you could perform further edits.",
"conf_leds_nav_label_ledcontroller": "LED Controller",
"conf_leds_nav_label_ledlayout": "LED Layout",
"conf_leds_note_layout_overwrite": "Note: Overwrite creates a default layout for {{plural:$1| one LED| all $1 LEDs}} given by the hardware LED count",
"conf_leds_optgroup_RPiGPIO": "RPi GPIO",
"conf_leds_optgroup_RPiPWM": "RPi PWM",
"conf_leds_optgroup_RPiSPI": "RPi SPI",
"conf_leds_optgroup_debug": "Debug",
"conf_leds_optgroup_network": "Network",
"conf_leds_optgroup_other": "Other",
"conf_leds_optgroup_usb": "USB/Serial",
"conf_logging_btn_autoscroll": "Auto scrolling",
"conf_logging_btn_clipboard": "Copy Log to Clipboard",
"conf_logging_btn_pbupload": "Upload a report for support requests",
"conf_logging_contpolicy": "Report Privacy Policy",
"conf_logging_label_intro": "Area to check log messages, you will see more or less information depending on the logging level set.",
"conf_logging_lastreports": "Previous reports",
"conf_logging_logoutput": "Log output",
"conf_logging_nomessage": "No log messages available.",
"conf_logging_report": "Report",
"conf_logging_uplfailed": "Upload failed! Please check your internet connection!",
@ -133,7 +154,7 @@
"conf_network_bobl_intro": "Receiver for Boblight",
"conf_network_createToken_btn": "Create Token",
"conf_network_fbs_intro": "Google Flatbuffers Receiver. Used for fast image transmission.",
"conf_network_forw_intro": "Forward all input to a second Hyperion instance which could be driven with another led controller",
"conf_network_forw_intro": "Forward all input to a second Hyperion installation which could be driven with another LED controller",
"conf_network_json_intro": "The JSON-RPC-Port of all Hyperion instances, used for remote control.",
"conf_network_net_intro": "Network related settings which are applied to all network services.",
"conf_network_proto_intro": "The PROTO-Port of all Hyperion instances, used for picture streams (HyperionScreenCap, Kodi Addon, Android Hyperion Grabber, ...)",
@ -164,15 +185,19 @@
"dashboard_infobox_label_instance": "Instance:",
"dashboard_infobox_label_latesthyp": "Latest Hyperion version:",
"dashboard_infobox_label_platform": "Platform:",
"dashboard_infobox_label_ports": "Ports (flat|proto):",
"dashboard_infobox_label_port_flat": "Flatbuffer:",
"dashboard_infobox_label_port_json": "JSON-Server:",
"dashboard_infobox_label_port_proto": "Protobuffer:",
"dashboard_infobox_label_ports": "Ports",
"dashboard_infobox_label_ports_websocket": "WebSocket (ws|wss):",
"dashboard_infobox_label_smartacc": "Smart Access",
"dashboard_infobox_label_statush": "Hyperion status:",
"dashboard_infobox_label_title": "Information",
"dashboard_infobox_label_watchedversionbranch": "Watched version branch:",
"dashboard_infobox_message_updatesuccess": "You run the latest version of Hyperion.",
"dashboard_infobox_message_updatesuccess": "You are running the latest version of Hyperion.",
"dashboard_infobox_message_updatewarning": "A newer version of Hyperion is available! ($1)",
"dashboard_label_intro": "The dashboard give you a quick overview about the status of Hyperion and show you the latest news of the Hyperion Blog.",
"dashboard_message_default_password": "The default password for the WebUi is set. We strongly recommend to change this.",
"dashboard_label_intro": "The dashboard gives you a quick overview on the status of Hyperion",
"dashboard_message_default_password": "The WebUI currently has the default password set. We strongly recommend changing this.",
"dashboard_message_default_password_t": "WebUI default password is set",
"dashboard_message_do_not_show_again": "Do not show this message again",
"dashboard_message_global_setting": "The settings on this page are not depending on a specific instance. Changes will be stored globally for all instances.",
@ -197,11 +222,11 @@
"edt_conf_bb_borderFrameCnt_expl": "Number of frames before a consistent detected border is set.",
"edt_conf_bb_borderFrameCnt_title": "Border frames",
"edt_conf_bb_heading_title": "Blackbar detector",
"edt_conf_bb_maxInconsistentCnt_expl": "Number of inconsistent frames that are ignored before a new border gets a chance to proof consistency.",
"edt_conf_bb_maxInconsistentCnt_expl": "Number of inconsistent frames that are ignored before a new border gets a chance to prove consistency.",
"edt_conf_bb_maxInconsistentCnt_title": "Inconsistent frames",
"edt_conf_bb_mode_expl": "Algorithm for processing. (see Wiki)",
"edt_conf_bb_mode_title": "Mode",
"edt_conf_bb_threshold_expl": "If the detection doesn't work, higher the threshold to adjust on 'greyish' black",
"edt_conf_bb_threshold_expl": "If the detection doesn't work, increase the threshold to adjust it to 'greyish' black",
"edt_conf_bb_threshold_title": "Threshold",
"edt_conf_bb_unknownFrameCnt_expl": "Number of frames without any detection before the border is set to 0.",
"edt_conf_bb_unknownFrameCnt_title": "Unknown frames",
@ -235,8 +260,8 @@
"edt_conf_color_heading_title": "Color Calibration",
"edt_conf_color_id_expl": "User given name",
"edt_conf_color_id_title": "ID",
"edt_conf_color_imageToLedMappingType_expl": "Overwrites the led area assignment of your led layout if it's not \"multicolor\"",
"edt_conf_color_imageToLedMappingType_title": "Led area assignment",
"edt_conf_color_imageToLedMappingType_expl": "Overwrites the LED area assignment of your LED layout if it's not \"multicolor\"",
"edt_conf_color_imageToLedMappingType_title": "LED area assignment",
"edt_conf_color_leds_expl": "Assign this adjustment to all LEDs (*) or just some (0-24).",
"edt_conf_color_leds_title": "LED index",
"edt_conf_color_magenta_expl": "The calibrated magenta value.",
@ -258,6 +283,9 @@
"edt_conf_enum_NTSC": "NTSC",
"edt_conf_enum_PAL": "PAL",
"edt_conf_enum_SECAM": "SECAM",
"edt_conf_enum_HORIZONTAL": "Horizontal",
"edt_conf_enum_VERTICAL": "Vertical",
"edt_conf_enum_BOTH": "Horizontal & Vertical",
"edt_conf_enum_automatic": "Automatic",
"edt_conf_enum_bbclassic": "Classic",
"edt_conf_enum_bbdefault": "Default",
@ -288,6 +316,7 @@
"edt_conf_enum_logverbose": "Verbose",
"edt_conf_enum_logwarn": "Warning",
"edt_conf_enum_multicolor_mean": "Multicolor",
"edt_conf_enum_please_select": "Please Select",
"edt_conf_enum_rbg": "RBG",
"edt_conf_enum_rgb": "RGB",
"edt_conf_enum_right_left": "Right to left",
@ -296,18 +325,18 @@
"edt_conf_enum_transeffect_sudden": "Sudden",
"edt_conf_enum_unicolor_mean": "Unicolor",
"edt_conf_fbs_heading_title": "Flatbuffers Server",
"edt_conf_fbs_timeout_expl": "If no data are received for the given period, the component will be (soft) disabled.",
"edt_conf_fbs_timeout_expl": "If no data is received for the given period, the component will be (soft) disabled.",
"edt_conf_fbs_timeout_title": "Timeout",
"edt_conf_fg_display_expl": "Select which desktop should be captured (multi monitor setup)",
"edt_conf_fg_display_title": "Display",
"edt_conf_fg_frequency_Hz_expl": "How fast new pictures are captured",
"edt_conf_fg_frequency_Hz_expl": "How fast new pictures are captured, i.e. it is the sampling rate. Note: The video might be played at a higher or lower frame rate.",
"edt_conf_fg_frequency_Hz_title": "Capture frequency",
"edt_conf_fg_heading_title": "Platform Capture",
"edt_conf_fg_heading_title": "Screen Capture",
"edt_conf_fg_height_expl": "Shrink picture to this height, as raw picture needs a lot of CPU time.",
"edt_conf_fg_height_title": "Height",
"edt_conf_fg_pixelDecimation_expl": "Reduce picture size (factor) based on original size. A factor of 1 means no change",
"edt_conf_fg_pixelDecimation_title": "Picture decimation",
"edt_conf_fg_type_expl": "Type of platform capture, default is 'auto'",
"edt_conf_fg_type_expl": "Type of screen capture, default is 'auto'",
"edt_conf_fg_type_title": "Type",
"edt_conf_fg_width_expl": "Shrink picture to this width, as raw picture needs a lot of cpu time.",
"edt_conf_fg_width_title": "Width",
@ -322,11 +351,12 @@
"edt_conf_fge_type_title": "Type",
"edt_conf_fw_flat_expl": "One flatbuffer target per line. Contains IP:PORT (Example: 127.0.0.1:19401)",
"edt_conf_fw_flat_itemtitle": "flatbuffer target",
"edt_conf_fw_flat_title": "List of flatbuffer clients",
"edt_conf_fw_flat_title": "List of flatbuffer targets",
"edt_conf_fw_heading_title": "Forwarder",
"edt_conf_fw_json_expl": "One json target per line. Contains IP:PORT (Example: 127.0.0.1:19446)",
"edt_conf_fw_json_itemtitle": "Json target",
"edt_conf_fw_json_title": "List of json clients",
"edt_conf_fw_json_title": "List of json targets",
"edt_conf_gen_configVersion_title": "Configuration version",
"edt_conf_gen_heading_title": "General Settings",
"edt_conf_gen_name_expl": "A user defined name which is used to detect Hyperion. (Helpful with more than one Hyperion instance)",
"edt_conf_gen_name_title": "Configuration name",
@ -340,26 +370,35 @@
"edt_conf_general_port_title": "Port",
"edt_conf_general_priority_expl": "The priority of this component",
"edt_conf_general_priority_title": "Priority channel",
"edt_conf_instC_systemEnable_expl": "Enables the platform capture for this led hardware instance",
"edt_conf_instC_systemEnable_title": "Enable platform capture",
"edt_conf_instC_v4lEnable_expl": "Enables the USB capture for this led hardware instance",
"edt_conf_grabber_discovered_expl": "Select your capture device discovered",
"edt_conf_grabber_discovered_none": "No capture device discovered",
"edt_conf_grabber_discovered_title": "Device discovered",
"edt_conf_grabber_discovered_title_info": "Select your capture device discovered",
"edt_conf_grabber_discovery_inprogress": "Discovery in progress",
"edt_conf_instC_screen_grabber_device_expl": "The screen capture device used",
"edt_conf_instC_screen_grabber_device_title": "Screen capture device",
"edt_conf_instC_systemEnable_expl": "Enables the screen capture for this led hardware instance",
"edt_conf_instC_systemEnable_title": "Enable screen capture",
"edt_conf_instC_v4lEnable_expl": "Enables the USB capture for this LED hardware instance",
"edt_conf_instC_v4lEnable_title": "Enable USB capture",
"edt_conf_instCapture_heading_title": "Instance Capture",
"edt_conf_instC_video_grabber_device_expl": "The video capture device used",
"edt_conf_instC_video_grabber_device_title": "Video capture device",
"edt_conf_instCapture_heading_title": "Capture Devices",
"edt_conf_js_heading_title": "JSON Server",
"edt_conf_log_heading_title": "Logging",
"edt_conf_log_level_expl": "Depending on loglevel you see less or more messages in your log.",
"edt_conf_log_level_title": "Log-Level",
"edt_conf_net_apiAuth_expl": "Enforce all applications that use the Hyperion API to authenticate themself against Hyperion (Exception see \"Local API Authentication\"). Higher security, as you control the access and revoke it at any time.",
"edt_conf_net_apiAuth_expl": "Enforce all applications that use the Hyperion API to authenticate themself against Hyperion (Exception: see \"Local API Authentication\"). Higher security, as you control the access and revoke it at any time.",
"edt_conf_net_apiAuth_title": "API Authentication",
"edt_conf_net_heading_title": "Network",
"edt_conf_net_internetAccessAPI_expl": "Allow access to the Hyperion API/Webinterface from the internet, disable for higher security.",
"edt_conf_net_internetAccessAPI_expl": "Allow access to the Hyperion API/Webinterface from the internet. Disable for higher security.",
"edt_conf_net_internetAccessAPI_title": "Internet API Access",
"edt_conf_net_ipWhitelist_expl": "You can whitelist IP addresses instead allowing all connections from internet to connect to the Hyperion API/Webinterface.",
"edt_conf_net_ipWhitelist_title": "Whitelisted IP's",
"edt_conf_net_ip_itemtitle": "IP",
"edt_conf_net_localAdminAuth_expl": "When enabled, administration access from your local network needs a password.",
"edt_conf_net_localAdminAuth_title": "Local Admin API Authentication",
"edt_conf_net_localApiAuth_expl": "When enabled, connections from your home network needs to authenticate themself against Hyperion with a token.",
"edt_conf_net_localApiAuth_expl": "When enabled, connections from your home network needs to authenticate themselves against Hyperion with a token.",
"edt_conf_net_localApiAuth_title": "Local API Authentication",
"edt_conf_net_restirctedInternetAccessAPI_expl": "You can restrict the access to the API through the internet to certain IP's.",
"edt_conf_net_restirctedInternetAccessAPI_title": "Restrict to IP's",
@ -375,7 +414,7 @@
"edt_conf_smooth_heading_title": "Smoothing",
"edt_conf_smooth_interpolationRate_expl": "Speed of the calculation of smooth intermediate frames.",
"edt_conf_smooth_interpolationRate_title": "Interpolation Rate",
"edt_conf_smooth_outputRate_expl": "The output speed to your led controller.",
"edt_conf_smooth_outputRate_expl": "The output speed to your LED controller.",
"edt_conf_smooth_outputRate_title": "Output Rate",
"edt_conf_smooth_time_ms_expl": "How long should the smoothing gather pictures?",
"edt_conf_smooth_time_ms_title": "Time",
@ -383,7 +422,7 @@
"edt_conf_smooth_type_title": "Type",
"edt_conf_smooth_updateDelay_expl": "Delay the output in case your ambient light is faster than your TV.",
"edt_conf_smooth_updateDelay_title": "Update delay",
"edt_conf_smooth_updateFrequency_expl": "The output speed to your led controller.",
"edt_conf_smooth_updateFrequency_expl": "The output speed to your LED controller.",
"edt_conf_smooth_updateFrequency_title": "Update frequency",
"edt_conf_v4l2_blueSignalThreshold_expl": "Darkens low blue values (recognized as black)",
"edt_conf_v4l2_blueSignalThreshold_title": "Blue signal threshold",
@ -397,6 +436,8 @@
"edt_conf_v4l2_cropRight_title": "Crop right",
"edt_conf_v4l2_cropTop_expl": "Count of pixels on the top side that are removed from the picture.",
"edt_conf_v4l2_cropTop_title": "Crop top",
"edt_conf_v4l2_cropWidthValidation_error": "Crop left + Crop right cannot be greater than Width ($1)",
"edt_conf_v4l2_cropHeightValidation_error": "Crop top + Crop bottom cannot be greater than Height ($1)",
"edt_conf_v4l2_device_expl": "The path to the USB capture interface. Set to 'Automatic' for automatic detection. Example: '/dev/video0'",
"edt_conf_v4l2_device_title": "Device",
"edt_conf_v4l2_framerate_expl": "The supported frames per second of the active device",
@ -424,6 +465,24 @@
"edt_conf_v4l2_sizeDecimation_title": "Size decimation",
"edt_conf_v4l2_standard_expl": "Select the video standard for your region. 'Automatic' keeps the value chosen by the v4l2 interface.",
"edt_conf_v4l2_standard_title": "Video standard",
"edt_conf_v4l2_flip_expl": "This allows you to flip the image horizontally, vertically, or both.",
"edt_conf_v4l2_flip_title": "Image flip",
"edt_conf_v4l2_fpsSoftwareDecimation_title": "Software frame skipping",
"edt_conf_v4l2_fpsSoftwareDecimation_expl": "To save resources every n'th frame will be processed only. For ex. if grabber is set to 30fps with this option set to 5 the final result will be around 6fps",
"edt_conf_v4l2_encoding_title": "Encoding format",
"edt_conf_v4l2_encoding_expl": "Force video encoding for multiformat capable grabbers",
"edt_conf_v4l2_hardware_brightness_title": "Hardware brightness control",
"edt_conf_v4l2_hardware_brightness_expl": "Set hardware brightness",
"edt_conf_v4l2_hardware_contrast_title": "Hardware contrast control",
"edt_conf_v4l2_hardware_contrast_expl": "Set hardware contrast",
"edt_conf_v4l2_hardware_hue_title": "Hardware hue control",
"edt_conf_v4l2_hardware_hue_expl": "Set hardware hue",
"edt_conf_v4l2_hardware_saturation_title": "Hardware saturation control",
"edt_conf_v4l2_hardware_saturation_expl": "Set hardware saturation",
"edt_conf_v4l2_hardware_set_defaults": "Default hardware controls",
"edt_conf_v4l2_hardware_set_defaults_tip": "Set device's default values for brightness, contrast, hue and saturation",
"edt_conf_v4l2_noSignalCounterThreshold_title": "Signal Counter Threshold",
"edt_conf_v4l2_noSignalCounterThreshold_expl": "Count of frames (check that with grabber's current FPS mode) after which the no signal is triggered",
"edt_conf_webc_crtPath_expl": "Path to the certification file (format should be PEM)",
"edt_conf_webc_crtPath_title": "Certificate path",
"edt_conf_webc_docroot_expl": "Local webinterface root path (just for webui developer)",
@ -436,12 +495,15 @@
"edt_conf_webc_sslport_expl": "Port oft the HTTPS-Webserver",
"edt_conf_webc_sslport_title": "HTTPS Port",
"edt_dev_auth_key_title": "Authentication Token",
"edt_dev_auth_key_title_info": "Authentication Token required to acccess the device",
"edt_dev_enum_sub_min_cool_adjust": "Subtract cool white",
"edt_dev_enum_sub_min_warm_adjust": "Subtract warm white",
"edt_dev_enum_subtract_minimum": "Subtract minimum",
"edt_dev_enum_white_off": "White off",
"edt_dev_general_colorOrder_title": "RGB byte order",
"edt_dev_general_colorOrder_title_info": "The device's color order",
"edt_dev_general_hardwareLedCount_title": "Hardware LED count",
"edt_dev_general_hardwareLedCount_title_info": "The number of physical LEDs availabe for the given device",
"edt_dev_general_heading_title": "General Settings",
"edt_dev_general_name_title": "Configuration name",
"edt_dev_general_rewriteTime_title": "Refresh time",
@ -455,7 +517,9 @@
"edt_dev_spec_brightnessFactor_title": "Brightness factor",
"edt_dev_spec_brightnessMax_title": "Brightness maximum",
"edt_dev_spec_brightnessMin_title": "Brightness minimum",
"edt_dev_spec_brightnessOverwrite_title": "Overwrite brightness",
"edt_dev_spec_brightnessThreshold_title": "Signal detection brightness minimum",
"edt_dev_spec_brightness_title": "Brightness",
"edt_dev_spec_chanperfixture_title": "Channels per Fixture",
"edt_dev_spec_cid_title": "CID",
"edt_dev_spec_clientKey_title": "Clientkey",
@ -463,6 +527,11 @@
"edt_dev_spec_debugLevel_title": "Debug Level",
"edt_dev_spec_debugStreamer_title": "Streamer Debug",
"edt_dev_spec_delayAfterConnect_title": "Delay after connect",
"edt_dev_spec_devices_discovered_none": "No Devices Discovered",
"edt_dev_spec_devices_discovered_title": "Devices Discovered",
"edt_dev_spec_devices_discovered_title_info": "Select your LED-Device discovered",
"edt_dev_spec_devices_discovered_title_info_custom": "Select your LED-Device discovered or configure a custome one",
"edt_dev_spec_devices_discovery_inprogress": "Discovery in progress",
"edt_dev_spec_dithering_title": "Dithering",
"edt_dev_spec_dmaNumber_title": "DMA channel",
"edt_dev_spec_gamma_title": "Gamma",
@ -477,6 +546,7 @@
"edt_dev_spec_intervall_title": "Interval",
"edt_dev_spec_invert_title": "Invert signal",
"edt_dev_spec_latchtime_title": "Latch time",
"edt_dev_spec_latchtime_title_info": "Latch time is the time-frame a device requires until the next update can be processed. During that time-frame any updates done via ignored.",
"edt_dev_spec_ledIndex_title": "LED index",
"edt_dev_spec_ledType_title": "LED Type",
"edt_dev_spec_lightid_itemtitle": "ID",
@ -500,17 +570,20 @@
"edt_dev_spec_port_title": "Port",
"edt_dev_spec_printTimeStamp_title": "Add timestamp",
"edt_dev_spec_pwmChannel_title": "PWM channel",
"edt_dev_spec_restoreOriginalState_title": "Restore lights' original state when disabled",
"edt_dev_spec_razer_device_title": "Razer Chroma Device",
"edt_dev_spec_razer_device_title": "Razer Chroma Device",
"edt_dev_spec_restoreOriginalState_title": "Restore lights' state",
"edt_dev_spec_restoreOriginalState_title_info": "Restore the device's original state when device is disabled",
"edt_dev_spec_serial_title": "Serial number",
"edt_dev_spec_spipath_title": "SPI path",
"edt_dev_spec_spipath_title": "SPI Device",
"edt_dev_spec_sslHSTimeoutMax_title": "Streamer handshake timeout maximum",
"edt_dev_spec_sslHSTimeoutMin_title": "Streamer handshake timeout minimum",
"edt_dev_spec_sslReadTimeout_title": "Streamer read timeout",
"edt_dev_spec_switchOffOnBlack_title": "Switch off on black",
"edt_dev_spec_switchOffOnbelowMinBrightness_title": "Switch-off, below minimum",
"edt_dev_spec_targetIpHost_title": "Target IP/Hostname",
"edt_dev_spec_targetIp_title": "Target IP",
"edt_dev_spec_syncOverwrite_title": "Disable synchronisation",
"edt_dev_spec_targetIpHost_title": "Target Hostname/IP-address",
"edt_dev_spec_targetIpHost_title_info": "The device's hostname or IP-address",
"edt_dev_spec_targetIp_title": "Target IP-address",
"edt_dev_spec_transeffect_title": "Transition effect",
"edt_dev_spec_transistionTimeExtra_title": "Extra time darkness",
"edt_dev_spec_transistionTime_title": "Transition time",
@ -571,17 +644,23 @@
"edt_eff_flag_header_desc": "Let your LEDs shine bright in the colours of your country. You can select more than one flag and they will change based on the interval time.",
"edt_eff_fps": "Frames per seconds",
"edt_eff_frequency": "Frequency",
"edt_eff_grayscale": "Grayscale",
"edt_eff_gif_header": "GIF's",
"edt_eff_gif_header_desc": "This effect plays .gif files, provide a simple video like loop as effect.",
"edt_eff_height": "Height",
"edt_eff_huechange": "Color change",
"edt_eff_image_source": "Image source",
"edt_eff_image_source_file": "Local file",
"edt_eff_image_source_url": "URL",
"edt_eff_image": "Image file",
"edt_eff_url": "Image adress",
"edt_eff_initial_blink" : "Flash for attention",
"edt_eff_interval": "Interval",
"edt_eff_knightrider_header": "Knight Rider",
"edt_eff_knightrider_header_desc": "K.I.T.T is back! The front-scanner of the well known car, this time not just in red.",
"edt_eff_ledlist": "Led List",
"edt_eff_ledtest_header": "Led Test",
"edt_eff_ledtest_header_desc": "Rotating output: Red, Blue, Green, White, Black",
"edt_eff_ledlist": "LED List",
"edt_eff_ledtest_header": "LED Test",
"edt_eff_ledtest_header_desc": "Rotating output: Red, Green, Blue, White, Black",
"edt_eff_length": "Length",
"edt_eff_lightclock_header": "Light Clock",
"edt_eff_lightclock_header_desc": "A real clock as light! Adjust the colors of hours, minute, seconds. A optional 3/6/9/12 o'clock marker is also available. In case the clock is wrong, you need to check your system clock.",
@ -596,7 +675,7 @@
"edt_eff_moodblobs_header_desc": "Relax at the evening with slow moving and color changing blobs.",
"edt_eff_offset": "Offset",
"edt_eff_pacman_header": "Pac-Man",
"edt_eff_pacman_header_desc": "Small hungry and yellow. Who will survive?",
"edt_eff_pacman_header_desc": "Small, hungry and yellow. Who will survive?",
"edt_eff_plasma_header": "Plasma",
"edt_eff_plasma_header_desc": "Color distortion in different directions",
"edt_eff_police_header": "Police",
@ -613,6 +692,7 @@
"edt_eff_reversedirection": "Reverse direction",
"edt_eff_rotationtime": "Rotation time",
"edt_eff_saturation": "Saturation",
"edt_eff_set_post_color" : "Set post color after alam",
"edt_eff_showseconds": "Show seconds",
"edt_eff_sleeptime": "Sleep time",
"edt_eff_smooth_custom": "Enable smoothing",
@ -699,6 +779,7 @@
"general_btn_off": "Off",
"general_btn_ok": "OK",
"general_btn_on": "On",
"general_btn_overwrite": "Overwrite",
"general_btn_rename": "Rename",
"general_btn_restarthyperion": "Restart Hyperion",
"general_btn_save": "Save",
@ -716,11 +797,11 @@
"general_comp_BOBLIGHTSERVER": "Boblight Server",
"general_comp_FLATBUFSERVER": "Flatbuffers Server",
"general_comp_FORWARDER": "Forwarder",
"general_comp_GRABBER": "Platform Capture",
"general_comp_LEDDEVICE": "LED device",
"general_comp_GRABBER": "Capture Screen",
"general_comp_LEDDEVICE": "LED Output",
"general_comp_PROTOSERVER": "Protocol Buffers Server",
"general_comp_SMOOTHING": "Smoothing",
"general_comp_V4L": "USB Capture",
"general_comp_V4L": "Capture USB-Input",
"general_country_cn": "China",
"general_country_de": "Germany",
"general_country_es": "Spain",
@ -730,14 +811,18 @@
"general_country_ru": "Russia",
"general_country_uk": "United Kingdom",
"general_country_us": "United States",
"general_disabled": "disabled",
"general_enabled": "enabled",
"general_speech_cs": "Czech",
"general_speech_de": "German",
"general_speech_en": "English",
"general_speech_es": "Spanish",
"general_speech_fr": "French",
"general_speech_it": "Italian",
"general_speech_nb": "Norwegian (Bokmål)",
"general_speech_nl": "Dutch",
"general_speech_pl": "Polish",
"general_speech_pt": "Portuguese",
"general_speech_ro": "Romanian",
"general_speech_ru": "Russian",
"general_speech_sv": "Swedish",
@ -752,42 +837,44 @@
"infoDialog_general_error_title": "Error",
"infoDialog_general_success_title": "Success",
"infoDialog_general_warning_title": "Warning",
"infoDialog_import_comperror_text": "Sad! Your browser doesn't support a import. Please try again with another browser.",
"infoDialog_import_comperror_text": "Sad! Your browser doesn't support importing. Please try again with another browser.",
"infoDialog_import_confirm_text": "Are you sure to import \"$1\"? This process can't be reverted!",
"infoDialog_import_confirm_title": "Confirm import",
"infoDialog_import_hyperror_text": "The selected configuration file \"$1\" can't be imported. It's not compatible with Hyperion 2.0 and higher!",
"infoDialog_import_jsonerror_text": "The selected configuration file \"$1\" is no .json file or it's corrupted. Error message: ($2)",
"infoDialog_import_jsonerror_text": "The selected configuration file \"$1\" is not a .json file, or it's corrupted. Error message: ($2)",
"infoDialog_wizrgb_text": "Your RGB Byte Order is already well adjusted.",
"infoDialog_writeconf_error_text": "Saving your configuration failed.",
"infoDialog_writeimage_error_text": "The selected file \"$1\" is no image file or it's corrupted! Please select another image file.",
"infoDialog_writeimage_error_text": "The selected file \"$1\" is not an image file, or it's corrupted! Please select another image file.",
"info_404": "The page you requested is not available!",
"info_conlost_label_autorecon": "We reconnect again after Hyperion is available.",
"info_conlost_label_autorecon": "Will reconnect again after Hyperion is available.",
"info_conlost_label_autorefresh": "This page will be automatically refreshed.",
"info_conlost_label_reason": "Possible reasons:",
"info_conlost_label_reason1": "- Bad WLAN connection",
"info_conlost_label_reason2": "- You perform an update",
"info_conlost_label_reason2": "- You performed an update",
"info_conlost_label_reason3": "- Hyperion isn't running",
"info_conlost_label_reload": "Auto reconnect stopped - limit exceeded, please refresh page or click me.",
"info_conlost_label_reload": "Auto reconnect stopped - limit exceeded. Please refresh page, or click me!",
"info_conlost_label_title": "Lost connection to Hyperion service!",
"info_restart_contus": "If you still hang around here after 20 seconds and you have no clue why please open a new topic at our support forum...",
"info_restart_contusa": "...with your last steps. Thank you!",
"info_restart_rightback": "Hyperion will be right back immediately!",
"info_restart_title": "Restarts currently...",
"info_restart_title": "Currently restarting...",
"main_ledsim_btn_togglelednumber": "LED numbers",
"main_ledsim_btn_toggleleds": "Show LEDs",
"main_ledsim_btn_togglelivevideo": "Live video",
"main_ledsim_text": "Live visualization of led colors and optional the current video stream of your capture device.",
"main_ledsim_btn_togglesigdetect": "Signal detection area",
"main_ledsim_text": "Live visualization of LED colors and optional the current video stream of your capture device.",
"main_ledsim_title": "LED Visualization",
"main_menu_about_token": "About Hyperion",
"main_menu_colors_conf_token": "Image Processing",
"main_menu_configuration_token": "Configuration",
"main_menu_configuration_token": "LED Instances",
"main_menu_dashboard_token": "Dashboard",
"main_menu_effect_conf_token": "Effects",
"main_menu_effectsconfigurator_token": "Effects Configurator",
"main_menu_general_conf_token": "General",
"main_menu_grabber_conf_token": "Capturing Hardware",
"main_menu_input_selection_token": "Input Selection",
"main_menu_leds_conf_token": "LED Hardware",
"main_menu_instcapture_conf_token": "Sources",
"main_menu_leds_conf_token": "LED Output",
"main_menu_logging_token": "Log",
"main_menu_network_conf_token": "Network Services",
"main_menu_remotecontrol_token": "Remote Control",
@ -795,10 +882,10 @@
"main_menu_system_token": "System",
"main_menu_update_token": "Update",
"main_menu_webconfig_token": "Web configuration",
"remote_adjustment_intro": "Modify color/brightness/compensation during runtime. $1",
"remote_adjustment_intro": "Modify color/brightness/compensation at runtime. $1",
"remote_adjustment_label": "Color adjustment",
"remote_color_button_reset": "Reset Color/Effect",
"remote_color_intro": "Set an effect or color. Also your self created effects are listed (if available). $1",
"remote_color_intro": "Set an effect or color. Also the effects created by yourself are listed (if available). $1",
"remote_color_label": "Colors/Effects",
"remote_color_label_color": "Color:",
"remote_components_intro": "Enable and disable components of Hyperion during runtime. $1",
@ -807,7 +894,7 @@
"remote_effects_label_picture": "Picture:",
"remote_input_clearall": "Clear all Effects/Colors",
"remote_input_duration": "Duration:",
"remote_input_intro": "Hyperion uses a priority system to select a source. Everything you set has a priority (Effect/Color/Platform capture/USB capture and network sources). By default, Hyperion select sources depending on priority (lowest number reflects the current active source). Now you have the opportunity to select sources on your own. $1",
"remote_input_intro": "Hyperion uses a priority system to select a source. Everything you set has a priority (Effect/Color/Screen capture/USB capture and network sources). By default, Hyperion select sources depending on priority (lowest number reflects the current active source). Now you have the opportunity to select sources on your own. $1",
"remote_input_ip": "IP:",
"remote_input_label": "Source Selection",
"remote_input_label_autoselect": "Auto Selection",
@ -817,17 +904,19 @@
"remote_input_setsource_btn": "Select Source",
"remote_input_sourceactiv_btn": "Source active",
"remote_input_status": "Status/Action",
"remote_losthint": "Note: All changes are lost after a restart.",
"remote_maptype_intro": "Usually the led layout defines which LED covers a specific picture area, you could change it here: $1.",
"remote_losthint": "Note: All changes will be lost after a restart.",
"remote_maptype_intro": "Usually the LED layout defines which LED covers a specific picture area. You can change it here: $1.",
"remote_maptype_label": "Mapping type",
"remote_maptype_label_multicolor_mean": "Multicolor",
"remote_maptype_label_unicolor_mean": "Unicolor",
"remote_optgroup_syseffets": "Provided Effects",
"remote_optgroup_syseffets": "System Effects",
"remote_optgroup_templates_custom": "User Templates",
"remote_optgroup_templates_system": "System Templates",
"remote_optgroup_usreffets": "User Effects",
"remote_videoMode_2D": "2D",
"remote_videoMode_3DSBS": "3DSBS",
"remote_videoMode_3DTAB": "3DTAB",
"remote_videoMode_intro": "Switch between different video modes to enjoy 3D movies! Supported are all capture devices. $1",
"remote_videoMode_intro": "Switch between different video modes to enjoy 3D movies! All capture devices are supported. $1",
"remote_videoMode_label": "Video mode",
"support_label_affinstr1": "Click on the appropriate link of your country",
"support_label_affinstr2": "Everything you buy (doesn't matter what) we get a small fee based on your turnover",
@ -841,7 +930,7 @@
"support_label_ggtext": "Circle us on Google +!",
"support_label_ghtext": "Visit us on GitHub",
"support_label_igtext": "Visit us on Instagram to watch the latest Hyperion pictures!",
"support_label_intro": "Hyperion is a free non-profit software. A small team is working on it and this is why we need your steady support.",
"support_label_intro": "Hyperion is a free, non-profit software. A small team is working on it and this is why we need your steady support.",
"support_label_spreadtheword": "Spread the word",
"support_label_title": "Support Hyperion",
"support_label_twtext": "Share and follow on Twitter, be always up to date with latest post about the Hyperion development",
@ -849,7 +938,7 @@
"support_label_webpagetitle": "Webpage",
"support_label_webrestitle": "Information and help resources",
"support_label_wikitext": "The A to Z source for almost everything Hyperion related",
"support_label_wikititle": "Wiki",
"support_label_wikititle": "Documentation",
"support_label_yttext": "Bored from pictures? Check out our YouTube channel!",
"update_button_changelog": "Full changelog",
"update_button_install": "Install",
@ -868,9 +957,9 @@
"wiz_cc_btn_stop": "Stop video",
"wiz_cc_btn_switchpic": "Switch picture",
"wiz_cc_chooseid": "Define a name for this color profile.",
"wiz_cc_intro1": "This wizard will guide you through your led calibration. If you are using Kodi, the calibration pictures and videos can be sent directly to it. Prerequisite: You need to enable \"Allow remote control from applications on other systems\" in Kodi.<br />Alternatively, you might want downloading these files yourself and display them when the wizard asks you to adjust the setting.",
"wiz_cc_intro1": "This wizard will guide you through your LED calibration. If you are using Kodi, the calibration pictures and videos can be sent directly to it. Prerequisite: You need to enable \"Allow remote control from applications on other systems\" in Kodi.<br />Alternatively, you might want downloading these files yourself and display them when the wizard asks you to adjust the setting.",
"wiz_cc_kodicon": "Kodi found, proceed with Kodi support.",
"wiz_cc_kodidiscon": "Kodi not found, proceed without Kodi support.",
"wiz_cc_kodidiscon": "Kodi not found, proceed without Kodi support (please check, if remote control by other systems is activated).",
"wiz_cc_kodidisconlink": "Download link pictures:",
"wiz_cc_kodimsg_start": "Test success - time to proceed!",
"wiz_cc_kodishould": "Kodi should show the following picture: $1",
@ -918,6 +1007,7 @@
"wiz_hue_title": "Philips Hue Wizard",
"wiz_hue_username": "User ID:",
"wiz_identify": "Identify",
"wiz_identify_tip": "Identify configured device by lighting it up",
"wiz_identify_light": "Identify $1",
"wiz_ids_disabled": "Deactivated",
"wiz_ids_entire": "Whole picture",

View File

@ -5,8 +5,8 @@
"InfoDialog_changePassword_title": "Cambiar Contraseña",
"InfoDialog_iswitch_text": "Si ejecutas Hyperion más de una vez en tu red local, puedes cambiar entre las configuraciones web. ¡Selecciona la instancia de Hyperion a continuación y cambia!",
"InfoDialog_iswitch_title": "Conmutador Hyperion",
"InfoDialog_lang_text": "Si no te gusta el resultado de la detección automática del idioma, puedes sobrescribirlo aquí.",
"InfoDialog_lang_title": "Configuración de idioma",
"InfoDialog_nostorage_text": "Su navegador no soporta localStorage. No se puede guardar una configuración de idioma específica (se restablece la \"detección automática\") y el nivel de acceso (se restablece el \"predeterminado\"). Algunos asistentes pueden estar ocultos. Puedes seguir utilizando la interfaz web sin más problemas",
"InfoDialog_nostorage_title": "No se puede almacenar la configuración",
"InfoDialog_nowrite_foottext": "¡El WebUI se desbloqueará automáticamente después de haber resuelto el problema!",
"InfoDialog_nowrite_text": "Hyperion no puede escribir en el archivo de configuración cargado actual. Repara los permisos de archivo para continuar.",
"InfoDialog_nowrite_title": "¡Error de permiso de escritura!",
@ -42,12 +42,25 @@
"conf_general_intro": "Ajustes básicos de Hyperion y WebUI que no encajan en otra categoría.",
"conf_general_label_title": "Configuración General",
"conf_grabber_fg_intro": "La plataforma de captura es la captura del sistema local como fuente de entrada, en la que Hyperion está instalado.",
"conf_grabber_inst_grabber_config_info": "Configura de antemano los dispositivos de hardware de captura que utilizará la instancia",
"conf_grabber_v4l_intro": "La captura USB es un dispositivo (de captura) conectado a través de USB que se utiliza para introducir imágenes de origen para su procesado.",
"conf_helptable_expl": "Explicación",
"conf_helptable_option": "Opción",
"conf_leds_config_error": "Error en la configuración de la disposición de los LEDs",
"conf_leds_config_warning": "Comprueba la configuración de la disposición de los LEDs",
"conf_leds_contr_label_contrtype": "Tipo de controladora:",
"conf_leds_device_info_log": "En caso de que tus LEDs no funcionen, comprueba aquí si hay errores:",
"conf_leds_device_intro": "Hyperion soporta una gran cantidad de controladores para transmitir datos a tu dispositivo de destino. Selecciona un controlador LED fuera de la lista ordenada y configúralo. Hemos elegido los mejores ajustes por defecto para cada dispositivo.",
"conf_leds_error_hwled_gt_layout": "El recuento de LEDs por hardware ($1) es mayor que los LEDs configurados a través de la disposición ($2),<br>$3 {{plural:$1|LED|LEDs}} se quedará en negro si continúas.",
"conf_leds_error_hwled_gt_maxled": "El recuento de LEDs por hardware ($1) es mayor que el número máximo de LEDs soportado por el dispositivo ($2). <br> El recuento de LEDs de hardware se establece en ($3).",
"conf_leds_error_hwled_lt_layout": "El recuento de LEDs por hardware ($1) es menor que los LEDs configurados a través del diseño ($2). <br> El número de LEDs configurados en el esquema no debe superar los LEDs disponibles.",
"conf_leds_info_ws281x": "Hyperion debe ejecutarse con privilegios 'root' para este tipo de controlador.",
"conf_leds_layout_advanced": "Ajustes Avanzados",
"conf_leds_layout_blacklist_num_title": "Número de LEDs",
"conf_leds_layout_blacklist_rule_title": "Regla de lista negra",
"conf_leds_layout_blacklist_rules_title": "Reglas de lista negra",
"conf_leds_layout_blacklist_start_title": "LED de inicio",
"conf_leds_layout_blacklistleds_title": "LEDs de lista negra",
"conf_leds_layout_btn_checklist": "Mostrar lista",
"conf_leds_layout_button_savelay": "Guardar Disposición",
"conf_leds_layout_button_updsim": "Actualizar Vista Previa",
@ -113,17 +126,21 @@
"conf_leds_layout_textf1": "Este campo de texto muestra de forma predeterminada el diseño cargado actual y se sobrescribirá si generas uno nuevo con las opciones siguientes. Opcional, puedes realizar más ediciones.",
"conf_leds_nav_label_ledcontroller": "Controlador LED",
"conf_leds_nav_label_ledlayout": "Disposición LED",
"conf_leds_note_layout_overwrite": "Nota: La sobrescritura crea un diseño por defecto para {{plural:$1| $1 LED| todos los $1 LED}} dado por el recuento de LEDs del hardware",
"conf_leds_optgroup_RPiGPIO": "GPIO RPi",
"conf_leds_optgroup_RPiPWM": "PWM RPi",
"conf_leds_optgroup_RPiSPI": "SPI RPi",
"conf_leds_optgroup_debug": "Depurar",
"conf_leds_optgroup_debug": "Depuración",
"conf_leds_optgroup_network": "Red",
"conf_leds_optgroup_other": "Otro",
"conf_leds_optgroup_usb": "USB/Serial",
"conf_logging_btn_autoscroll": "Desplazamiento automático",
"conf_logging_btn_clipboard": "Copiar el registro en el portapapeles",
"conf_logging_btn_pbupload": "Crear informe para solicitud de soporte",
"conf_logging_contpolicy": "Informe de la Política de Privacidad",
"conf_logging_label_intro": "Área para comprobar los mensajes de registro, dependiendo de la configuración de nivel de registro, verás más o menos información.",
"conf_logging_lastreports": "Informes anteriores",
"conf_logging_logoutput": "Resultado del registro",
"conf_logging_nomessage": "No hay mensajes de registro disponibles.",
"conf_logging_report": "Informe",
"conf_logging_uplfailed": "¡Subida fallida! ¡Por favor revise su conexion a internet!",
@ -164,16 +181,20 @@
"dashboard_infobox_label_instance": "Instancia:",
"dashboard_infobox_label_latesthyp": "Última versión de Hyperion:",
"dashboard_infobox_label_platform": "Plataforma:",
"dashboard_infobox_label_ports": "Puertos (json|proto):",
"dashboard_infobox_label_port_flat": "Flatbuffer:",
"dashboard_infobox_label_port_json": "Servidor JSON:",
"dashboard_infobox_label_port_proto": "Protobuffer:",
"dashboard_infobox_label_ports": "Puertos",
"dashboard_infobox_label_ports_websocket": "WebSocket (ws|wss):",
"dashboard_infobox_label_smartacc": "Acceso Inteligente",
"dashboard_infobox_label_statush": "Estado de Hyperion:",
"dashboard_infobox_label_title": "Información",
"dashboard_infobox_label_watchedversionbranch": "Rama de la versión visualizada:",
"dashboard_infobox_message_updatesuccess": "Ejecutas la última versión de Hyperion.",
"dashboard_infobox_message_updatewarning": "¡Una versión más nueva de Hyperion está disponible! ($1)",
"dashboard_label_intro": "El cuadro de mandos te ofrece una visión general sobre el estado de Hyperion y te muestra las últimas noticias del Blog de Hyperion.",
"dashboard_message_default_password": "Establecida la contraseña predeterminada para la WebUi. Recomendamos encarecidamente cambiar esto.",
"dashboard_message_default_password_t": "Establecida la contraseña predeterminada de WebUi",
"dashboard_label_intro": "El cuadro de mandos te ofrece una visión general sobre el estado de Hyperion.",
"dashboard_message_default_password": "La WebUI tiene actualmente la contraseña por defecto. Te recomendamos encarecidamente que la cambies.",
"dashboard_message_default_password_t": "Está establecida la contraseña por defecto de la WebUI",
"dashboard_message_do_not_show_again": "No mostrar este mensaje de nuevo",
"dashboard_message_global_setting": "La configuración de esta página no depende de una instalación específica. Los cambios se almacenarán globalmente para todas las instalaciones.",
"dashboard_message_global_setting_t": "Configuración independiente de la instalación",
@ -254,10 +275,13 @@
"edt_conf_effp_paths_expl": "Puedes definir más carpetas que contengan efectos. El configurador de efectos siempre guardará en la primera carpeta.",
"edt_conf_effp_paths_itemtitle": "Ruta",
"edt_conf_effp_paths_title": "Ruta(s) del efecto",
"edt_conf_enum_BOTH": "Horizontal y Vertical",
"edt_conf_enum_HORIZONTAL": "Horizontal",
"edt_conf_enum_NO_CHANGE": "Automático",
"edt_conf_enum_NTSC": "NTSC",
"edt_conf_enum_PAL": "PAL",
"edt_conf_enum_SECAM": "SECAM",
"edt_conf_enum_VERTICAL": "Vertical",
"edt_conf_enum_automatic": "Automático",
"edt_conf_enum_bbclassic": "Clásico",
"edt_conf_enum_bbdefault": "Predeterminado",
@ -283,11 +307,12 @@
"edt_conf_enum_hsv": "HSV",
"edt_conf_enum_left_right": "De izquierda a derecha",
"edt_conf_enum_linear": "Lineal",
"edt_conf_enum_logdebug": "Depurar",
"edt_conf_enum_logdebug": "Depuración",
"edt_conf_enum_logsilent": "Silenciado",
"edt_conf_enum_logverbose": "Detallado",
"edt_conf_enum_logwarn": "Advertencia",
"edt_conf_enum_multicolor_mean": "Multicolor",
"edt_conf_enum_please_select": "Por favor, elije",
"edt_conf_enum_rbg": "RBG",
"edt_conf_enum_rgb": "RGB",
"edt_conf_enum_right_left": "De derecha a izquierda",
@ -327,6 +352,7 @@
"edt_conf_fw_json_expl": "Un destino json por línea. Contiene IP:PUERTO (Ejemplo: 127.0.0.1:19446)",
"edt_conf_fw_json_itemtitle": "Destino json",
"edt_conf_fw_json_title": "Lista de clientes JSON",
"edt_conf_gen_configVersion_title": "Versión de configuración",
"edt_conf_gen_heading_title": "Configuración General",
"edt_conf_gen_name_expl": "Un nombre definido por el usuario que se utiliza para detectar Hyperion. (Útil con más de una instancia de Hyperion)",
"edt_conf_gen_name_title": "Nombre de configuración",
@ -340,10 +366,19 @@
"edt_conf_general_port_title": "Puerto",
"edt_conf_general_priority_expl": "La prioridad de este componente",
"edt_conf_general_priority_title": "Canal prioritario",
"edt_conf_grabber_discovered_expl": "Selecciona tu dispositivo de captura descubierto",
"edt_conf_grabber_discovered_none": "No se ha descubierto ningún dispositivo de captura",
"edt_conf_grabber_discovered_title": "Dispositivo descubierto",
"edt_conf_grabber_discovered_title_info": "Selecciona tu dispositivo de captura descubierto",
"edt_conf_grabber_discovery_inprogress": "Descubrimiento en curso",
"edt_conf_instC_screen_grabber_device_expl": "El dispositivo de captura de pantalla utilizado",
"edt_conf_instC_screen_grabber_device_title": "Dispositivo de captura de pantalla",
"edt_conf_instC_systemEnable_expl": "Permite la captura de la plataforma para esta instalación de hardware Led",
"edt_conf_instC_systemEnable_title": "Habilitar la captura de plataformas",
"edt_conf_instC_v4lEnable_expl": "Habilita la captura USB para esta instalación de hardware led",
"edt_conf_instC_v4lEnable_title": "Habilitar captura USB",
"edt_conf_instC_video_grabber_device_expl": "El dispositivo de captura de vídeo utilizado",
"edt_conf_instC_video_grabber_device_title": "Dispositivo de captura de vídeo",
"edt_conf_instCapture_heading_title": "Captura de instancias",
"edt_conf_js_heading_title": "Servidor JSON",
"edt_conf_log_heading_title": "Registro",
@ -391,21 +426,41 @@
"edt_conf_v4l2_cecDetection_title": "Detección CEC",
"edt_conf_v4l2_cropBottom_expl": "Cuenta de píxeles en la parte inferior que se quitan de la imagen.",
"edt_conf_v4l2_cropBottom_title": "Cortar abajo",
"edt_conf_v4l2_cropHeightValidation_error": "Recortar por arriba + Recortar por abajo no puede ser mayor que el Alto ($1)",
"edt_conf_v4l2_cropLeft_expl": "Cuenta de píxeles en la parte izquierda que se quitan de la imagen.",
"edt_conf_v4l2_cropLeft_title": "Cortar izquierda",
"edt_conf_v4l2_cropRight_expl": "Cuenta de píxeles en la parte derecha que se quitan de la imagen.",
"edt_conf_v4l2_cropRight_title": "Cortar derecha",
"edt_conf_v4l2_cropTop_expl": "Cuenta de píxeles en la parte superior que se quitan de la imagen.",
"edt_conf_v4l2_cropTop_title": "Cortar arriba",
"edt_conf_v4l2_cropWidthValidation_error": "Recortar a la izquierda + Recortar a la derecha no puede ser mayor que el Ancho ($1)",
"edt_conf_v4l2_device_expl": "La ruta a la interfaz de captura USB. Ajustado en 'Automático' para la detección automática. Ejemplo: '/dev/video0'",
"edt_conf_v4l2_device_title": "Dispositivo",
"edt_conf_v4l2_encoding_expl": "Forzar la codificación de vídeo para las grabadoras con capacidad multiformato",
"edt_conf_v4l2_encoding_title": "Formato de codificación",
"edt_conf_v4l2_flip_expl": "Esto te permite voltear la imagen horizontalmente, verticalmente, o ambos.",
"edt_conf_v4l2_flip_title": "Voltear la imagen",
"edt_conf_v4l2_fpsSoftwareDecimation_expl": "Para ahorrar recursos sólo se procesará cada n fotograma. Por ejemplo, si el grabador está ajustado a 30FPS y esta opción está ajustada a 5, el resultado final será de unos 6FPS (1 - desactivado)",
"edt_conf_v4l2_fpsSoftwareDecimation_title": "Salto de fotogramas por software",
"edt_conf_v4l2_framerate_expl": "Los fotogramas soportados por segundo del dispositivo activo",
"edt_conf_v4l2_framerate_title": "Fotogramas por segundo",
"edt_conf_v4l2_greenSignalThreshold_expl": "Oscurece los valores bajos de color verde (reconocidos como negros)",
"edt_conf_v4l2_greenSignalThreshold_title": "Umbral de señal verde",
"edt_conf_v4l2_hardware_brightness_expl": "Establecer el brillo del hardware si el dispositivo lo soporta, comprobar los registros (0=desactivado)",
"edt_conf_v4l2_hardware_brightness_title": "Control de brillo por hardware",
"edt_conf_v4l2_hardware_contrast_expl": "Establecer el contraste del hardware si el dispositivo lo soporta, comprobar los registros (0=desactivado)",
"edt_conf_v4l2_hardware_contrast_title": "Control de contraste por hardware",
"edt_conf_v4l2_hardware_hue_expl": "Establecer el tono del hardware si el dispositivo lo soporta, comprobar los registros (0=desactivado)",
"edt_conf_v4l2_hardware_hue_title": "Control del tono por hardware",
"edt_conf_v4l2_hardware_saturation_expl": "Establecer la saturación del hardware si el dispositivo lo soporta, comprobar los registros (0=desactivado)",
"edt_conf_v4l2_hardware_saturation_title": "Control de la saturación por hardware",
"edt_conf_v4l2_hardware_set_defaults": "Controles de hardware por defecto",
"edt_conf_v4l2_hardware_set_defaults_tip": "Establecer los valores predeterminados del dispositivo para el brillo, el contraste, el tono y la saturación",
"edt_conf_v4l2_heading_title": "Captura USB",
"edt_conf_v4l2_input_expl": "Seleccion de la entrada de vídeo de tu dispositivo. 'Automático' mantiene el valor elegido por la interfaz v4l2.",
"edt_conf_v4l2_input_title": "Entrada",
"edt_conf_v4l2_noSignalCounterThreshold_expl": "Número de fotogramas (compruébalo con el modo FPS actual de la grabadora) después de los cuales se activa \"no señal\"",
"edt_conf_v4l2_noSignalCounterThreshold_title": "Umbral del contador de señal",
"edt_conf_v4l2_redSignalThreshold_expl": "Oscurece los valores bajos de color rojo (reconocidos como negros)",
"edt_conf_v4l2_redSignalThreshold_title": "Umbral de señal rojo",
"edt_conf_v4l2_resolution_expl": "Una lista de resoluciones soportadas del dispositivo activo",
@ -436,12 +491,15 @@
"edt_conf_webc_sslport_expl": "Puerto del servidor web HTTPS",
"edt_conf_webc_sslport_title": "Puerto HTTPS",
"edt_dev_auth_key_title": "Token de autenticación",
"edt_dev_auth_key_title_info": "Token de autenticación necesario para acceder al dispositivo",
"edt_dev_enum_sub_min_cool_adjust": "Min. Ajuste fresco",
"edt_dev_enum_sub_min_warm_adjust": "Min. Ajuste caliente",
"edt_dev_enum_subtract_minimum": "Restar el mínimo",
"edt_dev_enum_white_off": "Blanco apagado",
"edt_dev_general_colorOrder_title": "Orden de bytes RGB",
"edt_dev_general_colorOrder_title_info": "El orden de los colores del dispositivo",
"edt_dev_general_hardwareLedCount_title": "Recuento de LEDs de hardware",
"edt_dev_general_hardwareLedCount_title_info": "El número de LEDs físicos disponibles para el dispositivo dado",
"edt_dev_general_heading_title": "Configuración general",
"edt_dev_general_name_title": "Nombre de configuración",
"edt_dev_general_rewriteTime_title": "Tiempo de actualización",
@ -455,7 +513,9 @@
"edt_dev_spec_brightnessFactor_title": "Factor de brillo",
"edt_dev_spec_brightnessMax_title": "Brillo máximo",
"edt_dev_spec_brightnessMin_title": "Brillo mínimo",
"edt_dev_spec_brightnessOverwrite_title": "Sobrescribir brillo",
"edt_dev_spec_brightnessThreshold_title": "El brillo de la detección de la señal es mínimo",
"edt_dev_spec_brightness_title": "Brillo",
"edt_dev_spec_chanperfixture_title": "Canales por Fixture",
"edt_dev_spec_cid_title": "CID",
"edt_dev_spec_clientKey_title": "Llave de cliente",
@ -463,6 +523,11 @@
"edt_dev_spec_debugLevel_title": "Nivel de depuración de la conexión del Streamer",
"edt_dev_spec_debugStreamer_title": "Depuración de Streamer",
"edt_dev_spec_delayAfterConnect_title": "Retraso después de la conexión",
"edt_dev_spec_devices_discovered_none": "No se han descubierto dispositivos",
"edt_dev_spec_devices_discovered_title": "Dispositivos descubiertos",
"edt_dev_spec_devices_discovered_title_info": "Selecciona tu dispositivo LED descubierto",
"edt_dev_spec_devices_discovered_title_info_custom": "Selecciona tu dispositivo LED descubierto o configura uno personalizado",
"edt_dev_spec_devices_discovery_inprogress": "Descubrimiento en progreso",
"edt_dev_spec_dithering_title": "Tintineo",
"edt_dev_spec_dmaNumber_title": "Canal DMA",
"edt_dev_spec_gamma_title": "Gamma",
@ -477,6 +542,7 @@
"edt_dev_spec_intervall_title": "Intervalo",
"edt_dev_spec_invert_title": "Invertir señal",
"edt_dev_spec_latchtime_title": "Tiempo de cierre",
"edt_dev_spec_latchtime_title_info": "El tiempo de enganche es el tiempo que necesita un dispositivo hasta que se pueda procesar la siguiente actualización. Durante ese tiempo se ignoran las actualizaciones realizadas a través de él.",
"edt_dev_spec_ledIndex_title": "Índice LED",
"edt_dev_spec_ledType_title": "Tipo de LED",
"edt_dev_spec_lightid_itemtitle": "ID",
@ -501,6 +567,7 @@
"edt_dev_spec_printTimeStamp_title": "Añadir marca de tiempo",
"edt_dev_spec_pwmChannel_title": "Canal PWM",
"edt_dev_spec_restoreOriginalState_title": "Restaurar el estado original de las luces cuando se desactivan",
"edt_dev_spec_restoreOriginalState_title_info": "Restaurar el estado original del dispositivo cuando se desactiva",
"edt_dev_spec_serial_title": "Número de serie",
"edt_dev_spec_spipath_title": "Ruta SPI",
"edt_dev_spec_sslHSTimeoutMax_title": "Máximo tiempo de espera para el contacto con el Streamer",
@ -508,7 +575,9 @@
"edt_dev_spec_sslReadTimeout_title": "Tiempo de lectura del Streamer",
"edt_dev_spec_switchOffOnBlack_title": "Apagar en negro",
"edt_dev_spec_switchOffOnbelowMinBrightness_title": "Apagado, por debajo del mínimo",
"edt_dev_spec_syncOverwrite_title": "Desactivar la sincronización",
"edt_dev_spec_targetIpHost_title": "IP de destino/nombre de host",
"edt_dev_spec_targetIpHost_title_info": "El nombre de anfitrión o la dirección IP del dispositivo",
"edt_dev_spec_targetIp_title": "IP de destino",
"edt_dev_spec_transeffect_title": "Efecto de transición",
"edt_dev_spec_transistionTimeExtra_title": "Oscuridad de tiempo extra",
@ -550,7 +619,7 @@
"edt_eff_colorrandom": "Color aleatório",
"edt_eff_colorshift": "Turno de Color",
"edt_eff_colorstart": "Color de inicio",
"edt_eff_colorstarttime": "Tiempo para mantener el color de fin",
"edt_eff_colorstarttime": "Tiempo para mantener el color de final",
"edt_eff_colortwo": "Color dos",
"edt_eff_count": "Cuenta",
"edt_eff_countries": "Países",
@ -575,6 +644,7 @@
"edt_eff_height": "Altura",
"edt_eff_huechange": "Cambio de color",
"edt_eff_image": "Archivo de imagen",
"edt_eff_initial_blink": "Flash para llamar la atención",
"edt_eff_interval": "Intervalo",
"edt_eff_knightrider_header": "Coche Fantástico",
"edt_eff_knightrider_header_desc": "¡K.I.T.T ha vuelto! El escáner frontal del muy conocido coche, esta vez no sólo en rojo.",
@ -612,6 +682,7 @@
"edt_eff_reversedirection": "Dirección inversa",
"edt_eff_rotationtime": "Tiempo de rotación",
"edt_eff_saturation": "Saturación",
"edt_eff_set_post_color": "Establecer el color posterior después de la alarma",
"edt_eff_showseconds": "Mostrar segundos",
"edt_eff_sleeptime": "Hora de dormir",
"edt_eff_smooth_custom": "Habilitar suavizado",
@ -698,6 +769,7 @@
"general_btn_off": "Apagado",
"general_btn_ok": "OK",
"general_btn_on": "Encendido",
"general_btn_overwrite": "Sobrescribir",
"general_btn_rename": "Renombrar",
"general_btn_restarthyperion": "Reiniciar Hyperion",
"general_btn_save": "Guardar",
@ -729,14 +801,18 @@
"general_country_ru": "Rusia",
"general_country_uk": "Reino Unido",
"general_country_us": "Estados Unidos",
"general_disabled": "Deshabilitado",
"general_enabled": "Habilitado",
"general_speech_cs": "Czech",
"general_speech_de": "Alemán",
"general_speech_en": "Inglés",
"general_speech_es": "Español",
"general_speech_fr": "Francés",
"general_speech_it": "Italiano",
"general_speech_nb": "Noruego (Bokmål)",
"general_speech_nl": "Holandés",
"general_speech_pl": "Polaco",
"general_speech_pt": "Portugués",
"general_speech_ro": "Rumano",
"general_speech_ru": "Ruso",
"general_speech_sv": "Sueco",
@ -756,6 +832,10 @@
"infoDialog_import_confirm_title": "Confirmar importación",
"infoDialog_import_hyperror_text": "No se puede importar el archivo de configuración seleccionado \"$1\". ¡No es compatible con Hyperion 2.0 y superior!",
"infoDialog_import_jsonerror_text": "El archivo de configuración seleccionado \"$1\" no es un archivo .json o está dañado. Mensaje de error: ($2)",
"infoDialog_password_current_text": "Contraseña actual",
"infoDialog_password_minimum_length": "La contraseña debe ser de al menos 8 caracteres",
"infoDialog_password_new_text": "Nueva contraseña",
"infoDialog_username_text": "Nombre de usuario",
"infoDialog_wizrgb_text": "Tu Orden de Bytes RGB ya está bien ajustado.",
"infoDialog_writeconf_error_text": "Error al guardar tu configuración.",
"infoDialog_writeimage_error_text": "¡El archivo seleccionado \"$1\" no es un archivo de imagen o está dañado! Por favor, selecciona otro archivo de imagen.",
@ -775,6 +855,7 @@
"main_ledsim_btn_togglelednumber": "Números LED",
"main_ledsim_btn_toggleleds": "Mostrar LEDs",
"main_ledsim_btn_togglelivevideo": "video en vivo",
"main_ledsim_btn_togglesigdetect": "Área de detección de señales",
"main_ledsim_text": "Visualización en vivo de los colores LED y opcional el flujo de vídeo actual de tu dispositivo de captura.",
"main_ledsim_title": "Visualización LED",
"main_menu_about_token": "Acerca de Hyperion",
@ -784,8 +865,9 @@
"main_menu_effect_conf_token": "Efectos",
"main_menu_effectsconfigurator_token": "Configurador de Efectos",
"main_menu_general_conf_token": "General",
"main_menu_grabber_conf_token": "Capturando Hardware",
"main_menu_grabber_conf_token": "Hardware de Captura",
"main_menu_input_selection_token": "Selección de entrada",
"main_menu_instcapture_conf_token": "Fuentes",
"main_menu_leds_conf_token": "Hardware LED",
"main_menu_logging_token": "Log",
"main_menu_network_conf_token": "Servicios de red",
@ -822,6 +904,8 @@
"remote_maptype_label_multicolor_mean": "Multicolor",
"remote_maptype_label_unicolor_mean": "Unicolor",
"remote_optgroup_syseffets": "Efectos Proporcionados",
"remote_optgroup_templates_custom": "Plantillas de Usuario",
"remote_optgroup_templates_system": "Plantillas del Sistema",
"remote_optgroup_usreffets": "Efectos de Usuario",
"remote_videoMode_2D": "2D",
"remote_videoMode_3DSBS": "3DSBS",
@ -918,6 +1002,7 @@
"wiz_hue_username": "Nombre de usuario:",
"wiz_identify": "Identificar",
"wiz_identify_light": "Identificar $1",
"wiz_identify_tip": "Identificar el dispositivo configurado iluminándolo",
"wiz_ids_disabled": "Desactivado",
"wiz_ids_entire": "Toda la imagen",
"wiz_noLights": "¡No se encontró $1! Por favor, conecta las luces a la red o configúralas manualmente.",

View File

@ -1,27 +1,25 @@
{
"InfoDialog_access_text": "Selon le niveau des paramètres, vous pourrez ajuster plus d'options ou accéder à plus de fonctionnalités. Le niveau \"Par défaut\" est recommandé.",
"InfoDialog_access_title": "Paramètre de niveau",
"InfoDialog_access_title": "Niveau des paramètres",
"InfoDialog_iswitch_text": "Si vous faites fonctionner plus d'une instance Hyperion sur votre réseau local, vous pouvez basculer entre les différentes configurations. Sélectionnez l'instance d'Hyperion que vous souhaitez contrôler ci-dessous !",
"InfoDialog_iswitch_title": "Commutateur Hyperion",
"InfoDialog_lang_text": "Si la detection automatique de la langue vous correspond pas vous pouvez la changer ici.",
"InfoDialog_lang_title": "Réglage de la langue",
"InfoDialog_nowrite_foottext": "Le WebUI sera débloqué automatiquement après que vous ayez résolu les problèmes.",
"InfoDialog_nowrite_text": "Hyperion ne peut pas écrire à votre emplacement de fichier de configuration. Réparez les permissions sur le fichier pour continuer.",
"InfoDialog_nowrite_foottext": "Le Web UI sera débloqué automatiquement après que vous ayez résolu les problèmes.",
"InfoDialog_nowrite_text": "Hyperion ne peut pas écrire votre fichier de configuration actuellement chargé. Réparez les permissions sur le fichier afin de poursuivre.",
"InfoDialog_nowrite_title": "Erreur de droit d'écriture !",
"about_3rd_party_licenses": "Licences tierces",
"about_build": "Build",
"about_builddate": "Date de Build",
"about_builddate": "Date du build",
"about_contribute": "Développez Hyperion avec nous !",
"about_credits": "Le mérite revient à tous ces développeurs !",
"about_resources": "$1 bibliothèques",
"about_translations": "Traductions",
"about_version": "Version :",
"conf_colors_blackborder_intro": "Évitez les barres noires où qu'elles se trouvent. Chaque mode utilise un algorithme de détection différent qui est réglé pour des situations spéciales. Augmentez le seuil si cela ne fonctionne pas pour vous.",
"conf_colors_color_intro": "Créer une ou plusieurs profil de calibration, ajuster chaque couleurs, luminosité, linéarité et plus.",
"conf_colors_smoothing_intro": "Le lissage aplatit les changements de couleur/luminosité pour réduire les distractions gênantes.",
"conf_colors_blackborder_intro": "Évitez les barres noires où qu'elles se trouvent. Chaque mode utilise un algorithme de détection différent qui est réglé pour des situations particulières. Augmentez le seuil si cela ne fonctionne pas pour vous.",
"conf_colors_color_intro": "Créer un ou plusieurs profils de calibration, ajuster chaque couleur, luminosité, linéarité et plus.",
"conf_colors_smoothing_intro": "Le fondu aplatit les changements de couleur/luminosité pour réduire les distractions gênantes.",
"conf_effect_bgeff_intro": "Définissez un effet/couleur d'arrière-plan, qui est affiché lorsqu'Hyperion sera \"inactif\". Commence toujours par une priorité de canal de 255",
"conf_effect_fgeff_intro": "Définissez un effet ou une couleur de démarrage et sa durée, il sera utilisé lors du démarrage d'Hyperion.",
"conf_effect_path_intro": "Chargement des effets depuis l'emplacement définit. Vous pouvez également désactiver un simple effet par nom pour les cacher des autres effets de la liste.",
"conf_effect_path_intro": "Chargement des effets depuis l'emplacement défini. Vous pouvez également désactiver un simple effet par nom pour les cacher des autres effets de la liste.",
"conf_general_createInst_btn": "Créer une instance",
"conf_general_impexp_expbtn": "Exporter",
"conf_general_impexp_impbtn": "Importer",
@ -31,7 +29,7 @@
"conf_general_inst_actionhead": "Action",
"conf_general_inst_name_title": "Nouveau nom d'instance",
"conf_general_inst_namehead": "Nom d'instance",
"conf_general_intro": "Configurations basique pour Hyperion et WebUI ne rentrant dans aucune autre catégorie.",
"conf_general_intro": "Configuration basique pour Hyperion et WebUI ne rentrant dans aucune autre catégorie.",
"conf_general_label_title": "Réglages généraux",
"conf_grabber_fg_intro": "La capture de plate-forme est votre système local, capturée comme source d'entrée.",
"conf_grabber_v4l_intro": "La capture USB utilise un périphérique de capture connecté en USB au système pour obtenir la source d'images à traiter.",
@ -43,8 +41,8 @@
"conf_leds_layout_btn_checklist": "Afficher la checklist",
"conf_leds_layout_button_savelay": "Sauvegarder la disposition",
"conf_leds_layout_button_updsim": "Mettre à jour la prévisualisation",
"conf_leds_layout_checkp1": "La led noire est votre première led, la première led est le point d'entré du signal de données.",
"conf_leds_layout_checkp2": "La disposition est toujours par rapport à l'avant de votre TV, pas l'arrière.",
"conf_leds_layout_checkp1": "La LED noire est votre première led, la première led est le point d'entrée du signal de données.",
"conf_leds_layout_checkp2": "La disposition est toujours celle visible par la face avant de votre TV, jamais par l'arrière.",
"conf_leds_layout_checkp3": "Assurez-vous que la direction est correcte. Les LED grises indiquent les LED numéro 2 et 3 pour aider à visualiser la direction des données",
"conf_leds_layout_cl_bottom": "Bas",
"conf_leds_layout_cl_bottomleft": "Bas gauche (Coin)",
@ -87,39 +85,38 @@
"conf_leds_layout_ma_vert": "Vertical",
"conf_leds_layout_matrix": "Disposition en matrice (Mur LED)",
"conf_leds_layout_peview": "Prévisualisation de la disposition des LED",
"conf_leds_layout_preview_l1": "C'est votre première LED (position de l'entrée)",
"conf_leds_layout_preview_l2": "Assistant disponible",
"conf_leds_layout_preview_ledpower": "Consommation total des LED : $1 A",
"conf_leds_layout_preview_l1": "Ceci est votre première LED (position de l'entrée)",
"conf_leds_layout_preview_l2": "Ceci vous permet de visualiser le sens de direction des LED (deuxième et troisième LED)",
"conf_leds_layout_preview_ledpower": "Consommation totale des LED : $1 A",
"conf_leds_layout_preview_originCL": "Créé à partir : Disposition classique (Cadre LED)",
"conf_leds_layout_preview_originMA": "Crée à partir : Disposition en matrice (Mur LED)",
"conf_leds_layout_preview_originTEXT": "Crée à partir : Champ texte",
"conf_leds_layout_preview_totalleds": "Nombre total de LED : $1",
"conf_leds_layout_textf1": "Ce champ montre (par défaut) votre disposition actuellement chargée et sera écrasée si vous en générer une nouvelle avec les options ci-dessus. Optionnel vous pourrez y apporter des modifications dans le futur.",
"conf_leds_layout_textf1": "Ce champ montre (par défaut) votre disposition actuellement chargée et sera écrasée si vous en générez une nouvelle avec les options ci-dessus. Optionnel vous pourrez y apporter des modifications dans le futur.",
"conf_leds_nav_label_ledcontroller": "Contrôleur LED",
"conf_leds_nav_label_ledlayout": "Disposition des LED",
"conf_leds_optgroup_RPiGPIO": "RPi GPIO",
"conf_leds_optgroup_RPiPWM": "RPi PWM",
"conf_leds_optgroup_RPiSPI": "RPi SPI",
"conf_leds_optgroup_debug": "Débug",
"conf_leds_optgroup_network": "Réseau",
"conf_leds_optgroup_usb": "USB",
"conf_leds_optgroup_usb": "USB/Série",
"conf_logging_btn_autoscroll": "Défilement automatique",
"conf_logging_btn_pbupload": "Télécharger un rapport pour des demandes au support",
"conf_logging_contpolicy": "Signaler la politique de confidentialité",
"conf_logging_label_intro": "Zone pour vérifier les messages de log, plus ou moins d'informations seront affichés en fonction du niveau de log réglé.",
"conf_logging_label_intro": "Zone pour vérifier les messages du journal, plus ou moins d'informations seront affichées en fonction du niveau de journalisation réglé.",
"conf_logging_lastreports": "Rapports précédents",
"conf_logging_nomessage": "Pas de message de log disponible.",
"conf_logging_nomessage": "Pas de message disponible dans le journal.",
"conf_logging_report": "Rapport",
"conf_logging_uplfailed": "Échec du téléchargement ! S'il vous plait, vérifiez votre connection internet !",
"conf_logging_uplfailed": "Échec du téléchargement ! Veuillez vérifier votre connexion Internet !",
"conf_logging_uploading": "Préparation des données...",
"conf_logging_uplpolicy": "En cliquant sur ce bouton vous acceptez le",
"conf_logging_yourlink": "Lier à votre rapport",
"conf_network_bobl_intro": "Récepteur pour Boblight",
"conf_network_bobl_intro": "Le port pour Boblight",
"conf_network_createToken_btn": "Créer un token",
"conf_network_fbs_intro": "Récepteur Google Fltbuffers, utilisé pour la transmission rapide des images",
"conf_network_forw_intro": "Transférer toutes les entrée vers une seconde instance d'Hyperion qui peut être contrôlée par une autre contrôleur LED.",
"conf_network_json_intro": "Le JSON-RPC-Port de toutes les instances d'Hyperion utilisé pour de contrôle à distance.",
"conf_network_proto_intro": "Le PROTO-Port de toutes les intactes d'Hyperion, utilisé les flux d'images (HyperionScreenCap, Kodi Add-on, Android Hyperion Grabber, ...)",
"conf_network_fbs_intro": "Le port pour Google Fltbuffers, utilisé pour la transmission rapide des images",
"conf_network_forw_intro": "Transférer toutes les entrées vers une seconde instance d'Hyperion qui peut être contrôlée par un autre contrôleur LED.",
"conf_network_json_intro": "Le port JSON-RPC de toutes les instances d'Hyperion utilisé pour le contrôle à distance.",
"conf_network_proto_intro": "Le port pour PROTO de toutes les instances d'Hyperion, utilisé pour les flux d'images (HyperionScreenCap, Extensions Kodi, Android Hyperion Grabber, ...)",
"conf_network_tok_cidhead": "Description",
"conf_network_tok_comment_title": "Description du token",
"conf_network_tok_diaTitle": "Le nouveau token a été créé !",
@ -131,31 +128,31 @@
"dashboard_alert_message_confedit": "Votre configuration d'Hyperion a été modifiée. Redémarrer Hyperion pour l'appliquer.",
"dashboard_alert_message_confedit_t": "Configuration modifiée",
"dashboard_alert_message_confsave_success": "Votre configuration d'Hyperion a correctement été sauvegardée. Vos modifications sont maintenant actives.",
"dashboard_alert_message_confsave_success_t": "Configuration sauvegarder",
"dashboard_alert_message_disabled": "Cette instance est actuellement désactivée ! Pour l'utiliser à nouveau, activez dans le tableau de bord.",
"dashboard_alert_message_disabled_t": "Instance Matériel LED désactivée",
"dashboard_alert_message_confsave_success_t": "Configuration sauvegardée",
"dashboard_alert_message_disabled": "Cette instance est actuellement désactivée ! Pour l'utiliser à nouveau, activez-la dans le tableau de bord.",
"dashboard_alert_message_disabled_t": "Instance matérielle LED désactivée",
"dashboard_componentbox_label_comp": "Composant",
"dashboard_componentbox_label_status": "Statut",
"dashboard_componentbox_label_title": "Statut des composants",
"dashboard_componentbox_label_status": "Etat",
"dashboard_componentbox_label_title": "Etat des composants",
"dashboard_infobox_label_currenthyp": "Votre version d'Hyperion : ",
"dashboard_infobox_label_disableh": "Désactiver l'instance : $1",
"dashboard_infobox_label_enableh": "Activer Hyperion",
"dashboard_infobox_label_enableh": "Activer l'instance : $1",
"dashboard_infobox_label_instance": "Instance",
"dashboard_infobox_label_latesthyp": "Dernière version d'Hyperion : ",
"dashboard_infobox_label_platform": "Platforme",
"dashboard_infobox_label_ports": "Ports (flat|proto)",
"dashboard_infobox_label_smartacc": "Accès Simplifié",
"dashboard_infobox_label_platform": "Plateforme",
"dashboard_infobox_label_ports": "Ports",
"dashboard_infobox_label_smartacc": "Accès simplifié",
"dashboard_infobox_label_statush": "Statut d'Hyperion : ",
"dashboard_infobox_label_title": "Information",
"dashboard_infobox_label_watchedversionbranch": "Branche surveillée :",
"dashboard_infobox_message_updatesuccess": "Vous utilisez la dernière version d'Hyperion.",
"dashboard_infobox_message_updatewarning": "Une nouvelle version d'Hyperion est disponible ! ($1)",
"dashboard_label_intro": "Ce dashboard vous donne un vue général de votre installation Hyperion et présente les dernières actualités du blog d'Hyperion.",
"dashboard_label_intro": "Ce dashboard vous donne une vue rapide sur l'état d'Hyperion.",
"dashboard_message_do_not_show_again": "Ne plus afficher ce message",
"dashboard_newsbox_label_title": "Hyperion - Blog",
"dashboard_newsbox_noconn": "Impossible d'accéder au blog d'Hyperion. Votre connexion internet fonctionne-t-elle ?",
"dashboard_newsbox_readmore": "Lire plus",
"dashboard_newsbox_visitblog": "Visitez le Blog Hyperion",
"dashboard_newsbox_visitblog": "Visiter le Blog d'Hyperion",
"edt_append_degree": "°",
"edt_append_hz": "Hz",
"edt_append_leds": "Leds",
@ -539,7 +536,7 @@
"general_btn_cancel": "Annuler",
"general_btn_continue": "Continuer",
"general_btn_delete": "Supprimer",
"general_btn_iswitch": "Bascule",
"general_btn_iswitch": "Basculer",
"general_btn_next": "Suivant",
"general_btn_off": "Off",
"general_btn_ok": "OK",
@ -555,23 +552,23 @@
"general_col_blue": "bleu",
"general_col_green": "vert",
"general_col_red": "rouge",
"general_comp_BLACKBORDER": "Détection des bordures noir",
"general_comp_BLACKBORDER": "Détection des bandes noires",
"general_comp_BOBLIGHTSERVER": "Serveur Boblight",
"general_comp_FLATBUFSERVER": "Serveur Flatbuffers",
"general_comp_FORWARDER": "Transfert",
"general_comp_GRABBER": "Platforme de capture",
"general_comp_LEDDEVICE": "Equipement LED",
"general_comp_PROTOSERVER": "Protocole du Serveur Flatbuffers",
"general_comp_LEDDEVICE": "Périphérique LED",
"general_comp_PROTOSERVER": "Serveur Protocolbuffers",
"general_comp_SMOOTHING": "Fondu",
"general_comp_V4L": "Capture par USB",
"general_comp_V4L": "Capture USB",
"general_country_de": "Allemagne",
"general_country_es": "Espagne",
"general_country_fr": "France",
"general_country_it": "Italie",
"general_country_nl": "Hollande",
"general_country_uk": "Angleterre",
"general_country_uk": "Royaume-Uni",
"general_country_us": "États-Unis",
"general_speech_cs": "République Tchèque",
"general_speech_cs": "Tchèque",
"general_speech_de": "Allemand",
"general_speech_en": "Anglais",
"general_speech_es": "Espagnol",
@ -583,7 +580,7 @@
"general_speech_sv": "Suédois",
"general_speech_vi": "Vietnamien",
"general_webui_title": "Hyperion - Configuration web",
"general_wiki_moreto": "Plus d'information à propos de \"$1\" sont disponible sur notre",
"general_wiki_moreto": "Plus d'informations à propos de \"$1\" sont disponible sur notre Wiki",
"infoDialog_checklist_title": "Checklist !",
"infoDialog_effconf_created_text": "L'effet \"$1\" a été correctement créé !",
"infoDialog_effconf_deleted_text": "L'effet \"$1\" a été correctement supprimé !",
@ -591,43 +588,43 @@
"infoDialog_general_success_title": "Succès",
"infoDialog_general_warning_title": "Avertissement",
"infoDialog_import_comperror_text": "Malheureusement votre navigateur ne supporte pas l'importation. Essayez à nouveau avec un autre navigateur.",
"infoDialog_import_confirm_text": "Êtes-vous sur de vouloir importer \"$1\" ? Cette action ne pourras pas être annulée !",
"infoDialog_import_confirm_text": "Êtes-vous sur de vouloir importer \"$1\" ? Cette action ne pourra pas être annulée !",
"infoDialog_import_confirm_title": "Confirmation d'importation",
"infoDialog_import_hyperror_text": "Le fichier de configuration \"$1\" ne peut pas être importé. Il n'est pas compatible avec Hyperion 2.0 ou ",
"infoDialog_import_jsonerror_text": "Le fichier de configuration sélectionné \"$1\" n'est pas un fichier json ou est corrompu. Message d'erreur : ($2)",
"infoDialog_import_hyperror_text": "Le fichier de configuration \"$1\" ne peut pas être importé. Il n'est pas compatible avec Hyperion 2.0 ou supérieur !",
"infoDialog_import_jsonerror_text": "Le fichier de configuration sélectionné \"$1\" n'est pas un fichier .json ou est corrompu. Message d'erreur : ($2)",
"infoDialog_wizrgb_text": "L'ordre des octets RVB est déjà correctement défini.",
"infoDialog_writeconf_error_text": "Echec de sauvegarde de votre configuration.",
"infoDialog_writeimage_error_text": "Le fichier sélectionné \"$1\" n'est pas une image ou est corrompu ! sélectionnez une autre image.",
"infoDialog_writeimage_error_text": "Le fichier sélectionné \"$1\" n'est pas une image ou est corrompu ! Veuillez sélectionner une autre image.",
"info_404": "La page demandée n'est pas disponible !",
"info_conlost_label_autorecon": "Nous nous reconnecterons dès que Hyperion sera disponible.",
"info_conlost_label_autorefresh": "Cette page sera automatiquement rafraîchie.",
"info_conlost_label_reason": "Raisons possible : ",
"info_conlost_label_reason1": "- Mauvaise connexion WLAN",
"info_conlost_label_reason2": "- Vous avez effectué une mise à jour",
"info_conlost_label_reason3": "- Hyperion ne fonctionne pas",
"info_conlost_label_reload": "Arrêt de la reconnection automatique - dépassement de limite, rafraîchissez la page ou cliquez ici.",
"info_conlost_label_reason": "Raisons possibles : ",
"info_conlost_label_reason1": "- Mauvaise connexion Wi-Fi",
"info_conlost_label_reason2": "- Vous effectuez une mise à jour",
"info_conlost_label_reason3": "- Hyperion n'est pas démarré",
"info_conlost_label_reload": "Arrêt de la reconnexion automatique - dépassement de limite, rafraîchissez la page ou cliquez ici.",
"info_conlost_label_title": "Connexion au service Hyperion perdue !",
"info_restart_contus": "Si vous êtes ici pour plus de 20 secondes et vous ne savez pas pourquoi, ouvrez un nouveau sujet dans le forum du support svp.",
"info_restart_contus": "Si vous êtes ici depuis plus de 20 secondes et vous ne savez pas pourquoi, ouvrez un nouveau sujet dans le forum du support SVP...",
"info_restart_contusa": "... détaillant les dernières étapes à franchir. Merci !",
"info_restart_rightback": "Hyperion sera de retour rapidement ! ",
"info_restart_title": "Redémarrage...",
"info_restart_rightback": "Hyperion sera de retour rapidement !",
"info_restart_title": "Redémarrage en cours...",
"main_ledsim_btn_togglelednumber": "Nombre de LED",
"main_ledsim_btn_toggleleds": "Montrer les LEDs",
"main_ledsim_btn_togglelivevideo": "Vidéo en temps réel",
"main_ledsim_text": "Visualisation en temps réel des coulours des LED et optionnellement, le flux vidéo actuel issue de l'équipement de capture",
"main_ledsim_btn_togglelivevideo": "Vidéo temps réel",
"main_ledsim_text": "Visualisation en temps réel des couleurs des LED et optionnellement, le flux vidéo actuel issu du périphérique de capture",
"main_ledsim_title": "Visualisation LED",
"main_menu_about_token": "À propos d'Hyperion",
"main_menu_colors_conf_token": "Traitement d'image",
"main_menu_configuration_token": "Configuration",
"main_menu_dashboard_token": "Dashboard",
"main_menu_dashboard_token": "Tableau de bord",
"main_menu_effect_conf_token": "Effets",
"main_menu_effectsconfigurator_token": "Configurateur d'Effets",
"main_menu_effectsconfigurator_token": "Configurateur d'effets",
"main_menu_general_conf_token": "Général",
"main_menu_grabber_conf_token": "Capture Matériel",
"main_menu_grabber_conf_token": "Capture matérielle",
"main_menu_input_selection_token": "Sélection de l'entrée",
"main_menu_leds_conf_token": "Matériel LED",
"main_menu_logging_token": "Journal",
"main_menu_network_conf_token": "Services Réseaux",
"main_menu_network_conf_token": "Services réseaux",
"main_menu_remotecontrol_token": "Contrôle à distance",
"main_menu_support_token": "Support",
"main_menu_system_token": "Système",
@ -653,45 +650,45 @@
"remote_input_priority": "Priorité",
"remote_input_setsource_btn": "Sélectionner une source",
"remote_input_sourceactiv_btn": "Source Active",
"remote_input_status": "Statut/Action",
"remote_losthint": "Note : Toutes le modification seront perdus après redémarrage.",
"remote_input_status": "Etat/Action",
"remote_losthint": "Note : Toutes les modifications seront perdues après redémarrage.",
"remote_maptype_intro": "Habituellement, la disposition des LED est responsable de la définition de la zone d'image affichée par les LED, vous pouvez la modifier ici.",
"remote_maptype_label": "Type de correspondance",
"remote_maptype_label_multicolor_mean": "Multicolor",
"remote_maptype_label_multicolor_mean": "Multicolore",
"remote_maptype_label_unicolor_mean": "Unicolore",
"remote_optgroup_syseffets": "Effets fournis",
"remote_optgroup_usreffets": "Effets utilisateurs",
"remote_optgroup_usreffets": "Effets utilisateur",
"remote_videoMode_2D": "2D",
"remote_videoMode_3DSBS": "3DSBS",
"remote_videoMode_3DTAB": "3DTAB",
"remote_videoMode_intro": "Basculez entre les différents modes vidéo pour profiter de films 3D ! Tous les périphériques de capture sont pris en charge. $1",
"remote_videoMode_label": "Mode vidéo",
"support_label_affinstr1": "Cliquez sur le lien associé à votre pays",
"support_label_affinstr2": "Tous ce que vous acheter nous récompense en petite participation par rapport à votre achat total",
"support_label_affinstr3": "Vous payez TOUJOURS le même prix, il n'y a pas de différences. Essayer ! ",
"support_label_affinstr2": "Peu importe la quantité achetée, cela nous permet de toucher une petite commission en fonction du montant total",
"support_label_affinstr3": "Vous payez TOUJOURS le même prix, il n'y a pas de différences. Essayez ! ",
"support_label_btctext": "Adresse : ",
"support_label_donate": "Donnez ou utiliser nos liens affiliés",
"support_label_donate": "Faites un don ou utilisez nos liens d'affiliation",
"support_label_donationpp": "Don : ",
"support_label_fbtext": "Partagez notre page Facebook et recevez une notification lorsque de nouvelles mises à jour sont publiées.",
"support_label_forumtext": "Vitrines, discussions, aide et plus",
"support_label_forumtitle": "Forum",
"support_label_ggtext": "Ajouter nous à votre cercle Google+ !",
"support_label_ghtext": "Visitez-nous sur Github",
"support_label_igtext": "Visitez notre Instagram pour votre les dernières photos Hyperion ! ",
"support_label_ghtext": "Rendez-nous visite sur GitHub",
"support_label_igtext": "Visitez notre Instagram pour votre les dernières images d'Hyperion ! ",
"support_label_intro": "Hyperion est un logiciel gratuit à but non lucratif. Une petite équipe y travaille et c'est pourquoi nous avons besoin de votre soutien constant.",
"support_label_spreadtheword": "Partagez",
"support_label_title": "Support d'Hypersion",
"support_label_twtext": "Partagez et suivez nous sur Twitter, soyez informé des dernière mise à jour d'Hyperion",
"support_label_spreadtheword": "Faites passer le message",
"support_label_title": "Support d'Hyperion",
"support_label_twtext": "Partagez et suivez nous sur Twitter, soyez informé des dernières mises à jour d'Hyperion",
"support_label_webpagetext": "Accueil d'Hyperion",
"support_label_webpagetitle": "Page web",
"support_label_webrestitle": "Informations et ressources d'aide",
"support_label_wikitext": "La source de A à Z pour à peu près tout à propos d'Hyperion",
"support_label_wikitext": "La source de A à Z pour à peu près tout concernant Hyperion",
"support_label_wikititle": "Wiki",
"support_label_yttext": "Lassez des images ? Découvrez notre chaîne YouTube !",
"update_button_changelog": "Log de modification complet",
"support_label_yttext": "Lassé des images ? Découvrez notre chaîne YouTube !",
"update_button_changelog": "Changelog complet",
"update_button_install": "Installation",
"update_error_getting_versions": "Nous avons eu des problèmes pour déterminer la dernière version disponible.",
"update_label_description": "Description : ",
"update_label_description": "Description :",
"update_label_intro": "Présentation de toutes les versions d'Hyperion disponibles. De plus, vous pouvez mettre à jour ou rétrograder votre version d'Hyperion à tout moment. Trié du plus récent au plus ancien",
"update_label_type": "Type :",
"update_no_updates_for_branch": "Pas de mise à jour pour le canal sélectionné.",
@ -700,8 +697,8 @@
"wiz_cc_btn_switchpic": "Changer d'image",
"wiz_cc_chooseid": "Donner un nom à ce profil de couleurs.",
"wiz_cc_intro1": "Cet assistant vous guidera à travers l'étalonnage de vos LED. Si vous utilisez Kodi, les photos et vidéos d'étalonnage peuvent lui être envoyées directement sans autres actions de votre côté. Sinon, vous devez télécharger ces fichiers vous-même et les afficher lorsque l'assistant aura besoin de vous pour ajuster le paramètre.",
"wiz_cc_kodicon": "Le server web Kodi trouvé, continuer avec support Kodi",
"wiz_cc_kodidiscon": "Le serveur web Kodi non trouvé, continuer sans support Kodi",
"wiz_cc_kodicon": "Serveur web Kodi trouvé, continuer avec support Kodi.",
"wiz_cc_kodidiscon": "Serveur web Kodi introuvable, continuer sans support Kodi.",
"wiz_cc_kodidisconlink": "Télécharger les images des liens : ",
"wiz_cc_kodimsg_start": "Test validé - Il est temps de continuer !",
"wiz_cc_kodishould": "Kodi devrait montrer cette image : $1",
@ -709,25 +706,25 @@
"wiz_cc_lettvshow": "Afficher sur votre TV cette image : $1",
"wiz_cc_lettvshowm": "Vérifier avec ces images : $1",
"wiz_cc_link": "Cliquez moi !",
"wiz_cc_morethanone": "Vous avez plusieurs profil, sélectionnez le profil que vous souhaitez configurer.",
"wiz_cc_morethanone": "Vous avez plusieurs profils, sélectionnez le profil que vous souhaitez configurer.",
"wiz_cc_testintro": "Il est temps de faire un vrai test",
"wiz_cc_testintrok": "Cliquer sur le bouton ci-dessous pour démarrer un test vidéo.",
"wiz_cc_testintrowok": "Consultez le lien suivant pour télécharger des vidéos de test : ",
"wiz_cc_title": "Assistant de calibration de couleur",
"wiz_cc_title": "Assistant de calibration des couleurs",
"wiz_guideyou": "Le $1 vous guidera à travers les réglages. Cliquez sur le bouton !",
"wiz_hue_blinkblue": "Laissez ID $1 s'allumer en bleu",
"wiz_hue_clientkey": "Clé Client :",
"wiz_hue_create_user": "Créer un nouvel utilisateur",
"wiz_hue_desc1": "Il recherche automatiquement un Hue Bridge, au cas où il n'en trouverait pas, vous devez fournir l'adresse IP et appuyer sur le bouton actualiser à droite. Maintenant, vous avez besoin d'un ID utilisateur, si vous n'en avez pas, créez-en un nouveau.",
"wiz_hue_desc2": "Choisissez maintenant les lampes à ajouter. La position attribue la lampe à une position spécifique sur votre \"image\". Les lampes désactivées ne seront pas ajoutées. Pour identifier des lampes individuelles, appuyez sur le bouton à droite.",
"wiz_hue_failure_connection": "Le délais à expiré : Appuyez sur le bouton du Bridge dans les 30 secondes.",
"wiz_hue_failure_connection": "Le délai a expiré : Appuyez sur le bouton du Bridge dans les 30 secondes.",
"wiz_hue_failure_ip": "Pas de Bridge trouvé, tapez une IP valide",
"wiz_hue_failure_user": "Utilisateur inconnu, créez un nouvel utilisateur en cliquant sur le bouton si dessous ou saisissez un identifiant valide et cliquez sur le symbole de rechargement",
"wiz_hue_intro1": "Cet assistant configure Hyperion pour le système Philips Hue. Les fonctionnalités sont la détection automatique de Hue Bridge, la création d'utilisateurs, réglage de chaque lumière à une position spécifique sur votre image ou sa déactivation et le réglage automatique des paramètres Hyperion ! Donc en bref: il vous suffit de quelques clics et vous avez terminé !",
"wiz_hue_ip": "IP Hue Bridge :",
"wiz_hue_noids": "Ce pont Hue n'a pas d'ampoules/bandeau, veuillez les coupler avant avec les applications Hue",
"wiz_hue_press_link": "Cliquez sur le bouton sur votre Hue Bridge",
"wiz_hue_searchb": "Rechercher de Bridge...",
"wiz_hue_press_link": "Appuyez sur le bouton de votre pont Philips Hue.",
"wiz_hue_searchb": "Recherche d'un pont Philips Hue...",
"wiz_hue_title": "Assistant de configuration Philips Hue",
"wiz_hue_username": "ID utilisateur : ",
"wiz_identify": "Identifié",
@ -735,9 +732,9 @@
"wiz_ids_disabled": "Désactivé",
"wiz_ids_entire": "Image entière",
"wiz_pos": "Position/État",
"wiz_rgb_expl": "Le point coloré change de couleur (rouge, vert) toutes les x secondes, en même temps que vos leds passent à cette couleur. Répondez aux questions en bas pour vérifier/corriger votre ordre d'octets.",
"wiz_rgb_expl": "Le point coloré change de couleur (rouge, vert) toutes les x secondes, en même temps que vos LEDs passent à cette couleur. Répondez aux questions en bas pour vérifier/corriger votre ordre d'octets.",
"wiz_rgb_intro1": "Cet assistant vous guidera à travers le processus de recherche de l'ordre des couleurs correct pour vos leds. Cliquez sur continuer pour commencer.",
"wiz_rgb_intro2": "Quand avez-vous besoin de cet assistant? Exemple : vous définissez la couleur rouge, mais vous obtenez le vert ou le bleu. Vous pouvez également l'utiliser pour la première configuration.",
"wiz_rgb_intro2": "Quand avez-vous besoin de cet assistant? Exemple : vous définissez la couleur rouge, mais vous obtenez du vert ou du bleu. Vous pouvez également l'utiliser pour la première configuration.",
"wiz_rgb_q": "Quelle couleur affiche votre configuration, lorsque le point coloré ci-dessus s'affiche ...",
"wiz_rgb_qgend": "...vert ?",
"wiz_rgb_qrend": "...red ?",

View File

@ -5,8 +5,6 @@
"InfoDialog_changePassword_title": "Cambia Password",
"InfoDialog_iswitch_text": "Se esegui più di un Hyperion nella tua rete locale puoi passare tra configurazioni web. Seleziona l'istanza di Hyperion qui sotto e cambia!",
"InfoDialog_iswitch_title": "Cambia Hyperion",
"InfoDialog_lang_text": "Se non sei soddisfatto del riconoscimento automatico della lingua puoi sovrascriverlo qui.",
"InfoDialog_lang_title": "Impostazioni lingua",
"InfoDialog_nowrite_foottext": "WebUI sarà sbloccata automaticamente appena avrai risolto il problema!",
"InfoDialog_nowrite_text": "Hyperion non può scrivere sull'attuale file di configurazione caricato. Riparare i permessi del file per procedere",
"InfoDialog_nowrite_title": "errore dei permessi di scrittura!",
@ -48,6 +46,7 @@
"conf_leds_contr_label_contrtype": "Tipo di Controller",
"conf_leds_device_intro": "Hyperion supporta molti controller per trasmettere dati al tuo dispositivo. Seleziona un controller LED dalla lista e configuralo. Abbiamo scelto le impostazioni di default migliori per ogni dispositivo.",
"conf_leds_layout_advanced": "Impostazioni Avanzate",
"conf_leds_layout_blacklist_num_title": "Numero di LEDs",
"conf_leds_layout_btn_checklist": "Mostra lista",
"conf_leds_layout_button_savelay": "Salva Layout",
"conf_leds_layout_button_updsim": "Aggiorna Anteprima",
@ -107,6 +106,7 @@
"conf_leds_layout_preview_totalleds": "Totale LEDs: $1",
"conf_leds_layout_ptl": "Punto in alto a sinistra",
"conf_leds_layout_ptlh": "Orizzontale",
"conf_leds_layout_ptln": "Tripplepoints",
"conf_leds_layout_ptlv": "Verticale",
"conf_leds_layout_ptr": "Punto in alto a destra",
"conf_leds_layout_textf1": "Questo campo testo mostra di default il layout attualmente caricato e viene sovrascritto se ne generi uno nuovo con le opzioni sopra. Se vuoi puoi fare ulteriori modifiche.",
@ -115,8 +115,8 @@
"conf_leds_optgroup_RPiGPIO": "RPi GPIO",
"conf_leds_optgroup_RPiPWM": "RPi PWM",
"conf_leds_optgroup_RPiSPI": "RPi SPI",
"conf_leds_optgroup_debug": "Debug",
"conf_leds_optgroup_network": "Rete",
"conf_leds_optgroup_other": "Altro",
"conf_leds_optgroup_usb": "USB/Seriale",
"conf_logging_btn_autoscroll": "Auto scrolling",
"conf_logging_btn_pbupload": "Invia segnalazione per richieste di supporto",
@ -163,14 +163,14 @@
"dashboard_infobox_label_instance": "Istanza:",
"dashboard_infobox_label_latesthyp": "L'ultima versione di Hyperion:",
"dashboard_infobox_label_platform": "Piattaforma:",
"dashboard_infobox_label_ports": "Porte (json|proto):",
"dashboard_infobox_label_ports": "Porte",
"dashboard_infobox_label_smartacc": "Accesso Smart",
"dashboard_infobox_label_statush": "Status Hyperion:",
"dashboard_infobox_label_title": "Informazioni",
"dashboard_infobox_label_watchedversionbranch": "Versione del branch controllata:",
"dashboard_infobox_message_updatesuccess": "Stai eseguendo l'ultima versione di Hyperion.",
"dashboard_infobox_message_updatewarning": "è disponibile una nuova versione di Hyperion ($1)",
"dashboard_label_intro": "Questa dashboard fornisce una veloce panoramica sullo status di Hyperion e mostra le ultime news dal Blog di Hyperion.",
"dashboard_label_intro": "Questa dashboard fornisce una veloce panoramica sullo status di Hyperion.",
"dashboard_message_default_password": "La password per la WebUI è quella di default. Consigliamo caldamente di cambiarla.",
"dashboard_message_default_password_t": "è impostata la password di default WebUI",
"dashboard_message_do_not_show_again": "Non mostrare più questo messaggio",
@ -200,7 +200,7 @@
"edt_conf_bb_maxInconsistentCnt_title": "Fotogrammi inconsistenti",
"edt_conf_bb_mode_expl": "Algoritmo di elaborazione. (vedi Wiki)",
"edt_conf_bb_mode_title": "Modalità",
"edt_conf_bb_threshold_expl": "Se il rilevamento non funziona, aumenta la soglia per regolarsi su neri 'grigiastri'",
"edt_conf_bb_threshold_expl": "Se il rilevamento non funziona, aumenta la soglia per regolarla verso neri 'grigiastri'",
"edt_conf_bb_threshold_title": "Soglia",
"edt_conf_bb_unknownFrameCnt_expl": "Numero di fotogrammi senza riconoscimento prima che il bordo sia impostato a 0.",
"edt_conf_bb_unknownFrameCnt_title": "Fotogrammi sconosciuti",
@ -208,7 +208,7 @@
"edt_conf_bobls_heading_title": "Srtver Boblight",
"edt_conf_color_backlightColored_expl": "Aggiungi del colore alla retroilluminazione",
"edt_conf_color_backlightColored_title": "Retroilluminazione colorata",
"edt_conf_color_backlightThreshold_expl": "Quantità minima di luminosità (retroilluminazione). Disabilitata durante effetti, colori e lo stato \"Off\"",
"edt_conf_color_backlightThreshold_expl": "La quantità minima di luminosità (retroilluminazione). Disabilitata durante effetti, colori e nello stato \"Off\"",
"edt_conf_color_backlightThreshold_title": "Soglia di retroilluminazione",
"edt_conf_color_black_expl": "Il valore calibrato del nero.",
"edt_conf_color_black_title": "Nero",
@ -250,7 +250,7 @@
"edt_conf_effp_disable_itemtitle": "Effetto",
"edt_conf_effp_disable_title": "Effetti Disabilitati",
"edt_conf_effp_heading_title": "Percorsi Effetti",
"edt_conf_effp_paths_expl": "Puoi definire cartelle che contengono effetti aggiuntivi. Il configuratore di effetti salva sempre all'interno della prima cartella.",
"edt_conf_effp_paths_expl": "Puoi definire altre cartelle che contengono effetti aggiuntivi. Il configuratore di effetti salva sempre all'interno della prima cartella.",
"edt_conf_effp_paths_itemtitle": "Percorso",
"edt_conf_effp_paths_title": "Percorso Effetti",
"edt_conf_enum_NO_CHANGE": "Auto",
@ -260,12 +260,14 @@
"edt_conf_enum_automatic": "Automatico",
"edt_conf_enum_bbclassic": "Classico",
"edt_conf_enum_bbdefault": "Default",
"edt_conf_enum_bbletterbox": "Letterbox",
"edt_conf_enum_bbosd": "OSD",
"edt_conf_enum_bgr": "BGR",
"edt_conf_enum_bottom_up": "Dal basso verso l'alto",
"edt_conf_enum_brg": "BRG",
"edt_conf_enum_color": "Colore",
"edt_conf_enum_custom": "Custom",
"edt_conf_enum_decay": "Decadimento",
"edt_conf_enum_dl_error": "Errore",
"edt_conf_enum_dl_informational": "Informativo",
"edt_conf_enum_dl_nodebug": "No Debug",
@ -314,7 +316,7 @@
"edt_conf_fge_duration_ms_title": "Durata",
"edt_conf_fge_effect_expl": "Se il tipo scelto è \"Effetto\", seleziona un effetto da usare (sono disponibili anche i tuoi effetti).",
"edt_conf_fge_effect_title": "Effetto",
"edt_conf_fge_heading_title": "Effetto di Avvio/Colore",
"edt_conf_fge_heading_title": "Effetto/Colore di Avvio",
"edt_conf_fge_type_expl": "Scegli tra colore o effetto",
"edt_conf_fge_type_title": "Tipo",
"edt_conf_fw_flat_expl": "Una destinazione flatbuffer per riga. Contiene IP:PORTA:(Esempio: 127.0.0.1:19401)",
@ -363,9 +365,17 @@
"edt_conf_pbs_heading_title": "Server Protocol Buffers",
"edt_conf_pbs_timeout_expl": "Se nessuna informazione viene ricevuta per un dato periodo, il componente verrà disabilitato (soft).",
"edt_conf_pbs_timeout_title": "Timeout",
"edt_conf_smooth_continuousOutput_expl": "Aggiorna i led anche se non c'è alcun cambiamento nell'immagine.",
"edt_conf_smooth_continuousOutput_expl": "Aggiorna i LEDs anche se non c'è alcun cambiamento nell'immagine.",
"edt_conf_smooth_continuousOutput_title": "Output continuo",
"edt_conf_smooth_decay_expl": "La velocità del decadimento. 1 è lineare, valori maggiori hanno un effetto più forte.",
"edt_conf_smooth_decay_title": "Decay-Power",
"edt_conf_smooth_dithering_expl": "Migliora la precisione del colore a velocità di output elevate alternando i colori adiacenti.",
"edt_conf_smooth_dithering_title": "Dithering",
"edt_conf_smooth_heading_title": "Sfumatura",
"edt_conf_smooth_interpolationRate_expl": "Velocità di calcolo dei regolari frame intermedi",
"edt_conf_smooth_interpolationRate_title": "Tasso di interpolazione",
"edt_conf_smooth_outputRate_expl": "Velocità di uscita al tuo controller LED.",
"edt_conf_smooth_outputRate_title": "Velocità di uscita",
"edt_conf_smooth_time_ms_expl": "Quanto a lungo la sfumatura dovrebbe raggiungere le immagini?",
"edt_conf_smooth_time_ms_title": "Durata",
"edt_conf_smooth_type_expl": "Tipo di sfumatura.",
@ -415,7 +425,7 @@
"edt_conf_v4l2_standard_title": "Standard video",
"edt_conf_webc_crtPath_expl": "Percorso del file del certificato (in formato PEM)",
"edt_conf_webc_crtPath_title": "Percorso del certificato",
"edt_conf_webc_docroot_expl": "Percorso root delle interfacce web locali (solo per sviluppatori webui)",
"edt_conf_webc_docroot_expl": "Percorso root dell'interfaccia web locale (solo per sviluppatori webui)",
"edt_conf_webc_docroot_title": "Documento Root",
"edt_conf_webc_heading_title": "Configurazione Web",
"edt_conf_webc_keyPassPhrase_expl": "Opzionale: La chiave può essere protetta con una password",
@ -444,19 +454,25 @@
"edt_dev_spec_brightnessFactor_title": "Fattore luminosità",
"edt_dev_spec_brightnessMax_title": "Luminosità massima",
"edt_dev_spec_brightnessMin_title": "Luminosità minima",
"edt_dev_spec_brightnessOverwrite_title": "Sovrascrivi luminosità",
"edt_dev_spec_brightnessThreshold_title": "Luminosità minima per rilevamento segnale",
"edt_dev_spec_brightness_title": "Luminosità",
"edt_dev_spec_chanperfixture_title": "Canali per dispositivo",
"edt_dev_spec_cid_title": "CID",
"edt_dev_spec_clientKey_title": "Clientkey",
"edt_dev_spec_colorComponent_title": "Componente colore",
"edt_dev_spec_debugLevel_title": "Livello Debug Connessione Streamer",
"edt_dev_spec_debugLevel_title": "Livello Debug",
"edt_dev_spec_debugStreamer_title": "Debug Streamer",
"edt_dev_spec_delayAfterConnect_title": "Ritardo dopo la connessione",
"edt_dev_spec_dithering_title": "Dithering",
"edt_dev_spec_dmaNumber_title": "Canale DMA",
"edt_dev_spec_gamma_title": "Gamma",
"edt_dev_spec_globalBrightnessControlMaxLevel_title": "Corrente Massima",
"edt_dev_spec_globalBrightnessControlThreshold_title": "Soglia di corrente adattiva",
"edt_dev_spec_gpioBcm_title": "Pin GPIO",
"edt_dev_spec_gpioMap_title": "Mappatura GPIO",
"edt_dev_spec_gpioNumber_title": "Numero GPIO",
"edt_dev_spec_groupId_title": "ID Gruppo",
"edt_dev_spec_header_title": "Impostazioni specifiche",
"edt_dev_spec_interpolation_title": "Interpolazione",
"edt_dev_spec_intervall_title": "Intervallo",
@ -479,12 +495,13 @@
"edt_dev_spec_order_left_right_title": "2.",
"edt_dev_spec_order_top_down_title": "1.",
"edt_dev_spec_outputPath_title": "Percorso di output",
"edt_dev_spec_panel_start_position": "Pannello d'inizio [0-max panels]",
"edt_dev_spec_panelorganisation_title": "Sequenza numerazione pannelli",
"edt_dev_spec_pid_title": "PID",
"edt_dev_spec_port_title": "Porta",
"edt_dev_spec_printTimeStamp_title": "Aggiungi timestamp",
"edt_dev_spec_pwmChannel_title": "Canale PWM",
"edt_dev_spec_restoreOriginalState_title": "Ripristina lo stato originale delle luci quando disabilitato",
"edt_dev_spec_restoreOriginalState_title": "Ripristina lo stato delle luci",
"edt_dev_spec_serial_title": "Numero seriale",
"edt_dev_spec_spipath_title": "Percorso SPI",
"edt_dev_spec_sslHSTimeoutMax_title": "Timeout massimo handkshake streamer",
@ -602,14 +619,14 @@
"edt_eff_smooth_time_ms": "Durata sfumatura",
"edt_eff_smooth_updateFrequency": "Frequenza di aggiornamento sfumatura",
"edt_eff_snake_header": "Snake",
"edt_eff_snake_header_desc": "Cerchi qualcosa da mangiare?",
"edt_eff_snake_header_desc": "C qualcosa da mangiare?",
"edt_eff_sparks_header": "Scintille",
"edt_eff_sparks_header_desc": "Scintille brillanti, scegli tra colore statico o casuale. Puoi anche regolare luminosità, saturazione e velocità.",
"edt_eff_speed": "Velocità",
"edt_eff_swirl_header": "Mulinello Colorato",
"edt_eff_swirl_header_desc": "Un mulinello con colori personalizzati. I colori sono diffusi a 360°, e saranno calcolati le transizioni trai i vari colori. In Aggiunta puoi sovrapporre un secondo mulinello, sappi che ci dovrà essere parziale trasparenza! Suggerimento: Una ripetizione dello stesso colore corrisponde a un'area del colore più ampia e area di transizione più ristretta.",
"edt_eff_systemshutdown_header": "Arresto del Sistema",
"edt_eff_systemshutdown_header_desc": "Una piccola animazione che simula un vero arresto di sistema",
"edt_eff_systemshutdown_header_desc": "Una piccola animazione con probabilmente un vero arresto di sistema",
"edt_eff_traces_header": "Tracce Colorate",
"edt_eff_traces_header_desc": "Necessita redesign",
"edt_eff_trails_header": "Scie",
@ -726,7 +743,7 @@
"general_speech_sv": "Svedese",
"general_speech_tr": "Turco",
"general_speech_vi": "Vietnamita",
"general_speech_zh-CN": "Cinese (semplificanto)",
"general_speech_zh-CN": "Cinese (semplificato)",
"general_webui_title": "Hyperion - Configurazione Web",
"general_wiki_moreto": "Più informazioni su '$1' sulla nostra Wiki",
"infoDialog_checklist_title": "Lista!",
@ -753,7 +770,7 @@
"info_conlost_label_reload": "Auto-riconnessione interrotta - limite superato, ricarica la pagina o cliccami.",
"info_conlost_label_title": "Connessione al servizio Hyperion persa!",
"info_restart_contus": "Se sei ancora qui dopo 20 secondi e non hai idea del perché, apri un nuovo topic sul nostro forum di supporto...",
"info_restart_contusa": "...dettagliando gli ultimi passi da eseguire. Ti ringraziamo!",
"info_restart_contusa": "...con gli ultimi passi. Ti ringraziamo!",
"info_restart_rightback": "Hyperion ritornerà a breve!",
"info_restart_title": "Riavvio...",
"main_ledsim_btn_togglelednumber": "Numeri LED",
@ -806,6 +823,8 @@
"remote_maptype_label_multicolor_mean": "Multicolore",
"remote_maptype_label_unicolor_mean": "Monocromatico",
"remote_optgroup_syseffets": "Effetti in dotazione",
"remote_optgroup_templates_custom": "Template Utente",
"remote_optgroup_templates_system": "Template di Sistema",
"remote_optgroup_usreffets": "Effetti Utente",
"remote_videoMode_2D": "2D",
"remote_videoMode_3DSBS": "3DSBS",
@ -842,6 +861,9 @@
"update_label_type": "Tipo:",
"update_no_updates_for_branch": "Nessun aggiornamento per la versione del canale selezionata",
"update_versreminder": "La tua versione: $1",
"wiz_atmoorb_desc2": "Ora scegli quali sfere aggiungere. La posizione assegna la lampada a una posizione specifica sulla tua 'immagine'. Le lampade disabilitate non verranno aggiunte. Per identificare le singole lampade premere il pulsante a destra.",
"wiz_atmoorb_intro1": "Questa procedura guidata configura Hyperion per AtmoOrbs. Le caratteristiche sono il rilevamento automatico AtmoOrb, che imposta ogni luce in una posizione specifica sulla tua immagine o disabilitala e ottimizza automaticamente le impostazioni di Hyperion! Quindi, in breve: tutto ciò di cui hai bisogno sono alcuni clic e il gioco è fatto!",
"wiz_atmoorb_title": "AtmoOrb Wizard",
"wiz_cc_adjustgamma": "Gamma: regola i livelli di gamma di ogni canale finché non percepisci la stessa quantità di colore su ogni canale. Suggerimento: Neutro è 1.0! Per esempio, se il tuo Grigio è un po' rossastro significa che bisogna aumentare la gamma del rosso per ridurre la quantità di rosso (più gamma, meno quantità di colore).",
"wiz_cc_adjustit": "Regola \"$1\", finché non sei soddisfatto. Avviso: Il più ti allontani dal valore di default più lo spettro dei colori sarà limitato (anche per i colori di mezzo). Il risultato potrebbe variare a seconda della TV / dello spettro dei colori dei LED.",
"wiz_cc_backlight": "In aggiunta puoi definire una retroilluminazione per sistemare \"colori scorretti\" in aree praticamente buie o per non dover cambiare tra colore e spento durante la visione. In aggiunta puoi difinire se dovrebbe esserci qualche colore o solo bianco. Questo è disabilitato durante gli stati \"Off\", \"Colore\" e \"Effetto\".",
@ -849,12 +871,12 @@
"wiz_cc_btn_switchpic": "Cambia immagine",
"wiz_cc_chooseid": "Definisci un nome per questo profilo colore.",
"wiz_cc_intro1": "Questo assistente ti guiderà attraverso la calibrazione dei tuoi led. Se stai usando Kodi, le immagini e i video di calibrazione possono essere mandati direttamente a Kodi senza altro lavoro da parte tua. Altrimenti devi scaricare questi file e applicarli tu stesso quando l'assistente necessita di regolare le impostazioni.",
"wiz_cc_kodicon": "Webserver Kodi trovato, procedi con il supporto Kodi.",
"wiz_cc_kodidiscon": "Webserver Kodi non trovato, procedi senza il supporto Kodi.",
"wiz_cc_kodicon": "Kodi trovato, procedi con il supporto Kodi.",
"wiz_cc_kodidiscon": "Kodi non trovato, procedi senza il supporto Kodi (controlla se il controllo remoto da altri sistemi è attivo su Kodi).",
"wiz_cc_kodidisconlink": "Link di download delle immagini:",
"wiz_cc_kodimsg_start": "Il test ha avuto successo - tempo di precedere!",
"wiz_cc_kodishould": "Kodi dovrebbe mostrare la seguente immagine: $1",
"wiz_cc_kwebs": "Webserver Kodi (IP:Porta)",
"wiz_cc_kwebs": "Webserver Kodi (Hostname o IP)",
"wiz_cc_lettvshow": "Consenti alla tua TV di mostrare la seguente immagine: $1",
"wiz_cc_lettvshowm": "Controlla questo con le seguenti immagini: $1",
"wiz_cc_link": "Cliccami!",
@ -864,6 +886,10 @@
"wiz_cc_testintrok": "Premi il bottone qui sotto per iniziare un test video.",
"wiz_cc_testintrowok": "Guarda il link di seguito per il download dei video di test",
"wiz_cc_title": "Assistente calibrazione colore",
"wiz_cololight_desc2": "Ora scegli quali Cololights dovrebbero essere aggiunti. Per identificare le singole luci, premere il pulsante a destra.",
"wiz_cololight_intro1": "Questa procedura guidata configura Hyperion per il sistema Cololight. Le caratteristiche sono il rilevamento automatico di Cololight e la regolazione automatica delle impostazioni di Hyperion! In breve: bastano pochi clic e il gioco è fatto!<br />Nota: in caso di una Strip Cololight, potrebbe essere necessario correggere manualmente il numero e il layout dei LED",
"wiz_cololight_noprops": "Impossibile ottenere le proprietà del dispositivo: definire manualmente il numero dei LED",
"wiz_cololight_title": "Cololight Wizard",
"wiz_guideyou": "$1 ti guiderà tra le impostazioni. Ti basta premere il bottone!",
"wiz_hue_blinkblue": "ID $1 si illumina di blu",
"wiz_hue_clientkey": "Clientkey:",
@ -872,14 +898,17 @@
"wiz_hue_desc2": "Scegli quale lampade devono essere aggiunte. La posizione assegna la lampada a una specifica posizione nella tua \"immagine\". Lampade disabilitate non saranno aggiunte. Per identificare una singola lampada premi il bottone sulla destra.",
"wiz_hue_e_clientkey_needed": "è necessaria un clientkey che corrisponda al nome utente per usare le entertainment API. Inseriscine uno esistente o usa il pulsante sotto per crearne una nuova.",
"wiz_hue_e_create_user": "Crea un nuovo Utente e clientkey",
"wiz_hue_e_desc1": "Cerca automaticamente un Bridge Hue, nel caso non riesca a trovarne uno è necessario fornire l'indirizzo IP e premere il pulsante di ricarica a destra. Ora hai bisogno di un ID utente e della chiave client, se non li hai entrambi, creane uno nuovo.",
"wiz_hue_e_desc2": "Scegli la tua area di intrattenimento, che contiene tutte le tue luci per l'uso con Hyperion.",
"wiz_hue_e_desc3": "Ora puoi scegliere in quale posizione le rispettive lampade dovrebbero essere \"nell'immagine\". Una preselezione è stata fatta basata sulle posizioni delle luci configurate nell'area di intrattenimento. Questo è solo un consiglio e può essere personalizzato a piacimento. Puoi selezionarli cliccando con il tasto destro per migliorare la selezione.",
"wiz_hue_e_intro1": "Questi assistenti Configurano Hyperion per il noto Philips Hue Entertainment system. Le funzionalità sono: rilevamento automatico Hue Bridge, creazione user e clientkey, selezione area intrattenimento, assegnazione gruppo di luci a una specifica posizione nella tua immagine, regolazione automatica delle impostazioni di Hyperion! In breve: tutto ciò che ti serve sono un paio di click e sei pronto!",
"wiz_hue_e_noapisupport": "L'Assistente ha disabilitato il supporto alle entertainment API e continuerà in modalità classica.",
"wiz_hue_e_noapisupport_hint": "L'opzione \"<b>Usa Hue Entertainment API</b>\" è stata deselezionata.",
"wiz_hue_e_noegrpids": "Nessun area di intrattenimento definita in questo Hue Bridge",
"wiz_hue_e_nogrpids": "Questo Bridge Hue non ha un gruppo definito, per favore creane uno prima con l'app Hue",
"wiz_hue_e_title": "Assistente Philips Hue Entertainment",
"wiz_hue_e_use_groupid": "Usa group ID $1",
"wiz_hue_e_use_group": "Usa gruppo",
"wiz_hue_e_use_groupid": "Usa ID gruppo $1",
"wiz_hue_failure_connection": "Timeout: premi il bottone del bridge entro il periodo di 30 secondi",
"wiz_hue_failure_ip": "Nessun Bridge trovato, digita un IP valido",
"wiz_hue_failure_user": "Utente non trovato, creane uno nuovo qui sotto o inserisci un id utente valido e premi il simbolo di \"ricarica\".",
@ -894,6 +923,7 @@
"wiz_identify_light": "Identifica $1",
"wiz_ids_disabled": "Disattivato",
"wiz_ids_entire": "Immagine intera",
"wiz_noLights": "Nessun $1 trovato! Per favore connetti le luci alla rete o configurale manualmente",
"wiz_pos": "Posizione/Stato",
"wiz_rgb_expl": "Il puntino colorato cambia colore (rosso, verde) ogni x secondi, nello stesso momento in cui anche i led cambiano colore. Rispondi alle domande qui sotto per controllare/correggere l'ordine dei byte.",
"wiz_rgb_intro1": "L'assistente ti guiderà nel processo di ricerca del corretto ordine dei colori per i tuoi leds. Clicca su continua per iniziare.",

View File

@ -0,0 +1,85 @@
{
"conf_general_impexp_expbtn": "Eksporter",
"conf_general_impexp_impbtn": "Importer",
"conf_general_label_title": "Generelle innstillinger",
"conf_helptable_option": "Valg",
"conf_leds_layout_advanced": "Avanserte innstillinger",
"conf_leds_layout_cl_bottom": "Bunn",
"conf_leds_layout_cl_left": "Venstre",
"conf_leds_layout_cl_right": "Høyre",
"conf_leds_layout_cl_top": "Topp",
"conf_leds_nav_label_ledlayout": "LED-oppsett",
"conf_leds_optgroup_network": "Nettverk",
"dashboard_alert_message_confedit": "Dine Hyperion konfigureringer er blitt endre. For å bruke de, restart Hyperion",
"dashboard_alert_message_confedit_t": "Konfigurering endret",
"dashboard_alert_message_confsave_success": "Dine Hyperionkonfigureringer er vellykket endret. Dine endringer er nå aktive.",
"dashboard_alert_message_confsave_success_t": "Konfigurasjon lagret",
"dashboard_componentbox_label_comp": "Komponent",
"dashboard_componentbox_label_status": "Status",
"dashboard_componentbox_label_title": "Komponentstatus",
"dashboard_infobox_label_currenthyp": "Din Hyperion versjon:",
"dashboard_infobox_label_disableh": "Deaktiver forekomst: $1",
"dashboard_infobox_label_instance": "Forekomst:",
"dashboard_infobox_label_latesthyp": "Siste Hyperion versjon:",
"dashboard_infobox_label_platform": "Plattform:",
"dashboard_infobox_label_ports": "Porter",
"dashboard_infobox_label_smartacc": "Smart Adgang",
"dashboard_infobox_label_statush": "Hyperion status:",
"dashboard_infobox_label_title": "Informasjon",
"dashboard_infobox_message_updatesuccess": "Du kjører siste versjon av Hyperion.",
"dashboard_infobox_message_updatewarning": "En nyere versjon av Hyperion er tilgjengelig! ($1)",
"dashboard_label_intro": "Dashbordet gir en enkel oversikt over statusen til Hyperion.",
"dashboard_newsbox_label_title": "Hyperion-Blogg",
"dashboard_newsbox_noconn": "Kan ikke koble Hyperion Serveren for å motta siste inlegg, fungerer internettilkoblingen?",
"dashboard_newsbox_readmore": "Les mer",
"dashboard_newsbox_visitblog": "Besøk Hyperion-Bloggen",
"general_access_advanced": "Avansert",
"general_access_default": "Standard",
"general_access_expert": "Ekspert",
"general_btn_back": "Tilbake",
"general_btn_cancel": "Avbryt",
"general_btn_continue": "Fortsett",
"general_btn_iswitch": "Bytt",
"general_btn_next": "Neste",
"general_btn_off": "Av",
"general_btn_ok": "OK",
"general_btn_on": "På",
"general_btn_restarthyperion": "Start Hyperion på nytt",
"general_btn_save": "Lagre",
"general_btn_saveandreload": "Lagre og last inn på nytt",
"general_btn_yes": "Ja",
"general_col_blue": "blå",
"general_col_green": "grønn",
"general_col_red": "rød",
"general_comp_BLACKBORDER": "Blackbar gjennkjennelse",
"general_comp_SMOOTHING": "Utjevning",
"general_country_de": "Tyskland",
"general_country_es": "Spania",
"general_country_fr": "Frankrike",
"general_country_it": "Italia",
"general_country_nl": "Nederland",
"general_country_uk": "Storbritania",
"general_country_us": "USA",
"general_speech_de": "Tysk",
"general_speech_en": "Engelsk",
"general_speech_es": "Spansk",
"general_speech_it": "Italiensk",
"general_webui_title": "Hyperion - Webkonfigurasjon",
"main_ledsim_btn_togglelednumber": "Antall LED",
"main_ledsim_btn_toggleleds": "Vis LED",
"main_ledsim_btn_togglelivevideo": "Direktevideo",
"main_ledsim_title": "LED-visualisering",
"main_menu_about_token": "Om Hyperion",
"main_menu_colors_conf_token": "Bildebehandling",
"main_menu_configuration_token": "Konfigureringer",
"main_menu_dashboard_token": "Dashbord",
"main_menu_effect_conf_token": "Effekter",
"main_menu_effectsconfigurator_token": "Effekt konfigurerer",
"main_menu_general_conf_token": "Generell",
"main_menu_logging_token": "Logg",
"main_menu_network_conf_token": "Nettverkstjenester",
"main_menu_remotecontrol_token": "Fjern-kontroll",
"main_menu_support_token": "Støtte",
"main_menu_system_token": "System",
"main_menu_update_token": "Oppdater"
}

View File

@ -5,8 +5,6 @@
"InfoDialog_changePassword_title": "Verander wachtwoord",
"InfoDialog_iswitch_text": "Als je Hyperion meer dan 1 keer draait in jouw lokale netwerk, kan je switchen tussen web configuraties. Selecteer de Hyperion instantie hieronder en switch!",
"InfoDialog_iswitch_title": "Hyperion switcher",
"InfoDialog_lang_text": "Als de automatisch taaldetectie niet klopt, kan je dit hier aanpassen.",
"InfoDialog_lang_title": "Taalinstellingen",
"InfoDialog_nowrite_foottext": "De WebUI zal automatisch ontgrendeld worden nadat je het probleem hebt opgelost! ",
"InfoDialog_nowrite_text": "Hyperion kan niet naar het huidige configuratie bestand schrijven. Stel a.u.b. eerst de schrijfrechten in om door te gaan.",
"InfoDialog_nowrite_title": "Schrijfrechten fout!",
@ -45,9 +43,19 @@
"conf_grabber_v4l_intro": "USB opname is een opnameapparaat verbonden via USB welke gebruikt wordt als input bron voor beeldverwerking.",
"conf_helptable_expl": "Uitleg",
"conf_helptable_option": "Optie",
"conf_leds_config_error": "Fout in configuratie LED/LED-layout",
"conf_leds_config_warning": "Controleer je LED/LED-layout configuratie",
"conf_leds_contr_label_contrtype": "Besturingstype",
"conf_leds_device_info_log": "Als uw LED's niet werken, controleer dan hier op fouten:",
"conf_leds_device_intro": "Hyperion ondersteunt verschillende controllers om gegevens naar uw doelapparaat te verzenden. Selecteer een LED-controller uit de gesorteerde lijst en configureer deze. We hebben voor elk apparaat de beste standaardinstellingen gekozen.",
"conf_leds_error_hwled_gt_layout": "Het aantal LED's ($1) is meer dan de LED's die zijn geconfigureerd via lay-out ($2),<br>$3 {{plural:$3|LED|LEDs}} blijft zwart als je doorgaat.",
"conf_leds_error_hwled_lt_layout": "het aantal hardware-LED's ($1) is minder dan de LED's die zijn geconfigureerd via lay-out ($ 2). <br> Het aantal in de lay-out geconfigureerde LED's mag de beschikbare LED's niet overschrijden",
"conf_leds_layout_advanced": "Geavanceerde instellingen",
"conf_leds_layout_blacklist_num_title": "Aantal LEDs",
"conf_leds_layout_blacklist_rule_title": "Blacklist regel",
"conf_leds_layout_blacklist_rules_title": "Blacklist regels",
"conf_leds_layout_blacklist_start_title": "Begin LED",
"conf_leds_layout_blacklistleds_title": "Blacklist LEDs",
"conf_leds_layout_btn_checklist": "Toon controlelijst",
"conf_leds_layout_button_savelay": "Opmaak opslaan",
"conf_leds_layout_button_updsim": "Update voorbeeld",
@ -113,17 +121,19 @@
"conf_leds_layout_textf1": "Dit tekstveld toon standaard jouw huidige geladen layout en zal overschreven worden als je een nieuwe creëert via bovenstaande opties. Optioneel kan je aanvullende wijzigingen uitvoeren. ",
"conf_leds_nav_label_ledcontroller": "LED Besturing",
"conf_leds_nav_label_ledlayout": "LED Opmaak",
"conf_leds_note_layout_overwrite": "Opmerking: Overschrijven maakt een standaard layout voor {{plural:$1| één LED| alle $ 1 LED's}} gegeven door het aantal LED's",
"conf_leds_optgroup_RPiGPIO": "RPi GPIO",
"conf_leds_optgroup_RPiPWM": "RPi PWM",
"conf_leds_optgroup_RPiSPI": "RPi SPI",
"conf_leds_optgroup_debug": "Debug",
"conf_leds_optgroup_network": "Netwerk",
"conf_leds_optgroup_other": "Andere",
"conf_leds_optgroup_usb": "USB",
"conf_logging_btn_autoscroll": "Automatisch scrollen.",
"conf_logging_btn_pbupload": "Upload een issue voor support verzoeken.",
"conf_logging_contpolicy": "Report privacybeleid",
"conf_logging_label_intro": "Pagina om log berichten te bekijken. Afhankelijk van het log level zal je hier meer of minder informatie getoond zien.",
"conf_logging_lastreports": "Vorige reports",
"conf_logging_logoutput": "Log uitvoer",
"conf_logging_nomessage": "Geen log berichten beschikbaar.",
"conf_logging_report": "Report",
"conf_logging_uplfailed": "Upload mislukt! Controller de internet verbinding!",
@ -164,14 +174,18 @@
"dashboard_infobox_label_instance": "Instantie",
"dashboard_infobox_label_latesthyp": "Laatste Hyperion versie",
"dashboard_infobox_label_platform": "Platform",
"dashboard_infobox_label_ports": "Poorten (flat|proto):",
"dashboard_infobox_label_port_flat": "Flatbuffer:",
"dashboard_infobox_label_port_json": "JSON-server:",
"dashboard_infobox_label_port_proto": "protobuffer:",
"dashboard_infobox_label_ports": "Poorten",
"dashboard_infobox_label_ports_websocket": "WebSocket (ws|wss):",
"dashboard_infobox_label_smartacc": "Slimme toegang",
"dashboard_infobox_label_statush": "Hyperion status:",
"dashboard_infobox_label_title": "Informatie",
"dashboard_infobox_label_watchedversionbranch": "Bekeken versie branch:",
"dashboard_infobox_message_updatesuccess": "Je draait de laatste versie van Hyperion",
"dashboard_infobox_message_updatewarning": "Een nieuwe versie van Hyperion is beschikbaar!",
"dashboard_label_intro": "Het dashboard geeft je een overzicht van de status van Hyperion en toont de laatste updates van de Hyperion blog.",
"dashboard_label_intro": "Het dashboard geeft je een overzicht van de status van Hyperion.",
"dashboard_message_default_password": "Het standaard wachtwoord voor de WebUi is ingesteld. We raden je aan dit te veranderen",
"dashboard_message_default_password_t": "WebUi standaard wachtwoord is ingesteld",
"dashboard_message_do_not_show_again": "Laat dit bericht niet meer zien",
@ -184,11 +198,11 @@
"edt_append_degree": "°",
"edt_append_hz": "Hz",
"edt_append_leds": "LED's",
"edt_append_ms": "Mevrouw",
"edt_append_ms": "ms",
"edt_append_ns": "NS",
"edt_append_percent": "%",
"edt_append_percent_h": "% hori",
"edt_append_percent_v": "% Groen",
"edt_append_percent_v": "% vert",
"edt_append_pixel": "Pixel",
"edt_append_s": "s",
"edt_append_sdegree": "s / graad",
@ -261,12 +275,14 @@
"edt_conf_enum_automatic": "Automatisch",
"edt_conf_enum_bbclassic": "Klassiek",
"edt_conf_enum_bbdefault": "Standaard",
"edt_conf_enum_bbletterbox": "Brievenbus",
"edt_conf_enum_bbosd": "OSD",
"edt_conf_enum_bgr": "BGR",
"edt_conf_enum_bottom_up": "Onderkant boven",
"edt_conf_enum_brg": "BRG",
"edt_conf_enum_color": "Kleur",
"edt_conf_enum_custom": "Op maat",
"edt_conf_enum_decay": "Vervallen",
"edt_conf_enum_dl_error": "Fout",
"edt_conf_enum_dl_informational": "Informatief",
"edt_conf_enum_dl_nodebug": "Geen foutopsporing",
@ -286,6 +302,7 @@
"edt_conf_enum_logverbose": "Uitgebreid",
"edt_conf_enum_logwarn": "Waarschuwing",
"edt_conf_enum_multicolor_mean": "Multikleur",
"edt_conf_enum_please_select": "Selecteer alstublieft",
"edt_conf_enum_rbg": "RBG",
"edt_conf_enum_rgb": "RGB",
"edt_conf_enum_right_left": "Rechts naar links",
@ -325,6 +342,7 @@
"edt_conf_fw_json_expl": "1 JSON target per regel. Bevat IP:PORT (Voorbeeld:127.0.0.1:19446)",
"edt_conf_fw_json_itemtitle": "JSON target",
"edt_conf_fw_json_title": "Lijst van JSON clients",
"edt_conf_gen_configVersion_title": "Configuratie versie",
"edt_conf_gen_heading_title": "Algemene instellingen",
"edt_conf_gen_name_expl": "Een zelf ingesteld naam welke wordt gebruikt om de Hyperion te herkennen. (Handig bij meerdere configuraties)",
"edt_conf_gen_name_title": "Configuratienaam",
@ -366,7 +384,15 @@
"edt_conf_pbs_timeout_title": "Timeout",
"edt_conf_smooth_continuousOutput_expl": "Update de LEDs zelfs als het beeld niet wijzigt.",
"edt_conf_smooth_continuousOutput_title": "Constante output",
"edt_conf_smooth_decay_expl": "De snelheid van verval. 1 is lineair, grotere waarden hebben een sterker effect.",
"edt_conf_smooth_decay_title": "Vervalkracht",
"edt_conf_smooth_dithering_expl": "Verbeter de kleurnauwkeurigheid bij hoge uitvoersnelheden door te wisselen tussen aangrenzende kleuren.",
"edt_conf_smooth_dithering_title": "Dithering",
"edt_conf_smooth_heading_title": "Verzachten",
"edt_conf_smooth_interpolationRate_expl": "Snelheid van de berekening van gladde tussenliggende frames.",
"edt_conf_smooth_interpolationRate_title": "Interpolatietempo",
"edt_conf_smooth_outputRate_expl": "De uitgangssnelheid naar uw LED-controller.",
"edt_conf_smooth_outputRate_title": "Uitgangstempo",
"edt_conf_smooth_time_ms_expl": "Hoe lang moet de verzachting beeld ontvangen?",
"edt_conf_smooth_time_ms_title": "Tijd",
"edt_conf_smooth_type_expl": "Type verzachting",
@ -426,12 +452,15 @@
"edt_conf_webc_sslport_expl": "Poort van de HTTPS-webserver",
"edt_conf_webc_sslport_title": "HTTPS-poort",
"edt_dev_auth_key_title": "Authenticatie token",
"edt_dev_auth_key_title_info": "Verificatietoken vereist voor toegang tot het apparaat",
"edt_dev_enum_sub_min_cool_adjust": "Verlaag koel wit",
"edt_dev_enum_sub_min_warm_adjust": "Verlaag warm wit",
"edt_dev_enum_subtract_minimum": "Verlaag minimum",
"edt_dev_enum_white_off": "Wit uit",
"edt_dev_general_colorOrder_title": "RGB Byte volgorde",
"edt_dev_general_colorOrder_title_info": "De kleurvolgorde van het apparaat",
"edt_dev_general_hardwareLedCount_title": "Hardware LED aantal",
"edt_dev_general_hardwareLedCount_title_info": "Het aantal fysieke LED's dat beschikbaar is voor het gegeven apparaat",
"edt_dev_general_heading_title": "Algemene instellingen",
"edt_dev_general_name_title": "Configuratie naam",
"edt_dev_general_rewriteTime_title": "Ververs snelheid",
@ -445,7 +474,9 @@
"edt_dev_spec_brightnessFactor_title": "Helderheidsfactor ",
"edt_dev_spec_brightnessMax_title": "Maximale helderheid",
"edt_dev_spec_brightnessMin_title": "Minimale helderheid",
"edt_dev_spec_brightnessOverwrite_title": "Overschrijf helderheid ",
"edt_dev_spec_brightnessThreshold_title": "Signaaldetectie helderheid minimaal",
"edt_dev_spec_brightness_title": "Helderheid",
"edt_dev_spec_chanperfixture_title": "Kanalen per armatuur",
"edt_dev_spec_cid_title": "CID",
"edt_dev_spec_clientKey_title": "Klantensleutel",
@ -453,9 +484,16 @@
"edt_dev_spec_debugLevel_title": "Foutopsporingsniveau van Streamer-verbinding",
"edt_dev_spec_debugStreamer_title": "Streamer Debug",
"edt_dev_spec_delayAfterConnect_title": "Vertraging na connectie",
"edt_dev_spec_devices_discovered_none": "Geen apparaten gevonden ",
"edt_dev_spec_devices_discovered_title": "Apparaten gevonden",
"edt_dev_spec_devices_discovered_title_info": "Selecteer uw gevonden LED apparaat.",
"edt_dev_spec_devices_discovered_title_info_custom": "Selecteer uw gevonden LED apparaat of configureer er één op maar.",
"edt_dev_spec_devices_discovery_inprogress": "Ontdekking bezig",
"edt_dev_spec_dithering_title": "Trilling",
"edt_dev_spec_dmaNumber_title": "DMA kanaal",
"edt_dev_spec_gamma_title": "Gamma",
"edt_dev_spec_globalBrightnessControlMaxLevel_title": "Max Huidig Niveau",
"edt_dev_spec_globalBrightnessControlThreshold_title": "Aanpasbaar Huidig Limiet",
"edt_dev_spec_gpioBcm_title": "GPIO Pin",
"edt_dev_spec_gpioMap_title": "GPIO mapping",
"edt_dev_spec_gpioNumber_title": "GPIO nummer",
@ -465,6 +503,7 @@
"edt_dev_spec_intervall_title": "Interval",
"edt_dev_spec_invert_title": "Signaal omkeren",
"edt_dev_spec_latchtime_title": "Sluitertijd",
"edt_dev_spec_latchtime_title_info": "De vergrendelingstijd is de tijd die een apparaat nodig heeft totdat de volgende update kan worden verwerkt. Gedurende die periode worden alle updates genegeerd.",
"edt_dev_spec_ledIndex_title": "LED index",
"edt_dev_spec_ledType_title": "LED Type",
"edt_dev_spec_lightid_itemtitle": "ID",
@ -489,6 +528,7 @@
"edt_dev_spec_printTimeStamp_title": "Voeg tijdstip toe",
"edt_dev_spec_pwmChannel_title": "PWM-kanaal",
"edt_dev_spec_restoreOriginalState_title": "Herstel de oorspronkelijke staat van de verlichting wanneer deze is uitgeschakeld",
"edt_dev_spec_restoreOriginalState_title_info": "Herstel de oorspronkelijke staat van het apparaat wanneer het apparaat is uitgeschakeld",
"edt_dev_spec_serial_title": "EAN",
"edt_dev_spec_spipath_title": "SPI pad",
"edt_dev_spec_sslHSTimeoutMax_title": "Maximale time-out voor handshake van Streamer",
@ -496,7 +536,9 @@
"edt_dev_spec_sslReadTimeout_title": "Time-out bij lezen van Streamer",
"edt_dev_spec_switchOffOnBlack_title": "Schakel zwart uit",
"edt_dev_spec_switchOffOnbelowMinBrightness_title": "Uitschakelen, onder minimum",
"edt_dev_spec_syncOverwrite_title": "Synchronisatie uitschakelen",
"edt_dev_spec_targetIpHost_title": "Target IP/Hostnaam",
"edt_dev_spec_targetIpHost_title_info": "Het apparaat zijn hostname of IP-adres",
"edt_dev_spec_targetIp_title": "Target IP",
"edt_dev_spec_transeffect_title": "Overgangseffect",
"edt_dev_spec_transistionTimeExtra_title": "Extra tijd duisternis",
@ -686,6 +728,7 @@
"general_btn_off": "Uit",
"general_btn_ok": "OK",
"general_btn_on": "Aan",
"general_btn_overwrite": "Overschrijf ",
"general_btn_rename": "Hernoem",
"general_btn_restarthyperion": "Herstart Hyperion",
"general_btn_save": "Opslaan",
@ -708,25 +751,33 @@
"general_comp_PROTOSERVER": "Protocol Buffers Server",
"general_comp_SMOOTHING": "Vloeiend",
"general_comp_V4L": "USB Vastleggen",
"general_country_cn": "China",
"general_country_de": "Duitsland",
"general_country_es": "Spanje",
"general_country_fr": "Frankrijk",
"general_country_it": "Italië",
"general_country_nl": "Nederland",
"general_country_ru": "Rusland",
"general_country_uk": "Verenigd Koninkrijk",
"general_country_us": "Verenigde Staten",
"general_disabled": "Uitgeschakeld ",
"general_enabled": "Ingeschakeld ",
"general_speech_cs": "Tsjechisch",
"general_speech_de": "Duits",
"general_speech_en": "Engels",
"general_speech_es": "Spaans",
"general_speech_fr": "Frans",
"general_speech_it": "Italiaans",
"general_speech_nb": "Noors (Bokmål)",
"general_speech_nl": "Nederlands",
"general_speech_pl": "Pools",
"general_speech_pt": "Portugees",
"general_speech_ro": "Romeens",
"general_speech_ru": "Russchich",
"general_speech_sv": "Zweeds",
"general_speech_tr": "Turks",
"general_speech_vi": "Vietnamees",
"general_speech_zh-CN": "Chinees (vereenvoudigd)",
"general_webui_title": "Hyperion - Web Instellingen",
"general_wiki_moreto": "Meer informatie over \"$1\" is beschikbaar op onze Wiki",
"infoDialog_checklist_title": "Checklist!",
@ -797,7 +848,7 @@
"remote_input_origin": "Origineel",
"remote_input_owner": "Type",
"remote_input_priority": "Prioriteit",
"remote_input_setsource_btn": "Selecteerd bron",
"remote_input_setsource_btn": "Selecteer bron",
"remote_input_sourceactiv_btn": "Bron actief",
"remote_input_status": "Status/Actie",
"remote_losthint": "Note: Alle wijzigingen zijn verdwenen na een herstart.",
@ -806,6 +857,8 @@
"remote_maptype_label_multicolor_mean": "Multikleur",
"remote_maptype_label_unicolor_mean": "Unikleur",
"remote_optgroup_syseffets": "Beschikbare effecten",
"remote_optgroup_templates_custom": "Gebruikers Sjablonen",
"remote_optgroup_templates_system": "Systeem Sjablonen",
"remote_optgroup_usreffets": "Gebruikereffecten",
"remote_videoMode_2D": "2D",
"remote_videoMode_3DSBS": "3DSBS",
@ -832,7 +885,7 @@
"support_label_webpagetitle": "Web pagina",
"support_label_webrestitle": "Informatie en hulp",
"support_label_wikitext": "De A tot Z index voor alles Hyperion gerelateerd",
"support_label_wikititle": "Wiki",
"support_label_wikititle": "Documentatie",
"support_label_yttext": "Verveeld met alle foto's? Volg ons op Youtube!",
"update_button_changelog": "Volledige changelog",
"update_button_install": "Installeren",
@ -842,6 +895,9 @@
"update_label_type": "Type:",
"update_no_updates_for_branch": "Geen updates voor geselecteerde versie kanaal",
"update_versreminder": "Jouw versie: $1",
"wiz_atmoorb_desc2": "Kies nu welke Orbs moeten worden toegevoegd. De positie wijst de lamp toe aan een specifieke positie op je \"foto\". Uitgeschakelde lampen worden niet toegevoegd. Druk op de knop aan de rechterkant om afzonderlijke lampen te identificeren.",
"wiz_atmoorb_intro1": "Deze wizards configureren Hyperion voor AtmoOrbs. Functies zijn de AtmoOrb autodetectie, elk ligt op een specifieke plek op je afbeelding neerzetten, of uitschakelen en Hyperion instellingen automatisch optimaliseren! Dus in het kort: Alles wat je nodig hebt zijn een paar klikken, en je bent klaar!",
"wiz_atmoorb_title": "AtmoOrb Wizard",
"wiz_cc_adjustgamma": "Gamma: Wat je moet doen is, pas elk gamma level aan totdat deze op elk kanaal op dezelfde manier wordt waargenomen. Hint: Neutraal is 1.0! Bijvoorbeeld, als grijs teveel op rood lijkt, verlaag dan de rode gamma (hoe meer gamma, des te minder de kleurintensiteit).",
"wiz_cc_adjustit": "Pas je \"$1\" aan totdat je hier tevreden mee bent. Let op: Hoe verder je de standaard waardes aanpast, hoe verder het kleurenspectrum wordt beperkt (dit geldt voor alle kleuren). Afhankelijk van de TV/LED zullen kleuren onderling kunnen afwijken.",
"wiz_cc_backlight": "Aanvullend kan je achtergrondlicht instellen om zwart echt zwart te maken. Hierin kan je bijvoorbeeld kleur toevoegen of dit gewoon wit laten. Bij status \"Uit\", \"Kleur\" of \"Effect\" is dit uitgeschakeld.",
@ -864,6 +920,10 @@
"wiz_cc_testintrok": "Druk op de onderstaande knop om een test video te starten.",
"wiz_cc_testintrowok": "Bekijk de volgende link om test video's te downloaden:",
"wiz_cc_title": "Kleurenkalibratie wizard",
"wiz_cololight_desc2": "Kies nu welke Cololights toegevoegd moeten worden. Om een enkel licht te identificeren, klik de knop rechts.",
"wiz_cololight_intro1": "Deze wizard configureerdt Hyperion voor het Cololight-systeem. Functies zijn de automatische detectie van Cololight en het automatisch afstemmen van de Hyperion-instellingen! In het kort: alles wat je nodig hebt is een paar klikken en je bent klaar!<br>Opmerking: In het geval van Cololight Strip, moet je mogelijk handmatig het aantal LED's en de lay-out corrigeren.",
"wiz_cololight_noprops": "Kan apparaateigenschappen niet ophalen - Definieer het aantal LED's handmatig",
"wiz_cololight_title": "Cololight Wizard",
"wiz_guideyou": "De $1 zal je door de instellingen leiden. Druk gewoon op de knop!",
"wiz_hue_blinkblue": "Laat ID $1 blauw oplichten",
"wiz_hue_clientkey": "Klantensleutel:",
@ -897,6 +957,7 @@
"wiz_identify_light": "Identificeer $ 1",
"wiz_ids_disabled": "Gedeactiveerd",
"wiz_ids_entire": "Hele foto",
"wiz_noLights": "Geen $1 gevonden! Verbind de lampen met het netwerk of configureer ze handmatig.",
"wiz_pos": "Positie / staat",
"wiz_rgb_expl": "De kleur punt verandert elke X seconden van kleur (rood, groen), op hetzelfde moment dat de LEDs van kleur veranderen. Beantwoord onderstaande vragen om de byte order juist in te stellen.",
"wiz_rgb_intro1": "Deze wizard zal je begeleiden bij het vinden van de juiste kleuren voor jouw LEDs. Klik hier om verder te gaan.",

View File

@ -5,8 +5,8 @@
"InfoDialog_changePassword_title": "Zmień hasło",
"InfoDialog_iswitch_text": "Jeśli w sieci lokalnej działa więcej niż jedno wystąpienie Hyperion, możesz przełączać się między konfiguracjami internetowymi. Wybierz poniżej instancję Hyperion, którą chcesz kontrolować, i przełącz się!",
"InfoDialog_iswitch_title": "Przełącznik Hyperion",
"InfoDialog_lang_text": "Jeśli nie podoba Ci się wynik automatycznego wykrywania języka, możesz go tutaj zmienić.",
"InfoDialog_lang_title": "Wybór języka (Language setting)",
"InfoDialog_nostorage_text": "Twoja przeglądarka nie obsługuje localStorage. Nie można zapisać określonego ustawienia języka (powrót do „automatycznego wykrywania”) i poziomu dostępu (powrót do „domyślnego”). Niektóre kreatory mogą być ukryte. Nadal możesz korzystać z interfejsu internetowego bez dalszych problemów",
"InfoDialog_nostorage_title": "Nie można zapisać ustawień",
"InfoDialog_nowrite_foottext": "Interfejs WebUI zostanie odblokowany automatycznie po rozwiązaniu problemu!",
"InfoDialog_nowrite_text": "Hyperion nie może zapisać do aktualnie załadowanego pliku konfiguracyjnego. zmień uprawnienia zapisu plików, aby kontynuować.",
"InfoDialog_nowrite_title": "Nie masz uprawnień do zapisu!",
@ -15,7 +15,7 @@
"about_build": "Build:",
"about_builddate": "Data buildu:",
"about_contribute": "Rozwijaj Hyperion razem z nami!",
"about_credits": "Pozdrowienia dla wszystkich programistów!",
"about_credits": "Pozdrowienia dla wszystkich programistów! Polska wersja Artur Klimek KAmerOK",
"about_resources": "$1 biblioteki",
"about_translations": "Tłumaczenia",
"about_version": "Wersja:",
@ -42,12 +42,23 @@
"conf_general_intro": "Podstawowe ustawienia Hyperion i WebUI, które nie pasują do żadnych innych kategorii.",
"conf_general_label_title": "Główne ustawienia",
"conf_grabber_fg_intro": "\"Przechwytywanie pulpitu\" to Twój system lokalny, przechwytywany jako źródło wejściowe.",
"conf_grabber_inst_grabber_config_info": "Wcześniej skonfiguruj sprzęt do przechwytywania, który ma być używany przez instancję",
"conf_grabber_v4l_intro": "Funkcja przechwytywania USB używa urządzenia przechwytującego podłączonego przez USB do tego systemu.",
"conf_helptable_expl": "Omówienie",
"conf_helptable_option": "Opcje",
"conf_leds_config_error": "Błąd w konfiguracji układu LED / urządzenia",
"conf_leds_config_warning": "Sprawdź konfigurację układu LED / urządzenia",
"conf_leds_contr_label_contrtype": "Typ kontrolera:",
"conf_leds_device_intro": "Hyperion obsługuje wiele kontrolerów do przesyłania danych do urządzenia docelowego. Wybierz kontroler LED z posortowanej listy i skonfiguruj go. Wybraliśmy najlepsze ustawienia domyślne dla każdego urządzenia.",
"conf_leds_device_info_log": "Jeśli diody LED nie działają, sprawdź tutaj błędy:",
"conf_leds_device_intro": "Hyperion obsługuje wiele kontrolerów przesyłania danych do urządzenia docelowego. Wybierz kontroler LED z posortowanej listy i skonfiguruj go. Wybraliśmy najlepsze ustawienia domyślne dla każdego urządzenia.",
"conf_leds_error_hwled_gt_layout": "Sprzętowa liczba diod LED ($1) jest większa niż diod LED skonfigurowanych za pomocą układu ($2), <br>$3 {{plural:$3|LED|LEDs}} pozostaną czarne, jeśli będziesz kontynuować.",
"conf_leds_error_hwled_lt_layout": "Sprzętowa liczba diod LED ($1) jest mniejsza niż diody LED skonfigurowane w układzie ($2). <br> Liczba diod LED skonfigurowanych w układzie nie może przekraczać dostępnych diod LED",
"conf_leds_layout_advanced": "Ustawienia dodatkowe",
"conf_leds_layout_blacklist_num_title": "Liczba diod LED",
"conf_leds_layout_blacklist_rule_title": "Reguła czarnej listy",
"conf_leds_layout_blacklist_rules_title": "Zasady czarnej listy",
"conf_leds_layout_blacklist_start_title": "Start LED",
"conf_leds_layout_blacklistleds_title": "Czarna lista diod LED",
"conf_leds_layout_btn_checklist": "Pokaż listę kontrolną",
"conf_leds_layout_button_savelay": "Zapisz układ",
"conf_leds_layout_button_updsim": "Odśwież podgląd",
@ -80,7 +91,7 @@
"conf_leds_layout_cl_vleddepth": "Pionowa głębokość LED",
"conf_leds_layout_frame": "Układ Klasyczny (Ramka LED)",
"conf_leds_layout_generatedconf": "Wygenerowana / Aktualna konfiguracja LED",
"conf_leds_layout_intro": "Potrzebujesz także układu diod LED, który odzwierciedla Twoje pozycje LED. Klasyczny układ to ramka telewizora, ale obsługujemy także tworzenie matrycy led (ściany led). Widok tego układu jest ZAWSZE Z PRZODU telewizora",
"conf_leds_layout_intro": "Potrzebujesz układu diod LED, który odzwierciedla twoje pozycje diod. Klasyczny układ to ramka telewizora, ale obsługujemy także tworzenie matrycy led (ściany led). Widok tego układu jest ZAWSZE Z PRZODU telewizora",
"conf_leds_layout_ma_cabling": "Okablowanie",
"conf_leds_layout_ma_horiz": "Poziomo",
"conf_leds_layout_ma_optbottomleft": "Lewy dół",
@ -107,23 +118,27 @@
"conf_leds_layout_preview_totalleds": "Liczba wszystkich LED: $1",
"conf_leds_layout_ptl": "Wskaż górny lewy",
"conf_leds_layout_ptlh": "Poziomy",
"conf_leds_layout_ptln": "Punkty trapezowe",
"conf_leds_layout_ptln": "Punkty potrójne",
"conf_leds_layout_ptlv": "Pionowy",
"conf_leds_layout_ptr": "Wskaż prawy górny",
"conf_leds_layout_textf1": "To pole tekstowe pokazuje (domyślny) bieżąco załadowany układ i zostanie zastąpione, jeśli wygenerujesz nowy z powyższymi opcjami. Opcjonalnie możesz wprowadzić dalsze zmiany.",
"conf_leds_nav_label_ledcontroller": "Kontroler LED",
"conf_leds_nav_label_ledlayout": "Układ LED",
"conf_leds_note_layout_overwrite": "Uwaga: nadpisanie tworzy domyślny układ dla {{plural:$1| jedna dioda LED || $1 wszystkie LED}} podane przez liczbę diod LED sprzętu",
"conf_leds_optgroup_RPiGPIO": "RPi GPIO",
"conf_leds_optgroup_RPiPWM": "RPi PWM",
"conf_leds_optgroup_RPiSPI": "RPi SPI",
"conf_leds_optgroup_debug": "Debugowanie",
"conf_leds_optgroup_debug": "Debug",
"conf_leds_optgroup_network": "Sieć",
"conf_leds_optgroup_other": "Inny",
"conf_leds_optgroup_usb": "USB",
"conf_logging_btn_autoscroll": "Automatyczne przewijanie",
"conf_logging_btn_clipboard": "Kopiuj logi do schowka",
"conf_logging_btn_pbupload": "Prześlij raport z prośbami o wsparcie.",
"conf_logging_contpolicy": "Zgłoś politykę prywatności",
"conf_logging_label_intro": "Obszar do sprawdzania komunikatów w dzienniku, zobaczysz więcej lub mniej informacji w zależności od ustawionego poziomu rejestrowania.",
"conf_logging_lastreports": "Poprzednie raporty",
"conf_logging_logoutput": "Dane wyjściowe dziennika",
"conf_logging_nomessage": "Brak dostępnych wiadomości w dzienniku.",
"conf_logging_report": "Raport",
"conf_logging_uplfailed": "Przesyłanie nie powiodło się! Sprawdź połączenie z internetem!",
@ -133,7 +148,7 @@
"conf_network_bobl_intro": "Odbiornik dla Boblight",
"conf_network_createToken_btn": "Utwórz token",
"conf_network_fbs_intro": "Odbiornik Flatbuffers Google. Służy do szybkiej transmisji obrazu.",
"conf_network_forw_intro": "Przek wszystkie dane wejściowe do drugiej instancji Hyperion, która może być sterowana przez inny kontroler led",
"conf_network_forw_intro": "Przekieruj wszystkie dane wejściowe do drugiej instancji Hyperion, która może być sterowana przez inny kontroler LED",
"conf_network_json_intro": "Port JSON-RPC wszystkich instancji Hyperion, używany do zdalnego sterowania.",
"conf_network_net_intro": "Ustawienia związane z siecią, które są stosowane do wszystkich usług sieciowych",
"conf_network_proto_intro": "Port PROTO wszystkich instancji Hyperion, używany do strumieni obrazów (HyperionScreenCap, Kodi Addon, Android Hyperion Grabber, ...)",
@ -157,23 +172,27 @@
"dashboard_alert_message_disabled_t": "Instancja sprzętowa LED wyłączona",
"dashboard_componentbox_label_comp": "Komponent",
"dashboard_componentbox_label_status": "Status",
"dashboard_componentbox_label_title": "Status komponentów",
"dashboard_componentbox_label_title": "Szybki podgląd komponentów",
"dashboard_infobox_label_currenthyp": "Twoja wersja Hyperion:",
"dashboard_infobox_label_disableh": "Wyłącz instancję: $1",
"dashboard_infobox_label_enableh": "Uruchom Hyperion",
"dashboard_infobox_label_enableh": "Uruchom instancję: $1",
"dashboard_infobox_label_instance": "Instancja:",
"dashboard_infobox_label_latesthyp": "Najnowsza wersja Hyperion:",
"dashboard_infobox_label_platform": "Platforma:",
"dashboard_infobox_label_ports": "Porty (flat|proto):",
"dashboard_infobox_label_port_flat": "Flatbuffer:",
"dashboard_infobox_label_port_json": "Server-JSON:",
"dashboard_infobox_label_port_proto": "Protobuffer:",
"dashboard_infobox_label_ports": "Porty",
"dashboard_infobox_label_ports_websocket": "WebSocket (ws|wss):",
"dashboard_infobox_label_smartacc": "Szybki dostęp",
"dashboard_infobox_label_statush": "Status Hyperion:",
"dashboard_infobox_label_title": "Informacje",
"dashboard_infobox_label_watchedversionbranch": "Obserwowany rodzaj wersji:",
"dashboard_infobox_label_watchedversionbranch": "Obserwowany branch:",
"dashboard_infobox_message_updatesuccess": "Posiadasz najnowszą wersję Hyperion",
"dashboard_infobox_message_updatewarning": "Dostępna jest nowsza wersja Hyperion! ($1)",
"dashboard_label_intro": "Ten pulpit nawigacyjny zapewnia szybki przegląd statusu Hyperion i pokazuje najnowsze wiadomości z blogu Hyperion.",
"dashboard_message_default_password": "Domyślne hasło do WebUi jest ustawione. Zdecydowanie zalecamy to zmienić.",
"dashboard_message_default_password_t": "WebUi default password is set",
"dashboard_label_intro": "Ten pulpit nawigacyjny zapewnia szybki przegląd statusu Hyperion.",
"dashboard_message_default_password": "Ustawione jest domyślne hasło do WebUi. Zdecydowanie zalecamy je zmienić.",
"dashboard_message_default_password_t": "Ustawione jest domyślne hasło WebUi",
"dashboard_message_do_not_show_again": "Nie pokazuj tej wiadomości ponownie",
"dashboard_message_global_setting": "Ustawienia na tej stronie nie zależą od konkretnej instancji. Zmiany będą przechowywane globalnie dla wszystkich instancji.",
"dashboard_message_global_setting_t": "Ustawienie niezależne od instancji",
@ -192,11 +211,11 @@
"edt_append_pixel": "Piksel",
"edt_append_s": "s",
"edt_append_sdegree": "s/stopnień",
"edt_conf_bb_blurRemoveCnt_expl": "Liczba pikseli, które są usuwane z wykrytej ramki w celu usunięcia rozmycia.",
"edt_conf_bb_blurRemoveCnt_expl": "Liczba pikseli, które zostaną usunięte z wykrytej ramki w celu usunięcia rozmycia.",
"edt_conf_bb_blurRemoveCnt_title": "Rozmycie pikseli",
"edt_conf_bb_borderFrameCnt_expl": "Liczba ramek przed ustawieniem spójnego wykrytego obramowania.",
"edt_conf_bb_borderFrameCnt_title": "Ramki graniczne",
"edt_conf_bb_heading_title": "Usuń czarne pasy",
"edt_conf_bb_heading_title": "Usuwanie czarnych pasów",
"edt_conf_bb_maxInconsistentCnt_expl": "Liczba niespójnych ramek, które są ignorowane, zanim nowa granica uzyska szansę na potwierdzenie spójności.",
"edt_conf_bb_maxInconsistentCnt_title": "Niespójne ramki",
"edt_conf_bb_mode_expl": "Algorytm przetwarzania. (patrz Wiki)",
@ -211,18 +230,18 @@
"edt_conf_color_backlightColored_title": "Kolorowe podświetlenie",
"edt_conf_color_backlightThreshold_expl": "Minimalna jasność (podświetlenie). Wyłączone podczas efektów, kolorów i statusu „Wyłączony”",
"edt_conf_color_backlightThreshold_title": "Próg podświetlenia",
"edt_conf_color_black_expl": "Skalibrowana wartość czerni.",
"edt_conf_color_black_expl": "Skalibrowana wartość koloru czarnego.",
"edt_conf_color_black_title": "Czarny",
"edt_conf_color_blue_expl": "Skalibrowana wartość niebieskiego",
"edt_conf_color_blue_expl": "Skalibrowana wartość koloru niebieskiego",
"edt_conf_color_blue_title": "Niebieski",
"edt_conf_color_brightnessComp_expl": "Kompensuje różnice jasności między czerwonym, zielonym, niebieskim, cyjanowym, purpurowym, żółtym i białym. 100 oznacza pełną kompensację, 0 oznacza brak kompensacji",
"edt_conf_color_brightnessComp_title": "Kompensacja jasności",
"edt_conf_color_brightness_expl": "Ustaw jasność LEDów",
"edt_conf_color_brightness_title": "Jasność",
"edt_conf_color_channelAdjustment_header_expl": "Utwórz profile kolorów, które można przypisać do określonego komponentu. Dostosuj kolor, gamma, jasność, kompensację i więcej",
"edt_conf_color_channelAdjustment_header_expl": "Utwórz profile kolorów, które można przypisać do określonego profilu. Dostosuj kolor, gamma, jasność, kompensację i więcej",
"edt_conf_color_channelAdjustment_header_itemtitle": "Profil",
"edt_conf_color_channelAdjustment_header_title": "Korekta kanału koloru",
"edt_conf_color_cyan_expl": "Skalibrowana wartość Cyjanu",
"edt_conf_color_channelAdjustment_header_title": "Adaptacja koloru",
"edt_conf_color_cyan_expl": "Skalibrowana wartość koloru cyjanowego",
"edt_conf_color_cyan_title": "Cyjan",
"edt_conf_color_gammaBlue_expl": "Gamma niebieskiego. 1.0 jest neutralny. Powyżej 1,0 zmniejsza niebieski, mniej niż 1,0 dodaje niebieski.",
"edt_conf_color_gammaBlue_title": "Gamma Niebieski",
@ -230,22 +249,22 @@
"edt_conf_color_gammaGreen_title": "Gamma Zielony",
"edt_conf_color_gammaRed_expl": "Gamma czerwieni. 1.0 jest neutralny. Powyżej 1,0 zmniejsza kolor czerwony, a poniżej 1,0 dodaje kolor czerwony.",
"edt_conf_color_gammaRed_title": "Gamma Czerwony",
"edt_conf_color_green_expl": "Skalibrowana wartość zieleni",
"edt_conf_color_green_expl": "Skalibrowana wartość koloru zielonego",
"edt_conf_color_green_title": "Zielony",
"edt_conf_color_heading_title": "Kalibracja kolorów",
"edt_conf_color_id_expl": "Imię użytkownika",
"edt_conf_color_id_title": "Identyfikator Użytkownika",
"edt_conf_color_imageToLedMappingType_expl": "Zastępuje przypisanie obszaru led do układu led, jeśli nie jest ono „kolorowe”",
"edt_conf_color_imageToLedMappingType_title": "Przydział obszaru Led",
"edt_conf_color_imageToLedMappingType_expl": "Jeśli wybrano inne niż „kolorowy” - miesza wszystkie kolory do jednego koloru by wyświetlić pojedynczy kolor na całym obszarze urządzenia.",
"edt_conf_color_imageToLedMappingType_title": "Ustalenie przydziału koloru",
"edt_conf_color_leds_expl": "Przypisz tę regulację do wszystkich diod LED (*) lub tylko niektórych (0-24).",
"edt_conf_color_leds_title": "Indeks LED",
"edt_conf_color_magenta_expl": "Skalibrowana wartość Magenty",
"edt_conf_color_magenta_expl": "Skalibrowana wartość koloru magenty",
"edt_conf_color_magenta_title": "Magenta",
"edt_conf_color_red_expl": "Skalibrowana wartość czerwieni",
"edt_conf_color_red_expl": "Skalibrowana wartość koloru czerwonego",
"edt_conf_color_red_title": "Czerwony",
"edt_conf_color_white_expl": "Skalibrowana wartość bieli.",
"edt_conf_color_white_expl": "Skalibrowana wartość koloru białego.",
"edt_conf_color_white_title": "Biały",
"edt_conf_color_yellow_expl": "Skalibrowana wartość Żółtego",
"edt_conf_color_yellow_expl": "Skalibrowana wartość koloru żółtego",
"edt_conf_color_yellow_title": "Żółty",
"edt_conf_effp_disable_expl": "Dodaj nazwy efektów, które chcesz wyłączyć / ukryć na wszystkich listach efektów.",
"edt_conf_effp_disable_itemtitle": "Efekt",
@ -254,19 +273,24 @@
"edt_conf_effp_paths_expl": "Możesz zdefiniować foldery zawierające dodatkowe efekty. Konfigurator efektów domyślnie zapisuje w pierwszym folderze.",
"edt_conf_effp_paths_itemtitle": "Ścieżka",
"edt_conf_effp_paths_title": "Ścieżki efektów",
"edt_conf_enum_BOTH": "Poziomo i Pionowo",
"edt_conf_enum_HORIZONTAL": "Poziomo",
"edt_conf_enum_NO_CHANGE": "Auto",
"edt_conf_enum_NTSC": "NTSC",
"edt_conf_enum_PAL": "PAL",
"edt_conf_enum_SECAM": "SECAM",
"edt_conf_enum_VERTICAL": "Pionowo",
"edt_conf_enum_automatic": "Automatyczny",
"edt_conf_enum_bbclassic": "Klasyczny",
"edt_conf_enum_bbdefault": "Domyślny",
"edt_conf_enum_bbletterbox": "Letterbox",
"edt_conf_enum_bbosd": "OSD",
"edt_conf_enum_bgr": "BGR",
"edt_conf_enum_bottom_up": "Oddolne",
"edt_conf_enum_bottom_up": "Od dołu do góry",
"edt_conf_enum_brg": "BRG",
"edt_conf_enum_color": "Kolor",
"edt_conf_enum_custom": "Dostosuj",
"edt_conf_enum_custom": "Odświeżanie",
"edt_conf_enum_decay": "Rozmycie",
"edt_conf_enum_dl_error": "Błąd",
"edt_conf_enum_dl_informational": "Informacyjny",
"edt_conf_enum_dl_nodebug": "Bez debugowania",
@ -286,19 +310,20 @@
"edt_conf_enum_logverbose": "Gadatliwy",
"edt_conf_enum_logwarn": "Ostrzeżenie",
"edt_conf_enum_multicolor_mean": "Kolorowy",
"edt_conf_enum_please_select": "Proszę wybrać",
"edt_conf_enum_rbg": "RBG",
"edt_conf_enum_rgb": "RGB",
"edt_conf_enum_right_left": "Od prawej do lewej",
"edt_conf_enum_top_down": "Z góry na dół",
"edt_conf_enum_transeffect_smooth": "Gładki",
"edt_conf_enum_transeffect_sudden": "Nagły",
"edt_conf_enum_unicolor_mean": "Skala odcieni szarości",
"edt_conf_enum_unicolor_mean": "Mieszaj kolory do jednego koloru",
"edt_conf_fbs_heading_title": "Server Flatbuffers",
"edt_conf_fbs_timeout_expl": "Jeśli w danym okresie nie zostaną odebrane żadne dane, komponent zostanie (miękko) wyłączony.",
"edt_conf_fbs_timeout_title": "Timeout",
"edt_conf_fg_display_expl": "Wybierz pulpit, który ma zostać przechwycony (konfiguracja wielu monitorów)",
"edt_conf_fg_display_title": "Pulpit",
"edt_conf_fg_frequency_Hz_expl": "Jak często rejestrowane są nowe zdjęcia",
"edt_conf_fg_frequency_Hz_expl": "Częstotliwość z jaką odświeżane są próbki obrazu do obliczania kolorów.",
"edt_conf_fg_frequency_Hz_title": "Częstotliwość przechwytywania",
"edt_conf_fg_heading_title": "Przechwytywanie widoku systemu (pulpitu)",
"edt_conf_fg_height_expl": "Zmniejsz obraz do tej wysokości, ponieważ nieprzetworzony obraz będzie wymagał dużo czasu procesora.",
@ -321,27 +346,37 @@
"edt_conf_fw_flat_expl": "Jeden element flatbuffer na linię. Zawiera adres IP: PORT (przykład: 127.0.0.1:19401)",
"edt_conf_fw_flat_itemtitle": "Źródło flatbuffer",
"edt_conf_fw_flat_title": "Lista klientów flatbuffer",
"edt_conf_fw_heading_title": "Przekazywanie",
"edt_conf_fw_heading_title": "Przekierowanie",
"edt_conf_fw_json_expl": "Jeden element Json na linię. Zawiera adres IP: PORT (przykład: 127.0.0.1:19446)",
"edt_conf_fw_json_itemtitle": "Element Json",
"edt_conf_fw_json_title": "Lista klientów Json",
"edt_conf_gen_configVersion_title": "Wersja konfiguracji",
"edt_conf_gen_heading_title": "Ustawienia główne",
"edt_conf_gen_name_expl": "Nazwa zdefiniowana przez użytkownika, która służy do identyfikacji Hyperion. (Pomocne, jeśli masz więcej niż jedną instancję Hyperion)",
"edt_conf_gen_name_title": "Nazwa konfiguracji",
"edt_conf_gen_name_title": "Nazwa konfiguracji:",
"edt_conf_gen_showOptHelp_expl": "Pokaż wszystkie dostępne wyjaśnienia w każdej sekcji. Polecane dla początkujących!",
"edt_conf_gen_showOptHelp_title": "Pokaż objaśnienia",
"edt_conf_gen_watchedVersionBranch_expl": "Wybiera wersję, która powinna być używana podczas wyszukiwania nowych wersji Hyperion.",
"edt_conf_gen_watchedVersionBranch_title": "Obserwowany rodzaj wersji:",
"edt_conf_gen_watchedVersionBranch_title": "Obserwowany branch:",
"edt_conf_general_enable_expl": "Jeśli zaznaczone, komponent jest włączony.",
"edt_conf_general_enable_title": "Aktywuj",
"edt_conf_general_port_expl": "Ten Port jest już używany",
"edt_conf_general_port_title": "Port",
"edt_conf_general_priority_expl": "Priorytet tego komponentu",
"edt_conf_general_priority_title": "Kanał priorytetowy",
"edt_conf_instC_systemEnable_expl": "Umożliwia przechwytywanie pulpitu dla tego kontrolera LED",
"edt_conf_grabber_discovered_expl": "Wybierz wykryte urządzenie do przechwytywania",
"edt_conf_grabber_discovered_none": "Nie wykryto urządzenia do przechwytywania",
"edt_conf_grabber_discovered_title": "Wykryto urządzenie",
"edt_conf_grabber_discovered_title_info": "Wybierz wykryte urządzenie do przechwytywania",
"edt_conf_grabber_discovery_inprogress": "Wykrywanie w toku",
"edt_conf_instC_screen_grabber_device_expl": "Używane urządzenie do przechwytywania ekranu",
"edt_conf_instC_screen_grabber_device_title": "Urządzenie do przechwytywania ekranu",
"edt_conf_instC_systemEnable_expl": "Umożliwia przechwytywanie pulpitu urządzenia na którym zainstalowany jest Hyperion.",
"edt_conf_instC_systemEnable_title": "Włącz przechwytywanie pulpitu",
"edt_conf_instC_v4lEnable_expl": "Umożliwia przechwytywanie USB dla tego kontrolera LED",
"edt_conf_instC_v4lEnable_expl": "Umożliwia przechwytywanie obrazu z graberra USB dla tego kontrolera LED",
"edt_conf_instC_v4lEnable_title": "Włącz przechwytywanie USB",
"edt_conf_instC_video_grabber_device_expl": "Używane urządzenie do przechwytywania wideo",
"edt_conf_instC_video_grabber_device_title": "Urządzenie do przechwytywania wideo",
"edt_conf_instCapture_heading_title": "Instancja przechwytywania",
"edt_conf_js_heading_title": "Server JSON",
"edt_conf_log_heading_title": "Logowanie",
@ -366,7 +401,15 @@
"edt_conf_pbs_timeout_title": "Timeout",
"edt_conf_smooth_continuousOutput_expl": "Zaktualizuj diody LED, nawet jeśli na obrazie nie ma żadnych zmian.",
"edt_conf_smooth_continuousOutput_title": "Wysyłaj na wyjście",
"edt_conf_smooth_decay_expl": "Szybkość rozpadu. 1 jest liniowa, większe wartości dają silniejszy efekt.",
"edt_conf_smooth_decay_title": "Moc rozmycia",
"edt_conf_smooth_dithering_expl": "Popraw dokładność odwzorowania kolorów przy dużych szybkościach wyświetlania, zmieniając kolory na przemian.",
"edt_conf_smooth_dithering_title": "Dithering",
"edt_conf_smooth_heading_title": "Wygładzanie",
"edt_conf_smooth_interpolationRate_expl": "Szybkość obliczania wygładzanych ramek pośrednich.",
"edt_conf_smooth_interpolationRate_title": "Współczynnik interpolacji",
"edt_conf_smooth_outputRate_expl": "Prędkość wyjściowa do twojego kontrolera led.",
"edt_conf_smooth_outputRate_title": "Szybkość wyjściowa",
"edt_conf_smooth_time_ms_expl": "Jak długo wygładzanie powinno zbierać zdjęcia?",
"edt_conf_smooth_time_ms_title": "Czas",
"edt_conf_smooth_type_expl": "Rodzaj wygładzania.",
@ -377,25 +420,45 @@
"edt_conf_smooth_updateFrequency_title": "Częstotliwość aktualizacji",
"edt_conf_v4l2_blueSignalThreshold_expl": "Przyciemnia niskie wartości niebieskiego (rozpoznawane jako czarny)",
"edt_conf_v4l2_blueSignalThreshold_title": "Niebieski próg sygnału",
"edt_conf_v4l2_cecDetection_expl": "Jeśli jest włączone, przechwytywanie USB zostanie tymczasowo wyłączone, gdy zdarzenie gotowości CEC zostanie otrzymane z magistrali HDMI.",
"edt_conf_v4l2_cecDetection_expl": "Jeśli jest włączone, przechwytywanie USB zostanie tymczasowo wyłączone, gdy zdarzenie CEC - stanu czuwania zostanie otrzymane z magistrali HDMI.",
"edt_conf_v4l2_cecDetection_title": "Detekcja CEC",
"edt_conf_v4l2_cropBottom_expl": "Liczba pikseli na dole, które są usuwane z obrazu.",
"edt_conf_v4l2_cropBottom_expl": "Liczba pikseli na dole które zostaną usunięte z obrazu.",
"edt_conf_v4l2_cropBottom_title": "Kadruj w dół",
"edt_conf_v4l2_cropLeft_expl": "Liczba pikseli po lewej stronie, które zostały usunięte z obrazu.",
"edt_conf_v4l2_cropHeightValidation_error": "Przytnij z góry + Przytnij z dołu nie mogą być większe niż wysokość ($1)",
"edt_conf_v4l2_cropLeft_expl": "Liczba pikseli po lewej stronie, które zostaną usunięte z obrazu.",
"edt_conf_v4l2_cropLeft_title": "Kadruj w lewo",
"edt_conf_v4l2_cropRight_expl": "Liczba pikseli po prawej stronie, które zostały usunięte z obrazu.",
"edt_conf_v4l2_cropRight_expl": "Liczba pikseli po prawej stronie, które zosta usunięte z obrazu.",
"edt_conf_v4l2_cropRight_title": "Kadruj w prawo",
"edt_conf_v4l2_cropTop_expl": "Liczba pikseli w górnej części, które są usuwane z obrazu.",
"edt_conf_v4l2_cropTop_expl": "Liczba pikseli w górnej części, które zostaną usunięte z obrazu.",
"edt_conf_v4l2_cropTop_title": "Kadruj w górę",
"edt_conf_v4l2_cropWidthValidation_error": "Przytnij w lewo + Przytnij w prawo nie mogą być większe niż szerokość ($1)",
"edt_conf_v4l2_device_expl": "Ścieżka do interfejsu przechwytywania USB. Ustaw na „auto” dla automatycznego wykrywania. Przykład: '/dev/video0'",
"edt_conf_v4l2_device_title": "Urządzenie",
"edt_conf_v4l2_framerate_expl": "Obsługiwane klatki na sekundę aktywnego urządzenia",
"edt_conf_v4l2_encoding_expl": "Wymuś kodowanie wideo dla grabberów obsługujących wiele formatów",
"edt_conf_v4l2_encoding_title": "Format kodowania",
"edt_conf_v4l2_flip_expl": "Pozwala to na odwrócenie obrazu w poziomie, w pionie lub w obu osiach.",
"edt_conf_v4l2_flip_title": "Odwróć obraz",
"edt_conf_v4l2_fpsSoftwareDecimation_expl": "Aby zaoszczędzić zasoby, tylko każda n-ta klatka będzie przetwarzana. Na przykład jeśli grabber jest ustawiony na 30 fps, a ta opcja jest ustawiona na 5, końcowy wynik wyniesie około 6 fps.",
"edt_conf_v4l2_fpsSoftwareDecimation_title": "Programowe pomijanie ramek",
"edt_conf_v4l2_framerate_expl": "Częstotliwość odświeżania obrazu aktywnego urządzenia (kl/s)",
"edt_conf_v4l2_framerate_title": "Klatki na sekundę",
"edt_conf_v4l2_greenSignalThreshold_expl": "Przyciemnia niskie wartości zielone (rozpoznawane jako czarne)",
"edt_conf_v4l2_greenSignalThreshold_title": "Próg sygnału zielonego",
"edt_conf_v4l2_hardware_brightness_expl": "Ustaw jasność sprzętowo",
"edt_conf_v4l2_hardware_brightness_title": "Sprzętowa kontrola jasności",
"edt_conf_v4l2_hardware_contrast_expl": "Ustaw kontrast sprzętowo",
"edt_conf_v4l2_hardware_contrast_title": "Sprzętowa kontrola kontrastu",
"edt_conf_v4l2_hardware_hue_expl": "Ustaw odcień sprzętowo",
"edt_conf_v4l2_hardware_hue_title": "Sprzętowa kontrola odcienia",
"edt_conf_v4l2_hardware_saturation_expl": "Sprzętowa kontrola nasycenia",
"edt_conf_v4l2_hardware_saturation_title": "Sprzętowa kontrola nasycenia",
"edt_conf_v4l2_hardware_set_defaults": "Domyślne elementy sterujące sprzętem",
"edt_conf_v4l2_hardware_set_defaults_tip": "Ustaw domyślne dla urządzenia wartości jasności, kontrastu, odcienia i nasycenia",
"edt_conf_v4l2_heading_title": "Przechwytywanie USB",
"edt_conf_v4l2_input_expl": "Wybierz wejście wideo swojego urządzenia. „Automatyczny” zachowuje wartość wybraną przez interfejs v4l2.",
"edt_conf_v4l2_input_title": "Wejście",
"edt_conf_v4l2_noSignalCounterThreshold_expl": "Liczba klatek (sprawdź to w aktualnym trybie FPS grabbera), po których nie jest wyzwalany żaden sygnał",
"edt_conf_v4l2_noSignalCounterThreshold_title": "Próg licznika sygnału",
"edt_conf_v4l2_redSignalThreshold_expl": "Przyciemnia niskie wartości czerwone (rozpoznawane jako czarne)",
"edt_conf_v4l2_redSignalThreshold_title": "Próg sygnału czerwonego",
"edt_conf_v4l2_resolution_expl": "Lista obsługiwanych rozdzielczości aktywnego urządzenia",
@ -426,14 +489,17 @@
"edt_conf_webc_sslport_expl": "Port serwera internetowego HTTPS",
"edt_conf_webc_sslport_title": "HTTPS Port",
"edt_dev_auth_key_title": "Token uwierzytelnienia",
"edt_dev_auth_key_title_info": "Aby uzyskać dostęp do urządzenia, wymagany jest token uwierzytelniający",
"edt_dev_enum_sub_min_cool_adjust": "Odejmij zimną biel",
"edt_dev_enum_sub_min_warm_adjust": "Odejmij ciepłą biel",
"edt_dev_enum_subtract_minimum": "Odejmij minimum",
"edt_dev_enum_white_off": "Wyłącz biały",
"edt_dev_general_colorOrder_title": "Kolejność bajtów RGB",
"edt_dev_general_colorOrder_title_info": "Kolejność kolorów urządzenia",
"edt_dev_general_hardwareLedCount_title": "Fizyczna liczba LED",
"edt_dev_general_hardwareLedCount_title_info": "Liczba fizycznych diod dostępnych dla danego urządzenia",
"edt_dev_general_heading_title": "Ustawienia główne",
"edt_dev_general_name_title": "Nazwa konfiguracji",
"edt_dev_general_name_title": "Nazwa konfiguracji:",
"edt_dev_general_rewriteTime_title": "Czas odświeżania",
"edt_dev_spec_FCledToOn_title": "Zanikanie LED aktywne",
"edt_dev_spec_FCmanualControl_title": "Ręczna kontrola zanikania LED",
@ -445,7 +511,9 @@
"edt_dev_spec_brightnessFactor_title": "Współczynnik jasności",
"edt_dev_spec_brightnessMax_title": "Maksymalna jasność",
"edt_dev_spec_brightnessMin_title": "Minimalna jasność",
"edt_dev_spec_brightnessOverwrite_title": "Nadpisz jasność",
"edt_dev_spec_brightnessThreshold_title": "Minimalna jasność wykrywania sygnału",
"edt_dev_spec_brightness_title": "Jasność",
"edt_dev_spec_chanperfixture_title": "Kanały na urządzenie",
"edt_dev_spec_cid_title": "CID",
"edt_dev_spec_clientKey_title": "Klucz klienta",
@ -453,9 +521,16 @@
"edt_dev_spec_debugLevel_title": "Poziom debugowania połączenia Streamera",
"edt_dev_spec_debugStreamer_title": "Streamer Debug",
"edt_dev_spec_delayAfterConnect_title": "Przerwa po połączeniu",
"edt_dev_spec_devices_discovered_none": "Nie wykryto żadnych urządzeń",
"edt_dev_spec_devices_discovered_title": "Wykryte urządzenia",
"edt_dev_spec_devices_discovered_title_info": "Wybierz wykryte urządzenie LED",
"edt_dev_spec_devices_discovered_title_info_custom": "Wybierz wykryte urządzenie LED lub skonfiguruj niestandardowe",
"edt_dev_spec_devices_discovery_inprogress": "Trwa wykrywanie",
"edt_dev_spec_dithering_title": "Rozpraszanie",
"edt_dev_spec_dmaNumber_title": "Kanał DMA",
"edt_dev_spec_gamma_title": "Gamma",
"edt_dev_spec_globalBrightnessControlMaxLevel_title": "Maksymalne napięcie",
"edt_dev_spec_globalBrightnessControlThreshold_title": "Adaptacyjny próg poboru prądu",
"edt_dev_spec_gpioBcm_title": "Pin GPIO",
"edt_dev_spec_gpioMap_title": "Mapowanie GPIO",
"edt_dev_spec_gpioNumber_title": "Numer GPIO",
@ -465,6 +540,7 @@
"edt_dev_spec_intervall_title": "Przedział",
"edt_dev_spec_invert_title": "Odwróć sygnał",
"edt_dev_spec_latchtime_title": "Czas zatrzaśnięcia",
"edt_dev_spec_latchtime_title_info": "Czas zatrzasku to przedział czasowy wymagany przez urządzenie do przetworzenia następnej aktualizacji. W tym czasie wszelkie aktualizacje są ignorowane.",
"edt_dev_spec_ledIndex_title": "Indeks LED",
"edt_dev_spec_ledType_title": "Typ LED",
"edt_dev_spec_lightid_itemtitle": "ID",
@ -489,6 +565,7 @@
"edt_dev_spec_printTimeStamp_title": "Dodaj znacznik czasu",
"edt_dev_spec_pwmChannel_title": "Kanał PWM",
"edt_dev_spec_restoreOriginalState_title": "Przywróć oryginalny stan świateł, gdy są wyłączone",
"edt_dev_spec_restoreOriginalState_title_info": "Przywróć pierwotny stan urządzenia, gdy jest ono wyłączone",
"edt_dev_spec_serial_title": "Numer seryjny",
"edt_dev_spec_spipath_title": "SPI path",
"edt_dev_spec_sslHSTimeoutMax_title": "Maksymalny limit czasu uzgadniania streamera",
@ -496,7 +573,9 @@
"edt_dev_spec_sslReadTimeout_title": "Limit czasu odczytu Streamera",
"edt_dev_spec_switchOffOnBlack_title": "Wyłącz na czarno",
"edt_dev_spec_switchOffOnbelowMinBrightness_title": "Wyłączanie poniżej minimum",
"edt_dev_spec_syncOverwrite_title": "Wyłącz synchronizację",
"edt_dev_spec_targetIpHost_title": "Docelowe IP/Nazwa hosta",
"edt_dev_spec_targetIpHost_title_info": "Nazwa hosta lub adres IP urządzenia",
"edt_dev_spec_targetIp_title": "Docelowe IP",
"edt_dev_spec_transeffect_title": "Efekt przejścia",
"edt_dev_spec_transistionTimeExtra_title": "Dodatkowa ciemność",
@ -556,13 +635,14 @@
"edt_eff_fadeouttime": "Czas wygaszania",
"edt_eff_flag_header": "Flagi",
"edt_eff_flag_header_desc": "Niech twoje diody świecą jasno w kolorach twojego kraju. Możesz wybrać więcej niż jedną flagę, a zmieniają się one w zależności od czasu przerwy.",
"edt_eff_fps": "Klatki na sekundę",
"edt_eff_fps": "Odświeżanie",
"edt_eff_frequency": "Częstotliwość",
"edt_eff_gif_header": "Gify",
"edt_eff_gif_header_desc": "Ten efekt odtwarza pliki .gif, zapewniając prosty efekt jak pętla wideo jako efekt.",
"edt_eff_height": "Wysokość",
"edt_eff_huechange": "Zmiana koloru",
"edt_eff_image": "Plik obrazu",
"edt_eff_initial_blink": "Rozbłysk dla lepszej uwagi",
"edt_eff_interval": "Intervał",
"edt_eff_knightrider_header": "Knight Rider (Nieustraszony)",
"edt_eff_knightrider_header_desc": "K.I.T.T powraca! Przedni skaner znanego samochodu, tym razem nie tylko w kolorze czerwonym.",
@ -674,7 +754,7 @@
"effectsconfigurator_label_intro": "Twórz nowe niestandardowe efekty (na podstawie wbudowanych), które możesz dostosować do swoich upodobań. Dostępne są różne opcje, takie jak kolor, prędkość i kierunek, w zależności od wybranego efektu podstawowego.",
"general_access_advanced": "Zaawansowany",
"general_access_default": "Standardowy (Domyślny)",
"general_access_expert": "Ekspert",
"general_access_expert": "Ekspercki",
"general_btn_back": "Wstecz",
"general_btn_cancel": "Anuluj",
"general_btn_continue": "Kontynuuj",
@ -686,6 +766,7 @@
"general_btn_off": "Wyłączony",
"general_btn_ok": "OK",
"general_btn_on": "Uruchomiony",
"general_btn_overwrite": "Nadpisz",
"general_btn_rename": "Zmień nazwe",
"general_btn_restarthyperion": "Zrestartuj Hyperion",
"general_btn_save": "Zapisz",
@ -699,35 +780,43 @@
"general_col_blue": "niebieski",
"general_col_green": "zielony",
"general_col_red": "czerwony",
"general_comp_BLACKBORDER": "Usuń czarne pasy",
"general_comp_BLACKBORDER": "Wykryw. czarnych pasków",
"general_comp_BOBLIGHTSERVER": "Serwer Boblight",
"general_comp_FLATBUFSERVER": "Serwer FlatBuffers",
"general_comp_FORWARDER": "Przekazyw. wejścia",
"general_comp_FORWARDER": "Przekierowanie",
"general_comp_GRABBER": "Przechwytyw. pulpitu",
"general_comp_LEDDEVICE": "Urządzenie LED",
"general_comp_PROTOSERVER": "Serwer protokołu buforowania",
"general_comp_SMOOTHING": "Wygładzanie animacji",
"general_comp_V4L": "Przechwytyw. USB",
"general_country_cn": "Chiny",
"general_country_de": "Niemcy (Germany)",
"general_country_es": "Hiszpania (Spain)",
"general_country_fr": "Francja (France)",
"general_country_it": "Włochy (Italy)",
"general_country_nl": "Holandia (Netherlands)",
"general_country_ru": "Rosja",
"general_country_uk": "Wielka Brytania (United Kingdom)",
"general_country_us": "Stany Zjednoczone (United States)",
"general_disabled": "wyłączony",
"general_enabled": "włączony",
"general_speech_cs": "Czeski (Czech)",
"general_speech_de": "Niemiecki (German)",
"general_speech_en": "Angielski (English)",
"general_speech_es": "Hiszpański (Spanish)",
"general_speech_fr": "Francuski (French)",
"general_speech_it": "Włoski (Italian)",
"general_speech_nl": "Holenderski (Dutch)",
"general_speech_pl": "Polski (Polish)",
"general_speech_nb": "Norweski (Norwegian)",
"general_speech_nl": "Niderlandzki (Nederlands)",
"general_speech_pl": "Polski (Artur Klimek)",
"general_speech_pt": "Portugalski (Portuguese)",
"general_speech_ro": "Rumuński (Romanian)",
"general_speech_ru": "Rosyjski (Russian)",
"general_speech_sv": "Szwedzki (Swedish)",
"general_speech_tr": "Turecki (Turkish)",
"general_speech_vi": "Wietnamski (Vietnamese)",
"general_webui_title": "Hyperion - Konfiguracja",
"general_speech_zh-CN": "Chiński uproszczony (Chinese simplified)",
"general_webui_title": "Hyperion - Panel konfiguracji",
"general_wiki_moreto": "Więcej informacji o \"$1\" dostępne jest na naszej Wikipedii",
"infoDialog_checklist_title": "Lista kontrolna!",
"infoDialog_effconf_created_text": "Efekt „$1” został utworzony pomyślnie!",
@ -740,6 +829,10 @@
"infoDialog_import_confirm_title": "Potwierdź importowanie",
"infoDialog_import_hyperror_text": "Wybrany plik konfiguracyjny „$1” nie może zostać zaimportowany. Nie jest kompatybilny z Hyperionem 2.0 i nowszym!",
"infoDialog_import_jsonerror_text": "Wybrany plik konfiguracyjny „$1” nie jest plikiem .json lub jest uszkodzony. Komunikat o błędzie: ($2)",
"infoDialog_password_current_text": "Aktualne hasło",
"infoDialog_password_minimum_length": "Hasła muszą mieć minimum 8 znaków.",
"infoDialog_password_new_text": "Nowe hasło",
"infoDialog_username_text": "Nazwa użytkownika",
"infoDialog_wizrgb_text": "Twoja kolejność bajtów RGB jest już poprawnie ustawiona.",
"infoDialog_writeconf_error_text": "Zapisanie konfiguracji nie powiodło się.",
"infoDialog_writeimage_error_text": "Wybrany plik „$1” nie jest plikiem obrazu lub jest uszkodzony! Wybierz inny plik obrazu.",
@ -759,6 +852,7 @@
"main_ledsim_btn_togglelednumber": "Pokaż indeks LED",
"main_ledsim_btn_toggleleds": "Pokaż wizualizację LED",
"main_ledsim_btn_togglelivevideo": "Obraz przechwycony",
"main_ledsim_btn_togglesigdetect": "Obszar wykrywania sygnału",
"main_ledsim_text": "Wizualizacja na żywo kolorów LED i opcjonalnie bieżący strumień wideo z urządzenia przechwytującego",
"main_ledsim_title": "Podgląd na żywo",
"main_menu_about_token": "Informacje o aplikacji",
@ -770,6 +864,7 @@
"main_menu_general_conf_token": "Podstawowe",
"main_menu_grabber_conf_token": "Przechwytywanie obrazu",
"main_menu_input_selection_token": "Wybór źródła",
"main_menu_instcapture_conf_token": "Źródła",
"main_menu_leds_conf_token": "Urządzenie LED",
"main_menu_logging_token": "Dziennik",
"main_menu_network_conf_token": "Usługi sieciowe",
@ -804,8 +899,10 @@
"remote_maptype_intro": "Zwykle układ diody jest odpowiedzialny za ustawienie rodzaju obrazu wyświetlanego na diodach, możesz to tutaj zmienić. $1.",
"remote_maptype_label": "Rodzaj mapowania",
"remote_maptype_label_multicolor_mean": "Kolorowy",
"remote_maptype_label_unicolor_mean": "Skala odcieni szarości",
"remote_maptype_label_unicolor_mean": "Mieszaj kolory do jednego koloru",
"remote_optgroup_syseffets": "Efekty standardowe",
"remote_optgroup_templates_custom": "Szablony użytkownika",
"remote_optgroup_templates_system": "Szablony systemowe",
"remote_optgroup_usreffets": "Efekty użytkownika",
"remote_videoMode_2D": "2D",
"remote_videoMode_3DSBS": "3DSBS",
@ -846,7 +943,7 @@
"wiz_atmoorb_intro1": "Ten kreator konfiguruje Hyperion dla AtmoOrbs. Funkcje obejmują automatyczne wykrywanie AtmoOrb, ustawianie każdego światła w określonej pozycji w obrazie lub wyłączanie go i automatyczne dostrajanie ustawień Hyperion! Krótko mówiąc: wystarczy kilka kliknięć i gotowe!",
"wiz_atmoorb_title": "Kreator AtmoOrb",
"wiz_cc_adjustgamma": "Gamma: Musisz dostosować poziomy gamma każdego kanału, aż uzyskasz taką samą postrzeganą ilość dla każdego kanału. Wskazówka: Neutralny to 1.0! Na przykład, jeśli twoja szarość jest nieco czerwonawa, oznacza to, że musisz zwiększyć czerwoną gamma, aby zmniejszyć ilość czerwieni (im więcej gamma, tym mniej koloru).",
"wiz_cc_adjustit": "Dostosuj swoje „$1”, aż będziesz z niego zadowolony. Zwróć uwagę: Im więcej zmienisz od wartości domyślnej, tym bardziej zmniejszy się dostępne spektrum kolorów (wpływa to również na kolory pomiędzy). W zależności od spektrum kolorów telewizora / LED wyniki mogą się różnić.",
"wiz_cc_adjustit": "Dostosuj swoje „$1”, aż będziesz z niego zadowolony. Zwróć uwagę: Im więcej zmienisz od wartości domyślnej, tym bardziej zmniejszy się dostępne spektrum kolorów (wpływa to również na kolory pomiędzy). W zależności od spektrum kolorów telewizora/LED wyniki mogą się różnić.",
"wiz_cc_backlight": "Dodatkowo możesz zdefiniować podświetlenie, aby uporządkować „złe kolory” w prawie ciemnych obszarach lub jeśli nie lubisz przełączać między kolorem a wyłączaniem podczas oglądania. Możesz również zdefiniować konkretny kolor, który będzie używany jako podświetlenie. Jest to wyłączone w stanach „Wył.”, „Kolor” i „Efekt”.",
"wiz_cc_btn_stop": "Zatrzymaj wideo",
"wiz_cc_btn_switchpic": "Zmień zdjęcie",
@ -867,6 +964,10 @@
"wiz_cc_testintrok": "Kliknij przycisk poniżej, aby rozpocząć testowe wideo.",
"wiz_cc_testintrowok": "Sprawdź poniższy link, aby pobrać filmy testowe:",
"wiz_cc_title": "Kreator kalibracji kolorów",
"wiz_cololight_desc2": "Teraz wybierz, który \"Cololight\" chcesz dodać. Aby zidentyfikować pojedyncze światła, naciśnij przycisk po prawej stronie.",
"wiz_cololight_intro1": "Ten kreator konfiguruje Hyperion dla systemu Cololight. Funkcje to automatyczne wykrywanie Cololight i automatyczne dostrajanie ustawień Hyperiona! W skrócie: wystarczy kilka kliknięć i gotowe! <br /> Uwaga: w przypadku Cololight Strip może być konieczne ręczne skorygowanie liczby i układu diod LED.",
"wiz_cololight_noprops": "Nie można pobrać konfiguracji urządzenia - ręcznie zdefiniuj liczbę diod LED sprzętu",
"wiz_cololight_title": "Kreator Cololight",
"wiz_guideyou": "$1 poprowadzi Cię przez konfigurację. Wystarczy nacisnąć przycisk!",
"wiz_hue_blinkblue": "ID $1 świeci na niebiesko",
"wiz_hue_clientkey": "Klucz klienta:",
@ -897,9 +998,11 @@
"wiz_hue_title": "Kreator Philips Hue",
"wiz_hue_username": "ID użytkownika:",
"wiz_identify": "Zidentyfikuj",
"wiz_identify_light": "Zidentyfikuj 1 $",
"wiz_identify_light": "Identyfikuj $1",
"wiz_identify_tip": "Zidentyfikuj skonfigurowane urządzenie, zapalając je",
"wiz_ids_disabled": "Dezaktywowane",
"wiz_ids_entire": "Cały obraz",
"wiz_noLights": "Nie znaleziono $1! Podłącz światła do sieci lub skonfiguruj je ręcznie.",
"wiz_pos": "Pozycja/Stan",
"wiz_rgb_expl": "Kolorowa kropka będzie zmieniać kolor (czerwony, zielony) co x sekund, jednocześnie diody LED przełączają się na ten kolor. Odpowiedz na pytania u dołu, aby sprawdzić / poprawić kolejność bajtów.",
"wiz_rgb_intro1": "Ten kreator poprowadzi Cię przez proces znajdowania właściwej kolejności kolorów dla diod LED. Kliknij, aby kontynuować.",

View File

@ -0,0 +1,967 @@
{
"InfoDialog_access_text": "Dependendo do nível de configuração, você pode ajustar mais opções ou obter acesso a mais recursos. Recomendado é o nível \"Padrão\".",
"InfoDialog_access_title": "Nível de configurações",
"InfoDialog_changePassword_success": "Senha salva com sucesso!",
"InfoDialog_changePassword_title": "Alterar a senha",
"InfoDialog_iswitch_text": "Se você executar o Hyperion mais de uma vez em sua rede local, poderá alternar entre as configurações da web. Selecione a instância do Hyperion abaixo e mude!",
"InfoDialog_iswitch_title": "Switcher Hyperion",
"InfoDialog_nowrite_foottext": "O WebUI será desbloqueado automaticamente depois que você resolver o problema!",
"InfoDialog_nowrite_text": "O Hyperion não pode gravar em seu arquivo de configuração carregado atualmente. Repare as permissões do arquivo para continuar.",
"InfoDialog_nowrite_title": "erro de permissão de gravação!",
"about_3rd_party_licenses": "Licenças de terceiros",
"about_3rd_party_licenses_error": "Tivemos problemas para coletar informações de licenças de terceiros na web. <br /> Por favor, siga este link para o recurso GitHub.",
"about_build": "Build",
"about_builddate": "Data da Build",
"about_contribute": "Desenvolva ainda mais o Hyperion conosco!",
"about_credits": "Créditos a todos esses desenvolvedores!",
"about_resources": "$1 bibliotecas",
"about_translations": "Traduções",
"about_version": "Versão",
"conf_colors_blackborder_intro": "Ignore as barras pretas onde quer que estejam. Cada modo usa outro algoritmo de detecção que é ajustado para situações especiais. Aumente o limite se não funcionar para você.",
"conf_colors_color_intro": "Crie um ou mais perfis de calibração, ajuste cada cor, brilho, linearização e muito mais.",
"conf_colors_smoothing_intro": "A suavização nivela as alterações de cor / brilho para reduzir a distração irritante.",
"conf_effect_bgeff_intro": "Defina a cor/efeito de fundo, que é exibida quando o Hyperion esta \"ocioso\". Sempre começa com o canal prioritário 255.",
"conf_effect_fgeff_intro": "Defina um efeito ou cor de inicialização, que será mostrado durante a inicialização do Hyperion pelo tempo determinado.",
"conf_effect_path_intro": "Carregue efeitos a partir dos caminhos definidos. Adicionalmente, você pode desabilitar efeitos individuais pelo nome, para escondê-los da lista de efeitos.",
"conf_general_createInst_btn": "Criar Instância",
"conf_general_impexp_expbtn": "Exportar",
"conf_general_impexp_impbtn": "Importar",
"conf_general_impexp_l1": "Importe uma configuração selecionando abaixo um arquivo de configuração e clicando em \"Importar\".",
"conf_general_impexp_l2": "Exporte um arquivo de configuração clicando em \"Exportar\". Seu navegador irá iniciar um download.",
"conf_general_impexp_title": "Configurações de Importação/Exportação",
"conf_general_inst_actionhead": "Ação",
"conf_general_inst_delreq_h": "Excluir instância de hardware de LED",
"conf_general_inst_delreq_t": "Tem certeza de que deseja excluir a instância \"$1\"? Todas as configurações serão excluídas também.",
"conf_general_inst_desc": "Use múltiplos dispositivos de LED ao mesmo tempo. Cada instância é executada independente uma da outra, o que permite diferentes layouts de LED e configurações de calibração. As instâncias em execução estão disponíveis na barra de ícones superior",
"conf_general_inst_name_title": "Nome da nova instância",
"conf_general_inst_namehead": "Nome da instância",
"conf_general_inst_renreq_t": "Insira um novo nome para sua instância no campo abaixo.",
"conf_general_inst_title": "Gerenciamento de instância de hardware LED",
"conf_general_intro": "Configurações básicas do Hyperion e da WebUI que não se encaixam em outra categoria.",
"conf_general_label_title": "Configurações gerais",
"conf_grabber_fg_intro": "A captura da plataforma é a captura do seu sistema local como fonte de entrada em que o Hyperion está instalado.",
"conf_grabber_v4l_intro": "Captura USB é um dispositivo (de captura) conectado via USB que é usado para inserir imagens de origem para processamento.",
"conf_helptable_expl": "Explicação",
"conf_helptable_option": "Opção",
"conf_leds_config_error": "Erro na configuração do layout LED / LED",
"conf_leds_config_warning": "Verifique sua configuração de layout de LED / LED",
"conf_leds_contr_label_contrtype": "Tipo de controlador:",
"conf_leds_device_info_log": "Caso seus LEDs não funcionem, verifique aqui se há erros:",
"conf_leds_device_intro": "Hyperion suporta vários controladores para transmitir sinal para o seu dispositivo. Selecione o contolador de LED da lista e configure. Nós escolhemos as melhores configurações padrão para cada dispositivo.",
"conf_leds_error_hwled_gt_layout": "A contagem de LEDs do hardware ($1) é maior do que os LEDs configurados via layout ($2),<br>$3 {{plural:$3|LED|LEDs}} permanecerá preto se você continuar.",
"conf_leds_error_hwled_lt_layout": "A contagem de LEDs do hardware ($1) é menor do que os LEDs configurados por layout ($2).<br>O número de LEDs configurados no layout não deve exceder os LEDs disponíveis",
"conf_leds_layout_advanced": "Configurações Avançadas",
"conf_leds_layout_blacklist_num_title": "Número de LEDs",
"conf_leds_layout_blacklist_rule_title": "Regra da lista negra",
"conf_leds_layout_blacklist_rules_title": "Regras da lista negra",
"conf_leds_layout_blacklist_start_title": "LED de início",
"conf_leds_layout_blacklistleds_title": "LEDs da lista negra",
"conf_leds_layout_btn_checklist": "Mostrar checklist",
"conf_leds_layout_button_savelay": "Salvar layout",
"conf_leds_layout_button_updsim": "Atualizar pre-visualização",
"conf_leds_layout_checkp1": "O led preto é sempre o seu primeiro led, o primeiro led é o ponto onde o fio de sinal(dados) começa.",
"conf_leds_layout_checkp2": "O layout é sempre em relação a frente da sua TV, nunca da traseira.",
"conf_leds_layout_checkp3": "Certifique-se que a direção está certa. Os LEDs cinzas representam os LEDs 2 e 3 para visualizar a direção dos dados.",
"conf_leds_layout_checkp4": "Espaço sem LED: Para criar um espaço, primeiro defina a quantidade de leds que estão no Topo / Base / Esquerda / Direita e depois defina o comprimento do espaço para remover a quantidade desejada de leds. Modifique a posição da lacuna até que corresponda.\n",
"conf_leds_layout_cl_bottom": "Base",
"conf_leds_layout_cl_bottomleft": "Base Esquerda (Canto)",
"conf_leds_layout_cl_bottomright": "Base Direita (Canto)",
"conf_leds_layout_cl_cornergap": "Espaçamento Canto",
"conf_leds_layout_cl_edgegap": "Espaçamento Borda",
"conf_leds_layout_cl_gaglength": "Comprimento da lacuna",
"conf_leds_layout_cl_gappos": "Posição da lacuna",
"conf_leds_layout_cl_hleddepth": "Profundidade de LED horizontal",
"conf_leds_layout_cl_inppos": "Posição entrada do sinal",
"conf_leds_layout_cl_left": "Esquerda",
"conf_leds_layout_cl_leftbottom": "Esquerda 50% - 100% Base",
"conf_leds_layout_cl_leftmiddle": "Esquerda 25% - 75% Meio",
"conf_leds_layout_cl_lefttop": "Esquerda 0% - 50% Topo",
"conf_leds_layout_cl_overlap": "Sobreposição",
"conf_leds_layout_cl_reversdir": "Inverter direção",
"conf_leds_layout_cl_right": "Direita",
"conf_leds_layout_cl_rightbottom": "Direita 50% - 100% Base",
"conf_leds_layout_cl_rightmiddle": "Direita 25% - 75% Meio",
"conf_leds_layout_cl_righttop": "Direita 0% - 50% Topo",
"conf_leds_layout_cl_top": "Topo",
"conf_leds_layout_cl_topleft": "Topo Esquerdo (Canto)",
"conf_leds_layout_cl_topright": "Topo Direito (Canto)",
"conf_leds_layout_cl_vleddepth": "Profundidade de LED vertical",
"conf_leds_layout_frame": "Layout Clássico (MOLDURA LED)",
"conf_leds_layout_generatedconf": "Configuração de LED gerado / atual",
"conf_leds_layout_intro": "Você tambem precisa do layout dos leds, que refere a posição dos leds. O layout clássico que é usado geralmente é a moldura de tv, mas também suportamos a criação de matriz de leds (paredes de leds). A vista desse layout é sempre da FRENTE da tv.",
"conf_leds_layout_ma_cabling": "Cabeamento",
"conf_leds_layout_ma_horiz": "Horizontal",
"conf_leds_layout_ma_optbottomleft": "Base esquerda",
"conf_leds_layout_ma_optbottomright": "Base direita",
"conf_leds_layout_ma_opthoriz": "Horizontal",
"conf_leds_layout_ma_optparallel": "Paralelo",
"conf_leds_layout_ma_optsnake": "Cobra",
"conf_leds_layout_ma_opttopleft": "Topo Esquerdo",
"conf_leds_layout_ma_opttopright": "Topo Direito",
"conf_leds_layout_ma_optvert": "Vertical",
"conf_leds_layout_ma_order": "Ordem",
"conf_leds_layout_ma_position": "Entrada",
"conf_leds_layout_ma_vert": "Vertical",
"conf_leds_layout_matrix": "Layout matriz (PAREDE DE LED)",
"conf_leds_layout_pbl": "Ponto Base Esquerda",
"conf_leds_layout_pbr": "Ponto Base Direita",
"conf_leds_layout_peview": "Prévia do layout do LED",
"conf_leds_layout_preview_l1": "Esse é o seu primeiro LED (entrada/início)",
"conf_leds_layout_preview_l2": "Isso mostra a direção do efeito (segundo/terceiro led)",
"conf_leds_layout_preview_ledpower": "Máx. consumo de energia: $1 A",
"conf_leds_layout_preview_originCL": "Criado de: Layout Clássico (PAREDE DE LED)",
"conf_leds_layout_preview_originMA": "Criado de: Layout Matriz (PAREDE DE LED)",
"conf_leds_layout_preview_originTEXT": "Criado a partir de: Textfield",
"conf_leds_layout_preview_totalleds": "Total de LEDs: $1",
"conf_leds_layout_ptl": "Ponto Topo Esquerdo",
"conf_leds_layout_ptlh": "Horizontal",
"conf_leds_layout_ptln": "Pontos Triplos",
"conf_leds_layout_ptlv": "Vertical",
"conf_leds_layout_ptr": "Ponto Topo Direito",
"conf_leds_layout_textf1": "Este campo de texto mostra por padrão seu layout carregado atual e será sobrescrito se você gerar um novo com as opções acima. Opcional, você pode realizar outras edições.",
"conf_leds_nav_label_ledcontroller": "Controlador LED",
"conf_leds_nav_label_ledlayout": "Posicionamento LED",
"conf_leds_note_layout_overwrite": "Nota: Sobrescrever cria um layout padrão para {{plural:$1| $1 LED | todos os $1 LEDs}} fornecidos pela contagem de LED do hardware",
"conf_leds_optgroup_RPiGPIO": "RPi CPIO",
"conf_leds_optgroup_RPiPWM": "RPi PWM",
"conf_leds_optgroup_RPiSPI": "RPi SPI",
"conf_leds_optgroup_network": "Rede",
"conf_leds_optgroup_other": "Outro",
"conf_leds_optgroup_usb": "USB/Serial",
"conf_logging_btn_autoscroll": "Rolagem automática",
"conf_logging_btn_pbupload": "Faça upload de um relatório para solicitações de suporte",
"conf_logging_contpolicy": "Política de Privacidade do Relatório",
"conf_logging_label_intro": "Área para verificar as mensagens de log, você verá mais ou menos informações dependendo do nível de log definido.",
"conf_logging_lastreports": "Relatórios anteriores",
"conf_logging_logoutput": "Saída de log",
"conf_logging_nomessage": "Nenhuma mensagem de log disponível.",
"conf_logging_report": "Relatório",
"conf_logging_uplfailed": "Falha no envio! Por favor, cheque sua conexão com a internet!",
"conf_logging_uploading": "Prepare os dados ...",
"conf_logging_uplpolicy": "Ao clicar nesse botão você aceita",
"conf_logging_yourlink": "Link para o seu relatório",
"conf_network_bobl_intro": "Receptor para Boblight",
"conf_network_createToken_btn": "Criar Token",
"conf_network_fbs_intro": "Receptor Google Flatbuffers. Usado para transmissão rápida de imagens.",
"conf_network_forw_intro": "Encaminhe todas as entradas para uma segunda instância do Hyperion que pode ser conduzida com outro controlador de led",
"conf_network_json_intro": "O JSON-RPC-Port de todas as instâncias do Hyperion, usado para controle remoto.",
"conf_network_net_intro": "Configurações relacionadas à rede que são aplicadas a todos os serviços de rede.",
"conf_network_proto_intro": "A porta PROTO de todas as instâncias do Hyperion, usada para fluxos de imagem (HyperionScreenCap, Kodi Addon, Android Hyperion Grabber, ...)",
"conf_network_tok_cidhead": "Descrição",
"conf_network_tok_comment_title": "Descrição do Token",
"conf_network_tok_desc": "Os tokens concedem a outros aplicativos acesso à API do Hyperion, um aplicativo pode solicitar um token onde você precisa aceitá-lo ou você mesmo pode criá-lo abaixo. Esses tokens são necessários apenas quando a \"Autorização de API\" está ativada nas configurações de rede.",
"conf_network_tok_diaMsg": "Aqui está seu novo token, que pode ser usado para conceder a um aplicativo acesso à API do Hyperion. Por razões de segurança, você não pode visualizá-lo novamente, então use / anote.",
"conf_network_tok_diaTitle": "Novo Token Criado!",
"conf_network_tok_grantMsg": "Um aplicativo solicitou um token para obter acesso à API Hyperion. Você quer conceder acesso? Por favor, verifique as informações fornecidas!",
"conf_network_tok_grantT": "Token de solicitações de aplicativos",
"conf_network_tok_intro": "Aqui você pode criar e excluir tokens para autenticação de API. Os tokens criados serão exibidos apenas uma vez.",
"conf_network_tok_lastuse": "Último uso",
"conf_network_tok_title": "Gestão de Token",
"conf_webconfig_label_intro": "Definições de configuração da Web. Edite com sabedoria.",
"dashboard_active_instance": "Instância selecionada",
"dashboard_alert_message_confedit": "Sua configuração do Hyperion foi modificada. Para aplicar, reinicie o Hyperion.",
"dashboard_alert_message_confedit_t": "Configuração modificada",
"dashboard_alert_message_confsave_success": "Sua configuração do Hyperion foi salva com sucesso. Suas mudanças estão ativas.",
"dashboard_alert_message_confsave_success_t": "Configuração salva",
"dashboard_alert_message_disabled": "Essa instância está atualmente desabilitada! Para usá-la novamente, habilite-a na dashboard.",
"dashboard_alert_message_disabled_t": "Instância de hardware LED desabilitada",
"dashboard_componentbox_label_comp": "Componente",
"dashboard_componentbox_label_status": "Estado",
"dashboard_componentbox_label_title": "Estado dos componentes:",
"dashboard_infobox_label_currenthyp": "Sua versão do Hyperion:",
"dashboard_infobox_label_disableh": "Desabilitar instância: $1",
"dashboard_infobox_label_enableh": "Habilitar instância: $1",
"dashboard_infobox_label_instance": "Instância:",
"dashboard_infobox_label_latesthyp": "Última versão do Hyperion:",
"dashboard_infobox_label_platform": "Plataforma:",
"dashboard_infobox_label_ports": "Portas",
"dashboard_infobox_label_smartacc": "Acesso inteligente",
"dashboard_infobox_label_statush": "Estado do Hyperion:",
"dashboard_infobox_label_title": "Informação",
"dashboard_infobox_label_watchedversionbranch": "Branch da versão assistida:",
"dashboard_infobox_message_updatesuccess": "Você está rodando a versão mais recente do Hyperion.",
"dashboard_infobox_message_updatewarning": "Uma nova versão do Hyperion está disponível! ($1)",
"dashboard_label_intro": "O dashboard dá uma visão geral sobre o estado do Hyperion.",
"dashboard_message_default_password": "A senha padrão para o WebUi está definida. É altamente recomendável mudar isso.",
"dashboard_message_default_password_t": "A senha padrão do WebUI está definida",
"dashboard_message_do_not_show_again": "Não mostrar esta mensagem novamente",
"dashboard_message_global_setting": "As configurações nesta página não dependem de uma instância específica. As alterações serão armazenadas globalmente para todas as instâncias.",
"dashboard_message_global_setting_t": "Configuração independente de instância",
"dashboard_newsbox_label_title": "Blog do Hyperion",
"dashboard_newsbox_noconn": "Não é possível conectar-se ao servidor do Hyperion para pegar os últimos posts. Sua conexão com a internet está funcionando?",
"dashboard_newsbox_readmore": "Leia mais",
"dashboard_newsbox_visitblog": "Visite o Blog do Hyperion",
"edt_append_degree": "°",
"edt_append_hz": "hz",
"edt_append_leds": "LEDS",
"edt_append_ms": "ms",
"edt_append_ns": "ns",
"edt_append_percent": "%",
"edt_append_percent_h": "% hori",
"edt_append_percent_v": "% vert",
"edt_append_pixel": "Pixel",
"edt_append_s": "s",
"edt_append_sdegree": "s/grau",
"edt_conf_bb_blurRemoveCnt_expl": "Número de pixels que são removidos da borda detectada para eliminar o desfoque.",
"edt_conf_bb_blurRemoveCnt_title": "Desfocar Pixel",
"edt_conf_bb_borderFrameCnt_expl": "Número de quadros antes que uma borda detectada consistente seja definida.",
"edt_conf_bb_borderFrameCnt_title": "Molduras de borda",
"edt_conf_bb_heading_title": "Detector Barras Pretas",
"edt_conf_bb_maxInconsistentCnt_expl": "Número de quadros inconsistentes que são ignorados antes que uma nova borda tenha a chance de comprovar a consistência.",
"edt_conf_bb_maxInconsistentCnt_title": "Frames inconsistentes",
"edt_conf_bb_mode_expl": "Algoritmo para processamento. (veja Wiki)",
"edt_conf_bb_mode_title": "Modo",
"edt_conf_bb_threshold_expl": "Se a detecção não funcionar, aumente o limite para ajustar o preto 'acinzentado'",
"edt_conf_bb_threshold_title": "Limite",
"edt_conf_bb_unknownFrameCnt_expl": "Número de quadros sem nenhuma detecção antes de a borda ser definida como 0.",
"edt_conf_bb_unknownFrameCnt_title": "Quadros desconhecidos",
"edt_conf_bge_heading_title": "Efeito / cor de fundo",
"edt_conf_bobls_heading_title": "Servidor Boblight",
"edt_conf_color_backlightColored_expl": "Adicione um pouco de cor à sua luz de fundo.",
"edt_conf_color_backlightColored_title": "Luz de fundo colorida",
"edt_conf_color_backlightThreshold_expl": "A quantidade mínima de brilho (luz de fundo). Desativado durante efeitos, cores e no status \"Desligado\"",
"edt_conf_color_backlightThreshold_title": "Limite de luz de fundo",
"edt_conf_color_black_expl": "O valor de preto calibrado.",
"edt_conf_color_black_title": "Preto",
"edt_conf_color_blue_expl": "O valor de azul calibrado.",
"edt_conf_color_blue_title": "Azul",
"edt_conf_color_brightnessComp_expl": "Compensa as diferenças de brilho entre o azul, verde vermelho, amarelo magenta ciano e branco. 100 significa compensação total, 0 sem compensação",
"edt_conf_color_brightnessComp_title": "Compensação de brilho",
"edt_conf_color_brightness_expl": "definir o brilho geral dos LEDs",
"edt_conf_color_brightness_title": "Brilho",
"edt_conf_color_channelAdjustment_header_expl": "Crie perfis de cores que podem ser atribuídos a um componente específico. Ajuste a cor, gama, brilho, compensação e muito mais.",
"edt_conf_color_channelAdjustment_header_itemtitle": "Perfil",
"edt_conf_color_channelAdjustment_header_title": "Ajustes de canal de cor",
"edt_conf_color_cyan_expl": "O valor de ciano calibrado.",
"edt_conf_color_cyan_title": "Ciano",
"edt_conf_color_gammaBlue_expl": "A gama de azul. 1.0 é neutro. Acima de 1.0 ele reduz o azul, abaixo de 1.0 ele adiciona o azul.",
"edt_conf_color_gammaBlue_title": "Gama Azul",
"edt_conf_color_gammaGreen_expl": "A gama de verde. 1.0 é neutro. Acima de 1.0 ele reduz o verde, abaixo de 1.0 ele adiciona verde.",
"edt_conf_color_gammaGreen_title": "Gama Verde",
"edt_conf_color_gammaRed_expl": "A gama de vermelho. 1.0 é neutro. Acima de 1,0, reduz o vermelho, abaixo de 1,0, ele adiciona vermelho.",
"edt_conf_color_gammaRed_title": "Gama Vermelho",
"edt_conf_color_green_expl": "O valor verde calibrado.",
"edt_conf_color_green_title": "Verde",
"edt_conf_color_heading_title": "Calibração de Cor",
"edt_conf_color_id_expl": "Nome dado pelo usuário",
"edt_conf_color_id_title": "ID",
"edt_conf_color_imageToLedMappingType_expl": "Substitui a atribuição da área de led do seu layout de led se não for \"multicolor\"",
"edt_conf_color_imageToLedMappingType_title": "Atribuição de área de led",
"edt_conf_color_leds_expl": "Atribua este ajuste a todos os LEDs (*) ou apenas a alguns (0-24).",
"edt_conf_color_leds_title": "Índice de LED",
"edt_conf_color_magenta_expl": "O valor de magenta calibrado.",
"edt_conf_color_magenta_title": "Magenta",
"edt_conf_color_red_expl": "O valor de vermelho calibrado.",
"edt_conf_color_red_title": "Vermelho",
"edt_conf_color_white_expl": "O valor de branco calibrado.",
"edt_conf_color_white_title": "Branco",
"edt_conf_color_yellow_expl": "O valor de amarelo calibrado.",
"edt_conf_color_yellow_title": "Amarelo",
"edt_conf_effp_disable_expl": "Adicione nomes de efeitos aqui para desabilitá-los / ocultá-los de todas as listas de efeitos.",
"edt_conf_effp_disable_itemtitle": "Efeito",
"edt_conf_effp_disable_title": "Efeitos Desativados",
"edt_conf_effp_heading_title": "Caminhos do efeito",
"edt_conf_effp_paths_expl": "Você pode definir mais pastas que contêm efeitos. O configurador de efeitos sempre salvará dentro da primeira pasta.",
"edt_conf_effp_paths_itemtitle": "Caminho",
"edt_conf_effp_paths_title": "Caminho (s) do efeito",
"edt_conf_enum_NO_CHANGE": "Automático",
"edt_conf_enum_NTSC": "NTSC",
"edt_conf_enum_PAL": "PAL",
"edt_conf_enum_SECAM": "SECAM",
"edt_conf_enum_automatic": "Automatico",
"edt_conf_enum_bbclassic": "Clássico",
"edt_conf_enum_bbdefault": "Padrão",
"edt_conf_enum_bbletterbox": "Letterbox",
"edt_conf_enum_bbosd": "OSD",
"edt_conf_enum_bgr": "BGR",
"edt_conf_enum_bottom_up": "Debaixo para cima",
"edt_conf_enum_brg": "BRG",
"edt_conf_enum_color": "Cor",
"edt_conf_enum_custom": "Personalizado",
"edt_conf_enum_decay": "Decaimento",
"edt_conf_enum_dl_error": "Erro",
"edt_conf_enum_dl_informational": "Informativo",
"edt_conf_enum_dl_nodebug": "Sem saída de depuração",
"edt_conf_enum_dl_statechange": "Mudança de estado",
"edt_conf_enum_dl_verbose": "Modo Texto",
"edt_conf_enum_dl_verbose1": "Modo de texto 1",
"edt_conf_enum_dl_verbose2": "Modo de texto 2",
"edt_conf_enum_dl_verbose3": "Moto de texto 3",
"edt_conf_enum_effect": "Efeito",
"edt_conf_enum_gbr": "GBR",
"edt_conf_enum_grb": "GRB",
"edt_conf_enum_hsv": "HSV",
"edt_conf_enum_left_right": "Da esquerda para a direita",
"edt_conf_enum_linear": "Linear",
"edt_conf_enum_logdebug": "Debug",
"edt_conf_enum_logsilent": "Silêncioso",
"edt_conf_enum_logverbose": "Modo Texto",
"edt_conf_enum_logwarn": "Aviso",
"edt_conf_enum_multicolor_mean": "Multicolorido",
"edt_conf_enum_please_select": "Selecione por favor",
"edt_conf_enum_rbg": "RBG",
"edt_conf_enum_rgb": "RGB",
"edt_conf_enum_right_left": "Da direita para a esquerda",
"edt_conf_enum_top_down": "De cima para baixo",
"edt_conf_enum_transeffect_smooth": "Suavização",
"edt_conf_enum_transeffect_sudden": "De repente",
"edt_conf_enum_unicolor_mean": "Unicolor",
"edt_conf_fbs_heading_title": "Servidor Flatbuffers",
"edt_conf_fbs_timeout_expl": "Se nenhum dado for recebido para o período determinado, o componente será desabilitado (soft).",
"edt_conf_fbs_timeout_title": "Tempo esgotado",
"edt_conf_fg_display_expl": "Selecione qual área de trabalho deve ser capturada (configuração de vários monitores)",
"edt_conf_fg_display_title": "Exibição",
"edt_conf_fg_frequency_Hz_expl": "Com que rapidez novas fotos são capturadas",
"edt_conf_fg_frequency_Hz_title": "Frequência de captura Hz",
"edt_conf_fg_heading_title": "Captura de plataforma",
"edt_conf_fg_height_expl": "Reduza a imagem a essa altura, pois a imagem bruta precisa de muito tempo de CPU.",
"edt_conf_fg_height_title": "Altura",
"edt_conf_fg_pixelDecimation_expl": "Reduza o tamanho da imagem (fator) com base no tamanho original. Um fator de 1 significa nenhuma mudança",
"edt_conf_fg_pixelDecimation_title": "Decimação de imagem",
"edt_conf_fg_type_expl": "Tipo de captura de plataforma, o padrão é 'automático'",
"edt_conf_fg_type_title": "Tipo",
"edt_conf_fg_width_expl": "Reduza a imagem para essa largura, pois a imagem bruta precisa de muito tempo de CPU.",
"edt_conf_fg_width_title": "Largura",
"edt_conf_fge_color_expl": "Se o tipo for \"Cor\", defina uma cor de sua escolha aqui.",
"edt_conf_fge_color_title": "Cor",
"edt_conf_fge_duration_ms_expl": "Duração do efeito / cor durante a inicialização do Hyperion.",
"edt_conf_fge_duration_ms_title": "Duração",
"edt_conf_fge_effect_expl": "Se o tipo for \"Efeito\", selecione um efeito de sua escolha (incluindo efeitos criados pelo você).",
"edt_conf_fge_effect_title": "Efeito",
"edt_conf_fge_heading_title": "Efeito / cor de Boot",
"edt_conf_fge_type_expl": "Escolha entre uma cor ou efeito.",
"edt_conf_fge_type_title": "Tipo",
"edt_conf_fw_flat_expl": "Um alvo flatbuffer por linha. Contém IP: PORTA (Exemplo: 127.0.0.1:19401)",
"edt_conf_fw_flat_itemtitle": "alvo flatbuffer",
"edt_conf_fw_flat_title": "Lista de alvos flatbuffer",
"edt_conf_fw_heading_title": "Despachante",
"edt_conf_fw_json_expl": "Um alvo json por linha. Contém IP: PORT (Exemplo: 127.0.0.1:19446)",
"edt_conf_fw_json_itemtitle": "Alvo Json",
"edt_conf_fw_json_title": "Lista de alvos json",
"edt_conf_gen_configVersion_title": "Versão de Configuração",
"edt_conf_gen_heading_title": "Configurações Gerais",
"edt_conf_gen_name_expl": "Um nome definido pelo usuário que é usado para detectar o Hyperion. (Útil com mais de uma instância do Hyperion)",
"edt_conf_gen_name_title": "Nome da configuração",
"edt_conf_gen_showOptHelp_expl": "Mostre todas as explicações disponíveis em cada seção. Altamente recomendado para iniciantes!",
"edt_conf_gen_showOptHelp_title": "Mostrar explicações",
"edt_conf_gen_watchedVersionBranch_expl": "Seleciona qual versão do Branch deve ser usada para pesquisar novas versões do Hyperion.",
"edt_conf_gen_watchedVersionBranch_title": "Branch da versão assistida",
"edt_conf_general_enable_expl": "Se marcado, o componente é habilitado.",
"edt_conf_general_enable_title": "Ativar",
"edt_conf_general_port_expl": "A porta está em uso.",
"edt_conf_general_port_title": "Porta",
"edt_conf_general_priority_expl": "A prioridade deste componente",
"edt_conf_general_priority_title": "Canal prioritário",
"edt_conf_instC_systemEnable_expl": "Ativa a captura da plataforma para esta instância de hardware",
"edt_conf_instC_systemEnable_title": "Habilitar captura de plataforma",
"edt_conf_instC_v4lEnable_expl": "Ativa a captura USB para esta instância de hardware",
"edt_conf_instC_v4lEnable_title": "Ativa captura USB",
"edt_conf_instCapture_heading_title": "Captura de Instância",
"edt_conf_js_heading_title": "Servidor JSON",
"edt_conf_log_heading_title": "Registro",
"edt_conf_log_level_expl": "Dependendo do nível de log, você verá menos ou mais mensagens em seu log.",
"edt_conf_log_level_title": "Log-Level",
"edt_conf_net_apiAuth_expl": "Force todos os aplicativos que usam a API Hyperion para se autenticar no Hyperion (Exceção, consulte \"Autenticação API local\"). Maior segurança, pois você controla o acesso e o revoga a qualquer momento.",
"edt_conf_net_apiAuth_title": "Autenticação API",
"edt_conf_net_heading_title": "Rede",
"edt_conf_net_internetAccessAPI_expl": "Permita o acesso ao Hyperion API / Interface Web da Internet, desative para maior segurança.",
"edt_conf_net_internetAccessAPI_title": "Acesso à Internet API",
"edt_conf_net_ipWhitelist_expl": "Você pode colocar endereços IP na lista de permissões, em vez de permitir que todas as conexões da Internet se conectem à API / interface da Web do Hyperion.",
"edt_conf_net_ipWhitelist_title": "IPs na lista branca",
"edt_conf_net_ip_itemtitle": "IP",
"edt_conf_net_localAdminAuth_expl": "Quando ativado, o acesso de administração de sua rede local precisa de uma senha.",
"edt_conf_net_localAdminAuth_title": "Autenticação de API de administrador local",
"edt_conf_net_localApiAuth_expl": "Quando habilitado, as conexões de sua rede doméstica precisam se autenticar no Hyperion com um token.",
"edt_conf_net_localApiAuth_title": "Autenticação de API local",
"edt_conf_net_restirctedInternetAccessAPI_expl": "Você pode restringir o acesso à API através da Internet a determinados IPs.",
"edt_conf_net_restirctedInternetAccessAPI_title": "Restringir aos IPs",
"edt_conf_pbs_heading_title": "Servidor de buffers de protocolo",
"edt_conf_pbs_timeout_expl": "Se nenhum dado for recebido para o período determinado, o componente será desabilitado (soft).",
"edt_conf_pbs_timeout_title": "Tempo Esgotado",
"edt_conf_smooth_continuousOutput_expl": "Atualize os LEDs mesmo que não haja alteração na imagem.",
"edt_conf_smooth_continuousOutput_title": "Saída contínua",
"edt_conf_smooth_decay_expl": "A velocidade da decadência. 1 é linear, valores maiores têm efeito mais forte.",
"edt_conf_smooth_decay_title": "Poder de decomposição",
"edt_conf_smooth_dithering_expl": "Melhore a precisão das cores em altas velocidades de saída, alternando entre cores adjacentes.",
"edt_conf_smooth_dithering_title": "Tremulação",
"edt_conf_smooth_heading_title": "Suavização",
"edt_conf_smooth_interpolationRate_expl": "Velocidade do cálculo de quadros intermediários suavizados.",
"edt_conf_smooth_interpolationRate_title": "Taxa de interpolação",
"edt_conf_smooth_outputRate_expl": "A velocidade de saída para o controlador led.",
"edt_conf_smooth_outputRate_title": "Taxa de saída",
"edt_conf_smooth_time_ms_expl": "Por quanto tempo a suavização deve reunir imagens?",
"edt_conf_smooth_time_ms_title": "Tempo",
"edt_conf_smooth_type_expl": "Tipo de Suavização.",
"edt_conf_smooth_type_title": "Tipo",
"edt_conf_smooth_updateDelay_expl": "Atrase a saída caso a luz ambiente seja mais rápida do que a TV.",
"edt_conf_smooth_updateDelay_title": "Atraso de atualização",
"edt_conf_smooth_updateFrequency_expl": "A velocidade de saída para o controlador led.",
"edt_conf_smooth_updateFrequency_title": "Frequência de atualização",
"edt_conf_v4l2_blueSignalThreshold_expl": "Escurece os valores de azul baixos (reconhecidos como pretos)",
"edt_conf_v4l2_blueSignalThreshold_title": "Limite do sinal azul",
"edt_conf_v4l2_cecDetection_expl": "Se ativada, a captura USB será temporariamente desativada quando o evento de espera CEC for recebido do barramento HDMI.",
"edt_conf_v4l2_cecDetection_title": "Detecção CEC",
"edt_conf_v4l2_cropBottom_expl": "Contagem de pixels na parte inferior que são removidos da imagem.",
"edt_conf_v4l2_cropBottom_title": "Cortar base",
"edt_conf_v4l2_cropLeft_expl": "Contagem de pixels no lado esquerdo que são removidos da imagem.",
"edt_conf_v4l2_cropLeft_title": "Cortar à esquerda",
"edt_conf_v4l2_cropRight_expl": "Contagem de pixels no lado direito que são removidos da imagem.",
"edt_conf_v4l2_cropRight_title": "Cortar à direita",
"edt_conf_v4l2_cropTop_expl": "Contagem de pixels na parte superior que são removidos da imagem.",
"edt_conf_v4l2_cropTop_title": "Cortar topo",
"edt_conf_v4l2_device_expl": "O caminho para a interface de captura USB. Defina como 'Automático' para detecção automática. Exemplo: '/ dev / video0'",
"edt_conf_v4l2_device_title": "Dispositivo",
"edt_conf_v4l2_framerate_expl": "Os quadros por segundo suportados do dispositivo ativo",
"edt_conf_v4l2_framerate_title": "Quadros por segundo",
"edt_conf_v4l2_greenSignalThreshold_expl": "Escurece valores verdes baixos (reconhecidos como pretos)",
"edt_conf_v4l2_greenSignalThreshold_title": "Limite do sinal verde",
"edt_conf_v4l2_heading_title": "Captura USB",
"edt_conf_v4l2_input_expl": "Selecione a entrada de vídeo do seu dispositivo. 'Automático' mantém o valor escolhido pela interface v4l2.",
"edt_conf_v4l2_input_title": "Entrada",
"edt_conf_v4l2_redSignalThreshold_expl": "Escurece valores baixos de vermelho (reconhecido como preto)",
"edt_conf_v4l2_redSignalThreshold_title": "Limite de sinal vermelho",
"edt_conf_v4l2_resolution_expl": "Uma lista de resoluções suportadas do dispositivo ativo",
"edt_conf_v4l2_resolution_title": "Resolução do dispositivo",
"edt_conf_v4l2_sDHOffsetMax_expl": "Área de detecção de sinal horizontal máxima (0.0-1.0)",
"edt_conf_v4l2_sDHOffsetMax_title": "HMax de detecção de sinal",
"edt_conf_v4l2_sDHOffsetMin_expl": "Área de detecção de sinal horizontal mínima (0.0-1.0)",
"edt_conf_v4l2_sDHOffsetMin_title": "HMin de detecção de sinal",
"edt_conf_v4l2_sDVOffsetMax_expl": "Signal detection area vertical maximum (0.0-1.0)",
"edt_conf_v4l2_sDVOffsetMax_title": "Detecção de Sinal VMax",
"edt_conf_v4l2_sDVOffsetMin_expl": "Mínimo vertical da área de detecção de sinal (0.0-1.0)",
"edt_conf_v4l2_sDVOffsetMin_title": "VMin de detecção de sinal",
"edt_conf_v4l2_signalDetection_expl": "Se ativada, a captura de USB será temporariamente desativada quando nenhum sinal for encontrado. Isso acontecerá quando a imagem cair abaixo do valor limite por um período de 4 segundos.",
"edt_conf_v4l2_signalDetection_title": "Detecção de sinal",
"edt_conf_v4l2_sizeDecimation_expl": "O fator de dizimação do tamanho. 1 significa sem dizimação (manter o tamanho original)",
"edt_conf_v4l2_sizeDecimation_title": "Decimação de tamanho",
"edt_conf_v4l2_standard_expl": "Selecione o padrão de vídeo para sua região. 'Automático' mantém o valor escolhido pela interface v4l2.",
"edt_conf_v4l2_standard_title": "Padrão de vídeo",
"edt_conf_webc_crtPath_expl": "Caminho para o arquivo de certificação (o formato deve ser PEM)",
"edt_conf_webc_crtPath_title": "Caminho do certificado",
"edt_conf_webc_docroot_expl": "Caminho raiz da interface da web local (apenas para desenvolvedor webui)",
"edt_conf_webc_docroot_title": "Raiz do Documento",
"edt_conf_webc_heading_title": "Configuração da Web",
"edt_conf_webc_keyPassPhrase_expl": "Opcional: a chave pode ser protegida com uma senha",
"edt_conf_webc_keyPassPhrase_title": "Senha chave",
"edt_conf_webc_keyPath_expl": "Caminho para o arquivo de chave (formato PEM, criptografado com RSA)",
"edt_conf_webc_keyPath_title": "Caminho da chave privada",
"edt_conf_webc_sslport_expl": "Porta do HTTPS-Webservidor",
"edt_conf_webc_sslport_title": "Porta HTTPS",
"edt_dev_auth_key_title": "Token de autenticação",
"edt_dev_auth_key_title_info": "Token de autenticação necessário para acessar o dispositivo",
"edt_dev_enum_sub_min_cool_adjust": "Subtrair branco frio",
"edt_dev_enum_sub_min_warm_adjust": "Subtrair o branco quente",
"edt_dev_enum_subtract_minimum": "Subtrair mínimo",
"edt_dev_enum_white_off": "Branco apagado",
"edt_dev_general_colorOrder_title": "Ordem de bytes RGB",
"edt_dev_general_colorOrder_title_info": "A ordem de cores do dispositivo",
"edt_dev_general_hardwareLedCount_title": "Contagem de LED de hardware",
"edt_dev_general_hardwareLedCount_title_info": "O número de LEDs físicos disponíveis para o dispositivo fornecido",
"edt_dev_general_heading_title": "Configurações Gerais",
"edt_dev_general_name_title": "Nome da configuração",
"edt_dev_general_rewriteTime_title": "Tempo de atualização",
"edt_dev_spec_FCledToOn_title": "LED Fadecandy ligado",
"edt_dev_spec_FCmanualControl_title": "Controle manual do LED fadecandy",
"edt_dev_spec_FCsetConfig_title": "Definir configuração de fadecandy",
"edt_dev_spec_LBap102Mode_title": "Modo LightBerry APA102",
"edt_dev_spec_PBFiFo_title": "Pi-Blaster FiFo",
"edt_dev_spec_baudrate_title": "Taxa de transmissão",
"edt_dev_spec_blackLightsTimeout_title": "Tempo limite de detecção de sinal em preto",
"edt_dev_spec_brightnessFactor_title": "Fator de brilho",
"edt_dev_spec_brightnessMax_title": "Brilho máximo",
"edt_dev_spec_brightnessMin_title": "Brilho mínimo",
"edt_dev_spec_brightnessOverwrite_title": "Sobrescrever brilho",
"edt_dev_spec_brightnessThreshold_title": "Signal detection brightness minimum",
"edt_dev_spec_brightness_title": "Brilho",
"edt_dev_spec_chanperfixture_title": "Canais por luminária",
"edt_dev_spec_cid_title": "CID",
"edt_dev_spec_clientKey_title": "Chavecliente:",
"edt_dev_spec_colorComponent_title": "Componente de cor",
"edt_dev_spec_debugLevel_title": "Nível de Depuração",
"edt_dev_spec_debugStreamer_title": "Streamer Debug",
"edt_dev_spec_delayAfterConnect_title": "Atrasar após conectar",
"edt_dev_spec_devices_discovered_none": "Nenhum dispositivo foi descoberto",
"edt_dev_spec_devices_discovered_title": "Dispositivos descobertos",
"edt_dev_spec_devices_discovered_title_info": "Selecione o seu dispositivo LED descoberto",
"edt_dev_spec_devices_discovered_title_info_custom": "Selecione o seu dispositivo LED descoberto ou configure um personalizado",
"edt_dev_spec_devices_discovery_inprogress": "Descoberta em andamento",
"edt_dev_spec_dithering_title": "Tremulação",
"edt_dev_spec_dmaNumber_title": "Canal DMA",
"edt_dev_spec_gamma_title": "Gama",
"edt_dev_spec_globalBrightnessControlMaxLevel_title": "Nível máximo atual",
"edt_dev_spec_globalBrightnessControlThreshold_title": "Limiar de corrente adaptável",
"edt_dev_spec_gpioBcm_title": "Pino GPIO",
"edt_dev_spec_gpioMap_title": "Mapeamento GPIO",
"edt_dev_spec_gpioNumber_title": "Número GPIO",
"edt_dev_spec_groupId_title": "ID do Grupo",
"edt_dev_spec_header_title": "Configurações Específicas",
"edt_dev_spec_interpolation_title": "Interpolação",
"edt_dev_spec_intervall_title": "Intervalo",
"edt_dev_spec_invert_title": "Inverter sinal",
"edt_dev_spec_latchtime_title": "Tempo UIDLatch",
"edt_dev_spec_latchtime_title_info": "O tempo de travamento é o período de tempo que um dispositivo requer até que a próxima atualização possa ser processada. Durante esse período, todas as atualizações feitas são ignoradas.",
"edt_dev_spec_ledIndex_title": "Índice de LED",
"edt_dev_spec_ledType_title": "Tipo de LED",
"edt_dev_spec_lightid_itemtitle": "ID",
"edt_dev_spec_lightid_title": "ID (s) de luz",
"edt_dev_spec_lights_itemtitle": "Luz",
"edt_dev_spec_lights_name": "Nome",
"edt_dev_spec_lights_title": "Luz(es)",
"edt_dev_spec_maxPacket_title": "Pacote máximo",
"edt_dev_spec_maximumLedCount_title": "Contagem máxima de LED",
"edt_dev_spec_multicastGroup_title": "Grupo multicast",
"edt_dev_spec_networkDeviceName_title": "Nome do dispositivo de rede",
"edt_dev_spec_networkDevicePort_title": "Porta",
"edt_dev_spec_numberOfLeds_title": "Número de LEDs",
"edt_dev_spec_orbIds_title": "ID(s) Orb",
"edt_dev_spec_order_left_right_title": "2.",
"edt_dev_spec_order_top_down_title": "1.",
"edt_dev_spec_outputPath_title": "Caminho de saída",
"edt_dev_spec_panel_start_position": "Painel inicial [0-max panels]",
"edt_dev_spec_panelorganisation_title": "Seqüência de numeração do painel",
"edt_dev_spec_pid_title": "PID",
"edt_dev_spec_port_title": "Porta",
"edt_dev_spec_printTimeStamp_title": "Adicionar carimbo de data / hora",
"edt_dev_spec_pwmChannel_title": "Canal PWM",
"edt_dev_spec_restoreOriginalState_title": "Restaurar o estado das luzes",
"edt_dev_spec_restoreOriginalState_title_info": "Restaura o estado original do dispositivo quando o dispositivo é desativado",
"edt_dev_spec_serial_title": "Número Serial",
"edt_dev_spec_spipath_title": "Dispositivo SPI",
"edt_dev_spec_sslHSTimeoutMax_title": "Tempo limite máximo do aperto de mão do Streamer",
"edt_dev_spec_sslHSTimeoutMin_title": "Tempo limite mínimo de handshake do Streamer",
"edt_dev_spec_sslReadTimeout_title": "Tempo limite de leitura do streamer",
"edt_dev_spec_switchOffOnBlack_title": "Desligue no preto",
"edt_dev_spec_switchOffOnbelowMinBrightness_title": "Desligar, abaixo do mínimo",
"edt_dev_spec_syncOverwrite_title": "Desactivar a sincronização",
"edt_dev_spec_targetIpHost_title": "Nome do host / endereço IP de destino",
"edt_dev_spec_targetIpHost_title_info": "O nome de host ou endereço IP do dispositivo",
"edt_dev_spec_targetIp_title": "Endereço IP de destino",
"edt_dev_spec_transeffect_title": "Efeito de transição",
"edt_dev_spec_transistionTimeExtra_title": "Tempo extra escuridão",
"edt_dev_spec_transistionTime_title": "Período de transição",
"edt_dev_spec_uid_title": "UID",
"edt_dev_spec_universe_title": "Universal",
"edt_dev_spec_useEntertainmentAPI_title": "Usar api Entretenimento HUE",
"edt_dev_spec_useOrbSmoothing_title": "Usar suavização Orb",
"edt_dev_spec_useRgbwProtocol_title": "Use protocolo RGBW",
"edt_dev_spec_username_title": "Nome de usuário",
"edt_dev_spec_verbose_title": "Registrar todos os comandos Hue",
"edt_dev_spec_vid_title": "VID",
"edt_dev_spec_whiteLedAlgor_title": "Algoritmo de LED branco",
"edt_dev_spec_whitepoint_title": "Ponto branco",
"edt_eff_alarmcolor": "Cor do Alarme",
"edt_eff_backgroundColor": "Cor de fundo",
"edt_eff_basecolorchange": "Mudança de cor base",
"edt_eff_basecolorchangerate": "Taxa de mudança da Cor Base",
"edt_eff_basecolorrangeleft": "Cor base faixa esquerda",
"edt_eff_basecolorrangeright": "Cor base faixa direita",
"edt_eff_blobcount": "Contagem de bolhas",
"edt_eff_brightness": "Brilho",
"edt_eff_candle_header": "Vela",
"edt_eff_candle_header_desc": "Velas cintilantes",
"edt_eff_centerx": "Centro do eixo X",
"edt_eff_centery": "Centro do Eixo Y",
"edt_eff_collision_header": "colisão de cores",
"edt_eff_collision_header_desc": "Dois projéteis coloridos são enviados de posições aleatórias e colidem um com o outro",
"edt_eff_color": "Cor",
"edt_eff_colorHour": "Cor hora",
"edt_eff_colorMarker": "Cor do marcador",
"edt_eff_colorMinute": "Cor minuto",
"edt_eff_colorSecond": "Cor segundo",
"edt_eff_colorcount": "Comprimento de cor",
"edt_eff_colorend": "Cor Final",
"edt_eff_colorendtime": "Hora de segurar a cor inicial",
"edt_eff_colorevel": "Nível de Cor",
"edt_eff_colorone": "Cor primária",
"edt_eff_colorrandom": "Cor aleatória",
"edt_eff_colorshift": "Mudança de cor",
"edt_eff_colorstart": "Início de cor",
"edt_eff_colorstarttime": "Hora de manter a cor final",
"edt_eff_colortwo": "Cor secundária",
"edt_eff_count": "Contagem",
"edt_eff_countries": "Países",
"edt_eff_customColor": "Cor customizada",
"edt_eff_enableSecondSwirl": "Segundo Redemoinho",
"edt_eff_enableshutdown": "Desligamento real",
"edt_eff_enum_all": "Todos",
"edt_eff_enum_all-together": "Todos juntos",
"edt_eff_enum_list": "Lista de LED",
"edt_eff_explodeRadius": "Alcance de Detonação ",
"edt_eff_fade_header": "Esmaecer",
"edt_eff_fade_header_desc": "Esmaece entre as cores",
"edt_eff_fadefactor": "Fator de esmaecer",
"edt_eff_fadeintime": "Fade in time",
"edt_eff_fadeouttime": "Fade out time",
"edt_eff_flag_header": "Bandeiras",
"edt_eff_flag_header_desc": "Deixe seus LEDs brilharem com as cores do seu país. Você pode selecionar mais de um sinalizador e eles serão alterados com base no intervalo de tempo.",
"edt_eff_fps": "Quadros por segundo",
"edt_eff_frequency": "Frequência",
"edt_eff_gif_header": "GIF's",
"edt_eff_gif_header_desc": "Este efeito reproduz arquivos .gif, fornece um vídeo simples como um loop como efeito.",
"edt_eff_height": "Altura",
"edt_eff_huechange": "Mudança de cor",
"edt_eff_image": "Arquivo de imagem",
"edt_eff_interval": "intervalo",
"edt_eff_knightrider_header": "Knight Rider",
"edt_eff_knightrider_header_desc": "K.I.T.T está de volta! O scanner frontal do conhecido carro, desta vez não apenas em vermelho.",
"edt_eff_ledlist": "Lista de Leds",
"edt_eff_ledtest_header": "Teste de Led",
"edt_eff_ledtest_header_desc": "Saída rotativa: Vermelho, Verde, Azul, Branco, Preto",
"edt_eff_length": "Comprimento",
"edt_eff_lightclock_header": "Relogio de luz",
"edt_eff_lightclock_header_desc": "Um verdadeiro relógioem forma de luz! Ajuste as cores de horas, minutos, segundos. Um marcador opcional de 3/6/9/12 horas também está disponível. Caso o relógio esteja errado, você precisa verificar o relógio do seu sistema.",
"edt_eff_maintain_end_color": "Manter cor final",
"edt_eff_margin": "Margem",
"edt_eff_markerDepth": "Profundidade do marcador",
"edt_eff_markerEnable": "Mostrar Marcador",
"edt_eff_markerWidth": "Largura do marcador",
"edt_eff_max_len": "Comprimento máximo",
"edt_eff_min_len": "Comprimento mínimo",
"edt_eff_moodblobs_header": "Bolhas de Humor",
"edt_eff_moodblobs_header_desc": "Relaxe à noite com bolhas que se movem lentamente e mudam de cor.",
"edt_eff_offset": "Desvio",
"edt_eff_pacman_header": "Pac-Man",
"edt_eff_pacman_header_desc": "Pequeno com fome e amarelo. Quem vai sobreviver?",
"edt_eff_plasma_header": "Plasma",
"edt_eff_plasma_header_desc": "Distorção de cor em diferentes direções",
"edt_eff_police_header": "Polícia",
"edt_eff_police_header_desc": "Luzes como um carro de polícia em ação",
"edt_eff_postcolor": "Cor da postagem",
"edt_eff_rainbowmood_header": "Modo Arco-íris",
"edt_eff_rainbowmood_header_desc": "Todos os LEDs humor do arco-íris",
"edt_eff_randomCenter": "Centro aleatório",
"edt_eff_random_header": "Aleatório",
"edt_eff_random_header_desc": "Pixel Ponto, ponto, ponto ...",
"edt_eff_repeat": "Repetir",
"edt_eff_repeatcount": "Contagem de Repetição",
"edt_eff_reverseRandomTime": "Inverte a cada",
"edt_eff_reversedirection": "Reverter direção",
"edt_eff_rotationtime": "Tempo de rotação",
"edt_eff_saturation": "Saturação",
"edt_eff_showseconds": "Mostrar segundos",
"edt_eff_sleeptime": "Tempo de descanso",
"edt_eff_smooth_custom": "Habilitar suavização",
"edt_eff_smooth_time_ms": "Tempo de suavização",
"edt_eff_smooth_updateFrequency": "Freqüência de atualização de suavização",
"edt_eff_snake_header": "Cobra",
"edt_eff_snake_header_desc": "Onde tem algo para comer?",
"edt_eff_sparks_header": "Faíscas",
"edt_eff_sparks_header_desc": "Star-Sparking, escolha entre uma cor estática ou aleatória. Você também pode ajustar o brilho, a saturação e a velocidade.",
"edt_eff_speed": "Velocidade",
"edt_eff_swirl_header": "Redemoinho de cor",
"edt_eff_swirl_header_desc": "Um redemoinho com cores personalizadas. As cores são distribuídas uniformemente em 360 °, e as mudanças entre as cores serão calculadas. Além disso, você pode adicionar um segundo redemoinho no topo, esteja ciente de que precisa de transparência parcial! Dica: A repetição da mesma cor resulta em uma área de cor \"mais alta\" e uma área de mudança de cor reduzida.",
"edt_eff_systemshutdown_header": "Desligamento do sistema",
"edt_eff_systemshutdown_header_desc": "Uma curta animação com provavelmente um desligamento real do sistema",
"edt_eff_traces_header": "Traços de cor",
"edt_eff_traces_header_desc": "Requer redesenho",
"edt_eff_trails_header": "Estrelas cadentes",
"edt_eff_trails_header_desc": "Estrelas coloridas que caem de cima para baixo",
"edt_eff_waves_header": "Ondas",
"edt_eff_waves_header_desc": "Ondas de cor! Escolha suas cores, tempo de rotação, direção reversa e muito mais.",
"edt_eff_whichleds": "Quais LEDs",
"edt_eff_whitelevel": "Nível de Branco",
"edt_eff_x-mas_header": "Natal",
"edt_eff_x-mas_header_desc": "Toque de natal",
"edt_msg_button_add_row_title": "Adicionar $1",
"edt_msg_button_collapse": "Colapsar",
"edt_msg_button_delete_all": "Todos",
"edt_msg_button_delete_all_title": "Deletar Tudo",
"edt_msg_button_delete_last": "Último $1",
"edt_msg_button_delete_last_title": "Deletar Último $1",
"edt_msg_button_delete_row_title": "Deletar $1",
"edt_msg_button_delete_row_title_short": "Deletar",
"edt_msg_button_expand": "Expandir",
"edt_msg_button_move_down_title": "Mover para baixo",
"edt_msg_button_move_up_title": "Mover para cima",
"edt_msg_error_additionalItems": "Nenhum item adicional permitido nesta matriz",
"edt_msg_error_additional_properties": "Nenhuma propriedade adicional permitida, mas a propriedade $1 está definida",
"edt_msg_error_anyOf": "O valor deve ser validado em pelo menos um dos esquemas fornecidos",
"edt_msg_error_dependency": "Deve ter propriedade $1",
"edt_msg_error_disallow": "O valor não deve ser do tipo $1",
"edt_msg_error_disallow_union": "O valor não deve ser um dos tipos não permitidos fornecidos",
"edt_msg_error_enum": "O valor deve ser um dos valores enumerados",
"edt_msg_error_maxItems": "O valor deve ter no máximo $1 itens",
"edt_msg_error_maxLength": "O valor deve ter no máximo $1 caracteres",
"edt_msg_error_maxProperties": "O objeto deve ter no máximo $1 propriedades",
"edt_msg_error_maximum_excl": "O valor deve ser inferior a $1",
"edt_msg_error_maximum_incl": "O valor deve ser no máximo $1",
"edt_msg_error_minItems": "O valor deve ter pelo menos $1 itens",
"edt_msg_error_minLength": "O valor deve ter pelo menos $1 caracteres",
"edt_msg_error_minProperties": "O objeto deve ter pelo menos $1 propriedades",
"edt_msg_error_minimum_excl": "O valor deve ser maior que $1",
"edt_msg_error_minimum_incl": "O valor deve ser pelo menos $1",
"edt_msg_error_multipleOf": "O valor deve ser um múltiplo de $1",
"edt_msg_error_not": "O valor não deve ser validado no esquema fornecido",
"edt_msg_error_notempty": "Valor requerido",
"edt_msg_error_notset": "A propriedade deve ser definida",
"edt_msg_error_oneOf": "O valor deve ser validado em relação a exatamente um dos esquemas fornecidos. Atualmente é validado em $1 dos esquemas.",
"edt_msg_error_pattern": "O valor deve corresponder ao padrão",
"edt_msg_error_required": "O objeto está sem a propriedade necessária '$1'",
"edt_msg_error_type": "O valor deve ser do tipo $1",
"edt_msg_error_type_union": "O valor deve ser um dos tipos fornecidos",
"edt_msg_error_uniqueItems": "A matriz deve ter itens exclusivos",
"effectsconfigurator_button_conttest": "Teste Contínuo",
"effectsconfigurator_button_deleffect": "Deletar Efeito",
"effectsconfigurator_button_editeffect": "Carregar Efgeito",
"effectsconfigurator_button_saveeffect": "Salvar Efeito",
"effectsconfigurator_button_starttest": "Iniciar Teste",
"effectsconfigurator_button_stoptest": "Parar Teste",
"effectsconfigurator_editdeleff": "Deletar/Carregar Efeito",
"effectsconfigurator_label_chooseeff": "Escolha Modelo",
"effectsconfigurator_label_effectname": "Nome do Efeito",
"effectsconfigurator_label_intro": "Crie novos efeitos a partir dos efeitos básicos ajustados ao seu gosto. Dependendo do efeito, existem opções como cor, velocidade, direção e muito mais disponíveis.",
"general_access_advanced": "Avançado",
"general_access_default": "Padrão",
"general_access_expert": "Especialista",
"general_btn_back": "Voltar",
"general_btn_cancel": "Cancelar",
"general_btn_continue": "Continuar",
"general_btn_delete": "Deletar",
"general_btn_denyAccess": "Negar Acesso",
"general_btn_grantAccess": "Permitir acesso",
"general_btn_iswitch": "Trocar",
"general_btn_next": "Próximo",
"general_btn_off": "Desligado",
"general_btn_ok": "Ok",
"general_btn_on": "Ligado",
"general_btn_overwrite": "Sobrescrever",
"general_btn_rename": "Renomear",
"general_btn_restarthyperion": "Reiniciar Hyperion",
"general_btn_save": "Salvar",
"general_btn_saveandreload": "Salvar e recarregar",
"general_btn_saverestart": "Salvar e reiniciar",
"general_btn_start": "Iniciar",
"general_btn_stop": "Parar",
"general_btn_yes": "Sim",
"general_button_savesettings": "Salvar configurações",
"general_chars_needed": "mais caracteres necessários",
"general_col_blue": "azul",
"general_col_green": "verde",
"general_col_red": "vermelho",
"general_comp_BLACKBORDER": "Detecção de bordas",
"general_comp_BOBLIGHTSERVER": "Servidor Boblight",
"general_comp_FLATBUFSERVER": "Servidor Flatbuffers",
"general_comp_FORWARDER": "Encaminhador",
"general_comp_GRABBER": "Plataforma de Captura",
"general_comp_LEDDEVICE": "Dispositivo LED",
"general_comp_PROTOSERVER": "Protocolo do Servidor de Buffer",
"general_comp_SMOOTHING": "Suavização",
"general_comp_V4L": "Captura USB",
"general_country_cn": "China",
"general_country_de": "Alemanha",
"general_country_es": "Espanha",
"general_country_fr": "França",
"general_country_it": "Itália",
"general_country_nl": "Holanda",
"general_country_ru": "Rússia",
"general_country_uk": "Reino Unido",
"general_country_us": "Estados Unidos",
"general_speech_cs": "Tcheco",
"general_speech_de": "Alemanha",
"general_speech_en": "Inglês",
"general_speech_es": "Espanhol",
"general_speech_fr": "Francês",
"general_speech_it": "Italiano",
"general_speech_nl": "Holandês",
"general_speech_pl": "Polonês",
"general_speech_ro": "Romeno",
"general_speech_ru": "Russo",
"general_speech_sv": "Sueco",
"general_speech_tr": "Turco",
"general_speech_vi": "Vietnamita",
"general_speech_zh-CN": "Chinês (simplificado)",
"general_webui_title": "Hyperion - Configuração Web",
"general_wiki_moreto": "Mais informações para \"$1\" na nossa Wiki",
"infoDialog_checklist_title": "Checklist!",
"infoDialog_effconf_created_text": "O efeito \"$1\" foi criado com sucesso!",
"infoDialog_effconf_deleted_text": "O efeito \"$1\" foi excluído com sucesso!",
"infoDialog_general_error_title": "Erro",
"infoDialog_general_success_title": "Sucesso",
"infoDialog_general_warning_title": "Aviso",
"infoDialog_import_comperror_text": "Triste! Seu navegador não suporta importação. Por favor, tente novamente com outro navegador.",
"infoDialog_import_confirm_text": "Tem certeza de que deseja importar \"$1\"? Este processo não pode ser revertido!",
"infoDialog_import_confirm_title": "Confirmar importação",
"infoDialog_import_hyperror_text": "O arquivo de configuração selecionado \"$1\" não pode ser importado. Não é compatível com Hyperion 2.0 e superior!",
"infoDialog_import_jsonerror_text": "O arquivo de configuração selecionado \"$1\" não é um arquivo .json ou está corrompido. Mensagem de erro: ($2)",
"infoDialog_wizrgb_text": "Sua ordem de bytes RGB já está bem ajustada.",
"infoDialog_writeconf_error_text": "Falha ao salvar sua configuração.",
"infoDialog_writeimage_error_text": "O arquivo selecionado \"$1\" não é um arquivo de imagem ou está corrompido! Selecione outro arquivo de imagem.",
"info_404": "A página que você solicitou não está disponível!",
"info_conlost_label_autorecon": "Nós nos reconectamos novamente após o Hyperion estar disponível.",
"info_conlost_label_autorefresh": "Esta página será atualizada automaticamente.",
"info_conlost_label_reason": "Razões possíveis:",
"info_conlost_label_reason1": "- Conexão WLAN ruim",
"info_conlost_label_reason2": "- Você realizou uma atualização",
"info_conlost_label_reason3": "- Hyperion não está aberto",
"info_conlost_label_reload": "Reconexão automática interrompida - limite excedido, atualize a página ou clique aqui.",
"info_conlost_label_title": "Conexão perdida com o serviço Hyperion!",
"info_restart_contus": "Se você ainda está por aqui depois de 20 segundos e não tem ideia do porque, abra um novo tópico em nosso fórum de suporte...",
"info_restart_contusa": "... com seus últimos passos. Obrigado!",
"info_restart_rightback": "Hyperion estará de volta logo!",
"info_restart_title": "Reiniciando atualmente ...",
"main_ledsim_btn_togglelednumber": "Números dos LEDs",
"main_ledsim_btn_toggleleds": "Mostrar LEDs",
"main_ledsim_btn_togglelivevideo": "Video em tempo real",
"main_ledsim_text": "Visualização em tempo real das cores dos LEDs e, opcionalmente, stream de vídeo do dispositivo de captura.",
"main_ledsim_title": "Visualização LED",
"main_menu_about_token": "Sobre o Hyperion",
"main_menu_colors_conf_token": "Processamento de Imagem",
"main_menu_configuration_token": "Configuração",
"main_menu_dashboard_token": "Dashboard",
"main_menu_effect_conf_token": "Efeitos",
"main_menu_effectsconfigurator_token": "Configurador de efeitos",
"main_menu_general_conf_token": "Geral",
"main_menu_grabber_conf_token": "Hardware de Captura",
"main_menu_input_selection_token": "Seleção de",
"main_menu_leds_conf_token": "Hardware LED",
"main_menu_logging_token": "Log",
"main_menu_network_conf_token": "Serviços de Rede",
"main_menu_remotecontrol_token": "Controle Remoto",
"main_menu_support_token": "Suporte",
"main_menu_system_token": "Sistema",
"main_menu_update_token": "Atualizar",
"main_menu_webconfig_token": "Configuração web",
"remote_adjustment_intro": "Modificar cor",
"remote_adjustment_label": "Ajuste de cor",
"remote_color_button_reset": "Resetar Cor/Efeito",
"remote_color_intro": "Defina um efeito ou cor. Também são listados os efeitos criados por você mesmo (se disponíveis). $1",
"remote_color_label": "Cores/Efeitos",
"remote_color_label_color": "Cor:",
"remote_components_intro": "Habilite e desabilite os componentes do Hyperion durante o tempo de execução. $1",
"remote_components_label": "Controle de componentes",
"remote_effects_label_effects": "Efeito:",
"remote_effects_label_picture": "Foto:",
"remote_input_clearall": "Limpar todos os efeitos / cores",
"remote_input_duration": "Duração:",
"remote_input_intro": "O Hyperion usa um sistema de prioridade para selecionar uma fonte. Tudo que você define tem uma prioridade (Efeito / Cor / Captura de plataforma / Captura USB e fontes de rede). Por padrão, o Hyperion seleciona as fontes de acordo com a prioridade (o número mais baixo reflete a fonte ativa atual). Agora você tem a oportunidade de selecionar as fontes por conta própria. $1",
"remote_input_ip": "IP:",
"remote_input_label": "Seleção de Fonte",
"remote_input_label_autoselect": "Seleção Automática",
"remote_input_origin": "Origem",
"remote_input_owner": "Tipo",
"remote_input_priority": "Prioridade",
"remote_input_setsource_btn": "Selecione a fonte",
"remote_input_sourceactiv_btn": "Fonte ativa",
"remote_input_status": "Estado/Ação",
"remote_losthint": "Nota: Todas as configurações são redefinidas ao resetar.",
"remote_maptype_intro": "Normalmente, o layout de led define qual LED cobre uma área específica da imagem, você pode alterá-lo aqui: $1.",
"remote_maptype_label": "Tipo de mapeamento",
"remote_maptype_label_multicolor_mean": "Multicolorido",
"remote_maptype_label_unicolor_mean": "Unicolorido",
"remote_optgroup_syseffets": "Effeitos do Sistema",
"remote_optgroup_templates_custom": "Modelos do usuário",
"remote_optgroup_templates_system": "Modelos do sistema",
"remote_optgroup_usreffets": "Effeitos do Usuário",
"remote_videoMode_2D": "2D",
"remote_videoMode_3DSBS": "3DSBS",
"remote_videoMode_3DTAB": "3DTAB",
"remote_videoMode_intro": "Alterne entre os diferentes modos de vídeo para desfrutar de filmes 3D! São suportados todos os dispositivos de captura. $1",
"remote_videoMode_label": "Modo vídeo",
"support_label_affinstr1": "Clique no link apropriado de seu país",
"support_label_affinstr2": "Tudo o que você compra (não importa o que), nós recebemos uma pequena taxa com base no seu faturamento",
"support_label_affinstr3": "Você SEMPRE paga o mesmo preço, não há absolutamente nenhuma diferença. Experimente!",
"support_label_btctext": "Endereço:",
"support_label_donate": "Doe ou use nossos links de afiliados",
"support_label_donationpp": "Doação:",
"support_label_fbtext": "Compartilhe nossa página do Hyperion no Facebook e receba um aviso quando novas atualizações forem lançadas",
"support_label_forumtext": "Demonstrações, discussões, ajuda e muito mais",
"support_label_forumtitle": "Fórum",
"support_label_ggtext": "Circule-nos no Google +!",
"support_label_ghtext": "Visite-nos no GitHub",
"support_label_igtext": "Visite-nos no Instagram para ver as últimas fotos do Hyperion!",
"support_label_intro": "Hyperion é um software gratuito sem fins lucrativos. Uma pequena equipe está trabalhando nisso e é por isso que precisamos do seu apoio constante.",
"support_label_spreadtheword": "Divulgue",
"support_label_title": "Ajude Hyperion",
"support_label_twtext": "Compartilhe e siga no Twitter, esteja sempre atualizado com as últimas postagens sobre o desenvolvimento do Hyperion",
"support_label_webpagetext": "Site do Hyperion",
"support_label_webpagetitle": "Site",
"support_label_webrestitle": "Recursos de informação e ajuda",
"support_label_wikitext": "A fonte de A a Z para quase tudo relacionado ao Hyperion",
"support_label_wikititle": "Documentação",
"support_label_yttext": "Entediado das fotos? Confira nosso canal no YouTube!",
"update_button_changelog": "Log de mudanças completo",
"update_button_install": "Instalar",
"update_error_getting_versions": "Tivemos problemas para determinar a versão mais recente disponível.",
"update_label_description": "Descrição:",
"update_label_intro": "Visão geral sobre todas as versões disponíveis do Hyperion. Além disso, você pode atualizar ou fazer downgrade de sua versão do Hyperion sempre que quiser. Ordenado do mais recente ao mais antigo",
"update_label_type": "Tipo:",
"update_no_updates_for_branch": "Nenhuma atualização para o canal da versão selecionada.",
"update_versreminder": "Sua versão: $1",
"wiz_atmoorb_desc2": "Agora escolha quais Orbs devem ser adicionados. A posição atribui a lâmpada a uma posição específica na sua \"imagem\". Lâmpadas desativadas não serão adicionadas. Para identificar lâmpadas individuais, pressione o botão à direita.",
"wiz_atmoorb_intro1": "Este assistente configura o Hyperion para AtmoOrbs. Os recursos são a detecção automática AtmoOrb, definindo cada luz para uma posição específica em sua imagem ou desativá-lo e otimizar as configurações do Hyperion automaticamente! Resumindo: você só precisa de alguns cliques e pronto!",
"wiz_atmoorb_title": "Assistente AtmoOrb",
"wiz_cc_adjustgamma": "Gama: O que você precisa fazer é ajustar os níveis de gama de cada canal até ter a mesma quantidade percebida de cada canal. Dica: Neutro é 1.0! Por exemplo, se o seu cinza for um pouco avermelhado, isso significa que você deve aumentar o gama do vermelho para reduzir a quantidade de vermelho (quanto mais gama, menor a quantidade de cor).",
"wiz_cc_adjustit": "Ajuste seu \"$1\", até que esteja tudo bem com ele. Atenção: quanto mais você se afasta do valor padrão, o espectro de cores será limitado (também para todas as cores intermediárias). Dependendo do espectro de cores da TV / LED, os resultados podem variar.",
"wiz_cc_backlight": "Além disso, você pode definir uma luz de fundo para separar as \"cores ruins\" em áreas quase escuras ou se você não gostar de alternar entre cores e desligadas durante a exibição. Além disso, você pode definir se deve haver alguma cor ou apenas branco. Isso é desativado durante o estado \"Desligado\", \"Cor\" e \"Efeito\".",
"wiz_cc_btn_stop": "Parar o vídeo",
"wiz_cc_btn_switchpic": "Mudar de imagem",
"wiz_cc_chooseid": "Defina um nome para este perfil de cor.",
"wiz_cc_intro1": "Este assistente irá guiá-lo através da calibração do led. Se você estiver usando o Kodi, as fotos e vídeos de calibração podem ser enviados diretamente para ele. Pré-requisito: você precisa habilitar \"Permitir controle remoto de aplicativos em outros sistemas\" no Kodi. <br /> Como alternativa, você pode fazer o download desses arquivos por conta própria e exibi-los quando o assistente solicitar que você ajuste a configuração.",
"wiz_cc_kodicon": "Kodi encontrado, prossiga com o suporte Kodi.",
"wiz_cc_kodidiscon": "Kodi não encontrado, prossiga sem o suporte Kodi (verifique se o controle remoto por outros sistemas está ativado).",
"wiz_cc_kodidisconlink": "Baixar fotos do link:",
"wiz_cc_kodimsg_start": "Sucesso do teste - hora de continuar!",
"wiz_cc_kodishould": "Kodi deve mostrar a seguinte imagem: $1",
"wiz_cc_kwebs": "Servidor da web Kodi (nome do host ou IP)",
"wiz_cc_lettvshow": "Deixe sua TV mostrar a seguinte imagem: $1",
"wiz_cc_lettvshowm": "Verifique isso com as seguintes fotos: $1",
"wiz_cc_link": "Clique aqui!",
"wiz_cc_morethanone": "Você tem mais de um perfil, escolha o perfil que deseja calibrar.",
"wiz_cc_summary": "Uma conclusão de suas configurações. Durante a reprodução do vídeo, você pode alterar ou testar os valores novamente. Quando terminar, clique em salvar.",
"wiz_cc_testintro": "É hora de um teste real!",
"wiz_cc_testintrok": "Pressione o botão abaixo para iniciar um vídeo de teste.",
"wiz_cc_testintrowok": "Confira o seguinte link para baixar vídeos de teste:",
"wiz_cc_title": "Assistente de calibração de cores",
"wiz_cololight_desc2": "Agora escolha quais Cololights devem ser adicionados. Para identificar luzes individuais, pressione o botão à direita.",
"wiz_cololight_intro1": "Este assistente configura o Hyperion para o sistema Cololight. Os recursos são a detecção automática Cololight e ajuste as configurações do Hyperion automaticamente! Resumindo: Tudo o que você precisa é de alguns cliques e pronto! <br /> Nota: No caso do Cololight Strip, pode ser necessário corrigir manualmente a contagem e o layout dos LEDs.",
"wiz_cololight_noprops": "Não é possível obter propriedades do dispositivo - Definir contagem de LED de hardware manualmente",
"wiz_cololight_title": "Assistente Cololight",
"wiz_guideyou": "O $1 irá guiá-lo através das configurações. Basta apertar o botão!",
"wiz_hue_blinkblue": "Deixe ID $1 acender em azul",
"wiz_hue_clientkey": "Chave do Cliente:",
"wiz_hue_create_user": "Criar novo Usuário",
"wiz_hue_desc1": "Ele procura automaticamente por um Hue-Bridge, caso não encontre um, você precisa fornecer o endereço IP e apertar o botão recarregar à direita. Agora você precisa de um ID de usuário, se você não tiver um, crie um novo.",
"wiz_hue_desc2": "Agora escolha quais lâmpadas devem ser adicionadas. A posição atribui a lâmpada a uma posição específica na sua \"imagem\". Lâmpadas desativadas não serão adicionadas. Para identificar lâmpadas individuais, pressione o botão à direita.",
"wiz_hue_e_clientkey_needed": "Uma chave de cliente que corresponda ao nome de usuário é necessária para usar a API de entretenimento. Insira um existente ou use o botão abaixo para criar um novo.",
"wiz_hue_e_create_user": "Criar novo usuário e chave de cliente",
"wiz_hue_e_desc1": "Ele procura automaticamente por uma hue bridge, caso não encontre uma, você precisa fornecer o endereço IP e apertar o botão recarregar à direita. Agora você precisa de um ID de usuário e a chave do cliente, se você não tiver os dois, crie um novo.",
"wiz_hue_e_desc2": "Agora escolha o seu grupo de entretenimento, que tem todas as suas luzes dentro para usar com o Hyperion.",
"wiz_hue_e_desc3": "Agora você pode escolher em que posição a respectiva lâmpada deve estar \"na imagem\". Uma pré-seleção da posição foi feita com base nas posições configuradas das luzes no grupo de entretenimento. Esta é apenas uma recomendação e pode ser personalizada conforme desejado. Você pode, portanto, destacá-los brevemente clicando com o botão direito para melhorar a seleção.",
"wiz_hue_e_intro1": "Este assistente configura o Hyperion para o conhecido sistema Philips Hue Entertainment. Os recursos são: detecção automática do Hue Bridge, criação de chaves do usuário e do cliente, seleção do grupo de entretenimento, configuração das luzes do grupo em uma posição específica na imagem e otimização das configurações do Hyperion automaticamente! Resumindo: você só precisa de alguns cliques e pronto!",
"wiz_hue_e_noapisupport": "O assistente desativou o suporte à API de entretenimento e continuará no modo clássico.",
"wiz_hue_e_noapisupport_hint": "A opção \"<b> Usar Hue Entertainment API </b>\" foi desmarcada.",
"wiz_hue_e_noegrpids": "Nenhum grupo de entretenimento definido nesta ponte Hue.",
"wiz_hue_e_nogrpids": "Esta ponte Hue não tem grupos definidos, crie pelo menos um antes com os Aplicativos Hue.",
"wiz_hue_e_title": "Assistente de Entretenimento Philips Hue",
"wiz_hue_e_use_group": "Use o grupo",
"wiz_hue_e_use_groupid": "Use o ID de grupo $1",
"wiz_hue_failure_connection": "Tempo limite: Por favor, pressione o botão bridge dentro do período de 30 segundos",
"wiz_hue_failure_ip": "Nenhuma ponte encontrada, digite um endereço IP válido",
"wiz_hue_failure_user": "Usuário não encontrado, crie um novo com o botão abaixo ou insira um ID de usuário válido e pressione o símbolo \"recarregar\".",
"wiz_hue_intro1": "Este assistente configura o Hyperion para o conhecido sistema Philips Hue. Os recursos são a detecção automática do Hue Bridge, a criação do usuário, defina cada luz HUE para uma posição específica em sua imagem ou desative-a e ajuste as configurações do Hyperion automaticamente! Resumindo: você só precisa de alguns cliques e pronto!",
"wiz_hue_ip": "Hue Bridge IP:",
"wiz_hue_noids": "Este Hue Bridge não tem lâmpadas / listras, por favor, emparelhe-os antes com os Aplicativos Hue",
"wiz_hue_press_link": "Pressione o botão de link na Hue Bridge.",
"wiz_hue_searchb": "Procurando Bridge...",
"wiz_hue_title": "Assistente Philips Hue",
"wiz_hue_username": "ID de Usuário:",
"wiz_identify": "Identificar",
"wiz_identify_light": "identificar $1",
"wiz_ids_disabled": "Desativado",
"wiz_ids_entire": "Foto Inteira",
"wiz_noLights": "Nenhum $1 encontrado! Conecte as luzes à rede ou configure-as manualmente.",
"wiz_pos": "Posição/Estado",
"wiz_rgb_expl": "O ponto colorido muda a cada x segundos de cor (vermelho, verde), ao mesmo tempo que seus LEDs mudam de cor também. Responda às perguntas na parte inferior para verificar / corrigir a ordem dos bytes.",
"wiz_rgb_intro1": "Este assistente irá guiá-lo através do processo de localização da ordem correta de cores para seus leds. Clique em continuar para começar.",
"wiz_rgb_intro2": "Quando você precisa deste assistente? Exemplo: você define a cor vermelha, mas obtém verde ou azul. Você também pode usá-lo para a primeira configuração.",
"wiz_rgb_q": "Qual cor seus LEDs mostram, quando o ponto de cor acima mostra ...",
"wiz_rgb_qgend": "...verde?",
"wiz_rgb_qrend": "...vermelho?",
"wiz_rgb_switchevery": "Mudar de cor a cada ...",
"wiz_rgb_title": "Assistente de ordem de bytes RGB",
"wiz_wizavail": "Assistente disponível",
"wiz_yeelight_desc2": "Agora escolha quais lâmpadas devem ser adicionadas. A posição atribui a lâmpada a uma posição específica na sua \"imagem\". Lâmpadas desativadas não serão adicionadas. Para identificar lâmpadas individuais, pressione o botão à direita.",
"wiz_yeelight_intro1": "Este assistente configura o Hyperion para o sistema Yeelight. Os recursos são a detecção automática dos Yeelighs, definindo cada luz em uma posição específica na imagem ou desabilitá-la e ajustar as configurações do Hyperion automaticamente! Resumindo: você só precisa de alguns cliques e pronto!",
"wiz_yeelight_title": "Assistente Yeelight",
"wiz_yeelight_unsupported": "Não suportado"
}

View File

@ -0,0 +1,76 @@
{
"dashboard_alert_message_confedit_t": "Configuração modificada",
"dashboard_alert_message_confsave_success_t": "Configuração gravada",
"dashboard_componentbox_label_comp": "Componente",
"dashboard_componentbox_label_status": "Estado",
"dashboard_componentbox_label_title": "Estado dos componentes",
"dashboard_infobox_label_currenthyp": "A tua versão do Hyperion:",
"dashboard_infobox_label_disableh": "Desabilitar instância: $1",
"dashboard_infobox_label_enableh": "Habilitar instância: $1",
"dashboard_infobox_label_instance": "Instância",
"dashboard_infobox_label_latesthyp": "Última versão do Hyperion:",
"dashboard_infobox_label_platform": "Plataforma:",
"dashboard_infobox_label_ports": "Portos",
"dashboard_infobox_label_smartacc": "Acesso Inteligente",
"dashboard_infobox_label_statush": "Hyperion estado:",
"dashboard_infobox_label_title": "Informação",
"dashboard_infobox_message_updatesuccess": "Está a executar última versão do Hyperion.",
"dashboard_infobox_message_updatewarning": "Uma versão mais recente do Hyperion está disponível! ($1)",
"dashboard_label_intro": "O painel fornece uma visão geral rápida sobre o estado do Hyperion.",
"dashboard_newsbox_label_title": "Hyperion-Blog",
"dashboard_newsbox_noconn": "Não é possível conectar ao servidor Hyperion para recuperar os últimos posts, a sua conexão à Internet funciona?",
"dashboard_newsbox_readmore": "Ler mais",
"dashboard_newsbox_visitblog": "Visite o Hyperion-Blog",
"general_access_advanced": "Avançado",
"general_access_default": "Por omissão",
"general_access_expert": "Especialista",
"general_btn_back": "Voltar",
"general_btn_cancel": "Cancelar",
"general_btn_continue": "Continuar",
"general_btn_iswitch": "Interruptor",
"general_btn_next": "Seguinte",
"general_btn_off": "Desligar",
"general_btn_ok": "OK",
"general_btn_on": "Ligar",
"general_btn_restarthyperion": "Reiniciar o Hyperion",
"general_btn_save": "Garvar",
"general_btn_saveandreload": "Gravar e recarregar",
"general_btn_yes": "Sim",
"general_button_savesettings": "Gravar configurações",
"general_col_blue": "azul",
"general_col_green": "verde",
"general_col_red": "vermelho",
"general_comp_BLACKBORDER": "Detecção de barras",
"general_comp_BOBLIGHTSERVER": "Boblight Server",
"general_comp_FLATBUFSERVER": "Servidor Flatbuffers",
"general_comp_FORWARDER": "Forwarder",
"general_comp_GRABBER": "Plataforma de Captura",
"general_comp_LEDDEVICE": "Dispositivo LED",
"general_comp_PROTOSERVER": "Servidor de buffers de protocolo",
"general_comp_SMOOTHING": "Smoothing",
"general_comp_V4L": "Captura USB",
"general_country_de": "Alemanha",
"general_country_es": "Espanha",
"general_country_fr": "França",
"general_country_it": "Itália",
"general_country_nl": "Holanda",
"general_country_uk": "Reino Unido",
"general_country_us": "Estados Unidos da América",
"general_speech_cs": "Tcheco",
"general_speech_de": "Alemão",
"general_speech_en": "Inglês",
"general_speech_es": "Espanhol",
"general_speech_it": "Italiano",
"general_webui_title": "Hyperion - Configuração Web",
"general_wiki_moreto": "Mais informação a \"$1\" na nossa Wiki",
"main_menu_colors_conf_token": "Processamento de imagem",
"main_menu_configuration_token": "Configuração",
"main_menu_dashboard_token": "Painel",
"main_menu_effect_conf_token": "Efeitos",
"main_menu_general_conf_token": "Geral",
"main_menu_grabber_conf_token": "Hardware de captura",
"main_menu_leds_conf_token": "LED Hardware",
"main_menu_network_conf_token": "Serviços de rede",
"main_menu_remotecontrol_token": "Controlo remoto",
"main_menu_support_token": "Suporte"
}

View File

@ -26,6 +26,7 @@
"dashboard_alert_message_confsave_success": "Configurația ta Hyperion a fost salvată cu succes. Modificările sunt active acum.",
"dashboard_componentbox_label_title": "Stare componente",
"dashboard_infobox_label_currenthyp": "Versiunea ta Hyperion:",
"dashboard_infobox_label_disableh": "Dezactivare Hyperion",
"dashboard_infobox_label_enableh": "Activare Instans: $1",
"dashboard_infobox_label_instance": "Instanță:",
"dashboard_infobox_label_latesthyp": "Cea mai nouă versiune Hyperion:",

View File

@ -1,7 +1,8 @@
{
"InfoDialog_lang_title": "Настройки языка",
"InfoDialog_access_title": "Уровень настроек",
"about_build": "Сборка",
"about_builddate": "Дата сборки",
"about_contribute": "Разрабатывайте Hyperion с нами!",
"about_translations": "Переводы",
"about_version": "Версия",
"conf_colors_blackborder_intro": "Пропустить черные полосы, где бы они ни были. Каждый режим использует другой алгоритм обнаружения, который настроен для особых ситуаций.",
@ -12,13 +13,20 @@
"conf_effect_path_intro": "Загрузить эффекты из определенных мест. Дополнительно вы можете отключить отдельные эффекты по имени, чтобы скрыть их от всех списков эффектов.",
"conf_general_impexp_expbtn": "Экспорт",
"conf_general_impexp_impbtn": "Импорт",
"conf_general_impexp_l1": "Для импорта настроек выберите файл конфигурации и нажмите \"Импорт\".",
"conf_general_impexp_l2": "Для экспорта настроек нажмите \"Экспорт\". Поле чего ваш браузер загрузит файл.",
"conf_general_impexp_title": "Импорт/Экспорт конфигурации",
"conf_general_intro": "Настройка Hyperion и WebUI которые не подошли в другие категории.",
"conf_general_label_title": "Основные настройки",
"conf_grabber_fg_intro": "Захват платформы - это захват вашей локальной системы в качестве источника ввода, на котором установлен Hyperion.",
"conf_grabber_fg_intro": "Платформа захвата - это локальный источник захвата ввода, на устройстве на котором установлен Hyperion.",
"conf_grabber_v4l_intro": "USB-захват - это устройство захвата, подключенное через USB, которое используется для ввода исходных изображений для обработки.",
"conf_helptable_expl": "Объяснение",
"conf_helptable_option": "Настройки",
"conf_leds_contr_label_contrtype": "Тип контроллера:",
"conf_leds_device_intro": "Hyperion поддерживает множество контроллеров для передачи данных на целевое устройство. Выберите светодиодный контроллер из списка и настройте его. Мы выбрали лучшие настройки по умолчанию для каждого устройства.",
"conf_leds_info_ws281x": "Для данного типа контроллера Hyperion должен быть запущен с 'root' правами!",
"conf_leds_layout_blacklist_num_title": "Количество светодиодов",
"conf_leds_layout_blacklist_start_title": "Начальный светодиод",
"conf_leds_layout_button_updsim": "Просмотр обновления",
"conf_leds_layout_checkp1": "Черный светодиод - это ваш первый светодиод, первый светодиод - это точка, в которую вы вводите сигнал данных.",
"conf_leds_layout_cl_bottom": "Снизу",
@ -29,18 +37,28 @@
"conf_leds_layout_cl_reversdir": "Обратное направление",
"conf_leds_layout_cl_right": "Справа",
"conf_leds_layout_cl_top": "Сверху",
"conf_leds_layout_frame": "Классический макет (Светодиодная рамка)",
"conf_leds_layout_ma_position": "Вход",
"conf_leds_layout_ma_vert": "Вертикальный",
"conf_leds_layout_matrix": "Матричный макет (Светодиодная стена)",
"conf_leds_layout_pbl": "Нижняя левая точка",
"conf_leds_layout_pbr": "Нижняя правая точка",
"conf_leds_layout_preview_totalleds": "Всего диодов: $1",
"conf_leds_layout_ptl": "Верхняя левая точка",
"conf_leds_layout_ptlh": "Горизонтальный",
"conf_leds_layout_ptlv": "Вертикальный",
"conf_leds_layout_ptr": "Верхняя правая точка",
"conf_leds_nav_label_ledcontroller": "Светодиодный контроллер",
"conf_leds_nav_label_ledlayout": "Светодиодный макет",
"conf_leds_optgroup_debug": "Режим отладки",
"conf_leds_optgroup_debug": "Отладка",
"conf_leds_optgroup_network": "Сеть",
"conf_leds_optgroup_other": "Другое",
"conf_leds_optgroup_usb": "USB/Последовательный порт",
"conf_logging_btn_autoscroll": "Автоматическая прокрутка",
"conf_logging_lastreports": "Предыдущий отчет",
"conf_logging_report": "Отчет",
"conf_logging_yourlink": "Ссылка на твой отчет",
"conf_logging_uploading": "Подготовка данных...",
"conf_logging_yourlink": "Ссылка на ваш отчет",
"dashboard_alert_message_confedit": "Конфигурация Hyperion была изменена. Для применения необходимо перезапустить Hyperion.",
"dashboard_alert_message_confedit_t": "Конфигурация изменена",
"dashboard_alert_message_confsave_success": "Ваша конфигурация Hyperion успешно сохранена. Ваши изменения теперь активны.",
@ -56,16 +74,24 @@
"dashboard_infobox_label_instance": "Пример:",
"dashboard_infobox_label_latesthyp": "Последняя версия Hyperion:",
"dashboard_infobox_label_platform": "Платформа:",
"dashboard_infobox_label_ports": "Порты (flat|proto):",
"dashboard_infobox_label_port_json": "JSON-сервер",
"dashboard_infobox_label_ports": "Порты",
"dashboard_infobox_label_smartacc": "Умный доступ",
"dashboard_infobox_label_statush": "Статус Hyperion:",
"dashboard_infobox_label_title": "Информация",
"dashboard_infobox_message_updatesuccess": "Вы используете актуальную версию Hyperion.",
"dashboard_infobox_message_updatewarning": "Новая версия Hyperion доступна! ($1)",
"dashboard_label_intro": "Панель инструментов покажет вам краткий обзор состояния Hyperion и покажет последние новости блога Hyperion.",
"dashboard_label_intro": "Панель инструментов покажет вам краткий обзор состояния Hyperion.",
"dashboard_newsbox_label_title": "Hyperion Блог",
"dashboard_newsbox_noconn": "Невозможно подключиться к блогу Hyperion для получения последних постов, Ваше подключение к интернету работает?",
"dashboard_newsbox_readmore": "Подробнее",
"dashboard_newsbox_visitblog": "Посетить Hyperion Блог",
"edt_append_hz": "Гц",
"edt_append_ms": "мс",
"edt_append_ns": "нс",
"edt_append_percent_h": "% гор.",
"edt_append_percent_v": "% верт.",
"edt_append_s": "сек",
"edt_conf_bb_mode_title": "Режим",
"edt_conf_color_black_title": "Черный",
"edt_conf_color_blue_title": "Синий",
@ -78,18 +104,28 @@
"edt_conf_color_white_title": "Белый",
"edt_conf_color_yellow_title": "Желтый",
"edt_conf_effp_disable_itemtitle": "Эффект",
"edt_conf_enum_BOTH": "Горизонтальный и вертикальный",
"edt_conf_enum_HORIZONTAL": "Горизонтальный",
"edt_conf_enum_VERTICAL": "Вертикальный",
"edt_conf_enum_bgr": "BGR",
"edt_conf_enum_bottom_up": "Снизу вверх",
"edt_conf_enum_brg": "BRG",
"edt_conf_enum_color": "Цвет",
"edt_conf_enum_decay": "Задержка",
"edt_conf_enum_dl_error": "Ошибка",
"edt_conf_enum_effect": "Эффект",
"edt_conf_enum_gbr": "GBR",
"edt_conf_enum_grb": "GRB",
"edt_conf_enum_left_right": "Слева на право",
"edt_conf_enum_logdebug": "Отладка",
"edt_conf_enum_multicolor_mean": "Мультицвет",
"edt_conf_enum_please_select": "Пожалуйста выберите",
"edt_conf_enum_rbg": "RBG",
"edt_conf_enum_rgb": "RGB",
"edt_conf_enum_right_left": "Справа на лево",
"edt_conf_enum_top_down": "Сверху вниз",
"edt_conf_enum_transeffect_smooth": "Сглаживание",
"edt_conf_fbs_timeout_title": "Таймаут",
"edt_conf_fg_device_title": "Устройство",
"edt_conf_fg_display_title": "Дисплей",
"edt_conf_fg_height_title": "Высота",
"edt_conf_fg_type_title": "Тип",
@ -97,10 +133,15 @@
"edt_conf_fge_color_title": "Цвет",
"edt_conf_fge_effect_title": "Эффект",
"edt_conf_fge_type_title": "Тип",
"edt_conf_gen_configVersion_title": "Версия конфигурации",
"edt_conf_gen_heading_title": "Общие настройки",
"edt_conf_gen_name_title": "Имя конфигурации",
"edt_conf_instC_screen_grabber_device_title": "Устройство захвата экрана",
"edt_conf_instC_video_grabber_device_title": "Устройство захвата видео",
"edt_conf_js_heading_title": "JSON сервер",
"edt_conf_log_level_title": "Уровень-лога",
"edt_conf_log_heading_title": "Логгирование",
"edt_conf_log_level_title": "Уровень лога",
"edt_conf_net_heading_title": "Сеть",
"edt_conf_pbs_timeout_title": "Таймаут",
"edt_conf_smooth_heading_title": "Сглаживание",
"edt_conf_smooth_time_ms_title": "Время",
@ -108,23 +149,48 @@
"edt_conf_smooth_type_title": "Тип",
"edt_conf_smooth_updateDelay_title": "Задержка обновления",
"edt_conf_smooth_updateFrequency_title": "Частота обновления",
"edt_conf_v4l2_cecDetection_title": "Обнаружение CEC",
"edt_conf_v4l2_cropLeft_title": "Обрезать слева",
"edt_conf_v4l2_cropRight_title": "Обрезать справа",
"edt_conf_v4l2_cropTop_title": "Обрезать свверху",
"edt_conf_v4l2_device_title": "Устройство",
"edt_conf_v4l2_encoding_title": "Формат кодирования",
"edt_conf_v4l2_flip_title": "Поворот изображения",
"edt_conf_v4l2_framerate_title": "Кадров в секунду",
"edt_conf_v4l2_input_title": "Вход",
"edt_conf_v4l2_resolution_title": "Разрешение устройства",
"edt_conf_v4l2_standard_title": "Видео стандарт",
"edt_conf_webc_sslport_title": "Порт HTTPS",
"edt_dev_auth_key_title": "Токен аудетицикафии",
"edt_dev_enum_white_off": "Выключить белый ",
"edt_dev_general_heading_title": "Общие настройки",
"edt_dev_general_name_title": "Имя конфигурации",
"edt_dev_spec_brightnessMax_title": "Максимальная яркость",
"edt_dev_spec_brightnessMin_title": "Минимальная яркость",
"edt_dev_spec_brightnessOverwrite_title": "Перезаписать яркость",
"edt_dev_spec_brightness_title": "Яркость",
"edt_dev_spec_gamma_title": "Гамма",
"edt_dev_spec_globalBrightnessControlMaxLevel_title": "Максимальный текущий уровень",
"edt_dev_spec_intervall_title": "Интервал",
"edt_dev_spec_lightid_itemtitle": "Идентификатор (ID)",
"edt_dev_spec_lights_name": "Имя",
"edt_dev_spec_networkDevicePort_title": "Порт",
"edt_dev_spec_port_title": "Порт",
"edt_dev_spec_syncOverwrite_title": "Выключить синхронизацию",
"edt_dev_spec_username_title": "Имя пользователя",
"edt_eff_candle_header": "Свеча",
"edt_eff_color": "Цвет",
"edt_eff_frequency": "Частота",
"edt_eff_initial_blink": "Мигнуть для привлечения внимания",
"edt_eff_interval": "Интервал",
"edt_eff_ledtest_header": "Тест LED",
"edt_eff_margin": "Отступ",
"edt_eff_plasma_header": "Плазма",
"edt_eff_repeat": "Повтор",
"edt_eff_smooth_custom": "Использовать сглаживание",
"edt_eff_smooth_time_ms": "Время сглаживания",
"edt_eff_speed": "Скорость",
"edt_msg_button_delete_all_title": "Удалить всё",
"effectsconfigurator_button_conttest": "Непрерывный тест",
"effectsconfigurator_button_deleffect": "Удалить эффект",
"effectsconfigurator_button_editeffect": "Загрузить эффект",
@ -134,46 +200,69 @@
"effectsconfigurator_editdeleff": "Удалить/Загрузить эффект",
"effectsconfigurator_label_chooseeff": "Изменить шаблон",
"effectsconfigurator_label_effectname": "Имя эффекта",
"general_access_advanced": "Опытный",
"general_access_advanced": "Расширенный",
"general_access_default": "По умолчанию",
"general_access_expert": "Эксперт",
"general_btn_back": "Назад",
"general_btn_cancel": "Отмена",
"general_btn_continue": "Продолжить",
"general_btn_delete": "Удалить",
"general_btn_iswitch": "Переключить",
"general_btn_next": "Далее",
"general_btn_off": "Выкл",
"general_btn_ok": "ОК",
"general_btn_on": "Вкл",
"general_btn_overwrite": "Перезаписать",
"general_btn_rename": "Переименовать",
"general_btn_restarthyperion": "Перезапустить Hyperion",
"general_btn_save": "Сохранить",
"general_btn_saveandreload": "Сохранить и перезагрузить",
"general_btn_start": "Начать",
"general_btn_yes": "Да",
"general_button_savesettings": "Сохранить настройки",
"general_col_blue": "синий",
"general_col_green": "зеленый",
"general_col_red": "красный",
"general_comp_BLACKBORDER": "Определение черных полос",
"general_comp_BOBLIGHTSERVER": "Boblight cервер",
"general_comp_GRABBER": "Захват экрана",
"general_comp_LEDDEVICE": "Светодиодное устройство (LED)",
"general_comp_SMOOTHING": "Сглаживание",
"general_comp_V4L": "USB захват",
"general_country_cn": "Китай",
"general_country_de": "Германия",
"general_country_es": "Испания",
"general_country_fr": "Франция",
"general_country_it": "Италия",
"general_country_nl": "Нидерланды",
"general_country_ru": "Россия",
"general_country_uk": "Великобритания",
"general_country_us": "Соединённые Штаты Америки",
"general_disabled": "отключено",
"general_enabled": "включено",
"general_speech_cs": "Чешский",
"general_speech_de": "Немецкий",
"general_speech_en": "Английский",
"general_speech_es": "Испанский",
"general_speech_fr": "французский",
"general_speech_it": "Итальянский",
"general_speech_nb": "норвежский",
"general_speech_pt": "португальский",
"general_speech_ru": "русский",
"general_speech_tr": "турецкий",
"general_speech_vi": "вьетнамский",
"general_speech_zh-CN": "китайский (упрощенный)",
"general_webui_title": "Hyperion - Веб-настройка",
"general_wiki_moreto": "Больше информации о \"$1\" вы можете узнать на нашем",
"infoDialog_checklist_title": "Список желаний!",
"infoDialog_general_error_title": "Ошибка",
"infoDialog_general_success_title": "Успешно",
"infoDialog_general_warning_title": "Предупреждение",
"infoDialog_password_current_text": "Текущий пароль",
"infoDialog_password_new_text": "Новый пароль",
"infoDialog_username_text": "Имя пользователя",
"main_ledsim_btn_togglelednumber": "Порядковые номера светодиодов",
"main_ledsim_btn_toggleleds": "Отобразить светодиоды (LED)",
"main_ledsim_btn_togglelivevideo": "Живое видео",
"main_ledsim_text": "Живая визуализация светодиодных цветов и текущий видео поток вашего устройства захвата.",
"main_ledsim_title": "Светодиодная визуализация (LED)",
@ -186,6 +275,7 @@
"main_menu_general_conf_token": "Общее",
"main_menu_grabber_conf_token": "Устройство захвата",
"main_menu_input_selection_token": "Выбор входа",
"main_menu_instcapture_conf_token": "Источники",
"main_menu_leds_conf_token": "LED Оборудование",
"main_menu_logging_token": "Лог",
"main_menu_network_conf_token": "Сетевые сервисы",
@ -198,8 +288,12 @@
"remote_color_label": "Цвета/Эффекты",
"remote_color_label_color": "Цвет:",
"remote_effects_label_effects": "Эффект:",
"remote_effects_label_picture": "Изображение:",
"remote_input_duration": "Длительность:",
"remote_input_ip": "IP Адрес:",
"remote_input_owner": "Тип",
"remote_input_priority": "Приоритет",
"remote_videoMode_2D": "2D",
"remote_videoMode_label": "Видео режим:",
"support_label_btctext": "Адрес:",
"support_label_donate": "Пожертвуйте или используйте наши партнерские ссылки",
@ -219,14 +313,18 @@
"support_label_yttext": "Не нравятся картинки? Проверьте наш канал на Youtube!",
"update_button_changelog": "Полный список изменений",
"update_button_install": "Установка",
"update_label_description": "Описание:",
"update_label_type": "Тип:",
"update_versreminder": "Твоя версия: 1$",
"wiz_cc_btn_stop": "Остановить видео",
"wiz_cc_link": "Нажми на меня!",
"wiz_hue_create_user": "Создать нового пользователя",
"wiz_hue_e_use_group": "Использовать группу",
"wiz_hue_ip": "Hue мост IP:",
"wiz_hue_title": "Philips Hue конфигурация",
"wiz_hue_username": "Пользователь ID:",
"wiz_ids_disabled": "Деактивированный",
"wiz_rgb_qgend": "...зеленый?",
"wiz_rgb_qrend": "...красный?"
"wiz_rgb_qrend": "...красный?",
"wiz_yeelight_unsupported": "Неподдерживаемый"
}

View File

@ -5,8 +5,6 @@
"InfoDialog_changePassword_title": "Ändra lösenord",
"InfoDialog_iswitch_text": "Om du kör mer än en Hyperion-instans i ditt lokala nätverk kan du växla mellan webbkonfigurationerna. Välj Hyperion-instansen som du vill styra nedan och växla!",
"InfoDialog_iswitch_title": "Hyperion-växlare",
"InfoDialog_lang_text": "Om du inte gillar resultatet av automatisk språkdetektering kan du skriva över det här.",
"InfoDialog_lang_title": "Språkinställning",
"InfoDialog_nowrite_foottext": "Webbanvändargränssnittet låses upp automatiskt när du har löst problemet!",
"InfoDialog_nowrite_text": "Hyperion kan inte skriva till din nuvarande laddade konfigurationsfil. Reparera filbehörigheterna för att fortsätta.",
"InfoDialog_nowrite_title": "skrivtillståndsfel!",
@ -45,9 +43,19 @@
"conf_grabber_v4l_intro": "USB-fångst använder en fångarenhet ansluten via USB för att mata in källbilder för bearbetning.",
"conf_helptable_expl": "Förklaring",
"conf_helptable_option": "Alternativ",
"conf_leds_config_error": "Fel i konfiguration av LED/LED-layout",
"conf_leds_config_warning": "Kontrollera din LED/LED-layoutkonfiguration",
"conf_leds_contr_label_contrtype": "Styrenhetstyp:",
"conf_leds_device_info_log": "Om dina lysdioder inte fungerar, kolla här för fel:",
"conf_leds_device_intro": "Hyperion stöder många styrenheter för att överföra data till din målenhet. Välj en LED-styrenhet ur listan och konfigurera den. Vi har valt de bästa standardinställningarna för varje enhet.",
"conf_leds_error_hwled_gt_layout": "LED-antalet ($1) är större än lysdioderna som konfigureras via layout ($2), <br>$3 {{plural:$3|LED|LEDs}} förblir svarta om du fortsätter.",
"conf_leds_error_hwled_lt_layout": "LED-antalet ($1) är mindre än lysdioderna som konfigureras via layout ($2). <br> Antalet lysdioder som konfigurerats i layouten får inte överstiga de tillgängliga lysdioderna",
"conf_leds_layout_advanced": "Avancerade inställningar",
"conf_leds_layout_blacklist_num_title": "Antal lysdioder",
"conf_leds_layout_blacklist_rule_title": "Svartlistregel",
"conf_leds_layout_blacklist_rules_title": "Svartlistregler",
"conf_leds_layout_blacklist_start_title": "Starta LED",
"conf_leds_layout_blacklistleds_title": "Svartlista lysdioder",
"conf_leds_layout_btn_checklist": "Visa checklista",
"conf_leds_layout_button_savelay": "Spara layout",
"conf_leds_layout_button_updsim": "Uppdatera förhandsvisning",
@ -113,17 +121,19 @@
"conf_leds_layout_textf1": "Detta textfält visar (som standard) din nuvarande laddade layout och skrivs över om du genererar en ny med alternativen ovan. Valfritt kan du utföra ytterligare redigeringar.",
"conf_leds_nav_label_ledcontroller": "LED-styrenhet",
"conf_leds_nav_label_ledlayout": "LED layout",
"conf_leds_note_layout_overwrite": "OBS: Att skriva över skapar en standardlayout för {{plural:$1| en LED| alla $1 lysdioderna}} som ges av maskinvarans LED-antal",
"conf_leds_optgroup_RPiGPIO": "RPi GPIO",
"conf_leds_optgroup_RPiPWM": "RPi PWM",
"conf_leds_optgroup_RPiSPI": "RPi SPI",
"conf_leds_optgroup_debug": "Debug",
"conf_leds_optgroup_network": "Nätverk",
"conf_leds_optgroup_other": "Annat",
"conf_leds_optgroup_usb": "USB",
"conf_logging_btn_autoscroll": "Autorullning",
"conf_logging_btn_pbupload": "Ladda upp en rapport för supportförfrågningar",
"conf_logging_contpolicy": "Rapportera integritetspolicy",
"conf_logging_label_intro": "Område för att kontrollera loggmeddelanden, du ser mer eller mindre information beroende av den inställda loggningsnivån.",
"conf_logging_lastreports": "Tidigare rapporter",
"conf_logging_logoutput": "Log output",
"conf_logging_nomessage": "Inga loggmeddelanden finns tillgängliga.",
"conf_logging_report": "Rapportera",
"conf_logging_uplfailed": "Uppladdningen misslyckades! Kontrollera din internetanslutning!",
@ -164,14 +174,18 @@
"dashboard_infobox_label_instance": "Instans:",
"dashboard_infobox_label_latesthyp": "Senaste Hyperion-versionen:",
"dashboard_infobox_label_platform": "Plattform",
"dashboard_infobox_label_ports": "Portar (flat|proto):",
"dashboard_infobox_label_port_flat": "Flatbuffer:",
"dashboard_infobox_label_port_json": "JSON-Server:",
"dashboard_infobox_label_port_proto": "Protobuffer:",
"dashboard_infobox_label_ports": "Portar",
"dashboard_infobox_label_ports_websocket": "WebSocket (ws|wss):",
"dashboard_infobox_label_smartacc": "Smart Åtkomst",
"dashboard_infobox_label_statush": "Hyperion-status:",
"dashboard_infobox_label_title": "Information",
"dashboard_infobox_label_watchedversionbranch": "Sedd grenversion",
"dashboard_infobox_message_updatesuccess": "Du använder den senaste versionen av Hyperion.",
"dashboard_infobox_message_updatewarning": "En nyare version av Hyperion finns tillgänglig! ($1)",
"dashboard_label_intro": "Denna sida ger dig en snabb överblick över din Hyperion-installation och visar dig de senaste nyheterna från Hyperion-bloggen.",
"dashboard_label_intro": "Denna sida ger dig en snabb överblick över din Hyperion-installation.",
"dashboard_message_default_password": "Standardlösenordet för webbanvändargränssnittet är inställt. Vi rekommenderar starkt att ändra detta.",
"dashboard_message_default_password_t": "Webbanvändargränssnittets standardlösenord är inställt",
"dashboard_message_do_not_show_again": "Visa inte detta meddelande igen",
@ -261,12 +275,14 @@
"edt_conf_enum_automatic": "Automatisk",
"edt_conf_enum_bbclassic": "Klassisk",
"edt_conf_enum_bbdefault": "Standard",
"edt_conf_enum_bbletterbox": "Letterbox",
"edt_conf_enum_bbosd": "OSD",
"edt_conf_enum_bgr": "BGR",
"edt_conf_enum_bottom_up": "Botten upp",
"edt_conf_enum_brg": "BRG",
"edt_conf_enum_color": "Färg",
"edt_conf_enum_custom": "Anpassad",
"edt_conf_enum_decay": "Förfall",
"edt_conf_enum_dl_error": "Fel",
"edt_conf_enum_dl_informational": "Informativ",
"edt_conf_enum_dl_nodebug": "Ingen felsökning",
@ -286,6 +302,7 @@
"edt_conf_enum_logverbose": "Mångordig",
"edt_conf_enum_logwarn": "Varning",
"edt_conf_enum_multicolor_mean": "Flerfärgad",
"edt_conf_enum_please_select": "Välj",
"edt_conf_enum_rbg": "RBG",
"edt_conf_enum_rgb": "RGB",
"edt_conf_enum_right_left": "Höger till vänster",
@ -325,6 +342,7 @@
"edt_conf_fw_json_expl": "Ett JSON-mål per linje. Består av IP:PORT (exempel: 127.0.0.1:19446)",
"edt_conf_fw_json_itemtitle": "JSON-mål",
"edt_conf_fw_json_title": "Lista över JSON-klienter",
"edt_conf_gen_configVersion_title": "Konfigurationsversion",
"edt_conf_gen_heading_title": "Allmänna Inställningar",
"edt_conf_gen_name_expl": "Ett användardefinierat namn som används för att identifiera Hyperion. (Hjälpsamt om du har mer än en Hyperion-instans)",
"edt_conf_gen_name_title": "Konfigurationsnamn",
@ -366,7 +384,15 @@
"edt_conf_pbs_timeout_title": "Timeout",
"edt_conf_smooth_continuousOutput_expl": "Uppdatera lysdioderna även om det inte är någon förändring i bilden.",
"edt_conf_smooth_continuousOutput_title": "Kontinuerlig utgång",
"edt_conf_smooth_decay_expl": "Förfallets hastighet. 1 är linjär, större värden har starkare effekt.",
"edt_conf_smooth_decay_title": "Förfall-kraft",
"edt_conf_smooth_dithering_expl": "Förbättra färgnoggrannheten vid höga utskriftshastigheter genom att växla mellan intilliggande färger.",
"edt_conf_smooth_dithering_title": "Dithering",
"edt_conf_smooth_heading_title": "Utjämning",
"edt_conf_smooth_interpolationRate_expl": "Hastighet för beräkning av släta mellanramar.",
"edt_conf_smooth_interpolationRate_title": "Interpoleringshastighet",
"edt_conf_smooth_outputRate_expl": "Utgångshastigheten till din LED-styrenhet.",
"edt_conf_smooth_outputRate_title": "Utgångsfrekvens",
"edt_conf_smooth_time_ms_expl": "Hur länge ska utjämningen samla bilder?",
"edt_conf_smooth_time_ms_title": "Tid",
"edt_conf_smooth_type_expl": "Typ av utjämning.",
@ -426,12 +452,15 @@
"edt_conf_webc_sslport_expl": "Port för HTTPS webbserver",
"edt_conf_webc_sslport_title": "HTTPS-Port",
"edt_dev_auth_key_title": "Autentiserings-Token",
"edt_dev_auth_key_title_info": "Autentiseringstoken krävs för att få åtkomst till enheten",
"edt_dev_enum_sub_min_cool_adjust": "Ta bort kallvit",
"edt_dev_enum_sub_min_warm_adjust": "Ta bort varmvitt",
"edt_dev_enum_subtract_minimum": "Dra minst",
"edt_dev_enum_white_off": "Vit av",
"edt_dev_general_colorOrder_title": "RGB-byte-ordning",
"edt_dev_general_colorOrder_title_info": "Enhetens färgordning",
"edt_dev_general_hardwareLedCount_title": "Antal lysdioder i hårdvaran",
"edt_dev_general_hardwareLedCount_title_info": "Antalet fysiska lysdioder som är tillgängliga för den givna enheten",
"edt_dev_general_heading_title": "Allmänna Inställningar",
"edt_dev_general_name_title": "Konfigurationsnamn",
"edt_dev_general_rewriteTime_title": "Uppdateringstid",
@ -445,7 +474,9 @@
"edt_dev_spec_brightnessFactor_title": "Ljusstyrka faktor",
"edt_dev_spec_brightnessMax_title": "Högsta ljusstyrka",
"edt_dev_spec_brightnessMin_title": "Minsta ljusstyrka",
"edt_dev_spec_brightnessOverwrite_title": "Skriv över ljusstyrka",
"edt_dev_spec_brightnessThreshold_title": "Minsta signalstyrka för ljusstyrka",
"edt_dev_spec_brightness_title": "Ljusstyrka",
"edt_dev_spec_chanperfixture_title": "Kanaler per fixtur",
"edt_dev_spec_cid_title": "CID",
"edt_dev_spec_clientKey_title": "Klientnyckel",
@ -453,9 +484,16 @@
"edt_dev_spec_debugLevel_title": "Felsökningsnivå för Streameranslutning",
"edt_dev_spec_debugStreamer_title": "Streamerfelsökning",
"edt_dev_spec_delayAfterConnect_title": "Försening efter anslutning",
"edt_dev_spec_devices_discovered_none": "Inga enheter upptäckta",
"edt_dev_spec_devices_discovered_title": "Upptäckta enheter",
"edt_dev_spec_devices_discovered_title_info": "Välj din upptäckta LED-enhet",
"edt_dev_spec_devices_discovered_title_info_custom": "Välj din upptäckta LED-enhet eller konfigurera en manuellt",
"edt_dev_spec_devices_discovery_inprogress": "Upptäckt pågår",
"edt_dev_spec_dithering_title": "Ditrering",
"edt_dev_spec_dmaNumber_title": "DMA-kanal",
"edt_dev_spec_gamma_title": "Gamma",
"edt_dev_spec_globalBrightnessControlMaxLevel_title": "Max strömnivå",
"edt_dev_spec_globalBrightnessControlThreshold_title": "Adaptiv strömtröskel",
"edt_dev_spec_gpioBcm_title": "GPIO-stift",
"edt_dev_spec_gpioMap_title": "GPIO-kartläggning",
"edt_dev_spec_gpioNumber_title": "GPIO-nummer",
@ -465,6 +503,7 @@
"edt_dev_spec_intervall_title": "Intervall",
"edt_dev_spec_invert_title": "Invertera signal",
"edt_dev_spec_latchtime_title": "Spärrtid",
"edt_dev_spec_latchtime_title_info": "Spärrtiden är den tidsram som en enhet kräver tills nästa uppdatering kan bearbetas. Under den tidsramen ignoreras eventuella uppdateringar.",
"edt_dev_spec_ledIndex_title": "LED-index",
"edt_dev_spec_ledType_title": "LED-Typ",
"edt_dev_spec_lightid_itemtitle": "ID",
@ -489,6 +528,7 @@
"edt_dev_spec_printTimeStamp_title": "Lägg till tidsstämpel",
"edt_dev_spec_pwmChannel_title": "PWM-kanal",
"edt_dev_spec_restoreOriginalState_title": "Återställ lampans ursprungliga tillstånd när den inaktiveras",
"edt_dev_spec_restoreOriginalState_title_info": "Återställ enhetens ursprungliga tillstånd när enheten är inaktiverad",
"edt_dev_spec_serial_title": "Serienummer",
"edt_dev_spec_spipath_title": "SPI-väg",
"edt_dev_spec_sslHSTimeoutMax_title": "Maximal Streamer-handskakningstimeout",
@ -496,7 +536,9 @@
"edt_dev_spec_sslReadTimeout_title": "Streamer-avläsningstimeout",
"edt_dev_spec_switchOffOnBlack_title": "Stäng av när svart",
"edt_dev_spec_switchOffOnbelowMinBrightness_title": "Stäng av, under minimum",
"edt_dev_spec_syncOverwrite_title": "Inaktivera synkronisering",
"edt_dev_spec_targetIpHost_title": "Mål IP/värdnamn",
"edt_dev_spec_targetIpHost_title_info": "Enhetens värdnamn eller IP-adress",
"edt_dev_spec_targetIp_title": "Mål-IP",
"edt_dev_spec_transeffect_title": "Övergångseffekt",
"edt_dev_spec_transistionTimeExtra_title": "Extra mörkertid",
@ -686,6 +728,7 @@
"general_btn_off": "Av",
"general_btn_ok": "OK",
"general_btn_on": "På",
"general_btn_overwrite": "Skriv över",
"general_btn_rename": "Döp om",
"general_btn_restarthyperion": "Starta om Hyperion",
"general_btn_save": "Spara",
@ -708,25 +751,33 @@
"general_comp_PROTOSERVER": "Protokoll bufferserver",
"general_comp_SMOOTHING": "Utjämning",
"general_comp_V4L": "USB-fångst",
"general_country_cn": "Kina",
"general_country_de": "Tyskland",
"general_country_es": "Spanien",
"general_country_fr": "Frankrike",
"general_country_it": "Italien",
"general_country_nl": "Nederländerna",
"general_country_ru": "Ryssland",
"general_country_uk": "Storbritannien",
"general_country_us": "USA",
"general_disabled": "Inaktiverad",
"general_enabled": "Aktiverad",
"general_speech_cs": "Tjeckiska",
"general_speech_de": "Tyska",
"general_speech_en": "Engelska",
"general_speech_es": "Spanska",
"general_speech_fr": "Franska",
"general_speech_it": "Italienska",
"general_speech_nb": "Norska (Bokmål)",
"general_speech_nl": "Holländska",
"general_speech_pl": "Polska",
"general_speech_pt": "Portugisiska",
"general_speech_ro": "Rumänska",
"general_speech_ru": "Ryska",
"general_speech_sv": "Svenska",
"general_speech_tr": "Turkiska",
"general_speech_vi": "Vietnamesiska",
"general_speech_zh-CN": "Kinesiska (förenklad)",
"general_webui_title": "Hyperion - Webbkonfiguration",
"general_wiki_moreto": "Mer information om \"$1\" finns i vår",
"infoDialog_checklist_title": "Checklista!",
@ -806,6 +857,8 @@
"remote_maptype_label_multicolor_mean": "Flerfärgad",
"remote_maptype_label_unicolor_mean": "Enfärgad",
"remote_optgroup_syseffets": "Tillhandahållna effekter",
"remote_optgroup_templates_custom": "Användarmallar",
"remote_optgroup_templates_system": "Systemmallar",
"remote_optgroup_usreffets": "Användareffekter",
"remote_videoMode_2D": "2D",
"remote_videoMode_3DSBS": "3DSBS",
@ -867,6 +920,10 @@
"wiz_cc_testintrok": "Klicka på knappen nedan för att starta en testvideo.",
"wiz_cc_testintrowok": "Kolla in följande länk för att ladda ner testvideor:",
"wiz_cc_title": "Färgkalibreringsguiden",
"wiz_cololight_desc2": "Välj nu vilka Cololights som ska läggas till. För att identifiera enstaka lampor, tryck på knappen till höger.",
"wiz_cololight_intro1": "Den här guiden konfigurerar Hyperion för Cololight-systemet. Funktionerna är den automatiska detekteringen av Cololight och justerar Hyperion-inställningarna automatiskt! Kort sagt: Allt du behöver är några klick och du är klar! <br /> Obs! I fallet med Cololight Strip kan du behöva korrigera antal LEDs och layout manuellt.",
"wiz_cololight_noprops": "Det går inte att få enhetsegenskaper - Definiera antal LED-lampor manuellt",
"wiz_cololight_title": "Cololight Guide",
"wiz_guideyou": "$1 guidar dig genom inställningarna. Tryck bara på knappen!",
"wiz_hue_blinkblue": "Låt ID $1 lysa blått",
"wiz_hue_clientkey": "Klientnyckel:",
@ -900,6 +957,7 @@
"wiz_identify_light": "Identifiera $1",
"wiz_ids_disabled": "Inaktiverad",
"wiz_ids_entire": "Hela bilden",
"wiz_noLights": "Ingen $1 hittades! Vänligen anslut lamporna till nätverket eller konfigurera dem manuellt.",
"wiz_pos": "Position/läge",
"wiz_rgb_expl": "Den färgade punkten kommer att ändra färg (röd, grön) varje x sekund, samtidigt som dina lysdioder byter till den färgen. Svara på frågorna längst ner för att kontrollera/korrigera din byte-order.",
"wiz_rgb_intro1": "Den här guiden leder dig genom processen för att hitta rätt färgordning för dina lysdioder. Klicka på Fortsätt för att börja.",

View File

@ -1,14 +1,13 @@
{
"InfoDialog_changePassword_success": "Parola başarıyla değiştirildi!",
"InfoDialog_changePassword_title": "Parolayı Değiştir",
"InfoDialog_lang_text": "Eğer otomatık dil seçimini beğenmediyseniz buradan değiştirebilirsiniz.",
"InfoDialog_lang_title": "Dil ayarları",
"about_build": "Yapılandırma",
"about_builddate": "Yapılandırma tarıhı",
"about_contribute": "Hyperion'u bizimle birlikte geliştirin!",
"about_resources": "$1 kitaplıkları",
"about_translations": "Çeviriler",
"about_version": "Versiyon",
"conf_colors_smoothing_intro": "Yumuşatma renk/parlaklık değişimlerini rahatsız edici ve dikkat dağıtıcı etkileri azaltmak için düzleştirir. ",
"conf_effect_fgeff_intro": "Hyperion başlatılırken gösterilicek görüntülenecek efekt veya rengi seçiniz",
"conf_effect_path_intro": "Efektleri belirlenmiş yollardan yükle.Ek olarak efektleri tüm efektler listesinden tek tek etkisiz hale getirebilirsiniz",
"conf_general_impexp_expbtn": "Dışa Aktar",
@ -18,6 +17,7 @@
"conf_general_impexp_title": "Konfigürasyonu İçe/Dışa Aktar",
"conf_general_intro": "Hyperion ve WebUI hakkında, diğer kategorilere girmeyen temel ayarlar.",
"conf_general_label_title": "Genel ayarlar",
"conf_grabber_v4l_intro": "USB yakalama cihazı USB aracılığıyla kaynak görüntülerinin işlenmek üzere sisteme girmesini sağlayan bir cihazdır.",
"conf_helptable_expl": "Açıklama",
"conf_helptable_option": "Seçenek",
"conf_leds_contr_label_contrtype": "Kontrolör tipi:",
@ -42,6 +42,7 @@
"conf_leds_layout_cl_leftbottom": "Sol 50% - 100% Alt",
"conf_leds_layout_cl_leftmiddle": "Sol 25% - 75% Orta",
"conf_leds_layout_cl_lefttop": "Sol 0% - 50% Üst",
"conf_leds_layout_cl_overlap": "Üst üste gelme",
"conf_leds_layout_cl_reversdir": "Ters yön",
"conf_leds_layout_cl_right": "Sağ",
"conf_leds_layout_cl_rightbottom": "Sağ 50% - 100% Alt",
@ -68,6 +69,8 @@
"conf_leds_layout_ma_vert": "Dikey",
"conf_leds_layout_matrix": "Martis Yerleşimi (LED Duvar)",
"conf_leds_layout_peview": "LED Yerleşim Önizlemesi",
"conf_leds_layout_preview_l1": "Bu sizin ilk LED' iniz (Giriş pozisyonu)",
"conf_leds_layout_preview_l2": "Bu veri yönünü gösterir. (ikinci/üçüncü led)",
"conf_leds_layout_preview_ledpower": "Maksimum güç tüketimi: $1 A",
"conf_leds_layout_preview_originCL": "Üretilidiği kaynak: Klasik Yerleşim(LED Çerçeve)",
"conf_leds_layout_preview_originMA": "Üretildiği kaynak: Matris Yerleşimi(LED Duvar)",
@ -78,7 +81,6 @@
"conf_leds_optgroup_RPiGPIO": "RPi GPIO",
"conf_leds_optgroup_RPiPWM": "RPi PWM",
"conf_leds_optgroup_RPiSPI": "RPi SPI",
"conf_leds_optgroup_debug": "Hata Ayıklama",
"conf_leds_optgroup_network": "Ağ",
"conf_leds_optgroup_usb": "USB/Serial",
"conf_logging_btn_autoscroll": "Otomatik kaydırma",
@ -91,14 +93,16 @@
"conf_logging_yourlink": "Rapor linkiniz",
"conf_network_bobl_intro": "Boblight Alıcısı",
"conf_network_fbs_intro": "Google Flatbuffers Alıcısı. Hızlı görüntü gönderimi için kullanılır.",
"conf_network_json_intro": "Tüm Hyperion örneklerinin JSON-RPC Portu, uzaktan kontrol için kullanılır.",
"conf_network_tok_cidhead": "Açıklama",
"conf_network_tok_lastuse": "Son kullanım",
"conf_webconfig_label_intro": "Web konfigürasyon ayarları. Değiştirirken dikkatli olun.",
"dashboard_alert_message_confedit": "Hyperion konfigürasyonunuz değiştirildi. Değişiklikleri uygulamak için Hyperion'u yeniden başlatın.",
"dashboard_alert_message_confedit_t": "Konfigürasyon değiştirildi",
"dashboard_alert_message_confsave_success": "Hyperion konfigürasyonunuz başarıyla kaydedildi.Değişiklikleriniz şu anda aktif.",
"dashboard_alert_message_confsave_success_t": "Konfigürasyon kaydedildi",
"dashboard_alert_message_disabled": "Bu olay şu anda deaktive edilmiştir! Tekrardan kullanmak için, gösterge panelinden aktive ediniz.",
"dashboard_alert_message_disabled_t": "ED donanım olayı deaktive edildi",
"dashboard_alert_message_disabled_t": "LED donanım olayı deaktive edildi",
"dashboard_componentbox_label_comp": "Komponent",
"dashboard_componentbox_label_status": "Durum",
"dashboard_componentbox_label_title": "Komponent durumu",
@ -107,13 +111,13 @@
"dashboard_infobox_label_instance": "Olay",
"dashboard_infobox_label_latesthyp": "En güncel Hyperion versiyonu:",
"dashboard_infobox_label_platform": "Plaform:",
"dashboard_infobox_label_ports": "Portlar (flat|proto):",
"dashboard_infobox_label_ports": "Portlar",
"dashboard_infobox_label_smartacc": "Akıllı Erişim",
"dashboard_infobox_label_statush": "Hyperion durumu:",
"dashboard_infobox_label_title": "Bilgi",
"dashboard_infobox_message_updatesuccess": "Hyperion'un en güncel versiyonuna sahipsiniz.",
"dashboard_infobox_message_updatewarning": "Hyperion'un güncel bir versiyonu mevcut! ($1)",
"dashboard_label_intro": "Gösterge paneli, Hyperion'un genel durumu ve Hyperion Blog'dan son gelişmeler hakkında bilgiler içerir",
"dashboard_label_intro": "Gösterge paneli, Hyperion'un genel durumu hakkında bilgiler içerir.",
"dashboard_newsbox_label_title": "Hyperion-Blog",
"dashboard_newsbox_noconn": "Son gelişmeleri almak için Hyperion Suncusu'na bağlanılamıyor, internet bağlantınız çalışıyor mu?",
"dashboard_newsbox_readmore": "Daha fazla oku",
@ -422,6 +426,7 @@
"infoDialog_effconf_created_text": " \"$1\" efekti başarıyla yaratıldı!",
"infoDialog_effconf_deleted_text": " \"$1\" efekti başarıyla silindi!",
"infoDialog_general_error_title": "Hata",
"infoDialog_general_success_title": "Başarı",
"infoDialog_general_warning_title": "Uyarı",
"infoDialog_import_comperror_text": "Üzücü! Tarayıcınız içe aktarmayı desteklemiyor. Lütfen başka bir tarayıcı ile tekrar deneyin.",
"infoDialog_import_confirm_text": "\"$1\"u içe aktarmak istediğinize emin misiniz? Bu işlem geri alınamaz!",
@ -467,6 +472,7 @@
"remote_adjustment_label": "Renk ayarlama",
"remote_color_label": "Renkler/Efektler",
"remote_color_label_color": "Renk:",
"remote_components_intro": "Çalışma zamanı sırasında Hyperion parçalarını etkinleştirin ya da devre dışı bırakın. $1",
"remote_components_label": "Komponent kontrol",
"remote_effects_label_effects": "Efekt:",
"remote_effects_label_picture": "Resim:",
@ -478,9 +484,12 @@
"remote_input_owner": "Tip",
"remote_input_priority": "Öncelik",
"remote_input_setsource_btn": "Kaynak Seç",
"remote_input_status": "Durum/Aksiyon",
"remote_losthint": "Not : Tüm değişiklikler yeniden başlatmadan sonra kaybolacaktır.",
"remote_maptype_label": "Haritalama tipi",
"remote_maptype_label_multicolor_mean": "Çok renkli",
"remote_maptype_label_unicolor_mean": "Tek renkli",
"remote_optgroup_syseffets": "Sağlanan efektler",
"remote_optgroup_usreffets": "Kullanıcı efektleri",
"remote_videoMode_2D": "2D",
"remote_videoMode_3DSBS": "3DSBS",
@ -489,17 +498,20 @@
"support_label_affinstr1": "Ülkenize uygun linki tıklayın",
"support_label_affinstr2": "Satın aldığınız her şey (ne olduğu önemli değil), ödediğiniz toplam ücret üzerinden bize küçük bir katkı sağlar.",
"support_label_btctext": "Adres:",
"support_label_donate": "Bağış yapın ya da bağlı şirket linklerini kullanın.",
"support_label_donationpp": "Bağış:",
"support_label_forumtitle": "Forum",
"support_label_ghtext": "Bizi Github'da ziyaret edin",
"support_label_igtext": "En güncel Hyperion resimlerini görmek için bizi Instagram`da ziyaret edin!",
"support_label_spreadtheword": "Duymayan kalmasın",
"support_label_title": "Hyperion' u destekleyin",
"support_label_webpagetext": "Hyperion Ana Sayfası",
"support_label_webpagetitle": "Web sayfası",
"support_label_webrestitle": "Bilgi ve yardım kaynakları",
"support_label_wikitext": "Hyperion ile ilgili A'dan Z'ye her şey",
"support_label_wikititle": "Wiki",
"support_label_yttext": "Resimlerden sıkıldınız mı? Youtube kanalımızı ziyaret edin!",
"update_button_changelog": "Tam değişim listesi.",
"update_button_install": "Yükle",
"update_error_getting_versions": "En güncel versiyonu belirlerken bir hata ile karşılaştık.",
"update_label_description": "Açıklama:",

View File

@ -5,8 +5,6 @@
"InfoDialog_changePassword_title": "Đổi mật khẩu",
"InfoDialog_iswitch_text": "Nếu bạn chạy nhiều hơn một Hyperion Instance trên mạng cục bộ của mình, bạn có thể chuyển đổi giữa các cấu hình web. Chọn đối tượng Hyperion muốn điều khiển bên dưới và chuyển đổi!",
"InfoDialog_iswitch_title": "Bộ chuyển đổi Hyperion",
"InfoDialog_lang_text": "Nếu bạn không thích kết quả của việc phát hiện ngôn ngữ tự động, bạn có thể ghi đè lên đây.",
"InfoDialog_lang_title": "Cài đặt ngôn ngữ",
"InfoDialog_nowrite_foottext": "WebUI sẽ được mở khóa tự động sau khi bạn giải quyết vấn đề!",
"InfoDialog_nowrite_text": "Hyperion không thể ghi vào tập tin cấu hình được tải hiện tại của bạn. Vui lòng sửa các quyền của tập tin để tiến hành.",
"InfoDialog_nowrite_title": "viết lỗi cho phép!",
@ -99,7 +97,6 @@
"conf_leds_optgroup_RPiGPIO": "GPIO RPi",
"conf_leds_optgroup_RPiPWM": "RPi PWM",
"conf_leds_optgroup_RPiSPI": "SPI RPI",
"conf_leds_optgroup_debug": "Gỡ lỗi",
"conf_leds_optgroup_network": "Mạng",
"conf_leds_optgroup_usb": "USB",
"conf_logging_btn_autoscroll": "Tự động di chuyển",
@ -140,18 +137,19 @@
"dashboard_componentbox_label_status": "Trạng thái",
"dashboard_componentbox_label_title": "Tình trạng linh kiện",
"dashboard_infobox_label_currenthyp": "Phiên bản Ambilight của bạn:",
"dashboard_infobox_label_disableh": "Vô hiệu hóa",
"dashboard_infobox_label_enableh": "Kích hoạt",
"dashboard_infobox_label_instance": "Ví dụ:",
"dashboard_infobox_label_latesthyp": "Phiên bản Ambilight mới nhất:",
"dashboard_infobox_label_platform": "Nền tảng:",
"dashboard_infobox_label_ports": "Cổng (flat | proto):",
"dashboard_infobox_label_ports": "Cổng",
"dashboard_infobox_label_smartacc": "Truy cập thông minh",
"dashboard_infobox_label_statush": "Trạng thái:",
"dashboard_infobox_label_title": "Thông tin",
"dashboard_infobox_label_watchedversionbranch": "Chi nhánh phiên bản đã xem:",
"dashboard_infobox_message_updatesuccess": "Bạn đang chạy phiên bản mới nhất.",
"dashboard_infobox_message_updatewarning": "Phiên bản mới hơn của Ambilight đã có sẵn! ($ 1)",
"dashboard_label_intro": "Bảng điều khiển này cung cấp cho bạn tổng quan nhanh về cài đặt Ambiight của bạn và hiển thị cho bạn những tin tức mới nhất từ chúng tôi.",
"dashboard_label_intro": "Bảng điều khiển này cung cấp cho bạn tổng quan nhanh về cài đặt Ambilight của.",
"dashboard_message_default_password": "Mật khẩu mặc định cho WebUi được đặt. Chúng tôi khuyên bạn nên thay đổi điều này.",
"dashboard_message_default_password_t": "Mật khẩu mặc định của WebUi được đặt",
"dashboard_message_global_setting": "Các cài đặt trên trang này không phụ thuộc vào một trường hợp cụ thể. Thay đổi sẽ được lưu trữ trên toàn cầu cho tất cả các trường hợp.",

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -2,381 +2,365 @@
<html>
<head>
<script>
if (/MSIE/.test(navigator.userAgent) || /Trident/.test(navigator.userAgent))
{
window.location.pathname = '/content/ie_not_supported.html';
}
</script>
<script>
if (/MSIE/.test(navigator.userAgent) || /Trident/.test(navigator.userAgent)) {
window.location.pathname = '/content/ie_not_supported.html';
}
</script>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0' name='viewport' />
<meta name="description" content="Hyperion Web Configuration">
<meta name="msapplication-TileColor" content="#91989C">
<meta name="msapplication-TileImage" content="/mstile-144x144.png">
<link rel="apple-touch-icon-precomposed" sizes="180x180" href="/apple-touch-icon.png">
<link rel="icon" type="image/png" href="/favicon.png" sizes="32x32">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0' name='viewport' />
<meta name="description" content="Hyperion Web Configuration">
<meta name="msapplication-TileColor" content="#91989C">
<meta name="msapplication-TileImage" content="/mstile-144x144.png">
<link rel="apple-touch-icon-precomposed" sizes="180x180" href="/apple-touch-icon.png">
<link rel="icon" type="image/png" href="/favicon.png" sizes="32x32">
<title data-i18n="general_webui_title">Hyperion - Web Configuration</title>
<title data-i18n="general_webui_title">Hyperion - Web Configuration</title>
<!-- jQuery -->
<script src="js/lib/jquery.min.js"></script>
<!-- jQuery -->
<script src="js/lib/jquery.min.js"></script>
<!-- SemVer -->
<script src='js/lib/semver.js'></script>
<!-- SemVer -->
<script src='js/lib/semver.js'></script>
<!-- md Stuff -->
<script src="js/lib/marked.min.js"></script>
<script type="text/javascript" src="js/lib/purify.min.js"></script>
<!-- md Stuff -->
<script src="js/lib/marked.min.js"></script>
<script type="text/javascript" src="js/lib/purify.min.js"></script>
<!-- Hyperion -->
<script src="js/hyperion.js"></script>
<script src="js/ui_utils.js"></script>
<!-- Hyperion -->
<script src="js/hyperion.js"></script>
<script src="js/ui_utils.js"></script>
<!-- Colorpicker -->
<script src="js/lib/bootstrap-colorpicker.min.js"></script>
<!-- Colorpicker -->
<script src="js/lib/bootstrap-colorpicker.min.js"></script>
<!-- BS Notfiy -->
<script src="js/lib/bootstrap-notify.min.js"></script>
<!-- BS Notfiy -->
<script src="js/lib/bootstrap-notify.min.js"></script>
<!-- JSONEditor -->
<script src="js/lib/jsoneditor.js"></script>
<!-- JSONEditor -->
<script src="js/lib/jsoneditor.js"></script>
<!--Language Support -->
<script src="js/lib/jquery.i18n.js"></script>
<script src="js/lib/jquery.i18n.messagestore.js"></script>
<script src="js/lib/jquery.i18n.fallbacks.js"></script>
<script src="js/lib/jquery.i18n.parser.js"></script>
<script src="js/lib/jquery.i18n.emitter.js"></script>
<script src="js/lib/jquery.i18n.language.js"></script>
<!--Language Support -->
<script src="js/lib/jquery.i18n/jquery.i18n.js"></script>
<script src="js/lib/jquery.i18n/jquery.i18n.messagestore.js"></script>
<script src="js/lib/jquery.i18n/jquery.i18n.fallbacks.js"></script>
<script src="js/lib/jquery.i18n/jquery.i18n.parser.js"></script>
<script src="js/lib/jquery.i18n/jquery.i18n.emitter.js"></script>
<script src="js/lib/jquery.i18n/jquery.i18n.language.js"></script>
<script src="js/lib/jquery.i18n/CLDRPluralRuleParser.js"></script>
<!-- Bootstrap Core CSS -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<script src="js/languages.js"></script>
<link href="css/bootstrap-colorpicker.min.css" rel="stylesheet">
<!-- Bootstrap Core CSS -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<!-- BSToggle -->
<link href="css/bootstrap-toggle.min.css" rel="stylesheet">
<link href="css/bootstrap-colorpicker.min.css" rel="stylesheet">
<!-- BSSelect -->
<link href="css/bootstrap-select.min.css" rel="stylesheet">
<!-- BSToggle -->
<link href="css/bootstrap-toggle.min.css" rel="stylesheet">
<!-- MetisMenu CSS -->
<link href="css/metisMenu.css" rel="stylesheet">
<!-- BSSelect -->
<link href="css/bootstrap-select.min.css" rel="stylesheet">
<!-- Custom CSS -->
<link href="css/sb-admin-2.css" rel="stylesheet">
<link href="css/hyperion.css" rel="stylesheet">
<!-- MetisMenu CSS -->
<link href="css/metisMenu.css" rel="stylesheet">
<!-- Custom Fonts -->
<link href="css/font-awesome.min.css" rel="stylesheet" type="text/css">
<!-- Custom CSS -->
<link href="css/sb-admin-2.css" rel="stylesheet">
<link href="css/hyperion.css" rel="stylesheet">
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<!-- Custom Fonts -->
<link href="css/font-awesome.min.css" rel="stylesheet" type="text/css">
<!-- Material Design Icons - https://github.com/Templarian/MaterialDesign-Webfont -->
<link href="css/materialdesignicons.min.css" media="all" rel="stylesheet" type="text/css">
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<noscript>
<div style="color:red;margin: 40px 0;text-align:center">
<img src="img/hyperion/hyperionlogo.png" alt="Redefine ambient light!">
<h3>Hyperion Web Configuration requires Javascript. Please enable Javascript in your browser for this page in order to use it!</h3>
</div>
<style type="text/css"> #loading_overlay, #wrapper{ display: none } </style>
</noscript>
<noscript>
<div style="color:red;margin: 40px 0;text-align:center">
<img src="img/hyperion/logo_positiv.png" alt="Redefine ambient light!">
<h3>Hyperion Web Configuration requires Javascript. Please enable Javascript in your browser for this page in order to use it!</h3>
</div>
<style type="text/css">
#loading_overlay, #wrapper {
display: none
}
</style>
</noscript>
<div id="loading_overlay" class="overlay"></div>
<div id="wrapper">
<div id="loading_overlay" class="overlay"></div>
<div id="wrapper">
<!-- Navigation -->
<nav class="navbar navbar-default navbar-static-top" role="navigation" style="margin-bottom: 0">
<div class="navbar-header">
<button type="button" class="navbar-toggle closed" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar top-bar"></span>
<span class="icon-bar middle-bar"></span>
<span class="icon-bar bottom-bar"></span>
</button>
<a class="navbar-brand" href="https://www.hyperion-project.org?pk_campaign=WebUI&pk_kwd=mainlogo" target="_blank"><img src="img/hyperion/hyperionlogo.png" alt="Redefine ambient light!" height="55"></a>
<!-- Navigation -->
<nav class="navbar navbar-default navbar-static-top" role="navigation" style="margin-bottom: 0; min-height: 85px">
<div class="navbar-header">
<button type="button" class="navbar-toggle closed" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar top-bar"></span>
<span class="icon-bar middle-bar"></span>
<span class="icon-bar bottom-bar"></span>
</button>
<a class="navbar-brand" href="https://www.hyperion-project.org" target="_blank"><img id="navbar_brand_logo" src="img/hyperion/logo_positiv.png" alt="Redefine ambient light!" height="80"></a>
</div>
<!-- /.navbar-header -->
</div>
<!-- /.navbar-header -->
<ul class="nav navbar-top-links navbar-right" id="top-navbar">
<!-- Browser built in capture stream - streamer.js -->
<li class="dropdown" id="btn_streamer" style="display:none">
<!-- Hidden helpers -->
<canvas style="display:none" id="streamcanvas"></canvas>
<video style="display:none" id="streamvideo" autoplay></video>
<a>
<i id="btn_streamer_icon" class="fa fa-video-camera fa-fw"></i>
</a>
</li>
<li class="dropdown" id="btn_darkmode">
<a>
<i id="btn_darkmode_icon" class="fa fa-moon-o"></i>
</a>
</li>
<!-- instance switcher -->
<li class="dropdown" id="btn_hypinstanceswitch" style="display:none">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
<i class="fa fa-exchange fa-fw"></i> <i class="fa fa-caret-down"></i>
</a>
<ul id="hyp_inst_listing" class="dropdown-menu dropdown-alerts">
</ul>
</li>
<!--
<li class="dropdown" id="btn_instanceswitch" style="display:none">
<a>
<i class="fa fa-exchange fa-fw"></i>
</a>
</li>
-->
<li class="dropdown" id="btn_open_ledsim">
<a>
<i class="fa fa-television fa-fw"></i>
</a>
</li>
<!-- /.dropdown -->
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
<i class="fa fa-magic fa-fw"></i> <i class="fa fa-caret-down"></i>
</a>
<ul class="dropdown-menu dropdown-alerts">
<li id="btn_wizard_byteorder">
<a>
<div>
<i class="fa fa-magic fa-fw"></i>
<span data-i18n="wiz_rgb_title"></span>
</div>
</a>
</li>
<li class="divider"></li>
<li id="btn_wizard_colorcalibration">
<a>
<div>
<i class="fa fa-magic fa-fw"></i>
<span data-i18n="wiz_cc_title"></span>
</div>
</a>
</li>
</ul>
</li>
<!-- /.dropdown -->
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
<i class="fa fa-wrench fa-fw"></i> <i class="fa fa-caret-down"></i>
</a>
<ul class="dropdown-menu dropdown-alerts">
<ul class="nav navbar-top-links navbar-right" id="top-navbar">
<!-- Browser built in capture stream - streamer.js -->
<li class="dropdown" id="btn_streamer" style="display:none">
<!-- Hidden helpers -->
<canvas style="display:none" id="streamcanvas"></canvas>
<video style="display:none" id="streamvideo" autoplay></video>
<a>
<i id="btn_streamer_icon" class="fa fa-video-camera fa-fw"></i>
</a>
</li>
<li class="dropdown" id="btn_darkmode">
<a>
<i id="btn_darkmode_icon" class="fa fa-moon-o"></i>
</a>
</li>
<li class="dropdown" id="btn_open_ledsim">
<a>
<i class="fa fa-television fa-fw"></i>
</a>
</li>
<!-- /.dropdown -->
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
<i class="fa fa-magic fa-fw"></i> <i class="fa fa-caret-down"></i>
</a>
<ul class="dropdown-menu dropdown-alerts">
<li id="btn_wizard_byteorder">
<a>
<div>
<i class="fa fa-magic fa-fw"></i>
<span data-i18n="wiz_rgb_title"></span>
</div>
</a>
</li>
<li class="divider"></li>
<li id="btn_wizard_colorcalibration">
<a>
<div>
<i class="fa fa-magic fa-fw"></i>
<span data-i18n="wiz_cc_title"></span>
</div>
</a>
</li>
</ul>
</li>
<!-- /.dropdown -->
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
<i class="fa fa-wrench fa-fw"></i> <i class="fa fa-caret-down"></i>
</a>
<ul class="dropdown-menu dropdown-alerts">
<!-- /.language selector -->
<li id="btn_setlang">
<a>
<div>
<i class="fa fa-globe"></i>
<select id="language-select" class="selectpicker" data-width="fit" data-style="btn-transparent" > </select>
</div>
</a>
</li>
<li class="divider"></li>
<li id="btn_setaccess">
<a>
<div>
<i class="fa fa-wrench fa-fw"></i>
<span data-i18n="InfoDialog_access_title"></span>
</div>
</a>
</li>
<li class="divider"></li>
<li id="btn_changePassword">
<a>
<div>
<i class="fa fa-key fa-fw"></i>
<span data-i18n="InfoDialog_changePassword_title"></span>
</div>
</a>
</li>
</ul>
</li>
<!-- /.language selector -->
<li id="btn_setlang">
<a>
<div>
<i class="fa fa-globe fa-fw"></i>
<select id="language-select" class="selectpicker" data-width="fit" data-style="btn-transparent"> </select>
</div>
</a>
</li>
<li class="divider"></li>
<li id="btn_setaccess">
<a>
<div>
<i class="fa fa-wrench fa-fw"></i>
<span data-i18n="InfoDialog_access_title"></span>
</div>
</a>
</li>
<li class="divider"></li>
<li id="btn_changePassword">
<a>
<div>
<i class="fa fa-key fa-fw"></i>
<span data-i18n="InfoDialog_changePassword_title"></span>
</div>
</a>
</li>
</ul>
</li>
<!-- /.lock-ui -->
<li class="dropdown" id="btn_lock_ui" style="display:none">
<a>
<i class="fa fa-lock fa-fw"></i>
</a>
</li>
</ul>
<!-- /.navbar-top-left -->
<!-- /.lock-ui -->
<li class="dropdown" id="btn_lock_ui" style="display:none">
<a>
<i class="fa fa-lock fa-fw"></i>
</a>
</li>
</ul>
<!-- /.navbar-top-left -->
<div id="main-nav" class="navbar-default sidebar" role="navigation">
<div class="sidebar-nav navbar-collapse">
<ul class="nav" id="side-menu">
<li> <a class="inactive mnava" href="#dashboard"><i class="fa fa-dashboard fa-fw"></i><span data-i18n="main_menu_dashboard_token">Dashboard</span></a> </li>
<li>
<a class="inactive"><i class="fa fa-cog fa-fw"></i><span data-i18n="main_menu_configuration_token">Configuration</span><span class="fa arrow"></span></a>
<ul class="nav nav-second-level">
<li> <a class="inactive mnava" href="#conf_general"><i class="fa fa-wrench fa-fw"></i><span data-i18n="main_menu_general_conf_token">General</span></a> </li>
<li> <a class="inactive mnava" href="#conf_leds"><i class="fa fa-lightbulb-o fa-fw"></i><span data-i18n="main_menu_leds_conf_token">LED Hardware</span></a> </li>
<li> <a class="inactive mnava" href="#conf_grabber"><i class="fa fa-camera fa-fw"></i><span data-i18n="main_menu_grabber_conf_token">Capturing Hardware</span></a> </li>
<li> <a class="inactive mnava" href="#conf_effect"><i class="fa fa-spinner fa-fw"></i><span data-i18n="main_menu_effect_conf_token">Effects</span></a> </li>
<li> <a class="inactive mnava" href="#conf_colors"><i class="fa fa-photo fa-fw"></i><span data-i18n="main_menu_colors_conf_token">Image Processing</span></a> </li>
<li> <a class="inactive mnava" href="#conf_network"><i class="fa fa-sitemap fa-fw"></i><span data-i18n="main_menu_network_conf_token">Network</span></a> </li>
</ul>
</li>
<li> <a class="inactive mnava" href="#remote"><i class="fa fa-wifi fa-fw"></i><span data-i18n="main_menu_remotecontrol_token">Remote Control</span></a> </li>
<li> <a class="inactive mnava" href="#effects_configurator"><i class="fa fa-cogs fa-fw"></i><span data-i18n="main_menu_effectsconfigurator_token">Effects Configurator</span></a> </li>
<li> <a class="inactive mnava" href="#support"><i class="fa fa-info fa-fw"></i><span data-i18n="main_menu_support_token">Support</span></a> </li>
<li>
<a class="inactive"><i class="fa fa-industry fa-fw"></i><span data-i18n="main_menu_system_token">System</span><span class="fa arrow"></span></a>
<ul class="nav nav-second-level">
<li> <a class="inactive mnava" href="#conf_webconfig" id="load_webconfig"><i class="fa fa-wrench fa-fw"></i><span data-i18n="main_menu_webconfig_token">Webconfiguration</span></a> </li>
<li> <a class="inactive mnava" href="#conf_logging"><i class="fa fa-reorder fa-fw"></i><span data-i18n="main_menu_logging_token">Log</span></a> </li>
<li> <a class="inactive mnava" href="#update"><i class="fa fa-download fa-fw"></i><span data-i18n="main_menu_update_token">Update</span></a> </li>
<li> <a class="inactive mnava" href="#about"><i class="fa fa-info-circle fa-fw"></i><span data-i18n="main_menu_about_token">About</span></a> </li>
</ul>
</li>
</ul>
</div>
<!-- /.sidebar-collapse -->
</div>
<!-- /.navbar-static-side -->
</nav>
<div id="main-nav" class="navbar-default sidebar" role="navigation">
<div class="sidebar-nav navbar-collapse">
<ul class="nav" id="side-menu">
<li> <a class="inactive mnava" href="#dashboard"><i class="fa fa-dashboard fa-fw"></i><span data-i18n="main_menu_dashboard_token">Dashboard</span></a> </li>
<li> <a class="inactive mnava" href="#conf_general"><i class="fa fa-wrench fa-fw"></i><span data-i18n="main_menu_general_conf_token">General</span></a> </li>
<li>
<a class="inactive"><i class="fa fa-cog fa-fw"></i><span data-i18n="main_menu_configuration_token">LED-Instances</span><span class="fa arrow"></span></a>
<ul class="nav nav-second-level">
<li> <a class="inactive mnava" id="MenuItemLeds" href="#conf_leds"><i class="mdi mdi-lightbulb-on fa-fw"></i><span data-i18n="main_menu_leds_conf_token">LED Hardware</span></a> </li>
<li> <a class="inactive mnava" id="MenuItemInstCapture" href="#conf_instcapture"><i class="fa fa-camera fa-fw"></i><span data-i18n="main_menu_instcapture_conf_token">Sources</span></a> </li>
<li> <a class="inactive mnava" href="#conf_effect"><i class="fa fa-spinner fa-fw"></i><span data-i18n="main_menu_effect_conf_token">Effects</span></a> </li>
<li> <a class="inactive mnava" href="#conf_colors"><i class="fa fa-photo fa-fw"></i><span data-i18n="main_menu_colors_conf_token">Image Processing</span></a> </li>
</ul>
</li>
<li> <a class="inactive mnava" id="MenuItemGrabber" href="#conf_grabber"><i class="fa fa-camera fa-fw"></i><span data-i18n="main_menu_grabber_conf_token">Capturing Hardware</span></a> </li>
<li> <a class="inactive mnava" id="MenuItemNetwork" href="#conf_network"><i class="fa fa-sitemap fa-fw"></i><span data-i18n="main_menu_network_conf_token">Network</span></a> </li>
<li> <a class="inactive mnava" href="#remote"><i class="fa fa-wifi fa-fw"></i><span data-i18n="main_menu_remotecontrol_token">Remote Control</span></a> </li>
<li> <a class="inactive mnava" href="#effects_configurator"><i class="fa fa-cogs fa-fw"></i><span data-i18n="main_menu_effectsconfigurator_token">Effects Configurator</span></a> </li>
<li> <a class="inactive mnava" href="#support"><i class="fa fa-info fa-fw"></i><span data-i18n="main_menu_support_token">Support</span></a> </li>
<li>
<a class="inactive"><i class="fa fa-industry fa-fw"></i><span data-i18n="main_menu_system_token">System</span><span class="fa arrow"></span></a>
<ul class="nav nav-second-level">
<li> <a class="inactive mnava" id="MenuItemWeb" href="#conf_webconfig" id="load_webconfig"><i class="fa fa-wrench fa-fw"></i><span data-i18n="main_menu_webconfig_token">Webconfiguration</span></a> </li>
<li> <a class="inactive mnava" id="MenuItemLogging" href="#conf_logging"><i class="fa fa-reorder fa-fw"></i><span data-i18n="main_menu_logging_token">Log</span></a> </li>
<li> <a class="inactive mnava" href="#update"><i class="fa fa-download fa-fw"></i><span data-i18n="main_menu_update_token">Update</span></a> </li>
<li> <a class="inactive mnava" href="#about"><i class="fa fa-info-circle fa-fw"></i><span data-i18n="main_menu_about_token">About</span></a> </li>
</ul>
</li>
</ul>
</div>
<!-- /.sidebar-collapse -->
</div>
<!-- /.navbar-static-side -->
</nav>
<!-- Page Content -->
<div id="page-wrapper" style="padding-top:10px; overflow: hidden;">
<div id="dashboard_active_instance" style="display:none;padding:0 10px;margin:0">
<div class="bs-callout bs-callout-success">
<h4 id="dashboard_active_instance_friendly_name"></h4>
</div>
</div>
<div id="hyperion_global_setting_notify" style="display:none;padding:0 10px;margin:0">
<div class="bs-callout bs-callout-warning">
<h4 data-i18n="dashboard_message_global_setting_t"></h4>
<span data-i18n="dashboard_message_global_setting"></span>
</div>
</div>
<div id="hyperion_disabled_notify" style="display:none;padding:0 10px;margin:0">
<div class="bs-callout bs-callout-danger">
<h4 data-i18n="dashboard_alert_message_disabled_t"></h4>
<span data-i18n="dashboard_alert_message_disabled"></span>
</div>
</div>
<!-- Page Content -->
<div id="page-wrapper" style="padding-top:10px; overflow: hidden;">
<div id="hyperion_disabled_notify" style="display:none;padding:0 10px;margin:0">
<div class="bs-callout bs-callout-danger">
<h4 data-i18n="dashboard_alert_message_disabled_t"></h4>
<span data-i18n="dashboard_alert_message_disabled"></span>
</div>
</div>
<div id="page-content"></div>
</div>
<div id="page-content"></div>
</div>
</div>
<!-- /#wrapper -->
</div>
<!-- /#wrapper -->
<div id="container_connection_lost" style="display:none"></div>
<div id="container_restart" style="display:none"></div>
<div id="container_connection_lost" style="display:none"></div>
<div id="container_restart" style="display:none"></div>
<!-- infoDialog -->
<div id="modal_dialog" class="modal fade" role="dialog" style="z-index:9999">
<div class="modal-dialog">
<center>
<div class="modal-content">
<div id="id_body" class="modal-body"></div>
<div id="id_footer" class="modal-footer" style="text-align:center"></div>
</div>
</center>
</div>
</div>
<!-- infoDialog -->
<div id="modal_dialog" class="modal fade" role="dialog" style="z-index:9999">
<div class="modal-dialog">
<center>
<div class="modal-content">
<div id="id_body" class="modal-body"></div>
<div id="id_footer" class="modal-footer" style="text-align:center"></div>
</div>
</center>
</div>
</div>
<!-- renameDialog -->
<div id="modal_dialog_rename" class="modal fade" role="dialog" style="z-index:9999">
<div class="modal-dialog">
<center>
<div class="modal-content">
<div id="id_body_rename" class="modal-body"></div>
<div id="id_footer_rename" class="modal-footer" style="text-align:center"></div>
</div>
</center>
</div>
</div>
<!-- renameDialog -->
<div id="modal_dialog_rename" class="modal fade" role="dialog" style="z-index:9999">
<div class="modal-dialog">
<center>
<div class="modal-content">
<div id="id_body_rename" class="modal-body"></div>
<div id="id_footer_rename" class="modal-footer" style="text-align:center"></div>
</div>
</center>
</div>
</div>
<!-- wizardDialog -->
<div id="wizard_modal" class="modal fade" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div id="wiz_header" class="modal-header"></div>
<div id="wizp1">
<div class="modal-body" style="text-align:center">
<img src="img/hyperion/hyperionlogo.png" alt="Redefine ambient light!" style="margin-bottom:15px">
<div id="wizp1_body" ></div>
</div>
<div id="wizp1_footer" class="modal-footer" style="text-align:center"></div>
</div>
<div id="wizp2" style="display:none">
<center>
<div class="modal-body">
<img src="img/hyperion/hyperionlogo.png" alt="Redefine ambient light!" style="margin-bottom:15px">
<div id="wizp2_body"></div>
</div>
</center>
<div id="wizp2_footer" class="modal-footer" style="text-align:center"></div>
</div>
<div id="wizp3" style="display:none">
<center>
<div class="modal-body">
<img src="img/hyperion/hyperionlogo.png" alt="Redefine ambient light!" style="margin-bottom:15px">
<div id="wizp3_body"></div>
</div>
</center>
<div id="wizp3_footer" class="modal-footer" style="text-align:center"></div>
</div>
</div>
</div>
</div>
<!-- wizardDialog -->
<div id="wizard_modal" class="modal fade" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div id="wiz_header" class="modal-header"></div>
<div id="wizp1">
<div class="modal-body" style="text-align:center">
<img id="wizard_logo" src="img/hyperion/logo_positiv.png" alt="Redefine ambient light!" style="margin-bottom:15px">
<div id="wizp1_body"></div>
</div>
<div id="wizp1_footer" class="modal-footer" style="text-align:center"></div>
</div>
<div id="wizp2" style="display:none">
<center>
<div class="modal-body">
<img id="wizard_logo" src="img/hyperion/logo_positiv.png" alt="Redefine ambient light!" style="margin-bottom:15px">
<div id="wizp2_body"></div>
</div>
</center>
<div id="wizp2_footer" class="modal-footer" style="text-align:center"></div>
</div>
<div id="wizp3" style="display:none">
<center>
<div class="modal-body">
<img id="wizard_logo" src="img/hyperion/logo_positiv.png" alt="Redefine ambient light!" style="margin-bottom:15px">
<div id="wizp3_body"></div>
</div>
</center>
<div id="wizp3_footer" class="modal-footer" style="text-align:center"></div>
</div>
</div>
</div>
</div>
<!-- ledsimDialog -->
<div id="ledsim_dialog" style="display:none; z-index:9998">
<div data-role="body" style="padding:0px;">
<div id="ledsim_text"></div>
<div id="leds_canvas"></div>
</div>
<div data-role="footer" style="text-align:center">
<button type="button" class="btn btn-success" id="leds_toggle"><i class="fa fa-fw fa-lightbulb-o"></i><span data-i18n="main_ledsim_btn_toggleleds">leds</span></button>
<button type="button" class="btn btn-danger" id="leds_toggle_num"> <i class="fa fa-fw fa-info"></i><span data-i18n="main_ledsim_btn_togglelednumber">led numbers</span></button>
<button type="button" class="btn btn-danger" id="leds_toggle_live_video"><i class="fa fa-fw fa-television"></i><span data-i18n="main_ledsim_btn_togglelivevideo">live video</span></button>
</div>
</div>
<!-- ledsimDialog -->
<div id="ledsim_dialog" style="display:none; z-index:9998">
<div data-role="body" style="padding:0px;">
<div id="ledsim_text"></div>
<div id="leds_canvas"></div>
</div>
<div data-role="footer" style="text-align:center">
<button type="button" class="btn btn-success" id="leds_toggle"><i class="fa fa-fw fa-lightbulb-o"></i><span data-i18n="main_ledsim_btn_toggleleds">leds</span></button>
<button type="button" class="btn btn-danger" id="leds_toggle_num"> <i class="fa fa-fw fa-info"></i><span data-i18n="main_ledsim_btn_togglelednumber">led numbers</span></button>
<button type="button" class="btn btn-danger" id="sigDetectArea_toggle"><i class="fa fa-fw fa-info"></i><span data-i18n="main_ledsim_btn_togglesigdetect">signal detection area</span></button>
<button type="button" class="btn btn-danger" id="leds_toggle_live_video"><i class="fa fa-fw fa-television"></i><span data-i18n="main_ledsim_btn_togglelivevideo">live video</span></button>
</div>
</div>
<!-- Bootstrap Core JavaScript -->
<script src="js/lib/bootstrap.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="js/lib/bootstrap.min.js"></script>
<!-- BSToggle -->
<script src="js/lib/bootstrap-toggle.min.js"></script>
<!-- BSToggle -->
<script src="js/lib/bootstrap-toggle.min.js"></script>
<!-- Bootstrap Select JavaScript -->
<script src="js/lib/bootstrap-select.min.js"></script>
<!-- Bootstrap Select JavaScript -->
<script src="js/lib/bootstrap-select.min.js"></script>
<!-- Metis Menu Plugin JavaScript -->
<script src="js/lib/metisMenu.min.js"></script>
<!-- Metis Menu Plugin JavaScript -->
<script src="js/lib/metisMenu.min.js"></script>
<!-- Custom Theme JavaScript -->
<script src="js/lib/sb-admin-2.js"></script>
<!-- Custom Theme JavaScript -->
<script src="js/lib/sb-admin-2.js"></script>
<script src="js/content_index.js"></script>
<script src="js/settings.js"></script>
<script src="js/streamer.js"></script>
<script src="js/wizard.js"></script>
<script src="js/content_index.js"></script>
<script src="js/settings.js"></script>
<script src="js/streamer.js"></script>
<script src="js/wizard.js"></script>
<!--gijgo dialog-->
<script src="js/lib/draggable.min.js"></script>
<script src="js/lib/dialog.min.js"></script>
<script src="js/ledsim.js"></script>
<!--gijgo dialog-->
<script src="js/lib/draggable.min.js"></script>
<script src="js/lib/dialog.min.js"></script>
<script src="js/ledsim.js"></script>
<!--Client-side download-->
<script src='js/lib/download.min.js'></script>
<!--Client-side download-->
<script src='js/lib/download.min.js'></script>
<!--JsonAceEditor-->
<script src='js/lib/jsonaceeditor.min.js'></script>
<link href="css/jsonaceeditor.min.css" rel="stylesheet" type="text/css">
<!--JsonAceEditor-->
<script src='js/lib/jsonaceeditor.min.js'></script>
<link href="css/jsonaceeditor.min.css" rel="stylesheet" type="text/css">
</body>
</html>

179
assets/webconfig/js/content_colors.js Normal file → Executable file
View File

@ -1,84 +1,105 @@
$(document).ready( function() {
performTranslation();
var editor_color = null;
var editor_smoothing = null;
var editor_blackborder = null;
if(window.showOptHelp)
{
//color
$('#conf_cont').append(createRow('conf_cont_color'));
$('#conf_cont_color').append(createOptPanel('fa-photo', $.i18n("edt_conf_color_heading_title"), 'editor_container_color', 'btn_submit_color'));
$('#conf_cont_color').append(createHelpTable(window.schema.color.properties, $.i18n("edt_conf_color_heading_title")));
//smoothing
$('#conf_cont').append(createRow('conf_cont_smoothing'));
$('#conf_cont_smoothing').append(createOptPanel('fa-photo', $.i18n("edt_conf_smooth_heading_title"), 'editor_container_smoothing', 'btn_submit_smoothing'));
$('#conf_cont_smoothing').append(createHelpTable(window.schema.smoothing.properties, $.i18n("edt_conf_smooth_heading_title")));
//blackborder
$('#conf_cont').append(createRow('conf_cont_blackborder'));
$('#conf_cont_blackborder').append(createOptPanel('fa-photo', $.i18n("edt_conf_bb_heading_title"), 'editor_container_blackborder', 'btn_submit_blackborder'));
$('#conf_cont_blackborder').append(createHelpTable(window.schema.blackborderdetector.properties, $.i18n("edt_conf_bb_heading_title")));
}
else
{
$('#conf_cont').addClass('row');
$('#conf_cont').append(createOptPanel('fa-photo', $.i18n("edt_conf_color_heading_title"), 'editor_container_color', 'btn_submit_color'));
$('#conf_cont').append(createOptPanel('fa-photo', $.i18n("edt_conf_smooth_heading_title"), 'editor_container_smoothing', 'btn_submit_smoothing'));
$('#conf_cont').append(createOptPanel('fa-photo', $.i18n("edt_conf_bb_heading_title"), 'editor_container_blackborder', 'btn_submit_blackborder'));
}
//color
editor_color = createJsonEditor('editor_container_color', {
color : window.schema.color
}, true, true);
$(document).ready(function () {
performTranslation();
editor_color.on('change',function() {
editor_color.validate().length || window.readOnlyMode ? $('#btn_submit_color').attr('disabled', true) : $('#btn_submit_color').attr('disabled', false);
});
$('#btn_submit_color').off().on('click',function() {
requestWriteConfig(editor_color.getValue());
});
//smoothing
editor_smoothing = createJsonEditor('editor_container_smoothing', {
smoothing : window.schema.smoothing
}, true, true);
// update instance listing
updateHyperionInstanceListing();
editor_smoothing.on('change',function() {
editor_smoothing.validate().length || window.readOnlyMode ? $('#btn_submit_smoothing').attr('disabled', true) : $('#btn_submit_smoothing').attr('disabled', false);
});
$('#btn_submit_smoothing').off().on('click',function() {
requestWriteConfig(editor_smoothing.getValue());
});
var editor_color = null;
var editor_smoothing = null;
var editor_blackborder = null;
//blackborder
editor_blackborder = createJsonEditor('editor_container_blackborder', {
blackborderdetector: window.schema.blackborderdetector
}, true, true);
if (window.showOptHelp) {
//color
$('#conf_cont').append(createRow('conf_cont_color'));
$('#conf_cont_color').append(createOptPanel('fa-photo', $.i18n("edt_conf_color_heading_title"), 'editor_container_color', 'btn_submit_color'));
$('#conf_cont_color').append(createHelpTable(window.schema.color.properties, $.i18n("edt_conf_color_heading_title")));
editor_blackborder.on('change',function() {
editor_blackborder.validate().length || window.readOnlyMode ? $('#btn_submit_blackborder').attr('disabled', true) : $('#btn_submit_blackborder').attr('disabled', false);
});
$('#btn_submit_blackborder').off().on('click',function() {
requestWriteConfig(editor_blackborder.getValue());
});
//wiki links
$('#editor_container_blackborder').append(buildWL("user/moretopics/bbmode","edt_conf_bb_mode_title",true));
//create introduction
if(window.showOptHelp)
{
createHint("intro", $.i18n('conf_colors_color_intro'), "editor_container_color");
createHint("intro", $.i18n('conf_colors_smoothing_intro'), "editor_container_smoothing");
createHint("intro", $.i18n('conf_colors_blackborder_intro'), "editor_container_blackborder");
}
removeOverlay();
//smoothing
$('#conf_cont').append(createRow('conf_cont_smoothing'));
$('#conf_cont_smoothing').append(createOptPanel('fa-photo', $.i18n("edt_conf_smooth_heading_title"), 'editor_container_smoothing', 'btn_submit_smoothing'));
$('#conf_cont_smoothing').append(createHelpTable(window.schema.smoothing.properties, $.i18n("edt_conf_smooth_heading_title"), "smoothingHelpPanelId"));
//blackborder
$('#conf_cont').append(createRow('conf_cont_blackborder'));
$('#conf_cont_blackborder').append(createOptPanel('fa-photo', $.i18n("edt_conf_bb_heading_title"), 'editor_container_blackborder', 'btn_submit_blackborder'));
$('#conf_cont_blackborder').append(createHelpTable(window.schema.blackborderdetector.properties, $.i18n("edt_conf_bb_heading_title"), "blackborderHelpPanelId"));
}
else {
$('#conf_cont').addClass('row');
$('#conf_cont').append(createOptPanel('fa-photo', $.i18n("edt_conf_color_heading_title"), 'editor_container_color', 'btn_submit_color'));
$('#conf_cont').append(createOptPanel('fa-photo', $.i18n("edt_conf_smooth_heading_title"), 'editor_container_smoothing', 'btn_submit_smoothing'));
$('#conf_cont').append(createOptPanel('fa-photo', $.i18n("edt_conf_bb_heading_title"), 'editor_container_blackborder', 'btn_submit_blackborder'));
}
//color
editor_color = createJsonEditor('editor_container_color', {
color: window.schema.color
}, true, true);
editor_color.on('change', function () {
editor_color.validate().length || window.readOnlyMode ? $('#btn_submit_color').attr('disabled', true) : $('#btn_submit_color').attr('disabled', false);
});
$('#btn_submit_color').off().on('click', function () {
requestWriteConfig(editor_color.getValue());
});
//smoothing
editor_smoothing = createJsonEditor('editor_container_smoothing', {
smoothing: window.schema.smoothing
}, true, true);
editor_smoothing.on('change', function () {
var smoothingEnable = editor_smoothing.getEditor("root.smoothing.enable").getValue();
if (smoothingEnable) {
showInputOptionsForKey(editor_smoothing, "smoothing", "enable", true);
$('#smoothingHelpPanelId').show();
} else {
showInputOptionsForKey(editor_smoothing, "smoothing", "enable", false);
$('#smoothingHelpPanelId').hide();
}
editor_smoothing.validate().length || window.readOnlyMode ? $('#btn_submit_smoothing').attr('disabled', true) : $('#btn_submit_smoothing').attr('disabled', false);
});
$('#btn_submit_smoothing').off().on('click', function () {
requestWriteConfig(editor_smoothing.getValue());
});
//blackborder
editor_blackborder = createJsonEditor('editor_container_blackborder', {
blackborderdetector: window.schema.blackborderdetector
}, true, true);
editor_blackborder.on('change', function () {
var blackborderEnable = editor_blackborder.getEditor("root.blackborderdetector.enable").getValue();
if (blackborderEnable) {
showInputOptionsForKey(editor_blackborder, "blackborderdetector", "enable", true);
$('#blackborderHelpPanelId').show();
$('#blackborderWikiLinkId').show();
} else {
showInputOptionsForKey(editor_blackborder, "blackborderdetector", "enable", false);
$('#blackborderHelpPanelId').hide();
$('#blackborderWikiLinkId').hide();
}
editor_blackborder.validate().length || window.readOnlyMode ? $('#btn_submit_blackborder').attr('disabled', true) : $('#btn_submit_blackborder').attr('disabled', false);
});
$('#btn_submit_blackborder').off().on('click', function () {
requestWriteConfig(editor_blackborder.getValue());
});
//wiki links
var wikiElement = $(buildWL("user/advanced/Advanced.html#blackbar-detection", "edt_conf_bb_mode_title", true));
wikiElement.attr('id', 'blackborderWikiLinkId');
$('#editor_container_blackborder').append(wikiElement);
//create introduction
if (window.showOptHelp) {
createHint("intro", $.i18n('conf_colors_color_intro'), "editor_container_color");
createHint("intro", $.i18n('conf_colors_smoothing_intro'), "editor_container_smoothing");
createHint("intro", $.i18n('conf_colors_blackborder_intro'), "editor_container_blackborder");
}
removeOverlay();
});

View File

@ -1,126 +1,142 @@
$(document).ready( function() {
performTranslation();
$(document).ready(function () {
performTranslation();
// function newsCont(t,e,l)
// {
// var h = '<div style="padding-left:9px;border-left:6px solid #0088cc;">';
// h += '<h4 style="font-weight:bold;font-size:17px">'+t+'</h4>';
// h += e;
// h += '<a href="'+l+'" class="" target="_blank"><i class="fa fa-fw fa-newspaper-o"></i>'+$.i18n('dashboard_newsbox_readmore')+'</a>';
// h += '</div><hr/>';
// $('#dash_news').append(h);
// }
function updateComponents() {
$("div[class*='currentInstance']").remove();
// function createNews(d)
// {
// for(var i = 0; i<d.length; i++)
// {
// if(i > 5)
// break;
//
// var title = d[i].title.rendered;
// var excerpt = d[i].excerpt.rendered;
// var link = d[i].link+'?pk_campaign=WebUI&pk_kwd=news_'+d[i].slug;
//
// newsCont(title,excerpt,link);
// }
// }
var instances_html = '<div class="col-md-6 col-xxl-4 currentInstance-"><div class="panel panel-default">';
instances_html += '<div class="panel-heading panel-instance">';
instances_html += '<div class="dropdown">';
instances_html += '<a id="active_instance_dropdown" class="dropdown-toggle" data-toggle="dropdown" href="#" style="text-decoration:none;display:flex;align-items:center;">';
instances_html += '<div id="active_instance_friendly_name"></div>';
instances_html += '<div id="btn_hypinstanceswitch" style="white-space:nowrap;"><span class="mdi mdi-lightbulb-group mdi-24px" style="margin-right:0;margin-left:5px;"></span><span class="mdi mdi-menu-down mdi-24px"></span></div>';
instances_html += '</a><ul id="hyp_inst_listing" class="dropdown-menu dropdown-alerts" style="cursor:pointer;"></ul>';
instances_html += '</div></div>';
// function getNews()
// {
// var h = '<span style="color:red;font-weight:bold">'+$.i18n('dashboard_newsbox_noconn')+'</span>';
// $.ajax({
// url: 'https://hyperion-project.org/wp-json/wp/v2/posts?_embed',
// dataType: 'json',
// type: 'GET',
// timeout: 2000
// })
// .done( function( data, textStatus, jqXHR ) {
// if(jqXHR.status == 200)
// createNews(data);
// else
// $('#dash_news').html(h);
// })
// .fail( function( jqXHR, textStatus ) {
// $('#dash_news').html(h);
// });
// }
instances_html += '<div class="panel-body">';
instances_html += '<table class="table borderless">';
instances_html += '<thead><tr><th style="vertical-align:middle"><i class="mdi mdi-lightbulb-on fa-fw"></i>';
instances_html += '<span>' + $.i18n('dashboard_componentbox_label_status') + '</span></th>';
// getNews();
var components = window.comps;
var hyperion_enabled = true;
components.forEach(function (obj) {
if (obj.name == "ALL") {
hyperion_enabled = obj.enabled;
}
});
function updateComponents()
{
var components = window.comps;
var components_html = "";
for (var idx=0; idx<components.length;idx++)
{
if(components[idx].name != "ALL")
components_html += '<tr><td>'+$.i18n('general_comp_'+components[idx].name)+'</td><td><i class="fa fa-circle component-'+(components[idx].enabled?"on":"off")+'"></i></td></tr>';
}
$("#tab_components").html(components_html);
var instBtn = '<span style="display:block; margin:3px"><input id="instanceButton"'
+ (hyperion_enabled ? "checked" : "") + ' type="checkbox" data-toggle="toggle" data-size="small" data-onstyle="success" data-on="'
+ $.i18n('general_btn_on') + '" data-off="'
+ $.i18n('general_btn_off') + '"></span>';
//info
var hyperion_enabled = true;
instances_html += '<th style="width:1px;text-align:right">' + instBtn + '</th></tr></thead></table>';
components.forEach( function(obj) {
if (obj.name == "ALL")
{
hyperion_enabled = obj.enabled
}
});
instances_html += '<table class="table borderless">';
instances_html += '<thead><tr><th colspan="3">';
instances_html += '<i class="fa fa-info-circle fa-fw"></i>';
instances_html += '<span>' + $.i18n('dashboard_infobox_label_title') + '</span>';
instances_html += '</th></tr></thead>';
instances_html += '<tbody>';
instances_html += '<tr><td></td><td>' + $.i18n('conf_leds_contr_label_contrtype') + '</td>';
instances_html += '<td style="text-align:right; padding-right:0">';
instances_html += '<span>' + window.serverConfig.device.type + '</span>';
instances_html += '<a class="fa fa-cog fa-fw" onclick="SwitchToMenuItem(\'MenuItemLeds\')" style="text-decoration:none;cursor:pointer"></a>';
instances_html += '</td></tr>';
instances_html += '</tbody></table>';
var instancename = window.currentHyperionInstanceName;
instances_html += '<table class="table first_cell_borderless">';
instances_html += '<thead><tr><th colspan="3">';
instances_html += '<i class="fa fa-eye fa-fw"></i>';
instances_html += '<span>' + $.i18n('dashboard_componentbox_label_title') + '</span>';
instances_html += '</th></tr></thead>';
$('#dash_statush').html(hyperion_enabled ? '<span style="color:green">'+$.i18n('general_btn_on')+'</span>' : '<span style="color:red">'+$.i18n('general_btn_off')+'</span>');
$('#btn_hsc').html(hyperion_enabled ? '<button class="btn btn-sm btn-danger" onClick="requestSetComponentState(\'ALL\',false)">'+$.i18n('dashboard_infobox_label_disableh', instancename)+'</button>' : '<button class="btn btn-sm btn-success" onClick="requestSetComponentState(\'ALL\',true)">'+$.i18n('dashboard_infobox_label_enableh', instancename)+'</button>');
}
var componentBtn = "";
var instance_components = "";
for (var idx = 0; idx < components.length; idx++) {
if (components[idx].name != "ALL") {
if ((components[idx].name === "FORWARDER" && window.currentHyperionInstance != 0) ||
(components[idx].name === "GRABBER" && !window.serverConfig.framegrabber.enable) ||
(components[idx].name === "V4L" && !window.serverConfig.grabberV4L2.enable))
continue;
// add more info
$('#dash_leddevice').html(window.serverConfig.device.type);
$('#dash_currv').html(window.currentVersion);
$('#dash_instance').html(window.currentHyperionInstanceName);
$('#dash_ports').html(window.serverConfig.flatbufServer.port+' | '+window.serverConfig.protoServer.port);
$('#dash_watchedversionbranch').html(window.serverConfig.general.watchedVersionBranch);
var comp_enabled = components[idx].enabled ? "checked" : "";
const general_comp = "general_comp_" + components[idx].name;
componentBtn = '<input ' +
'id="' + general_comp + '" ' + comp_enabled +
' type="checkbox" ' +
'data-toggle="toggle" ' +
'data-size="mini" ' +
'data-onstyle="success" ' +
'data-on="' + $.i18n('general_btn_on') + '" ' +
'data-off="' + $.i18n('general_btn_off') + '">';
getReleases(function(callback){
if(callback)
{
$('#dash_latev').html(window.latestVersion.tag_name);
instance_components += '<tr><td></td><td>' + $.i18n('general_comp_' + components[idx].name) + '</td><td style="text-align:right">' + componentBtn + '</td></tr>';
}
}
if (semverLite.gt(window.latestVersion.tag_name, window.currentVersion))
$('#versioninforesult').html('<div class="bs-callout bs-callout-warning" style="margin:0px"><a target="_blank" href="' + window.latestVersion.html_url + '">'+$.i18n('dashboard_infobox_message_updatewarning', window.latestVersion.tag_name) + '</a></div>');
else
$('#versioninforesult').html('<div class="bs-callout bs-callout-success" style="margin:0px">'+$.i18n('dashboard_infobox_message_updatesuccess')+'</div>');
instances_html += '<tbody>' + instance_components + '</tbody></table>';
instances_html += '</div></div></div>';
}
});
$('.instances').prepend(instances_html);
updateUiOnInstance(window.currentHyperionInstance);
updateHyperionInstanceListing();
$('#instanceButton').bootstrapToggle();
$('#instanceButton').change(e => {
requestSetComponentState('ALL', e.currentTarget.checked);
});
//determine platform
var grabbers = window.serverInfo.grabbers.available;
var html = "";
for (var idx = 0; idx < components.length; idx++) {
if (components[idx].name != "ALL") {
$("#general_comp_" + components[idx].name).bootstrapToggle();
$("#general_comp_" + components[idx].name).bootstrapToggle(hyperion_enabled ? "enable" : "disable");
$("#general_comp_" + components[idx].name).change(e => {
requestSetComponentState(e.currentTarget.id.split('_')[2], e.currentTarget.checked);
});
}
}
}
if(grabbers.indexOf('dispmanx') > -1)
html += 'Raspberry Pi';
else if(grabbers.indexOf('x11') > -1 || grabbers.indexOf('xcb') > -1)
html += 'X86';
else if(grabbers.indexOf('osx') > -1)
html += 'OSX';
else if(grabbers.indexOf('amlogic') > -1)
html += 'Amlogic';
else
html += 'Framebuffer';
// add more info
$('#dash_platform').html(html);
var screenGrabber = window.serverConfig.framegrabber.enable ? $.i18n('general_enabled') : $.i18n('general_disabled');
$('#dash_screen_grabber').html(screenGrabber);
var videoGrabber = window.serverConfig.grabberV4L2.enable ? $.i18n('general_enabled') : $.i18n('general_disabled');
$('#dash_video_grabber').html(videoGrabber);
var fbPort = window.serverConfig.flatbufServer.enable ? window.serverConfig.flatbufServer.port : $.i18n('general_disabled');
$('#dash_fbPort').html(fbPort);
var pbPort = window.serverConfig.protoServer.enable ? window.serverConfig.protoServer.port : $.i18n('general_disabled');
$('#dash_pbPort').html(pbPort);
//interval update
updateComponents();
$(window.hyperion).on("components-updated",updateComponents);
var jsonPort = window.serverConfig.jsonServer.port;
$('#dash_jsonPort').html(jsonPort);
var wsPorts = window.serverConfig.webConfig.port + ' | ' + window.serverConfig.webConfig.sslPort;
$('#dash_wsPorts').html(wsPorts);
if(window.showOptHelp)
createHintH("intro", $.i18n('dashboard_label_intro'), "dash_intro");
$('#dash_currv').html(window.currentVersion);
$('#dash_watchedversionbranch').html(window.serverConfig.general.watchedVersionBranch);
removeOverlay();
getReleases(function (callback) {
if (callback) {
$('#dash_latev').html(window.latestVersion.tag_name);
if (semverLite.gt(window.latestVersion.tag_name, window.currentVersion))
$('#versioninforesult').html('<div class="bs-callout bs-callout-warning" style="margin:0px"><a target="_blank" href="' + window.latestVersion.html_url + '">' + $.i18n('dashboard_infobox_message_updatewarning', window.latestVersion.tag_name) + '</a></div>');
else
$('#versioninforesult').html('<div class="bs-callout bs-callout-info" style="margin:0px">' + $.i18n('dashboard_infobox_message_updatesuccess') + '</div>');
}
});
//interval update
updateComponents();
$(window.hyperion).on("components-updated", updateComponents);
if (window.showOptHelp)
createHintH("intro", $.i18n('dashboard_label_intro'), "dash_intro");
removeOverlay();
});

View File

@ -1,5 +1,9 @@
$(document).ready( function() {
performTranslation();
// update instance listing
updateHyperionInstanceListing();
var oldEffects = [];
var effects_editor = null;
var confFgEff = window.serverConfig.foregroundEffect.effect;
@ -12,12 +16,12 @@ $(document).ready( function() {
//foreground effect
$('#conf_cont').append(createRow('conf_cont_fge'));
$('#conf_cont_fge').append(createOptPanel('fa-spinner', $.i18n("edt_conf_fge_heading_title"), 'editor_container_foregroundEffect', 'btn_submit_foregroundEffect'));
$('#conf_cont_fge').append(createHelpTable(window.schema.foregroundEffect.properties, $.i18n("edt_conf_fge_heading_title")));
$('#conf_cont_fge').append(createHelpTable(window.schema.foregroundEffect.properties, $.i18n("edt_conf_fge_heading_title"), "foregroundEffectHelpPanelId"));
//background effect
$('#conf_cont').append(createRow('conf_cont_bge'));
$('#conf_cont_bge').append(createOptPanel('fa-spinner', $.i18n("edt_conf_bge_heading_title"), 'editor_container_backgroundEffect', 'btn_submit_backgroundEffect'));
$('#conf_cont_bge').append(createHelpTable(window.schema.backgroundEffect.properties, $.i18n("edt_conf_bge_heading_title")));
$('#conf_cont_bge').append(createHelpTable(window.schema.backgroundEffect.properties, $.i18n("edt_conf_bge_heading_title"), "backgroundEffectHelpPanelId"));
//effect path
if(storedAccess != 'default')
@ -64,11 +68,31 @@ $(document).ready( function() {
updateEffectlist();
});
foregroundEffect_editor.on('change',function() {
foregroundEffect_editor.on('change', function () {
var foregroundEffectEnable = foregroundEffect_editor.getEditor("root.foregroundEffect.enable").getValue();
if (foregroundEffectEnable) {
showInputOptionsForKey(foregroundEffect_editor, "foregroundEffect", "enable", true);
$('#foregroundEffectHelpPanelId').show();
} else {
showInputOptionsForKey(foregroundEffect_editor, "foregroundEffect", "enable", false);
$('#foregroundEffectHelpPanelId').hide();
}
foregroundEffect_editor.validate().length || window.readOnlyMode ? $('#btn_submit_foregroundEffect').attr('disabled', true) : $('#btn_submit_foregroundEffect').attr('disabled', false);
});
backgroundEffect_editor.on('change',function() {
backgroundEffect_editor.on('change', function () {
var backgroundEffectEnable = backgroundEffect_editor.getEditor("root.backgroundEffect.enable").getValue();
if (backgroundEffectEnable) {
showInputOptionsForKey(backgroundEffect_editor, "backgroundEffect", "enable", true);
$('#backgroundEffectHelpPanelId').show();
} else {
showInputOptionsForKey(backgroundEffect_editor, "backgroundEffect", "enable", false);
$('#backgroundEffectHelpPanelId').hide();
}
backgroundEffect_editor.validate().length || window.readOnlyMode ? $('#btn_submit_backgroundEffect').attr('disabled', true) : $('#btn_submit_backgroundEffect').attr('disabled', false);
});

View File

@ -1,204 +1,259 @@
$(document).ready( function() {
performTranslation();
var oldDelList = [];
var effectName = "";
var imageData = "";
var effects_editor = null;
var effectPy = "";
var testrun;
$(document).ready(function () {
performTranslation();
if(window.showOptHelp)
createHintH("intro", $.i18n('effectsconfigurator_label_intro'), "intro_effc");
// update instance listing
updateHyperionInstanceListing();
function updateDelEffectlist(){
var newDelList = window.serverInfo.effects;
if(newDelList.length != oldDelList.length)
{
$('#effectsdellist').html("");
var usrEffArr = [];
var sysEffArr = [];
for(var idx=0; idx<newDelList.length; idx++)
{
if(!/^\:/.test(newDelList[idx].file))
usrEffArr.push('ext_'+newDelList[idx].name+':'+newDelList[idx].name);
else
sysEffArr.push('int_'+newDelList[idx].name+':'+newDelList[idx].name);
}
$('#effectsdellist').append(createSel(usrEffArr, $.i18n('remote_optgroup_usreffets'), true)).append(createSel(sysEffArr, $.i18n('remote_optgroup_syseffets'), true)).trigger('change');
oldDelList = newDelList;
}
}
var oldDelList = [];
var effectName = "";
var imageData = "";
var effects_editor = null;
var effectPyScript = "";
var testrun;
function triggerTestEffect() {
testrun = true;
var args = effects_editor.getEditor('root.args');
requestTestEffect(effectName, ":/effects/" + effectPy.slice(1), JSON.stringify(args.getValue()), imageData);
};
if (window.showOptHelp)
createHintH("intro", $.i18n('effectsconfigurator_label_intro'), "intro_effc");
// Specify upload handler for image files
JSONEditor.defaults.options.upload = function(type, file, cbs) {
var fileReader = new FileReader();
//check file
if (!file.type.startsWith('image')) {
imageData = "";
cbs.failure('File upload error');
// TODO clear file dialog.
showInfoDialog('error', "", $.i18n('infoDialog_writeimage_error_text', file.name));
return;
}
fileReader.onload = function () {
imageData = this.result.split(',')[1];
cbs.success(file.name);
};
fileReader.readAsDataURL(file);
};
$("#effectslist").off().on("change", function(event) {
if(effects_editor != null)
effects_editor.destroy();
for(var idx=0; idx<effects.length; idx++){
if (effects[idx].schemaContent.script == this.value)
{
effects_editor = createJsonEditor('editor_container', {
args : effects[idx].schemaContent,
},false, true, false);
effectPy = ':';
effectPy += effects[idx].schemaContent.script;
imageData = "";
$("#name-input").trigger("change");
$("#eff_desc").html(createEffHint($.i18n(effects[idx].schemaContent.title),$.i18n(effects[idx].schemaContent.title+'_desc')));
break;
}
}
effects_editor.on('change',function() {
if ($("#btn_cont_test").hasClass("btn-success") && effects_editor.validate().length == 0 && effectName != "")
{
triggerTestEffect();
}
if( effects_editor.validate().length == 0 && effectName != "")
{
$('#btn_start_test').attr('disabled', false);
!window.readOnlyMode ? $('#btn_write').attr('disabled', false) : $('#btn_write').attr('disabled', true);
}
else
{
$('#btn_start_test, #btn_write').attr('disabled', true);
}
});
});
// disable or enable control elements
$("#name-input").on('change keyup', function(event) {
effectName = $(this).val();
if ($(this).val() == '') {
effects_editor.disable();
$("#eff_footer").children().attr('disabled',true);
} else {
effects_editor.enable();
$("#eff_footer").children().attr('disabled',false);
!window.readOnlyMode ? $('#btn_write').attr('disabled', false) : $('#btn_write').attr('disabled', true);
function updateDelEffectlist() {
var newDelList = window.serverInfo.effects;
if (newDelList.length != oldDelList.length) {
$('#effectsdellist').html("");
var usrEffArr = [];
var sysEffArr = [];
for (var idx = 0; idx < newDelList.length; idx++) {
if (newDelList[idx].file.startsWith(":")) {
sysEffArr.push(idx);
}
else {
usrEffArr.push(idx);
}
}
if (usrEffArr.length > 0) {
var usrEffGrp = createSelGroup($.i18n('remote_optgroup_usreffets'));
for (var idx = 0; idx < usrEffArr.length; idx++)
{
usrEffGrp.appendChild(createSelOpt('ext_' + newDelList[usrEffArr[idx]].name, newDelList[usrEffArr[idx]].name));
}
$('#effectsdellist').append(usrEffGrp);
}
var sysEffGrp = createSelGroup($.i18n('remote_optgroup_syseffets'));
for (var idx = 0; idx < sysEffArr.length; idx++)
{
sysEffGrp.appendChild(createSelOpt('int_' + newDelList[sysEffArr[idx]].name, newDelList[sysEffArr[idx]].name));
}
$('#effectsdellist').append(sysEffGrp);
$("#effectsdellist").trigger("change");
oldDelList = newDelList;
}
}
function triggerTestEffect() {
testrun = true;
var args = effects_editor.getEditor('root.args');
if ($('input[type=radio][value=url]').is(':checked')) {
requestTestEffect(effectName, effectPyScript, JSON.stringify(args.getValue()), "");
} else {
requestTestEffect(effectName, effectPyScript, JSON.stringify(args.getValue()), imageData);
}
};
// Specify upload handler for image files
JSONEditor.defaults.options.upload = function (type, file, cbs) {
var fileReader = new FileReader();
//check file
if (!file.type.startsWith('image')) {
imageData = "";
cbs.failure('File upload error');
// TODO clear file dialog.
showInfoDialog('error', "", $.i18n('infoDialog_writeimage_error_text', file.name));
return;
}
fileReader.onload = function () {
imageData = this.result.split(',')[1];
cbs.success(file.name);
};
fileReader.readAsDataURL(file);
};
$("#effectslist").off().on("change", function (event) {
if (effects_editor != null)
effects_editor.destroy();
for (var idx = 0; idx < effects.length; idx++) {
if (effects[idx].script == this.value) {
effects_editor = createJsonEditor('editor_container', {
args: effects[idx].schemaContent,
}, false, true, false);
effectPyScript = effects[idx].script;
imageData = "";
$("#name-input").trigger("change");
var desc = $.i18n(effects[idx].schemaContent.title + '_desc');
if (desc === effects[idx].schemaContent.title + '_desc') {
desc = "";
}
$("#eff_desc").html(createEffHint($.i18n(effects[idx].schemaContent.title), desc));
break;
}
}
effects_editor.on('change', function () {
if ($("#btn_cont_test").hasClass("btn-success") && effects_editor.validate().length == 0 && effectName != "") {
triggerTestEffect();
}
if (effects_editor.validate().length == 0 && effectName != "") {
$('#btn_start_test').attr('disabled', false);
!window.readOnlyMode ? $('#btn_write').attr('disabled', false) : $('#btn_write').attr('disabled', true);
}
else {
$('#btn_start_test, #btn_write').attr('disabled', true);
}
});
});
// disable or enable control elements
$("#name-input").on('change keyup', function (event) {
effectName = encodeHTML($(this).val());
if ($(this).val() == '') {
effects_editor.disable();
$("#eff_footer").children().attr('disabled', true);
} else {
effects_editor.enable();
$("#eff_footer").children().attr('disabled', false);
!window.readOnlyMode ? $('#btn_write').attr('disabled', false) : $('#btn_write').attr('disabled', true);
}
});
// Save Effect
$('#btn_write').off().on('click', function () {
if ($('input[type=radio][value=url]').is(':checked')) {
requestWriteEffect(effectName, effectPyScript, JSON.stringify(effects_editor.getValue()), "");
} else {
requestWriteEffect(effectName, effectPyScript, JSON.stringify(effects_editor.getValue()), imageData);
}
$(window.hyperion).one("cmd-create-effect", function (event) {
if (event.response.success)
showInfoDialog('success', "", $.i18n('infoDialog_effconf_created_text', effectName));
});
// Save Effect
$('#btn_write').off().on('click',function() {
requestWriteEffect(effectName,effectPy,JSON.stringify(effects_editor.getValue()),imageData);
$(window.hyperion).one("cmd-create-effect", function(event) {
if (event.response.success)
showInfoDialog('success', "", $.i18n('infoDialog_effconf_created_text', effectName));
});
if (testrun)
setTimeout(requestPriorityClear, 100);
});
if (testrun)
setTimeout(requestPriorityClear,100);
// Start test
$('#btn_start_test').off().on('click', function () {
triggerTestEffect();
});
});
// Stop test
$('#btn_stop_test').off().on('click', function () {
requestPriorityClear();
testrun = false;
});
// Start test
$('#btn_start_test').off().on('click',function() {
triggerTestEffect();
});
// Continuous test
$('#btn_cont_test').off().on('click', function () {
toggleClass('#btn_cont_test', "btn-success", "btn-danger");
});
// Stop test
$('#btn_stop_test').off().on('click',function() {
requestPriorityClear();
testrun = false;
});
// Delete Effect
$('#btn_delete').off().on('click', function () {
var name = $("#effectsdellist").val().split("_")[1];
requestDeleteEffect(name);
$(window.hyperion).one("cmd-delete-effect", function (event) {
if (event.response.success)
showInfoDialog('success', "", $.i18n('infoDialog_effconf_deleted_text', name));
});
});
// Continuous test
$('#btn_cont_test').off().on('click',function() {
toggleClass('#btn_cont_test', "btn-success", "btn-danger");
});
// Disable or enable Delete Effect Button
$('#effectsdellist').off().on('change', function () {
$(this).val() == null ? $('#btn_edit, #btn_delete').prop('disabled', true) : "";
$(this).val().startsWith("int_") ? $('#btn_delete').prop('disabled', true) : $('#btn_delete').prop('disabled', false);
});
// Delete Effect
$('#btn_delete').off().on('click',function() {
var name = $("#effectsdellist").val().split("_")[1];
requestDeleteEffect(name);
$(window.hyperion).one("cmd-delete-effect", function(event) {
if (event.response.success)
showInfoDialog('success', "", $.i18n('infoDialog_effconf_deleted_text', name));
});
});
// Load Effect
$('#btn_edit').off().on('click', function () {
// disable or enable Delete Effect Button
$('#effectsdellist').off().on('change', function(){
$(this).val() == null ? $('#btn_edit, #btn_delete').prop('disabled',true) : "";
$(this).val().startsWith("int_") ? $('#btn_delete').prop('disabled',true) : $('#btn_delete').prop('disabled',false);
});
var name = $("#effectsdellist").val().replace("ext_", "");
if (name.startsWith("int_")) {
name = name.split("_").pop();
$("#name-input").val("My Modded Effect");
}
else {
name = name.split("_").pop();
$("#name-input").val(name);
}
// Load Effect
$('#btn_edit').off().on('click', function(){
var name = $("#effectsdellist").val().replace("ext_","");
var efx = window.serverInfo.effects;
for (var i = 0; i < efx.length; i++) {
if (efx[i].name == name) {
var py = efx[i].script;
$("#effectslist").val(py).trigger("change");
if(name.startsWith("int_"))
{ name = name.split("_").pop();
$("#name-input").val("My Modded Effect");
}
else
{
name = name.split("_").pop();
$("#name-input").val(name);
}
for (var key in efx[i].args) {
var ed = effects_editor.getEditor('root.args.' + [key]);
if (ed)
ed.setValue(efx[i].args[key]);
}
break;
}
}
});
var efx = window.serverInfo.effects;
for(var i = 0; i<efx.length; i++)
{
if(efx[i].name == name)
{
var py = efx[i].script.split("/").pop();
$("#effectslist").val(py).trigger("change");
//Create effect template list
var effects = window.serverSchema.properties.effectSchemas;
for(var key in efx[i].args)
{
var ed = effects_editor.getEditor('root.args.'+[key]);
if(ed)
ed.setValue(efx[i].args[key]);
}
break;
}
}
});
$('#effectslist').html("");
var custTemplatesIDs = [];
var sysTemplatesIDs = [];
//create basic effect list
var effects = window.serverSchema.properties.effectSchemas.internal;
for(var idx=0; idx<effects.length; idx++)
{
$("#effectslist").append(createSelOpt(effects[idx].schemaContent.script, $.i18n(effects[idx].schemaContent.title)));
}
$("#effectslist").trigger("change");
for (var idx = 0; idx < effects.length; idx++) {
if (effects[idx].type === "custom")
custTemplatesIDs.push(idx);
else
sysTemplatesIDs.push(idx);
}
updateDelEffectlist();
//Cannot use createSel(), as Windows filenames include colons ":"
if (custTemplatesIDs.length > 0) {
var custTmplGrp = createSelGroup($.i18n('remote_optgroup_templates_custom'));
for (var idx = 0; idx < custTemplatesIDs.length; idx++)
{
custTmplGrp.appendChild(createSelOpt(effects[custTemplatesIDs[idx]].script, $.i18n(effects[custTemplatesIDs[idx]].schemaContent.title)));
}
$('#effectslist').append(custTmplGrp);
}
//interval update
$(window.hyperion).on("cmd-effects-update", function(event){
window.serverInfo.effects = event.response.data.effects
updateDelEffectlist();
});
var sysTmplGrp = createSelGroup($.i18n('remote_optgroup_templates_system'));
for (var idx = 0; idx < sysTemplatesIDs.length; idx++)
{
sysTmplGrp.appendChild(createSelOpt(effects[sysTemplatesIDs[idx]].script, $.i18n(effects[sysTemplatesIDs[idx]].schemaContent.title)));
}
$('#effectslist').append(sysTmplGrp);
removeOverlay();
$("#effectslist").trigger("change");
updateDelEffectlist();
//interval update
$(window.hyperion).on("cmd-effects-update", function (event) {
window.serverInfo.effects = event.response.data.effects
updateDelEffectlist();
});
removeOverlay();
});

View File

@ -1,200 +1,182 @@
$(document).ready( function() {
performTranslation();
$(document).ready(function () {
performTranslation();
var importedConf;
var confName;
var conf_editor = null;
var importedConf;
var confName;
var conf_editor = null;
$('#conf_cont').append(createOptPanel('fa-wrench', $.i18n("edt_conf_gen_heading_title"), 'editor_container', 'btn_submit'));
if(window.showOptHelp)
{
$('#conf_cont').append(createHelpTable(window.schema.general.properties, $.i18n("edt_conf_gen_heading_title")));
}
else
$('#conf_imp').appendTo('#conf_cont');
$('#conf_cont').append(createOptPanel('fa-wrench', $.i18n("edt_conf_gen_heading_title"), 'editor_container', 'btn_submit', 'panel-system'));
if (window.showOptHelp) {
$('#conf_cont').append(createHelpTable(window.schema.general.properties, $.i18n("edt_conf_gen_heading_title")));
}
else
$('#conf_imp').appendTo('#conf_cont');
conf_editor = createJsonEditor('editor_container', {
general: window.schema.general
}, true, true);
conf_editor = createJsonEditor('editor_container', {
general: window.schema.general
}, true, true);
conf_editor.on('change',function() {
conf_editor.validate().length || window.readOnlyMode ? $('#btn_submit').attr('disabled', true) : $('#btn_submit').attr('disabled', false);
});
conf_editor.on('change', function () {
conf_editor.validate().length || window.readOnlyMode ? $('#btn_submit').attr('disabled', true) : $('#btn_submit').attr('disabled', false);
});
$('#btn_submit').off().on('click',function() {
requestWriteConfig(conf_editor.getValue());
});
$('#btn_submit').off().on('click', function () {
window.showOptHelp = conf_editor.getEditor("root.general.showOptHelp").getValue();
requestWriteConfig(conf_editor.getValue());
});
// Instance handling
function handleInstanceRename(e)
{
conf_editor.on('change',function() {
window.readOnlyMode ? $('#btn_cl_save').attr('disabled', true) : $('#btn_submit').attr('disabled', false);
window.readOnlyMode ? $('#btn_ma_save').attr('disabled', true) : $('#btn_submit').attr('disabled', false);
});
var inst = e.currentTarget.id.split("_")[1];
showInfoDialog('renInst', $.i18n('conf_general_inst_renreq_t'), getInstanceNameByIndex(inst));
// Instance handling
function handleInstanceRename(e) {
$("#id_btn_ok").off().on('click', function(){
requestInstanceRename(inst, $('#renInst_name').val())
});
conf_editor.on('change', function () {
window.readOnlyMode ? $('#btn_cl_save').attr('disabled', true) : $('#btn_submit').attr('disabled', false);
window.readOnlyMode ? $('#btn_ma_save').attr('disabled', true) : $('#btn_submit').attr('disabled', false);
});
$('#renInst_name').off().on('input',function(e) {
(e.currentTarget.value.length >= 5 && e.currentTarget.value != getInstanceNameByIndex(inst)) ? $('#id_btn_ok').attr('disabled', false) : $('#id_btn_ok').attr('disabled', true);
});
}
var inst = e.currentTarget.id.split("_")[1];
showInfoDialog('renInst', $.i18n('conf_general_inst_renreq_t'), getInstanceNameByIndex(inst));
function handleInstanceStartStop(e)
{
var inst = e.currentTarget.id.split("_")[1];
var start = (e.currentTarget.className == "btn btn-danger")
requestInstanceStartStop(inst, start)
}
$("#id_btn_ok").off().on('click', function () {
requestInstanceRename(inst, encodeHTML($('#renInst_name').val()))
});
function handleInstanceDelete(e)
{
var inst = e.currentTarget.id.split("_")[1];
showInfoDialog('delInst',$.i18n('conf_general_inst_delreq_h'),$.i18n('conf_general_inst_delreq_t',getInstanceNameByIndex(inst)));
$("#id_btn_yes").off().on('click', function(){
requestInstanceDelete(inst)
});
}
$('#renInst_name').off().on('input', function (e) {
(e.currentTarget.value.length >= 5 && e.currentTarget.value != getInstanceNameByIndex(inst)) ? $('#id_btn_ok').attr('disabled', false) : $('#id_btn_ok').attr('disabled', true);
});
}
function buildInstanceList()
{
var inst = serverInfo.instance
$('.itbody').html("");
for(var key in inst)
{
var startBtnColor = inst[key].running ? "success" : "danger";
var startBtnIcon = inst[key].running ? "stop" : "play";
var startBtnText = inst[key].running ? $.i18n('general_btn_stop') : $.i18n('general_btn_start');
var renameBtn = '<button id="instren_'+inst[key].instance+'" type="button" class="btn btn-primary"><i class="fa fa-fw fa-pencil"></i>'+$.i18n('general_btn_rename')+'</button>';
var startBtn = ""
var delBtn = "";
if(inst[key].instance > 0)
{
delBtn = '<button id="instdel_'+inst[key].instance+'" type="button" class="btn btn-warning"><i class="fa fa-fw fa-remove"></i>'+$.i18n('general_btn_delete')+'</button>';
startBtn = '<button id="inst_'+inst[key].instance+'" type="button" class="btn btn-'+startBtnColor+'"><i class="fa fa-fw fa-'+startBtnIcon+'"></i>'+startBtnText+'</button>';
}
$('.itbody').append(createTableRow([inst[key].friendly_name, renameBtn, startBtn, delBtn], false, true));
$('#instren_'+inst[key].instance).off().on('click', handleInstanceRename);
$('#inst_'+inst[key].instance).off().on('click', handleInstanceStartStop);
$('#instdel_'+inst[key].instance).off().on('click', handleInstanceDelete);
window.readOnlyMode ? $('#instren_'+inst[key].instance).attr('disabled', true) : $('#btn_submit').attr('disabled', false);
window.readOnlyMode ? $('#inst_'+inst[key].instance).attr('disabled', true) : $('#btn_submit').attr('disabled', false);
window.readOnlyMode ? $('#instdel_'+inst[key].instance).attr('disabled', true) : $('#btn_submit').attr('disabled', false);
}
}
function handleInstanceDelete(e) {
var inst = e.currentTarget.id.split("_")[1];
showInfoDialog('delInst', $.i18n('conf_general_inst_delreq_h'), $.i18n('conf_general_inst_delreq_t', getInstanceNameByIndex(inst)));
$("#id_btn_yes").off().on('click', function () {
requestInstanceDelete(inst)
});
}
createTable('ithead', 'itbody', 'itable');
$('.ithead').html(createTableRow([$.i18n('conf_general_inst_namehead'), "", $.i18n('conf_general_inst_actionhead'), ""], true, true));
buildInstanceList();
function buildInstanceList() {
var inst = serverInfo.instance
$('.itbody').html("");
for (var key in inst) {
var enable_style = inst[key].running ? "checked" : "";
var renameBtn = '<button id="instren_' + inst[key].instance + '" type="button" class="btn btn-primary"><i class="mdi mdi-lead-pencil""></i></button>';
var startBtn = ""
var delBtn = "";
if (inst[key].instance > 0) {
delBtn = '<button id="instdel_' + inst[key].instance + '" type="button" class="btn btn-danger"><i class="mdi mdi-delete-forever""></i></button>';
startBtn = '<input id="inst_' + inst[key].instance + '"' + enable_style + ' type="checkbox" data-toggle="toggle" data-onstyle="success font-weight-bold" data-on="' + $.i18n('general_btn_on') + '" data-offstyle="default font-weight-bold" data-off="' + $.i18n('general_btn_off') + '">';
$('#inst_name').off().on('input',function(e) {
(e.currentTarget.value.length >= 5) && !window.readOnlyMode ? $('#btn_create_inst').attr('disabled', false) : $('#btn_create_inst').attr('disabled', true);
if(5-e.currentTarget.value.length >= 1 && 5-e.currentTarget.value.length <= 4)
$('#inst_chars_needed').html(5-e.currentTarget.value.length + " " + $.i18n('general_chars_needed'))
else
$('#inst_chars_needed').html("<br />")
});
}
$('.itbody').append(createTableRow([inst[key].friendly_name, startBtn, renameBtn, delBtn], false, true));
$('#instren_' + inst[key].instance).off().on('click', handleInstanceRename);
$('#btn_create_inst').off().on('click',function(e) {
requestInstanceCreate($('#inst_name').val());
$('#inst_name').val("");
$('#btn_create_inst').attr('disabled', true)
});
$('#inst_' + inst[key].instance).bootstrapToggle();
$('#inst_' + inst[key].instance).change(e => {
requestInstanceStartStop(e.currentTarget.id.split('_').pop(), e.currentTarget.checked);
});
$('#instdel_' + inst[key].instance).off().on('click', handleInstanceDelete);
$(hyperion).off("instance-updated").on("instance-updated", function(event) {
buildInstanceList()
});
window.readOnlyMode ? $('#instren_' + inst[key].instance).attr('disabled', true) : $('#btn_submit').attr('disabled', false);
window.readOnlyMode ? $('#inst_' + inst[key].instance).attr('disabled', true) : $('#btn_submit').attr('disabled', false);
window.readOnlyMode ? $('#instdel_' + inst[key].instance).attr('disabled', true) : $('#btn_submit').attr('disabled', false);
}
}
//import
function dis_imp_btn(state)
{
state || window.readOnlyMode ? $('#btn_import_conf').attr('disabled', true) : $('#btn_import_conf').attr('disabled', false);
}
createTable('ithead', 'itbody', 'itable');
$('.ithead').html(createTableRow([$.i18n('conf_general_inst_namehead'), "", $.i18n('conf_general_inst_actionhead'), ""], true, true));
buildInstanceList();
function readFile(evt)
{
var f = evt.target.files[0];
$('#inst_name').off().on('input', function (e) {
(e.currentTarget.value.length >= 5) && !window.readOnlyMode ? $('#btn_create_inst').attr('disabled', false) : $('#btn_create_inst').attr('disabled', true);
if (5 - e.currentTarget.value.length >= 1 && 5 - e.currentTarget.value.length <= 4)
$('#inst_chars_needed').html(5 - e.currentTarget.value.length + " " + $.i18n('general_chars_needed'))
else
$('#inst_chars_needed').html("<br />")
});
if (f)
{
var r = new FileReader();
r.onload = function(e)
{
var content = e.target.result.replace(/[^:]?\/\/.*/g, ''); //remove Comments
$('#btn_create_inst').off().on('click', function (e) {
requestInstanceCreate(encodeHTML($('#inst_name').val()));
$('#inst_name').val("");
$('#btn_create_inst').attr('disabled', true)
});
//check file is json
var check = isJsonString(content);
if(check.length != 0)
{
showInfoDialog('error', "", $.i18n('infoDialog_import_jsonerror_text', f.name, JSON.stringify(check)));
dis_imp_btn(true);
}
else
{
content = JSON.parse(content);
//check for hyperion json
if(typeof content.leds === 'undefined' || typeof content.general === 'undefined')
{
showInfoDialog('error', "", $.i18n('infoDialog_import_hyperror_text', f.name));
dis_imp_btn(true);
}
else
{
dis_imp_btn(false);
importedConf = content;
confName = f.name;
}
}
}
r.readAsText(f);
}
}
$(hyperion).off("instance-updated").on("instance-updated", function (event) {
buildInstanceList()
});
$('#btn_import_conf').off().on('click', function(){
showInfoDialog('import', $.i18n('infoDialog_import_confirm_title'), $.i18n('infoDialog_import_confirm_text', confName));
//import
function dis_imp_btn(state) {
state || window.readOnlyMode ? $('#btn_import_conf').attr('disabled', true) : $('#btn_import_conf').attr('disabled', false);
}
$('#id_btn_import').off().on('click', function(){
requestWriteConfig(importedConf, true);
setTimeout(initRestart, 100);
});
});
function readFile(evt) {
var f = evt.target.files[0];
$('#select_import_conf').off().on('change', function(e){
if (window.File && window.FileReader && window.FileList && window.Blob)
readFile(e);
else
showInfoDialog('error', "", $.i18n('infoDialog_import_comperror_text'));
});
if (f) {
var r = new FileReader();
r.onload = function (e) {
var content = e.target.result.replace(/[^:]?\/\/.*/g, ''); //remove Comments
//export
$('#btn_export_conf').off().on('click', function(){
var name = window.serverConfig.general.name;
//check file is json
var check = isJsonString(content);
if (check.length != 0) {
showInfoDialog('error', "", $.i18n('infoDialog_import_jsonerror_text', f.name, JSON.stringify(check)));
dis_imp_btn(true);
}
else {
content = JSON.parse(content);
//check for hyperion json
if (typeof content.leds === 'undefined' || typeof content.general === 'undefined') {
showInfoDialog('error', "", $.i18n('infoDialog_import_hyperror_text', f.name));
dis_imp_btn(true);
}
else {
dis_imp_btn(false);
importedConf = content;
confName = f.name;
}
}
}
r.readAsText(f);
}
}
var d = new Date();
var month = d.getMonth()+1;
var day = d.getDate();
$('#btn_import_conf').off().on('click', function () {
showInfoDialog('import', $.i18n('infoDialog_import_confirm_title'), $.i18n('infoDialog_import_confirm_text', confName));
var timestamp = d.getFullYear() + '.' +
(month<10 ? '0' : '') + month + '.' +
(day<10 ? '0' : '') + day;
$('#id_btn_import').off().on('click', function () {
requestWriteConfig(importedConf, true);
setTimeout(initRestart, 100);
});
});
download(JSON.stringify(window.serverConfig, null, "\t"), 'Hyperion-'+window.currentVersion+'-Backup ('+name+') '+timestamp+'.json', "application/json");
});
$('#select_import_conf').off().on('change', function (e) {
if (window.File && window.FileReader && window.FileList && window.Blob)
readFile(e);
else
showInfoDialog('error', "", $.i18n('infoDialog_import_comperror_text'));
});
//create introduction
if(window.showOptHelp)
{
createHint("intro", $.i18n('conf_general_intro'), "editor_container");
createHint("intro", $.i18n('conf_general_tok_desc'), "tok_desc_cont");
createHint("intro", $.i18n('conf_general_inst_desc'), "inst_desc_cont");
}
//export
$('#btn_export_conf').off().on('click', function () {
var name = window.serverConfig.general.name;
removeOverlay();
var d = new Date();
var month = d.getMonth() + 1;
var day = d.getDate();
var timestamp = d.getFullYear() + '.' +
(month < 10 ? '0' : '') + month + '.' +
(day < 10 ? '0' : '') + day;
download(JSON.stringify(window.serverConfig, null, "\t"), 'Hyperion-' + window.currentVersion + '-Backup (' + name + ') ' + timestamp + '.json', "application/json");
});
//create introduction
if (window.showOptHelp) {
createHint("intro", $.i18n('conf_general_intro'), "editor_container");
createHint("intro", $.i18n('conf_general_tok_desc'), "tok_desc_cont");
createHint("intro", $.i18n('conf_general_inst_desc'), "inst_desc_cont");
}
removeOverlay();
});

1049
assets/webconfig/js/content_grabber.js Normal file → Executable file

File diff suppressed because it is too large Load Diff

View File

@ -1,354 +1,381 @@
var instNameInit = false
$(document).ready(function () {
var darkModeOverwrite = getStorage("darkModeOverwrite", true);
var darkModeOverwrite = getStorage("darkModeOverwrite", true);
if (darkModeOverwrite == "false" || darkModeOverwrite == null) {
if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
handleDarkMode();
}
if(darkModeOverwrite == "false" || darkModeOverwrite == null)
{
if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
handleDarkMode();
}
if (window.matchMedia && window.matchMedia('(prefers-color-scheme: light)').matches) {
setStorage("darkMode", "off", false);
}
}
if(getStorage("darkMode", false) == "on")
{
handleDarkMode();
}
if (window.matchMedia && window.matchMedia('(prefers-color-scheme: light)').matches) {
setStorage("darkMode", "off", false);
}
}
loadContentTo("#container_connection_lost", "connection_lost");
loadContentTo("#container_restart", "restart");
initWebSocket();
if (getStorage("darkMode", false) == "on") {
handleDarkMode();
}
$(window.hyperion).on("cmd-serverinfo", function (event) {
window.serverInfo = event.response.info;
window.readOnlyMode = window.sysInfo.hyperion.readOnlyMode;
// comps
window.comps = event.response.info.components
loadContentTo("#container_connection_lost", "connection_lost");
loadContentTo("#container_restart", "restart");
initWebSocket();
$(window.hyperion).trigger("ready");
$(window.hyperion).on("cmd-serverinfo", function (event) {
window.serverInfo = event.response.info;
window.comps.forEach(function (obj) {
if (obj.name == "ALL") {
if (obj.enabled)
$("#hyperion_disabled_notify").fadeOut("fast");
else
$("#hyperion_disabled_notify").fadeIn("fast");
}
});
// comps
window.comps = event.response.info.components
// determine button visibility
var running = window.serverInfo.instance.filter(entry => entry.running);
if (running.length > 1)
$('#btn_hypinstanceswitch').toggle(true)
else
$('#btn_hypinstanceswitch').toggle(false)
// update listing at button
updateHyperionInstanceListing()
if (!instNameInit) {
window.currentHyperionInstanceName = getInstanceNameByIndex(0);
instNameInit = true;
}
$(window.hyperion).trigger("ready");
updateSessions();
}); // end cmd-serverinfo
window.comps.forEach(function (obj) {
if (obj.name == "ALL") {
if (obj.enabled)
$("#hyperion_disabled_notify").fadeOut("fast");
else
$("#hyperion_disabled_notify").fadeIn("fast");
}
});
// Update language selection
$("#language-select").on('changed.bs.select',function (e, clickedIndex, isSelected, previousValue){
var newLang = availLang[clickedIndex-1];
if (newLang !== storedLang)
{
setStorage("langcode", newLang);
reload();
}
});
// determine button visibility
var running = window.serverInfo.instance.filter(entry => entry.running);
if (running.length > 1)
$('#btn_hypinstanceswitch').toggle(true)
else
$('#btn_hypinstanceswitch').toggle(false)
updateSessions();
}); // end cmd-serverinfo
$("#language-select").selectpicker(
{
container: 'body'
});
// Update language selection
$("#language-select").on('changed.bs.select', function (e, clickedIndex, isSelected, previousValue) {
var newLang = availLang[clickedIndex];
if (newLang !== storedLang) {
setStorage("langcode", newLang);
reload();
}
});
$(".bootstrap-select").click(function () {
$(this).addClass("open");
});
$("#language-select").selectpicker(
{
container: 'body'
});
$(document).click(function(){
$(".bootstrap-select").removeClass("open");
});
$(".bootstrap-select").click(function () {
$(this).addClass("open");
});
$(".bootstrap-select").click(function(e){
e.stopPropagation();
});
//End language selection
$(window.hyperion).on("cmd-sessions-update", function (event) {
window.serverInfo.sessions = event.response.data;
updateSessions();
});
$(document).click(function () {
$(".bootstrap-select").removeClass("open");
});
$(window.hyperion).on("cmd-authorize-tokenRequest cmd-authorize-getPendingTokenRequests", function (event) {
var val = event.response.info;
if (Array.isArray(event.response.info)) {
if (event.response.info.length == 0) {
return
}
val = event.response.info[0]
if (val.comment == '')
$('#modal_dialog').modal('hide');
}
$(".bootstrap-select").click(function (e) {
e.stopPropagation();
});
showInfoDialog("grantToken", $.i18n('conf_network_tok_grantT'), $.i18n('conf_network_tok_grantMsg') + '<br><span style="font-weight:bold">App: ' + val.comment + '</span><br><span style="font-weight:bold">Code: ' + val.id + '</span>')
$("#tok_grant_acc").off().on('click', function () {
tokenList.push(val)
// forward event, in case we need to rebuild the list now
$(window.hyperion).trigger({ type: "build-token-list" });
requestHandleTokenRequest(val.id, true)
});
$("#tok_deny_acc").off().on('click', function () {
requestHandleTokenRequest(val.id, false)
});
});
//End language selection
$(window.hyperion).one("cmd-authorize-getTokenList", function (event) {
tokenList = event.response.info;
requestServerInfo();
});
$(window.hyperion).on("cmd-sessions-update", function (event) {
window.serverInfo.sessions = event.response.data;
updateSessions();
});
$(window.hyperion).on("cmd-sysinfo", function (event) {
requestServerInfo();
window.sysInfo = event.response.info;
$(window.hyperion).on("cmd-authorize-tokenRequest cmd-authorize-getPendingTokenRequests", function (event) {
var val = event.response.info;
if (Array.isArray(event.response.info)) {
if (event.response.info.length == 0) {
return
}
val = event.response.info[0]
if (val.comment == '')
$('#modal_dialog').modal('hide');
}
window.currentVersion = window.sysInfo.hyperion.version;
window.currentChannel = window.sysInfo.hyperion.channel;
});
showInfoDialog("grantToken", $.i18n('conf_network_tok_grantT'), $.i18n('conf_network_tok_grantMsg') + '<br><span style="font-weight:bold">App: ' + val.comment + '</span><br><span style="font-weight:bold">Code: ' + val.id + '</span>')
$("#tok_grant_acc").off().on('click', function () {
tokenList.push(val)
// forward event, in case we need to rebuild the list now
$(window.hyperion).trigger({ type: "build-token-list" });
requestHandleTokenRequest(val.id, true)
});
$("#tok_deny_acc").off().on('click', function () {
requestHandleTokenRequest(val.id, false)
});
});
$(window.hyperion).one("cmd-authorize-getTokenList", function (event) {
tokenList = event.response.info;
});
$(window.hyperion).on("cmd-sysinfo", function (event) {
window.sysInfo = event.response.info;
window.currentVersion = window.sysInfo.hyperion.version;
window.currentChannel = window.sysInfo.hyperion.channel;
window.readOnlyMode = window.sysInfo.hyperion.readOnlyMode;
});
$(window.hyperion).one("cmd-config-getschema", function (event) {
window.serverSchema = event.response.info;
window.schema = window.serverSchema.properties;
$(window.hyperion).one("cmd-config-getschema", function (event) {
window.serverSchema = event.response.info;
requestServerConfig();
requestTokenInfo();
requestGetPendingTokenRequests();
window.schema = window.serverSchema.properties;
});
//Switch to last selected instance and load related config
var lastSelectedInstance = getStorage('lastSelectedInstance', false);
if (lastSelectedInstance == null || window.serverInfo.instance && !window.serverInfo.instance[lastSelectedInstance]) {
lastSelectedInstance = 0;
}
instanceSwitch(lastSelectedInstance);
$(window.hyperion).on("cmd-config-getconfig", function (event) {
window.serverConfig = event.response.info;
requestSysInfo();
requestSysInfo();
});
window.showOptHelp = window.serverConfig.general.showOptHelp;
});
$(window.hyperion).on("cmd-config-getconfig", function (event) {
window.serverConfig = event.response.info;
$(window.hyperion).on("cmd-config-setconfig", function (event) {
if (event.response.success === true) {
showNotification('success', $.i18n('dashboard_alert_message_confsave_success'), $.i18n('dashboard_alert_message_confsave_success_t'))
}
});
window.showOptHelp = window.serverConfig.general.showOptHelp;
});
$(window.hyperion).on("cmd-authorize-login", function (event) {
$("#main-nav").removeAttr('style')
$("#top-navbar").removeAttr('style')
$(window.hyperion).on("cmd-config-setconfig", function (event) {
if (event.response.success === true) {
showNotification('success', $.i18n('dashboard_alert_message_confsave_success'), $.i18n('dashboard_alert_message_confsave_success_t'))
}
});
if (window.defaultPasswordIsSet === true && getStorage("suppressDefaultPwWarning") !== "true" )
{
var supprPwWarnCheckbox = '<div class="text-right">'+$.i18n('dashboard_message_do_not_show_again')
+ ' <input id="chk_suppressDefaultPw" type="checkbox" onChange="suppressDefaultPwWarning()"> </div>'
showNotification('warning', $.i18n('dashboard_message_default_password'), $.i18n('dashboard_message_default_password_t'), '<a style="cursor:pointer" onClick="changePassword()">'
+ $.i18n('InfoDialog_changePassword_title') + '</a>' + supprPwWarnCheckbox)
}
else
//if logged on and pw != default show option to lock ui
$("#btn_lock_ui").removeAttr('style')
$(window.hyperion).on("cmd-authorize-login", function (event) {
$("#main-nav").removeAttr('style')
$("#top-navbar").removeAttr('style')
if (window.defaultPasswordIsSet === true && getStorage("suppressDefaultPwWarning") !== "true") {
var supprPwWarnCheckbox = '<div class="text-right">' + $.i18n('dashboard_message_do_not_show_again')
+ ' <input id="chk_suppressDefaultPw" type="checkbox" onChange="suppressDefaultPwWarning()"> </div>'
showNotification('warning', $.i18n('dashboard_message_default_password'), $.i18n('dashboard_message_default_password_t'), '<a style="cursor:pointer" onClick="changePassword()">'
+ $.i18n('InfoDialog_changePassword_title') + '</a>' + supprPwWarnCheckbox)
}
else
//if logged on and pw != default show option to lock ui
$("#btn_lock_ui").removeAttr('style')
if (event.response.hasOwnProperty('info'))
setStorage("loginToken", event.response.info.token, true);
if (event.response.hasOwnProperty('info'))
setStorage("loginToken", event.response.info.token, true);
requestServerConfigSchema();
});
requestServerConfigSchema();
});
$(window.hyperion).on("cmd-authorize-newPassword", function (event) {
if (event.response.success === true) {
showInfoDialog("success", $.i18n('InfoDialog_changePassword_success'));
// not necessarily true, but better than nothing
window.defaultPasswordIsSet = false;
}
});
$(window.hyperion).on("cmd-authorize-newPassword", function (event) {
if (event.response.success === true) {
showInfoDialog("success", $.i18n('InfoDialog_changePassword_success'));
// not necessarily true, but better than nothing
window.defaultPasswordIsSet = false;
}
});
$(window.hyperion).on("cmd-authorize-newPasswordRequired", function (event) {
var loginToken = getStorage("loginToken", true)
$(window.hyperion).on("cmd-authorize-newPasswordRequired", function (event) {
var loginToken = getStorage("loginToken", true)
if (event.response.info.newPasswordRequired == true) {
window.defaultPasswordIsSet = true;
if (event.response.info.newPasswordRequired == true) {
window.defaultPasswordIsSet = true;
if (loginToken)
requestTokenAuthorization(loginToken)
else
requestAuthorization('hyperion');
}
else {
$("#main-nav").attr('style', 'display:none')
$("#top-navbar").attr('style', 'display:none')
if (loginToken)
requestTokenAuthorization(loginToken)
else
requestAuthorization('hyperion');
}
else {
$("#main-nav").attr('style', 'display:none')
$("#top-navbar").attr('style', 'display:none')
if (loginToken)
requestTokenAuthorization(loginToken)
else
loadContentTo("#page-content", "login")
}
});
if (loginToken)
requestTokenAuthorization(loginToken)
else
loadContentTo("#page-content", "login")
}
});
$(window.hyperion).on("cmd-authorize-adminRequired", function (event) {
//Check if a admin login is required.
//If yes: check if default pw is set. If no: go ahead to get server config and render page
if (event.response.info.adminRequired === true)
requestRequiresDefaultPasswortChange();
else
requestServerConfigSchema();
});
$(window.hyperion).on("cmd-authorize-adminRequired", function (event) {
//Check if a admin login is required.
//If yes: check if default pw is set. If no: go ahead to get server config and render page
if (event.response.info.adminRequired === true)
requestRequiresDefaultPasswortChange();
else
requestServerConfigSchema();
});
$(window.hyperion).on("error", function (event) {
//If we are getting an error "No Authorization" back with a set loginToken we will forward to new Login (Token is expired.
//e.g.: hyperiond was started new in the meantime)
if (event.reason == "No Authorization" && getStorage("loginToken", true)) {
removeStorage("loginToken", true);
requestRequiresAdminAuth();
}
else {
showInfoDialog("error", "Error", event.reason);
}
});
$(window.hyperion).on("error", function (event) {
//If we are getting an error "No Authorization" back with a set loginToken we will forward to new Login (Token is expired.
//e.g.: hyperiond was started new in the meantime)
if (event.reason == "No Authorization" && getStorage("loginToken", true)) {
removeStorage("loginToken", true);
requestRequiresAdminAuth();
}
else if (event.reason == "Selected Hyperion instance isn't running") {
//Switch to default instance
instanceSwitch(0);
} else {
showInfoDialog("error", "Error", event.reason);
}
});
$(window.hyperion).on("open", function (event) {
requestRequiresAdminAuth();
});
$(window.hyperion).on("open", function (event) {
requestRequiresAdminAuth();
});
$(window.hyperion).one("ready", function (event) {
loadContent();
});
$(window.hyperion).one("ready", function (event) {
// Content will be loaded by the instance load/switch
});
$(window.hyperion).on("cmd-adjustment-update", function (event) {
window.serverInfo.adjustment = event.response.data
});
$(window.hyperion).on("cmd-adjustment-update", function (event) {
window.serverInfo.adjustment = event.response.data
});
$(window.hyperion).on("cmd-videomode-update", function (event) {
window.serverInfo.videomode = event.response.data.videomode
});
$(window.hyperion).on("cmd-videomode-update", function (event) {
window.serverInfo.videomode = event.response.data.videomode
});
$(window.hyperion).on("cmd-components-update", function (event) {
let obj = event.response.data
$(window.hyperion).on("cmd-components-update", function (event) {
let obj = event.response.data
// notfication in index
if (obj.name == "ALL") {
if (obj.enabled)
$("#hyperion_disabled_notify").fadeOut("fast");
else
$("#hyperion_disabled_notify").fadeIn("fast");
}
// notfication in index
if (obj.name == "ALL") {
if (obj.enabled)
$("#hyperion_disabled_notify").fadeOut("fast");
else
$("#hyperion_disabled_notify").fadeIn("fast");
}
window.comps.forEach((entry, index) => {
if (entry.name === obj.name) {
window.comps[index] = obj;
}
});
// notify the update
$(window.hyperion).trigger("components-updated", event.response.data);
});
window.comps.forEach((entry, index) => {
if (entry.name === obj.name) {
window.comps[index] = obj;
}
});
// notify the update
$(window.hyperion).trigger("components-updated", event.response.data);
});
$(window.hyperion).on("cmd-instance-update", function (event) {
window.serverInfo.instance = event.response.data
var avail = event.response.data;
// notify the update
$(window.hyperion).trigger("instance-updated");
$(window.hyperion).on("cmd-instance-update", function (event) {
window.serverInfo.instance = event.response.data
var avail = event.response.data;
// notify the update
$(window.hyperion).trigger("instance-updated");
// if our current instance is no longer available we are at instance 0 again.
var isInData = false;
for (var key in avail) {
if (avail[key].instance == currentHyperionInstance && avail[key].running) {
isInData = true;
}
}
// if our current instance is no longer available we are at instance 0 again.
var isInData = false;
for (var key in avail) {
if (avail[key].instance == currentHyperionInstance && avail[key].running) {
isInData = true;
}
}
if (!isInData) {
//Delete Storage information about the last used but now stopped instance
if (getStorage('lastSelectedInstance', false))
removeStorage('lastSelectedInstance', false)
if (!isInData) {
//Delete Storage information about the last used but now stopped instance
if (getStorage('lastSelectedInstance', false))
removeStorage('lastSelectedInstance', false)
currentHyperionInstance = 0;
currentHyperionInstanceName = getInstanceNameByIndex(0);
requestServerConfig();
setTimeout(requestServerInfo, 100)
setTimeout(requestTokenInfo, 200)
setTimeout(loadContent, 300, undefined, true)
}
currentHyperionInstance = 0;
currentHyperionInstanceName = getInstanceNameByIndex(0);
requestServerConfig();
setTimeout(requestServerInfo, 100)
setTimeout(requestTokenInfo, 200)
setTimeout(loadContent, 300, undefined, true)
}
// determine button visibility
var running = serverInfo.instance.filter(entry => entry.running);
if (running.length > 1)
$('#btn_hypinstanceswitch').toggle(true)
else
$('#btn_hypinstanceswitch').toggle(false)
// determine button visibility
var running = serverInfo.instance.filter(entry => entry.running);
if (running.length > 1)
$('#btn_hypinstanceswitch').toggle(true)
else
$('#btn_hypinstanceswitch').toggle(false)
// update listing for button
updateHyperionInstanceListing()
});
// update listing for button
updateHyperionInstanceListing()
});
$(window.hyperion).on("cmd-instance-switchTo", function (event) {
requestServerConfig();
setTimeout(requestServerInfo, 200)
setTimeout(requestTokenInfo, 400)
setTimeout(loadContent, 400, undefined, true)
});
$(window.hyperion).on("cmd-instance-switchTo", function (event) {
requestServerConfig();
setTimeout(requestServerInfo, 200)
setTimeout(requestTokenInfo, 400)
setTimeout(loadContent, 400, undefined, true)
});
$(window.hyperion).on("cmd-effects-update", function (event) {
window.serverInfo.effects = event.response.data.effects
});
$(window.hyperion).on("cmd-effects-update", function (event) {
window.serverInfo.effects = event.response.data.effects
});
$(".mnava").bind('click.menu', function (e) {
loadContent(e);
window.scrollTo(0, 0);
});
$(".mnava").bind('click.menu', function (e) {
loadContent(e);
window.scrollTo(0, 0);
});
$(window).scroll(function() {
if ($(window).scrollTop() > 65)
$("#navbar_brand_logo").css("display", "none");
else
$("#navbar_brand_logo").css("display", "");
});
$('#side-menu li a, #side-menu li ul li a').click(function() {
$('#side-menu').find('.active').toggleClass('inactive'); // find all active classes and set inactive;
$(this).addClass('active');
});
});
function suppressDefaultPwWarning(){
if (document.getElementById('chk_suppressDefaultPw').checked)
setStorage("suppressDefaultPwWarning", "true");
else
setStorage("suppressDefaultPwWarning", "false");
function suppressDefaultPwWarning() {
if (document.getElementById('chk_suppressDefaultPw').checked)
setStorage("suppressDefaultPwWarning", "true");
else
setStorage("suppressDefaultPwWarning", "false");
}
$(function () {
var sidebar = $('#side-menu'); // cache sidebar to a variable for performance
sidebar.delegate('a.inactive', 'click', function () {
sidebar.find('.active').toggleClass('active inactive');
$(this).toggleClass('active inactive');
});
var sidebar = $('#side-menu'); // cache sidebar to a variable for performance
sidebar.delegate('a.inactive', 'click', function () {
sidebar.find('.active').toggleClass('active inactive');
$(this).toggleClass('active inactive');
});
});
// hotfix body padding when bs modals overlap
$(document.body).on('hide.bs.modal,hidden.bs.modal', function () {
$('body').css('padding-right', '0');
$('body').css('padding-right', '0');
});
//Dark Mode
$("#btn_darkmode").off().on("click",function(e){
if(getStorage("darkMode", false) != "on")
{
handleDarkMode();
setStorage("darkModeOverwrite", true, true);
}
else {
setStorage("darkMode", "off", false);
setStorage("darkModeOverwrite", true, true);
location.reload();
}
$("#btn_darkmode").off().on("click", function (e) {
if (getStorage("darkMode", false) != "on") {
handleDarkMode();
setStorage("darkModeOverwrite", true, true);
}
else {
setStorage("darkMode", "off", false);
setStorage("darkModeOverwrite", true, true);
location.reload();
}
});
// Menuitem toggle;
function SwitchToMenuItem(target, item) {
document.getElementById(target).click(); // Get <a href menu item;
let sidebar = $('#side-menu'); // Get sidebar menu;
sidebar.find('.active').toggleClass('inactive'); // find all active classes and set inactive;
sidebar.find('.in').removeClass("in"); // Find all collapsed menu items and close it by remove "in" class;
$('#' + target).removeClass('inactive'); // Remove inactive state by classname;
$('#' + target).addClass('active'); // Add active state by classname;
let cl_object = $('#' + target).closest('ul'); // Find closest ul sidemenu header;
cl_object.addClass('in'); // Add class "in" to expand header in sidebar menu;
if (item) { // Jump to div "item" if available. Time limit 3 seconds
function scrollTo(counter) {
if(counter < 30) {
setTimeout(function() {
counter++;
if ($('#' + item).length)
$('#' + item)[0].scrollIntoView();
else
scrollTo(counter);
}, 100);
}
}
scrollTo(0);
}
};

View File

@ -0,0 +1,99 @@
$(document).ready(function () {
performTranslation();
// update instance listing
updateHyperionInstanceListing();
var conf_editor_instCapt = null;
// Instance Capture
$('#conf_cont').append(createRow('conf_cont_instCapt'));
$('#conf_cont_instCapt').append(createOptPanel('fa-camera', $.i18n("edt_conf_instCapture_heading_title"), 'editor_container_instCapt', 'btn_submit_instCapt', ''));
if (window.showOptHelp) {
$('#conf_cont_instCapt').append(createHelpTable(window.schema.instCapture.properties, $.i18n("edt_conf_instCapture_heading_title")));
}
// Instance Capture
conf_editor_instCapt = createJsonEditor('editor_container_instCapt', {
instCapture: window.schema.instCapture
}, true, true);
var grabber_config_info_html = '<div class="bs-callout bs-callout-info" style="margin-top:0px"><h4>' + $.i18n('dashboard_infobox_label_title') + '</h4 >';
grabber_config_info_html += '<span>' + $.i18n('conf_grabber_inst_grabber_config_info') + '</span>';
grabber_config_info_html += '<a class="fa fa-cog fa-fw" onclick="SwitchToMenuItem(\'MenuItemGrabber\')" style="text-decoration:none;cursor:pointer"></a>';
grabber_config_info_html += '</div>';
$('#editor_container_instCapt').append(grabber_config_info_html);
conf_editor_instCapt.on('ready', function () {
if (!window.serverConfig.framegrabber.enable) {
conf_editor_instCapt.getEditor("root.instCapture.systemEnable").setValue(false);
conf_editor_instCapt.getEditor("root.instCapture.systemEnable").disable();
}
else {
conf_editor_instCapt.getEditor("root.instCapture.systemEnable").setValue(window.serverConfig.instCapture.systemEnable);
}
if (!window.serverConfig.grabberV4L2.enable) {
conf_editor_instCapt.getEditor("root.instCapture.v4lEnable").setValue(false);
conf_editor_instCapt.getEditor("root.instCapture.v4lEnable").disable();
}
else {
conf_editor_instCapt.getEditor("root.instCapture.v4lEnable").setValue(window.serverConfig.instCapture.v4lEnable);
}
});
conf_editor_instCapt.on('change', function () {
if (!conf_editor_instCapt.validate().length) {
if (!window.serverConfig.framegrabber.enable && !window.serverConfig.grabberV4L2.enable) {
$('#btn_submit_instCapt').attr('disabled', true);
} else {
window.readOnlyMode ? $('#btn_submit_instCapt').attr('disabled', true) : $('#btn_submit_instCapt').attr('disabled', false);
}
}
else {
$('#btn_submit_instCapt').attr('disabled', true);
}
});
conf_editor_instCapt.watch('root.instCapture.systemEnable', () => {
var screenEnable = conf_editor_instCapt.getEditor("root.instCapture.systemEnable").getValue();
if (screenEnable) {
conf_editor_instCapt.getEditor("root.instCapture.systemGrabberDevice").setValue(window.serverConfig.framegrabber.available_devices);
conf_editor_instCapt.getEditor("root.instCapture.systemGrabberDevice").disable();
showInputOptions("instCapture", ["systemGrabberDevice"], true);
showInputOptions("instCapture", ["systemPriority"], true);
} else {
showInputOptions("instCapture", ["systemGrabberDevice"], false);
showInputOptions("instCapture", ["systemPriority"], false);
}
});
conf_editor_instCapt.watch('root.instCapture.v4lEnable', () => {
var videoEnable = conf_editor_instCapt.getEditor("root.instCapture.v4lEnable").getValue();
if (videoEnable) {
conf_editor_instCapt.getEditor("root.instCapture.v4lGrabberDevice").setValue(window.serverConfig.grabberV4L2.available_devices);
conf_editor_instCapt.getEditor("root.instCapture.v4lGrabberDevice").disable();
showInputOptions("instCapture", ["v4lGrabberDevice"], true);
showInputOptions("instCapture", ["v4lPriority"], true);
}
else {
if (!window.serverConfig.grabberV4L2.enable) {
conf_editor_instCapt.getEditor("root.instCapture.v4lEnable").disable();
}
showInputOptions("instCapture", ["v4lGrabberDevice"], false);
showInputOptions("instCapture", ["v4lPriority"], false);
}
});
$('#btn_submit_instCapt').off().on('click', function () {
requestWriteConfig(conf_editor_instCapt.getValue());
});
removeOverlay();
});

View File

@ -1,212 +1,185 @@
var conf_editor = null;
var createdCont = false;
var isScroll = true;
performTranslation();
requestLoggingStart();
requestLoggingStop();
$(document).ready(function() {
var messages;
var loguplmess = "";
var reportUrl = 'https://report.hyperion-project.org/#';
$(document).ready(function () {
$('#conf_cont').append(createOptPanel('fa-reorder', $.i18n("edt_conf_log_heading_title"), 'editor_container', 'btn_submit'));
if(window.showOptHelp)
{
$('#conf_cont').append(createHelpTable(window.schema.logger.properties, $.i18n("edt_conf_log_heading_title")));
createHintH("intro", $.i18n('conf_logging_label_intro'), "log_head");
}
$("#log_upl_pol").append('<span style="color:grey;font-size:80%">'+$.i18n("conf_logging_uplpolicy")+' '+buildWL("user/support#report_privacy_policy",$.i18n("conf_logging_contpolicy")));
requestLoggingStart();
conf_editor = createJsonEditor('editor_container', {
logger : window.schema.logger
}, true, true);
$('#conf_cont').append(createOptPanel('fa-reorder', $.i18n("edt_conf_log_heading_title"), 'editor_container', 'btn_submit'));
if (window.showOptHelp) {
$('#conf_cont').append(createHelpTable(window.schema.logger.properties, $.i18n("edt_conf_log_heading_title")));
createHintH("intro", $.i18n('conf_logging_label_intro'), "log_head");
}
conf_editor.on('change',function() {
conf_editor.validate().length || window.readOnlyMode ? $('#btn_submit').attr('disabled', true) : $('#btn_submit').attr('disabled', false);
});
conf_editor = createJsonEditor('editor_container', {
logger: window.schema.logger
}, true, true);
$('#btn_submit').off().on('click',function() {
requestWriteConfig(conf_editor.getValue());
});
conf_editor.on('change', function () {
conf_editor.validate().length || window.readOnlyMode ? $('#btn_submit').attr('disabled', true) : $('#btn_submit').attr('disabled', false);
});
$('#btn_logupload').off().on('click',function() {
uploadLog();
$(this).attr("disabled", true);
$('#upl_link').html($.i18n('conf_logging_uploading'))
});
$('#btn_submit').off().on('click', function () {
//show prev uploads
var ent;
var displayedLogLevel = conf_editor.getEditor("root.logger.level").getValue();
var newLogLevel = { logger: {} };
newLogLevel.logger.level = displayedLogLevel;
if(getStorage("prev_reports"))
{
ent = JSON.parse(getStorage("prev_reports"));
$('#prev_reports').append('<h4 style="margin-top:30px">'+$.i18n('conf_logging_lastreports')+'</h4>');
for(var i = 0; i<ent.length; i++)
{
$('#prev_reports').append('<p><a href="'+reportUrl+ent[i].id+'" target="_blank">'+ent[i].title+'('+ent[i].time+')</a></p>');
}
}
else
ent = [];
requestWriteConfig(newLogLevel);
});
function updateLastReports(id,time,title)
{
if(ent.length > 4)
ent.pop();
ent.unshift({"id": id ,"time": time,"title": title})
setStorage("prev_reports",JSON.stringify(ent));
}
function infoSummary() {
var info = "";
function uploadLog()
{
var log = "";
var config = JSON.stringify(window.serverConfig, null).replace(/"/g, '\\"');
var prios = window.serverInfo.priorities;
var comps = window.serverInfo.components;
var sys = window.sysInfo.system;
var shy = window.sysInfo.hyperion;
var info;
info += 'Hyperion System Summary Report (' + window.serverConfig.general.name + '), Reported instance: ' + window.currentHyperionInstanceName + '\n';
//create log
log = (messages ? loguplmess : "Log was empty!");
info += "\n< ----- System information -------------------- >\n";
info += getSystemInfo() + '\n';
//create general info
info = "### GENERAL ### \n";
info += 'Build: '+shy.build+'\n';
info += 'Build time: '+shy.time+'\n';
info += 'Version: '+shy.version+'\n';
info += 'UI Lang: '+storedLang+' (BrowserL: '+navigator.language+')\n';
info += 'UI Access: '+storedAccess+'\n';
info += 'Log lvl: '+window.serverConfig.logger.level+'\n';
info += 'Avail Capt: '+window.serverInfo.grabbers.available+'\n';
info += 'Database: '+(shy.readOnlyMode ? "ready-only" : "read/write")+'\n';
info += '\n';
info += "\n< ----- Configured Instances ------------------ >\n";
var instances = window.serverInfo.instance;
for (var i = 0; i < instances.length; i++) {
info += instances[i].instance + ': ' + instances[i].friendly_name + ' Running: ' + instances[i].running + '\n';
}
info += 'Distribution: '+sys.prettyName+'\n';
info += 'Architecture: '+sys.architecture+'\n';
info += "\n< ----- This instance's priorities ------------ >\n";
var prios = window.serverInfo.priorities;
for (var i = 0; i < prios.length; i++) {
info += prios[i].priority + ': ';
if (prios[i].visible) {
info += ' VISIBLE!';
}
else {
info += ' ';
}
info += ' (' + prios[i].componentId + ') Owner: ' + prios[i].owner + '\n';
}
info += 'priorities_autoselect: ' + window.serverInfo.priorities_autoselect + '\n';
if (sys.cpuModelName)
info += 'CPU Model: ' + sys.cpuModelName + '\n';
if (sys.cpuModelType)
info += 'CPU Type: ' + sys.cpuModelType + '\n';
if (sys.cpuRevision)
info += 'CPU Revision: ' + sys.cpuRevision + '\n';
if (sys.cpuHardware)
info += 'CPU Hardware: ' + sys.cpuHardware + '\n';
info += "\n< ----- This instance components' status ------->\n";
var comps = window.serverInfo.components;
for (var i = 0; i < comps.length; i++) {
info += comps[i].name + ' - ' + comps[i].enabled + '\n';
}
info += 'Kernel: ' + sys.kernelType+' ('+sys.kernelVersion+' (WS: '+sys.wordSize+'))' + '\n';
info += 'Qt Version: ' + sys.qtVersion + '\n';
info += 'Python Version: ' + sys.pyVersion + '\n';
info += 'Browser/OS: ' + navigator.userAgent + '\n\n';
info += "\n< ----- This instance's configuration --------- >\n";
info += JSON.stringify(window.serverConfig) + '\n';
//create prios
info += "### PRIORITIES ### \n";
for(var i = 0; i<prios.length; i++)
{
info += prios[i].priority;
if(prios[i].visible)
info += ' VISIBLE!';
else
info += ' ';
info += ' ('+prios[i].component+') Owner: '+prios[i].owner+'\n';
}
info += '\npriorities_autoselect: '+window.serverInfo.priorities_autoselect+'\n\n';
info += "\n< ----- Current Log --------------------------- >\n";
var logMsgs = document.getElementById("logmessages").textContent;
if (logMsgs.length !== 0) {
info += logMsgs;
} else {
info += "Log is empty!";
}
//create comps
info += '### COMPONENTS ### \n';
for(var i = 0; i<comps.length; i++)
{
info += comps[i].enabled+' - '+comps[i].name+'\n';
}
return info;
}
//escape data
info = JSON.stringify(info);
log = JSON.stringify(log);
config = JSON.stringify(config);
var title = 'Hyperion '+window.currentVersion+' Report ('+window.serverConfig.general.name+' ('+window.serverInfo.ledDevices.active+'))';
function createLogContainer() {
$.ajax({
url: 'https://api.hyperion-project.org/report.php',
crossDomain: true,
contentType: 'application/json',
type: 'POST',
timeout: 7000,
data: '{"title":"'+title+'","info":'+info+',"log":'+log+',"config":'+config+'}'
})
.done( function( data, textStatus, jqXHR ) {
reportUrl += data.id;
if(textStatus == "success")
{
$('#upl_link').html($.i18n('conf_logging_yourlink')+': <a href="'+reportUrl+'" target="_blank">'+reportUrl+'</a>');
$("html, body").animate({ scrollTop: 9999 }, "fast");
updateLastReports(data.id,data.time,title);
}
else
{
$('#btn_logupload').attr("disabled", false);
$('#upl_link').html('<span style="color:red">'+$.i18n('conf_logging_uplfailed')+'<span>');
}
})
.fail( function( jqXHR, textStatus ) {
console.log(jqXHR,textStatus);
$('#btn_logupload').attr("disabled", false);
$('#upl_link').html('<span style="color:red">'+$.i18n('conf_logging_uplfailed')+'<span>');
});
}
const isScrollEnableStyle = (isScroll ? "checked" : "");
if (!window.loggingHandlerInstalled)
{
window.loggingHandlerInstalled = true;
$(window.hyperion).on("cmd-logging-update",function(event){
$('#log_content').html('<pre><div id="logmessages" style="overflow:scroll;max-height:400px"></div></pre>');
$('#log_footer').append('<label class="checkbox-inline">'
+ '<input id = "btn_scroll"' + isScrollEnableStyle + ' type = "checkbox"'
+ 'data-toggle="toggle" data-onstyle="success" data-on="' + $.i18n('general_btn_on') + '" data-off="' + $.i18n('general_btn_off') + '">'
+ $.i18n('conf_logging_btn_autoscroll') + '</label>'
);
if ($("#logmessages").length == 0 && window.loggingStreamActive)
{
requestLoggingStop();
window.loggingStreamActive = false;
}
$(`#btn_scroll`).bootstrapToggle();
$(`#btn_scroll`).change(e => {
if (e.currentTarget.checked) {
//Scroll to end of log
isScroll = true;
if ($("#logmessages").length > 0) {
$('#logmessages')[0].scrollTop = $('#logmessages')[0].scrollHeight;
}
} else {
isScroll = false;
}
});
messages = (event.response.result.messages);
if(messages.length != 0 && !createdCont)
{
$('#log_content').html('<pre><div id="logmessages" style="overflow:scroll;max-height:400px"></div></pre><button class="btn btn-primary" id="btn_autoscroll"><i class="fa fa-long-arrow-down fa-fw"></i>'+$.i18n('conf_logging_btn_autoscroll')+'</button>');
createdCont = true;
$('#log_footer').append('<button class="btn btn-primary pull-right" id="btn_clipboard"><i class="fa fa-fw fa-clipboard"></i>' + $.i18n("conf_logging_btn_clipboard") + '</button>');
$('#btn_autoscroll').off().on('click',function() {
toggleClass('#btn_autoscroll', "btn-success", "btn-danger");
});
}
$('#btn_clipboard').off().on('click', function () {
const temp = document.createElement('textarea');
temp.textContent = infoSummary();
document.body.append(temp);
temp.select();
document.execCommand("copy");
temp.remove();
});
}
for(var idx = 0; idx < messages.length; idx++)
{
var app_name = messages[idx].appName;
var logger_name = messages[idx].loggerName;
var function_ = messages[idx].function;
var line = messages[idx].line;
var file_name = messages[idx].fileName;
var msg = messages[idx].message;
var level_string = messages[idx].levelString;
var utime = messages[idx].utime;
function updateLogOutput(messages) {
var debug = "";
if(level_string == "DEBUG") {
debug = "("+file_name+":"+line+":"+function_+"()) ";
}
if (messages.length != 0) {
var date = new Date(parseInt(utime));
for (var idx = 0; idx < messages.length; idx++) {
var app_name = messages[idx].appName;
var logger_name = messages[idx].loggerName;
var function_ = messages[idx].function;
var line = messages[idx].line;
var file_name = messages[idx].fileName;
var msg = encodeHTML(messages[idx].message);
var level_string = messages[idx].levelString;
var utime = messages[idx].utime;
$("#logmessages").append("\n <code>"+date.toISOString()+" ["+app_name+" "+logger_name+"] ("+level_string+") "+debug+msg+"</code>");
loguplmess += "["+app_name+" "+logger_name+"] ("+level_string+") "+debug+msg+"\n";
}
var debug = "";
if (level_string == "DEBUG") {
debug = "(" + file_name + ":" + line + ":" + function_ + "()) ";
}
if($("#btn_autoscroll").hasClass('btn-success'))
{
$('#logmessages').stop().animate({
scrollTop: $('#logmessages')[0].scrollHeight
}, 800);
}
});
}
var date = new Date(parseInt(utime));
var newLogLine = date.toISOString() + " [" + app_name + " " + logger_name + "] (" + level_string + ") " + debug + msg;
removeOverlay();
$("#logmessages").append("<code>" + newLogLine + "</code>\n");
}
if (isScroll && $("#logmessages").length > 0) {
$('#logmessages').stop().animate({
scrollTop: $('#logmessages')[0].scrollHeight
}, 800);
}
}
}
if (!window.loggingHandlerInstalled) {
window.loggingHandlerInstalled = true;
$(window.hyperion).on("cmd-logging-update", function (event) {
var messages = (event.response.result.messages);
if (messages.length != 0) {
if (!createdCont) {
createLogContainer();
createdCont = true;
}
updateLogOutput(messages)
}
});
}
$(window.hyperion).on("cmd-settings-update", function (event) {
var obj = event.response.data
if (obj.logger) {
Object.getOwnPropertyNames(obj).forEach(function (val, idx, array) {
window.serverConfig[val] = obj[val];
});
var currentlogLevel = window.serverConfig.logger.level;
conf_editor.getEditor("root.logger.level").setValue(currentlogLevel);
location.reload();
}
});
removeOverlay();
});

View File

@ -1,218 +1,250 @@
$(document).ready( function() {
performTranslation();
$(document).ready(function () {
performTranslation();
var conf_editor_net = null;
var conf_editor_json = null;
var conf_editor_proto = null;
var conf_editor_fbs = null;
var conf_editor_bobl = null;
var conf_editor_forw = null;
var BOBLIGHT_ENABLED = window.comps.find(element => element.name == "BOBLIGHTSERVER");
if(window.showOptHelp)
{
//network
$('#conf_cont').append(createRow('conf_cont_net'))
$('#conf_cont_net').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_net_heading_title"), 'editor_container_net', 'btn_submit_net'));
$('#conf_cont_net').append(createHelpTable(window.schema.network.properties, $.i18n("edt_conf_net_heading_title")));
var conf_editor_net = null;
var conf_editor_json = null;
var conf_editor_proto = null;
var conf_editor_fbs = null;
var conf_editor_bobl = null;
var conf_editor_forw = null;
//jsonserver
$('#conf_cont').append(createRow('conf_cont_json'))
$('#conf_cont_json').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_js_heading_title"), 'editor_container_jsonserver', 'btn_submit_jsonserver'));
$('#conf_cont_json').append(createHelpTable(window.schema.jsonServer.properties, $.i18n("edt_conf_js_heading_title")));
if (window.showOptHelp) {
//network
$('#conf_cont').append(createRow('conf_cont_net'))
$('#conf_cont_net').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_net_heading_title"), 'editor_container_net', 'btn_submit_net', 'panel-system'));
$('#conf_cont_net').append(createHelpTable(window.schema.network.properties, $.i18n("edt_conf_net_heading_title")));
//flatbufserver
$('#conf_cont').append(createRow('conf_cont_flatbuf'))
$('#conf_cont_flatbuf').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_fbs_heading_title"), 'editor_container_fbserver', 'btn_submit_fbserver'));
$('#conf_cont_flatbuf').append(createHelpTable(window.schema.flatbufServer.properties, $.i18n("edt_conf_fbs_heading_title")));
//jsonserver
$('#conf_cont').append(createRow('conf_cont_json'))
$('#conf_cont_json').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_js_heading_title"), 'editor_container_jsonserver', 'btn_submit_jsonserver', 'panel-system'));
$('#conf_cont_json').append(createHelpTable(window.schema.jsonServer.properties, $.i18n("edt_conf_js_heading_title")));
//protoserver
$('#conf_cont').append(createRow('conf_cont_proto'))
$('#conf_cont_proto').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_pbs_heading_title"), 'editor_container_protoserver', 'btn_submit_protoserver'));
$('#conf_cont_proto').append(createHelpTable(window.schema.protoServer.properties, $.i18n("edt_conf_pbs_heading_title")));
//flatbufserver
$('#conf_cont').append(createRow('conf_cont_flatbuf'))
$('#conf_cont_flatbuf').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_fbs_heading_title"), 'editor_container_fbserver', 'btn_submit_fbserver', 'panel-system'));
$('#conf_cont_flatbuf').append(createHelpTable(window.schema.flatbufServer.properties, $.i18n("edt_conf_fbs_heading_title"), "flatbufServerHelpPanelId"));
//boblight
$('#conf_cont').append(createRow('conf_cont_bobl'))
$('#conf_cont_bobl').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_bobls_heading_title"), 'editor_container_boblightserver', 'btn_submit_boblightserver'));
$('#conf_cont_bobl').append(createHelpTable(window.schema.boblightServer.properties, $.i18n("edt_conf_bobls_heading_title")));
//protoserver
$('#conf_cont').append(createRow('conf_cont_proto'))
$('#conf_cont_proto').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_pbs_heading_title"), 'editor_container_protoserver', 'btn_submit_protoserver', 'panel-system'));
$('#conf_cont_proto').append(createHelpTable(window.schema.protoServer.properties, $.i18n("edt_conf_pbs_heading_title"), "protoServerHelpPanelId"));
//forwarder
if(storedAccess != 'default')
{
$('#conf_cont').append(createRow('conf_cont_fw'))
$('#conf_cont_fw').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_fw_heading_title"), 'editor_container_forwarder', 'btn_submit_forwarder'));
$('#conf_cont_fw').append(createHelpTable(window.schema.forwarder.properties, $.i18n("edt_conf_fw_heading_title")));
}
}
else
{
$('#conf_cont').addClass('row');
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_net_heading_title"), 'editor_container_net', 'btn_submit_net'));
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_js_heading_title"), 'editor_container_jsonserver', 'btn_submit_jsonserver'));
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_fbs_heading_title"), 'editor_container_fbserver', 'btn_submit_fbserver'));
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_pbs_heading_title"), 'editor_container_protoserver', 'btn_submit_protoserver'));
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_bobls_heading_title"), 'editor_container_boblightserver', 'btn_submit_boblightserver'));
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_fw_heading_title"), 'editor_container_forwarder', 'btn_submit_forwarder'));
//boblight
if (BOBLIGHT_ENABLED) {
$('#conf_cont').append(createRow('conf_cont_bobl'))
$('#conf_cont_bobl').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_bobls_heading_title"), 'editor_container_boblightserver', 'btn_submit_boblightserver', 'panel-system'));
$('#conf_cont_bobl').append(createHelpTable(window.schema.boblightServer.properties, $.i18n("edt_conf_bobls_heading_title"), "boblightServerHelpPanelId"));
}
$("#conf_cont_tok").removeClass('row');
}
//forwarder
if (storedAccess != 'default') {
$('#conf_cont').append(createRow('conf_cont_fw'))
$('#conf_cont_fw').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_fw_heading_title"), 'editor_container_forwarder', 'btn_submit_forwarder', 'panel-system'));
$('#conf_cont_fw').append(createHelpTable(window.schema.forwarder.properties, $.i18n("edt_conf_fw_heading_title"), "forwarderHelpPanelId"));
}
}
else {
$('#conf_cont').addClass('row');
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_net_heading_title"), 'editor_container_net', 'btn_submit_net'));
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_js_heading_title"), 'editor_container_jsonserver', 'btn_submit_jsonserver'));
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_fbs_heading_title"), 'editor_container_fbserver', 'btn_submit_fbserver'));
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_pbs_heading_title"), 'editor_container_protoserver', 'btn_submit_protoserver'));
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_bobls_heading_title"), 'editor_container_boblightserver', 'btn_submit_boblightserver'));
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_fw_heading_title"), 'editor_container_forwarder', 'btn_submit_forwarder'));
// net
conf_editor_net = createJsonEditor('editor_container_net', {
network : window.schema.network
}, true, true);
$("#conf_cont_tok").removeClass('row');
}
conf_editor_net.on('change',function() {
conf_editor_net.validate().length || window.readOnlyMode ? $('#btn_submit_net').attr('disabled', true) : $('#btn_submit_net').attr('disabled', false);
});
// net
conf_editor_net = createJsonEditor('editor_container_net', {
network: window.schema.network
}, true, true);
$('#btn_submit_net').off().on('click',function() {
requestWriteConfig(conf_editor_net.getValue());
});
conf_editor_net.on('change', function () {
conf_editor_net.validate().length || window.readOnlyMode ? $('#btn_submit_net').attr('disabled', true) : $('#btn_submit_net').attr('disabled', false);
});
//json
conf_editor_json = createJsonEditor('editor_container_jsonserver', {
jsonServer : window.schema.jsonServer
}, true, true);
$('#btn_submit_net').off().on('click', function () {
requestWriteConfig(conf_editor_net.getValue());
});
conf_editor_json.on('change',function() {
conf_editor_json.validate().length || window.readOnlyMode ? $('#btn_submit_jsonserver').attr('disabled', true) : $('#btn_submit_jsonserver').attr('disabled', false);
});
//json
conf_editor_json = createJsonEditor('editor_container_jsonserver', {
jsonServer: window.schema.jsonServer
}, true, true);
$('#btn_submit_jsonserver').off().on('click',function() {
requestWriteConfig(conf_editor_json.getValue());
});
conf_editor_json.on('change', function () {
conf_editor_json.validate().length || window.readOnlyMode ? $('#btn_submit_jsonserver').attr('disabled', true) : $('#btn_submit_jsonserver').attr('disabled', false);
});
//flatbuffer
conf_editor_fbs = createJsonEditor('editor_container_fbserver', {
flatbufServer : window.schema.flatbufServer
}, true, true);
$('#btn_submit_jsonserver').off().on('click', function () {
requestWriteConfig(conf_editor_json.getValue());
});
conf_editor_fbs.on('change',function() {
conf_editor_fbs.validate().length || window.readOnlyMode ? $('#btn_submit_fbserver').attr('disabled', true) : $('#btn_submit_fbserver').attr('disabled', false);
});
//flatbuffer
conf_editor_fbs = createJsonEditor('editor_container_fbserver', {
flatbufServer: window.schema.flatbufServer
}, true, true);
$('#btn_submit_fbserver').off().on('click',function() {
requestWriteConfig(conf_editor_fbs.getValue());
});
conf_editor_fbs.on('change', function () {
var flatbufServerEnable = conf_editor_fbs.getEditor("root.flatbufServer.enable").getValue();
if (flatbufServerEnable) {
showInputOptionsForKey(conf_editor_fbs, "flatbufServer", "enable", true);
$('#flatbufServerHelpPanelId').show();
} else {
showInputOptionsForKey(conf_editor_fbs, "flatbufServer", "enable", false);
$('#flatbufServerHelpPanelId').hide();
}
conf_editor_fbs.validate().length || window.readOnlyMode ? $('#btn_submit_fbserver').attr('disabled', true) : $('#btn_submit_fbserver').attr('disabled', false);
});
//protobuffer
conf_editor_proto = createJsonEditor('editor_container_protoserver', {
protoServer : window.schema.protoServer
}, true, true);
$('#btn_submit_fbserver').off().on('click', function () {
requestWriteConfig(conf_editor_fbs.getValue());
});
conf_editor_proto.on('change',function() {
conf_editor_proto.validate().length || window.readOnlyMode ? $('#btn_submit_protoserver').attr('disabled', true) : $('#btn_submit_protoserver').attr('disabled', false);
});
//protobuffer
conf_editor_proto = createJsonEditor('editor_container_protoserver', {
protoServer: window.schema.protoServer
}, true, true);
$('#btn_submit_protoserver').off().on('click',function() {
requestWriteConfig(conf_editor_proto.getValue());
});
conf_editor_proto.on('change', function () {
var protoServerEnable = conf_editor_proto.getEditor("root.protoServer.enable").getValue();
if (protoServerEnable) {
showInputOptionsForKey(conf_editor_proto, "protoServer", "enable", true);
$('#protoServerHelpPanelId').show();
} else {
showInputOptionsForKey(conf_editor_proto, "protoServer", "enable", false);
$('#protoServerHelpPanelId').hide();
}
conf_editor_proto.validate().length || window.readOnlyMode ? $('#btn_submit_protoserver').attr('disabled', true) : $('#btn_submit_protoserver').attr('disabled', false);
});
//boblight
conf_editor_bobl = createJsonEditor('editor_container_boblightserver', {
boblightServer : window.schema.boblightServer
}, true, true);
$('#btn_submit_protoserver').off().on('click', function () {
requestWriteConfig(conf_editor_proto.getValue());
});
conf_editor_bobl.on('change',function() {
conf_editor_bobl.validate().length || window.readOnlyMode ? $('#btn_submit_boblightserver').attr('disabled', true) : $('#btn_submit_boblightserver').attr('disabled', false);
});
//boblight
if (BOBLIGHT_ENABLED) {
conf_editor_bobl = createJsonEditor('editor_container_boblightserver', {
boblightServer: window.schema.boblightServer
}, true, true);
$('#btn_submit_boblightserver').off().on('click',function() {
requestWriteConfig(conf_editor_bobl.getValue());
});
conf_editor_bobl.on('change', function () {
var boblightServerEnable = conf_editor_bobl.getEditor("root.boblightServer.enable").getValue();
if (boblightServerEnable) {
showInputOptionsForKey(conf_editor_bobl, "boblightServer", "enable", true);
$('#boblightServerHelpPanelId').show();
} else {
showInputOptionsForKey(conf_editor_bobl, "boblightServer", "enable", false);
$('#boblightServerHelpPanelId').hide();
}
conf_editor_bobl.validate().length || window.readOnlyMode ? $('#btn_submit_boblightserver').attr('disabled', true) : $('#btn_submit_boblightserver').attr('disabled', false);
});
if(storedAccess != 'default')
{
//forwarder
conf_editor_forw = createJsonEditor('editor_container_forwarder', {
forwarder : window.schema.forwarder
}, true, true);
$('#btn_submit_boblightserver').off().on('click', function () {
requestWriteConfig(conf_editor_bobl.getValue());
});
}
conf_editor_forw.on('change',function() {
conf_editor_forw.validate().length || window.readOnlyMode ? $('#btn_submit_forwarder').attr('disabled', true) : $('#btn_submit_forwarder').attr('disabled', false);
});
if (storedAccess != 'default') {
//forwarder
conf_editor_forw = createJsonEditor('editor_container_forwarder', {
forwarder: window.schema.forwarder
}, true, true);
$('#btn_submit_forwarder').off().on('click',function() {
requestWriteConfig(conf_editor_forw.getValue());
});
}
conf_editor_forw.on('change', function () {
var forwarderEnable = conf_editor_forw.getEditor("root.forwarder.enable").getValue();
if (forwarderEnable) {
showInputOptionsForKey(conf_editor_forw, "forwarder", "enable", true);
$('#forwarderHelpPanelId').show();
} else {
showInputOptionsForKey(conf_editor_forw, "forwarder", "enable", false);
$('#forwarderHelpPanelId').hide();
}
conf_editor_forw.validate().length || window.readOnlyMode ? $('#btn_submit_forwarder').attr('disabled', true) : $('#btn_submit_forwarder').attr('disabled', false);
});
//create introduction
if(window.showOptHelp)
{
createHint("intro", $.i18n('conf_network_net_intro'), "editor_container_net");
createHint("intro", $.i18n('conf_network_json_intro'), "editor_container_jsonserver");
createHint("intro", $.i18n('conf_network_fbs_intro'), "editor_container_fbserver");
createHint("intro", $.i18n('conf_network_proto_intro'), "editor_container_protoserver");
createHint("intro", $.i18n('conf_network_bobl_intro'), "editor_container_boblightserver");
createHint("intro", $.i18n('conf_network_forw_intro'), "editor_container_forwarder");
createHint("intro", $.i18n('conf_network_tok_intro'), "tok_desc_cont");
}
$('#btn_submit_forwarder').off().on('click', function () {
requestWriteConfig(conf_editor_forw.getValue());
});
}
// Token handling
function buildTokenList()
{
$('.tktbody').html("");
for(var key in tokenList)
{
var lastUse = (tokenList[key].last_use) ? tokenList[key].last_use : "-";
var btn = '<button id="tok'+tokenList[key].id+'" type="button" class="btn btn-danger">'+$.i18n('general_btn_delete')+'</button>';
$('.tktbody').append(createTableRow([tokenList[key].comment, lastUse, btn], false, true));
$('#tok'+tokenList[key].id).off().on('click', handleDeleteToken);
}
}
//create introduction
if (window.showOptHelp) {
createHint("intro", $.i18n('conf_network_net_intro'), "editor_container_net");
createHint("intro", $.i18n('conf_network_json_intro'), "editor_container_jsonserver");
createHint("intro", $.i18n('conf_network_fbs_intro'), "editor_container_fbserver");
createHint("intro", $.i18n('conf_network_proto_intro'), "editor_container_protoserver");
if (BOBLIGHT_ENABLED) {
createHint("intro", $.i18n('conf_network_bobl_intro'), "editor_container_boblightserver");
}
createHint("intro", $.i18n('conf_network_forw_intro'), "editor_container_forwarder");
createHint("intro", $.i18n('conf_network_tok_intro'), "tok_desc_cont");
}
createTable('tkthead', 'tktbody', 'tktable');
$('.tkthead').html(createTableRow([$.i18n('conf_network_tok_cidhead'), $.i18n('conf_network_tok_lastuse'), $.i18n('general_btn_delete')], true, true));
buildTokenList();
// Token handling
function buildTokenList() {
$('.tktbody').html("");
for (var key in tokenList) {
var lastUse = (tokenList[key].last_use) ? tokenList[key].last_use : "-";
var btn = '<button id="tok' + tokenList[key].id + '" type="button" class="btn btn-danger">' + $.i18n('general_btn_delete') + '</button>';
$('.tktbody').append(createTableRow([tokenList[key].comment, lastUse, btn], false, true));
$('#tok' + tokenList[key].id).off().on('click', handleDeleteToken);
}
}
function handleDeleteToken(e)
{
var key = e.currentTarget.id.replace("tok","");
requestTokenDelete(key);
$('#tok'+key).parent().parent().remove();
// rm deleted token id
tokenList = tokenList.filter(function( obj ) {
return obj.id !== key;
});
}
createTable('tkthead', 'tktbody', 'tktable');
$('.tkthead').html(createTableRow([$.i18n('conf_network_tok_cidhead'), $.i18n('conf_network_tok_lastuse'), $.i18n('general_btn_delete')], true, true));
buildTokenList();
$('#btn_create_tok').off().on('click',function() {
requestToken($('#tok_comment').val())
$('#tok_comment').val("")
$('#btn_create_tok').attr('disabled', true)
});
$('#tok_comment').off().on('input',function(e) {
(e.currentTarget.value.length >= 10) ? $('#btn_create_tok').attr('disabled', false) : $('#btn_create_tok').attr('disabled', true);
if(10-e.currentTarget.value.length >= 1 && 10-e.currentTarget.value.length <= 9)
$('#tok_chars_needed').html(10-e.currentTarget.value.length + " " + $.i18n('general_chars_needed'))
else
$('#tok_chars_needed').html("<br />")
});
$(window.hyperion).off("cmd-authorize-createToken").on("cmd-authorize-createToken", function(event) {
var val = event.response.info;
showInfoDialog("newToken",$.i18n('conf_network_tok_diaTitle'),$.i18n('conf_network_tok_diaMsg')+'<br><div style="font-weight:bold">'+val.token+'</div>')
tokenList.push(val)
buildTokenList()
});
function handleDeleteToken(e) {
var key = e.currentTarget.id.replace("tok", "");
requestTokenDelete(key);
$('#tok' + key).parent().parent().remove();
// rm deleted token id
tokenList = tokenList.filter(function (obj) {
return obj.id !== key;
});
}
//Reorder hardcoded token div after the general token setting div
$("#conf_cont_tok").insertAfter("#conf_cont_net");
$('#btn_create_tok').off().on('click', function () {
requestToken(encodeHTML($('#tok_comment').val()))
$('#tok_comment').val("")
$('#btn_create_tok').attr('disabled', true)
});
$('#tok_comment').off().on('input', function (e) {
(e.currentTarget.value.length >= 10) ? $('#btn_create_tok').attr('disabled', false) : $('#btn_create_tok').attr('disabled', true);
if (10 - e.currentTarget.value.length >= 1 && 10 - e.currentTarget.value.length <= 9)
$('#tok_chars_needed').html(10 - e.currentTarget.value.length + " " + $.i18n('general_chars_needed'))
else
$('#tok_chars_needed').html("<br />")
});
$(window.hyperion).off("cmd-authorize-createToken").on("cmd-authorize-createToken", function (event) {
var val = event.response.info;
showInfoDialog("newToken", $.i18n('conf_network_tok_diaTitle'), $.i18n('conf_network_tok_diaMsg') + '<br><div style="font-weight:bold">' + val.token + '</div>')
tokenList.push(val)
buildTokenList()
});
function checkApiTokenState(state)
{
if(state == false)
$("#conf_cont_tok").attr('style', 'display:none')
else
$("#conf_cont_tok").removeAttr('style')
}
//Reorder hardcoded token div after the general token setting div
$("#conf_cont_tok").insertAfter("#conf_cont_net");
$('#root_network_apiAuth').change(function () {
var state = $(this).is(":checked");
checkApiTokenState(state);
})
function checkApiTokenState(state) {
if (state == false)
$("#conf_cont_tok").attr('style', 'display:none')
else
$("#conf_cont_tok").removeAttr('style')
}
checkApiTokenState(window.serverConfig.network.apiAuth);
removeOverlay();
$('#root_network_apiAuth').change(function () {
var state = $(this).is(":checked");
checkApiTokenState(state);
})
checkApiTokenState(window.serverConfig.network.apiAuth);
removeOverlay();
});

View File

@ -1,13 +1,16 @@
$(document).ready(function() {
$(document).ready(function () {
performTranslation();
// update instance listing
updateHyperionInstanceListing();
var oldEffects = [];
var cpcolor = '#B500FF';
var mappingList = window.serverSchema.properties.color.properties.imageToLedMappingType.enum;
var duration = 0;
var rgb = {r:255,g:0,b:0};
var duration = ENDLESS;
var rgb = { r: 255, g: 0, b: 0 };
var lastImgData = "";
var lastFileName= "";
var lastFileName = "";
//create html
createTable('ssthead', 'sstbody', 'sstcont');
@ -16,8 +19,7 @@ $(document).ready(function() {
//create introduction
if(window.showOptHelp)
{
if (window.showOptHelp) {
createHint("intro", $.i18n('remote_color_intro', $.i18n('remote_losthint')), "color_intro");
createHint("intro", $.i18n('remote_input_intro', $.i18n('remote_losthint')), "sstcont");
createHint("intro", $.i18n('remote_adjustment_intro', $.i18n('remote_losthint')), "adjust_content");
@ -30,83 +32,73 @@ $(document).ready(function() {
var sColor = sortProperties(window.serverSchema.properties.color.properties.channelAdjustment.items.properties);
var values = window.serverInfo.adjustment[0];
for(var key in sColor)
{
if(sColor[key].key != "id" && sColor[key].key != "leds")
{
var title = '<label for="cr_'+sColor[key].key+'">'+$.i18n(sColor[key].title)+'</label>';
for (var key in sColor) {
if (sColor[key].key != "id" && sColor[key].key != "leds") {
var title = '<label for="cr_' + sColor[key].key + '">' + $.i18n(sColor[key].title) + '</label>';
var property;
var value = values[sColor[key].key];
if(sColor[key].type == "array")
{
property = '<div id="cr_'+sColor[key].key+'" class="input-group colorpicker-component" ><input type="text" class="form-control" /><span class="input-group-addon"><i></i></span></div>';
if (sColor[key].type == "array") {
property = '<div id="cr_' + sColor[key].key + '" class="input-group colorpicker-component" ><input type="text" class="form-control" /><span class="input-group-addon"><i></i></span></div>';
$('.crtbody').append(createTableRow([title, property], false, true));
createCP('cr_'+sColor[key].key, value, function(rgb,hex,e){
requestAdjustment(e.target.id.substr(e.target.id.indexOf("_") + 1), '['+rgb.r+','+rgb.g+','+rgb.b+']');
createCP('cr_' + sColor[key].key, value, function (rgb, hex, e) {
requestAdjustment(e.target.id.substr(e.target.id.indexOf("_") + 1), '[' + rgb.r + ',' + rgb.g + ',' + rgb.b + ']');
});
}
else if(sColor[key].type == "boolean")
{
property = '<div class="checkbox"><input id="cr_'+sColor[key].key+'" type="checkbox" value="'+value+'"/><label></label></div>';
else if (sColor[key].type == "boolean") {
property = '<div class="checkbox"><input id="cr_' + sColor[key].key + '" type="checkbox" value="' + value + '"/><label></label></div>';
$('.crtbody').append(createTableRow([title, property], false, true));
$('#cr_'+sColor[key].key).off().on('change', function(e){
$('#cr_' + sColor[key].key).off().on('change', function (e) {
requestAdjustment(e.target.id.substr(e.target.id.indexOf("_") + 1), e.currentTarget.checked);
});
}
else
{
if(sColor[key].key == "brightness" || sColor[key].key == "brightnessCompensation" || sColor[key].key == "backlightThreshold")
property = '<div class="input-group"><input id="cr_'+sColor[key].key+'" type="number" class="form-control" min="0" max="100" step="10" value="'+value+'"/><span class="input-group-addon">'+$.i18n("edt_append_percent")+'</span></div>';
else {
if (sColor[key].key == "brightness" || sColor[key].key == "brightnessCompensation" || sColor[key].key == "backlightThreshold")
property = '<div class="input-group"><input id="cr_' + sColor[key].key + '" type="number" class="form-control" min="0" max="100" step="10" value="' + value + '"/><span class="input-group-addon">' + $.i18n("edt_append_percent") + '</span></div>';
else
property = '<input id="cr_'+sColor[key].key+'" type="number" class="form-control" min="0.1" max="4.0" step="0.1" value="'+value+'"/>';
property = '<input id="cr_' + sColor[key].key + '" type="number" class="form-control" min="0.1" max="4.0" step="0.1" value="' + value + '"/>';
$('.crtbody').append(createTableRow([title, property], false, true));
$('#cr_'+sColor[key].key).off().on('change', function(e){
valValue(this.id,this.value,this.min,this.max);
$('#cr_' + sColor[key].key).off().on('change', function (e) {
valValue(this.id, this.value, this.min, this.max);
requestAdjustment(e.target.id.substr(e.target.id.indexOf("_") + 1), e.currentTarget.value);
});
}
}
}
function sendEffect()
{
function sendEffect() {
var efx = $("#effect_select").val();
if(efx != "__none__")
{
if (efx != "__none__") {
requestPriorityClear();
$(window.hyperion).one("cmd-clear", function(event) {
setTimeout(function() {requestPlayEffect(efx,duration)}, 100);
$(window.hyperion).one("cmd-clear", function (event) {
setTimeout(function () { requestPlayEffect(efx, duration) }, 100);
});
}
}
function sendColor()
{
requestSetColor(rgb.r, rgb.g, rgb.b,duration);
function sendColor() {
requestSetColor(rgb.r, rgb.g, rgb.b, duration);
}
function updateInputSelect()
{
function updateInputSelect() {
$('.sstbody').html("");
var prios = window.serverInfo.priorities;
var clearAll = false;
for(var i = 0; i < prios.length; i++)
{
var origin = prios[i].origin ? prios[i].origin : "System";
for (var i = 0; i < prios.length; i++) {
var origin = prios[i].origin ? prios[i].origin : "System";
origin = origin.split("@");
var ip = origin[1];
origin = origin[0];
var owner = prios[i].owner;
var active = prios[i].active;
var visible = prios[i].visible;
var owner = prios[i].owner;
var active = prios[i].active;
var visible = prios[i].visible;
var priority = prios[i].priority;
var compId = prios[i].componentId;
var duration = prios[i].duration_ms/1000;
var compId = prios[i].componentId;
var duration = prios[i].duration_ms / 1000;
var value = "0,0,0";
var btn_type = "default";
var btn_text = $.i18n('remote_input_setsource_btn');
@ -115,40 +107,38 @@ $(document).ready(function() {
if (active)
btn_type = "primary";
if(priority > 254)
if (priority > 254)
continue;
if(priority < 254 && (compId == "EFFECT" || compId == "COLOR" || compId == "IMAGE") )
if (priority < 254 && (compId == "EFFECT" || compId == "COLOR" || compId == "IMAGE"))
clearAll = true;
if (visible)
{
if (visible) {
btn_state = "disabled";
btn_type = "success";
btn_text = $.i18n('remote_input_sourceactiv_btn');
}
if(ip)
origin += '<br/><span style="font-size:80%; color:grey;">'+$.i18n('remote_input_ip')+' '+ip+'</span>';
if (ip)
origin += '<br/><span style="font-size:80%; color:grey;">' + $.i18n('remote_input_ip') + ' ' + ip + '</span>';
if("value" in prios[i])
if ("value" in prios[i])
value = prios[i].value.RGB;
switch (compId)
{
switch (compId) {
case "EFFECT":
owner = $.i18n('remote_effects_label_effects')+' '+owner;
owner = $.i18n('remote_effects_label_effects') + ' ' + owner;
break;
case "COLOR":
owner = $.i18n('remote_color_label_color')+' '+'<div style="width:18px; height:18px; border-radius:20px; margin-bottom:-4px; border:1px grey solid; background-color: rgb('+value+'); display:inline-block" title="RGB: ('+value+')"></div>';
owner = $.i18n('remote_color_label_color') + ' ' + '<div style="width:18px; height:18px; border-radius:20px; margin-bottom:-4px; border:1px grey solid; background-color: rgb(' + value + '); display:inline-block" title="RGB: (' + value + ')"></div>';
break;
case "IMAGE":
owner = $.i18n('remote_effects_label_picture')+' '+owner;
owner = $.i18n('remote_effects_label_picture') + ' ' + owner;
break;
case "GRABBER":
owner = $.i18n('general_comp_GRABBER')+': ('+owner+')';
case "GRABBER":
owner = $.i18n('general_comp_GRABBER') + ': (' + owner + ')';
break;
case "V4L":
owner = $.i18n('general_comp_V4L')+': ('+owner+')';
owner = $.i18n('general_comp_V4L') + ': (' + owner + ')';
break;
case "BOBLIGHTSERVER":
owner = $.i18n('general_comp_BOBLIGHTSERVER');
@ -161,126 +151,114 @@ $(document).ready(function() {
break;
}
if(duration && compId != "GRABBER" && compId != "FLATBUFSERVER" && compId != "PROTOSERVER")
owner += '<br/><span style="font-size:80%; color:grey;">'+$.i18n('remote_input_duration')+' '+duration.toFixed(0)+$.i18n('edt_append_s')+'</span>';
if (duration && compId != "GRABBER" && compId != "FLATBUFSERVER" && compId != "PROTOSERVER")
owner += '<br/><span style="font-size:80%; color:grey;">' + $.i18n('remote_input_duration') + ' ' + duration.toFixed(0) + $.i18n('edt_append_s') + '</span>';
var btn = '<button id="srcBtn'+i+'" type="button" '+btn_state+' class="btn btn-'+btn_type+' btn_input_selection" onclick="requestSetSource('+priority+');">'+btn_text+'</button>';
var btn = '<button id="srcBtn' + i + '" type="button" ' + btn_state + ' class="btn btn-' + btn_type + ' btn_input_selection" onclick="requestSetSource(' + priority + ');">' + btn_text + '</button>';
if((compId == "EFFECT" || compId == "COLOR" || compId == "IMAGE") && priority < 254)
btn += '<button type="button" class="btn btn-sm btn-danger" style="margin-left:10px;" onclick="requestPriorityClear('+priority+');"><i class="fa fa-close"></button>';
if ((compId == "EFFECT" || compId == "COLOR" || compId == "IMAGE") && priority < 254)
btn += '<button type="button" class="btn btn-sm btn-danger" style="margin-left:10px;" onclick="requestPriorityClear(' + priority + ');"><i class="fa fa-close"></button>';
if(btn_type != 'default')
if (btn_type != 'default')
$('.sstbody').append(createTableRow([origin, owner, priority, btn], false, true));
}
var btn_auto_color = (window.serverInfo.priorities_autoselect? "btn-success" : "btn-danger");
var btn_auto_state = (window.serverInfo.priorities_autoselect? "disabled" : "enabled");
var btn_auto_text = (window.serverInfo.priorities_autoselect? $.i18n('general_btn_on') : $.i18n('general_btn_off'));
var btn_call_state = (clearAll? "enabled" : "disabled");
$('#auto_btn').html('<button id="srcBtn'+i+'" type="button" '+btn_auto_state+' class="btn '+btn_auto_color+'" style="margin-right:5px;display:inline-block;" onclick="requestSetSource(\'auto\');">'+$.i18n('remote_input_label_autoselect')+' ('+btn_auto_text+')</button>');
$('#auto_btn').append('<button type="button" '+btn_call_state+' class="btn btn-danger" style="display:inline-block;" onclick="requestClearAll();">'+$.i18n('remote_input_clearall')+'</button>');
var btn_auto_color = (window.serverInfo.priorities_autoselect ? "btn-success" : "btn-danger");
var btn_auto_state = (window.serverInfo.priorities_autoselect ? "disabled" : "enabled");
var btn_auto_text = (window.serverInfo.priorities_autoselect ? $.i18n('general_btn_on') : $.i18n('general_btn_off'));
var btn_call_state = (clearAll ? "enabled" : "disabled");
$('#auto_btn').html('<button id="srcBtn' + i + '" type="button" ' + btn_auto_state + ' class="btn ' + btn_auto_color + '" style="margin-right:5px;display:inline-block;" onclick="requestSetSource(\'auto\');">' + $.i18n('remote_input_label_autoselect') + ' (' + btn_auto_text + ')</button>');
$('#auto_btn').append('<button type="button" ' + btn_call_state + ' class="btn btn-danger" style="display:inline-block;" onclick="requestClearAll();">' + $.i18n('remote_input_clearall') + '</button>');
var max_width=100;
$('.btn_input_selection').each(function() {
var max_width = 100;
$('.btn_input_selection').each(function () {
if ($(this).innerWidth() > max_width)
max_width = $(this).innerWidth();
});
$('.btn_input_selection').css("min-width",max_width+"px");
$('.btn_input_selection').css("min-width", max_width + "px");
}
function updateLedMapping()
{
function updateLedMapping() {
var mapping = window.serverInfo.imageToLedMappingType;
$('#mappingsbutton').html("");
for(var ix = 0; ix < mappingList.length; ix++)
{
if(mapping == mappingList[ix])
for (var ix = 0; ix < mappingList.length; ix++) {
if (mapping == mappingList[ix])
var btn_style = 'btn-success';
else
var btn_style = 'btn-primary';
$('#mappingsbutton').append('<button type="button" id="lmBtn_'+mappingList[ix]+'" class="btn '+btn_style+'" style="margin:3px;min-width:200px" onclick="requestMappingType(\''+mappingList[ix]+'\');">'+$.i18n('remote_maptype_label_'+mappingList[ix])+'</button><br/>');
$('#mappingsbutton').append('<button type="button" id="lmBtn_' + mappingList[ix] + '" class="btn ' + btn_style + '" style="margin:3px;min-width:200px" onclick="requestMappingType(\'' + mappingList[ix] + '\');">' + $.i18n('remote_maptype_label_' + mappingList[ix]) + '</button><br/>');
}
}
function initComponents()
{
function initComponents() {
var components = window.comps;
var hyperionEnabled = true;
components.forEach( function(obj) {
if (obj.name == "ALL")
{
components.forEach(function (obj) {
if (obj.name == "ALL") {
hyperionEnabled = obj.enabled;
}
});
for (const comp of components)
{
if(comp.name === "ALL")
for (const comp of components) {
if (comp.name === "ALL" || (comp.name === "FORWARDER" && window.currentHyperionInstance != 0) ||
(comp.name === "GRABBER" && !window.serverConfig.framegrabber.enable) ||
(comp.name === "V4L" && !window.serverConfig.grabberV4L2.enable))
continue;
const enable_style = (comp.enabled? "checked" : "");
const comp_btn_id = "comp_btn_"+comp.name;
const enable_style = (comp.enabled ? "checked" : "");
const comp_btn_id = "comp_btn_" + comp.name;
if ($("#"+comp_btn_id).length === 0)
{
var d='<span style="display:block;margin:3px">'
+'<input id="'+comp_btn_id+'"'+enable_style+' type="checkbox"'
+'data-toggle="toggle" data-onstyle="success" data-on="'+$.i18n('general_btn_on')+'" data-off="'+$.i18n('general_btn_off')+'">'
+'&nbsp;&nbsp;&nbsp;<label>'+$.i18n('general_comp_'+comp.name)+'</label>'
+'</span>';
if ($("#" + comp_btn_id).length === 0) {
var d = '<span style="display:block;margin:3px">'
+ '<label class="checkbox-inline">'
+ '<input id = "' + comp_btn_id + '"' + enable_style + ' type = "checkbox"'
+ 'data-toggle="toggle" data-onstyle="success" data-on="' + $.i18n('general_btn_on') + '" data-off="' + $.i18n('general_btn_off') + '">'
+ $.i18n('general_comp_' + comp.name) + '</label > '
+ '</span>';
$('#componentsbutton').append(d);
$(`#${comp_btn_id}`).bootstrapToggle();
$(`#${comp_btn_id}`).bootstrapToggle((hyperionEnabled ? "enable" : "disable"));
$(`#${comp_btn_id}`).change(e => {
requestSetComponentState(e.currentTarget.id.split('_').pop(), e.currentTarget.checked);
//console.log(e.currentTarget.checked)
requestSetComponentState(e.currentTarget.id.split('_').pop(), e.currentTarget.checked);
});
}
}
}
function updateComponent( component )
{
if (component.name == "ALL")
{
function updateComponent(component) {
if (component.name == "ALL") {
var components = window.comps;
var hyperionEnabled = component.enabled;
for (const comp of components)
{
for (const comp of components) {
if(comp.name === "ALL")
continue;
if (comp.name === "ALL")
continue;
const comp_btn_id = "comp_btn_"+comp.name;
const comp_btn_id = "comp_btn_" + comp.name;
if ( !hyperionEnabled )
{
if (!hyperionEnabled) {
$(`#${comp_btn_id}`).bootstrapToggle('off');
$(`#${comp_btn_id}`).bootstrapToggle("disable");
}
else
{
else {
$(`#${comp_btn_id}`).bootstrapToggle("enable");
if ( comp.enabled !== $(`#${comp_btn_id}`).prop("checked") )
{
if (comp.enabled !== $(`#${comp_btn_id}`).prop("checked")) {
$(`#${comp_btn_id}`).bootstrapToggle().prop('checked', comp.enabled).change();
}
}
}
}
else
{
const comp_btn_id = "comp_btn_"+component.name;
else {
const comp_btn_id = "comp_btn_" + component.name;
//console.log ("updateComponent: ", component.name, "Current Checked: ", $(`#${comp_btn_id}`).prop("checked"), "New Checked: ", component.enabled, );
// In case Buttons were disabled before, status may be different to component status
if ( component.enabled != $(`#${comp_btn_id}`).prop("checked") )
{
if (component.enabled != $(`#${comp_btn_id}`).prop("checked")) {
// console.log ("Update status to Checked = ", component.enabled);
if ( component.enabled )
if (component.enabled)
$(`#${comp_btn_id}`).bootstrapToggle("on");
else
$(`#${comp_btn_id}`).bootstrapToggle("off");
@ -288,21 +266,19 @@ $(document).ready(function() {
}
}
function updateEffectlist()
{
function updateEffectlist() {
var newEffects = window.serverInfo.effects;
if (newEffects.length != oldEffects.length)
{
if (newEffects.length != oldEffects.length) {
$('#effect_select').html('<option value="__none__"></option>');
var usrEffArr = [];
var sysEffArr = [];
for(var i = 0; i < newEffects.length; i++) {
for (var i = 0; i < newEffects.length; i++) {
var effectName = newEffects[i].name;
if(!/^\:/.test(newEffects[i].file)){
if (!/^\:/.test(newEffects[i].file)) {
usrEffArr.push(effectName);
}
else{
else {
sysEffArr.push(effectName);
}
}
@ -312,74 +288,70 @@ $(document).ready(function() {
}
}
function updateVideoMode()
{
var videoModes = ["2D","3DSBS","3DTAB"];
function updateVideoMode() {
var videoModes = ["2D", "3DSBS", "3DTAB"];
var currVideoMode = window.serverInfo.videomode;
$('#videomodebtns').html("");
for(var ix = 0; ix < videoModes.length; ix++)
{
if(currVideoMode == videoModes[ix])
for (var ix = 0; ix < videoModes.length; ix++) {
if (currVideoMode == videoModes[ix])
var btn_style = 'btn-success';
else
var btn_style = 'btn-primary';
$('#videomodebtns').append('<button type="button" id="vModeBtn_'+videoModes[ix]+'" class="btn '+btn_style+'" style="margin:3px;min-width:200px" onclick="requestVideoMode(\''+videoModes[ix]+'\');">'+$.i18n('remote_videoMode_'+videoModes[ix])+'</button><br/>');
$('#videomodebtns').append('<button type="button" id="vModeBtn_' + videoModes[ix] + '" class="btn ' + btn_style + '" style="margin:3px;min-width:200px" onclick="requestVideoMode(\'' + videoModes[ix] + '\');">' + $.i18n('remote_videoMode_' + videoModes[ix]) + '</button><br/>');
}
}
// colorpicker and effect
if (getStorage('rmcpcolor') != null)
{
if (getStorage('rmcpcolor') != null) {
cpcolor = getStorage('rmcpcolor');
rgb = hexToRgb(cpcolor);
}
if (getStorage('rmduration') != null)
{
if (getStorage('rmduration') != null) {
$("#remote_duration").val(getStorage('rmduration'));
duration = getStorage('rmduration');
}
createCP('cp2', cpcolor, function(rgbT,hex){
createCP('cp2', cpcolor, function (rgbT, hex) {
rgb = rgbT;
sendColor();
setStorage('rmcpcolor', hex);
updateInputSelect();
});
$("#reset_color").off().on("click", function(){
$("#reset_color").off().on("click", function () {
requestPriorityClear();
lastImgData = "";
$("#effect_select").val("__none__");
$("#remote_input_img").val("");
});
$("#remote_duration").off().on("change", function(){
duration = valValue(this.id,this.value,this.min,this.max);
$("#remote_duration").off().on("change", function () {
duration = valValue(this.id, this.value, this.min, this.max);
setStorage('rmduration', duration);
});
$("#effect_select").off().on("change", function(event) {
$("#effect_select").off().on("change", function (event) {
sendEffect();
});
$("#remote_input_reseff, #remote_input_rescol").off().on("click", function(){
if(this.id == "remote_input_rescol")
$("#remote_input_reseff, #remote_input_rescol").off().on("click", function () {
if (this.id == "remote_input_rescol")
sendColor();
else
sendEffect();
});
$("#remote_input_repimg").off().on("click", function(){
if(lastImgData != "")
$("#remote_input_repimg").off().on("click", function () {
if (lastImgData != "")
requestSetImage(lastImgData, duration, lastFileName);
});
$("#remote_input_img").change(function(){
readImg(this, function(src,fileName){
$("#remote_input_img").change(function () {
readImg(this, function (src, fileName) {
lastFileName = fileName;
if(src.includes(","))
if (src.includes(","))
lastImgData = src.split(",")[1];
else
lastImgData = src;
@ -397,27 +369,27 @@ $(document).ready(function() {
// interval updates
$(window.hyperion).on('components-updated', function(e, comp){
$(window.hyperion).on('components-updated', function (e, comp) {
//console.log ("components-updated", e, comp);
updateComponent (comp);
updateComponent(comp);
});
$(window.hyperion).on("cmd-priorities-update", function(event){
$(window.hyperion).on("cmd-priorities-update", function (event) {
window.serverInfo.priorities = event.response.data.priorities;
window.serverInfo.priorities_autoselect = event.response.data.priorities_autoselect;
updateInputSelect();
});
$(window.hyperion).on("cmd-imageToLedMapping-update", function(event){
$(window.hyperion).on("cmd-imageToLedMapping-update", function (event) {
window.serverInfo.imageToLedMappingType = event.response.data.imageToLedMappingType;
updateLedMapping();
});
$(window.hyperion).on("cmd-videomode-update", function(event){
$(window.hyperion).on("cmd-videomode-update", function (event) {
window.serverInfo.videomode = event.response.data.videomode;
updateVideoMode();
});
$(window.hyperion).on("cmd-effects-update", function(event){
$(window.hyperion).on("cmd-effects-update", function (event) {
window.serverInfo.effects = event.response.data.effects;
updateEffectlist();
});

View File

@ -3,7 +3,7 @@
var conf_editor = null;
$('#conf_cont').append(createOptPanel('fa-wrench', $.i18n("edt_conf_webc_heading_title"), 'editor_container', 'btn_submit'));
$('#conf_cont').append(createOptPanel('fa-wrench', $.i18n("edt_conf_webc_heading_title"), 'editor_container', 'btn_submit', 'panel-system'));
if(window.showOptHelp)
{
$('#conf_cont').append(createHelpTable(window.schema.webConfig.properties, $.i18n("edt_conf_webc_heading_title")));

View File

@ -33,37 +33,39 @@ window.comps = [];
window.defaultPasswordIsSet = null;
tokenList = {};
const ENDLESS = -1;
function initRestart()
{
$(window.hyperion).off();
requestServerConfigReload();
window.watchdog = 10;
connectionLostDetection('restart');
$(window.hyperion).off();
requestServerConfigReload();
window.watchdog = 10;
connectionLostDetection('restart');
}
function connectionLostDetection(type)
{
if ( window.watchdog > 2 )
{
var interval_id = window.setInterval(function(){clearInterval(interval_id);}, 9999); // Get a reference to the last
for (var i = 1; i < interval_id; i++)
window.clearInterval(i);
if(type == 'restart')
{
$("body").html($("#container_restart").html());
// setTimeout delay for probably slower systems, some browser don't execute THIS action
setTimeout(restartAction,250);
}
else
{
$("body").html($("#container_connection_lost").html());
connectionLostAction();
}
}
else
{
$.get( "/cgi/cfg_jsonserver", function() {window.watchdog=0}).fail(function() {window.watchdog++;});
}
if ( window.watchdog > 2 )
{
var interval_id = window.setInterval(function(){clearInterval(interval_id);}, 9999); // Get a reference to the last
for (var i = 1; i < interval_id; i++)
window.clearInterval(i);
if(type == 'restart')
{
$("body").html($("#container_restart").html());
// setTimeout delay for probably slower systems, some browser don't execute THIS action
setTimeout(restartAction,250);
}
else
{
$("body").html($("#container_connection_lost").html());
connectionLostAction();
}
}
else
{
$.get( "/cgi/cfg_jsonserver", function() {window.watchdog=0}).fail(function() {window.watchdog++;});
}
}
setInterval(connectionLostDetection, 3000);
@ -72,107 +74,107 @@ setInterval(connectionLostDetection, 3000);
function initWebSocket()
{
if ("WebSocket" in window)
{
if (window.websocket == null)
{
window.jsonPort = '';
if(document.location.port == '' && document.location.protocol == "http:")
window.jsonPort = '80';
else if (document.location.port == '' && document.location.protocol == "https:")
window.jsonPort = '443';
else
window.jsonPort = document.location.port;
window.websocket = (document.location.protocol == "https:") ? new WebSocket('wss://'+document.location.hostname+":"+window.jsonPort) : new WebSocket('ws://'+document.location.hostname+":"+window.jsonPort);
if ("WebSocket" in window)
{
if (window.websocket == null)
{
window.jsonPort = '';
if(document.location.port == '' && document.location.protocol == "http:")
window.jsonPort = '80';
else if (document.location.port == '' && document.location.protocol == "https:")
window.jsonPort = '443';
else
window.jsonPort = document.location.port;
window.websocket = (document.location.protocol == "https:") ? new WebSocket('wss://'+document.location.hostname+":"+window.jsonPort) : new WebSocket('ws://'+document.location.hostname+":"+window.jsonPort);
window.websocket.onopen = function (event) {
$(window.hyperion).trigger({type:"open"});
window.websocket.onopen = function (event) {
$(window.hyperion).trigger({type:"open"});
$(window.hyperion).on("cmd-serverinfo", function(event) {
window.watchdog = 0;
});
};
$(window.hyperion).on("cmd-serverinfo", function(event) {
window.watchdog = 0;
});
};
window.websocket.onclose = function (event) {
// See http://tools.ietf.org/html/rfc6455#section-7.4.1
var reason;
switch(event.code)
{
case 1000: reason = "Normal closure, meaning that the purpose for which the connection was established has been fulfilled."; break;
case 1001: reason = "An endpoint is \"going away\", such as a server going down or a browser having navigated away from a page."; break;
case 1002: reason = "An endpoint is terminating the connection due to a protocol error"; break;
case 1003: reason = "An endpoint is terminating the connection because it has received a type of data it cannot accept (e.g., an endpoint that understands only text data MAY send this if it receives a binary message)."; break;
case 1004: reason = "Reserved. The specific meaning might be defined in the future."; break;
case 1005: reason = "No status code was actually present."; break;
case 1006: reason = "The connection was closed abnormally, e.g., without sending or receiving a Close control frame"; break;
case 1007: reason = "An endpoint is terminating the connection because it has received data within a message that was not consistent with the type of the message (e.g., non-UTF-8 [http://tools.ietf.org/html/rfc3629] data within a text message)."; break;
case 1008: reason = "An endpoint is terminating the connection because it has received a message that \"violates its policy\". This reason is given either if there is no other sutible reason, or if there is a need to hide specific details about the policy."; break;
case 1009: reason = "An endpoint is terminating the connection because it has received a message that is too big for it to process."; break;
case 1010: reason = "An endpoint (client) is terminating the connection because it has expected the server to negotiate one or more extension, but the server didn't return them in the response message of the WebSocket handshake. <br /> Specifically, the extensions that are needed are: " + event.reason; break;
case 1011: reason = "A server is terminating the connection because it encountered an unexpected condition that prevented it from fulfilling the request."; break;
case 1015: reason = "The connection was closed due to a failure to perform a TLS handshake (e.g., the server certificate can't be verified)."; break;
default: reason = "Unknown reason";
}
$(window.hyperion).trigger({type:"close", reason:reason});
window.watchdog = 10;
connectionLostDetection();
};
window.websocket.onclose = function (event) {
// See http://tools.ietf.org/html/rfc6455#section-7.4.1
var reason;
switch(event.code)
{
case 1000: reason = "Normal closure, meaning that the purpose for which the connection was established has been fulfilled."; break;
case 1001: reason = "An endpoint is \"going away\", such as a server going down or a browser having navigated away from a page."; break;
case 1002: reason = "An endpoint is terminating the connection due to a protocol error"; break;
case 1003: reason = "An endpoint is terminating the connection because it has received a type of data it cannot accept (e.g., an endpoint that understands only text data MAY send this if it receives a binary message)."; break;
case 1004: reason = "Reserved. The specific meaning might be defined in the future."; break;
case 1005: reason = "No status code was actually present."; break;
case 1006: reason = "The connection was closed abnormally, e.g., without sending or receiving a Close control frame"; break;
case 1007: reason = "An endpoint is terminating the connection because it has received data within a message that was not consistent with the type of the message (e.g., non-UTF-8 [http://tools.ietf.org/html/rfc3629] data within a text message)."; break;
case 1008: reason = "An endpoint is terminating the connection because it has received a message that \"violates its policy\". This reason is given either if there is no other sutible reason, or if there is a need to hide specific details about the policy."; break;
case 1009: reason = "An endpoint is terminating the connection because it has received a message that is too big for it to process."; break;
case 1010: reason = "An endpoint (client) is terminating the connection because it has expected the server to negotiate one or more extension, but the server didn't return them in the response message of the WebSocket handshake. <br /> Specifically, the extensions that are needed are: " + event.reason; break;
case 1011: reason = "A server is terminating the connection because it encountered an unexpected condition that prevented it from fulfilling the request."; break;
case 1015: reason = "The connection was closed due to a failure to perform a TLS handshake (e.g., the server certificate can't be verified)."; break;
default: reason = "Unknown reason";
}
$(window.hyperion).trigger({type:"close", reason:reason});
window.watchdog = 10;
connectionLostDetection();
};
window.websocket.onmessage = function (event) {
try
{
var response = JSON.parse(event.data);
var success = response.success;
var cmd = response.command;
var tan = response.tan
if (success || typeof(success) == "undefined")
{
$(window.hyperion).trigger({type:"cmd-"+cmd, response:response});
}
else
{
// skip tan -1 error handling
if(tan != -1){
var error = response.hasOwnProperty("error")? response.error : "unknown";
$(window.hyperion).trigger({type:"error",reason:error});
console.log("[window.websocket::onmessage] ",error)
}
}
}
catch(exception_error)
{
$(window.hyperion).trigger({type:"error",reason:exception_error});
console.log("[window.websocket::onmessage] ",exception_error)
}
};
window.websocket.onmessage = function (event) {
try
{
var response = JSON.parse(event.data);
var success = response.success;
var cmd = response.command;
var tan = response.tan
if (success || typeof(success) == "undefined")
{
$(window.hyperion).trigger({type:"cmd-"+cmd, response:response});
}
else
{
// skip tan -1 error handling
if(tan != -1){
var error = response.hasOwnProperty("error")? response.error : "unknown";
$(window.hyperion).trigger({type:"error",reason:error});
console.log("[window.websocket::onmessage] ",error)
}
}
}
catch(exception_error)
{
$(window.hyperion).trigger({type:"error",reason:exception_error});
console.log("[window.websocket::onmessage] ",exception_error)
}
};
window.websocket.onerror = function (error) {
$(window.hyperion).trigger({type:"error",reason:error});
console.log("[window.websocket::onerror] ",error)
};
}
}
else
{
$(window.hyperion).trigger("error");
alert("Websocket is not supported by your browser");
return;
}
window.websocket.onerror = function (error) {
$(window.hyperion).trigger({type:"error",reason:error});
console.log("[window.websocket::onerror] ",error)
};
}
}
else
{
$(window.hyperion).trigger("error");
alert("Websocket is not supported by your browser");
return;
}
}
function sendToHyperion(command, subcommand, msg)
{
if (typeof subcommand != 'undefined' && subcommand.length > 0)
subcommand = ',"subcommand":"'+subcommand+'"';
else
subcommand = "";
if (typeof subcommand != 'undefined' && subcommand.length > 0)
subcommand = ',"subcommand":"'+subcommand+'"';
else
subcommand = "";
if (typeof msg != 'undefined' && msg.length > 0)
msg = ","+msg;
else
msg = "";
if (typeof msg != 'undefined' && msg.length > 0)
msg = ","+msg;
else
msg = "";
window.websocket.send('{"command":"'+command+'", "tan":'+window.wsTan+subcommand+msg+'}');
window.websocket.send('{"command":"'+command+'", "tan":'+window.wsTan+subcommand+msg+'}');
}
// Send a json message to Hyperion and wait for a matching response
@ -228,248 +230,256 @@ async function __sendAsync (data) {
// Test if admin requires authentication
function requestRequiresAdminAuth()
{
sendToHyperion("authorize","adminRequired");
sendToHyperion("authorize","adminRequired");
}
// Test if the default password needs to be changed
function requestRequiresDefaultPasswortChange()
{
sendToHyperion("authorize","newPasswordRequired");
sendToHyperion("authorize","newPasswordRequired");
}
// Change password
function requestChangePassword(oldPw, newPw)
{
sendToHyperion("authorize","newPassword",'"password": "'+oldPw+'", "newPassword":"'+newPw+'"');
sendToHyperion("authorize","newPassword",'"password": "'+oldPw+'", "newPassword":"'+newPw+'"');
}
function requestAuthorization(password)
{
sendToHyperion("authorize","login",'"password": "' + password + '"');
sendToHyperion("authorize","login",'"password": "' + password + '"');
}
function requestTokenAuthorization(token)
{
sendToHyperion("authorize","login",'"token": "' + token + '"');
sendToHyperion("authorize","login",'"token": "' + token + '"');
}
function requestToken(comment)
{
sendToHyperion("authorize","createToken",'"comment": "'+comment+'"');
sendToHyperion("authorize","createToken",'"comment": "'+comment+'"');
}
function requestTokenInfo()
{
sendToHyperion("authorize","getTokenList","");
sendToHyperion("authorize","getTokenList","");
}
function requestGetPendingTokenRequests (id, state) {
sendToHyperion("authorize", "getPendingTokenRequests", "");
sendToHyperion("authorize", "getPendingTokenRequests", "");
}
function requestHandleTokenRequest(id, state)
{
sendToHyperion("authorize","answerRequest",'"id":"'+id+'", "accept":'+state);
sendToHyperion("authorize","answerRequest",'"id":"'+id+'", "accept":'+state);
}
function requestTokenDelete(id)
{
sendToHyperion("authorize","deleteToken",'"id":"'+id+'"');
sendToHyperion("authorize","deleteToken",'"id":"'+id+'"');
}
function requestInstanceRename(inst, name)
{
sendToHyperion("instance", "saveName",'"instance": '+inst+', "name": "'+name+'"');
sendToHyperion("instance", "saveName",'"instance": '+inst+', "name": "'+name+'"');
}
function requestInstanceStartStop(inst, start)
{
if(start)
sendToHyperion("instance","startInstance",'"instance": '+inst);
else
sendToHyperion("instance","stopInstance",'"instance": '+inst);
if(start)
sendToHyperion("instance","startInstance",'"instance": '+inst);
else
sendToHyperion("instance","stopInstance",'"instance": '+inst);
}
function requestInstanceDelete(inst)
{
sendToHyperion("instance","deleteInstance",'"instance": '+inst);
sendToHyperion("instance","deleteInstance",'"instance": '+inst);
}
function requestInstanceCreate(name)
{
sendToHyperion("instance","createInstance",'"name": "'+name+'"');
sendToHyperion("instance","createInstance",'"name": "'+name+'"');
}
function requestInstanceSwitch(inst)
{
sendToHyperion("instance","switchTo",'"instance": '+inst);
sendToHyperion("instance","switchTo",'"instance": '+inst);
}
function requestServerInfo()
{
sendToHyperion("serverinfo","",'"subscribe":["components-update","sessions-update","priorities-update", "imageToLedMapping-update", "adjustment-update", "videomode-update", "effects-update", "settings-update", "instance-update"]');
sendToHyperion("serverinfo","",'"subscribe":["components-update","sessions-update","priorities-update", "imageToLedMapping-update", "adjustment-update", "videomode-update", "effects-update", "settings-update", "instance-update"]');
}
function requestSysInfo()
{
sendToHyperion("sysinfo");
sendToHyperion("sysinfo");
}
function requestServerConfigSchema()
{
sendToHyperion("config","getschema");
sendToHyperion("config","getschema");
}
function requestServerConfig()
{
sendToHyperion("config", "getconfig");
sendToHyperion("config", "getconfig");
}
function requestServerConfigReload()
{
sendToHyperion("config", "reload");
sendToHyperion("config", "reload");
}
function requestLedColorsStart()
{
window.ledStreamActive=true;
sendToHyperion("ledcolors", "ledstream-start");
window.ledStreamActive=true;
sendToHyperion("ledcolors", "ledstream-start");
}
function requestLedColorsStop()
{
window.ledStreamActive=false;
sendToHyperion("ledcolors", "ledstream-stop");
window.ledStreamActive=false;
sendToHyperion("ledcolors", "ledstream-stop");
}
function requestLedImageStart()
{
window.imageStreamActive=true;
sendToHyperion("ledcolors", "imagestream-start");
window.imageStreamActive=true;
sendToHyperion("ledcolors", "imagestream-start");
}
function requestLedImageStop()
{
window.imageStreamActive=false;
sendToHyperion("ledcolors", "imagestream-stop");
window.imageStreamActive=false;
sendToHyperion("ledcolors", "imagestream-stop");
}
function requestPriorityClear(prio)
{
if(typeof prio !== 'number')
prio = window.webPrio;
if(typeof prio !== 'number')
prio = window.webPrio;
sendToHyperion("clear", "", '"priority":'+prio+'');
sendToHyperion("clear", "", '"priority":'+prio+'');
}
function requestClearAll()
{
requestPriorityClear(-1)
requestPriorityClear(-1)
}
function requestPlayEffect(effectName, duration)
{
sendToHyperion("effect", "", '"effect":{"name":"'+effectName+'"},"priority":'+window.webPrio+',"duration":'+validateDuration(duration)+',"origin":"'+window.webOrigin+'"');
sendToHyperion("effect", "", '"effect":{"name":"'+effectName+'"},"priority":'+window.webPrio+',"duration":'+validateDuration(duration)+',"origin":"'+window.webOrigin+'"');
}
function requestSetColor(r,g,b,duration)
{
sendToHyperion("color", "", '"color":['+r+','+g+','+b+'], "priority":'+window.webPrio+',"duration":'+validateDuration(duration)+',"origin":"'+window.webOrigin+'"');
sendToHyperion("color", "", '"color":['+r+','+g+','+b+'], "priority":'+window.webPrio+',"duration":'+validateDuration(duration)+',"origin":"'+window.webOrigin+'"');
}
function requestSetImage(data,duration,name)
{
sendToHyperion("image", "", '"imagedata":"'+data+'", "priority":'+window.webPrio+',"duration":'+validateDuration(duration)+', "format":"auto", "origin":"'+window.webOrigin+'", "name":"'+name+'"');
sendToHyperion("image", "", '"imagedata":"'+data+'", "priority":'+window.webPrio+',"duration":'+validateDuration(duration)+', "format":"auto", "origin":"'+window.webOrigin+'", "name":"'+name+'"');
}
function requestSetComponentState(comp, state)
{
var state_str = state ? "true" : "false";
sendToHyperion("componentstate", "", '"componentstate":{"component":"'+comp+'","state":'+state_str+'}');
var state_str = state ? "true" : "false";
sendToHyperion("componentstate", "", '"componentstate":{"component":"'+comp+'","state":'+state_str+'}');
}
function requestSetSource(prio)
{
if ( prio == "auto" )
sendToHyperion("sourceselect", "", '"auto":true');
else
sendToHyperion("sourceselect", "", '"priority":'+prio);
if ( prio == "auto" )
sendToHyperion("sourceselect", "", '"auto":true');
else
sendToHyperion("sourceselect", "", '"priority":'+prio);
}
function requestWriteConfig(config, full)
{
if(full === true)
window.serverConfig = config;
else
{
jQuery.each(config, function(i, val) {
window.serverConfig[i] = val;
});
}
if(full === true)
window.serverConfig = config;
else
{
jQuery.each(config, function(i, val) {
window.serverConfig[i] = val;
});
}
sendToHyperion("config","setconfig", '"config":'+JSON.stringify(window.serverConfig));
sendToHyperion("config","setconfig", '"config":'+JSON.stringify(window.serverConfig));
}
function requestWriteEffect(effectName,effectPy,effectArgs,data)
{
var cutArgs = effectArgs.slice(1, -1);
sendToHyperion("create-effect", "", '"name":"'+effectName+'", "script":"'+effectPy+'", '+cutArgs+',"imageData":"'+data+'"');
var cutArgs = effectArgs.slice(1, -1);
sendToHyperion("create-effect", "", '"name":"'+effectName+'", "script":"'+effectPy+'", '+cutArgs+',"imageData":"'+data+'"');
}
function requestTestEffect(effectName,effectPy,effectArgs,data)
{
sendToHyperion("effect", "", '"effect":{"name":"'+effectName+'", "args":'+effectArgs+'}, "priority":'+window.webPrio+', "origin":"'+window.webOrigin+'", "pythonScript":"'+effectPy+'", "imageData":"'+data+'"');
sendToHyperion("effect", "", '"effect":{"name":"'+effectName+'", "args":'+effectArgs+'}, "priority":'+window.webPrio+', "origin":"'+window.webOrigin+'", "pythonScript":"'+effectPy+'", "imageData":"'+data+'"');
}
function requestDeleteEffect(effectName)
{
sendToHyperion("delete-effect", "", '"name":"'+effectName+'"');
sendToHyperion("delete-effect", "", '"name":"'+effectName+'"');
}
function requestLoggingStart()
{
window.loggingStreamActive=true;
sendToHyperion("logging", "start");
window.loggingStreamActive=true;
sendToHyperion("logging", "start");
}
function requestLoggingStop()
{
window.loggingStreamActive=false;
sendToHyperion("logging", "stop");
window.loggingStreamActive=false;
sendToHyperion("logging", "stop");
}
function requestMappingType(type)
{
sendToHyperion("processing", "", '"mappingType": "'+type+'"');
sendToHyperion("processing", "", '"mappingType": "'+type+'"');
}
function requestVideoMode(newMode)
{
sendToHyperion("videomode", "", '"videoMode": "'+newMode+'"');
sendToHyperion("videomode", "", '"videoMode": "'+newMode+'"');
}
function requestAdjustment(type, value, complete)
{
if(complete === true)
sendToHyperion("adjustment", "", '"adjustment": '+type+'');
else
sendToHyperion("adjustment", "", '"adjustment": {"'+type+'": '+value+'}');
if(complete === true)
sendToHyperion("adjustment", "", '"adjustment": '+type+'');
else
sendToHyperion("adjustment", "", '"adjustment": {"'+type+'": '+value+'}');
}
async function requestLedDeviceDiscovery(type, params)
{
let data = { ledDeviceType: type, params: params };
let data = { ledDeviceType: type, params: params };
return sendAsyncToHyperion("leddevice", "discover", data, Math.floor(Math.random() * 1000) );
return sendAsyncToHyperion("leddevice", "discover", data, Math.floor(Math.random() * 1000) );
}
async function requestLedDeviceProperties(type, params)
{
let data = { ledDeviceType: type, params: params };
let data = { ledDeviceType: type, params: params };
return sendAsyncToHyperion("leddevice", "getProperties", data, Math.floor(Math.random() * 1000));
return sendAsyncToHyperion("leddevice", "getProperties", data, Math.floor(Math.random() * 1000));
}
function requestLedDeviceIdentification(type, params)
{
sendToHyperion("leddevice", "identify", '"ledDeviceType": "'+type+'","params": '+JSON.stringify(params)+'');
let data = { ledDeviceType: type, params: params };
return sendAsyncToHyperion("leddevice", "identify", data, Math.floor(Math.random() * 1000));
}
async function requestInputSourcesDiscovery(type, params) {
let data = { sourceType: type, params: params };
return sendAsyncToHyperion("inputsource", "discover", data, Math.floor(Math.random() * 1000));
}

View File

@ -0,0 +1,33 @@
var storedLang;
var availLang = ['cs', 'de', 'en', 'es', 'fr', 'it', 'nl', 'nb', 'pl', 'pt', 'ro', 'sv', 'vi', 'ru', 'tr', 'zh-CN'];
var availLangText = ['Čeština', 'Deutsch', 'English', 'Español', 'Français', 'Italiano', 'Nederlands', 'Norsk Bokmål', 'Polski', 'Português', 'Română', 'Svenska', 'Tiếng Việt', 'русский', 'Türkçe', '汉语'];
//$.i18n.debug = true;
//i18n
function initTrans(lc) {
$.i18n().load("i18n", lc).done(
function () {
$.i18n().locale = lc;
performTranslation();
});
}
storedLang = getStorage("langcode");
if (storedLang == null || storedLang === "undefined") {
var langLocale = $.i18n().locale.substring(0, 2);
//Test, if language is supported by hyperion
var langIdx = availLang.indexOf(langLocale);
if (langIdx === -1) {
// If language is not supported by hyperion, try fallback language
langLocale = $.i18n().options.fallbackLocale.substring(0, 2);
langIdx = availLang.indexOf(langLocale);
if (langIdx === -1) {
langLocale = 'en';
}
}
storedLang = langLocale;
setStorage("langcode", storedLang);
}
initTrans(storedLang);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,607 @@
/**
* cldrpluralparser.js
* A parser engine for CLDR plural rules.
*
* Copyright 2012-2014 Santhosh Thottingal and other contributors
* Released under the MIT license
* http://opensource.org/licenses/MIT
*
* @source https://github.com/santhoshtr/CLDRPluralRuleParser
* @author Santhosh Thottingal <santhosh.thottingal@gmail.com>
* @author Timo Tijhof
* @author Amir Aharoni
*/
/**
* Evaluates a plural rule in CLDR syntax for a number
* @param {string} rule
* @param {integer} number
* @return {boolean} true if evaluation passed, false if evaluation failed.
*/
// UMD returnExports https://github.com/umdjs/umd/blob/master/returnExports.js
(function(root, factory) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define(factory);
} else if (typeof exports === 'object') {
// Node. Does not work with strict CommonJS, but
// only CommonJS-like environments that support module.exports,
// like Node.
module.exports = factory();
} else {
// Browser globals (root is window)
root.pluralRuleParser = factory();
}
}(this, function() {
function pluralRuleParser(rule, number) {
'use strict';
/*
Syntax: see http://unicode.org/reports/tr35/#Language_Plural_Rules
-----------------------------------------------------------------
condition = and_condition ('or' and_condition)*
('@integer' samples)?
('@decimal' samples)?
and_condition = relation ('and' relation)*
relation = is_relation | in_relation | within_relation
is_relation = expr 'is' ('not')? value
in_relation = expr (('not')? 'in' | '=' | '!=') range_list
within_relation = expr ('not')? 'within' range_list
expr = operand (('mod' | '%') value)?
operand = 'n' | 'i' | 'f' | 't' | 'v' | 'w'
range_list = (range | value) (',' range_list)*
value = digit+
digit = 0|1|2|3|4|5|6|7|8|9
range = value'..'value
samples = sampleRange (',' sampleRange)* (',' ('…'|'...'))?
sampleRange = decimalValue '~' decimalValue
decimalValue = value ('.' value)?
*/
// We don't evaluate the samples section of the rule. Ignore it.
rule = rule.split('@')[0].replace(/^\s*/, '').replace(/\s*$/, '');
if (!rule.length) {
// Empty rule or 'other' rule.
return true;
}
// Indicates the current position in the rule as we parse through it.
// Shared among all parsing functions below.
var pos = 0,
operand,
expression,
relation,
result,
whitespace = makeRegexParser(/^\s+/),
value = makeRegexParser(/^\d+/),
_n_ = makeStringParser('n'),
_i_ = makeStringParser('i'),
_f_ = makeStringParser('f'),
_t_ = makeStringParser('t'),
_v_ = makeStringParser('v'),
_w_ = makeStringParser('w'),
_is_ = makeStringParser('is'),
_isnot_ = makeStringParser('is not'),
_isnot_sign_ = makeStringParser('!='),
_equal_ = makeStringParser('='),
_mod_ = makeStringParser('mod'),
_percent_ = makeStringParser('%'),
_not_ = makeStringParser('not'),
_in_ = makeStringParser('in'),
_within_ = makeStringParser('within'),
_range_ = makeStringParser('..'),
_comma_ = makeStringParser(','),
_or_ = makeStringParser('or'),
_and_ = makeStringParser('and');
function debug() {
// console.log.apply(console, arguments);
}
debug('pluralRuleParser', rule, number);
// Try parsers until one works, if none work return null
function choice(parserSyntax) {
return function() {
var i, result;
for (i = 0; i < parserSyntax.length; i++) {
result = parserSyntax[i]();
if (result !== null) {
return result;
}
}
return null;
};
}
// Try several parserSyntax-es in a row.
// All must succeed; otherwise, return null.
// This is the only eager one.
function sequence(parserSyntax) {
var i, parserRes,
originalPos = pos,
result = [];
for (i = 0; i < parserSyntax.length; i++) {
parserRes = parserSyntax[i]();
if (parserRes === null) {
pos = originalPos;
return null;
}
result.push(parserRes);
}
return result;
}
// Run the same parser over and over until it fails.
// Must succeed a minimum of n times; otherwise, return null.
function nOrMore(n, p) {
return function() {
var originalPos = pos,
result = [],
parsed = p();
while (parsed !== null) {
result.push(parsed);
parsed = p();
}
if (result.length < n) {
pos = originalPos;
return null;
}
return result;
};
}
// Helpers - just make parserSyntax out of simpler JS builtin types
function makeStringParser(s) {
var len = s.length;
return function() {
var result = null;
if (rule.substr(pos, len) === s) {
result = s;
pos += len;
}
return result;
};
}
function makeRegexParser(regex) {
return function() {
var matches = rule.substr(pos).match(regex);
if (matches === null) {
return null;
}
pos += matches[0].length;
return matches[0];
};
}
/**
* Integer digits of n.
*/
function i() {
var result = _i_();
if (result === null) {
debug(' -- failed i', parseInt(number, 10));
return result;
}
result = parseInt(number, 10);
debug(' -- passed i ', result);
return result;
}
/**
* Absolute value of the source number (integer and decimals).
*/
function n() {
var result = _n_();
if (result === null) {
debug(' -- failed n ', number);
return result;
}
result = parseFloat(number, 10);
debug(' -- passed n ', result);
return result;
}
/**
* Visible fractional digits in n, with trailing zeros.
*/
function f() {
var result = _f_();
if (result === null) {
debug(' -- failed f ', number);
return result;
}
result = (number + '.').split('.')[1] || 0;
debug(' -- passed f ', result);
return result;
}
/**
* Visible fractional digits in n, without trailing zeros.
*/
function t() {
var result = _t_();
if (result === null) {
debug(' -- failed t ', number);
return result;
}
result = (number + '.').split('.')[1].replace(/0$/, '') || 0;
debug(' -- passed t ', result);
return result;
}
/**
* Number of visible fraction digits in n, with trailing zeros.
*/
function v() {
var result = _v_();
if (result === null) {
debug(' -- failed v ', number);
return result;
}
result = (number + '.').split('.')[1].length || 0;
debug(' -- passed v ', result);
return result;
}
/**
* Number of visible fraction digits in n, without trailing zeros.
*/
function w() {
var result = _w_();
if (result === null) {
debug(' -- failed w ', number);
return result;
}
result = (number + '.').split('.')[1].replace(/0$/, '').length || 0;
debug(' -- passed w ', result);
return result;
}
// operand = 'n' | 'i' | 'f' | 't' | 'v' | 'w'
operand = choice([n, i, f, t, v, w]);
// expr = operand (('mod' | '%') value)?
expression = choice([mod, operand]);
function mod() {
var result = sequence(
[operand, whitespace, choice([_mod_, _percent_]), whitespace, value]
);
if (result === null) {
debug(' -- failed mod');
return null;
}
debug(' -- passed ' + parseInt(result[0], 10) + ' ' + result[2] + ' ' + parseInt(result[4], 10));
return parseFloat(result[0]) % parseInt(result[4], 10);
}
function not() {
var result = sequence([whitespace, _not_]);
if (result === null) {
debug(' -- failed not');
return null;
}
return result[1];
}
// is_relation = expr 'is' ('not')? value
function is() {
var result = sequence([expression, whitespace, choice([_is_]), whitespace, value]);
if (result !== null) {
debug(' -- passed is : ' + result[0] + ' == ' + parseInt(result[4], 10));
return result[0] === parseInt(result[4], 10);
}
debug(' -- failed is');
return null;
}
// is_relation = expr 'is' ('not')? value
function isnot() {
var result = sequence(
[expression, whitespace, choice([_isnot_, _isnot_sign_]), whitespace, value]
);
if (result !== null) {
debug(' -- passed isnot: ' + result[0] + ' != ' + parseInt(result[4], 10));
return result[0] !== parseInt(result[4], 10);
}
debug(' -- failed isnot');
return null;
}
function not_in() {
var i, range_list,
result = sequence([expression, whitespace, _isnot_sign_, whitespace, rangeList]);
if (result !== null) {
debug(' -- passed not_in: ' + result[0] + ' != ' + result[4]);
range_list = result[4];
for (i = 0; i < range_list.length; i++) {
if (parseInt(range_list[i], 10) === parseInt(result[0], 10)) {
return false;
}
}
return true;
}
debug(' -- failed not_in');
return null;
}
// range_list = (range | value) (',' range_list)*
function rangeList() {
var result = sequence([choice([range, value]), nOrMore(0, rangeTail)]),
resultList = [];
if (result !== null) {
resultList = resultList.concat(result[0]);
if (result[1][0]) {
resultList = resultList.concat(result[1][0]);
}
return resultList;
}
debug(' -- failed rangeList');
return null;
}
function rangeTail() {
// ',' range_list
var result = sequence([_comma_, rangeList]);
if (result !== null) {
return result[1];
}
debug(' -- failed rangeTail');
return null;
}
// range = value'..'value
function range() {
var i, array, left, right,
result = sequence([value, _range_, value]);
if (result !== null) {
debug(' -- passed range');
array = [];
left = parseInt(result[0], 10);
right = parseInt(result[2], 10);
for (i = left; i <= right; i++) {
array.push(i);
}
return array;
}
debug(' -- failed range');
return null;
}
function _in() {
var result, range_list, i;
// in_relation = expr ('not')? 'in' range_list
result = sequence(
[expression, nOrMore(0, not), whitespace, choice([_in_, _equal_]), whitespace, rangeList]
);
if (result !== null) {
debug(' -- passed _in:' + result);
range_list = result[5];
for (i = 0; i < range_list.length; i++) {
if (parseInt(range_list[i], 10) === parseFloat(result[0])) {
return (result[1][0] !== 'not');
}
}
return (result[1][0] === 'not');
}
debug(' -- failed _in ');
return null;
}
/**
* The difference between "in" and "within" is that
* "in" only includes integers in the specified range,
* while "within" includes all values.
*/
function within() {
var range_list, result;
// within_relation = expr ('not')? 'within' range_list
result = sequence(
[expression, nOrMore(0, not), whitespace, _within_, whitespace, rangeList]
);
if (result !== null) {
debug(' -- passed within');
range_list = result[5];
if ((result[0] >= parseInt(range_list[0], 10)) &&
(result[0] < parseInt(range_list[range_list.length - 1], 10))) {
return (result[1][0] !== 'not');
}
return (result[1][0] === 'not');
}
debug(' -- failed within ');
return null;
}
// relation = is_relation | in_relation | within_relation
relation = choice([is, not_in, isnot, _in, within]);
// and_condition = relation ('and' relation)*
function and() {
var i,
result = sequence([relation, nOrMore(0, andTail)]);
if (result) {
if (!result[0]) {
return false;
}
for (i = 0; i < result[1].length; i++) {
if (!result[1][i]) {
return false;
}
}
return true;
}
debug(' -- failed and');
return null;
}
// ('and' relation)*
function andTail() {
var result = sequence([whitespace, _and_, whitespace, relation]);
if (result !== null) {
debug(' -- passed andTail' + result);
return result[3];
}
debug(' -- failed andTail');
return null;
}
// ('or' and_condition)*
function orTail() {
var result = sequence([whitespace, _or_, whitespace, and]);
if (result !== null) {
debug(' -- passed orTail: ' + result[3]);
return result[3];
}
debug(' -- failed orTail');
return null;
}
// condition = and_condition ('or' and_condition)*
function condition() {
var i,
result = sequence([and, nOrMore(0, orTail)]);
if (result) {
for (i = 0; i < result[1].length; i++) {
if (result[1][i]) {
return true;
}
}
return result[0];
}
return false;
}
result = condition();
/**
* For success, the pos must have gotten to the end of the rule
* and returned a non-null.
* n.b. This is part of language infrastructure,
* so we do not throw an internationalizable message.
*/
if (result === null) {
throw new Error('Parse error at position ' + pos.toString() + ' for rule: ' + rule);
}
if (pos !== rule.length) {
debug('Warning: Rule not parsed completely. Parser stopped at ' + rule.substr(0, pos) + ' for rule: ' + rule);
}
return result;
}
return pluralRuleParser;
}));

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
/**
/*!
* jQuery Internationalization library
*
* Copyright (C) 2011-2013 Santhosh Thottingal, Neil Kandalgaonkar
@ -17,7 +17,7 @@
'use strict';
var MessageParserEmitter = function () {
this.language = $.i18n.languages[String.locale] || $.i18n.languages['default'];
this.language = $.i18n.languages[ String.locale ] || $.i18n.languages[ 'default' ];
};
MessageParserEmitter.prototype = {
@ -38,36 +38,36 @@
messageParserEmitter = this;
switch ( typeof node ) {
case 'string':
case 'number':
ret = node;
break;
case 'object':
case 'string':
case 'number':
ret = node;
break;
case 'object':
// node is an array of nodes
subnodes = $.map( node.slice( 1 ), function ( n ) {
return messageParserEmitter.emit( n, replacements );
} );
subnodes = $.map( node.slice( 1 ), function ( n ) {
return messageParserEmitter.emit( n, replacements );
} );
operation = node[0].toLowerCase();
operation = node[ 0 ].toLowerCase();
if ( typeof messageParserEmitter[operation] === 'function' ) {
ret = messageParserEmitter[operation]( subnodes, replacements );
} else {
throw new Error( 'unknown operation "' + operation + '"' );
}
if ( typeof messageParserEmitter[ operation ] === 'function' ) {
ret = messageParserEmitter[ operation ]( subnodes, replacements );
} else {
throw new Error( 'unknown operation "' + operation + '"' );
}
break;
case 'undefined':
break;
case 'undefined':
// Parsing the empty string (as an entire expression, or as a
// paramExpression in a template) results in undefined
// Perhaps a more clever parser can detect this, and return the
// empty string? Or is that useful information?
// The logical thing is probably to return the empty string here
// when we encounter undefined.
ret = '';
break;
default:
throw new Error( 'unexpected type in AST: ' + typeof node );
ret = '';
break;
default:
throw new Error( 'unexpected type in AST: ' + typeof node );
}
return ret;
@ -80,7 +80,7 @@
* in our children and pass them upwards
*
* @param {Array} nodes Mixed, some single nodes, some arrays of nodes.
* @return String
* @return {string}
*/
concat: function ( nodes ) {
var result = '';
@ -106,11 +106,11 @@
* @return {string} replacement
*/
replace: function ( nodes, replacements ) {
var index = parseInt( nodes[0], 10 );
var index = parseInt( nodes[ 0 ], 10 );
if ( index < replacements.length ) {
// replacement is not a string, don't touch!
return replacements[index];
return replacements[ index ];
} else {
// index not found, fallback to displaying variable
return '$' + ( index + 1 );
@ -124,11 +124,11 @@
* convertNumber.
*
* @param {Array} nodes List [ {String|Number}, {String}, {String} ... ]
* @return {String} selected pluralized form according to current
* @return {string} selected pluralized form according to current
* language.
*/
plural: function ( nodes ) {
var count = parseFloat( this.language.convertNumber( nodes[0], 10 ) ),
var count = parseFloat( this.language.convertNumber( nodes[ 0 ], 10 ) ),
forms = nodes.slice( 1 );
return forms.length ? this.language.convertPlural( count, forms ) : '';
@ -139,10 +139,10 @@
* {{gender:gender|masculine|feminine|neutral}}.
*
* @param {Array} nodes List [ {String}, {String}, {String} , {String} ]
* @return {String} selected gender form according to current language
* @return {string} selected gender form according to current language
*/
gender: function ( nodes ) {
var gender = nodes[0],
var gender = nodes[ 0 ],
forms = nodes.slice( 1 );
return this.language.gender( gender, forms );
@ -153,12 +153,12 @@
* putting {{grammar:form|word}} in a message
*
* @param {Array} nodes List [{Grammar case eg: genitive}, {String word}]
* @return {String} selected grammatical form according to current
* @return {string} selected grammatical form according to current
* language.
*/
grammar: function ( nodes ) {
var form = nodes[0],
word = nodes[1];
var form = nodes[ 0 ],
word = nodes[ 1 ];
return word && form && this.language.convertGrammar( word, form );
}

View File

@ -1,4 +1,4 @@
/**
/*!
* jQuery Internationalization library
*
* Copyright (C) 2012 Santhosh Thottingal
@ -11,7 +11,7 @@
* @licence GNU General Public Licence 2.0 or later
* @licence MIT License
*/
( function ( $, undefined ) {
( function ( $ ) {
'use strict';
$.i18n = $.i18n || {};
@ -45,7 +45,6 @@
'crh-cyrl': [ 'ru' ],
csb: [ 'pl' ],
cv: [ 'ru' ],
'de-DE': [ 'de' ],
'de-at': [ 'de' ],
'de-ch': [ 'de' ],
'de-formal': [ 'de' ],

View File

@ -1,4 +1,4 @@
/**
/*!
* jQuery Internationalization library
*
* Copyright (C) 2012 Santhosh Thottingal
@ -16,7 +16,7 @@
( function ( $ ) {
'use strict';
var nav, I18N,
var I18N,
slice = Array.prototype.slice;
/**
* @constructor
@ -30,61 +30,52 @@
this.locale = this.options.locale;
this.messageStore = this.options.messageStore;
this.languages = {};
this.init();
};
I18N.prototype = {
/**
* Initialize by loading locales and setting up
* String.prototype.toLocaleString and String.locale.
* Localize a given messageKey to a locale.
* @param {string} messageKey
* @return {string} Localized message
*/
init: function () {
var i18n = this;
localize: function ( messageKey ) {
var localeParts, localePartIndex, locale, fallbackIndex,
tryingLocale, message;
// Set locale of String environment
String.locale = i18n.locale;
locale = this.locale;
fallbackIndex = 0;
// Override String.localeString method
String.prototype.toLocaleString = function () {
var localeParts, localePartIndex, value, locale, fallbackIndex,
tryingLocale, message;
while ( locale ) {
// Iterate through locales starting at most-specific until
// localization is found. As in fi-Latn-FI, fi-Latn and fi.
localeParts = locale.split( '-' );
localePartIndex = localeParts.length;
value = this.valueOf();
locale = i18n.locale;
fallbackIndex = 0;
do {
tryingLocale = localeParts.slice( 0, localePartIndex ).join( '-' );
message = this.messageStore.get( tryingLocale, messageKey );
while ( locale ) {
// Iterate through locales starting at most-specific until
// localization is found. As in fi-Latn-FI, fi-Latn and fi.
localeParts = locale.split( '-' );
localePartIndex = localeParts.length;
do {
tryingLocale = localeParts.slice( 0, localePartIndex ).join( '-' );
message = i18n.messageStore.get( tryingLocale, value );
if ( message ) {
return message;
}
localePartIndex--;
} while ( localePartIndex );
if ( locale === 'en' ) {
break;
if ( message ) {
return message;
}
locale = ( $.i18n.fallbacks[i18n.locale] && $.i18n.fallbacks[i18n.locale][fallbackIndex] ) ||
i18n.options.fallbackLocale;
$.i18n.log( 'Trying fallback locale for ' + i18n.locale + ': ' + locale );
localePartIndex--;
} while ( localePartIndex );
fallbackIndex++;
if ( locale === this.options.fallbackLocale ) {
break;
}
// key not found
return '';
};
locale = ( $.i18n.fallbacks[ this.locale ] &&
$.i18n.fallbacks[ this.locale ][ fallbackIndex ] ) ||
this.options.fallbackLocale;
$.i18n.log( 'Trying fallback locale for ' + this.locale + ': ' + locale + ' (' + messageKey + ')' );
fallbackIndex++;
}
// key not found
return '';
},
/*
@ -132,26 +123,28 @@
* If the data argument is null/undefined/false,
* all cached messages for the i18n instance will get reset.
*
* @param {String|Object} source
* @param {String} locale Language tag
* @returns {jQuery.Promise}
* @param {string|Object} source
* @param {string} locale Language tag
* @return {jQuery.Promise}
*/
load: function ( source, locale ) {
var fallbackLocales, locIndex, fallbackLocale, sourceMap = {};
if ( !source && !locale ) {
source = 'i18n';
source = 'i18n/' + $.i18n().locale + '.json';
locale = $.i18n().locale;
}
if ( typeof source === 'string' &&
source.split( '.' ).pop() !== 'json'
if ( typeof source === 'string' &&
// source extension should be json, but can have query params after that.
source.split( '?' )[ 0 ].split( '.' ).pop() !== 'json'
) {
// Load specified locale then check for fallbacks when directory is specified in load()
sourceMap[locale] = source + '/' + locale + '.json';
fallbackLocales = ( $.i18n.fallbacks[locale] || [] )
// Load specified locale then check for fallbacks when directory is
// specified in load()
sourceMap[ locale ] = source + '/' + locale + '.json';
fallbackLocales = ( $.i18n.fallbacks[ locale ] || [] )
.concat( this.options.fallbackLocale );
for ( locIndex in fallbackLocales ) {
fallbackLocale = fallbackLocales[locIndex];
sourceMap[fallbackLocale] = source + '/' + fallbackLocale + '.json';
for ( locIndex = 0; locIndex < fallbackLocales.length; locIndex++ ) {
fallbackLocale = fallbackLocales[ locIndex ];
sourceMap[ fallbackLocale ] = source + '/' + fallbackLocale + '.json';
}
return this.load( sourceMap );
} else {
@ -168,11 +161,11 @@
* @return {string}
*/
parse: function ( key, parameters ) {
var message = key.toLocaleString();
var message = this.localize( key );
// FIXME: This changes the state of the I18N object,
// should probably not change the 'this.parser' but just
// pass it to the parser.
this.parser.language = $.i18n.languages[$.i18n().locale] || $.i18n.languages['default'];
this.parser.language = $.i18n.languages[ $.i18n().locale ] || $.i18n.languages[ 'default' ];
if ( message === '' ) {
message = key;
}
@ -202,7 +195,7 @@
// NOTE: It should only change language for this one call.
// Then cache instances of I18N somewhere.
if ( options && options.locale && i18n && i18n.locale !== options.locale ) {
String.locale = i18n.locale = options.locale;
i18n.locale = options.locale;
}
if ( !i18n ) {
@ -231,28 +224,38 @@
i18n = new I18N();
$.data( document, 'i18n', i18n );
}
String.locale = i18n.locale;
return this.each( function () {
var $this = $( this ),
messageKey = $this.data( 'i18n' );
messageKey = $this.data( 'i18n' ),
lBracket, rBracket, type, key;
if ( messageKey ) {
$this.text( i18n.parse( messageKey ) );
lBracket = messageKey.indexOf( '[' );
rBracket = messageKey.indexOf( ']' );
if ( lBracket !== -1 && rBracket !== -1 && lBracket < rBracket ) {
type = messageKey.slice( lBracket + 1, rBracket );
key = messageKey.slice( rBracket + 1 );
if ( type === 'html' ) {
$this.html( i18n.parse( key ) );
} else {
$this.attr( type, i18n.parse( key ) );
}
} else {
$this.text( i18n.parse( messageKey ) );
}
} else {
$this.find( '[data-i18n]' ).i18n();
}
} );
};
String.locale = String.locale || $( 'html' ).attr( 'lang' );
if ( !String.locale ) {
if ( typeof window.navigator !== 'undefined' ) {
nav = window.navigator;
String.locale = nav.language || nav.userLanguage || '';
} else {
String.locale = '';
function getDefaultLocale() {
var locale = $( 'html' ).attr( 'lang' );
if ( !locale ) {
locale = navigator.language || navigator.userLanguage || '';
}
return locale;
}
$.i18n.languages = {};
@ -262,7 +265,7 @@
parse: function ( message, parameters ) {
return message.replace( /\$(\d+)/g, function ( str, match ) {
var index = parseInt( match, 10 ) - 1;
return parameters[index] !== undefined ? parameters[index] : '$' + match;
return parameters[ index ] !== undefined ? parameters[ index ] : '$' + match;
} );
},
emitter: {}
@ -276,7 +279,7 @@
};
/* Static members */
I18N.defaults = {
locale: String.locale,
locale: getDefaultLocale(),
fallbackLocale: 'en',
parser: $.i18n.parser,
messageStore: $.i18n.messageStore

View File

@ -1,7 +1,8 @@
/*global pluralRuleParser */
/* global pluralRuleParser */
( function ( $ ) {
'use strict';
// jscs:disable
var language = {
// CLDR plural rules generated using
// libs/CLDRPluralRuleParser/tools/PluralXML2JSON.html
@ -19,6 +20,16 @@
few: 'n % 100 = 3..10',
many: 'n % 100 = 11..99'
},
ars: {
zero: 'n = 0',
one: 'n = 1',
two: 'n = 2',
few: 'n % 100 = 3..10',
many: 'n % 100 = 11..99'
},
as: {
one: 'i = 0 or n = 1'
},
be: {
one: 'n % 10 = 1 and n % 100 != 11',
few: 'n % 10 = 2..4 and n % 100 != 12..14',
@ -55,6 +66,11 @@
da: {
one: 'n = 1 or t != 0 and i = 0,1'
},
dsb: {
one: 'v = 0 and i % 100 = 1 or f % 100 = 1',
two: 'v = 0 and i % 100 = 2 or f % 100 = 2',
few: 'v = 0 and i % 100 = 3..4 or f % 100 = 3..4'
},
fa: {
one: 'i = 0 or n = 1'
},
@ -62,7 +78,7 @@
one: 'i = 0,1'
},
fil: {
one: 'i = 0..1 and v = 0'
one: 'v = 0 and i = 1,2,3 or v = 0 and i % 10 != 4,6,9 or v != 0 and f % 10 != 4,6,9'
},
fr: {
one: 'i = 0,1'
@ -85,9 +101,10 @@
one: 'n = 0..1'
},
gv: {
one: 'n % 10 = 1',
two: 'n % 10 = 2',
few: 'n % 100 = 0,20,40,60'
one: 'v = 0 and i % 10 = 1',
two: 'v = 0 and i % 10 = 2',
few: 'v = 0 and i % 100 = 0,20,40,60,80',
many: 'v != 0'
},
he: {
one: 'i = 1 and v = 0',
@ -101,6 +118,11 @@
one: 'v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11',
few: 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14'
},
hsb: {
one: 'v = 0 and i % 100 = 1 or f % 100 = 1',
two: 'v = 0 and i % 100 = 2 or f % 100 = 2',
few: 'v = 0 and i % 100 = 3..4 or f % 100 = 3..4'
},
hy: {
one: 'i = 0,1'
},
@ -175,20 +197,20 @@
few: 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14',
many: 'v = 0 and i != 1 and i % 10 = 0..1 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 12..14'
},
prg: {
zero: 'n % 10 = 0 or n % 100 = 11..19 or v = 2 and f % 100 = 11..19',
one: 'n % 10 = 1 and n % 100 != 11 or v = 2 and f % 10 = 1 and f % 100 != 11 or v != 2 and f % 10 = 1'
},
pt: {
one: 'i = 1 and v = 0 or i = 0 and t = 1'
one: 'i = 0..1'
},
// jscs:disable requireCamelCaseOrUpperCaseIdentifiers
pt_PT: {
one: 'n = 1 and v = 0'
},
// jscs:enable requireCamelCaseOrUpperCaseIdentifiers
ro: {
one: 'i = 1 and v = 0',
few: 'v != 0 or n = 0 or n != 1 and n % 100 = 1..19'
},
ru: {
one: 'v = 0 and i % 10 = 1 and i % 100 != 11',
few: 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14',
many: 'v = 0 and i % 10 = 0 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 11..14'
},
se: {
@ -244,7 +266,7 @@
one: 'n = 0..1'
},
tl: {
one: 'i = 0..1 and v = 0'
one: 'v = 0 and i = 1,2,3 or v = 0 and i % 10 != 4,6,9 or v != 0 and f % 10 != 4,6,9'
},
tzm: {
one: 'n = 0..1 or n = 11..99'
@ -261,21 +283,22 @@
one: 'i = 0 or n = 1'
}
},
// jscs:enable
/**
* Plural form transformations, needed for some languages.
*
* @param count
* integer Non-localized quantifier
* @param forms
* array List of plural forms
* @return string Correct form for quantifier in this language
* @param {integer} count
* Non-localized quantifier
* @param {Array} forms
* List of plural forms
* @return {string} Correct form for quantifier in this language
*/
convertPlural: function ( count, forms ) {
var pluralRules,
pluralFormIndex,
index,
explicitPluralPattern = new RegExp( '\\d+=', 'i' ),
explicitPluralPattern = /\d+=/i,
formCount,
form;
@ -285,13 +308,13 @@
// Handle for Explicit 0= & 1= values
for ( index = 0; index < forms.length; index++ ) {
form = forms[index];
form = forms[ index ];
if ( explicitPluralPattern.test( form ) ) {
formCount = parseInt( form.substring( 0, form.indexOf( '=' ) ), 10 );
formCount = parseInt( form.slice( 0, form.indexOf( '=' ) ), 10 );
if ( formCount === count ) {
return ( form.substr( form.indexOf( '=' ) + 1 ) );
return ( form.slice( form.indexOf( '=' ) + 1 ) );
}
forms[index] = undefined;
forms[ index ] = undefined;
}
}
@ -301,25 +324,25 @@
}
} );
pluralRules = this.pluralRules[$.i18n().locale];
pluralRules = this.pluralRules[ $.i18n().locale ];
if ( !pluralRules ) {
// default fallback.
return ( count === 1 ) ? forms[0] : forms[1];
return ( count === 1 ) ? forms[ 0 ] : forms[ 1 ];
}
pluralFormIndex = this.getPluralForm( count, pluralRules );
pluralFormIndex = Math.min( pluralFormIndex, forms.length - 1 );
return forms[pluralFormIndex];
return forms[ pluralFormIndex ];
},
/**
* For the number, get the plural for index
*
* @param number
* @param pluralRules
* @return plural form index
* @param {integer} number
* @param {Object} pluralRules
* @return {integer} plural form index
*/
getPluralForm: function ( number, pluralRules ) {
var i,
@ -327,8 +350,8 @@
pluralFormIndex = 0;
for ( i = 0; i < pluralForms.length; i++ ) {
if ( pluralRules[pluralForms[i]] ) {
if ( pluralRuleParser( pluralRules[pluralForms[i]], number ) ) {
if ( pluralRules[ pluralForms[ i ] ] ) {
if ( pluralRuleParser( pluralRules[ pluralForms[ i ] ], number ) ) {
return pluralFormIndex;
}
@ -344,6 +367,7 @@
*
* @param {number} num Value to be converted
* @param {boolean} integer Convert the return value to an integer
* @return {string} The number converted into a String.
*/
convertNumber: function ( num, integer ) {
var tmp, item, i,
@ -360,28 +384,28 @@
// Check if the restore to Latin number flag is set:
if ( integer ) {
if ( parseFloat( num ) === num ) {
if ( parseFloat( num, 10 ) === num ) {
return num;
}
tmp = [];
for ( item in transformTable ) {
tmp[transformTable[item]] = item;
tmp[ transformTable[ item ] ] = item;
}
transformTable = tmp;
}
for ( i = 0; i < numberString.length; i++ ) {
if ( transformTable[numberString[i]] ) {
convertedNumber += transformTable[numberString[i]];
if ( transformTable[ numberString[ i ] ] ) {
convertedNumber += transformTable[ numberString[ i ] ];
} else {
convertedNumber += numberString[i];
convertedNumber += numberString[ i ];
}
}
return integer ? parseFloat( convertedNumber ) : convertedNumber;
return integer ? parseFloat( convertedNumber, 10 ) : convertedNumber;
},
/**
@ -390,11 +414,12 @@
* Override this method for languages that need special grammar rules
* applied dynamically.
*
* @param word {String}
* @param form {String}
* @return {String}
* @param {string} word
* @param {string} form
* @return {string}
*/
convertGrammar: function ( word, form ) { /*jshint unused: false */
// eslint-disable-next-line no-unused-vars
convertGrammar: function ( word, form ) {
return word;
},
@ -405,12 +430,12 @@
*
* These details may be overriden per language.
*
* @param gender
* string male, female, or anything else for neutral.
* @param forms
* array List of gender forms
* @param {string} gender
* male, female, or anything else for neutral.
* @param {Array} forms
* List of gender forms
*
* @return string
* @return {string}
*/
gender: function ( gender, forms ) {
if ( !forms || forms.length === 0 ) {
@ -418,25 +443,26 @@
}
while ( forms.length < 2 ) {
forms.push( forms[forms.length - 1] );
forms.push( forms[ forms.length - 1 ] );
}
if ( gender === 'male' ) {
return forms[0];
return forms[ 0 ];
}
if ( gender === 'female' ) {
return forms[1];
return forms[ 1 ];
}
return ( forms.length === 3 ) ? forms[2] : forms[0];
return ( forms.length === 3 ) ? forms[ 2 ] : forms[ 0 ];
},
/**
* Get the digit transform table for the given language
* See http://cldr.unicode.org/translation/numbering-systems
* @param language
* @returns {Array|boolean} List of digits in the passed language or false
*
* @param {string} language
* @return {Array|boolean} List of digits in the passed language or false
* representation, or boolean false if there is no information.
*/
digitTransformTable: function ( language ) {
@ -448,6 +474,7 @@
lo: '໐໑໒໓໔໕໖໗໘໙',
or: '୦୧୨୩୪୫୬୭୮୯',
kh: '០១២៣៤៥៦៧៨៩',
nqo: '߀߁߂߃߄߅߆߇߈߉', // Note that the digits go right to left
pa: '੦੧੨੩੪੫੬੭੮੯',
gu: '૦૧૨૩૪૫૬૭૮૯',
hi: '०१२३४५६७८९',
@ -458,15 +485,15 @@
bo: '༠༡༢༣༤༥༦༧༨༩' // FIXME use iso 639 codes
};
if ( !tables[language] ) {
if ( !tables[ language ] ) {
return false;
}
return tables[language].split( '' );
return tables[ language ].split( '' );
}
};
$.extend( $.i18n.languages, {
'default': language
default: language
} );
}( jQuery ) );

View File

@ -1,4 +1,4 @@
/**
/*!
* jQuery Internationalization library - Message Store
*
* Copyright (C) 2012 Santhosh Thottingal
@ -12,7 +12,7 @@
* @licence MIT License
*/
( function ( $, window, undefined ) {
( function ( $ ) {
'use strict';
var MessageStore = function () {
@ -20,6 +20,20 @@
this.sources = {};
};
function jsonMessageLoader( url ) {
var deferred = $.Deferred();
$.getJSON( url )
.done( deferred.resolve )
.fail( function ( jqxhr, settings, exception ) {
$.i18n.log( 'Error in loading messages from ' + url + ' Exception: ' + exception );
// Ignore 404 exception, because we are handling fallabacks explicitly
deferred.resolve();
} );
return deferred.promise();
}
/**
* See https://github.com/wikimedia/jquery.i18n/wiki/Specification#wiki-Message_File_Loading
*/
@ -41,25 +55,22 @@
* null/undefined/false,
* all cached messages for the i18n instance will get reset.
*
* @param {String|Object} source
* @param {String} locale Language tag
* @param {string|Object} source
* @param {string} locale Language tag
* @return {jQuery.Promise}
*/
load: function ( source, locale ) {
var key = null,
deferred = null,
deferreds = [],
messageStore = this;
if ( typeof source === 'string' ) {
// This is a URL to the messages file.
$.i18n.log( 'Loading messages from: ' + source );
deferred = jsonMessageLoader( source )
.done( function ( localization ) {
messageStore.set( locale, localization );
return jsonMessageLoader( source )
.then( function ( localization ) {
return messageStore.load( localization, locale );
} );
return deferred.promise();
}
if ( locale ) {
@ -74,7 +85,7 @@
locale = key;
// No {locale} given, assume data is a group of languages,
// call this function again for each language.
deferreds.push( messageStore.load( source[key], locale ) );
deferreds.push( messageStore.load( source[ key ], locale ) );
}
}
return $.when.apply( $, deferreds );
@ -85,41 +96,28 @@
/**
* Set messages to the given locale.
* If locale exists, add messages to the locale.
* @param locale
* @param messages
*
* @param {string} locale
* @param {Object} messages
*/
set: function ( locale, messages ) {
if ( !this.messages[locale] ) {
this.messages[locale] = messages;
if ( !this.messages[ locale ] ) {
this.messages[ locale ] = messages;
} else {
this.messages[locale] = $.extend( this.messages[locale], messages );
this.messages[ locale ] = $.extend( this.messages[ locale ], messages );
}
},
/**
*
* @param locale
* @param messageKey
* @returns {Boolean}
* @param {string} locale
* @param {string} messageKey
* @return {boolean}
*/
get: function ( locale, messageKey ) {
return this.messages[locale] && this.messages[locale][messageKey];
return this.messages[ locale ] && this.messages[ locale ][ messageKey ];
}
};
function jsonMessageLoader( url ) {
var deferred = $.Deferred();
$.getJSON( url )
.done( deferred.resolve )
.fail( function ( jqxhr, settings, exception ) {
$.i18n.log( 'Error in loading messages from ' + url + ' Exception: ' + exception );
// Ignore 404 exception, because we are handling fallabacks explicitly
deferred.resolve();
} );
return deferred.promise();
}
$.extend( $.i18n.messageStore, new MessageStore() );
}( jQuery, window ) );
}( jQuery ) );

Some files were not shown because too many files have changed in this diff Show More