From 71fb19861dda2fce3dcef1b8a45ab9f3d35269b0 Mon Sep 17 00:00:00 2001 From: slowbackspace Date: Fri, 12 Apr 2019 17:24:11 +0200 Subject: [PATCH 1/2] getInitialLocale now accepts navigatorLanguage as param --- src/actions/LocalStorageActions.js | 2 +- src/utils/l10n.js | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/actions/LocalStorageActions.js b/src/actions/LocalStorageActions.js index 2a2a2736..09f31b12 100644 --- a/src/actions/LocalStorageActions.js +++ b/src/actions/LocalStorageActions.js @@ -277,7 +277,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/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; From 9ea0a3fe6631f3632152cc9918567d0aeca99efb Mon Sep 17 00:00:00 2001 From: slowbackspace Date: Fri, 12 Apr 2019 17:24:15 +0200 Subject: [PATCH 2/2] add tests --- src/utils/__tests__/l10n.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 src/utils/__tests__/l10n.js 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'); + }); +});