首页 > 其他分享 >nuxt3+vue3+vite+TS实现国际化

nuxt3+vue3+vite+TS实现国际化

时间:2024-06-19 14:31:32浏览次数:10  
标签:en zh nuxt3 TS json vue vue3 i18n

前言

博主最近打算用Nuxt3重构了自己SSR博客,打算添加国际化功能,众所周知,实现国际化已是一个很常见的功能。用户可以根据自己的喜好,设置页面的自己合适的语言,从而实现国际化浏览。这样用户体验度会大大提升。博客用的nuxt3+vue3+vite+TS实现国际化,国际化用的vue-i18n,下面我给大家详细介绍。 

一、安装依赖

#npm安装依赖
npm i vue-i18n 
npm i @nuxtjs/i18n@next -D

#或者yarn安装
yarn add vue-i18n 
yarn add @nuxtjs/i18n@next -D

二、配置nuxt.config.ts

//nuxt.config.ts
export default defineNuxtConfig({
  modules: [
    '@nuxtjs/i18n',
  ],
  i18n: {
    strategy: 'no_prefix', // 添加路由前缀的方式
    locales: ["en","zh"], //配置语种
    defaultLocale: 'zh', // 默认语种
    vueI18n: './i18n/config.ts', // 通过vueI18n配置
  }
})

三、i18n配置 

创建i18n文件件用来存放语种文件,以及语种的json翻译字典

config.ts配置

import en from './lang/en_us.json'
import zh from './lang/zh_cn.json'
export default defineI18nConfig(() => ({
  legacy: false, // 是否兼容之前
  fallbackLocale: 'en', // 区配不到的语言就用en
  messages: {
    en,
    zh,
  },
}))

 en_us.json

{
  "name": "chaoyang",
  "messages": "how are you!"
}

zh_cn.json

{
  "name": "朝阳",
  "messages": "你好吗!"
}

四、如何使用

<template>
  <div>
    <n-button tertiary type="primary" @click="setLocale('en')">
      英文
    </n-button>
    <n-button tertiary type="primary" @click="setLocale('zh')">
      中文
    </n-button>
    <p>{{ $t('name') }}</p>
    <p>{{ $t('messages') }}</p>
  </div>
</template>

<script lang="ts">
import { defineComponent } from 'vue'
import { NButton } from 'naive-ui'
export default defineComponent({
  setup () {
    const {locale, setLocale} = useI18n()
    return {
      locale,
      setLocale
    }
  }
})
</script>

效果展示

如果你到了这一步,那代表你已经语言切换功能完美实现啦!恭喜恭喜!

用户体验度又上升啦!YYDS!

欢迎在评论区交流。

如果文章对你有所帮助,❤️关注+点赞❤️鼓励一下!博主会持续更新。。。。

主题切换功能在线体验链接:https://code-nav.top

往期回顾

  vue3中使用prismjs或者highlight.js实现代码高亮

 vue中粘贴板clipboard的使用方法

图片懒加载vue3-lazy

Vite4.2 +Vue3.2+Less实现主题切换功能

vue3.x使用prerender-spa-plugin预渲染达到SEO优化

标签:en,zh,nuxt3,TS,json,vue,vue3,i18n
From: https://blog.csdn.net/chaoPerson/article/details/139736706

相关文章

  • 从入门到实战,一篇学会TS,保姆式教程
    本文知识图谱分基础、进阶和实战三个部分,分别如下:image.pngimage.pngimage.png这三份知识图谱里罗列的知识看似很多,实际上除了进阶部分的泛型、高级类型(二)和实战部分需要稍微费点脑细胞外,其他的都很好理解。本文罗列的知识点比官方文档精简,但基本能覆盖日常开发需要用......
  • Nuxt3页面开发实战探索
    title:Nuxt3页面开发实战探索date:2024/6/19updated:2024/6/19author:cmdragonexcerpt:摘要:这篇文章是关于Nuxt3页面开发实战探索的。它介绍了Nuxt3的基础入门,安装与配置,项目结构,内置组件与功能,以及页面与路由的相关内容。Nuxt3是基于Vue3的服务器端渲染框架,旨在简化......
  • HarmonyOS NEXT - 从TypeScript到ArkTS的适配指导
    一:ArkTS语法适配背景二:从TypeScript到ArkTS的适配规则三:适配指导案例ArkTS语法适配背景 ArkTS在保持TypeScript(简称TS)基本语法风格的基础上,进一步通过规范强化静态检查和分析,使得在程序开发期能检测更多错误,提升程序稳定性,并实现更好的运行性能。本文将进一步解释为什么......
  • HarmonyOS NEXT - ArkTS语言 - 模块、关键字、空安全
    模块程序可划分为多组编译单元或模块。每个模块都有其自己的作用域,即,在模块中创建的任何声明(变量、函数、类等)在该模块之外都不可见,除非它们被显式导出。与此相对,从另一个模块导出的变量、函数、类、接口等必须首先导入到模块中。导出可以使用关键字export导出顶层的声明......
  • Vue3如何绑定全局方法和变量
    Vue2中Vue.prototype绑定全局方法,此写法在Vue3已经不存在了。与任何全局的东西一样,应该谨慎使用。Vue3使用provide/inject或者app.config.globalProperties进行绑定如果全局属性与组件自己的属性冲突,组件自己的属性将具有更高的优先级。 一、provide/inject方法......
  • ChatTTS语音生成模型:突破开源语音天花板的新星
    目录引言一、ChatTTS技术特性解析二、ChatTTS的实现原理三、ChatTTS的多元化用途四、ChatTTS的实践操作1、便捷的在线试用2、音色调节与克隆3、长文本处理的挑战与展望五、ChatTTS部署实践1、下载模型2、下在源代码3、创建虚拟环境4、安装相关依赖5、简单测试6、保存本......
  • 【CS.SE】从源码到实践:探索日常对话的生成性语音模型ChatTTS
    文章目录1项目介绍1.1功能与特色2技术分析2.1模型架构3项目实践3.1快速上手4项目总结ReferencesGitcode上有许多优秀的开源项目,今天我们要介绍的是一个令人耳目一新的项目——ChatTTS。ChatTTS是一个基于深度学习的文本转语音(TTS)系统,它的目标是通过先进......
  • 智能体Agents:开启AI助手的无限可能
    1.什么是Agents?        Agents是一个具有智能功能的智能体,它使用LLM和工具来执行任务。        Agents核心思想是使用LLM来选择要采取的一系列动作。在链式结构中,一系列动作是硬编码的(在代码中)。在Agents中,使用语言模型作为推理引擎来确定要采取的......
  • requests模块处理cookie
    requess模块处理cookie相关的请求学习目标掌握requests处理cookie的三种方法1爬虫中使用cookie为了能够通过爬虫获取到登录后的页面,或者是解决通过cookie的反扒,需要使用request来处理cookie相关的请求1.1爬虫中使用cookie的利弊带上cookie的好处能够访问登录......
  • Vue3鼠标悬浮个人头像时出现修改头像,点击出现弹框,上传头像使用cropperjs可裁剪预览
    实现效果:鼠标悬浮到头像上,下方出现修改头像点击修改头像出现弹框,弹框中可上传头像,并支持头像的裁剪及预览 实现方式: 1.tempalte中<divclass="img-box"> <imgv-if="avatarImgUrl":src="avatarImgUrl"class="avatar"/> <divclass="text"@......