Finishing off widget+app code changes.

Glance now updates the status.
Fix for quitting the application when persistently displaying an ErrorView.
Added option for Widget RootView to immediately start HomeAssistant without waiting for a tap as requested by a user.
This commit is contained in:
Philip Abbey
2023-12-23 14:30:58 +00:00
parent 3de2e25b5d
commit 76c2aaa249
42 changed files with 272 additions and 107 deletions

View File

@ -40,6 +40,7 @@
<string id="Available" scope="glance">متاح</string> <string id="Available" scope="glance">متاح</string>
<string id="Checking" scope="glance">تدقيق...</string> <string id="Checking" scope="glance">تدقيق...</string>
<string id="Unavailable" scope="glance">غير متوفره</string> <string id="Unavailable" scope="glance">غير متوفره</string>
<string id="Unconfigured" scope="glance">غير مهيأ</string>
<string id="GlanceMenu" scope="glance">قائمة طعام</string> <string id="GlanceMenu" scope="glance">قائمة طعام</string>
<!-- لإعدادات واجهة المستخدم الرسومية --> <!-- لإعدادات واجهة المستخدم الرسومية -->
<string id="SettingsApiKey">مفتاح API لـ HomeAssistant.</string> <string id="SettingsApiKey">مفتاح API لـ HomeAssistant.</string>
@ -50,4 +51,5 @@
<string id="SettingsConfirmTimeout">بعد هذا الوقت (بالثواني)، يتم إغلاق مربع حوار تأكيد الإجراء تلقائيًا ويتم إلغاء الإجراء. اضبط على 0 لتعطيل المهلة.</string> <string id="SettingsConfirmTimeout">بعد هذا الوقت (بالثواني)، يتم إغلاق مربع حوار تأكيد الإجراء تلقائيًا ويتم إلغاء الإجراء. اضبط على 0 لتعطيل المهلة.</string>
<string id="SettingsUi">تمثيل الأنواع بأيقونات (إيقاف) أو بالتسميات (تشغيل).</string> <string id="SettingsUi">تمثيل الأنواع بأيقونات (إيقاف) أو بالتسميات (تشغيل).</string>
<string id="SettingsTextAlign">محاذاة القائمة لليسار (إيقاف) أو لليمين (تشغيل).</string> <string id="SettingsTextAlign">محاذاة القائمة لليسار (إيقاف) أو لليمين (تشغيل).</string>
<string id="SettingsWidgetStart">(القطعة فقط) قم بتشغيل التطبيق تلقائيًا من الأداة دون انتظار نقرة واحدة.</string>
</strings> </strings>

View File

@ -40,6 +40,7 @@
<string id="Available" scope="glance">На разположение</string> <string id="Available" scope="glance">На разположение</string>
<string id="Checking" scope="glance">Проверка...</string> <string id="Checking" scope="glance">Проверка...</string>
<string id="Unavailable" scope="glance">Недостъпен</string> <string id="Unavailable" scope="glance">Недостъпен</string>
<string id="Unconfigured" scope="glance">Неконфигуриран</string>
<string id="GlanceMenu" scope="glance">Меню</string> <string id="GlanceMenu" scope="glance">Меню</string>
<!-- За GUI за настройки --> <!-- За GUI за настройки -->
<string id="SettingsApiKey">API ключ за HomeAssistant.</string> <string id="SettingsApiKey">API ключ за HomeAssistant.</string>
@ -50,4 +51,5 @@
<string id="SettingsConfirmTimeout">След това време (в секунди) диалоговият прозорец за потвърждение за действие се затваря автоматично и действието се отменя. Задайте 0, за да деактивирате изчакването.</string> <string id="SettingsConfirmTimeout">След това време (в секунди) диалоговият прозорец за потвърждение за действие се затваря автоматично и действието се отменя. Задайте 0, за да деактивирате изчакването.</string>
<string id="SettingsUi">Представяне на типове с икони (изключено) или с етикети (включено).</string> <string id="SettingsUi">Представяне на типове с икони (изключено) или с етикети (включено).</string>
<string id="SettingsTextAlign">Ляво (изключено) или дясно (включено) подравняване на менюто.</string> <string id="SettingsTextAlign">Ляво (изключено) или дясно (включено) подравняване на менюто.</string>
<string id="SettingsWidgetStart">(Само за джаджа) Автоматично стартирайте приложението от джаджата, без да чакате докосване.</string>
</strings> </strings>

View File

@ -40,6 +40,7 @@
<string id="Available" scope="glance">Dostupný</string> <string id="Available" scope="glance">Dostupný</string>
<string id="Checking" scope="glance">Kontrola...</string> <string id="Checking" scope="glance">Kontrola...</string>
<string id="Unavailable" scope="glance">Není k dispozici</string> <string id="Unavailable" scope="glance">Není k dispozici</string>
<string id="Unconfigured" scope="glance">Nenakonfigurováno</string>
<string id="GlanceMenu" scope="glance">Jídelní lístek</string> <string id="GlanceMenu" scope="glance">Jídelní lístek</string>
<!-- Pro nastavení GUI --> <!-- Pro nastavení GUI -->
<string id="SettingsApiKey">Klíč API pro HomeAssistant.</string> <string id="SettingsApiKey">Klíč API pro HomeAssistant.</string>
@ -50,4 +51,5 @@
<string id="SettingsConfirmTimeout">Po uplynutí této doby (v sekundách) se dialog pro potvrzení akce automaticky zavře a akce se zruší. Nastavením na 0 deaktivujete časový limit.</string> <string id="SettingsConfirmTimeout">Po uplynutí této doby (v sekundách) se dialog pro potvrzení akce automaticky zavře a akce se zruší. Nastavením na 0 deaktivujete časový limit.</string>
<string id="SettingsUi">Znázornění typů pomocí ikon (vypnuto) nebo pomocí štítků (zapnuto).</string> <string id="SettingsUi">Znázornění typů pomocí ikon (vypnuto) nebo pomocí štítků (zapnuto).</string>
<string id="SettingsTextAlign">Zarovnání nabídky vlevo (vypnuto) nebo vpravo (zapnuto).</string> <string id="SettingsTextAlign">Zarovnání nabídky vlevo (vypnuto) nebo vpravo (zapnuto).</string>
<string id="SettingsWidgetStart">(Pouze widget) Automaticky spusťte aplikaci z widgetu bez čekání na klepnutí.</string>
</strings> </strings>

View File

@ -40,6 +40,7 @@
<string id="Available" scope="glance">Ledig</string> <string id="Available" scope="glance">Ledig</string>
<string id="Checking" scope="glance">Tjekker...</string> <string id="Checking" scope="glance">Tjekker...</string>
<string id="Unavailable" scope="glance">Ikke tilgængelig</string> <string id="Unavailable" scope="glance">Ikke tilgængelig</string>
<string id="Unconfigured" scope="glance">Ukonfigureret</string>
<string id="GlanceMenu" scope="glance">Menu</string> <string id="GlanceMenu" scope="glance">Menu</string>
<!-- Til indstillingerne GUI --> <!-- Til indstillingerne GUI -->
<string id="SettingsApiKey">API-nøgle til HomeAssistant.</string> <string id="SettingsApiKey">API-nøgle til HomeAssistant.</string>
@ -50,4 +51,5 @@
<string id="SettingsConfirmTimeout">Efter dette tidspunkt (i sekunder) lukkes en bekræftelsesdialog for en handling automatisk, og handlingen annulleres. Indstil til 0 for at deaktivere timeout.</string> <string id="SettingsConfirmTimeout">Efter dette tidspunkt (i sekunder) lukkes en bekræftelsesdialog for en handling automatisk, og handlingen annulleres. Indstil til 0 for at deaktivere timeout.</string>
<string id="SettingsUi">Repræsenterer typer med ikoner (fra) eller med etiketter (til).</string> <string id="SettingsUi">Repræsenterer typer med ikoner (fra) eller med etiketter (til).</string>
<string id="SettingsTextAlign">Venstre (fra) eller Højre (til) menujustering.</string> <string id="SettingsTextAlign">Venstre (fra) eller Højre (til) menujustering.</string>
<string id="SettingsWidgetStart">(Kun widget) Start automatisk applikationen fra widgetten uden at vente på et tryk.</string>
</strings> </strings>

View File

@ -23,7 +23,7 @@
<string id="MenuItemOn">An</string> <string id="MenuItemOn">An</string>
<string id="MenuItemOff">Aus</string> <string id="MenuItemOff">Aus</string>
<string id="MenuItemTap">Antippen</string> <string id="MenuItemTap">Antippen</string>
<string id="MenuItemMenu">Menü</string> <string id="MenuItemMenu">Menü</string>
<string id="Confirm">Sicher?</string> <string id="Confirm">Sicher?</string>
<string id="NoPhone" scope="glance">Keine Telefonverbindung</string> <string id="NoPhone" scope="glance">Keine Telefonverbindung</string>
<string id="NoInternet">Keine Internetverbindung</string> <string id="NoInternet">Keine Internetverbindung</string>
@ -35,11 +35,12 @@
<string id="ApiUrlNotFound">URL nicht gefunden. Möglicher API-URL-Fehler in den Einstellungen.</string> <string id="ApiUrlNotFound">URL nicht gefunden. Möglicher API-URL-Fehler in den Einstellungen.</string>
<string id="ConfigUrlNotFound">URL nicht gefunden. Möglicher Konfigurations-URL-Fehler in den Einstellungen.</string> <string id="ConfigUrlNotFound">URL nicht gefunden. Möglicher Konfigurations-URL-Fehler in den Einstellungen.</string>
<string id="NoJson">Von der HTTP-Anfrage wurde kein JSON zurückgegeben.</string> <string id="NoJson">Von der HTTP-Anfrage wurde kein JSON zurückgegeben.</string>
<string id="UnhandledHttpErr">Die HTTP-Anfrage gab folgenden Fehlercode zurück = </string> <string id="UnhandledHttpErr">Die HTTP-Anfrage gab folgenden Fehlercode zurück = </string>
<string id="TrailingSlashErr">Die API-URL darf keinen abschließenden Schrägstrich „/“ enthalten.</string> <string id="TrailingSlashErr">Die API-URL darf keinen abschließenden Schrägstrich „/“ enthalten.</string>
<string id="Available" scope="glance">Verfügbar</string> <string id="Available" scope="glance">Verfügbar</string>
<string id="Checking" scope="glance">Überprüfung...</string> <string id="Checking" scope="glance">Überprüfung...</string>
<string id="Unavailable" scope="glance">Nicht verfügbar</string> <string id="Unavailable" scope="glance">Nicht verfügbar</string>
<string id="Unconfigured" scope="glance">Unkonfiguriert</string>
<string id="GlanceMenu" scope="glance">Speisekarte</string> <string id="GlanceMenu" scope="glance">Speisekarte</string>
<!-- Für die Einstellungs-GUI --> <!-- Für die Einstellungs-GUI -->
<string id="SettingsApiKey">API-Schlüssel für HomeAssistant.</string> <string id="SettingsApiKey">API-Schlüssel für HomeAssistant.</string>
@ -50,4 +51,5 @@
<string id="SettingsConfirmTimeout">Nach dieser Zeit (in Sekunden) wird automatisch ein Bestätigungsdialog für eine Aktion geschlossen und die Aktion abgebrochen. Auf 0 setzen, um das Timeout zu deaktivieren.</string> <string id="SettingsConfirmTimeout">Nach dieser Zeit (in Sekunden) wird automatisch ein Bestätigungsdialog für eine Aktion geschlossen und die Aktion abgebrochen. Auf 0 setzen, um das Timeout zu deaktivieren.</string>
<string id="SettingsUi">Darstellen von Typen mit Symbolen (aus) oder mit Beschriftungen (ein).</string> <string id="SettingsUi">Darstellen von Typen mit Symbolen (aus) oder mit Beschriftungen (ein).</string>
<string id="SettingsTextAlign">Menüausrichtung links (aus) oder rechts (ein).</string> <string id="SettingsTextAlign">Menüausrichtung links (aus) oder rechts (ein).</string>
<string id="SettingsWidgetStart">(Nur Widget) Starten Sie die Anwendung automatisch über das Widget, ohne auf einen Tipp warten zu müssen.</string>
</strings> </strings>

View File

@ -40,8 +40,9 @@
<string id="Available" scope="glance">Beschikbaar</string> <string id="Available" scope="glance">Beschikbaar</string>
<string id="Checking" scope="glance">Controleren...</string> <string id="Checking" scope="glance">Controleren...</string>
<string id="Unavailable" scope="glance">Niet beschikbaar</string> <string id="Unavailable" scope="glance">Niet beschikbaar</string>
<string id="Unconfigured" scope="glance">Niet geconfigureerd</string>
<string id="GlanceMenu" scope="glance">Menu</string> <string id="GlanceMenu" scope="glance">Menu</string>
<!-- Voor de instellingen GUI --> <!-- Voor de instellingen-GUI -->
<string id="SettingsApiKey">API-sleutel voor HomeAssistant.</string> <string id="SettingsApiKey">API-sleutel voor HomeAssistant.</string>
<string id="SettingsApiKeyPrompt">Toegangstoken met lange levensduur.</string> <string id="SettingsApiKeyPrompt">Toegangstoken met lange levensduur.</string>
<string id="SettingsApiUrl">URL voor HomeAssistant API.</string> <string id="SettingsApiUrl">URL voor HomeAssistant API.</string>
@ -50,4 +51,5 @@
<string id="SettingsConfirmTimeout">Na deze tijd (in seconden) wordt automatisch een bevestigingsvenster voor een actie gesloten en wordt de actie geannuleerd. Stel in op 0 om de time-out uit te schakelen.</string> <string id="SettingsConfirmTimeout">Na deze tijd (in seconden) wordt automatisch een bevestigingsvenster voor een actie gesloten en wordt de actie geannuleerd. Stel in op 0 om de time-out uit te schakelen.</string>
<string id="SettingsUi">Typen weergeven met pictogrammen (uit) of met labels (aan).</string> <string id="SettingsUi">Typen weergeven met pictogrammen (uit) of met labels (aan).</string>
<string id="SettingsTextAlign">Links (uit) of rechts (aan) Menu-uitlijning.</string> <string id="SettingsTextAlign">Links (uit) of rechts (aan) Menu-uitlijning.</string>
<string id="SettingsWidgetStart">(Alleen Widget) Start de applicatie automatisch vanuit de widget zonder te wachten op een tik.</string>
</strings> </strings>

View File

@ -31,7 +31,7 @@
<string id="NoAPIKey" scope="glance">Rakenduse seadetes pole API-võtit</string> <string id="NoAPIKey" scope="glance">Rakenduse seadetes pole API-võtit</string>
<string id="NoApiUrl" scope="glance">Rakenduse seadetes pole API URL-i</string> <string id="NoApiUrl" scope="glance">Rakenduse seadetes pole API URL-i</string>
<string id="NoConfigUrl" scope="glance">Rakenduse seadetes pole konfiguratsiooni URL-i</string> <string id="NoConfigUrl" scope="glance">Rakenduse seadetes pole konfiguratsiooni URL-i</string>
<string id="ApiFlood">API-kõned liiga kiired. Palun aeglustage oma taotlusi.</string> <string id="ApiFlood">API-kutsed liiga kiired. Palun aeglustage taotluste esitamist.</string>
<string id="ApiUrlNotFound">URL-i ei leitud. Võimalik API URL-i viga seadetes.</string> <string id="ApiUrlNotFound">URL-i ei leitud. Võimalik API URL-i viga seadetes.</string>
<string id="ConfigUrlNotFound">URL-i ei leitud. Võimalik konfiguratsiooni URL-i viga seadetes.</string> <string id="ConfigUrlNotFound">URL-i ei leitud. Võimalik konfiguratsiooni URL-i viga seadetes.</string>
<string id="NoJson">HTTP päringust ei tagastatud ühtegi JSON-i.</string> <string id="NoJson">HTTP päringust ei tagastatud ühtegi JSON-i.</string>
@ -40,6 +40,7 @@
<string id="Available" scope="glance">Saadaval</string> <string id="Available" scope="glance">Saadaval</string>
<string id="Checking" scope="glance">Kontrollimine...</string> <string id="Checking" scope="glance">Kontrollimine...</string>
<string id="Unavailable" scope="glance">Pole saadaval</string> <string id="Unavailable" scope="glance">Pole saadaval</string>
<string id="Unconfigured" scope="glance">Konfigureerimata</string>
<string id="GlanceMenu" scope="glance">Menüü</string> <string id="GlanceMenu" scope="glance">Menüü</string>
<!-- Seadete GUI jaoks --> <!-- Seadete GUI jaoks -->
<string id="SettingsApiKey">API-võti HomeAssistantile.</string> <string id="SettingsApiKey">API-võti HomeAssistantile.</string>
@ -48,6 +49,7 @@
<string id="SettingsConfigUrl">URL menüü konfigureerimiseks (JSON).</string> <string id="SettingsConfigUrl">URL menüü konfigureerimiseks (JSON).</string>
<string id="SettingsAppTimeout">Aegumine sekundites. Seadme aku säästmiseks sulgege rakendus pärast seda tegevusetusperioodi.</string> <string id="SettingsAppTimeout">Aegumine sekundites. Seadme aku säästmiseks sulgege rakendus pärast seda tegevusetusperioodi.</string>
<string id="SettingsConfirmTimeout">Pärast seda aega (sekundites) suletakse automaatselt toimingu kinnitusdialoog ja toiming tühistatakse. Ajalõpu keelamiseks määrake väärtusele 0.</string> <string id="SettingsConfirmTimeout">Pärast seda aega (sekundites) suletakse automaatselt toimingu kinnitusdialoog ja toiming tühistatakse. Ajalõpu keelamiseks määrake väärtusele 0.</string>
<string id="SettingsUi">Tüüpide esindamine ikoonidega (väljas) või siltidega (sees).</string> <string id="SettingsUi">Tüüpide tähistamine ikoonidega (väljas) või siltidega (sees).</string>
<string id="SettingsTextAlign">Vasak (väljas) või parem (sees) menüü joondamine.</string> <string id="SettingsTextAlign">Vasak (väljas) või parem (sees) menüü joondamine.</string>
<string id="SettingsWidgetStart">(Ainult vidin) Käivitage rakendus automaatselt vidinast ilma puudutust ootamata.</string>
</strings> </strings>

View File

@ -40,6 +40,7 @@
<string id="Available" scope="glance">Saatavilla</string> <string id="Available" scope="glance">Saatavilla</string>
<string id="Checking" scope="glance">Tarkistetaan...</string> <string id="Checking" scope="glance">Tarkistetaan...</string>
<string id="Unavailable" scope="glance">Ei saatavilla</string> <string id="Unavailable" scope="glance">Ei saatavilla</string>
<string id="Unconfigured" scope="glance">Määrittämätön</string>
<string id="GlanceMenu" scope="glance">Valikko</string> <string id="GlanceMenu" scope="glance">Valikko</string>
<!-- GUI-asetusten osalta --> <!-- GUI-asetusten osalta -->
<string id="SettingsApiKey">API-avain HomeAssistantille.</string> <string id="SettingsApiKey">API-avain HomeAssistantille.</string>
@ -47,7 +48,8 @@
<string id="SettingsApiUrl">HomeAssistant API:n URL-osoite.</string> <string id="SettingsApiUrl">HomeAssistant API:n URL-osoite.</string>
<string id="SettingsConfigUrl">URL-osoite valikon määrityksiä varten (JSON).</string> <string id="SettingsConfigUrl">URL-osoite valikon määrityksiä varten (JSON).</string>
<string id="SettingsAppTimeout">Aikakatkaisu sekunneissa. Poistu sovelluksesta tämän käyttämättömyyden jälkeen säästääksesi laitteen akkua.</string> <string id="SettingsAppTimeout">Aikakatkaisu sekunneissa. Poistu sovelluksesta tämän käyttämättömyyden jälkeen säästääksesi laitteen akkua.</string>
<string id="SettingsConfirmTimeout">Tämän ajan kuluttua (sekunneissa) toiminnon vahvistusikkuna suljetaan automaattisesti ja toiminto peruutetaan. Aseta arvoksi 0 poistaaksesi aikakatkaisun käytöstä.</string> <string id="SettingsConfirmTimeout">Tämän ajan kuluttua (sekunneissa) toiminnon vahvistusikkuna suljetaan automaattisesti ja toiminto peruutetaan. Aseta arvoksi 0, jos haluat poistaa aikakatkaisun käytöstä.</string>
<string id="SettingsUi">Esittää tyyppejä kuvakkeilla (pois päältä) tai tarroilla (päällä).</string> <string id="SettingsUi">Esittää tyyppejä kuvakkeilla (pois päältä) tai tarroilla (päällä).</string>
<string id="SettingsTextAlign">Vasen (pois) tai oikea (päällä) valikon kohdistus.</string> <string id="SettingsTextAlign">Vasen (pois) tai oikea (päällä) valikon kohdistus.</string>
<string id="SettingsWidgetStart">(Vain widget) Käynnistä sovellus automaattisesti widgetistä odottamatta napautusta.</string>
</strings> </strings>

View File

@ -20,7 +20,7 @@
<strings> <strings>
<string id="AppName" scope="glance">HomeAssistant</string> <string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn">Activé</string> <string id="MenuItemOn">Activé</string>
<string id="MenuItemOff">Désactivé</string> <string id="MenuItemOff">Désactivé</string>
<string id="MenuItemTap">Clic</string> <string id="MenuItemTap">Clic</string>
<string id="MenuItemMenu">Menu</string> <string id="MenuItemMenu">Menu</string>
@ -31,7 +31,7 @@
<string id="NoAPIKey" scope="glance">Pas de clé API dans les paramètres de l'application</string> <string id="NoAPIKey" scope="glance">Pas de clé API dans les paramètres de l'application</string>
<string id="NoApiUrl" scope="glance">Aucune URL API dans les paramètres de l'application</string> <string id="NoApiUrl" scope="glance">Aucune URL API dans les paramètres de l'application</string>
<string id="NoConfigUrl" scope="glance">Aucune URL de configuration dans les paramètres de l'application</string> <string id="NoConfigUrl" scope="glance">Aucune URL de configuration dans les paramètres de l'application</string>
<string id="ApiFlood">Appels API trop rapide. Veuillez signaler cette erreur avec les détails de l'appareil.</string> <string id="ApiFlood">Appels API trop rapide. Veuillez signaler cette erreur avec les détails de l'appareil.</string>
<string id="ApiUrlNotFound">URL introuvable. Erreur potentielle d'URL d'API dans les paramètres.</string> <string id="ApiUrlNotFound">URL introuvable. Erreur potentielle d'URL d'API dans les paramètres.</string>
<string id="ConfigUrlNotFound">URL introuvable. Erreur potentielle d'URL de configuration dans les paramètres.</string> <string id="ConfigUrlNotFound">URL introuvable. Erreur potentielle d'URL de configuration dans les paramètres.</string>
<string id="NoJson">Aucun JSON renvoyé par la requête HTTP.</string> <string id="NoJson">Aucun JSON renvoyé par la requête HTTP.</string>
@ -40,14 +40,16 @@
<string id="Available" scope="glance">Disponible</string> <string id="Available" scope="glance">Disponible</string>
<string id="Checking" scope="glance">Vérification...</string> <string id="Checking" scope="glance">Vérification...</string>
<string id="Unavailable" scope="glance">Indisponible</string> <string id="Unavailable" scope="glance">Indisponible</string>
<string id="Unconfigured" scope="glance">Non configuré</string>
<string id="GlanceMenu" scope="glance">Menu</string> <string id="GlanceMenu" scope="glance">Menu</string>
<!-- Pour l'interface graphique des paramètres --> <!-- Pour l'interface graphique des paramètres -->
<string id="SettingsApiKey">Clé API pour HomeAssistant.</string> <string id="SettingsApiKey">Clé API pour HomeAssistant.</string>
<string id="SettingsApiKeyPrompt">Jeton d'accès de longue durée.</string> <string id="SettingsApiKeyPrompt">Jeton d'accès de longue durée.</string>
<string id="SettingsApiUrl">URL de lAPI HomeAssistant.</string> <string id="SettingsApiUrl">URL de lAPI HomeAssistant.</string>
<string id="SettingsConfigUrl">URL de configuration des menus (JSON).</string> <string id="SettingsConfigUrl">URL de configuration des menus (JSON).</string>
<string id="SettingsAppTimeout">Délai d'attente en secondes. Quittez l'application après cette période d'inactivité pour économiser la batterie de l'appareil.</string> <string id="SettingsAppTimeout">Délai d'expiration en secondes. Quittez l'application après cette période d'inactivité pour économiser la batterie de l'appareil.</string>
<string id="SettingsConfirmTimeout">Passé ce délai (en secondes), une boîte de dialogue de confirmation d'une action se ferme automatiquement et l'action est annulée. Réglez sur 0 pour désactiver le délai d'attente.</string> <string id="SettingsConfirmTimeout">Passé ce délai (en secondes), une boîte de dialogue de confirmation d'une action se ferme automatiquement et l'action est annulée. Réglez sur 0 pour désactiver le délai d'attente.</string>
<string id="SettingsUi">Représentation des types avec des icônes (off) ou avec des étiquettes (on).</string> <string id="SettingsUi">Représentation des types avec des icônes (off) ou avec des étiquettes (on).</string>
<string id="SettingsTextAlign">Alignement du menu à gauche (désactivé) ou à droite (activé).</string> <string id="SettingsTextAlign">Alignement du menu à gauche (désactivé) ou à droite (activé).</string>
<string id="SettingsWidgetStart">(Widget uniquement) Démarrez automatiquement l'application à partir du widget sans attendre un clic.</string>
</strings> </strings>

View File

@ -29,17 +29,18 @@
<string id="NoInternet">Δεν υπάρχει σύνδεση στο διαδίκτυο</string> <string id="NoInternet">Δεν υπάρχει σύνδεση στο διαδίκτυο</string>
<string id="NoResponse">Καμία απάντηση, ελέγξτε τη σύνδεση στο Διαδίκτυο</string> <string id="NoResponse">Καμία απάντηση, ελέγξτε τη σύνδεση στο Διαδίκτυο</string>
<string id="NoAPIKey" scope="glance">Δεν υπάρχει κλειδί API στις ρυθμίσεις της εφαρμογής</string> <string id="NoAPIKey" scope="glance">Δεν υπάρχει κλειδί API στις ρυθμίσεις της εφαρμογής</string>
<string id="NoApiUrl" scope="glance">Δεν υπάρχει διεύθυνση URL API στις ρυθμίσεις της εφαρμογής</string> <string id="NoApiUrl" scope="glance">Δεν υπάρχει URL API στις ρυθμίσεις της εφαρμογής</string>
<string id="NoConfigUrl" scope="glance">Δεν υπάρχει διεύθυνση URL διαμόρφωσης στις ρυθμίσεις της εφαρμογής</string> <string id="NoConfigUrl" scope="glance">Δεν υπάρχει διεύθυνση URL διαμόρφωσης στις ρυθμίσεις της εφαρμογής</string>
<string id="ApiFlood">Κλήσεις API πολύ γρήγορες. Παρακαλώ επιβραδύνετε τα αιτήματά σας.</string> <string id="ApiFlood">Κλήσεις API πολύ γρήγορες. Παρακαλώ επιβραδύνετε τα αιτήματά σας.</string>
<string id="ApiUrlNotFound">Η διεύθυνση URL δεν βρέθηκε. Πιθανό σφάλμα διεύθυνσης URL API στις ρυθμίσεις.</string> <string id="ApiUrlNotFound">Η διεύθυνση URL δεν βρέθηκε. Πιθανό σφάλμα διεύθυνσης URL API στις ρυθμίσεις.</string>
<string id="ConfigUrlNotFound">Η διεύθυνση URL δεν βρέθηκε. Πιθανό σφάλμα διεύθυνσης URL διαμόρφωσης στις ρυθμίσεις.</string> <string id="ConfigUrlNotFound">Η διεύθυνση URL δεν βρέθηκε. Πιθανό σφάλμα διαμόρφωσης URL στις ρυθμίσεις.</string>
<string id="NoJson">Δεν επιστράφηκε JSON από αίτημα HTTP.</string> <string id="NoJson">Δεν επιστράφηκε JSON από αίτημα HTTP.</string>
<string id="UnhandledHttpErr">Το αίτημα HTTP επέστρεψε κωδικό σφάλματος =</string> <string id="UnhandledHttpErr">Το αίτημα HTTP επέστρεψε κωδικό σφάλματος =</string>
<string id="TrailingSlashErr">Η διεύθυνση URL του API δεν πρέπει να έχει τελική κάθετο "/"</string> <string id="TrailingSlashErr">Η διεύθυνση URL του API δεν πρέπει να έχει τελική κάθετο "/"</string>
<string id="Available" scope="glance">Διαθέσιμος</string> <string id="Available" scope="glance">Διαθέσιμος</string>
<string id="Checking" scope="glance">Ελεγχος...</string> <string id="Checking" scope="glance">Ελεγχος...</string>
<string id="Unavailable" scope="glance">Μη διαθέσιμο</string> <string id="Unavailable" scope="glance">Μη διαθέσιμο</string>
<string id="Unconfigured" scope="glance">Μη διαμορφωμένο</string>
<string id="GlanceMenu" scope="glance">Μενού</string> <string id="GlanceMenu" scope="glance">Μενού</string>
<!-- Για τις ρυθμίσεις GUI --> <!-- Για τις ρυθμίσεις GUI -->
<string id="SettingsApiKey">Κλειδί API για το HomeAssistant.</string> <string id="SettingsApiKey">Κλειδί API για το HomeAssistant.</string>
@ -50,4 +51,5 @@
<string id="SettingsConfirmTimeout">Μετά από αυτό το χρονικό διάστημα (σε δευτερόλεπτα), ένα παράθυρο διαλόγου επιβεβαίωσης για μια ενέργεια κλείνει αυτόματα και η ενέργεια ακυρώνεται. Ορίστε στο 0 για να απενεργοποιήσετε το χρονικό όριο.</string> <string id="SettingsConfirmTimeout">Μετά από αυτό το χρονικό διάστημα (σε δευτερόλεπτα), ένα παράθυρο διαλόγου επιβεβαίωσης για μια ενέργεια κλείνει αυτόματα και η ενέργεια ακυρώνεται. Ορίστε στο 0 για να απενεργοποιήσετε το χρονικό όριο.</string>
<string id="SettingsUi">Αναπαράσταση τύπων με εικονίδια (απενεργοποίηση) ή με ετικέτες (ενεργό).</string> <string id="SettingsUi">Αναπαράσταση τύπων με εικονίδια (απενεργοποίηση) ή με ετικέτες (ενεργό).</string>
<string id="SettingsTextAlign">Αριστερά (απενεργοποίηση) ή Δεξιά (ενεργό) Ευθυγράμμιση μενού.</string> <string id="SettingsTextAlign">Αριστερά (απενεργοποίηση) ή Δεξιά (ενεργό) Ευθυγράμμιση μενού.</string>
<string id="SettingsWidgetStart">(Μόνο widget) Αυτόματη εκκίνηση της εφαρμογής από το widget χωρίς να περιμένετε ένα πάτημα.</string>
</strings> </strings>

View File

@ -30,7 +30,7 @@
<string id="NoResponse">אין תגובה, בדוק חיבור לאינטרנט</string> <string id="NoResponse">אין תגובה, בדוק חיבור לאינטרנט</string>
<string id="NoAPIKey" scope="glance">אין מפתח API בהגדרות האפליקציה</string> <string id="NoAPIKey" scope="glance">אין מפתח API בהגדרות האפליקציה</string>
<string id="NoApiUrl" scope="glance">אין כתובת API בהגדרות האפליקציה</string> <string id="NoApiUrl" scope="glance">אין כתובת API בהגדרות האפליקציה</string>
<string id="NoConfigUrl" scope="glance">אין כתובת אתר תצורה בהגדרות האפליקציה</string> <string id="NoConfigUrl" scope="glance">אין כתובת URL לתצורה בהגדרות האפליקציה</string>
<string id="ApiFlood">קריאות API מהירות מדי. נא להאט את הבקשות שלך.</string> <string id="ApiFlood">קריאות API מהירות מדי. נא להאט את הבקשות שלך.</string>
<string id="ApiUrlNotFound">כתובת האתר לא נמצאה. שגיאה פוטנציאלית של כתובת ה-API בהגדרות.</string> <string id="ApiUrlNotFound">כתובת האתר לא נמצאה. שגיאה פוטנציאלית של כתובת ה-API בהגדרות.</string>
<string id="ConfigUrlNotFound">כתובת האתר לא נמצאה. שגיאת כתובת אתר פוטנציאלית של תצורה בהגדרות.</string> <string id="ConfigUrlNotFound">כתובת האתר לא נמצאה. שגיאת כתובת אתר פוטנציאלית של תצורה בהגדרות.</string>
@ -40,6 +40,7 @@
<string id="Available" scope="glance">זמין</string> <string id="Available" scope="glance">זמין</string>
<string id="Checking" scope="glance">בודק...</string> <string id="Checking" scope="glance">בודק...</string>
<string id="Unavailable" scope="glance">אינו זמין</string> <string id="Unavailable" scope="glance">אינו זמין</string>
<string id="Unconfigured" scope="glance">לא מוגדר</string>
<string id="GlanceMenu" scope="glance">תַפרִיט</string> <string id="GlanceMenu" scope="glance">תַפרִיט</string>
<!-- עבור ה-GUI של ההגדרות --> <!-- עבור ה-GUI של ההגדרות -->
<string id="SettingsApiKey">מפתח API עבור HomeAssistant.</string> <string id="SettingsApiKey">מפתח API עבור HomeAssistant.</string>
@ -47,7 +48,8 @@
<string id="SettingsApiUrl">כתובת URL עבור HomeAssistant API.</string> <string id="SettingsApiUrl">כתובת URL עבור HomeAssistant API.</string>
<string id="SettingsConfigUrl">כתובת URL לתצורת תפריט (JSON).</string> <string id="SettingsConfigUrl">כתובת URL לתצורת תפריט (JSON).</string>
<string id="SettingsAppTimeout">פסק זמן בשניות. צא מהאפליקציה לאחר תקופה זו של חוסר פעילות כדי לחסוך בסוללת המכשיר.</string> <string id="SettingsAppTimeout">פסק זמן בשניות. צא מהאפליקציה לאחר תקופה זו של חוסר פעילות כדי לחסוך בסוללת המכשיר.</string>
<string id="SettingsConfirmTimeout">לאחר זמן זה (בשניות), תיבת דו-שיח לאישור פעולה נסגרת אוטומטית והפעולה מבוטלת. הגדר ל-0 כדי להשבית את הזמן הקצוב.</string> <string id="SettingsConfirmTimeout">לאחר זמן זה (בשניות), תיבת דו-שיח לאישור פעולה נסגרת אוטומטית והפעולה מבוטלת. הגדר ל-0 כדי לבטל את הזמן הקצוב.</string>
<string id="SettingsUi">ייצוג סוגים עם סמלים (כבוי) או עם תוויות (מופעל).</string> <string id="SettingsUi">ייצוג סוגים עם סמלים (כבוי) או עם תוויות (מופעל).</string>
<string id="SettingsTextAlign">יישור תפריט שמאלה (כבוי) או ימינה (מופעל).</string> <string id="SettingsTextAlign">יישור תפריט שמאלה (כבוי) או ימינה (מופעל).</string>
<string id="SettingsWidgetStart">(יישומון בלבד) הפעל אוטומטית את האפליקציה מהווידג'ט מבלי לחכות להקשה.</string>
</strings> </strings>

View File

@ -40,6 +40,7 @@
<string id="Available" scope="glance">Dostupno</string> <string id="Available" scope="glance">Dostupno</string>
<string id="Checking" scope="glance">Provjera...</string> <string id="Checking" scope="glance">Provjera...</string>
<string id="Unavailable" scope="glance">Nedostupan</string> <string id="Unavailable" scope="glance">Nedostupan</string>
<string id="Unconfigured" scope="glance">Nekonfigurirano</string>
<string id="GlanceMenu" scope="glance">Jelovnik</string> <string id="GlanceMenu" scope="glance">Jelovnik</string>
<!-- Za GUI postavki --> <!-- Za GUI postavki -->
<string id="SettingsApiKey">API ključ za HomeAssistant.</string> <string id="SettingsApiKey">API ključ za HomeAssistant.</string>
@ -50,4 +51,5 @@
<string id="SettingsConfirmTimeout">Nakon tog vremena (u sekundama), dijaloški okvir za potvrdu radnje automatski se zatvara i radnja se poništava. Postavite na 0 da onemogućite vremensko ograničenje.</string> <string id="SettingsConfirmTimeout">Nakon tog vremena (u sekundama), dijaloški okvir za potvrdu radnje automatski se zatvara i radnja se poništava. Postavite na 0 da onemogućite vremensko ograničenje.</string>
<string id="SettingsUi">Predstavljanje tipova ikonama (isključeno) ili oznakama (uključeno).</string> <string id="SettingsUi">Predstavljanje tipova ikonama (isključeno) ili oznakama (uključeno).</string>
<string id="SettingsTextAlign">Lijevo (isključeno) ili desno (uključeno) poravnanje izbornika.</string> <string id="SettingsTextAlign">Lijevo (isključeno) ili desno (uključeno) poravnanje izbornika.</string>
<string id="SettingsWidgetStart">(Samo widget) Automatski pokrenite aplikaciju iz widgeta bez čekanja na dodir.</string>
</strings> </strings>

View File

@ -40,6 +40,7 @@
<string id="Available" scope="glance">Elérhető</string> <string id="Available" scope="glance">Elérhető</string>
<string id="Checking" scope="glance">Ellenőrzés...</string> <string id="Checking" scope="glance">Ellenőrzés...</string>
<string id="Unavailable" scope="glance">Nem érhető el</string> <string id="Unavailable" scope="glance">Nem érhető el</string>
<string id="Unconfigured" scope="glance">Nincs konfigurálva</string>
<string id="GlanceMenu" scope="glance">Menü</string> <string id="GlanceMenu" scope="glance">Menü</string>
<!-- A beállítások GUI-hoz --> <!-- A beállítások GUI-hoz -->
<string id="SettingsApiKey">API-kulcs a HomeAssistant számára.</string> <string id="SettingsApiKey">API-kulcs a HomeAssistant számára.</string>
@ -47,7 +48,8 @@
<string id="SettingsApiUrl">A HomeAssistant API URL-je.</string> <string id="SettingsApiUrl">A HomeAssistant API URL-je.</string>
<string id="SettingsConfigUrl">URL a menükonfigurációhoz (JSON).</string> <string id="SettingsConfigUrl">URL a menükonfigurációhoz (JSON).</string>
<string id="SettingsAppTimeout">Időtúllépés másodpercben. Az eszköz akkumulátorának kímélése érdekében lépjen ki az alkalmazásból ezen inaktivitási időszak után.</string> <string id="SettingsAppTimeout">Időtúllépés másodpercben. Az eszköz akkumulátorának kímélése érdekében lépjen ki az alkalmazásból ezen inaktivitási időszak után.</string>
<string id="SettingsConfirmTimeout">Ezen idő elteltével (másodpercben) egy művelet megerősítő párbeszédpanele automatikusan bezárul, és a művelet megszakad. Állítsa 0-ra az időtúllépés letiltásához.</string> <string id="SettingsConfirmTimeout">Ezen idő letelte után (másodpercben) a művelet megerősítő párbeszédablakja automatikusan bezárul, és a művelet megszakad. Állítsa 0-ra az időtúllépés letiltásához.</string>
<string id="SettingsUi">A típusokat ikonokkal (kikapcsolva) vagy címkékkel (bekapcsolva) ábrázolja.</string> <string id="SettingsUi">A típusokat ikonokkal (kikapcsolva) vagy címkékkel (bekapcsolva) ábrázolja.</string>
<string id="SettingsTextAlign">Balra (ki) vagy Jobbra (be) Menüigazítás.</string> <string id="SettingsTextAlign">Balra (ki) vagy Jobbra (be) Menüigazítás.</string>
<string id="SettingsWidgetStart">(Csak widget) Az alkalmazás automatikus indítása a widgetről anélkül, hogy egy érintésre várna.</string>
</strings> </strings>

View File

@ -30,7 +30,7 @@
<string id="NoResponse">Tidak Ada Respon, periksa koneksi Internet</string> <string id="NoResponse">Tidak Ada Respon, periksa koneksi Internet</string>
<string id="NoAPIKey" scope="glance">Tidak ada kunci API di pengaturan aplikasi</string> <string id="NoAPIKey" scope="glance">Tidak ada kunci API di pengaturan aplikasi</string>
<string id="NoApiUrl" scope="glance">Tidak ada URL API di pengaturan aplikasi</string> <string id="NoApiUrl" scope="glance">Tidak ada URL API di pengaturan aplikasi</string>
<string id="NoConfigUrl" scope="glance">Tidak ada URL konfigurasi dalam pengaturan aplikasi</string> <string id="NoConfigUrl" scope="glance">Tidak ada URL konfigurasi di pengaturan aplikasi</string>
<string id="ApiFlood">Panggilan API terlalu cepat. Harap memperlambat permintaan Anda.</string> <string id="ApiFlood">Panggilan API terlalu cepat. Harap memperlambat permintaan Anda.</string>
<string id="ApiUrlNotFound">URL tidak ditemukan. Potensi kesalahan URL API dalam pengaturan.</string> <string id="ApiUrlNotFound">URL tidak ditemukan. Potensi kesalahan URL API dalam pengaturan.</string>
<string id="ConfigUrlNotFound">URL tidak ditemukan. Potensi kesalahan URL Konfigurasi dalam pengaturan.</string> <string id="ConfigUrlNotFound">URL tidak ditemukan. Potensi kesalahan URL Konfigurasi dalam pengaturan.</string>
@ -40,6 +40,7 @@
<string id="Available" scope="glance">Tersedia</string> <string id="Available" scope="glance">Tersedia</string>
<string id="Checking" scope="glance">Memeriksa...</string> <string id="Checking" scope="glance">Memeriksa...</string>
<string id="Unavailable" scope="glance">Tidak tersedia</string> <string id="Unavailable" scope="glance">Tidak tersedia</string>
<string id="Unconfigured" scope="glance">Tidak dikonfigurasi</string>
<string id="GlanceMenu" scope="glance">Menu</string> <string id="GlanceMenu" scope="glance">Menu</string>
<!-- Untuk pengaturan GUI --> <!-- Untuk pengaturan GUI -->
<string id="SettingsApiKey">Kunci API untuk HomeAssistant.</string> <string id="SettingsApiKey">Kunci API untuk HomeAssistant.</string>
@ -50,4 +51,5 @@
<string id="SettingsConfirmTimeout">Setelah waktu ini (dalam detik), dialog konfirmasi untuk suatu tindakan secara otomatis ditutup dan tindakan tersebut dibatalkan. Setel ke 0 untuk menonaktifkan batas waktu.</string> <string id="SettingsConfirmTimeout">Setelah waktu ini (dalam detik), dialog konfirmasi untuk suatu tindakan secara otomatis ditutup dan tindakan tersebut dibatalkan. Setel ke 0 untuk menonaktifkan batas waktu.</string>
<string id="SettingsUi">Mewakili tipe dengan ikon (mati) atau dengan label (aktif).</string> <string id="SettingsUi">Mewakili tipe dengan ikon (mati) atau dengan label (aktif).</string>
<string id="SettingsTextAlign">Penyelarasan Menu Kiri (mati) atau Kanan (hidup).</string> <string id="SettingsTextAlign">Penyelarasan Menu Kiri (mati) atau Kanan (hidup).</string>
<string id="SettingsWidgetStart">(Khusus widget) Secara otomatis memulai aplikasi dari widget tanpa menunggu ketukan.</string>
</strings> </strings>

View File

@ -40,6 +40,7 @@
<string id="Available" scope="glance">Disponibile</string> <string id="Available" scope="glance">Disponibile</string>
<string id="Checking" scope="glance">Controllo...</string> <string id="Checking" scope="glance">Controllo...</string>
<string id="Unavailable" scope="glance">Non disponibile</string> <string id="Unavailable" scope="glance">Non disponibile</string>
<string id="Unconfigured" scope="glance">Non configurato</string>
<string id="GlanceMenu" scope="glance">Menù</string> <string id="GlanceMenu" scope="glance">Menù</string>
<!-- Per la GUI delle impostazioni --> <!-- Per la GUI delle impostazioni -->
<string id="SettingsApiKey">Chiave API per HomeAssistant.</string> <string id="SettingsApiKey">Chiave API per HomeAssistant.</string>
@ -50,4 +51,5 @@
<string id="SettingsConfirmTimeout">Trascorso questo tempo (in secondi), una finestra di dialogo di conferma per un'azione viene chiusa automaticamente e l'azione viene annullata. Impostare su 0 per disabilitare il timeout.</string> <string id="SettingsConfirmTimeout">Trascorso questo tempo (in secondi), una finestra di dialogo di conferma per un'azione viene chiusa automaticamente e l'azione viene annullata. Impostare su 0 per disabilitare il timeout.</string>
<string id="SettingsUi">Rappresentazione dei tipi con icone (disattivata) o con etichette (attivata).</string> <string id="SettingsUi">Rappresentazione dei tipi con icone (disattivata) o con etichette (attivata).</string>
<string id="SettingsTextAlign">Allineamento del menu a sinistra (spento) o a destra (acceso).</string> <string id="SettingsTextAlign">Allineamento del menu a sinistra (spento) o a destra (acceso).</string>
<string id="SettingsWidgetStart">(Solo widget) Avvia automaticamente l'applicazione dal widget senza attendere un tocco.</string>
</strings> </strings>

View File

@ -40,14 +40,16 @@
<string id="Available" scope="glance">利用可能</string> <string id="Available" scope="glance">利用可能</string>
<string id="Checking" scope="glance">チェック中...</string> <string id="Checking" scope="glance">チェック中...</string>
<string id="Unavailable" scope="glance">利用不可</string> <string id="Unavailable" scope="glance">利用不可</string>
<string id="Unconfigured" scope="glance">未構成</string>
<string id="GlanceMenu" scope="glance">メニュー</string> <string id="GlanceMenu" scope="glance">メニュー</string>
<!-- 設定GUIの場合 --> <!-- 設定GUIの場合 -->
<string id="SettingsApiKey">ホームアシスタントの API キー。</string> <string id="SettingsApiKey">ホームアシスタントの API キー。</string>
<string id="SettingsApiKeyPrompt">有効期の長いアクセス トークン。</string> <string id="SettingsApiKeyPrompt">有効期の長いアクセス トークン。</string>
<string id="SettingsApiUrl">ホームアシスタント API の URL。</string> <string id="SettingsApiUrl">ホームアシスタント API の URL。</string>
<string id="SettingsConfigUrl">メニュー構成の URL (JSON)。</string> <string id="SettingsConfigUrl">メニュー構成の URL (JSON)。</string>
<string id="SettingsAppTimeout">秒単位のタイムアウト。デバイスのバッテリーを節約するために、この期間非アクティブになった後はアプリケーションを終了してください。</string> <string id="SettingsAppTimeout">秒単位のタイムアウト。デバイスのバッテリーを節約するために、この期間非アクティブになった後はアプリケーションを終了してください。</string>
<string id="SettingsConfirmTimeout">この時間 (秒単位) が経過すると、アクションの確認ダイアログが自動的に閉じられ、アクションがキャンセルされます。タイムアウトを無効にするには、0 に設定します。</string> <string id="SettingsConfirmTimeout">この時間 (秒単位) が経過すると、アクションの確認ダイアログが自動的に閉じられ、アクションがキャンセルされます。タイムアウトを無効にするには、0 に設定します。</string>
<string id="SettingsUi">タイプをアイコン (オフ) またはラベル (オン) で表します。</string> <string id="SettingsUi">タイプをアイコン (オフ) またはラベル (オン) で表します。</string>
<string id="SettingsTextAlign">左 (オフ) または右 (オン) メニューの配置。</string> <string id="SettingsTextAlign">左 (オフ) または右 (オン) メニューの配置。</string>
<string id="SettingsWidgetStart">(ウィジェットのみ)タップを待たずにウィジェットからアプリを自動起動します。</string>
</strings> </strings>

View File

@ -36,10 +36,11 @@
<string id="ConfigUrlNotFound">URL을 찾을 수 없습니다. 설정에 잠재적인 구성 URL 오류가 있습니다.</string> <string id="ConfigUrlNotFound">URL을 찾을 수 없습니다. 설정에 잠재적인 구성 URL 오류가 있습니다.</string>
<string id="NoJson">HTTP 요청에서 JSON이 반환되지 않았습니다.</string> <string id="NoJson">HTTP 요청에서 JSON이 반환되지 않았습니다.</string>
<string id="UnhandledHttpErr">HTTP 요청이 오류 코드를 반환했습니다 =</string> <string id="UnhandledHttpErr">HTTP 요청이 오류 코드를 반환했습니다 =</string>
<string id="TrailingSlashErr">API URL에는 후행 슬래시 '/'가 없어야 합니다.</string> <string id="TrailingSlashErr">API URL에는 후행 슬래시 '/'가 있어서는 안 됩니다.</string>
<string id="Available" scope="glance">사용 가능</string> <string id="Available" scope="glance">사용 가능</string>
<string id="Checking" scope="glance">확인 중...</string> <string id="Checking" scope="glance">확인 중...</string>
<string id="Unavailable" scope="glance">없는</string> <string id="Unavailable" scope="glance">없는</string>
<string id="Unconfigured" scope="glance">구성되지 않음</string>
<string id="GlanceMenu" scope="glance">메뉴</string> <string id="GlanceMenu" scope="glance">메뉴</string>
<!-- 설정 GUI의 경우 --> <!-- 설정 GUI의 경우 -->
<string id="SettingsApiKey">HomeAssistant용 API 키.</string> <string id="SettingsApiKey">HomeAssistant용 API 키.</string>
@ -50,4 +51,5 @@
<string id="SettingsConfirmTimeout">이 시간(초)이 지나면 작업에 대한 확인 대화 상자가 자동으로 닫히고 작업이 취소됩니다. 시간 초과를 비활성화하려면 0으로 설정합니다.</string> <string id="SettingsConfirmTimeout">이 시간(초)이 지나면 작업에 대한 확인 대화 상자가 자동으로 닫히고 작업이 취소됩니다. 시간 초과를 비활성화하려면 0으로 설정합니다.</string>
<string id="SettingsUi">아이콘(끄기) 또는 레이블(켜기)로 유형을 나타냅니다.</string> <string id="SettingsUi">아이콘(끄기) 또는 레이블(켜기)로 유형을 나타냅니다.</string>
<string id="SettingsTextAlign">왼쪽(끄기) 또는 오른쪽(켜기) 메뉴 정렬.</string> <string id="SettingsTextAlign">왼쪽(끄기) 또는 오른쪽(켜기) 메뉴 정렬.</string>
<string id="SettingsWidgetStart">(위젯만 해당) 탭을 기다리지 않고 위젯에서 애플리케이션을 자동으로 시작합니다.</string>
</strings> </strings>

View File

@ -40,6 +40,7 @@
<string id="Available" scope="glance">Pieejams</string> <string id="Available" scope="glance">Pieejams</string>
<string id="Checking" scope="glance">Notiek pārbaude...</string> <string id="Checking" scope="glance">Notiek pārbaude...</string>
<string id="Unavailable" scope="glance">Nav pieejams</string> <string id="Unavailable" scope="glance">Nav pieejams</string>
<string id="Unconfigured" scope="glance">Nav konfigurēts</string>
<string id="GlanceMenu" scope="glance">Izvēlne</string> <string id="GlanceMenu" scope="glance">Izvēlne</string>
<!-- Iestatījumu GUI --> <!-- Iestatījumu GUI -->
<string id="SettingsApiKey">API atslēga Home Assistant.</string> <string id="SettingsApiKey">API atslēga Home Assistant.</string>
@ -50,4 +51,5 @@
<string id="SettingsConfirmTimeout">Pēc šī laika (sekundēs) tiek automātiski aizvērts darbības apstiprinājuma dialoglodziņš un darbība tiek atcelta. Iestatiet uz 0, lai atspējotu taimautu.</string> <string id="SettingsConfirmTimeout">Pēc šī laika (sekundēs) tiek automātiski aizvērts darbības apstiprinājuma dialoglodziņš un darbība tiek atcelta. Iestatiet uz 0, lai atspējotu taimautu.</string>
<string id="SettingsUi">Apzīmē veidus ar ikonām (izslēgts) vai ar etiķetēm (ieslēgts).</string> <string id="SettingsUi">Apzīmē veidus ar ikonām (izslēgts) vai ar etiķetēm (ieslēgts).</string>
<string id="SettingsTextAlign">Kreisā (izslēgta) vai labā (ieslēgta) izvēlnes izlīdzināšana.</string> <string id="SettingsTextAlign">Kreisā (izslēgta) vai labā (ieslēgta) izvēlnes izlīdzināšana.</string>
<string id="SettingsWidgetStart">(tikai logrīkam) Automātiski startējiet lietojumprogrammu no logrīka, negaidot pieskārienu.</string>
</strings> </strings>

View File

@ -40,6 +40,7 @@
<string id="Available" scope="glance">Galima</string> <string id="Available" scope="glance">Galima</string>
<string id="Checking" scope="glance">Tikrinama...</string> <string id="Checking" scope="glance">Tikrinama...</string>
<string id="Unavailable" scope="glance">Nepasiekiamas</string> <string id="Unavailable" scope="glance">Nepasiekiamas</string>
<string id="Unconfigured" scope="glance">Nesukonfigūruotas</string>
<string id="GlanceMenu" scope="glance">Meniu</string> <string id="GlanceMenu" scope="glance">Meniu</string>
<!-- Dėl nustatymų GUI --> <!-- Dėl nustatymų GUI -->
<string id="SettingsApiKey">API raktas, skirtas „HomeAssistant“.</string> <string id="SettingsApiKey">API raktas, skirtas „HomeAssistant“.</string>
@ -50,4 +51,5 @@
<string id="SettingsConfirmTimeout">Praėjus šiam laikui (sekundėmis), veiksmo patvirtinimo dialogo langas automatiškai uždaromas ir veiksmas atšaukiamas. Nustatykite 0, kad išjungtumėte skirtąjį laiką.</string> <string id="SettingsConfirmTimeout">Praėjus šiam laikui (sekundėmis), veiksmo patvirtinimo dialogo langas automatiškai uždaromas ir veiksmas atšaukiamas. Nustatykite 0, kad išjungtumėte skirtąjį laiką.</string>
<string id="SettingsUi">Tipai su piktogramomis (išjungta) arba etiketėmis (įjungta).</string> <string id="SettingsUi">Tipai su piktogramomis (išjungta) arba etiketėmis (įjungta).</string>
<string id="SettingsTextAlign">Kairysis (išjungtas) arba dešinysis (įjungtas) meniu lygiavimas.</string> <string id="SettingsTextAlign">Kairysis (išjungtas) arba dešinysis (įjungtas) meniu lygiavimas.</string>
<string id="SettingsWidgetStart">(Tik valdiklis) Automatiškai paleiskite programą iš valdiklio, nelaukdami palietimo.</string>
</strings> </strings>

View File

@ -40,6 +40,7 @@
<string id="Available" scope="glance">Tilgjengelig</string> <string id="Available" scope="glance">Tilgjengelig</string>
<string id="Checking" scope="glance">Sjekker...</string> <string id="Checking" scope="glance">Sjekker...</string>
<string id="Unavailable" scope="glance">Utilgjengelig</string> <string id="Unavailable" scope="glance">Utilgjengelig</string>
<string id="Unconfigured" scope="glance">Ukonfigurert</string>
<string id="GlanceMenu" scope="glance">Meny</string> <string id="GlanceMenu" scope="glance">Meny</string>
<!-- For innstillingene GUI --> <!-- For innstillingene GUI -->
<string id="SettingsApiKey">API-nøkkel for HomeAssistant.</string> <string id="SettingsApiKey">API-nøkkel for HomeAssistant.</string>
@ -50,4 +51,5 @@
<string id="SettingsConfirmTimeout">Etter denne tiden (i sekunder), lukkes en bekreftelsesdialog for en handling automatisk og handlingen avbrytes. Sett til 0 for å deaktivere tidsavbruddet.</string> <string id="SettingsConfirmTimeout">Etter denne tiden (i sekunder), lukkes en bekreftelsesdialog for en handling automatisk og handlingen avbrytes. Sett til 0 for å deaktivere tidsavbruddet.</string>
<string id="SettingsUi">Representerer typer med ikoner (av) eller med etiketter (på).</string> <string id="SettingsUi">Representerer typer med ikoner (av) eller med etiketter (på).</string>
<string id="SettingsTextAlign">Venstre (av) eller Høyre (på) Menyjustering.</string> <string id="SettingsTextAlign">Venstre (av) eller Høyre (på) Menyjustering.</string>
<string id="SettingsWidgetStart">(Kun widget) Start applikasjonen automatisk fra widgeten uten å vente på et trykk.</string>
</strings> </strings>

View File

@ -40,6 +40,7 @@
<string id="Available" scope="glance">Dostępny</string> <string id="Available" scope="glance">Dostępny</string>
<string id="Checking" scope="glance">Kontrola...</string> <string id="Checking" scope="glance">Kontrola...</string>
<string id="Unavailable" scope="glance">Niedostępne</string> <string id="Unavailable" scope="glance">Niedostępne</string>
<string id="Unconfigured" scope="glance">Nieskonfigurowane</string>
<string id="GlanceMenu" scope="glance">Menu</string> <string id="GlanceMenu" scope="glance">Menu</string>
<!-- Dla ustawień GUI --> <!-- Dla ustawień GUI -->
<string id="SettingsApiKey">Klucz API dla HomeAssistant.</string> <string id="SettingsApiKey">Klucz API dla HomeAssistant.</string>
@ -50,4 +51,5 @@
<string id="SettingsConfirmTimeout">Po tym czasie (w sekundach) okno dialogowe z potwierdzeniem akcji zamyka się automatycznie, a akcja zostaje anulowana. Ustaw na 0, aby wyłączyć limit czasu.</string> <string id="SettingsConfirmTimeout">Po tym czasie (w sekundach) okno dialogowe z potwierdzeniem akcji zamyka się automatycznie, a akcja zostaje anulowana. Ustaw na 0, aby wyłączyć limit czasu.</string>
<string id="SettingsUi">Reprezentowanie typów za pomocą ikon (wyłączone) lub etykiet (włączone).</string> <string id="SettingsUi">Reprezentowanie typów za pomocą ikon (wyłączone) lub etykiet (włączone).</string>
<string id="SettingsTextAlign">Wyrównanie menu do lewej (wyłączone) lub do prawej (włączone).</string> <string id="SettingsTextAlign">Wyrównanie menu do lewej (wyłączone) lub do prawej (włączone).</string>
<string id="SettingsWidgetStart">(Tylko widget) Automatycznie uruchamiaj aplikację z widgetu, bez czekania na dotknięcie.</string>
</strings> </strings>

View File

@ -40,6 +40,7 @@
<string id="Available" scope="glance">Disponível</string> <string id="Available" scope="glance">Disponível</string>
<string id="Checking" scope="glance">Verificando...</string> <string id="Checking" scope="glance">Verificando...</string>
<string id="Unavailable" scope="glance">Indisponível</string> <string id="Unavailable" scope="glance">Indisponível</string>
<string id="Unconfigured" scope="glance">Não configurado</string>
<string id="GlanceMenu" scope="glance">Cardápio</string> <string id="GlanceMenu" scope="glance">Cardápio</string>
<!-- Para a GUI de configurações --> <!-- Para a GUI de configurações -->
<string id="SettingsApiKey">Chave de API para HomeAssistant.</string> <string id="SettingsApiKey">Chave de API para HomeAssistant.</string>
@ -50,4 +51,5 @@
<string id="SettingsConfirmTimeout">Após esse tempo (em segundos), uma caixa de diálogo de confirmação de uma ação é automaticamente fechada e a ação é cancelada. Defina como 0 para desativar o tempo limite.</string> <string id="SettingsConfirmTimeout">Após esse tempo (em segundos), uma caixa de diálogo de confirmação de uma ação é automaticamente fechada e a ação é cancelada. Defina como 0 para desativar o tempo limite.</string>
<string id="SettingsUi">Representando tipos com ícones (desligado) ou com rótulos (ligado).</string> <string id="SettingsUi">Representando tipos com ícones (desligado) ou com rótulos (ligado).</string>
<string id="SettingsTextAlign">Alinhamento do menu à esquerda (desligado) ou à direita (ligado).</string> <string id="SettingsTextAlign">Alinhamento do menu à esquerda (desligado) ou à direita (ligado).</string>
<string id="SettingsWidgetStart">(Somente widget) Inicie automaticamente o aplicativo a partir do widget sem esperar por um toque.</string>
</strings> </strings>

View File

@ -21,7 +21,7 @@
<strings> <strings>
<string id="AppName" scope="glance">HomeAssistant</string> <string id="AppName" scope="glance">HomeAssistant</string>
<string id="MenuItemOn">Pe</string> <string id="MenuItemOn">Pe</string>
<string id="MenuItemOff">Oprit</string> <string id="MenuItemOff">Off</string>
<string id="MenuItemTap">Atingeți</string> <string id="MenuItemTap">Atingeți</string>
<string id="MenuItemMenu">Meniul</string> <string id="MenuItemMenu">Meniul</string>
<string id="Confirm">Sigur?</string> <string id="Confirm">Sigur?</string>
@ -31,15 +31,16 @@
<string id="NoAPIKey" scope="glance">Nicio cheie API în setările aplicației</string> <string id="NoAPIKey" scope="glance">Nicio cheie API în setările aplicației</string>
<string id="NoApiUrl" scope="glance">Nicio adresă URL API în setările aplicației</string> <string id="NoApiUrl" scope="glance">Nicio adresă URL API în setările aplicației</string>
<string id="NoConfigUrl" scope="glance">Nicio adresă URL de configurare în setările aplicației</string> <string id="NoConfigUrl" scope="glance">Nicio adresă URL de configurare în setările aplicației</string>
<string id="ApiFlood">Apeluri API prea rapide. Vă rugăm să încetiniți solicitările.</string> <string id="ApiFlood">Apeluri API prea rapide. Vă rugăm să încetiniți cererile dvs.</string>
<string id="ApiUrlNotFound">Adresa URL nu a fost găsită. Potențială eroare URL API în setări.</string> <string id="ApiUrlNotFound">Adresa URL nu a fost găsită. Potențială eroare URL API în setări.</string>
<string id="ConfigUrlNotFound">Adresa URL nu a fost găsită. Potențială eroare URL de configurare în setări.</string> <string id="ConfigUrlNotFound">Adresa URL nu a fost găsită. Potențială eroare URL de configurare în setări.</string>
<string id="NoJson">Nu a fost returnat niciun JSON de la solicitarea HTTP.</string> <string id="NoJson">Niciun JSON nu a fost returnat de la solicitarea HTTP.</string>
<string id="UnhandledHttpErr">Solicitarea HTTP a returnat codul de eroare =</string> <string id="UnhandledHttpErr">Solicitarea HTTP a returnat codul de eroare =</string>
<string id="TrailingSlashErr">Adresa URL API nu trebuie să aibă o bară oblică „/”</string> <string id="TrailingSlashErr">Adresa URL API nu trebuie să aibă o bară oblică „/”</string>
<string id="Available" scope="glance">Disponibil</string> <string id="Available" scope="glance">Disponibil</string>
<string id="Checking" scope="glance">Control...</string> <string id="Checking" scope="glance">Control...</string>
<string id="Unavailable" scope="glance">Indisponibil</string> <string id="Unavailable" scope="glance">Indisponibil</string>
<string id="Unconfigured" scope="glance">Neconfigurat</string>
<string id="GlanceMenu" scope="glance">Meniul</string> <string id="GlanceMenu" scope="glance">Meniul</string>
<!-- Pentru GUI de setări --> <!-- Pentru GUI de setări -->
<string id="SettingsApiKey">Cheie API pentru HomeAssistant.</string> <string id="SettingsApiKey">Cheie API pentru HomeAssistant.</string>
@ -50,4 +51,5 @@
<string id="SettingsConfirmTimeout">După acest timp (în secunde), un dialog de confirmare pentru o acțiune este închis automat și acțiunea este anulată. Setați la 0 pentru a dezactiva timeout-ul.</string> <string id="SettingsConfirmTimeout">După acest timp (în secunde), un dialog de confirmare pentru o acțiune este închis automat și acțiunea este anulată. Setați la 0 pentru a dezactiva timeout-ul.</string>
<string id="SettingsUi">Reprezentarea tipurilor cu pictograme (dezactivate) sau cu etichete (activate).</string> <string id="SettingsUi">Reprezentarea tipurilor cu pictograme (dezactivate) sau cu etichete (activate).</string>
<string id="SettingsTextAlign">Alinierea meniului la stânga (dezactivată) sau la dreapta (activată).</string> <string id="SettingsTextAlign">Alinierea meniului la stânga (dezactivată) sau la dreapta (activată).</string>
<string id="SettingsWidgetStart">(Numai widget) Porniți automat aplicația din widget fără a aștepta o atingere.</string>
</strings> </strings>

View File

@ -40,14 +40,16 @@
<string id="Available" scope="glance">Dostupné</string> <string id="Available" scope="glance">Dostupné</string>
<string id="Checking" scope="glance">Prebieha kontrola...</string> <string id="Checking" scope="glance">Prebieha kontrola...</string>
<string id="Unavailable" scope="glance">nedostupné</string> <string id="Unavailable" scope="glance">nedostupné</string>
<string id="Unconfigured" scope="glance">Nekonfigurované</string>
<string id="GlanceMenu" scope="glance">Ponuka</string> <string id="GlanceMenu" scope="glance">Ponuka</string>
<!-- Pre nastavenia GUI --> <!-- Pre nastavenia GUI -->
<string id="SettingsApiKey">Kľúč API pre HomeAssistant.</string> <string id="SettingsApiKey">Kľúč API pre HomeAssistant.</string>
<string id="SettingsApiKeyPrompt">Prístupový token s dlhou životnosťou.</string> <string id="SettingsApiKeyPrompt">Dlhotrvajúci prístupový token.</string>
<string id="SettingsApiUrl">URL pre HomeAssistant API.</string> <string id="SettingsApiUrl">URL pre HomeAssistant API.</string>
<string id="SettingsConfigUrl">Webová adresa pre konfiguráciu ponuky (JSON).</string> <string id="SettingsConfigUrl">Webová adresa pre konfiguráciu ponuky (JSON).</string>
<string id="SettingsAppTimeout">Časový limit v sekundách. Po tejto dobe nečinnosti ukončite aplikáciu, aby ste šetrili batériu zariadenia.</string> <string id="SettingsAppTimeout">Časový limit v sekundách. Po tejto dobe nečinnosti ukončite aplikáciu, aby ste šetrili batériu zariadenia.</string>
<string id="SettingsConfirmTimeout">Po tomto čase (v sekundách) sa dialógové okno s potvrdením akcie automaticky zatvorí a akcia sa zruší. Ak chcete časový limit deaktivovať, nastavte na 0.</string> <string id="SettingsConfirmTimeout">Po tomto čase (v sekundách) sa dialógové okno s potvrdením akcie automaticky zatvorí a akcia sa zruší. Ak chcete časový limit deaktivovať, nastavte na 0.</string>
<string id="SettingsUi">Typy predstavujú ikony (vypnuté) alebo štítky (zapnuté).</string> <string id="SettingsUi">Typy predstavujú ikony (vypnuté) alebo štítky (zapnuté).</string>
<string id="SettingsTextAlign">Zarovnanie ponuky vľavo (vypnuté) alebo vpravo (zapnuté).</string> <string id="SettingsTextAlign">Zarovnanie ponuky vľavo (vypnuté) alebo vpravo (zapnuté).</string>
<string id="SettingsWidgetStart">(Len miniaplikácia) Automaticky spustite aplikáciu z miniaplikácie bez čakania na klepnutie.</string>
</strings> </strings>

View File

@ -40,14 +40,16 @@
<string id="Available" scope="glance">Na voljo</string> <string id="Available" scope="glance">Na voljo</string>
<string id="Checking" scope="glance">Preverjanje ...</string> <string id="Checking" scope="glance">Preverjanje ...</string>
<string id="Unavailable" scope="glance">Ni na voljo</string> <string id="Unavailable" scope="glance">Ni na voljo</string>
<string id="Unconfigured" scope="glance">Nekonfigurirano</string>
<string id="GlanceMenu" scope="glance">meni</string> <string id="GlanceMenu" scope="glance">meni</string>
<!-- Za nastavitve GUI --> <!-- Za nastavitve GUI -->
<string id="SettingsApiKey">API ključ za HomeAssistant.</string> <string id="SettingsApiKey">API ključ za HomeAssistant.</string>
<string id="SettingsApiKeyPrompt">Dolgoživ dostopni žeton.</string> <string id="SettingsApiKeyPrompt">Dolgoživ dostopni žeton.</string>
<string id="SettingsApiUrl">URL za HomeAssistant API.</string> <string id="SettingsApiUrl">URL za API HomeAssistant.</string>
<string id="SettingsConfigUrl">URL za konfiguracijo menija (JSON).</string> <string id="SettingsConfigUrl">URL za konfiguracijo menija (JSON).</string>
<string id="SettingsAppTimeout">Časovna omejitev v sekundah. Po tem obdobju nedejavnosti zaprite aplikacijo, da prihranite baterijo naprave.</string> <string id="SettingsAppTimeout">Časovna omejitev v sekundah. Po tem obdobju nedejavnosti zaprite aplikacijo, da prihranite baterijo naprave.</string>
<string id="SettingsConfirmTimeout">Po tem času (v sekundah) se potrditveno pogovorno okno za dejanje samodejno zapre in dejanje je preklicano. Nastavite na 0, da onemogočite časovno omejitev.</string> <string id="SettingsConfirmTimeout">Po tem času (v sekundah) se potrditveno pogovorno okno za dejanje samodejno zapre in dejanje je preklicano. Nastavite na 0, da onemogočite časovno omejitev.</string>
<string id="SettingsUi">Predstavljanje tipov z ikonami (izklopljeno) ali z oznakami (vklopljeno).</string> <string id="SettingsUi">Predstavljanje tipov z ikonami (izklopljeno) ali z oznakami (vklopljeno).</string>
<string id="SettingsTextAlign">Leva (izklopljena) ali desna (vklopljena) poravnava menija.</string> <string id="SettingsTextAlign">Leva (izklopljena) ali desna (vklopljena) poravnava menija.</string>
<string id="SettingsWidgetStart">(Samo pripomoček) Samodejno zaženite aplikacijo iz pripomočka, ne da bi čakali na dotik.</string>
</strings> </strings>

View File

@ -40,6 +40,7 @@
<string id="Available" scope="glance">Disponible</string> <string id="Available" scope="glance">Disponible</string>
<string id="Checking" scope="glance">Comprobación...</string> <string id="Checking" scope="glance">Comprobación...</string>
<string id="Unavailable" scope="glance">Indisponible</string> <string id="Unavailable" scope="glance">Indisponible</string>
<string id="Unconfigured" scope="glance">Desconfigurado</string>
<string id="GlanceMenu" scope="glance">Menú</string> <string id="GlanceMenu" scope="glance">Menú</string>
<!-- Para la configuración GUI --> <!-- Para la configuración GUI -->
<string id="SettingsApiKey">Clave API para HomeAssistant.</string> <string id="SettingsApiKey">Clave API para HomeAssistant.</string>
@ -50,4 +51,5 @@
<string id="SettingsConfirmTimeout">Después de este tiempo (en segundos), se cierra automáticamente un cuadro de diálogo de confirmación de una acción y se cancela la acción. Establezca en 0 para desactivar el tiempo de espera.</string> <string id="SettingsConfirmTimeout">Después de este tiempo (en segundos), se cierra automáticamente un cuadro de diálogo de confirmación de una acción y se cancela la acción. Establezca en 0 para desactivar el tiempo de espera.</string>
<string id="SettingsUi">Representando tipos con iconos (apagados) o con etiquetas (encendido).</string> <string id="SettingsUi">Representando tipos con iconos (apagados) o con etiquetas (encendido).</string>
<string id="SettingsTextAlign">Alineación del menú izquierda (desactivada) o derecha (activada).</string> <string id="SettingsTextAlign">Alineación del menú izquierda (desactivada) o derecha (activada).</string>
<string id="SettingsWidgetStart">(Solo widget) Inicia automáticamente la aplicación desde el widget sin esperar un toque.</string>
</strings> </strings>

View File

@ -40,14 +40,16 @@
<string id="Available" scope="glance">Tillgängliga</string> <string id="Available" scope="glance">Tillgängliga</string>
<string id="Checking" scope="glance">Kontroll...</string> <string id="Checking" scope="glance">Kontroll...</string>
<string id="Unavailable" scope="glance">Inte tillgänglig</string> <string id="Unavailable" scope="glance">Inte tillgänglig</string>
<string id="Unconfigured" scope="glance">Okonfigurerad</string>
<string id="GlanceMenu" scope="glance">Meny</string> <string id="GlanceMenu" scope="glance">Meny</string>
<!-- För inställningar GUI --> <!-- För inställningar GUI -->
<string id="SettingsApiKey">API-nyckel för HomeAssistant.</string> <string id="SettingsApiKey">API-nyckel för HomeAssistant.</string>
<string id="SettingsApiKeyPrompt">Långlivad åtkomsttoken.</string> <string id="SettingsApiKeyPrompt">Långlivad åtkomsttoken.</string>
<string id="SettingsApiUrl">URL för HomeAssistant API.</string> <string id="SettingsApiUrl">URL för HomeAssistant API.</string>
<string id="SettingsConfigUrl">URL för menykonfiguration (JSON).</string> <string id="SettingsConfigUrl">URL för menykonfiguration (JSON).</string>
<string id="SettingsAppTimeout">Timeout i sekunder. Avsluta programmet efter denna period av inaktivitet för att spara enhetens batteri.</string> <string id="SettingsAppTimeout">Timeout sekunder. Avsluta programmet efter denna period av inaktivitet för att spara enhetens batteri.</string>
<string id="SettingsConfirmTimeout">Efter denna tid (i sekunder) stängs en bekräftelsedialog för en åtgärd automatiskt och åtgärden avbryts. Ställ in på 0 för att inaktivera timeout.</string> <string id="SettingsConfirmTimeout">Efter denna tid (i sekunder) stängs en bekräftelsedialog för en åtgärd automatiskt och åtgärden avbryts. Ställ in på 0 för att inaktivera timeout.</string>
<string id="SettingsUi">Representerar typer med ikoner (av) eller med etiketter (på).</string> <string id="SettingsUi">Representerar typer med ikoner (av) eller med etiketter (på).</string>
<string id="SettingsTextAlign">Vänster (av) eller höger (på) menyjustering.</string> <string id="SettingsTextAlign">Vänster (av) eller höger (på) menyjustering.</string>
<string id="SettingsWidgetStart">(Endast widget) Starta programmet automatiskt från widgeten utan att vänta på ett tryck.</string>
</strings> </strings>

View File

@ -40,6 +40,7 @@
<string id="Available" scope="glance">มีอยู่</string> <string id="Available" scope="glance">มีอยู่</string>
<string id="Checking" scope="glance">กำลังตรวจสอบ...</string> <string id="Checking" scope="glance">กำลังตรวจสอบ...</string>
<string id="Unavailable" scope="glance">ไม่พร้อมใช้งาน</string> <string id="Unavailable" scope="glance">ไม่พร้อมใช้งาน</string>
<string id="Unconfigured" scope="glance">ไม่ได้กำหนดค่า</string>
<string id="GlanceMenu" scope="glance">เมนู</string> <string id="GlanceMenu" scope="glance">เมนู</string>
<!-- สำหรับการตั้งค่า GUI --> <!-- สำหรับการตั้งค่า GUI -->
<string id="SettingsApiKey">คีย์ API สำหรับ HomeAssistant</string> <string id="SettingsApiKey">คีย์ API สำหรับ HomeAssistant</string>
@ -50,4 +51,5 @@
<string id="SettingsConfirmTimeout">หลังจากเวลานี้ (เป็นวินาที) กล่องโต้ตอบการยืนยันสำหรับการดำเนินการจะปิดโดยอัตโนมัติและการดำเนินการจะถูกยกเลิก ตั้งค่าเป็น 0 เพื่อปิดใช้งานการหมดเวลา</string> <string id="SettingsConfirmTimeout">หลังจากเวลานี้ (เป็นวินาที) กล่องโต้ตอบการยืนยันสำหรับการดำเนินการจะปิดโดยอัตโนมัติและการดำเนินการจะถูกยกเลิก ตั้งค่าเป็น 0 เพื่อปิดใช้งานการหมดเวลา</string>
<string id="SettingsUi">เป็นตัวแทนประเภทด้วยไอคอน (ปิด) หรือมีป้ายกำกับ (เปิด)</string> <string id="SettingsUi">เป็นตัวแทนประเภทด้วยไอคอน (ปิด) หรือมีป้ายกำกับ (เปิด)</string>
<string id="SettingsTextAlign">การจัดตำแหน่งเมนูซ้าย (ปิด) หรือขวา (เปิด)</string> <string id="SettingsTextAlign">การจัดตำแหน่งเมนูซ้าย (ปิด) หรือขวา (เปิด)</string>
<string id="SettingsWidgetStart">(วิดเจ็ตเท่านั้น) เริ่มแอปพลิเคชันโดยอัตโนมัติจากวิดเจ็ตโดยไม่ต้องรอการแตะ</string>
</strings> </strings>

View File

@ -36,10 +36,11 @@
<string id="ConfigUrlNotFound">URL bulunamadı. Ayarlarda Olası Yapılandırma URL'si hatası.</string> <string id="ConfigUrlNotFound">URL bulunamadı. Ayarlarda Olası Yapılandırma URL'si hatası.</string>
<string id="NoJson">HTTP isteğinden JSON döndürülmedi.</string> <string id="NoJson">HTTP isteğinden JSON döndürülmedi.</string>
<string id="UnhandledHttpErr">HTTP isteği hata kodunu döndürdü =</string> <string id="UnhandledHttpErr">HTTP isteği hata kodunu döndürdü =</string>
<string id="TrailingSlashErr">API URL'sinin sonunda eğik çizgi '/' olmamalıdır</string> <string id="TrailingSlashErr">API URL'sinin sonunda '/' eğik çizgi olmamalıdır</string>
<string id="Available" scope="glance">Mevcut</string> <string id="Available" scope="glance">Mevcut</string>
<string id="Checking" scope="glance">Kontrol etme...</string> <string id="Checking" scope="glance">Kontrol etme...</string>
<string id="Unavailable" scope="glance">Kullanım dışı</string> <string id="Unavailable" scope="glance">Kullanım dışı</string>
<string id="Unconfigured" scope="glance">Yapılandırılmamış</string>
<string id="GlanceMenu" scope="glance">Menü</string> <string id="GlanceMenu" scope="glance">Menü</string>
<!-- Ayarlar GUI'si için --> <!-- Ayarlar GUI'si için -->
<string id="SettingsApiKey">HomeAssistant için API Anahtarı.</string> <string id="SettingsApiKey">HomeAssistant için API Anahtarı.</string>
@ -47,7 +48,8 @@
<string id="SettingsApiUrl">HomeAssistant API'sinin URL'si.</string> <string id="SettingsApiUrl">HomeAssistant API'sinin URL'si.</string>
<string id="SettingsConfigUrl">Menü yapılandırmasının URL'si (JSON).</string> <string id="SettingsConfigUrl">Menü yapılandırmasının URL'si (JSON).</string>
<string id="SettingsAppTimeout">Saniye cinsinden zaman aşımı. Cihazın pilinden tasarruf etmek için bu süre boyunca işlem yapılmadığında uygulamadan çıkın.</string> <string id="SettingsAppTimeout">Saniye cinsinden zaman aşımı. Cihazın pilinden tasarruf etmek için bu süre boyunca işlem yapılmadığında uygulamadan çıkın.</string>
<string id="SettingsConfirmTimeout">Bu sürenin sonunda (saniye cinsinden), bir eyleme ilişkin onay iletişim kutusu otomatik olarak kapatılır ve eylem iptal edilir. Zaman aşımını devre dışı bırakmak için 0'a ayarlayın.</string> <string id="SettingsConfirmTimeout">Bu sürenin sonunda (saniye olarak), bir eyleme ilişkin onay iletişim kutusu otomatik olarak kapatılır ve eylem iptal edilir. Zaman aşımını devre dışı bırakmak için 0'a ayarlayın.</string>
<string id="SettingsUi">Türleri simgelerle (kapalı) veya etiketlerle (açık) temsil etme.</string> <string id="SettingsUi">Türleri simgelerle (kapalı) veya etiketlerle (açık) temsil etme.</string>
<string id="SettingsTextAlign">Sol (kapalı) veya Sağ (açık) Menü Hizalaması.</string> <string id="SettingsTextAlign">Sol (kapalı) veya Sağ (açık) Menü Hizalaması.</string>
<string id="SettingsWidgetStart">(Yalnızca Widget) Dokunmayı beklemeden uygulamayı widget'tan otomatik olarak başlatın.</string>
</strings> </strings>

View File

@ -15,7 +15,7 @@
<!-- <!--
Generated by Google Translate: English to Ukrainian Generated by Google Translate: English to Ukrainian
Згенеровано Google Translate з англійської Створено Google Translate з англійської
--> -->
<strings> <strings>
@ -40,14 +40,16 @@
<string id="Available" scope="glance">в наявності</string> <string id="Available" scope="glance">в наявності</string>
<string id="Checking" scope="glance">Перевірка...</string> <string id="Checking" scope="glance">Перевірка...</string>
<string id="Unavailable" scope="glance">Недоступний</string> <string id="Unavailable" scope="glance">Недоступний</string>
<string id="Unconfigured" scope="glance">Неналаштований</string>
<string id="GlanceMenu" scope="glance">Меню</string> <string id="GlanceMenu" scope="glance">Меню</string>
<!-- Для налаштування GUI --> <!-- Для налаштування GUI -->
<string id="SettingsApiKey">Ключ API для HomeAssistant.</string> <string id="SettingsApiKey">Ключ API для HomeAssistant.</string>
<string id="SettingsApiKeyPrompt">Довговічний маркер доступу.</string> <string id="SettingsApiKeyPrompt">Довговічний маркер доступу.</string>
<string id="SettingsApiUrl">URL для HomeAssistant API.</string> <string id="SettingsApiUrl">URL для HomeAssistant API.</string>
<string id="SettingsConfigUrl">URL-адреса для налаштування меню (JSON).</string> <string id="SettingsConfigUrl">URL для налаштування меню (JSON).</string>
<string id="SettingsAppTimeout">Час очікування в секундах. Вийдіть із програми після цього періоду бездіяльності, щоб заощадити батарею пристрою.</string> <string id="SettingsAppTimeout">Час очікування в секундах. Вийдіть із програми після цього періоду бездіяльності, щоб заощадити батарею пристрою.</string>
<string id="SettingsConfirmTimeout">Після закінчення цього часу (у секундах) діалогове вікно підтвердження дії автоматично закривається, а дія скасовується. Встановіть 0, щоб вимкнути тайм-аут.</string> <string id="SettingsConfirmTimeout">Після закінчення цього часу (у секундах) діалогове вікно підтвердження дії автоматично закривається, а дія скасовується. Встановіть 0, щоб вимкнути тайм-аут.</string>
<string id="SettingsUi">Представлення типів піктограмами (вимкнено) або мітками (увімкнено).</string> <string id="SettingsUi">Представлення типів піктограмами (вимкнено) або мітками (увімкнено).</string>
<string id="SettingsTextAlign">Ліворуч (вимкнено) або праворуч (увімкнено) вирівнювання меню.</string> <string id="SettingsTextAlign">Ліворуч (вимкнено) або праворуч (увімкнено) вирівнювання меню.</string>
<string id="SettingsWidgetStart">(Лише віджет) Автоматично запускайте програму з віджета, не чекаючи дотику.</string>
</strings> </strings>

View File

@ -40,6 +40,7 @@
<string id="Available" scope="glance">Có sẵn</string> <string id="Available" scope="glance">Có sẵn</string>
<string id="Checking" scope="glance">Đang kiểm tra...</string> <string id="Checking" scope="glance">Đang kiểm tra...</string>
<string id="Unavailable" scope="glance">Không có sẵn</string> <string id="Unavailable" scope="glance">Không có sẵn</string>
<string id="Unconfigured" scope="glance">Chưa được định cấu hình</string>
<string id="GlanceMenu" scope="glance">Thực đơn</string> <string id="GlanceMenu" scope="glance">Thực đơn</string>
<!-- Đối với GUI cài đặt --> <!-- Đối với GUI cài đặt -->
<string id="SettingsApiKey">Khóa API cho HomeAssistant.</string> <string id="SettingsApiKey">Khóa API cho HomeAssistant.</string>
@ -47,7 +48,8 @@
<string id="SettingsApiUrl">URL cho API HomeAssistant.</string> <string id="SettingsApiUrl">URL cho API HomeAssistant.</string>
<string id="SettingsConfigUrl">URL cho cấu hình menu (JSON).</string> <string id="SettingsConfigUrl">URL cho cấu hình menu (JSON).</string>
<string id="SettingsAppTimeout">Thời gian chờ tính bằng giây. Thoát khỏi ứng dụng sau khoảng thời gian không hoạt động này để tiết kiệm pin cho thiết bị.</string> <string id="SettingsAppTimeout">Thời gian chờ tính bằng giây. Thoát khỏi ứng dụng sau khoảng thời gian không hoạt động này để tiết kiệm pin cho thiết bị.</string>
<string id="SettingsConfirmTimeout">Sau thời gian này (tính bằng giây), hộp thoại xác nhận cho một hành động sẽ tự động đóng lại và hành động đó sẽ bị hủy. Đặt thành 0 để tắt thời gian chờ.</string> <string id="SettingsConfirmTimeout">Sau thời gian này (tính bằng giây), hộp thoại xác nhận cho một hành động sẽ tự động đóng và hành động đó sẽ bị hủy. Đặt thành 0 để tắt thời gian chờ.</string>
<string id="SettingsUi">Thể hiện các loại bằng biểu tượng (tắt) hoặc bằng nhãn (bật).</string> <string id="SettingsUi">Biểu diễn các loại bằng biểu tượng (tắt) hoặc bằng nhãn (bật).</string>
<string id="SettingsTextAlign">Căn chỉnh menu Trái (tắt) hoặc Phải (bật).</string> <string id="SettingsTextAlign">Căn chỉnh menu Trái (tắt) hoặc Phải (bật).</string>
<string id="SettingsWidgetStart">(Chỉ tiện ích) Tự động khởi động ứng dụng từ tiện ích mà không cần chờ nhấn.</string>
</strings> </strings>

View File

@ -40,6 +40,7 @@
<string id="Available" scope="glance">可用的</string> <string id="Available" scope="glance">可用的</string>
<string id="Checking" scope="glance">检查...</string> <string id="Checking" scope="glance">检查...</string>
<string id="Unavailable" scope="glance">不可用</string> <string id="Unavailable" scope="glance">不可用</string>
<string id="Unconfigured" scope="glance">未配置</string>
<string id="GlanceMenu" scope="glance">菜单</string> <string id="GlanceMenu" scope="glance">菜单</string>
<!-- 对于设置 GUI --> <!-- 对于设置 GUI -->
<string id="SettingsApiKey">HomeAssistant 的 API 密钥。</string> <string id="SettingsApiKey">HomeAssistant 的 API 密钥。</string>
@ -50,4 +51,5 @@
<string id="SettingsConfirmTimeout">在此时间(以秒为单位)之后,操作的确认对话框将自动关闭并取消该操作。设置为 0 以禁用超时。</string> <string id="SettingsConfirmTimeout">在此时间(以秒为单位)之后,操作的确认对话框将自动关闭并取消该操作。设置为 0 以禁用超时。</string>
<string id="SettingsUi">用图标(关闭)或标签(打开)表示类型。</string> <string id="SettingsUi">用图标(关闭)或标签(打开)表示类型。</string>
<string id="SettingsTextAlign">左(关)或右(开)菜单对齐。</string> <string id="SettingsTextAlign">左(关)或右(开)菜单对齐。</string>
<string id="SettingsWidgetStart">(仅限小部件)从小部件自动启动应用程序,无需等待点击。</string>
</strings> </strings>

View File

@ -40,6 +40,7 @@
<string id="Available" scope="glance">可用的</string> <string id="Available" scope="glance">可用的</string>
<string id="Checking" scope="glance">檢查...</string> <string id="Checking" scope="glance">檢查...</string>
<string id="Unavailable" scope="glance">不可用</string> <string id="Unavailable" scope="glance">不可用</string>
<string id="Unconfigured" scope="glance">未配置</string>
<string id="GlanceMenu" scope="glance">選單</string> <string id="GlanceMenu" scope="glance">選單</string>
<!-- 對於設定 GUI --> <!-- 對於設定 GUI -->
<string id="SettingsApiKey">HomeAssistant 的 API 金鑰。</string> <string id="SettingsApiKey">HomeAssistant 的 API 金鑰。</string>
@ -50,4 +51,5 @@
<string id="SettingsConfirmTimeout">在此時間(以秒為單位)之後,操作的確認對話方塊將自動關閉並取消該操作。設定為 0 以停用逾時。</string> <string id="SettingsConfirmTimeout">在此時間(以秒為單位)之後,操作的確認對話方塊將自動關閉並取消該操作。設定為 0 以停用逾時。</string>
<string id="SettingsUi">用圖示(關閉)或標籤(開啟)表示類型。</string> <string id="SettingsUi">用圖示(關閉)或標籤(開啟)表示類型。</string>
<string id="SettingsTextAlign">左(關)或右(開)選單對齊。</string> <string id="SettingsTextAlign">左(關)或右(開)選單對齊。</string>
<string id="SettingsWidgetStart">(僅限小部件)從小部件自動啟動應用程序,無需等待點擊。</string>
</strings> </strings>

View File

@ -40,6 +40,7 @@
<string id="Available" scope="glance">Tersedia</string> <string id="Available" scope="glance">Tersedia</string>
<string id="Checking" scope="glance">Menyemak...</string> <string id="Checking" scope="glance">Menyemak...</string>
<string id="Unavailable" scope="glance">Tidak ada</string> <string id="Unavailable" scope="glance">Tidak ada</string>
<string id="Unconfigured" scope="glance">Tidak dikonfigurasikan</string>
<string id="GlanceMenu" scope="glance">Menu</string> <string id="GlanceMenu" scope="glance">Menu</string>
<!-- Untuk GUI tetapan --> <!-- Untuk GUI tetapan -->
<string id="SettingsApiKey">Kunci API untuk HomeAssistant.</string> <string id="SettingsApiKey">Kunci API untuk HomeAssistant.</string>
@ -50,4 +51,5 @@
<string id="SettingsConfirmTimeout">Selepas masa ini (dalam beberapa saat), dialog pengesahan untuk tindakan ditutup secara automatik dan tindakan itu dibatalkan. Tetapkan kepada 0 untuk melumpuhkan tamat masa.</string> <string id="SettingsConfirmTimeout">Selepas masa ini (dalam beberapa saat), dialog pengesahan untuk tindakan ditutup secara automatik dan tindakan itu dibatalkan. Tetapkan kepada 0 untuk melumpuhkan tamat masa.</string>
<string id="SettingsUi">Mewakili jenis dengan ikon (dimatikan) atau dengan label (dihidupkan).</string> <string id="SettingsUi">Mewakili jenis dengan ikon (dimatikan) atau dengan label (dihidupkan).</string>
<string id="SettingsTextAlign">Penjajaran Menu Kiri (mati) atau Kanan (hidup).</string> <string id="SettingsTextAlign">Penjajaran Menu Kiri (mati) atau Kanan (hidup).</string>
<string id="SettingsWidgetStart">(Widget sahaja) Mulakan aplikasi secara automatik daripada widget tanpa menunggu satu ketikan.</string>
</strings> </strings>

View File

@ -36,8 +36,22 @@
--> -->
<property id="confirm_timeout" type="number">3</property> <property id="confirm_timeout" type="number">3</property>
<!--
Lean UI vs second level of menu text.
-->
<property id="types_representation" type="boolean"></property> <property id="types_representation" type="boolean"></property>
<!--
left to right or right-to-left text. Language dependent.
-->
<property id="menu_alignment" type="boolean"></property> <property id="menu_alignment" type="boolean"></property>
<!--
Widget specific setting:
As soon as the menu has been fetched start show the menu of items.
This behaviour is inconsistent with the standard Garmin User Interface, but has been
requested by users so has been made the non-default option.
-->
<property id="widget_start_no_tap" type="boolean"></property>
</properties> </properties>

View File

@ -81,4 +81,13 @@
/> />
</setting> </setting>
<setting
propertyKey="@Properties.widget_start_no_tap"
title="@Strings.SettingsWidgetStart"
>
<settingConfig
type="boolean"
/>
</setting>
</settings> </settings>

View File

@ -34,6 +34,7 @@
<string id="Available" scope="glance">Available</string> <string id="Available" scope="glance">Available</string>
<string id="Checking" scope="glance">Checking...</string> <string id="Checking" scope="glance">Checking...</string>
<string id="Unavailable" scope="glance">Unavailable</string> <string id="Unavailable" scope="glance">Unavailable</string>
<string id="Unconfigured" scope="glance">Unconfigured</string>
<string id="GlanceMenu" scope="glance">Menu</string> <string id="GlanceMenu" scope="glance">Menu</string>
<!-- For the settings GUI --> <!-- For the settings GUI -->
@ -45,4 +46,5 @@
<string id="SettingsConfirmTimeout">After this time (in seconds), a confirmation dialog for an action is automatically closed and the action is cancelled. Set to 0 to disable the timeout.</string> <string id="SettingsConfirmTimeout">After this time (in seconds), a confirmation dialog for an action is automatically closed and the action is cancelled. Set to 0 to disable the timeout.</string>
<string id="SettingsUi">Representing types with icons (off) or with labels (on).</string> <string id="SettingsUi">Representing types with icons (off) or with labels (on).</string>
<string id="SettingsTextAlign">Left (off) or Right (on) Menu Alignment.</string> <string id="SettingsTextAlign">Left (off) or Right (on) Menu Alignment.</string>
<string id="SettingsWidgetStart">(Widget only) Automatically start the application from the widget without waiting for a tap.</string>
</strings> </strings>

View File

@ -29,37 +29,37 @@ using Toybox.Timer;
class Alert extends WatchUi.View { class Alert extends WatchUi.View {
private static const bRadius = 10; private static const bRadius = 10;
private var mTimer; private var mTimer as Timer.Timer;
private var mTimeout; private var mTimeout as Lang.Number;
private var mText; private var mText as Lang.String;
private var mFont; private var mFont as Graphics.FontType;
private var mFgcolor; private var mFgcolor as Graphics.ColorType;
private var mBgcolor; private var mBgcolor as Graphics.ColorType;
function initialize(params as Lang.Dictionary) { function initialize(params as Lang.Dictionary) {
View.initialize(); View.initialize();
mText = params.get(:text); mText = params.get(:text) as Lang.String;
if (mText == null) { if (mText == null) {
mText = "Alert"; mText = "Alert";
} }
mFont = params.get(:font); mFont = params.get(:font) as Graphics.FontType;
if (mFont == null) { if (mFont == null) {
mFont = Graphics.FONT_MEDIUM; mFont = Graphics.FONT_MEDIUM;
} }
mFgcolor = params.get(:fgcolor); mFgcolor = params.get(:fgcolor) as Graphics.ColorType;
if (mFgcolor == null) { if (mFgcolor == null) {
mFgcolor = Graphics.COLOR_BLACK; mFgcolor = Graphics.COLOR_BLACK;
} }
mBgcolor = params.get(:bgcolor); mBgcolor = params.get(:bgcolor) as Graphics.ColorType;
if (mBgcolor == null) { if (mBgcolor == null) {
mBgcolor = Graphics.COLOR_WHITE; mBgcolor = Graphics.COLOR_WHITE;
} }
mTimeout = params.get(:timeout); mTimeout = params.get(:timeout) as Lang.Number;
if (mTimeout == null) { if (mTimeout == null) {
mTimeout = 2000; mTimeout = 2000;
} }
@ -83,7 +83,7 @@ class Alert extends WatchUi.View {
var bX = (dc.getWidth() - bWidth) / 2; var bX = (dc.getWidth() - bWidth) / 2;
var bY = (dc.getHeight() - bHeight) / 2; var bY = (dc.getHeight() - bHeight) / 2;
if(dc has :setAntiAlias) { if (dc has :setAntiAlias) {
dc.setAntiAlias(true); dc.setAntiAlias(true);
} }
@ -112,30 +112,30 @@ class Alert extends WatchUi.View {
// Remove the alert from view, usually on user input, but that is defined by the calling function. // Remove the alert from view, usually on user input, but that is defined by the calling function.
// //
function dismiss() { function dismiss() as Void {
WatchUi.popView(SLIDE_IMMEDIATE); WatchUi.popView(SLIDE_IMMEDIATE);
} }
function pushView(transition) { function pushView(transition) as Void {
WatchUi.pushView(self, new AlertDelegate(self), transition); WatchUi.pushView(self, new AlertDelegate(self), transition);
} }
} }
class AlertDelegate extends WatchUi.InputDelegate { class AlertDelegate extends WatchUi.InputDelegate {
hidden var mView; private var mView;
function initialize(view) { function initialize(view) {
InputDelegate.initialize(); InputDelegate.initialize();
mView = view; mView = view;
} }
function onKey(evt) { function onKey(evt) as Lang.Boolean {
mView.dismiss(); mView.dismiss();
getApp().getQuitTimer().reset(); getApp().getQuitTimer().reset();
return true; return true;
} }
function onTap(evt) { function onTap(evt) as Lang.Boolean {
mView.dismiss(); mView.dismiss();
getApp().getQuitTimer().reset(); getApp().getQuitTimer().reset();
return true; return true;

View File

@ -33,6 +33,7 @@ using Toybox.Graphics;
using Toybox.Lang; using Toybox.Lang;
using Toybox.WatchUi; using Toybox.WatchUi;
using Toybox.Communications; using Toybox.Communications;
using Toybox.Timer;
class ErrorView extends ScalableView { class ErrorView extends ScalableView {
private var mText as Lang.String = ""; private var mText as Lang.String = "";
@ -94,14 +95,15 @@ class ErrorView extends ScalableView {
} }
if (!mShown) { if (!mShown) {
instance.setText(text); instance.setText(text);
mShown = true;
} }
return [instance, instance.getDelegate()]; return [instance, instance.getDelegate()];
} }
// Create or reuse an existing ErrorView, and pass on the text. // Create or reuse an existing ErrorView, and pass on the text.
static function show(text as Lang.String) as Void { static function show(text as Lang.String) as Void {
create(text); // Ignore returned values
if (!mShown) { if (!mShown) {
create(text); // Ignore returned values
WatchUi.pushView(instance, instance.getDelegate(), WatchUi.SLIDE_UP); WatchUi.pushView(instance, instance.getDelegate(), WatchUi.SLIDE_UP);
// This must be last to avoid a race condition with unShow(), where the // This must be last to avoid a race condition with unShow(), where the
// ErrorView can't be dismissed. // ErrorView can't be dismissed.
@ -112,6 +114,10 @@ class ErrorView extends ScalableView {
static function unShow() as Void { static function unShow() as Void {
if (mShown) { if (mShown) {
WatchUi.popView(WatchUi.SLIDE_DOWN); WatchUi.popView(WatchUi.SLIDE_DOWN);
// The call to 'updateNextMenuItem()' must be on another thread so that the view is popped above.
var myTimer = new Timer.Timer();
// Now this feels very "closely coupled" to the application, but it is the most reliable method instead of using a timer.
myTimer.start(getApp().method(:updateNextMenuItem), Globals.scApiResume, false);
// This must be last to avoid a race condition with show(), where the // This must be last to avoid a race condition with show(), where the
// ErrorView can't be dismissed. // ErrorView can't be dismissed.
mShown = false; mShown = false;

View File

@ -26,5 +26,10 @@ class Globals {
static const scDebug = false; static const scDebug = false;
static const scAlertTimeout = 2000; // ms static const scAlertTimeout = 2000; // ms
static const scTapTimeout = 1000; // ms static const scTapTimeout = 1000; // ms
// Time to let the existing HTTP responses get serviced after a
// Communications.NETWORK_RESPONSE_OUT_OF_MEMORY response code.
static const scApiBackoff = 1000; // ms static const scApiBackoff = 1000; // ms
// Needs to be long enough to enable a "double ESC" to quit the application from
// an ErrorView.
static const scApiResume = 200; // ms
} }

View File

@ -22,6 +22,7 @@ using Toybox.Application;
using Toybox.Lang; using Toybox.Lang;
using Toybox.WatchUi; using Toybox.WatchUi;
using Toybox.Application.Properties; using Toybox.Application.Properties;
using Toybox.Timer;
class HomeAssistantApp extends Application.AppBase { class HomeAssistantApp extends Application.AppBase {
private var strNoApiKey as Lang.String or Null; private var strNoApiKey as Lang.String or Null;
@ -37,19 +38,23 @@ class HomeAssistantApp extends Application.AppBase {
private var strTrailingSlashErr as Lang.String or Null; private var strTrailingSlashErr as Lang.String or Null;
private var strAvailable = WatchUi.loadResource($.Rez.Strings.Available); private var strAvailable = WatchUi.loadResource($.Rez.Strings.Available);
private var strUnavailable = WatchUi.loadResource($.Rez.Strings.Unavailable); private var strUnavailable = WatchUi.loadResource($.Rez.Strings.Unavailable);
private var strUnconfigured = WatchUi.loadResource($.Rez.Strings.Unconfigured);
private var mApiKey as Lang.String; private var mApiKey as Lang.String or Null; // The compiler can't tell these are updated by
private var mApiUrl as Lang.String or Null; // initialize(), hence the "or Null".
private var mConfigUrl as Lang.String or Null; //
private var mApiStatus as Lang.String = WatchUi.loadResource($.Rez.Strings.Checking); private var mApiStatus as Lang.String = WatchUi.loadResource($.Rez.Strings.Checking);
private var mMenuStatus as Lang.String = WatchUi.loadResource($.Rez.Strings.Checking); private var mMenuStatus as Lang.String = WatchUi.loadResource($.Rez.Strings.Checking);
private var mHaMenu as HomeAssistantView or Null; private var mHaMenu as HomeAssistantView or Null;
private var mQuitTimer as QuitTimer or Null; private var mQuitTimer as QuitTimer or Null;
private var mTimer as Timer.Timer or Null;
private var mItemsToUpdate; // Array initialised by onReturnFetchMenuConfig() private var mItemsToUpdate; // Array initialised by onReturnFetchMenuConfig()
private var mNextItemToUpdate = 0; // Index into the above array private var mNextItemToUpdate = 0; // Index into the above array
private var mIsGlance as Lang.Boolean = false; private var mIsGlance as Lang.Boolean = false;
function initialize() { function initialize() {
AppBase.initialize(); AppBase.initialize();
mApiKey = Properties.getValue("api_key"); onSettingsChanged();
// ATTENTION when adding stuff into this block: // ATTENTION when adding stuff into this block:
// Because of the >>GlanceView<<, it should contain only // Because of the >>GlanceView<<, it should contain only
// code, which is used as well for the glance: // code, which is used as well for the glance:
@ -110,24 +115,22 @@ class HomeAssistantApp extends Application.AppBase {
strTrailingSlashErr = WatchUi.loadResource($.Rez.Strings.TrailingSlashErr); strTrailingSlashErr = WatchUi.loadResource($.Rez.Strings.TrailingSlashErr);
mQuitTimer = new QuitTimer(); mQuitTimer = new QuitTimer();
var api_url = Properties.getValue("api_url") as Lang.String; if (mApiKey.length() == 0) {
if ((Properties.getValue("api_key") as Lang.String).length() == 0) {
if (Globals.scDebug) { if (Globals.scDebug) {
System.println("HomeAssistantApp getInitialView(): No API key in the application settings."); System.println("HomeAssistantApp getInitialView(): No API key in the application settings.");
} }
return ErrorView.create(strNoApiKey + "."); return ErrorView.create(strNoApiKey + ".");
} else if (api_url.length() == 0) { } else if (mApiUrl.length() == 0) {
if (Globals.scDebug) { if (Globals.scDebug) {
System.println("HomeAssistantApp getInitialView(): No API URL in the application settings."); System.println("HomeAssistantApp getInitialView(): No API URL in the application settings.");
} }
return ErrorView.create(strNoApiUrl + "."); return ErrorView.create(strNoApiUrl + ".");
} else if (api_url.substring(-1, api_url.length()).equals("/")) { } else if (mApiUrl.substring(-1, mApiUrl.length()).equals("/")) {
if (Globals.scDebug) { if (Globals.scDebug) {
System.println("HomeAssistantApp getInitialView(): API URL must not have a trailing slash '/'."); System.println("HomeAssistantApp getInitialView(): API URL must not have a trailing slash '/'.");
} }
return ErrorView.create(strTrailingSlashErr + "."); return ErrorView.create(strTrailingSlashErr + ".");
} else if ((Properties.getValue("config_url") as Lang.String).length() == 0) { } else if (mConfigUrl.length() == 0) {
if (Globals.scDebug) { if (Globals.scDebug) {
System.println("HomeAssistantApp getInitialView(): No configuration URL in the application settings."); System.println("HomeAssistantApp getInitialView(): No configuration URL in the application settings.");
} }
@ -215,6 +218,12 @@ class HomeAssistantApp extends Application.AppBase {
if (!mIsGlance) { if (!mIsGlance) {
mHaMenu = new HomeAssistantView(data, null); mHaMenu = new HomeAssistantView(data, null);
mQuitTimer.begin(); mQuitTimer.begin();
if (Properties.getValue("widget_start_no_tap")) {
// As soon as the menu has been fetched start show the menu of items.
// This behaviour is inconsistent with the standard Garmin User Interface, but has been
// requested by users so has been made the non-default option.
pushHomeAssistantMenuView();
}
mItemsToUpdate = mHaMenu.getItemsToUpdate(); mItemsToUpdate = mHaMenu.getItemsToUpdate();
// Start the continuous update process that continues for as long as the application is running. // Start the continuous update process that continues for as long as the application is running.
// The chain of functions from 'updateNextMenuItem()' calls 'updateNextMenuItem()' on completion. // The chain of functions from 'updateNextMenuItem()' calls 'updateNextMenuItem()' on completion.
@ -225,7 +234,6 @@ class HomeAssistantApp extends Application.AppBase {
WatchUi.switchToView(mHaMenu, new HomeAssistantViewDelegate(false), WatchUi.SLIDE_IMMEDIATE); WatchUi.switchToView(mHaMenu, new HomeAssistantViewDelegate(false), WatchUi.SLIDE_IMMEDIATE);
} }
} }
WatchUi.requestUpdate();
break; break;
default: default:
@ -237,20 +245,48 @@ class HomeAssistantApp extends Application.AppBase {
} }
break; break;
} }
WatchUi.requestUpdate();
} }
(:glance) (:glance)
function fetchMenuConfig() as Void { function fetchMenuConfig() as Void {
var options = { if (mConfigUrl.equals("")) {
:method => Communications.HTTP_REQUEST_METHOD_GET, mMenuStatus = strUnconfigured;
:responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON WatchUi.requestUpdate();
}; } else {
Communications.makeWebRequest( var options = {
Properties.getValue("config_url"), :method => Communications.HTTP_REQUEST_METHOD_GET,
null, :responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON
options, };
method(:onReturnFetchMenuConfig) if (! System.getDeviceSettings().phoneConnected) {
); if (Globals.scDebug) {
System.println("HomeAssistantToggleMenuItem getState(): No Phone connection, skipping API call.");
}
if (mIsGlance) {
WatchUi.requestUpdate();
} else {
ErrorView.show(strNoPhone + ".");
}
mMenuStatus = strUnavailable;
} else if (! System.getDeviceSettings().connectionAvailable) {
if (Globals.scDebug) {
System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call.");
}
if (mIsGlance) {
WatchUi.requestUpdate();
} else {
ErrorView.show(strNoInternet + ".");
}
mMenuStatus = strUnavailable;
} else {
Communications.makeWebRequest(
mConfigUrl,
null,
options,
method(:onReturnFetchMenuConfig)
);
}
}
} }
// Callback function after completing the GET request to fetch the API status. // Callback function after completing the GET request to fetch the API status.
@ -322,7 +358,6 @@ class HomeAssistantApp extends Application.AppBase {
ErrorView.show("API " + mApiStatus + "."); ErrorView.show("API " + mApiStatus + ".");
} }
} }
WatchUi.requestUpdate();
break; break;
default: default:
@ -333,23 +368,51 @@ class HomeAssistantApp extends Application.AppBase {
ErrorView.show(strUnhandledHttpErr + responseCode); ErrorView.show(strUnhandledHttpErr + responseCode);
} }
} }
WatchUi.requestUpdate();
} }
(:glance) (:glance)
function fetchApiStatus() as Void { function fetchApiStatus() as Void {
var options = { if (mApiUrl.equals("")) {
:method => Communications.HTTP_REQUEST_METHOD_GET, mApiStatus = strUnconfigured;
:headers => { WatchUi.requestUpdate();
"Authorization" => "Bearer " + mApiKey } else {
}, var options = {
:responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON :method => Communications.HTTP_REQUEST_METHOD_GET,
}; :headers => {
Communications.makeWebRequest( "Authorization" => "Bearer " + mApiKey
Properties.getValue("api_url") + "/", },
null, :responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON
options, };
method(:onReturnFetchApiStatus) if (! System.getDeviceSettings().phoneConnected) {
); if (Globals.scDebug) {
System.println("HomeAssistantToggleMenuItem getState(): No Phone connection, skipping API call.");
}
mApiStatus = strUnavailable;
if (mIsGlance) {
WatchUi.requestUpdate();
} else {
ErrorView.show(strNoPhone + ".");
}
} else if (! System.getDeviceSettings().connectionAvailable) {
if (Globals.scDebug) {
System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call.");
}
mApiStatus = strUnavailable;
if (mIsGlance) {
WatchUi.requestUpdate();
} else {
ErrorView.show(strNoInternet + ".");
}
} else {
Communications.makeWebRequest(
mApiUrl + "/",
null,
options,
method(:onReturnFetchApiStatus)
);
}
}
} }
function setApiStatus(s as Lang.String) { function setApiStatus(s as Lang.String) {
@ -387,11 +450,26 @@ class HomeAssistantApp extends Application.AppBase {
} }
(:glance) (:glance)
function getGlanceView() { function getGlanceView() as Lang.Array<WatchUi.GlanceView or WatchUi.GlanceViewDelegate> or Null {
mIsGlance = true; mIsGlance = true;
updateGlance();
mTimer = new Timer.Timer();
mTimer.start(method(:updateGlance), Globals.scApiBackoff, true);
return [new HomeAssistantGlanceView(self)];
}
// Required for the Glance update timer.
function updateGlance() as Void {
fetchMenuConfig(); fetchMenuConfig();
fetchApiStatus(); fetchApiStatus();
return [new HomeAssistantGlanceView(self)]; }
// Replace this functionality with a more central settings class as proposed in
// https://github.com/house-of-abbey/GarminHomeAssistant/pull/17.
function onSettingsChanged() as Void {
mApiKey = Properties.getValue("api_key");
mApiUrl = Properties.getValue("api_url");
mConfigUrl = Properties.getValue("config_url");
} }
} }

View File

@ -67,6 +67,8 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
} }
// Callback function after completing the GET request to fetch the status. // Callback function after completing the GET request to fetch the status.
// Terminate updating the toggle menu items via the chain of calls for a permanent network
// error. The ErrorView cancellation will resume the call chain.
// //
function onReturnGetState(responseCode as Lang.Number, data as Null or Lang.Dictionary or Lang.String) as Void { function onReturnGetState(responseCode as Lang.Number, data as Null or Lang.Dictionary or Lang.String) as Void {
if (Globals.scDebug) { if (Globals.scDebug) {
@ -74,8 +76,6 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Data: " + data); System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Data: " + data);
} }
// Provide the ability to terminate updating chain of calls for a permanent network error.
var keepUpdating = true;
var status = strUnavailable; var status = strUnavailable;
switch (responseCode) { switch (responseCode) {
case Communications.BLE_HOST_TIMEOUT: case Communications.BLE_HOST_TIMEOUT:
@ -111,8 +111,6 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
if (Globals.scDebug) { if (Globals.scDebug) {
System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: NETWORK_RESPONSE_OUT_OF_MEMORY, are we going too fast?"); System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: NETWORK_RESPONSE_OUT_OF_MEMORY, are we going too fast?");
} }
// Pause updates
keepUpdating = false;
var myTimer = new Timer.Timer(); var myTimer = new Timer.Timer();
// Now this feels very "closely coupled" to the application, but it is the most reliable method instead of using a timer. // Now this feels very "closely coupled" to the application, but it is the most reliable method instead of using a timer.
myTimer.start(getApp().method(:updateNextMenuItem), Globals.scApiBackoff, false); myTimer.start(getApp().method(:updateNextMenuItem), Globals.scApiBackoff, false);
@ -135,7 +133,6 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
} }
ErrorView.show(strApiUrlNotFound); ErrorView.show(strApiUrlNotFound);
} }
keepUpdating = false;
break; break;
case 405: case 405:
@ -143,7 +140,7 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: 405. " + mIdentifier + " " + data.get("message")); System.println("HomeAssistantToggleMenuItem onReturnGetState() Response Code: 405. " + mIdentifier + " " + data.get("message"));
} }
ErrorView.show("HTTP 405, " + mIdentifier + ". " + data.get("message")); ErrorView.show("HTTP 405, " + mIdentifier + ". " + data.get("message"));
keepUpdating = false;
break; break;
case 200: case 200:
@ -157,6 +154,8 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
} }
setUiToggle(state); setUiToggle(state);
ErrorView.unShow(); ErrorView.unShow();
// Now this feels very "closely coupled" to the application, but it is the most reliable method instead of using a timer.
getApp().updateNextMenuItem();
break; break;
default: default:
@ -165,10 +164,6 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
} }
ErrorView.show(strUnhandledHttpErr + responseCode); ErrorView.show(strUnhandledHttpErr + responseCode);
} }
if (keepUpdating) {
// Now this feels very "closely coupled" to the application, but it is the most reliable method instead of using a timer.
getApp().updateNextMenuItem();
}
getApp().setApiStatus(status); getApp().setApiStatus(status);
} }
@ -180,17 +175,18 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
}, },
:responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON :responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON
}; };
var keepUpdating = true;
if (! System.getDeviceSettings().phoneConnected) { if (! System.getDeviceSettings().phoneConnected) {
if (Globals.scDebug) { if (Globals.scDebug) {
System.println("HomeAssistantToggleMenuItem getState(): No Phone connection, skipping API call."); System.println("HomeAssistantToggleMenuItem getState(): No Phone connection, skipping API call.");
} }
ErrorView.show(strNoPhone + "."); ErrorView.show(strNoPhone + ".");
getApp().setApiStatus(strUnavailable);
} else if (! System.getDeviceSettings().connectionAvailable) { } else if (! System.getDeviceSettings().connectionAvailable) {
if (Globals.scDebug) { if (Globals.scDebug) {
System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call."); System.println("HomeAssistantToggleMenuItem getState(): No Internet connection, skipping API call.");
} }
ErrorView.show(strNoInternet + "."); ErrorView.show(strNoInternet + ".");
getApp().setApiStatus(strUnavailable);
} else { } else {
var url = Properties.getValue("api_url") + "/states/" + mIdentifier; var url = Properties.getValue("api_url") + "/states/" + mIdentifier;
if (Globals.scDebug) { if (Globals.scDebug) {
@ -202,19 +198,6 @@ class HomeAssistantToggleMenuItem extends WatchUi.ToggleMenuItem {
options, options,
method(:onReturnGetState) method(:onReturnGetState)
); );
// The update is called by onReturnGetState() instead
keepUpdating = false;
}
// On temporary failure, keep the updating going.
if (keepUpdating) {
// Need to avoid an infinite loop where the pushed ErrorView does not appear before getState() is called again
// and the call stack overflows. So continue the call chain from somewhere asynchronous.
var myTimer = new Timer.Timer();
// Now this feels very "closely coupled" to the application, but it is the most reliable method instead of using a timer.
myTimer.start(getApp().method(:updateNextMenuItem), 500, false);
if (Globals.scDebug) {
System.println("HomeAssistantToggleMenuItem getState(): Updated failed " + mIdentifier);
}
} }
} }