当前位置: 首页 > wzjs >正文

电子商务网站与建设实践报告广州致峰网站建设

电子商务网站与建设实践报告,广州致峰网站建设,哈尔滨关键词优化软件,谁教我做啊谁会做网站啊仅供参考 前端技术之---应用国际化(vue-i18n)一、前言二、Vue.js 的国际化插件 --- vue-i18n三、vue-i18n 的基础用法1、安装 vue-i18n2、自定义语言包3、进行统一管理配置4、全局注册 i18n 实例5、在组件中使用vue-i18n四、语言切换五、进阶用法1、与响…

仅供参考

前端技术之---应用国际化(vue-i18n)

  • 一、前言
  • 二、Vue.js 的国际化插件 --- vue-i18n
  • 三、vue-i18n 的基础用法
    • 1、安装 vue-i18n
    • 2、自定义语言包
    • 3、进行统一管理配置
    • 4、全局注册 i18n 实例
    • 5、在组件中使用vue-i18n
  • 四、语言切换
  • 五、进阶用法
    • 1、与响应式变量结合使用


一、前言

当我们编写一个网页 / 前端应用,使用的一般都是中文,因为我们是中国人,此时,所使用 / 展示的语言是写死的,无法切换;如果这个网页 / 前端应用要在国外打开,如英国、美国等地方,他们使用的并不是中文,而是其他语言,如果网页仍然展示中文的话,就会造成阅读障碍

在不同地区 / 国家 / 环境,网页 / 前端应用能够切换不同的语言,就实现了应用的国际化,或者称为实现多语言支持


二、Vue.js 的国际化插件 — vue-i18n

vue-i18n 是 Vue.js 的国际化(i18n,即 “internationalization” 的缩写)插件,专门用于在 Vue 应用中实现多语言支持。它允许开发者轻松地管理不同语言的文本内容,并根据用户的语言偏好动态切换显示语言

三、vue-i18n 的基础用法

1、安装 vue-i18n

npm install vue-i18n --save

- -save:会把包添加到 package.json 文件的 dependencies 字段中。这意味着在生产环境运行项目时,这些包是必需的(npm 5.0 以后的版本可加可不加)


2、自定义语言包

创建 locales 文件夹,在其下新建两个文件:zh-cn.js(中文简体语言包)、en.js(英文语言包)

当然还可以创建其他语言包,根据需求所定,如jp.js(日文语言包)、zh-tw(中文繁体语言包)等等

//zh-cn.js
export default {form: {user: "用户名",password: "密码",},
}//en.js
export default {form: {user: "Name",password: "Password",},
}

3、进行统一管理配置

在 locales 文件夹下创建index.js文件,写入以下内容:

import { createI18n } from "vue-i18n"import zhLocal from "./zh-cn"
import enLocal from "./en"const messages = {"zh-cn": zhLocal,en: enLocal,
}const i18n = createI18n({legacy: false, // 设为 false 以支持 Composition APIlocale: "zh-cn", // 设置默认语言globalInjection: true, //全局模式,可以直接使用$tmessages,
})window.$t = i18n.global.t //将国际化(i18n)的翻译函数 t 挂载到全局的 window 对象上export default i18n

关键点解释:
1)import zhLocal from “./zh-cn” 引入具体的语言包
2)messages是一个消息字典,是一个对象,不同的字段对应不同的语言包,为后续创建 i18n 实例做准备

3)createI18n 是一个函数,用于创建并配置 i18n 实例,接收一个对象:

  • legacy字段:决定使用哪种 API 模式来开发国际化功能

1、取值为false(推荐),表示采用 Composition API 模式,完全兼容 Vue 3 的 Composition API 风格;必须通过 i18n.global 访问全局 API(如 t、locale 等)
2、取值为true:表示采用 Options API 模式,兼容 Vue 2 的使用习惯;可以通过 this.$t 直接在组件中访问翻译方法(全局注入)

  • locale字段:设置默认语言

1、取值为"zh-cn"为默认中文,取值为"en"默认为英文(必须加双引号
2、建议与messages中的字段相同

  • globalInjection字段:设置是否将 i18n 的翻译函数注入到全局

1、翻译函数(t函数)就是起到一个翻译的作用,因为我们写代码的时候都是写入语言包中的字段,翻译函数可以将字段翻译为对应的文本
2、开启后可在每个组件中直接使用翻译函数,无需重新引入翻译函数才能使用

  • messages字段:决定了可以使用的语言包有哪些

4)window.$t = i18n.global.t:将 Vue-i18n 的翻译函数 t 挂载到浏览器的全局对象 window 上,使得在 Vue 组件外部也能使用国际化翻译功能

可能看了上面之后,会对这里产生疑问,我把globalInjection字段设置为 true 全局注入,不就都可以使用翻译了吗,为什么还要把翻译函数挂载到 window 上?

简单的说,如果只设置了上面的createI18n,翻译功能只能在元素中起作用(在vue指的是<template></template>所包裹的部分),而在 JS 中是无法使用翻译的;只有把翻译函数挂载,才能在 JS 中实现翻译;可以理解为 window.$t 就是翻译函数,只不过只适用于 JS

//只设置createI18n:
<div>{{ $t("form.user") }}</div>  //可正确翻译
console.log($t("form.user"))    //报错

虽然window.$t 和 $t 的功能相同,但是不能混在一起用,在元素中使用 $t,在 JS 中使用 window.$t

4、全局注册 i18n 实例

import { createApp } from "vue"import i18n from "./locales/index"
import App from "./App.vue"const app = createApp(App)
app.use(i18n)app.mount("#app")

5、在组件中使用vue-i18n

<script setup>
console.log(window.$t("form.user"));   //输出用户名
</script><template><div>{{ $t("form.user") }}</div>
</template>

四、语言切换

<script setup>
import { useI18n } from "vue-i18n";const { locale } = useI18n();const changeLan = (lang_type) => {localStorage.setItem("language", lang_type); // 存一下现在的语言locale.value = lang_type; // 直接赋值
};</script><template><div>{{ $t("form.user") }}</div><button class="first" @click="changeLan('zh-cn')">切换成中文</button><button class="second" @click="changeLan('en')">切换成英文</button>
</template>

实现的效果:点击按钮即可切换语言

useI18n() 返回的是当前 i18n 实例的全局状态(默认情况下,useScope 为 ‘global’)。locale.value = lang_type 会直接修改 i18n 实例的全局语言设置

五、进阶用法

如果你都掌握了上面的方法,那么只是学会了很基础的用法,接下来都是基于实际应用场景的使用,是更为常见的用法:

1、与响应式变量结合使用

当我想要在一个div盒子中写上“已经做完了10道题目”,可以直接设置语言包中的 count: “已经完成了10道题目” ,然后在 div 中加上:

<div>{{ $t("count") }}</div>

但是,如果一分钟可以完成一道题目,那么每过一分钟,数字就会发生变化,而上面的 count 是写死的,我们只能不断的添加 count1: “已经完成了11道题目”、count2: “已经完成了12道题目”…当有上千万个数字时,很明显代码量将非常恐怖

解决办法:承接变量值
在语言包中,我们将其设置为:

done:"已经完成了{ sum }道题目"

对应的描述方式也要修改:

<script setup>
import { ref } from 'vue'const count = ref(10)  //假设count可以实现每分钟加一,这里不做展示
</script><template><div>{{ $t("done", {sum: count}) }}</div>
</template>

通过上面的写法,sum承接了count的值,所以当count改变时,sum也会发生改变,把原本需要多行的代码压缩到了一行


文章转载自:

http://f5tw5Xud.mphfn.cn
http://hsAQcciw.mphfn.cn
http://lYIzNNsh.mphfn.cn
http://CigWSpBD.mphfn.cn
http://EdPyK0CU.mphfn.cn
http://zGnvCfD6.mphfn.cn
http://T5uzUWhM.mphfn.cn
http://eOEcaYKj.mphfn.cn
http://eEpY8mnc.mphfn.cn
http://VyvvtfI4.mphfn.cn
http://2KT8WUp1.mphfn.cn
http://ZItjAic9.mphfn.cn
http://nd78457B.mphfn.cn
http://uNlwsOuU.mphfn.cn
http://ExUqWcQe.mphfn.cn
http://ANC9AvXY.mphfn.cn
http://PKDyzEDS.mphfn.cn
http://7Sld0o9S.mphfn.cn
http://XK0NSi55.mphfn.cn
http://r2mkt1Yl.mphfn.cn
http://guonxsFZ.mphfn.cn
http://V0BTEAGf.mphfn.cn
http://oxWas7S9.mphfn.cn
http://nUiRSvLf.mphfn.cn
http://2dcyuqVX.mphfn.cn
http://O74zcgh2.mphfn.cn
http://72JDzMT6.mphfn.cn
http://KXUsnZ3W.mphfn.cn
http://tQ3444oC.mphfn.cn
http://HNZsZkmi.mphfn.cn
http://www.dtcms.com/wzjs/742632.html

相关文章:

  • 个人站长网站河北邯郸ktv
  • 免费网站去哪找做网站要收订金吗
  • 东莞技术好的网站建设推广重庆市建设执业注册中心网站
  • 浪漫网站建设制作表情包的软件
  • 餐饮网站建设网站桐乡市城市规划建设局网站
  • 专业的做网站公司郑州网站制作生产厂商定制
  • python做网站步骤网站建设专业的
  • 美食网站建设需求中国国防建设网站
  • 做水印的网站建行个人手机银行app下载
  • 网站未备案会怎么样成都百度推广优化
  • 如何阿里巴巴网站做推广方案python培训机构哪个好
  • 连云港网站建设案例网站开发硬件要求
  • 云南网站优化建站wordpress 手机菜单栏插件
  • 网站首页模板设计图wordpress用户增加插件
  • 河南十大外贸公司优化seo报价
  • 南宁网站关键字优化太原网站制作开发
  • 用名字做壁纸网站黄山游玩攻略及费用
  • 做网站投放广告东明县住房和城乡建设局网站
  • 网站备案背景幕布下载网站建设需要哪些工作室
  • 网站策划与运营西安软件优化网站建设
  • 网站规划与网页设计总结少儿编程哪个机构比较好
  • 可以制作视频的软件有哪些网站文字优化方案
  • 重庆建设工程监督管理局网站网站建设一对一培训
  • 新建站点的步骤网站滑动效果怎么做的
  • 网站备案 快速wordpress转义
  • 上海工商查询网官方网站网站网格设计
  • 内部网站建设公司杭州公司建站模板
  • 怎么免费搭建一个网站wordpress付费发布
  • 网站设计常用字体浙江省住房城乡建设厅官方网站
  • 网站编辑楼盘详情页怎么做wordpress 图片响应式