mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-26 18:56:39 +00:00
Make device classes in logbook translatable (#10376)
This commit is contained in:
parent
371804591d
commit
0b2404a0f2
@ -2,6 +2,7 @@ import { HassEntity } from "home-assistant-js-websocket";
|
|||||||
import { BINARY_STATE_OFF, BINARY_STATE_ON } from "../common/const";
|
import { BINARY_STATE_OFF, BINARY_STATE_ON } from "../common/const";
|
||||||
import { computeDomain } from "../common/entity/compute_domain";
|
import { computeDomain } from "../common/entity/compute_domain";
|
||||||
import { computeStateDisplay } from "../common/entity/compute_state_display";
|
import { computeStateDisplay } from "../common/entity/compute_state_display";
|
||||||
|
import { LocalizeFunc } from "../common/translations/localize";
|
||||||
import { HomeAssistant } from "../types";
|
import { HomeAssistant } from "../types";
|
||||||
import { UNAVAILABLE_STATES } from "./entity";
|
import { UNAVAILABLE_STATES } from "./entity";
|
||||||
|
|
||||||
@ -35,9 +36,11 @@ export const getLogbookDataForContext = async (
|
|||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
startDate: string,
|
startDate: string,
|
||||||
contextId?: string
|
contextId?: string
|
||||||
): Promise<LogbookEntry[]> =>
|
): Promise<LogbookEntry[]> => {
|
||||||
addLogbookMessage(
|
const localize = await hass.loadBackendTranslation("device_class");
|
||||||
|
return addLogbookMessage(
|
||||||
hass,
|
hass,
|
||||||
|
localize,
|
||||||
await getLogbookDataFromServer(
|
await getLogbookDataFromServer(
|
||||||
hass,
|
hass,
|
||||||
startDate,
|
startDate,
|
||||||
@ -47,6 +50,7 @@ export const getLogbookDataForContext = async (
|
|||||||
contextId
|
contextId
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
};
|
||||||
|
|
||||||
export const getLogbookData = async (
|
export const getLogbookData = async (
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
@ -54,9 +58,11 @@ export const getLogbookData = async (
|
|||||||
endDate: string,
|
endDate: string,
|
||||||
entityId?: string,
|
entityId?: string,
|
||||||
entity_matches_only?: boolean
|
entity_matches_only?: boolean
|
||||||
): Promise<LogbookEntry[]> =>
|
): Promise<LogbookEntry[]> => {
|
||||||
addLogbookMessage(
|
const localize = await hass.loadBackendTranslation("device_class");
|
||||||
|
return addLogbookMessage(
|
||||||
hass,
|
hass,
|
||||||
|
localize,
|
||||||
await getLogbookDataCache(
|
await getLogbookDataCache(
|
||||||
hass,
|
hass,
|
||||||
startDate,
|
startDate,
|
||||||
@ -65,9 +71,11 @@ export const getLogbookData = async (
|
|||||||
entity_matches_only
|
entity_matches_only
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
};
|
||||||
|
|
||||||
export const addLogbookMessage = (
|
export const addLogbookMessage = (
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
|
localize: LocalizeFunc,
|
||||||
logbookData: LogbookEntry[]
|
logbookData: LogbookEntry[]
|
||||||
): LogbookEntry[] => {
|
): LogbookEntry[] => {
|
||||||
for (const entry of logbookData) {
|
for (const entry of logbookData) {
|
||||||
@ -75,6 +83,7 @@ export const addLogbookMessage = (
|
|||||||
if (entry.state && stateObj) {
|
if (entry.state && stateObj) {
|
||||||
entry.message = getLogbookMessage(
|
entry.message = getLogbookMessage(
|
||||||
hass,
|
hass,
|
||||||
|
localize,
|
||||||
entry.state,
|
entry.state,
|
||||||
stateObj,
|
stateObj,
|
||||||
computeDomain(entry.entity_id!)
|
computeDomain(entry.entity_id!)
|
||||||
@ -157,6 +166,7 @@ export const clearLogbookCache = (startDate: string, endDate: string) => {
|
|||||||
|
|
||||||
export const getLogbookMessage = (
|
export const getLogbookMessage = (
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
|
localize: LocalizeFunc,
|
||||||
state: string,
|
state: string,
|
||||||
stateObj: HassEntity,
|
stateObj: HassEntity,
|
||||||
domain: string
|
domain: string
|
||||||
@ -165,21 +175,17 @@ export const getLogbookMessage = (
|
|||||||
case "device_tracker":
|
case "device_tracker":
|
||||||
case "person":
|
case "person":
|
||||||
if (state === "not_home") {
|
if (state === "not_home") {
|
||||||
return hass.localize(`${LOGBOOK_LOCALIZE_PATH}.was_away`);
|
return localize(`${LOGBOOK_LOCALIZE_PATH}.was_away`);
|
||||||
}
|
}
|
||||||
if (state === "home") {
|
if (state === "home") {
|
||||||
return hass.localize(`${LOGBOOK_LOCALIZE_PATH}.was_at_home`);
|
return localize(`${LOGBOOK_LOCALIZE_PATH}.was_at_home`);
|
||||||
}
|
}
|
||||||
return hass.localize(
|
return localize(`${LOGBOOK_LOCALIZE_PATH}.was_at_state`, "state", state);
|
||||||
`${LOGBOOK_LOCALIZE_PATH}.was_at_state`,
|
|
||||||
"state",
|
|
||||||
state
|
|
||||||
);
|
|
||||||
|
|
||||||
case "sun":
|
case "sun":
|
||||||
return state === "above_horizon"
|
return state === "above_horizon"
|
||||||
? hass.localize(`${LOGBOOK_LOCALIZE_PATH}.rose`)
|
? localize(`${LOGBOOK_LOCALIZE_PATH}.rose`)
|
||||||
: hass.localize(`${LOGBOOK_LOCALIZE_PATH}.set`);
|
: localize(`${LOGBOOK_LOCALIZE_PATH}.set`);
|
||||||
|
|
||||||
case "binary_sensor": {
|
case "binary_sensor": {
|
||||||
const isOn = state === BINARY_STATE_ON;
|
const isOn = state === BINARY_STATE_ON;
|
||||||
@ -189,19 +195,19 @@ export const getLogbookMessage = (
|
|||||||
switch (device_class) {
|
switch (device_class) {
|
||||||
case "battery":
|
case "battery":
|
||||||
if (isOn) {
|
if (isOn) {
|
||||||
return hass.localize(`${LOGBOOK_LOCALIZE_PATH}.was_low`);
|
return localize(`${LOGBOOK_LOCALIZE_PATH}.was_low`);
|
||||||
}
|
}
|
||||||
if (isOff) {
|
if (isOff) {
|
||||||
return hass.localize(`${LOGBOOK_LOCALIZE_PATH}.was_normal`);
|
return localize(`${LOGBOOK_LOCALIZE_PATH}.was_normal`);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "connectivity":
|
case "connectivity":
|
||||||
if (isOn) {
|
if (isOn) {
|
||||||
return hass.localize(`${LOGBOOK_LOCALIZE_PATH}.was_connected`);
|
return localize(`${LOGBOOK_LOCALIZE_PATH}.was_connected`);
|
||||||
}
|
}
|
||||||
if (isOff) {
|
if (isOff) {
|
||||||
return hass.localize(`${LOGBOOK_LOCALIZE_PATH}.was_disconnected`);
|
return localize(`${LOGBOOK_LOCALIZE_PATH}.was_disconnected`);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -210,46 +216,46 @@ export const getLogbookMessage = (
|
|||||||
case "opening":
|
case "opening":
|
||||||
case "window":
|
case "window":
|
||||||
if (isOn) {
|
if (isOn) {
|
||||||
return hass.localize(`${LOGBOOK_LOCALIZE_PATH}.was_opened`);
|
return localize(`${LOGBOOK_LOCALIZE_PATH}.was_opened`);
|
||||||
}
|
}
|
||||||
if (isOff) {
|
if (isOff) {
|
||||||
return hass.localize(`${LOGBOOK_LOCALIZE_PATH}.was_closed`);
|
return localize(`${LOGBOOK_LOCALIZE_PATH}.was_closed`);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "lock":
|
case "lock":
|
||||||
if (isOn) {
|
if (isOn) {
|
||||||
return hass.localize(`${LOGBOOK_LOCALIZE_PATH}.was_unlocked`);
|
return localize(`${LOGBOOK_LOCALIZE_PATH}.was_unlocked`);
|
||||||
}
|
}
|
||||||
if (isOff) {
|
if (isOff) {
|
||||||
return hass.localize(`${LOGBOOK_LOCALIZE_PATH}.was_locked`);
|
return localize(`${LOGBOOK_LOCALIZE_PATH}.was_locked`);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "plug":
|
case "plug":
|
||||||
if (isOn) {
|
if (isOn) {
|
||||||
return hass.localize(`${LOGBOOK_LOCALIZE_PATH}.was_plugged_in`);
|
return localize(`${LOGBOOK_LOCALIZE_PATH}.was_plugged_in`);
|
||||||
}
|
}
|
||||||
if (isOff) {
|
if (isOff) {
|
||||||
return hass.localize(`${LOGBOOK_LOCALIZE_PATH}.was_unplugged`);
|
return localize(`${LOGBOOK_LOCALIZE_PATH}.was_unplugged`);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "presence":
|
case "presence":
|
||||||
if (isOn) {
|
if (isOn) {
|
||||||
return hass.localize(`${LOGBOOK_LOCALIZE_PATH}.was_at_home`);
|
return localize(`${LOGBOOK_LOCALIZE_PATH}.was_at_home`);
|
||||||
}
|
}
|
||||||
if (isOff) {
|
if (isOff) {
|
||||||
return hass.localize(`${LOGBOOK_LOCALIZE_PATH}.was_away`);
|
return localize(`${LOGBOOK_LOCALIZE_PATH}.was_away`);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "safety":
|
case "safety":
|
||||||
if (isOn) {
|
if (isOn) {
|
||||||
return hass.localize(`${LOGBOOK_LOCALIZE_PATH}.was_unsafe`);
|
return localize(`${LOGBOOK_LOCALIZE_PATH}.was_unsafe`);
|
||||||
}
|
}
|
||||||
if (isOff) {
|
if (isOff) {
|
||||||
return hass.localize(`${LOGBOOK_LOCALIZE_PATH}.was_safe`);
|
return localize(`${LOGBOOK_LOCALIZE_PATH}.was_safe`);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -265,27 +271,27 @@ export const getLogbookMessage = (
|
|||||||
case "sound":
|
case "sound":
|
||||||
case "vibration":
|
case "vibration":
|
||||||
if (isOn) {
|
if (isOn) {
|
||||||
return hass.localize(
|
return localize(`${LOGBOOK_LOCALIZE_PATH}.detected_device_class`, {
|
||||||
`${LOGBOOK_LOCALIZE_PATH}.detected_device_class`,
|
device_class: localize(
|
||||||
"device_class",
|
`component.binary_sensor.device_class.${device_class}`
|
||||||
device_class
|
),
|
||||||
);
|
});
|
||||||
}
|
}
|
||||||
if (isOff) {
|
if (isOff) {
|
||||||
return hass.localize(
|
return localize(`${LOGBOOK_LOCALIZE_PATH}.cleared_device_class`, {
|
||||||
`${LOGBOOK_LOCALIZE_PATH}.cleared_device_class`,
|
device_class: localize(
|
||||||
"device_class",
|
`component.binary_sensor.device_class.${device_class}`
|
||||||
device_class
|
),
|
||||||
);
|
});
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "tamper":
|
case "tamper":
|
||||||
if (isOn) {
|
if (isOn) {
|
||||||
return hass.localize(`${LOGBOOK_LOCALIZE_PATH}.detected_tampering`);
|
return localize(`${LOGBOOK_LOCALIZE_PATH}.detected_tampering`);
|
||||||
}
|
}
|
||||||
if (isOff) {
|
if (isOff) {
|
||||||
return hass.localize(`${LOGBOOK_LOCALIZE_PATH}.cleared_tampering`);
|
return localize(`${LOGBOOK_LOCALIZE_PATH}.cleared_tampering`);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -296,43 +302,43 @@ export const getLogbookMessage = (
|
|||||||
case "cover":
|
case "cover":
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case "open":
|
case "open":
|
||||||
return hass.localize(`${LOGBOOK_LOCALIZE_PATH}.was_opened`);
|
return localize(`${LOGBOOK_LOCALIZE_PATH}.was_opened`);
|
||||||
case "opening":
|
case "opening":
|
||||||
return hass.localize(`${LOGBOOK_LOCALIZE_PATH}.is_opening`);
|
return localize(`${LOGBOOK_LOCALIZE_PATH}.is_opening`);
|
||||||
case "closing":
|
case "closing":
|
||||||
return hass.localize(`${LOGBOOK_LOCALIZE_PATH}.is_closing`);
|
return localize(`${LOGBOOK_LOCALIZE_PATH}.is_closing`);
|
||||||
case "closed":
|
case "closed":
|
||||||
return hass.localize(`${LOGBOOK_LOCALIZE_PATH}.was_closed`);
|
return localize(`${LOGBOOK_LOCALIZE_PATH}.was_closed`);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "lock":
|
case "lock":
|
||||||
if (state === "unlocked") {
|
if (state === "unlocked") {
|
||||||
return hass.localize(`${LOGBOOK_LOCALIZE_PATH}.was_unlocked`);
|
return localize(`${LOGBOOK_LOCALIZE_PATH}.was_unlocked`);
|
||||||
}
|
}
|
||||||
if (state === "locked") {
|
if (state === "locked") {
|
||||||
return hass.localize(`${LOGBOOK_LOCALIZE_PATH}.was_locked`);
|
return localize(`${LOGBOOK_LOCALIZE_PATH}.was_locked`);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state === BINARY_STATE_ON) {
|
if (state === BINARY_STATE_ON) {
|
||||||
return hass.localize(`${LOGBOOK_LOCALIZE_PATH}.turned_on`);
|
return localize(`${LOGBOOK_LOCALIZE_PATH}.turned_on`);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state === BINARY_STATE_OFF) {
|
if (state === BINARY_STATE_OFF) {
|
||||||
return hass.localize(`${LOGBOOK_LOCALIZE_PATH}.turned_off`);
|
return localize(`${LOGBOOK_LOCALIZE_PATH}.turned_off`);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (UNAVAILABLE_STATES.includes(state)) {
|
if (UNAVAILABLE_STATES.includes(state)) {
|
||||||
return hass.localize(`${LOGBOOK_LOCALIZE_PATH}.became_unavailable`);
|
return localize(`${LOGBOOK_LOCALIZE_PATH}.became_unavailable`);
|
||||||
}
|
}
|
||||||
|
|
||||||
return hass.localize(
|
return hass.localize(
|
||||||
`${LOGBOOK_LOCALIZE_PATH}.changed_to_state`,
|
`${LOGBOOK_LOCALIZE_PATH}.changed_to_state`,
|
||||||
"state",
|
"state",
|
||||||
stateObj
|
stateObj
|
||||||
? computeStateDisplay(hass.localize, stateObj, hass.locale, state)
|
? computeStateDisplay(localize, stateObj, hass.locale, state)
|
||||||
: state
|
: state
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
@ -37,7 +37,8 @@ export type TranslationCategory =
|
|||||||
| "options"
|
| "options"
|
||||||
| "device_automation"
|
| "device_automation"
|
||||||
| "mfa_setup"
|
| "mfa_setup"
|
||||||
| "system_health";
|
| "system_health"
|
||||||
|
| "device_class";
|
||||||
|
|
||||||
export const fetchTranslationPreferences = (hass: HomeAssistant) =>
|
export const fetchTranslationPreferences = (hass: HomeAssistant) =>
|
||||||
fetchFrontendUserData(hass.connection, "language");
|
fetchFrontendUserData(hass.connection, "language");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user