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 #!/bin/bash
# detect CI # detect CI
if [ "$SYSTEM_COLLECTIONID" != "" ]; then if [ "$HOME" != "" ]; then
# Azure Pipelines
echo "Azure detected"
CI_NAME="$(echo "$AGENT_OS" | tr '[:upper:]' '[:lower:]')"
CI_BUILD_DIR="$BUILD_SOURCESDIRECTORY"
elif [ "$HOME" != "" ]; then
# GitHub Actions # GitHub Actions
echo "Github Actions detected"
CI_NAME="$(uname -s | tr '[:upper:]' '[:lower:]')" CI_NAME="$(uname -s | tr '[:upper:]' '[:lower:]')"
CI_BUILD_DIR="$GITHUB_WORKSPACE" CI_BUILD_DIR="$GITHUB_WORKSPACE"
else else

View File

@ -1,11 +1,7 @@
#!/bin/bash #!/bin/bash
# detect CI # detect CI
if [ "$SYSTEM_COLLECTIONID" != "" ]; then if [ "$HOME" != "" ]; then
# Azure Pipelines
CI_NAME="$(echo "$AGENT_OS" | tr '[:upper:]' '[:lower:]')"
CI_BUILD_DIR="$BUILD_SOURCESDIRECTORY"
elif [ "$HOME" != "" ]; then
# GitHub Actions # GitHub Actions
CI_NAME="$(uname -s | tr '[:upper:]' '[:lower:]')" CI_NAME="$(uname -s | tr '[:upper:]' '[:lower:]')"
CI_BUILD_DIR="$GITHUB_WORKSPACE" CI_BUILD_DIR="$GITHUB_WORKSPACE"
@ -19,12 +15,15 @@ function installAndUpgrade()
arr=("$@") arr=("$@")
for i in "${arr[@]}"; for i in "${arr[@]}";
do do
list_output=`brew list | grep $i` list_output=`brew list --formula | grep $i`
outdated_output=`brew outdated | grep $i` outdated_output=`brew outdated | grep $i`
if [[ ! -z "$list_output" ]]; then if [[ ! -z "$list_output" ]]; then
if [[ ! -z "$outdated_output" ]]; then if [[ ! -z "$outdated_output" ]]; then
echo "Outdated package: ${outdated_output}"
brew unlink ${outdated_output}
brew upgrade $i brew upgrade $i
brew link --overwrite $i
fi fi
else else
brew install $i 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: PullRequest:
opened: | opened: |
Hello @$AUTHOR :wave: Hello @$AUTHOR :wave:
I'm your friendly neighborhood bot and would like to say thank you for I'm the Hyperion Project Bot and I want to thank you for
submitting a pull request to Hyperion! contributing to Hyperion with your pull requests!
So that you and other users can test your changes more quickly, To help you and other users test your pull requests faster,
you can find your workflow artifacts [here](https://github.com/$REPO_FULL_NAME/actions/runs/$RUN_ID). 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, Best regards,
Hyperion-Project Hyperion Project
synchronize: | 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 name: Clean artifacts
# Run cleanup workflow at the end of every day
on: on:
schedule: schedule:
- cron: '0 0 * * *' - 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: with:
submodules: true submodules: true
# Append PR number to version # Append PR number to .version
- name: Append PR number to version - name: Append PR number to version
shell: bash shell: bash
run: | run: |
tr -d '\n' < version > temp && mv temp version tr -d '\n' < .version > temp && mv temp .version
echo -n -PR#${{ github.event.pull_request.number }} >> version echo -n "+PR${{ github.event.pull_request.number }}" >> .version
# Build packages # Build packages
- name: Build packages - name: Build packages
@ -63,7 +63,7 @@ jobs:
# Upload artifacts # Upload artifacts
- name: Upload artifacts - name: Upload artifacts
uses: actions/upload-artifact@v1 uses: actions/upload-artifact@v2
with: with:
name: ${{ matrix.dockerImage }} name: ${{ matrix.dockerImage }}
path: ${{ matrix.dockerImage }} path: ${{ matrix.dockerImage }}
@ -82,12 +82,12 @@ jobs:
with: with:
submodules: true submodules: true
# Append PR number to version # Append PR number to .version
- name: Append PR number to version - name: Append PR number to version
shell: bash shell: bash
run: | run: |
tr -d '\n' < version > temp && mv temp version tr -d '\n' < .version > temp && mv temp .version
echo -n "-PR#${{ github.event.pull_request.number }}" >> version echo -n "+PR${{ github.event.pull_request.number }}" >> .version
# Install dependencies # Install dependencies
- name: Install dependencies - name: Install dependencies
@ -106,11 +106,11 @@ jobs:
shell: bash shell: bash
run: | run: |
mkdir -p macOS mkdir -p macOS
mv build/*.tar.gz macOS mv build/*.dmg macOS
# Upload artifacts # Upload artifacts
- name: Upload artifacts - name: Upload artifacts
uses: actions/upload-artifact@v1 uses: actions/upload-artifact@v2
with: with:
name: macOS name: macOS
path: macOS path: macOS
@ -131,12 +131,12 @@ jobs:
with: with:
submodules: true submodules: true
# Append PR number to version # Append PR number to .version
- name: Append PR number to version - name: Append PR number to version
shell: bash shell: bash
run: | run: |
tr -d '\n' < version > temp && mv temp version tr -d '\n' < .version > temp && mv temp .version
echo -n "-PR#${{ github.event.pull_request.number }}" >> version echo -n "+PR${{ github.event.pull_request.number }}" >> .version
- name: Cache Qt - name: Cache Qt
uses: actions/cache@v2 uses: actions/cache@v2
@ -170,6 +170,11 @@ jobs:
run: | run: |
choco install --no-progress python nsis openssl directx-sdk -y 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 - name: Set up x64 build architecture environment
shell: cmd shell: cmd
run: call "${{env.VCINSTALLDIR}}\Auxiliary\Build\vcvars64.bat" run: call "${{env.VCINSTALLDIR}}\Auxiliary\Build\vcvars64.bat"
@ -190,34 +195,15 @@ jobs:
# Upload artifacts # Upload artifacts
- name: Upload artifacts - name: Upload artifacts
uses: actions/upload-artifact@v1 uses: actions/upload-artifact@v2
with: with:
name: windows name: windows
path: windows path: windows
###################### ##########################
#### Documentation ### ###### APT workflow ######
###################### ##########################
docs: apt_build:
name: Documentation name: APT Build
runs-on: ubuntu-latest uses: hyperion-project/hyperion.ng/.github/workflows/apt.yml@master
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

View File

@ -1,17 +1,16 @@
name: Hyperion CI Build name: Hyperion CI Build
on: on:
push: push:
branches-ignore: branches:
- 'gh-pages' - '**'
- 'docker-ci'
tags: tags:
- '*' - '*'
jobs: jobs:
###################### ###################
###### Linux ######### ###### Linux ######
###################### ###################
Linux: Linux:
name: ${{ matrix.dockerName }} name: ${{ matrix.dockerName }}
@ -38,7 +37,7 @@ jobs:
with: with:
submodules: true submodules: true
# build process # Build process
- name: Build packages - name: Build packages
env: env:
DOCKER_IMAGE: ${{ matrix.dockerImage }} DOCKER_IMAGE: ${{ matrix.dockerImage }}
@ -48,16 +47,16 @@ jobs:
shell: bash shell: bash
run: ./.ci/ci_build.sh run: ./.ci/ci_build.sh
# upload artifacts (only on tagged commit) # Upload artifacts (only on tagged commit)
- name: Upload artifacts - name: Upload artifacts
if: startsWith(github.event.ref, 'refs/tags') if: startsWith(github.event.ref, 'refs/tags')
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v2
with: with:
path: deploy/Hyperion-* path: deploy/Hyperion-*
###################### ###################
###### macOS ######### ###### macOS ######
###################### ###################
macOS: macOS:
name: macOS name: macOS
@ -67,28 +66,28 @@ jobs:
with: with:
submodules: true submodules: true
# install dependencies # Install dependencies
- name: Install dependencies - name: Install dependencies
shell: bash shell: bash
run: ./.ci/ci_install.sh run: ./.ci/ci_install.sh
# build process # Build process
- name: Build packages - name: Build packages
env: env:
PLATFORM: osx PLATFORM: osx
shell: bash shell: bash
run: ./.ci/ci_build.sh run: ./.ci/ci_build.sh
# upload artifacts (only on tagged commit) # Upload artifacts (only on tagged commit)
- name: Upload artifacts - name: Upload artifacts
if: startsWith(github.event.ref, 'refs/tags') if: startsWith(github.event.ref, 'refs/tags')
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v2
with: with:
path: build/Hyperion-* path: build/Hyperion-*
###################### #####################
###### Windows ####### ###### Windows ######
###################### #####################
windows: windows:
name: Windows name: Windows
@ -134,6 +133,11 @@ jobs:
run: | run: |
choco install --no-progress python nsis openssl directx-sdk -y 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 - name: Set up x64 build architecture environment
shell: cmd shell: cmd
run: call "${{env.VCINSTALLDIR}}\Auxiliary\Build\vcvars64.bat" run: call "${{env.VCINSTALLDIR}}\Auxiliary\Build\vcvars64.bat"
@ -145,74 +149,32 @@ jobs:
shell: bash shell: bash
run: ./.ci/ci_build.sh run: ./.ci/ci_build.sh
# upload artifacts (only on tagged commit) # Upload artifacts (only on tagged commit)
- name: Upload artifacts - name: Upload artifacts
if: startsWith(github.event.ref, 'refs/tags') if: startsWith(github.event.ref, 'refs/tags')
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v2
with: with:
path: build/Hyperion-* path: build/Hyperion-*
retention-days: 1
###################### #####################################
#### Documentation ### ###### Publish GitHub Releases ######
###################### #####################################
Docs: github_publish:
name: Documentation name: Publish GitHub Releases
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
if: startsWith(github.event.ref, 'refs/tags') if: startsWith(github.event.ref, 'refs/tags')
needs: [Linux, macOS, windows, Docs] needs: [Linux, macOS, windows]
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v2 uses: actions/checkout@v2
# generate environment variables # Generate environment variables
- name: Generate environment variables from version and tag - name: Generate environment variables from .version and tag
run: | run: |
echo "TAG=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV echo "TAG=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV
echo "VERSION=$(tr -d '\n' < version)" >> $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
# Download artifacts from previous build process # Download artifacts from previous build process
- name: Download artifacts - name: Download artifacts
@ -220,7 +182,7 @@ jobs:
with: with:
path: artifacts path: artifacts
# create draft release and upload artifacts # Create draft release and upload artifacts
- name: Create draft release - name: Create draft release
uses: softprops/action-gh-release@v1 uses: softprops/action-gh-release@v1
with: with:
@ -228,6 +190,14 @@ jobs:
tag_name: ${{ env.TAG }} tag_name: ${{ env.TAG }}
files: "artifacts/**" files: "artifacts/**"
draft: true draft: true
prerelease: ${{ env.preRelease }}
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 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: jobs:
hyperbian: hyperbian:
name: Let HyperBian create
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
# Dispatch event to build new HyperBian image # Dispatch event to build new HyperBian image
- name: Dispatch HyperBian build - name: Dispatch HyperBian build
uses: peter-evans/repository-dispatch@v1 uses: peter-evans/repository-dispatch@v1.1.3
if: ${{ github.repository_owner == 'hyperion-project'}} if: ${{ github.repository_owner == 'hyperion-project'}}
with: with:
repository: hyperion-project/HyperBian repository: hyperion-project/HyperBian

8
.gitignore vendored
View File

@ -27,5 +27,11 @@ libsrc/flatbufserver/hyperion_request_generated.h
*.kdev* *.kdev*
# Visual Studio 2015/2017/2019 cache/options directory # Visual Studio 2015/2017/2019 cache/options directory
.vs/ # Ignore
.vs/*
CMakeSettings.json 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", "name": "(Windows) hyperiond",
"type": "cppvsdbg", "type": "cppvsdbg",
"request": "launch", "request": "launch",
"program": "${workspaceFolder}/build/bin/Debug/hyperiond.exe", "program": "${command:cmake.launchTargetDirectory}/hyperiond",
"args": ["-d"], "args": ["-d"],
"stopAtEntry": false, "stopAtEntry": false,
"cwd": "${workspaceFolder}", "cwd": "${workspaceFolder}",
"environment": [], "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 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.** 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 Gijgo
===== =====
@ -739,11 +797,40 @@ HIDAPI
Copyright 2009, Alan Ott, Signal 11 Software. Copyright 2009, Alan Ott, Signal 11 Software.
All Rights Reserved. All Rights Reserved.
This software may be used by anyone for any reason so This software may be used by anyone for any reason so
long as the copyright notice in the source files long as the copyright notice in the source files
remains intact. 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 JSON-Editor
=========== ===========
@ -856,8 +943,8 @@ THE SOFTWARE.
## Markdown ## Markdown
Copyright © 2004, John Gruber Copyright © 2004, John Gruber
http://daringfireball.net/ http://daringfireball.net/
All rights reserved. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 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) 2012-2013 Matthias Bolte <matthias@tinkerforge.com>
Copyright (C) 2011 Olaf Lüke <olaf@tinkerforge.com> Copyright (C) 2011 Olaf Lüke <olaf@tinkerforge.com>
Redistribution and use in source and binary forms of this file, Redistribution and use in source and binary forms of this file,
with or without modification, are permitted. with or without modification, are permitted.
@ -1415,7 +1502,7 @@ Pulse-Eight Licensing <license@pulse-eight.com>
http://www.pulse-eight.net/ http://www.pulse-eight.net/
GNU GENERAL PUBLIC LICENSE GNU GENERAL PUBLIC LICENSE
Version 2, June 1991 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. POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS 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/), 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). 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 ### Breaking
@ -16,6 +16,187 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Removed ### 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 ## [2.0.0-alpha.9](https://github.com/hyperion-project/hyperion.ng/releases/tag/2.0.0-alpha.9) - 2020-11-18
### Added ### Added
- Grabber: DirectX9 support (#1039) - 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) - AtmoOrb Fix (#988)
- Return TAN to API requests whenever possible (#1002) - 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 ## [2.0.0-alpha.7](https://github.com/hyperion-project/hyperion.ng/releases/tag/2.0.0-alpha.7) - 2020-07-23
### Added ### Added
- [HyperBian](https://github.com/hyperion-project/HyperBian/releases) - A Raspberry Pi OS Lite image with Hyperion pre installed. (#832) - [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 ## [2.0.0-alpha.1](https://github.com/hyperion-project/hyperion.ng/releases/tag/2.0.0-alpha.1) - 2020-02-16
### Added ### Added
- Initial Release - Initial Release

View File

@ -4,10 +4,15 @@ message( STATUS "CMake Version: ${CMAKE_VERSION}" )
PROJECT(hyperion) 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) include (${CMAKE_CURRENT_SOURCE_DIR}/cmake/version.cmake)
file (STRINGS "version" HYPERION_VERSION) file (STRINGS ".version" HYPERION_VERSION)
SetVersionNumber(HYPERION ${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. # Instruct CMake to run moc automatically when needed.
set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOMOC ON)
@ -25,23 +30,27 @@ if ( CCACHE_FOUND )
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache) set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
endif(CCACHE_FOUND) endif(CCACHE_FOUND)
if (NOT CMAKE_VERSION VERSION_LESS "3.12") if ("${CMAKE_VERSION}" VERSION_LESS "3.12.0")
find_package(Python3 COMPONENTS Interpreter Development REQUIRED) set(Python_ADDITIONAL_VERSIONS 3.5)
if(Python_FOUND) find_package(PythonInterp 3.5 REQUIRED)
else()
find_package(Python3 3.5 COMPONENTS Interpreter Development REQUIRED)
if(Python3_FOUND)
set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE}) set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
endif() endif()
else()
set(Python_ADDITIONAL_VERSIONS 3.5)
find_package( PythonInterp 3.5 REQUIRED )
endif() endif()
# Set build variables # Set build variables
SET ( DEFAULT_AMLOGIC OFF ) SET ( DEFAULT_AMLOGIC OFF )
SET ( DEFAULT_BOBLIGHT ON )
SET ( DEFAULT_DISPMANX OFF ) SET ( DEFAULT_DISPMANX OFF )
SET ( DEFAULT_DX OFF )
SET ( DEFAULT_MF OFF )
SET ( DEFAULT_OSX OFF ) SET ( DEFAULT_OSX OFF )
SET ( DEFAULT_QT ON ) SET ( DEFAULT_QT ON )
SET ( DEFAULT_X11 OFF ) SET ( DEFAULT_X11 OFF )
SET ( DEFAULT_XCB OFF ) SET ( DEFAULT_XCB OFF )
SET ( DEFAULT_V4L2 OFF )
SET ( DEFAULT_WS281XPWM OFF ) SET ( DEFAULT_WS281XPWM OFF )
SET ( DEFAULT_AVAHI ON ) SET ( DEFAULT_AVAHI ON )
SET ( DEFAULT_USE_SHARED_AVAHI_LIBS 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_USE_SYSTEM_MBEDTLS_LIBS OFF )
SET ( DEFAULT_TESTS OFF ) SET ( DEFAULT_TESTS OFF )
SET ( DEFAULT_EXPERIMENTAL OFF ) SET ( DEFAULT_EXPERIMENTAL OFF )
SET ( DEFAULT_CEC OFF )
SET ( DEFAULT_DEPLOY_DEPENDENCIES ON )
IF ( ${CMAKE_SYSTEM} MATCHES "Linux" ) IF ( ${CMAKE_SYSTEM} MATCHES "Linux" )
SET ( DEFAULT_V4L2 ON ) SET ( DEFAULT_V4L2 ON )
@ -60,6 +71,7 @@ IF ( ${CMAKE_SYSTEM} MATCHES "Linux" )
SET ( DEFAULT_CEC ON ) SET ( DEFAULT_CEC ON )
ELSEIF ( WIN32 ) ELSEIF ( WIN32 )
SET ( DEFAULT_DX ON ) SET ( DEFAULT_DX ON )
SET ( DEFAULT_MF ON )
ELSE() ELSE()
SET ( DEFAULT_V4L2 OFF ) SET ( DEFAULT_V4L2 OFF )
SET ( DEFAULT_FB OFF ) SET ( DEFAULT_FB OFF )
@ -109,6 +121,8 @@ MACRO(FIRSTSUBDIR result curdir)
ENDMACRO() ENDMACRO()
if ( "${PLATFORM}" MATCHES "osx" ) if ( "${PLATFORM}" MATCHES "osx" )
# specify the min version of the target platform
SET ( CMAKE_OSX_DEPLOYMENT_TARGET "10.15" )
# add specific prefix paths # add specific prefix paths
FIRSTSUBDIR(SUBDIRQT "/usr/local/Cellar/qt") FIRSTSUBDIR(SUBDIRQT "/usr/local/Cellar/qt")
FIRSTSUBDIR(SUBDIRPY "/usr/local/opt/python3/Frameworks/Python.framework/Versions") FIRSTSUBDIR(SUBDIRPY "/usr/local/opt/python3/Frameworks/Python.framework/Versions")
@ -120,9 +134,14 @@ elseif ( "${PLATFORM}" MATCHES "rpi" )
SET ( DEFAULT_DISPMANX ON ) SET ( DEFAULT_DISPMANX ON )
SET ( DEFAULT_WS281XPWM ON ) SET ( DEFAULT_WS281XPWM ON )
elseif ( "${PLATFORM}" STREQUAL "amlogic" ) 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" ) elseif ( "${PLATFORM}" STREQUAL "amlogic64" )
SET ( DEFAULT_AMLOGIC ON ) SET ( DEFAULT_AMLOGIC ON )
elseif ( "${PLATFORM}" MATCHES "x11" ) elseif ( "${PLATFORM}" MATCHES "x11" )
SET ( DEFAULT_X11 ON ) SET ( DEFAULT_X11 ON )
SET ( DEFAULT_XCB ON ) SET ( DEFAULT_XCB ON )
@ -146,20 +165,25 @@ STRING( REPLACE "-DEV" "" PLATFORM_DEFINE "${PLATFORM_DEFINE}" )
ADD_DEFINITIONS( ${PLATFORM_DEFINE} ) ADD_DEFINITIONS( ${PLATFORM_DEFINE} )
# set the build options # 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} ) option(ENABLE_AMLOGIC "Enable the AMLOGIC video grabber" ${DEFAULT_AMLOGIC} )
message(STATUS "ENABLE_AMLOGIC = ${ENABLE_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) if (ENABLE_AMLOGIC)
SET(ENABLE_FB ON) SET(ENABLE_FB ON)
else() else()
option(ENABLE_FB "Enable the framebuffer grabber" ${DEFAULT_FB} ) option(ENABLE_FB "Enable the framebuffer grabber" ${DEFAULT_FB} )
endif() endif()
message(STATUS "ENABLE_FB = ${ENABLE_FB}") 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}") message(STATUS "ENABLE_OSX = ${ENABLE_OSX}")
option(ENABLE_SPIDEV "Enable the SPIDEV device" ${DEFAULT_SPIDEV} ) 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}) option(ENABLE_V4L2 "Enable the V4L2 grabber" ${DEFAULT_V4L2})
message(STATUS "ENABLE_V4L2 = ${ENABLE_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} ) option(ENABLE_WS281XPWM "Enable the WS281x-PWM device" ${DEFAULT_WS281XPWM} )
message(STATUS "ENABLE_WS281XPWM = ${ENABLE_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}) option(ENABLE_XCB "Enable the XCB grabber" ${DEFAULT_XCB})
message(STATUS "ENABLE_XCB = ${ENABLE_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}") message(STATUS "ENABLE_QT = ${ENABLE_QT}")
option(ENABLE_DX "Enable the DirectX grabber" ${DEFAULT_DX}) 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}) option(ENABLE_EXPERIMENTAL "Compile experimental features" ${DEFAULT_EXPERIMENTAL})
message(STATUS "ENABLE_EXPERIMENTAL = ${ENABLE_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_BIN_DIR ${CMAKE_BINARY_DIR}/flatbuf )
SET ( FLATBUFFERS_INSTALL_LIB_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 # check all json files
FILE ( GLOB_RECURSE HYPERION_SCHEMAS RELATIVE ${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/libsrc/*schema*.json ) FILE ( GLOB_RECURSE HYPERION_SCHEMAS RELATIVE ${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/libsrc/*schema*.json )
SET( JSON_FILES SET( JSON_FILES ${CMAKE_BINARY_DIR}/config/hyperion.config.json.default ${HYPERION_SCHEMAS})
config/hyperion.config.json.default
${HYPERION_SCHEMAS}
)
EXECUTE_PROCESS ( EXECUTE_PROCESS (
COMMAND ${PYTHON_EXECUTABLE} test/jsonchecks/checkjson.py ${JSON_FILES} 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') # 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) IF (NOT WIN32)
EXECUTE_PROCESS ( 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} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
RESULT_VARIABLE CHECK_CONFIG_FAILED 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 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 # 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 # In MSVC19 add into CMakeSettings.json
# #
# "environments": [ # "environments": [
@ -333,14 +360,14 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
message(STATUS "Add ${qt_module_path} to CMAKE_MODULE_PATH") message(STATUS "Add ${qt_module_path} to CMAKE_MODULE_PATH")
SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${qt_module_path}") SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${qt_module_path}")
#message(STATUS "CMAKE_PREFIX_PATH: ${CMAKE_PREFIX_PATH}") #message(STATUS "CMAKE_PREFIX_PATH: ${CMAKE_PREFIX_PATH}")
#message(STATUS "CMAKE_MODULE_PATH: ${CMAKE_MODULE_PATH}") #message(STATUS "CMAKE_MODULE_PATH: ${CMAKE_MODULE_PATH}")
# Search for DirectX9 # Search for DirectX9
if (ENABLE_DX) if (ENABLE_DX)
find_package(DirectX9 REQUIRED) find_package(DirectX9 REQUIRED)
endif() endif(ENABLE_DX)
endif() endif()
@ -349,17 +376,19 @@ if (NOT WIN32)
include (${CMAKE_CURRENT_SOURCE_DIR}/cmake/LDGold.cmake) include (${CMAKE_CURRENT_SOURCE_DIR}/cmake/LDGold.cmake)
endif() endif()
# Don't create new dynamic tags (RUNPATH) if (ENABLE_DEPLOY_DEPENDENCIES)
if (NOT CMAKE_CXX_COMPILER_ID MATCHES "MSVC") # Don't create new dynamic tags (RUNPATH)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--disable-new-dtags") if (NOT CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
endif() 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 # setup -rpath to search for shared libs in BINARY/../lib folder
if (UNIX AND NOT APPLE) if (UNIX AND NOT APPLE)
SET(CMAKE_SKIP_BUILD_RPATH FALSE) SET(CMAKE_SKIP_BUILD_RPATH FALSE)
SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:$ORIGIN/../lib") SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:$ORIGIN/../lib")
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
endif ()
endif () endif ()
# add QT5 dependency # add QT5 dependency
@ -393,31 +422,6 @@ find_package(libusb-1.0 REQUIRED)
find_package(Threads REQUIRED) find_package(Threads REQUIRED)
add_definitions(${QT_DEFINITIONS}) 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) if(APPLE)
set(CMAKE_EXE_LINKER_FLAGS "-framework CoreGraphics") set(CMAKE_EXE_LINKER_FLAGS "-framework CoreGraphics")
endif() 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 // Generated config file
// Define to enable the dispmanx grabber // Define to enable the DispmanX grabber
#cmakedefine ENABLE_DISPMANX #cmakedefine ENABLE_DISPMANX
// Define to enable the v4l2 grabber // Define to enable the V4L2 grabber
#cmakedefine ENABLE_V4L2 #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 #cmakedefine ENABLE_FB
// Define to enable the amlogic grabber // Define to enable the AMLogic grabber
#cmakedefine ENABLE_AMLOGIC #cmakedefine ENABLE_AMLOGIC
// Define to enable the osx grabber // Define to enable the OSX grabber
#cmakedefine ENABLE_OSX #cmakedefine ENABLE_OSX
// Define to enable the x11 grabber // Define to enable the X11 grabber
#cmakedefine ENABLE_X11 #cmakedefine ENABLE_X11
// Define to enable the xcb grabber // Define to enable the XCB grabber
#cmakedefine ENABLE_XCB #cmakedefine ENABLE_XCB
// Define to enable the qt grabber // Define to enable the Qt grabber
#cmakedefine ENABLE_QT #cmakedefine ENABLE_QT
// Define to enable the DirectX grabber // Define to enable the DirectX grabber
#cmakedefine ENABLE_DX #cmakedefine ENABLE_DX
// Define to enable the spi-device // Define to enable the SPI-Device
#cmakedefine ENABLE_SPIDEV #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 #cmakedefine ENABLE_WS281XPWM
// Define to enable the tinkerforge device // Define to enable the Tinkerforge device
#cmakedefine ENABLE_TINKERFORGE #cmakedefine ENABLE_TINKERFORGE
// Define to enable avahi // Define to enable AVAHI
#cmakedefine ENABLE_AVAHI #cmakedefine ENABLE_AVAHI
// Define to enable cec // Define to enable CEC
#cmakedefine 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 #cmakedefine ENABLE_USB_HID
// Define to enable profiler for development purpose // Define to enable profiler for development purpose
@ -51,6 +57,9 @@
// Define to enable experimental features // Define to enable experimental features
#cmakedefine ENABLE_EXPERIMENTAL #cmakedefine ENABLE_EXPERIMENTAL
// Define to enable deploy dependencies to packages
#cmakedefine ENABLE_DEPLOY_DEPENDENCIES
// the hyperion build id string // the hyperion build id string
#define HYPERION_BUILD_ID "${HYPERION_BUILD_ID}" #define HYPERION_BUILD_ID "${HYPERION_BUILD_ID}"
#define HYPERION_GIT_REMOTE "${HYPERION_GIT_REMOTE}" #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 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 Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal 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) [![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) [![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/) [![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/) [![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 ## About Hyperion
@ -18,7 +19,7 @@
* A command line utility for testing and integration in automated environment * 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)). * 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 * 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 * A multi language web interface to configure and remote control hyperion
If you need further support please open a topic at the forum!<br> 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> 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) [![Join Translation](https://img.shields.io/badge/POEditor-translate-green.svg)](https://poeditor.com/join/project/Y4F6vHRFjA)
## Requirements ## Supported Platforms
Debian 9, Ubuntu 16.04 or higher.
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 ## Documentation
Covers these topics (WorkInProgress) Covers these topics (WorkInProgress)
@ -50,7 +50,7 @@ Covers these topics (WorkInProgress)
Released and unreleased changes at [Changelog.md](CHANGELOG.md) Released and unreleased changes at [Changelog.md](CHANGELOG.md)
## Building ## Building
See [CompileHowto](CompileHowto.md) and [CrossCompileHowto](CrossCompileHowto.md). See [CompileHowto](doc/development/CompileHowto.md).
## Download ## Download
Alpha releases available from the [Hyperion release page](https://github.com/hyperion-project/hyperion.ng/releases) 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; int ledCount = MAX_LEDS;
if (ANALOG_MODE == ANALOG_MODE_LAST_LED) { if (ANALOG_OUTPUT_ENABLED == true && ANALOG_MODE == ANALOG_MODE_LAST_LED) {
ledCount--; ledCount--;
} }
@ -170,7 +170,7 @@ void setup() {
showColor(CRGB(0, 0, 0)); showColor(CRGB(0, 0, 0));
Serial.print("Ada\n"); // Send "Magic Word" string to host 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; boolean transmissionSuccess;
unsigned long sum_r, sum_g, sum_b; unsigned long sum_r, sum_g, sum_b;
@ -254,4 +254,3 @@ void setup() {
void loop() { void loop() {
// Not used. See note in setup() function. // Not used. See note in setup() function.
} }

View File

@ -138,7 +138,7 @@ to this service over the network.
sys.stderr.write( sys.stderr.write(
'--- UDP to Serial redirector\n' '--- UDP to Serial redirector\n'
'--- listening on udp port {a.localport}\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)) '--- type Ctrl-C / BREAK to quit\n'.format(p=ser, a=args))
try: try:
@ -153,7 +153,7 @@ to this service over the network.
srv = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) srv = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
srv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 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: try:
intentional_exit = False intentional_exit = False
@ -165,14 +165,14 @@ to this service over the network.
if not data: if not data:
break break
if args.ada: if args.ada:
numleds = len(data)/3 numleds = len(data)/3
hi = (numleds-1)/256 hi = (numleds-1)/256
lo = (numleds-1)&255 lo = (numleds-1)&255
sum = hi^lo^0x55 sum = hi^lo^0x55
ser.write ("Ada"+ chr(hi) + chr(lo) + chr(sum)) 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: except socket.error as msg:
if args.develop: if args.develop:
raise 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"> <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 <h3 class="page-header">
Hyperion</span></h3> <i class="fa fa-info-circle fa-fw"></i><span data-i18n="main_menu_about_token">
<div class="row"> About
<div class="col-lg-12"> Hyperion
<div id="about_cont"></div> </span>
</h3>
<div class="row">
<div class="col-lg-12">
<div id="about_cont"></div>
</div> </div>
<div id="danger_act" class="col-lg-6" style="display:none;padding-top:20px"> <div id="danger_act" class="col-lg-6" style="display:none;padding-top:20px">
<h4>You found a hidden service menu!</h4> <h4>You found a hidden service menu!</h4>
<button id="reset_cache" class="btn btn-danger">Reset Browser Cache</button> <button id="reset_cache" class="btn btn-danger">Reset Browser Cache</button>
<button id="hyp_restart" class="btn btn-danger">Force Hyperion Restart</button> <button id="hyp_restart" class="btn btn-danger">Force Hyperion Restart</button>
</div> </div>
</div> </div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
performTranslation(); performTranslation();
var si = sysInfo.hyperion; 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 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 libh = "";
var lang = []; var lang = [];
var dcount = 0; var dcount = 0;
for (var i = 0; i < availLang.length; i++) for (var i = 0; i < availLang.length; i++)
lang.push($.i18n('general_speech_' + availLang[i])); lang.push($.i18n('general_speech_' + availLang[i]));
lang.sort(); lang.sort();
for (key in libs) for (key in libs)
libh += '<a href="' + libs[key] + '" target="_blank">' + key + '</a>, '; libh += '<a href="' + libs[key] + '" target="_blank">' + key + '</a>, ';
libh += "<br/>" + $.i18n("about_credits"); libh += "<br/>" + $.i18n("about_credits");
lang = lang.toString().replace(/,/g, ", "); lang = lang.toString().replace(/,/g, ", ");
// Github Issue bugreport infos var info = '<pre>' + getSystemInfo() + '</pre>';
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';
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'; createTable("", "atb", "about_cont");
info += '- Distribution: ' + sys.prettyName + '\n'; for (var i = 0; i < fc.length; i++)
info += '- Architecture: ' + sys.architecture + '\n'; $('.atb').append(createTableRow([fc[i], sc[i]], "atb", false));
if (sys.cpuModelName) $('#danger_trig').off().on('click', function () {
info += '- CPU Model: ' + sys.cpuModelName + '\n'; dcount++;
if (sys.cpuModelType) if (dcount > 2)
info += '- CPU Type: ' + sys.cpuModelType + '\n'; $('#danger_act').toggle(true);
if (sys.cpuRevision) });
info += '- CPU Revision: ' + sys.cpuRevision + '\n';
if (sys.cpuHardware)
info += '- CPU Hardware: ' + sys.cpuHardware + '\n';
info += '- Kernel: ' + sys.kernelType + ' (' + sys.kernelVersion + ' (WS: ' + sys.wordSize + '))\n'; $('#reset_cache').off().on('click', function () {
info += '- Qt Version: ' + sys.qtVersion + '\n'; localStorage.clear();
info += '- Python Version: ' + sys.pyVersion + '\n'; });
info += '- Browser: ' + navigator.userAgent + ' </pre>';
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")]; $('#hyp_restart').off().on('click', function () {
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>']; initRestart();
});
createTable("", "atb", "about_cont"); $.ajax({
for (var i = 0; i < fc.length; i++) url:'3RD_PARTY_LICENSES',
$('.atb').append(createTableRow([fc[i], sc[i]], "atb", false)); 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 () { removeOverlay();
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();
</script> </script>

View File

@ -2,11 +2,23 @@
<div class="container-fluid"> <div class="container-fluid">
<div class="row"> <div class="row">
<div class="col-lg-12"> <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> <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>
<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> </div>
</div> </div>
<script src="/js/content_colors.js"></script> <script src="/js/content_colors.js"></script>

View File

@ -2,6 +2,19 @@
<div class="row"> <div class="row">
<div class="col-lg-12"> <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> <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 id="conf_cont"></div>
</div> </div>
</div> </div>

View File

@ -6,7 +6,7 @@
<div class="row"> <div class="row">
<div class="col-lg-6" id="inst_desc"> <div class="col-lg-6" id="inst_desc">
<div class="panel panel-default"> <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 class="panel-body">
<div id="inst_desc_cont"></div> <div id="inst_desc_cont"></div>
<div id="itable"></div> <div id="itable"></div>

View File

@ -2,7 +2,7 @@
<div class="container-fluid"> <div class="container-fluid">
<div class="row"> <div class="row">
<div class="col-lg-12"> <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 id="conf_cont"></div>
</div> </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"> <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> <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>
<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="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"> <ul id="leds_cfg_nav" class="nav nav-tabs">
<div class="row"> <li class="active"><a data-toggle="tab" href="#menu_controller" data-i18n="conf_leds_nav_label_ledcontroller">LED Controller</a></li>
<div class="col-lg-12" id="leddevice_intro"></div> <li><a data-toggle="tab" href="#menu_gencfg" data-i18n="conf_leds_nav_label_ledlayout">LED Layout</a></li>
<div class="col-lg-6"> </ul>
<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>
<div class="panel-body"> <div class="tab-content">
<div id="btn_wiz_holder"></div> <div id="menu_controller" class="tab-pane fade in active" style="padding-top:10px">
<div id="ledDeviceOptions"> <div id='editor_container'></div> </div> <div class="row">
</div> <div class="col-lg-12" id="leddevice_intro"></div>
<div class="panel-footer" style="text-align:right"> <div class="col-lg-6">
<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 class="panel panel-default">
</div> <div class="panel-heading form-group">
</div> <label for="leddevices" class="panel-title" data-i18n="conf_leds_contr_label_contrtype">Controller type:</label>
</div> <select id="leddevices" class="form-control" style="color:black;width:auto;margin-left:10px;display:inline-block"></select>
</div> </div>
</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 id="menu_gencfg" class="tab-pane fade" style="padding-top:10px">
<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> <div class="row">
<div class="panel-footer" style="text-align:right;"> <div class="col-lg-12" id="layout_intro"></div>
<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 class="col-lg-6 col-md-12">
</div> <div class="panel-group" id="accordion">
</div> <div class="panel panel-primary">
</div> <div class="panel-heading headcollapse" id="classic_panel" data-toggle="collapse" data-parent="#accordion" data-target="#collapse1">
<div class="panel panel-primary"> <h4 class="panel-title">
<div class="panel-heading headcollapse" data-toggle="collapse" data-parent="#accordion" data-target="#collapse2"> <a><i class="fa fa-television fa-fw"></i><span data-i18n="conf_leds_layout_frame">Classic Layout (LED Frame)</span></a>
<h4 class="panel-title"> </h4>
<a><i class="fa fa-th fa-fw"></i><span data-i18n="conf_leds_layout_matrix">Matrix Configuration (LED wall)</span></a> </div>
</h4> <div id="collapse1" class="panel-collapse collapse">
</div> <div class="panel-body">
<div id="collapse2" class="panel-collapse collapse"> <table class="table borderless">
<div class="panel-body"> <tbody>
<table> <tr>
<tbody> <td class="ltd">
<tr> <label class="ltdlabel" for="ip_cl_top" data-i18n="conf_leds_layout_cl_top">Top</label>
<td class="ltd"> </td>
<label class="ltdlabel" for="ip_ma_ledshoriz" data-i18n="conf_leds_layout_ma_horiz">Horizontal</label> <td class="itd input-group">
</td> <input class="form-control ledCLconstr " id="ip_cl_top" type="number" value="1" min="0" step="1"></input>
<td class="itd input-group"> <div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
<input class="form-control ledMAconstr" id="ip_ma_ledshoriz" type="number" value="1" min="1" step="1"></input> </td>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div> </tr>
</td> <tr>
</tr> <td class="ltd">
<tr> <label class="ltdlabel" for="ip_cl_bottom" data-i18n="conf_leds_layout_cl_bottom">Bottom</label>
<td class="ltd"> </td>
<label class="ltdlabel" for="ip_ma_ledsvert" data-i18n="conf_leds_layout_ma_vert">Vertical</label> <td class="itd input-group">
</td> <input class="form-control ledCLconstr" id="ip_cl_bottom" type="number" value="0" min="0" step="1"></input>
<td class="itd input-group"> <div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
<input class="form-control ledMAconstr" id="ip_ma_ledsvert" type="number" value="1" min="1" step="1"></input> </td>
<div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div> </tr>
</td> <tr>
</tr> <td class="ltd">
<tr> <label class="ltdlabel" for="ip_cl_left" data-i18n="conf_leds_layout_cl_left">Left</label>
<td class="ltd"> </td>
<label class="ltdlabel" for="ip_ma_cabling" data-i18n="conf_leds_layout_ma_cabling">Cabling</label> <td class="itd input-group">
</td> <input class="form-control ledCLconstr" id="ip_cl_left" type="number" value="0" min="0" step="1"></input>
<td class="itd"> <div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
<select class="form-control ledMAconstr" id="ip_ma_cabling"> </td>
<option value="snake" data-i18n="conf_leds_layout_ma_optsnake">Snake</option> </tr>
<option value="parallel" data-i18n="conf_leds_layout_ma_optparallel">Parallel</option> <tr>
</select> <td class="ltd">
</td> <label class="ltdlabel" for="ip_cl_right" data-i18n="conf_leds_layout_cl_right">Right</label>
</tr> </td>
<!--- <tr> <td class="itd input-group">
<td class="ltd"> <input class="form-control ledCLconstr" id="ip_cl_right" type="number" value="0" min="0" step="1"></input>
<label class="ltdlabel" for="ip_ma_order" data-i18n="conf_leds_layout_ma_order">Order</label> <div class="input-group-addon" data-i18n="edt_append_leds">LEDs</div>
</td> </td>
<td class="itd"> </tr>
<select class="form-control ledMAconstr" id="ip_ma_order"> <tr>
<option value="horizontal" data-i18n="conf_leds_layout_ma_opthoriz">Horizontal</option> <td class="ltd">
<option value="vertical" data-i18n="conf_leds_layout_ma_optvert">Vertical</option> <label class="ltdlabel" for="ip_cl_glength" data-i18n="conf_leds_layout_cl_gaglength">Gap length</label>
</select> </td>
</td> <td class="itd input-group">
</tr> <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>
<tr> </td>
<td class="ltd"> </tr>
<label class="ltdlabel" for="ip_ma_start" data-i18n="conf_leds_layout_ma_position">Input</label> <tr>
</td> <td class="ltd">
<td class="itd"> <label class="ltdlabel" for="ip_cl_gpos" data-i18n="conf_leds_layout_cl_gappos">Gap position</label>
<select class="form-control ledMAconstr" id="ip_ma_start"> </td>
<option value="top-left" data-i18n="conf_leds_layout_ma_opttopleft">Top left</option> <td class="itd">
<option value="top-right" data-i18n="conf_leds_layout_ma_opttopright">Top right</option> <input class="form-control ledCLconstr" id="ip_cl_gpos" type="number" value="0" min="0" step="1">
<option value="bottom-left" data-i18n="conf_leds_layout_ma_optbottomleft">Bottom left</option> </td>
<option value="bottom-right" data-i18n="conf_leds_layout_ma_optbottomright">Bottom right</option> </tr>
</select> <tr>
</td> <td class="ltd">
</tr> <label class="ltdlabel" for="ip_cl_position" data-i18n="conf_leds_layout_cl_inppos">Input position</label>
</tbody> </td>
</table> <td class="itd">
</div> <input class="form-control ledCLconstr" id="ip_cl_position" type="number" value="0" min="0" step="1">
<div class="panel-footer" style="text-align:right;"> </td>
<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> </tr>
</div> <tr>
</div> <td class="ltd">
</div> <label class="ltdlabel" for="ip_cl_reverse" data-i18n="conf_leds_layout_cl_reversdir">Reverse direction</label>
<div id="texfield_panel" class="panel panel-primary"> </td>
<div class="panel-heading headcollapse" data-toggle="collapse" data-parent="#accordion" data-target="#collapse4"> <td class="itd">
<h4 class="panel-title"> <div class="checkbox">
<a><i class="fa fa-wrench fa-fw"></i><span data-i18n="conf_leds_layout_generatedconf">Generated/Actual LED Configuration</span></a> <input class="ledCLconstr" id="ip_cl_reverse" type="checkbox" value="false"></input>
</h4> <label></label>
</div> </div>
<div id="collapse4" class="panel-collapse collapse"> </td>
<div class="panel-body"> </tr>
<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> </tbody>
<div id="aceedit" style="width:100%;height:500px"></div> </table>
</div> <div class="panel panel-default">
<div class="panel-footer"> <div class="panel-heading headcollapse" data-toggle="collapse" data-target="#collapse3">
<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> <h4 class="panel-title">
<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> <a><span data-i18n="conf_leds_layout_advanced">Advanced settings</span></a>
</div> </h4>
</div> </div>
</div> <div id="collapse3" class="panel-collapse collapse">
</div> <div class="panel-body ">
</div> <!-- accordion --> <table class="tableform borderless">
<div class="col-lg-6 col-md-12"> <tbody>
<div class="panel panel-default"> <tr>
<div class="panel-heading"> <td class="ltd">
<h4 class="panel-title"><i class="fa fa-search fa-fw"></i><span data-i18n="conf_leds_layout_peview">LED Layout preview</span></h4> <label class="ltdlabel" for="ip_cl_hdepth" data-i18n="conf_leds_layout_cl_hleddepth">Horizontal LED depth</label>
</div> </td>
<div class="panel-body"> <td class="itd input-group">
<p id="previewcreator" style="font-weight:bold"></p> <input class="form-control ledCLconstr" id="ip_cl_hdepth" type="number" value="8" min="1" max="100" step="1"></input>
<p id="previewledcount" style="font-weight:bold"></p> <div class="input-group-addon" data-i18n="edt_append_percent">%</div>
<p id="previewledpower" style="font-weight:bold"></p> </td>
<div id="led_vis_help"></div> </tr>
<div class="col-lg-12 st_helper" style="padding-left:0px; padding-right:0px"> <tr>
<div id="leds_preview"></div> <td class="ltd">
</div> <label class="ltdlabel" for="ip_cl_vdepth" data-i18n="conf_leds_layout_cl_vleddepth">Vertical LED depth</label>
</div> </td>
<div class="panel-footer"> <td class="itd input-group">
<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> <input class="form-control ledCLconstr" id="ip_cl_vdepth" type="number" value="5" min="1" max="100" step="1"></input>
<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 class="input-group-addon" data-i18n="edt_append_percent">%</div>
</div> </td>
</div> </tr>
</div> <tr>
</div> <td class="ltd">
</div> <!-- row layout --> <label class="ltdlabel" for="ip_cl_overlap" data-i18n="conf_leds_layout_cl_overlap">Edge Gap</label>
</div> </td>
</div> <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>
</div> <!-- tab content --> </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> </div>
<script src="/js/content_leds.js"></script> <script src="/js/content_leds.js"></script>

View File

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

View File

@ -1,12 +1,12 @@
<div class="container-fluid"> <div class="container-fluid">
<div class="row"> <div class="row">
<div class="col-lg-12"> <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 id="conf_cont">
<div class="row" id="conf_cont_tok"> <div class="row" id="conf_cont_tok">
<div class="col-lg-6" id="tok_desc"> <div class="col-lg-6" id="tok_desc">
<div class="panel panel-default"> <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 class="panel-body">
<div id="tok_desc_cont"></div> <div id="tok_desc_cont"></div>
<div id="tktable"></div> <div id="tktable"></div>
@ -34,4 +34,4 @@
</div> </div>
</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="container-fluid">
<div class="row"> <div class="row">
<div class="col-lg-12"> <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> <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 -->
<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="container-fluid">
<div class="row"> <div class="row">
<div class="col-lg-12"> <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 id="intro_effc">
</div> </div>
<div class="row"> <div class="row">
@ -20,7 +33,7 @@
<td class="itd"><input class="form-control" type="text" id="name-input" /></td> <td class="itd"><input class="form-control" type="text" id="name-input" /></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<div id="editor_container" /> <div id="editor_container" />
</div> </div>
<div class="panel-footer" id="eff_footer"> <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> <style> body {margin:auto; padding:2%; text-align:center; font-family:arial;}</style>
</head> </head>
<body> <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> <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> </body>
</html> </html>

View File

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

View File

@ -1,5 +1,18 @@
<div class="container-fluid"> <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> <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="row">
<div class="col-md-12 col-lg-8 col-xxl-7"> <div class="col-md-12 col-lg-8 col-xxl-7">
<div class="panel panel-default" > <div class="panel panel-default" >

View File

@ -3,110 +3,24 @@
<div class="col-xs-12"> <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> <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 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"> <div class="col-xs-12">
<hr> <hr>
<h4 style="font-weight: bold" data-i18n="support_label_webrestitle">Information and help ressources</h4> <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"> <div class="col-xs-12 col-sm-6 col-lg-3 support-container">
<i class="fa fa-globe bg-color-wf"></i> <i class="fa fa-globe bg-color-wf"></i>
<h4 data-i18n="support_label_webpagetitle">Webpage</h4> <h4 data-i18n="support_label_webpagetitle">Webpage</h4>
<p data-i18n="support_label_webpagetext">Home of Hyperion</p> <p data-i18n="support_label_webpagetext">Home of Hyperion</p>
</div> </div>
</a> </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"> <div class="col-xs-12 col-sm-6 col-lg-3 support-container">
<i class="fa fa-book bg-color-wf"></i> <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> <p data-i18n="support_label_wikitext">The A to Z source for almost everything Hyperion related</p>
</div> </div>
</a> </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"> <div class="col-xs-12 col-sm-6 col-lg-3 support-container">
<i class="fa fa-comments bg-color-wf"></i> <i class="fa fa-comments bg-color-wf"></i>
<h4 data-i18n="support_label_forumtitle">Forum</h4> <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; border-color: #212121;
} }
.navbar-default li a {
color: #C6C6C6 !important;
}
.panel-body { .panel-body {
background-color: #424242; background-color: #424242;
} }
@ -189,7 +193,7 @@ tr:hover td {
} }
.dropdown-menu>li>a { .dropdown-menu>li>a {
color: #2e6da4; color: #DDDDDD;
} }
/*Panels*/ /*Panels*/
@ -220,6 +224,18 @@ tr:hover td {
color: #DDDDDD; 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 { .panel-footer {
background-color: #424242 !important; background-color: #424242 !important;
border-top: 1px solid #616161 !important; border-top: 1px solid #616161 !important;
@ -271,18 +287,22 @@ select.form-control {
} }
.checklist li::before { .checklist li::before {
color: greenyellow; color: #DDDDDD;
} }
.checkbox-success input[type="checkbox"]:checked + label::before, .checkbox-success input[type="radio"]:checked + label::before { .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: greenyellow; border-color: #616161;
border-color: #5cb85c; background-color: #212121;
} }
.checkbox-success input[type="checkbox"]:checked + label::after, .checkbox-success input[type="radio"]:checked + label::after { .checkbox input[type="checkbox"]:checked + label::after, .checkbox-success input[type="checkbox"]:checked + label::after, .checkbox-success input[type="radio"]:checked + label::after {
color: #1e1e1e; color: #DDDDDD;
} }
.radio__field:checked ~ .radio__icon::before {
background: #fff;
}
.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle) { .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle) {
border-bottom-right-radius: 4px; border-bottom-right-radius: 4px;
border-top-right-radius: 4px; border-top-right-radius: 4px;
@ -416,7 +436,7 @@ button.close:hover {
} }
.bs-callout-success { .bs-callout-success {
border-left-color: greenyellow; border-left-color: #67FF01;
} }
.bs-callout-success h4 { .bs-callout-success h4 {

View File

@ -2,12 +2,12 @@
@font-face { @font-face {
font-family: "Roboto"; font-family: "Roboto";
src: url("../fonts/Roboto-Regular.woff") format('woff'), 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;} body{font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;max-width:2000px;margin: 0 auto;}
.form-group{margin-bottom:11px;} .form-group{margin-bottom:11px;}
#page-content { #page-content {
padding-bottom:50px; padding-bottom:50px;
} }
body{ body{
overflow-y: scroll; overflow-y: scroll;
@ -15,22 +15,43 @@ body{
/* /*
#page-wrapper a[target=_blank]::after { #page-wrapper a[target=_blank]::after {
content:"\f08e"; content:"\f08e";
position:relative; position:relative;
font:normal normal normal 10px/1 FontAwesome; font:normal normal normal 10px/1 FontAwesome;
top:-3px; top:-3px;
left:3px; left:3px;
margin-right:5px; margin-right:5px;
} }
*/ */
/* fixed brand icon */ /* fixed brand icon */
@media (min-width: 768px){ @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*/ /*mobile nav*/
@media (max-width: 768px){ @media (max-width: 768px){
.navbar-toggle{position:fixed;right:0px;} #wrapper{
#main-nav{position:fixed;right:-200px;} padding: 0px;
}
.navbar-toggle{
position:fixed;right:0px;
}
#main-nav{
position:fixed;right:-200px;
}
} }
.navbar-toggle .icon-bar { .navbar-toggle .icon-bar {
background-color:#4c4c4c !important; background-color:#4c4c4c !important;
@ -71,40 +92,80 @@ table.input-group{width:100%}
@media (max-width: 767px) {.ltd{white-space:normal;}} @media (max-width: 767px) {.ltd{white-space:normal;}}
/*icon spacing*/ /*icon spacing*/
.fa-fw{margin-right:5px;} .fa-fw, .mdi-24px{margin-right:5px;}
/*table*/ /*table*/
table.borderless td,table.borderless th{border: none !important;} table.borderless td,table.borderless th{border: none !important;}
table.borderless td:first-child{width: 25px !important;}
.borderless {margin-bottom:0px} .borderless {margin-bottom:0px}
table label{margin:0} 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*/ /*Header*/
.navbar-brand{padding-top:0px;padding-bottom:5px;padding-left:20px;height:60px;} .navbar-brand{top:0px;left:17px;padding-top:0;}
.sidebar{margin-top:62px;padding-top:20px;} .sidebar{margin-top:85px;}
.dropdown{font-size:18px;} .dropdown{font-size:18px;}
@media (max-width: 767px) {.sidebar{margin-top:0px;padding-top:0px !important;}} @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*/ /*Panels*/
.panel-heading{font-size:18px;} .panel-heading{font-size:18px;}
.headcollapse{cursor:pointer;} .headcollapse{cursor:pointer;}
.headcollapse a:hover{text-decoration:none;} .headcollapse a:hover{text-decoration:none;}
.panel-default{ .panel-default{
background-color:#fff !important; background-color:#fff !important;
border-color:#d0d0d0 !important; border-color:#d0d0d0 !important;
} }
.panel-default>.panel-heading{ .panel-default>.panel-heading{
background-color:#f3f3f3 !important; background-color:#F3F3F3 !important;
border-color:#ddd !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*/ /*remote page*/
@media (max-width: 500px) {.ssthead th:nth-child(1), .sstbody td:nth-child(1){display:none}} @media (max-width: 500px) {.ssthead th:nth-child(1), .sstbody td:nth-child(1){display:none}}
/*Dashboard*/ /*Dashboard*/
.component-on{color:green;} .component-on{color: #67FF01;}
.component-off{color:grey;} .component-off{color: grey;}
#dash_news hr{margin:10px 0} #dash_news hr{margin: 10px 0}
/*Colorpicker 2x*/ /*Colorpicker 2x*/
.colorpicker-2x {z-index:99999} .colorpicker-2x {z-index:99999}
@ -114,16 +175,16 @@ table label{margin:0}
/*Hint*/ /*Hint*/
.info-hint{ .info-hint{
background-color:rgb(236,236,236); background-color:rgb(236,236,236);
border-radius:10px; border-radius:10px;
} }
.intro-hint{ .intro-hint{
padding:8px 8px 8px 14px; padding:8px 8px 8px 14px;
margin:0px 0px 15px 0px; margin:0px 0px 15px 0px;
border-left:8px solid #0088cc; border-left:8px solid #0088cc;
border-top:1px solid #0088cc; border-top:1px solid #0088cc;
box-shadow: 1px 1px 1px 0px rgba(0,0,0,0.25); box-shadow: 1px 1px 1px 0px rgba(0,0,0,0.25);
font-size:97%; font-size:97%;
} }
/*Support page*/ /*Support page*/
@ -151,6 +212,11 @@ table label{margin:0}
margin-bottom: 0; margin-bottom: 0;
} }
/*backported bootstrap 4 font weight*/
.font-weight-bold {
font-weight: 700;
}
/*wizard button*/ /*wizard button*/
.btn-wizard { .btn-wizard {
color: #fff; color: #fff;
@ -172,10 +238,15 @@ table label{margin:0}
.btn-transparent { .btn-transparent {
background-color: transparent; background-color: transparent;
border-style: none; 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*/ /*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 { 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_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} .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*/ /*Modal icons*/
[class*="modal-icon"]{ [class*="modal-icon"]{
padding:30px; padding:30px;
border-radius: 60px; border-radius: 60px;
color:white; color:white;
font-size:50px !important; font-size:50px !important;
} }
.modal-icon-check{ .modal-icon-check{
background-color:#71c341; background-color:#71c341;
} }
.modal-icon-warning{ .modal-icon-warning{
background-color:#f7c44a; background-color:#f7c44a;
} }
.modal-icon-error{ .modal-icon-error{
background-color:#d1322e; background-color:#d1322e;
} }
.modal-icon-edit{ .modal-icon-edit{
background-color:#3579b6; background-color:#3579b6;
} }
/* Overlay for desktop devices */
.overlay { .overlay {
background-image: url('/img/hyperion/hyperionwhitelogo.png'); background-image: url('/img/hyperion/logo_negativ.png');
background-repeat: no-repeat; background-repeat: no-repeat;
background-position: center center; background-position: center center;
background-color: rgba(1, 1, 1, 0.7); background-color: rgba(1, 1, 1, 0.7);
position: fixed; position: fixed;
bottom: 0; bottom: 0;
left: 0; left: 0;
right: 0; right: 0;
top: 0; top: 0;
z-index:99999; z-index:99999;
}
/* Overlay for mobile devices */
@media (max-width: 768px) {
.overlay {
background-size: contain;
}
} }
/*simple ripple effect for li a and btn*/ /*simple ripple effect for li a and btn*/
@ -307,7 +386,7 @@ li a:active:after {
color: #428bca; color: #428bca;
} }
.bs-callout-success { .bs-callout-success {
border-left-color: #5cb85c; border-left-color: #67FF01;
} }
.bs-callout-success h4 { .bs-callout-success h4 {
color: #5cb85c; color: #5cb85c;
@ -341,8 +420,8 @@ li a:active:after {
@media (min-width: 1500px) { @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 { .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; float: left;
padding-left:15px; padding-left:15px;
padding-right:15px; padding-right:15px;
} }
.col-xxl-12 { .col-xxl-12 {
width: 100%; width: 100%;
@ -588,39 +667,39 @@ li a:active:after {
left: 0; left: 0;
} }
.gj-resizable-w { .gj-resizable-w {
cursor: w-resize; cursor: w-resize;
width: 7px; width: 7px;
left: -5px; left: -5px;
top: 0; top: 0;
height: 100%; height: 100%;
} }
.gj-resizable-se { .gj-resizable-se {
cursor: se-resize; cursor: se-resize;
width: 12px; width: 12px;
height: 12px; height: 12px;
right: 1px; right: 1px;
bottom: 1px; bottom: 1px;
} }
.gj-resizable-sw { .gj-resizable-sw {
cursor: sw-resize; cursor: sw-resize;
width: 9px; width: 9px;
height: 9px; height: 9px;
left: -5px; left: -5px;
bottom: -5px; bottom: -5px;
} }
.gj-resizable-nw { .gj-resizable-nw {
cursor: nw-resize; cursor: nw-resize;
width: 9px; width: 9px;
height: 9px; height: 9px;
left: -5px; left: -5px;
top: -5px; top: -5px;
} }
.gj-resizable-ne { .gj-resizable-ne {
cursor: ne-resize; cursor: ne-resize;
width: 9px; width: 9px;
height: 9px; height: 9px;
right: -5px; right: -5px;
top: -5px; top: -5px;
} }
.gj-dialog-footer { .gj-dialog-footer {
@ -685,6 +764,88 @@ li a:active:after {
padding: 15px; 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*/ /*https://github.com/flatlogic/awesome-bootstrap-checkbox slighty edited for our purposes*/
.checkbox { .checkbox {
@ -815,11 +976,14 @@ li a:active:after {
color: #fff; color: #fff;
} }
.checkbox input[type="checkbox"]:checked + label::before,
.checkbox-success input[type="checkbox"]:checked + label::before, .checkbox-success input[type="checkbox"]:checked + label::before,
.checkbox-success input[type="radio"]:checked + label::before { .checkbox-success input[type="radio"]:checked + label::before {
background-color: #5cb85c; background-color: #5cb85c;
border-color: #5cb85c; border-color: #5cb85c;
} }
.checkbox input[type="checkbox"]:checked + label::after,
.checkbox-success input[type="checkbox"]:checked + label::after, .checkbox-success input[type="checkbox"]:checked + label::after,
.checkbox-success input[type="radio"]:checked + label::after { .checkbox-success input[type="radio"]:checked + label::after {
color: #fff; 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_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_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_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_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_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!", "InfoDialog_nowrite_title": "Chyba při zápisu!",
@ -99,7 +97,6 @@
"conf_leds_optgroup_RPiGPIO": "RPi GPIO", "conf_leds_optgroup_RPiGPIO": "RPi GPIO",
"conf_leds_optgroup_RPiPWM": "RPi PWM", "conf_leds_optgroup_RPiPWM": "RPi PWM",
"conf_leds_optgroup_RPiSPI": "RPi SPI\n", "conf_leds_optgroup_RPiSPI": "RPi SPI\n",
"conf_leds_optgroup_debug": "Ladit",
"conf_leds_optgroup_network": "Síť", "conf_leds_optgroup_network": "Síť",
"conf_leds_optgroup_usb": "USB", "conf_leds_optgroup_usb": "USB",
"conf_logging_btn_autoscroll": "Automatické posouvání", "conf_logging_btn_autoscroll": "Automatické posouvání",
@ -145,7 +142,7 @@
"dashboard_infobox_label_instance": "Instance:", "dashboard_infobox_label_instance": "Instance:",
"dashboard_infobox_label_latesthyp": "Poslední dostupná verze Hyperionu", "dashboard_infobox_label_latesthyp": "Poslední dostupná verze Hyperionu",
"dashboard_infobox_label_platform": "Platforma:", "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_smartacc": "Inteligentní přístup",
"dashboard_infobox_label_statush": "Stav Hyperionu:", "dashboard_infobox_label_statush": "Stav Hyperionu:",
"dashboard_infobox_label_title": "Informace", "dashboard_infobox_label_title": "Informace",
@ -625,7 +622,7 @@
"general_comp_BOBLIGHTSERVER": "Boblight Server", "general_comp_BOBLIGHTSERVER": "Boblight Server",
"general_comp_FLATBUFSERVER": "Flatbuffers Server", "general_comp_FLATBUFSERVER": "Flatbuffers Server",
"general_comp_FORWARDER": "Zasílat", "general_comp_FORWARDER": "Zasílat",
"general_comp_GRABBER": "Platforma snímaní", "general_comp_GRABBER": "Sn",
"general_comp_LEDDEVICE": "LED zařízení", "general_comp_LEDDEVICE": "LED zařízení",
"general_comp_PROTOSERVER": "Protokol vyrovnávací paměti severu", "general_comp_PROTOSERVER": "Protokol vyrovnávací paměti severu",
"general_comp_SMOOTHING": "Vyhlazení", "general_comp_SMOOTHING": "Vyhlazení",

View File

@ -5,8 +5,8 @@
"InfoDialog_changePassword_title": "Ändere Passwort", "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_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_iswitch_title": "Hyperion-Switcher",
"InfoDialog_lang_text": "Sollte dir die Vorauswahl der automatischen Spracherkennung nicht gefallen, kannst du die Sprache hier manuell festlegen.", "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_lang_title": "Spracheinstellung", "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_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_text": "Hyperion hat keinen Schreibzugriff auf die aktuell geladene Konfiguration. Bitte korrigiere die Dateizugriffsrechte, um fortzufahren.",
"InfoDialog_nowrite_title": "Fehler beim Schreibzugriff!", "InfoDialog_nowrite_title": "Fehler beim Schreibzugriff!",
@ -41,13 +41,26 @@
"conf_general_inst_title": "LED-Hardware Instanzverwaltung", "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_intro": "Grundsätzliche Einstellungen zu Hyperion oder WebUI, die in keine andere Kategorie passen.",
"conf_general_label_title": "Allgemeine Einstellungen", "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_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_expl": "Erklärung",
"conf_helptable_option": "Option", "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_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_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_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_btn_checklist": "Zeige Checkliste",
"conf_leds_layout_button_savelay": "Speichere Layout", "conf_leds_layout_button_savelay": "Speichere Layout",
"conf_leds_layout_button_updsim": "Aktualisiere Vorschau", "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_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_ledcontroller": "LED-Steuerung",
"conf_leds_nav_label_ledlayout": "LED-Layout", "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_RPiGPIO": "RPi GPIO",
"conf_leds_optgroup_RPiPWM": "RPi PWM", "conf_leds_optgroup_RPiPWM": "RPi PWM",
"conf_leds_optgroup_RPiSPI": "RPi SPI", "conf_leds_optgroup_RPiSPI": "RPi SPI",
"conf_leds_optgroup_debug": "Debug", "conf_leds_optgroup_debug": "Debug",
"conf_leds_optgroup_network": "Netzwerk", "conf_leds_optgroup_network": "Netzwerk",
"conf_leds_optgroup_other": "Andere",
"conf_leds_optgroup_usb": "USB/Seriell", "conf_leds_optgroup_usb": "USB/Seriell",
"conf_logging_btn_autoscroll": "Automatisch scrollen", "conf_logging_btn_autoscroll": "Automatisch scrollen",
"conf_logging_btn_clipboard": "In Zwischenablage kopieren",
"conf_logging_btn_pbupload": "Bericht für Supportanfrage hochladen", "conf_logging_btn_pbupload": "Bericht für Supportanfrage hochladen",
"conf_logging_contpolicy": "Berichts-Datenschutzerklärung", "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_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_lastreports": "Frühere Berichte",
"conf_logging_logoutput": "Protokollausgabe",
"conf_logging_nomessage": "Keine Einträge vorhanden.", "conf_logging_nomessage": "Keine Einträge vorhanden.",
"conf_logging_report": "Bericht", "conf_logging_report": "Bericht",
"conf_logging_uplfailed": "Hochladen fehlgeschlagen! Überprüfe deine Internetverbindung!", "conf_logging_uplfailed": "Hochladen fehlgeschlagen! Überprüfe deine Internetverbindung!",
@ -133,7 +150,7 @@
"conf_network_bobl_intro": "Boblight Empfänger", "conf_network_bobl_intro": "Boblight Empfänger",
"conf_network_createToken_btn": "Erstelle Token", "conf_network_createToken_btn": "Erstelle Token",
"conf_network_fbs_intro": "Google Flatbuffers Empfänger. Wird genutzt für schnellen Bildempfang.", "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_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_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, ...)", "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_enableh": "Aktiviere Instanz: $1",
"dashboard_infobox_label_instance": "Instanz:", "dashboard_infobox_label_instance": "Instanz:",
"dashboard_infobox_label_latesthyp": "Aktuellste Hyperion Version:", "dashboard_infobox_label_latesthyp": "Aktuellste Hyperion Version:",
"dashboard_infobox_label_platform": "Plattform:", "dashboard_infobox_label_platform": "Bildschirm:",
"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": "\nProtobuffer:",
"dashboard_infobox_label_ports": "Ports",
"dashboard_infobox_label_ports_websocket": "WebSocket (ws|wss):",
"dashboard_infobox_label_smartacc": "Schnellzugriff", "dashboard_infobox_label_smartacc": "Schnellzugriff",
"dashboard_infobox_label_statush": "Hyperion Status:", "dashboard_infobox_label_statush": "Hyperion Status:",
"dashboard_infobox_label_title": "Information", "dashboard_infobox_label_title": "Information",
"dashboard_infobox_label_watchedversionbranch": "Ausgewählter Versionszweig:", "dashboard_infobox_label_watchedversionbranch": "Ausgewählter Versionszweig:",
"dashboard_infobox_message_updatesuccess": "Du nutzt die aktuellste Version von Hyperion.", "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_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": "Das Standardpasswort der WebUI ist gesetzt. Wir empfehlen dringend, dieses zu ändern.",
"dashboard_message_default_password_t": "WebUI Standardpasswort gesetzt", "dashboard_message_default_password_t": "WebUI Standardpasswort gesetzt",
"dashboard_message_do_not_show_again": "Diese Meldung nicht mehr anzeigen", "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_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_itemtitle": "Pfad",
"edt_conf_effp_paths_title": "Effekt Pfad(e)", "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_NO_CHANGE": "Automatisch",
"edt_conf_enum_NTSC": "NTSC", "edt_conf_enum_NTSC": "NTSC",
"edt_conf_enum_PAL": "PAL", "edt_conf_enum_PAL": "PAL",
"edt_conf_enum_SECAM": "SECAM", "edt_conf_enum_SECAM": "SECAM",
"edt_conf_enum_VERTICAL": "Horizontal",
"edt_conf_enum_automatic": "Automatisch", "edt_conf_enum_automatic": "Automatisch",
"edt_conf_enum_bbclassic": "Klassisch", "edt_conf_enum_bbclassic": "Klassisch",
"edt_conf_enum_bbdefault": "Standard", "edt_conf_enum_bbdefault": "Standard",
@ -288,6 +312,7 @@
"edt_conf_enum_logverbose": "Ausführlich", "edt_conf_enum_logverbose": "Ausführlich",
"edt_conf_enum_logwarn": "Warnung", "edt_conf_enum_logwarn": "Warnung",
"edt_conf_enum_multicolor_mean": "Mehrfarbig", "edt_conf_enum_multicolor_mean": "Mehrfarbig",
"edt_conf_enum_please_select": "Bitte auswählen",
"edt_conf_enum_rbg": "RBG", "edt_conf_enum_rbg": "RBG",
"edt_conf_enum_rgb": "RGB", "edt_conf_enum_rgb": "RGB",
"edt_conf_enum_right_left": "von rechts nach links", "edt_conf_enum_right_left": "von rechts nach links",
@ -302,12 +327,12 @@
"edt_conf_fg_display_title": "Display", "edt_conf_fg_display_title": "Display",
"edt_conf_fg_frequency_Hz_expl": "Wie schnell werden neue Bilder aufgenommen.", "edt_conf_fg_frequency_Hz_expl": "Wie schnell werden neue Bilder aufgenommen.",
"edt_conf_fg_frequency_Hz_title": "Aufnahmefrequenz", "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_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_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_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_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_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_expl": "Verkleinere Bild auf dieser Breite, da das Rohmaterial viel Leistung benötigen würde.",
"edt_conf_fg_width_title": "Breite", "edt_conf_fg_width_title": "Breite",
@ -322,11 +347,12 @@
"edt_conf_fge_type_title": "Typ", "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_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_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_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_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_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_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_expl": "Der Name wird verwendet, um Hyperion besser zu identifizieren. (Hilfreich bei mehreren Instanzen)",
"edt_conf_gen_name_title": "Name der Konfiguration", "edt_conf_gen_name_title": "Name der Konfiguration",
@ -340,10 +366,19 @@
"edt_conf_general_port_title": "Port", "edt_conf_general_port_title": "Port",
"edt_conf_general_priority_expl": "Die Priorität dieser Komponente.", "edt_conf_general_priority_expl": "Die Priorität dieser Komponente.",
"edt_conf_general_priority_title": "Priorität", "edt_conf_general_priority_title": "Priorität",
"edt_conf_instC_systemEnable_expl": "Aktiviert die Plattform Aufnahme für diese LED Hardware Instanz.", "edt_conf_grabber_discovered_expl": "Wähle dein gefundenes Aufnahmegerät aus.",
"edt_conf_instC_systemEnable_title": "Aktiviere Plattform Aufnahme", "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_expl": "Aktiviert die USB Aufnahme für diese LED -Hardware Instanz.",
"edt_conf_instC_v4lEnable_title": "Aktiviere USB-Aufnahme", "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_instCapture_heading_title": "Instance Aufnahme",
"edt_conf_js_heading_title": "JSON Server", "edt_conf_js_heading_title": "JSON Server",
"edt_conf_log_heading_title": "Protokoll", "edt_conf_log_heading_title": "Protokoll",
@ -375,7 +410,7 @@
"edt_conf_smooth_heading_title": "Glättung", "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_expl": "Frequenz in der Zwischenschritte zur Glättung berechnet werden.",
"edt_conf_smooth_interpolationRate_title": "Interpolationsfrequenz", "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_outputRate_title": "Ausgabefrequenz",
"edt_conf_smooth_time_ms_expl": "Wie lange soll die Glättung Bilder sammeln?", "edt_conf_smooth_time_ms_expl": "Wie lange soll die Glättung Bilder sammeln?",
"edt_conf_smooth_time_ms_title": "Zeit", "edt_conf_smooth_time_ms_title": "Zeit",
@ -391,21 +426,41 @@
"edt_conf_v4l2_cecDetection_title": "CEC-Erkennung", "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_expl": "Anzahl der Pixel auf der unteren Seite die vom Bild entfernt werden.",
"edt_conf_v4l2_cropBottom_title": "Entferne unten", "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_expl": "Anzahl der Pixel auf der linken Seite die vom Bild entfernt werden.",
"edt_conf_v4l2_cropLeft_title": "Entferne links", "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_expl": "Anzahl der Pixel auf der rechten Seite die vom Bild entfernt werden.",
"edt_conf_v4l2_cropRight_title": "Entferne rechts", "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_expl": "Anzahl der Pixel auf der oberen Seite die vom Bild entfernt werden.",
"edt_conf_v4l2_cropTop_title": "Entferne oben", "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_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_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_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_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_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_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_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_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_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_expl": "Je höher der Rotwert ist, je eher wird bei entsprechendem Rotanteil abgeschaltet.",
"edt_conf_v4l2_redSignalThreshold_title": "Schwelle Rotwert", "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.", "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_expl": "Port des HTTPS-Webservers",
"edt_conf_webc_sslport_title": "HTTPS Port", "edt_conf_webc_sslport_title": "HTTPS Port",
"edt_dev_auth_key_title": "Authentisierungstoken", "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_cool_adjust": "Minimale Anpassung: cool",
"edt_dev_enum_sub_min_warm_adjust": "Minimale Anpassung: warm", "edt_dev_enum_sub_min_warm_adjust": "Minimale Anpassung: warm",
"edt_dev_enum_subtract_minimum": "Subtrahiere Minimum", "edt_dev_enum_subtract_minimum": "Subtrahiere Minimum",
"edt_dev_enum_white_off": "Weiß ist aus", "edt_dev_enum_white_off": "Weiß ist aus",
"edt_dev_general_colorOrder_title": "RGB Byte Reihenfolge", "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": "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_heading_title": "Allgemeine Einstellungen",
"edt_dev_general_name_title": "Name der Konfiguration", "edt_dev_general_name_title": "Name der Konfiguration",
"edt_dev_general_rewriteTime_title": "Aktualisierungszeit", "edt_dev_general_rewriteTime_title": "Aktualisierungszeit",
@ -455,7 +513,9 @@
"edt_dev_spec_brightnessFactor_title": "Helligkeitsfaktor", "edt_dev_spec_brightnessFactor_title": "Helligkeitsfaktor",
"edt_dev_spec_brightnessMax_title": "Helligkeitsmaximum", "edt_dev_spec_brightnessMax_title": "Helligkeitsmaximum",
"edt_dev_spec_brightnessMin_title": "Helligkeitsminimum", "edt_dev_spec_brightnessMin_title": "Helligkeitsminimum",
"edt_dev_spec_brightnessOverwrite_title": "Helligkeit überschreiben",
"edt_dev_spec_brightnessThreshold_title": "Signal Erkennung Helligkeitsminimum", "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_chanperfixture_title": "Kanäle pro Gerät",
"edt_dev_spec_cid_title": "CID", "edt_dev_spec_cid_title": "CID",
"edt_dev_spec_clientKey_title": "Clientkey", "edt_dev_spec_clientKey_title": "Clientkey",
@ -463,6 +523,11 @@
"edt_dev_spec_debugLevel_title": "Debug Stufe", "edt_dev_spec_debugLevel_title": "Debug Stufe",
"edt_dev_spec_debugStreamer_title": "Streamer Debugging", "edt_dev_spec_debugStreamer_title": "Streamer Debugging",
"edt_dev_spec_delayAfterConnect_title": "Verzögerung nach Verbindung", "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_dithering_title": "Dithering",
"edt_dev_spec_dmaNumber_title": "DMA Kanal", "edt_dev_spec_dmaNumber_title": "DMA Kanal",
"edt_dev_spec_gamma_title": "Gamma", "edt_dev_spec_gamma_title": "Gamma",
@ -477,6 +542,7 @@
"edt_dev_spec_intervall_title": "Intervall", "edt_dev_spec_intervall_title": "Intervall",
"edt_dev_spec_invert_title": "Invertiere Signal", "edt_dev_spec_invert_title": "Invertiere Signal",
"edt_dev_spec_latchtime_title": "Sperrzeit", "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_ledIndex_title": "LED-Index",
"edt_dev_spec_ledType_title": "LED-Typ", "edt_dev_spec_ledType_title": "LED-Typ",
"edt_dev_spec_lightid_itemtitle": "ID", "edt_dev_spec_lightid_itemtitle": "ID",
@ -500,7 +566,8 @@
"edt_dev_spec_port_title": "Port", "edt_dev_spec_port_title": "Port",
"edt_dev_spec_printTimeStamp_title": "Mit Zeitstempel", "edt_dev_spec_printTimeStamp_title": "Mit Zeitstempel",
"edt_dev_spec_pwmChannel_title": "PWM Kanal", "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_serial_title": "Seriennummer",
"edt_dev_spec_spipath_title": "SPI Pfad", "edt_dev_spec_spipath_title": "SPI Pfad",
"edt_dev_spec_sslHSTimeoutMax_title": "Streamer Handshake maximum Timeout", "edt_dev_spec_sslHSTimeoutMax_title": "Streamer Handshake maximum Timeout",
@ -508,7 +575,9 @@
"edt_dev_spec_sslReadTimeout_title": "Streamer lese Timeout", "edt_dev_spec_sslReadTimeout_title": "Streamer lese Timeout",
"edt_dev_spec_switchOffOnBlack_title": "Aus bei schwarz", "edt_dev_spec_switchOffOnBlack_title": "Aus bei schwarz",
"edt_dev_spec_switchOffOnbelowMinBrightness_title": "Aus bei Minimum", "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_targetIp_title": "Ziel IP-Adresse",
"edt_dev_spec_transeffect_title": "Übergangseffekt", "edt_dev_spec_transeffect_title": "Übergangseffekt",
"edt_dev_spec_transistionTimeExtra_title": "Extra Übergangszeit bei Schwarz", "edt_dev_spec_transistionTimeExtra_title": "Extra Übergangszeit bei Schwarz",
@ -572,9 +641,14 @@
"edt_eff_frequency": "Frequenz", "edt_eff_frequency": "Frequenz",
"edt_eff_gif_header": "GIFs", "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_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_height": "Höhe",
"edt_eff_huechange": "Farbänderung", "edt_eff_huechange": "Farbänderung",
"edt_eff_image": "Bilddatei", "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_interval": "Intervall",
"edt_eff_knightrider_header": "Knight Rider", "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.", "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_reversedirection": "Richtung umkehren",
"edt_eff_rotationtime": "Rotationszeit", "edt_eff_rotationtime": "Rotationszeit",
"edt_eff_saturation": "Sättigung", "edt_eff_saturation": "Sättigung",
"edt_eff_set_post_color": "Farbe nach dem Alarm",
"edt_eff_showseconds": "Zeige Sekunden", "edt_eff_showseconds": "Zeige Sekunden",
"edt_eff_sleeptime": "Schlafzeit", "edt_eff_sleeptime": "Schlafzeit",
"edt_eff_smooth_custom": "Aktivere Glättung", "edt_eff_smooth_custom": "Aktivere Glättung",
@ -630,6 +705,7 @@
"edt_eff_traces_header_desc": "Erfordert eine Neugestaltung", "edt_eff_traces_header_desc": "Erfordert eine Neugestaltung",
"edt_eff_trails_header": "Sternschnuppen", "edt_eff_trails_header": "Sternschnuppen",
"edt_eff_trails_header_desc": "In verschiedenen Farben, wünsch dir was!", "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": "Wellen",
"edt_eff_waves_header_desc": "Gestalte Wellen aus Farbe! Mische dazu deine Lieblingsfarben und wähle einen Mittelpunkt.", "edt_eff_waves_header_desc": "Gestalte Wellen aus Farbe! Mische dazu deine Lieblingsfarben und wähle einen Mittelpunkt.",
"edt_eff_whichleds": "Welche LEDs", "edt_eff_whichleds": "Welche LEDs",
@ -698,6 +774,7 @@
"general_btn_off": "Aus", "general_btn_off": "Aus",
"general_btn_ok": "OK", "general_btn_ok": "OK",
"general_btn_on": "An", "general_btn_on": "An",
"general_btn_overwrite": "Überschreiben",
"general_btn_rename": "Umbenennen", "general_btn_rename": "Umbenennen",
"general_btn_restarthyperion": "Hyperion neustarten", "general_btn_restarthyperion": "Hyperion neustarten",
"general_btn_save": "Speichern", "general_btn_save": "Speichern",
@ -715,7 +792,7 @@
"general_comp_BOBLIGHTSERVER": "Boblight Server", "general_comp_BOBLIGHTSERVER": "Boblight Server",
"general_comp_FLATBUFSERVER": "Flatbuffers Server", "general_comp_FLATBUFSERVER": "Flatbuffers Server",
"general_comp_FORWARDER": "Weiterleitung", "general_comp_FORWARDER": "Weiterleitung",
"general_comp_GRABBER": "Plattform Aufnahme", "general_comp_GRABBER": "Bildschirm Aufnahme",
"general_comp_LEDDEVICE": "LED-Hardware", "general_comp_LEDDEVICE": "LED-Hardware",
"general_comp_PROTOSERVER": "Protocol Buffers Server", "general_comp_PROTOSERVER": "Protocol Buffers Server",
"general_comp_SMOOTHING": "Glättung", "general_comp_SMOOTHING": "Glättung",
@ -729,14 +806,18 @@
"general_country_ru": "Russland", "general_country_ru": "Russland",
"general_country_uk": "England", "general_country_uk": "England",
"general_country_us": "Amerika", "general_country_us": "Amerika",
"general_disabled": "deaktiviert",
"general_enabled": "aktiviert",
"general_speech_cs": "Tschechisch", "general_speech_cs": "Tschechisch",
"general_speech_de": "Deutsch", "general_speech_de": "Deutsch",
"general_speech_en": "Englisch", "general_speech_en": "Englisch",
"general_speech_es": "Spanisch", "general_speech_es": "Spanisch",
"general_speech_fr": "Französisch", "general_speech_fr": "Französisch",
"general_speech_it": "Italienisch", "general_speech_it": "Italienisch",
"general_speech_nb": "Norwegisch (Bokmål)",
"general_speech_nl": "Niederländisch", "general_speech_nl": "Niederländisch",
"general_speech_pl": "Polnisch", "general_speech_pl": "Polnisch",
"general_speech_pt": "Portugisisch",
"general_speech_ro": "Rumänisch", "general_speech_ro": "Rumänisch",
"general_speech_ru": "Russisch", "general_speech_ru": "Russisch",
"general_speech_sv": "Schwedisch", "general_speech_sv": "Schwedisch",
@ -756,6 +837,10 @@
"infoDialog_import_confirm_title": "Bestätige den Import", "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_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_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_wizrgb_text": "Deine RGB Byte Reihenfolge ist bereits richtig eingestellt.",
"infoDialog_writeconf_error_text": "Das Speichern der Konfiguration ist fehlgeschlagen.", "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.", "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_togglelednumber": "LED Nummern",
"main_ledsim_btn_toggleleds": "Zeige LEDs", "main_ledsim_btn_toggleleds": "Zeige LEDs",
"main_ledsim_btn_togglelivevideo": "Live Video", "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_text": "Eine live Visualisierung deiner LED-Farben und Vorschau des erfassten Videosignals.",
"main_ledsim_title": "LED-Visualisierung", "main_ledsim_title": "LED-Visualisierung",
"main_menu_about_token": "Über Hyperion", "main_menu_about_token": "Über Hyperion",
"main_menu_colors_conf_token": "Bildverarbeitung", "main_menu_colors_conf_token": "Bildverarbeitung",
"main_menu_configuration_token": "Konfiguration", "main_menu_configuration_token": "LED Instanzen",
"main_menu_dashboard_token": "Dashboard", "main_menu_dashboard_token": "Dashboard",
"main_menu_effect_conf_token": "Effekte", "main_menu_effect_conf_token": "Effekte",
"main_menu_effectsconfigurator_token": "Effekt Konfigurator", "main_menu_effectsconfigurator_token": "Effekt Konfigurator",
"main_menu_general_conf_token": "Allgemein", "main_menu_general_conf_token": "Allgemein",
"main_menu_grabber_conf_token": "Aufnahme Hardware", "main_menu_grabber_conf_token": "Aufnahme Hardware",
"main_menu_input_selection_token": "Eingabeauswahl", "main_menu_input_selection_token": "Eingabeauswahl",
"main_menu_instcapture_conf_token": "Aufnahmequellen",
"main_menu_leds_conf_token": "LED-Hardware", "main_menu_leds_conf_token": "LED-Hardware",
"main_menu_logging_token": "Protokoll", "main_menu_logging_token": "Protokoll",
"main_menu_network_conf_token": "Netzwerk", "main_menu_network_conf_token": "Netzwerk",
@ -806,7 +893,7 @@
"remote_effects_label_picture": "Bild:", "remote_effects_label_picture": "Bild:",
"remote_input_clearall": "Lösche alle Effekte/Farben", "remote_input_clearall": "Lösche alle Effekte/Farben",
"remote_input_duration": "Dauer:", "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_ip": "IP:",
"remote_input_label": "Quellenauswahl", "remote_input_label": "Quellenauswahl",
"remote_input_label_autoselect": "Automatische Auswahl", "remote_input_label_autoselect": "Automatische Auswahl",
@ -822,6 +909,8 @@
"remote_maptype_label_multicolor_mean": "Mehrfarbig", "remote_maptype_label_multicolor_mean": "Mehrfarbig",
"remote_maptype_label_unicolor_mean": "Einfarbig", "remote_maptype_label_unicolor_mean": "Einfarbig",
"remote_optgroup_syseffets": "Mitgelieferte Effekte", "remote_optgroup_syseffets": "Mitgelieferte Effekte",
"remote_optgroup_templates_custom": "Nutzer Vorlage",
"remote_optgroup_templates_system": "System Vorlage",
"remote_optgroup_usreffets": "Benutzer Effekte", "remote_optgroup_usreffets": "Benutzer Effekte",
"remote_videoMode_2D": "2D", "remote_videoMode_2D": "2D",
"remote_videoMode_3DSBS": "3DSBS", "remote_videoMode_3DSBS": "3DSBS",
@ -869,7 +958,7 @@
"wiz_cc_chooseid": "Wähle einen Namen für dieses Farb-Profil.", "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_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_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_kodidisconlink": "Download Link Bilder:",
"wiz_cc_kodimsg_start": "Test bestanden - Zeit zu beginnen", "wiz_cc_kodimsg_start": "Test bestanden - Zeit zu beginnen",
"wiz_cc_kodishould": "Kodi sollte jetzt folgendes Bild anzeigen: $1", "wiz_cc_kodishould": "Kodi sollte jetzt folgendes Bild anzeigen: $1",
@ -885,7 +974,7 @@
"wiz_cc_title": "Farbkalibrierungs Assistent", "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_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_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_cololight_title": "Cololight Einrichtungsassistent",
"wiz_guideyou": "Der $1 wird dich durch die Konfiguration leiten, drücke dazu einfach den Button!", "wiz_guideyou": "Der $1 wird dich durch die Konfiguration leiten, drücke dazu einfach den Button!",
"wiz_hue_blinkblue": "Lasse ID $1 blau aufleuchten", "wiz_hue_blinkblue": "Lasse ID $1 blau aufleuchten",
@ -918,6 +1007,7 @@
"wiz_hue_username": "Benutzer ID:", "wiz_hue_username": "Benutzer ID:",
"wiz_identify": "Identifiziere", "wiz_identify": "Identifiziere",
"wiz_identify_light": "Identifiziere $1", "wiz_identify_light": "Identifiziere $1",
"wiz_identify_tip": "Lasse das konfigurierte Gerät kurz aufleuchten",
"wiz_ids_disabled": "Deaktiviert", "wiz_ids_disabled": "Deaktiviert",
"wiz_ids_entire": "Ganzes Bild", "wiz_ids_entire": "Ganzes Bild",
"wiz_noLights": "Es wurden keine $1s gefunden! Bitte verbinde die $1s mit dem Netzwerk oder konfiguriere sie manuell.", "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_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_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_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_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_lang_title": "Language setting", "InfoDialog_nostorage_title": "Cannot store settings",
"InfoDialog_nowrite_foottext": "The WebUI will be unlocked automatically after you solved the problem!", "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_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_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": "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_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", "about_build": "Build",
@ -41,17 +45,30 @@
"conf_general_inst_title": "LED Hardware Instance Management", "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_intro": "Basic settings around Hyperion and WebUI that don't fit into another category.",
"conf_general_label_title": "General settings", "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_fg_intro": "Screen 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_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_expl": "Explanation",
"conf_helptable_option": "Option", "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_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_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_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_btn_checklist": "Show checklist",
"conf_leds_layout_button_savelay": "Save Layout", "conf_leds_layout_button_savelay": "Save Layout",
"conf_leds_layout_button_updsim": "Update Preview", "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_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_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.", "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_cl_vleddepth": "Vertical LED depth",
"conf_leds_layout_frame": "Classic Layout (LED Frame)", "conf_leds_layout_frame": "Classic Layout (LED Frame)",
"conf_leds_layout_generatedconf": "Generated/Current LED Configuration", "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_cabling": "Cabling",
"conf_leds_layout_ma_horiz": "Horizontal", "conf_leds_layout_ma_horiz": "Horizontal",
"conf_leds_layout_ma_optbottomleft": "Bottom left", "conf_leds_layout_ma_optbottomleft": "Bottom left",
@ -98,8 +115,8 @@
"conf_leds_layout_pbl": "Point Bottom Left", "conf_leds_layout_pbl": "Point Bottom Left",
"conf_leds_layout_pbr": "Point Bottom Right", "conf_leds_layout_pbr": "Point Bottom Right",
"conf_leds_layout_peview": "LED Layout Preview", "conf_leds_layout_peview": "LED Layout Preview",
"conf_leds_layout_preview_l1": "This is your first led (input position)", "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_l2": "This visualizes the data direction (second/third LED)",
"conf_leds_layout_preview_ledpower": "Max. power consumption: $1 A", "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_originCL": "Created from: Classic Layout (LED Frame)",
"conf_leds_layout_preview_originMA": "Created from: Matrix Layout(LED wall)", "conf_leds_layout_preview_originMA": "Created from: Matrix Layout(LED wall)",
@ -110,20 +127,24 @@
"conf_leds_layout_ptln": "Tripplepoints", "conf_leds_layout_ptln": "Tripplepoints",
"conf_leds_layout_ptlv": "Vertical", "conf_leds_layout_ptlv": "Vertical",
"conf_leds_layout_ptr": "Point Top Right", "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_ledcontroller": "LED Controller",
"conf_leds_nav_label_ledlayout": "LED Layout", "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_RPiGPIO": "RPi GPIO",
"conf_leds_optgroup_RPiPWM": "RPi PWM", "conf_leds_optgroup_RPiPWM": "RPi PWM",
"conf_leds_optgroup_RPiSPI": "RPi SPI", "conf_leds_optgroup_RPiSPI": "RPi SPI",
"conf_leds_optgroup_debug": "Debug", "conf_leds_optgroup_debug": "Debug",
"conf_leds_optgroup_network": "Network", "conf_leds_optgroup_network": "Network",
"conf_leds_optgroup_other": "Other",
"conf_leds_optgroup_usb": "USB/Serial", "conf_leds_optgroup_usb": "USB/Serial",
"conf_logging_btn_autoscroll": "Auto scrolling", "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_btn_pbupload": "Upload a report for support requests",
"conf_logging_contpolicy": "Report Privacy Policy", "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_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_lastreports": "Previous reports",
"conf_logging_logoutput": "Log output",
"conf_logging_nomessage": "No log messages available.", "conf_logging_nomessage": "No log messages available.",
"conf_logging_report": "Report", "conf_logging_report": "Report",
"conf_logging_uplfailed": "Upload failed! Please check your internet connection!", "conf_logging_uplfailed": "Upload failed! Please check your internet connection!",
@ -133,7 +154,7 @@
"conf_network_bobl_intro": "Receiver for Boblight", "conf_network_bobl_intro": "Receiver for Boblight",
"conf_network_createToken_btn": "Create Token", "conf_network_createToken_btn": "Create Token",
"conf_network_fbs_intro": "Google Flatbuffers Receiver. Used for fast image transmission.", "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_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_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, ...)", "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_instance": "Instance:",
"dashboard_infobox_label_latesthyp": "Latest Hyperion version:", "dashboard_infobox_label_latesthyp": "Latest Hyperion version:",
"dashboard_infobox_label_platform": "Platform:", "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_smartacc": "Smart Access",
"dashboard_infobox_label_statush": "Hyperion status:", "dashboard_infobox_label_statush": "Hyperion status:",
"dashboard_infobox_label_title": "Information", "dashboard_infobox_label_title": "Information",
"dashboard_infobox_label_watchedversionbranch": "Watched version branch:", "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_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_label_intro": "The dashboard gives you a quick overview on the status of Hyperion",
"dashboard_message_default_password": "The default password for the WebUi is set. We strongly recommend to change this.", "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_default_password_t": "WebUI default password is set",
"dashboard_message_do_not_show_again": "Do not show this message again", "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.", "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_expl": "Number of frames before a consistent detected border is set.",
"edt_conf_bb_borderFrameCnt_title": "Border frames", "edt_conf_bb_borderFrameCnt_title": "Border frames",
"edt_conf_bb_heading_title": "Blackbar detector", "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_maxInconsistentCnt_title": "Inconsistent frames",
"edt_conf_bb_mode_expl": "Algorithm for processing. (see Wiki)", "edt_conf_bb_mode_expl": "Algorithm for processing. (see Wiki)",
"edt_conf_bb_mode_title": "Mode", "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_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_expl": "Number of frames without any detection before the border is set to 0.",
"edt_conf_bb_unknownFrameCnt_title": "Unknown frames", "edt_conf_bb_unknownFrameCnt_title": "Unknown frames",
@ -235,8 +260,8 @@
"edt_conf_color_heading_title": "Color Calibration", "edt_conf_color_heading_title": "Color Calibration",
"edt_conf_color_id_expl": "User given name", "edt_conf_color_id_expl": "User given name",
"edt_conf_color_id_title": "ID", "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_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_title": "LED area assignment",
"edt_conf_color_leds_expl": "Assign this adjustment to all LEDs (*) or just some (0-24).", "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_leds_title": "LED index",
"edt_conf_color_magenta_expl": "The calibrated magenta value.", "edt_conf_color_magenta_expl": "The calibrated magenta value.",
@ -258,6 +283,9 @@
"edt_conf_enum_NTSC": "NTSC", "edt_conf_enum_NTSC": "NTSC",
"edt_conf_enum_PAL": "PAL", "edt_conf_enum_PAL": "PAL",
"edt_conf_enum_SECAM": "SECAM", "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_automatic": "Automatic",
"edt_conf_enum_bbclassic": "Classic", "edt_conf_enum_bbclassic": "Classic",
"edt_conf_enum_bbdefault": "Default", "edt_conf_enum_bbdefault": "Default",
@ -288,6 +316,7 @@
"edt_conf_enum_logverbose": "Verbose", "edt_conf_enum_logverbose": "Verbose",
"edt_conf_enum_logwarn": "Warning", "edt_conf_enum_logwarn": "Warning",
"edt_conf_enum_multicolor_mean": "Multicolor", "edt_conf_enum_multicolor_mean": "Multicolor",
"edt_conf_enum_please_select": "Please Select",
"edt_conf_enum_rbg": "RBG", "edt_conf_enum_rbg": "RBG",
"edt_conf_enum_rgb": "RGB", "edt_conf_enum_rgb": "RGB",
"edt_conf_enum_right_left": "Right to left", "edt_conf_enum_right_left": "Right to left",
@ -296,18 +325,18 @@
"edt_conf_enum_transeffect_sudden": "Sudden", "edt_conf_enum_transeffect_sudden": "Sudden",
"edt_conf_enum_unicolor_mean": "Unicolor", "edt_conf_enum_unicolor_mean": "Unicolor",
"edt_conf_fbs_heading_title": "Flatbuffers Server", "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_fbs_timeout_title": "Timeout",
"edt_conf_fg_display_expl": "Select which desktop should be captured (multi monitor setup)", "edt_conf_fg_display_expl": "Select which desktop should be captured (multi monitor setup)",
"edt_conf_fg_display_title": "Display", "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_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_expl": "Shrink picture to this height, as raw picture needs a lot of CPU time.",
"edt_conf_fg_height_title": "Height", "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_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_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_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_expl": "Shrink picture to this width, as raw picture needs a lot of cpu time.",
"edt_conf_fg_width_title": "Width", "edt_conf_fg_width_title": "Width",
@ -322,11 +351,12 @@
"edt_conf_fge_type_title": "Type", "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_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_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_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_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_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_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_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", "edt_conf_gen_name_title": "Configuration name",
@ -340,26 +370,35 @@
"edt_conf_general_port_title": "Port", "edt_conf_general_port_title": "Port",
"edt_conf_general_priority_expl": "The priority of this component", "edt_conf_general_priority_expl": "The priority of this component",
"edt_conf_general_priority_title": "Priority channel", "edt_conf_general_priority_title": "Priority channel",
"edt_conf_instC_systemEnable_expl": "Enables the platform capture for this led hardware instance", "edt_conf_grabber_discovered_expl": "Select your capture device discovered",
"edt_conf_instC_systemEnable_title": "Enable platform capture", "edt_conf_grabber_discovered_none": "No capture device discovered",
"edt_conf_instC_v4lEnable_expl": "Enables the USB capture for this led hardware instance", "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_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_js_heading_title": "JSON Server",
"edt_conf_log_heading_title": "Logging", "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_expl": "Depending on loglevel you see less or more messages in your log.",
"edt_conf_log_level_title": "Log-Level", "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_apiAuth_title": "API Authentication",
"edt_conf_net_heading_title": "Network", "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_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_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_ipWhitelist_title": "Whitelisted IP's",
"edt_conf_net_ip_itemtitle": "IP", "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_expl": "When enabled, administration access from your local network needs a password.",
"edt_conf_net_localAdminAuth_title": "Local Admin API Authentication", "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_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_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", "edt_conf_net_restirctedInternetAccessAPI_title": "Restrict to IP's",
@ -375,7 +414,7 @@
"edt_conf_smooth_heading_title": "Smoothing", "edt_conf_smooth_heading_title": "Smoothing",
"edt_conf_smooth_interpolationRate_expl": "Speed of the calculation of smooth intermediate frames.", "edt_conf_smooth_interpolationRate_expl": "Speed of the calculation of smooth intermediate frames.",
"edt_conf_smooth_interpolationRate_title": "Interpolation Rate", "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_outputRate_title": "Output Rate",
"edt_conf_smooth_time_ms_expl": "How long should the smoothing gather pictures?", "edt_conf_smooth_time_ms_expl": "How long should the smoothing gather pictures?",
"edt_conf_smooth_time_ms_title": "Time", "edt_conf_smooth_time_ms_title": "Time",
@ -383,7 +422,7 @@
"edt_conf_smooth_type_title": "Type", "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_expl": "Delay the output in case your ambient light is faster than your TV.",
"edt_conf_smooth_updateDelay_title": "Update delay", "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_smooth_updateFrequency_title": "Update frequency",
"edt_conf_v4l2_blueSignalThreshold_expl": "Darkens low blue values (recognized as black)", "edt_conf_v4l2_blueSignalThreshold_expl": "Darkens low blue values (recognized as black)",
"edt_conf_v4l2_blueSignalThreshold_title": "Blue signal threshold", "edt_conf_v4l2_blueSignalThreshold_title": "Blue signal threshold",
@ -397,6 +436,8 @@
"edt_conf_v4l2_cropRight_title": "Crop right", "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_expl": "Count of pixels on the top side that are removed from the picture.",
"edt_conf_v4l2_cropTop_title": "Crop top", "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_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_device_title": "Device",
"edt_conf_v4l2_framerate_expl": "The supported frames per second of the active 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_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_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_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_expl": "Path to the certification file (format should be PEM)",
"edt_conf_webc_crtPath_title": "Certificate path", "edt_conf_webc_crtPath_title": "Certificate path",
"edt_conf_webc_docroot_expl": "Local webinterface root path (just for webui developer)", "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_expl": "Port oft the HTTPS-Webserver",
"edt_conf_webc_sslport_title": "HTTPS Port", "edt_conf_webc_sslport_title": "HTTPS Port",
"edt_dev_auth_key_title": "Authentication Token", "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_cool_adjust": "Subtract cool white",
"edt_dev_enum_sub_min_warm_adjust": "Subtract warm white", "edt_dev_enum_sub_min_warm_adjust": "Subtract warm white",
"edt_dev_enum_subtract_minimum": "Subtract minimum", "edt_dev_enum_subtract_minimum": "Subtract minimum",
"edt_dev_enum_white_off": "White off", "edt_dev_enum_white_off": "White off",
"edt_dev_general_colorOrder_title": "RGB byte order", "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": "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_heading_title": "General Settings",
"edt_dev_general_name_title": "Configuration name", "edt_dev_general_name_title": "Configuration name",
"edt_dev_general_rewriteTime_title": "Refresh time", "edt_dev_general_rewriteTime_title": "Refresh time",
@ -455,7 +517,9 @@
"edt_dev_spec_brightnessFactor_title": "Brightness factor", "edt_dev_spec_brightnessFactor_title": "Brightness factor",
"edt_dev_spec_brightnessMax_title": "Brightness maximum", "edt_dev_spec_brightnessMax_title": "Brightness maximum",
"edt_dev_spec_brightnessMin_title": "Brightness minimum", "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_brightnessThreshold_title": "Signal detection brightness minimum",
"edt_dev_spec_brightness_title": "Brightness",
"edt_dev_spec_chanperfixture_title": "Channels per Fixture", "edt_dev_spec_chanperfixture_title": "Channels per Fixture",
"edt_dev_spec_cid_title": "CID", "edt_dev_spec_cid_title": "CID",
"edt_dev_spec_clientKey_title": "Clientkey", "edt_dev_spec_clientKey_title": "Clientkey",
@ -463,6 +527,11 @@
"edt_dev_spec_debugLevel_title": "Debug Level", "edt_dev_spec_debugLevel_title": "Debug Level",
"edt_dev_spec_debugStreamer_title": "Streamer Debug", "edt_dev_spec_debugStreamer_title": "Streamer Debug",
"edt_dev_spec_delayAfterConnect_title": "Delay after connect", "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_dithering_title": "Dithering",
"edt_dev_spec_dmaNumber_title": "DMA channel", "edt_dev_spec_dmaNumber_title": "DMA channel",
"edt_dev_spec_gamma_title": "Gamma", "edt_dev_spec_gamma_title": "Gamma",
@ -477,6 +546,7 @@
"edt_dev_spec_intervall_title": "Interval", "edt_dev_spec_intervall_title": "Interval",
"edt_dev_spec_invert_title": "Invert signal", "edt_dev_spec_invert_title": "Invert signal",
"edt_dev_spec_latchtime_title": "Latch time", "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_ledIndex_title": "LED index",
"edt_dev_spec_ledType_title": "LED Type", "edt_dev_spec_ledType_title": "LED Type",
"edt_dev_spec_lightid_itemtitle": "ID", "edt_dev_spec_lightid_itemtitle": "ID",
@ -500,17 +570,20 @@
"edt_dev_spec_port_title": "Port", "edt_dev_spec_port_title": "Port",
"edt_dev_spec_printTimeStamp_title": "Add timestamp", "edt_dev_spec_printTimeStamp_title": "Add timestamp",
"edt_dev_spec_pwmChannel_title": "PWM channel", "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_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_sslHSTimeoutMax_title": "Streamer handshake timeout maximum",
"edt_dev_spec_sslHSTimeoutMin_title": "Streamer handshake timeout minimum", "edt_dev_spec_sslHSTimeoutMin_title": "Streamer handshake timeout minimum",
"edt_dev_spec_sslReadTimeout_title": "Streamer read timeout", "edt_dev_spec_sslReadTimeout_title": "Streamer read timeout",
"edt_dev_spec_switchOffOnBlack_title": "Switch off on black", "edt_dev_spec_switchOffOnBlack_title": "Switch off on black",
"edt_dev_spec_switchOffOnbelowMinBrightness_title": "Switch-off, below minimum", "edt_dev_spec_switchOffOnbelowMinBrightness_title": "Switch-off, below minimum",
"edt_dev_spec_targetIpHost_title": "Target IP/Hostname", "edt_dev_spec_syncOverwrite_title": "Disable synchronisation",
"edt_dev_spec_targetIp_title": "Target IP", "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_transeffect_title": "Transition effect",
"edt_dev_spec_transistionTimeExtra_title": "Extra time darkness", "edt_dev_spec_transistionTimeExtra_title": "Extra time darkness",
"edt_dev_spec_transistionTime_title": "Transition time", "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_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_fps": "Frames per seconds",
"edt_eff_frequency": "Frequency", "edt_eff_frequency": "Frequency",
"edt_eff_grayscale": "Grayscale",
"edt_eff_gif_header": "GIF's", "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_gif_header_desc": "This effect plays .gif files, provide a simple video like loop as effect.",
"edt_eff_height": "Height", "edt_eff_height": "Height",
"edt_eff_huechange": "Color change", "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_image": "Image file",
"edt_eff_url": "Image adress",
"edt_eff_initial_blink" : "Flash for attention",
"edt_eff_interval": "Interval", "edt_eff_interval": "Interval",
"edt_eff_knightrider_header": "Knight Rider", "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_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_ledlist": "LED List",
"edt_eff_ledtest_header": "Led Test", "edt_eff_ledtest_header": "LED Test",
"edt_eff_ledtest_header_desc": "Rotating output: Red, Blue, Green, White, Black", "edt_eff_ledtest_header_desc": "Rotating output: Red, Green, Blue, White, Black",
"edt_eff_length": "Length", "edt_eff_length": "Length",
"edt_eff_lightclock_header": "Light Clock", "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.", "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_moodblobs_header_desc": "Relax at the evening with slow moving and color changing blobs.",
"edt_eff_offset": "Offset", "edt_eff_offset": "Offset",
"edt_eff_pacman_header": "Pac-Man", "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": "Plasma",
"edt_eff_plasma_header_desc": "Color distortion in different directions", "edt_eff_plasma_header_desc": "Color distortion in different directions",
"edt_eff_police_header": "Police", "edt_eff_police_header": "Police",
@ -613,6 +692,7 @@
"edt_eff_reversedirection": "Reverse direction", "edt_eff_reversedirection": "Reverse direction",
"edt_eff_rotationtime": "Rotation time", "edt_eff_rotationtime": "Rotation time",
"edt_eff_saturation": "Saturation", "edt_eff_saturation": "Saturation",
"edt_eff_set_post_color" : "Set post color after alam",
"edt_eff_showseconds": "Show seconds", "edt_eff_showseconds": "Show seconds",
"edt_eff_sleeptime": "Sleep time", "edt_eff_sleeptime": "Sleep time",
"edt_eff_smooth_custom": "Enable smoothing", "edt_eff_smooth_custom": "Enable smoothing",
@ -699,6 +779,7 @@
"general_btn_off": "Off", "general_btn_off": "Off",
"general_btn_ok": "OK", "general_btn_ok": "OK",
"general_btn_on": "On", "general_btn_on": "On",
"general_btn_overwrite": "Overwrite",
"general_btn_rename": "Rename", "general_btn_rename": "Rename",
"general_btn_restarthyperion": "Restart Hyperion", "general_btn_restarthyperion": "Restart Hyperion",
"general_btn_save": "Save", "general_btn_save": "Save",
@ -716,11 +797,11 @@
"general_comp_BOBLIGHTSERVER": "Boblight Server", "general_comp_BOBLIGHTSERVER": "Boblight Server",
"general_comp_FLATBUFSERVER": "Flatbuffers Server", "general_comp_FLATBUFSERVER": "Flatbuffers Server",
"general_comp_FORWARDER": "Forwarder", "general_comp_FORWARDER": "Forwarder",
"general_comp_GRABBER": "Platform Capture", "general_comp_GRABBER": "Capture Screen",
"general_comp_LEDDEVICE": "LED device", "general_comp_LEDDEVICE": "LED Output",
"general_comp_PROTOSERVER": "Protocol Buffers Server", "general_comp_PROTOSERVER": "Protocol Buffers Server",
"general_comp_SMOOTHING": "Smoothing", "general_comp_SMOOTHING": "Smoothing",
"general_comp_V4L": "USB Capture", "general_comp_V4L": "Capture USB-Input",
"general_country_cn": "China", "general_country_cn": "China",
"general_country_de": "Germany", "general_country_de": "Germany",
"general_country_es": "Spain", "general_country_es": "Spain",
@ -730,14 +811,18 @@
"general_country_ru": "Russia", "general_country_ru": "Russia",
"general_country_uk": "United Kingdom", "general_country_uk": "United Kingdom",
"general_country_us": "United States", "general_country_us": "United States",
"general_disabled": "disabled",
"general_enabled": "enabled",
"general_speech_cs": "Czech", "general_speech_cs": "Czech",
"general_speech_de": "German", "general_speech_de": "German",
"general_speech_en": "English", "general_speech_en": "English",
"general_speech_es": "Spanish", "general_speech_es": "Spanish",
"general_speech_fr": "French", "general_speech_fr": "French",
"general_speech_it": "Italian", "general_speech_it": "Italian",
"general_speech_nb": "Norwegian (Bokmål)",
"general_speech_nl": "Dutch", "general_speech_nl": "Dutch",
"general_speech_pl": "Polish", "general_speech_pl": "Polish",
"general_speech_pt": "Portuguese",
"general_speech_ro": "Romanian", "general_speech_ro": "Romanian",
"general_speech_ru": "Russian", "general_speech_ru": "Russian",
"general_speech_sv": "Swedish", "general_speech_sv": "Swedish",
@ -752,42 +837,44 @@
"infoDialog_general_error_title": "Error", "infoDialog_general_error_title": "Error",
"infoDialog_general_success_title": "Success", "infoDialog_general_success_title": "Success",
"infoDialog_general_warning_title": "Warning", "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_text": "Are you sure to import \"$1\"? This process can't be reverted!",
"infoDialog_import_confirm_title": "Confirm import", "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_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_wizrgb_text": "Your RGB Byte Order is already well adjusted.",
"infoDialog_writeconf_error_text": "Saving your configuration failed.", "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_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_autorefresh": "This page will be automatically refreshed.",
"info_conlost_label_reason": "Possible reasons:", "info_conlost_label_reason": "Possible reasons:",
"info_conlost_label_reason1": "- Bad WLAN connection", "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_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_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_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_contusa": "...with your last steps. Thank you!",
"info_restart_rightback": "Hyperion will be right back immediately!", "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_togglelednumber": "LED numbers",
"main_ledsim_btn_toggleleds": "Show LEDs", "main_ledsim_btn_toggleleds": "Show LEDs",
"main_ledsim_btn_togglelivevideo": "Live video", "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_ledsim_title": "LED Visualization",
"main_menu_about_token": "About Hyperion", "main_menu_about_token": "About Hyperion",
"main_menu_colors_conf_token": "Image Processing", "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_dashboard_token": "Dashboard",
"main_menu_effect_conf_token": "Effects", "main_menu_effect_conf_token": "Effects",
"main_menu_effectsconfigurator_token": "Effects Configurator", "main_menu_effectsconfigurator_token": "Effects Configurator",
"main_menu_general_conf_token": "General", "main_menu_general_conf_token": "General",
"main_menu_grabber_conf_token": "Capturing Hardware", "main_menu_grabber_conf_token": "Capturing Hardware",
"main_menu_input_selection_token": "Input Selection", "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_logging_token": "Log",
"main_menu_network_conf_token": "Network Services", "main_menu_network_conf_token": "Network Services",
"main_menu_remotecontrol_token": "Remote Control", "main_menu_remotecontrol_token": "Remote Control",
@ -795,10 +882,10 @@
"main_menu_system_token": "System", "main_menu_system_token": "System",
"main_menu_update_token": "Update", "main_menu_update_token": "Update",
"main_menu_webconfig_token": "Web configuration", "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_adjustment_label": "Color adjustment",
"remote_color_button_reset": "Reset Color/Effect", "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": "Colors/Effects",
"remote_color_label_color": "Color:", "remote_color_label_color": "Color:",
"remote_components_intro": "Enable and disable components of Hyperion during runtime. $1", "remote_components_intro": "Enable and disable components of Hyperion during runtime. $1",
@ -807,7 +894,7 @@
"remote_effects_label_picture": "Picture:", "remote_effects_label_picture": "Picture:",
"remote_input_clearall": "Clear all Effects/Colors", "remote_input_clearall": "Clear all Effects/Colors",
"remote_input_duration": "Duration:", "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_ip": "IP:",
"remote_input_label": "Source Selection", "remote_input_label": "Source Selection",
"remote_input_label_autoselect": "Auto Selection", "remote_input_label_autoselect": "Auto Selection",
@ -817,17 +904,19 @@
"remote_input_setsource_btn": "Select Source", "remote_input_setsource_btn": "Select Source",
"remote_input_sourceactiv_btn": "Source active", "remote_input_sourceactiv_btn": "Source active",
"remote_input_status": "Status/Action", "remote_input_status": "Status/Action",
"remote_losthint": "Note: All changes are lost after a restart.", "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 could change it here: $1.", "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": "Mapping type",
"remote_maptype_label_multicolor_mean": "Multicolor", "remote_maptype_label_multicolor_mean": "Multicolor",
"remote_maptype_label_unicolor_mean": "Unicolor", "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_optgroup_usreffets": "User Effects",
"remote_videoMode_2D": "2D", "remote_videoMode_2D": "2D",
"remote_videoMode_3DSBS": "3DSBS", "remote_videoMode_3DSBS": "3DSBS",
"remote_videoMode_3DTAB": "3DTAB", "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", "remote_videoMode_label": "Video mode",
"support_label_affinstr1": "Click on the appropriate link of your country", "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", "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_ggtext": "Circle us on Google +!",
"support_label_ghtext": "Visit us on GitHub", "support_label_ghtext": "Visit us on GitHub",
"support_label_igtext": "Visit us on Instagram to watch the latest Hyperion pictures!", "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_spreadtheword": "Spread the word",
"support_label_title": "Support Hyperion", "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", "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_webpagetitle": "Webpage",
"support_label_webrestitle": "Information and help resources", "support_label_webrestitle": "Information and help resources",
"support_label_wikitext": "The A to Z source for almost everything Hyperion related", "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!", "support_label_yttext": "Bored from pictures? Check out our YouTube channel!",
"update_button_changelog": "Full changelog", "update_button_changelog": "Full changelog",
"update_button_install": "Install", "update_button_install": "Install",
@ -868,9 +957,9 @@
"wiz_cc_btn_stop": "Stop video", "wiz_cc_btn_stop": "Stop video",
"wiz_cc_btn_switchpic": "Switch picture", "wiz_cc_btn_switchpic": "Switch picture",
"wiz_cc_chooseid": "Define a name for this color profile.", "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_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_kodidisconlink": "Download link pictures:",
"wiz_cc_kodimsg_start": "Test success - time to proceed!", "wiz_cc_kodimsg_start": "Test success - time to proceed!",
"wiz_cc_kodishould": "Kodi should show the following picture: $1", "wiz_cc_kodishould": "Kodi should show the following picture: $1",
@ -918,6 +1007,7 @@
"wiz_hue_title": "Philips Hue Wizard", "wiz_hue_title": "Philips Hue Wizard",
"wiz_hue_username": "User ID:", "wiz_hue_username": "User ID:",
"wiz_identify": "Identify", "wiz_identify": "Identify",
"wiz_identify_tip": "Identify configured device by lighting it up",
"wiz_identify_light": "Identify $1", "wiz_identify_light": "Identify $1",
"wiz_ids_disabled": "Deactivated", "wiz_ids_disabled": "Deactivated",
"wiz_ids_entire": "Whole picture", "wiz_ids_entire": "Whole picture",

View File

@ -5,8 +5,8 @@
"InfoDialog_changePassword_title": "Cambiar Contraseña", "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_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_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_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_lang_title": "Configuración de idioma", "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_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_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!", "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_intro": "Ajustes básicos de Hyperion y WebUI que no encajan en otra categoría.",
"conf_general_label_title": "Configuración General", "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_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_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_expl": "Explicación",
"conf_helptable_option": "Opció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_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_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_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_btn_checklist": "Mostrar lista",
"conf_leds_layout_button_savelay": "Guardar Disposición", "conf_leds_layout_button_savelay": "Guardar Disposición",
"conf_leds_layout_button_updsim": "Actualizar Vista Previa", "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_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_ledcontroller": "Controlador LED",
"conf_leds_nav_label_ledlayout": "Disposición 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_RPiGPIO": "GPIO RPi",
"conf_leds_optgroup_RPiPWM": "PWM RPi", "conf_leds_optgroup_RPiPWM": "PWM RPi",
"conf_leds_optgroup_RPiSPI": "SPI 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_network": "Red",
"conf_leds_optgroup_other": "Otro",
"conf_leds_optgroup_usb": "USB/Serial", "conf_leds_optgroup_usb": "USB/Serial",
"conf_logging_btn_autoscroll": "Desplazamiento automático", "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_btn_pbupload": "Crear informe para solicitud de soporte",
"conf_logging_contpolicy": "Informe de la Política de Privacidad", "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_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_lastreports": "Informes anteriores",
"conf_logging_logoutput": "Resultado del registro",
"conf_logging_nomessage": "No hay mensajes de registro disponibles.", "conf_logging_nomessage": "No hay mensajes de registro disponibles.",
"conf_logging_report": "Informe", "conf_logging_report": "Informe",
"conf_logging_uplfailed": "¡Subida fallida! ¡Por favor revise su conexion a internet!", "conf_logging_uplfailed": "¡Subida fallida! ¡Por favor revise su conexion a internet!",
@ -164,16 +181,20 @@
"dashboard_infobox_label_instance": "Instancia:", "dashboard_infobox_label_instance": "Instancia:",
"dashboard_infobox_label_latesthyp": "Última versión de Hyperion:", "dashboard_infobox_label_latesthyp": "Última versión de Hyperion:",
"dashboard_infobox_label_platform": "Plataforma:", "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_smartacc": "Acceso Inteligente",
"dashboard_infobox_label_statush": "Estado de Hyperion:", "dashboard_infobox_label_statush": "Estado de Hyperion:",
"dashboard_infobox_label_title": "Información", "dashboard_infobox_label_title": "Información",
"dashboard_infobox_label_watchedversionbranch": "Rama de la versión visualizada:", "dashboard_infobox_label_watchedversionbranch": "Rama de la versión visualizada:",
"dashboard_infobox_message_updatesuccess": "Ejecutas la última versión de Hyperion.", "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_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_label_intro": "El cuadro de mandos te ofrece una visión general sobre el estado de Hyperion.",
"dashboard_message_default_password": "Establecida la contraseña predeterminada para la WebUi. Recomendamos encarecidamente cambiar esto.", "dashboard_message_default_password": "La WebUI tiene actualmente la contraseña por defecto. Te recomendamos encarecidamente que la cambies.",
"dashboard_message_default_password_t": "Establecida la contraseña predeterminada de WebUi", "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_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": "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", "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_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_itemtitle": "Ruta",
"edt_conf_effp_paths_title": "Ruta(s) del efecto", "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_NO_CHANGE": "Automático",
"edt_conf_enum_NTSC": "NTSC", "edt_conf_enum_NTSC": "NTSC",
"edt_conf_enum_PAL": "PAL", "edt_conf_enum_PAL": "PAL",
"edt_conf_enum_SECAM": "SECAM", "edt_conf_enum_SECAM": "SECAM",
"edt_conf_enum_VERTICAL": "Vertical",
"edt_conf_enum_automatic": "Automático", "edt_conf_enum_automatic": "Automático",
"edt_conf_enum_bbclassic": "Clásico", "edt_conf_enum_bbclassic": "Clásico",
"edt_conf_enum_bbdefault": "Predeterminado", "edt_conf_enum_bbdefault": "Predeterminado",
@ -283,11 +307,12 @@
"edt_conf_enum_hsv": "HSV", "edt_conf_enum_hsv": "HSV",
"edt_conf_enum_left_right": "De izquierda a derecha", "edt_conf_enum_left_right": "De izquierda a derecha",
"edt_conf_enum_linear": "Lineal", "edt_conf_enum_linear": "Lineal",
"edt_conf_enum_logdebug": "Depurar", "edt_conf_enum_logdebug": "Depuración",
"edt_conf_enum_logsilent": "Silenciado", "edt_conf_enum_logsilent": "Silenciado",
"edt_conf_enum_logverbose": "Detallado", "edt_conf_enum_logverbose": "Detallado",
"edt_conf_enum_logwarn": "Advertencia", "edt_conf_enum_logwarn": "Advertencia",
"edt_conf_enum_multicolor_mean": "Multicolor", "edt_conf_enum_multicolor_mean": "Multicolor",
"edt_conf_enum_please_select": "Por favor, elije",
"edt_conf_enum_rbg": "RBG", "edt_conf_enum_rbg": "RBG",
"edt_conf_enum_rgb": "RGB", "edt_conf_enum_rgb": "RGB",
"edt_conf_enum_right_left": "De derecha a izquierda", "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_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_itemtitle": "Destino json",
"edt_conf_fw_json_title": "Lista de clientes 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_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_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", "edt_conf_gen_name_title": "Nombre de configuración",
@ -340,10 +366,19 @@
"edt_conf_general_port_title": "Puerto", "edt_conf_general_port_title": "Puerto",
"edt_conf_general_priority_expl": "La prioridad de este componente", "edt_conf_general_priority_expl": "La prioridad de este componente",
"edt_conf_general_priority_title": "Canal prioritario", "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_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_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_expl": "Habilita la captura USB para esta instalación de hardware led",
"edt_conf_instC_v4lEnable_title": "Habilitar captura USB", "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_instCapture_heading_title": "Captura de instancias",
"edt_conf_js_heading_title": "Servidor JSON", "edt_conf_js_heading_title": "Servidor JSON",
"edt_conf_log_heading_title": "Registro", "edt_conf_log_heading_title": "Registro",
@ -391,21 +426,41 @@
"edt_conf_v4l2_cecDetection_title": "Detección CEC", "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_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_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_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_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_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_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_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_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_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_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_expl": "Los fotogramas soportados por segundo del dispositivo activo",
"edt_conf_v4l2_framerate_title": "Fotogramas por segundo", "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_expl": "Oscurece los valores bajos de color verde (reconocidos como negros)",
"edt_conf_v4l2_greenSignalThreshold_title": "Umbral de señal verde", "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_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_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_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_expl": "Oscurece los valores bajos de color rojo (reconocidos como negros)",
"edt_conf_v4l2_redSignalThreshold_title": "Umbral de señal rojo", "edt_conf_v4l2_redSignalThreshold_title": "Umbral de señal rojo",
"edt_conf_v4l2_resolution_expl": "Una lista de resoluciones soportadas del dispositivo activo", "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_expl": "Puerto del servidor web HTTPS",
"edt_conf_webc_sslport_title": "Puerto HTTPS", "edt_conf_webc_sslport_title": "Puerto HTTPS",
"edt_dev_auth_key_title": "Token de autenticación", "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_cool_adjust": "Min. Ajuste fresco",
"edt_dev_enum_sub_min_warm_adjust": "Min. Ajuste caliente", "edt_dev_enum_sub_min_warm_adjust": "Min. Ajuste caliente",
"edt_dev_enum_subtract_minimum": "Restar el mínimo", "edt_dev_enum_subtract_minimum": "Restar el mínimo",
"edt_dev_enum_white_off": "Blanco apagado", "edt_dev_enum_white_off": "Blanco apagado",
"edt_dev_general_colorOrder_title": "Orden de bytes RGB", "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": "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_heading_title": "Configuración general",
"edt_dev_general_name_title": "Nombre de configuración", "edt_dev_general_name_title": "Nombre de configuración",
"edt_dev_general_rewriteTime_title": "Tiempo de actualizació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_brightnessFactor_title": "Factor de brillo",
"edt_dev_spec_brightnessMax_title": "Brillo máximo", "edt_dev_spec_brightnessMax_title": "Brillo máximo",
"edt_dev_spec_brightnessMin_title": "Brillo mínimo", "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_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_chanperfixture_title": "Canales por Fixture",
"edt_dev_spec_cid_title": "CID", "edt_dev_spec_cid_title": "CID",
"edt_dev_spec_clientKey_title": "Llave de cliente", "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_debugLevel_title": "Nivel de depuración de la conexión del Streamer",
"edt_dev_spec_debugStreamer_title": "Depuración de 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_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_dithering_title": "Tintineo",
"edt_dev_spec_dmaNumber_title": "Canal DMA", "edt_dev_spec_dmaNumber_title": "Canal DMA",
"edt_dev_spec_gamma_title": "Gamma", "edt_dev_spec_gamma_title": "Gamma",
@ -477,6 +542,7 @@
"edt_dev_spec_intervall_title": "Intervalo", "edt_dev_spec_intervall_title": "Intervalo",
"edt_dev_spec_invert_title": "Invertir señal", "edt_dev_spec_invert_title": "Invertir señal",
"edt_dev_spec_latchtime_title": "Tiempo de cierre", "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_ledIndex_title": "Índice LED",
"edt_dev_spec_ledType_title": "Tipo de LED", "edt_dev_spec_ledType_title": "Tipo de LED",
"edt_dev_spec_lightid_itemtitle": "ID", "edt_dev_spec_lightid_itemtitle": "ID",
@ -501,6 +567,7 @@
"edt_dev_spec_printTimeStamp_title": "Añadir marca de tiempo", "edt_dev_spec_printTimeStamp_title": "Añadir marca de tiempo",
"edt_dev_spec_pwmChannel_title": "Canal PWM", "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": "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_serial_title": "Número de serie",
"edt_dev_spec_spipath_title": "Ruta SPI", "edt_dev_spec_spipath_title": "Ruta SPI",
"edt_dev_spec_sslHSTimeoutMax_title": "Máximo tiempo de espera para el contacto con el Streamer", "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_sslReadTimeout_title": "Tiempo de lectura del Streamer",
"edt_dev_spec_switchOffOnBlack_title": "Apagar en negro", "edt_dev_spec_switchOffOnBlack_title": "Apagar en negro",
"edt_dev_spec_switchOffOnbelowMinBrightness_title": "Apagado, por debajo del mínimo", "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": "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_targetIp_title": "IP de destino",
"edt_dev_spec_transeffect_title": "Efecto de transición", "edt_dev_spec_transeffect_title": "Efecto de transición",
"edt_dev_spec_transistionTimeExtra_title": "Oscuridad de tiempo extra", "edt_dev_spec_transistionTimeExtra_title": "Oscuridad de tiempo extra",
@ -550,7 +619,7 @@
"edt_eff_colorrandom": "Color aleatório", "edt_eff_colorrandom": "Color aleatório",
"edt_eff_colorshift": "Turno de Color", "edt_eff_colorshift": "Turno de Color",
"edt_eff_colorstart": "Color de inicio", "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_colortwo": "Color dos",
"edt_eff_count": "Cuenta", "edt_eff_count": "Cuenta",
"edt_eff_countries": "Países", "edt_eff_countries": "Países",
@ -575,6 +644,7 @@
"edt_eff_height": "Altura", "edt_eff_height": "Altura",
"edt_eff_huechange": "Cambio de color", "edt_eff_huechange": "Cambio de color",
"edt_eff_image": "Archivo de imagen", "edt_eff_image": "Archivo de imagen",
"edt_eff_initial_blink": "Flash para llamar la atención",
"edt_eff_interval": "Intervalo", "edt_eff_interval": "Intervalo",
"edt_eff_knightrider_header": "Coche Fantástico", "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.", "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_reversedirection": "Dirección inversa",
"edt_eff_rotationtime": "Tiempo de rotación", "edt_eff_rotationtime": "Tiempo de rotación",
"edt_eff_saturation": "Saturació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_showseconds": "Mostrar segundos",
"edt_eff_sleeptime": "Hora de dormir", "edt_eff_sleeptime": "Hora de dormir",
"edt_eff_smooth_custom": "Habilitar suavizado", "edt_eff_smooth_custom": "Habilitar suavizado",
@ -698,6 +769,7 @@
"general_btn_off": "Apagado", "general_btn_off": "Apagado",
"general_btn_ok": "OK", "general_btn_ok": "OK",
"general_btn_on": "Encendido", "general_btn_on": "Encendido",
"general_btn_overwrite": "Sobrescribir",
"general_btn_rename": "Renombrar", "general_btn_rename": "Renombrar",
"general_btn_restarthyperion": "Reiniciar Hyperion", "general_btn_restarthyperion": "Reiniciar Hyperion",
"general_btn_save": "Guardar", "general_btn_save": "Guardar",
@ -729,14 +801,18 @@
"general_country_ru": "Rusia", "general_country_ru": "Rusia",
"general_country_uk": "Reino Unido", "general_country_uk": "Reino Unido",
"general_country_us": "Estados Unidos", "general_country_us": "Estados Unidos",
"general_disabled": "Deshabilitado",
"general_enabled": "Habilitado",
"general_speech_cs": "Czech", "general_speech_cs": "Czech",
"general_speech_de": "Alemán", "general_speech_de": "Alemán",
"general_speech_en": "Inglés", "general_speech_en": "Inglés",
"general_speech_es": "Español", "general_speech_es": "Español",
"general_speech_fr": "Francés", "general_speech_fr": "Francés",
"general_speech_it": "Italiano", "general_speech_it": "Italiano",
"general_speech_nb": "Noruego (Bokmål)",
"general_speech_nl": "Holandés", "general_speech_nl": "Holandés",
"general_speech_pl": "Polaco", "general_speech_pl": "Polaco",
"general_speech_pt": "Portugués",
"general_speech_ro": "Rumano", "general_speech_ro": "Rumano",
"general_speech_ru": "Ruso", "general_speech_ru": "Ruso",
"general_speech_sv": "Sueco", "general_speech_sv": "Sueco",
@ -756,6 +832,10 @@
"infoDialog_import_confirm_title": "Confirmar importación", "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_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_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_wizrgb_text": "Tu Orden de Bytes RGB ya está bien ajustado.",
"infoDialog_writeconf_error_text": "Error al guardar tu configuración.", "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.", "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_togglelednumber": "Números LED",
"main_ledsim_btn_toggleleds": "Mostrar LEDs", "main_ledsim_btn_toggleleds": "Mostrar LEDs",
"main_ledsim_btn_togglelivevideo": "video en vivo", "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_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_ledsim_title": "Visualización LED",
"main_menu_about_token": "Acerca de Hyperion", "main_menu_about_token": "Acerca de Hyperion",
@ -784,8 +865,9 @@
"main_menu_effect_conf_token": "Efectos", "main_menu_effect_conf_token": "Efectos",
"main_menu_effectsconfigurator_token": "Configurador de Efectos", "main_menu_effectsconfigurator_token": "Configurador de Efectos",
"main_menu_general_conf_token": "General", "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_input_selection_token": "Selección de entrada",
"main_menu_instcapture_conf_token": "Fuentes",
"main_menu_leds_conf_token": "Hardware LED", "main_menu_leds_conf_token": "Hardware LED",
"main_menu_logging_token": "Log", "main_menu_logging_token": "Log",
"main_menu_network_conf_token": "Servicios de red", "main_menu_network_conf_token": "Servicios de red",
@ -822,6 +904,8 @@
"remote_maptype_label_multicolor_mean": "Multicolor", "remote_maptype_label_multicolor_mean": "Multicolor",
"remote_maptype_label_unicolor_mean": "Unicolor", "remote_maptype_label_unicolor_mean": "Unicolor",
"remote_optgroup_syseffets": "Efectos Proporcionados", "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_optgroup_usreffets": "Efectos de Usuario",
"remote_videoMode_2D": "2D", "remote_videoMode_2D": "2D",
"remote_videoMode_3DSBS": "3DSBS", "remote_videoMode_3DSBS": "3DSBS",
@ -918,6 +1002,7 @@
"wiz_hue_username": "Nombre de usuario:", "wiz_hue_username": "Nombre de usuario:",
"wiz_identify": "Identificar", "wiz_identify": "Identificar",
"wiz_identify_light": "Identificar $1", "wiz_identify_light": "Identificar $1",
"wiz_identify_tip": "Identificar el dispositivo configurado iluminándolo",
"wiz_ids_disabled": "Desactivado", "wiz_ids_disabled": "Desactivado",
"wiz_ids_entire": "Toda la imagen", "wiz_ids_entire": "Toda la imagen",
"wiz_noLights": "¡No se encontró $1! Por favor, conecta las luces a la red o configúralas manualmente.", "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_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_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_iswitch_title": "Commutateur Hyperion",
"InfoDialog_lang_text": "Si la detection automatique de la langue vous correspond pas vous pouvez la changer ici.", "InfoDialog_nowrite_foottext": "Le Web UI sera débloqué automatiquement après que vous ayez résolu les problèmes.",
"InfoDialog_lang_title": "Réglage de la langue", "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_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_title": "Erreur de droit d'écriture !", "InfoDialog_nowrite_title": "Erreur de droit d'écriture !",
"about_3rd_party_licenses": "Licences tierces", "about_3rd_party_licenses": "Licences tierces",
"about_build": "Build", "about_build": "Build",
"about_builddate": "Date de Build", "about_builddate": "Date du build",
"about_contribute": "Développez Hyperion avec nous !", "about_contribute": "Développez Hyperion avec nous !",
"about_credits": "Le mérite revient à tous ces développeurs !", "about_credits": "Le mérite revient à tous ces développeurs !",
"about_resources": "$1 bibliothèques", "about_resources": "$1 bibliothèques",
"about_translations": "Traductions", "about_translations": "Traductions",
"about_version": "Version :", "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_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 une ou plusieurs profil de calibration, ajuster chaque couleurs, luminosité, linéarité et plus.", "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 lissage aplatit les changements de couleur/luminosité pour réduire les distractions gênantes.", "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_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_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_createInst_btn": "Créer une instance",
"conf_general_impexp_expbtn": "Exporter", "conf_general_impexp_expbtn": "Exporter",
"conf_general_impexp_impbtn": "Importer", "conf_general_impexp_impbtn": "Importer",
@ -31,7 +29,7 @@
"conf_general_inst_actionhead": "Action", "conf_general_inst_actionhead": "Action",
"conf_general_inst_name_title": "Nouveau nom d'instance", "conf_general_inst_name_title": "Nouveau nom d'instance",
"conf_general_inst_namehead": "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_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_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.", "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_btn_checklist": "Afficher la checklist",
"conf_leds_layout_button_savelay": "Sauvegarder la disposition", "conf_leds_layout_button_savelay": "Sauvegarder la disposition",
"conf_leds_layout_button_updsim": "Mettre à jour la prévisualisation", "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_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 par rapport à l'avant de votre TV, pas l'arrière.", "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_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_bottom": "Bas",
"conf_leds_layout_cl_bottomleft": "Bas gauche (Coin)", "conf_leds_layout_cl_bottomleft": "Bas gauche (Coin)",
@ -87,39 +85,38 @@
"conf_leds_layout_ma_vert": "Vertical", "conf_leds_layout_ma_vert": "Vertical",
"conf_leds_layout_matrix": "Disposition en matrice (Mur LED)", "conf_leds_layout_matrix": "Disposition en matrice (Mur LED)",
"conf_leds_layout_peview": "Prévisualisation de la disposition des 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_l1": "Ceci est votre première LED (position de l'entrée)",
"conf_leds_layout_preview_l2": "Assistant disponible", "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 total des LED : $1 A", "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_originCL": "Créé à partir : Disposition classique (Cadre LED)",
"conf_leds_layout_preview_originMA": "Crée à partir : Disposition en matrice (Mur 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_originTEXT": "Crée à partir : Champ texte",
"conf_leds_layout_preview_totalleds": "Nombre total de LED : $1", "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_ledcontroller": "Contrôleur LED",
"conf_leds_nav_label_ledlayout": "Disposition des LED", "conf_leds_nav_label_ledlayout": "Disposition des LED",
"conf_leds_optgroup_RPiGPIO": "RPi GPIO", "conf_leds_optgroup_RPiGPIO": "RPi GPIO",
"conf_leds_optgroup_RPiPWM": "RPi PWM", "conf_leds_optgroup_RPiPWM": "RPi PWM",
"conf_leds_optgroup_RPiSPI": "RPi SPI", "conf_leds_optgroup_RPiSPI": "RPi SPI",
"conf_leds_optgroup_debug": "Débug",
"conf_leds_optgroup_network": "Réseau", "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_autoscroll": "Défilement automatique",
"conf_logging_btn_pbupload": "Télécharger un rapport pour des demandes au support", "conf_logging_btn_pbupload": "Télécharger un rapport pour des demandes au support",
"conf_logging_contpolicy": "Signaler la politique de confidentialité", "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_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_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_uploading": "Préparation des données...",
"conf_logging_uplpolicy": "En cliquant sur ce bouton vous acceptez le", "conf_logging_uplpolicy": "En cliquant sur ce bouton vous acceptez le",
"conf_logging_yourlink": "Lier à votre rapport", "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_createToken_btn": "Créer un token",
"conf_network_fbs_intro": "Récepteur Google Fltbuffers, utilisé pour la transmission rapide des images", "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ée vers une seconde instance d'Hyperion qui peut être contrôlée par une autre contrôleur LED.", "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 JSON-RPC-Port de toutes les instances d'Hyperion utilisé pour de contrôle à distance.", "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 PROTO-Port de toutes les intactes d'Hyperion, utilisé les flux d'images (HyperionScreenCap, Kodi Add-on, Android Hyperion Grabber, ...)", "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_cidhead": "Description",
"conf_network_tok_comment_title": "Description du token", "conf_network_tok_comment_title": "Description du token",
"conf_network_tok_diaTitle": "Le nouveau token a été créé !", "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": "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_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": "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_confsave_success_t": "Configuration sauvegardée",
"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": "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ériel LED désactivée", "dashboard_alert_message_disabled_t": "Instance matérielle LED désactivée",
"dashboard_componentbox_label_comp": "Composant", "dashboard_componentbox_label_comp": "Composant",
"dashboard_componentbox_label_status": "Statut", "dashboard_componentbox_label_status": "Etat",
"dashboard_componentbox_label_title": "Statut des composants", "dashboard_componentbox_label_title": "Etat des composants",
"dashboard_infobox_label_currenthyp": "Votre version d'Hyperion : ", "dashboard_infobox_label_currenthyp": "Votre version d'Hyperion : ",
"dashboard_infobox_label_disableh": "Désactiver l'instance : $1", "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_instance": "Instance",
"dashboard_infobox_label_latesthyp": "Dernière version d'Hyperion : ", "dashboard_infobox_label_latesthyp": "Dernière version d'Hyperion : ",
"dashboard_infobox_label_platform": "Platforme", "dashboard_infobox_label_platform": "Plateforme",
"dashboard_infobox_label_ports": "Ports (flat|proto)", "dashboard_infobox_label_ports": "Ports",
"dashboard_infobox_label_smartacc": "Accès Simplifié", "dashboard_infobox_label_smartacc": "Accès simplifié",
"dashboard_infobox_label_statush": "Statut d'Hyperion : ", "dashboard_infobox_label_statush": "Statut d'Hyperion : ",
"dashboard_infobox_label_title": "Information", "dashboard_infobox_label_title": "Information",
"dashboard_infobox_label_watchedversionbranch": "Branche surveillée :", "dashboard_infobox_label_watchedversionbranch": "Branche surveillée :",
"dashboard_infobox_message_updatesuccess": "Vous utilisez la dernière version d'Hyperion.", "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_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_message_do_not_show_again": "Ne plus afficher ce message",
"dashboard_newsbox_label_title": "Hyperion - Blog", "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_noconn": "Impossible d'accéder au blog d'Hyperion. Votre connexion internet fonctionne-t-elle ?",
"dashboard_newsbox_readmore": "Lire plus", "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_degree": "°",
"edt_append_hz": "Hz", "edt_append_hz": "Hz",
"edt_append_leds": "Leds", "edt_append_leds": "Leds",
@ -539,7 +536,7 @@
"general_btn_cancel": "Annuler", "general_btn_cancel": "Annuler",
"general_btn_continue": "Continuer", "general_btn_continue": "Continuer",
"general_btn_delete": "Supprimer", "general_btn_delete": "Supprimer",
"general_btn_iswitch": "Bascule", "general_btn_iswitch": "Basculer",
"general_btn_next": "Suivant", "general_btn_next": "Suivant",
"general_btn_off": "Off", "general_btn_off": "Off",
"general_btn_ok": "OK", "general_btn_ok": "OK",
@ -555,23 +552,23 @@
"general_col_blue": "bleu", "general_col_blue": "bleu",
"general_col_green": "vert", "general_col_green": "vert",
"general_col_red": "rouge", "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_BOBLIGHTSERVER": "Serveur Boblight",
"general_comp_FLATBUFSERVER": "Serveur Flatbuffers", "general_comp_FLATBUFSERVER": "Serveur Flatbuffers",
"general_comp_FORWARDER": "Transfert", "general_comp_FORWARDER": "Transfert",
"general_comp_GRABBER": "Platforme de capture", "general_comp_GRABBER": "Platforme de capture",
"general_comp_LEDDEVICE": "Equipement LED", "general_comp_LEDDEVICE": "Périphérique LED",
"general_comp_PROTOSERVER": "Protocole du Serveur Flatbuffers", "general_comp_PROTOSERVER": "Serveur Protocolbuffers",
"general_comp_SMOOTHING": "Fondu", "general_comp_SMOOTHING": "Fondu",
"general_comp_V4L": "Capture par USB", "general_comp_V4L": "Capture USB",
"general_country_de": "Allemagne", "general_country_de": "Allemagne",
"general_country_es": "Espagne", "general_country_es": "Espagne",
"general_country_fr": "France", "general_country_fr": "France",
"general_country_it": "Italie", "general_country_it": "Italie",
"general_country_nl": "Hollande", "general_country_nl": "Hollande",
"general_country_uk": "Angleterre", "general_country_uk": "Royaume-Uni",
"general_country_us": "États-Unis", "general_country_us": "États-Unis",
"general_speech_cs": "République Tchèque", "general_speech_cs": "Tchèque",
"general_speech_de": "Allemand", "general_speech_de": "Allemand",
"general_speech_en": "Anglais", "general_speech_en": "Anglais",
"general_speech_es": "Espagnol", "general_speech_es": "Espagnol",
@ -583,7 +580,7 @@
"general_speech_sv": "Suédois", "general_speech_sv": "Suédois",
"general_speech_vi": "Vietnamien", "general_speech_vi": "Vietnamien",
"general_webui_title": "Hyperion - Configuration web", "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_checklist_title": "Checklist !",
"infoDialog_effconf_created_text": "L'effet \"$1\" a été correctement créé !", "infoDialog_effconf_created_text": "L'effet \"$1\" a été correctement créé !",
"infoDialog_effconf_deleted_text": "L'effet \"$1\" a été correctement supprimé !", "infoDialog_effconf_deleted_text": "L'effet \"$1\" a été correctement supprimé !",
@ -591,43 +588,43 @@
"infoDialog_general_success_title": "Succès", "infoDialog_general_success_title": "Succès",
"infoDialog_general_warning_title": "Avertissement", "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_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_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_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_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_wizrgb_text": "L'ordre des octets RVB est déjà correctement défini.",
"infoDialog_writeconf_error_text": "Echec de sauvegarde de votre configuration.", "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_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_autorecon": "Nous nous reconnecterons dès que Hyperion sera disponible.",
"info_conlost_label_autorefresh": "Cette page sera automatiquement rafraîchie.", "info_conlost_label_autorefresh": "Cette page sera automatiquement rafraîchie.",
"info_conlost_label_reason": "Raisons possible : ", "info_conlost_label_reason": "Raisons possibles : ",
"info_conlost_label_reason1": "- Mauvaise connexion WLAN", "info_conlost_label_reason1": "- Mauvaise connexion Wi-Fi",
"info_conlost_label_reason2": "- Vous avez effectué une mise à jour", "info_conlost_label_reason2": "- Vous effectuez une mise à jour",
"info_conlost_label_reason3": "- Hyperion ne fonctionne pas", "info_conlost_label_reason3": "- Hyperion n'est pas démarré",
"info_conlost_label_reload": "Arrêt de la reconnection automatique - dépassement de limite, rafraîchissez la page ou cliquez ici.", "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_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_contusa": "... détaillant les dernières étapes à franchir. Merci !",
"info_restart_rightback": "Hyperion sera de retour rapidement ! ", "info_restart_rightback": "Hyperion sera de retour rapidement !",
"info_restart_title": "Redémarrage...", "info_restart_title": "Redémarrage en cours...",
"main_ledsim_btn_togglelednumber": "Nombre de LED", "main_ledsim_btn_togglelednumber": "Nombre de LED",
"main_ledsim_btn_toggleleds": "Montrer les LEDs", "main_ledsim_btn_toggleleds": "Montrer les LEDs",
"main_ledsim_btn_togglelivevideo": "Vidéo en temps réel", "main_ledsim_btn_togglelivevideo": "Vidéo 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_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_ledsim_title": "Visualisation LED",
"main_menu_about_token": "À propos d'Hyperion", "main_menu_about_token": "À propos d'Hyperion",
"main_menu_colors_conf_token": "Traitement d'image", "main_menu_colors_conf_token": "Traitement d'image",
"main_menu_configuration_token": "Configuration", "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_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_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_input_selection_token": "Sélection de l'entrée",
"main_menu_leds_conf_token": "Matériel LED", "main_menu_leds_conf_token": "Matériel LED",
"main_menu_logging_token": "Journal", "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_remotecontrol_token": "Contrôle à distance",
"main_menu_support_token": "Support", "main_menu_support_token": "Support",
"main_menu_system_token": "Système", "main_menu_system_token": "Système",
@ -653,45 +650,45 @@
"remote_input_priority": "Priorité", "remote_input_priority": "Priorité",
"remote_input_setsource_btn": "Sélectionner une source", "remote_input_setsource_btn": "Sélectionner une source",
"remote_input_sourceactiv_btn": "Source Active", "remote_input_sourceactiv_btn": "Source Active",
"remote_input_status": "Statut/Action", "remote_input_status": "Etat/Action",
"remote_losthint": "Note : Toutes le modification seront perdus après redémarrage.", "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_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": "Type de correspondance",
"remote_maptype_label_multicolor_mean": "Multicolor", "remote_maptype_label_multicolor_mean": "Multicolore",
"remote_maptype_label_unicolor_mean": "Unicolore", "remote_maptype_label_unicolor_mean": "Unicolore",
"remote_optgroup_syseffets": "Effets fournis", "remote_optgroup_syseffets": "Effets fournis",
"remote_optgroup_usreffets": "Effets utilisateurs", "remote_optgroup_usreffets": "Effets utilisateur",
"remote_videoMode_2D": "2D", "remote_videoMode_2D": "2D",
"remote_videoMode_3DSBS": "3DSBS", "remote_videoMode_3DSBS": "3DSBS",
"remote_videoMode_3DTAB": "3DTAB", "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_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", "remote_videoMode_label": "Mode vidéo",
"support_label_affinstr1": "Cliquez sur le lien associé à votre pays", "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_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. Essayer ! ", "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_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_donationpp": "Don : ",
"support_label_fbtext": "Partagez notre page Facebook et recevez une notification lorsque de nouvelles mises à jour sont publiées.", "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_forumtext": "Vitrines, discussions, aide et plus",
"support_label_forumtitle": "Forum", "support_label_forumtitle": "Forum",
"support_label_ggtext": "Ajouter nous à votre cercle Google+ !", "support_label_ggtext": "Ajouter nous à votre cercle Google+ !",
"support_label_ghtext": "Visitez-nous sur Github", "support_label_ghtext": "Rendez-nous visite sur GitHub",
"support_label_igtext": "Visitez notre Instagram pour votre les dernières photos Hyperion ! ", "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_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_spreadtheword": "Faites passer le message",
"support_label_title": "Support d'Hypersion", "support_label_title": "Support d'Hyperion",
"support_label_twtext": "Partagez et suivez nous sur Twitter, soyez informé des dernière mise à jour 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_webpagetext": "Accueil d'Hyperion",
"support_label_webpagetitle": "Page web", "support_label_webpagetitle": "Page web",
"support_label_webrestitle": "Informations et ressources d'aide", "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_wikititle": "Wiki",
"support_label_yttext": "Lassez des images ? Découvrez notre chaîne YouTube !", "support_label_yttext": "Lassé des images ? Découvrez notre chaîne YouTube !",
"update_button_changelog": "Log de modification complet", "update_button_changelog": "Changelog complet",
"update_button_install": "Installation", "update_button_install": "Installation",
"update_error_getting_versions": "Nous avons eu des problèmes pour déterminer la dernière version disponible.", "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_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_label_type": "Type :",
"update_no_updates_for_branch": "Pas de mise à jour pour le canal sélectionné.", "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_btn_switchpic": "Changer d'image",
"wiz_cc_chooseid": "Donner un nom à ce profil de couleurs.", "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_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_kodicon": "Serveur web Kodi trouvé, continuer avec support Kodi.",
"wiz_cc_kodidiscon": "Le serveur web Kodi non trouvé, continuer sans 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_kodidisconlink": "Télécharger les images des liens : ",
"wiz_cc_kodimsg_start": "Test validé - Il est temps de continuer !", "wiz_cc_kodimsg_start": "Test validé - Il est temps de continuer !",
"wiz_cc_kodishould": "Kodi devrait montrer cette image : $1", "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_lettvshow": "Afficher sur votre TV cette image : $1",
"wiz_cc_lettvshowm": "Vérifier avec ces images : $1", "wiz_cc_lettvshowm": "Vérifier avec ces images : $1",
"wiz_cc_link": "Cliquez moi !", "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_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_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_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_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_blinkblue": "Laissez ID $1 s'allumer en bleu",
"wiz_hue_clientkey": "Clé Client :", "wiz_hue_clientkey": "Clé Client :",
"wiz_hue_create_user": "Créer un nouvel utilisateur", "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_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_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_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_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_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_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_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_press_link": "Appuyez sur le bouton de votre pont Philips Hue.",
"wiz_hue_searchb": "Rechercher de Bridge...", "wiz_hue_searchb": "Recherche d'un pont Philips Hue...",
"wiz_hue_title": "Assistant de configuration Philips Hue", "wiz_hue_title": "Assistant de configuration Philips Hue",
"wiz_hue_username": "ID utilisateur : ", "wiz_hue_username": "ID utilisateur : ",
"wiz_identify": "Identifié", "wiz_identify": "Identifié",
@ -735,9 +732,9 @@
"wiz_ids_disabled": "Désactivé", "wiz_ids_disabled": "Désactivé",
"wiz_ids_entire": "Image entière", "wiz_ids_entire": "Image entière",
"wiz_pos": "Position/État", "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_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_q": "Quelle couleur affiche votre configuration, lorsque le point coloré ci-dessus s'affiche ...",
"wiz_rgb_qgend": "...vert ?", "wiz_rgb_qgend": "...vert ?",
"wiz_rgb_qrend": "...red ?", "wiz_rgb_qrend": "...red ?",

View File

@ -5,8 +5,6 @@
"InfoDialog_changePassword_title": "Cambia Password", "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_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_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_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_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!", "InfoDialog_nowrite_title": "errore dei permessi di scrittura!",
@ -48,6 +46,7 @@
"conf_leds_contr_label_contrtype": "Tipo di Controller", "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_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_advanced": "Impostazioni Avanzate",
"conf_leds_layout_blacklist_num_title": "Numero di LEDs",
"conf_leds_layout_btn_checklist": "Mostra lista", "conf_leds_layout_btn_checklist": "Mostra lista",
"conf_leds_layout_button_savelay": "Salva Layout", "conf_leds_layout_button_savelay": "Salva Layout",
"conf_leds_layout_button_updsim": "Aggiorna Anteprima", "conf_leds_layout_button_updsim": "Aggiorna Anteprima",
@ -107,6 +106,7 @@
"conf_leds_layout_preview_totalleds": "Totale LEDs: $1", "conf_leds_layout_preview_totalleds": "Totale LEDs: $1",
"conf_leds_layout_ptl": "Punto in alto a sinistra", "conf_leds_layout_ptl": "Punto in alto a sinistra",
"conf_leds_layout_ptlh": "Orizzontale", "conf_leds_layout_ptlh": "Orizzontale",
"conf_leds_layout_ptln": "Tripplepoints",
"conf_leds_layout_ptlv": "Verticale", "conf_leds_layout_ptlv": "Verticale",
"conf_leds_layout_ptr": "Punto in alto a destra", "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.", "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_RPiGPIO": "RPi GPIO",
"conf_leds_optgroup_RPiPWM": "RPi PWM", "conf_leds_optgroup_RPiPWM": "RPi PWM",
"conf_leds_optgroup_RPiSPI": "RPi SPI", "conf_leds_optgroup_RPiSPI": "RPi SPI",
"conf_leds_optgroup_debug": "Debug",
"conf_leds_optgroup_network": "Rete", "conf_leds_optgroup_network": "Rete",
"conf_leds_optgroup_other": "Altro",
"conf_leds_optgroup_usb": "USB/Seriale", "conf_leds_optgroup_usb": "USB/Seriale",
"conf_logging_btn_autoscroll": "Auto scrolling", "conf_logging_btn_autoscroll": "Auto scrolling",
"conf_logging_btn_pbupload": "Invia segnalazione per richieste di supporto", "conf_logging_btn_pbupload": "Invia segnalazione per richieste di supporto",
@ -163,14 +163,14 @@
"dashboard_infobox_label_instance": "Istanza:", "dashboard_infobox_label_instance": "Istanza:",
"dashboard_infobox_label_latesthyp": "L'ultima versione di Hyperion:", "dashboard_infobox_label_latesthyp": "L'ultima versione di Hyperion:",
"dashboard_infobox_label_platform": "Piattaforma:", "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_smartacc": "Accesso Smart",
"dashboard_infobox_label_statush": "Status Hyperion:", "dashboard_infobox_label_statush": "Status Hyperion:",
"dashboard_infobox_label_title": "Informazioni", "dashboard_infobox_label_title": "Informazioni",
"dashboard_infobox_label_watchedversionbranch": "Versione del branch controllata:", "dashboard_infobox_label_watchedversionbranch": "Versione del branch controllata:",
"dashboard_infobox_message_updatesuccess": "Stai eseguendo l'ultima versione di Hyperion.", "dashboard_infobox_message_updatesuccess": "Stai eseguendo l'ultima versione di Hyperion.",
"dashboard_infobox_message_updatewarning": "è disponibile una nuova versione di Hyperion ($1)", "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": "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_default_password_t": "è impostata la password di default WebUI",
"dashboard_message_do_not_show_again": "Non mostrare più questo messaggio", "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_maxInconsistentCnt_title": "Fotogrammi inconsistenti",
"edt_conf_bb_mode_expl": "Algoritmo di elaborazione. (vedi Wiki)", "edt_conf_bb_mode_expl": "Algoritmo di elaborazione. (vedi Wiki)",
"edt_conf_bb_mode_title": "Modalità", "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_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_expl": "Numero di fotogrammi senza riconoscimento prima che il bordo sia impostato a 0.",
"edt_conf_bb_unknownFrameCnt_title": "Fotogrammi sconosciuti", "edt_conf_bb_unknownFrameCnt_title": "Fotogrammi sconosciuti",
@ -208,7 +208,7 @@
"edt_conf_bobls_heading_title": "Srtver Boblight", "edt_conf_bobls_heading_title": "Srtver Boblight",
"edt_conf_color_backlightColored_expl": "Aggiungi del colore alla retroilluminazione", "edt_conf_color_backlightColored_expl": "Aggiungi del colore alla retroilluminazione",
"edt_conf_color_backlightColored_title": "Retroilluminazione colorata", "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_backlightThreshold_title": "Soglia di retroilluminazione",
"edt_conf_color_black_expl": "Il valore calibrato del nero.", "edt_conf_color_black_expl": "Il valore calibrato del nero.",
"edt_conf_color_black_title": "Nero", "edt_conf_color_black_title": "Nero",
@ -250,7 +250,7 @@
"edt_conf_effp_disable_itemtitle": "Effetto", "edt_conf_effp_disable_itemtitle": "Effetto",
"edt_conf_effp_disable_title": "Effetti Disabilitati", "edt_conf_effp_disable_title": "Effetti Disabilitati",
"edt_conf_effp_heading_title": "Percorsi Effetti", "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_itemtitle": "Percorso",
"edt_conf_effp_paths_title": "Percorso Effetti", "edt_conf_effp_paths_title": "Percorso Effetti",
"edt_conf_enum_NO_CHANGE": "Auto", "edt_conf_enum_NO_CHANGE": "Auto",
@ -260,12 +260,14 @@
"edt_conf_enum_automatic": "Automatico", "edt_conf_enum_automatic": "Automatico",
"edt_conf_enum_bbclassic": "Classico", "edt_conf_enum_bbclassic": "Classico",
"edt_conf_enum_bbdefault": "Default", "edt_conf_enum_bbdefault": "Default",
"edt_conf_enum_bbletterbox": "Letterbox",
"edt_conf_enum_bbosd": "OSD", "edt_conf_enum_bbosd": "OSD",
"edt_conf_enum_bgr": "BGR", "edt_conf_enum_bgr": "BGR",
"edt_conf_enum_bottom_up": "Dal basso verso l'alto", "edt_conf_enum_bottom_up": "Dal basso verso l'alto",
"edt_conf_enum_brg": "BRG", "edt_conf_enum_brg": "BRG",
"edt_conf_enum_color": "Colore", "edt_conf_enum_color": "Colore",
"edt_conf_enum_custom": "Custom", "edt_conf_enum_custom": "Custom",
"edt_conf_enum_decay": "Decadimento",
"edt_conf_enum_dl_error": "Errore", "edt_conf_enum_dl_error": "Errore",
"edt_conf_enum_dl_informational": "Informativo", "edt_conf_enum_dl_informational": "Informativo",
"edt_conf_enum_dl_nodebug": "No Debug", "edt_conf_enum_dl_nodebug": "No Debug",
@ -314,7 +316,7 @@
"edt_conf_fge_duration_ms_title": "Durata", "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_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_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_expl": "Scegli tra colore o effetto",
"edt_conf_fge_type_title": "Tipo", "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)", "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_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_expl": "Se nessuna informazione viene ricevuta per un dato periodo, il componente verrà disabilitato (soft).",
"edt_conf_pbs_timeout_title": "Timeout", "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_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_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_expl": "Quanto a lungo la sfumatura dovrebbe raggiungere le immagini?",
"edt_conf_smooth_time_ms_title": "Durata", "edt_conf_smooth_time_ms_title": "Durata",
"edt_conf_smooth_type_expl": "Tipo di sfumatura.", "edt_conf_smooth_type_expl": "Tipo di sfumatura.",
@ -415,7 +425,7 @@
"edt_conf_v4l2_standard_title": "Standard video", "edt_conf_v4l2_standard_title": "Standard video",
"edt_conf_webc_crtPath_expl": "Percorso del file del certificato (in formato PEM)", "edt_conf_webc_crtPath_expl": "Percorso del file del certificato (in formato PEM)",
"edt_conf_webc_crtPath_title": "Percorso del certificato", "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_docroot_title": "Documento Root",
"edt_conf_webc_heading_title": "Configurazione Web", "edt_conf_webc_heading_title": "Configurazione Web",
"edt_conf_webc_keyPassPhrase_expl": "Opzionale: La chiave può essere protetta con una password", "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_brightnessFactor_title": "Fattore luminosità",
"edt_dev_spec_brightnessMax_title": "Luminosità massima", "edt_dev_spec_brightnessMax_title": "Luminosità massima",
"edt_dev_spec_brightnessMin_title": "Luminosità minima", "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_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_cid_title": "CID",
"edt_dev_spec_clientKey_title": "Clientkey", "edt_dev_spec_clientKey_title": "Clientkey",
"edt_dev_spec_colorComponent_title": "Componente colore", "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_debugStreamer_title": "Debug Streamer",
"edt_dev_spec_delayAfterConnect_title": "Ritardo dopo la connessione", "edt_dev_spec_delayAfterConnect_title": "Ritardo dopo la connessione",
"edt_dev_spec_dithering_title": "Dithering", "edt_dev_spec_dithering_title": "Dithering",
"edt_dev_spec_dmaNumber_title": "Canale DMA", "edt_dev_spec_dmaNumber_title": "Canale DMA",
"edt_dev_spec_gamma_title": "Gamma", "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_gpioBcm_title": "Pin GPIO",
"edt_dev_spec_gpioMap_title": "Mappatura GPIO", "edt_dev_spec_gpioMap_title": "Mappatura GPIO",
"edt_dev_spec_gpioNumber_title": "Numero 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_header_title": "Impostazioni specifiche",
"edt_dev_spec_interpolation_title": "Interpolazione", "edt_dev_spec_interpolation_title": "Interpolazione",
"edt_dev_spec_intervall_title": "Intervallo", "edt_dev_spec_intervall_title": "Intervallo",
@ -479,12 +495,13 @@
"edt_dev_spec_order_left_right_title": "2.", "edt_dev_spec_order_left_right_title": "2.",
"edt_dev_spec_order_top_down_title": "1.", "edt_dev_spec_order_top_down_title": "1.",
"edt_dev_spec_outputPath_title": "Percorso di output", "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_panelorganisation_title": "Sequenza numerazione pannelli",
"edt_dev_spec_pid_title": "PID", "edt_dev_spec_pid_title": "PID",
"edt_dev_spec_port_title": "Porta", "edt_dev_spec_port_title": "Porta",
"edt_dev_spec_printTimeStamp_title": "Aggiungi timestamp", "edt_dev_spec_printTimeStamp_title": "Aggiungi timestamp",
"edt_dev_spec_pwmChannel_title": "Canale PWM", "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_serial_title": "Numero seriale",
"edt_dev_spec_spipath_title": "Percorso SPI", "edt_dev_spec_spipath_title": "Percorso SPI",
"edt_dev_spec_sslHSTimeoutMax_title": "Timeout massimo handkshake streamer", "edt_dev_spec_sslHSTimeoutMax_title": "Timeout massimo handkshake streamer",
@ -602,14 +619,14 @@
"edt_eff_smooth_time_ms": "Durata sfumatura", "edt_eff_smooth_time_ms": "Durata sfumatura",
"edt_eff_smooth_updateFrequency": "Frequenza di aggiornamento sfumatura", "edt_eff_smooth_updateFrequency": "Frequenza di aggiornamento sfumatura",
"edt_eff_snake_header": "Snake", "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": "Scintille",
"edt_eff_sparks_header_desc": "Scintille brillanti, scegli tra colore statico o casuale. Puoi anche regolare luminosità, saturazione e velocità.", "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_speed": "Velocità",
"edt_eff_swirl_header": "Mulinello Colorato", "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_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": "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": "Tracce Colorate",
"edt_eff_traces_header_desc": "Necessita redesign", "edt_eff_traces_header_desc": "Necessita redesign",
"edt_eff_trails_header": "Scie", "edt_eff_trails_header": "Scie",
@ -726,7 +743,7 @@
"general_speech_sv": "Svedese", "general_speech_sv": "Svedese",
"general_speech_tr": "Turco", "general_speech_tr": "Turco",
"general_speech_vi": "Vietnamita", "general_speech_vi": "Vietnamita",
"general_speech_zh-CN": "Cinese (semplificanto)", "general_speech_zh-CN": "Cinese (semplificato)",
"general_webui_title": "Hyperion - Configurazione Web", "general_webui_title": "Hyperion - Configurazione Web",
"general_wiki_moreto": "Più informazioni su '$1' sulla nostra Wiki", "general_wiki_moreto": "Più informazioni su '$1' sulla nostra Wiki",
"infoDialog_checklist_title": "Lista!", "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_reload": "Auto-riconnessione interrotta - limite superato, ricarica la pagina o cliccami.",
"info_conlost_label_title": "Connessione al servizio Hyperion persa!", "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_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_rightback": "Hyperion ritornerà a breve!",
"info_restart_title": "Riavvio...", "info_restart_title": "Riavvio...",
"main_ledsim_btn_togglelednumber": "Numeri LED", "main_ledsim_btn_togglelednumber": "Numeri LED",
@ -806,6 +823,8 @@
"remote_maptype_label_multicolor_mean": "Multicolore", "remote_maptype_label_multicolor_mean": "Multicolore",
"remote_maptype_label_unicolor_mean": "Monocromatico", "remote_maptype_label_unicolor_mean": "Monocromatico",
"remote_optgroup_syseffets": "Effetti in dotazione", "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_optgroup_usreffets": "Effetti Utente",
"remote_videoMode_2D": "2D", "remote_videoMode_2D": "2D",
"remote_videoMode_3DSBS": "3DSBS", "remote_videoMode_3DSBS": "3DSBS",
@ -842,6 +861,9 @@
"update_label_type": "Tipo:", "update_label_type": "Tipo:",
"update_no_updates_for_branch": "Nessun aggiornamento per la versione del canale selezionata", "update_no_updates_for_branch": "Nessun aggiornamento per la versione del canale selezionata",
"update_versreminder": "La tua versione: $1", "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_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_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\".", "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_btn_switchpic": "Cambia immagine",
"wiz_cc_chooseid": "Definisci un nome per questo profilo colore.", "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_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_kodicon": "Kodi trovato, procedi con il supporto Kodi.",
"wiz_cc_kodidiscon": "Webserver Kodi non trovato, procedi senza 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_kodidisconlink": "Link di download delle immagini:",
"wiz_cc_kodimsg_start": "Il test ha avuto successo - tempo di precedere!", "wiz_cc_kodimsg_start": "Il test ha avuto successo - tempo di precedere!",
"wiz_cc_kodishould": "Kodi dovrebbe mostrare la seguente immagine: $1", "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_lettvshow": "Consenti alla tua TV di mostrare la seguente immagine: $1",
"wiz_cc_lettvshowm": "Controlla questo con le seguenti immagini: $1", "wiz_cc_lettvshowm": "Controlla questo con le seguenti immagini: $1",
"wiz_cc_link": "Cliccami!", "wiz_cc_link": "Cliccami!",
@ -864,6 +886,10 @@
"wiz_cc_testintrok": "Premi il bottone qui sotto per iniziare un test video.", "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_testintrowok": "Guarda il link di seguito per il download dei video di test",
"wiz_cc_title": "Assistente calibrazione colore", "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_guideyou": "$1 ti guiderà tra le impostazioni. Ti basta premere il bottone!",
"wiz_hue_blinkblue": "ID $1 si illumina di blu", "wiz_hue_blinkblue": "ID $1 si illumina di blu",
"wiz_hue_clientkey": "Clientkey:", "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_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_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_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_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_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_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": "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_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_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_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_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_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\".", "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_identify_light": "Identifica $1",
"wiz_ids_disabled": "Disattivato", "wiz_ids_disabled": "Disattivato",
"wiz_ids_entire": "Immagine intera", "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_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_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.", "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_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_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_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_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_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!", "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_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_expl": "Uitleg",
"conf_helptable_option": "Optie", "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_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_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_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_btn_checklist": "Toon controlelijst",
"conf_leds_layout_button_savelay": "Opmaak opslaan", "conf_leds_layout_button_savelay": "Opmaak opslaan",
"conf_leds_layout_button_updsim": "Update voorbeeld", "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_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_ledcontroller": "LED Besturing",
"conf_leds_nav_label_ledlayout": "LED Opmaak", "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_RPiGPIO": "RPi GPIO",
"conf_leds_optgroup_RPiPWM": "RPi PWM", "conf_leds_optgroup_RPiPWM": "RPi PWM",
"conf_leds_optgroup_RPiSPI": "RPi SPI", "conf_leds_optgroup_RPiSPI": "RPi SPI",
"conf_leds_optgroup_debug": "Debug",
"conf_leds_optgroup_network": "Netwerk", "conf_leds_optgroup_network": "Netwerk",
"conf_leds_optgroup_other": "Andere",
"conf_leds_optgroup_usb": "USB", "conf_leds_optgroup_usb": "USB",
"conf_logging_btn_autoscroll": "Automatisch scrollen.", "conf_logging_btn_autoscroll": "Automatisch scrollen.",
"conf_logging_btn_pbupload": "Upload een issue voor support verzoeken.", "conf_logging_btn_pbupload": "Upload een issue voor support verzoeken.",
"conf_logging_contpolicy": "Report privacybeleid", "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_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_lastreports": "Vorige reports",
"conf_logging_logoutput": "Log uitvoer",
"conf_logging_nomessage": "Geen log berichten beschikbaar.", "conf_logging_nomessage": "Geen log berichten beschikbaar.",
"conf_logging_report": "Report", "conf_logging_report": "Report",
"conf_logging_uplfailed": "Upload mislukt! Controller de internet verbinding!", "conf_logging_uplfailed": "Upload mislukt! Controller de internet verbinding!",
@ -164,14 +174,18 @@
"dashboard_infobox_label_instance": "Instantie", "dashboard_infobox_label_instance": "Instantie",
"dashboard_infobox_label_latesthyp": "Laatste Hyperion versie", "dashboard_infobox_label_latesthyp": "Laatste Hyperion versie",
"dashboard_infobox_label_platform": "Platform", "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_smartacc": "Slimme toegang",
"dashboard_infobox_label_statush": "Hyperion status:", "dashboard_infobox_label_statush": "Hyperion status:",
"dashboard_infobox_label_title": "Informatie", "dashboard_infobox_label_title": "Informatie",
"dashboard_infobox_label_watchedversionbranch": "Bekeken versie branch:", "dashboard_infobox_label_watchedversionbranch": "Bekeken versie branch:",
"dashboard_infobox_message_updatesuccess": "Je draait de laatste versie van Hyperion", "dashboard_infobox_message_updatesuccess": "Je draait de laatste versie van Hyperion",
"dashboard_infobox_message_updatewarning": "Een nieuwe versie van Hyperion is beschikbaar!", "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": "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_default_password_t": "WebUi standaard wachtwoord is ingesteld",
"dashboard_message_do_not_show_again": "Laat dit bericht niet meer zien", "dashboard_message_do_not_show_again": "Laat dit bericht niet meer zien",
@ -184,11 +198,11 @@
"edt_append_degree": "°", "edt_append_degree": "°",
"edt_append_hz": "Hz", "edt_append_hz": "Hz",
"edt_append_leds": "LED's", "edt_append_leds": "LED's",
"edt_append_ms": "Mevrouw", "edt_append_ms": "ms",
"edt_append_ns": "NS", "edt_append_ns": "NS",
"edt_append_percent": "%", "edt_append_percent": "%",
"edt_append_percent_h": "% hori", "edt_append_percent_h": "% hori",
"edt_append_percent_v": "% Groen", "edt_append_percent_v": "% vert",
"edt_append_pixel": "Pixel", "edt_append_pixel": "Pixel",
"edt_append_s": "s", "edt_append_s": "s",
"edt_append_sdegree": "s / graad", "edt_append_sdegree": "s / graad",
@ -261,12 +275,14 @@
"edt_conf_enum_automatic": "Automatisch", "edt_conf_enum_automatic": "Automatisch",
"edt_conf_enum_bbclassic": "Klassiek", "edt_conf_enum_bbclassic": "Klassiek",
"edt_conf_enum_bbdefault": "Standaard", "edt_conf_enum_bbdefault": "Standaard",
"edt_conf_enum_bbletterbox": "Brievenbus",
"edt_conf_enum_bbosd": "OSD", "edt_conf_enum_bbosd": "OSD",
"edt_conf_enum_bgr": "BGR", "edt_conf_enum_bgr": "BGR",
"edt_conf_enum_bottom_up": "Onderkant boven", "edt_conf_enum_bottom_up": "Onderkant boven",
"edt_conf_enum_brg": "BRG", "edt_conf_enum_brg": "BRG",
"edt_conf_enum_color": "Kleur", "edt_conf_enum_color": "Kleur",
"edt_conf_enum_custom": "Op maat", "edt_conf_enum_custom": "Op maat",
"edt_conf_enum_decay": "Vervallen",
"edt_conf_enum_dl_error": "Fout", "edt_conf_enum_dl_error": "Fout",
"edt_conf_enum_dl_informational": "Informatief", "edt_conf_enum_dl_informational": "Informatief",
"edt_conf_enum_dl_nodebug": "Geen foutopsporing", "edt_conf_enum_dl_nodebug": "Geen foutopsporing",
@ -286,6 +302,7 @@
"edt_conf_enum_logverbose": "Uitgebreid", "edt_conf_enum_logverbose": "Uitgebreid",
"edt_conf_enum_logwarn": "Waarschuwing", "edt_conf_enum_logwarn": "Waarschuwing",
"edt_conf_enum_multicolor_mean": "Multikleur", "edt_conf_enum_multicolor_mean": "Multikleur",
"edt_conf_enum_please_select": "Selecteer alstublieft",
"edt_conf_enum_rbg": "RBG", "edt_conf_enum_rbg": "RBG",
"edt_conf_enum_rgb": "RGB", "edt_conf_enum_rgb": "RGB",
"edt_conf_enum_right_left": "Rechts naar links", "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_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_itemtitle": "JSON target",
"edt_conf_fw_json_title": "Lijst van JSON clients", "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_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_expl": "Een zelf ingesteld naam welke wordt gebruikt om de Hyperion te herkennen. (Handig bij meerdere configuraties)",
"edt_conf_gen_name_title": "Configuratienaam", "edt_conf_gen_name_title": "Configuratienaam",
@ -366,7 +384,15 @@
"edt_conf_pbs_timeout_title": "Timeout", "edt_conf_pbs_timeout_title": "Timeout",
"edt_conf_smooth_continuousOutput_expl": "Update de LEDs zelfs als het beeld niet wijzigt.", "edt_conf_smooth_continuousOutput_expl": "Update de LEDs zelfs als het beeld niet wijzigt.",
"edt_conf_smooth_continuousOutput_title": "Constante output", "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_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_expl": "Hoe lang moet de verzachting beeld ontvangen?",
"edt_conf_smooth_time_ms_title": "Tijd", "edt_conf_smooth_time_ms_title": "Tijd",
"edt_conf_smooth_type_expl": "Type verzachting", "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_expl": "Poort van de HTTPS-webserver",
"edt_conf_webc_sslport_title": "HTTPS-poort", "edt_conf_webc_sslport_title": "HTTPS-poort",
"edt_dev_auth_key_title": "Authenticatie token", "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_cool_adjust": "Verlaag koel wit",
"edt_dev_enum_sub_min_warm_adjust": "Verlaag warm wit", "edt_dev_enum_sub_min_warm_adjust": "Verlaag warm wit",
"edt_dev_enum_subtract_minimum": "Verlaag minimum", "edt_dev_enum_subtract_minimum": "Verlaag minimum",
"edt_dev_enum_white_off": "Wit uit", "edt_dev_enum_white_off": "Wit uit",
"edt_dev_general_colorOrder_title": "RGB Byte volgorde", "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": "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_heading_title": "Algemene instellingen",
"edt_dev_general_name_title": "Configuratie naam", "edt_dev_general_name_title": "Configuratie naam",
"edt_dev_general_rewriteTime_title": "Ververs snelheid", "edt_dev_general_rewriteTime_title": "Ververs snelheid",
@ -445,7 +474,9 @@
"edt_dev_spec_brightnessFactor_title": "Helderheidsfactor ", "edt_dev_spec_brightnessFactor_title": "Helderheidsfactor ",
"edt_dev_spec_brightnessMax_title": "Maximale helderheid", "edt_dev_spec_brightnessMax_title": "Maximale helderheid",
"edt_dev_spec_brightnessMin_title": "Minimale 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_brightnessThreshold_title": "Signaaldetectie helderheid minimaal",
"edt_dev_spec_brightness_title": "Helderheid",
"edt_dev_spec_chanperfixture_title": "Kanalen per armatuur", "edt_dev_spec_chanperfixture_title": "Kanalen per armatuur",
"edt_dev_spec_cid_title": "CID", "edt_dev_spec_cid_title": "CID",
"edt_dev_spec_clientKey_title": "Klantensleutel", "edt_dev_spec_clientKey_title": "Klantensleutel",
@ -453,9 +484,16 @@
"edt_dev_spec_debugLevel_title": "Foutopsporingsniveau van Streamer-verbinding", "edt_dev_spec_debugLevel_title": "Foutopsporingsniveau van Streamer-verbinding",
"edt_dev_spec_debugStreamer_title": "Streamer Debug", "edt_dev_spec_debugStreamer_title": "Streamer Debug",
"edt_dev_spec_delayAfterConnect_title": "Vertraging na connectie", "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_dithering_title": "Trilling",
"edt_dev_spec_dmaNumber_title": "DMA kanaal", "edt_dev_spec_dmaNumber_title": "DMA kanaal",
"edt_dev_spec_gamma_title": "Gamma", "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_gpioBcm_title": "GPIO Pin",
"edt_dev_spec_gpioMap_title": "GPIO mapping", "edt_dev_spec_gpioMap_title": "GPIO mapping",
"edt_dev_spec_gpioNumber_title": "GPIO nummer", "edt_dev_spec_gpioNumber_title": "GPIO nummer",
@ -465,6 +503,7 @@
"edt_dev_spec_intervall_title": "Interval", "edt_dev_spec_intervall_title": "Interval",
"edt_dev_spec_invert_title": "Signaal omkeren", "edt_dev_spec_invert_title": "Signaal omkeren",
"edt_dev_spec_latchtime_title": "Sluitertijd", "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_ledIndex_title": "LED index",
"edt_dev_spec_ledType_title": "LED Type", "edt_dev_spec_ledType_title": "LED Type",
"edt_dev_spec_lightid_itemtitle": "ID", "edt_dev_spec_lightid_itemtitle": "ID",
@ -489,6 +528,7 @@
"edt_dev_spec_printTimeStamp_title": "Voeg tijdstip toe", "edt_dev_spec_printTimeStamp_title": "Voeg tijdstip toe",
"edt_dev_spec_pwmChannel_title": "PWM-kanaal", "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": "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_serial_title": "EAN",
"edt_dev_spec_spipath_title": "SPI pad", "edt_dev_spec_spipath_title": "SPI pad",
"edt_dev_spec_sslHSTimeoutMax_title": "Maximale time-out voor handshake van Streamer", "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_sslReadTimeout_title": "Time-out bij lezen van Streamer",
"edt_dev_spec_switchOffOnBlack_title": "Schakel zwart uit", "edt_dev_spec_switchOffOnBlack_title": "Schakel zwart uit",
"edt_dev_spec_switchOffOnbelowMinBrightness_title": "Uitschakelen, onder minimum", "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": "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_targetIp_title": "Target IP",
"edt_dev_spec_transeffect_title": "Overgangseffect", "edt_dev_spec_transeffect_title": "Overgangseffect",
"edt_dev_spec_transistionTimeExtra_title": "Extra tijd duisternis", "edt_dev_spec_transistionTimeExtra_title": "Extra tijd duisternis",
@ -686,6 +728,7 @@
"general_btn_off": "Uit", "general_btn_off": "Uit",
"general_btn_ok": "OK", "general_btn_ok": "OK",
"general_btn_on": "Aan", "general_btn_on": "Aan",
"general_btn_overwrite": "Overschrijf ",
"general_btn_rename": "Hernoem", "general_btn_rename": "Hernoem",
"general_btn_restarthyperion": "Herstart Hyperion", "general_btn_restarthyperion": "Herstart Hyperion",
"general_btn_save": "Opslaan", "general_btn_save": "Opslaan",
@ -708,25 +751,33 @@
"general_comp_PROTOSERVER": "Protocol Buffers Server", "general_comp_PROTOSERVER": "Protocol Buffers Server",
"general_comp_SMOOTHING": "Vloeiend", "general_comp_SMOOTHING": "Vloeiend",
"general_comp_V4L": "USB Vastleggen", "general_comp_V4L": "USB Vastleggen",
"general_country_cn": "China",
"general_country_de": "Duitsland", "general_country_de": "Duitsland",
"general_country_es": "Spanje", "general_country_es": "Spanje",
"general_country_fr": "Frankrijk", "general_country_fr": "Frankrijk",
"general_country_it": "Italië", "general_country_it": "Italië",
"general_country_nl": "Nederland", "general_country_nl": "Nederland",
"general_country_ru": "Rusland",
"general_country_uk": "Verenigd Koninkrijk", "general_country_uk": "Verenigd Koninkrijk",
"general_country_us": "Verenigde Staten", "general_country_us": "Verenigde Staten",
"general_disabled": "Uitgeschakeld ",
"general_enabled": "Ingeschakeld ",
"general_speech_cs": "Tsjechisch", "general_speech_cs": "Tsjechisch",
"general_speech_de": "Duits", "general_speech_de": "Duits",
"general_speech_en": "Engels", "general_speech_en": "Engels",
"general_speech_es": "Spaans", "general_speech_es": "Spaans",
"general_speech_fr": "Frans", "general_speech_fr": "Frans",
"general_speech_it": "Italiaans", "general_speech_it": "Italiaans",
"general_speech_nb": "Noors (Bokmål)",
"general_speech_nl": "Nederlands", "general_speech_nl": "Nederlands",
"general_speech_pl": "Pools", "general_speech_pl": "Pools",
"general_speech_pt": "Portugees",
"general_speech_ro": "Romeens", "general_speech_ro": "Romeens",
"general_speech_ru": "Russchich",
"general_speech_sv": "Zweeds", "general_speech_sv": "Zweeds",
"general_speech_tr": "Turks", "general_speech_tr": "Turks",
"general_speech_vi": "Vietnamees", "general_speech_vi": "Vietnamees",
"general_speech_zh-CN": "Chinees (vereenvoudigd)",
"general_webui_title": "Hyperion - Web Instellingen", "general_webui_title": "Hyperion - Web Instellingen",
"general_wiki_moreto": "Meer informatie over \"$1\" is beschikbaar op onze Wiki", "general_wiki_moreto": "Meer informatie over \"$1\" is beschikbaar op onze Wiki",
"infoDialog_checklist_title": "Checklist!", "infoDialog_checklist_title": "Checklist!",
@ -797,7 +848,7 @@
"remote_input_origin": "Origineel", "remote_input_origin": "Origineel",
"remote_input_owner": "Type", "remote_input_owner": "Type",
"remote_input_priority": "Prioriteit", "remote_input_priority": "Prioriteit",
"remote_input_setsource_btn": "Selecteerd bron", "remote_input_setsource_btn": "Selecteer bron",
"remote_input_sourceactiv_btn": "Bron actief", "remote_input_sourceactiv_btn": "Bron actief",
"remote_input_status": "Status/Actie", "remote_input_status": "Status/Actie",
"remote_losthint": "Note: Alle wijzigingen zijn verdwenen na een herstart.", "remote_losthint": "Note: Alle wijzigingen zijn verdwenen na een herstart.",
@ -806,6 +857,8 @@
"remote_maptype_label_multicolor_mean": "Multikleur", "remote_maptype_label_multicolor_mean": "Multikleur",
"remote_maptype_label_unicolor_mean": "Unikleur", "remote_maptype_label_unicolor_mean": "Unikleur",
"remote_optgroup_syseffets": "Beschikbare effecten", "remote_optgroup_syseffets": "Beschikbare effecten",
"remote_optgroup_templates_custom": "Gebruikers Sjablonen",
"remote_optgroup_templates_system": "Systeem Sjablonen",
"remote_optgroup_usreffets": "Gebruikereffecten", "remote_optgroup_usreffets": "Gebruikereffecten",
"remote_videoMode_2D": "2D", "remote_videoMode_2D": "2D",
"remote_videoMode_3DSBS": "3DSBS", "remote_videoMode_3DSBS": "3DSBS",
@ -832,7 +885,7 @@
"support_label_webpagetitle": "Web pagina", "support_label_webpagetitle": "Web pagina",
"support_label_webrestitle": "Informatie en hulp", "support_label_webrestitle": "Informatie en hulp",
"support_label_wikitext": "De A tot Z index voor alles Hyperion gerelateerd", "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!", "support_label_yttext": "Verveeld met alle foto's? Volg ons op Youtube!",
"update_button_changelog": "Volledige changelog", "update_button_changelog": "Volledige changelog",
"update_button_install": "Installeren", "update_button_install": "Installeren",
@ -842,6 +895,9 @@
"update_label_type": "Type:", "update_label_type": "Type:",
"update_no_updates_for_branch": "Geen updates voor geselecteerde versie kanaal", "update_no_updates_for_branch": "Geen updates voor geselecteerde versie kanaal",
"update_versreminder": "Jouw versie: $1", "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_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_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.", "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_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_testintrowok": "Bekijk de volgende link om test video's te downloaden:",
"wiz_cc_title": "Kleurenkalibratie wizard", "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_guideyou": "De $1 zal je door de instellingen leiden. Druk gewoon op de knop!",
"wiz_hue_blinkblue": "Laat ID $1 blauw oplichten", "wiz_hue_blinkblue": "Laat ID $1 blauw oplichten",
"wiz_hue_clientkey": "Klantensleutel:", "wiz_hue_clientkey": "Klantensleutel:",
@ -897,6 +957,7 @@
"wiz_identify_light": "Identificeer $ 1", "wiz_identify_light": "Identificeer $ 1",
"wiz_ids_disabled": "Gedeactiveerd", "wiz_ids_disabled": "Gedeactiveerd",
"wiz_ids_entire": "Hele foto", "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_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_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.", "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_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_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_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_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_lang_title": "Wybór języka (Language setting)", "InfoDialog_nostorage_title": "Nie można zapisać ustawień",
"InfoDialog_nowrite_foottext": "Interfejs WebUI zostanie odblokowany automatycznie po rozwiązaniu problemu!", "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_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!", "InfoDialog_nowrite_title": "Nie masz uprawnień do zapisu!",
@ -15,7 +15,7 @@
"about_build": "Build:", "about_build": "Build:",
"about_builddate": "Data buildu:", "about_builddate": "Data buildu:",
"about_contribute": "Rozwijaj Hyperion razem z nami!", "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_resources": "$1 biblioteki",
"about_translations": "Tłumaczenia", "about_translations": "Tłumaczenia",
"about_version": "Wersja:", "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_intro": "Podstawowe ustawienia Hyperion i WebUI, które nie pasują do żadnych innych kategorii.",
"conf_general_label_title": "Główne ustawienia", "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_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_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_expl": "Omówienie",
"conf_helptable_option": "Opcje", "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_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_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_btn_checklist": "Pokaż listę kontrolną",
"conf_leds_layout_button_savelay": "Zapisz układ", "conf_leds_layout_button_savelay": "Zapisz układ",
"conf_leds_layout_button_updsim": "Odśwież podgląd", "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_cl_vleddepth": "Pionowa głębokość LED",
"conf_leds_layout_frame": "Układ Klasyczny (Ramka LED)", "conf_leds_layout_frame": "Układ Klasyczny (Ramka LED)",
"conf_leds_layout_generatedconf": "Wygenerowana / Aktualna konfiguracja 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_cabling": "Okablowanie",
"conf_leds_layout_ma_horiz": "Poziomo", "conf_leds_layout_ma_horiz": "Poziomo",
"conf_leds_layout_ma_optbottomleft": "Lewy dół", "conf_leds_layout_ma_optbottomleft": "Lewy dół",
@ -107,23 +118,27 @@
"conf_leds_layout_preview_totalleds": "Liczba wszystkich LED: $1", "conf_leds_layout_preview_totalleds": "Liczba wszystkich LED: $1",
"conf_leds_layout_ptl": "Wskaż górny lewy", "conf_leds_layout_ptl": "Wskaż górny lewy",
"conf_leds_layout_ptlh": "Poziomy", "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_ptlv": "Pionowy",
"conf_leds_layout_ptr": "Wskaż prawy górny", "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_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_ledcontroller": "Kontroler LED",
"conf_leds_nav_label_ledlayout": "Układ 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_RPiGPIO": "RPi GPIO",
"conf_leds_optgroup_RPiPWM": "RPi PWM", "conf_leds_optgroup_RPiPWM": "RPi PWM",
"conf_leds_optgroup_RPiSPI": "RPi SPI", "conf_leds_optgroup_RPiSPI": "RPi SPI",
"conf_leds_optgroup_debug": "Debugowanie", "conf_leds_optgroup_debug": "Debug",
"conf_leds_optgroup_network": "Sieć", "conf_leds_optgroup_network": "Sieć",
"conf_leds_optgroup_other": "Inny",
"conf_leds_optgroup_usb": "USB", "conf_leds_optgroup_usb": "USB",
"conf_logging_btn_autoscroll": "Automatyczne przewijanie", "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_btn_pbupload": "Prześlij raport z prośbami o wsparcie.",
"conf_logging_contpolicy": "Zgłoś politykę prywatności", "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_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_lastreports": "Poprzednie raporty",
"conf_logging_logoutput": "Dane wyjściowe dziennika",
"conf_logging_nomessage": "Brak dostępnych wiadomości w dzienniku.", "conf_logging_nomessage": "Brak dostępnych wiadomości w dzienniku.",
"conf_logging_report": "Raport", "conf_logging_report": "Raport",
"conf_logging_uplfailed": "Przesyłanie nie powiodło się! Sprawdź połączenie z internetem!", "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_bobl_intro": "Odbiornik dla Boblight",
"conf_network_createToken_btn": "Utwórz token", "conf_network_createToken_btn": "Utwórz token",
"conf_network_fbs_intro": "Odbiornik Flatbuffers Google. Służy do szybkiej transmisji obrazu.", "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_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_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, ...)", "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_alert_message_disabled_t": "Instancja sprzętowa LED wyłączona",
"dashboard_componentbox_label_comp": "Komponent", "dashboard_componentbox_label_comp": "Komponent",
"dashboard_componentbox_label_status": "Status", "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_currenthyp": "Twoja wersja Hyperion:",
"dashboard_infobox_label_disableh": "Wyłącz instancję: $1", "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_instance": "Instancja:",
"dashboard_infobox_label_latesthyp": "Najnowsza wersja Hyperion:", "dashboard_infobox_label_latesthyp": "Najnowsza wersja Hyperion:",
"dashboard_infobox_label_platform": "Platforma:", "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_smartacc": "Szybki dostęp",
"dashboard_infobox_label_statush": "Status Hyperion:", "dashboard_infobox_label_statush": "Status Hyperion:",
"dashboard_infobox_label_title": "Informacje", "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_updatesuccess": "Posiadasz najnowszą wersję Hyperion",
"dashboard_infobox_message_updatewarning": "Dostępna jest nowsza wersja Hyperion! ($1)", "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_label_intro": "Ten pulpit nawigacyjny zapewnia szybki przegląd statusu Hyperion.",
"dashboard_message_default_password": "Domyślne hasło do WebUi jest ustawione. Zdecydowanie zalecamy to zmienić.", "dashboard_message_default_password": "Ustawione jest domyślne hasło do WebUi. Zdecydowanie zalecamy je zmienić.",
"dashboard_message_default_password_t": "WebUi default password is set", "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_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": "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", "dashboard_message_global_setting_t": "Ustawienie niezależne od instancji",
@ -192,11 +211,11 @@
"edt_append_pixel": "Piksel", "edt_append_pixel": "Piksel",
"edt_append_s": "s", "edt_append_s": "s",
"edt_append_sdegree": "s/stopnień", "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_blurRemoveCnt_title": "Rozmycie pikseli",
"edt_conf_bb_borderFrameCnt_expl": "Liczba ramek przed ustawieniem spójnego wykrytego obramowania.", "edt_conf_bb_borderFrameCnt_expl": "Liczba ramek przed ustawieniem spójnego wykrytego obramowania.",
"edt_conf_bb_borderFrameCnt_title": "Ramki graniczne", "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_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_maxInconsistentCnt_title": "Niespójne ramki",
"edt_conf_bb_mode_expl": "Algorytm przetwarzania. (patrz Wiki)", "edt_conf_bb_mode_expl": "Algorytm przetwarzania. (patrz Wiki)",
@ -211,18 +230,18 @@
"edt_conf_color_backlightColored_title": "Kolorowe podświetlenie", "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_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_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_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_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_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_brightnessComp_title": "Kompensacja jasności",
"edt_conf_color_brightness_expl": "Ustaw jasność LEDów", "edt_conf_color_brightness_expl": "Ustaw jasność LEDów",
"edt_conf_color_brightness_title": "Jasność", "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_itemtitle": "Profil",
"edt_conf_color_channelAdjustment_header_title": "Korekta kanału koloru", "edt_conf_color_channelAdjustment_header_title": "Adaptacja koloru",
"edt_conf_color_cyan_expl": "Skalibrowana wartość Cyjanu", "edt_conf_color_cyan_expl": "Skalibrowana wartość koloru cyjanowego",
"edt_conf_color_cyan_title": "Cyjan", "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_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", "edt_conf_color_gammaBlue_title": "Gamma Niebieski",
@ -230,22 +249,22 @@
"edt_conf_color_gammaGreen_title": "Gamma Zielony", "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_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_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_green_title": "Zielony",
"edt_conf_color_heading_title": "Kalibracja kolorów", "edt_conf_color_heading_title": "Kalibracja kolorów",
"edt_conf_color_id_expl": "Imię użytkownika", "edt_conf_color_id_expl": "Imię użytkownika",
"edt_conf_color_id_title": "Identyfikator 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_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": "Przydział obszaru Led", "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_expl": "Przypisz tę regulację do wszystkich diod LED (*) lub tylko niektórych (0-24).",
"edt_conf_color_leds_title": "Indeks LED", "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_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_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_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_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_expl": "Dodaj nazwy efektów, które chcesz wyłączyć / ukryć na wszystkich listach efektów.",
"edt_conf_effp_disable_itemtitle": "Efekt", "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_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_itemtitle": "Ścieżka",
"edt_conf_effp_paths_title": "Ścieżki efektów", "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_NO_CHANGE": "Auto",
"edt_conf_enum_NTSC": "NTSC", "edt_conf_enum_NTSC": "NTSC",
"edt_conf_enum_PAL": "PAL", "edt_conf_enum_PAL": "PAL",
"edt_conf_enum_SECAM": "SECAM", "edt_conf_enum_SECAM": "SECAM",
"edt_conf_enum_VERTICAL": "Pionowo",
"edt_conf_enum_automatic": "Automatyczny", "edt_conf_enum_automatic": "Automatyczny",
"edt_conf_enum_bbclassic": "Klasyczny", "edt_conf_enum_bbclassic": "Klasyczny",
"edt_conf_enum_bbdefault": "Domyślny", "edt_conf_enum_bbdefault": "Domyślny",
"edt_conf_enum_bbletterbox": "Letterbox",
"edt_conf_enum_bbosd": "OSD", "edt_conf_enum_bbosd": "OSD",
"edt_conf_enum_bgr": "BGR", "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_brg": "BRG",
"edt_conf_enum_color": "Kolor", "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_error": "Błąd",
"edt_conf_enum_dl_informational": "Informacyjny", "edt_conf_enum_dl_informational": "Informacyjny",
"edt_conf_enum_dl_nodebug": "Bez debugowania", "edt_conf_enum_dl_nodebug": "Bez debugowania",
@ -286,19 +310,20 @@
"edt_conf_enum_logverbose": "Gadatliwy", "edt_conf_enum_logverbose": "Gadatliwy",
"edt_conf_enum_logwarn": "Ostrzeżenie", "edt_conf_enum_logwarn": "Ostrzeżenie",
"edt_conf_enum_multicolor_mean": "Kolorowy", "edt_conf_enum_multicolor_mean": "Kolorowy",
"edt_conf_enum_please_select": "Proszę wybrać",
"edt_conf_enum_rbg": "RBG", "edt_conf_enum_rbg": "RBG",
"edt_conf_enum_rgb": "RGB", "edt_conf_enum_rgb": "RGB",
"edt_conf_enum_right_left": "Od prawej do lewej", "edt_conf_enum_right_left": "Od prawej do lewej",
"edt_conf_enum_top_down": "Z góry na dół", "edt_conf_enum_top_down": "Z góry na dół",
"edt_conf_enum_transeffect_smooth": "Gładki", "edt_conf_enum_transeffect_smooth": "Gładki",
"edt_conf_enum_transeffect_sudden": "Nagły", "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_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_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_fbs_timeout_title": "Timeout",
"edt_conf_fg_display_expl": "Wybierz pulpit, który ma zostać przechwycony (konfiguracja wielu monitorów)", "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_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_frequency_Hz_title": "Częstotliwość przechwytywania",
"edt_conf_fg_heading_title": "Przechwytywanie widoku systemu (pulpitu)", "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.", "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_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_itemtitle": "Źródło flatbuffer",
"edt_conf_fw_flat_title": "Lista klientów 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_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_itemtitle": "Element Json",
"edt_conf_fw_json_title": "Lista klientów 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_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_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_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_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_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_expl": "Jeśli zaznaczone, komponent jest włączony.",
"edt_conf_general_enable_title": "Aktywuj", "edt_conf_general_enable_title": "Aktywuj",
"edt_conf_general_port_expl": "Ten Port jest już używany", "edt_conf_general_port_expl": "Ten Port jest już używany",
"edt_conf_general_port_title": "Port", "edt_conf_general_port_title": "Port",
"edt_conf_general_priority_expl": "Priorytet tego komponentu", "edt_conf_general_priority_expl": "Priorytet tego komponentu",
"edt_conf_general_priority_title": "Kanał priorytetowy", "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_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_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_instCapture_heading_title": "Instancja przechwytywania",
"edt_conf_js_heading_title": "Server JSON", "edt_conf_js_heading_title": "Server JSON",
"edt_conf_log_heading_title": "Logowanie", "edt_conf_log_heading_title": "Logowanie",
@ -366,7 +401,15 @@
"edt_conf_pbs_timeout_title": "Timeout", "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_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_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_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_expl": "Jak długo wygładzanie powinno zbierać zdjęcia?",
"edt_conf_smooth_time_ms_title": "Czas", "edt_conf_smooth_time_ms_title": "Czas",
"edt_conf_smooth_type_expl": "Rodzaj wygładzania.", "edt_conf_smooth_type_expl": "Rodzaj wygładzania.",
@ -377,25 +420,45 @@
"edt_conf_smooth_updateFrequency_title": "Częstotliwość aktualizacji", "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_expl": "Przyciemnia niskie wartości niebieskiego (rozpoznawane jako czarny)",
"edt_conf_v4l2_blueSignalThreshold_title": "Niebieski próg sygnału", "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_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_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_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_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_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_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_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_framerate_title": "Klatki na sekundę",
"edt_conf_v4l2_greenSignalThreshold_expl": "Przyciemnia niskie wartości zielone (rozpoznawane jako czarne)", "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_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_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_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_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_expl": "Przyciemnia niskie wartości czerwone (rozpoznawane jako czarne)",
"edt_conf_v4l2_redSignalThreshold_title": "Próg sygnału czerwonego", "edt_conf_v4l2_redSignalThreshold_title": "Próg sygnału czerwonego",
"edt_conf_v4l2_resolution_expl": "Lista obsługiwanych rozdzielczości aktywnego urządzenia", "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_expl": "Port serwera internetowego HTTPS",
"edt_conf_webc_sslport_title": "HTTPS Port", "edt_conf_webc_sslport_title": "HTTPS Port",
"edt_dev_auth_key_title": "Token uwierzytelnienia", "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_cool_adjust": "Odejmij zimną biel",
"edt_dev_enum_sub_min_warm_adjust": "Odejmij ciepłą biel", "edt_dev_enum_sub_min_warm_adjust": "Odejmij ciepłą biel",
"edt_dev_enum_subtract_minimum": "Odejmij minimum", "edt_dev_enum_subtract_minimum": "Odejmij minimum",
"edt_dev_enum_white_off": "Wyłącz biały", "edt_dev_enum_white_off": "Wyłącz biały",
"edt_dev_general_colorOrder_title": "Kolejność bajtów RGB", "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": "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_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_general_rewriteTime_title": "Czas odświeżania",
"edt_dev_spec_FCledToOn_title": "Zanikanie LED aktywne", "edt_dev_spec_FCledToOn_title": "Zanikanie LED aktywne",
"edt_dev_spec_FCmanualControl_title": "Ręczna kontrola zanikania LED", "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_brightnessFactor_title": "Współczynnik jasności",
"edt_dev_spec_brightnessMax_title": "Maksymalna jasność", "edt_dev_spec_brightnessMax_title": "Maksymalna jasność",
"edt_dev_spec_brightnessMin_title": "Minimalna 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_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_chanperfixture_title": "Kanały na urządzenie",
"edt_dev_spec_cid_title": "CID", "edt_dev_spec_cid_title": "CID",
"edt_dev_spec_clientKey_title": "Klucz klienta", "edt_dev_spec_clientKey_title": "Klucz klienta",
@ -453,9 +521,16 @@
"edt_dev_spec_debugLevel_title": "Poziom debugowania połączenia Streamera", "edt_dev_spec_debugLevel_title": "Poziom debugowania połączenia Streamera",
"edt_dev_spec_debugStreamer_title": "Streamer Debug", "edt_dev_spec_debugStreamer_title": "Streamer Debug",
"edt_dev_spec_delayAfterConnect_title": "Przerwa po połączeniu", "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_dithering_title": "Rozpraszanie",
"edt_dev_spec_dmaNumber_title": "Kanał DMA", "edt_dev_spec_dmaNumber_title": "Kanał DMA",
"edt_dev_spec_gamma_title": "Gamma", "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_gpioBcm_title": "Pin GPIO",
"edt_dev_spec_gpioMap_title": "Mapowanie GPIO", "edt_dev_spec_gpioMap_title": "Mapowanie GPIO",
"edt_dev_spec_gpioNumber_title": "Numer GPIO", "edt_dev_spec_gpioNumber_title": "Numer GPIO",
@ -465,6 +540,7 @@
"edt_dev_spec_intervall_title": "Przedział", "edt_dev_spec_intervall_title": "Przedział",
"edt_dev_spec_invert_title": "Odwróć sygnał", "edt_dev_spec_invert_title": "Odwróć sygnał",
"edt_dev_spec_latchtime_title": "Czas zatrzaśnięcia", "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_ledIndex_title": "Indeks LED",
"edt_dev_spec_ledType_title": "Typ LED", "edt_dev_spec_ledType_title": "Typ LED",
"edt_dev_spec_lightid_itemtitle": "ID", "edt_dev_spec_lightid_itemtitle": "ID",
@ -489,6 +565,7 @@
"edt_dev_spec_printTimeStamp_title": "Dodaj znacznik czasu", "edt_dev_spec_printTimeStamp_title": "Dodaj znacznik czasu",
"edt_dev_spec_pwmChannel_title": "Kanał PWM", "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": "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_serial_title": "Numer seryjny",
"edt_dev_spec_spipath_title": "SPI path", "edt_dev_spec_spipath_title": "SPI path",
"edt_dev_spec_sslHSTimeoutMax_title": "Maksymalny limit czasu uzgadniania streamera", "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_sslReadTimeout_title": "Limit czasu odczytu Streamera",
"edt_dev_spec_switchOffOnBlack_title": "Wyłącz na czarno", "edt_dev_spec_switchOffOnBlack_title": "Wyłącz na czarno",
"edt_dev_spec_switchOffOnbelowMinBrightness_title": "Wyłączanie poniżej minimum", "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": "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_targetIp_title": "Docelowe IP",
"edt_dev_spec_transeffect_title": "Efekt przejścia", "edt_dev_spec_transeffect_title": "Efekt przejścia",
"edt_dev_spec_transistionTimeExtra_title": "Dodatkowa ciemność", "edt_dev_spec_transistionTimeExtra_title": "Dodatkowa ciemność",
@ -556,13 +635,14 @@
"edt_eff_fadeouttime": "Czas wygaszania", "edt_eff_fadeouttime": "Czas wygaszania",
"edt_eff_flag_header": "Flagi", "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_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_frequency": "Częstotliwość",
"edt_eff_gif_header": "Gify", "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_gif_header_desc": "Ten efekt odtwarza pliki .gif, zapewniając prosty efekt jak pętla wideo jako efekt.",
"edt_eff_height": "Wysokość", "edt_eff_height": "Wysokość",
"edt_eff_huechange": "Zmiana koloru", "edt_eff_huechange": "Zmiana koloru",
"edt_eff_image": "Plik obrazu", "edt_eff_image": "Plik obrazu",
"edt_eff_initial_blink": "Rozbłysk dla lepszej uwagi",
"edt_eff_interval": "Intervał", "edt_eff_interval": "Intervał",
"edt_eff_knightrider_header": "Knight Rider (Nieustraszony)", "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.", "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.", "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_advanced": "Zaawansowany",
"general_access_default": "Standardowy (Domyślny)", "general_access_default": "Standardowy (Domyślny)",
"general_access_expert": "Ekspert", "general_access_expert": "Ekspercki",
"general_btn_back": "Wstecz", "general_btn_back": "Wstecz",
"general_btn_cancel": "Anuluj", "general_btn_cancel": "Anuluj",
"general_btn_continue": "Kontynuuj", "general_btn_continue": "Kontynuuj",
@ -686,6 +766,7 @@
"general_btn_off": "Wyłączony", "general_btn_off": "Wyłączony",
"general_btn_ok": "OK", "general_btn_ok": "OK",
"general_btn_on": "Uruchomiony", "general_btn_on": "Uruchomiony",
"general_btn_overwrite": "Nadpisz",
"general_btn_rename": "Zmień nazwe", "general_btn_rename": "Zmień nazwe",
"general_btn_restarthyperion": "Zrestartuj Hyperion", "general_btn_restarthyperion": "Zrestartuj Hyperion",
"general_btn_save": "Zapisz", "general_btn_save": "Zapisz",
@ -699,35 +780,43 @@
"general_col_blue": "niebieski", "general_col_blue": "niebieski",
"general_col_green": "zielony", "general_col_green": "zielony",
"general_col_red": "czerwony", "general_col_red": "czerwony",
"general_comp_BLACKBORDER": "Usuń czarne pasy", "general_comp_BLACKBORDER": "Wykryw. czarnych pasków",
"general_comp_BOBLIGHTSERVER": "Serwer Boblight", "general_comp_BOBLIGHTSERVER": "Serwer Boblight",
"general_comp_FLATBUFSERVER": "Serwer FlatBuffers", "general_comp_FLATBUFSERVER": "Serwer FlatBuffers",
"general_comp_FORWARDER": "Przekazyw. wejścia", "general_comp_FORWARDER": "Przekierowanie",
"general_comp_GRABBER": "Przechwytyw. pulpitu", "general_comp_GRABBER": "Przechwytyw. pulpitu",
"general_comp_LEDDEVICE": "Urządzenie LED", "general_comp_LEDDEVICE": "Urządzenie LED",
"general_comp_PROTOSERVER": "Serwer protokołu buforowania", "general_comp_PROTOSERVER": "Serwer protokołu buforowania",
"general_comp_SMOOTHING": "Wygładzanie animacji", "general_comp_SMOOTHING": "Wygładzanie animacji",
"general_comp_V4L": "Przechwytyw. USB", "general_comp_V4L": "Przechwytyw. USB",
"general_country_cn": "Chiny",
"general_country_de": "Niemcy (Germany)", "general_country_de": "Niemcy (Germany)",
"general_country_es": "Hiszpania (Spain)", "general_country_es": "Hiszpania (Spain)",
"general_country_fr": "Francja (France)", "general_country_fr": "Francja (France)",
"general_country_it": "Włochy (Italy)", "general_country_it": "Włochy (Italy)",
"general_country_nl": "Holandia (Netherlands)", "general_country_nl": "Holandia (Netherlands)",
"general_country_ru": "Rosja",
"general_country_uk": "Wielka Brytania (United Kingdom)", "general_country_uk": "Wielka Brytania (United Kingdom)",
"general_country_us": "Stany Zjednoczone (United States)", "general_country_us": "Stany Zjednoczone (United States)",
"general_disabled": "wyłączony",
"general_enabled": "włączony",
"general_speech_cs": "Czeski (Czech)", "general_speech_cs": "Czeski (Czech)",
"general_speech_de": "Niemiecki (German)", "general_speech_de": "Niemiecki (German)",
"general_speech_en": "Angielski (English)", "general_speech_en": "Angielski (English)",
"general_speech_es": "Hiszpański (Spanish)", "general_speech_es": "Hiszpański (Spanish)",
"general_speech_fr": "Francuski (French)", "general_speech_fr": "Francuski (French)",
"general_speech_it": "Włoski (Italian)", "general_speech_it": "Włoski (Italian)",
"general_speech_nl": "Holenderski (Dutch)", "general_speech_nb": "Norweski (Norwegian)",
"general_speech_pl": "Polski (Polish)", "general_speech_nl": "Niderlandzki (Nederlands)",
"general_speech_pl": "Polski (Artur Klimek)",
"general_speech_pt": "Portugalski (Portuguese)",
"general_speech_ro": "Rumuński (Romanian)", "general_speech_ro": "Rumuński (Romanian)",
"general_speech_ru": "Rosyjski (Russian)",
"general_speech_sv": "Szwedzki (Swedish)", "general_speech_sv": "Szwedzki (Swedish)",
"general_speech_tr": "Turecki (Turkish)", "general_speech_tr": "Turecki (Turkish)",
"general_speech_vi": "Wietnamski (Vietnamese)", "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", "general_wiki_moreto": "Więcej informacji o \"$1\" dostępne jest na naszej Wikipedii",
"infoDialog_checklist_title": "Lista kontrolna!", "infoDialog_checklist_title": "Lista kontrolna!",
"infoDialog_effconf_created_text": "Efekt „$1” został utworzony pomyślnie!", "infoDialog_effconf_created_text": "Efekt „$1” został utworzony pomyślnie!",
@ -740,6 +829,10 @@
"infoDialog_import_confirm_title": "Potwierdź importowanie", "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_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_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_wizrgb_text": "Twoja kolejność bajtów RGB jest już poprawnie ustawiona.",
"infoDialog_writeconf_error_text": "Zapisanie konfiguracji nie powiodło się.", "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.", "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_togglelednumber": "Pokaż indeks LED",
"main_ledsim_btn_toggleleds": "Pokaż wizualizację LED", "main_ledsim_btn_toggleleds": "Pokaż wizualizację LED",
"main_ledsim_btn_togglelivevideo": "Obraz przechwycony", "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_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_ledsim_title": "Podgląd na żywo",
"main_menu_about_token": "Informacje o aplikacji", "main_menu_about_token": "Informacje o aplikacji",
@ -770,6 +864,7 @@
"main_menu_general_conf_token": "Podstawowe", "main_menu_general_conf_token": "Podstawowe",
"main_menu_grabber_conf_token": "Przechwytywanie obrazu", "main_menu_grabber_conf_token": "Przechwytywanie obrazu",
"main_menu_input_selection_token": "Wybór źródła", "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_leds_conf_token": "Urządzenie LED",
"main_menu_logging_token": "Dziennik", "main_menu_logging_token": "Dziennik",
"main_menu_network_conf_token": "Usługi sieciowe", "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_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": "Rodzaj mapowania",
"remote_maptype_label_multicolor_mean": "Kolorowy", "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_syseffets": "Efekty standardowe",
"remote_optgroup_templates_custom": "Szablony użytkownika",
"remote_optgroup_templates_system": "Szablony systemowe",
"remote_optgroup_usreffets": "Efekty użytkownika", "remote_optgroup_usreffets": "Efekty użytkownika",
"remote_videoMode_2D": "2D", "remote_videoMode_2D": "2D",
"remote_videoMode_3DSBS": "3DSBS", "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_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_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_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_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_stop": "Zatrzymaj wideo",
"wiz_cc_btn_switchpic": "Zmień zdjęcie", "wiz_cc_btn_switchpic": "Zmień zdjęcie",
@ -867,6 +964,10 @@
"wiz_cc_testintrok": "Kliknij przycisk poniżej, aby rozpocząć testowe wideo.", "wiz_cc_testintrok": "Kliknij przycisk poniżej, aby rozpocząć testowe wideo.",
"wiz_cc_testintrowok": "Sprawdź poniższy link, aby pobrać filmy testowe:", "wiz_cc_testintrowok": "Sprawdź poniższy link, aby pobrać filmy testowe:",
"wiz_cc_title": "Kreator kalibracji kolorów", "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_guideyou": "$1 poprowadzi Cię przez konfigurację. Wystarczy nacisnąć przycisk!",
"wiz_hue_blinkblue": "ID $1 świeci na niebiesko", "wiz_hue_blinkblue": "ID $1 świeci na niebiesko",
"wiz_hue_clientkey": "Klucz klienta:", "wiz_hue_clientkey": "Klucz klienta:",
@ -897,9 +998,11 @@
"wiz_hue_title": "Kreator Philips Hue", "wiz_hue_title": "Kreator Philips Hue",
"wiz_hue_username": "ID użytkownika:", "wiz_hue_username": "ID użytkownika:",
"wiz_identify": "Zidentyfikuj", "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_disabled": "Dezaktywowane",
"wiz_ids_entire": "Cały obraz", "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_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_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ć.", "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_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_componentbox_label_title": "Stare componente",
"dashboard_infobox_label_currenthyp": "Versiunea ta Hyperion:", "dashboard_infobox_label_currenthyp": "Versiunea ta Hyperion:",
"dashboard_infobox_label_disableh": "Dezactivare Hyperion",
"dashboard_infobox_label_enableh": "Activare Instans: $1", "dashboard_infobox_label_enableh": "Activare Instans: $1",
"dashboard_infobox_label_instance": "Instanță:", "dashboard_infobox_label_instance": "Instanță:",
"dashboard_infobox_label_latesthyp": "Cea mai nouă versiune Hyperion:", "dashboard_infobox_label_latesthyp": "Cea mai nouă versiune Hyperion:",

View File

@ -1,7 +1,8 @@
{ {
"InfoDialog_lang_title": "Настройки языка", "InfoDialog_access_title": "Уровень настроек",
"about_build": "Сборка", "about_build": "Сборка",
"about_builddate": "Дата сборки", "about_builddate": "Дата сборки",
"about_contribute": "Разрабатывайте Hyperion с нами!",
"about_translations": "Переводы", "about_translations": "Переводы",
"about_version": "Версия", "about_version": "Версия",
"conf_colors_blackborder_intro": "Пропустить черные полосы, где бы они ни были. Каждый режим использует другой алгоритм обнаружения, который настроен для особых ситуаций.", "conf_colors_blackborder_intro": "Пропустить черные полосы, где бы они ни были. Каждый режим использует другой алгоритм обнаружения, который настроен для особых ситуаций.",
@ -12,13 +13,20 @@
"conf_effect_path_intro": "Загрузить эффекты из определенных мест. Дополнительно вы можете отключить отдельные эффекты по имени, чтобы скрыть их от всех списков эффектов.", "conf_effect_path_intro": "Загрузить эффекты из определенных мест. Дополнительно вы можете отключить отдельные эффекты по имени, чтобы скрыть их от всех списков эффектов.",
"conf_general_impexp_expbtn": "Экспорт", "conf_general_impexp_expbtn": "Экспорт",
"conf_general_impexp_impbtn": "Импорт", "conf_general_impexp_impbtn": "Импорт",
"conf_general_impexp_l1": "Для импорта настроек выберите файл конфигурации и нажмите \"Импорт\".",
"conf_general_impexp_l2": "Для экспорта настроек нажмите \"Экспорт\". Поле чего ваш браузер загрузит файл.",
"conf_general_impexp_title": "Импорт/Экспорт конфигурации", "conf_general_impexp_title": "Импорт/Экспорт конфигурации",
"conf_general_intro": "Настройка Hyperion и WebUI которые не подошли в другие категории.",
"conf_general_label_title": "Основные настройки", "conf_general_label_title": "Основные настройки",
"conf_grabber_fg_intro": "Захват платформы - это захват вашей локальной системы в качестве источника ввода, на котором установлен Hyperion.", "conf_grabber_fg_intro": "Платформа захвата - это локальный источник захвата ввода, на устройстве на котором установлен Hyperion.",
"conf_grabber_v4l_intro": "USB-захват - это устройство захвата, подключенное через USB, которое используется для ввода исходных изображений для обработки.", "conf_grabber_v4l_intro": "USB-захват - это устройство захвата, подключенное через USB, которое используется для ввода исходных изображений для обработки.",
"conf_helptable_expl": "Объяснение", "conf_helptable_expl": "Объяснение",
"conf_helptable_option": "Настройки",
"conf_leds_contr_label_contrtype": "Тип контроллера:", "conf_leds_contr_label_contrtype": "Тип контроллера:",
"conf_leds_device_intro": "Hyperion поддерживает множество контроллеров для передачи данных на целевое устройство. Выберите светодиодный контроллер из списка и настройте его. Мы выбрали лучшие настройки по умолчанию для каждого устройства.", "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_button_updsim": "Просмотр обновления",
"conf_leds_layout_checkp1": "Черный светодиод - это ваш первый светодиод, первый светодиод - это точка, в которую вы вводите сигнал данных.", "conf_leds_layout_checkp1": "Черный светодиод - это ваш первый светодиод, первый светодиод - это точка, в которую вы вводите сигнал данных.",
"conf_leds_layout_cl_bottom": "Снизу", "conf_leds_layout_cl_bottom": "Снизу",
@ -29,18 +37,28 @@
"conf_leds_layout_cl_reversdir": "Обратное направление", "conf_leds_layout_cl_reversdir": "Обратное направление",
"conf_leds_layout_cl_right": "Справа", "conf_leds_layout_cl_right": "Справа",
"conf_leds_layout_cl_top": "Сверху", "conf_leds_layout_cl_top": "Сверху",
"conf_leds_layout_frame": "Классический макет (Светодиодная рамка)",
"conf_leds_layout_ma_position": "Вход", "conf_leds_layout_ma_position": "Вход",
"conf_leds_layout_ma_vert": "Вертикальный", "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_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_ledcontroller": "Светодиодный контроллер",
"conf_leds_nav_label_ledlayout": "Светодиодный макет", "conf_leds_nav_label_ledlayout": "Светодиодный макет",
"conf_leds_optgroup_debug": "Режим отладки", "conf_leds_optgroup_debug": "Отладка",
"conf_leds_optgroup_network": "Сеть", "conf_leds_optgroup_network": "Сеть",
"conf_leds_optgroup_other": "Другое",
"conf_leds_optgroup_usb": "USB/Последовательный порт", "conf_leds_optgroup_usb": "USB/Последовательный порт",
"conf_logging_btn_autoscroll": "Автоматическая прокрутка", "conf_logging_btn_autoscroll": "Автоматическая прокрутка",
"conf_logging_lastreports": "Предыдущий отчет", "conf_logging_lastreports": "Предыдущий отчет",
"conf_logging_report": "Отчет", "conf_logging_report": "Отчет",
"conf_logging_yourlink": "Ссылка на твой отчет", "conf_logging_uploading": "Подготовка данных...",
"conf_logging_yourlink": "Ссылка на ваш отчет",
"dashboard_alert_message_confedit": "Конфигурация Hyperion была изменена. Для применения необходимо перезапустить Hyperion.", "dashboard_alert_message_confedit": "Конфигурация Hyperion была изменена. Для применения необходимо перезапустить Hyperion.",
"dashboard_alert_message_confedit_t": "Конфигурация изменена", "dashboard_alert_message_confedit_t": "Конфигурация изменена",
"dashboard_alert_message_confsave_success": "Ваша конфигурация Hyperion успешно сохранена. Ваши изменения теперь активны.", "dashboard_alert_message_confsave_success": "Ваша конфигурация Hyperion успешно сохранена. Ваши изменения теперь активны.",
@ -56,16 +74,24 @@
"dashboard_infobox_label_instance": "Пример:", "dashboard_infobox_label_instance": "Пример:",
"dashboard_infobox_label_latesthyp": "Последняя версия Hyperion:", "dashboard_infobox_label_latesthyp": "Последняя версия Hyperion:",
"dashboard_infobox_label_platform": "Платформа:", "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_statush": "Статус Hyperion:",
"dashboard_infobox_label_title": "Информация", "dashboard_infobox_label_title": "Информация",
"dashboard_infobox_message_updatesuccess": "Вы используете актуальную версию Hyperion.", "dashboard_infobox_message_updatesuccess": "Вы используете актуальную версию Hyperion.",
"dashboard_infobox_message_updatewarning": "Новая версия Hyperion доступна! ($1)", "dashboard_infobox_message_updatewarning": "Новая версия Hyperion доступна! ($1)",
"dashboard_label_intro": "Панель инструментов покажет вам краткий обзор состояния Hyperion и покажет последние новости блога Hyperion.", "dashboard_label_intro": "Панель инструментов покажет вам краткий обзор состояния Hyperion.",
"dashboard_newsbox_label_title": "Hyperion Блог", "dashboard_newsbox_label_title": "Hyperion Блог",
"dashboard_newsbox_noconn": "Невозможно подключиться к блогу Hyperion для получения последних постов, Ваше подключение к интернету работает?", "dashboard_newsbox_noconn": "Невозможно подключиться к блогу Hyperion для получения последних постов, Ваше подключение к интернету работает?",
"dashboard_newsbox_readmore": "Подробнее", "dashboard_newsbox_readmore": "Подробнее",
"dashboard_newsbox_visitblog": "Посетить Hyperion Блог", "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_bb_mode_title": "Режим",
"edt_conf_color_black_title": "Черный", "edt_conf_color_black_title": "Черный",
"edt_conf_color_blue_title": "Синий", "edt_conf_color_blue_title": "Синий",
@ -78,18 +104,28 @@
"edt_conf_color_white_title": "Белый", "edt_conf_color_white_title": "Белый",
"edt_conf_color_yellow_title": "Желтый", "edt_conf_color_yellow_title": "Желтый",
"edt_conf_effp_disable_itemtitle": "Эффект", "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_bgr": "BGR",
"edt_conf_enum_bottom_up": "Снизу вверх",
"edt_conf_enum_brg": "BRG", "edt_conf_enum_brg": "BRG",
"edt_conf_enum_color": "Цвет", "edt_conf_enum_color": "Цвет",
"edt_conf_enum_decay": "Задержка",
"edt_conf_enum_dl_error": "Ошибка",
"edt_conf_enum_effect": "Эффект", "edt_conf_enum_effect": "Эффект",
"edt_conf_enum_gbr": "GBR", "edt_conf_enum_gbr": "GBR",
"edt_conf_enum_grb": "GRB", "edt_conf_enum_grb": "GRB",
"edt_conf_enum_left_right": "Слева на право",
"edt_conf_enum_logdebug": "Отладка", "edt_conf_enum_logdebug": "Отладка",
"edt_conf_enum_multicolor_mean": "Мультицвет", "edt_conf_enum_multicolor_mean": "Мультицвет",
"edt_conf_enum_please_select": "Пожалуйста выберите",
"edt_conf_enum_rbg": "RBG", "edt_conf_enum_rbg": "RBG",
"edt_conf_enum_rgb": "RGB", "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_fbs_timeout_title": "Таймаут",
"edt_conf_fg_device_title": "Устройство",
"edt_conf_fg_display_title": "Дисплей", "edt_conf_fg_display_title": "Дисплей",
"edt_conf_fg_height_title": "Высота", "edt_conf_fg_height_title": "Высота",
"edt_conf_fg_type_title": "Тип", "edt_conf_fg_type_title": "Тип",
@ -97,10 +133,15 @@
"edt_conf_fge_color_title": "Цвет", "edt_conf_fge_color_title": "Цвет",
"edt_conf_fge_effect_title": "Эффект", "edt_conf_fge_effect_title": "Эффект",
"edt_conf_fge_type_title": "Тип", "edt_conf_fge_type_title": "Тип",
"edt_conf_gen_configVersion_title": "Версия конфигурации",
"edt_conf_gen_heading_title": "Общие настройки", "edt_conf_gen_heading_title": "Общие настройки",
"edt_conf_gen_name_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_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_pbs_timeout_title": "Таймаут",
"edt_conf_smooth_heading_title": "Сглаживание", "edt_conf_smooth_heading_title": "Сглаживание",
"edt_conf_smooth_time_ms_title": "Время", "edt_conf_smooth_time_ms_title": "Время",
@ -108,23 +149,48 @@
"edt_conf_smooth_type_title": "Тип", "edt_conf_smooth_type_title": "Тип",
"edt_conf_smooth_updateDelay_title": "Задержка обновления", "edt_conf_smooth_updateDelay_title": "Задержка обновления",
"edt_conf_smooth_updateFrequency_title": "Частота обновления", "edt_conf_smooth_updateFrequency_title": "Частота обновления",
"edt_conf_v4l2_cecDetection_title": "Обнаружение CEC",
"edt_conf_v4l2_cropLeft_title": "Обрезать слева", "edt_conf_v4l2_cropLeft_title": "Обрезать слева",
"edt_conf_v4l2_cropRight_title": "Обрезать справа", "edt_conf_v4l2_cropRight_title": "Обрезать справа",
"edt_conf_v4l2_cropTop_title": "Обрезать свверху", "edt_conf_v4l2_cropTop_title": "Обрезать свверху",
"edt_conf_v4l2_device_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_v4l2_standard_title": "Видео стандарт",
"edt_conf_webc_sslport_title": "Порт HTTPS",
"edt_dev_auth_key_title": "Токен аудетицикафии", "edt_dev_auth_key_title": "Токен аудетицикафии",
"edt_dev_enum_white_off": "Выключить белый ", "edt_dev_enum_white_off": "Выключить белый ",
"edt_dev_general_heading_title": "Общие настройки", "edt_dev_general_heading_title": "Общие настройки",
"edt_dev_general_name_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_gamma_title": "Гамма",
"edt_dev_spec_globalBrightnessControlMaxLevel_title": "Максимальный текущий уровень",
"edt_dev_spec_intervall_title": "Интервал", "edt_dev_spec_intervall_title": "Интервал",
"edt_dev_spec_lightid_itemtitle": "Идентификатор (ID)", "edt_dev_spec_lightid_itemtitle": "Идентификатор (ID)",
"edt_dev_spec_lights_name": "Имя",
"edt_dev_spec_networkDevicePort_title": "Порт",
"edt_dev_spec_port_title": "Порт", "edt_dev_spec_port_title": "Порт",
"edt_dev_spec_syncOverwrite_title": "Выключить синхронизацию",
"edt_dev_spec_username_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_ledtest_header": "Тест LED",
"edt_eff_margin": "Отступ",
"edt_eff_plasma_header": "Плазма",
"edt_eff_repeat": "Повтор",
"edt_eff_smooth_custom": "Использовать сглаживание", "edt_eff_smooth_custom": "Использовать сглаживание",
"edt_eff_smooth_time_ms": "Время сглаживания", "edt_eff_smooth_time_ms": "Время сглаживания",
"edt_eff_speed": "Скорость",
"edt_msg_button_delete_all_title": "Удалить всё",
"effectsconfigurator_button_conttest": "Непрерывный тест", "effectsconfigurator_button_conttest": "Непрерывный тест",
"effectsconfigurator_button_deleffect": "Удалить эффект", "effectsconfigurator_button_deleffect": "Удалить эффект",
"effectsconfigurator_button_editeffect": "Загрузить эффект", "effectsconfigurator_button_editeffect": "Загрузить эффект",
@ -134,46 +200,69 @@
"effectsconfigurator_editdeleff": "Удалить/Загрузить эффект", "effectsconfigurator_editdeleff": "Удалить/Загрузить эффект",
"effectsconfigurator_label_chooseeff": "Изменить шаблон", "effectsconfigurator_label_chooseeff": "Изменить шаблон",
"effectsconfigurator_label_effectname": "Имя эффекта", "effectsconfigurator_label_effectname": "Имя эффекта",
"general_access_advanced": "Опытный", "general_access_advanced": "Расширенный",
"general_access_default": "По умолчанию", "general_access_default": "По умолчанию",
"general_access_expert": "Эксперт", "general_access_expert": "Эксперт",
"general_btn_back": "Назад", "general_btn_back": "Назад",
"general_btn_cancel": "Отмена", "general_btn_cancel": "Отмена",
"general_btn_continue": "Продолжить", "general_btn_continue": "Продолжить",
"general_btn_delete": "Удалить",
"general_btn_iswitch": "Переключить", "general_btn_iswitch": "Переключить",
"general_btn_next": "Далее", "general_btn_next": "Далее",
"general_btn_off": "Выкл", "general_btn_off": "Выкл",
"general_btn_ok": "ОК", "general_btn_ok": "ОК",
"general_btn_on": "Вкл", "general_btn_on": "Вкл",
"general_btn_overwrite": "Перезаписать",
"general_btn_rename": "Переименовать",
"general_btn_restarthyperion": "Перезапустить Hyperion", "general_btn_restarthyperion": "Перезапустить Hyperion",
"general_btn_save": "Сохранить", "general_btn_save": "Сохранить",
"general_btn_saveandreload": "Сохранить и перезагрузить", "general_btn_saveandreload": "Сохранить и перезагрузить",
"general_btn_start": "Начать",
"general_btn_yes": "Да", "general_btn_yes": "Да",
"general_button_savesettings": "Сохранить настройки", "general_button_savesettings": "Сохранить настройки",
"general_col_blue": "синий", "general_col_blue": "синий",
"general_col_green": "зеленый", "general_col_green": "зеленый",
"general_col_red": "красный", "general_col_red": "красный",
"general_comp_BLACKBORDER": "Определение черных полос", "general_comp_BLACKBORDER": "Определение черных полос",
"general_comp_BOBLIGHTSERVER": "Boblight cервер",
"general_comp_GRABBER": "Захват экрана",
"general_comp_LEDDEVICE": "Светодиодное устройство (LED)", "general_comp_LEDDEVICE": "Светодиодное устройство (LED)",
"general_comp_SMOOTHING": "Сглаживание", "general_comp_SMOOTHING": "Сглаживание",
"general_comp_V4L": "USB захват", "general_comp_V4L": "USB захват",
"general_country_cn": "Китай",
"general_country_de": "Германия", "general_country_de": "Германия",
"general_country_es": "Испания", "general_country_es": "Испания",
"general_country_fr": "Франция", "general_country_fr": "Франция",
"general_country_it": "Италия", "general_country_it": "Италия",
"general_country_nl": "Нидерланды", "general_country_nl": "Нидерланды",
"general_country_ru": "Россия",
"general_country_uk": "Великобритания", "general_country_uk": "Великобритания",
"general_country_us": "Соединённые Штаты Америки", "general_country_us": "Соединённые Штаты Америки",
"general_disabled": "отключено",
"general_enabled": "включено",
"general_speech_cs": "Чешский", "general_speech_cs": "Чешский",
"general_speech_de": "Немецкий", "general_speech_de": "Немецкий",
"general_speech_en": "Английский", "general_speech_en": "Английский",
"general_speech_es": "Испанский", "general_speech_es": "Испанский",
"general_speech_fr": "французский",
"general_speech_it": "Итальянский", "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_webui_title": "Hyperion - Веб-настройка",
"general_wiki_moreto": "Больше информации о \"$1\" вы можете узнать на нашем", "general_wiki_moreto": "Больше информации о \"$1\" вы можете узнать на нашем",
"infoDialog_checklist_title": "Список желаний!", "infoDialog_checklist_title": "Список желаний!",
"infoDialog_general_error_title": "Ошибка", "infoDialog_general_error_title": "Ошибка",
"infoDialog_general_success_title": "Успешно",
"infoDialog_general_warning_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_btn_togglelivevideo": "Живое видео",
"main_ledsim_text": "Живая визуализация светодиодных цветов и текущий видео поток вашего устройства захвата.", "main_ledsim_text": "Живая визуализация светодиодных цветов и текущий видео поток вашего устройства захвата.",
"main_ledsim_title": "Светодиодная визуализация (LED)", "main_ledsim_title": "Светодиодная визуализация (LED)",
@ -186,6 +275,7 @@
"main_menu_general_conf_token": "Общее", "main_menu_general_conf_token": "Общее",
"main_menu_grabber_conf_token": "Устройство захвата", "main_menu_grabber_conf_token": "Устройство захвата",
"main_menu_input_selection_token": "Выбор входа", "main_menu_input_selection_token": "Выбор входа",
"main_menu_instcapture_conf_token": "Источники",
"main_menu_leds_conf_token": "LED Оборудование", "main_menu_leds_conf_token": "LED Оборудование",
"main_menu_logging_token": "Лог", "main_menu_logging_token": "Лог",
"main_menu_network_conf_token": "Сетевые сервисы", "main_menu_network_conf_token": "Сетевые сервисы",
@ -198,8 +288,12 @@
"remote_color_label": "Цвета/Эффекты", "remote_color_label": "Цвета/Эффекты",
"remote_color_label_color": "Цвет:", "remote_color_label_color": "Цвет:",
"remote_effects_label_effects": "Эффект:", "remote_effects_label_effects": "Эффект:",
"remote_effects_label_picture": "Изображение:",
"remote_input_duration": "Длительность:",
"remote_input_ip": "IP Адрес:", "remote_input_ip": "IP Адрес:",
"remote_input_owner": "Тип", "remote_input_owner": "Тип",
"remote_input_priority": "Приоритет",
"remote_videoMode_2D": "2D",
"remote_videoMode_label": "Видео режим:", "remote_videoMode_label": "Видео режим:",
"support_label_btctext": "Адрес:", "support_label_btctext": "Адрес:",
"support_label_donate": "Пожертвуйте или используйте наши партнерские ссылки", "support_label_donate": "Пожертвуйте или используйте наши партнерские ссылки",
@ -219,14 +313,18 @@
"support_label_yttext": "Не нравятся картинки? Проверьте наш канал на Youtube!", "support_label_yttext": "Не нравятся картинки? Проверьте наш канал на Youtube!",
"update_button_changelog": "Полный список изменений", "update_button_changelog": "Полный список изменений",
"update_button_install": "Установка", "update_button_install": "Установка",
"update_label_description": "Описание:",
"update_label_type": "Тип:", "update_label_type": "Тип:",
"update_versreminder": "Твоя версия: 1$", "update_versreminder": "Твоя версия: 1$",
"wiz_cc_btn_stop": "Остановить видео", "wiz_cc_btn_stop": "Остановить видео",
"wiz_cc_link": "Нажми на меня!", "wiz_cc_link": "Нажми на меня!",
"wiz_hue_create_user": "Создать нового пользователя", "wiz_hue_create_user": "Создать нового пользователя",
"wiz_hue_e_use_group": "Использовать группу",
"wiz_hue_ip": "Hue мост IP:", "wiz_hue_ip": "Hue мост IP:",
"wiz_hue_title": "Philips Hue конфигурация", "wiz_hue_title": "Philips Hue конфигурация",
"wiz_hue_username": "Пользователь ID:", "wiz_hue_username": "Пользователь ID:",
"wiz_ids_disabled": "Деактивированный",
"wiz_rgb_qgend": "...зеленый?", "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_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_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_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_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_text": "Hyperion kan inte skriva till din nuvarande laddade konfigurationsfil. Reparera filbehörigheterna för att fortsätta.",
"InfoDialog_nowrite_title": "skrivtillståndsfel!", "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_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_expl": "Förklaring",
"conf_helptable_option": "Alternativ", "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_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_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_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_btn_checklist": "Visa checklista",
"conf_leds_layout_button_savelay": "Spara layout", "conf_leds_layout_button_savelay": "Spara layout",
"conf_leds_layout_button_updsim": "Uppdatera förhandsvisning", "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_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_ledcontroller": "LED-styrenhet",
"conf_leds_nav_label_ledlayout": "LED layout", "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_RPiGPIO": "RPi GPIO",
"conf_leds_optgroup_RPiPWM": "RPi PWM", "conf_leds_optgroup_RPiPWM": "RPi PWM",
"conf_leds_optgroup_RPiSPI": "RPi SPI", "conf_leds_optgroup_RPiSPI": "RPi SPI",
"conf_leds_optgroup_debug": "Debug",
"conf_leds_optgroup_network": "Nätverk", "conf_leds_optgroup_network": "Nätverk",
"conf_leds_optgroup_other": "Annat",
"conf_leds_optgroup_usb": "USB", "conf_leds_optgroup_usb": "USB",
"conf_logging_btn_autoscroll": "Autorullning", "conf_logging_btn_autoscroll": "Autorullning",
"conf_logging_btn_pbupload": "Ladda upp en rapport för supportförfrågningar", "conf_logging_btn_pbupload": "Ladda upp en rapport för supportförfrågningar",
"conf_logging_contpolicy": "Rapportera integritetspolicy", "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_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_lastreports": "Tidigare rapporter",
"conf_logging_logoutput": "Log output",
"conf_logging_nomessage": "Inga loggmeddelanden finns tillgängliga.", "conf_logging_nomessage": "Inga loggmeddelanden finns tillgängliga.",
"conf_logging_report": "Rapportera", "conf_logging_report": "Rapportera",
"conf_logging_uplfailed": "Uppladdningen misslyckades! Kontrollera din internetanslutning!", "conf_logging_uplfailed": "Uppladdningen misslyckades! Kontrollera din internetanslutning!",
@ -164,14 +174,18 @@
"dashboard_infobox_label_instance": "Instans:", "dashboard_infobox_label_instance": "Instans:",
"dashboard_infobox_label_latesthyp": "Senaste Hyperion-versionen:", "dashboard_infobox_label_latesthyp": "Senaste Hyperion-versionen:",
"dashboard_infobox_label_platform": "Plattform", "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_smartacc": "Smart Åtkomst",
"dashboard_infobox_label_statush": "Hyperion-status:", "dashboard_infobox_label_statush": "Hyperion-status:",
"dashboard_infobox_label_title": "Information", "dashboard_infobox_label_title": "Information",
"dashboard_infobox_label_watchedversionbranch": "Sedd grenversion", "dashboard_infobox_label_watchedversionbranch": "Sedd grenversion",
"dashboard_infobox_message_updatesuccess": "Du använder den senaste versionen av Hyperion.", "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_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": "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_default_password_t": "Webbanvändargränssnittets standardlösenord är inställt",
"dashboard_message_do_not_show_again": "Visa inte detta meddelande igen", "dashboard_message_do_not_show_again": "Visa inte detta meddelande igen",
@ -261,12 +275,14 @@
"edt_conf_enum_automatic": "Automatisk", "edt_conf_enum_automatic": "Automatisk",
"edt_conf_enum_bbclassic": "Klassisk", "edt_conf_enum_bbclassic": "Klassisk",
"edt_conf_enum_bbdefault": "Standard", "edt_conf_enum_bbdefault": "Standard",
"edt_conf_enum_bbletterbox": "Letterbox",
"edt_conf_enum_bbosd": "OSD", "edt_conf_enum_bbosd": "OSD",
"edt_conf_enum_bgr": "BGR", "edt_conf_enum_bgr": "BGR",
"edt_conf_enum_bottom_up": "Botten upp", "edt_conf_enum_bottom_up": "Botten upp",
"edt_conf_enum_brg": "BRG", "edt_conf_enum_brg": "BRG",
"edt_conf_enum_color": "Färg", "edt_conf_enum_color": "Färg",
"edt_conf_enum_custom": "Anpassad", "edt_conf_enum_custom": "Anpassad",
"edt_conf_enum_decay": "Förfall",
"edt_conf_enum_dl_error": "Fel", "edt_conf_enum_dl_error": "Fel",
"edt_conf_enum_dl_informational": "Informativ", "edt_conf_enum_dl_informational": "Informativ",
"edt_conf_enum_dl_nodebug": "Ingen felsökning", "edt_conf_enum_dl_nodebug": "Ingen felsökning",
@ -286,6 +302,7 @@
"edt_conf_enum_logverbose": "Mångordig", "edt_conf_enum_logverbose": "Mångordig",
"edt_conf_enum_logwarn": "Varning", "edt_conf_enum_logwarn": "Varning",
"edt_conf_enum_multicolor_mean": "Flerfärgad", "edt_conf_enum_multicolor_mean": "Flerfärgad",
"edt_conf_enum_please_select": "Välj",
"edt_conf_enum_rbg": "RBG", "edt_conf_enum_rbg": "RBG",
"edt_conf_enum_rgb": "RGB", "edt_conf_enum_rgb": "RGB",
"edt_conf_enum_right_left": "Höger till vänster", "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_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_itemtitle": "JSON-mål",
"edt_conf_fw_json_title": "Lista över JSON-klienter", "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_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_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", "edt_conf_gen_name_title": "Konfigurationsnamn",
@ -366,7 +384,15 @@
"edt_conf_pbs_timeout_title": "Timeout", "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_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_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_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_expl": "Hur länge ska utjämningen samla bilder?",
"edt_conf_smooth_time_ms_title": "Tid", "edt_conf_smooth_time_ms_title": "Tid",
"edt_conf_smooth_type_expl": "Typ av utjämning.", "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_expl": "Port för HTTPS webbserver",
"edt_conf_webc_sslport_title": "HTTPS-Port", "edt_conf_webc_sslport_title": "HTTPS-Port",
"edt_dev_auth_key_title": "Autentiserings-Token", "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_cool_adjust": "Ta bort kallvit",
"edt_dev_enum_sub_min_warm_adjust": "Ta bort varmvitt", "edt_dev_enum_sub_min_warm_adjust": "Ta bort varmvitt",
"edt_dev_enum_subtract_minimum": "Dra minst", "edt_dev_enum_subtract_minimum": "Dra minst",
"edt_dev_enum_white_off": "Vit av", "edt_dev_enum_white_off": "Vit av",
"edt_dev_general_colorOrder_title": "RGB-byte-ordning", "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": "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_heading_title": "Allmänna Inställningar",
"edt_dev_general_name_title": "Konfigurationsnamn", "edt_dev_general_name_title": "Konfigurationsnamn",
"edt_dev_general_rewriteTime_title": "Uppdateringstid", "edt_dev_general_rewriteTime_title": "Uppdateringstid",
@ -445,7 +474,9 @@
"edt_dev_spec_brightnessFactor_title": "Ljusstyrka faktor", "edt_dev_spec_brightnessFactor_title": "Ljusstyrka faktor",
"edt_dev_spec_brightnessMax_title": "Högsta ljusstyrka", "edt_dev_spec_brightnessMax_title": "Högsta ljusstyrka",
"edt_dev_spec_brightnessMin_title": "Minsta 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_brightnessThreshold_title": "Minsta signalstyrka för ljusstyrka",
"edt_dev_spec_brightness_title": "Ljusstyrka",
"edt_dev_spec_chanperfixture_title": "Kanaler per fixtur", "edt_dev_spec_chanperfixture_title": "Kanaler per fixtur",
"edt_dev_spec_cid_title": "CID", "edt_dev_spec_cid_title": "CID",
"edt_dev_spec_clientKey_title": "Klientnyckel", "edt_dev_spec_clientKey_title": "Klientnyckel",
@ -453,9 +484,16 @@
"edt_dev_spec_debugLevel_title": "Felsökningsnivå för Streameranslutning", "edt_dev_spec_debugLevel_title": "Felsökningsnivå för Streameranslutning",
"edt_dev_spec_debugStreamer_title": "Streamerfelsökning", "edt_dev_spec_debugStreamer_title": "Streamerfelsökning",
"edt_dev_spec_delayAfterConnect_title": "Försening efter anslutning", "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_dithering_title": "Ditrering",
"edt_dev_spec_dmaNumber_title": "DMA-kanal", "edt_dev_spec_dmaNumber_title": "DMA-kanal",
"edt_dev_spec_gamma_title": "Gamma", "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_gpioBcm_title": "GPIO-stift",
"edt_dev_spec_gpioMap_title": "GPIO-kartläggning", "edt_dev_spec_gpioMap_title": "GPIO-kartläggning",
"edt_dev_spec_gpioNumber_title": "GPIO-nummer", "edt_dev_spec_gpioNumber_title": "GPIO-nummer",
@ -465,6 +503,7 @@
"edt_dev_spec_intervall_title": "Intervall", "edt_dev_spec_intervall_title": "Intervall",
"edt_dev_spec_invert_title": "Invertera signal", "edt_dev_spec_invert_title": "Invertera signal",
"edt_dev_spec_latchtime_title": "Spärrtid", "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_ledIndex_title": "LED-index",
"edt_dev_spec_ledType_title": "LED-Typ", "edt_dev_spec_ledType_title": "LED-Typ",
"edt_dev_spec_lightid_itemtitle": "ID", "edt_dev_spec_lightid_itemtitle": "ID",
@ -489,6 +528,7 @@
"edt_dev_spec_printTimeStamp_title": "Lägg till tidsstämpel", "edt_dev_spec_printTimeStamp_title": "Lägg till tidsstämpel",
"edt_dev_spec_pwmChannel_title": "PWM-kanal", "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": "Å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_serial_title": "Serienummer",
"edt_dev_spec_spipath_title": "SPI-väg", "edt_dev_spec_spipath_title": "SPI-väg",
"edt_dev_spec_sslHSTimeoutMax_title": "Maximal Streamer-handskakningstimeout", "edt_dev_spec_sslHSTimeoutMax_title": "Maximal Streamer-handskakningstimeout",
@ -496,7 +536,9 @@
"edt_dev_spec_sslReadTimeout_title": "Streamer-avläsningstimeout", "edt_dev_spec_sslReadTimeout_title": "Streamer-avläsningstimeout",
"edt_dev_spec_switchOffOnBlack_title": "Stäng av när svart", "edt_dev_spec_switchOffOnBlack_title": "Stäng av när svart",
"edt_dev_spec_switchOffOnbelowMinBrightness_title": "Stäng av, under minimum", "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": "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_targetIp_title": "Mål-IP",
"edt_dev_spec_transeffect_title": "Övergångseffekt", "edt_dev_spec_transeffect_title": "Övergångseffekt",
"edt_dev_spec_transistionTimeExtra_title": "Extra mörkertid", "edt_dev_spec_transistionTimeExtra_title": "Extra mörkertid",
@ -686,6 +728,7 @@
"general_btn_off": "Av", "general_btn_off": "Av",
"general_btn_ok": "OK", "general_btn_ok": "OK",
"general_btn_on": "På", "general_btn_on": "På",
"general_btn_overwrite": "Skriv över",
"general_btn_rename": "Döp om", "general_btn_rename": "Döp om",
"general_btn_restarthyperion": "Starta om Hyperion", "general_btn_restarthyperion": "Starta om Hyperion",
"general_btn_save": "Spara", "general_btn_save": "Spara",
@ -708,25 +751,33 @@
"general_comp_PROTOSERVER": "Protokoll bufferserver", "general_comp_PROTOSERVER": "Protokoll bufferserver",
"general_comp_SMOOTHING": "Utjämning", "general_comp_SMOOTHING": "Utjämning",
"general_comp_V4L": "USB-fångst", "general_comp_V4L": "USB-fångst",
"general_country_cn": "Kina",
"general_country_de": "Tyskland", "general_country_de": "Tyskland",
"general_country_es": "Spanien", "general_country_es": "Spanien",
"general_country_fr": "Frankrike", "general_country_fr": "Frankrike",
"general_country_it": "Italien", "general_country_it": "Italien",
"general_country_nl": "Nederländerna", "general_country_nl": "Nederländerna",
"general_country_ru": "Ryssland",
"general_country_uk": "Storbritannien", "general_country_uk": "Storbritannien",
"general_country_us": "USA", "general_country_us": "USA",
"general_disabled": "Inaktiverad",
"general_enabled": "Aktiverad",
"general_speech_cs": "Tjeckiska", "general_speech_cs": "Tjeckiska",
"general_speech_de": "Tyska", "general_speech_de": "Tyska",
"general_speech_en": "Engelska", "general_speech_en": "Engelska",
"general_speech_es": "Spanska", "general_speech_es": "Spanska",
"general_speech_fr": "Franska", "general_speech_fr": "Franska",
"general_speech_it": "Italienska", "general_speech_it": "Italienska",
"general_speech_nb": "Norska (Bokmål)",
"general_speech_nl": "Holländska", "general_speech_nl": "Holländska",
"general_speech_pl": "Polska", "general_speech_pl": "Polska",
"general_speech_pt": "Portugisiska",
"general_speech_ro": "Rumänska", "general_speech_ro": "Rumänska",
"general_speech_ru": "Ryska",
"general_speech_sv": "Svenska", "general_speech_sv": "Svenska",
"general_speech_tr": "Turkiska", "general_speech_tr": "Turkiska",
"general_speech_vi": "Vietnamesiska", "general_speech_vi": "Vietnamesiska",
"general_speech_zh-CN": "Kinesiska (förenklad)",
"general_webui_title": "Hyperion - Webbkonfiguration", "general_webui_title": "Hyperion - Webbkonfiguration",
"general_wiki_moreto": "Mer information om \"$1\" finns i vår", "general_wiki_moreto": "Mer information om \"$1\" finns i vår",
"infoDialog_checklist_title": "Checklista!", "infoDialog_checklist_title": "Checklista!",
@ -806,6 +857,8 @@
"remote_maptype_label_multicolor_mean": "Flerfärgad", "remote_maptype_label_multicolor_mean": "Flerfärgad",
"remote_maptype_label_unicolor_mean": "Enfärgad", "remote_maptype_label_unicolor_mean": "Enfärgad",
"remote_optgroup_syseffets": "Tillhandahållna effekter", "remote_optgroup_syseffets": "Tillhandahållna effekter",
"remote_optgroup_templates_custom": "Användarmallar",
"remote_optgroup_templates_system": "Systemmallar",
"remote_optgroup_usreffets": "Användareffekter", "remote_optgroup_usreffets": "Användareffekter",
"remote_videoMode_2D": "2D", "remote_videoMode_2D": "2D",
"remote_videoMode_3DSBS": "3DSBS", "remote_videoMode_3DSBS": "3DSBS",
@ -867,6 +920,10 @@
"wiz_cc_testintrok": "Klicka på knappen nedan för att starta en testvideo.", "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_testintrowok": "Kolla in följande länk för att ladda ner testvideor:",
"wiz_cc_title": "Färgkalibreringsguiden", "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_guideyou": "$1 guidar dig genom inställningarna. Tryck bara på knappen!",
"wiz_hue_blinkblue": "Låt ID $1 lysa blått", "wiz_hue_blinkblue": "Låt ID $1 lysa blått",
"wiz_hue_clientkey": "Klientnyckel:", "wiz_hue_clientkey": "Klientnyckel:",
@ -900,6 +957,7 @@
"wiz_identify_light": "Identifiera $1", "wiz_identify_light": "Identifiera $1",
"wiz_ids_disabled": "Inaktiverad", "wiz_ids_disabled": "Inaktiverad",
"wiz_ids_entire": "Hela bilden", "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_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_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.", "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_success": "Parola başarıyla değiştirildi!",
"InfoDialog_changePassword_title": "Parolayı Değiştir", "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_build": "Yapılandırma",
"about_builddate": "Yapılandırma tarıhı", "about_builddate": "Yapılandırma tarıhı",
"about_contribute": "Hyperion'u bizimle birlikte geliştirin!", "about_contribute": "Hyperion'u bizimle birlikte geliştirin!",
"about_resources": "$1 kitaplıkları", "about_resources": "$1 kitaplıkları",
"about_translations": "Çeviriler", "about_translations": "Çeviriler",
"about_version": "Versiyon", "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_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_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", "conf_general_impexp_expbtn": "Dışa Aktar",
@ -18,6 +17,7 @@
"conf_general_impexp_title": "Konfigürasyonu İçe/Dışa Aktar", "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_intro": "Hyperion ve WebUI hakkında, diğer kategorilere girmeyen temel ayarlar.",
"conf_general_label_title": "Genel 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_expl": "Açıklama",
"conf_helptable_option": "Seçenek", "conf_helptable_option": "Seçenek",
"conf_leds_contr_label_contrtype": "Kontrolör tipi:", "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_leftbottom": "Sol 50% - 100% Alt",
"conf_leds_layout_cl_leftmiddle": "Sol 25% - 75% Orta", "conf_leds_layout_cl_leftmiddle": "Sol 25% - 75% Orta",
"conf_leds_layout_cl_lefttop": "Sol 0% - 50% Üst", "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_reversdir": "Ters yön",
"conf_leds_layout_cl_right": "Sağ", "conf_leds_layout_cl_right": "Sağ",
"conf_leds_layout_cl_rightbottom": "Sağ 50% - 100% Alt", "conf_leds_layout_cl_rightbottom": "Sağ 50% - 100% Alt",
@ -68,6 +69,8 @@
"conf_leds_layout_ma_vert": "Dikey", "conf_leds_layout_ma_vert": "Dikey",
"conf_leds_layout_matrix": "Martis Yerleşimi (LED Duvar)", "conf_leds_layout_matrix": "Martis Yerleşimi (LED Duvar)",
"conf_leds_layout_peview": "LED Yerleşim Önizlemesi", "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_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_originCL": "Üretilidiği kaynak: Klasik Yerleşim(LED Çerçeve)",
"conf_leds_layout_preview_originMA": "Üretildiği kaynak: Matris Yerleşimi(LED Duvar)", "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_RPiGPIO": "RPi GPIO",
"conf_leds_optgroup_RPiPWM": "RPi PWM", "conf_leds_optgroup_RPiPWM": "RPi PWM",
"conf_leds_optgroup_RPiSPI": "RPi SPI", "conf_leds_optgroup_RPiSPI": "RPi SPI",
"conf_leds_optgroup_debug": "Hata Ayıklama",
"conf_leds_optgroup_network": "Ağ", "conf_leds_optgroup_network": "Ağ",
"conf_leds_optgroup_usb": "USB/Serial", "conf_leds_optgroup_usb": "USB/Serial",
"conf_logging_btn_autoscroll": "Otomatik kaydırma", "conf_logging_btn_autoscroll": "Otomatik kaydırma",
@ -91,14 +93,16 @@
"conf_logging_yourlink": "Rapor linkiniz", "conf_logging_yourlink": "Rapor linkiniz",
"conf_network_bobl_intro": "Boblight Alıcısı", "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_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_cidhead": "Açıklama",
"conf_network_tok_lastuse": "Son kullanım", "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": "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_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": "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_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": "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_comp": "Komponent",
"dashboard_componentbox_label_status": "Durum", "dashboard_componentbox_label_status": "Durum",
"dashboard_componentbox_label_title": "Komponent durumu", "dashboard_componentbox_label_title": "Komponent durumu",
@ -107,13 +111,13 @@
"dashboard_infobox_label_instance": "Olay", "dashboard_infobox_label_instance": "Olay",
"dashboard_infobox_label_latesthyp": "En güncel Hyperion versiyonu:", "dashboard_infobox_label_latesthyp": "En güncel Hyperion versiyonu:",
"dashboard_infobox_label_platform": "Plaform:", "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_smartacc": "Akıllı Erişim",
"dashboard_infobox_label_statush": "Hyperion durumu:", "dashboard_infobox_label_statush": "Hyperion durumu:",
"dashboard_infobox_label_title": "Bilgi", "dashboard_infobox_label_title": "Bilgi",
"dashboard_infobox_message_updatesuccess": "Hyperion'un en güncel versiyonuna sahipsiniz.", "dashboard_infobox_message_updatesuccess": "Hyperion'un en güncel versiyonuna sahipsiniz.",
"dashboard_infobox_message_updatewarning": "Hyperion'un güncel bir versiyonu mevcut! ($1)", "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_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_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", "dashboard_newsbox_readmore": "Daha fazla oku",
@ -422,6 +426,7 @@
"infoDialog_effconf_created_text": " \"$1\" efekti başarıyla yaratıldı!", "infoDialog_effconf_created_text": " \"$1\" efekti başarıyla yaratıldı!",
"infoDialog_effconf_deleted_text": " \"$1\" efekti başarıyla silindi!", "infoDialog_effconf_deleted_text": " \"$1\" efekti başarıyla silindi!",
"infoDialog_general_error_title": "Hata", "infoDialog_general_error_title": "Hata",
"infoDialog_general_success_title": "Başarı",
"infoDialog_general_warning_title": "Uyarı", "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_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!", "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_adjustment_label": "Renk ayarlama",
"remote_color_label": "Renkler/Efektler", "remote_color_label": "Renkler/Efektler",
"remote_color_label_color": "Renk:", "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_components_label": "Komponent kontrol",
"remote_effects_label_effects": "Efekt:", "remote_effects_label_effects": "Efekt:",
"remote_effects_label_picture": "Resim:", "remote_effects_label_picture": "Resim:",
@ -478,9 +484,12 @@
"remote_input_owner": "Tip", "remote_input_owner": "Tip",
"remote_input_priority": "Öncelik", "remote_input_priority": "Öncelik",
"remote_input_setsource_btn": "Kaynak Seç", "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_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_multicolor_mean": "Çok renkli",
"remote_maptype_label_unicolor_mean": "Tek renkli", "remote_maptype_label_unicolor_mean": "Tek renkli",
"remote_optgroup_syseffets": "Sağlanan efektler",
"remote_optgroup_usreffets": "Kullanıcı efektleri", "remote_optgroup_usreffets": "Kullanıcı efektleri",
"remote_videoMode_2D": "2D", "remote_videoMode_2D": "2D",
"remote_videoMode_3DSBS": "3DSBS", "remote_videoMode_3DSBS": "3DSBS",
@ -489,17 +498,20 @@
"support_label_affinstr1": "Ülkenize uygun linki tıklayın", "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_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_btctext": "Adres:",
"support_label_donate": "Bağış yapın ya da bağlı şirket linklerini kullanın.",
"support_label_donationpp": "Bağış:", "support_label_donationpp": "Bağış:",
"support_label_forumtitle": "Forum", "support_label_forumtitle": "Forum",
"support_label_ghtext": "Bizi Github'da ziyaret edin", "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_igtext": "En güncel Hyperion resimlerini görmek için bizi Instagram`da ziyaret edin!",
"support_label_spreadtheword": "Duymayan kalmasın", "support_label_spreadtheword": "Duymayan kalmasın",
"support_label_title": "Hyperion' u destekleyin",
"support_label_webpagetext": "Hyperion Ana Sayfası", "support_label_webpagetext": "Hyperion Ana Sayfası",
"support_label_webpagetitle": "Web sayfası", "support_label_webpagetitle": "Web sayfası",
"support_label_webrestitle": "Bilgi ve yardım kaynakları", "support_label_webrestitle": "Bilgi ve yardım kaynakları",
"support_label_wikitext": "Hyperion ile ilgili A'dan Z'ye her şey", "support_label_wikitext": "Hyperion ile ilgili A'dan Z'ye her şey",
"support_label_wikititle": "Wiki", "support_label_wikititle": "Wiki",
"support_label_yttext": "Resimlerden sıkıldınız mı? Youtube kanalımızı ziyaret edin!", "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_button_install": "Yükle",
"update_error_getting_versions": "En güncel versiyonu belirlerken bir hata ile karşılaştık.", "update_error_getting_versions": "En güncel versiyonu belirlerken bir hata ile karşılaştık.",
"update_label_description": "Açıklama:", "update_label_description": "Açıklama:",

View File

@ -5,8 +5,6 @@
"InfoDialog_changePassword_title": "Đổi mật khẩu", "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_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_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_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_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!", "InfoDialog_nowrite_title": "viết lỗi cho phép!",
@ -99,7 +97,6 @@
"conf_leds_optgroup_RPiGPIO": "GPIO RPi", "conf_leds_optgroup_RPiGPIO": "GPIO RPi",
"conf_leds_optgroup_RPiPWM": "RPi PWM", "conf_leds_optgroup_RPiPWM": "RPi PWM",
"conf_leds_optgroup_RPiSPI": "SPI RPI", "conf_leds_optgroup_RPiSPI": "SPI RPI",
"conf_leds_optgroup_debug": "Gỡ lỗi",
"conf_leds_optgroup_network": "Mạng", "conf_leds_optgroup_network": "Mạng",
"conf_leds_optgroup_usb": "USB", "conf_leds_optgroup_usb": "USB",
"conf_logging_btn_autoscroll": "Tự động di chuyển", "conf_logging_btn_autoscroll": "Tự động di chuyển",
@ -140,18 +137,19 @@
"dashboard_componentbox_label_status": "Trạng thái", "dashboard_componentbox_label_status": "Trạng thái",
"dashboard_componentbox_label_title": "Tình trạng linh kiện", "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_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_enableh": "Kích hoạt",
"dashboard_infobox_label_instance": "Ví dụ:", "dashboard_infobox_label_instance": "Ví dụ:",
"dashboard_infobox_label_latesthyp": "Phiên bản Ambilight mới nhất:", "dashboard_infobox_label_latesthyp": "Phiên bản Ambilight mới nhất:",
"dashboard_infobox_label_platform": "Nền tảng:", "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_smartacc": "Truy cập thông minh",
"dashboard_infobox_label_statush": "Trạng thái:", "dashboard_infobox_label_statush": "Trạng thái:",
"dashboard_infobox_label_title": "Thông tin", "dashboard_infobox_label_title": "Thông tin",
"dashboard_infobox_label_watchedversionbranch": "Chi nhánh phiên bản đã xem:", "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_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_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": "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_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.", "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> <html>
<head> <head>
<script> <script>
if (/MSIE/.test(navigator.userAgent) || /Trident/.test(navigator.userAgent)) if (/MSIE/.test(navigator.userAgent) || /Trident/.test(navigator.userAgent)) {
{ window.location.pathname = '/content/ie_not_supported.html';
window.location.pathname = '/content/ie_not_supported.html'; }
} </script>
</script>
<meta charset="utf-8"> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <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 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="description" content="Hyperion Web Configuration">
<meta name="msapplication-TileColor" content="#91989C"> <meta name="msapplication-TileColor" content="#91989C">
<meta name="msapplication-TileImage" content="/mstile-144x144.png"> <meta name="msapplication-TileImage" content="/mstile-144x144.png">
<link rel="apple-touch-icon-precomposed" sizes="180x180" href="/apple-touch-icon.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"> <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 --> <!-- jQuery -->
<script src="js/lib/jquery.min.js"></script> <script src="js/lib/jquery.min.js"></script>
<!-- SemVer --> <!-- SemVer -->
<script src='js/lib/semver.js'></script> <script src='js/lib/semver.js'></script>
<!-- md Stuff --> <!-- md Stuff -->
<script src="js/lib/marked.min.js"></script> <script src="js/lib/marked.min.js"></script>
<script type="text/javascript" src="js/lib/purify.min.js"></script> <script type="text/javascript" src="js/lib/purify.min.js"></script>
<!-- Hyperion --> <!-- Hyperion -->
<script src="js/hyperion.js"></script> <script src="js/hyperion.js"></script>
<script src="js/ui_utils.js"></script> <script src="js/ui_utils.js"></script>
<!-- Colorpicker --> <!-- Colorpicker -->
<script src="js/lib/bootstrap-colorpicker.min.js"></script> <script src="js/lib/bootstrap-colorpicker.min.js"></script>
<!-- BS Notfiy --> <!-- BS Notfiy -->
<script src="js/lib/bootstrap-notify.min.js"></script> <script src="js/lib/bootstrap-notify.min.js"></script>
<!-- JSONEditor --> <!-- JSONEditor -->
<script src="js/lib/jsoneditor.js"></script> <script src="js/lib/jsoneditor.js"></script>
<!--Language Support --> <!--Language Support -->
<script src="js/lib/jquery.i18n.js"></script> <script src="js/lib/jquery.i18n/jquery.i18n.js"></script>
<script src="js/lib/jquery.i18n.messagestore.js"></script> <script src="js/lib/jquery.i18n/jquery.i18n.messagestore.js"></script>
<script src="js/lib/jquery.i18n.fallbacks.js"></script> <script src="js/lib/jquery.i18n/jquery.i18n.fallbacks.js"></script>
<script src="js/lib/jquery.i18n.parser.js"></script> <script src="js/lib/jquery.i18n/jquery.i18n.parser.js"></script>
<script src="js/lib/jquery.i18n.emitter.js"></script> <script src="js/lib/jquery.i18n/jquery.i18n.emitter.js"></script>
<script src="js/lib/jquery.i18n.language.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 --> <script src="js/languages.js"></script>
<link href="css/bootstrap.min.css" rel="stylesheet">
<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-colorpicker.min.css" rel="stylesheet">
<link href="css/bootstrap-toggle.min.css" rel="stylesheet">
<!-- BSSelect --> <!-- BSToggle -->
<link href="css/bootstrap-select.min.css" rel="stylesheet"> <link href="css/bootstrap-toggle.min.css" rel="stylesheet">
<!-- MetisMenu CSS --> <!-- BSSelect -->
<link href="css/metisMenu.css" rel="stylesheet"> <link href="css/bootstrap-select.min.css" rel="stylesheet">
<!-- Custom CSS --> <!-- MetisMenu CSS -->
<link href="css/sb-admin-2.css" rel="stylesheet"> <link href="css/metisMenu.css" rel="stylesheet">
<link href="css/hyperion.css" rel="stylesheet">
<!-- Custom Fonts --> <!-- Custom CSS -->
<link href="css/font-awesome.min.css" rel="stylesheet" type="text/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 --> <!-- Custom Fonts -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// --> <link href="css/font-awesome.min.css" rel="stylesheet" type="text/css">
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> <!-- Material Design Icons - https://github.com/Templarian/MaterialDesign-Webfont -->
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script> <link href="css/materialdesignicons.min.css" media="all" rel="stylesheet" type="text/css">
<![endif]-->
<!-- 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> </head>
<body> <body>
<noscript> <noscript>
<div style="color:red;margin: 40px 0;text-align:center"> <div style="color:red;margin: 40px 0;text-align:center">
<img src="img/hyperion/hyperionlogo.png" alt="Redefine ambient light!"> <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> <h3>Hyperion Web Configuration requires Javascript. Please enable Javascript in your browser for this page in order to use it!</h3>
</div> </div>
<style type="text/css"> #loading_overlay, #wrapper{ display: none } </style> <style type="text/css">
</noscript> #loading_overlay, #wrapper {
display: none
}
</style>
</noscript>
<div id="loading_overlay" class="overlay"></div> <div id="loading_overlay" class="overlay"></div>
<div id="wrapper"> <div id="wrapper">
<!-- Navigation --> <!-- Navigation -->
<nav class="navbar navbar-default navbar-static-top" role="navigation" style="margin-bottom: 0"> <nav class="navbar navbar-default navbar-static-top" role="navigation" style="margin-bottom: 0; min-height: 85px">
<div class="navbar-header"> <div class="navbar-header">
<button type="button" class="navbar-toggle closed" aria-controls="navbar"> <button type="button" class="navbar-toggle closed" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span> <span class="sr-only">Toggle navigation</span>
<span class="icon-bar top-bar"></span> <span class="icon-bar top-bar"></span>
<span class="icon-bar middle-bar"></span> <span class="icon-bar middle-bar"></span>
<span class="icon-bar bottom-bar"></span> <span class="icon-bar bottom-bar"></span>
</button> </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> <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> </div>
<!-- /.navbar-header --> <!-- /.navbar-header -->
<ul class="nav navbar-top-links navbar-right" id="top-navbar"> <ul class="nav navbar-top-links navbar-right" id="top-navbar">
<!-- Browser built in capture stream - streamer.js --> <!-- Browser built in capture stream - streamer.js -->
<li class="dropdown" id="btn_streamer" style="display:none"> <li class="dropdown" id="btn_streamer" style="display:none">
<!-- Hidden helpers --> <!-- Hidden helpers -->
<canvas style="display:none" id="streamcanvas"></canvas> <canvas style="display:none" id="streamcanvas"></canvas>
<video style="display:none" id="streamvideo" autoplay></video> <video style="display:none" id="streamvideo" autoplay></video>
<a> <a>
<i id="btn_streamer_icon" class="fa fa-video-camera fa-fw"></i> <i id="btn_streamer_icon" class="fa fa-video-camera fa-fw"></i>
</a> </a>
</li> </li>
<li class="dropdown" id="btn_darkmode"> <li class="dropdown" id="btn_darkmode">
<a> <a>
<i id="btn_darkmode_icon" class="fa fa-moon-o"></i> <i id="btn_darkmode_icon" class="fa fa-moon-o"></i>
</a> </a>
</li> </li>
<!-- instance switcher --> <li class="dropdown" id="btn_open_ledsim">
<li class="dropdown" id="btn_hypinstanceswitch" style="display:none"> <a>
<a class="dropdown-toggle" data-toggle="dropdown" href="#"> <i class="fa fa-television fa-fw"></i>
<i class="fa fa-exchange fa-fw"></i> <i class="fa fa-caret-down"></i> </a>
</a> </li>
<ul id="hyp_inst_listing" class="dropdown-menu dropdown-alerts"> <!-- /.dropdown -->
</ul> <li class="dropdown">
</li> <a class="dropdown-toggle" data-toggle="dropdown" href="#">
<!-- <i class="fa fa-magic fa-fw"></i> <i class="fa fa-caret-down"></i>
<li class="dropdown" id="btn_instanceswitch" style="display:none"> </a>
<a> <ul class="dropdown-menu dropdown-alerts">
<i class="fa fa-exchange fa-fw"></i> <li id="btn_wizard_byteorder">
</a> <a>
</li> <div>
--> <i class="fa fa-magic fa-fw"></i>
<li class="dropdown" id="btn_open_ledsim"> <span data-i18n="wiz_rgb_title"></span>
<a> </div>
<i class="fa fa-television fa-fw"></i> </a>
</a> </li>
</li> <li class="divider"></li>
<!-- /.dropdown --> <li id="btn_wizard_colorcalibration">
<li class="dropdown"> <a>
<a class="dropdown-toggle" data-toggle="dropdown" href="#"> <div>
<i class="fa fa-magic fa-fw"></i> <i class="fa fa-caret-down"></i> <i class="fa fa-magic fa-fw"></i>
</a> <span data-i18n="wiz_cc_title"></span>
<ul class="dropdown-menu dropdown-alerts"> </div>
<li id="btn_wizard_byteorder"> </a>
<a> </li>
<div> </ul>
<i class="fa fa-magic fa-fw"></i> </li>
<span data-i18n="wiz_rgb_title"></span> <!-- /.dropdown -->
</div> <li class="dropdown">
</a> <a class="dropdown-toggle" data-toggle="dropdown" href="#">
</li> <i class="fa fa-wrench fa-fw"></i> <i class="fa fa-caret-down"></i>
<li class="divider"></li> </a>
<li id="btn_wizard_colorcalibration"> <ul class="dropdown-menu dropdown-alerts">
<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 --> <!-- /.language selector -->
<li id="btn_setlang"> <li id="btn_setlang">
<a> <a>
<div> <div>
<i class="fa fa-globe"></i> <i class="fa fa-globe fa-fw"></i>
<select id="language-select" class="selectpicker" data-width="fit" data-style="btn-transparent" > </select> <select id="language-select" class="selectpicker" data-width="fit" data-style="btn-transparent"> </select>
</div> </div>
</a> </a>
</li> </li>
<li class="divider"></li> <li class="divider"></li>
<li id="btn_setaccess"> <li id="btn_setaccess">
<a> <a>
<div> <div>
<i class="fa fa-wrench fa-fw"></i> <i class="fa fa-wrench fa-fw"></i>
<span data-i18n="InfoDialog_access_title"></span> <span data-i18n="InfoDialog_access_title"></span>
</div> </div>
</a> </a>
</li> </li>
<li class="divider"></li> <li class="divider"></li>
<li id="btn_changePassword"> <li id="btn_changePassword">
<a> <a>
<div> <div>
<i class="fa fa-key fa-fw"></i> <i class="fa fa-key fa-fw"></i>
<span data-i18n="InfoDialog_changePassword_title"></span> <span data-i18n="InfoDialog_changePassword_title"></span>
</div> </div>
</a> </a>
</li> </li>
</ul> </ul>
</li> </li>
<!-- /.lock-ui --> <!-- /.lock-ui -->
<li class="dropdown" id="btn_lock_ui" style="display:none"> <li class="dropdown" id="btn_lock_ui" style="display:none">
<a> <a>
<i class="fa fa-lock fa-fw"></i> <i class="fa fa-lock fa-fw"></i>
</a> </a>
</li> </li>
</ul> </ul>
<!-- /.navbar-top-left --> <!-- /.navbar-top-left -->
<div id="main-nav" class="navbar-default sidebar" role="navigation"> <div id="main-nav" class="navbar-default sidebar" role="navigation">
<div class="sidebar-nav navbar-collapse"> <div class="sidebar-nav navbar-collapse">
<ul class="nav" id="side-menu"> <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="#dashboard"><i class="fa fa-dashboard fa-fw"></i><span data-i18n="main_menu_dashboard_token">Dashboard</span></a> </li>
<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>
<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> <li>
<ul class="nav nav-second-level"> <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>
<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> <ul class="nav nav-second-level">
<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" 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" 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="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_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_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>
</ul> </li>
</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" 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" 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="#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="#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="#support"><i class="fa fa-info fa-fw"></i><span data-i18n="main_menu_support_token">Support</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> <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>
<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> <li>
<ul class="nav nav-second-level"> <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>
<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> <ul class="nav nav-second-level">
<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" 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" 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" 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="#about"><i class="fa fa-info-circle fa-fw"></i><span data-i18n="main_menu_about_token">About</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>
</ul> <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>
</li> </ul>
</ul> </li>
</div> </ul>
<!-- /.sidebar-collapse --> </div>
</div> <!-- /.sidebar-collapse -->
<!-- /.navbar-static-side --> </div>
</nav> <!-- /.navbar-static-side -->
</nav>
<!-- Page Content --> <!-- Page Content -->
<div id="page-wrapper" style="padding-top:10px; overflow: hidden;"> <div id="page-wrapper" style="padding-top:10px; overflow: hidden;">
<div id="dashboard_active_instance" style="display:none;padding:0 10px;margin:0"> <div id="hyperion_disabled_notify" style="display:none;padding:0 10px;margin:0">
<div class="bs-callout bs-callout-success"> <div class="bs-callout bs-callout-danger">
<h4 id="dashboard_active_instance_friendly_name"></h4> <h4 data-i18n="dashboard_alert_message_disabled_t"></h4>
</div> <span data-i18n="dashboard_alert_message_disabled"></span>
</div> </div>
<div id="hyperion_global_setting_notify" style="display:none;padding:0 10px;margin:0"> </div>
<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>
<div id="page-content"></div> <div id="page-content"></div>
</div> </div>
</div> </div>
<!-- /#wrapper --> <!-- /#wrapper -->
<div id="container_connection_lost" style="display:none"></div> <div id="container_connection_lost" style="display:none"></div>
<div id="container_restart" style="display:none"></div> <div id="container_restart" style="display:none"></div>
<!-- infoDialog --> <!-- infoDialog -->
<div id="modal_dialog" class="modal fade" role="dialog" style="z-index:9999"> <div id="modal_dialog" class="modal fade" role="dialog" style="z-index:9999">
<div class="modal-dialog"> <div class="modal-dialog">
<center> <center>
<div class="modal-content"> <div class="modal-content">
<div id="id_body" class="modal-body"></div> <div id="id_body" class="modal-body"></div>
<div id="id_footer" class="modal-footer" style="text-align:center"></div> <div id="id_footer" class="modal-footer" style="text-align:center"></div>
</div> </div>
</center> </center>
</div> </div>
</div> </div>
<!-- renameDialog --> <!-- renameDialog -->
<div id="modal_dialog_rename" class="modal fade" role="dialog" style="z-index:9999"> <div id="modal_dialog_rename" class="modal fade" role="dialog" style="z-index:9999">
<div class="modal-dialog"> <div class="modal-dialog">
<center> <center>
<div class="modal-content"> <div class="modal-content">
<div id="id_body_rename" class="modal-body"></div> <div id="id_body_rename" class="modal-body"></div>
<div id="id_footer_rename" class="modal-footer" style="text-align:center"></div> <div id="id_footer_rename" class="modal-footer" style="text-align:center"></div>
</div> </div>
</center> </center>
</div> </div>
</div> </div>
<!-- wizardDialog --> <!-- wizardDialog -->
<div id="wizard_modal" class="modal fade" role="dialog"> <div id="wizard_modal" class="modal fade" role="dialog">
<div class="modal-dialog"> <div class="modal-dialog">
<div class="modal-content"> <div class="modal-content">
<div id="wiz_header" class="modal-header"></div> <div id="wiz_header" class="modal-header"></div>
<div id="wizp1"> <div id="wizp1">
<div class="modal-body" style="text-align:center"> <div class="modal-body" style="text-align:center">
<img src="img/hyperion/hyperionlogo.png" alt="Redefine ambient light!" style="margin-bottom:15px"> <img id="wizard_logo" src="img/hyperion/logo_positiv.png" alt="Redefine ambient light!" style="margin-bottom:15px">
<div id="wizp1_body" ></div> <div id="wizp1_body"></div>
</div> </div>
<div id="wizp1_footer" class="modal-footer" style="text-align:center"></div> <div id="wizp1_footer" class="modal-footer" style="text-align:center"></div>
</div> </div>
<div id="wizp2" style="display:none"> <div id="wizp2" style="display:none">
<center> <center>
<div class="modal-body"> <div class="modal-body">
<img src="img/hyperion/hyperionlogo.png" alt="Redefine ambient light!" style="margin-bottom:15px"> <img id="wizard_logo" src="img/hyperion/logo_positiv.png" alt="Redefine ambient light!" style="margin-bottom:15px">
<div id="wizp2_body"></div> <div id="wizp2_body"></div>
</div> </div>
</center> </center>
<div id="wizp2_footer" class="modal-footer" style="text-align:center"></div> <div id="wizp2_footer" class="modal-footer" style="text-align:center"></div>
</div> </div>
<div id="wizp3" style="display:none"> <div id="wizp3" style="display:none">
<center> <center>
<div class="modal-body"> <div class="modal-body">
<img src="img/hyperion/hyperionlogo.png" alt="Redefine ambient light!" style="margin-bottom:15px"> <img id="wizard_logo" src="img/hyperion/logo_positiv.png" alt="Redefine ambient light!" style="margin-bottom:15px">
<div id="wizp3_body"></div> <div id="wizp3_body"></div>
</div> </div>
</center> </center>
<div id="wizp3_footer" class="modal-footer" style="text-align:center"></div> <div id="wizp3_footer" class="modal-footer" style="text-align:center"></div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<!-- ledsimDialog --> <!-- ledsimDialog -->
<div id="ledsim_dialog" style="display:none; z-index:9998"> <div id="ledsim_dialog" style="display:none; z-index:9998">
<div data-role="body" style="padding:0px;"> <div data-role="body" style="padding:0px;">
<div id="ledsim_text"></div> <div id="ledsim_text"></div>
<div id="leds_canvas"></div> <div id="leds_canvas"></div>
</div> </div>
<div data-role="footer" style="text-align:center"> <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-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_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> <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>
</div> <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>
</div>
<!-- Bootstrap Core JavaScript --> <!-- Bootstrap Core JavaScript -->
<script src="js/lib/bootstrap.min.js"></script> <script src="js/lib/bootstrap.min.js"></script>
<!-- BSToggle --> <!-- BSToggle -->
<script src="js/lib/bootstrap-toggle.min.js"></script> <script src="js/lib/bootstrap-toggle.min.js"></script>
<!-- Bootstrap Select JavaScript --> <!-- Bootstrap Select JavaScript -->
<script src="js/lib/bootstrap-select.min.js"></script> <script src="js/lib/bootstrap-select.min.js"></script>
<!-- Metis Menu Plugin JavaScript --> <!-- Metis Menu Plugin JavaScript -->
<script src="js/lib/metisMenu.min.js"></script> <script src="js/lib/metisMenu.min.js"></script>
<!-- Custom Theme JavaScript --> <!-- Custom Theme JavaScript -->
<script src="js/lib/sb-admin-2.js"></script> <script src="js/lib/sb-admin-2.js"></script>
<script src="js/content_index.js"></script> <script src="js/content_index.js"></script>
<script src="js/settings.js"></script> <script src="js/settings.js"></script>
<script src="js/streamer.js"></script> <script src="js/streamer.js"></script>
<script src="js/wizard.js"></script> <script src="js/wizard.js"></script>
<!--gijgo dialog--> <!--gijgo dialog-->
<script src="js/lib/draggable.min.js"></script> <script src="js/lib/draggable.min.js"></script>
<script src="js/lib/dialog.min.js"></script> <script src="js/lib/dialog.min.js"></script>
<script src="js/ledsim.js"></script> <script src="js/ledsim.js"></script>
<!--Client-side download--> <!--Client-side download-->
<script src='js/lib/download.min.js'></script> <script src='js/lib/download.min.js'></script>
<!--JsonAceEditor--> <!--JsonAceEditor-->
<script src='js/lib/jsonaceeditor.min.js'></script> <script src='js/lib/jsonaceeditor.min.js'></script>
<link href="css/jsonaceeditor.min.css" rel="stylesheet" type="text/css"> <link href="css/jsonaceeditor.min.css" rel="stylesheet" type="text/css">
</body> </body>
</html> </html>

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

@ -1,84 +1,105 @@
$(document).ready( function() { $(document).ready(function () {
performTranslation(); 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);
editor_color.on('change',function() { // update instance listing
editor_color.validate().length || window.readOnlyMode ? $('#btn_submit_color').attr('disabled', true) : $('#btn_submit_color').attr('disabled', false); updateHyperionInstanceListing();
});
$('#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 editor_color = null;
editor_smoothing.validate().length || window.readOnlyMode ? $('#btn_submit_smoothing').attr('disabled', true) : $('#btn_submit_smoothing').attr('disabled', false); var editor_smoothing = null;
var editor_blackborder = null;
});
$('#btn_submit_smoothing').off().on('click',function() {
requestWriteConfig(editor_smoothing.getValue());
});
//blackborder if (window.showOptHelp) {
editor_blackborder = createJsonEditor('editor_container_blackborder', { //color
blackborderdetector: window.schema.blackborderdetector $('#conf_cont').append(createRow('conf_cont_color'));
}, true, true); $('#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() { //smoothing
editor_blackborder.validate().length || window.readOnlyMode ? $('#btn_submit_blackborder').attr('disabled', true) : $('#btn_submit_blackborder').attr('disabled', false); $('#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"));
$('#btn_submit_blackborder').off().on('click',function() {
requestWriteConfig(editor_blackborder.getValue()); //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'));
//wiki links $('#conf_cont_blackborder').append(createHelpTable(window.schema.blackborderdetector.properties, $.i18n("edt_conf_bb_heading_title"), "blackborderHelpPanelId"));
$('#editor_container_blackborder').append(buildWL("user/moretopics/bbmode","edt_conf_bb_mode_title",true)); }
else {
//create introduction $('#conf_cont').addClass('row');
if(window.showOptHelp) $('#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'));
createHint("intro", $.i18n('conf_colors_color_intro'), "editor_container_color"); $('#conf_cont').append(createOptPanel('fa-photo', $.i18n("edt_conf_bb_heading_title"), 'editor_container_blackborder', 'btn_submit_blackborder'));
createHint("intro", $.i18n('conf_colors_smoothing_intro'), "editor_container_smoothing"); }
createHint("intro", $.i18n('conf_colors_blackborder_intro'), "editor_container_blackborder");
} //color
editor_color = createJsonEditor('editor_container_color', {
removeOverlay(); 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() { $(document).ready(function () {
performTranslation(); performTranslation();
// function newsCont(t,e,l) function updateComponents() {
// { $("div[class*='currentInstance']").remove();
// 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 createNews(d) 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">';
// for(var i = 0; i<d.length; i++) 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;">';
// if(i > 5) instances_html += '<div id="active_instance_friendly_name"></div>';
// break; 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>';
// var title = d[i].title.rendered; instances_html += '</div></div>';
// var excerpt = d[i].excerpt.rendered;
// var link = d[i].link+'?pk_campaign=WebUI&pk_kwd=news_'+d[i].slug;
//
// newsCont(title,excerpt,link);
// }
// }
// function getNews() instances_html += '<div class="panel-body">';
// { instances_html += '<table class="table borderless">';
// var h = '<span style="color:red;font-weight:bold">'+$.i18n('dashboard_newsbox_noconn')+'</span>'; instances_html += '<thead><tr><th style="vertical-align:middle"><i class="mdi mdi-lightbulb-on fa-fw"></i>';
// $.ajax({ instances_html += '<span>' + $.i18n('dashboard_componentbox_label_status') + '</span></th>';
// 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);
// });
// }
// getNews(); var components = window.comps;
var hyperion_enabled = true;
components.forEach(function (obj) {
if (obj.name == "ALL") {
hyperion_enabled = obj.enabled;
}
});
function updateComponents() 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="'
var components = window.comps; + $.i18n('general_btn_on') + '" data-off="'
var components_html = ""; + $.i18n('general_btn_off') + '"></span>';
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);
//info instances_html += '<th style="width:1px;text-align:right">' + instBtn + '</th></tr></thead></table>';
var hyperion_enabled = true;
components.forEach( function(obj) { instances_html += '<table class="table borderless">';
if (obj.name == "ALL") instances_html += '<thead><tr><th colspan="3">';
{ instances_html += '<i class="fa fa-info-circle fa-fw"></i>';
hyperion_enabled = obj.enabled 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>'); var componentBtn = "";
$('#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 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 var comp_enabled = components[idx].enabled ? "checked" : "";
$('#dash_leddevice').html(window.serverConfig.device.type); const general_comp = "general_comp_" + components[idx].name;
$('#dash_currv').html(window.currentVersion); componentBtn = '<input ' +
$('#dash_instance').html(window.currentHyperionInstanceName); 'id="' + general_comp + '" ' + comp_enabled +
$('#dash_ports').html(window.serverConfig.flatbufServer.port+' | '+window.serverConfig.protoServer.port); ' type="checkbox" ' +
$('#dash_watchedversionbranch').html(window.serverConfig.general.watchedVersionBranch); 'data-toggle="toggle" ' +
'data-size="mini" ' +
'data-onstyle="success" ' +
'data-on="' + $.i18n('general_btn_on') + '" ' +
'data-off="' + $.i18n('general_btn_off') + '">';
getReleases(function(callback){ instance_components += '<tr><td></td><td>' + $.i18n('general_comp_' + components[idx].name) + '</td><td style="text-align:right">' + componentBtn + '</td></tr>';
if(callback) }
{ }
$('#dash_latev').html(window.latestVersion.tag_name);
if (semverLite.gt(window.latestVersion.tag_name, window.currentVersion)) instances_html += '<tbody>' + instance_components + '</tbody></table>';
$('#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>'); instances_html += '</div></div></div>';
else
$('#versioninforesult').html('<div class="bs-callout bs-callout-success" style="margin:0px">'+$.i18n('dashboard_infobox_message_updatesuccess')+'</div>');
} $('.instances').prepend(instances_html);
});
updateUiOnInstance(window.currentHyperionInstance);
updateHyperionInstanceListing();
$('#instanceButton').bootstrapToggle();
$('#instanceButton').change(e => {
requestSetComponentState('ALL', e.currentTarget.checked);
});
//determine platform for (var idx = 0; idx < components.length; idx++) {
var grabbers = window.serverInfo.grabbers.available; if (components[idx].name != "ALL") {
var html = ""; $("#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) // add more info
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';
$('#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 var jsonPort = window.serverConfig.jsonServer.port;
updateComponents(); $('#dash_jsonPort').html(jsonPort);
$(window.hyperion).on("components-updated",updateComponents); var wsPorts = window.serverConfig.webConfig.port + ' | ' + window.serverConfig.webConfig.sslPort;
$('#dash_wsPorts').html(wsPorts);
if(window.showOptHelp) $('#dash_currv').html(window.currentVersion);
createHintH("intro", $.i18n('dashboard_label_intro'), "dash_intro"); $('#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() { $(document).ready( function() {
performTranslation(); performTranslation();
// update instance listing
updateHyperionInstanceListing();
var oldEffects = []; var oldEffects = [];
var effects_editor = null; var effects_editor = null;
var confFgEff = window.serverConfig.foregroundEffect.effect; var confFgEff = window.serverConfig.foregroundEffect.effect;
@ -12,12 +16,12 @@ $(document).ready( function() {
//foreground effect //foreground effect
$('#conf_cont').append(createRow('conf_cont_fge')); $('#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(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 //background effect
$('#conf_cont').append(createRow('conf_cont_bge')); $('#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(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 //effect path
if(storedAccess != 'default') if(storedAccess != 'default')
@ -64,11 +68,31 @@ $(document).ready( function() {
updateEffectlist(); 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); 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); 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() { $(document).ready(function () {
performTranslation(); performTranslation();
var oldDelList = [];
var effectName = "";
var imageData = "";
var effects_editor = null;
var effectPy = "";
var testrun;
if(window.showOptHelp) // update instance listing
createHintH("intro", $.i18n('effectsconfigurator_label_intro'), "intro_effc"); updateHyperionInstanceListing();
function updateDelEffectlist(){ var oldDelList = [];
var newDelList = window.serverInfo.effects; var effectName = "";
if(newDelList.length != oldDelList.length) var imageData = "";
{ var effects_editor = null;
$('#effectsdellist').html(""); var effectPyScript = "";
var usrEffArr = []; var testrun;
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;
}
}
function triggerTestEffect() { if (window.showOptHelp)
testrun = true; createHintH("intro", $.i18n('effectsconfigurator_label_intro'), "intro_effc");
var args = effects_editor.getEditor('root.args');
requestTestEffect(effectName, ":/effects/" + effectPy.slice(1), JSON.stringify(args.getValue()), imageData);
};
// Specify upload handler for image files function updateDelEffectlist() {
JSONEditor.defaults.options.upload = function(type, file, cbs) { var newDelList = window.serverInfo.effects;
var fileReader = new FileReader(); if (newDelList.length != oldDelList.length) {
$('#effectsdellist').html("");
//check file var usrEffArr = [];
if (!file.type.startsWith('image')) { var sysEffArr = [];
imageData = ""; for (var idx = 0; idx < newDelList.length; idx++) {
cbs.failure('File upload error'); if (newDelList[idx].file.startsWith(":")) {
// TODO clear file dialog. sysEffArr.push(idx);
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);
} }
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 if (testrun)
$('#btn_write').off().on('click',function() { setTimeout(requestPriorityClear, 100);
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) // Start test
setTimeout(requestPriorityClear,100); $('#btn_start_test').off().on('click', function () {
triggerTestEffect();
});
}); // Stop test
$('#btn_stop_test').off().on('click', function () {
requestPriorityClear();
testrun = false;
});
// Start test // Continuous test
$('#btn_start_test').off().on('click',function() { $('#btn_cont_test').off().on('click', function () {
triggerTestEffect(); toggleClass('#btn_cont_test', "btn-success", "btn-danger");
}); });
// Stop test // Delete Effect
$('#btn_stop_test').off().on('click',function() { $('#btn_delete').off().on('click', function () {
requestPriorityClear(); var name = $("#effectsdellist").val().split("_")[1];
testrun = false; requestDeleteEffect(name);
}); $(window.hyperion).one("cmd-delete-effect", function (event) {
if (event.response.success)
showInfoDialog('success', "", $.i18n('infoDialog_effconf_deleted_text', name));
});
});
// Continuous test // Disable or enable Delete Effect Button
$('#btn_cont_test').off().on('click',function() { $('#effectsdellist').off().on('change', function () {
toggleClass('#btn_cont_test', "btn-success", "btn-danger"); $(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 // Load Effect
$('#btn_delete').off().on('click',function() { $('#btn_edit').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));
});
});
// disable or enable Delete Effect Button var name = $("#effectsdellist").val().replace("ext_", "");
$('#effectsdellist').off().on('change', function(){ if (name.startsWith("int_")) {
$(this).val() == null ? $('#btn_edit, #btn_delete').prop('disabled',true) : ""; name = name.split("_").pop();
$(this).val().startsWith("int_") ? $('#btn_delete').prop('disabled',true) : $('#btn_delete').prop('disabled',false); $("#name-input").val("My Modded Effect");
}); }
else {
name = name.split("_").pop();
$("#name-input").val(name);
}
// Load Effect var efx = window.serverInfo.effects;
$('#btn_edit').off().on('click', function(){ for (var i = 0; i < efx.length; i++) {
var name = $("#effectsdellist").val().replace("ext_",""); if (efx[i].name == name) {
var py = efx[i].script;
$("#effectslist").val(py).trigger("change");
if(name.startsWith("int_")) for (var key in efx[i].args) {
{ name = name.split("_").pop(); var ed = effects_editor.getEditor('root.args.' + [key]);
$("#name-input").val("My Modded Effect"); if (ed)
} ed.setValue(efx[i].args[key]);
else }
{ break;
name = name.split("_").pop(); }
$("#name-input").val(name); }
} });
var efx = window.serverInfo.effects; //Create effect template list
for(var i = 0; i<efx.length; i++) var effects = window.serverSchema.properties.effectSchemas;
{
if(efx[i].name == name)
{
var py = efx[i].script.split("/").pop();
$("#effectslist").val(py).trigger("change");
for(var key in efx[i].args) $('#effectslist').html("");
{ var custTemplatesIDs = [];
var ed = effects_editor.getEditor('root.args.'+[key]); var sysTemplatesIDs = [];
if(ed)
ed.setValue(efx[i].args[key]);
}
break;
}
}
});
//create basic effect list for (var idx = 0; idx < effects.length; idx++) {
var effects = window.serverSchema.properties.effectSchemas.internal; if (effects[idx].type === "custom")
for(var idx=0; idx<effects.length; idx++) custTemplatesIDs.push(idx);
{ else
$("#effectslist").append(createSelOpt(effects[idx].schemaContent.script, $.i18n(effects[idx].schemaContent.title))); sysTemplatesIDs.push(idx);
} }
$("#effectslist").trigger("change");
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 var sysTmplGrp = createSelGroup($.i18n('remote_optgroup_templates_system'));
$(window.hyperion).on("cmd-effects-update", function(event){ for (var idx = 0; idx < sysTemplatesIDs.length; idx++)
window.serverInfo.effects = event.response.data.effects {
updateDelEffectlist(); 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() { $(document).ready(function () {
performTranslation(); performTranslation();
var importedConf; var importedConf;
var confName; var confName;
var conf_editor = null; var conf_editor = null;
$('#conf_cont').append(createOptPanel('fa-wrench', $.i18n("edt_conf_gen_heading_title"), 'editor_container', 'btn_submit')); $('#conf_cont').append(createOptPanel('fa-wrench', $.i18n("edt_conf_gen_heading_title"), 'editor_container', 'btn_submit', 'panel-system'));
if(window.showOptHelp) if (window.showOptHelp) {
{ $('#conf_cont').append(createHelpTable(window.schema.general.properties, $.i18n("edt_conf_gen_heading_title")));
$('#conf_cont').append(createHelpTable(window.schema.general.properties, $.i18n("edt_conf_gen_heading_title"))); }
} else
else $('#conf_imp').appendTo('#conf_cont');
$('#conf_imp').appendTo('#conf_cont');
conf_editor = createJsonEditor('editor_container', { conf_editor = createJsonEditor('editor_container', {
general: window.schema.general general: window.schema.general
}, true, true); }, true, true);
conf_editor.on('change',function() { conf_editor.on('change', function () {
conf_editor.validate().length || window.readOnlyMode ? $('#btn_submit').attr('disabled', true) : $('#btn_submit').attr('disabled', false); conf_editor.validate().length || window.readOnlyMode ? $('#btn_submit').attr('disabled', true) : $('#btn_submit').attr('disabled', false);
}); });
$('#btn_submit').off().on('click',function() { $('#btn_submit').off().on('click', function () {
requestWriteConfig(conf_editor.getValue()); window.showOptHelp = conf_editor.getEditor("root.general.showOptHelp").getValue();
}); requestWriteConfig(conf_editor.getValue());
});
// Instance handling // Instance handling
function handleInstanceRename(e) 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));
$("#id_btn_ok").off().on('click', function(){ conf_editor.on('change', function () {
requestInstanceRename(inst, $('#renInst_name').val()) 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) { var inst = e.currentTarget.id.split("_")[1];
(e.currentTarget.value.length >= 5 && e.currentTarget.value != getInstanceNameByIndex(inst)) ? $('#id_btn_ok').attr('disabled', false) : $('#id_btn_ok').attr('disabled', true); showInfoDialog('renInst', $.i18n('conf_general_inst_renreq_t'), getInstanceNameByIndex(inst));
});
}
function handleInstanceStartStop(e) $("#id_btn_ok").off().on('click', function () {
{ requestInstanceRename(inst, encodeHTML($('#renInst_name').val()))
var inst = e.currentTarget.id.split("_")[1]; });
var start = (e.currentTarget.className == "btn btn-danger")
requestInstanceStartStop(inst, start)
}
function handleInstanceDelete(e) $('#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('delInst',$.i18n('conf_general_inst_delreq_h'),$.i18n('conf_general_inst_delreq_t',getInstanceNameByIndex(inst))); }
$("#id_btn_yes").off().on('click', function(){
requestInstanceDelete(inst)
});
}
function buildInstanceList() function handleInstanceDelete(e) {
{ var inst = e.currentTarget.id.split("_")[1];
var inst = serverInfo.instance showInfoDialog('delInst', $.i18n('conf_general_inst_delreq_h'), $.i18n('conf_general_inst_delreq_t', getInstanceNameByIndex(inst)));
$('.itbody').html(""); $("#id_btn_yes").off().on('click', function () {
for(var key in inst) requestInstanceDelete(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);
}
}
createTable('ithead', 'itbody', 'itable'); function buildInstanceList() {
$('.ithead').html(createTableRow([$.i18n('conf_general_inst_namehead'), "", $.i18n('conf_general_inst_actionhead'), ""], true, true)); var inst = serverInfo.instance
buildInstanceList(); $('.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); $('.itbody').append(createTableRow([inst[key].friendly_name, startBtn, renameBtn, delBtn], false, true));
if(5-e.currentTarget.value.length >= 1 && 5-e.currentTarget.value.length <= 4) $('#instren_' + inst[key].instance).off().on('click', handleInstanceRename);
$('#inst_chars_needed').html(5-e.currentTarget.value.length + " " + $.i18n('general_chars_needed'))
else
$('#inst_chars_needed').html("<br />")
});
$('#btn_create_inst').off().on('click',function(e) { $('#inst_' + inst[key].instance).bootstrapToggle();
requestInstanceCreate($('#inst_name').val()); $('#inst_' + inst[key].instance).change(e => {
$('#inst_name').val(""); requestInstanceStartStop(e.currentTarget.id.split('_').pop(), e.currentTarget.checked);
$('#btn_create_inst').attr('disabled', true) });
}); $('#instdel_' + inst[key].instance).off().on('click', handleInstanceDelete);
$(hyperion).off("instance-updated").on("instance-updated", function(event) { window.readOnlyMode ? $('#instren_' + inst[key].instance).attr('disabled', true) : $('#btn_submit').attr('disabled', false);
buildInstanceList() 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 createTable('ithead', 'itbody', 'itable');
function dis_imp_btn(state) $('.ithead').html(createTableRow([$.i18n('conf_general_inst_namehead'), "", $.i18n('conf_general_inst_actionhead'), ""], true, true));
{ buildInstanceList();
state || window.readOnlyMode ? $('#btn_import_conf').attr('disabled', true) : $('#btn_import_conf').attr('disabled', false);
}
function readFile(evt) $('#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);
var f = evt.target.files[0]; 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) $('#btn_create_inst').off().on('click', function (e) {
{ requestInstanceCreate(encodeHTML($('#inst_name').val()));
var r = new FileReader(); $('#inst_name').val("");
r.onload = function(e) $('#btn_create_inst').attr('disabled', true)
{ });
var content = e.target.result.replace(/[^:]?\/\/.*/g, ''); //remove Comments
//check file is json $(hyperion).off("instance-updated").on("instance-updated", function (event) {
var check = isJsonString(content); buildInstanceList()
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);
}
}
$('#btn_import_conf').off().on('click', function(){ //import
showInfoDialog('import', $.i18n('infoDialog_import_confirm_title'), $.i18n('infoDialog_import_confirm_text', confName)); 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(){ function readFile(evt) {
requestWriteConfig(importedConf, true); var f = evt.target.files[0];
setTimeout(initRestart, 100);
});
});
$('#select_import_conf').off().on('change', function(e){ if (f) {
if (window.File && window.FileReader && window.FileList && window.Blob) var r = new FileReader();
readFile(e); r.onload = function (e) {
else var content = e.target.result.replace(/[^:]?\/\/.*/g, ''); //remove Comments
showInfoDialog('error', "", $.i18n('infoDialog_import_comperror_text'));
});
//export //check file is json
$('#btn_export_conf').off().on('click', function(){ var check = isJsonString(content);
var name = window.serverConfig.general.name; 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(); $('#btn_import_conf').off().on('click', function () {
var month = d.getMonth()+1; showInfoDialog('import', $.i18n('infoDialog_import_confirm_title'), $.i18n('infoDialog_import_confirm_text', confName));
var day = d.getDate();
var timestamp = d.getFullYear() + '.' + $('#id_btn_import').off().on('click', function () {
(month<10 ? '0' : '') + month + '.' + requestWriteConfig(importedConf, true);
(day<10 ? '0' : '') + day; 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 //export
if(window.showOptHelp) $('#btn_export_conf').off().on('click', function () {
{ var name = window.serverConfig.general.name;
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(); 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 () { $(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: light)').matches) {
{ setStorage("darkMode", "off", false);
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();
}
loadContentTo("#container_connection_lost", "connection_lost"); if (getStorage("darkMode", false) == "on") {
loadContentTo("#container_restart", "restart"); handleDarkMode();
initWebSocket(); }
$(window.hyperion).on("cmd-serverinfo", function (event) { loadContentTo("#container_connection_lost", "connection_lost");
window.serverInfo = event.response.info; loadContentTo("#container_restart", "restart");
initWebSocket();
window.readOnlyMode = window.sysInfo.hyperion.readOnlyMode;
// comps
window.comps = event.response.info.components
$(window.hyperion).trigger("ready"); $(window.hyperion).on("cmd-serverinfo", function (event) {
window.serverInfo = event.response.info;
window.comps.forEach(function (obj) { // comps
if (obj.name == "ALL") { window.comps = event.response.info.components
if (obj.enabled)
$("#hyperion_disabled_notify").fadeOut("fast");
else
$("#hyperion_disabled_notify").fadeIn("fast");
}
});
// determine button visibility $(window.hyperion).trigger("ready");
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;
}
updateSessions(); window.comps.forEach(function (obj) {
}); // end cmd-serverinfo if (obj.name == "ALL") {
if (obj.enabled)
$("#hyperion_disabled_notify").fadeOut("fast");
else
$("#hyperion_disabled_notify").fadeIn("fast");
}
});
// Update language selection // determine button visibility
$("#language-select").on('changed.bs.select',function (e, clickedIndex, isSelected, previousValue){ var running = window.serverInfo.instance.filter(entry => entry.running);
var newLang = availLang[clickedIndex-1]; if (running.length > 1)
if (newLang !== storedLang) $('#btn_hypinstanceswitch').toggle(true)
{ else
setStorage("langcode", newLang); $('#btn_hypinstanceswitch').toggle(false)
reload(); updateSessions();
} }); // end cmd-serverinfo
});
$("#language-select").selectpicker( // Update language selection
{ $("#language-select").on('changed.bs.select', function (e, clickedIndex, isSelected, previousValue) {
container: 'body' var newLang = availLang[clickedIndex];
}); if (newLang !== storedLang) {
setStorage("langcode", newLang);
reload();
}
});
$(".bootstrap-select").click(function () { $("#language-select").selectpicker(
$(this).addClass("open"); {
}); container: 'body'
});
$(document).click(function(){ $(".bootstrap-select").click(function () {
$(".bootstrap-select").removeClass("open"); $(this).addClass("open");
}); });
$(".bootstrap-select").click(function(e){ $(document).click(function () {
e.stopPropagation(); $(".bootstrap-select").removeClass("open");
}); });
//End language selection
$(window.hyperion).on("cmd-sessions-update", function (event) {
window.serverInfo.sessions = event.response.data;
updateSessions();
});
$(window.hyperion).on("cmd-authorize-tokenRequest cmd-authorize-getPendingTokenRequests", function (event) { $(".bootstrap-select").click(function (e) {
var val = event.response.info; e.stopPropagation();
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');
}
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>') //End language selection
$("#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) { $(window.hyperion).on("cmd-sessions-update", function (event) {
tokenList = event.response.info; window.serverInfo.sessions = event.response.data;
requestServerInfo(); updateSessions();
}); });
$(window.hyperion).on("cmd-sysinfo", function (event) { $(window.hyperion).on("cmd-authorize-tokenRequest cmd-authorize-getPendingTokenRequests", function (event) {
requestServerInfo(); var val = event.response.info;
window.sysInfo = 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; 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>')
window.currentChannel = window.sysInfo.hyperion.channel; $("#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(); requestTokenInfo();
requestGetPendingTokenRequests(); 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) { requestSysInfo();
window.serverConfig = event.response.info; });
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) { window.showOptHelp = window.serverConfig.general.showOptHelp;
if (event.response.success === true) { });
showNotification('success', $.i18n('dashboard_alert_message_confsave_success'), $.i18n('dashboard_alert_message_confsave_success_t'))
}
});
$(window.hyperion).on("cmd-authorize-login", function (event) { $(window.hyperion).on("cmd-config-setconfig", function (event) {
$("#main-nav").removeAttr('style') if (event.response.success === true) {
$("#top-navbar").removeAttr('style') showNotification('success', $.i18n('dashboard_alert_message_confsave_success'), $.i18n('dashboard_alert_message_confsave_success_t'))
}
});
if (window.defaultPasswordIsSet === true && getStorage("suppressDefaultPwWarning") !== "true" ) $(window.hyperion).on("cmd-authorize-login", function (event) {
{ $("#main-nav").removeAttr('style')
var supprPwWarnCheckbox = '<div class="text-right">'+$.i18n('dashboard_message_do_not_show_again') $("#top-navbar").removeAttr('style')
+ ' <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 (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')) if (event.response.hasOwnProperty('info'))
setStorage("loginToken", event.response.info.token, true); setStorage("loginToken", event.response.info.token, true);
requestServerConfigSchema(); requestServerConfigSchema();
}); });
$(window.hyperion).on("cmd-authorize-newPassword", function (event) { $(window.hyperion).on("cmd-authorize-newPassword", function (event) {
if (event.response.success === true) { if (event.response.success === true) {
showInfoDialog("success", $.i18n('InfoDialog_changePassword_success')); showInfoDialog("success", $.i18n('InfoDialog_changePassword_success'));
// not necessarily true, but better than nothing // not necessarily true, but better than nothing
window.defaultPasswordIsSet = false; window.defaultPasswordIsSet = false;
} }
}); });
$(window.hyperion).on("cmd-authorize-newPasswordRequired", function (event) { $(window.hyperion).on("cmd-authorize-newPasswordRequired", function (event) {
var loginToken = getStorage("loginToken", true) var loginToken = getStorage("loginToken", true)
if (event.response.info.newPasswordRequired == true) { if (event.response.info.newPasswordRequired == true) {
window.defaultPasswordIsSet = true; window.defaultPasswordIsSet = true;
if (loginToken) if (loginToken)
requestTokenAuthorization(loginToken) requestTokenAuthorization(loginToken)
else else
requestAuthorization('hyperion'); requestAuthorization('hyperion');
} }
else { else {
$("#main-nav").attr('style', 'display:none') $("#main-nav").attr('style', 'display:none')
$("#top-navbar").attr('style', 'display:none') $("#top-navbar").attr('style', 'display:none')
if (loginToken) if (loginToken)
requestTokenAuthorization(loginToken) requestTokenAuthorization(loginToken)
else else
loadContentTo("#page-content", "login") loadContentTo("#page-content", "login")
} }
}); });
$(window.hyperion).on("cmd-authorize-adminRequired", function (event) { $(window.hyperion).on("cmd-authorize-adminRequired", function (event) {
//Check if a admin login is required. //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 yes: check if default pw is set. If no: go ahead to get server config and render page
if (event.response.info.adminRequired === true) if (event.response.info.adminRequired === true)
requestRequiresDefaultPasswortChange(); requestRequiresDefaultPasswortChange();
else else
requestServerConfigSchema(); requestServerConfigSchema();
}); });
$(window.hyperion).on("error", function (event) { $(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. //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) //e.g.: hyperiond was started new in the meantime)
if (event.reason == "No Authorization" && getStorage("loginToken", true)) { if (event.reason == "No Authorization" && getStorage("loginToken", true)) {
removeStorage("loginToken", true); removeStorage("loginToken", true);
requestRequiresAdminAuth(); requestRequiresAdminAuth();
} }
else { else if (event.reason == "Selected Hyperion instance isn't running") {
showInfoDialog("error", "Error", event.reason); //Switch to default instance
} instanceSwitch(0);
}); } else {
showInfoDialog("error", "Error", event.reason);
}
});
$(window.hyperion).on("open", function (event) { $(window.hyperion).on("open", function (event) {
requestRequiresAdminAuth(); requestRequiresAdminAuth();
}); });
$(window.hyperion).one("ready", function (event) { $(window.hyperion).one("ready", function (event) {
loadContent(); // Content will be loaded by the instance load/switch
}); });
$(window.hyperion).on("cmd-adjustment-update", function (event) { $(window.hyperion).on("cmd-adjustment-update", function (event) {
window.serverInfo.adjustment = event.response.data window.serverInfo.adjustment = event.response.data
}); });
$(window.hyperion).on("cmd-videomode-update", function (event) { $(window.hyperion).on("cmd-videomode-update", function (event) {
window.serverInfo.videomode = event.response.data.videomode window.serverInfo.videomode = event.response.data.videomode
}); });
$(window.hyperion).on("cmd-components-update", function (event) { $(window.hyperion).on("cmd-components-update", function (event) {
let obj = event.response.data let obj = event.response.data
// notfication in index // notfication in index
if (obj.name == "ALL") { if (obj.name == "ALL") {
if (obj.enabled) if (obj.enabled)
$("#hyperion_disabled_notify").fadeOut("fast"); $("#hyperion_disabled_notify").fadeOut("fast");
else else
$("#hyperion_disabled_notify").fadeIn("fast"); $("#hyperion_disabled_notify").fadeIn("fast");
} }
window.comps.forEach((entry, index) => { window.comps.forEach((entry, index) => {
if (entry.name === obj.name) { if (entry.name === obj.name) {
window.comps[index] = obj; window.comps[index] = obj;
} }
}); });
// notify the update // notify the update
$(window.hyperion).trigger("components-updated", event.response.data); $(window.hyperion).trigger("components-updated", event.response.data);
}); });
$(window.hyperion).on("cmd-instance-update", function (event) { $(window.hyperion).on("cmd-instance-update", function (event) {
window.serverInfo.instance = event.response.data window.serverInfo.instance = event.response.data
var avail = event.response.data; var avail = event.response.data;
// notify the update // notify the update
$(window.hyperion).trigger("instance-updated"); $(window.hyperion).trigger("instance-updated");
// if our current instance is no longer available we are at instance 0 again. // if our current instance is no longer available we are at instance 0 again.
var isInData = false; var isInData = false;
for (var key in avail) { for (var key in avail) {
if (avail[key].instance == currentHyperionInstance && avail[key].running) { if (avail[key].instance == currentHyperionInstance && avail[key].running) {
isInData = true; isInData = true;
} }
} }
if (!isInData) { if (!isInData) {
//Delete Storage information about the last used but now stopped instance //Delete Storage information about the last used but now stopped instance
if (getStorage('lastSelectedInstance', false)) if (getStorage('lastSelectedInstance', false))
removeStorage('lastSelectedInstance', false) removeStorage('lastSelectedInstance', false)
currentHyperionInstance = 0; currentHyperionInstance = 0;
currentHyperionInstanceName = getInstanceNameByIndex(0); currentHyperionInstanceName = getInstanceNameByIndex(0);
requestServerConfig(); requestServerConfig();
setTimeout(requestServerInfo, 100) setTimeout(requestServerInfo, 100)
setTimeout(requestTokenInfo, 200) setTimeout(requestTokenInfo, 200)
setTimeout(loadContent, 300, undefined, true) setTimeout(loadContent, 300, undefined, true)
} }
// determine button visibility // determine button visibility
var running = serverInfo.instance.filter(entry => entry.running); var running = serverInfo.instance.filter(entry => entry.running);
if (running.length > 1) if (running.length > 1)
$('#btn_hypinstanceswitch').toggle(true) $('#btn_hypinstanceswitch').toggle(true)
else else
$('#btn_hypinstanceswitch').toggle(false) $('#btn_hypinstanceswitch').toggle(false)
// update listing for button // update listing for button
updateHyperionInstanceListing() updateHyperionInstanceListing()
}); });
$(window.hyperion).on("cmd-instance-switchTo", function (event) { $(window.hyperion).on("cmd-instance-switchTo", function (event) {
requestServerConfig(); requestServerConfig();
setTimeout(requestServerInfo, 200) setTimeout(requestServerInfo, 200)
setTimeout(requestTokenInfo, 400) setTimeout(requestTokenInfo, 400)
setTimeout(loadContent, 400, undefined, true) setTimeout(loadContent, 400, undefined, true)
}); });
$(window.hyperion).on("cmd-effects-update", function (event) { $(window.hyperion).on("cmd-effects-update", function (event) {
window.serverInfo.effects = event.response.data.effects window.serverInfo.effects = event.response.data.effects
}); });
$(".mnava").bind('click.menu', function (e) { $(".mnava").bind('click.menu', function (e) {
loadContent(e); loadContent(e);
window.scrollTo(0, 0); 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(){ function suppressDefaultPwWarning() {
if (document.getElementById('chk_suppressDefaultPw').checked)
if (document.getElementById('chk_suppressDefaultPw').checked) setStorage("suppressDefaultPwWarning", "true");
setStorage("suppressDefaultPwWarning", "true"); else
else setStorage("suppressDefaultPwWarning", "false");
setStorage("suppressDefaultPwWarning", "false");
} }
$(function () { $(function () {
var sidebar = $('#side-menu'); // cache sidebar to a variable for performance var sidebar = $('#side-menu'); // cache sidebar to a variable for performance
sidebar.delegate('a.inactive', 'click', function () { sidebar.delegate('a.inactive', 'click', function () {
sidebar.find('.active').toggleClass('active inactive'); sidebar.find('.active').toggleClass('active inactive');
$(this).toggleClass('active inactive'); $(this).toggleClass('active inactive');
}); });
}); });
// hotfix body padding when bs modals overlap // hotfix body padding when bs modals overlap
$(document.body).on('hide.bs.modal,hidden.bs.modal', function () { $(document.body).on('hide.bs.modal,hidden.bs.modal', function () {
$('body').css('padding-right', '0'); $('body').css('padding-right', '0');
}); });
//Dark Mode //Dark Mode
$("#btn_darkmode").off().on("click",function(e){ $("#btn_darkmode").off().on("click", function (e) {
if (getStorage("darkMode", false) != "on") {
if(getStorage("darkMode", false) != "on") handleDarkMode();
{ setStorage("darkModeOverwrite", true, true);
handleDarkMode(); }
setStorage("darkModeOverwrite", true, true); else {
} setStorage("darkMode", "off", false);
else { setStorage("darkModeOverwrite", true, true);
setStorage("darkMode", "off", false); location.reload();
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 conf_editor = null;
var createdCont = false; var createdCont = false;
var isScroll = true;
performTranslation(); performTranslation();
requestLoggingStart(); requestLoggingStop();
$(document).ready(function() { $(document).ready(function () {
var messages;
var loguplmess = "";
var reportUrl = 'https://report.hyperion-project.org/#';
$('#conf_cont').append(createOptPanel('fa-reorder', $.i18n("edt_conf_log_heading_title"), 'editor_container', 'btn_submit')); requestLoggingStart();
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")));
conf_editor = createJsonEditor('editor_container', { $('#conf_cont').append(createOptPanel('fa-reorder', $.i18n("edt_conf_log_heading_title"), 'editor_container', 'btn_submit'));
logger : window.schema.logger if (window.showOptHelp) {
}, true, true); $('#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 = createJsonEditor('editor_container', {
conf_editor.validate().length || window.readOnlyMode ? $('#btn_submit').attr('disabled', true) : $('#btn_submit').attr('disabled', false); logger: window.schema.logger
}); }, true, true);
$('#btn_submit').off().on('click',function() { conf_editor.on('change', function () {
requestWriteConfig(conf_editor.getValue()); conf_editor.validate().length || window.readOnlyMode ? $('#btn_submit').attr('disabled', true) : $('#btn_submit').attr('disabled', false);
}); });
$('#btn_logupload').off().on('click',function() { $('#btn_submit').off().on('click', function () {
uploadLog();
$(this).attr("disabled", true);
$('#upl_link').html($.i18n('conf_logging_uploading'))
});
//show prev uploads var displayedLogLevel = conf_editor.getEditor("root.logger.level").getValue();
var ent; var newLogLevel = { logger: {} };
newLogLevel.logger.level = displayedLogLevel;
if(getStorage("prev_reports")) requestWriteConfig(newLogLevel);
{ });
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 = [];
function updateLastReports(id,time,title) function infoSummary() {
{ var info = "";
if(ent.length > 4)
ent.pop();
ent.unshift({"id": id ,"time": time,"title": title})
setStorage("prev_reports",JSON.stringify(ent));
}
function uploadLog() info += 'Hyperion System Summary Report (' + window.serverConfig.general.name + '), Reported instance: ' + window.currentHyperionInstanceName + '\n';
{
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;
//create log info += "\n< ----- System information -------------------- >\n";
log = (messages ? loguplmess : "Log was empty!"); info += getSystemInfo() + '\n';
//create general info info += "\n< ----- Configured Instances ------------------ >\n";
info = "### GENERAL ### \n"; var instances = window.serverInfo.instance;
info += 'Build: '+shy.build+'\n'; for (var i = 0; i < instances.length; i++) {
info += 'Build time: '+shy.time+'\n'; info += instances[i].instance + ': ' + instances[i].friendly_name + ' Running: ' + instances[i].running + '\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 += 'Distribution: '+sys.prettyName+'\n'; info += "\n< ----- This instance's priorities ------------ >\n";
info += 'Architecture: '+sys.architecture+'\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 += "\n< ----- This instance components' status ------->\n";
info += 'CPU Model: ' + sys.cpuModelName + '\n'; var comps = window.serverInfo.components;
if (sys.cpuModelType) for (var i = 0; i < comps.length; i++) {
info += 'CPU Type: ' + sys.cpuModelType + '\n'; info += comps[i].name + ' - ' + comps[i].enabled + '\n';
if (sys.cpuRevision) }
info += 'CPU Revision: ' + sys.cpuRevision + '\n';
if (sys.cpuHardware)
info += 'CPU Hardware: ' + sys.cpuHardware + '\n';
info += 'Kernel: ' + sys.kernelType+' ('+sys.kernelVersion+' (WS: '+sys.wordSize+'))' + '\n'; info += "\n< ----- This instance's configuration --------- >\n";
info += 'Qt Version: ' + sys.qtVersion + '\n'; info += JSON.stringify(window.serverConfig) + '\n';
info += 'Python Version: ' + sys.pyVersion + '\n';
info += 'Browser/OS: ' + navigator.userAgent + '\n\n';
//create prios info += "\n< ----- Current Log --------------------------- >\n";
info += "### PRIORITIES ### \n"; var logMsgs = document.getElementById("logmessages").textContent;
for(var i = 0; i<prios.length; i++) if (logMsgs.length !== 0) {
{ info += logMsgs;
info += prios[i].priority; } else {
if(prios[i].visible) info += "Log is empty!";
info += ' VISIBLE!'; }
else
info += ' ';
info += ' ('+prios[i].component+') Owner: '+prios[i].owner+'\n';
}
info += '\npriorities_autoselect: '+window.serverInfo.priorities_autoselect+'\n\n';
//create comps return info;
info += '### COMPONENTS ### \n'; }
for(var i = 0; i<comps.length; i++)
{
info += comps[i].enabled+' - '+comps[i].name+'\n';
}
//escape data function createLogContainer() {
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+'))';
$.ajax({ const isScrollEnableStyle = (isScroll ? "checked" : "");
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>');
});
}
if (!window.loggingHandlerInstalled) $('#log_content').html('<pre><div id="logmessages" style="overflow:scroll;max-height:400px"></div></pre>');
{ $('#log_footer').append('<label class="checkbox-inline">'
window.loggingHandlerInstalled = true; + '<input id = "btn_scroll"' + isScrollEnableStyle + ' type = "checkbox"'
$(window.hyperion).on("cmd-logging-update",function(event){ + '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) $(`#btn_scroll`).bootstrapToggle();
{ $(`#btn_scroll`).change(e => {
requestLoggingStop(); if (e.currentTarget.checked) {
window.loggingStreamActive = false; //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); $('#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>');
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;
$('#btn_autoscroll').off().on('click',function() { $('#btn_clipboard').off().on('click', function () {
toggleClass('#btn_autoscroll', "btn-success", "btn-danger"); 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++) function updateLogOutput(messages) {
{
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;
var debug = ""; if (messages.length != 0) {
if(level_string == "DEBUG") {
debug = "("+file_name+":"+line+":"+function_+"()) ";
}
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>"); var debug = "";
loguplmess += "["+app_name+" "+logger_name+"] ("+level_string+") "+debug+msg+"\n"; if (level_string == "DEBUG") {
} debug = "(" + file_name + ":" + line + ":" + function_ + "()) ";
}
if($("#btn_autoscroll").hasClass('btn-success')) var date = new Date(parseInt(utime));
{ var newLogLine = date.toISOString() + " [" + app_name + " " + logger_name + "] (" + level_string + ") " + debug + msg;
$('#logmessages').stop().animate({
scrollTop: $('#logmessages')[0].scrollHeight
}, 800);
}
});
}
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() { $(document).ready(function () {
performTranslation(); performTranslation();
var conf_editor_net = null; var BOBLIGHT_ENABLED = window.comps.find(element => element.name == "BOBLIGHTSERVER");
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;
if(window.showOptHelp) var conf_editor_net = null;
{ var conf_editor_json = null;
//network var conf_editor_proto = null;
$('#conf_cont').append(createRow('conf_cont_net')) var conf_editor_fbs = null;
$('#conf_cont_net').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_net_heading_title"), 'editor_container_net', 'btn_submit_net')); var conf_editor_bobl = null;
$('#conf_cont_net').append(createHelpTable(window.schema.network.properties, $.i18n("edt_conf_net_heading_title"))); var conf_editor_forw = null;
//jsonserver if (window.showOptHelp) {
$('#conf_cont').append(createRow('conf_cont_json')) //network
$('#conf_cont_json').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_js_heading_title"), 'editor_container_jsonserver', 'btn_submit_jsonserver')); $('#conf_cont').append(createRow('conf_cont_net'))
$('#conf_cont_json').append(createHelpTable(window.schema.jsonServer.properties, $.i18n("edt_conf_js_heading_title"))); $('#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 //jsonserver
$('#conf_cont').append(createRow('conf_cont_flatbuf')) $('#conf_cont').append(createRow('conf_cont_json'))
$('#conf_cont_flatbuf').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_fbs_heading_title"), 'editor_container_fbserver', 'btn_submit_fbserver')); $('#conf_cont_json').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_js_heading_title"), 'editor_container_jsonserver', 'btn_submit_jsonserver', 'panel-system'));
$('#conf_cont_flatbuf').append(createHelpTable(window.schema.flatbufServer.properties, $.i18n("edt_conf_fbs_heading_title"))); $('#conf_cont_json').append(createHelpTable(window.schema.jsonServer.properties, $.i18n("edt_conf_js_heading_title")));
//protoserver //flatbufserver
$('#conf_cont').append(createRow('conf_cont_proto')) $('#conf_cont').append(createRow('conf_cont_flatbuf'))
$('#conf_cont_proto').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_pbs_heading_title"), 'editor_container_protoserver', 'btn_submit_protoserver')); $('#conf_cont_flatbuf').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_fbs_heading_title"), 'editor_container_fbserver', 'btn_submit_fbserver', 'panel-system'));
$('#conf_cont_proto').append(createHelpTable(window.schema.protoServer.properties, $.i18n("edt_conf_pbs_heading_title"))); $('#conf_cont_flatbuf').append(createHelpTable(window.schema.flatbufServer.properties, $.i18n("edt_conf_fbs_heading_title"), "flatbufServerHelpPanelId"));
//boblight //protoserver
$('#conf_cont').append(createRow('conf_cont_bobl')) $('#conf_cont').append(createRow('conf_cont_proto'))
$('#conf_cont_bobl').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_bobls_heading_title"), 'editor_container_boblightserver', 'btn_submit_boblightserver')); $('#conf_cont_proto').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_pbs_heading_title"), 'editor_container_protoserver', 'btn_submit_protoserver', 'panel-system'));
$('#conf_cont_bobl').append(createHelpTable(window.schema.boblightServer.properties, $.i18n("edt_conf_bobls_heading_title"))); $('#conf_cont_proto').append(createHelpTable(window.schema.protoServer.properties, $.i18n("edt_conf_pbs_heading_title"), "protoServerHelpPanelId"));
//forwarder //boblight
if(storedAccess != 'default') if (BOBLIGHT_ENABLED) {
{ $('#conf_cont').append(createRow('conf_cont_bobl'))
$('#conf_cont').append(createRow('conf_cont_fw')) $('#conf_cont_bobl').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_bobls_heading_title"), 'editor_container_boblightserver', 'btn_submit_boblightserver', 'panel-system'));
$('#conf_cont_fw').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_fw_heading_title"), 'editor_container_forwarder', 'btn_submit_forwarder')); $('#conf_cont_bobl').append(createHelpTable(window.schema.boblightServer.properties, $.i18n("edt_conf_bobls_heading_title"), "boblightServerHelpPanelId"));
$('#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'));
$("#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_cont_tok").removeClass('row');
conf_editor_net = createJsonEditor('editor_container_net', { }
network : window.schema.network
}, true, true);
conf_editor_net.on('change',function() { // net
conf_editor_net.validate().length || window.readOnlyMode ? $('#btn_submit_net').attr('disabled', true) : $('#btn_submit_net').attr('disabled', false); conf_editor_net = createJsonEditor('editor_container_net', {
}); network: window.schema.network
}, true, true);
$('#btn_submit_net').off().on('click',function() { conf_editor_net.on('change', function () {
requestWriteConfig(conf_editor_net.getValue()); conf_editor_net.validate().length || window.readOnlyMode ? $('#btn_submit_net').attr('disabled', true) : $('#btn_submit_net').attr('disabled', false);
}); });
//json $('#btn_submit_net').off().on('click', function () {
conf_editor_json = createJsonEditor('editor_container_jsonserver', { requestWriteConfig(conf_editor_net.getValue());
jsonServer : window.schema.jsonServer });
}, true, true);
conf_editor_json.on('change',function() { //json
conf_editor_json.validate().length || window.readOnlyMode ? $('#btn_submit_jsonserver').attr('disabled', true) : $('#btn_submit_jsonserver').attr('disabled', false); conf_editor_json = createJsonEditor('editor_container_jsonserver', {
}); jsonServer: window.schema.jsonServer
}, true, true);
$('#btn_submit_jsonserver').off().on('click',function() { conf_editor_json.on('change', function () {
requestWriteConfig(conf_editor_json.getValue()); conf_editor_json.validate().length || window.readOnlyMode ? $('#btn_submit_jsonserver').attr('disabled', true) : $('#btn_submit_jsonserver').attr('disabled', false);
}); });
//flatbuffer $('#btn_submit_jsonserver').off().on('click', function () {
conf_editor_fbs = createJsonEditor('editor_container_fbserver', { requestWriteConfig(conf_editor_json.getValue());
flatbufServer : window.schema.flatbufServer });
}, true, true);
conf_editor_fbs.on('change',function() { //flatbuffer
conf_editor_fbs.validate().length || window.readOnlyMode ? $('#btn_submit_fbserver').attr('disabled', true) : $('#btn_submit_fbserver').attr('disabled', false); conf_editor_fbs = createJsonEditor('editor_container_fbserver', {
}); flatbufServer: window.schema.flatbufServer
}, true, true);
$('#btn_submit_fbserver').off().on('click',function() { conf_editor_fbs.on('change', function () {
requestWriteConfig(conf_editor_fbs.getValue()); 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 $('#btn_submit_fbserver').off().on('click', function () {
conf_editor_proto = createJsonEditor('editor_container_protoserver', { requestWriteConfig(conf_editor_fbs.getValue());
protoServer : window.schema.protoServer });
}, true, true);
conf_editor_proto.on('change',function() { //protobuffer
conf_editor_proto.validate().length || window.readOnlyMode ? $('#btn_submit_protoserver').attr('disabled', true) : $('#btn_submit_protoserver').attr('disabled', false); conf_editor_proto = createJsonEditor('editor_container_protoserver', {
}); protoServer: window.schema.protoServer
}, true, true);
$('#btn_submit_protoserver').off().on('click',function() { conf_editor_proto.on('change', function () {
requestWriteConfig(conf_editor_proto.getValue()); 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 $('#btn_submit_protoserver').off().on('click', function () {
conf_editor_bobl = createJsonEditor('editor_container_boblightserver', { requestWriteConfig(conf_editor_proto.getValue());
boblightServer : window.schema.boblightServer });
}, true, true);
conf_editor_bobl.on('change',function() { //boblight
conf_editor_bobl.validate().length || window.readOnlyMode ? $('#btn_submit_boblightserver').attr('disabled', true) : $('#btn_submit_boblightserver').attr('disabled', false); if (BOBLIGHT_ENABLED) {
}); conf_editor_bobl = createJsonEditor('editor_container_boblightserver', {
boblightServer: window.schema.boblightServer
}, true, true);
$('#btn_submit_boblightserver').off().on('click',function() { conf_editor_bobl.on('change', function () {
requestWriteConfig(conf_editor_bobl.getValue()); 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') $('#btn_submit_boblightserver').off().on('click', function () {
{ requestWriteConfig(conf_editor_bobl.getValue());
//forwarder });
conf_editor_forw = createJsonEditor('editor_container_forwarder', { }
forwarder : window.schema.forwarder
}, true, true);
conf_editor_forw.on('change',function() { if (storedAccess != 'default') {
conf_editor_forw.validate().length || window.readOnlyMode ? $('#btn_submit_forwarder').attr('disabled', true) : $('#btn_submit_forwarder').attr('disabled', false); //forwarder
}); conf_editor_forw = createJsonEditor('editor_container_forwarder', {
forwarder: window.schema.forwarder
}, true, true);
$('#btn_submit_forwarder').off().on('click',function() { conf_editor_forw.on('change', function () {
requestWriteConfig(conf_editor_forw.getValue()); 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 $('#btn_submit_forwarder').off().on('click', function () {
if(window.showOptHelp) requestWriteConfig(conf_editor_forw.getValue());
{ });
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");
}
// Token handling //create introduction
function buildTokenList() if (window.showOptHelp) {
{ createHint("intro", $.i18n('conf_network_net_intro'), "editor_container_net");
$('.tktbody').html(""); createHint("intro", $.i18n('conf_network_json_intro'), "editor_container_jsonserver");
for(var key in tokenList) createHint("intro", $.i18n('conf_network_fbs_intro'), "editor_container_fbserver");
{ createHint("intro", $.i18n('conf_network_proto_intro'), "editor_container_protoserver");
var lastUse = (tokenList[key].last_use) ? tokenList[key].last_use : "-"; if (BOBLIGHT_ENABLED) {
var btn = '<button id="tok'+tokenList[key].id+'" type="button" class="btn btn-danger">'+$.i18n('general_btn_delete')+'</button>'; createHint("intro", $.i18n('conf_network_bobl_intro'), "editor_container_boblightserver");
$('.tktbody').append(createTableRow([tokenList[key].comment, lastUse, btn], false, true)); }
$('#tok'+tokenList[key].id).off().on('click', handleDeleteToken); createHint("intro", $.i18n('conf_network_forw_intro'), "editor_container_forwarder");
} createHint("intro", $.i18n('conf_network_tok_intro'), "tok_desc_cont");
} }
createTable('tkthead', 'tktbody', 'tktable'); // Token handling
$('.tkthead').html(createTableRow([$.i18n('conf_network_tok_cidhead'), $.i18n('conf_network_tok_lastuse'), $.i18n('general_btn_delete')], true, true)); function buildTokenList() {
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) createTable('tkthead', 'tktbody', 'tktable');
{ $('.tkthead').html(createTableRow([$.i18n('conf_network_tok_cidhead'), $.i18n('conf_network_tok_lastuse'), $.i18n('general_btn_delete')], true, true));
var key = e.currentTarget.id.replace("tok",""); buildTokenList();
requestTokenDelete(key);
$('#tok'+key).parent().parent().remove();
// rm deleted token id
tokenList = tokenList.filter(function( obj ) {
return obj.id !== key;
});
}
$('#btn_create_tok').off().on('click',function() { function handleDeleteToken(e) {
requestToken($('#tok_comment').val()) var key = e.currentTarget.id.replace("tok", "");
$('#tok_comment').val("") requestTokenDelete(key);
$('#btn_create_tok').attr('disabled', true) $('#tok' + key).parent().parent().remove();
}); // rm deleted token id
$('#tok_comment').off().on('input',function(e) { tokenList = tokenList.filter(function (obj) {
(e.currentTarget.value.length >= 10) ? $('#btn_create_tok').attr('disabled', false) : $('#btn_create_tok').attr('disabled', true); return obj.id !== key;
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()
});
//Reorder hardcoded token div after the general token setting div $('#btn_create_tok').off().on('click', function () {
$("#conf_cont_tok").insertAfter("#conf_cont_net"); 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) //Reorder hardcoded token div after the general token setting div
{ $("#conf_cont_tok").insertAfter("#conf_cont_net");
if(state == false)
$("#conf_cont_tok").attr('style', 'display:none')
else
$("#conf_cont_tok").removeAttr('style')
}
$('#root_network_apiAuth').change(function () { function checkApiTokenState(state) {
var state = $(this).is(":checked"); if (state == false)
checkApiTokenState(state); $("#conf_cont_tok").attr('style', 'display:none')
}) else
$("#conf_cont_tok").removeAttr('style')
}
checkApiTokenState(window.serverConfig.network.apiAuth); $('#root_network_apiAuth').change(function () {
var state = $(this).is(":checked");
removeOverlay(); checkApiTokenState(state);
})
checkApiTokenState(window.serverConfig.network.apiAuth);
removeOverlay();
}); });

View File

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

View File

@ -3,7 +3,7 @@
var conf_editor = null; 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) if(window.showOptHelp)
{ {
$('#conf_cont').append(createHelpTable(window.schema.webConfig.properties, $.i18n("edt_conf_webc_heading_title"))); $('#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; window.defaultPasswordIsSet = null;
tokenList = {}; tokenList = {};
const ENDLESS = -1;
function initRestart() function initRestart()
{ {
$(window.hyperion).off(); $(window.hyperion).off();
requestServerConfigReload(); requestServerConfigReload();
window.watchdog = 10; window.watchdog = 10;
connectionLostDetection('restart'); connectionLostDetection('restart');
} }
function connectionLostDetection(type) function connectionLostDetection(type)
{ {
if ( window.watchdog > 2 ) if ( window.watchdog > 2 )
{ {
var interval_id = window.setInterval(function(){clearInterval(interval_id);}, 9999); // Get a reference to the last var interval_id = window.setInterval(function(){clearInterval(interval_id);}, 9999); // Get a reference to the last
for (var i = 1; i < interval_id; i++) for (var i = 1; i < interval_id; i++)
window.clearInterval(i); window.clearInterval(i);
if(type == 'restart') if(type == 'restart')
{ {
$("body").html($("#container_restart").html()); $("body").html($("#container_restart").html());
// setTimeout delay for probably slower systems, some browser don't execute THIS action // setTimeout delay for probably slower systems, some browser don't execute THIS action
setTimeout(restartAction,250); setTimeout(restartAction,250);
} }
else else
{ {
$("body").html($("#container_connection_lost").html()); $("body").html($("#container_connection_lost").html());
connectionLostAction(); connectionLostAction();
} }
} }
else else
{ {
$.get( "/cgi/cfg_jsonserver", function() {window.watchdog=0}).fail(function() {window.watchdog++;}); $.get( "/cgi/cfg_jsonserver", function() {window.watchdog=0}).fail(function() {window.watchdog++;});
} }
} }
setInterval(connectionLostDetection, 3000); setInterval(connectionLostDetection, 3000);
@ -72,107 +74,107 @@ setInterval(connectionLostDetection, 3000);
function initWebSocket() function initWebSocket()
{ {
if ("WebSocket" in window) if ("WebSocket" in window)
{ {
if (window.websocket == null) if (window.websocket == null)
{ {
window.jsonPort = ''; window.jsonPort = '';
if(document.location.port == '' && document.location.protocol == "http:") if(document.location.port == '' && document.location.protocol == "http:")
window.jsonPort = '80'; window.jsonPort = '80';
else if (document.location.port == '' && document.location.protocol == "https:") else if (document.location.port == '' && document.location.protocol == "https:")
window.jsonPort = '443'; window.jsonPort = '443';
else else
window.jsonPort = document.location.port; 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 = (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.websocket.onopen = function (event) {
$(window.hyperion).trigger({type:"open"}); $(window.hyperion).trigger({type:"open"});
$(window.hyperion).on("cmd-serverinfo", function(event) { $(window.hyperion).on("cmd-serverinfo", function(event) {
window.watchdog = 0; window.watchdog = 0;
}); });
}; };
window.websocket.onclose = function (event) { window.websocket.onclose = function (event) {
// See http://tools.ietf.org/html/rfc6455#section-7.4.1 // See http://tools.ietf.org/html/rfc6455#section-7.4.1
var reason; var reason;
switch(event.code) switch(event.code)
{ {
case 1000: reason = "Normal closure, meaning that the purpose for which the connection was established has been fulfilled."; break; 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 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 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 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 1004: reason = "Reserved. The specific meaning might be defined in the future."; break;
case 1005: reason = "No status code was actually present."; 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 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 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 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 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 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 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; 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"; default: reason = "Unknown reason";
} }
$(window.hyperion).trigger({type:"close", reason:reason}); $(window.hyperion).trigger({type:"close", reason:reason});
window.watchdog = 10; window.watchdog = 10;
connectionLostDetection(); connectionLostDetection();
}; };
window.websocket.onmessage = function (event) { window.websocket.onmessage = function (event) {
try try
{ {
var response = JSON.parse(event.data); var response = JSON.parse(event.data);
var success = response.success; var success = response.success;
var cmd = response.command; var cmd = response.command;
var tan = response.tan var tan = response.tan
if (success || typeof(success) == "undefined") if (success || typeof(success) == "undefined")
{ {
$(window.hyperion).trigger({type:"cmd-"+cmd, response:response}); $(window.hyperion).trigger({type:"cmd-"+cmd, response:response});
} }
else else
{ {
// skip tan -1 error handling // skip tan -1 error handling
if(tan != -1){ if(tan != -1){
var error = response.hasOwnProperty("error")? response.error : "unknown"; var error = response.hasOwnProperty("error")? response.error : "unknown";
$(window.hyperion).trigger({type:"error",reason:error}); $(window.hyperion).trigger({type:"error",reason:error});
console.log("[window.websocket::onmessage] ",error) console.log("[window.websocket::onmessage] ",error)
} }
} }
} }
catch(exception_error) catch(exception_error)
{ {
$(window.hyperion).trigger({type:"error",reason:exception_error}); $(window.hyperion).trigger({type:"error",reason:exception_error});
console.log("[window.websocket::onmessage] ",exception_error) console.log("[window.websocket::onmessage] ",exception_error)
} }
}; };
window.websocket.onerror = function (error) { window.websocket.onerror = function (error) {
$(window.hyperion).trigger({type:"error",reason:error}); $(window.hyperion).trigger({type:"error",reason:error});
console.log("[window.websocket::onerror] ",error) console.log("[window.websocket::onerror] ",error)
}; };
} }
} }
else else
{ {
$(window.hyperion).trigger("error"); $(window.hyperion).trigger("error");
alert("Websocket is not supported by your browser"); alert("Websocket is not supported by your browser");
return; return;
} }
} }
function sendToHyperion(command, subcommand, msg) function sendToHyperion(command, subcommand, msg)
{ {
if (typeof subcommand != 'undefined' && subcommand.length > 0) if (typeof subcommand != 'undefined' && subcommand.length > 0)
subcommand = ',"subcommand":"'+subcommand+'"'; subcommand = ',"subcommand":"'+subcommand+'"';
else else
subcommand = ""; subcommand = "";
if (typeof msg != 'undefined' && msg.length > 0) if (typeof msg != 'undefined' && msg.length > 0)
msg = ","+msg; msg = ","+msg;
else else
msg = ""; 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 // 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 // Test if admin requires authentication
function requestRequiresAdminAuth() function requestRequiresAdminAuth()
{ {
sendToHyperion("authorize","adminRequired"); sendToHyperion("authorize","adminRequired");
} }
// Test if the default password needs to be changed // Test if the default password needs to be changed
function requestRequiresDefaultPasswortChange() function requestRequiresDefaultPasswortChange()
{ {
sendToHyperion("authorize","newPasswordRequired"); sendToHyperion("authorize","newPasswordRequired");
} }
// Change password // Change password
function requestChangePassword(oldPw, newPw) function requestChangePassword(oldPw, newPw)
{ {
sendToHyperion("authorize","newPassword",'"password": "'+oldPw+'", "newPassword":"'+newPw+'"'); sendToHyperion("authorize","newPassword",'"password": "'+oldPw+'", "newPassword":"'+newPw+'"');
} }
function requestAuthorization(password) function requestAuthorization(password)
{ {
sendToHyperion("authorize","login",'"password": "' + password + '"'); sendToHyperion("authorize","login",'"password": "' + password + '"');
} }
function requestTokenAuthorization(token) function requestTokenAuthorization(token)
{ {
sendToHyperion("authorize","login",'"token": "' + token + '"'); sendToHyperion("authorize","login",'"token": "' + token + '"');
} }
function requestToken(comment) function requestToken(comment)
{ {
sendToHyperion("authorize","createToken",'"comment": "'+comment+'"'); sendToHyperion("authorize","createToken",'"comment": "'+comment+'"');
} }
function requestTokenInfo() function requestTokenInfo()
{ {
sendToHyperion("authorize","getTokenList",""); sendToHyperion("authorize","getTokenList","");
} }
function requestGetPendingTokenRequests (id, state) { function requestGetPendingTokenRequests (id, state) {
sendToHyperion("authorize", "getPendingTokenRequests", ""); sendToHyperion("authorize", "getPendingTokenRequests", "");
} }
function requestHandleTokenRequest(id, state) function requestHandleTokenRequest(id, state)
{ {
sendToHyperion("authorize","answerRequest",'"id":"'+id+'", "accept":'+state); sendToHyperion("authorize","answerRequest",'"id":"'+id+'", "accept":'+state);
} }
function requestTokenDelete(id) function requestTokenDelete(id)
{ {
sendToHyperion("authorize","deleteToken",'"id":"'+id+'"'); sendToHyperion("authorize","deleteToken",'"id":"'+id+'"');
} }
function requestInstanceRename(inst, name) function requestInstanceRename(inst, name)
{ {
sendToHyperion("instance", "saveName",'"instance": '+inst+', "name": "'+name+'"'); sendToHyperion("instance", "saveName",'"instance": '+inst+', "name": "'+name+'"');
} }
function requestInstanceStartStop(inst, start) function requestInstanceStartStop(inst, start)
{ {
if(start) if(start)
sendToHyperion("instance","startInstance",'"instance": '+inst); sendToHyperion("instance","startInstance",'"instance": '+inst);
else else
sendToHyperion("instance","stopInstance",'"instance": '+inst); sendToHyperion("instance","stopInstance",'"instance": '+inst);
} }
function requestInstanceDelete(inst) function requestInstanceDelete(inst)
{ {
sendToHyperion("instance","deleteInstance",'"instance": '+inst); sendToHyperion("instance","deleteInstance",'"instance": '+inst);
} }
function requestInstanceCreate(name) function requestInstanceCreate(name)
{ {
sendToHyperion("instance","createInstance",'"name": "'+name+'"'); sendToHyperion("instance","createInstance",'"name": "'+name+'"');
} }
function requestInstanceSwitch(inst) function requestInstanceSwitch(inst)
{ {
sendToHyperion("instance","switchTo",'"instance": '+inst); sendToHyperion("instance","switchTo",'"instance": '+inst);
} }
function requestServerInfo() 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() function requestSysInfo()
{ {
sendToHyperion("sysinfo"); sendToHyperion("sysinfo");
} }
function requestServerConfigSchema() function requestServerConfigSchema()
{ {
sendToHyperion("config","getschema"); sendToHyperion("config","getschema");
} }
function requestServerConfig() function requestServerConfig()
{ {
sendToHyperion("config", "getconfig"); sendToHyperion("config", "getconfig");
} }
function requestServerConfigReload() function requestServerConfigReload()
{ {
sendToHyperion("config", "reload"); sendToHyperion("config", "reload");
} }
function requestLedColorsStart() function requestLedColorsStart()
{ {
window.ledStreamActive=true; window.ledStreamActive=true;
sendToHyperion("ledcolors", "ledstream-start"); sendToHyperion("ledcolors", "ledstream-start");
} }
function requestLedColorsStop() function requestLedColorsStop()
{ {
window.ledStreamActive=false; window.ledStreamActive=false;
sendToHyperion("ledcolors", "ledstream-stop"); sendToHyperion("ledcolors", "ledstream-stop");
} }
function requestLedImageStart() function requestLedImageStart()
{ {
window.imageStreamActive=true; window.imageStreamActive=true;
sendToHyperion("ledcolors", "imagestream-start"); sendToHyperion("ledcolors", "imagestream-start");
} }
function requestLedImageStop() function requestLedImageStop()
{ {
window.imageStreamActive=false; window.imageStreamActive=false;
sendToHyperion("ledcolors", "imagestream-stop"); sendToHyperion("ledcolors", "imagestream-stop");
} }
function requestPriorityClear(prio) function requestPriorityClear(prio)
{ {
if(typeof prio !== 'number') if(typeof prio !== 'number')
prio = window.webPrio; prio = window.webPrio;
sendToHyperion("clear", "", '"priority":'+prio+''); sendToHyperion("clear", "", '"priority":'+prio+'');
} }
function requestClearAll() function requestClearAll()
{ {
requestPriorityClear(-1) requestPriorityClear(-1)
} }
function requestPlayEffect(effectName, duration) 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) 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) 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) function requestSetComponentState(comp, state)
{ {
var state_str = state ? "true" : "false"; var state_str = state ? "true" : "false";
sendToHyperion("componentstate", "", '"componentstate":{"component":"'+comp+'","state":'+state_str+'}'); sendToHyperion("componentstate", "", '"componentstate":{"component":"'+comp+'","state":'+state_str+'}');
} }
function requestSetSource(prio) function requestSetSource(prio)
{ {
if ( prio == "auto" ) if ( prio == "auto" )
sendToHyperion("sourceselect", "", '"auto":true'); sendToHyperion("sourceselect", "", '"auto":true');
else else
sendToHyperion("sourceselect", "", '"priority":'+prio); sendToHyperion("sourceselect", "", '"priority":'+prio);
} }
function requestWriteConfig(config, full) function requestWriteConfig(config, full)
{ {
if(full === true) if(full === true)
window.serverConfig = config; window.serverConfig = config;
else else
{ {
jQuery.each(config, function(i, val) { jQuery.each(config, function(i, val) {
window.serverConfig[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) function requestWriteEffect(effectName,effectPy,effectArgs,data)
{ {
var cutArgs = effectArgs.slice(1, -1); var cutArgs = effectArgs.slice(1, -1);
sendToHyperion("create-effect", "", '"name":"'+effectName+'", "script":"'+effectPy+'", '+cutArgs+',"imageData":"'+data+'"'); sendToHyperion("create-effect", "", '"name":"'+effectName+'", "script":"'+effectPy+'", '+cutArgs+',"imageData":"'+data+'"');
} }
function requestTestEffect(effectName,effectPy,effectArgs,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) function requestDeleteEffect(effectName)
{ {
sendToHyperion("delete-effect", "", '"name":"'+effectName+'"'); sendToHyperion("delete-effect", "", '"name":"'+effectName+'"');
} }
function requestLoggingStart() function requestLoggingStart()
{ {
window.loggingStreamActive=true; window.loggingStreamActive=true;
sendToHyperion("logging", "start"); sendToHyperion("logging", "start");
} }
function requestLoggingStop() function requestLoggingStop()
{ {
window.loggingStreamActive=false; window.loggingStreamActive=false;
sendToHyperion("logging", "stop"); sendToHyperion("logging", "stop");
} }
function requestMappingType(type) function requestMappingType(type)
{ {
sendToHyperion("processing", "", '"mappingType": "'+type+'"'); sendToHyperion("processing", "", '"mappingType": "'+type+'"');
} }
function requestVideoMode(newMode) function requestVideoMode(newMode)
{ {
sendToHyperion("videomode", "", '"videoMode": "'+newMode+'"'); sendToHyperion("videomode", "", '"videoMode": "'+newMode+'"');
} }
function requestAdjustment(type, value, complete) function requestAdjustment(type, value, complete)
{ {
if(complete === true) if(complete === true)
sendToHyperion("adjustment", "", '"adjustment": '+type+''); sendToHyperion("adjustment", "", '"adjustment": '+type+'');
else else
sendToHyperion("adjustment", "", '"adjustment": {"'+type+'": '+value+'}'); sendToHyperion("adjustment", "", '"adjustment": {"'+type+'": '+value+'}');
} }
async function requestLedDeviceDiscovery(type, params) 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) 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) 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 * jQuery Internationalization library
* *
* Copyright (C) 2011-2013 Santhosh Thottingal, Neil Kandalgaonkar * Copyright (C) 2011-2013 Santhosh Thottingal, Neil Kandalgaonkar
@ -17,7 +17,7 @@
'use strict'; 'use strict';
var MessageParserEmitter = function () { var MessageParserEmitter = function () {
this.language = $.i18n.languages[String.locale] || $.i18n.languages['default']; this.language = $.i18n.languages[ String.locale ] || $.i18n.languages[ 'default' ];
}; };
MessageParserEmitter.prototype = { MessageParserEmitter.prototype = {
@ -38,36 +38,36 @@
messageParserEmitter = this; messageParserEmitter = this;
switch ( typeof node ) { switch ( typeof node ) {
case 'string': case 'string':
case 'number': case 'number':
ret = node; ret = node;
break; break;
case 'object': case 'object':
// node is an array of nodes // node is an array of nodes
subnodes = $.map( node.slice( 1 ), function ( n ) { subnodes = $.map( node.slice( 1 ), function ( n ) {
return messageParserEmitter.emit( n, replacements ); return messageParserEmitter.emit( n, replacements );
} ); } );
operation = node[0].toLowerCase(); operation = node[ 0 ].toLowerCase();
if ( typeof messageParserEmitter[operation] === 'function' ) { if ( typeof messageParserEmitter[ operation ] === 'function' ) {
ret = messageParserEmitter[operation]( subnodes, replacements ); ret = messageParserEmitter[ operation ]( subnodes, replacements );
} else { } else {
throw new Error( 'unknown operation "' + operation + '"' ); throw new Error( 'unknown operation "' + operation + '"' );
} }
break; break;
case 'undefined': case 'undefined':
// Parsing the empty string (as an entire expression, or as a // Parsing the empty string (as an entire expression, or as a
// paramExpression in a template) results in undefined // paramExpression in a template) results in undefined
// Perhaps a more clever parser can detect this, and return the // Perhaps a more clever parser can detect this, and return the
// empty string? Or is that useful information? // empty string? Or is that useful information?
// The logical thing is probably to return the empty string here // The logical thing is probably to return the empty string here
// when we encounter undefined. // when we encounter undefined.
ret = ''; ret = '';
break; break;
default: default:
throw new Error( 'unexpected type in AST: ' + typeof node ); throw new Error( 'unexpected type in AST: ' + typeof node );
} }
return ret; return ret;
@ -80,7 +80,7 @@
* in our children and pass them upwards * in our children and pass them upwards
* *
* @param {Array} nodes Mixed, some single nodes, some arrays of nodes. * @param {Array} nodes Mixed, some single nodes, some arrays of nodes.
* @return String * @return {string}
*/ */
concat: function ( nodes ) { concat: function ( nodes ) {
var result = ''; var result = '';
@ -106,11 +106,11 @@
* @return {string} replacement * @return {string} replacement
*/ */
replace: function ( nodes, replacements ) { replace: function ( nodes, replacements ) {
var index = parseInt( nodes[0], 10 ); var index = parseInt( nodes[ 0 ], 10 );
if ( index < replacements.length ) { if ( index < replacements.length ) {
// replacement is not a string, don't touch! // replacement is not a string, don't touch!
return replacements[index]; return replacements[ index ];
} else { } else {
// index not found, fallback to displaying variable // index not found, fallback to displaying variable
return '$' + ( index + 1 ); return '$' + ( index + 1 );
@ -124,11 +124,11 @@
* convertNumber. * convertNumber.
* *
* @param {Array} nodes List [ {String|Number}, {String}, {String} ... ] * @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. * language.
*/ */
plural: function ( nodes ) { 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 ); forms = nodes.slice( 1 );
return forms.length ? this.language.convertPlural( count, forms ) : ''; return forms.length ? this.language.convertPlural( count, forms ) : '';
@ -139,10 +139,10 @@
* {{gender:gender|masculine|feminine|neutral}}. * {{gender:gender|masculine|feminine|neutral}}.
* *
* @param {Array} nodes List [ {String}, {String}, {String} , {String} ] * @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 ) { gender: function ( nodes ) {
var gender = nodes[0], var gender = nodes[ 0 ],
forms = nodes.slice( 1 ); forms = nodes.slice( 1 );
return this.language.gender( gender, forms ); return this.language.gender( gender, forms );
@ -153,12 +153,12 @@
* putting {{grammar:form|word}} in a message * putting {{grammar:form|word}} in a message
* *
* @param {Array} nodes List [{Grammar case eg: genitive}, {String word}] * @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. * language.
*/ */
grammar: function ( nodes ) { grammar: function ( nodes ) {
var form = nodes[0], var form = nodes[ 0 ],
word = nodes[1]; word = nodes[ 1 ];
return word && form && this.language.convertGrammar( word, form ); return word && form && this.language.convertGrammar( word, form );
} }

View File

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

View File

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

View File

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

View File

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

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