# Alternando localização

Normalmente a instância raiz do Vue é usada como o ponto de verdade, e todos os componentes filhos usam a propriedade locale da classeVueI18n passada por referência.

Às vezes você pode querer alternar dinamicamente os locais. Para fazer isso, você precisa alterar o valor da propriedade locale na instânciaVueI18n.

const i18n = new VueI18n({
  locale: 'pt', // definir a localização padrão
  ...
})

// Crie uma instância raiz do Vue
new Vue({
  i18n,
  ...
}).$mount('#app')

// Mudar para uma localização diferente
i18n.locale = 'en'

Cada componente contém uma instância VueI18n que se refere à propriedade $i18n, que também pode ser usada para alterar o local.

Exemplo:

<template>
  <div class="locale-changer">
    <select v-model="$i18n.locale">
      <option v-for="(lang, i) in langs" :key="`Lang${i}`" :value="lang">
        {{ lang }}
      </option>
    </select>
  </div>
</template>

<script>
  export default {
    name: 'locale-changer',
    data() {
      return { langs: ['pt', 'en'] }
    }
  }
</script>

Aviso

⚠️ As alterações de localização são ignoradas pelos componentes com a opção sync: false.

Componente vs. escopo root

⚠️ Alterarando $i18n.locale dentro do componente não altera a localização root. Se você está contando com a localização root, por exemplo, ao usar root fallback, use $root.$I18n.locale ao vez de $i18n.locale.