diff --git a/packages/vue-i18n-routing/src/__test__/compatibles.test.ts b/packages/vue-i18n-routing/src/__test__/compatibles.test.ts index 37dba69..25405b2 100644 --- a/packages/vue-i18n-routing/src/__test__/compatibles.test.ts +++ b/packages/vue-i18n-routing/src/__test__/compatibles.test.ts @@ -97,6 +97,13 @@ describe('localePath', () => { assert.equal(vm.localePath({ state: { foo: 1 } }), '/en') await router.push('/ja') assert.equal(vm.localePath({ state: { foo: 1 } }), '/ja') + + // preserve query parameters + assert.equal(vm.localePath({ query: { foo: 1 } }), '/ja?foo=1') + assert.equal(vm.localePath({ path: '/', query: { foo: 1 } }), '/ja?foo=1') + assert.equal(vm.localePath({ name: 'about', query: { foo: 1 } }), '/ja/about?foo=1') + assert.equal(vm.localePath({ path: '/about', query: { foo: 1 } }), '/ja/about?foo=1') + // no define path assert.equal(vm.localePath('/vue-i18n'), '/ja/vue-i18n') // no define name diff --git a/packages/vue-i18n-routing/src/compatibles/utils.ts b/packages/vue-i18n-routing/src/compatibles/utils.ts index 214d4c6..d6b2ebe 100644 --- a/packages/vue-i18n-routing/src/compatibles/utils.ts +++ b/packages/vue-i18n-routing/src/compatibles/utils.ts @@ -79,9 +79,9 @@ export function resolve(router: Router | VueRouter, route: any, strategy: Strate if (_route == null) { return route } else { - const _resolevableRoute = assign({}, _route) - _resolevableRoute.path = targetPath - return router.resolve(_resolevableRoute) + const _resolvableRoute = assign({}, route, _route) + _resolvableRoute.path = targetPath + return router.resolve(_resolvableRoute) } } else { return router.resolve(route)