Merge pull request #44881 from home-assistant/rc
This commit is contained in:
commit
bb1ebae5cb
1229 changed files with 19819 additions and 6731 deletions
23
.coveragerc
23
.coveragerc
|
@ -73,8 +73,6 @@ omit =
|
|||
homeassistant/components/aurora_abb_powerone/sensor.py
|
||||
homeassistant/components/avea/light.py
|
||||
homeassistant/components/avion/light.py
|
||||
homeassistant/components/avri/const.py
|
||||
homeassistant/components/avri/sensor.py
|
||||
homeassistant/components/azure_devops/__init__.py
|
||||
homeassistant/components/azure_devops/const.py
|
||||
homeassistant/components/azure_devops/sensor.py
|
||||
|
@ -102,7 +100,12 @@ omit =
|
|||
homeassistant/components/bme280/sensor.py
|
||||
homeassistant/components/bme680/sensor.py
|
||||
homeassistant/components/bmp280/sensor.py
|
||||
homeassistant/components/bmw_connected_drive/*
|
||||
homeassistant/components/bmw_connected_drive/__init__.py
|
||||
homeassistant/components/bmw_connected_drive/binary_sensor.py
|
||||
homeassistant/components/bmw_connected_drive/device_tracker.py
|
||||
homeassistant/components/bmw_connected_drive/lock.py
|
||||
homeassistant/components/bmw_connected_drive/notify.py
|
||||
homeassistant/components/bmw_connected_drive/sensor.py
|
||||
homeassistant/components/braviatv/__init__.py
|
||||
homeassistant/components/braviatv/const.py
|
||||
homeassistant/components/braviatv/media_player.py
|
||||
|
@ -386,7 +389,6 @@ omit =
|
|||
homeassistant/components/hvv_departures/sensor.py
|
||||
homeassistant/components/hvv_departures/__init__.py
|
||||
homeassistant/components/hydrawise/*
|
||||
homeassistant/components/hyperion/light.py
|
||||
homeassistant/components/iammeter/sensor.py
|
||||
homeassistant/components/iaqualink/binary_sensor.py
|
||||
homeassistant/components/iaqualink/climate.py
|
||||
|
@ -568,6 +570,8 @@ omit =
|
|||
homeassistant/components/n26/*
|
||||
homeassistant/components/nad/media_player.py
|
||||
homeassistant/components/nanoleaf/light.py
|
||||
homeassistant/components/neato/__init__.py
|
||||
homeassistant/components/neato/api.py
|
||||
homeassistant/components/neato/camera.py
|
||||
homeassistant/components/neato/sensor.py
|
||||
homeassistant/components/neato/switch.py
|
||||
|
@ -578,14 +582,9 @@ omit =
|
|||
homeassistant/components/nest/api.py
|
||||
homeassistant/components/nest/binary_sensor.py
|
||||
homeassistant/components/nest/camera.py
|
||||
homeassistant/components/nest/camera_legacy.py
|
||||
homeassistant/components/nest/camera_sdm.py
|
||||
homeassistant/components/nest/climate.py
|
||||
homeassistant/components/nest/climate_legacy.py
|
||||
homeassistant/components/nest/climate_sdm.py
|
||||
homeassistant/components/nest/local_auth.py
|
||||
homeassistant/components/nest/legacy/*
|
||||
homeassistant/components/nest/sensor.py
|
||||
homeassistant/components/nest/sensor_legacy.py
|
||||
homeassistant/components/netatmo/__init__.py
|
||||
homeassistant/components/netatmo/api.py
|
||||
homeassistant/components/netatmo/camera.py
|
||||
|
@ -834,8 +833,9 @@ omit =
|
|||
homeassistant/components/solaredge_local/sensor.py
|
||||
homeassistant/components/solarlog/*
|
||||
homeassistant/components/solax/sensor.py
|
||||
homeassistant/components/soma/cover.py
|
||||
homeassistant/components/soma/__init__.py
|
||||
homeassistant/components/soma/cover.py
|
||||
homeassistant/components/soma/sensor.py
|
||||
homeassistant/components/somfy/*
|
||||
homeassistant/components/somfy_mylink/*
|
||||
homeassistant/components/sonos/*
|
||||
|
@ -1015,7 +1015,6 @@ omit =
|
|||
homeassistant/components/watson_tts/tts.py
|
||||
homeassistant/components/waze_travel_time/sensor.py
|
||||
homeassistant/components/webostv/*
|
||||
homeassistant/components/wemo/*
|
||||
homeassistant/components/whois/sensor.py
|
||||
homeassistant/components/wiffi/*
|
||||
homeassistant/components/wink/*
|
||||
|
|
24
.github/workflows/ci.yaml
vendored
24
.github/workflows/ci.yaml
vendored
|
@ -25,7 +25,7 @@ jobs:
|
|||
uses: actions/checkout@v2
|
||||
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
|
||||
id: python
|
||||
uses: actions/setup-python@v2.1.4
|
||||
uses: actions/setup-python@v2.2.1
|
||||
with:
|
||||
python-version: ${{ env.DEFAULT_PYTHON }}
|
||||
- name: Restore base Python virtual environment
|
||||
|
@ -73,7 +73,7 @@ jobs:
|
|||
- name: Check out code from GitHub
|
||||
uses: actions/checkout@v2
|
||||
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
|
||||
uses: actions/setup-python@v2.1.4
|
||||
uses: actions/setup-python@v2.2.1
|
||||
id: python
|
||||
with:
|
||||
python-version: ${{ env.DEFAULT_PYTHON }}
|
||||
|
@ -118,7 +118,7 @@ jobs:
|
|||
- name: Check out code from GitHub
|
||||
uses: actions/checkout@v2
|
||||
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
|
||||
uses: actions/setup-python@v2.1.4
|
||||
uses: actions/setup-python@v2.2.1
|
||||
id: python
|
||||
with:
|
||||
python-version: ${{ env.DEFAULT_PYTHON }}
|
||||
|
@ -163,7 +163,7 @@ jobs:
|
|||
- name: Check out code from GitHub
|
||||
uses: actions/checkout@v2
|
||||
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
|
||||
uses: actions/setup-python@v2.1.4
|
||||
uses: actions/setup-python@v2.2.1
|
||||
id: python
|
||||
with:
|
||||
python-version: ${{ env.DEFAULT_PYTHON }}
|
||||
|
@ -230,7 +230,7 @@ jobs:
|
|||
- name: Check out code from GitHub
|
||||
uses: actions/checkout@v2
|
||||
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
|
||||
uses: actions/setup-python@v2.1.4
|
||||
uses: actions/setup-python@v2.2.1
|
||||
id: python
|
||||
with:
|
||||
python-version: ${{ env.DEFAULT_PYTHON }}
|
||||
|
@ -278,7 +278,7 @@ jobs:
|
|||
- name: Check out code from GitHub
|
||||
uses: actions/checkout@v2
|
||||
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
|
||||
uses: actions/setup-python@v2.1.4
|
||||
uses: actions/setup-python@v2.2.1
|
||||
id: python
|
||||
with:
|
||||
python-version: ${{ env.DEFAULT_PYTHON }}
|
||||
|
@ -326,7 +326,7 @@ jobs:
|
|||
- name: Check out code from GitHub
|
||||
uses: actions/checkout@v2
|
||||
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
|
||||
uses: actions/setup-python@v2.1.4
|
||||
uses: actions/setup-python@v2.2.1
|
||||
id: python
|
||||
with:
|
||||
python-version: ${{ env.DEFAULT_PYTHON }}
|
||||
|
@ -371,7 +371,7 @@ jobs:
|
|||
- name: Check out code from GitHub
|
||||
uses: actions/checkout@v2
|
||||
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
|
||||
uses: actions/setup-python@v2.1.4
|
||||
uses: actions/setup-python@v2.2.1
|
||||
id: python
|
||||
with:
|
||||
python-version: ${{ env.DEFAULT_PYTHON }}
|
||||
|
@ -419,7 +419,7 @@ jobs:
|
|||
- name: Check out code from GitHub
|
||||
uses: actions/checkout@v2
|
||||
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
|
||||
uses: actions/setup-python@v2.1.4
|
||||
uses: actions/setup-python@v2.2.1
|
||||
id: python
|
||||
with:
|
||||
python-version: ${{ env.DEFAULT_PYTHON }}
|
||||
|
@ -475,7 +475,7 @@ jobs:
|
|||
- name: Check out code from GitHub
|
||||
uses: actions/checkout@v2
|
||||
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
|
||||
uses: actions/setup-python@v2.1.4
|
||||
uses: actions/setup-python@v2.2.1
|
||||
id: python
|
||||
with:
|
||||
python-version: ${{ env.DEFAULT_PYTHON }}
|
||||
|
@ -555,7 +555,7 @@ jobs:
|
|||
- name: Check out code from GitHub
|
||||
uses: actions/checkout@v2
|
||||
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
|
||||
uses: actions/setup-python@v2.1.4
|
||||
uses: actions/setup-python@v2.2.1
|
||||
id: python
|
||||
with:
|
||||
python-version: ${{ env.DEFAULT_PYTHON }}
|
||||
|
@ -785,4 +785,4 @@ jobs:
|
|||
coverage report --fail-under=94
|
||||
coverage xml
|
||||
- name: Upload coverage to Codecov
|
||||
uses: codecov/codecov-action@v1.0.15
|
||||
uses: codecov/codecov-action@v1.1.1
|
||||
|
|
|
@ -30,7 +30,7 @@ repos:
|
|||
- pydocstyle==5.1.1
|
||||
files: ^(homeassistant|script|tests)/.+\.py$
|
||||
- repo: https://github.com/PyCQA/bandit
|
||||
rev: 1.6.2
|
||||
rev: 1.7.0
|
||||
hooks:
|
||||
- id: bandit
|
||||
args:
|
||||
|
|
42
.travis.yml
42
.travis.yml
|
@ -1,42 +0,0 @@
|
|||
dist: focal
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- ffmpeg
|
||||
- libudev-dev
|
||||
- libavformat-dev
|
||||
- libavcodec-dev
|
||||
- libavdevice-dev
|
||||
- libavutil-dev
|
||||
- libswscale-dev
|
||||
- libswresample-dev
|
||||
- libavfilter-dev
|
||||
|
||||
python:
|
||||
- "3.7.1"
|
||||
- "3.8"
|
||||
|
||||
env:
|
||||
- TOX_ARGS="-- --test-group-count 4 --test-group 1"
|
||||
- TOX_ARGS="-- --test-group-count 4 --test-group 2"
|
||||
- TOX_ARGS="-- --test-group-count 4 --test-group 3"
|
||||
- TOX_ARGS="-- --test-group-count 4 --test-group 4"
|
||||
|
||||
jobs:
|
||||
fast_finish: true
|
||||
include:
|
||||
- python: "3.7.1"
|
||||
env: TOXENV=lint
|
||||
- python: "3.7.1"
|
||||
# PYLINT_ARGS=--jobs=0 disabled for now: https://github.com/PyCQA/pylint/issues/3584
|
||||
env: TOXENV=pylint TRAVIS_WAIT=30
|
||||
- python: "3.7.1"
|
||||
env: TOXENV=typing
|
||||
|
||||
cache:
|
||||
pip: true
|
||||
directories:
|
||||
- $HOME/.cache/pre-commit
|
||||
install: pip install -U tox tox-travis
|
||||
language: python
|
||||
script: ${TRAVIS_WAIT:+travis_wait $TRAVIS_WAIT} tox -vv --develop ${TOX_ARGS-}
|
38
.vscode/launch.json
vendored
38
.vscode/launch.json
vendored
|
@ -9,7 +9,41 @@
|
|||
"type": "python",
|
||||
"request": "launch",
|
||||
"module": "homeassistant",
|
||||
"args": ["--debug", "-c", "config"]
|
||||
"args": [
|
||||
"--debug",
|
||||
"-c",
|
||||
"config"
|
||||
]
|
||||
},
|
||||
{
|
||||
// Debug by attaching to local Home Asistant server using Remote Python Debugger.
|
||||
// See https://www.home-assistant.io/integrations/debugpy/
|
||||
"name": "Home Assistant: Attach Local",
|
||||
"type": "python",
|
||||
"request": "attach",
|
||||
"port": 5678,
|
||||
"host": "localhost",
|
||||
"pathMappings": [
|
||||
{
|
||||
"localRoot": "${workspaceFolder}",
|
||||
"remoteRoot": "."
|
||||
}
|
||||
],
|
||||
},
|
||||
{
|
||||
// Debug by attaching to remote Home Asistant server using Remote Python Debugger.
|
||||
// See https://www.home-assistant.io/integrations/debugpy/
|
||||
"name": "Home Assistant: Attach Remote",
|
||||
"type": "python",
|
||||
"request": "attach",
|
||||
"port": 5678,
|
||||
"host": "homeassistant.local",
|
||||
"pathMappings": [
|
||||
{
|
||||
"localRoot": "${workspaceFolder}",
|
||||
"remoteRoot": "/usr/src/homeassistant"
|
||||
}
|
||||
],
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
|
@ -54,7 +54,6 @@ homeassistant/components/aurora_abb_powerone/* @davet2001
|
|||
homeassistant/components/auth/* @home-assistant/core
|
||||
homeassistant/components/automation/* @home-assistant/core
|
||||
homeassistant/components/avea/* @pattyland
|
||||
homeassistant/components/avri/* @timvancann
|
||||
homeassistant/components/awair/* @ahayworth @danielsjf
|
||||
homeassistant/components/aws/* @awarecan
|
||||
homeassistant/components/axis/* @Kane610
|
||||
|
@ -323,6 +322,7 @@ homeassistant/components/onewire/* @garbled1 @epenet
|
|||
homeassistant/components/onvif/* @hunterjm
|
||||
homeassistant/components/openerz/* @misialq
|
||||
homeassistant/components/opengarage/* @danielhiversen
|
||||
homeassistant/components/openhome/* @bazwilliams
|
||||
homeassistant/components/opentherm_gw/* @mvn23
|
||||
homeassistant/components/openuv/* @bachya
|
||||
homeassistant/components/openweathermap/* @fabaff @freekode @nzapponi
|
||||
|
@ -355,6 +355,7 @@ homeassistant/components/ptvsd/* @swamp-ig
|
|||
homeassistant/components/push/* @dgomes
|
||||
homeassistant/components/pvoutput/* @fabaff
|
||||
homeassistant/components/pvpc_hourly_pricing/* @azogue
|
||||
homeassistant/components/qbittorrent/* @geoffreylagaisse
|
||||
homeassistant/components/qld_bushfire/* @exxamalte
|
||||
homeassistant/components/qnap/* @colinodell
|
||||
homeassistant/components/quantum_gateway/* @cisasteelersfan
|
||||
|
@ -453,6 +454,7 @@ homeassistant/components/tado/* @michaelarnauts @bdraco
|
|||
homeassistant/components/tag/* @balloob @dmulcahey
|
||||
homeassistant/components/tahoma/* @philklei
|
||||
homeassistant/components/tankerkoenig/* @guillempages
|
||||
homeassistant/components/tapsaff/* @bazwilliams
|
||||
homeassistant/components/tasmota/* @emontnemery
|
||||
homeassistant/components/tautulli/* @ludeeus
|
||||
homeassistant/components/tellduslive/* @fredrike
|
||||
|
@ -491,6 +493,7 @@ homeassistant/components/utility_meter/* @dgomes
|
|||
homeassistant/components/velbus/* @Cereal2nd @brefra
|
||||
homeassistant/components/velux/* @Julius2342
|
||||
homeassistant/components/vera/* @vangorra
|
||||
homeassistant/components/verisure/* @frenck
|
||||
homeassistant/components/versasense/* @flamm3blemuff1n
|
||||
homeassistant/components/version/* @fabaff @ludeeus
|
||||
homeassistant/components/vesync/* @markperdue @webdjoe @thegardenmonkey
|
||||
|
|
|
@ -5,7 +5,7 @@ Open source home automation that puts local control and privacy first. Powered b
|
|||
|
||||
Check out `home-assistant.io <https://home-assistant.io>`__ for `a
|
||||
demo <https://home-assistant.io/demo/>`__, `installation instructions <https://home-assistant.io/getting-started/>`__,
|
||||
`tutorials <https://home-assistant.io/getting-started/automation-2/>`__ and `documentation <https://home-assistant.io/docs/>`__.
|
||||
`tutorials <https://home-assistant.io/getting-started/automation/>`__ and `documentation <https://home-assistant.io/docs/>`__.
|
||||
|
||||
|screenshot-states|
|
||||
|
||||
|
@ -14,8 +14,8 @@ Featured integrations
|
|||
|
||||
|screenshot-components|
|
||||
|
||||
The system is built using a modular approach so support for other devices or actions can be implemented easily. See also the `section on architecture <https://developers.home-assistant.io/docs/en/architecture_index.html>`__ and the `section on creating your own
|
||||
components <https://developers.home-assistant.io/docs/en/creating_component_index.html>`__.
|
||||
The system is built using a modular approach so support for other devices or actions can be implemented easily. See also the `section on architecture <https://developers.home-assistant.io/docs/architecture_index/>`__ and the `section on creating your own
|
||||
components <https://developers.home-assistant.io/docs/creating_component_index/>`__.
|
||||
|
||||
If you run into issues while using Home Assistant or during development
|
||||
of a component, check the `Home Assistant help section <https://home-assistant.io/help/>`__ of our website for further help and information.
|
||||
|
|
10
build.json
10
build.json
|
@ -1,11 +1,11 @@
|
|||
{
|
||||
"image": "homeassistant/{arch}-homeassistant",
|
||||
"build_from": {
|
||||
"aarch64": "homeassistant/aarch64-homeassistant-base:2020.11.2",
|
||||
"armhf": "homeassistant/armhf-homeassistant-base:2020.11.2",
|
||||
"armv7": "homeassistant/armv7-homeassistant-base:2020.11.2",
|
||||
"amd64": "homeassistant/amd64-homeassistant-base:2020.11.2",
|
||||
"i386": "homeassistant/i386-homeassistant-base:2020.11.2"
|
||||
"aarch64": "homeassistant/aarch64-homeassistant-base:2021.01.0",
|
||||
"armhf": "homeassistant/armhf-homeassistant-base:2021.01.0",
|
||||
"armv7": "homeassistant/armv7-homeassistant-base:2021.01.0",
|
||||
"amd64": "homeassistant/amd64-homeassistant-base:2021.01.0",
|
||||
"i386": "homeassistant/i386-homeassistant-base:2021.01.0"
|
||||
},
|
||||
"labels": {
|
||||
"io.hass.type": "core"
|
||||
|
|
|
@ -207,7 +207,6 @@ html_theme_options = {
|
|||
"github_repo": PROJECT_GITHUB_REPOSITORY,
|
||||
"github_type": "star",
|
||||
"github_banner": True,
|
||||
"travis_button": True,
|
||||
"touch_icon": "logo-apple.png",
|
||||
# 'fixed_sidebar': True, # Re-enable when we have more content
|
||||
}
|
||||
|
|
|
@ -1,13 +1,28 @@
|
|||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"reauth_successful": "Re-autenticaci\u00f3 realitzada correctament",
|
||||
"single_instance_allowed": "Ja configurat. Nom\u00e9s \u00e9s possible una sola configuraci\u00f3."
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Ha fallat la connexi\u00f3",
|
||||
"invalid_auth": "Autenticaci\u00f3 inv\u00e0lida"
|
||||
"invalid_auth": "Autenticaci\u00f3 inv\u00e0lida",
|
||||
"invalid_mfa_code": "Codi MFA inv\u00e0lid"
|
||||
},
|
||||
"step": {
|
||||
"mfa": {
|
||||
"data": {
|
||||
"mfa_code": "Codi MFA (6 d\u00edgits)"
|
||||
},
|
||||
"title": "Introdueix el codi MFA per a Abode"
|
||||
},
|
||||
"reauth_confirm": {
|
||||
"data": {
|
||||
"password": "Contrasenya",
|
||||
"username": "Correu electr\u00f2nic"
|
||||
},
|
||||
"title": "Introdueix la informaci\u00f3 d'inici de sessi\u00f3 d'Abode."
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"password": "Contrasenya",
|
||||
|
|
|
@ -1,9 +1,28 @@
|
|||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"reauth_successful": "Die erneute Authentifizierung war erfolgreich",
|
||||
"single_instance_allowed": "Es ist nur eine einzige Konfiguration von Abode erlaubt."
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Verbindung fehlgeschlagen",
|
||||
"invalid_auth": "Ung\u00fcltige Authentifizierung",
|
||||
"invalid_mfa_code": "Ung\u00fcltiger MFA-Code"
|
||||
},
|
||||
"step": {
|
||||
"mfa": {
|
||||
"data": {
|
||||
"mfa_code": "MFA-Code (6-stellig)"
|
||||
},
|
||||
"title": "Gib deinen MFA-Code f\u00fcr Abode ein"
|
||||
},
|
||||
"reauth_confirm": {
|
||||
"data": {
|
||||
"password": "Passwort",
|
||||
"username": "E-Mail"
|
||||
},
|
||||
"title": "Gib deine Abode-Anmeldeinformationen ein"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"password": "Passwort",
|
||||
|
|
|
@ -4,9 +4,15 @@
|
|||
"single_instance_allowed": "Csak egyetlen Abode konfigur\u00e1ci\u00f3 enged\u00e9lyezett."
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Sikertelen csatlakoz\u00e1s"
|
||||
"cannot_connect": "Sikertelen csatlakoz\u00e1s",
|
||||
"invalid_mfa_code": "\u00c9rv\u00e9nytelen MFA k\u00f3d"
|
||||
},
|
||||
"step": {
|
||||
"mfa": {
|
||||
"data": {
|
||||
"mfa_code": "MFA k\u00f3d (6 jegy\u0171)"
|
||||
}
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"password": "Jelsz\u00f3",
|
||||
|
|
|
@ -5,9 +5,18 @@
|
|||
},
|
||||
"error": {
|
||||
"cannot_connect": "Kan geen verbinding maken",
|
||||
"invalid_auth": "Ongeldige authenticatie"
|
||||
"invalid_auth": "Ongeldige authenticatie",
|
||||
"invalid_mfa_code": "Ongeldige MFA-code"
|
||||
},
|
||||
"step": {
|
||||
"mfa": {
|
||||
"data": {
|
||||
"mfa_code": "MFA-code (6-cijfers)"
|
||||
}
|
||||
},
|
||||
"reauth_confirm": {
|
||||
"title": "Vul uw Abode-inloggegevens in"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"password": "Wachtwoord",
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"reauth_successful": "Reautentisering var vellykket",
|
||||
"reauth_successful": "Godkjenning p\u00e5 nytt var vellykket",
|
||||
"single_instance_allowed": "Allerede konfigurert. Bare \u00e9n enkelt konfigurasjon er mulig."
|
||||
},
|
||||
"error": {
|
||||
|
|
|
@ -1,6 +1,20 @@
|
|||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"reauth_successful": "Reautentica\u00e7\u00e3o bem sucedida",
|
||||
"single_instance_allowed": "J\u00e1 configurado. Apenas uma \u00fanica configura\u00e7\u00e3o \u00e9 poss\u00edvel."
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Falha na liga\u00e7\u00e3o",
|
||||
"invalid_auth": "Autentica\u00e7\u00e3o inv\u00e1lida"
|
||||
},
|
||||
"step": {
|
||||
"reauth_confirm": {
|
||||
"data": {
|
||||
"password": "Palavra-passe",
|
||||
"username": "Email"
|
||||
}
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"password": "Palavra-passe",
|
||||
|
|
|
@ -1,9 +1,26 @@
|
|||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"reauth_successful": "Ponovno overjanje je uspelo",
|
||||
"single_instance_allowed": "Dovoljena je samo ena konfiguracija Abode."
|
||||
},
|
||||
"error": {
|
||||
"invalid_mfa_code": "Napa\u010dna MFA koda"
|
||||
},
|
||||
"step": {
|
||||
"mfa": {
|
||||
"data": {
|
||||
"mfa_code": "MFA koda (6 \u0161tevilk)"
|
||||
},
|
||||
"title": "Vnesite MFA kodo za Abode"
|
||||
},
|
||||
"reauth_confirm": {
|
||||
"data": {
|
||||
"password": "Geslo",
|
||||
"username": "E-po\u0161tni naslov"
|
||||
},
|
||||
"title": "Vnesite podatke za prijavo v Abode"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"password": "Geslo",
|
||||
|
|
9
homeassistant/components/abode/translations/th.json
Normal file
9
homeassistant/components/abode/translations/th.json
Normal file
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"config": {
|
||||
"step": {
|
||||
"mfa": {
|
||||
"title": "\u0e1b\u0e49\u0e2d\u0e19\u0e23\u0e2b\u0e31\u0e2a MFA \u0e08\u0e32\u0e01 Abode"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,7 +2,7 @@
|
|||
"config": {
|
||||
"abort": {
|
||||
"reauth_successful": "\u91cd\u65b0\u8a8d\u8b49\u6210\u529f",
|
||||
"single_instance_allowed": "\u50c5\u80fd\u8a2d\u5b9a\u4e00\u7d44\u8a2d\u5099\u3002"
|
||||
"single_instance_allowed": "\u50c5\u80fd\u8a2d\u5b9a\u4e00\u7d44\u88dd\u7f6e\u3002"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "\u9023\u7dda\u5931\u6557",
|
||||
|
|
|
@ -183,6 +183,20 @@ FORECAST_SENSOR_TYPES = {
|
|||
ATTR_UNIT_METRIC: SPEED_KILOMETERS_PER_HOUR,
|
||||
ATTR_UNIT_IMPERIAL: SPEED_MILES_PER_HOUR,
|
||||
},
|
||||
"WindDay": {
|
||||
ATTR_DEVICE_CLASS: None,
|
||||
ATTR_ICON: "mdi:weather-windy",
|
||||
ATTR_LABEL: "Wind Day",
|
||||
ATTR_UNIT_METRIC: SPEED_KILOMETERS_PER_HOUR,
|
||||
ATTR_UNIT_IMPERIAL: SPEED_MILES_PER_HOUR,
|
||||
},
|
||||
"WindNight": {
|
||||
ATTR_DEVICE_CLASS: None,
|
||||
ATTR_ICON: "mdi:weather-windy",
|
||||
ATTR_LABEL: "Wind Night",
|
||||
ATTR_UNIT_METRIC: SPEED_KILOMETERS_PER_HOUR,
|
||||
ATTR_UNIT_IMPERIAL: SPEED_MILES_PER_HOUR,
|
||||
},
|
||||
}
|
||||
|
||||
OPTIONAL_SENSORS = (
|
||||
|
@ -284,6 +298,13 @@ SENSOR_TYPES = {
|
|||
ATTR_UNIT_METRIC: TEMP_CELSIUS,
|
||||
ATTR_UNIT_IMPERIAL: TEMP_FAHRENHEIT,
|
||||
},
|
||||
"Wind": {
|
||||
ATTR_DEVICE_CLASS: None,
|
||||
ATTR_ICON: "mdi:weather-windy",
|
||||
ATTR_LABEL: "Wind",
|
||||
ATTR_UNIT_METRIC: SPEED_KILOMETERS_PER_HOUR,
|
||||
ATTR_UNIT_IMPERIAL: SPEED_MILES_PER_HOUR,
|
||||
},
|
||||
"WindGust": {
|
||||
ATTR_DEVICE_CLASS: None,
|
||||
ATTR_ICON: "mdi:weather-windy",
|
||||
|
|
|
@ -96,7 +96,7 @@ class AccuWeatherSensor(CoordinatorEntity):
|
|||
return self.coordinator.data[ATTR_FORECAST][self.forecast_day][
|
||||
self.kind
|
||||
]["Value"]
|
||||
if self.kind in ["WindGustDay", "WindGustNight"]:
|
||||
if self.kind in ["WindDay", "WindNight", "WindGustDay", "WindGustNight"]:
|
||||
return self.coordinator.data[ATTR_FORECAST][self.forecast_day][
|
||||
self.kind
|
||||
]["Speed"]["Value"]
|
||||
|
@ -115,7 +115,7 @@ class AccuWeatherSensor(CoordinatorEntity):
|
|||
return self.coordinator.data["PrecipitationSummary"][self.kind][
|
||||
self._unit_system
|
||||
]["Value"]
|
||||
if self.kind == "WindGust":
|
||||
if self.kind in ["Wind", "WindGust"]:
|
||||
return self.coordinator.data[self.kind]["Speed"][self._unit_system]["Value"]
|
||||
return self.coordinator.data[self.kind]
|
||||
|
||||
|
@ -144,7 +144,7 @@ class AccuWeatherSensor(CoordinatorEntity):
|
|||
def device_state_attributes(self):
|
||||
"""Return the state attributes."""
|
||||
if self.forecast_day is not None:
|
||||
if self.kind in ["WindGustDay", "WindGustNight"]:
|
||||
if self.kind in ["WindDay", "WindNight", "WindGustDay", "WindGustNight"]:
|
||||
self._attrs["direction"] = self.coordinator.data[ATTR_FORECAST][
|
||||
self.forecast_day
|
||||
][self.kind]["Direction"]["English"]
|
||||
|
|
|
@ -31,5 +31,11 @@
|
|||
"title": "Opcions d'AccuWeather"
|
||||
}
|
||||
}
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "Servidor d'Accuweather accessible",
|
||||
"remaining_requests": "Sol\u00b7licituds permeses restants"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -31,5 +31,11 @@
|
|||
"title": "Mo\u017enosti AccuWeather"
|
||||
}
|
||||
}
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "Lze kontaktovat AccuWeather server",
|
||||
"remaining_requests": "Zb\u00fdvaj\u00edc\u00ed povolen\u00e9 \u017e\u00e1dosti"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,5 +1,8 @@
|
|||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"cannot_connect": "Verbindungsfehler"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
|
@ -10,5 +13,20 @@
|
|||
"title": "AccuWeather"
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"forecast": "Wettervorhersage"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "AccuWeather Server erreichen",
|
||||
"remaining_requests": "Verbleibende erlaubte Anfragen"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -31,5 +31,11 @@
|
|||
"title": "Opciones de AccuWeather"
|
||||
}
|
||||
}
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "Alcanzar el servidor AccuWeather",
|
||||
"remaining_requests": "Solicitudes permitidas restantes"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -34,7 +34,7 @@
|
|||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "\u00dchendu Accuweatheri serveriga",
|
||||
"can_reach_server": "\u00dchendus Accuweatheri serveriga",
|
||||
"remaining_requests": "Lubatud taotlusi on j\u00e4\u00e4nud"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,5 +31,10 @@
|
|||
"title": "Options AccuWeather"
|
||||
}
|
||||
}
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "Acc\u00e8s au serveur AccuWeather"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -31,5 +31,11 @@
|
|||
"title": "Opzioni AccuWeather"
|
||||
}
|
||||
}
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "Raggiungi il server AccuWeather",
|
||||
"remaining_requests": "Richieste consentite rimanenti"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -31,5 +31,11 @@
|
|||
"title": "AccuWeather Optiounen"
|
||||
}
|
||||
}
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "AccuWeather Server ereechbar",
|
||||
"remaining_requests": "Rescht vun erlaabten Ufroen"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -31,5 +31,11 @@
|
|||
"title": "AccuWeather-alternativer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "N\u00e5 AccuWeather-serveren",
|
||||
"remaining_requests": "Gjenv\u00e6rende tillatte foresp\u00f8rsler"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -31,5 +31,11 @@
|
|||
"title": "Opcje AccuWeather"
|
||||
}
|
||||
}
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "Dost\u0119p do serwera AccuWeather",
|
||||
"remaining_requests": "Pozosta\u0142o dozwolonych \u017c\u0105da\u0144"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -10,9 +10,10 @@
|
|||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"api_key": "Chave de API",
|
||||
"api_key": "API Key",
|
||||
"latitude": "Latitude",
|
||||
"longitude": "Longitude"
|
||||
"longitude": "Longitude",
|
||||
"name": "Nome"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,5 +31,11 @@
|
|||
"title": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 AccuWeather"
|
||||
}
|
||||
}
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 AccuWeather",
|
||||
"remaining_requests": "\u0421\u0447\u0451\u0442\u0447\u0438\u043a \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"state": {
|
||||
"accuweather__pressure_tendency": {
|
||||
"falling": "Fallend",
|
||||
"rising": "Steigend",
|
||||
"steady": "Gleichbleibend"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "Dostop do AccuWeather stre\u017enika",
|
||||
"remaining_requests": "Preostalo dovoljenih zahtevkov"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "\u53ef\u8bbf\u95ee AccuWeather \u670d\u52a1\u5668",
|
||||
"remaining_requests": "\u5176\u4f59\u5141\u8bb8\u7684\u8bf7\u6c42"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"single_instance_allowed": "\u50c5\u80fd\u8a2d\u5b9a\u4e00\u7d44\u8a2d\u5099\u3002"
|
||||
"single_instance_allowed": "\u50c5\u80fd\u8a2d\u5b9a\u4e00\u7d44\u88dd\u7f6e\u3002"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "\u9023\u7dda\u5931\u6557",
|
||||
|
@ -31,5 +31,11 @@
|
|||
"title": "AccuWeather \u9078\u9805"
|
||||
}
|
||||
}
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "\u9023\u7dda AccuWeather \u4f3a\u670d\u5668",
|
||||
"remaining_requests": "\u5176\u9918\u5141\u8a31\u7684\u8acb\u6c42"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,6 +2,6 @@
|
|||
"domain": "acer_projector",
|
||||
"name": "Acer Projector",
|
||||
"documentation": "https://www.home-assistant.io/integrations/acer_projector",
|
||||
"requirements": ["pyserial==3.4"],
|
||||
"requirements": ["pyserial==3.5"],
|
||||
"codeowners": []
|
||||
}
|
||||
|
|
7
homeassistant/components/acmeda/translations/pt.json
Normal file
7
homeassistant/components/acmeda/translations/pt.json
Normal file
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"no_devices_found": "Nenhum dispositivo encontrado na rede"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"no_devices_found": "\u7db2\u8def\u4e0a\u627e\u4e0d\u5230\u8a2d\u5099"
|
||||
"no_devices_found": "\u7db2\u8def\u4e0a\u627e\u4e0d\u5230\u88dd\u7f6e"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
|
|
|
@ -4,6 +4,9 @@
|
|||
"existing_instance_updated": "Bestehende Konfiguration wurde aktualisiert.",
|
||||
"single_instance_allowed": "Es ist nur eine einzige Konfiguration von AdGuard Home zul\u00e4ssig."
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Verbindungsfehler"
|
||||
},
|
||||
"step": {
|
||||
"hassio_confirm": {
|
||||
"description": "M\u00f6chtest du Home Assistant so konfigurieren, dass eine Verbindung mit AdGuard Home als Hass.io-Add-On hergestellt wird: {addon}?",
|
||||
|
|
|
@ -1,5 +1,11 @@
|
|||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"single_instance_allowed": "J\u00e1 configurado. Apenas uma \u00fanica configura\u00e7\u00e3o \u00e9 poss\u00edvel."
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Falha na liga\u00e7\u00e3o"
|
||||
},
|
||||
"step": {
|
||||
"hassio_confirm": {
|
||||
"title": "AdGuard Home via Hass.io add-on"
|
||||
|
@ -9,7 +15,9 @@
|
|||
"host": "Servidor",
|
||||
"password": "Palavra-passe",
|
||||
"port": "Porta",
|
||||
"username": "Nome de Utilizador"
|
||||
"ssl": "Utiliza um certificado SSL",
|
||||
"username": "Nome de Utilizador",
|
||||
"verify_ssl": "Verificar certificado SSL"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"config": {
|
||||
"abort": {
|
||||
"existing_instance_updated": "\u5df2\u66f4\u65b0\u73fe\u6709\u8a2d\u5b9a\u3002",
|
||||
"single_instance_allowed": "\u50c5\u80fd\u8a2d\u5b9a\u4e00\u7d44\u8a2d\u5099\u3002"
|
||||
"single_instance_allowed": "\u50c5\u80fd\u8a2d\u5b9a\u4e00\u7d44\u88dd\u7f6e\u3002"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "\u9023\u7dda\u5931\u6557"
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"cannot_connect": "Verbindungsfehler"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
|
|
19
homeassistant/components/advantage_air/translations/pt.json
Normal file
19
homeassistant/components/advantage_air/translations/pt.json
Normal file
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "O dispositivo j\u00e1 est\u00e1 configurado"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Falha na liga\u00e7\u00e3o"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"ip_address": "Endere\u00e7o IP",
|
||||
"port": "Porta"
|
||||
},
|
||||
"title": "Ligar"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "\u8a2d\u5099\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210"
|
||||
"already_configured": "\u88dd\u7f6e\u7d93\u8a2d\u5b9a\u5b8c\u6210"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "\u9023\u7dda\u5931\u6557"
|
||||
|
|
|
@ -4,7 +4,8 @@
|
|||
"already_configured": "Ger\u00e4t ist bereits konfiguriert"
|
||||
},
|
||||
"error": {
|
||||
"already_in_progress": "Der Konfigurationsfluss f\u00fcr das Ger\u00e4t wird bereits ausgef\u00fchrt."
|
||||
"already_in_progress": "Der Konfigurationsfluss f\u00fcr das Ger\u00e4t wird bereits ausgef\u00fchrt.",
|
||||
"cannot_connect": "Verbindungsfehler"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
|
|
|
@ -1,9 +1,17 @@
|
|||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "O dispositivo j\u00e1 est\u00e1 configurado"
|
||||
},
|
||||
"error": {
|
||||
"already_in_progress": "O processo de configura\u00e7\u00e3o j\u00e1 est\u00e1 a decorrer",
|
||||
"cannot_connect": "Falha na liga\u00e7\u00e3o"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"host": "Servidor"
|
||||
"host": "Servidor",
|
||||
"port": "Porta"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "\u8a2d\u5099\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210"
|
||||
"already_configured": "\u88dd\u7f6e\u7d93\u8a2d\u5b9a\u5b8c\u6210"
|
||||
},
|
||||
"error": {
|
||||
"already_in_progress": "\u8a2d\u5b9a\u5df2\u7d93\u9032\u884c\u4e2d",
|
||||
|
|
|
@ -5,15 +5,17 @@ import async_timeout
|
|||
import voluptuous as vol
|
||||
|
||||
from homeassistant import config_entries
|
||||
from homeassistant.const import CONF_API_KEY, CONF_LATITUDE, CONF_LONGITUDE, CONF_NAME
|
||||
from homeassistant.const import (
|
||||
CONF_API_KEY,
|
||||
CONF_LATITUDE,
|
||||
CONF_LONGITUDE,
|
||||
CONF_NAME,
|
||||
HTTP_UNAUTHORIZED,
|
||||
)
|
||||
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
|
||||
from .const import ( # pylint:disable=unused-import
|
||||
DEFAULT_NAME,
|
||||
DOMAIN,
|
||||
NO_AIRLY_SENSORS,
|
||||
)
|
||||
from .const import DOMAIN, NO_AIRLY_SENSORS # pylint:disable=unused-import
|
||||
|
||||
|
||||
class AirlyFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
|
||||
|
@ -22,13 +24,9 @@ class AirlyFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
|
|||
VERSION = 1
|
||||
CONNECTION_CLASS = config_entries.CONN_CLASS_CLOUD_POLL
|
||||
|
||||
def __init__(self):
|
||||
"""Initialize."""
|
||||
self._errors = {}
|
||||
|
||||
async def async_step_user(self, user_input=None):
|
||||
"""Handle a flow initialized by the user."""
|
||||
self._errors = {}
|
||||
errors = {}
|
||||
|
||||
websession = async_get_clientsession(self.hass)
|
||||
|
||||
|
@ -37,75 +35,57 @@ class AirlyFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
|
|||
f"{user_input[CONF_LATITUDE]}-{user_input[CONF_LONGITUDE]}"
|
||||
)
|
||||
self._abort_if_unique_id_configured()
|
||||
api_key_valid = await self._test_api_key(websession, user_input["api_key"])
|
||||
if not api_key_valid:
|
||||
self._errors["base"] = "invalid_api_key"
|
||||
else:
|
||||
location_valid = await self._test_location(
|
||||
try:
|
||||
location_valid = await test_location(
|
||||
websession,
|
||||
user_input["api_key"],
|
||||
user_input["latitude"],
|
||||
user_input["longitude"],
|
||||
)
|
||||
except AirlyError as err:
|
||||
if err.status_code == HTTP_UNAUTHORIZED:
|
||||
errors["base"] = "invalid_api_key"
|
||||
else:
|
||||
if not location_valid:
|
||||
self._errors["base"] = "wrong_location"
|
||||
errors["base"] = "wrong_location"
|
||||
|
||||
if not self._errors:
|
||||
return self.async_create_entry(
|
||||
title=user_input[CONF_NAME], data=user_input
|
||||
)
|
||||
if not errors:
|
||||
return self.async_create_entry(
|
||||
title=user_input[CONF_NAME], data=user_input
|
||||
)
|
||||
|
||||
return self._show_config_form(
|
||||
name=DEFAULT_NAME,
|
||||
api_key="",
|
||||
latitude=self.hass.config.latitude,
|
||||
longitude=self.hass.config.longitude,
|
||||
)
|
||||
|
||||
def _show_config_form(self, name=None, api_key=None, latitude=None, longitude=None):
|
||||
"""Show the configuration form to edit data."""
|
||||
return self.async_show_form(
|
||||
step_id="user",
|
||||
data_schema=vol.Schema(
|
||||
{
|
||||
vol.Required(CONF_API_KEY, default=api_key): str,
|
||||
vol.Required(CONF_API_KEY): str,
|
||||
vol.Optional(
|
||||
CONF_LATITUDE, default=self.hass.config.latitude
|
||||
): cv.latitude,
|
||||
vol.Optional(
|
||||
CONF_LONGITUDE, default=self.hass.config.longitude
|
||||
): cv.longitude,
|
||||
vol.Optional(CONF_NAME, default=name): str,
|
||||
vol.Optional(
|
||||
CONF_NAME, default=self.hass.config.location_name
|
||||
): str,
|
||||
}
|
||||
),
|
||||
errors=self._errors,
|
||||
errors=errors,
|
||||
)
|
||||
|
||||
async def _test_api_key(self, client, api_key):
|
||||
"""Return true if api_key is valid."""
|
||||
|
||||
with async_timeout.timeout(10):
|
||||
airly = Airly(api_key, client)
|
||||
measurements = airly.create_measurements_session_point(
|
||||
latitude=52.24131, longitude=20.99101
|
||||
)
|
||||
try:
|
||||
await measurements.update()
|
||||
except AirlyError:
|
||||
return False
|
||||
return True
|
||||
async def test_location(client, api_key, latitude, longitude):
|
||||
"""Return true if location is valid."""
|
||||
airly = Airly(api_key, client)
|
||||
measurements = airly.create_measurements_session_point(
|
||||
latitude=latitude, longitude=longitude
|
||||
)
|
||||
|
||||
async def _test_location(self, client, api_key, latitude, longitude):
|
||||
"""Return true if location is valid."""
|
||||
with async_timeout.timeout(10):
|
||||
await measurements.update()
|
||||
|
||||
with async_timeout.timeout(10):
|
||||
airly = Airly(api_key, client)
|
||||
measurements = airly.create_measurements_session_point(
|
||||
latitude=latitude, longitude=longitude
|
||||
)
|
||||
current = measurements.current
|
||||
|
||||
await measurements.update()
|
||||
current = measurements.current
|
||||
if current["indexes"][0]["description"] == NO_AIRLY_SENSORS:
|
||||
return False
|
||||
return True
|
||||
if current["indexes"][0]["description"] == NO_AIRLY_SENSORS:
|
||||
return False
|
||||
return True
|
||||
|
|
|
@ -19,5 +19,10 @@
|
|||
"title": "Airly"
|
||||
}
|
||||
}
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "Servidor d'Airly accessible"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -19,5 +19,10 @@
|
|||
"title": "Airly"
|
||||
}
|
||||
}
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "Lze kontaktovat Airly server"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -18,5 +18,10 @@
|
|||
"title": "Airly"
|
||||
}
|
||||
}
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "Airly Server erreichen"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -19,5 +19,10 @@
|
|||
"title": "Airly"
|
||||
}
|
||||
}
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "Alcanzar el servidor Airly"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -22,7 +22,7 @@
|
|||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "\u00dchendu Airly serveriga"
|
||||
"can_reach_server": "\u00dchendus Airly serveriga"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -19,5 +19,10 @@
|
|||
"title": "Airly"
|
||||
}
|
||||
}
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "Acc\u00e8s au serveur Airly"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -19,5 +19,10 @@
|
|||
"title": "Airly"
|
||||
}
|
||||
}
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "Raggiungi il server Airly"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -19,5 +19,10 @@
|
|||
"title": "Airly"
|
||||
}
|
||||
}
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "Airly Server ereechbar"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -19,5 +19,10 @@
|
|||
"title": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "N\u00e5 Airly-serveren"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -19,5 +19,10 @@
|
|||
"title": "Airly"
|
||||
}
|
||||
}
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "Dost\u0119p do serwera Airly"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,11 +1,18 @@
|
|||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "A localiza\u00e7\u00e3o j\u00e1 est\u00e1 configurada"
|
||||
},
|
||||
"error": {
|
||||
"invalid_api_key": "Chave de API inv\u00e1lida"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"api_key": "",
|
||||
"latitude": "Latitude",
|
||||
"longitude": "Longitude"
|
||||
"longitude": "Longitude",
|
||||
"name": "Nome"
|
||||
},
|
||||
"title": ""
|
||||
}
|
||||
|
|
|
@ -19,5 +19,10 @@
|
|||
"title": "Airly"
|
||||
}
|
||||
}
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 Airly"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -18,5 +18,10 @@
|
|||
"title": "Airly"
|
||||
}
|
||||
}
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "Dostop do Airly stre\u017enika"
|
||||
}
|
||||
}
|
||||
}
|
7
homeassistant/components/airly/translations/tr.json
Normal file
7
homeassistant/components/airly/translations/tr.json
Normal file
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "Airly sunucusuna eri\u015fin"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -10,5 +10,10 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "\u53ef\u8bbf\u95ee Airly \u670d\u52a1\u5668"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -19,5 +19,10 @@
|
|||
"title": "Airly"
|
||||
}
|
||||
}
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "\u9023\u7dda Airly \u4f3a\u670d\u5668"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -4,6 +4,7 @@
|
|||
"already_configured": "Diese Koordinaten oder Node/Pro ID sind bereits registriert."
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Verbindungsfehler",
|
||||
"general_error": "Es gab einen unbekannten Fehler.",
|
||||
"invalid_api_key": "Ung\u00fcltiger API-Schl\u00fcssel bereitgestellt."
|
||||
},
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "Plasseringen er allerede konfigurert eller Node / Pro ID er allerede registrert.",
|
||||
"reauth_successful": "Reautentisering var vellykket"
|
||||
"reauth_successful": "Godkjenning p\u00e5 nytt var vellykket"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Tilkobling mislyktes",
|
||||
|
@ -31,7 +31,7 @@
|
|||
"data": {
|
||||
"api_key": "API-n\u00f8kkel"
|
||||
},
|
||||
"title": "Autentiser AirVisual p\u00e5 nytt"
|
||||
"title": "Godkjenne integrering p\u00e5 nytt"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
|
|
|
@ -1,10 +1,32 @@
|
|||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "A localiza\u00e7\u00e3o j\u00e1 est\u00e1 configurada ou Node/Pro ID j\u00e1 est\u00e1 registrado.",
|
||||
"reauth_successful": "Reautentica\u00e7\u00e3o bem sucedida"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Falha na liga\u00e7\u00e3o",
|
||||
"general_error": "Erro inesperado",
|
||||
"invalid_api_key": "Chave de API inv\u00e1lida"
|
||||
},
|
||||
"step": {
|
||||
"geography": {
|
||||
"data": {
|
||||
"api_key": "API Key",
|
||||
"latitude": "Latitude",
|
||||
"longitude": "Longitude"
|
||||
}
|
||||
},
|
||||
"node_pro": {
|
||||
"data": {
|
||||
"ip_address": "Servidor",
|
||||
"password": "Palavra-passe"
|
||||
}
|
||||
},
|
||||
"reauth_confirm": {
|
||||
"data": {
|
||||
"api_key": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
"ip_address": "\u4e3b\u6a5f\u7aef",
|
||||
"password": "\u5bc6\u78bc"
|
||||
},
|
||||
"description": "\u76e3\u63a7\u500b\u4eba AirVisual \u8a2d\u5099\uff0c\u5bc6\u78bc\u53ef\u4ee5\u900f\u904e\u8a2d\u5099 UI \u7372\u5f97\u3002",
|
||||
"description": "\u76e3\u63a7\u500b\u4eba AirVisual \u88dd\u7f6e\uff0c\u5bc6\u78bc\u53ef\u4ee5\u900f\u904e\u88dd\u7f6e UI \u7372\u5f97\u3002",
|
||||
"title": "\u8a2d\u5b9a AirVisual Node/Pro"
|
||||
},
|
||||
"reauth_confirm": {
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"cannot_connect": "Verbindungsfehler"
|
||||
},
|
||||
"step": {
|
||||
"protocol": {
|
||||
"data": {
|
||||
|
|
|
@ -59,14 +59,14 @@
|
|||
"zone_rfid": "RF jada\u00fchendus",
|
||||
"zone_type": "Ala t\u00fc\u00fcp"
|
||||
},
|
||||
"description": "Sisestage ala {zone_number} \u00fcksikasjad. Ala {zone_number} kustutamiseks j\u00e4tke ala nimi t\u00fchjaks.",
|
||||
"description": "Sisesta ala {zone_number} \u00fcksikasjad. Ala {zone_number} kustutamiseks j\u00e4ta ala nimi t\u00fchjaks.",
|
||||
"title": "Seadista AlarmDecoder"
|
||||
},
|
||||
"zone_select": {
|
||||
"data": {
|
||||
"zone_number": "Ala number"
|
||||
},
|
||||
"description": "Sisestage ala number mida soovite lisada, muuta v\u00f5i eemaldada.",
|
||||
"description": "Sisesta ala number mida soovid lisada, muuta v\u00f5i eemaldada.",
|
||||
"title": "Seadista AlarmDecoder"
|
||||
}
|
||||
}
|
||||
|
|
33
homeassistant/components/alarmdecoder/translations/pt.json
Normal file
33
homeassistant/components/alarmdecoder/translations/pt.json
Normal file
|
@ -0,0 +1,33 @@
|
|||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "O dispositivo j\u00e1 est\u00e1 configurado"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Falha na liga\u00e7\u00e3o"
|
||||
},
|
||||
"step": {
|
||||
"protocol": {
|
||||
"data": {
|
||||
"host": "Servidor",
|
||||
"port": "Porta"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"zone_details": {
|
||||
"data": {
|
||||
"zone_name": "Nome da Zona",
|
||||
"zone_type": "Tipo de Zona"
|
||||
}
|
||||
},
|
||||
"zone_select": {
|
||||
"data": {
|
||||
"zone_number": "N\u00famero da Zona"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "\u8a2d\u5099\u5df2\u7d93\u8a2d\u5b9a\u5b8c\u6210"
|
||||
"already_configured": "\u88dd\u7f6e\u7d93\u8a2d\u5b9a\u5b8c\u6210"
|
||||
},
|
||||
"create_entry": {
|
||||
"default": "\u6210\u529f\u9023\u7dda\u81f3 AlarmDecoder\u3002"
|
||||
|
@ -12,8 +12,8 @@
|
|||
"step": {
|
||||
"protocol": {
|
||||
"data": {
|
||||
"device_baudrate": "\u8a2d\u5099\u901a\u8a0a\u7387",
|
||||
"device_path": "\u8a2d\u5099\u8def\u5f91",
|
||||
"device_baudrate": "\u88dd\u7f6e\u901a\u8a0a\u7387",
|
||||
"device_path": "\u88dd\u7f6e\u8def\u5f91",
|
||||
"host": "\u4e3b\u6a5f\u7aef",
|
||||
"port": "\u901a\u8a0a\u57e0"
|
||||
},
|
||||
|
|
|
@ -45,6 +45,11 @@ class AbstractConfig(ABC):
|
|||
"""Return if proactive mode is enabled."""
|
||||
return self._unsub_proactive_report is not None
|
||||
|
||||
@callback
|
||||
@abstractmethod
|
||||
def user_identifier(self):
|
||||
"""Return an identifier for the user that represents this config."""
|
||||
|
||||
async def async_enable_proactive_mode(self):
|
||||
"""Enable proactive mode."""
|
||||
if self._unsub_proactive_report is None:
|
||||
|
|
|
@ -329,7 +329,7 @@ class AlexaEntity:
|
|||
"manufacturer": "Home Assistant",
|
||||
"model": self.entity.domain,
|
||||
"softwareVersion": __version__,
|
||||
"customIdentifier": self.entity_id,
|
||||
"customIdentifier": f"{self.config.user_identifier()}-{self.entity_id}",
|
||||
},
|
||||
}
|
||||
|
||||
|
|
|
@ -53,6 +53,11 @@ class AlexaConfig(AbstractConfig):
|
|||
"""Return config locale."""
|
||||
return self._config.get(CONF_LOCALE)
|
||||
|
||||
@core.callback
|
||||
def user_identifier(self):
|
||||
"""Return an identifier for the user that represents this config."""
|
||||
return ""
|
||||
|
||||
def should_expose(self, entity_id):
|
||||
"""If an entity should be exposed."""
|
||||
return self._config[CONF_FILTER](entity_id)
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"config": {
|
||||
"abort": {
|
||||
"cannot_connect": "Tilkobling mislyktes",
|
||||
"missing_configuration": "Komponenten er ikke konfigurert. Vennligst f\u00f8lg dokumentasjonen.",
|
||||
"missing_configuration": "Komponenten er ikke konfigurert, vennligst f\u00f8lg dokumentasjonen",
|
||||
"no_url_available": "Ingen URL tilgjengelig. For informasjon om denne feilen, [sjekk hjelpseksjonen]({docs_url})",
|
||||
"single_instance_allowed": "Allerede konfigurert. Bare \u00e9n enkelt konfigurasjon er mulig."
|
||||
},
|
||||
|
|
|
@ -1,5 +1,11 @@
|
|||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"cannot_connect": "Falha na liga\u00e7\u00e3o",
|
||||
"missing_configuration": "O componente n\u00e3o est\u00e1 configurado. Por favor, siga a documenta\u00e7\u00e3o.",
|
||||
"no_url_available": "Nenhum URL dispon\u00edvel. Para obter informa\u00e7\u00f5es sobre esse erro, [verifique a sec\u00e7\u00e3o de ajuda]({docs_url})",
|
||||
"single_instance_allowed": "J\u00e1 configurado. Apenas uma \u00fanica configura\u00e7\u00e3o \u00e9 poss\u00edvel."
|
||||
},
|
||||
"step": {
|
||||
"pick_implementation": {
|
||||
"title": "Escolha o m\u00e9todo de autentica\u00e7\u00e3o"
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
"cannot_connect": "\u9023\u7dda\u5931\u6557",
|
||||
"missing_configuration": "\u5143\u4ef6\u5c1a\u672a\u8a2d\u7f6e\uff0c\u8acb\u53c3\u95b1\u6587\u4ef6\u8aaa\u660e\u3002",
|
||||
"no_url_available": "\u6c92\u6709\u53ef\u7528\u7684\u7db2\u5740\u3002\u95dc\u65bc\u6b64\u932f\u8aa4\u66f4\u8a73\u7d30\u8a0a\u606f\uff0c[\u9ede\u9078\u5354\u52a9\u7ae0\u7bc0]({docs_url})",
|
||||
"single_instance_allowed": "\u50c5\u80fd\u8a2d\u5b9a\u4e00\u7d44\u8a2d\u5099\u3002"
|
||||
"single_instance_allowed": "\u50c5\u80fd\u8a2d\u5b9a\u4e00\u7d44\u88dd\u7f6e\u3002"
|
||||
},
|
||||
"step": {
|
||||
"hassio_confirm": {
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
import logging
|
||||
|
||||
import boto3
|
||||
import botocore
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.components.tts import PLATFORM_SCHEMA, Provider
|
||||
|
@ -41,6 +42,7 @@ CONF_SAMPLE_RATE = "sample_rate"
|
|||
CONF_TEXT_TYPE = "text_type"
|
||||
|
||||
SUPPORTED_VOICES = [
|
||||
"Olivia", # Female, Australian, Neural
|
||||
"Zhiyu", # Chinese
|
||||
"Mads",
|
||||
"Naja", # Danish
|
||||
|
@ -125,6 +127,10 @@ DEFAULT_TEXT_TYPE = "text"
|
|||
|
||||
DEFAULT_SAMPLE_RATES = {"mp3": "22050", "ogg_vorbis": "22050", "pcm": "16000"}
|
||||
|
||||
AWS_CONF_CONNECT_TIMEOUT = 10
|
||||
AWS_CONF_READ_TIMEOUT = 5
|
||||
AWS_CONF_MAX_POOL_CONNECTIONS = 1
|
||||
|
||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
|
||||
{
|
||||
vol.Optional(CONF_REGION, default=DEFAULT_REGION): vol.In(SUPPORTED_REGIONS),
|
||||
|
@ -167,6 +173,11 @@ def get_engine(hass, config, discovery_info=None):
|
|||
CONF_REGION: config[CONF_REGION],
|
||||
CONF_ACCESS_KEY_ID: config.get(CONF_ACCESS_KEY_ID),
|
||||
CONF_SECRET_ACCESS_KEY: config.get(CONF_SECRET_ACCESS_KEY),
|
||||
"config": botocore.config.Config(
|
||||
connect_timeout=AWS_CONF_CONNECT_TIMEOUT,
|
||||
read_timeout=AWS_CONF_READ_TIMEOUT,
|
||||
max_pool_connections=AWS_CONF_MAX_POOL_CONNECTIONS,
|
||||
),
|
||||
}
|
||||
|
||||
del config[CONF_REGION]
|
||||
|
@ -229,6 +240,7 @@ class AmazonPollyProvider(Provider):
|
|||
_LOGGER.error("%s does not support the %s language", voice_id, language)
|
||||
return None, None
|
||||
|
||||
_LOGGER.debug("Requesting TTS file for text: %s", message)
|
||||
resp = self.client.synthesize_speech(
|
||||
Engine=self.config[CONF_ENGINE],
|
||||
OutputFormat=self.config[CONF_OUTPUT_FORMAT],
|
||||
|
@ -238,6 +250,7 @@ class AmazonPollyProvider(Provider):
|
|||
VoiceId=voice_id,
|
||||
)
|
||||
|
||||
_LOGGER.debug("Reply received for TTS: %s", message)
|
||||
return (
|
||||
CONTENT_TYPE_EXTENSIONS[resp.get("ContentType")],
|
||||
resp.get("AudioStream").read(),
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
"abort": {
|
||||
"access_token": "Ukjent feil ved oppretting av tilgangstoken.",
|
||||
"already_configured": "Kontoen er allerede konfigurert",
|
||||
"missing_configuration": "Komponenten er ikke konfigurert. Vennligst f\u00f8lg dokumentasjonen."
|
||||
"missing_configuration": "Komponenten er ikke konfigurert, vennligst f\u00f8lg dokumentasjonen"
|
||||
},
|
||||
"create_entry": {
|
||||
"default": "Vellykket godkjenning"
|
||||
|
|
11
homeassistant/components/ambiclimate/translations/pt.json
Normal file
11
homeassistant/components/ambiclimate/translations/pt.json
Normal file
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "Conta j\u00e1 configurada",
|
||||
"missing_configuration": "O componente n\u00e3o est\u00e1 configurado. Por favor, siga a documenta\u00e7\u00e3o."
|
||||
},
|
||||
"create_entry": {
|
||||
"default": "Autenticado com sucesso"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,5 +1,8 @@
|
|||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "O servi\u00e7o j\u00e1 est\u00e1 configurado"
|
||||
},
|
||||
"error": {
|
||||
"invalid_key": "Chave de API e/ou chave de aplica\u00e7\u00e3o inv\u00e1lidas",
|
||||
"no_devices": "Nenhum dispositivo encontrado na conta"
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
},
|
||||
"error": {
|
||||
"invalid_key": "API \u5bc6\u9470\u7121\u6548",
|
||||
"no_devices": "\u5e33\u865f\u4e2d\u627e\u4e0d\u5230\u4efb\u4f55\u8a2d\u5099"
|
||||
"no_devices": "\u5e33\u865f\u4e2d\u627e\u4e0d\u5230\u4efb\u4f55\u88dd\u7f6e"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
"documentation": "https://www.home-assistant.io/integrations/androidtv",
|
||||
"requirements": [
|
||||
"adb-shell[async]==0.2.1",
|
||||
"androidtv[async]==0.0.56",
|
||||
"androidtv[async]==0.0.57",
|
||||
"pure-python-adb[async]==0.3.0.dev0"
|
||||
],
|
||||
"codeowners": ["@JeffLIrion"]
|
||||
|
|
|
@ -15,6 +15,7 @@ from homeassistant.const import (
|
|||
EVENT_HOMEASSISTANT_STOP,
|
||||
)
|
||||
from homeassistant.core import callback
|
||||
from homeassistant.helpers import device_registry as dr
|
||||
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
||||
from homeassistant.helpers.dispatcher import (
|
||||
async_dispatcher_connect,
|
||||
|
@ -135,15 +136,6 @@ class AppleTVEntity(Entity):
|
|||
def async_device_disconnected(self):
|
||||
"""Handle when connection was lost to device."""
|
||||
|
||||
@property
|
||||
def device_info(self):
|
||||
"""Return the device info."""
|
||||
return {
|
||||
"identifiers": {(DOMAIN, self._identifier)},
|
||||
"manufacturer": "Apple",
|
||||
"name": self.name,
|
||||
}
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
"""Return the name of the device."""
|
||||
|
@ -337,6 +329,8 @@ class AppleTVManager:
|
|||
self._dispatch_send(SIGNAL_CONNECTED, self.atv)
|
||||
self._address_updated(str(conf.address))
|
||||
|
||||
await self._async_setup_device_registry()
|
||||
|
||||
self._connection_attempts = 0
|
||||
if self._connection_was_lost:
|
||||
_LOGGER.info(
|
||||
|
@ -344,6 +338,27 @@ class AppleTVManager:
|
|||
)
|
||||
self._connection_was_lost = False
|
||||
|
||||
async def _async_setup_device_registry(self):
|
||||
attrs = {
|
||||
"identifiers": {(DOMAIN, self.config_entry.unique_id)},
|
||||
"manufacturer": "Apple",
|
||||
"name": self.config_entry.data[CONF_NAME],
|
||||
}
|
||||
|
||||
if self.atv:
|
||||
dev_info = self.atv.device_info
|
||||
|
||||
attrs["model"] = "Apple TV " + dev_info.model.name.replace("Gen", "")
|
||||
attrs["sw_version"] = dev_info.version
|
||||
|
||||
if dev_info.mac:
|
||||
attrs["connections"] = {(dr.CONNECTION_NETWORK_MAC, dev_info.mac)}
|
||||
|
||||
device_registry = await dr.async_get_registry(self.hass)
|
||||
device_registry.async_get_or_create(
|
||||
config_entry_id=self.config_entry.entry_id, **attrs
|
||||
)
|
||||
|
||||
@property
|
||||
def is_connecting(self):
|
||||
"""Return true if connection is in progress."""
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
"""Support for Apple TV media player."""
|
||||
import logging
|
||||
|
||||
from pyatv.const import DeviceState, MediaType
|
||||
from pyatv.const import DeviceState, FeatureName, FeatureState, MediaType
|
||||
|
||||
from homeassistant.components.media_player import MediaPlayerEntity
|
||||
from homeassistant.components.media_player.const import (
|
||||
|
@ -107,6 +107,22 @@ class AppleTvMediaPlayer(AppleTVEntity, MediaPlayerEntity):
|
|||
self._playing = None
|
||||
self.async_write_ha_state()
|
||||
|
||||
@property
|
||||
def app_id(self):
|
||||
"""ID of the current running app."""
|
||||
if self.atv:
|
||||
if self.atv.features.in_state(FeatureState.Available, FeatureName.App):
|
||||
return self.atv.metadata.app.identifier
|
||||
return None
|
||||
|
||||
@property
|
||||
def app_name(self):
|
||||
"""Name of the current running app."""
|
||||
if self.atv:
|
||||
if self.atv.features.in_state(FeatureState.Available, FeatureName.App):
|
||||
return self.atv.metadata.app.name
|
||||
return None
|
||||
|
||||
@property
|
||||
def media_content_type(self):
|
||||
"""Content type of current playing media."""
|
||||
|
@ -168,11 +184,31 @@ class AppleTvMediaPlayer(AppleTVEntity, MediaPlayerEntity):
|
|||
return self._playing.title
|
||||
return None
|
||||
|
||||
@property
|
||||
def media_artist(self):
|
||||
"""Artist of current playing media, music track only."""
|
||||
if self._is_feature_available(FeatureName.Artist):
|
||||
return self._playing.artist
|
||||
return None
|
||||
|
||||
@property
|
||||
def media_album_name(self):
|
||||
"""Album name of current playing media, music track only."""
|
||||
if self._is_feature_available(FeatureName.Album):
|
||||
return self._playing.album
|
||||
return None
|
||||
|
||||
@property
|
||||
def supported_features(self):
|
||||
"""Flag media player features that are supported."""
|
||||
return SUPPORT_APPLE_TV
|
||||
|
||||
def _is_feature_available(self, feature):
|
||||
"""Return if a feature is available."""
|
||||
if self.atv and self._playing:
|
||||
return self.atv.features.in_state(FeatureState.Available, feature)
|
||||
return False
|
||||
|
||||
async def async_turn_on(self):
|
||||
"""Turn the media player on."""
|
||||
await self.manager.connect()
|
||||
|
|
64
homeassistant/components/apple_tv/translations/ca.json
Normal file
64
homeassistant/components/apple_tv/translations/ca.json
Normal file
|
@ -0,0 +1,64 @@
|
|||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured_device": "El dispositiu ja est\u00e0 configurat",
|
||||
"already_in_progress": "El flux de configuraci\u00f3 ja est\u00e0 en curs",
|
||||
"backoff": "En aquests moments el dispositiu no accepta sol\u00b7licituds de vinculaci\u00f3 (\u00e9s possible que hagis introdu\u00eft un codi PIN inv\u00e0lid massa vegades), torna-ho a provar m\u00e9s tard.",
|
||||
"device_did_not_pair": "No s'ha fet cap intent d'acabar el proc\u00e9s de vinculaci\u00f3 des del dispositiu.",
|
||||
"invalid_config": "La configuraci\u00f3 d'aquest dispositiu no est\u00e0 completa. Intenta'l tornar a afegir.",
|
||||
"no_devices_found": "No s'han trobat dispositius a la xarxa",
|
||||
"unknown": "Error inesperat"
|
||||
},
|
||||
"error": {
|
||||
"already_configured": "El dispositiu ja est\u00e0 configurat",
|
||||
"invalid_auth": "Autenticaci\u00f3 inv\u00e0lida",
|
||||
"no_devices_found": "No s'han trobat dispositius a la xarxa",
|
||||
"no_usable_service": "S'ha trobat un dispositiu per\u00f2 no ha pogut identificar cap manera d'establir-hi una connexi\u00f3. Si continues veient aquest missatge, prova d'especificar-ne l'adre\u00e7a IP o reinicia l'Apple TV.",
|
||||
"unknown": "Error inesperat"
|
||||
},
|
||||
"flow_title": "Apple TV: {name}",
|
||||
"step": {
|
||||
"confirm": {
|
||||
"description": "Est\u00e0s a punt d'afegir l'Apple TV amb nom \"{name}\" a Home Assistant.\n\n **Per completar el proc\u00e9s, \u00e9s possible que hagis d'introduir alguns codis PIN.** \n\n Tingues en compte que *no* pots apagar la teva Apple TV a trav\u00e9s d'aquesta integraci\u00f3. Nom\u00e9s es desactivar\u00e0 el reproductor de Home Assistant.",
|
||||
"title": "Confirma l'addici\u00f3 de l'Apple TV"
|
||||
},
|
||||
"pair_no_pin": {
|
||||
"description": "Vinculaci\u00f3 necess\u00e0ria amb el servei `{protocol}`. Per continuar, introdueix el PIN {pin} a la teva Apple TV.",
|
||||
"title": "Vinculaci\u00f3"
|
||||
},
|
||||
"pair_with_pin": {
|
||||
"data": {
|
||||
"pin": "Codi PIN"
|
||||
},
|
||||
"description": "Amb el protocol \"{protocol}\" \u00e9s necess\u00e0ria la vinculaci\u00f3. Introdueix el codi PIN que es mostra en pantalla. Els zeros a l'inici, si n'hi ha, s'han d'ometre; per exemple: introdueix 123 si el codi mostrat \u00e9s 0123.",
|
||||
"title": "Vinculaci\u00f3"
|
||||
},
|
||||
"reconfigure": {
|
||||
"description": "Aquesta Apple TV est\u00e0 tenint problemes de connexi\u00f3 i s'ha de tornar a configurar.",
|
||||
"title": "Reconfiguraci\u00f3 de dispositiu"
|
||||
},
|
||||
"service_problem": {
|
||||
"description": "S'ha produ\u00eft un problema en la vinculaci\u00f3 protocol \"{protocol}\". S'ignorar\u00e0.",
|
||||
"title": "No s'ha pogut afegir el servei"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"device_input": "Dispositiu"
|
||||
},
|
||||
"description": "Comen\u00e7a introduint el nom del dispositiu (per exemple, cuina o dormitori) o l'adre\u00e7a IP de l'Apple TV que vulguis afegir. Si autom\u00e0ticament es troben dispositius a la teva xarxa, es mostra a continuaci\u00f3. \n\n Si no veus el teu dispositiu o tens problemes, prova d'especificar l'adre\u00e7a IP del dispositiu. \n\n {devices}",
|
||||
"title": "Configuraci\u00f3 d'una nova Apple TV"
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"init": {
|
||||
"data": {
|
||||
"start_off": "No engeguis el dispositiu en iniciar Home Assistant"
|
||||
},
|
||||
"description": "Configuraci\u00f3 dels par\u00e0metres generals del dispositiu"
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "Apple TV"
|
||||
}
|
60
homeassistant/components/apple_tv/translations/cs.json
Normal file
60
homeassistant/components/apple_tv/translations/cs.json
Normal file
|
@ -0,0 +1,60 @@
|
|||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured_device": "Za\u0159\u00edzen\u00ed je ji\u017e nastaveno",
|
||||
"already_in_progress": "Konfigurace ji\u017e prob\u00edh\u00e1",
|
||||
"invalid_config": "Nastaven\u00ed tohoto za\u0159\u00edzen\u00ed je ne\u00fapln\u00e9. Zkuste jej p\u0159idat znovu.",
|
||||
"no_devices_found": "V s\u00edti nebyla nalezena \u017e\u00e1dn\u00e1 za\u0159\u00edzen\u00ed",
|
||||
"unknown": "Neo\u010dek\u00e1van\u00e1 chyba"
|
||||
},
|
||||
"error": {
|
||||
"already_configured": "Za\u0159\u00edzen\u00ed je ji\u017e nastaveno",
|
||||
"invalid_auth": "Neplatn\u00e9 ov\u011b\u0159en\u00ed",
|
||||
"no_devices_found": "V s\u00edti nebyla nalezena \u017e\u00e1dn\u00e1 za\u0159\u00edzen\u00ed",
|
||||
"unknown": "Neo\u010dek\u00e1van\u00e1 chyba"
|
||||
},
|
||||
"flow_title": "Apple TV: {name}",
|
||||
"step": {
|
||||
"confirm": {
|
||||
"title": "Potvrzen\u00ed p\u0159id\u00e1n\u00ed Apple TV"
|
||||
},
|
||||
"pair_no_pin": {
|
||||
"description": "Pro slu\u017ebu `{protocol}` je vy\u017eadov\u00e1no p\u00e1rov\u00e1n\u00ed. Pokra\u010dujte zad\u00e1n\u00edm k\u00f3du PIN {pin} na Apple TV.",
|
||||
"title": "P\u00e1rov\u00e1n\u00ed"
|
||||
},
|
||||
"pair_with_pin": {
|
||||
"data": {
|
||||
"pin": "PIN k\u00f3d"
|
||||
},
|
||||
"description": "U protokolu `{protocol}` je vy\u017eadov\u00e1no p\u00e1rov\u00e1n\u00ed. Zadejte pros\u00edm PIN k\u00f3d zobrazen\u00fd na obrazovce. \u00davodn\u00ed nuly mus\u00ed b\u00fdt vynech\u00e1ny, tj. zadejte 123, pokud je zobrazen\u00fd k\u00f3d 0123.",
|
||||
"title": "P\u00e1rov\u00e1n\u00ed"
|
||||
},
|
||||
"reconfigure": {
|
||||
"description": "U t\u00e9to Apple TV doch\u00e1z\u00ed k probl\u00e9m\u016fm s p\u0159ipojen\u00edm a je t\u0159eba ji znovu nastavit.",
|
||||
"title": "Zm\u011bna konfigurace za\u0159\u00edzen\u00ed"
|
||||
},
|
||||
"service_problem": {
|
||||
"description": "P\u0159i p\u00e1rov\u00e1n\u00ed protokolu `{protocol}` do\u0161lo k probl\u00e9mu. Protokol bude ignorov\u00e1n.",
|
||||
"title": "Nepoda\u0159ilo se p\u0159idat slu\u017ebu"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"device_input": "Za\u0159\u00edzen\u00ed"
|
||||
},
|
||||
"description": "Za\u010dn\u011bte zad\u00e1n\u00edm n\u00e1zvu za\u0159\u00edzen\u00ed (nap\u0159. Kuchyn\u011b nebo lo\u017enice) nebo IP adresy Apple TV, kterou chcete p\u0159idat. Pokud byla ve va\u0161\u00ed s\u00edti automaticky nalezena n\u011bkter\u00e1 za\u0159\u00edzen\u00ed, jsou uvedena n\u00ed\u017ee. \n\n Pokud nevid\u00edte sv\u00e9 za\u0159\u00edzen\u00ed nebo nastaly n\u011bjak\u00e9 probl\u00e9my, zkuste zadat IP adresu za\u0159\u00edzen\u00ed. \n\n {devices}",
|
||||
"title": "Nastaven\u00ed nov\u00e9 Apple TV"
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"init": {
|
||||
"data": {
|
||||
"start_off": "Nezap\u00ednejte za\u0159\u00edzen\u00ed dokud se Home Assistant spou\u0161t\u00ed"
|
||||
},
|
||||
"description": "Konfigurace obecn\u00fdch mo\u017enost\u00ed za\u0159\u00edzen\u00ed"
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "Apple TV"
|
||||
}
|
64
homeassistant/components/apple_tv/translations/de.json
Normal file
64
homeassistant/components/apple_tv/translations/de.json
Normal file
|
@ -0,0 +1,64 @@
|
|||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured_device": "Ger\u00e4t ist bereits konfiguriert",
|
||||
"already_in_progress": "Der Konfigurationsablauf wird bereits ausgef\u00fchrt",
|
||||
"backoff": "Das Ger\u00e4t akzeptiert derzeit keine Kopplungsanfragen (M\u00f6glicherweise wurde zu oft ein ung\u00fcltiger PIN-Code eingegeben), versuche es sp\u00e4ter erneut.",
|
||||
"device_did_not_pair": "Es wurde kein Versuch unternommen, den Kopplungsvorgang vom Ger\u00e4t aus abzuschlie\u00dfen.",
|
||||
"invalid_config": "Die Konfiguration f\u00fcr dieses Ger\u00e4t ist unvollst\u00e4ndig. Bitte versuche, es erneut hinzuzuf\u00fcgen.",
|
||||
"no_devices_found": "Keine Ger\u00e4te im Netzwerk gefunden",
|
||||
"unknown": "Unerwarteter Fehler"
|
||||
},
|
||||
"error": {
|
||||
"already_configured": "Ger\u00e4t ist bereits konfiguriert",
|
||||
"invalid_auth": "Ung\u00fcltige Authentifizierung",
|
||||
"no_devices_found": "Keine Ger\u00e4te im Netzwerk gefunden",
|
||||
"no_usable_service": "Es wurde ein Ger\u00e4t gefunden, aber es konnte keine M\u00f6glichkeit gefunden werden, eine Verbindung zu diesem Ger\u00e4t herzustellen. Wenn diese Meldung weiterhin erscheint, versuche, die IP-Adresse anzugeben oder den Apple TV neu zu starten.",
|
||||
"unknown": "Unerwarteter Fehler"
|
||||
},
|
||||
"flow_title": "Apple TV: {name}",
|
||||
"step": {
|
||||
"confirm": {
|
||||
"description": "Es wird der Apple TV mit dem Namen \" {name} \" zu Home Assistant hinzugef\u00fcgt. \n\n ** Um den Vorgang abzuschlie\u00dfen, m\u00fcssen m\u00f6glicherweise mehrere PIN-Codes eingegeben werden. ** \n\n Bitte beachte, dass der Apple TV mit dieser Integration * nicht * ausgeschalten werden kann. Nur der Media Player in Home Assistant wird ausgeschaltet!",
|
||||
"title": "Best\u00e4tige das Hinzuf\u00fcgen vom Apple TV"
|
||||
},
|
||||
"pair_no_pin": {
|
||||
"description": "F\u00fcr den Dienst `{protocol}` ist eine Kopplung erforderlich. Bitte gebe die PIN {pin} am Apple TV ein, um fortzufahren.",
|
||||
"title": "Kopplung"
|
||||
},
|
||||
"pair_with_pin": {
|
||||
"data": {
|
||||
"pin": "PIN-Code"
|
||||
},
|
||||
"description": "F\u00fcr das Protokoll `{protocol}` ist eine Kopplung erforderlich. Bitte gebe den auf dem Bildschirm angezeigten PIN-Code ein. F\u00fchrende Nullen m\u00fcssen weggelassen werden, d.h. gebe 123 ein, wenn der angezeigte Code 0123 lautet.",
|
||||
"title": "Kopplung"
|
||||
},
|
||||
"reconfigure": {
|
||||
"description": "Dieser Apple TV hat Verbindungsprobleme und muss neu konfiguriert werden.",
|
||||
"title": "Ger\u00e4teneukonfiguration"
|
||||
},
|
||||
"service_problem": {
|
||||
"description": "Beim Koppeln des Protokolls `{protocol}` ist ein Problem aufgetreten. Es wird ignoriert.",
|
||||
"title": "Fehler beim Hinzuf\u00fcgen des Dienstes"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"device_input": "Ger\u00e4t"
|
||||
},
|
||||
"description": "Gebe zun\u00e4chst den Ger\u00e4tenamen (z. B. K\u00fcche oder Schlafzimmer) oder die IP-Adresse des Apple TV ein, der hinzugef\u00fcgt werden soll. Wenn Ger\u00e4te automatisch im Netzwerk gefunden wurden, werden sie unten angezeigt. \n\nWenn das Ger\u00e4t nicht sichtbar ist oder Probleme auftreten, gebe die IP-Adresse des Ger\u00e4ts an. \n\n{devices}",
|
||||
"title": "Neuen Apple TV einrichten"
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"init": {
|
||||
"data": {
|
||||
"start_off": "Schalte das Ger\u00e4t nicht ein, wenn Home Assistant startet"
|
||||
},
|
||||
"description": "Konfiguriere die allgemeinen Ger\u00e4teeinstellungen"
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "Apple TV"
|
||||
}
|
64
homeassistant/components/apple_tv/translations/es.json
Normal file
64
homeassistant/components/apple_tv/translations/es.json
Normal file
|
@ -0,0 +1,64 @@
|
|||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured_device": "El dispositivo ya est\u00e1 configurado",
|
||||
"already_in_progress": "El flujo de configuraci\u00f3n ya est\u00e1 en proceso",
|
||||
"backoff": "El dispositivo no acepta solicitudes de emparejamiento en este momento (es posible que hayas introducido un c\u00f3digo PIN no v\u00e1lido demasiadas veces), int\u00e9ntalo de nuevo m\u00e1s tarde.",
|
||||
"device_did_not_pair": "No se ha intentado finalizar el proceso de emparejamiento desde el dispositivo.",
|
||||
"invalid_config": "La configuraci\u00f3n para este dispositivo est\u00e1 incompleta. Intenta a\u00f1adirlo de nuevo.",
|
||||
"no_devices_found": "No se encontraron dispositivos en la red",
|
||||
"unknown": "Error inesperado"
|
||||
},
|
||||
"error": {
|
||||
"already_configured": "El dispositivo ya est\u00e1 configurado",
|
||||
"invalid_auth": "Autenticaci\u00f3n no v\u00e1lida",
|
||||
"no_devices_found": "No se encontraron dispositivos en la red",
|
||||
"no_usable_service": "Se encontr\u00f3 un dispositivo, pero no se pudo identificar ninguna manera de establecer una conexi\u00f3n con \u00e9l. Si sigues viendo este mensaje, intenta especificar su direcci\u00f3n IP o reiniciar el Apple TV.",
|
||||
"unknown": "Error inesperado"
|
||||
},
|
||||
"flow_title": "Apple TV: {name}",
|
||||
"step": {
|
||||
"confirm": {
|
||||
"description": "Est\u00e1s a punto de a\u00f1adir el Apple TV con nombre `{name}` a Home Assistant.\n\n**Para completar el proceso, puede que tengas que introducir varios c\u00f3digos PIN.**\n\nTen en cuenta que *no* podr\u00e1s apagar tu Apple TV con esta integraci\u00f3n. \u00a1S\u00f3lo se apagar\u00e1 el reproductor de medios de Home Assistant!",
|
||||
"title": "Confirma la adici\u00f3n del Apple TV"
|
||||
},
|
||||
"pair_no_pin": {
|
||||
"description": "El emparejamiento es necesario para el servicio `{protocol}`. Introduce el PIN en tu Apple TV para continuar.",
|
||||
"title": "Emparejamiento"
|
||||
},
|
||||
"pair_with_pin": {
|
||||
"data": {
|
||||
"pin": "C\u00f3digo PIN"
|
||||
},
|
||||
"description": "El emparejamiento es necesario para el protocolo `{protocol}`. Introduce el c\u00f3digo PIN que aparece en la pantalla. Los ceros iniciales deben ser omitidos, es decir, introduce 123 si el c\u00f3digo mostrado es 0123.",
|
||||
"title": "Emparejamiento"
|
||||
},
|
||||
"reconfigure": {
|
||||
"description": "Este Apple TV est\u00e1 experimentando algunos problemas de conexi\u00f3n y debe ser reconfigurado.",
|
||||
"title": "Reconfiguraci\u00f3n del dispositivo"
|
||||
},
|
||||
"service_problem": {
|
||||
"description": "Se ha producido un problema durante el protocolo de emparejamiento `{protocol}`. Ser\u00e1 ignorado.",
|
||||
"title": "Error al a\u00f1adir el servicio"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"device_input": "Dispositivo"
|
||||
},
|
||||
"description": "Empieza introduciendo el nombre del dispositivo (eje. Cocina o Dormitorio) o la direcci\u00f3n IP del Apple TV que quieres a\u00f1adir. Si se han econtrado dispositivos en tu red, se mostrar\u00e1n a continuaci\u00f3n.\n\nSi no puedes ver el dispositivo o experimentas alg\u00fan problema, intente especificar la direcci\u00f3n IP del dispositivo.\n\n{devices}",
|
||||
"title": "Configurar un nuevo Apple TV"
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"init": {
|
||||
"data": {
|
||||
"start_off": "No encender el dispositivo al iniciar Home Assistant"
|
||||
},
|
||||
"description": "Configurar los ajustes generales del dispositivo"
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "Apple TV"
|
||||
}
|
51
homeassistant/components/apple_tv/translations/fr.json
Normal file
51
homeassistant/components/apple_tv/translations/fr.json
Normal file
|
@ -0,0 +1,51 @@
|
|||
{
|
||||
"config": {
|
||||
"error": {
|
||||
"already_configured": "L'appareil est d\u00e9j\u00e0 configur\u00e9",
|
||||
"no_devices_found": "Aucun appareil d\u00e9tect\u00e9 sur le r\u00e9seau",
|
||||
"no_usable_service": "Un dispositif a \u00e9t\u00e9 trouv\u00e9, mais aucun moyen d\u2019\u00e9tablir un lien avec lui. Si vous continuez \u00e0 voir ce message, essayez de sp\u00e9cifier son adresse IP ou de red\u00e9marrer votre Apple TV.",
|
||||
"unknown": "Erreur innatendue"
|
||||
},
|
||||
"flow_title": "Apple TV: {name}",
|
||||
"step": {
|
||||
"confirm": {
|
||||
"description": "Vous \u00eates sur le point d'ajouter l'Apple TV nomm\u00e9e \u00ab {name} \u00bb \u00e0 Home Assistant. \n\n **Pour terminer le processus, vous devrez peut-\u00eatre saisir plusieurs codes PIN.** \n\n Veuillez noter que vous ne pourrez *pas* \u00e9teindre votre Apple TV avec cette int\u00e9gration. Seul le lecteur multim\u00e9dia de Home Assistant s'\u00e9teint!",
|
||||
"title": "Confirmer l'ajout d'Apple TV"
|
||||
},
|
||||
"pair_no_pin": {
|
||||
"description": "L'appairage est requis pour le service ` {protocol} `. Veuillez saisir le code PIN {pin} sur votre Apple TV pour continuer.",
|
||||
"title": "Appairage"
|
||||
},
|
||||
"pair_with_pin": {
|
||||
"data": {
|
||||
"pin": "Code PIN"
|
||||
}
|
||||
},
|
||||
"reconfigure": {
|
||||
"title": "Reconfiguration de l'appareil"
|
||||
},
|
||||
"service_problem": {
|
||||
"description": "Un probl\u00e8me est survenu lors du couplage du protocole \u00ab {protocol} \u00bb. Il sera ignor\u00e9.",
|
||||
"title": "\u00c9chec de l'ajout du service"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"device_input": "Appareil"
|
||||
},
|
||||
"description": "Commencez par entrer le nom de l'appareil (par exemple, Cuisine ou Chambre) ou l'adresse IP de l'Apple TV que vous souhaitez ajouter. Si des appareils ont \u00e9t\u00e9 d\u00e9tect\u00e9s automatiquement sur votre r\u00e9seau, ils sont affich\u00e9s ci-dessous. \n\n Si vous ne voyez pas votre appareil ou rencontrez des probl\u00e8mes, essayez de sp\u00e9cifier l'adresse IP de l'appareil. \n\n {devices}",
|
||||
"title": "Configurer une nouvelle Apple TV"
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"init": {
|
||||
"data": {
|
||||
"start_off": "N'allumez pas l'appareil lors du d\u00e9marrage de Home Assistant"
|
||||
},
|
||||
"description": "Configurer les param\u00e8tres g\u00e9n\u00e9raux de l'appareil"
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "Apple TV"
|
||||
}
|
41
homeassistant/components/apple_tv/translations/hu.json
Normal file
41
homeassistant/components/apple_tv/translations/hu.json
Normal file
|
@ -0,0 +1,41 @@
|
|||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"no_devices_found": "Nincs eszk\u00f6z a h\u00e1l\u00f3zaton",
|
||||
"unknown": "V\u00e1ratlan hiba"
|
||||
},
|
||||
"error": {
|
||||
"already_configured": "Az eszk\u00f6z m\u00e1r konfigur\u00e1lva van",
|
||||
"invalid_auth": "Azonos\u00edt\u00e1s nem siker\u00fclt",
|
||||
"no_devices_found": "Nem tal\u00e1lhat\u00f3 eszk\u00f6z a h\u00e1l\u00f3zaton",
|
||||
"unknown": "V\u00e1ratlan hiba"
|
||||
},
|
||||
"step": {
|
||||
"confirm": {
|
||||
"title": "Apple TV sikeresen hozz\u00e1adva"
|
||||
},
|
||||
"pair_no_pin": {
|
||||
"title": "P\u00e1ros\u00edt\u00e1s"
|
||||
},
|
||||
"pair_with_pin": {
|
||||
"data": {
|
||||
"pin": "PIN K\u00f3d"
|
||||
},
|
||||
"title": "P\u00e1ros\u00edt\u00e1s"
|
||||
},
|
||||
"reconfigure": {
|
||||
"title": "Eszk\u00f6z \u00fajrakonfigur\u00e1l\u00e1sa"
|
||||
},
|
||||
"service_problem": {
|
||||
"title": "Nem siker\u00fclt hozz\u00e1adni a szolg\u00e1ltat\u00e1st"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"device_input": "Eszk\u00f6z"
|
||||
},
|
||||
"title": "\u00daj Apple TV be\u00e1ll\u00edt\u00e1sa"
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "Apple TV"
|
||||
}
|
64
homeassistant/components/apple_tv/translations/it.json
Normal file
64
homeassistant/components/apple_tv/translations/it.json
Normal file
|
@ -0,0 +1,64 @@
|
|||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured_device": "Il dispositivo \u00e8 gi\u00e0 configurato",
|
||||
"already_in_progress": "Il flusso di configurazione \u00e8 gi\u00e0 in corso",
|
||||
"backoff": "Il dispositivo non accetta richieste di abbinamento in questo momento (potresti aver inserito un codice PIN non valido troppe volte), riprova pi\u00f9 tardi.",
|
||||
"device_did_not_pair": "Nessun tentativo di completare il processo di abbinamento \u00e8 stato effettuato dal dispositivo.",
|
||||
"invalid_config": "La configurazione per questo dispositivo \u00e8 incompleta. Prova ad aggiungerlo di nuovo.",
|
||||
"no_devices_found": "Nessun dispositivo trovato sulla rete",
|
||||
"unknown": "Errore imprevisto"
|
||||
},
|
||||
"error": {
|
||||
"already_configured": "Il dispositivo \u00e8 gi\u00e0 configurato",
|
||||
"invalid_auth": "Autenticazione non valida",
|
||||
"no_devices_found": "Nessun dispositivo trovato sulla rete",
|
||||
"no_usable_service": "\u00c8 stato trovato un dispositivo ma non \u00e8 stato possibile identificare alcun modo per stabilire una connessione ad esso. Se continui a vedere questo messaggio, prova a specificarne l'indirizzo IP o a riavviare l'Apple TV.",
|
||||
"unknown": "Errore imprevisto"
|
||||
},
|
||||
"flow_title": "Apple TV: {name}",
|
||||
"step": {
|
||||
"confirm": {
|
||||
"description": "Stai per aggiungere l'Apple TV denominata \"{name}\" a Home Assistant. \n\n **Per completare la procedura, potrebbe essere necessario inserire pi\u00f9 codici PIN.** \n\nTieni presente che *non* sarai in grado di spegnere la tua Apple TV con questa integrazione. Solo il lettore multimediale in Home Assistant si spegner\u00e0!",
|
||||
"title": "Conferma l'aggiunta di Apple TV"
|
||||
},
|
||||
"pair_no_pin": {
|
||||
"description": "L'abbinamento \u00e8 richiesto per il servizio \"{protocol}\". Inserisci il PIN {pin} sulla tua Apple TV per continuare.",
|
||||
"title": "Abbinamento"
|
||||
},
|
||||
"pair_with_pin": {
|
||||
"data": {
|
||||
"pin": "Codice PIN"
|
||||
},
|
||||
"description": "L'abbinamento \u00e8 richiesto per il protocollo \"{protocol}\". Immettere il codice PIN visualizzato sullo schermo. Gli zeri iniziali devono essere omessi, ovvero immettere 123 se il codice visualizzato \u00e8 0123.",
|
||||
"title": "Abbinamento"
|
||||
},
|
||||
"reconfigure": {
|
||||
"description": "Questa Apple TV sta riscontrando alcune difficolt\u00e0 di connessione e deve essere riconfigurata.",
|
||||
"title": "Riconfigurazione del dispositivo"
|
||||
},
|
||||
"service_problem": {
|
||||
"description": "Si \u00e8 verificato un problema durante l'associazione del protocollo \"{protocol}\". Sar\u00e0 ignorato.",
|
||||
"title": "Impossibile aggiungere il servizio"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"device_input": "Dispositivo"
|
||||
},
|
||||
"description": "Inizia inserendo il nome del dispositivo (es. Cucina o Camera da letto) o l'indirizzo IP dell'Apple TV che desideri aggiungere. Se sono stati rilevati automaticamente dei dispositivi sulla rete, verranno visualizzati di seguito. \n\n Se non riesci a vedere il tuo dispositivo o riscontri problemi, prova a specificare l'indirizzo IP del dispositivo. \n\n {devices}",
|
||||
"title": "Configura una nuova Apple TV"
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"init": {
|
||||
"data": {
|
||||
"start_off": "Non accendere il dispositivo all'avvio di Home Assistant"
|
||||
},
|
||||
"description": "Configurare le impostazioni generali del dispositivo"
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "Apple TV"
|
||||
}
|
52
homeassistant/components/apple_tv/translations/lb.json
Normal file
52
homeassistant/components/apple_tv/translations/lb.json
Normal file
|
@ -0,0 +1,52 @@
|
|||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured_device": "Apparat ass scho konfigur\u00e9iert",
|
||||
"already_in_progress": "Konfiguratioun's Oflaf ass schon am gaang",
|
||||
"unknown": "Onerwaarte Feeler"
|
||||
},
|
||||
"error": {
|
||||
"unknown": "Onerwaarte Feeler"
|
||||
},
|
||||
"flow_title": "Apple TV: {name}",
|
||||
"step": {
|
||||
"confirm": {
|
||||
"description": "Du bass um Punkt fir den Apple TV mam Numm \"{name}\" am Home Assistant dob\u00e4izesetzen.\n\n**Fir de Prozess ofzeschl\u00e9issen, muss Du vill\u00e4icht m\u00e9i PIN-Coden aginn.**\n\nNot\u00e9ier w.e.g dass Du d\u00e4in Apple TV mat d\u00ebser Integratioun *net\" ausschalten kanns. N\u00ebmmen de Mediaspiller am Home Assistant schalt aus!",
|
||||
"title": "Apple TV dob\u00e4isetzen best\u00e4tegen"
|
||||
},
|
||||
"pair_no_pin": {
|
||||
"description": "Kopplung ass n\u00e9ideg fir de `{protocol}` Service. G\u00ebff de PIN {pin} op dengem Apple TV an fir w\u00e9iderzefueren",
|
||||
"title": "Kopplung"
|
||||
},
|
||||
"pair_with_pin": {
|
||||
"data": {
|
||||
"pin": "PIN Code"
|
||||
},
|
||||
"description": "Kopplung ass n\u00e9ideg fir de `{protocol}` Protokoll. G\u00ebff de PIN code un deen um Ecran ugewise g\u00ebtt. Nullen op der 1ter Plaatz ginn ewechgelooss, dh g\u00ebff 123 wann de gewise Code 0123 ass.",
|
||||
"title": "Kopplung"
|
||||
},
|
||||
"reconfigure": {
|
||||
"description": "D\u00ebsen Apple TV huet e puer Verbindungsschwieregkeeten a muss nei konfigur\u00e9iert ginn.",
|
||||
"title": "Apparat Rekonfiguratioun"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"device_input": "Apparat"
|
||||
},
|
||||
"description": "F\u00e4nk un andeems Du den Numm vum Apparat (z. B. Kichen oder Schlofkummer) oder IP Adress vum Apple TV deen soll dob\u00e4igesat ginn ag\u00ebss.\n\nFalls d\u00e4in Apparat nez ugewise g\u00ebtt oder iergendwelch Problemer hues, prob\u00e9ier d'IP Adress vum Apparat anzeginn.\n\n{devices}",
|
||||
"title": "Neien Apple TV ariichten"
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"init": {
|
||||
"data": {
|
||||
"start_off": "Schlalt den Apparat net un wann den Home Assistant start"
|
||||
},
|
||||
"description": "Allgemeng Apparat Astellungen konfigur\u00e9ieren"
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "Apple TV"
|
||||
}
|
9
homeassistant/components/apple_tv/translations/nl.json
Normal file
9
homeassistant/components/apple_tv/translations/nl.json
Normal file
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"backoff": "Het apparaat accepteert op dit moment geen koppelingsverzoeken (u heeft mogelijk te vaak een ongeldige pincode ingevoerd), probeer het later opnieuw.",
|
||||
"device_did_not_pair": "Er is geen poging gedaan om het koppelingsproces te voltooien vanaf het apparaat.",
|
||||
"invalid_config": "De configuratie voor dit apparaat is onvolledig. Probeer het opnieuw toe te voegen."
|
||||
}
|
||||
}
|
||||
}
|
64
homeassistant/components/apple_tv/translations/no.json
Normal file
64
homeassistant/components/apple_tv/translations/no.json
Normal file
|
@ -0,0 +1,64 @@
|
|||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured_device": "Enheten er allerede konfigurert",
|
||||
"already_in_progress": "Konfigurasjonsflyten p\u00e5g\u00e5r allerede",
|
||||
"backoff": "Enheten godtar ikke parringsanmodninger for \u00f8yeblikket (du har kanskje angitt en ugyldig PIN-kode for mange ganger), pr\u00f8v igjen senere.",
|
||||
"device_did_not_pair": "Ingen fors\u00f8k p\u00e5 \u00e5 fullf\u00f8re paringsprosessen ble gjort fra enheten",
|
||||
"invalid_config": "Konfigurasjonen for denne enheten er ufullstendig. Pr\u00f8v \u00e5 legge den til p\u00e5 nytt.",
|
||||
"no_devices_found": "Ingen enheter funnet p\u00e5 nettverket",
|
||||
"unknown": "Uventet feil"
|
||||
},
|
||||
"error": {
|
||||
"already_configured": "Enheten er allerede konfigurert",
|
||||
"invalid_auth": "Ugyldig godkjenning",
|
||||
"no_devices_found": "Ingen enheter funnet p\u00e5 nettverket",
|
||||
"no_usable_service": "En enhet ble funnet, men kunne ikke identifisere noen m\u00e5te \u00e5 etablere en tilkobling til den. Hvis du fortsetter \u00e5 se denne meldingen, kan du pr\u00f8ve \u00e5 angi IP-adressen eller starte Apple TV p\u00e5 nytt.",
|
||||
"unknown": "Uventet feil"
|
||||
},
|
||||
"flow_title": "",
|
||||
"step": {
|
||||
"confirm": {
|
||||
"description": "Du er i ferd med \u00e5 legge til Apple TV med navnet {name} i Home Assistant.\n\n**For \u00e5 fullf\u00f8re prosessen m\u00e5 du kanskje angi flere PIN-koder.**\n\nV\u00e6r oppmerksom p\u00e5 at du *ikke* kan sl\u00e5 av Apple TV med denne integreringen. Bare mediespilleren i Home Assistant sl\u00e5r seg av!",
|
||||
"title": "Bekreft at du legger til Apple TV"
|
||||
},
|
||||
"pair_no_pin": {
|
||||
"description": "Paring kreves for tjenesten {protocol}. Skriv inn PIN-koden {pin} p\u00e5 Apple TV for \u00e5 fortsette.",
|
||||
"title": "Sammenkobling"
|
||||
},
|
||||
"pair_with_pin": {
|
||||
"data": {
|
||||
"pin": "PIN kode"
|
||||
},
|
||||
"description": "Paring kreves for protokollen {protocol}. Skriv inn PIN-koden som vises p\u00e5 skjermen. Ledende nuller utelates, det vil si angi 123 hvis den viste koden er 0123.",
|
||||
"title": "Sammenkobling"
|
||||
},
|
||||
"reconfigure": {
|
||||
"description": "Denne Apple TVen har noen tilkoblingsvansker og m\u00e5 konfigureres p\u00e5 nytt",
|
||||
"title": "Omkonfigurering av enheter"
|
||||
},
|
||||
"service_problem": {
|
||||
"description": "Det oppstod et problem under sammenkobling av protokollen \"{protocol}\". Det vil bli ignorert.",
|
||||
"title": "Kunne ikke legge til tjenesten"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"device_input": "Enhet"
|
||||
},
|
||||
"description": "Start med \u00e5 skrive inn enhetsnavnet (f.eks. kj\u00f8kken eller soverom) eller IP-adressen til Apple TV-en du vil legge til. Hvis noen enheter ble funnet automatisk p\u00e5 nettverket ditt, vises de nedenfor.\n\nHvis du ikke kan se enheten eller oppleve problemer, kan du pr\u00f8ve \u00e5 angi enhetens IP-adresse.\n\n{devices}",
|
||||
"title": "Konfigurere en ny Apple TV"
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"init": {
|
||||
"data": {
|
||||
"start_off": "Ikke sl\u00e5 p\u00e5 enheten n\u00e5r du starter Home Assistant"
|
||||
},
|
||||
"description": "Konfigurer generelle enhetsinnstillinger"
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": ""
|
||||
}
|
64
homeassistant/components/apple_tv/translations/pl.json
Normal file
64
homeassistant/components/apple_tv/translations/pl.json
Normal file
|
@ -0,0 +1,64 @@
|
|||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured_device": "Urz\u0105dzenie jest ju\u017c skonfigurowane",
|
||||
"already_in_progress": "Konfiguracja jest ju\u017c w toku",
|
||||
"backoff": "Urz\u0105dzenie w tej chwili nie akceptuje \u017c\u0105da\u0144 parowania (by\u0107 mo\u017ce zbyt wiele razy wpisa\u0142e\u015b nieprawid\u0142owy kod PIN), spr\u00f3buj ponownie p\u00f3\u017aniej.",
|
||||
"device_did_not_pair": "Nie podj\u0119to pr\u00f3by zako\u0144czenia procesu parowania z urz\u0105dzenia.",
|
||||
"invalid_config": "Konfiguracja tego urz\u0105dzenia jest niekompletna. Spr\u00f3buj doda\u0107 go ponownie.",
|
||||
"no_devices_found": "Nie znaleziono urz\u0105dze\u0144 w sieci",
|
||||
"unknown": "Nieoczekiwany b\u0142\u0105d"
|
||||
},
|
||||
"error": {
|
||||
"already_configured": "Urz\u0105dzenie jest ju\u017c skonfigurowane",
|
||||
"invalid_auth": "Niepoprawne uwierzytelnienie",
|
||||
"no_devices_found": "Nie znaleziono urz\u0105dze\u0144 w sieci",
|
||||
"no_usable_service": "Znaleziono urz\u0105dzenie, ale nie uda\u0142o si\u0119 zidentyfikowa\u0107 \u017cadnego sposobu na nawi\u0105zanie z nim po\u0142\u0105czenia. Je\u015bli nadal widzisz t\u0119 wiadomo\u015b\u0107, spr\u00f3buj poda\u0107 jego adres IP lub uruchom ponownie Apple TV.",
|
||||
"unknown": "Nieoczekiwany b\u0142\u0105d"
|
||||
},
|
||||
"flow_title": "Apple TV: {name}",
|
||||
"step": {
|
||||
"confirm": {
|
||||
"description": "Zamierzasz doda\u0107 Apple TV o nazwie \"{name}\" do Home Assistanta. \n\n **Aby uko\u0144czy\u0107 ca\u0142y proces, mo\u017ce by\u0107 konieczne wprowadzenie wielu kod\u00f3w PIN.** \n\nPami\u0119taj, \u017ce \"NIE\" b\u0119dziesz w stanie wy\u0142\u0105czy\u0107 Apple TV dzi\u0119ki tej integracji. Wy\u0142\u0105cza si\u0119 tylko sam odtwarzacz multimedialny w Home Assistant!",
|
||||
"title": "Potwierdzenie dodania Apple TV"
|
||||
},
|
||||
"pair_no_pin": {
|
||||
"description": "Parowanie jest wymagane dla us\u0142ugi \"{protocol}\". Aby kontynuowa\u0107, wprowad\u017a kod {pin} na swoim Apple TV.",
|
||||
"title": "Parowanie"
|
||||
},
|
||||
"pair_with_pin": {
|
||||
"data": {
|
||||
"pin": "Kod PIN"
|
||||
},
|
||||
"description": "Parowanie jest wymagane dla protoko\u0142u \"{protocol}\". Wprowad\u017a kod PIN wy\u015bwietlony na ekranie. Zera poprzedzaj\u0105ce nale\u017cy pomin\u0105\u0107, tj. wpisa\u0107 123, zamiast 0123.",
|
||||
"title": "Parowanie"
|
||||
},
|
||||
"reconfigure": {
|
||||
"description": "Ten Apple TV ma pewne problemy z po\u0142\u0105czeniem i musi zosta\u0107 ponownie skonfigurowany.",
|
||||
"title": "Ponowna konfiguracja urz\u0105dzenia"
|
||||
},
|
||||
"service_problem": {
|
||||
"description": "Wyst\u0105pi\u0142 problem podczas parowania protoko\u0142u \"{protocol}\". Zostanie on zignorowany.",
|
||||
"title": "Nie uda\u0142o si\u0119 doda\u0107 us\u0142ugi"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"device_input": "Urz\u0105dzenie"
|
||||
},
|
||||
"description": "Zacznij od wprowadzenia nazwy urz\u0105dzenia (np. Kuchnia lub Sypialnia) lub adresu IP Apple TV, kt\u00f3re chcesz doda\u0107. Je\u015bli jakie\u015b urz\u0105dzenia zosta\u0142y automatycznie znalezione w Twojej sieci, s\u0105 one pokazane poni\u017cej. \n\nJe\u015bli nie widzisz swojego urz\u0105dzenia lub wyst\u0119puj\u0105 jakiekolwiek problemy, spr\u00f3buj okre\u015bli\u0107 adres IP urz\u0105dzenia. \n\n{devices}",
|
||||
"title": "Konfiguracja nowego Apple TV"
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"init": {
|
||||
"data": {
|
||||
"start_off": "Nie w\u0142\u0105czaj urz\u0105dzenia podczas uruchamiania Home Assistanta"
|
||||
},
|
||||
"description": "Skonfiguruj og\u00f3lne ustawienia urz\u0105dzenia"
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "Apple TV"
|
||||
}
|
61
homeassistant/components/apple_tv/translations/pt.json
Normal file
61
homeassistant/components/apple_tv/translations/pt.json
Normal file
|
@ -0,0 +1,61 @@
|
|||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured_device": "O dispositivo j\u00e1 est\u00e1 configurado",
|
||||
"already_in_progress": "O processo de configura\u00e7\u00e3o j\u00e1 est\u00e1 a decorrer",
|
||||
"no_devices_found": "Nenhum dispositivo encontrado na rede",
|
||||
"unknown": "Erro inesperado"
|
||||
},
|
||||
"error": {
|
||||
"already_configured": "O dispositivo j\u00e1 est\u00e1 configurado",
|
||||
"invalid_auth": "Autentica\u00e7\u00e3o inv\u00e1lida",
|
||||
"no_devices_found": "Nenhum dispositivo encontrado na rede",
|
||||
"no_usable_service": "Foi encontrado um dispositivo, mas n\u00e3o foi poss\u00edvel identificar nenhuma forma de estabelecer uma liga\u00e7\u00e3o com ele. Se continuar a ver esta mensagem, tente especificar o endere\u00e7o IP ou reiniciar a sua Apple TV.",
|
||||
"unknown": "Erro inesperado"
|
||||
},
|
||||
"flow_title": "Apple TV: {name}",
|
||||
"step": {
|
||||
"confirm": {
|
||||
"description": "Est\u00e1 prestes a adicionar a Apple TV com o nome `{name}` ao Home Assistant.\n\n** Para completar o processo, poder\u00e1 ter que inserir v\u00e1rios c\u00f3digos PIN.**\n\nNote que *n\u00e3o* conseguir\u00e1 desligar a sua Apple TV com esta integra\u00e7\u00e3o. Apenas o media player no Home Assistant ser\u00e1 desligado!",
|
||||
"title": "Confirme a adi\u00e7\u00e3o da Apple TV"
|
||||
},
|
||||
"pair_no_pin": {
|
||||
"description": "\u00c9 necess\u00e1rio fazer o emparelhamento com protocolo `{protocol}`. Insira o c\u00f3digo PIN {pin} na sua Apple TV para continuar.",
|
||||
"title": "Emparelhamento"
|
||||
},
|
||||
"pair_with_pin": {
|
||||
"data": {
|
||||
"pin": "C\u00f3digo PIN"
|
||||
},
|
||||
"description": "\u00c9 necess\u00e1rio fazer o emparelhamento com protocolo `{protocol}`. Insira o c\u00f3digo PIN exibido no ecran. Os zeros iniciais devem ser omitidos, ou seja, digite 123 se o c\u00f3digo exibido for 0123.",
|
||||
"title": "Emparelhamento"
|
||||
},
|
||||
"reconfigure": {
|
||||
"description": "Esta Apple TV apresenta dificuldades de liga\u00e7\u00e3o e precisa ser reconfigurada.",
|
||||
"title": "Reconfigura\u00e7\u00e3o do dispositivo"
|
||||
},
|
||||
"service_problem": {
|
||||
"description": "Ocorreu um problema durante o protocolo de emparelhamento `{protocol}`. Ser\u00e1 ignorado.",
|
||||
"title": "Falha ao adicionar servi\u00e7o"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"device_input": "Dispositivo"
|
||||
},
|
||||
"description": "Comece por introduzir o nome do dispositivo (por exemplo, Cozinha ou Quarto) ou o endere\u00e7o IP da Apple TV que pretende adicionar. Se algum dispositivo foi automaticamente encontrado na sua rede, ele \u00e9 mostrado abaixo.\n\nSe n\u00e3o conseguir ver o seu dispositivo ou se tiver algum problema, tente especificar o endere\u00e7o IP do dispositivo.\n\n{devices}",
|
||||
"title": "Configure uma nova Apple TV"
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"init": {
|
||||
"data": {
|
||||
"start_off": "N\u00e3o ligue o dispositivo ao iniciar o Home Assistant"
|
||||
},
|
||||
"description": "Definir as configura\u00e7\u00f5es gerais do dispositivo"
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": ""
|
||||
}
|
64
homeassistant/components/apple_tv/translations/ru.json
Normal file
64
homeassistant/components/apple_tv/translations/ru.json
Normal file
|
@ -0,0 +1,64 @@
|
|||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured_device": "\u042d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0443\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0432 Home Assistant.",
|
||||
"already_in_progress": "\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f.",
|
||||
"backoff": "\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u0441\u043e\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435 (\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0412\u044b \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437 \u0432\u0432\u043e\u0434\u0438\u043b\u0438 \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 PIN-\u043a\u043e\u0434), \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443 \u043f\u043e\u0437\u0436\u0435.",
|
||||
"device_did_not_pair": "\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0435 \u043f\u044b\u0442\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u043e\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f.",
|
||||
"invalid_config": "\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0435\u0449\u0451 \u0440\u0430\u0437.",
|
||||
"no_devices_found": "\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u0432 \u0441\u0435\u0442\u0438.",
|
||||
"unknown": "\u041d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430."
|
||||
},
|
||||
"error": {
|
||||
"already_configured": "\u042d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0443\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0432 Home Assistant.",
|
||||
"invalid_auth": "\u041d\u0435\u0432\u0435\u0440\u043d\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f.",
|
||||
"no_devices_found": "\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u0432 \u0441\u0435\u0442\u0438.",
|
||||
"no_usable_service": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u043c\u0443 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443. \u0415\u0441\u043b\u0438 \u0412\u044b \u0443\u0436\u0435 \u0432\u0438\u0434\u0435\u043b\u0438 \u044d\u0442\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c IP-\u0430\u0434\u0440\u0435\u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0435\u0433\u043e.",
|
||||
"unknown": "\u041d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430."
|
||||
},
|
||||
"flow_title": "Apple TV: {name}",
|
||||
"step": {
|
||||
"confirm": {
|
||||
"description": "\u0412\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0435\u0441\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c Apple TV `{name}` \u0432 Home Assistant. \n\n**\u0414\u043b\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0412\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u0432\u0435\u0441\u0442\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e PIN-\u043a\u043e\u0434\u043e\u0432.** \n\n\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0412\u044b *\u043d\u0435* \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c Apple TV \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438. \u0412 Home Assistant \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0434\u0438\u0430\u043f\u043b\u0435\u0435\u0440!",
|
||||
"title": "\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 Apple TV"
|
||||
},
|
||||
"pair_no_pin": {
|
||||
"description": "\u0421\u043e\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u043b\u0443\u0436\u0431\u044b`{protocol}`. \u0414\u043b\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 PIN-\u043a\u043e\u0434 {pin} \u043d\u0430 \u0412\u0430\u0448\u0435\u043c Apple TV.",
|
||||
"title": "\u0421\u043e\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435"
|
||||
},
|
||||
"pair_with_pin": {
|
||||
"data": {
|
||||
"pin": "PIN-\u043a\u043e\u0434"
|
||||
},
|
||||
"description": "\u0421\u043e\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 `{protocol}`. \u0412\u0432\u0435\u0434\u0438\u0442\u0435 PIN-\u043a\u043e\u0434, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0439 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435. \u041f\u0435\u0440\u0432\u044b\u0435 \u043d\u0443\u043b\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043e\u043f\u0443\u0449\u0435\u043d\u044b, \u0442.\u0435. \u0432\u0432\u0435\u0434\u0438\u0442\u0435 123, \u0435\u0441\u043b\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0439 \u043a\u043e\u0434 0123.",
|
||||
"title": "\u0421\u043e\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435"
|
||||
},
|
||||
"reconfigure": {
|
||||
"description": "\u0423 \u044d\u0442\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 Apple TV \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043f\u0440\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u0435\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0435\u0440\u0435\u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c.",
|
||||
"title": "\u041f\u0435\u0440\u0435\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430"
|
||||
},
|
||||
"service_problem": {
|
||||
"description": "\u0412\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043f\u0440\u0438 \u0441\u043e\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 `{protocol}`. \u042d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043e.",
|
||||
"title": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043b\u0443\u0436\u0431\u0443"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"device_input": "\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e"
|
||||
},
|
||||
"description": "\u041d\u0430\u0447\u043d\u0438\u0442\u0435 \u0441 \u0432\u0432\u043e\u0434\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u041a\u0443\u0445\u043d\u044f \u0438\u043b\u0438 \u0421\u043f\u0430\u043b\u044c\u043d\u044f) \u0438\u043b\u0438 IP-\u0430\u0434\u0440\u0435\u0441\u0430 Apple TV, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c. \u0415\u0441\u043b\u0438 \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0431\u044b\u043b\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u044b \u0432 \u0412\u0430\u0448\u0435\u0439 \u0441\u0435\u0442\u0438, \u043e\u043d\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u043d\u0438\u0436\u0435. \n\n\u0415\u0441\u043b\u0438 \u0412\u044b \u043d\u0435 \u0432\u0438\u0434\u0438\u0442\u0435 \u0441\u0432\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0438\u043b\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043f\u0440\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c IP-\u0430\u0434\u0440\u0435\u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \n\n {devices}",
|
||||
"title": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043d\u043e\u0432\u043e\u0433\u043e Apple TV"
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"init": {
|
||||
"data": {
|
||||
"start_off": "\u041d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u0439\u0442\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 Home Assistant"
|
||||
},
|
||||
"description": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430"
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "Apple TV"
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue