首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >区域设置在切换页之间保持重置。Nuxt-i18n

区域设置在切换页之间保持重置。Nuxt-i18n
EN

Stack Overflow用户
提问于 2021-01-23 21:21:09
回答 3查看 2.4K关注 0票数 0

我正试图为我的Nuxt前端设置本土化。每次我切换到英语,然后移动到我的网站的另一个子页,它确实重置为德文。

这是我的LanguageSelector

代码语言:javascript
运行
复制
<template>
  <div class="lang-dropdown">
    <select v-model="$i18n.locale">
      <option
        v-for="lang in $i18n.locales"
        :key="lang.code"
        :value="lang.code"
        onchange="changeLocale"
      >
        {{ lang.name }}
      </option>
    </select>
  </div>
</template>

这是我的i18n配置文件

代码语言:javascript
运行
复制
import de from '../locales/de.json'
import en from '../locales/en.json'

export default {
  local: 'en',
  fallbackLocale: 'de',
  messages: { de, en },
  strategy: 'prefix'
}

这是我的buildModules部分的Nuxt.config.js

代码语言:javascript
运行
复制
 ['nuxt-i18n',
      {
        defaultLocale: 'de',
        seo: true,
        locales: [
          {
            code: 'de',
            name: 'Deutsch',
            iso: 'de-DE'
          },
          {
            code: 'en',
            name: 'English',
            iso: 'en-US'
          }
        ],
        vueI18n: i18n
      }]
EN

回答 3

Stack Overflow用户

发布于 2021-01-24 17:26:24

根据这句话,nuxtjs/i18n docs

在使用detectBrowserLanguage并希望在路由更改上持久化区域设置时,必须调用更新存储的locale的函数之一。调用setLocaleCookie( locale )只保存cookie区域设置,或者调用setLocale( locale )来持久化cookie区域设置并切换到指定区域设置的路由。否则,区域设置可能会在导航期间切换回保存的区域设置。

https://i18n.nuxtjs.org/lang-switcher

您应该使用$i18n.setLocale而不是更改属性locale

使用setLocale将更改存储所选区域设置的cookie

在您的例子中,这段代码应该可以工作。

代码语言:javascript
运行
复制
<template>
  <div class="lang-dropdown">
    <select @change="(e) => $i18n.setLocale(e.target.value)">
      <option
        v-for="lang in $i18n.locales"
        :key="lang.code"
        :value="lang.code"
        onchange="changeLocale"
      >
        {{ lang.name }}
      </option>
    </select>
  </div>
</template>
票数 3
EN

Stack Overflow用户

发布于 2021-12-02 13:50:20

艾尔比马尼的答案是它在文档中说的话。不过,这对我没有用。所以我意识到我错了。例如,我有一个这样的链接:

代码语言:javascript
运行
复制
<nuxt-link to="/about"> // instead of this I started using this;
<nuxt-link :to="localePath('/about')">

localePath之前,它是在导航之后重置区域设置。在nuxt链接中添加localePath之后,它只需使用您更改的地区导航即可。

票数 1
EN

Stack Overflow用户

发布于 2022-08-25 12:01:08

在nuxt配置中设置:

代码语言:javascript
运行
复制
i18n: {
    ...
    strategy: 'no_prefix',
    ...
}

为了防止切换时总是使用相同的URL(不是/en/foo和/de/foo,而是只使用/foo),以保持您以前通过this.$i18n.setLocale('en');设置的nuxt链接之间的区域设置。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65864526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档