diff --git a/app/assets/javascripts/language_switcher/components/app.vue b/app/assets/javascripts/language_switcher/components/app.vue index f00290d0e466e0381e74f31ecc01264c7c398a2d..22b0aeb98358e548f428efa9b76297d0e50406f1 100644 --- a/app/assets/javascripts/language_switcher/components/app.vue +++ b/app/assets/javascripts/language_switcher/components/app.vue @@ -3,7 +3,7 @@ import { GlCollapsibleListbox, GlLink } from '@gitlab/ui'; import { __ } from '~/locale'; import { setCookie } from '~/lib/utils/common_utils'; import { helpPagePath } from '~/helpers/help_page_helper'; -import { PREFERRED_LANGUAGE_COOKIE_KEY } from '../constants'; +import { PREFERRED_LANGUAGE_COOKIE_KEY, EN } from '../constants'; const HELP_TRANSLATE_MSG = __('Help translate to your language'); const HELP_TRANSLATE_HREF = helpPagePath('/development/i18n/translation.md'); @@ -18,7 +18,7 @@ export default { default: [], }, preferredLocale: { - default: {}, + default: EN, }, }, data() { diff --git a/app/assets/javascripts/language_switcher/constants.js b/app/assets/javascripts/language_switcher/constants.js index b5c0613ac018131c6ab49b534e5d7c5aa4628934..83f5d79510fec5f54284be86e7b01e58ec801bec 100644 --- a/app/assets/javascripts/language_switcher/constants.js +++ b/app/assets/javascripts/language_switcher/constants.js @@ -1 +1,7 @@ export const PREFERRED_LANGUAGE_COOKIE_KEY = 'preferred_language'; + +export const EN = { + value: 'en', + // eslint-disable-next-line @gitlab/require-i18n-strings + text: 'English', +}; diff --git a/app/assets/javascripts/language_switcher/index.js b/app/assets/javascripts/language_switcher/index.js index b224e2510bbd42353ba5483da6a9d64c73674fa4..adb032701fb0f2b9e293bdd6ab42b5906b6e2c21 100644 --- a/app/assets/javascripts/language_switcher/index.js +++ b/app/assets/javascripts/language_switcher/index.js @@ -10,12 +10,14 @@ export const initLanguageSwitcher = () => { const preferredLangCode = getCookie(PREFERRED_LANGUAGE_COOKIE_KEY); const preferredLocale = locales.find((locale) => locale.value === preferredLangCode); + const provide = { locales }; + if (preferredLocale) { + provide.preferredLocale = preferredLocale; + } + return new Vue({ el, - provide: { - locales, - preferredLocale, - }, + provide, render(createElement) { return createElement(LanguageSwitcher); }, diff --git a/spec/frontend/language_switcher/components/app_spec.js b/spec/frontend/language_switcher/components/app_spec.js index 036ff55fef70c6124121819f54e4b100bbc582ab..ca8c6c90bf1249f26a86894f723fe146bf44df0c 100644 --- a/spec/frontend/language_switcher/components/app_spec.js +++ b/spec/frontend/language_switcher/components/app_spec.js @@ -1,9 +1,9 @@ import { GlLink } from '@gitlab/ui'; import { mountExtended } from 'helpers/vue_test_utils_helper'; import LanguageSwitcherApp from '~/language_switcher/components/app.vue'; -import { PREFERRED_LANGUAGE_COOKIE_KEY } from '~/language_switcher/constants'; +import { PREFERRED_LANGUAGE_COOKIE_KEY, EN } from '~/language_switcher/constants'; import * as utils from '~/lib/utils/common_utils'; -import { locales, ES, EN } from '../mock_data'; +import { locales, ES } from '../mock_data'; jest.mock('~/lib/utils/common_utils'); @@ -14,7 +14,6 @@ describe('<LanguageSwitcher />', () => { wrapper = mountExtended(LanguageSwitcherApp, { provide: { locales, - preferredLocale: EN, ...props, }, }); @@ -28,9 +27,11 @@ describe('<LanguageSwitcher />', () => { const findLanguageDropdownItem = (code) => wrapper.findByTestId(`language_switcher_lang_${code}`); const findFooter = () => wrapper.findByTestId('footer'); - it('preferred language', () => { + it('sets English as preferred language by default', () => { expect(getPreferredLanguage()).toBe(EN.text); + }); + it('sets preferred locale when provided', () => { createComponent({ preferredLocale: ES, }); diff --git a/spec/frontend/language_switcher/mock_data.js b/spec/frontend/language_switcher/mock_data.js index 548bddf01738583e05705d3c20f7eb8100502c4e..70bcb225fe380ebf7cb8c1f6f6bda270882f1953 100644 --- a/spec/frontend/language_switcher/mock_data.js +++ b/spec/frontend/language_switcher/mock_data.js @@ -1,7 +1,4 @@ -export const EN = { - value: 'en', - text: 'English', -}; +import { EN } from '~/language_switcher/constants'; export const ZH_CN = { value: 'zh_CN',