Skip to content

Commit

Permalink
Add danish translation
Browse files Browse the repository at this point in the history
  • Loading branch information
kgn3400 committed May 20, 2024
1 parent a35153a commit 65d3406
Show file tree
Hide file tree
Showing 7 changed files with 474 additions and 36 deletions.
221 changes: 188 additions & 33 deletions custom_components/message_log/component_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
CONF_ORDER_BY_MESSAGE_LEVEL,
CONF_REMOVE_MESSAGE_AFTER_HOURS,
CONF_SCROLL_THROUGH_LAST_MESSAGES_COUNT,
TRANSLATE_EXTRA,
)
from .message_log_settings import (
MessageItem,
Expand All @@ -20,6 +21,134 @@
MessageListShow,
MessageLogSettings,
)
from .translate import Translate


# ------------------------------------------------------------------
# ------------------------------------------------------------------
@dataclass
class Translations:
"""Translations."""

def __init__(self, hass: HomeAssistant) -> None:
"""Init."""

self.now_str: str
self.for_str: str

self.ago_str: str

self.seconds_str: str

self.minute_str: str
self.minutes_str: str

self.hour_str: str
self.hours_str: str

self.day_str: str
self.days_str: str

self.week_str: str
self.weeks_str: str

self.message_str: str
self.messages_str: str

self.last_message_str: str

self.received_str: str
self.relevance_str: str

self.all_str: str
self.info_str: str
self.attention_str: str
self.warning_str: str
self.error_str: str

self.translate: Translate = Translate(hass, TRANSLATE_EXTRA)

# ------------------------------------------------------------------
async def async_refresh(self):
"""Refresh."""
self.now_str = await self.translate.async_get_localized_str(
TRANSLATE_EXTRA + ".rt_now",
)

self.for_str = await self.translate.async_get_localized_str(
TRANSLATE_EXTRA + ".rt_for",
)

self.ago_str = await self.translate.async_get_localized_str(
TRANSLATE_EXTRA + ".rt_ago",
)

self.seconds_str = await self.translate.async_get_localized_str(
TRANSLATE_EXTRA + ".rt_seconds",
)

self.minute_str = await self.translate.async_get_localized_str(
TRANSLATE_EXTRA + ".rt_minute",
)
self.minutes_str = await self.translate.async_get_localized_str(
TRANSLATE_EXTRA + ".rt_minutes",
)

self.hour_str = await self.translate.async_get_localized_str(
TRANSLATE_EXTRA + ".rt_hour",
)
self.hours_str = await self.translate.async_get_localized_str(
TRANSLATE_EXTRA + ".rt_hours",
)

self.day_str = await self.translate.async_get_localized_str(
TRANSLATE_EXTRA + ".rt_day",
)
self.days_str = await self.translate.async_get_localized_str(
TRANSLATE_EXTRA + ".rt_days",
)

self.week_str = await self.translate.async_get_localized_str(
TRANSLATE_EXTRA + ".rt_week",
)
self.weeks_str = await self.translate.async_get_localized_str(
TRANSLATE_EXTRA + ".rt_weeks",
)

self.message_str = await self.translate.async_get_localized_str(
TRANSLATE_EXTRA + ".message",
)
self.messages_str = await self.translate.async_get_localized_str(
TRANSLATE_EXTRA + ".message",
)
self.messages_str = await self.translate.async_get_localized_str(
TRANSLATE_EXTRA + ".messages",
)
self.last_message_str = await self.translate.async_get_localized_str(
TRANSLATE_EXTRA + ".last_message",
)

self.received_str = await self.translate.async_get_localized_str(
TRANSLATE_EXTRA + ".received",
)
self.relevance_str = await self.translate.async_get_localized_str(
TRANSLATE_EXTRA + ".relevance",
)
self.all_str = await self.translate.async_get_localized_str(
TRANSLATE_EXTRA + ".all",
)
self.info_str = await self.translate.async_get_localized_str(
TRANSLATE_EXTRA + ".info",
)
self.attention_str = await self.translate.async_get_localized_str(
TRANSLATE_EXTRA + ".attention",
)
self.warning_str = await self.translate.async_get_localized_str(
TRANSLATE_EXTRA + ".warning",
)
self.error_str = await self.translate.async_get_localized_str(
TRANSLATE_EXTRA + ".error",
)


# ------------------------------------------------------------------
Expand All @@ -43,29 +172,47 @@ def __init__(self, hass: HomeAssistant, entry: ConfigEntry) -> None:
self.entry.options.get(CONF_ORDER_BY_MESSAGE_LEVEL, True)
)

self.translate: Translate = Translate(hass, TRANSLATE_EXTRA)
self.translations: Translations = Translations(hass)

# ------------------------------------------------------------------
async def async_relative_time_received(self, date_time: datetime) -> str:
"""Relative time received."""

return (
self.translations.received_str
+ " "
+ await self.async_relative_time(date_time)
)

# ------------------------------------------------------------------
async def async_relative_time(self, date_time: datetime) -> str:
"""Relative time."""

now = datetime.now(UTC)
diff = now - date_time
diff: timedelta = now - date_time

# -----------------------------
if diff < timedelta(seconds=6):
return self.translations.now_str

if diff < timedelta(seconds=10):
return "lige nu"
elif diff < timedelta(minutes=1):
return f"for {diff.seconds} sekund siden"
return f"{self.translations.for_str} {diff.seconds} {self.translations.seconds_str} {self.translations.ago_str}"

elif diff < timedelta(hours=1):
minutes = diff.seconds // 60
return f"for {minutes} minut{'ter' if minutes != 1 else ''} siden"
minutes: int = diff.seconds // 60
return f"{self.translations.for_str} {minutes} {self.translations.minutes_str if minutes != 1 else self.translations.minute_str} {self.translations.ago_str}"

elif diff < timedelta(days=1):
hours = diff.seconds // 3600
return f"for {hours} time{'r' if hours != 1 else ''} siden"
hours: int = diff.seconds // 3600
return f"{self.translations.for_str} {hours} {self.translations.hours_str if hours != 1 else self.translations.hour_str} {self.translations.ago_str}"

elif diff < timedelta(weeks=1):
days = diff.days
return f"for {days} dag{'e' if days != 1 else ''} siden"
days: int = diff.days
return f"{self.translations.for_str} {days} {self.translations.days_str if days != 1 else self.translations.day_str} {self.translations.ago_str}"

weeks = diff.days // 7
return f"for {weeks} uge{'r' if weeks != 1 else ''} siden"
weeks: int = diff.days // 7
return f"{self.translations.for_str} {weeks} {self.translations.weeks_str if weeks != 1 else self.translations.week_str} {self.translations.ago_str}"

# ------------------------------------------------------------------
async def async_remove_messages_service(self, call: ServiceCall) -> None:
Expand Down Expand Up @@ -152,6 +299,7 @@ async def async_messagelist_show_service(self, call: ServiceCall) -> None:
async def async_update(self) -> None:
"""Message log Update."""

await self.translations.async_refresh()
await self.async_remove_outdated()
self.update_scroll_message_pos()
await self.async_update_markdown()
Expand Down Expand Up @@ -192,9 +340,9 @@ async def async_create_markdown_latest_and_scroll(self) -> None:
item: MessageItem = self.settings.message_list[0]

self.markdown = (
f'## <font color={self.settings.highest_message_level_color}> <ha-icon icon="mdi:message-outline"></ha-icon></font> Besked\n'
f'- <font color={item.message_level_color}> <ha-icon icon="{item.icon}"></ha-icon></font> <font size=3>Sidste besked: **{item.message}**</font>\n'
f"Modtaget {await self.async_relative_time(item.added_at)}.\n\n"
f'## <font color={self.settings.highest_message_level_color}> <ha-icon icon="mdi:message-outline"></ha-icon></font> { self.translations.message_str}\n'
f'- <font color={item.message_level_color}> <ha-icon icon="{item.icon}"></ha-icon></font> <font size=3>{self.translations.last_message_str}: **{item.message}**</font>\n'
f"{await self.async_relative_time_received(item.added_at)}.\n\n"
)

# Scroll message
Expand All @@ -207,19 +355,19 @@ async def async_create_markdown_latest_and_scroll(self) -> None:

item: MessageItem = self.message_list_sorted[self.scroll_message_pos]
self.markdown += (
f'- <font color={item.message_level_color}> <ha-icon icon="{item.icon}"></ha-icon></font> Beskeder: **{item.message}**\n'
f"Modtaget {await self.async_relative_time(item.added_at)}. "
f'- <font color={item.message_level_color}> <ha-icon icon="{item.icon}"></ha-icon></font> {self.translations.messages_str}: **{item.message}**\n'
f"{await self.async_relative_time_received(item.added_at)}. "
)
else:
self.markdown = f'## <font color={MessageLevel.INFO.color}> <ha-icon icon="mdi:message-outline"></ha-icon></font> Besked\n'
self.markdown = f'## <font color={MessageLevel.INFO.color}> <ha-icon icon="mdi:message-outline"></ha-icon></font> {self.translations.message_str}\n'

# ------------------------------------------------------------------
async def async_create_markdown_message_list(self) -> None:
"""Markdown message list."""
# Create markdown list
if len(self.message_list_sorted) > 0:
count_pos: int = 1
self.markdown_message_list = f'## <font color={self.settings.highest_message_level_color}> <ha-icon icon="mdi:message-outline"></ha-icon></font> Beskeder\n'
self.markdown_message_list = f'## <font color={self.settings.highest_message_level_color}> <ha-icon icon="mdi:message-outline"></ha-icon></font> {self.translations.messages_str}\n'

for item in self.message_list_sorted:
if count_pos > self.entry.options.get(
Expand All @@ -229,40 +377,47 @@ async def async_create_markdown_message_list(self) -> None:

self.markdown_message_list += (
f'- <font color={item.message_level_color}> <ha-icon icon="{item.icon}"></ha-icon></font> **{item.message}**\n'
f"Modtaget {await self.async_relative_time(item.added_at)}.\n"
f"{await self.async_relative_time_received(item.added_at)}.\n"
)
count_pos += 1
else:
self.markdown_message_list = f'## <font color={MessageLevel.INFO.color}> <ha-icon icon="mdi:message-outline"></ha-icon></font> Besked\n'
self.markdown_message_list = f'## <font color={MessageLevel.INFO.color}> <ha-icon icon="mdi:message-outline"></ha-icon></font> {self.translations.message_str}\n'

# ------------------------------------------------------------------
async def async_create_markdown_message_settings(self) -> None:
"""Create markdown for settings."""

orderby: str = (
"Modtaget"
self.translations.received_str
if self.settings.message_list_orderby == MessageListOrderBy.ADDED_AT
else "Relevans"
else self.translations.relevance_str
)

match self.settings.message_list_show:
case MessageListShow.ALL:
show: str = "Alt"
show: str = self.translations.all_str
case MessageListShow.INFO:
show: str = "Info"
show: str = self.translations.info_str
case MessageListShow.ATTENTION:
show: str = "Vigtigt"
show: str = self.translations.attention_str
case MessageListShow.WARNING:
show: str = "Advarsel"
show: str = self.translations.warning_str
case MessageListShow.ERROR:
show: str = "Fejl"
show: str = self.translations.error_str

self.markdown_message_settings = (
"|Opsætning| |\n"
"| --- | ----------- |\n"
f"| Sortering | : {orderby} |\n"
f"| Vis | : {show} |"
self.markdown_message_settings = await self.translate.async_get_localized_str(
TRANSLATE_EXTRA + ".message_settings",
orderby=orderby,
show=show,
)

# self.markdown_message_settings = (
# "|Opsætning| |\n"
# "| --- | ----------- |\n"
# f"| Sortering | : {orderby} |\n"
# f"| Vis | : {show} |"
# )

# ------------------------------------------------------------------
def create_sorted_message_list(
self,
Expand Down
4 changes: 4 additions & 0 deletions custom_components/message_log/const.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@
CONF_RESTART_TIMER = "restart_timer"
CONF_LISTEN_TO_TIMER_TRIGGER = "listen_to_timer_trigger"

TRANSLATION_KEY = DOMAIN

TRANSLATE_EXTRA = "options.step.extra.data"


class RefreshType(Enum):
"""Refresh type."""
Expand Down
2 changes: 1 addition & 1 deletion custom_components/message_log/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,6 @@
],
"single_config_entry": true,
"ssdp": [],
"version": "1.0.17",
"version": "1.0.19",
"zeroconf": []
}
4 changes: 4 additions & 0 deletions custom_components/message_log/sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
CONF_RESTART_TIMER,
CONF_SCROLL_MESSAGES_EVERY_MINUTES,
DOMAIN,
TRANSLATION_KEY,
RefreshType,
)
from .entity import ComponentEntity
Expand Down Expand Up @@ -74,6 +75,7 @@ def __init__(

self._name = "Last message"
self._unique_id = "last_message"
self.translation_key = TRANSLATION_KEY

# ------------------------------------------------------
@property
Expand Down Expand Up @@ -202,6 +204,8 @@ def __init__(
self._name = "Scroll message"
self._unique_id = "scroll_message"

self.translation_key = TRANSLATION_KEY

if self.entry.options.get(CONF_LISTEN_TO_TIMER_TRIGGER, ""):
self.refresh_type = RefreshType.LISTEN_TO_TIMER_TRIGGER
self.timer_trigger = TimerTrigger(
Expand Down
Loading

0 comments on commit 65d3406

Please sign in to comment.