Add support for unit_of_measurement translation (#22868)

This commit is contained in:
Abílio Costa 2024-11-20 17:44:44 +00:00 committed by GitHub
parent a9d7082218
commit 84f7c62ee2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 34 additions and 2 deletions

View File

@ -103,7 +103,12 @@ export const computeStateDisplayFromEntityAttributes = (
getNumberFormatOptions({ state, attributes } as HassEntity, entity)
);
const unit = attributes.unit_of_measurement;
const unit =
(entity?.translation_key &&
localize(
`component.${entity.platform}.entity.${domain}.${entity.translation_key}.unit_of_measurement`
)) ||
attributes.unit_of_measurement;
if (unit) {
return `${value}${blankBeforeUnit(unit, locale)}${unit}`;

View File

@ -1,8 +1,8 @@
import { assert } from "chai";
import { computeStateDisplay } from "../../../src/common/entity/compute_state_display";
import { UNKNOWN } from "../../../src/data/entity";
import type { FrontendLocaleData } from "../../../src/data/translation";
import {
FrontendLocaleData,
NumberFormat,
TimeFormat,
FirstWeekday,
@ -119,6 +119,33 @@ describe("computeStateDisplay", () => {
);
});
it("Localizes a numeric sensor value with translated unit_of_measurement", () => {
const stateObj: any = {
entity_id: "sensor.test",
state: "1234",
attributes: {
state_class: "measurement",
},
};
const entities: any = {
"sensor.test": {
translation_key: "custom_translation",
platform: "custom_integration",
},
};
assert.strictEqual(
computeStateDisplay(
localize,
stateObj,
localeData,
numericDeviceClasses,
demoConfig,
entities
),
"1,234 component.custom_integration.entity.sensor.custom_translation.unit_of_measurement"
);
});
it("Localizes and formats numeric sensor value with units", () => {
const stateObj: any = {
entity_id: "sensor.test",