mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-07-21 11:19:02 +03:00
Fix i18n (#20857)
CI / AMD64 Build (push) Has been cancelled
CI / ARM Build (push) Has been cancelled
CI / Jetson Jetpack 6 (push) Has been cancelled
CI / AMD64 Extra Build (push) Has been cancelled
CI / ARM Extra Build (push) Has been cancelled
CI / Synaptics Build (push) Has been cancelled
CI / Assemble and push default build (push) Has been cancelled
CI / AMD64 Build (push) Has been cancelled
CI / ARM Build (push) Has been cancelled
CI / Jetson Jetpack 6 (push) Has been cancelled
CI / AMD64 Extra Build (push) Has been cancelled
CI / ARM Extra Build (push) Has been cancelled
CI / Synaptics Build (push) Has been cancelled
CI / Assemble and push default build (push) Has been cancelled
* fix: fix the missing i18n key
* fix: fix trackedObject i18n keys count variable
* fix: fix some pages audio label missing i18n
* fix: add 6214d52 missing variable
* fix: add more missing i18n
* fix: add menu missing key
This commit is contained in:
@@ -81,6 +81,43 @@ export default function InputWithTags({
|
||||
revalidateOnFocus: false,
|
||||
});
|
||||
|
||||
const allAudioListenLabels = useMemo<Set<string>>(() => {
|
||||
if (!config) {
|
||||
return new Set<string>();
|
||||
}
|
||||
|
||||
const labels = new Set<string>();
|
||||
Object.values(config.cameras).forEach((camera) => {
|
||||
if (camera?.audio?.enabled) {
|
||||
camera.audio.listen.forEach((label) => {
|
||||
labels.add(label);
|
||||
});
|
||||
}
|
||||
});
|
||||
return labels;
|
||||
}, [config]);
|
||||
|
||||
const translatedAudioLabelMap = useMemo<Map<string, string>>(() => {
|
||||
const map = new Map<string, string>();
|
||||
if (!config) return map;
|
||||
|
||||
allAudioListenLabels.forEach((label) => {
|
||||
// getTranslatedLabel likely depends on i18n internally; including `lang`
|
||||
// in deps ensures this map is rebuilt when language changes
|
||||
map.set(label, getTranslatedLabel(label, "audio"));
|
||||
});
|
||||
return map;
|
||||
}, [allAudioListenLabels, config]);
|
||||
|
||||
function resolveLabel(value: string) {
|
||||
const mapped = translatedAudioLabelMap.get(value);
|
||||
if (mapped) return mapped;
|
||||
return getTranslatedLabel(
|
||||
value,
|
||||
allAudioListenLabels.has(value) ? "audio" : "object",
|
||||
);
|
||||
}
|
||||
|
||||
const [inputValue, setInputValue] = useState(search || "");
|
||||
const [currentFilterType, setCurrentFilterType] = useState<FilterType | null>(
|
||||
null,
|
||||
@@ -421,7 +458,8 @@ export default function InputWithTags({
|
||||
? t("button.yes", { ns: "common" })
|
||||
: t("button.no", { ns: "common" });
|
||||
} else if (filterType === "labels") {
|
||||
return getTranslatedLabel(String(filterValues));
|
||||
const value = String(filterValues);
|
||||
return resolveLabel(value);
|
||||
} else if (filterType === "search_type") {
|
||||
return t("filter.searchType." + String(filterValues));
|
||||
} else {
|
||||
@@ -828,7 +866,7 @@ export default function InputWithTags({
|
||||
>
|
||||
{t("filter.label." + filterType)}:{" "}
|
||||
{filterType === "labels" ? (
|
||||
getTranslatedLabel(value)
|
||||
resolveLabel(value)
|
||||
) : filterType === "cameras" ? (
|
||||
<CameraNameLabel camera={value} />
|
||||
) : filterType === "zones" ? (
|
||||
|
||||
Reference in New Issue
Block a user