vue2、vue3使用i18n实现国际化

news2024/11/17 3:46:56

一、目标效果

        源码地址:git clone i18n-demo: vue2、vue3实现i18n国际化功能 

        默认语言是中文:

        点击语言切换,变成英文(这里简单设置了中文、英文两种语言)

 

        注意:vue2支持 vue-i18n 版本8.0 +,vue3支持vue-i18n版本9.0+ !!!!!!

二、vue2实现i18n国际化

        (1)src下建立locale文件夹,标识国际化相关代码(起什么名字随意

        (2)locale文件夹下建立lang文件夹用于目标国家语言的手动翻译,index.js文件将i18n实例导出到main.js中

         (3)locale/index.js文件用于实例化i18n插件,并在vue中使用i18n插件,messages就是自动翻译的语言包

import Vue from 'vue'
import VueI18n from 'vue-i18n'
import messages from './lang'

Vue.use(VueI18n)

const i18n = new VueI18n({
    locale: 'zh',
    messages,
});
export default i18n;

        (4)zh.js代表中文翻译包、en.js代表英文翻译包

 zh代表目标语言为中文,i18n能识别出来

export default {
    zh: {
        title: '后台管理系统',
        schoolModule: {
            title: '学校模块',
            kindergarten: '幼儿园',
            primary: '小学',
            junior: '初中',
            senior: '高中',
            university: '大学'
        }
    }
}

en.js代表目标语言为英文,i18n能识别出来

export default {
    en: {
        title: 'management system',
        schoolModule: {
            title: 'schoolModule',
            kindergarten: 'kindergarten',
            primary: 'primary',
            junior: 'junior',
            senior: 'senior',
            university: 'university'
        },
    }
}

locale/lang/index.js是所有目标国家语言翻译的出口,也就是上图中的messages

import zh from './zh'
import en from './en'
export default {
    ...en,
    ...zh
}

        (5)使用

  • template中使用为 $t('title')
  • script中使用 this.$i18n.locale  获取当前语言类型,this.$t('title'):获取当前语言翻译结果  

三、vue3实现i18n国际化

        (1)vue3的文件locale文件夹下lang文件夹内容与上面一模一样,不同的是vue3实例化i18n不同

        (2)locale/index.js

import { createI18n } from 'vue-i18n'

import messages from './lang'
const i18n = createI18n({
    legacy: false, //处理报错Uncaught (in promise) SyntaxError: Not available in legacy mode (at message-compiler.esm-bundler.js:54:19)
    locale: 'zh',
    messages
})

export default (app) => {
    app.use(i18n)
}

        (3)main.js

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
// 导入多语言
import lang from './locale'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'

const app = createApp(App)
// 将多语言挂在到vue中
lang(app)

app.use(store)
    .use(ElementPlus)
    .use(router)
    .mount('#app')

        (4)使用

  • template中使用为 $t('title')
  • script中使用为

        import { useI18n } from 'vue-i18n'

        

        // locale为响应式的值

        const { t, locale } = useI18n();

        

        console.log('t:', t('title'))

        console.log('locale:', locale.value)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/419844.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

本轮沙尘已跨过长江!这些地区请注意加强防范

气象台4月12日06时继续发布沙尘暴蓝色预警:受冷空气大风影响,预计4月12日08时至13日08时,新疆南疆盆地和东部、内蒙古中西部、甘肃河西和中部、宁夏、陕西中部、山西、河北、辽宁、北京、天津、山东、河南、安徽、江苏、上海、湖北中北部、浙…

漏洞利用之弱口令

漏洞利用之弱口令1.弱口令的定义2.弱口令字典生成收集用户信息,组成爆破字典特殊字符增强的字典生成字典生成项目3.利用 Burp Suite 进行密码爆破1.弱口令的定义 弱口令没有严格和准确的定义,通常认为容易被别人猜测到或被破解工具破解的口令均为弱口令…

【Mysql】mysql8.0.26解压包部署方式

版本背景: 操作系统:centos7.3 mysql版本:mysql-8.0.26-linux-glibc2.12-x86_64.tar 一、前期准备 1、检测操作系统自带安装的mysql和mariadb服务,如存在,需卸载 rpm -qa | grep mysql rpm -qa | grep mariadb 卸载…

vim编辑器使用

目录 vim基本概念 vim基本操作 插入模式 命令模式 移动光标 删除字符 复制剪切 替换 撤销 更改 移动指定行 底行模式 命令集 vim简单配置 vim基本概念 vim编辑器有三种模式: 命令模式:光标移动,字符或行移动&#x…

iTOP-RK3568开发板Android kernel移植-单独编译内核

此方法常用于 kernel 的开发和调试,以下的方法既编译 kernel 部分时, 同 时打包成 boot.img, 这样加快了我们开发的速度; 进入内核目录下, 输入以下命令: cd kernel make ARCHarm64 CC../prebuilts/cla…

Vue:axios

1、 第三方库方式, 基于 Promise 的 HTTP 库:axios (对 XMLHttpRequest进行的封装) 即: axios.get().then() 2、跨域访问 定义:在 a 页面中想获取 b 页面中的资源,如果 a 页面和 b 页面所处的协…

Java基础从入门到精通系列(一)

1、Java简介 Java语言是一种高级、并发、面向对象的计算机编程语言,由Sun Microsystems公司于1995年推出。Java广泛应用于Web应用程序开发、移动应用程序开发以及大型企业级应用程序的开发中。Java语言具有跨平台、安全性好、可移植性强、易学易用等优点&#xff0…

JavaSE学习进阶day04_01 Date类

第一章 Date类 首先对时间的几个补充有必要知道: 时间起点: 心得: 如果以后我们仅仅要展示时间,那么可以用Date和SimpleDateFormat(格式化) 如果我们要拿着两个时间进行计算,用Date和SimpleD…

【C++升级之路】第十二篇:模板进阶 | 非类型模板参数 模板特化 类模板的分离编译 模板优缺点总结

🌟hello,各位读者大大们你们好呀🌟 🍭🍭系列专栏:【C学习与应用】 ✒️✒️本篇内容:非类型模板参数,函数模板特化,类模板特化(全特化,部分特化&a…

【系统集成项目管理工程师】信息系统集成专业知识

信息系统集成专业技术 一 信息系统建设 1 信息系统生命周期 立项阶段:即概念阶段或需求阶段,这一阶段根据用户业务发展和经营管理的需要,提出建设信息系统的初步构想,然后对企业信息系统的需求进行深入调研和分析,形…

K8s结合docker部署

原生安装步骤 安装必要的环境依赖与工具 sudo apt-get install \apt-transport-https \ca-certificates \curl \gnupg \lsb-release下载证书更新 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-key…

Linux基础命令-seq打印数字序列

Linux基础命令-sed流编辑器 前言 seq命令通常是用来打印一串有规律的数字,常与其他命令搭配使用,一起来看下它的用法。 一. 命令介绍 在doc文档中查看seq命令的含义 NAMEseq - print a sequence of numbers DESCRIPTIONPrint numbers from FIRST to…

4.14-4.16学习总结

多线程: 线程: 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。 进程: 进程是程序的基本执行实体 举个例子:360运行之后,它就可以看做是一个进程,但…

【UE4】关卡流送的demo

关卡流送功能可以将地图文件加载到内存中,或者从内存中卸载,并在游戏过程中切换地图的可视性。 这样一来,场景便能拆分为较小的地图块,并且只有相关部分才会占用资源并被渲染。 正确设置后,开发者便能创建大型、无缝衔…

c++STL容器之序列式容器

目录 vector容器 vector对象的默认构造 vector的初始化 vector的遍历 vector的增删改查 vector末尾的添加移除操作 vector的数据存取 deque容器 deque对象的默认构造 deque末尾的添加移除操作 deque的数据存取 stack容器 stack对象的默认构造 stack的push()与po…

Midjourney科普介绍

Midjourney是啥? Midjourney是一个由Midjourney研究实验室开发的人工智能程序,可根据文本生成图像,于2022年7月12日进入公开测试阶段,使用者可通过Discord的机器人指令进行操作,可以创作出很多的图像作品。 以下这些…

ROS2中将octomap发布到Moveit中作为碰撞物体

1.安装准备 这里假设你已经装好了ROS2以及Moveit2(都用二进制安装就行,不用从源码安转),没有安装好的,可以按照鱼香ROS的教程安装,两三行命令就搞定了。 我的ROS2版本为humble,请根据你使用的实…

银行数字化转型导师坚鹏:银行同业核心产品与营销策略解读

数字化背景下银行同业核心产品与营销策略解读课程背景: 数字化背景下,很多银行存在以下问题: 不清楚银行同业核心产品发展现状? 不清楚如何银行同业产品营销策略? 不知道如何更好地挖掘他行优质客户? 课…

国产化系统改造实践(未完)

一、项目背景 2020 年,红帽公司宣布,将在 2021 年 12 月 31 日和 2024 年 6 月 30 日分别终止对 CentOS 8 和 CentOS 7 的服务支持,把 CentOS 项目的工作和投资集中在CentOS Stream 上。 CentOS Linux 8已于2021年12月31日停止维护,CentOS Linux7也 将于2024年6月停服。s所…

技术创业者必读:从验证想法到技术产品商业化的全方位解析

导语 | 技术创业之路往往充满着挑战和不确定性,对于初入创业领域的人来说,如何验证自己的创业想法是否有空间、如何选择靠谱的投资人、如何将技术产品商业化等问题都需要认真思考和解决。在「TVP 技术夜未眠」第六期直播中,正马软件 CTO、腾讯…