homebridge-ac-freedom 2.3.3 → 2.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.3.4
4
+
5
+ - **UI: badge colors** — Cloud (teal), Hybrid (green), Local (yellow) — clearly distinct from each other
6
+ - **UI: card colors** — all device cards now use the same neutral color regardless of connection mode
7
+ - **UI: Local device numbering** — Local devices now always start from Local #1, independent of cloud device count
8
+ - **UI: Poll Interval label** — removed "(seconds)" from the label; dropdown options now show "5 seconds", "10 seconds", etc.
9
+ - **UI: English only** — removed all 14 language files; strings are now embedded directly in the UI (no i18n fetch on load)
10
+
3
11
  ## 2.3.3
4
12
 
5
13
  - **Hybrid offline startup** — if cloud is unavailable at Homebridge startup and the device has a local IP + MAC configured, the device now starts in local-only mode instead of failing. Full hybrid mode resumes automatically on the next restart when internet is available.
package/README.md CHANGED
@@ -37,6 +37,7 @@ A [Homebridge](https://homebridge.io) plugin for controlling **AUX-based air con
37
37
  - **Multi-device** — configure as many ACs as needed
38
38
  - **Custom config UI** — built-in Homebridge UI with Fetch Devices button
39
39
  - Homebridge v1 & v2 compatible
40
+ - English UI
40
41
 
41
42
  ---
42
43
 
@@ -3,12 +3,15 @@
3
3
  --accent: #0095c8;
4
4
  --accent-light: rgba(0,149,200,0.10);
5
5
  --accent-border: rgba(0,149,200,0.28);
6
- --hybrid: #7c3aed;
7
- --hybrid-light: rgba(124,58,237,0.08);
8
- --hybrid-border: rgba(124,58,237,0.22);
9
- --local: #16a34a;
10
- --local-light: rgba(22,163,74,0.07);
11
- --local-border: rgba(22,163,74,0.22);
6
+ --hybrid: #16a34a;
7
+ --hybrid-light: rgba(22,163,74,0.08);
8
+ --hybrid-border: rgba(22,163,74,0.22);
9
+ --cloud-badge: #0095c8;
10
+ --cloud-badge-light: rgba(0,149,200,0.08);
11
+ --cloud-badge-border: rgba(0,149,200,0.28);
12
+ --local: #a16207;
13
+ --local-light: rgba(161,98,7,0.08);
14
+ --local-border: rgba(161,98,7,0.25);
12
15
  --text: #1a1a2e;
13
16
  --text-muted: #6b7280;
14
17
  --border: #e5e7eb;
@@ -22,12 +25,15 @@
22
25
  --accent: #00b4d8;
23
26
  --accent-light: rgba(0,180,216,0.08);
24
27
  --accent-border: rgba(0,180,216,0.26);
25
- --hybrid: #a78bfa;
26
- --hybrid-light: rgba(167,139,250,0.08);
27
- --hybrid-border: rgba(167,139,250,0.22);
28
- --local: #4ade80;
29
- --local-light: rgba(74,222,128,0.08);
30
- --local-border: rgba(74,222,128,0.22);
28
+ --hybrid: #4ade80;
29
+ --hybrid-light: rgba(74,222,128,0.08);
30
+ --hybrid-border: rgba(74,222,128,0.22);
31
+ --cloud-badge: #00b4d8;
32
+ --cloud-badge-light: rgba(0,180,216,0.08);
33
+ --cloud-badge-border: rgba(0,180,216,0.26);
34
+ --local: #facc15;
35
+ --local-light: rgba(250,204,21,0.08);
36
+ --local-border: rgba(250,204,21,0.22);
31
37
  --text: #e2e8f0;
32
38
  --text-muted: #94a3b8;
33
39
  --border: #334155;
@@ -102,8 +108,6 @@
102
108
  border: 1.5px solid var(--accent-border); border-radius: 12px;
103
109
  margin-bottom: 12px; background: var(--accent-light); overflow: hidden;
104
110
  }
105
- .device-card.hybrid-card { border-color: var(--hybrid-border); background: var(--hybrid-light); }
106
- .device-card.local-card { border-color: var(--local-border); background: var(--local-light); }
107
111
 
108
112
  .device-header {
109
113
  display: flex; justify-content: space-between; align-items: center;
@@ -115,14 +119,12 @@
115
119
  .chevron.open { transform: rotate(90deg); }
116
120
  .dev-name { font-size: 14px; font-weight: 700; color: var(--accent);
117
121
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
118
- .device-card.hybrid-card .dev-name { color: var(--hybrid); }
119
- .device-card.local-card .dev-name { color: var(--local); }
120
122
 
121
123
  .conn-badge {
122
124
  font-size: 10px; font-weight: 700; letter-spacing: .5px;
123
125
  padding: 2px 7px; border-radius: 20px; flex-shrink: 0; text-transform: uppercase;
124
126
  }
125
- .conn-badge.cloud { background: var(--accent-light); color: var(--accent); border: 1px solid var(--accent-border); }
127
+ .conn-badge.cloud { background: var(--cloud-badge-light); color: var(--cloud-badge); border: 1px solid var(--cloud-badge-border); }
126
128
  .conn-badge.hybrid { background: var(--hybrid-light); color: var(--hybrid); border: 1px solid var(--hybrid-border); }
127
129
  .conn-badge.local { background: var(--local-light); color: var(--local); border: 1px solid var(--local-border); }
128
130
  .dev-meta { font-size: 11px; color: var(--text-muted); white-space: nowrap; }
@@ -131,8 +133,6 @@
131
133
  padding: 14px 16px 18px;
132
134
  border-top: 1px solid var(--accent-border);
133
135
  }
134
- .device-card.hybrid-card .device-body { border-color: var(--hybrid-border); }
135
- .device-card.local-card .device-body { border-color: var(--local-border); }
136
136
  .device-body.collapsed { display: none; }
137
137
 
138
138
  /* ── Connection toggle (segmented) ── */
@@ -215,19 +215,22 @@
215
215
  }
216
216
  });
217
217
 
218
- /* ── i18n ─────────────────────────────────────────────────── */
219
- let t = {};
220
- async function loadTranslations() {
221
- let lang = 'en';
222
- try { lang = await homebridge.i18nCurrentLang(); } catch {}
223
- for (const l of [lang, lang.split('-')[0], 'en']) {
224
- try {
225
- const r = await fetch(`./i18n/${l}.json`);
226
- if (r.ok) { t = await r.json(); return; }
227
- } catch {}
228
- }
229
- }
230
- await loadTranslations();
218
+ /* ── Strings ──────────────────────────────────────────────── */
219
+ const t = {
220
+ deviceName: 'Device Name', connection: 'Connection Mode',
221
+ cloud: 'Cloud', local: 'Local',
222
+ email: 'Email', password: 'Password', region: 'Region',
223
+ ip: 'IP Address', mac: 'MAC Address',
224
+ fan: 'Fan', sleep: 'Sleep', display: 'Display',
225
+ health: 'Health', clean: 'Clean', eco: 'Eco',
226
+ comfWind: 'Comf. Wind',
227
+ tempStep: 'Temperature Step', pollInterval: 'Poll Interval',
228
+ addDevice: 'Add Device', remove: 'Remove',
229
+ hybrid: 'Hybrid', cloudCredentials: 'Cloud Credentials',
230
+ fetching: 'Fetching…', devicesFound: 'devices found',
231
+ fetchFailed: 'Fetch failed', fetch: 'Fetch',
232
+ cloudDevices: 'Cloud Devices', localDevices: 'Local Devices',
233
+ };
231
234
 
232
235
  /* ── Config ───────────────────────────────────────────────── */
233
236
  let config = {};
@@ -289,11 +292,11 @@
289
292
  <div class="fg" style="margin-bottom:0">
290
293
  <label>${t.pollInterval||'Poll Interval'}</label>
291
294
  <select class="d-field" data-i="${i}" data-f="pollInterval">
292
- <option value="5" ${poll==5 ?'selected':''}>5 s</option>
293
- <option value="10" ${poll==10?'selected':''}>10 s</option>
294
- <option value="20" ${poll==20?'selected':''}>20 s</option>
295
- <option value="30" ${poll==30?'selected':''}>30 s</option>
296
- <option value="60" ${poll==60?'selected':''}>60 s</option>
295
+ <option value="5" ${poll==5 ?'selected':''}>5 seconds</option>
296
+ <option value="10" ${poll==10?'selected':''}>10 seconds</option>
297
+ <option value="20" ${poll==20?'selected':''}>20 seconds</option>
298
+ <option value="30" ${poll==30?'selected':''}>30 seconds</option>
299
+ <option value="60" ${poll==60?'selected':''}>60 seconds</option>
297
300
  </select>
298
301
  </div>
299
302
  </div>
@@ -375,9 +378,9 @@
375
378
  }
376
379
 
377
380
  /* ── Render local-only device card ───────────────────────── */
378
- function renderLocalDevice(d, i) {
381
+ function renderLocalDevice(d, i, li) {
379
382
  const isOpen = expanded.has(i);
380
- const name = d.name || `Local #${i + 1}`;
383
+ const name = d.name || `Local #${li + 1}`;
381
384
  const local = d.local || {};
382
385
  const step = d.tempStep !== undefined ? d.tempStep : 0.5;
383
386
  const poll = d.pollInterval || 30;
@@ -390,7 +393,7 @@
390
393
  <span class="dev-name">${esc(name)}</span>
391
394
  </div>
392
395
  <div style="display:flex;align-items:center;gap:8px;flex-shrink:0;margin-left:8px">
393
- <span class="conn-badge cloud">${t.local||'Local'}</span>
396
+ <span class="conn-badge local">${t.local||'Local'}</span>
394
397
  <button class="btn btn-danger btn-sm btn-remove" data-i="${i}">${t.remove||'Remove'}</button>
395
398
  </div>
396
399
  </div>
@@ -431,7 +434,8 @@
431
434
  .filter(({ d }) => d.connection !== 'local');
432
435
  const localDevs = config.devices
433
436
  .map((d, i) => ({ d, i }))
434
- .filter(({ d }) => d.connection === 'local');
437
+ .filter(({ d }) => d.connection === 'local')
438
+ .map((item, li) => ({ ...item, li }));
435
439
 
436
440
  app.innerHTML = `
437
441
  <!-- Cloud Credentials -->
@@ -486,7 +490,7 @@
486
490
  ${t.localDevices||'Local Devices'}
487
491
  </div>
488
492
  <div id="local-device-list">
489
- ${localDevs.map(({ d, i }) => renderLocalDevice(d, i)).join('')}
493
+ ${localDevs.map(({ d, i, li }) => renderLocalDevice(d, i, li)).join('')}
490
494
  </div>
491
495
  <div class="fieldset" style="margin-top:10px">
492
496
  <button class="btn btn-primary" id="btn-add-local"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "homebridge-ac-freedom",
3
- "version": "2.3.3",
3
+ "version": "2.3.4",
4
4
  "displayName": "Homebridge AC Freedom",
5
5
  "description": "Homebridge plugin for AUX air conditioners via Broadlink (local UDP) and AUX Cloud API",
6
6
  "main": "index.js",
@@ -1,30 +0,0 @@
1
- {
2
- "deviceName": "اسم الجهاز",
3
- "connection": "الاتصال",
4
- "cloud": "السحابة",
5
- "local": "محلي",
6
- "email": "البريد الإلكتروني",
7
- "password": "كلمة المرور",
8
- "region": "المنطقة",
9
- "ip": "عنوان IP",
10
- "mac": "عنوان MAC",
11
- "fan": "مروحة",
12
- "sleep": "نوم",
13
- "display": "شاشة",
14
- "health": "صحة",
15
- "clean": "تنظيف",
16
- "eco": "اقتصادي",
17
- "comfWind": "رياح مريحة",
18
- "tempStep": "خطوة الحرارة",
19
- "pollInterval": "فترة الاستطلاع (ثانية)",
20
- "addDevice": "إضافة جهاز",
21
- "remove": "إزالة",
22
- "hybrid": "هجين",
23
- "cloudCredentials": "بيانات اعتماد السحابة",
24
- "fetching": "جارٍ الجلب...",
25
- "devicesFound": "أجهزة تم العثور عليها",
26
- "fetchFailed": "فشل الجلب",
27
- "fetch": "جلب",
28
- "cloudDevices": "أجهزة السحابة",
29
- "localDevices": "الأجهزة المحلية"
30
- }
@@ -1,30 +0,0 @@
1
- {
2
- "deviceName": "Gerätename",
3
- "connection": "Verbindung",
4
- "cloud": "Cloud",
5
- "local": "Lokal",
6
- "email": "E-Mail",
7
- "password": "Passwort",
8
- "region": "Region",
9
- "ip": "IP-Adresse",
10
- "mac": "MAC-Adresse",
11
- "fan": "Lüfter",
12
- "sleep": "Schlaf",
13
- "display": "Display",
14
- "health": "Gesundheit",
15
- "clean": "Reinigung",
16
- "eco": "Eco",
17
- "comfWind": "Komfortwind",
18
- "tempStep": "Temperaturschritt",
19
- "pollInterval": "Abfrageintervall (Sekunden)",
20
- "addDevice": "Gerät hinzufügen",
21
- "remove": "Entfernen",
22
- "hybrid": "Hybrid",
23
- "cloudCredentials": "Cloud-Anmeldeinformationen",
24
- "fetching": "Wird abgerufen...",
25
- "devicesFound": "Geräte gefunden",
26
- "fetchFailed": "Abruf fehlgeschlagen",
27
- "fetch": "Abrufen",
28
- "cloudDevices": "Cloud-Geräte",
29
- "localDevices": "Lokale Geräte"
30
- }
@@ -1,30 +0,0 @@
1
- {
2
- "deviceName": "Device Name",
3
- "connection": "Connection Mode",
4
- "cloud": "Cloud",
5
- "local": "Local",
6
- "email": "Email",
7
- "password": "Password",
8
- "region": "Region",
9
- "ip": "IP Address",
10
- "mac": "MAC Address",
11
- "fan": "Fan",
12
- "sleep": "Sleep",
13
- "display": "Display",
14
- "health": "Health",
15
- "clean": "Clean",
16
- "eco": "Eco",
17
- "comfWind": "Comf. Wind",
18
- "tempStep": "Temperature Step",
19
- "pollInterval": "Poll Interval (seconds)",
20
- "addDevice": "Add Device",
21
- "remove": "Remove",
22
- "hybrid": "Hybrid",
23
- "cloudCredentials": "Cloud Credentials",
24
- "fetching": "Fetching...",
25
- "devicesFound": "devices found",
26
- "fetchFailed": "Fetch failed",
27
- "fetch": "Fetch",
28
- "cloudDevices": "Cloud Devices",
29
- "localDevices": "Local Devices"
30
- }
@@ -1,30 +0,0 @@
1
- {
2
- "deviceName": "Nombre del dispositivo",
3
- "connection": "Conexión",
4
- "cloud": "Nube",
5
- "local": "Local",
6
- "email": "Correo electrónico",
7
- "password": "Contraseña",
8
- "region": "Región",
9
- "ip": "Dirección IP",
10
- "mac": "Dirección MAC",
11
- "fan": "Ventilador",
12
- "sleep": "Sueño",
13
- "display": "Pantalla",
14
- "health": "Salud",
15
- "clean": "Limpieza",
16
- "eco": "Eco",
17
- "comfWind": "Viento confort",
18
- "tempStep": "Paso de temperatura",
19
- "pollInterval": "Intervalo de consulta (segundos)",
20
- "addDevice": "Agregar dispositivo",
21
- "remove": "Eliminar",
22
- "hybrid": "Híbrido",
23
- "cloudCredentials": "Credenciales de nube",
24
- "fetching": "Obteniendo...",
25
- "devicesFound": "dispositivos encontrados",
26
- "fetchFailed": "Error al obtener",
27
- "fetch": "Obtener",
28
- "cloudDevices": "Dispositivos en la nube",
29
- "localDevices": "Dispositivos locales"
30
- }
@@ -1,30 +0,0 @@
1
- {
2
- "deviceName": "Nom de l'appareil",
3
- "connection": "Connexion",
4
- "cloud": "Cloud",
5
- "local": "Local",
6
- "email": "E-mail",
7
- "password": "Mot de passe",
8
- "region": "Région",
9
- "ip": "Adresse IP",
10
- "mac": "Adresse MAC",
11
- "fan": "Ventilateur",
12
- "sleep": "Sommeil",
13
- "display": "Affichage",
14
- "health": "Santé",
15
- "clean": "Nettoyage",
16
- "eco": "Éco",
17
- "comfWind": "Vent confort",
18
- "tempStep": "Pas de température",
19
- "pollInterval": "Intervalle d'interrogation (secondes)",
20
- "addDevice": "Ajouter un appareil",
21
- "remove": "Supprimer",
22
- "hybrid": "Hybride",
23
- "cloudCredentials": "Identifiants cloud",
24
- "fetching": "Récupération...",
25
- "devicesFound": "appareils trouvés",
26
- "fetchFailed": "Échec de la récupération",
27
- "fetch": "Récupérer",
28
- "cloudDevices": "Appareils cloud",
29
- "localDevices": "Appareils locaux"
30
- }
@@ -1,30 +0,0 @@
1
- {
2
- "deviceName": "Nome dispositivo",
3
- "connection": "Connessione",
4
- "cloud": "Cloud",
5
- "local": "Locale",
6
- "email": "E-mail",
7
- "password": "Password",
8
- "region": "Regione",
9
- "ip": "Indirizzo IP",
10
- "mac": "Indirizzo MAC",
11
- "fan": "Ventilatore",
12
- "sleep": "Sonno",
13
- "display": "Display",
14
- "health": "Salute",
15
- "clean": "Pulizia",
16
- "eco": "Eco",
17
- "comfWind": "Vento confort",
18
- "tempStep": "Passo temperatura",
19
- "pollInterval": "Intervallo polling (secondi)",
20
- "addDevice": "Aggiungi dispositivo",
21
- "remove": "Rimuovi",
22
- "hybrid": "Ibrido",
23
- "cloudCredentials": "Credenziali cloud",
24
- "fetching": "Recupero in corso...",
25
- "devicesFound": "dispositivi trovati",
26
- "fetchFailed": "Recupero non riuscito",
27
- "fetch": "Recupera",
28
- "cloudDevices": "Dispositivi cloud",
29
- "localDevices": "Dispositivi locali"
30
- }
@@ -1,30 +0,0 @@
1
- {
2
- "deviceName": "デバイス名",
3
- "connection": "接続",
4
- "cloud": "クラウド",
5
- "local": "ローカル",
6
- "email": "メールアドレス",
7
- "password": "パスワード",
8
- "region": "リージョン",
9
- "ip": "IPアドレス",
10
- "mac": "MACアドレス",
11
- "fan": "ファン",
12
- "sleep": "スリープ",
13
- "display": "ディスプレイ",
14
- "health": "健康",
15
- "clean": "クリーン",
16
- "eco": "エコ",
17
- "comfWind": "快適風",
18
- "tempStep": "温度ステップ",
19
- "pollInterval": "ポーリング間隔(秒)",
20
- "addDevice": "デバイスを追加",
21
- "remove": "削除",
22
- "hybrid": "ハイブリッド",
23
- "cloudCredentials": "クラウド認証情報",
24
- "fetching": "取得中...",
25
- "devicesFound": "台のデバイスが見つかりました",
26
- "fetchFailed": "取得に失敗しました",
27
- "fetch": "取得",
28
- "cloudDevices": "クラウドデバイス",
29
- "localDevices": "ローカルデバイス"
30
- }
@@ -1,30 +0,0 @@
1
- {
2
- "deviceName": "기기 이름",
3
- "connection": "연결",
4
- "cloud": "클라우드",
5
- "local": "로컬",
6
- "email": "이메일",
7
- "password": "비밀번호",
8
- "region": "지역",
9
- "ip": "IP 주소",
10
- "mac": "MAC 주소",
11
- "fan": "팬",
12
- "sleep": "수면",
13
- "display": "디스플레이",
14
- "health": "건강",
15
- "clean": "청소",
16
- "eco": "에코",
17
- "comfWind": "쾌적 바람",
18
- "tempStep": "온도 단계",
19
- "pollInterval": "폴링 간격 (초)",
20
- "addDevice": "기기 추가",
21
- "remove": "제거",
22
- "hybrid": "하이브리드",
23
- "cloudCredentials": "클라우드 자격 증명",
24
- "fetching": "가져오는 중...",
25
- "devicesFound": "기기 발견됨",
26
- "fetchFailed": "가져오기 실패",
27
- "fetch": "가져오기",
28
- "cloudDevices": "클라우드 기기",
29
- "localDevices": "로컬 기기"
30
- }
@@ -1,30 +0,0 @@
1
- {
2
- "deviceName": "Apparaatnaam",
3
- "connection": "Verbinding",
4
- "cloud": "Cloud",
5
- "local": "Lokaal",
6
- "email": "E-mail",
7
- "password": "Wachtwoord",
8
- "region": "Regio",
9
- "ip": "IP-adres",
10
- "mac": "MAC-adres",
11
- "fan": "Ventilator",
12
- "sleep": "Slaap",
13
- "display": "Display",
14
- "health": "Gezondheid",
15
- "clean": "Reinigen",
16
- "eco": "Eco",
17
- "comfWind": "Comfortwind",
18
- "tempStep": "Temperatuurstap",
19
- "pollInterval": "Poll-interval (seconden)",
20
- "addDevice": "Apparaat toevoegen",
21
- "remove": "Verwijderen",
22
- "hybrid": "Hybride",
23
- "cloudCredentials": "Cloudinloggegevens",
24
- "fetching": "Ophalen...",
25
- "devicesFound": "apparaten gevonden",
26
- "fetchFailed": "Ophalen mislukt",
27
- "fetch": "Ophalen",
28
- "cloudDevices": "Cloud-apparaten",
29
- "localDevices": "Lokale apparaten"
30
- }
@@ -1,30 +0,0 @@
1
- {
2
- "deviceName": "Nazwa urządzenia",
3
- "connection": "Połączenie",
4
- "cloud": "Chmura",
5
- "local": "Lokalny",
6
- "email": "E-mail",
7
- "password": "Hasło",
8
- "region": "Region",
9
- "ip": "Adres IP",
10
- "mac": "Adres MAC",
11
- "fan": "Wentylator",
12
- "sleep": "Sen",
13
- "display": "Wyświetlacz",
14
- "health": "Zdrowie",
15
- "clean": "Czyszczenie",
16
- "eco": "Eko",
17
- "comfWind": "Komfortowy wiatr",
18
- "tempStep": "Krok temperatury",
19
- "pollInterval": "Interwał odpytywania (sekundy)",
20
- "addDevice": "Dodaj urządzenie",
21
- "remove": "Usuń",
22
- "hybrid": "Hybrydowy",
23
- "cloudCredentials": "Dane logowania do chmury",
24
- "fetching": "Pobieranie...",
25
- "devicesFound": "urządzeń znaleziono",
26
- "fetchFailed": "Pobieranie nie powiodło się",
27
- "fetch": "Pobierz",
28
- "cloudDevices": "Urządzenia chmurowe",
29
- "localDevices": "Urządzenia lokalne"
30
- }
@@ -1,30 +0,0 @@
1
- {
2
- "deviceName": "Nome do dispositivo",
3
- "connection": "Conexão",
4
- "cloud": "Nuvem",
5
- "local": "Local",
6
- "email": "E-mail",
7
- "password": "Senha",
8
- "region": "Região",
9
- "ip": "Endereço IP",
10
- "mac": "Endereço MAC",
11
- "fan": "Ventilador",
12
- "sleep": "Sono",
13
- "display": "Display",
14
- "health": "Saúde",
15
- "clean": "Limpeza",
16
- "eco": "Eco",
17
- "comfWind": "Vento conforto",
18
- "tempStep": "Passo de temperatura",
19
- "pollInterval": "Intervalo de consulta (segundos)",
20
- "addDevice": "Adicionar dispositivo",
21
- "remove": "Remover",
22
- "hybrid": "Híbrido",
23
- "cloudCredentials": "Credenciais da nuvem",
24
- "fetching": "Buscando...",
25
- "devicesFound": "dispositivos encontrados",
26
- "fetchFailed": "Falha ao buscar",
27
- "fetch": "Buscar",
28
- "cloudDevices": "Dispositivos na nuvem",
29
- "localDevices": "Dispositivos locais"
30
- }
@@ -1,30 +0,0 @@
1
- {
2
- "deviceName": "Имя устройства",
3
- "connection": "Подключение",
4
- "cloud": "Облако",
5
- "local": "Локально",
6
- "email": "E-mail",
7
- "password": "Пароль",
8
- "region": "Регион",
9
- "ip": "IP-адрес",
10
- "mac": "MAC-адрес",
11
- "fan": "Вентилятор",
12
- "sleep": "Сон",
13
- "display": "Дисплей",
14
- "health": "Здоровье",
15
- "clean": "Очистка",
16
- "eco": "Эко",
17
- "comfWind": "Комф. ветер",
18
- "tempStep": "Шаг температуры",
19
- "pollInterval": "Интервал опроса (сек)",
20
- "addDevice": "Добавить устройство",
21
- "remove": "Удалить",
22
- "hybrid": "Гибридный",
23
- "cloudCredentials": "Данные облачного аккаунта",
24
- "fetching": "Загрузка...",
25
- "devicesFound": "устройств найдено",
26
- "fetchFailed": "Не удалось получить",
27
- "fetch": "Получить",
28
- "cloudDevices": "Облачные устройства",
29
- "localDevices": "Локальные устройства"
30
- }
@@ -1,30 +0,0 @@
1
- {
2
- "deviceName": "Cihaz Adı",
3
- "connection": "Bağlantı",
4
- "cloud": "Bulut",
5
- "local": "Yerel",
6
- "email": "E-posta",
7
- "password": "Şifre",
8
- "region": "Bölge",
9
- "ip": "IP Adresi",
10
- "mac": "MAC Adresi",
11
- "fan": "Fan",
12
- "sleep": "Uyku",
13
- "display": "Ekran",
14
- "health": "Sağlık",
15
- "clean": "Temizlik",
16
- "eco": "Eko",
17
- "comfWind": "Konfor Rüzgarı",
18
- "tempStep": "Sıcaklık Adımı",
19
- "pollInterval": "Sorgulama Aralığı (saniye)",
20
- "addDevice": "Cihaz Ekle",
21
- "remove": "Kaldır",
22
- "hybrid": "Hybrid",
23
- "cloudCredentials": "Bulut Giriş Bilgileri",
24
- "fetching": "Getiriliyor...",
25
- "devicesFound": "cihaz bulundu",
26
- "fetchFailed": "Getirme başarısız",
27
- "fetch": "Getir",
28
- "cloudDevices": "Bulut Cihazlar",
29
- "localDevices": "Yerel Cihazlar"
30
- }
@@ -1,30 +0,0 @@
1
- {
2
- "deviceName": "设备名称",
3
- "connection": "连接方式",
4
- "cloud": "云端",
5
- "local": "本地",
6
- "email": "电子邮件",
7
- "password": "密码",
8
- "region": "地区",
9
- "ip": "IP 地址",
10
- "mac": "MAC 地址",
11
- "fan": "风扇",
12
- "sleep": "睡眠",
13
- "display": "显示屏",
14
- "health": "健康",
15
- "clean": "自清洁",
16
- "eco": "节能",
17
- "comfWind": "舒适风",
18
- "tempStep": "温度步进",
19
- "pollInterval": "轮询间隔(秒)",
20
- "addDevice": "添加设备",
21
- "remove": "删除",
22
- "hybrid": "混合",
23
- "cloudCredentials": "云端凭据",
24
- "fetching": "获取中...",
25
- "devicesFound": "个设备已找到",
26
- "fetchFailed": "获取失败",
27
- "fetch": "获取",
28
- "cloudDevices": "云端设备",
29
- "localDevices": "本地设备"
30
- }