首页 > 其他分享 >nuxt2 国际化i18n使用

nuxt2 国际化i18n使用

时间:2024-06-21 17:21:20浏览次数:21  
标签:国际化 nuxt2 language state en i18n store cn

安装依赖,项目nuxt2
版本nuxt2.15.8

cnpm i @nuxtjs/[email protected]

vuex配置全局语言

export const state = () => ({
    language: "en",
    token: "",
});

export const mutations = {
    setLanguage(state, language) {
        state.language = language;
        this.$cookies.set("language", language);
    },
    getLanguage(state) {
        state.language = this.$cookies.get("language");
    }
};

plugins/i18.js

import en from '../locales/en.json'
import cn from '../locales/cn.json'
import * as store from '../store/index'

export default {
    locale: store.state().language, // 使用store中的语言配置
    fallbackLocale: 'en',
    messages: [en, cn]
}

nuxt.config.js

import i18n from "./plugins/i18n";

export default = {
   modules: ["@nuxtjs/i18n"],
       i18n: {
        langDir: "locales/", // 语言配置文件目录
        locales: [
            {
                code: "en",
                iso: "en-US",
                file: "en.json", // locales/en.json
            },
            {
                code: "cn",
                iso: "zh-Hans",
                file: "cn.json", // locales/cn.json
            },
        ],
        lazy: false,
        strategy: "prefix_except_default", // 默认语言不添加前缀
        defaultLocale: 'en', // 直接设置默认语言代码
        vueI18n: i18n, // 引入 i18n
        // detectBrowserLanguage: false,
        detectBrowserLanguage: {
            alwaysRedirect: false, // 根据需要决定是否总是重定向到检测到的语言
            useCookie: true,
            cookieKey: 'language',
            onlyOnRoot: true, // 这意味着只在用户首次访问应用的根路径时进行语言重定向

        }
    }
}

vue文件

<template>
  <button @click="changeLanguage('en')">英文</button>
  <button @click="changeLanguage('cn')">中文</button>
</template>

import { mapMutations } from "vuex";

  methods: {
        ...mapMutations(['setLanguage']),
        changeLanguage(newLanguage) {
            // 这里可以直接调用从 mutation 映射过来的方法
            console.log(newLanguage)
            this.setLanguage(newLanguage);
        }
  }

1.安装依赖
2.配置到nuxt.config.js module以及i18n配置项,进行对应js文件的引入
3.store 用于控制全局的语言
4.i18n 文件引入store使用里面的state值
5.vue 页面修改store中的值,对应的语言配置相应联动切换

标签:国际化,nuxt2,language,state,en,i18n,store,cn
From: https://www.cnblogs.com/brujie/p/18260958

相关文章

  • 我拿香港身份!是为了让小孩进可接受国际化教育,退可低分上国内名校!
    我是去年获批香港优才的糖爸,半diy申请优才拿香港身份很简单~为了孩子教育,现代孟母三迁的故事不少见,而香港作为亚洲顶尖学府的聚集地,也备受瞩目。据统计,申请香港移民的内地家庭,有八成将子女教育作为移民的首要考虑因素,可见香港教育深受内地家庭的青睐。香港身份教育优势1.1......
  • nuxt3+vue3+vite+TS实现国际化
    前言博主最近打算用Nuxt3重构了自己SSR博客,打算添加国际化功能,众所周知,实现国际化已是一个很常见的功能。用户可以根据自己的喜好,设置页面的自己合适的语言,从而实现国际化浏览。这样用户体验度会大大提升。博客用的nuxt3+vue3+vite+TS实现国际化,国际化用的vue-i18n,下面我给大......
  • 记录--前端实现文件预览(word、excel、pdf、ppt、xmind、 音视频、图片、文本) 国际化
    ......
  • 【JavaScript脚本宇宙】从i18next到Date-fns:国际化和本地化库
    跨越JavaScript新境界:六大库全面评测前言本文将详细介绍六种具有不同功能的JavaScript库,包括处理多语言支持、全球化和本地化、格式化日期、数字和字符串,解析、验证、操作、显示日期和时间,格式化和操作数字,以及最全面、最简单和一致的工具集用于处理JavaScript中的日期等......
  • Angular primeNg i18n 国际化多语言处理
    i18nAPI允许为组件全局设置翻译并与翻译库集成。PrimeNg官网相关地址详细步骤如下: 1:安装如下两个包。一个是翻译的一个是语音请求的npminstall@ngx-translate/core@ngx-translate/http-loader--save2:项目assets目录下创建en.json和zh.json两个文件或者更多国......
  • 国际化怎么做,中文一个字,阿拉伯语很长一串,怎么实现样式的一致
    国际化(i18n)涉及多个方面,包括文本翻译、日期和数字格式、货币单位等,以及如何确保不同语言版本在界面布局上的一致性和美观性。针对您提到的中文字符较短而阿拉伯语等语言字符较长,导致样式难以统一的问题,可以采取以下策略:1.弹性布局(Flexbox或Grid)Flexbox:使用Flexbox布局可以......
  • 系统国际化之多语言解决方案| 京东物流技术团队
    1.背景随着京东各业务板块国际化进程的不断推进,诸多业务已经融入了多元文化中,一个一体化的多语言系统解决方案成为各个技术团队讨论的焦点。国际物流系统凭借在国际化领域多年的经验,特别是在系统多语言处理上长期的经验积累,总结了一套标准的系统多语言框架,旨在为大家提供帮助......
  • i18n国际化配置
    在resources文件下新建i18n文件,并新建国际化资源文件:ResourceBundle。点击新增ResourceBundle文件,在Resourcebundlebasename处填写国际化文件的名称,例如“login”。并点击中间偏右的“+”号,新增国际化语言,此处新增两个语言“zh_CN”,“en_US”。分别在两个文件中添加......
  • springboot国际化的使用(一_验证OK
    https://blog.csdn.net/weixin_39960529/article/details/86571962 步骤:1.首先建立一个meven项目2.在pom.xml中加如下依赖:<dependency>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-starter-thymeleaf</artifactI......
  • SpringBoot中使用MessageSource的getMessage获取i18n资源文件中的消息_OK
    https://www.cnblogs.com/badaoliumangqizhi/p/13608623.html 场景springboot默认就支持国际化的,而且不需要你过多的做什么配置,只需要在resources/下创建国际化配置文件即可,注意名称必须以messages开始。messages.properties(默认的语言配置文件,当找不到其他语言的配置的时候......