nuxt.js安装国际化插件i18n
2025-04-05
194 字约 1 分钟
...国际化i18n配置
- 安装依赖
npm install @nuxtjs/i18n
- 配置i18n
modules: [
'@nuxtjs/i18n'
],
i18n: {
langDir: '../locales/',
defaultLocale: 'zh',
detectBrowserLanguage: {
useCookie: true,
cookieKey: 'i18n_redirected',
alwaysRedirect: true,
},
strategy: 'no_prefix',
locales: [
{
code: 'zh',
file: 'zh.ts',
name: '简体中文'
},
{
code: 'en',
file: 'en.ts',
name: 'English'
}
]
}
- 使用i18n
LanguageSwitcher.vue
<template>
<div class="language-switcher">
<select v-model="locale" @change="switchLanguage">
<option
v-for="lang in availableLocales"
:key="lang.code"
:value="lang.code"
>
{{ lang.name }}
</option>
</select>
</div>
</template>
<script setup lang="ts">
const { locale, locales } = useI18n()
const switchLocalePath = useSwitchLocalePath()
const router = useRouter()
const availableLocales = computed(() => {
return (locales.value).map(l => {
return {
code: l.code,
name: l.name
}
})
})
const switchLanguage = () => {
const path = switchLocalePath(locale.value)
if (path) {
router.push(path).then(() => {
window.location.reload() // 强制刷新页面
})
}
}
</script>
<style scoped lang="less">
.language-switcher {
select {
padding: @spacing-sm @spacing-md;
border: 1px solid @border-color;
border-radius: @border-radius-md;
background-color: transparent;
color: @light-text-color;
cursor: pointer;
&:hover {
border-color: @secondary-color;
}
option {
padding: 10px;
background-color: @primary-color;
color: @light-text-color;
}
}
}
</style>
- 创建语言文件
/locales/en.ts
export default {
welcome: 'Welcome',
nav: {
home: 'Home',
about: 'About'
},
content: {
title: 'My Project',
body: 'This is a project built with Nuxt3',
footer: '© 2024 All rights reserved'
},
sidebar: {
left: 'Left Sidebar',
right: 'Right Sidebar'
}
}
/locales/zh.ts
export default {
welcome: '欢迎',
nav: {
home: '首页',
about: '关于'
},
content: {
title: '我的项目',
body: '这是一个使用 Nuxt3 构建的项目',
footer: '© 2024 版权所有'
},
sidebar: {
left: '左侧栏目',
right: '右侧栏目'
}
}
在需要国际化的地方通过{{ $t(‘sidebar.right’) }}的形式来使用
运行项目后,可以引入切换按钮进行语言切换

ps:切换语言后需要刷新页面才会正确显示
如果您觉得这篇文章有帮助,请点个赞吧~
相关文章
更多文章 →nuxt2025-10-24
Nuxt 中 process.client 与 import.meta.client 的区别
一、来源与定义 | 对比项 | process.client | import.meta.client | | | | | | 来源 | Nuxt 内置的运行时变量(兼容 Node 风格) | Vite 原生 ESM 构建标志 | | 定义位置 | Nuxt 在构建阶段自动注入到全局 | Vite 在编译阶段静态替换 | | 作用机制 | 运行时判断变量 | 构建时编译宏(静态替换) | | 语法类型 | CommonJS 风格 | E...
学习
nuxt2025-10-22
Nuxt SSR 与 Next.js SSR
🧭 引言 在现代前端生态中, Nuxt(Vue) 与 Next.js(React) 是最成熟的两大全栈框架。 它们都具备 SSR(Server Side Rendering) 能力,但实现原理与运行机制差异巨大。 如果你在使用 Nuxt 构建 SSR 项目,却发现“路由跳转后不再 SSR”, 而在 Next.js 中同样操作却会重新发起服务端渲染——这不是 bug,而是 理念差异 。 本文将详细对比这两种框架的 SSR 行为,帮助你彻...
学习面试
nuxt2025-09-24
nuxt4制作企业官网
SASS 1、引入SASS 2、配置文件目录 可以注入 SCSS 变量或 mixin 到每个 样式块。 推荐使用 而不是 ,因为 会重复加载。 注意路径 是相对于项目根目录。 3、创建2个文件 问题: 如果用 ,变量仍然可以访问,但 mixin 和函数也要全局注入。 不要在 里再 自己的 ,会出现循环依赖。 不能在global.scss写预设变量,会报错 也可以直接写变量,而不通过单独文件: 4、使用 打包SSG 静态文件 1、配置文件...
学习
nuxt2025-04-08
Nuxt3 使用 ElementUI Plus报错问题
解决方式:官方组件需要被包裹一层,如以下示例:
学习
nuxt2025-04-05
Nuxt3实现事件总线EventBus
事件总线 这里我是用得是 这个库, 是一个微型的 EventEmitter 库 安装 在plugins文件夹下建立mitt.ts文件 使用: A页面 B页面
学习
nuxt2025-04-05
useState全局状态管理与localStorage本地存储持久化
一、 Nuxt3中的全局状态管理 1\. 介绍 这是Nuxt3为我们准备的全局状态管理,且 支持响应式 ,可以无需使用pinia等,直接在项目中使用。 官网文档 : 、 注意事项 : · 由于会把State存储为JSON,所以请不要存储不能被JSON化的数据,比如类、函数、Symbol等 · 为了让我们的状态管理能在任何地方使用(不止在setup中),最好统一使用函数的写法,见下 2\. 基本使用 · 创建文件 在根目录下的 /comp...
学习
评论
请登录后发表评论
去登录