From 1ff606e8a80ffae6f01288f6af08739ed8628202 Mon Sep 17 00:00:00 2001 From: Harper Reed Date: Mon, 17 Feb 2025 23:13:30 -0600 Subject: [PATCH] Update packages/chat/app/i18n/config.ts Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- packages/chat/app/i18n/config.ts | 39 +++++++++++++++++++------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/packages/chat/app/i18n/config.ts b/packages/chat/app/i18n/config.ts index 41df0b84..bbf2459e 100644 --- a/packages/chat/app/i18n/config.ts +++ b/packages/chat/app/i18n/config.ts @@ -25,23 +25,30 @@ export const SUPPORTED_LANGUAGES = [ export type LanguageCode = (typeof SUPPORTED_LANGUAGES)[number]["code"]; // Get system/browser language -const getInitialLanguage = (): LanguageCode => { - // For web, try navigator.language first - if (Platform.OS === 'web' && typeof navigator !== 'undefined') { - const browserLang = navigator.language.split('-')[0]; - if (SUPPORTED_LANGUAGES.some(lang => lang.code === browserLang)) { - return browserLang as LanguageCode; +const memoizedInitialLanguage = (() => { + const getInitialLanguage = (): LanguageCode => { + // For web, try navigator.language first + if (Platform.OS === 'web' && typeof navigator !== 'undefined') { + const browserLang = navigator.language.split('-')[0]; + const isSupported = (lang: string): lang is LanguageCode => + SUPPORTED_LANGUAGES.some(supported => supported.code === lang); + if (isSupported(browserLang)) { + return browserLang; + } } - } - - // Fall back to Expo Localization - const systemLang = Localization.locale.split('-')[0]; - if (SUPPORTED_LANGUAGES.some(lang => lang.code === systemLang)) { - return systemLang as LanguageCode; - } - - return 'en'; -}; + + // Fall back to Expo Localization + const systemLang = Localization.locale.split('-')[0]; + const isSupported = (lang: string): lang is LanguageCode => + SUPPORTED_LANGUAGES.some(supported => supported.code === lang); + if (isSupported(systemLang)) { + return systemLang; + } + + return 'en'; + }; + return getInitialLanguage(); +})(); // Initialize with detected language, then load saved language i18next.use(initReactI18next).init({