前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【vue 系列】nuxt2 配置国际化详细教程

【vue 系列】nuxt2 配置国际化详细教程

作者头像
全栈若城
发布2024-02-29 21:01:13
2430
发布2024-02-29 21:01:13
举报
文章被收录于专栏:若城技术专栏若城技术专栏

前言

废话不多说, 本篇博客主要教你,如和一步步的配置Nuxt 的国际化,

起因

在网上找了半天 没有一个对的, 全是不合格 , 因此自己只能手撸一个了

下载依赖

需要下载 @nuxtjs/i18n 依赖

代码语言:javascript
复制
首先是要下载安装我们的i18n插件依赖。安装指令:
        npm install --save @nuxtjs/i18n
        
这里千万不要下载错了   
        错误命令:npm install vue-i18n     // 这是vue中的

配置

  1. 新建文件夹 locales, 创建en.jsonzh.json 结构如下图所示:

en.json

代码语言:javascript
复制
{
  "links": {
    "home": "Home",
    "title": "title"
  }
}

zh,json

代码语言:javascript
复制
{
    "links": {
      "home": "主页",
       
    },
    
  }
  1. 创建middleware文件夹, 在文件夹内创建 i18n.js , 内容如下
代码语言:javascript
复制
export default function ({
 isHMR,
 app,
 store,
 route,
 params,
 error,
 redirect
}) {
 const defaultLocale = app.i18n.fallbackLocale
 // If middleware is called from hot module replacement, ignore it
 if (isHMR) {
   return
 }
 // Get locale from params
 const locale = params.lang || defaultLocale
 if (!store.state.locales.includes(locale)) {
   return error({ message: 'This page could not be found.', statusCode: 404 })
 }
 // Set locale
 store.commit('SET_LANG', locale)
 app.i18n.locale = store.state.locale
 // If route is /<defaultLocale>/... -> redirect to /...
 if (
   locale === defaultLocale &&
   route.fullPath.indexOf('/' + defaultLocale) === 0
 ) {
   const toReplace =
     '^/' +
     defaultLocale +
     (route.fullPath.indexOf('/' + defaultLocale + '/') === 0 ? '/' : '')
   const re = new RegExp(toReplace)
   return redirect(route.fullPath.replace(re, '/'))
 }
}
  1. store中创建 index.js, 内容如下
代码语言:javascript
复制
/*
 * @Description:
 * @Author: 若城
 * @Date: 2023-10-26 17:47:24
 * @LastEditTime: 2023-10-26 17:47:30
 */
export const state = () => ({
  locales: ['en', 'zh'],
  locale: 'en'
})

export const mutations = {
  SET_LANG (state, locale) {
    if (state.locales.includes(locale)) {
      state.locale = locale
    }
  }
}
  1. nuxt.config.js 配置
代码语言:javascript
复制
plugins:[ '~/plugins/i18n.js'], 
router: {
    middleware: 'i18n'
  },

使用

代码语言:javascript
复制
  {{ $t('links.home') }}

效果

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-02-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 起因
  • 下载依赖
  • 配置
  • 使用
  • 效果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档