vue-i18n 用于前端vue项目中,需要多语言切换的场景

  

 安装方法(npm)

npm install vue-i18n

  

 简单使用

   1、在vue项目的main.ts文件中实例化 i18n

import VueI18n from 'vue-i18n'

Vue.use(VueI18n)
 const i18n = new VueI18n({
    locale: 'zh', // 语言标识
    messages: {
       en: {
           test: {
             apple: 'apple',
          },
       },
       zh: {
          test: {
             apple: '苹果',
          },
       },
    },
 })
 

  

  2、把 i18n 挂载到 vue 根实例上

new Vue({
router,
store,
i18n,
render: h => h(App),
}).$mount('#app')

  3、在 HTML 模板中使用(简单示例)

 这里通过修改 i18n的 locale 的属性值来切换语言

<template>
<div>
{{ $t('test.apple') }}
<div>
<button @click="switchLang">切换英文</button>
</div>
</div>
</template> <script>
export default {
name: 'demo',
methods: {
switchLang() {
this.$i18n.locale = 'en'
},
},
}
</script> <style></style>

  4、效果如下

  在实际项目中,往往是需要大段的翻译内容,这时候,我们需要将翻译文本分类,分文件以便于管理

  具体结构可参考下图

  

  其中i18n.js是将i18n实例化的代码

import Vue from 'vue'
import VueI18n from 'vue-i18n'
import zh from './zh/index.js'
import en from './en/index.js'
Vue.use(VueI18n)
let locale = 'zh'
export default function(obj = {}) {
  return new VueI18n({
    locale, // 设置地区
    messages: { en, zh, ...obj }, // 设置地区信息
  })
}

  在main.js中挂载到vue实例上

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store' import createI18n from '@/assets/language/i18n.js' const i18n = createI18n() new Vue({
router,
store,
i18n,
render: h => h(App),
}).$mount('#app')

  

  en和zh文件夹中的index.js其实都一样,用webpack的api —— require.context 实现自动化导入模块

const languagesModule = require.context('./languageModule', true, /\.js$/)
const languages = languagesModule.keys().reduce((modules, modulePath) => {
const name = modulePath.replace(/^\.\/(.*)\.js+$/, '$1')
const value = languagesModule(modulePath)
modules[name] = value.default
return modules
}, {})
export default { ...languages }

  

  en和zh文件夹中的 languageModule 文件夹下的文件,都是以下的格式

export default {
  an_apple_a_day: '一天一个苹果,医生远离我',
}

  

  HTML模板中的使用情况及效果展示

<template>
<div>
{{ $t('test2.an_apple_a_day') }}
<div>
<button @click="switchLang">切换英文</button>
</div>
</div>
</template> <script>
export default {
name: 'demo',
methods: {
switchLang() {
this.$i18n.locale = 'en'
},
},
}
</script>

  

 vue-i18n变量赋值

  有时我们的不同翻译文本中有很多相同的语句,这时候我们可以把相同的提取出来,不同的用变量处理 或者 有时候我们的翻译中需要加入后端返回的数据,这时候也可以用到变量,

  变量用法

  用法很简单,这里只具体举一个例子展示

  

export default {  // 这里切记括号里变量左右不能有空格!!!
wait_and_try_again: '请等待{seconds}秒后再试',
}

  模板:

<p>{{ $t('test.wait_and_try_again', { seconds: 6 }) }}<p>

  效果:

  

vue-i18n 国际化语言切换的更多相关文章

  1. DataGrid 列头实现国际化语言切换

    <DataGrid> <DataGrid.Columns> <DataGridTextColumn Binding="{x:Null}" Width= ...

  2. vue 国际化i18n 多语言切换

    安装 npm install vue-i18n 新建一个文件夹 i18n ,内新建 en.js zh.js index.js 三个文件 准备翻译信息 en.js export default { ho ...

  3. Java 国际化 语言切换

      Java国际化 我们使用java.lang.Locale来构造Java国际化的情境. java.lang.Locale代表特定的地理.政治和文化.需要Locale来执行其任务的操作叫语言环境敏感的 ...

  4. vue中实现国际化--语言切换(转载)

    https://segmentfault.com/a/1190000011800593

  5. iOS - 国际化语言切换

    iOS国际化:如何切换语言   1.国际化就是将标签.提示信息等信息放到资源文件中,随着程序需要的语言提供对应的资源文件.以key/value对存储,每个资源的key值不变,value随着需求改变. ...

  6. Vue-i18n实现语言切换

    方法1 Vue — i18n 国际化 全局配置 安 装 1.直接引入js文件 <script src="https://unpkg.com/vue/dist/vue.js"& ...

  7. Element + Vue I18n动态import加载国际化语言包翻译文件

    需求 项目为多页应用,包含产品a.b.c.d.e,每个产品都有自己的翻译文件.一次加载所有翻译文件是极度不合理的.于是考虑动态加载. 实现 参考官方文档:延迟加载翻译 项目结构 │ ├── dist ...

  8. vue-i18n vue-cli项目中实现国际化 多语言切换功能 一

    vue-cli项目中引入vue-i18n 安装: npm install vue-i18n可参考vue-i18n官网文档 main.js中引入: import Vue from 'vue' impor ...

  9. iOS 语言切换、本地化,国际化

    什么是本地化处理? 本地化处理就是我们的应用程序有可能发布到世界的很多国家去,因为每个国家应用的语言是不一样的,所以我们要把我们的应用程序的语言要进行本地化处理一下. 本地化处理需要处理那些文件? ( ...

随机推荐

  1. useful tools for programmer programming

    useful tools for programmer programming devtools repl & playground https://repl.it/@xgqfrms/ htt ...

  2. uniapp 万年历

    大量代码来至这里 <template> <view class="calendar-main"> <!-- 当前年月 --> <view ...

  3. NGK算力持有好处多多!SPC、VAST等免费拿!

    众所周知,NGK是分布式存储的,作为Web3.0以及数字经济时代的基础设施,为数字加密市场带来了全新的商业模式和经济业态,但是,这只是一个重要的起点,真正的价值还在后面! 为了满足NGK生态建设者强烈 ...

  4. 苏黎世财经对话区块链专家,NGK如何利用时间价值实现自身的垂直扩张?

    近日,苏黎世财经日报联合法兰西金融等多家知名媒体,专访了NGK. 苏黎世财经日报专栏记者玛科尔德表示,随着NGK DeFi的明星代币BGV登上去中心化金融的舞台,它千倍的收益率让生态投资者趋之若鹜. ...

  5. WPF权限控制——【3】数据库、自定义弹窗、表单验证

    你相信"物竞天择,适者生存"这样的学说吗?但是我们今天却在提倡"尊老爱幼,救死扶伤",帮助并救护弱势群体:第二次世界大战期间,希特勒认为自己是优等民族,劣势民族 ...

  6. 全球首发—鸿蒙开源平台OpenGL

    目录: 前言 背景 鸿蒙OpenGL-ISRC的结构 OpenGL-ISRC和鸿蒙SDK OpenGL的区别 OpenGL-ISRC的使用 前言 基于安卓平台的OpenGL(androidxref.c ...

  7. [转]Linux 线程实现机制分析 Linux 线程实现机制分析 Linux 线程模型的比较:LinuxThreads 和 NPTL

    转载地址:https://www.cnblogs.com/MYSQLZOUQI/p/4233630.html 自从多线程编程的概念出现在 Linux 中以来,Linux 多线应用的发展总是与两个问题脱 ...

  8. 使用OkHttp和OkHttpGo获取OneNET云平台数据

    图1是OneNET官网关于NB-IoT文档关于批量查询设备最新数据的介绍,可以看到GET方法的URL地址和两个头部信息(图2是Htto请求消息结构).所以在写url时,还要添加两行头部字段名,不然获取 ...

  9. 微信小程序引入ECharts组件

    首先打开ECharts网页 https://echarts.apache.org/zh/tutorial.html#%E5%9C%A8%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8 ...

  10. 6. vue组件详解(一)

    主要内容: 1. 组件的基本使用 2. 全局组件和局部组件 3. 父组件和子组件 4. 组件语法糖的写法 5. 组件data关联的写法 6. 父子组件的通信 组件系统是 Vue 的一个重要概念,因为它 ...