Changing parameter with vue 3 router route

Solution 1:

It's a bad way to change your route parameter like this.

Instead, replace your route with the same name, same id, but different lang:

  this.$router.replace({
    name: this.$route.name,
    params: {
      id: this.$route.params.id,
      lang: 'en' // or whatever you want
    }
  })

Don't forget to watch for the route changes if needed:

  watch: {
    $route(to, from) {
      // if anything needs to be done when the route changes
    }
  }