// SPDX-FileCopyrightText: 2021 Johannes Loher // SPDX-FileCopyrightText: 2021 Oliver Rümpelein // SPDX-FileCopyrightText: 2021 Gesina Schwalbe // SPDX-FileCopyrightText: 2021 Siegfried Krug // // SPDX-License-Identifier: MIT import { DS4 } from "../config"; import { getGame } from "../helpers"; export default function registerForSetupHooks(): void { Hooks.once("setup", () => { localizeAndSortConfigObjects(); }); } /** * Localizes all objects in {@link DS4.i18n} and sorts them unless they are explicitly excluded. */ function localizeAndSortConfigObjects() { const noSort = ["attributes", "traits", "combatValues", "creatureSizeCategories"]; const localizeObject = (obj: T, sort = true): T => { const localized = Object.entries(obj).map(([key, value]): [string, string] => { return [key, getGame().i18n.localize(value)]; }); if (sort) localized.sort((a, b) => a[1].localeCompare(b[1])); return Object.fromEntries(localized) as T; }; DS4.i18n = Object.fromEntries( Object.entries(DS4.i18n).map(([key, value]) => { return [key, localizeObject(value, !noSort.includes(key))]; }), ) as typeof DS4.i18n; }