Add translations for units of measurement to Habitica integration (#131761)

This commit is contained in:
Manu 2024-11-28 08:12:52 +01:00 committed by GitHub
parent 17236a5698
commit fe2bca51a4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 30 additions and 28 deletions

View File

@ -25,8 +25,6 @@ ATTR_DATA = "data"
MANUFACTURER = "HabitRPG, Inc." MANUFACTURER = "HabitRPG, Inc."
NAME = "Habitica" NAME = "Habitica"
UNIT_TASKS = "tasks"
ATTR_CONFIG_ENTRY = "config_entry" ATTR_CONFIG_ENTRY = "config_entry"
ATTR_SKILL = "skill" ATTR_SKILL = "skill"
ATTR_TASK = "task" ATTR_TASK = "task"

View File

@ -24,7 +24,7 @@ from homeassistant.helpers.issue_registry import (
) )
from homeassistant.helpers.typing import StateType from homeassistant.helpers.typing import StateType
from .const import ASSETS_URL, DOMAIN, UNIT_TASKS from .const import ASSETS_URL, DOMAIN
from .entity import HabiticaBase from .entity import HabiticaBase
from .types import HabiticaConfigEntry from .types import HabiticaConfigEntry
from .util import entity_used_in, get_attribute_points, get_attributes_total from .util import entity_used_in, get_attribute_points, get_attributes_total
@ -84,40 +84,34 @@ SENSOR_DESCRIPTIONS: tuple[HabitipySensorEntityDescription, ...] = (
HabitipySensorEntityDescription( HabitipySensorEntityDescription(
key=HabitipySensorEntity.HEALTH, key=HabitipySensorEntity.HEALTH,
translation_key=HabitipySensorEntity.HEALTH, translation_key=HabitipySensorEntity.HEALTH,
native_unit_of_measurement="HP",
suggested_display_precision=0, suggested_display_precision=0,
value_fn=lambda user, _: user.get("stats", {}).get("hp"), value_fn=lambda user, _: user.get("stats", {}).get("hp"),
), ),
HabitipySensorEntityDescription( HabitipySensorEntityDescription(
key=HabitipySensorEntity.HEALTH_MAX, key=HabitipySensorEntity.HEALTH_MAX,
translation_key=HabitipySensorEntity.HEALTH_MAX, translation_key=HabitipySensorEntity.HEALTH_MAX,
native_unit_of_measurement="HP",
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
value_fn=lambda user, _: user.get("stats", {}).get("maxHealth"), value_fn=lambda user, _: user.get("stats", {}).get("maxHealth"),
), ),
HabitipySensorEntityDescription( HabitipySensorEntityDescription(
key=HabitipySensorEntity.MANA, key=HabitipySensorEntity.MANA,
translation_key=HabitipySensorEntity.MANA, translation_key=HabitipySensorEntity.MANA,
native_unit_of_measurement="MP",
suggested_display_precision=0, suggested_display_precision=0,
value_fn=lambda user, _: user.get("stats", {}).get("mp"), value_fn=lambda user, _: user.get("stats", {}).get("mp"),
), ),
HabitipySensorEntityDescription( HabitipySensorEntityDescription(
key=HabitipySensorEntity.MANA_MAX, key=HabitipySensorEntity.MANA_MAX,
translation_key=HabitipySensorEntity.MANA_MAX, translation_key=HabitipySensorEntity.MANA_MAX,
native_unit_of_measurement="MP",
value_fn=lambda user, _: user.get("stats", {}).get("maxMP"), value_fn=lambda user, _: user.get("stats", {}).get("maxMP"),
), ),
HabitipySensorEntityDescription( HabitipySensorEntityDescription(
key=HabitipySensorEntity.EXPERIENCE, key=HabitipySensorEntity.EXPERIENCE,
translation_key=HabitipySensorEntity.EXPERIENCE, translation_key=HabitipySensorEntity.EXPERIENCE,
native_unit_of_measurement="XP",
value_fn=lambda user, _: user.get("stats", {}).get("exp"), value_fn=lambda user, _: user.get("stats", {}).get("exp"),
), ),
HabitipySensorEntityDescription( HabitipySensorEntityDescription(
key=HabitipySensorEntity.EXPERIENCE_MAX, key=HabitipySensorEntity.EXPERIENCE_MAX,
translation_key=HabitipySensorEntity.EXPERIENCE_MAX, translation_key=HabitipySensorEntity.EXPERIENCE_MAX,
native_unit_of_measurement="XP",
value_fn=lambda user, _: user.get("stats", {}).get("toNextLevel"), value_fn=lambda user, _: user.get("stats", {}).get("toNextLevel"),
), ),
HabitipySensorEntityDescription( HabitipySensorEntityDescription(
@ -128,7 +122,6 @@ SENSOR_DESCRIPTIONS: tuple[HabitipySensorEntityDescription, ...] = (
HabitipySensorEntityDescription( HabitipySensorEntityDescription(
key=HabitipySensorEntity.GOLD, key=HabitipySensorEntity.GOLD,
translation_key=HabitipySensorEntity.GOLD, translation_key=HabitipySensorEntity.GOLD,
native_unit_of_measurement="GP",
suggested_display_precision=2, suggested_display_precision=2,
value_fn=lambda user, _: user.get("stats", {}).get("gp"), value_fn=lambda user, _: user.get("stats", {}).get("gp"),
), ),
@ -144,7 +137,6 @@ SENSOR_DESCRIPTIONS: tuple[HabitipySensorEntityDescription, ...] = (
translation_key=HabitipySensorEntity.GEMS, translation_key=HabitipySensorEntity.GEMS,
value_fn=lambda user, _: user.get("balance", 0) * 4, value_fn=lambda user, _: user.get("balance", 0) * 4,
suggested_display_precision=0, suggested_display_precision=0,
native_unit_of_measurement="gems",
entity_picture="shop_gem.png", entity_picture="shop_gem.png",
), ),
HabitipySensorEntityDescription( HabitipySensorEntityDescription(
@ -229,20 +221,17 @@ TASK_SENSOR_DESCRIPTION: tuple[HabitipyTaskSensorEntityDescription, ...] = (
HabitipyTaskSensorEntityDescription( HabitipyTaskSensorEntityDescription(
key=HabitipySensorEntity.HABITS, key=HabitipySensorEntity.HABITS,
translation_key=HabitipySensorEntity.HABITS, translation_key=HabitipySensorEntity.HABITS,
native_unit_of_measurement=UNIT_TASKS,
value_fn=lambda tasks: [r for r in tasks if r.get("type") == "habit"], value_fn=lambda tasks: [r for r in tasks if r.get("type") == "habit"],
), ),
HabitipyTaskSensorEntityDescription( HabitipyTaskSensorEntityDescription(
key=HabitipySensorEntity.DAILIES, key=HabitipySensorEntity.DAILIES,
translation_key=HabitipySensorEntity.DAILIES, translation_key=HabitipySensorEntity.DAILIES,
native_unit_of_measurement=UNIT_TASKS,
value_fn=lambda tasks: [r for r in tasks if r.get("type") == "daily"], value_fn=lambda tasks: [r for r in tasks if r.get("type") == "daily"],
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
), ),
HabitipyTaskSensorEntityDescription( HabitipyTaskSensorEntityDescription(
key=HabitipySensorEntity.TODOS, key=HabitipySensorEntity.TODOS,
translation_key=HabitipySensorEntity.TODOS, translation_key=HabitipySensorEntity.TODOS,
native_unit_of_measurement=UNIT_TASKS,
value_fn=lambda tasks: [ value_fn=lambda tasks: [
r for r in tasks if r.get("type") == "todo" and not r.get("completed") r for r in tasks if r.get("type") == "todo" and not r.get("completed")
], ],
@ -251,7 +240,6 @@ TASK_SENSOR_DESCRIPTION: tuple[HabitipyTaskSensorEntityDescription, ...] = (
HabitipyTaskSensorEntityDescription( HabitipyTaskSensorEntityDescription(
key=HabitipySensorEntity.REWARDS, key=HabitipySensorEntity.REWARDS,
translation_key=HabitipySensorEntity.REWARDS, translation_key=HabitipySensorEntity.REWARDS,
native_unit_of_measurement=UNIT_TASKS,
value_fn=lambda tasks: [r for r in tasks if r.get("type") == "reward"], value_fn=lambda tasks: [r for r in tasks if r.get("type") == "reward"],
), ),
) )

View File

@ -2,7 +2,11 @@
"common": { "common": {
"todos": "To-Do's", "todos": "To-Do's",
"dailies": "Dailies", "dailies": "Dailies",
"config_entry_name": "Select character" "config_entry_name": "Select character",
"unit_tasks": "tasks",
"unit_health_points": "HP",
"unit_mana_points": "MP",
"unit_experience_points": "XP"
}, },
"config": { "config": {
"abort": { "abort": {
@ -135,31 +139,39 @@
"name": "Display name" "name": "Display name"
}, },
"health": { "health": {
"name": "Health" "name": "Health",
"unit_of_measurement": "[%key:component::habitica::common::unit_health_points%]"
}, },
"health_max": { "health_max": {
"name": "Max. health" "name": "Max. health",
"unit_of_measurement": "[%key:component::habitica::common::unit_health_points%]"
}, },
"mana": { "mana": {
"name": "Mana" "name": "Mana",
"unit_of_measurement": "[%key:component::habitica::common::unit_mana_points%]"
}, },
"mana_max": { "mana_max": {
"name": "Max. mana" "name": "Max. mana",
"unit_of_measurement": "[%key:component::habitica::common::unit_mana_points%]"
}, },
"experience": { "experience": {
"name": "Experience" "name": "Experience",
"unit_of_measurement": "[%key:component::habitica::common::unit_experience_points%]"
}, },
"experience_max": { "experience_max": {
"name": "Next level" "name": "Next level",
"unit_of_measurement": "[%key:component::habitica::common::unit_experience_points%]"
}, },
"level": { "level": {
"name": "Level" "name": "Level"
}, },
"gold": { "gold": {
"name": "Gold" "name": "Gold",
"unit_of_measurement": "GP"
}, },
"gems": { "gems": {
"name": "Gems" "name": "Gems",
"unit_of_measurement": "gems"
}, },
"trinkets": { "trinkets": {
"name": "Mystic hourglasses" "name": "Mystic hourglasses"
@ -174,16 +186,20 @@
} }
}, },
"todos": { "todos": {
"name": "[%key:component::habitica::common::todos%]" "name": "[%key:component::habitica::common::todos%]",
"unit_of_measurement": "[%key:component::habitica::common::unit_tasks%]"
}, },
"dailys": { "dailys": {
"name": "[%key:component::habitica::common::dailies%]" "name": "[%key:component::habitica::common::dailies%]",
"unit_of_measurement": "[%key:component::habitica::common::unit_tasks%]"
}, },
"habits": { "habits": {
"name": "Habits" "name": "Habits",
"unit_of_measurement": "[%key:component::habitica::common::unit_tasks%]"
}, },
"rewards": { "rewards": {
"name": "Rewards" "name": "Rewards",
"unit_of_measurement": "[%key:component::habitica::common::unit_tasks%]"
}, },
"strength": { "strength": {
"name": "Strength", "name": "Strength",