LibreChat/client/src/hooks/useLocalizedConfig.ts
Atef Bellaaj 9400148175
⚙️ feat: Add configurable trust checkbox labels for MCP Server Dialog (#10820)
Co-authored-by: Atef Bellaaj <slalom.bellaaj@external.daimlertruck.com>
2025-12-11 16:38:40 -05:00

36 lines
1.2 KiB
TypeScript

import { useRecoilValue } from 'recoil';
import store from '~/store';
type LocalizedValue = string | Record<string, string> | undefined;
/**
* Hook to resolve localized config values based on current user language.
* Automatically retrieves the current language from Recoil state.
*
* @returns A function to resolve localized values
*/
export default function useLocalizedConfig() {
const lang = useRecoilValue(store.lang);
/**
* Resolves a localized config value.
* @param value - Either a string or object with language codes as keys
* @param fallback - Fallback value if config is undefined or language not found
* @returns The resolved string value
*/
return (value: LocalizedValue, fallback: string): string => {
if (value === undefined) {
return fallback;
}
if (typeof value === 'string') {
return value;
}
// Extract base language code (e.g., 'de' from 'de-DE')
const baseLang = lang?.split('-')[0] ?? 'en';
// Try exact locale (de-DE), then base language (de), then 'en', then first available
return (
(lang && value[lang]) || value[baseLang] || value['en'] || Object.values(value)[0] || fallback
);
};
}