Browse Source

Translations: fix using translated entity names.

At some unadvertised point, HA removed the deprecation notices for
defaulting to device names, and in the process changed the behaviour.

Most of the internal components that support translations seem to be
using EntityDescriptor.name, so our overriding of name is not well
looked after as a stable API.

Now there is a new function use_device_name, which tries to figure out
by complex logic, but doesn't get the same result as the old inline
code. If we override that function to act as we expect, then it works
but the special meaning of UNDEFINED seems to have been removed except
for the self._attr_name case.
Jason Rumney 2 năm trước cách đây
mục cha
commit
aa371b9039
1 tập tin đã thay đổi với 11 bổ sung7 xóa
  1. 11 7
      custom_components/tuya_local/helpers/mixin.py

+ 11 - 7
custom_components/tuya_local/helpers/mixin.py

@@ -46,13 +46,17 @@ class TuyaLocalEntity:
     @property
     def name(self):
         """Return the name for the UI."""
-        # Super has the logic to get default names from device class.
-        super_name = getattr(super(), "name")
-        # If we don't have a name, and super also doesn't, we explicitly want to use
-        # the device name - avoid the HA warning about implicitly using it.
-        if super_name is UNDEFINED:
-            super_name = None
-        return self._config.name or super_name
+        own_name = self._config.name
+        if not own_name and not self.use_device_name:
+            # super has the translation logic
+            own_name = getattr(super(), "name")
+        return own_name
+
+    @property
+    def use_device_name(self):
+        """Return whether to use the device name for the entity name"""
+        own_name = self._config.name or self._attr_translation_key
+        return not own_name
 
     @property
     def unique_id(self):