import { TranslatableString } from "ChillMainAssets/types"; /** * Localizes a translatable string object based on the current locale. * A fallback logic is implemented in case no translation is available for the current locale. * * @param translatableString Object containing translations for different locales * @param locale defaults to browser locale * @returns The localized string or null if no translation is available */ export function localizeString( translatableString: TranslatableString | null | undefined, locale?: string, ): string { if (!translatableString || Object.keys(translatableString).length === 0) { return ""; } const currentLocale = locale || navigator.language.split("-")[0] || "fr"; if (translatableString[currentLocale]) { return translatableString[currentLocale]; } // Define fallback locales const fallbackLocales: string[] = ["fr", "en"]; for (const fallbackLocale of fallbackLocales) { if (translatableString[fallbackLocale]) { return translatableString[fallbackLocale]; } } // No fallback translation found, use the first available const availableLocales = Object.keys(translatableString); if (availableLocales.length > 0) { return translatableString[availableLocales[0]]; } return ""; }