【vue-i18n】国际化语言翻译技巧

前言

现在把实在过的进行讲述下

官方网站

安装

npm安装方式:

npm install vue-i18n

yarn安装

yarn add vue-i18n

vue3 脚手架安装:

vue add i18n

使用

第一步:引入vue-i18n依赖

找到main.js入口文件,按照下面代码来

import Vue from 'vue'
// 1、引入 vue-i18n
import VueI18n from 'vue-i18n'
// 2、安装到vue中
Vue.use(VueI18n)
// 3、实例化一个
const i18n = new VueI18n({
  locale: 'en', // 设置语言环境
  messages: {
    en: { hello: 'hi there!' },
    ja: { hello: 'こんにちは!' }
  }
})

new Vue({
  el: '#app',
  router,
  store,
  i18n, // 4、挂载到vue实例上,为了可以切换好弄。
  components: { App },
  template: '<App/>'
})

第二步:渲染页面

渲染到页面中,看看是否渲染成功

<template>
 	<div>
		{{$t('hello')}}
		<button @click="btn">切换翻译</button>
	</div>
</template>

<script>
export default {
  name: '',
  created(){
    
  },
  methods: {
    btn() {
    	this._i18n.locale = this._i18n.locale =='en' ? 'ja': 'en';
    }
  }
}
</script>

<style lang="less"></style>

开始

此处接上面的?栗子进行往下面来,下面内容省略了不必要的代码。这里会将一些可以使用的方式展示出来

方式一: v-html或者v-text 进行输出

不推荐使用 v-html 。应为:只要你们放了javascript标签字符串,就会运行代码,那么随便攻击咯,所以最好不要用v-html

可以通过 v-html或者v-text 进行输出:

<!-- 此处会打印出来 -->
<div v-html="$t('hello')"></div>
<hr>
<div v-text="$t('hello')"></div>

方式二:拼接字符串(对象方式)

进行拼接字符串,官方叫做 “具名格式”。如果翻译文字与其他文字进行拼接在一块的话,可以使用这个

<!-- 一般情况下我们都这莫干进行拼接,可以看出下面是前面是不变的,后面拼接是可变的,如果更为复杂拼接了是不是很累,官方给出来一种方案 -->
<div>{{$t('hello') + '世界' + $t('hello') + '--老程'}}</div>

下面是官方给的一种跟传参一样爽的方案。

1、先将翻译文本地方使用{},找到拼接位置通过变量占位子

在main.js中进行修改需要拼接位置,然后通过变量占位下,如下代码:

const i18n = new VueI18n({
  locale: 'en', // 设置语言环境
  messages: {
    en: { 
      // 1、在语言设置上面,进行关键位置用变量占位子,每个语言也得弄上哦,比如change
      hello: 'hi there! {change}' 
    },
    ja: { 
      hello: 'こんにちは! {change}'
    }
  }
})

2、在页面中,变量值为你需要变的值

<!-- 2.给个参数,如果有多个参数,可以往里面写 -->
<div>{{$t('hello', {change:'11111111111'})}}</div>
<!-- 打印值:hi there!11111111111 -->

方式三:拼接字符串(数组方式)

1、和上面一样,先从翻译里面进行占位子

在 main.js 中,将数组索引下标作为占位的地方,

const i18n = new VueI18n({
  locale: 'en', // 设置语言环境
  messages: {
    en: { 
      // 1、在语言设置上面,进行关键位置用索引下标占位子,每个语言也得弄上哦,比如
      hello: 'hi there! {0}' 
    },
    ja: { 
      hello: 'こんにちは! {0}'
    }
  }
})

2、页面中展示

<!-- 2.在第二个参数上,进行给个数组 -->
<div>{{$t('hello',['6666666'])}}</div>
<!-- 3.根据上面说对象也是通过 {0} 这杨吧,那么下面可以使用对象写法 -->
<div>{{$t('hello',{'0':'6666666'})}}</div>
<!-- 两个都是打印输出:hi there! 6666666 -->

友情提示:其他的你可能在官方网站上看到,这里就不一一展示,现在已经是晚上十点多,还得学习其他的,抱歉不能一一讲解

本人大概看了下其他都很简单,自己过一边,认真对待你也能看懂文档。下面是我个人实战

实战

全局

不管支持多少种语言,请分开引入,,打包后会将其打包进入

  1. 这杨可以快速查找。
  2. 全局使用

第一步:

在main.js中,将每个翻译的脚本引入进来

const i18n = new VueI18n({
    locale: 'english',// 默认选中的
    messages: {
      'chinese': require('./assets/lang/zh'),   // 中文语言包
      'english': require('./assets/lang/en'),    // 英文语言包
      'arabic':require('./assets/lang/ar'), // 阿拉伯语
    }
})

第二步:下面是翻译好的格式,请按这个来,变量名统一好

// 中文翻译
export const m = {
	"tab_home_text": "首页",
}
// 英文翻译
export const m = {
	"tab_home_text": "Home",
}
// 阿拉伯翻译
export const m = {
	"tab_home_text": "الصفحة الرئيسية",
}

第三步:页面中使用

<div>{{$t('m.tab_home_text')}} </div>
<!-- 或者 -->
<div v-t="'m.tab_home_text'"></div>

局部

场景在于活动页面等。不常用网页或者就访问一个页面,如:嵌入安卓或ios应用内活动页面,只进入翻译只要部分即可,那么就可以使用到这个。说白了,就是当你访问当前url的时候,设置当前页面翻译,官方手册未说明白,但是例子中有。

<template>
    <div >
    	<div>
			{{$t('activity.k')}}
		</div>
    </div>
</template>

<script>
    export default {
    	name:'activity',
        data(){
            return {
            }
        },
        created(){
        	this.$nextTick(()=>{
				this.$i18n.mergeLocaleMessage("en",{
					activity:{k:'英文翻译'}
				})
				this.$i18n.mergeLocaleMessage("ja",{
					activity:{k:'日本翻译' }}
				})
            }
			}
        	
        },
        methods:{
        }
    }
</script>

<style lang="less" scoped>
</style>

其他配置项自己百度吧,该下班了

### Vue 3 使用 vue-i18n 进行国际化 #### 配置 `vue-i18n` 为了使 Vue 3 项目支持国际化功能,需安装并配置 `vue-i18n` 插件。首先,在项目的根目录下执行命令来安装依赖包: ```bash npm install vue-i18n@next --save ``` 接着,在入口文件(通常是 main.js 或 app.vue)中初始化插件实例,并将其挂载到应用上。 对于 Vue 3 来说,推荐采用组合式 API 的方式使用 `vue-i18n`,这意味着应当将 `legacy` 属性设为 `false`[^3]。下面是一个完整的配置例子: ```javascript // 引入必要的模块 import { createApp } from 'vue'; import App from './App.vue'; // 创建 i18n 实例时指定 legacy 参数为 false 并加载语言资源文件 const i18n = createI18n({ locale: 'zh-hans', // 设置默认的语言环境为中国大陆简体中文 fallbackLocale: 'en', // 当找不到对应翻译条目时使用的备用语言环境 legacy: false, globalInjection: true, // 启用全局注入 $t 方法以便于模板内调用 messages: { 'zh-hans': require('./locales/zh-CN.json'), // 加载本地化的字符串映射表 en: require('./locales/en-US.json') } }); // 将 i18n 注册至应用程序实例 createApp(App).use(i18n).mount('#app'); ``` 上述代码片段展示了如何创建一个基于 JSON 文件的消息集合用于存储不同语言版本的文字内容;同时也指定了当缺少特定语言项时应返回哪种替代方案作为回退机制的一部分。 #### 组件内的使用 一旦完成了基本设置之后就可以在组件内部轻松地切换显示不同的文字了。这里给出两种常见的场景——选项式API 和组合式API 下的具体做法: ##### 选项式API (Options API) 如果偏好传统的写法,则可以在 SFC(Single File Component) 中像这样定义数据属性或计算属性来进行文本替换操作: ```html <template> <div>{{ t('greeting') }}</div> <!-- 输出问候语 --> </template> <script> export default { computed: { t() { return this.$t; }, }, }; </script> ``` ##### 组合式API (Composition API) 而更现代的方式则是利用 Composition API 提供的功能完成相同的目标。这通常涉及到导入辅助函数如 `useI18n()` : ```typescript <script setup lang="ts"> import { useI18n } from 'vue-i18n'; const { t } = useI18n(); console.log(t('greeting')); // 控制台打印出当前选定语言下的欢迎词句 </script> ``` 以上就是关于怎样在一个全新的 Vue 3 应用程序里集成国际化的全部过程介绍。值得注意的是,随着框架本身不断迭代更新以及社区贡献者的努力,实际开发过程中可能会遇到更多实用技巧或是最佳实践建议,请务必关注官方文档获取最新资讯[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值