]> git.basschouten.com Git - openhab-addons.git/commitdiff
[hue] Internationalization of discovery results (#11501)
authorlolodomo <lg.hc@free.fr>
Mon, 8 Nov 2021 12:53:42 +0000 (13:53 +0100)
committerGitHub <noreply@github.com>
Mon, 8 Nov 2021 12:53:42 +0000 (13:53 +0100)
Signed-off-by: Laurent Garnier <lg.hc@free.fr>
bundles/org.openhab.binding.hue/src/main/java/org/openhab/binding/hue/internal/HueThingHandlerFactory.java
bundles/org.openhab.binding.hue/src/main/java/org/openhab/binding/hue/internal/discovery/HueDeviceDiscoveryService.java
bundles/org.openhab.binding.hue/src/main/java/org/openhab/binding/hue/internal/handler/HueBridgeHandler.java
bundles/org.openhab.binding.hue/src/main/resources/OH-INF/i18n/hue.properties

index fb13efd35140aff0ab7984bf9efb3426568ba89f..e82cdec945439d095f65d8276ec3886b4c8f2d3a 100644 (file)
@@ -33,6 +33,8 @@ import org.openhab.binding.hue.internal.handler.sensors.PresenceHandler;
 import org.openhab.binding.hue.internal.handler.sensors.TapSwitchHandler;
 import org.openhab.binding.hue.internal.handler.sensors.TemperatureHandler;
 import org.openhab.core.config.core.Configuration;
+import org.openhab.core.i18n.LocaleProvider;
+import org.openhab.core.i18n.TranslationProvider;
 import org.openhab.core.thing.Bridge;
 import org.openhab.core.thing.Thing;
 import org.openhab.core.thing.ThingTypeUID;
@@ -68,10 +70,15 @@ public class HueThingHandlerFactory extends BaseThingHandlerFactory {
             .flatMap(i -> i).collect(Collectors.toSet()));
 
     private final HueStateDescriptionProvider stateDescriptionProvider;
+    private final TranslationProvider i18nProvider;
+    private final LocaleProvider localeProvider;
 
     @Activate
-    public HueThingHandlerFactory(final @Reference HueStateDescriptionProvider stateDescriptionProvider) {
+    public HueThingHandlerFactory(final @Reference HueStateDescriptionProvider stateDescriptionProvider,
+            final @Reference TranslationProvider i18nProvider, final @Reference LocaleProvider localeProvider) {
         this.stateDescriptionProvider = stateDescriptionProvider;
+        this.i18nProvider = i18nProvider;
+        this.localeProvider = localeProvider;
     }
 
     @Override
@@ -142,7 +149,7 @@ public class HueThingHandlerFactory extends BaseThingHandlerFactory {
     @Override
     protected @Nullable ThingHandler createHandler(Thing thing) {
         if (HueBridgeHandler.SUPPORTED_THING_TYPES.contains(thing.getThingTypeUID())) {
-            return new HueBridgeHandler((Bridge) thing, stateDescriptionProvider);
+            return new HueBridgeHandler((Bridge) thing, stateDescriptionProvider, i18nProvider, localeProvider);
         } else if (HueLightHandler.SUPPORTED_THING_TYPES.contains(thing.getThingTypeUID())) {
             return new HueLightHandler(thing, stateDescriptionProvider);
         } else if (DimmerSwitchHandler.SUPPORTED_THING_TYPES.contains(thing.getThingTypeUID())) {
index 019eb36393f4265167e8db569809a2adc997f284..b86639169f34beddd93c0b1cfe731c045ffd3eec 100644 (file)
@@ -111,8 +111,11 @@ public class HueDeviceDiscoveryService extends AbstractDiscoveryService
     @Override
     public void setThingHandler(@Nullable ThingHandler handler) {
         if (handler instanceof HueBridgeHandler) {
-            hueBridgeHandler = (HueBridgeHandler) handler;
+            HueBridgeHandler localHandler = (HueBridgeHandler) handler;
+            hueBridgeHandler = localHandler;
             bridgeUID = handler.getThing().getUID();
+            i18nProvider = localHandler.getI18nProvider();
+            localeProvider = localHandler.getLocaleProvider();
         }
     }
 
@@ -275,8 +278,14 @@ public class HueDeviceDiscoveryService extends AbstractDiscoveryService
             Map<String, Object> properties = new HashMap<>();
             properties.put(GROUP_ID, group.getId());
 
-            String name = String.format("%s (%s)", "0".equals(group.getId()) ? "All lights" : group.getName(),
-                    group.getType());
+            String name;
+            if ("0".equals(group.getId())) {
+                name = "@text/discovery.group.all_lights.label";
+            } else if ("Room".equals(group.getType())) {
+                name = group.getName();
+            } else {
+                name = String.format("%s (%s)", group.getName(), group.getType());
+            }
             DiscoveryResult discoveryResult = DiscoveryResultBuilder.create(thingUID).withThingType(THING_TYPE_GROUP)
                     .withProperties(properties).withBridge(localBridgeUID).withRepresentationProperty(GROUP_ID)
                     .withLabel(name).build();
index 0a9a577c9e8b1f32e2651bb9a9d6f80ed2fcfef8..19f377e52a3bc1e8e3cd92cadd4ce7e2b48e5ec3 100644 (file)
@@ -54,6 +54,8 @@ import org.openhab.binding.hue.internal.exceptions.LinkButtonException;
 import org.openhab.binding.hue.internal.exceptions.UnauthorizedException;
 import org.openhab.core.config.core.Configuration;
 import org.openhab.core.config.core.status.ConfigStatusMessage;
+import org.openhab.core.i18n.LocaleProvider;
+import org.openhab.core.i18n.TranslationProvider;
 import org.openhab.core.library.types.HSBType;
 import org.openhab.core.library.types.OnOffType;
 import org.openhab.core.library.types.StringType;
@@ -98,6 +100,8 @@ public class HueBridgeHandler extends ConfigStatusBridgeHandler implements HueCl
 
     private final Logger logger = LoggerFactory.getLogger(HueBridgeHandler.class);
     private final HueStateDescriptionProvider stateDescriptionOptionProvider;
+    private final TranslationProvider i18nProvider;
+    private final LocaleProvider localeProvider;
 
     private final Map<String, FullLight> lastLightStates = new ConcurrentHashMap<>();
     private final Map<String, FullSensor> lastSensorStates = new ConcurrentHashMap<>();
@@ -403,9 +407,12 @@ public class HueBridgeHandler extends ConfigStatusBridgeHandler implements HueCl
 
     private List<String> consoleScenesList = new ArrayList<>();
 
-    public HueBridgeHandler(Bridge bridge, HueStateDescriptionProvider stateDescriptionOptionProvider) {
+    public HueBridgeHandler(Bridge bridge, HueStateDescriptionProvider stateDescriptionOptionProvider,
+            TranslationProvider i18nProvider, LocaleProvider localeProvider) {
         super(bridge);
         this.stateDescriptionOptionProvider = stateDescriptionOptionProvider;
+        this.i18nProvider = i18nProvider;
+        this.localeProvider = localeProvider;
     }
 
     @Override
@@ -1040,4 +1047,12 @@ public class HueBridgeHandler extends ConfigStatusBridgeHandler implements HueCl
             return List.of();
         }
     }
+
+    public TranslationProvider getI18nProvider() {
+        return i18nProvider;
+    }
+
+    public LocaleProvider getLocaleProvider() {
+        return localeProvider;
+    }
 }
index a7609ea22cb2f7493dcb63fe125fbde2d5073d07..fa842293b431778a3d1fa2f508f3f7283ad0f11b 100644 (file)
@@ -225,3 +225,7 @@ actionInputFadeTimeLabel = FadeTime
 actionInputFadeTimeDesc = The fade time to use for the light command in ms.
 actionLabel = send a light command with a custom fade time
 actionDesc = Send a light command with a custom fade time.
+
+# discovery results
+
+discovery.group.all_lights.label = All lights