diff --git a/src/actions/LocalStorageActions.js b/src/actions/LocalStorageActions.js index 8c0ece33..84fb9710 100644 --- a/src/actions/LocalStorageActions.js +++ b/src/actions/LocalStorageActions.js @@ -287,7 +287,7 @@ const loadStorageData = (): ThunkAction => (dispatch: Dispatch): void => { if (language) { dispatch(WalletActions.fetchLocale(JSON.parse(language))); } else { - dispatch(WalletActions.fetchLocale(l10nUtils.getInitialLocale())); + dispatch(WalletActions.fetchLocale(l10nUtils.getInitialLocale(navigator.language))); } const localCurrency: ?string = storageUtils.get(TYPE, KEY_LOCAL_CURRENCY); diff --git a/src/utils/__tests__/l10n.js b/src/utils/__tests__/l10n.js new file mode 100644 index 00000000..e2e5a557 --- /dev/null +++ b/src/utils/__tests__/l10n.js @@ -0,0 +1,17 @@ +import * as utils from '../l10n'; + +describe('l10n utils: getInitialLocale', () => { + it('default lang', () => { + expect(utils.getInitialLocale(0)).toBe('en'); + expect(utils.getInitialLocale(null)).toBe('en'); + expect(utils.getInitialLocale(undefined)).toBe('en'); + expect(utils.getInitialLocale('dadada')).toBe('en'); + expect(utils.getInitialLocale('')).toBe('en'); + }); + + it('browser locales', () => { + expect(utils.getInitialLocale('zh')).toBe('zh'); + expect(utils.getInitialLocale('cs-CZ')).toBe('cs'); + expect(utils.getInitialLocale('en_GB')).toBe('en'); + }); +}); diff --git a/src/utils/l10n.js b/src/utils/l10n.js index 11170d0f..8288accb 100644 --- a/src/utils/l10n.js +++ b/src/utils/l10n.js @@ -1,7 +1,9 @@ import { LANGUAGE } from 'config/app'; -export const getInitialLocale = (defaultLocale = 'en') => { - const browserLocale = navigator.language.split('-')[0]; +export const getInitialLocale = (navigatorLanguage, defaultLocale = 'en') => { + if (!navigatorLanguage) return defaultLocale; + + const browserLocale = navigatorLanguage.split('-')[0]; if (LANGUAGE.some(e => e.code === browserLocale)) { // Array of supported languages contains the locale we're looking for return browserLocale;