From f91e27781f7b71b70446d231444583411d5aa214 Mon Sep 17 00:00:00 2001 From: joBr99 <29555657+joBr99@users.noreply.github.com> Date: Wed, 16 Mar 2022 23:39:36 +0100 Subject: [PATCH] added localization support for date --- README.md | 12 ++++++++-- appdaemon/apps.yaml | 5 ++-- .../nspanel-lovelace-ui.py | 22 ++++++++++++++---- doc-pics/appdaemon-babel.png | Bin 0 -> 11040 bytes info.md | 5 ++-- 5 files changed, 33 insertions(+), 11 deletions(-) create mode 100644 doc-pics/appdaemon-babel.png diff --git a/README.md b/README.md index 6fc8d9c1..95e228c2 100644 --- a/README.md +++ b/README.md @@ -84,6 +84,13 @@ The easiest way to install it is through Home Assistant's Supervisor Add-on Stor ![hass-add-on-store](doc-pics/hass-add-on-store.png) +#### Add babel package to AppDaemon Container (Optional) + +For localisation format (date in your local language) you need to add the python package babel to your AppDaemon Installation. + +![appdaemon-babel](doc-pics/appdaemon-babel.png) + + ### Installing Studio Code Server (optional, recommended) You will need a way to edit the `apps.yaml` config file in the Appdaemon folder. @@ -251,9 +258,10 @@ nspanel-1: value: 10 - time: "23:00:00" value: 0 - locale: "de_DE" + locale: "de_DE" # only used if babel python package is installed + dateFormatBabel: "full" # only used if babel python package is installed timeFormat: "%H:%M" - dateFormat: "%A, %d. %B %Y" + dateFormat: "%A, %d. %B %Y" # ignored if babel python package is installed weatherEntity: weather.example pages: - type: cardEntities diff --git a/appdaemon/apps.yaml b/appdaemon/apps.yaml index 3c8e5efe..eaa7ff8f 100644 --- a/appdaemon/apps.yaml +++ b/appdaemon/apps.yaml @@ -12,9 +12,10 @@ nspanel: value: 10 - time: "23:00:00" value: 0 - locale: "de_DE" + locale: "de_DE" # only used if babel python package is installed + dateFormatBabel: "full" # only used if babel python package is installed timeFormat: "%H:%M" - dateFormat: "%A, %d. %B %Y" + dateFormat: "%A, %d. %B %Y" # ignored if babel python package is installed weatherEntity: weather.example pages: - type: cardEntities diff --git a/apps/nspanel-lovelace-ui/nspanel-lovelace-ui.py b/apps/nspanel-lovelace-ui/nspanel-lovelace-ui.py index bdf4f19a..9db53ef4 100644 --- a/apps/nspanel-lovelace-ui/nspanel-lovelace-ui.py +++ b/apps/nspanel-lovelace-ui/nspanel-lovelace-ui.py @@ -1,7 +1,6 @@ import json import datetime import hassapi as hass - import math import colorsys @@ -141,9 +140,22 @@ class NsPanelLovelaceUI: self.send_mqtt_msg("time,{0}".format(time)) def update_date(self, kwargs): - # TODO: implement localization of date - date = datetime.datetime.now().strftime(self.config["dateFormat"]) - self.send_mqtt_msg("date,?{0}".format(date)) + + import importlib + babel_spec = importlib.util.find_spec("babel") + if babel_spec is not None: + self.api.log("babel package found", level="DEBUG") + import babel.dates + if "dateFormatBabel" in self.config: + dateformat = self.config["dateFormatBabel"] + else: + dateformat = "full" + date = babel.dates.format_date(datetime.datetime.now(), dateformat, locale=self.config["locale"]) + self.send_mqtt_msg(f"date,?{date}") + else: + self.api.log("babel package not found", level="DEBUG") + date = datetime.datetime.now().strftime(self.config["dateFormat"]) + self.send_mqtt_msg(f"date,?{date}") def update_screensaver_brightness(self, kwargs): self.current_screensaver_brightness = kwargs['value'] @@ -542,4 +554,4 @@ class NsPanelLovelaceUI: sat = r hsv = (math.degrees(math.atan2(y, x))%360/360, sat, 1) rgb = self.hsv2rgb(hsv[0],hsv[1],hsv[2]) - return rgb + return rgb \ No newline at end of file diff --git a/doc-pics/appdaemon-babel.png b/doc-pics/appdaemon-babel.png new file mode 100644 index 0000000000000000000000000000000000000000..d8c43568a8370abbbf6f8d2a023bb0e33d6e23ab GIT binary patch literal 11040 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 Pz~_>g)y0wv&Y1rK+})Cu literal 0 HcmV?d00001 diff --git a/info.md b/info.md index 317e8bc6..ffc5a16e 100644 --- a/info.md +++ b/info.md @@ -18,9 +18,10 @@ nspanel-1: value: 10 - time: "23:00:00" value: 0 - locale: "de_DE" + locale: "de_DE" # only used if babel python package is installed + dateFormatBabel: "full" # only used if babel python package is installed timeFormat: "%H:%M" - dateFormat: "%A, %d. %B %Y" + dateFormat: "%A, %d. %B %Y" # ignored if babel python package is installed weatherEntity: weather.example pages: - type: cardEntities