38 lines
1.2 KiB
TypeScript
38 lines
1.2 KiB
TypeScript
import { ILanguageType, Language } from '@/features/i18n/localesSlice';
|
|
|
|
const STORAGE_KEY = 'i18nextLng';
|
|
|
|
/**
|
|
* Gets the user's browser language and returns it if supported, otherwise returns English
|
|
* @returns The detected supported language or English as fallback
|
|
*/
|
|
export const getDefaultLanguage = (): ILanguageType => {
|
|
const browserLang = navigator.language.split('-')[0];
|
|
if (Object.values(Language).includes(browserLang as Language)) {
|
|
return browserLang as ILanguageType;
|
|
}
|
|
return Language.EN;
|
|
};
|
|
|
|
export const DEFAULT_LANGUAGE: ILanguageType = getDefaultLanguage();
|
|
|
|
/**
|
|
* Gets the current language from local storage
|
|
* @returns The stored language or default language if not found
|
|
*/
|
|
export const getLanguageFromLocalStorage = (): ILanguageType => {
|
|
const savedLng = localStorage.getItem(STORAGE_KEY);
|
|
if (Object.values(Language).includes(savedLng as Language)) {
|
|
return savedLng as ILanguageType;
|
|
}
|
|
return DEFAULT_LANGUAGE;
|
|
};
|
|
|
|
/**
|
|
* Saves the current language to local storage
|
|
* @param lng Language to save
|
|
*/
|
|
export const saveLanguageInLocalStorage = (lng: ILanguageType): void => {
|
|
localStorage.setItem(STORAGE_KEY, lng);
|
|
};
|