From 6c9b48fcd4a4421c118574e68e4b67a13180d502 Mon Sep 17 00:00:00 2001 From: Manuel Strebel Date: Wed, 21 Jul 2021 12:15:38 +0200 Subject: [PATCH] fix: don't skip the cookie if no locale is detected in the route (#1235) --- src/templates/plugin.main.js | 6 ++++-- test/browser.test.js | 14 ++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/templates/plugin.main.js b/src/templates/plugin.main.js index 39c4e3c8f..29488e17c 100644 --- a/src/templates/plugin.main.js +++ b/src/templates/plugin.main.js @@ -395,11 +395,13 @@ export default async (context) => { } else if (options.strategy !== Constants.STRATEGIES.NO_PREFIX) { const routeLocale = getLocaleFromRoute(route) finalLocale = routeLocale - } else if (useCookie) { - finalLocale = app.i18n.getLocaleCookie() } } + if (!finalLocale && useCookie) { + finalLocale = app.i18n.getLocaleCookie() + } + if (!finalLocale) { finalLocale = app.i18n.defaultLocale || '' } diff --git a/test/browser.test.js b/test/browser.test.js index 83ff7d695..8cb3419cd 100644 --- a/test/browser.test.js +++ b/test/browser.test.js @@ -1260,6 +1260,20 @@ describe(`${browserString} (onlyOnRoot + prefix)`, () => { expect(await (await page.$('body'))?.textContent()).toContain('locale: en') expect(await getRouteFullPath(page)).toBe('/en') }) + + test('uses saved locale cookie when redirecting from root', async () => { + const page = await browser.newPage({ locale: 'fr' }) + + // Ensure the detected locale cookie is saved + await page.goto(url('/fr')) + expect(await (await page.$('body'))?.textContent()).toContain('locale: fr') + expect(await getRouteFullPath(page)).toBe('/fr') + + // Verify that we navigate to saved locale + await page.goto(url('/')) + expect(await (await page.$('body'))?.textContent()).toContain('locale: fr') + expect(await getRouteFullPath(page)).toBe('/fr') + }) }) describe(`${browserString} (vuex disabled)`, () => {