1import { setLocale } from '../../client-utils.js'; 2import { getLanguagesData, resolveLanguageLocale } from '../../i18n-language-preference.js'; 3 4const getUserLanguageValue = (user) => { 5 const language = user?.language; 6 if (language && typeof language === 'object') { 7 return language.name ?? language.value ?? language.label ?? language.code ?? ''; 8 } 9 return language ?? ''; 10}; 11 12const applyDashboardUserLocale = async ( 13 user, 14 { loadLanguages = getLanguagesData, resolveLocale = resolveLanguageLocale, applyLocale = setLocale } = {}, 15) => { 16 const languageValue = getUserLanguageValue(user); 17 if (!languageValue) { 18 return ''; 19 } 20 21 try { 22 const languages = await loadLanguages(); 23 const locale = resolveLocale(languageValue, languages); 24 if (!locale) { 25 return ''; 26 } 27 await applyLocale(locale); 28 return locale; 29 } catch { 30 return ''; 31 } 32}; 33 34export { applyDashboardUserLocale, getUserLanguageValue };
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.