From 7e543882fcd4a431aab961ec1d6ac04664d883d1 Mon Sep 17 00:00:00 2001
From: Michael <35783820+mib1185@users.noreply.github.com>
Date: Mon, 3 Apr 2023 19:08:22 +0200
Subject: [PATCH] Add entity name translations to Synology DSM (#90706)

* add entity name translation

* sort strings

* sort and capitalize strings
---
 .../components/synology_dsm/binary_sensor.py  |  6 +--
 .../components/synology_dsm/entity.py         |  5 +-
 .../components/synology_dsm/sensor.py         | 54 +++++++++----------
 .../components/synology_dsm/strings.json      | 46 ++++++++++++++++
 .../components/synology_dsm/switch.py         |  6 +--
 .../components/synology_dsm/update.py         |  2 +-
 6 files changed, 79 insertions(+), 40 deletions(-)

diff --git a/homeassistant/components/synology_dsm/binary_sensor.py b/homeassistant/components/synology_dsm/binary_sensor.py
index 9dc40d2dc53..1f335aee4b9 100644
--- a/homeassistant/components/synology_dsm/binary_sensor.py
+++ b/homeassistant/components/synology_dsm/binary_sensor.py
@@ -38,7 +38,7 @@ SECURITY_BINARY_SENSORS: tuple[SynologyDSMBinarySensorEntityDescription, ...] =
     SynologyDSMBinarySensorEntityDescription(
         api_key=SynoCoreSecurity.API_KEY,
         key="status",
-        name="Security Status",
+        translation_key="status",
         device_class=BinarySensorDeviceClass.SAFETY,
     ),
 )
@@ -47,14 +47,14 @@ STORAGE_DISK_BINARY_SENSORS: tuple[SynologyDSMBinarySensorEntityDescription, ...
     SynologyDSMBinarySensorEntityDescription(
         api_key=SynoStorage.API_KEY,
         key="disk_exceed_bad_sector_thr",
-        name="Exceeded Max Bad Sectors",
+        translation_key="disk_exceed_bad_sector_thr",
         device_class=BinarySensorDeviceClass.SAFETY,
         entity_category=EntityCategory.DIAGNOSTIC,
     ),
     SynologyDSMBinarySensorEntityDescription(
         api_key=SynoStorage.API_KEY,
         key="disk_below_remain_life_thr",
-        name="Below Min Remaining Life",
+        translation_key="disk_below_remain_life_thr",
         device_class=BinarySensorDeviceClass.SAFETY,
         entity_category=EntityCategory.DIAGNOSTIC,
     ),
diff --git a/homeassistant/components/synology_dsm/entity.py b/homeassistant/components/synology_dsm/entity.py
index 0cc17222802..0865686ef20 100644
--- a/homeassistant/components/synology_dsm/entity.py
+++ b/homeassistant/components/synology_dsm/entity.py
@@ -35,6 +35,7 @@ class SynologyDSMBaseEntity(CoordinatorEntity[_CoordinatorT]):
     entity_description: SynologyDSMEntityDescription
     unique_id: str
     _attr_attribution = ATTRIBUTION
+    _attr_has_entity_name = True
 
     def __init__(
         self,
@@ -47,7 +48,6 @@ class SynologyDSMBaseEntity(CoordinatorEntity[_CoordinatorT]):
         self.entity_description = description
 
         self._api = api
-        self._attr_name = f"{api.network.hostname} {description.name}"
         self._attr_unique_id: str = (
             f"{api.information.serial}_{description.api_key}:{description.key}"
         )
@@ -110,9 +110,6 @@ class SynologyDSMDeviceEntity(
             self._device_firmware = disk["firm"]
             self._device_type = disk["diskType"]
 
-        self._attr_name = (
-            f"{self._api.network.hostname} ({self._device_name}) {description.name}"
-        )
         self._attr_unique_id += f"_{self._device_id}"
         self._attr_device_info = DeviceInfo(
             identifiers={(DOMAIN, f"{self._api.information.serial}_{self._device_id}")},
diff --git a/homeassistant/components/synology_dsm/sensor.py b/homeassistant/components/synology_dsm/sensor.py
index 4031a921a7f..db0082daeab 100644
--- a/homeassistant/components/synology_dsm/sensor.py
+++ b/homeassistant/components/synology_dsm/sensor.py
@@ -50,7 +50,7 @@ UTILISATION_SENSORS: tuple[SynologyDSMSensorEntityDescription, ...] = (
     SynologyDSMSensorEntityDescription(
         api_key=SynoCoreUtilization.API_KEY,
         key="cpu_other_load",
-        name="CPU Utilization (Other)",
+        translation_key="cpu_other_load",
         native_unit_of_measurement=PERCENTAGE,
         icon="mdi:chip",
         entity_registry_enabled_default=False,
@@ -59,7 +59,7 @@ UTILISATION_SENSORS: tuple[SynologyDSMSensorEntityDescription, ...] = (
     SynologyDSMSensorEntityDescription(
         api_key=SynoCoreUtilization.API_KEY,
         key="cpu_user_load",
-        name="CPU Utilization (User)",
+        translation_key="cpu_user_load",
         native_unit_of_measurement=PERCENTAGE,
         icon="mdi:chip",
         state_class=SensorStateClass.MEASUREMENT,
@@ -67,7 +67,7 @@ UTILISATION_SENSORS: tuple[SynologyDSMSensorEntityDescription, ...] = (
     SynologyDSMSensorEntityDescription(
         api_key=SynoCoreUtilization.API_KEY,
         key="cpu_system_load",
-        name="CPU Utilization (System)",
+        translation_key="cpu_system_load",
         native_unit_of_measurement=PERCENTAGE,
         icon="mdi:chip",
         entity_registry_enabled_default=False,
@@ -76,7 +76,7 @@ UTILISATION_SENSORS: tuple[SynologyDSMSensorEntityDescription, ...] = (
     SynologyDSMSensorEntityDescription(
         api_key=SynoCoreUtilization.API_KEY,
         key="cpu_total_load",
-        name="CPU Utilization (Total)",
+        translation_key="cpu_total_load",
         native_unit_of_measurement=PERCENTAGE,
         icon="mdi:chip",
         state_class=SensorStateClass.MEASUREMENT,
@@ -84,7 +84,7 @@ UTILISATION_SENSORS: tuple[SynologyDSMSensorEntityDescription, ...] = (
     SynologyDSMSensorEntityDescription(
         api_key=SynoCoreUtilization.API_KEY,
         key="cpu_1min_load",
-        name="CPU Load Average (1 min)",
+        translation_key="cpu_1min_load",
         native_unit_of_measurement=ENTITY_UNIT_LOAD,
         icon="mdi:chip",
         entity_registry_enabled_default=False,
@@ -92,21 +92,21 @@ UTILISATION_SENSORS: tuple[SynologyDSMSensorEntityDescription, ...] = (
     SynologyDSMSensorEntityDescription(
         api_key=SynoCoreUtilization.API_KEY,
         key="cpu_5min_load",
-        name="CPU Load Average (5 min)",
+        translation_key="cpu_5min_load",
         native_unit_of_measurement=ENTITY_UNIT_LOAD,
         icon="mdi:chip",
     ),
     SynologyDSMSensorEntityDescription(
         api_key=SynoCoreUtilization.API_KEY,
         key="cpu_15min_load",
-        name="CPU Load Average (15 min)",
+        translation_key="cpu_15min_load",
         native_unit_of_measurement=ENTITY_UNIT_LOAD,
         icon="mdi:chip",
     ),
     SynologyDSMSensorEntityDescription(
         api_key=SynoCoreUtilization.API_KEY,
         key="memory_real_usage",
-        name="Memory Usage (Real)",
+        translation_key="memory_real_usage",
         native_unit_of_measurement=PERCENTAGE,
         icon="mdi:memory",
         state_class=SensorStateClass.MEASUREMENT,
@@ -114,7 +114,7 @@ UTILISATION_SENSORS: tuple[SynologyDSMSensorEntityDescription, ...] = (
     SynologyDSMSensorEntityDescription(
         api_key=SynoCoreUtilization.API_KEY,
         key="memory_size",
-        name="Memory Size",
+        translation_key="memory_size",
         native_unit_of_measurement=UnitOfInformation.MEGABYTES,
         device_class=SensorDeviceClass.DATA_SIZE,
         icon="mdi:memory",
@@ -124,7 +124,7 @@ UTILISATION_SENSORS: tuple[SynologyDSMSensorEntityDescription, ...] = (
     SynologyDSMSensorEntityDescription(
         api_key=SynoCoreUtilization.API_KEY,
         key="memory_cached",
-        name="Memory Cached",
+        translation_key="memory_cached",
         native_unit_of_measurement=UnitOfInformation.MEGABYTES,
         device_class=SensorDeviceClass.DATA_SIZE,
         icon="mdi:memory",
@@ -134,7 +134,7 @@ UTILISATION_SENSORS: tuple[SynologyDSMSensorEntityDescription, ...] = (
     SynologyDSMSensorEntityDescription(
         api_key=SynoCoreUtilization.API_KEY,
         key="memory_available_swap",
-        name="Memory Available (Swap)",
+        translation_key="memory_available_swap",
         native_unit_of_measurement=UnitOfInformation.MEGABYTES,
         device_class=SensorDeviceClass.DATA_SIZE,
         icon="mdi:memory",
@@ -143,7 +143,7 @@ UTILISATION_SENSORS: tuple[SynologyDSMSensorEntityDescription, ...] = (
     SynologyDSMSensorEntityDescription(
         api_key=SynoCoreUtilization.API_KEY,
         key="memory_available_real",
-        name="Memory Available (Real)",
+        translation_key="memory_available_real",
         native_unit_of_measurement=UnitOfInformation.MEGABYTES,
         device_class=SensorDeviceClass.DATA_SIZE,
         icon="mdi:memory",
@@ -152,7 +152,7 @@ UTILISATION_SENSORS: tuple[SynologyDSMSensorEntityDescription, ...] = (
     SynologyDSMSensorEntityDescription(
         api_key=SynoCoreUtilization.API_KEY,
         key="memory_total_swap",
-        name="Memory Total (Swap)",
+        translation_key="memory_total_swap",
         native_unit_of_measurement=UnitOfInformation.MEGABYTES,
         device_class=SensorDeviceClass.DATA_SIZE,
         icon="mdi:memory",
@@ -161,7 +161,7 @@ UTILISATION_SENSORS: tuple[SynologyDSMSensorEntityDescription, ...] = (
     SynologyDSMSensorEntityDescription(
         api_key=SynoCoreUtilization.API_KEY,
         key="memory_total_real",
-        name="Memory Total (Real)",
+        translation_key="memory_total_real",
         native_unit_of_measurement=UnitOfInformation.MEGABYTES,
         device_class=SensorDeviceClass.DATA_SIZE,
         icon="mdi:memory",
@@ -170,7 +170,7 @@ UTILISATION_SENSORS: tuple[SynologyDSMSensorEntityDescription, ...] = (
     SynologyDSMSensorEntityDescription(
         api_key=SynoCoreUtilization.API_KEY,
         key="network_up",
-        name="Upload Throughput",
+        translation_key="network_up",
         native_unit_of_measurement=UnitOfDataRate.KILOBYTES_PER_SECOND,
         device_class=SensorDeviceClass.DATA_RATE,
         icon="mdi:upload",
@@ -179,7 +179,7 @@ UTILISATION_SENSORS: tuple[SynologyDSMSensorEntityDescription, ...] = (
     SynologyDSMSensorEntityDescription(
         api_key=SynoCoreUtilization.API_KEY,
         key="network_down",
-        name="Download Throughput",
+        translation_key="network_down",
         native_unit_of_measurement=UnitOfDataRate.KILOBYTES_PER_SECOND,
         device_class=SensorDeviceClass.DATA_RATE,
         icon="mdi:download",
@@ -190,13 +190,13 @@ STORAGE_VOL_SENSORS: tuple[SynologyDSMSensorEntityDescription, ...] = (
     SynologyDSMSensorEntityDescription(
         api_key=SynoStorage.API_KEY,
         key="volume_status",
-        name="Status",
+        translation_key="volume_status",
         icon="mdi:checkbox-marked-circle-outline",
     ),
     SynologyDSMSensorEntityDescription(
         api_key=SynoStorage.API_KEY,
         key="volume_size_total",
-        name="Total Size",
+        translation_key="volume_size_total",
         native_unit_of_measurement=UnitOfInformation.TERABYTES,
         device_class=SensorDeviceClass.DATA_SIZE,
         icon="mdi:chart-pie",
@@ -206,7 +206,7 @@ STORAGE_VOL_SENSORS: tuple[SynologyDSMSensorEntityDescription, ...] = (
     SynologyDSMSensorEntityDescription(
         api_key=SynoStorage.API_KEY,
         key="volume_size_used",
-        name="Used Space",
+        translation_key="volume_size_used",
         native_unit_of_measurement=UnitOfInformation.TERABYTES,
         device_class=SensorDeviceClass.DATA_SIZE,
         icon="mdi:chart-pie",
@@ -215,14 +215,14 @@ STORAGE_VOL_SENSORS: tuple[SynologyDSMSensorEntityDescription, ...] = (
     SynologyDSMSensorEntityDescription(
         api_key=SynoStorage.API_KEY,
         key="volume_percentage_used",
-        name="Volume Used",
+        translation_key="volume_percentage_used",
         native_unit_of_measurement=PERCENTAGE,
         icon="mdi:chart-pie",
     ),
     SynologyDSMSensorEntityDescription(
         api_key=SynoStorage.API_KEY,
         key="volume_disk_temp_avg",
-        name="Average Disk Temp",
+        translation_key="volume_disk_temp_avg",
         native_unit_of_measurement=UnitOfTemperature.CELSIUS,
         device_class=SensorDeviceClass.TEMPERATURE,
         entity_category=EntityCategory.DIAGNOSTIC,
@@ -230,7 +230,7 @@ STORAGE_VOL_SENSORS: tuple[SynologyDSMSensorEntityDescription, ...] = (
     SynologyDSMSensorEntityDescription(
         api_key=SynoStorage.API_KEY,
         key="volume_disk_temp_max",
-        name="Maximum Disk Temp",
+        translation_key="volume_disk_temp_max",
         native_unit_of_measurement=UnitOfTemperature.CELSIUS,
         device_class=SensorDeviceClass.TEMPERATURE,
         entity_registry_enabled_default=False,
@@ -241,7 +241,7 @@ STORAGE_DISK_SENSORS: tuple[SynologyDSMSensorEntityDescription, ...] = (
     SynologyDSMSensorEntityDescription(
         api_key=SynoStorage.API_KEY,
         key="disk_smart_status",
-        name="Status (Smart)",
+        translation_key="disk_smart_status",
         icon="mdi:checkbox-marked-circle-outline",
         entity_registry_enabled_default=False,
         entity_category=EntityCategory.DIAGNOSTIC,
@@ -249,14 +249,14 @@ STORAGE_DISK_SENSORS: tuple[SynologyDSMSensorEntityDescription, ...] = (
     SynologyDSMSensorEntityDescription(
         api_key=SynoStorage.API_KEY,
         key="disk_status",
-        name="Status",
+        translation_key="disk_status",
         icon="mdi:checkbox-marked-circle-outline",
         entity_category=EntityCategory.DIAGNOSTIC,
     ),
     SynologyDSMSensorEntityDescription(
         api_key=SynoStorage.API_KEY,
         key="disk_temp",
-        name="Temperature",
+        translation_key="disk_temp",
         native_unit_of_measurement=UnitOfTemperature.CELSIUS,
         device_class=SensorDeviceClass.TEMPERATURE,
         state_class=SensorStateClass.MEASUREMENT,
@@ -268,7 +268,7 @@ INFORMATION_SENSORS: tuple[SynologyDSMSensorEntityDescription, ...] = (
     SynologyDSMSensorEntityDescription(
         api_key=SynoDSMInformation.API_KEY,
         key="temperature",
-        name="Temperature",
+        translation_key="temperature",
         native_unit_of_measurement=UnitOfTemperature.CELSIUS,
         device_class=SensorDeviceClass.TEMPERATURE,
         state_class=SensorStateClass.MEASUREMENT,
@@ -277,7 +277,7 @@ INFORMATION_SENSORS: tuple[SynologyDSMSensorEntityDescription, ...] = (
     SynologyDSMSensorEntityDescription(
         api_key=SynoDSMInformation.API_KEY,
         key="uptime",
-        name="Last Boot",
+        translation_key="uptime",
         device_class=SensorDeviceClass.TIMESTAMP,
         entity_registry_enabled_default=False,
         entity_category=EntityCategory.DIAGNOSTIC,
diff --git a/homeassistant/components/synology_dsm/strings.json b/homeassistant/components/synology_dsm/strings.json
index f571b9c5326..bf18a9707a1 100644
--- a/homeassistant/components/synology_dsm/strings.json
+++ b/homeassistant/components/synology_dsm/strings.json
@@ -60,5 +60,51 @@
         }
       }
     }
+  },
+  "entity": {
+    "binary_sensor": {
+      "disk_below_remain_life_thr": { "name": "Below min remaining life" },
+      "disk_exceed_bad_sector_thr": { "name": "Exceeded max bad sectors" },
+      "status": { "name": "Security status" }
+    },
+    "sensor": {
+      "cpu_15min_load": { "name": "CPU load average (15 min)" },
+      "cpu_1min_load": { "name": "CPU load average (1 min)" },
+      "cpu_5min_load": { "name": "CPU load average (5 min)" },
+      "cpu_other_load": { "name": "CPU utilization (other)" },
+      "cpu_system_load": { "name": "CPU utilization (system)" },
+      "cpu_total_load": { "name": "CPU utilization (total)" },
+      "cpu_user_load": { "name": "CPU utilization (user)" },
+      "disk_smart_status": { "name": "Status (smart)" },
+      "disk_status": { "name": "Status" },
+      "disk_temp": {
+        "name": "[%key:component::sensor::entity_component::temperature::name%]"
+      },
+      "memory_available_real": { "name": "Memory available (real)" },
+      "memory_available_swap": { "name": "Memory available (swap)" },
+      "memory_cached": { "name": "Memory cached" },
+      "memory_real_usage": { "name": "Memory usage (real)" },
+      "memory_size": { "name": "Memory size" },
+      "memory_total_real": { "name": "Memory total (real)" },
+      "memory_total_swap": { "name": "Memory total (swap)" },
+      "network_down": { "name": "Download throughput" },
+      "network_up": { "name": "Upload throughput" },
+      "temperature": {
+        "name": "[%key:component::sensor::entity_component::temperature::name%]"
+      },
+      "uptime": { "name": "Last boot" },
+      "volume_disk_temp_avg": { "name": "Average disk temp" },
+      "volume_disk_temp_max": { "name": "Maximum disk temp" },
+      "volume_percentage_used": { "name": "Volume used" },
+      "volume_size_total": { "name": "Total size" },
+      "volume_size_used": { "name": "Used space" },
+      "volume_status": { "name": "Status" }
+    },
+    "switch": {
+      "home_mode": { "name": "Home mode" }
+    },
+    "update": {
+      "update": { "name": "DSM update" }
+    }
   }
 }
diff --git a/homeassistant/components/synology_dsm/switch.py b/homeassistant/components/synology_dsm/switch.py
index e44c578f4d2..208d299cc2e 100644
--- a/homeassistant/components/synology_dsm/switch.py
+++ b/homeassistant/components/synology_dsm/switch.py
@@ -33,7 +33,7 @@ SURVEILLANCE_SWITCH: tuple[SynologyDSMSwitchEntityDescription, ...] = (
     SynologyDSMSwitchEntityDescription(
         api_key=SynoSurveillanceStation.HOME_MODE_API_KEY,
         key="home_mode",
-        name="Home Mode",
+        translation_key="home_mode",
         icon="mdi:home-account",
     ),
 )
@@ -72,10 +72,6 @@ class SynoDSMSurveillanceHomeModeToggle(
         super().__init__(api, coordinator, description)
         self._version = version
 
-        self._attr_name = (
-            f"{self._api.network.hostname} Surveillance Station {description.name}"
-        )
-
     @property
     def is_on(self) -> bool:
         """Return the state."""
diff --git a/homeassistant/components/synology_dsm/update.py b/homeassistant/components/synology_dsm/update.py
index ec3ea52293c..c550b180553 100644
--- a/homeassistant/components/synology_dsm/update.py
+++ b/homeassistant/components/synology_dsm/update.py
@@ -30,7 +30,7 @@ UPDATE_ENTITIES: Final = [
     SynologyDSMUpdateEntityEntityDescription(
         api_key=SynoCoreUpgrade.API_KEY,
         key="update",
-        name="DSM Update",
+        translation_key="update",
         entity_category=EntityCategory.DIAGNOSTIC,
     )
 ]
-- 
GitLab