home-assistant-intents 2025.3.28__tar.gz → 2025.4.30__tar.gz

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.
Files changed (71) hide show
  1. {home_assistant_intents-2025.3.28/home_assistant_intents.egg-info → home_assistant_intents-2025.4.30}/PKG-INFO +1 -1
  2. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/ca.json +16 -0
  3. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/da.json +9 -5
  4. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/en.json +1 -1
  5. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/fi.json +17 -0
  6. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/gl.json +188 -4
  7. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/nl.json +3 -2
  8. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/pt-br.json +21 -49
  9. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/ru.json +24 -6
  10. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/sk.json +53 -9
  11. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/sr.json +3 -0
  12. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30/home_assistant_intents.egg-info}/PKG-INFO +1 -1
  13. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/pyproject.toml +1 -1
  14. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/tests/test_intents.py +2 -2
  15. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/LICENSE.md +0 -0
  16. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/MANIFEST.in +0 -0
  17. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/README.md +0 -0
  18. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/__init__.py +0 -0
  19. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/ar.json +0 -0
  20. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/bg.json +0 -0
  21. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/bn.json +0 -0
  22. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/cs.json +0 -0
  23. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/de-CH.json +0 -0
  24. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/de.json +0 -0
  25. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/el.json +0 -0
  26. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/es.json +0 -0
  27. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/et.json +0 -0
  28. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/eu.json +0 -0
  29. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/fa.json +0 -0
  30. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/fr.json +0 -0
  31. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/he.json +0 -0
  32. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/hi.json +0 -0
  33. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/hr.json +0 -0
  34. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/hu.json +0 -0
  35. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/id.json +0 -0
  36. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/is.json +0 -0
  37. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/it.json +0 -0
  38. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/ka.json +0 -0
  39. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/ko.json +0 -0
  40. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/kw.json +0 -0
  41. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/lb.json +0 -0
  42. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/lt.json +0 -0
  43. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/lv.json +0 -0
  44. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/ml.json +0 -0
  45. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/mn.json +0 -0
  46. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/ms.json +0 -0
  47. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/nb.json +0 -0
  48. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/ne.json +0 -0
  49. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/pl.json +0 -0
  50. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/pt.json +0 -0
  51. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/ro.json +0 -0
  52. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/sl.json +0 -0
  53. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/sr-Latn.json +0 -0
  54. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/sv.json +0 -0
  55. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/sw.json +0 -0
  56. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/te.json +0 -0
  57. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/th.json +0 -0
  58. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/tr.json +0 -0
  59. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/uk.json +0 -0
  60. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/ur.json +0 -0
  61. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/vi.json +0 -0
  62. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/zh-cn.json +0 -0
  63. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/zh-hk.json +0 -0
  64. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/data/zh-tw.json +0 -0
  65. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/language_scores.json +0 -0
  66. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents/languages.py +0 -0
  67. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents.egg-info/SOURCES.txt +0 -0
  68. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents.egg-info/dependency_links.txt +0 -0
  69. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents.egg-info/top_level.txt +0 -0
  70. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/home_assistant_intents.egg-info/zip-safe +0 -0
  71. {home_assistant_intents-2025.3.28 → home_assistant_intents-2025.4.30}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: home-assistant-intents
3
- Version: 2025.3.28
3
+ Version: 2025.4.30
4
4
  Summary: Intents for Home Assistant
5
5
  Author-email: The Home Assistant Authors <hello@home-assistant.io>
6
6
  License-Expression: Apache-2.0
@@ -884,6 +884,16 @@
884
884
  }
885
885
  ]
886
886
  },
887
+ "HassBroadcast": {
888
+ "data": [
889
+ {
890
+ "sentences": [
891
+ "([Fes un] anunci|anuncia) [a tot arreu] [que digui|dient] [que] {message}",
892
+ "[Fes un] broadcast [a tot arreu] [que digui|dient] [que] {message}"
893
+ ]
894
+ }
895
+ ]
896
+ },
887
897
  "HassMediaPrevious": {
888
898
  "data": [
889
899
  {
@@ -1057,6 +1067,9 @@
1057
1067
  "default": "{% if slots.canceled < 1: %} No hi ha cap temporitzador. {% elif slots.canceled == 1: %} He cancel·lat 1 temporitzador. {% else: %} He cancel·lat {{ slots.canceled }} temporitzadors. {% endif %}\n",
1058
1068
  "area": "{% if slots.canceled < 1: %} No hi ha temporitzadors a {{ slots.area }}. {% elif slots.canceled == 1: %} He cancel·lat 1 temporitzador a {{ slots.area }}. {% else: %} He cancel·lat {{ slots.canceled }} temporitzadors a {{ slots.area }}. {% endif %}\n"
1059
1069
  },
1070
+ "HassBroadcast": {
1071
+ "default": "Fet"
1072
+ },
1060
1073
  "HassVacuumStart": {
1061
1074
  "default": "Comença la neteja"
1062
1075
  },
@@ -1346,6 +1359,9 @@
1346
1359
  },
1347
1360
  "response": {
1348
1361
  "wildcard": true
1362
+ },
1363
+ "message": {
1364
+ "wildcard": true
1349
1365
  }
1350
1366
  },
1351
1367
  "expansion_rules": {
@@ -2748,14 +2748,12 @@
2748
2748
  "data": [
2749
2749
  {
2750
2750
  "sentences": [
2751
- "tilføj <item> (til|på) <my_list>",
2752
- "skriv <item> på <my_list>",
2753
- "put <item> på <my_list>"
2751
+ "tilføj <punkt> (til|på) <indkøbsliste>",
2752
+ "(skriv|put) <punkt> på <indkøbsliste>"
2754
2753
  ],
2755
2754
  "response": "item_added",
2756
2755
  "expansion_rules": {
2757
- "my_list": "[min ][indkøbs]liste[n]",
2758
- "item": "{shopping_list_item:item}"
2756
+ "punkt": "{shopping_list_item:item}"
2759
2757
  }
2760
2758
  }
2761
2759
  ]
@@ -3970,6 +3968,9 @@
3970
3968
  "shopping_list_item": {
3971
3969
  "wildcard": true
3972
3970
  },
3971
+ "todo_list_item": {
3972
+ "wildcard": true
3973
+ },
3973
3974
  "zone": {
3974
3975
  "wildcard": true
3975
3976
  },
@@ -4118,6 +4119,9 @@
4118
4119
  "nedbør": "(nedbør|regn[vejr|byger]|sne[fald])",
4119
4120
  "koncentration": "(niveau[et]|koncentration[en]|mængde[n]|forhold[et])",
4120
4121
  "totalt": "(total[t]|samle(t|de))",
4122
+ "fuldfør": "(fuldfør|færdiggør|slet|fjern|stryg|afkryds)",
4123
+ "fuldført": "(fuldfør|færdig)[t]",
4124
+ "indkøbsliste": "[min|vores] [indkøbs]liste[n]",
4121
4125
  "hvad_er_class_af_navn": "(<spørg_om_værdi> [<den>] <class> [(målt|angivet)] (af|på|for|fra|i|ved) [min|mit] <navn> [<i_på> <område>]|<spørg_om_værdi> [min|mit] <navn>[s] <class> [<i_på> <område>]|<spørg_om_værdi> <område>[s] <navn>[s] <class>)",
4122
4126
  "timer": "(nedtælling|timer)[en]",
4123
4127
  "timers": "(nedtællinger|timere)[ne]",
@@ -3459,7 +3459,7 @@
3459
3459
  },
3460
3460
  "expansion_rules": {
3461
3461
  "my_list": "[my|the] {name} [list]",
3462
- "item": "{shopping_list_item:item}"
3462
+ "item": "{todo_list_item:item}"
3463
3463
  }
3464
3464
  }
3465
3465
  ]
@@ -1015,6 +1015,17 @@
1015
1015
  }
1016
1016
  ]
1017
1017
  },
1018
+ "HassBroadcast": {
1019
+ "data": [
1020
+ {
1021
+ "sentences": [
1022
+ "kuuluta [kaikkialla] [että] {message}",
1023
+ "ilmoita [kaikkialla] [että] {message}",
1024
+ "tiedota [kaikkialla] [että] {message}"
1025
+ ]
1026
+ }
1027
+ ]
1028
+ },
1018
1029
  "HassMediaPrevious": {
1019
1030
  "data": [
1020
1031
  {
@@ -1180,6 +1191,9 @@
1180
1191
  "default": "{% if slots.canceled < 1: %} Ajastimia ei peruutettu. {% elif slots.canceled == 1: %} Peruutettiin 1 ajastin. {% else: %} Peruutettiin {{ slots.canceled }} ajastinta. {% endif %}\n",
1181
1192
  "area": "{% if slots.canceled < 1: %} Alueelta {{ slots.area }} ei peruutettu ajastimia. {% elif slots.canceled == 1: %} Peruutettiin 1 {{ slots.area }} ajastin. {% else: %} Peruutettiin {{ slots.canceled }} ajastinta alueella {{ slots.area }}. {% endif %}\n"
1182
1193
  },
1194
+ "HassBroadcast": {
1195
+ "default": "Valmis"
1196
+ },
1183
1197
  "HassVacuumStart": {
1184
1198
  "default": "Käynnistettiin"
1185
1199
  },
@@ -1393,6 +1407,9 @@
1393
1407
  "shopping_list_item": {
1394
1408
  "wildcard": true
1395
1409
  },
1410
+ "message": {
1411
+ "wildcard": true
1412
+ },
1396
1413
  "position": {
1397
1414
  "range": {
1398
1415
  "type": "percentage",
@@ -265,6 +265,36 @@
265
265
  }
266
266
  ]
267
267
  },
268
+ "HassMediaUnpause": {
269
+ "data": [
270
+ {
271
+ "sentences": [
272
+ "(<continúa>;<nome>)"
273
+ ],
274
+ "requires_context": {
275
+ "domain": "media_player"
276
+ }
277
+ },
278
+ {
279
+ "sentences": [
280
+ "<continúa>",
281
+ "<continúa> [<con> ][a |o ](música|programa|vídeo|reprodución|reprodutor)"
282
+ ],
283
+ "requires_context": {
284
+ "area": {
285
+ "slot": true
286
+ }
287
+ }
288
+ },
289
+ {
290
+ "sentences": [
291
+ "<continúa>[ [a |o |<meu> ](música|programa|vídeo|reprodución|reprodutor)] <area>",
292
+ "<continúa>[ [<con> ](música|programa|vídeo|reprodución|reprodutor)] <area>",
293
+ "<continúa> <area> [<con> ][a |o |<meu> ](música|programa|vídeo|reprodución|reprodutor)"
294
+ ]
295
+ }
296
+ ]
297
+ },
268
298
  "HassShoppingListAddItem": {
269
299
  "data": [
270
300
  {
@@ -1231,6 +1261,65 @@
1231
1261
  }
1232
1262
  ]
1233
1263
  },
1264
+ "HassMediaNext": {
1265
+ "data": [
1266
+ {
1267
+ "sentences": [
1268
+ "[<reproduce>] ([<pista> ]<seguinte>|<seguinte> <pista>) [<en> ]<nome>",
1269
+ "<salta>[ (á [a ](<seguinte> [<pista>]|<pista> <seguinte>)|[isto |est(a|e) ]<pista>|isto|est(a|e|o))] [<en> ]<nome>"
1270
+ ],
1271
+ "requires_context": {
1272
+ "domain": "media_player"
1273
+ }
1274
+ },
1275
+ {
1276
+ "sentences": [
1277
+ "(<seguinte> [<pista>]|<pista> <seguinte>)",
1278
+ "<salta>[ (á [a ](<seguinte> [<pista>]|<pista> <seguinte>)|[isto |est(a|e) ]<pista>|isto|est(a|e|o))]"
1279
+ ],
1280
+ "requires_context": {
1281
+ "area": {
1282
+ "slot": true
1283
+ }
1284
+ }
1285
+ },
1286
+ {
1287
+ "sentences": [
1288
+ "(<seguinte> [<pista>]|<pista> <seguinte>) <area>",
1289
+ "<salta>[ (á [a ](<seguinte> [<pista>]|<pista> <seguinte>)|[isto |est(a|e) ]<pista>|isto|est(a|e|o))] <area>"
1290
+ ]
1291
+ }
1292
+ ]
1293
+ },
1294
+ "HassMediaPause": {
1295
+ "data": [
1296
+ {
1297
+ "sentences": [
1298
+ "(<pausa>;<nome>)"
1299
+ ],
1300
+ "requires_context": {
1301
+ "domain": "media_player"
1302
+ }
1303
+ },
1304
+ {
1305
+ "sentences": [
1306
+ "<pausa>",
1307
+ "<pausa>[ [a |o |<meu> ](música|programa|vídeo|reprodución|reprodutor)]"
1308
+ ],
1309
+ "requires_context": {
1310
+ "area": {
1311
+ "slot": true
1312
+ }
1313
+ }
1314
+ },
1315
+ {
1316
+ "sentences": [
1317
+ "<pausa>[ [a |o |<meu> ](música|programa|vídeo|reprodución|reprodutor)] <area>",
1318
+ "<pausa> <area> [a |o |<meu> ](música|programa|vídeo|reprodución|reprodutor)"
1319
+ ]
1320
+ }
1321
+ ]
1322
+ },
1234
1323
  "HassStartTimer": {
1235
1324
  "data": [
1236
1325
  {
@@ -1302,6 +1391,41 @@
1302
1391
  }
1303
1392
  ]
1304
1393
  },
1394
+ "HassMediaPrevious": {
1395
+ "data": [
1396
+ {
1397
+ "sentences": [
1398
+ "([<reproduce>] [<outra_vez> ]([<pista> ]<anterior>|<anterior> <pista>)[ <outra_vez>]|<reproduce> <outra_vez>) [<en> ]<nome>",
1399
+ "(<salta>|<volve>) á [<reproduce> ][<outra_vez> ](<anterior> [<pista>]|<pista> <anterior>)[ <outra_vez>] [<en> ]<nome>"
1400
+ ],
1401
+ "requires_context": {
1402
+ "domain": "media_player"
1403
+ }
1404
+ },
1405
+ {
1406
+ "sentences": [
1407
+ "([<reproduce>] [<outra_vez> ](<pista> <anterior>|<anterior> <pista>)[ <outra_vez>]|<reproduce> <outra_vez>)",
1408
+ "(<salta>|<volve>) á [<reproduce> ][<outra_vez> ](<anterior> [<pista>]|<pista> <anterior>)[ <outra_vez>]"
1409
+ ],
1410
+ "requires_context": {
1411
+ "area": {
1412
+ "slot": true
1413
+ }
1414
+ }
1415
+ },
1416
+ {
1417
+ "sentences": [
1418
+ "([<reproduce>] [<outra_vez> ]([<pista> ]<anterior>|<anterior> <pista>)[ <outra_vez>]|<reproduce> <outra_vez>) <area>",
1419
+ "<area> ([<reproduce>] [<outra_vez> ]([<pista> ]<anterior>|<anterior> <pista>)[ <outra_vez>]|<reproduce> <outra_vez>)",
1420
+ "(<reproduce> <area> [<outra_vez> ]([<pista> ]<anterior>|<anterior> <pista>)[ <outra_vez>]|<reproduce> <area> <outra_vez>)",
1421
+ "<reproduce> <outra_vez> <area> ([<pista> ]<anterior>|<anterior> <pista>)[ <outra_vez>]",
1422
+ "(<salta>|<volve>) [á |a ] [<reproduce> ][<outra_vez> ][a ](<anterior> [<pista>]|<pista> <anterior>)[ <outra_vez>] <area>",
1423
+ "<area> (<salta>|<volve>) á [a <reproduce> ][<outra_vez> ](<anterior> [<pista>]|<pista> <anterior>)[ <outra_vez>]",
1424
+ "(<salta>|<volve>) [á |a ] [<reproduce> ]<area> [<outra_vez> ](<anterior> [<pista>]|<pista> <anterior>)[ <outra_vez>]"
1425
+ ]
1426
+ }
1427
+ ]
1428
+ },
1305
1429
  "HassListAddItem": {
1306
1430
  "data": [
1307
1431
  {
@@ -1320,6 +1444,38 @@
1320
1444
  }
1321
1445
  ]
1322
1446
  },
1447
+ "HassSetVolume": {
1448
+ "data": [
1449
+ {
1450
+ "sentences": [
1451
+ "<establece_sube_baixa> [[o ]volume] <nome> a[o] <volume>",
1452
+ "(en|no|na) <nome> <establece_sube_baixa> [o ]volume a[o] <volume>",
1453
+ "<establece_sube_baixa> [o ]volume a[o] <volume> (en|no|na) <nome>"
1454
+ ],
1455
+ "requires_context": {
1456
+ "domain": "media_player"
1457
+ }
1458
+ },
1459
+ {
1460
+ "sentences": [
1461
+ "<establece_sube_baixa> [o ]volume ao <volume>"
1462
+ ],
1463
+ "requires_context": {
1464
+ "area": {
1465
+ "slot": true
1466
+ }
1467
+ }
1468
+ },
1469
+ {
1470
+ "sentences": [
1471
+ "<establece_sube_baixa> <area> [o ]volume ao <volume>",
1472
+ "<establece_sube_baixa> [o ]volume <area> ao <volume>",
1473
+ "<establece_sube_baixa> [o ]volume ao <volume> <area>",
1474
+ "<area> <establece_sube_baixa> [o ]volume ao <volume>"
1475
+ ]
1476
+ }
1477
+ ]
1478
+ },
1323
1479
  "HassClimateSetTemperature": {
1324
1480
  "data": [
1325
1481
  {
@@ -1392,6 +1548,9 @@
1392
1548
  "lock_area": "Peche efectuado",
1393
1549
  "valve": "{{ slots.name }} abriuse"
1394
1550
  },
1551
+ "HassMediaPause": {
1552
+ "default": "Reprodución en pausa"
1553
+ },
1395
1554
  "HassGetCurrentTime": {
1396
1555
  "default": "{% set next_hour = 0 %} {% set minute_str = \"\" %} {% if slots.time.minute > 0: %}\n {% if slots.time.minute == 15: %}\n {% set minute_str = \"e cuarto\" %}\n {% elif slots.time.minute == 30: %}\n {% set minute_str = \"e media\" %}\n {% elif slots.time.minute < 30: %}\n {% set minute_str = 'e {0:01d}'.format(slots.time.minute) %}\n {% else: %}\n {% set next_hour = 1 %}\n {% if slots.time.minute == 45: %}\n {% set minute_str = \"menos cuarto\" %}\n {% else: %}\n {% set minute_str = 'menos {0:01d}'.format(60 - slots.time.minute) %}\n {% endif %}\n {% endif %}\n{% endif %} {% if slots.time.hour + next_hour > 12: %}\n {% set hour12 = slots.time.hour + next_hour - 12 %}\n{% elif slots.time.hour + next_hour == 0: %}\n {% set hour12 = 12 %}\n{% else: %}\n {% set hour12 = slots.time.hour + next_hour %}\n{% endif %} {% if hour12 == 1 : %}\n É a\n{% else: %}\n Son as\n{% endif %} {{hour12}} {{minute_str}} {% if slots.time.hour == 0: %}\n da medianoite\n{% elif slots.time.hour < 4: %}\n da madrugada\n{% elif slots.time.hour < 12: %}\n da mañá\n{% elif slots.time.hour == 12: %}\n di mediodía\n{% elif slots.time.hour < 21: %}\n da tarde\n{% else: %}\n da noite\n{% endif %}\n"
1397
1556
  },
@@ -1404,6 +1563,9 @@
1404
1563
  "HassGetCurrentDate": {
1405
1564
  "default": "{% set months = {\n 1: 'xaneiro',\n 2: 'febreiro',\n 3: 'marzo',\n 4: 'abril',\n 5: 'maio',\n 6: 'xuño',\n 7: 'xullo',\n 8: 'agosto',\n 9: 'septembro',\n 10: 'outubro',\n 11: 'novembro',\n 12: 'decembro',\n} %} {% set weekday = [ 'luns', 'martes', 'mércoles', 'xoves', 'venres', 'sábado', 'domingo' ] %} É {{ weekday[slots.date.weekday()] }}, {{slots.date.day}} de {{ months[slots.date.month] }} de {{ slots.date.year }}\n"
1406
1565
  },
1566
+ "HassMediaPrevious": {
1567
+ "default": "Reproducindo pista anterior"
1568
+ },
1407
1569
  "HassGetWeather": {
1408
1570
  "default": "{% set weather_condition = {\n 'clear': 'Despexado',\n 'clear-night': 'Noite despexada',\n 'cloudy': 'Anubrado',\n 'exceptional': 'Condicións excepcionalmente adversas',\n 'fog': 'Néboa',\n 'hail': 'Sarabia',\n 'lightning': 'Lóstregos',\n 'lightning-rainy': 'Chuvia e lóstregos',\n 'partlycloudy': 'Ceo parcialmente anubrado',\n 'pouring': 'Ballón',\n 'rainy': 'Chuvia',\n 'snowy': 'Neve',\n 'snowy-rainy': 'Chuvia e neve',\n 'sunny': 'Sol',\n 'windy': 'Vento',\n 'windy-variant': 'Vento e ceo anubrado'\n} %}\n {{ weather_condition.get((state.state | string).lower(), \"\") }}, con {{ state.attributes.get('temperature') }} {{ state.attributes.get('temperature_unit') }} de temperatura\n"
1409
1571
  },
@@ -1413,15 +1575,24 @@
1413
1575
  "color": "{{ slots.name }} cor configurada a {{ slots.color }}",
1414
1576
  "color_area": "Cor en {{ slots.area }} configurada a {{ slots.color }}"
1415
1577
  },
1578
+ "HassMediaUnpause": {
1579
+ "default": "Continuando reprodución"
1580
+ },
1416
1581
  "HassSetPosition": {
1417
1582
  "default": "Posición establecida"
1418
1583
  },
1584
+ "HassMediaNext": {
1585
+ "default": "Reproducindo seguinte"
1586
+ },
1419
1587
  "HassCancelTimer": {
1420
1588
  "default": "Temporizador cancelado"
1421
1589
  },
1422
1590
  "HassClimateGetTemperature": {
1423
1591
  "default": "{% set temperature = state_attr(state.entity_id, 'current_temperature') %} {{ temperature | float | abs | round(1) | replace('.0', '') | replace('.',',') }} {{ 'grao' if temperature | float | abs == 1 else 'graos' }} {{ 'baixo cero' if temperature | float < 0 else '' }}\n"
1424
1592
  },
1593
+ "HassSetVolume": {
1594
+ "default": "Volume establecido"
1595
+ },
1425
1596
  "HassRespond": {
1426
1597
  "hello": "Saúdos dende Home Assistant.",
1427
1598
  "listening": "Non, só gravo cando escoito a palabra de activación.",
@@ -1673,9 +1844,11 @@
1673
1844
  "acende": "(enciende[r]|acende[r]|prende[r]|activa[r])",
1674
1845
  "apaga": "(apag(a|ar)|desconect(a|ar)|desactiv(a|ar))",
1675
1846
  "algun": "(algún|algunha|algúns|algunhas)",
1676
- "area": "[en | no | na | de | do | da | o | a ]{area}",
1847
+ "area": "[en |no |na |de |do |da |o |a ]{area}",
1677
1848
  "baixa": "([a]baix(a|ar)|redu(ce|cir)|decrement(a|ar)|disminu(e|ir))",
1678
- "brightness": "{brightness}[%| porcento]",
1849
+ "porcento": "(%|por[ ]cen[to])",
1850
+ "brightness": "{brightness}[%| <porcento>]",
1851
+ "en": "en|no|na",
1679
1852
  "cal_e_a_medida_do_sensor": "([dime ]<cal> [é (a|o)] [(cantidade|medida)|nivel (de|da|do)] | cant(o|a)[s]) <class> (de|do|da|en|no|na|dende|<que_marca>) <nome> [<area>]",
1680
1853
  "cal_e": "([<dime> ]cal é [o |a ]|[<dime> ]cales son [os |as ]|[<dime> ]c(o|ó)mo (vai|está|marcha|se atopa)[n] [o |a |os |as ])",
1681
1854
  "cal": "(qu[e|é]|cal|cales)",
@@ -1690,11 +1863,13 @@
1690
1863
  "esta": "(está|están|existe|existen|hai)",
1691
1864
  "establece": "(pon|establec(e|er)|axust(a|ar)|configur(a|ar)|cambi(a[r]))",
1692
1865
  "establece_abre_pecha": "(<establece>|<abre>|<pecha>)",
1693
- "establece_sube_baixa": "(<establece>|<enciende>|<sube>|<baixa>)",
1866
+ "establece_sube_baixa": "(<establece>|<acende>|<sube>|<baixa>)",
1694
1867
  "inicia": "(inici(a|ar)|come[n](za|zar)|emp[i]e(za|zar))",
1695
1868
  "luces": "[(a|o)[s] ](luz|luces|lámpada[s]|bombilla[s]|foco[s]|interruptor[es][ da luz])",
1696
1869
  "meu": "(o meu|a miña|os meus|as miñas)",
1697
- "nome": "[o | a | os | as]{name}",
1870
+ "nome": "[o |a |os |as |do |da ]{name}",
1871
+ "con": "(con|co|coa|cos|coas)",
1872
+ "continúa": "(contin(úa|uar)|(segue|segu(ir))|(reactiv(a|e|ar)))",
1698
1873
  "planta": "[n(o|a) |d(o|a) ][[a ]planta |[o ]piso ]{floor}[ planta| piso]",
1699
1874
  "para": "(para|pra)",
1700
1875
  "poñer": "(poña | pon | meta | mete)",
@@ -1707,6 +1882,15 @@
1707
1882
  "posición": "{position}[ ][%|por[ ]cen[to]]",
1708
1883
  "todas_partes": "[en |de ][todas partes ][d(o|a) ]<casa>",
1709
1884
  "sube": "(sub(e|ir)|levant(a|ar)|aument(a|ar)|increment(a|ar))",
1885
+ "outra_vez": "(outra vez|de novo|unha vez máis)",
1886
+ "pista": "[a |o ](pista|canción|medio|vídeo|elemento|tema)",
1887
+ "anterior": "[a |o |ao ](anterior|últim(o|a)|de antes)",
1888
+ "seguinte": "[a |o |ao ](seguinte|próxim(o|a)|outr(o|a))",
1889
+ "pausa": "(pausa[r]|para[r]|detén|detén[er])",
1890
+ "salta": "(salta[r])",
1891
+ "volume": "{volume:volume_level} [<porcento>]",
1892
+ "volve": "((volve[r])|(regresa[r])|(retorna[r])|(retrocede[r]))",
1893
+ "reproduce": "(reprodu(ce|cir)|escoita[r]|oír|visualiza[r]|ver)",
1710
1894
  "temporizador": "[o |a ](temporizador|conta atrás)",
1711
1895
  "temporizadores": "[o |a |(o|a)s ](temporizador[es]|conta[s] atrás)",
1712
1896
  "timer_set": "(<establece>|<inicia>|<crea>)",
@@ -3260,8 +3260,9 @@
3260
3260
  },
3261
3261
  {
3262
3262
  "sentences": [
3263
- "wat is de temperatuur",
3264
- "hoe (warm|koud|heet|koel) is het"
3263
+ "wat is de temperatuur [<here>]",
3264
+ "wat is <here> de temperatuur",
3265
+ "hoe (warm|koud|heet|koel) is het [<here>]"
3265
3266
  ],
3266
3267
  "requires_context": {
3267
3268
  "area": {
@@ -72,45 +72,27 @@
72
72
  },
73
73
  {
74
74
  "sentences": [
75
- "<fecha> <artigos> <cortina> <na_zona>"
75
+ "<fecha> <artigos> {cover_classes:device_class} <na_zona>"
76
76
  ],
77
77
  "slots": {
78
- "device_class": [
79
- "blind",
80
- "curtain",
81
- "shade",
82
- "shutter"
83
- ],
84
78
  "domain": "cover"
85
79
  },
86
80
  "response": "cover"
87
81
  },
88
82
  {
89
83
  "sentences": [
90
- "<fecha> <artigos> <cortina> <artigos> casa"
84
+ "<fecha> <artigos> {cover_classes:device_class} <artigos> casa"
91
85
  ],
92
86
  "slots": {
93
- "device_class": [
94
- "blind",
95
- "curtain",
96
- "shade",
97
- "shutter"
98
- ],
99
87
  "domain": "cover"
100
88
  },
101
89
  "response": "cover"
102
90
  },
103
91
  {
104
92
  "sentences": [
105
- "<fecha> <artigos> <cortina> [aqui] [onde estou]"
93
+ "<fecha> <artigos> {cover_classes:device_class} [aqui] [onde estou]"
106
94
  ],
107
95
  "slots": {
108
- "device_class": [
109
- "blind",
110
- "curtain",
111
- "shade",
112
- "shutter"
113
- ],
114
96
  "domain": "cover"
115
97
  },
116
98
  "requires_context": {
@@ -478,45 +460,27 @@
478
460
  },
479
461
  {
480
462
  "sentences": [
481
- "<abre> <artigos> <cortina> <na_zona>"
463
+ "<abre> <artigos> {cover_classes:device_class} <na_zona>"
482
464
  ],
483
465
  "slots": {
484
- "device_class": [
485
- "blind",
486
- "curtain",
487
- "shade",
488
- "shutter"
489
- ],
490
466
  "domain": "cover"
491
467
  },
492
468
  "response": "cover"
493
469
  },
494
470
  {
495
471
  "sentences": [
496
- "<abre> <artigos> <cortina> <artigos> casa"
472
+ "<abre> <artigos> {cover_classes:device_class} <artigos> casa"
497
473
  ],
498
474
  "slots": {
499
- "device_class": [
500
- "blind",
501
- "curtain",
502
- "shade",
503
- "shutter"
504
- ],
505
475
  "domain": "cover"
506
476
  },
507
477
  "response": "cover"
508
478
  },
509
479
  {
510
480
  "sentences": [
511
- "<abre> <artigos> <cortina> [aqui] [onde estou]"
481
+ "<abre> <artigos> {cover_classes:device_class} [aqui] [onde estou]"
512
482
  ],
513
483
  "slots": {
514
- "device_class": [
515
- "blind",
516
- "curtain",
517
- "shade",
518
- "shutter"
519
- ],
520
484
  "domain": "cover"
521
485
  },
522
486
  "requires_context": {
@@ -564,7 +528,7 @@
564
528
  ],
565
529
  "response": "item_added",
566
530
  "expansion_rules": {
567
- "lista": "[minha ]lista[ de compras]",
531
+ "lista": "[minha ]lista [de compras|de supermercado]",
568
532
  "item": "{shopping_list_item:item}"
569
533
  }
570
534
  }
@@ -942,7 +906,7 @@
942
906
  },
943
907
  "expansion_rules": {
944
908
  "lista": "[minha ]lista [de ]{name}",
945
- "item": "{shopping_list_item:item}"
909
+ "item": "{todo_list_item:item}"
946
910
  }
947
911
  }
948
912
  ]
@@ -1060,7 +1024,7 @@
1060
1024
  "command": "Comando recebido"
1061
1025
  },
1062
1026
  "HassShoppingListAddItem": {
1063
- "item_added": "Adicionei {{ slots.item }}"
1027
+ "item_added": "Item {{ slots.item }} adicionado à lista de compras"
1064
1028
  },
1065
1029
  "HassTurnOn": {
1066
1030
  "default": "{% set translations = {\n \"button\": \"botão\",\n \"camera\": \"câmera\",\n \"input_button\": \"botão\",\n \"alarm_control_panel\": \"alarme\",\n \"automation\": \"automação\",\n \"fan\": \"ventilador\",\n \"climate\": \"termostato\",\n \"humidifier\": \"umidificador\",\n \"input_boolean\": \"interruptor\",\n \"siren\": \"sirene\",\n \"water_heater\": \"aquecedor de água\",\n \"light\": \"luz\",\n \"switch\": \"interruptor\",\n \"remote\": \"controle remoto\",\n \"vacuum\": \"aspirador de pó\",\n \"media_player\": \"reprodutor de mídia\",\n \"lawn_mower\": \"cortador de grama\"\n} %} {{ translations.get(state.domain) }} ligado",
@@ -1088,7 +1052,7 @@
1088
1052
  "default": "{% set num_timers = slots.timers | length %}\n{% set active_timers = slots.timers | selectattr('is_active') | list %}\n{% set num_active_timers = active_timers | length %}\n{% set paused_timers = slots.timers | rejectattr('is_active') | list %}\n{% set num_paused_timers = paused_timers | length %}\n{% set next_timer = None %}\n\n{% if num_timers == 0: %}\n Não existem temporizadores.\n{% elif num_active_timers == 0: %}\n {# No active timers #}\n {% if num_paused_timers == 1: %}\n {% set next_timer = paused_timers[0] %}\n O temporizador está pausado.\n {% else: %}\n {{ num_paused_timers }} temporizadores pausados.\n {% endif %}\n{% else: %}\n {# At least one active timer #}\n {% if num_active_timers == 1: %}\n {% set next_timer = active_timers[0] %}\n {% else: %}\n {# Get active timer that will finish soonest #}\n {% set sorted_timers = active_timers | sort(attribute='total_seconds_left') %}\n {% set next_timer = sorted_timers[0] %}\n {{ num_active_timers }} temporizadores ativos.\n {% endif %}\n\n {% if num_paused_timers == 1: %}\n 1 temporizador pausado.\n {% elif num_paused_timers > 0: %}\n {{ num_paused_timers }} temporizadores pausados.\n {% endif %}\n{% endif %}\n\n{% if next_timer: %}\n\n {% if num_timers > 1: %}\n\n No temporizador\n \n {% if next_timer.name: %}\n {{ next_timer.name }}\n {% elif next_timer.area: %}\n da área {{ next_timer.area }}\n {% endif %}\n\n de\n\n {# Give some extra information to disambiguate #}\n {% if (next_timer.start_hours > 0) and (next_timer.start_minutes > 0): %}\n {{ next_timer.start_hours }} hora{{ \"s\" if next_timer.start_hours != 1 }} e {{ next_timer.start_minutes }} minuto{{ \"s\" if next_timer.start_minutes != 1 }}\n {% elif (next_timer.start_hours > 0): %}\n {{ next_timer.start_hours }} hora{{ \"s\" if next_timer.start_hours != 1 }}\n {% elif (next_timer.start_minutes > 0) and (next_timer.start_seconds > 0): %}\n {{ next_timer.start_minutes }} minuto{{ \"s\" if next_timer.start_minutes != 1 }} e {{ next_timer.start_seconds }} segundo{{ \"s\" if next_timer.start_seconds != 1 }}\n {% elif (next_timer.start_minutes > 0): %}\n {{ next_timer.start_minutes }} minuto{{ \"s\" if next_timer.start_minutes != 1 }}\n {% elif (next_timer.start_seconds > 0): %}\n {{ next_timer.start_seconds }} segundo{{ \"s\" if next_timer.start_seconds != 1 }}\n {% endif %}\n\n restam\n {% else %}\n Restam\n {% endif %}\n\n {# At least one active timer #}\n {% if (next_timer.rounded_hours_left == 1) and (next_timer.rounded_minutes_left > 0): %}\n 1 hora e {{ next_timer.rounded_minutes_left }} minutos.\n {% elif (next_timer.rounded_hours_left == 1): %}\n 1 hora.\n {% elif (next_timer.rounded_hours_left > 1) and (next_timer.rounded_minutes_left > 0): %}\n {{ next_timer.rounded_hours_left }} horas e {{ next_timer.rounded_minutes_left }} minutos.\n {% elif (next_timer.rounded_hours_left > 1): %}\n {{ next_timer.rounded_hours_left }} horas.\n {% elif (next_timer.rounded_minutes_left == 1) and (next_timer.rounded_seconds_left > 0): %}\n 1 minuto e {{ next_timer.rounded_seconds_left }} segundos.\n {% elif (next_timer.rounded_minutes_left == 1): %}\n 1 minuto.\n {% elif (next_timer.rounded_minutes_left > 1) and (next_timer.rounded_seconds_left > 0): %}\n {{ next_timer.rounded_minutes_left }} minutos e {{ next_timer.rounded_seconds_left }} segundos.\n {% elif (next_timer.rounded_minutes_left > 1): %}\n {{ next_timer.rounded_minutes_left }} minutos.\n {% elif (next_timer.rounded_seconds_left == 1): %}\n 1 segundo.\n {% elif (next_timer.rounded_seconds_left > 1): %}\n {{ next_timer.rounded_seconds_left }} segundos.\n {% endif %}\n\n{% endif %}\n"
1089
1053
  },
1090
1054
  "HassListAddItem": {
1091
- "item_added": "Adicionei {{ slots.item }}"
1055
+ "item_added": "Item {{ slots.item }} adicionado à lista de tarefas"
1092
1056
  },
1093
1057
  "HassGetCurrentDate": {
1094
1058
  "default": "{% set months = {\n 1: 'janeiro',\n 2: 'fevereiro',\n 3: 'março',\n 4: 'abril',\n 5: 'maio',\n 6: 'junho',\n 7: 'julho',\n 8: 'agosto',\n 9: 'setembro',\n 10: 'outubro',\n 11: 'novembro',\n 12: 'dezembro',\n} %} {% set weekday = [ 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', 'sábado', 'domingo' ] %} {{ weekday[slots.date.weekday()] }}, {{slots.date.day}} de {{ months[slots.date.month] }} de {{ slots.date.year }}\n"
@@ -1309,7 +1273,7 @@
1309
1273
  "out": "blind"
1310
1274
  },
1311
1275
  {
1312
- "in": "cortina[s]",
1276
+ "in": "<cortina>",
1313
1277
  "out": "curtain"
1314
1278
  },
1315
1279
  {
@@ -1353,6 +1317,9 @@
1353
1317
  "shopping_list_item": {
1354
1318
  "wildcard": true
1355
1319
  },
1320
+ "todo_list_item": {
1321
+ "wildcard": true
1322
+ },
1356
1323
  "position": {
1357
1324
  "range": {
1358
1325
  "type": "percentage",
@@ -1445,19 +1412,21 @@
1445
1412
  "expansion_rules": {
1446
1413
  "abre": "(abra|abre|abrir)",
1447
1414
  "adicionar": "(adicione|adiciona[r])",
1448
- "algum": "(algum|alguma|alguns|algumas)",
1449
1415
  "alarme": "(alarme[s]|cronômetro[s]|timer[s]|temporizador[es])",
1416
+ "algum": "(algum|alguma|alguns|algumas)",
1450
1417
  "artigos": "[(o[s]|a[s]|da|do[s]|de)]",
1451
1418
  "brilho": "{brightness}[%| porcento]",
1452
1419
  "cade": "(onde está [a|o]|cadê [a|o])",
1453
1420
  "cancela": "(cancele|cancela[r]|para[r]|pare)",
1454
1421
  "casa": "(casa|apartamento)",
1455
1422
  "colocar": "(coloque|coloca[r]|pôr|põe)",
1423
+ "completar": "(complete|completa[r])",
1456
1424
  "cortina": "(cortina[s]|curtinha[s]|persiana[s])",
1425
+ "deletar": "(delete|deleta[r])",
1457
1426
  "desligar": "(desliga|desligue|apaga|apague|desligar|apagar|desativa[r]|desative)",
1458
1427
  "esta": "(está|estão|existe|existem)",
1459
- "fecha": "(fecha|feche|fechar)",
1460
1428
  "falta": "(falta|resta)",
1429
+ "fecha": "(fecha|feche|fechar)",
1461
1430
  "juntar": "(junte|junta[r])",
1462
1431
  "ligar": "(liga[r]|ligue|acende[r]|acenda|ativa[r]|ative)",
1463
1432
  "muda": "(põe|ponha|muda|mude|altera|altere|coloca|deixa|pôr|mudar|alterar|colocar|deixar|definir|defina|setar|ajusta[r]|ajuste)",
@@ -1468,7 +1437,10 @@
1468
1437
  "por": "(pôr|põe|ponha|definir|defina|setar|ajusta[r]|ajuste)",
1469
1438
  "position": "{position} [%|por cento]",
1470
1439
  "qual": "(que|qual|qual é|quais)",
1440
+ "remover": "(remova|remove[r])",
1441
+ "retirar": "(retire|retira[r])",
1471
1442
  "temperatura": "{temperature}[([ ]°| graus)]",
1443
+ "terminar": "(termine|termina[r])",
1472
1444
  "todas": "(todos|todas)",
1473
1445
  "ventilador": "(ventilador[es]|vento)",
1474
1446
  "volume": "{volume:volume_level}[%|por cento]",
@@ -426,7 +426,8 @@
426
426
  },
427
427
  {
428
428
  "sentences": [
429
- "(установи[ть]|<open>|<close>)[ положение] <name> на <position>"
429
+ "установи[ть][ положение] <name> на <position>",
430
+ "(<open>|<close>) <name> на <position>"
430
431
  ],
431
432
  "requires_context": {
432
433
  "domain": "cover"
@@ -437,12 +438,29 @@
437
438
  },
438
439
  {
439
440
  "sentences": [
440
- "(установи[ть]|<open>|<close>)[ положение] {cover_classes:device_class} <area> на <position>",
441
- "(установи[ть]|<open>|<close>) <area>[ положение] {cover_classes:device_class} на <position>"
441
+ "установи[ть][ положение] {cover_classes:device_class} <area> на <position>",
442
+ "установи[ть] <area>[ положение] {cover_classes:device_class} на <position>",
443
+ "(<open>|<close>) {cover_classes:device_class} <area> на <position>",
444
+ "(<open>|<close>) <area> {cover_classes:device_class} на <position>"
442
445
  ],
443
446
  "slots": {
444
447
  "domain": "cover"
445
448
  }
449
+ },
450
+ {
451
+ "sentences": [
452
+ "установи[ть][ положение] {cover_classes:device_class} на <position>",
453
+ "(<open>|<close>)[ здесь| в комнате] {cover_classes:device_class} на <position>",
454
+ "(<open>|<close>) {cover_classes:device_class}[ в комнате] на <position>"
455
+ ],
456
+ "requires_context": {
457
+ "area": {
458
+ "slot": true
459
+ }
460
+ },
461
+ "slots": {
462
+ "domain": "cover"
463
+ }
446
464
  }
447
465
  ]
448
466
  },
@@ -2934,8 +2952,8 @@
2934
2952
  "all": "{% if not query.unmatched: %}\n Да\n{% else %}\n {% set no_match = query.unmatched | map(attribute=\"name\") | sort | list %}\n {% if no_match | length > 4 %}\n {{ no_match[:3] | join(\", \") }} и ещё {{ (no_match | length - 3) }} — нет\n {%- else -%}\n {% for name in no_match -%}\n {% if not loop.first and not loop.last %}, {% elif loop.last and not loop.first %} и {% endif -%}\n {{ name }} — нет\n {%- endfor %}\n {% endif %}\n{% endif %}\n",
2935
2953
  "which": "{% if not query.matched %}\n Никакие\n{% else: %}\n {% set match = query.matched | map(attribute=\"name\") | sort | list %}\n {% if match | length > 4 %}\n {{ match[:3] | join(\", \") }} и ещё {{ (match | length - 3) }}\n {% else %}\n {%- for name in match -%}\n {% if not loop.first and not loop.last %}, {% elif loop.last and not loop.first %} и {% endif -%}\n {{ name }}\n {%- endfor -%}\n {% endif %}\n{% endif %}\n",
2936
2954
  "how_many": "{{ query.matched | length }}\n",
2937
- "sensor_value": "Текущее значение: {{ state.state_with_unit }}\n",
2938
- "sensor_value_temperature": "Температура {{ state.state_with_unit }}\n"
2955
+ "sensor_value": "Текущее значение: {{ state.state_with_unit | replace('.', ',') }}\n",
2956
+ "sensor_value_temperature": "Температура {{ state.state_with_unit | replace('.', ',') }}\n"
2939
2957
  },
2940
2958
  "HassTurnOff": {
2941
2959
  "default": "{% set female_ending = \"а\" %}\n{% set neuter_ending = \"о\" %}\n{% set male_ending = \"\" %}\n{% set plural_ending = \"ы\" %}\n{% if slots.name[-1].lower() in \"ь\" %}\n {% if ((slots.name.lower().split() + [\"выключатель\",\"пользователь\",\"день\",\"дождь\"])\n | count != dict.fromkeys(slots.name.lower().split() + [\"выключатель\",\"пользователь\",\"день\",\"дождь\"]) | count) or\n (slots.name[-2].lower() in \"рь\" and slots.name.lower() != \"дверь\") %}\n {% set ending = male_ending %}\n {% else %}\n {% set ending = female_ending %}\n {% endif %}\n{% elif slots.name[-1].lower() in \"а, у, ю, я\" %}\n {% set ending = female_ending %}\n {% if slots.name[-1].lower() == \"у\" %}\n {% set name_new = slots.name[:-1]~\"a\" %}\n {% elif slots.name[-1].lower() == \"ю\" %}\n {% set name_new = slots.name[:-1]~\"я\" %}\n {% endif %}\n{% elif slots.name[-1].lower() in \"о, е\" %}\n {% set ending = neuter_ending %}\n{% elif slots.name[-1].lower() in \"ы, и\"%}\n {% set ending = plural_ending %}\n{% else %}\n {% set ending = male_ending %}\n{% endif %}\n{{ (name_new.split()[-1].title() if slots.name[-1].lower() in \"у, ю\" else slots.name.split()[-1].title()) ~ \" выключен\" ~ ending }}\n",
@@ -2972,7 +2990,7 @@
2972
2990
  "default": "Приостановлено"
2973
2991
  },
2974
2992
  "HassTimerStatus": {
2975
- "default": "{% set num_timers = slots.timers | length %}\n{% set active_timers = slots.timers | selectattr('is_active') | list %}\n{% set num_active_timers = active_timers | length %}\n{% set paused_timers = slots.timers | rejectattr('is_active') | list %}\n{% set num_paused_timers = paused_timers | length %}\n{% set next_timer = None %}\n\n{% if num_timers == 0: %}\n Таймеры отсутствуют.\n{% elif num_active_timers == 0: %}\n {# No active timers #}\n {% if num_paused_timers == 1: %}\n {% set next_timer = paused_timers[0] %}\n Таймер приостановлен.\n {% else: %}\n {{ num_paused_timers }} приостановленных таймера.\n {% endif %}\n{% else: %}\n {# At least one active timer #}\n {% if num_active_timers == 1: %}\n {% set next_timer = active_timers[0] %}\n {% else: %}\n {# Get active timer that will finish soonest #}\n {% set sorted_timers = active_timers | sort(attribute='total_seconds_left') %}\n {% set next_timer = sorted_timers[0] %}\n {{ num_active_timers }} запущенных таймера.\n {% endif %}\n\n {% if num_paused_timers == 1: %}\n 1 приостановленный таймер.\n {% elif num_paused_timers > 0: %}\n {{ num_paused_timers }} приостановленных таймера.\n {% endif %}\n{% endif %}\n\n{% if next_timer: %}\n {# At least one active timer #}\n {% if (next_timer.rounded_hours_left == 1) and (next_timer.rounded_minutes_left > 0): %}\n 1 час и {{ next_timer.rounded_minutes_left }} минут\n {% elif (next_timer.rounded_hours_left == 1): %}\n 1 час\n {% elif (next_timer.rounded_hours_left > 1) and (next_timer.rounded_minutes_left > 0): %}\n {{ next_timer.rounded_hours_left }} часов и {{ next_timer.rounded_minutes_left }} минут\n {% elif (next_timer.rounded_hours_left > 1): %}\n {{ next_timer.rounded_hours_left }} часов\n {% elif (next_timer.rounded_minutes_left == 1) and (next_timer.rounded_seconds_left > 0): %}\n 1 минута и {{ next_timer.rounded_seconds_left }} секунд\n {% elif (next_timer.rounded_minutes_left == 1): %}\n 1 минута\n {% elif (next_timer.rounded_minutes_left > 1) and (next_timer.rounded_seconds_left > 0): %}\n {{ next_timer.rounded_minutes_left }} минут and {{ next_timer.rounded_seconds_left }} секунд\n {% elif (next_timer.rounded_minutes_left > 1): %}\n {{ next_timer.rounded_minutes_left }} минут\n {% elif (next_timer.rounded_seconds_left == 1): %}\n 1 секунда\n {% elif (next_timer.rounded_seconds_left > 1): %}\n {{ next_timer.rounded_seconds_left }} секунд\n {% endif %}\n\n {% if num_timers > 1: %}\n {# Give some extra information to disambiguate #}\n осталось на таймере\n {% if (next_timer.start_hours > 0) and (next_timer.start_minutes > 0): %}\n {{ next_timer.start_hours }} час и {{ next_timer.start_minutes }} минут\n {% elif (next_timer.start_hours > 0): %}\n {{ next_timer.start_hours }} час\n {% elif (next_timer.start_minutes > 0) and (next_timer.start_seconds > 0): %}\n {{ next_timer.start_minutes }} минут и {{ next_timer.start_seconds }} секунд\n {% elif (next_timer.start_minutes > 0): %}\n {{ next_timer.start_minutes }} минут\n {% elif (next_timer.start_seconds > 0): %}\n {{ next_timer.start_seconds }} секунд\n {% endif %}\n\n {% if next_timer.name: %}\n {{ next_timer.name }}\n {% elif next_timer.area: %}\n {{ next_timer.area }}\n {% endif %}\n {% else: %}\n осталось.\n {% endif %}\n{% endif %}\n"
2993
+ "default": "{% set num_timers = slots.timers | length %}\n{% set active_timers = slots.timers | selectattr('is_active') | list %}\n{% set num_active_timers = active_timers | length %}\n{% set paused_timers = slots.timers | rejectattr('is_active') | list %}\n{% set num_paused_timers = paused_timers | length %}\n{% set next_timer = None %}\n\n{% if num_timers == 0: %}\n Таймеры отсутствуют.\n{% elif num_active_timers == 0: %}\n {# No active timers #}\n {% if num_paused_timers == 1: %}\n {% set next_timer = paused_timers[0] %}\n Таймер приостановлен.\n {% else: %}\n {{ num_paused_timers }} приостановленных таймера.\n {% endif %}\n{% else: %}\n {# At least one active timer #}\n {% if num_active_timers == 1: %}\n {% set next_timer = active_timers[0] %}\n {% else: %}\n {# Get active timer that will finish soonest #}\n {% set sorted_timers = active_timers | sort(attribute='total_seconds_left') %}\n {% set next_timer = sorted_timers[0] %}\n {{ num_active_timers }} запущенных таймера.\n {% endif %}\n\n {% if num_paused_timers == 1: %}\n 1 приостановленный таймер.\n {% elif num_paused_timers > 0: %}\n {{ num_paused_timers }} приостановленных таймера.\n {% endif %}\n{% endif %}\n\n{% if next_timer: %}\n {# At least one active timer #}\n {% if (next_timer.rounded_hours_left == 1) and (next_timer.rounded_minutes_left > 0): %}\n 1 час и {{ next_timer.rounded_minutes_left }} минут\n {% elif (next_timer.rounded_hours_left == 1): %}\n 1 час\n {% elif (next_timer.rounded_hours_left > 1) and (next_timer.rounded_minutes_left > 0): %}\n {{ next_timer.rounded_hours_left }} часов и {{ next_timer.rounded_minutes_left }} минут\n {% elif (next_timer.rounded_hours_left > 1): %}\n {{ next_timer.rounded_hours_left }} часов\n {% elif (next_timer.rounded_minutes_left == 1) and (next_timer.rounded_seconds_left > 0): %}\n 1 минута и {{ next_timer.rounded_seconds_left }} секунд\n {% elif (next_timer.rounded_minutes_left == 1): %}\n 1 минута\n {% elif (next_timer.rounded_minutes_left > 1) and (next_timer.rounded_seconds_left > 0): %}\n {{ next_timer.rounded_minutes_left }} минут и {{ next_timer.rounded_seconds_left }} секунд\n {% elif (next_timer.rounded_minutes_left > 1): %}\n {{ next_timer.rounded_minutes_left }} минут\n {% elif (next_timer.rounded_seconds_left == 1): %}\n 1 секунда\n {% elif (next_timer.rounded_seconds_left > 1): %}\n {{ next_timer.rounded_seconds_left }} секунд\n {% endif %}\n\n {% if num_timers > 1: %}\n {# Give some extra information to disambiguate #}\n осталось на таймере\n {% if (next_timer.start_hours > 0) and (next_timer.start_minutes > 0): %}\n {{ next_timer.start_hours }} час и {{ next_timer.start_minutes }} минут\n {% elif (next_timer.start_hours > 0): %}\n {{ next_timer.start_hours }} час\n {% elif (next_timer.start_minutes > 0) and (next_timer.start_seconds > 0): %}\n {{ next_timer.start_minutes }} минут и {{ next_timer.start_seconds }} секунд\n {% elif (next_timer.start_minutes > 0): %}\n {{ next_timer.start_minutes }} минут\n {% elif (next_timer.start_seconds > 0): %}\n {{ next_timer.start_seconds }} секунд\n {% endif %}\n\n {% if next_timer.name: %}\n {{ next_timer.name }}\n {% elif next_timer.area: %}\n {{ next_timer.area }}\n {% endif %}\n {% else: %}\n осталось.\n {% endif %}\n{% endif %}\n"
2976
2994
  },
2977
2995
  "HassListAddItem": {
2978
2996
  "item_added": "Добавил {{ slots.item }}"
@@ -1246,7 +1246,8 @@
1246
1246
  },
1247
1247
  {
1248
1248
  "sentences": [
1249
- "<what_is> (stav;(je|má|majú)) {name} [<area_floor>]"
1249
+ "aký (stav;(má|majú)) {name} [<area_floor>]",
1250
+ "v akom stave je {name} [<area_floor>]"
1250
1251
  ],
1251
1252
  "requires_context": {
1252
1253
  "domain": "lock"
@@ -1254,7 +1255,19 @@
1254
1255
  "slots": {
1255
1256
  "domain": "lock"
1256
1257
  },
1257
- "response": "one_cover"
1258
+ "response": "one_cover_nominative"
1259
+ },
1260
+ {
1261
+ "sentences": [
1262
+ "aký je stav {name} [<area_floor>]"
1263
+ ],
1264
+ "requires_context": {
1265
+ "domain": "lock"
1266
+ },
1267
+ "slots": {
1268
+ "domain": "lock"
1269
+ },
1270
+ "response": "one_cover_accusative"
1258
1271
  },
1259
1272
  {
1260
1273
  "sentences": [
@@ -1349,7 +1362,7 @@
1349
1362
  },
1350
1363
  {
1351
1364
  "sentences": [
1352
- "je ({name};{cover_states:state}) [<area_floor>]",
1365
+ "je ({name} [<area_floor>];{cover_states:state}) [<area_floor>]",
1353
1366
  "{cover_states:state} {name} [<area_floor>]"
1354
1367
  ],
1355
1368
  "requires_context": {
@@ -1362,7 +1375,8 @@
1362
1375
  },
1363
1376
  {
1364
1377
  "sentences": [
1365
- "aký (stav;(má|je)) {name} [<area_floor>]"
1378
+ "aký (stav;(má|majú)) {name} [<area_floor>]",
1379
+ "v akom stave je {name} [<area_floor>]"
1366
1380
  ],
1367
1381
  "requires_context": {
1368
1382
  "domain": "cover"
@@ -1370,7 +1384,19 @@
1370
1384
  "slots": {
1371
1385
  "domain": "cover"
1372
1386
  },
1373
- "response": "one_cover"
1387
+ "response": "one_cover_nominative"
1388
+ },
1389
+ {
1390
+ "sentences": [
1391
+ "aký je stav {name} [<area_floor>]"
1392
+ ],
1393
+ "requires_context": {
1394
+ "domain": "cover"
1395
+ },
1396
+ "slots": {
1397
+ "domain": "cover"
1398
+ },
1399
+ "response": "one_cover_accusative"
1374
1400
  },
1375
1401
  {
1376
1402
  "sentences": [
@@ -2817,6 +2843,20 @@
2817
2843
  "device_class": "vibration"
2818
2844
  }
2819
2845
  },
2846
+ {
2847
+ "sentences": [
2848
+ "<is> {name} {bs_window_states:state} [<area>]"
2849
+ ],
2850
+ "response": "bs_yesno",
2851
+ "requires_context": {
2852
+ "domain": "binary_sensor",
2853
+ "device_class": "window"
2854
+ },
2855
+ "slots": {
2856
+ "domain": "binary_sensor",
2857
+ "device_class": "window"
2858
+ }
2859
+ },
2820
2860
  {
2821
2861
  "sentences": [
2822
2862
  "<is> {name} {bs_window_states:state} [<area>]"
@@ -3901,7 +3941,8 @@
3901
3941
  "all": "{% if not query.unmatched: %}\nÁno\n{% else %}\n{% set no_match = query.unmatched | map(attribute=\"name\") | sort | list %}\n{% if no_match | length > 4 %}\nNie, {{ no_match[:3] | join(\", \") }} a {{ (no_match | length - 3) }} ďalšie sú v stave {{ state.state_with_unit }}\n{%- else -%}\nNie,\n{% if state.state_with_unit == \"home\" %}\n{% set state_with_unit = \"doma\" %}\n{% elif state.state_with_unit == \"not_home\" %}\n{% set state_with_unit = \"mimo domu\" %}\n{% else %}\n{% set state_with_unit = \"v stave \" ~ state.state_with_unit %}\n{% endif %}\n{% for name in no_match -%}\n{% if not loop.first and not loop.last %}, {% elif loop.last and not loop.first %} a {% endif -%}\n{{ name }}\n{%- endfor %} {{ 'nie je' if no_match | length == 1 else 'nie sú'}} {{ state_with_unit }}\n{% endif %}\n{% endif %}\n",
3902
3942
  "which": "{% if not query.matched: %}\nŽiadne\n{% else: %}\n {% set match = query.matched | map(attribute=\"name\") | sort | list %}\n {% if match | length > 4 %}\n {{ match[:3] | join(\", \") }} a {{ (match | length - 3) }} ďalšie\n {%- else -%}\n {{ query.matched | map(attribute=\"name\") | sort | join(\", \") }}\n {% endif %}\n{% endif %}\n",
3903
3943
  "how_many": "{% if not query.matched: %}\n0\n{% else: %}\n{{ query.matched | length }}\n{% endif %}\n",
3904
- "one_cover": "{% set present_continuous = ('je', 'jú', 'ra') %}\n{% set present_simple = ('no', 'ná', 'né') %}\n\n{{ slots.name | capitalize }} {{ 'sa' if state.state_with_unit.endswith(present_continuous) else 'je' }} {{ state.state_with_unit }}\n",
3944
+ "one_cover_nominative": "{{ slots.name | capitalize }}\n{# \"sa ..\" ak dej prebieha (sa zatvára), \"je v stave ..\" ak je dokonaný (je v stave zatvorené) #}\n{% if state.state_with_unit and state.state_with_unit.split() | last != \"sa\" %}\nje v stave {{ state.state_with_unit }}\n{% else %}\n{# meníme \"zatvára sa\" na \"sa zatvára\" #}\n{{ state.state_with_unit.split() | reverse | join(' ') }}\n{% endif %}\n",
3945
+ "one_cover_accusative": "Stav {{ slots.name | capitalize }} je {{ state.state_with_unit }}\n",
3905
3946
  "bs_all": "{% if not query.unmatched: %}\n Áno\n{% else %}\n {% set no_match = query.unmatched | map(attribute=\"name\") | sort | list %}\n {% if no_match | length > 4 %}\n Nie, {{ no_match[:3] | join(\", \") }} a {{ (no_match | length - 3) }} ďalšie nie sú\n {%- else -%}\n Nie,\n {% for name in no_match -%}\n {% if not loop.first and not loop.last %}, {% elif loop.last and not loop.first %} a {% endif -%}\n {{ name }}\n {%- endfor %} {{ 'nie je' if no_match | length == 1 else 'nie sú'}}\n {% endif %}\n{% endif %}\n",
3906
3947
  "bs_yesno": "{% if query.matched %}\n Áno\n{% else %}\n Nie\n{% endif %}\n",
3907
3948
  "where": "{% if state.state == \"not_home\" %}\n {{ slots.name | capitalize }} je mimo domu\n{% elif state.state == \"home\" %}\n {{ slots.name | capitalize }} je doma\n{% else %}\n {{ slots.name | capitalize }} je v zóne {{ state.state }}\n{% endif %}\n"
@@ -4627,6 +4668,12 @@
4627
4668
  }
4628
4669
  ]
4629
4670
  },
4671
+ "shopping_list_item": {
4672
+ "wildcard": true
4673
+ },
4674
+ "todo_list_item": {
4675
+ "wildcard": true
4676
+ },
4630
4677
  "max": {
4631
4678
  "values": [
4632
4679
  {
@@ -4671,9 +4718,6 @@
4671
4718
  "to": 100
4672
4719
  }
4673
4720
  },
4674
- "shopping_list_item": {
4675
- "wildcard": true
4676
- },
4677
4721
  "zone": {
4678
4722
  "wildcard": true
4679
4723
  },
@@ -1549,6 +1549,9 @@
1549
1549
  "shopping_list_item": {
1550
1550
  "wildcard": true
1551
1551
  },
1552
+ "todo_list_item": {
1553
+ "wildcard": true
1554
+ },
1552
1555
  "zone": {
1553
1556
  "wildcard": true
1554
1557
  },
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: home-assistant-intents
3
- Version: 2025.3.28
3
+ Version: 2025.4.30
4
4
  Summary: Intents for Home Assistant
5
5
  Author-email: The Home Assistant Authors <hello@home-assistant.io>
6
6
  License-Expression: Apache-2.0
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "home-assistant-intents"
7
- version = "2025.3.28"
7
+ version = "2025.4.30"
8
8
  license = "Apache-2.0"
9
9
  description = "Intents for Home Assistant"
10
10
  readme = "README.md"
@@ -2,7 +2,7 @@
2
2
 
3
3
  import pytest
4
4
 
5
- from home_assistant_intents import get_intents, get_languages, get_language_scores
5
+ from home_assistant_intents import get_intents, get_languages
6
6
 
7
7
 
8
8
  @pytest.mark.parametrize("language", get_languages())
@@ -12,7 +12,7 @@ def test_load_intents(language: str) -> None:
12
12
  assert lang_intents
13
13
 
14
14
 
15
- # TODO
15
+ # TODO: Need to add support for kw and sr-Latn
16
16
  # def test_language_scores() -> None:
17
17
  # """Test that all supported languages are in language scores."""
18
18
  # scores = get_language_scores()