improve i18n for lists of text/labels (#20696)
Some checks are pending
CI / AMD64 Build (push) Waiting to run
CI / ARM Build (push) Waiting to run
CI / Jetson Jetpack 6 (push) Waiting to run
CI / AMD64 Extra Build (push) Blocked by required conditions
CI / ARM Extra Build (push) Blocked by required conditions
CI / Synaptics Build (push) Blocked by required conditions
CI / Assemble and push default build (push) Blocked by required conditions

This commit is contained in:
Josh Hawkins 2025-10-27 18:53:18 -05:00 committed by GitHub
parent 640007e5d3
commit c2cbb0fa87
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 22 additions and 1 deletions

View File

@ -98,6 +98,10 @@
"show": "Show {{item}}",
"ID": "ID"
},
"list": {
"two": "{{0}} and {{1}}",
"many": "{{items}}, and {{last}}"
},
"field": {
"optional": "Optional",
"internalID": "The Internal ID Frigate uses in the configuration and database"

View File

@ -3,6 +3,23 @@ import { t } from "i18next";
import { getTranslatedLabel } from "./i18n";
import { capitalizeFirstLetter } from "./stringUtil";
function formatZonesList(zones: string[]): string {
if (zones.length === 0) return "";
if (zones.length === 1) return zones[0];
if (zones.length === 2) {
return t("list.two", {
0: zones[0],
1: zones[1],
});
}
const allButLast = zones.slice(0, -1).join(", ");
return t("list.many", {
items: allButLast,
last: zones[zones.length - 1],
});
}
export function getLifecycleItemDescription(
lifecycleItem: TrackingDetailsSequence,
) {
@ -24,7 +41,7 @@ export function getLifecycleItemDescription(
return t("trackingDetails.lifecycleItemDesc.entered_zone", {
ns: "views/explore",
label,
zones: lifecycleItem.data.zones.join(" and ").replaceAll("_", " "),
zones: formatZonesList(lifecycleItem.data.zones),
});
case "active":
return t("trackingDetails.lifecycleItemDesc.active", {