Browse Source

Language select: standardise icons and translations.

Translate each language name to its native name, so users can
recognise their languages.

Issue #1708
Jason Rumney 1 year ago
parent
commit
3ba20be9de
35 changed files with 476 additions and 86 deletions
  1. 64 1
      custom_components/tuya_local/__init__.py
  2. 1 1
      custom_components/tuya_local/config_flow.py
  3. 3 4
      custom_components/tuya_local/devices/atorch_at2pl_breaker.yaml
  4. 3 4
      custom_components/tuya_local/devices/atorch_at4pw_energymeter.yaml
  5. 3 4
      custom_components/tuya_local/devices/atorch_s1wp.yaml
  6. 5 6
      custom_components/tuya_local/devices/ble_pulido_p13_lock.yaml
  7. 3 4
      custom_components/tuya_local/devices/ble_ysgbs01_lock.yaml
  8. 3 4
      custom_components/tuya_local/devices/bstuokey_invisible_lock.yaml
  9. 3 4
      custom_components/tuya_local/devices/kabum_smart700_vacuum.yaml
  10. 12 13
      custom_components/tuya_local/devices/lucking_hs6_lock.yaml
  11. 5 5
      custom_components/tuya_local/devices/plantsio_ivy_smart_planter.yaml
  12. 2 3
      custom_components/tuya_local/devices/proscenic_m9_vacuum.yaml
  13. 9 13
      custom_components/tuya_local/devices/tesvor_s6_vacuum.yaml
  14. 5 9
      custom_components/tuya_local/devices/ttec_reobipro_vacuum.yaml
  15. 10 11
      custom_components/tuya_local/devices/wolfguard_wt2r_alarm.yaml
  16. 3 0
      custom_components/tuya_local/icons.json
  17. 18 0
      custom_components/tuya_local/translations/bg.json
  18. 18 0
      custom_components/tuya_local/translations/cz.json
  19. 18 0
      custom_components/tuya_local/translations/de.json
  20. 18 0
      custom_components/tuya_local/translations/el.json
  21. 18 0
      custom_components/tuya_local/translations/en.json
  22. 18 0
      custom_components/tuya_local/translations/es.json
  23. 18 0
      custom_components/tuya_local/translations/fr.json
  24. 18 0
      custom_components/tuya_local/translations/hu.json
  25. 18 0
      custom_components/tuya_local/translations/id.json
  26. 18 0
      custom_components/tuya_local/translations/it.json
  27. 18 0
      custom_components/tuya_local/translations/ja.json
  28. 18 0
      custom_components/tuya_local/translations/no-NB.json
  29. 18 0
      custom_components/tuya_local/translations/pl.json
  30. 18 0
      custom_components/tuya_local/translations/pt-BR.json
  31. 18 0
      custom_components/tuya_local/translations/ru.json
  32. 18 0
      custom_components/tuya_local/translations/uk.json
  33. 18 0
      custom_components/tuya_local/translations/ur.json
  34. 18 0
      custom_components/tuya_local/translations/zh-Hans.json
  35. 18 0
      custom_components/tuya_local/translations/zh-Hant.json

+ 64 - 1
custom_components/tuya_local/__init__.py

@@ -572,7 +572,70 @@ async def async_migrate_entry(hass, entry: ConfigEntry):
                         }
 
         await async_migrate_entries(hass, entry.entry_id, update_unique_id13_5)
-        hass.config_entries.async_update_entry(entry, minor_version=5)
+
+    if entry.version == 13 and entry.minor_version < 6:
+        # Migrate unique ids of existing entities to new id taking into
+        # account translation_key, and standardising naming
+        device_id = entry.unique_id
+        conf_file = await hass.async_add_executor_job(
+            get_config,
+            entry.data[CONF_TYPE],
+        )
+        if conf_file is None:
+            _LOGGER.error(
+                NOT_FOUND,
+                entry.data[CONF_TYPE],
+            )
+            return False
+
+        @callback
+        def update_unique_id13_6(entity_entry):
+            """Update the unique id of an entity entry."""
+            old_id = entity_entry.unique_id
+            platform = entity_entry.entity_id.split(".", 1)[0]
+            # Standardistion of entity naming to use translation_key
+            replacements = {
+                "switch_sleep_mode": "switch_sleep",
+                "switch_sleep_timer": "switch_sleep",
+                "select_voice_language": "select_language",
+            }
+            for suffix, new_suffix in replacements.items():
+                if old_id.endswith(suffix):
+                    e = conf_file.primary_entity
+                    new_id = e.unique_id(device_id)
+                    if (
+                        e.entity != platform
+                        or e.name
+                        or not new_id.endswith(new_suffix)
+                    ):
+                        for e in conf_file.secondary_entities():
+                            new_id = e.unique_id(device_id)
+                            if (
+                                e.entity == platform
+                                and not e.name
+                                and new_id.endswith(new_suffix)
+                            ):
+                                break
+                    if (
+                        e.entity == platform
+                        and not e.name
+                        and new_id.endswith(new_suffix)
+                    ):
+                        _LOGGER.info(
+                            "Migrating %s unique_id %s to %s",
+                            e.entity,
+                            old_id,
+                            new_id,
+                        )
+                        return {
+                            "new_unique_id": entity_entry.unique_id.replace(
+                                old_id,
+                                new_id,
+                            )
+                        }
+
+        await async_migrate_entries(hass, entry.entry_id, update_unique_id13_6)
+        hass.config_entries.async_update_entry(entry, minor_version=6)
 
     return True
 

+ 1 - 1
custom_components/tuya_local/config_flow.py

@@ -73,7 +73,7 @@ HUB_CATEGORIES = [
 
 class ConfigFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
     VERSION = 13
-    MINOR_VERSION = 5
+    MINOR_VERSION = 6
     CONNECTION_CLASS = config_entries.CONN_CLASS_LOCAL_PUSH
     device = None
     data = {}

+ 3 - 4
custom_components/tuya_local/devices/atorch_at2pl_breaker.yaml

@@ -126,8 +126,7 @@ secondary_entities:
           min: 1
           max: 27500
   - entity: select
-    name: Language
-    icon: "mdi:translate"
+    translation_key: language
     category: config
     dps:
       - id: 107
@@ -135,9 +134,9 @@ secondary_entities:
         name: option
         mapping:
           - dps_val: chinese
-            value: 中文
+            value: chinese
           - dps_val: english
-            value: English
+            value: english
   - entity: light
     name: Display active
     category: config

+ 3 - 4
custom_components/tuya_local/devices/atorch_at4pw_energymeter.yaml

@@ -119,17 +119,16 @@ secondary_entities:
           max: 27500
   - entity: select
     category: config
-    icon: "mdi:translate"
-    name: Language
+    translation_key: language
     dps:
       - id: 107
         type: string
         name: option
         mapping:
           - dps_val: chinese
-            value: Chinese
+            value: chinese
           - dps_val: english
-            value: English
+            value: english
   - entity: light
     category: config
     translation_key: display

+ 3 - 4
custom_components/tuya_local/devices/atorch_s1wp.yaml

@@ -118,17 +118,16 @@ secondary_entities:
           max: 4500
   - entity: select
     category: config
-    icon: "mdi:web-box"
-    name: Language
+    translation_key: language
     dps:
       - id: 107
         type: string
         name: option
         mapping:
           - dps_val: chinese
-            value: Chinese
+            value: chinese
           - dps_val: english
-            value: English
+            value: english
   - entity: number
     category: config
     name: Screen brightness

+ 5 - 6
custom_components/tuya_local/devices/ble_pulido_p13_lock.yaml

@@ -203,8 +203,7 @@ secondary_entities:
           - dps_val: poweroff
             value: 0
   - entity: select
-    name: Language
-    icon: "mdi:translate"
+    translation_key: language
     category: config
     dps:
       - id: 28
@@ -213,10 +212,10 @@ secondary_entities:
         optional: true
         mapping:
           - dps_val: chinese_simplified
-            value: 中文
+            value: chinese
           - dps_val: english
-            value: English
+            value: english
           - dps_val: spanish
-            value: español
+            value: spanish
           - dps_val: Portuguese
-            value: Português
+            value: portuguese

+ 3 - 4
custom_components/tuya_local/devices/ble_ysgbs01_lock.yaml

@@ -104,8 +104,7 @@ secondary_entities:
             value: true
           - value: false
   - entity: select
-    name: Language
-    icon: "mdi:translate"
+    translation_key: language
     category: config
     dps:
       - id: 28
@@ -113,9 +112,9 @@ secondary_entities:
         name: option
         mapping:
           - dps_val: chinese_simplified
-            value: 中文
+            value: chinese
           - dps_val: english
-            value: English
+            value: english
   - entity: number
     name: Beep volume
     category: config

+ 3 - 4
custom_components/tuya_local/devices/bstuokey_invisible_lock.yaml

@@ -121,8 +121,7 @@ secondary_entities:
           - dps_val: wrong_unlock
             value: wrong_unlock
   - entity: select
-    name: Language
-    icon: "mdi:translate"
+    translation_key: language
     category: config
     dps:
       - id: 28
@@ -130,9 +129,9 @@ secondary_entities:
         name: option
         mapping:
           - dps_val: chinese_simplified
-            value: 中文
+            value: chinese
           - dps_val: english
-            value: English
+            value: english
   - entity: number
     name: Beep volume
     category: config

+ 3 - 4
custom_components/tuya_local/devices/kabum_smart700_vacuum.yaml

@@ -242,8 +242,7 @@ secondary_entities:
         type: boolean
         name: switch
   - entity: select
-    name: Voice language
-    icon: "mdi:translate"
+    translation_key: language
     category: config
     dps:
       - id: 111
@@ -252,9 +251,9 @@ secondary_entities:
         optional: true
         mapping:
           - dps_val: cn
-            value: 中文
+            value: chinese
           - dps_val: en
-            value: English
+            value: english
   - entity: number
     name: Volume
     category: config

+ 12 - 13
custom_components/tuya_local/devices/lucking_hs6_lock.yaml

@@ -106,8 +106,7 @@ secondary_entities:
           - dps_val: card_face
             value: Card+Face
   - entity: select
-    name: Language
-    icon: "mdi:translate"
+    translation_key: language
     category: config
     dps:
       - id: 27
@@ -116,27 +115,27 @@ secondary_entities:
         optional: true
         mapping:
           - dps_val: chinese_simplified
-            value: 中文简化字
+            value: chinese
           - dps_val: english
-            value: English
+            value: english
           - dps_val: japanese
-            value: 日本語
+            value: japanese
           - dps_val: german
-            value: Deutsch
+            value: german
           - dps_val: spanish
-            value: Español
+            value: spanish
           - dps_val: latin
-            value: Latin
+            value: latin
           - dps_val: french
-            value: Français
+            value: french
           - dps_val: russian
-            value: Русский
+            value: russian
           - dps_val: italian
-            value: Italiano
+            value: italian
           - dps_val: chinese_traditional
-            value: 中文正體字
+            value: chinese_traditional
           - dps_val: korean
-            value: 한글
+            value: korean
   - entity: switch
     name: Auto lock
     icon: "mdi:lock-reset"

+ 5 - 5
custom_components/tuya_local/devices/plantsio_ivy_smart_planter.yaml

@@ -399,7 +399,7 @@ secondary_entities:
           - dps_val: true
             value: "24 Hour Clock"
   - entity: select
-    name: Language
+    translation_key: language
     icon: "mdi:translate"
     category: config
     dps:
@@ -408,13 +408,13 @@ secondary_entities:
         name: option
         mapping:
           - dps_val: 0
-            value: "中文"
+            value: chinese
           - dps_val: 1
-            value: "English"
+            value: english
           - dps_val: 2
-            value: "日本語"
+            value: japanese
           - dps_val: 3
-            value: "Français"
+            value: french
   - entity: switch
     name: Location weather
     icon: "mdi:weather-pouring"

+ 2 - 3
custom_components/tuya_local/devices/proscenic_m9_vacuum.yaml

@@ -387,8 +387,7 @@ secondary_entities:
           - scale: 1
             step: 1
   # - entity: select
-  #   name: Language
-  #   icon: "mdi:mouth"
+  #   translation_key: language
   #   dps:
   #     - id: 36
   #       name: option
@@ -396,7 +395,7 @@ secondary_entities:
   #       optional: true
   #       mapping:
   #         - dps_val: chinese_simplified
-  #           value: chinese_simplified
+  #           value: chinese
   #         - dps_val: chinese_traditional
   #           value: chinese_traditional
   #         - dps_val: english

+ 9 - 13
custom_components/tuya_local/devices/tesvor_s6_vacuum.yaml

@@ -323,8 +323,7 @@ secondary_entities:
         mapping:
           - scale: 0.1
   - entity: select
-    name: Language
-    icon: "mdi:translate"
+    translation_key: language
     category: config
     dps:
       - id: 36
@@ -333,24 +332,21 @@ secondary_entities:
         optional: true
         mapping:
           - dps_val: Chinese
-            value: 中文
+            value: chinese
           - dps_val: English
-            value: English
+            value: english
           - dps_val: German
-            value: Deutsch
+            value: german
           - dps_val: Italy
-            value: Italiano
+            value: italian
           - dps_val: Russian
-            value: Русский
+            value: russian
           - dps_val: Tesvor_Spanish
-            value: Español
+            value: spanish
           - dps_val: Japanese
-            value: 日本語
+            value: japanese
           - dps_val: Korean
-            value: 한글
-          - dps_val: null
-            value: unknown
-            hidden: true
+            value: korean
   - entity: number
     name: Dust collection frequency
     category: config

+ 5 - 9
custom_components/tuya_local/devices/ttec_reobipro_vacuum.yaml

@@ -340,8 +340,7 @@ secondary_entities:
         mapping:
           - scale: 0.1
   - entity: select
-    name: Language
-    icon: "mdi:translate"
+    translation_key: language
     category: config
     dps:
       - id: 36
@@ -350,13 +349,10 @@ secondary_entities:
         optional: true
         mapping:
           - dps_val: turkish
-            value: Türkçe
+            value: turkish
           - dps_val: English
-            value: English
+            value: english
           - dps_val: Russian
-            value: Русский
+            value: russian
           - dps_val: Spanish
-            value: Español
-          - dps_val: null
-            value: unknown
-            hidden: true
+            value: spanish

+ 10 - 11
custom_components/tuya_local/devices/wolfguard_wt2r_alarm.yaml

@@ -229,8 +229,7 @@ secondary_entities:
         optional: true
         name: button
   - entity: select
-    name: Language
-    icon: "mdi:translate"
+    translation_key: language
     category: config
     dps:
       - id: 40
@@ -238,20 +237,20 @@ secondary_entities:
         name: option
         mapping:
           - dps_val: chinese_simplified
-            value: 中文简化字
+            value: chinese
           - dps_val: english
-            value: English
+            value: english
           - dps_val: french
-            value: Français
+            value: french
           - dps_val: italian
-            value: Italiano
+            value: italian
           - dps_val: german
-            value: Deutsch
+            value: german
           - dps_val: spanish
-            value: Español
+            value: spanish
           - dps_val: portuguese
-            value: Português
+            value: portuguese
           - dps_val: russian
-            value: Русский
+            value: russian
           - dps_val: japanese
-            value: 日本語
+            value: japanese

+ 3 - 0
custom_components/tuya_local/icons.json

@@ -110,6 +110,9 @@
             }
         },
         "select": {
+            "language": {
+                "default": "mdi:translate"
+            },
             "recipe": {
                 "default": "mdi:nutrition",
                 "state": {

+ 18 - 0
custom_components/tuya_local/translations/bg.json

@@ -320,6 +320,24 @@
             }
         },
         "select": {
+            "language": {
+                "name": "Език",
+                "state": {
+                    "chinese": "中文",
+                    "chinese_traditional": "中文(繁體)",
+                    "english": "English",
+                    "french": "Français",
+                    "german": "Deutsch",
+                    "italian": "Italiano",
+                    "japanese": "日本語",
+                    "korean": "한국어",
+                    "latin": "Lingua Latina",
+                    "portuguese": "Português",
+                    "russian": "Русский",
+                    "spanish": "Español",
+                    "turkish": "Türkçe"
+                }
+            },
             "recipe": {
                 "name": "Рецепта",
                 "state": {

+ 18 - 0
custom_components/tuya_local/translations/cz.json

@@ -320,6 +320,24 @@
             }
         },
         "select": {
+            "language": {
+                "name": "Jazyk",
+                "state": {
+                    "chinese": "中文",
+                    "chinese_traditional": "中文(繁體)",
+                    "english": "English",
+                    "french": "Français",
+                    "german": "Deutsch",
+                    "italian": "Italiano",
+                    "japanese": "日本語",
+                    "korean": "한국어",
+                    "latin": "Lingua Latina",
+                    "portuguese": "Português",
+                    "russian": "Русский",
+                    "spanish": "Español",
+                    "turkish": "Türkçe"
+                }
+            },
             "recipe": {
                 "name": "Recept",
                 "state": {

+ 18 - 0
custom_components/tuya_local/translations/de.json

@@ -320,6 +320,24 @@
             }
         },
         "select": {
+            "language": {
+                "name": "Sprache",
+                "state": {
+                    "chinese": "中文",
+                    "chinese_traditional": "中文(繁體)",
+                    "english": "English",
+                    "french": "Français",
+                    "german": "Deutsch",
+                    "italian": "Italiano",
+                    "japanese": "日本語",
+                    "korean": "한국어",
+                    "latin": "Lingua Latina",
+                    "portuguese": "Português",
+                    "russian": "Русский",
+                    "spanish": "Español",
+                    "turkish": "Türkçe"
+                }
+            },
             "recipe": {
                 "name": "Rezept",
                 "state": {

+ 18 - 0
custom_components/tuya_local/translations/el.json

@@ -320,6 +320,24 @@
             }
         },
         "select": {
+            "language": {
+                "name": "Γλώσσα",
+                "state": {
+                    "chinese": "中文",
+                    "chinese_traditional": "中文(繁體)",
+                    "english": "English",
+                    "french": "Français",
+                    "german": "Deutsch",
+                    "italian": "Italiano",
+                    "japanese": "日本語",
+                    "korean": "한국어",
+                    "latin": "Lingua Latina",
+                    "portuguese": "Português",
+                    "russian": "Русский",
+                    "spanish": "Español",
+                    "turkish": "Türkçe"
+                }
+            },
             "recipe": {
                 "name": "Συνταγή",
                 "state": {

+ 18 - 0
custom_components/tuya_local/translations/en.json

@@ -367,6 +367,24 @@
             }
         },
         "select": {
+            "language": {
+                "name": "Language",
+                "state": {
+                    "chinese": "中文",
+                    "chinese_traditional": "中文(繁體)",
+                    "english": "English",
+                    "french": "Français",
+                    "german": "Deutsch",
+                    "italian": "Italiano",
+                    "japanese": "日本語",
+                    "korean": "한국어",
+                    "latin": "Lingua Latina",
+                    "portuguese": "Português",
+                    "russian": "Русский",
+                    "spanish": "Español",
+                    "turkish": "Türkçe"
+                }
+            },
             "recipe": {
                 "name": "Recipe",
                 "state": {

+ 18 - 0
custom_components/tuya_local/translations/es.json

@@ -360,6 +360,24 @@
             }
         },
         "select": {
+            "language": {
+                "name": "Idioma",
+                "state": {
+                    "chinese": "中文",
+                    "chinese_traditional": "中文(繁體)",
+                    "english": "English",
+                    "french": "Français",
+                    "german": "Deutsch",
+                    "italian": "Italiano",
+                    "japanese": "日本語",
+                    "korean": "한국어",
+                    "latin": "Lingua Latina",
+                    "portuguese": "Português",
+                    "russian": "Русский",
+                    "spanish": "Español",
+                    "turkish": "Türkçe"
+                }
+            },
             "recipe": {
                 "name": "Receta",
                 "state": {

+ 18 - 0
custom_components/tuya_local/translations/fr.json

@@ -320,6 +320,24 @@
             }
         },
         "select": {
+            "language": {
+                "name": "Langue",
+                "state": {
+                    "chinese": "中文",
+                    "chinese_traditional": "中文(繁體)",
+                    "english": "English",
+                    "french": "Français",
+                    "german": "Deutsch",
+                    "italian": "Italiano",
+                    "japanese": "日本語",
+                    "korean": "한국어",
+                    "latin": "Lingua Latina",
+                    "portuguese": "Português",
+                    "russian": "Русский",
+                    "spanish": "Español",
+                    "turkish": "Türkçe"
+                }
+            },
             "recipe": {
                 "name": "Recette",
                 "state": {

+ 18 - 0
custom_components/tuya_local/translations/hu.json

@@ -320,6 +320,24 @@
             }
         },
         "select": {
+            "language": {
+                "name": "Nyelv",
+                "state": {
+                    "chinese": "中文",
+                    "chinese_traditional": "中文(繁體)",
+                    "english": "English",
+                    "french": "Français",
+                    "german": "Deutsch",
+                    "italian": "Italiano",
+                    "japanese": "日本語",
+                    "korean": "한국어",
+                    "latin": "Lingua Latina",
+                    "portuguese": "Português",
+                    "russian": "Русский",
+                    "spanish": "Español",
+                    "turkish": "Türkçe"
+                }
+            },
             "recipe": {
                 "name": "Recept",
                 "state": {

+ 18 - 0
custom_components/tuya_local/translations/id.json

@@ -320,6 +320,24 @@
             }
         },
         "select": {
+            "language": {
+                "name": "Bahasa",
+                "state": {
+                    "chinese": "中文",
+                    "chinese_traditional": "中文(繁體)",
+                    "english": "English",
+                    "french": "Français",
+                    "german": "Deutsch",
+                    "italian": "Italiano",
+                    "japanese": "日本語",
+                    "korean": "한국어",
+                    "latin": "Lingua Latina",
+                    "portuguese": "Português",
+                    "russian": "Русский",
+                    "spanish": "Español",
+                    "turkish": "Türkçe"
+                }
+            },
             "recipe": {
                 "name": "Resep",
                 "state": {

+ 18 - 0
custom_components/tuya_local/translations/it.json

@@ -320,6 +320,24 @@
             }
         },
         "select": {
+            "language": {
+                "name": "Lingua",
+                "state": {
+                    "chinese": "中文",
+                    "chinese_traditional": "中文(繁體)",
+                    "english": "English",
+                    "french": "Français",
+                    "german": "Deutsch",
+                    "italian": "Italiano",
+                    "japanese": "日本語",
+                    "korean": "한국어",
+                    "latin": "Lingua Latina",
+                    "portuguese": "Português",
+                    "russian": "Русский",
+                    "spanish": "Español",
+                    "turkish": "Türkçe"
+                }
+            },
             "recipe": {
                 "name": "Ricetta",
                 "state": {

+ 18 - 0
custom_components/tuya_local/translations/ja.json

@@ -320,6 +320,24 @@
             }
         },
         "select": {
+            "language": {
+                "name": "言語",
+                "state": {
+                    "chinese": "中文",
+                    "chinese_traditional": "中文(繁體)",
+                    "english": "English",
+                    "french": "Français",
+                    "german": "Deutsch",
+                    "italian": "Italiano",
+                    "japanese": "日本語",
+                    "korean": "한국어",
+                    "latin": "Lingua Latina",
+                    "portuguese": "Português",
+                    "russian": "Русский",
+                    "spanish": "Español",
+                    "turkish": "Türkçe"
+                }
+            },
             "recipe": {
                 "name": "レシピ",
                 "state": {

+ 18 - 0
custom_components/tuya_local/translations/no-NB.json

@@ -320,6 +320,24 @@
             }
         },
         "select": {
+            "language": {
+                "name": "Språk",
+                "state": {
+                    "chinese": "中文",
+                    "chinese_traditional": "中文(繁體)",
+                    "english": "English",
+                    "french": "Français",
+                    "german": "Deutsch",
+                    "italian": "Italiano",
+                    "japanese": "日本語",
+                    "korean": "한국어",
+                    "latin": "Lingua Latina",
+                    "portuguese": "Português",
+                    "russian": "Русский",
+                    "spanish": "Español",
+                    "turkish": "Türkçe"
+                }
+            },
             "recipe": {
                 "name": "Oppskrift",
                 "state": {

+ 18 - 0
custom_components/tuya_local/translations/pl.json

@@ -320,6 +320,24 @@
             }
         },
         "select": {
+            "language": {
+                "name": "Język",
+                "state": {
+                    "chinese": "中文",
+                    "chinese_traditional": "中文(繁體)",
+                    "english": "English",
+                    "french": "Français",
+                    "german": "Deutsch",
+                    "italian": "Italiano",
+                    "japanese": "日本語",
+                    "korean": "한국어",
+                    "latin": "Lingua Latina",
+                    "portuguese": "Português",
+                    "russian": "Русский",
+                    "spanish": "Español",
+                    "turkish": "Türkçe"
+                }
+            },
             "recipe": {
                 "name": "Przepis",
                 "state": {

+ 18 - 0
custom_components/tuya_local/translations/pt-BR.json

@@ -320,6 +320,24 @@
             }
         },
         "select": {
+            "language": {
+                "name": "Idioma",
+                "state": {
+                    "chinese": "中文",
+                    "chinese_traditional": "中文(繁體)",
+                    "english": "English",
+                    "french": "Français",
+                    "german": "Deutsch",
+                    "italian": "Italiano",
+                    "japanese": "日本語",
+                    "korean": "한국어",
+                    "latin": "Lingua Latina",
+                    "portuguese": "Português",
+                    "russian": "Русский",
+                    "spanish": "Español",
+                    "turkish": "Türkçe"
+                }
+            },
             "recipe": {
                 "name": "Receita",
                 "state": {

+ 18 - 0
custom_components/tuya_local/translations/ru.json

@@ -320,6 +320,24 @@
             }
         },
         "select": {
+            "language": {
+                "name": "Язык",
+                "state": {
+                    "chinese": "中文",
+                    "chinese_traditional": "中文(繁體)",
+                    "english": "English",
+                    "french": "Français",
+                    "german": "Deutsch",
+                    "italian": "Italiano",
+                    "japanese": "日本語",
+                    "korean": "한국어",
+                    "latin": "Lingua Latina",
+                    "portuguese": "Português",
+                    "russian": "Русский",
+                    "spanish": "Español",
+                    "turkish": "Türkçe"
+                }
+            },
             "recipe": {
                 "name": "Рецепт",
                 "state": {

+ 18 - 0
custom_components/tuya_local/translations/uk.json

@@ -320,6 +320,24 @@
             }
         },
         "select": {
+            "language": {
+                "name": "Мова",
+                "state": {
+                    "chinese": "中文",
+                    "chinese_traditional": "中文(繁體)",
+                    "english": "English",
+                    "french": "Français",
+                    "german": "Deutsch",
+                    "italian": "Italiano",
+                    "japanese": "日本語",
+                    "korean": "한국어",
+                    "latin": "Lingua Latina",
+                    "portuguese": "Português",
+                    "russian": "Русский",
+                    "spanish": "Español",
+                    "turkish": "Türkçe"
+                }
+            },
             "recipe": {
                 "name": "Рецепт",
                 "state": {

+ 18 - 0
custom_components/tuya_local/translations/ur.json

@@ -320,6 +320,24 @@
             }
         },
         "select": {
+            "language": {
+                "name": "زبان",
+                "state": {
+                    "chinese": "中文",
+                    "chinese_traditional": "中文(繁體)",
+                    "english": "English",
+                    "french": "Français",
+                    "german": "Deutsch",
+                    "italian": "Italiano",
+                    "japanese": "日本語",
+                    "korean": "한국어",
+                    "latin": "Lingua Latina",
+                    "portuguese": "Português",
+                    "russian": "Русский",
+                    "spanish": "Español",
+                    "turkish": "Türkçe"
+                }
+            },
             "recipe": {
                 "name": "ریسیپی",
                 "state": {

+ 18 - 0
custom_components/tuya_local/translations/zh-Hans.json

@@ -367,6 +367,24 @@
             }
         },
         "select": {
+            "language": {
+                "name": "语言",
+                "state": {
+                    "chinese": "中文",
+                    "chinese_traditional": "中文(繁體)",
+                    "english": "English",
+                    "french": "Français",
+                    "german": "Deutsch",
+                    "italian": "Italiano",
+                    "japanese": "日本語",
+                    "korean": "한국어",
+                    "latin": "Lingua Latina",
+                    "portuguese": "Português",
+                    "russian": "Русский",
+                    "spanish": "Español",
+                    "turkish": "Türkçe"
+                }
+            },
             "recipe": {
                 "name": "菜谱",
                 "state": {

+ 18 - 0
custom_components/tuya_local/translations/zh-Hant.json

@@ -320,6 +320,24 @@
             }
         },
         "select": {
+            "language": {
+                "name": "語言",
+                "state": {
+                    "chinese": "中文",
+                    "chinese_traditional": "中文(繁體)",
+                    "english": "English",
+                    "french": "Français",
+                    "german": "Deutsch",
+                    "italian": "Italiano",
+                    "japanese": "日本語",
+                    "korean": "한국어",
+                    "latin": "Lingua Latina",
+                    "portuguese": "Português",
+                    "russian": "Русский",
+                    "spanish": "Español",
+                    "turkish": "Türkçe"
+                }
+            },
             "recipe": {
                 "name": "食譜",
                 "state": {