让你的网页变的高大上:国际化Vue-i18n

Vue国际化:Vue-i18n

一、Vue-i18n 是什么?

Vue-i18n 是专门为 Vue.js 设计的国际化插件

主要作用是帮助开发者轻松管理应用中的多语言文本内容

使应用能够根据用户的语言偏好进行动态切换显示。

二、安装与初始化

安装 Vue-i18n ,可以通过 npm 或 yarn 等包管理工具进行安装。

复制代码
npm install vue-i18n

在 Vue 项目中,在入口文件中引入 Vue-i18n 并进行简单的初始化配置。

例如:

javascript 复制代码
import Vue from 'vue';
import VueI18n from 'vue-i18n';

Vue.use(VueI18n);

const i18n = new VueI18n({
  fallbackLocale: 'zh-CN', // 预设的语言环境
  locale: 'zh-CN', // 语言环境
  legacy: false, //如果要支持compositionAPI,此项必须设置为false;
  globalInjection: true, // 全局注册$t方法
  messages: {
    'en-US': {
      '你好': 'Hello',
      '欢迎': 'Welcome to our app.'
    },
    'zh-CN': {
      '你好': '你好',
      '欢迎': '欢迎'
    },
	'zh-TW': {
      '你好': '妳好',
      '欢迎': '歡迎'
    }
  }
});

new Vue({
  i18n,
  //...其他配置
});
其他配置项:
dateTimeFormats

🆕 7.0+ 新增

  • 类型: DateTimeFormats

  • 默认值: {}

本地化的日期时间格式。

numberFormats

🆕 7.0+ 新增

  • 类型: NumberFormats

  • 默认值: {}

本地化的数字格式。

availableLocales

🆕 8.9.0+ 新增

  • 类型: Locale[]

  • 默认值: []

  • 示例: ["en", "ja"]

以词法顺序排列的 messages 中的可用语言环境列表。

ormatter
  • 类型: Formatter

  • 默认值: Built in formatter

使用 Formatter 接口实现的格式化。

missing
  • 类型: MissingHandler

  • 默认值: null

缺少本地化时的处理函数。该处理函数在被调用时会使用本地化目标语言环境,本地化路径关键字和 Vue 实例。

如果设置了该函数,则本地化信息未定义时不会产生警告。

fallbackRoot
  • 类型: Boolean

  • 默认值: true

在组件本地化中,当本地化失败时是否回退到根级别 (全局) 本地化。

如果为 false,则会发出警告,并返回 key。

fallbackRootWithEmptyString

🆕 8.26+ 新增

  • Type: Boolean

  • Default: true

在组件本地化中,当本地化文本为空字符串时,是否回退到根级别 (全局) 本地化。

请注意,vue-i18n 9.x版本的默认行为是对空字符串本地化文本进行回退到根级别本地化。

如果为false,则空的本地化文本将不会回退到根目录,并将保留为空字符串。

sync
  • 类型: Boolean

  • 默认值: true

是否将根级别语言环境与组件本地化语言环境同步。

如果为 false,则无论根级别语言环境如何,都要为每个组件语言环境进行本地化。

silentTranslationWarn

6.1+ 新增

  • 类型: Boolean

  • 默认值: false

是否取消本地化失败时输出的警告。

如果为 true,则禁止本地化失败警告。

silentFallbackWarn

🆕 8.8 新增

  • 类型: Boolean

  • 默认值: false

是否在回退到 fallbackLocaleroot 时取消警告。

如果为 true,则仅在根本没有可用的转换时生成警告,而不是在回退时。

formatter
  • 类型: Formatter

  • 可读/可写

使用 Formatter 接口实现的格式化

方法
getChoiceIndex
  • 参数:

    • {number} choice

    • {number} choicesLength

  • 返回值: finalChoice {number}

根据当前的数字和一组给定的选项,获取其复数索引,可以通过原型变更覆盖:

ini 复制代码
VueI18n.prototype.getChoiceIndex = /* 自定义实现 */
getLocaleMessage( locale )
  • 参数:

    • {Locale} locale
  • 返回值: LocaleMessageObject

获取语言环境的 locale 信息。

setLocaleMessage( locale, message )
  • 参数:

    • {Locale} locale

    • {LocaleMessageObject} message

设置语言环境的 locale 信息。

t( key, [locale], [values] )
  • 参数:

    • {Path} key:必填

    • {Locale} locale:可选

    • {Array | Object} values:可选

  • 返回值:TranslateResult

这与 $t 方法返回的 Function 相同

三、语言资源管理

Vue-i18n 允许开发者以结构化的方式管理语言资源。

通常语言资源以 JSON 文件的形式存储,每个文件对应一种语言。

这样的设计使得添加新语言或修改现有语言的文本内容变得非常容易。

例如:

bash 复制代码
/locales/
  en-US.json
  zh-CN.json
  zh-TW.json

四、在组件中使用

在 Vue 组件中,可以通过 $t 方法来访问特定语言的文本内容。

例如:

bash 复制代码
<template>
  <div>
    <p>{{ $t('你好') }}</p>
    <p>{{ $t('欢迎') }}</p>
  </div>
</template>

五、动态切换语言

Vue-i18n 支持动态切换语言,可以在应用中提供一个语言切换的选项,当用户选择不同的语言时,应用可以实时更新显示的文本内容。

例如:

ini 复制代码
methods: {
  changeLanguage(lang) {
    this.$i18n.locale = lang;
  }
}

六、指令

v-t

  • 预期: string | Object

  • 修饰符:

    • .preserve:(8.7.0 新增) 当指令解除绑定时,保留元素 textContent
  • 详细:

更新使用语言环境信息进行本地化的元素 textContent。你可以使用字符串语法或对象语法。字符串语法可以指定为语言环境信息的关键字路径。如果可以使用对象语法,则需要将以下参数指定为对象键:

  • path:必填,语言环境信息的关键字

  • locale:可选,语言环境

  • args:可选,用于列表或命名格式

注意

v-t 指令解除绑定时,默认情况下将清除元素 textContent。在过渡动画内部使用的时候,可能出现不合预期的情况。为了在指令解除绑定之后保留 textContent 数据,可使用 .preserve 修饰符或全局的preserveDirectiveContent 选项。

  • 示例:

    xml 复制代码
    <!-- 字符串语法:字面量 -->
    <p v-t="'foo.bar'"></p>
    
    <!-- 字符串语法:通过数据或计算属性绑定 -->
    <p v-t="msg"></p>
    
    <!-- 对象语法: 字面量 -->
    <p v-t="{ path: 'hi', locale: 'ja', args: { name: 'kazupon' } }"></p>
    
    <!-- 对象语法: 通过数据或计算属性绑定 -->
    <p v-t="{ path: greeting, args: { name: fullName } }"></p>
    
    <!-- `preserve` 修饰符 -->
    <p v-t.preserve="'foo.bar'"></p>

七、支持变量

arduino 复制代码
// 在你的语言文件中,例如:en.js
export default {
  message: {
    hello: 'Hello, {name}!'
  }
}
bash 复制代码
<template>
  <p>{{ $t("message.hello", { name: '张三' }) }}</p>
</template>

八、应用场景与优势

Vue-i18n 广泛适用于各种类型的 Vue 应用,无论是企业级的管理系统、电子商务平台还是移动应用。

优势:

  1. 提高用户体验:满足不同语言用户的需求,提供更加友好的界面。
  2. 易于维护:将语言文本与代码分离,使得修改和扩展语言支持变得更加简单。
  3. 灵活性:可以根据不同的场景和用户需求动态切换语言。
相关推荐
zwjapple2 小时前
docker-compose一键部署全栈项目。springboot后端,react前端
前端·spring boot·docker
像风一样自由20204 小时前
HTML与JavaScript:构建动态交互式Web页面的基石
前端·javascript·html
aiprtem5 小时前
基于Flutter的web登录设计
前端·flutter
浪裡遊5 小时前
React Hooks全面解析:从基础到高级的实用指南
开发语言·前端·javascript·react.js·node.js·ecmascript·php
why技术5 小时前
Stack Overflow,轰然倒下!
前端·人工智能·后端
幽络源小助理5 小时前
SpringBoot基于Mysql的商业辅助决策系统设计与实现
java·vue.js·spring boot·后端·mysql·spring
GISer_Jing5 小时前
0704-0706上海,又聚上了
前端·新浪微博
止观止6 小时前
深入探索 pnpm:高效磁盘利用与灵活的包管理解决方案
前端·pnpm·前端工程化·包管理器
whale fall6 小时前
npm install安装的node_modules是什么
前端·npm·node.js
烛阴6 小时前
简单入门Python装饰器
前端·python