Vue3中,国际化插件vue-i18n使用记录,配合VSCode自动化翻译插件i18n Ally

这篇具有很好参考价值的文章主要介绍了Vue3中,国际化插件vue-i18n使用记录,配合VSCode自动化翻译插件i18n Ally。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


说明文档: vue-i18n

版本说明:

vue: 3.0.0+

vue-i18n: 9.x版

安装

npm install vue-i18n@9
// 或者
yarn add vue-i18n@9

创建实例

  1. src 目录下新建目录 lang,存放i18n的配置。

    新建目录名称:lang(语言)、locales(语系设定)、i18n,这些名称都可被VSCode图标插件(vscode-icons)检测到并美化。

  2. lang目录下,新建index.js文件,引入vue-i18n

  3. 语言的配置信息放在另外的文件中。

    例如,设置英文中文两种语言类型:新建存放中文配置的文件zh.json和存放英文的文件en.json; 然后在index.js中引入。
    vue国际化插件,vue.js,前端,javascript

vue-i18n使用createI18n创建实例,下面代码新建了一个i18n实例:

文件位置:src/lang/index.js

import { createI18n } from "vue-i18n";
import EN from "./en";
import ZH from "./zh";

const messages = {
  zh: {
    ...ZH,
  },
  en: {
    ...EN,
  },
};

const i18n = createI18n({
  locale: "zh", // 设置当前语言类型
  legacy: false, // 如果要支持compositionAPI,此项必须设置为false;
  globalInjection: true, // 全局注册$t方法
  messages,
});

export default i18n;

语言配置文件

// zh.json
{
  "hello": "你好"
}


// en.json
{
  "hello": "hello"
}

全局注册

i18n实例在项目中使用前,需要在入口文件中注册一下。

进入main.js文件,引入并注册i18n

import { createApp } from 'vue'

import App from './App.vue'
import i18n from './lang'

const app = createApp(App)

app.use(i18n)

app.mount('#app')

使用

模板中使用

template模板中使用,这个比较简单,直接使用全局方法$t

<template>
  {{ $t('hello') }}
</template>

页面中正常显示:你好

切换英文:src/lang/index.js

const i18n = createI18n({
  locale: "en", // 设置当前语言类型
  legacy: false, // 如果要支持compositionAPI,此项必须设置为false;
  globalInjection: true, // 全局注册$t方法
  messages,
});

页面中正常显示:hello

JS中使用

<template>
  {{ $t('hello') }}
</template>
<script>
import { getCurrentInstance } from "vue";
import i18n from '@/lang'; // 引入i8n实例
import { useI18n } from 'vue-i18n';
export default {
  setup() {
    // 第一种方法:获取i18n实例对象 t 的方法1
    const { proxy } = getCurrentInstance();
    const t1 = proxy.$t('hello');
    console.log(t1);

    // 第二种方法:获取i18n实例对象 t 的方法1
    const t2 = i18n.global.t('hello');
    console.log(t2);


    // 第三种方法:获取i18n实例对象 t 的方法3
    const { t } = useI18n() // 解构出t方法
    const t3 = t('hello');
    console.log(t3);
    return {};
  },
  mounted() {
    // 第四种方法:获取i18n实例对象 t 的方法4
    const t4 = this.$t('hello');
    console.log(t4);
  },
};
</script>

语言切换

效果

vue国际化插件,vue.js,前端,javascript

代码

<template>
  <label for="lang-select">Change language:</label>
  <select name="lang" id="lang-select" @change="changeLang">
    <option value="en">English</option>
    <option value="zh" selected>简体中文</option>
  </select>
  <table border="1" cellspacing="0" cellpadding="0">
    <tr>
      <td>模板中使用</td>
      <td> {{ $t('hello') }}</td>
    </tr>
    <tr>
      <td>JS中响应式切换语言</td>
      <td> {{ hel }}</td>
    </tr>
    <tr>
      <td>当前语言类型</td>
      <td> {{ currentLang }}</td>
    </tr>
  </table>
</template>
<script setup>
import { computed } from 'vue'
import { useI18n } from 'vue-i18n'
const { locale, t } = useI18n();
const changeLang = parameter => {
  const lang = parameter.target.value;
  locale.value = lang; // 切换语言
  localStorage.setItem('LANG', lang); // 本地存储当前语言类型
}
// 获取当前语言类型
const currentLang = computed(() => locale.value);
// JS中响应式切换中英文(写入computed中即可)
const hel = computed(() => t('hello'));
</script>
<style scoped>
table {
  margin-top: 50px;
}

table tr td {
  padding: 2px 5px;
}
</style>

VSCode插件i18n Ally

说明文档:i18n ally

VSCode中安装i18n Ally插件

vue国际化插件,vue.js,前端,javascript

启用 i18n Ally

前提是项目中需要安装 vue-i18n 插件!

配置说明

这里有两种方式

  1. 在VSCode设置文件中设置
  2. 在项目文件中设置(推荐)

在项目文件中设置:

项目根目录中找到.vscode文件夹,添加settings.json

或者自动生成:

使用记录中,完成创建实例步骤后,需要重启VSCode,

又下角弹出如下提示:自动检测到翻译文件夹 “src/lang”

会在项目根目录.vscode目录下,自动新建文件settings.json

需手动配置:

文件位置:.vscode/settings.json

基本配置说明:说明文档

{
  "i18n-ally.localesPaths": ["src/lang"], // 翻译文件路径 (自动生成) 相对于项目根目录的语言环境目录路径
  // 如下须要手动配置
  "i18n-ally.keystyle": "nested", // 翻译路径格式 (翻译后变量格式 nested:嵌套式  flat:扁平式)
  "i18n-ally.sortKeys": true,
  "i18n-ally.namespace": true,
  "i18n-ally.enabledParsers": ["json"], // 翻译文件可允许的格式,默认json
  "i18n-ally.sourceLanguage": "zh", // 翻译源语言 (源文件) 根据此语言文件翻译其他语言文件的变量和内容
  "i18n-ally.displayLanguage": "zh", // 显示语言 (显示文件/翻译文件)
  "i18n-ally.translate.engines": ["deepl", "google"], // 翻译器
  "i18n-ally.extract.keygenStyle": "camelCase", // 翻译字段命名样式采用驼峰
  "i18n-ally.enabledFrameworks": ["vue"],
}

配置好后,若未生效,可尝试右下角的修改源语言

显示语言(i18n-ally.displayLanguage)不要写死,否则显示语言固定,修改显示语言不生效

vue国际化插件,vue.js,前端,javascript


翻译文件可允许的格式(i18n-ally.enabledParsers),填写 JSONYAML 格式,功能全面。前面创建的两个语言配置文件zh.jsonen.json,所以这里填写["json"]

支持的语言环境格式

Format(格式) Read(读) Write(写) Annotations(附注) Note(注意)
JSON
YAML 评论将不被保留
JSON5 评论将不被保留
INI 评论将不被保留
properties 评论将不被保留
POT
JavaScript 只读
TypeScript 只读
PHP 只读

插件的翻译器挂VPN才能使用

效果

配置完成之后,展示效果如下:

EN hello 之后的图标,依次为:

  • 打开审阅:对文案进行批注
  • 翻译文案:在配置中设置的翻译源语言"i18n-ally.sourceLanguage": "zh")是中文,所以对其他语种有翻译功能
  • 编辑文案:对该文案进行快捷编辑
  • 转到定义:跳转到原文件

vue国际化插件,vue.js,前端,javascript

使用说明

打开一个有文字内容的vue文件

打开 i18n Ally 的控制面板

快捷提取文案(两种操作方式)

提取到的文案会写入到显示语言设置的对应翻译文件中:"i18n-ally.displayLanguage": "zh"

  • 展开Hard-coded strings [beta]这一项,可单个提取文案(可以自定义key值)

vue国际化插件,vue.js,前端,javascript

  • 右击Hard-coded strings [beta]这一项,选择提取所有,采用默认key值。

    汉语使用拼音拼接,可在设置中将翻译字段命名样式采用驼峰:i18n-ally.extract.keygenStyle": "camelCase"

    vue国际化插件,vue.js,前端,javascript

提取单个文案

无注意点。

提取所有文案

可以看到,template模板中的文案都已被成功替换,但js语法中的替换还是vue2中的语法。

vue国际化插件,vue.js,前端,javascript

可以选择单个替换,选择对应的替换代码。也可以提取后更改所有匹配项this.$t

vue国际化插件,vue.js,前端,javascript

zh.json中已被成功写入:

{
  "hello": "你好",
  "haHaHa": "哈哈哈",
  "dangQianYuYanLeiXing": "当前语言类型",
  "jsZhongXiangYingShiQieHuanYuYan": "JS中响应式切换语言",
  "moBanZhongShiYong": "模板中使用",
  "jianTiZhongWen": "简体中文",
  "english": "English",
  "changeLanguage": "Change language:"
}

翻译缺失文案

还有一个是翻译缺失文案的功能,翻译之后可直接将文案添加到对应文件,需要挂VPN才能使用,手动编辑也可以。

翻译依据为 "i18n-ally.sourceLanguage": "zh" 设置的翻译源语言

vue国际化插件,vue.js,前端,javascript

Magic VPN - 最好的免费代理工具

Edge浏览器下载插件,再下载客户端,即可挂VPN

操作示例

如下,开启VPN后,点击缺失文案,即可依据zh.json文件中的JSON字段,将翻译后的文案,自动写入en.json文件中。

若开启VPN后翻译失败,显示日志打印:

ERROR: Error: connect ECONNREFUSED 127.0.0.1:xxxxx

这是因为使用VSCode打开此项目后才开启VPN的原因,重启VSCode即可。

vue国际化插件,vue.js,前端,javascript

翻译结果如下:

{
  "hello": "hello",
  "changeLanguage": "Change language:",
  "dangQianYuYanLeiXing": "current language type",
  "english": "English",
  "haHaHa": "Hahaha",
  "jianTiZhongWen": "Simplified Chinese",
  "jsZhongXiangYingShiQieHuanYuYan": "Responsive switching language in JS",
  "moBanZhongShiYong": "used in the template"
}

如此,这款插件便大大节省了工作量!文章来源地址https://www.toymoban.com/news/detail-653863.html

到了这里,关于Vue3中,国际化插件vue-i18n使用记录,配合VSCode自动化翻译插件i18n Ally的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uniapp国际化npm install vue-i18n报错

    在vue2环境下,默认安装 npm install vue-i18n 的版本是 vue-i18n@9.1.9,所以报错。 用以上命令查看版本:  vue2建议5.0版本  

    2024年02月12日
    浏览(34)
  • vue-i18n国际化多语言与多套UI组件库使用(Element Plus、Ant Design Vue、Naive UI)

    demo源码:Vue3 UI Lang 因调研需要,需在同一个项目中集成好几种UI组件库的多语言实现,查看各种组件库的表现情况,以便选定组件库。 注意:这只在调研过程中会如此,实际开发项目中极少存在一个项目中集成多个UI组件库的情况。 本demo实际试验阿拉伯语、法语、葡萄牙语

    2024年02月08日
    浏览(40)
  • 如何在Vue3中配置国际化语言i18n

    1. 安装 vue-i18n 2. 创建一个i8n的配置文件 如:i18nConfig.js 3. 新建语言文件 zh-CN.js 和 en-US.js zh-CN.js 文件 en-US.js 文件 CONFIG.js 文件 4. 在 main.js 里面全局配置 通过上面四步即可配置完毕 下面说一下如何使用,分三种情况 在 .vue 组件中的 template 使用 在 .vue 组件中的 script 中使用 在

    2024年02月09日
    浏览(46)
  • Vue - i18n 国际化的使用

    参考网址: 使用: https://huaweicloud.csdn.net/638f133edacf622b8df8eb26.html?spm=1001.2101.3001.6650.1utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Eactivity-1-125181861-blog-123845480.235%5Ev38%5Epc_relevant_anti_t3_basedepth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Ea

    2024年02月11日
    浏览(47)
  • 用i18n 实现vue2+element UI的国际化多语言切换详细步骤及代码

    这个地方要注意自己的vue版本和i1n8的匹配程度,如果是vue2点几,记得安装i18n的@8版本,不然会自动安装的最新版本,后面会报错哦,查询了下资料,好像最新版本是适配的vue3。 在src下面新建i18n文件夹,然后在里面新建index.js,里面的内容如下 新建i18n文件夹里面新建config文

    2024年02月14日
    浏览(38)
  • 使用uniapp开发国际化---app,vue,nvue

    hello-i18n 示例工程 - DCloud 插件市场  en.json----\\\"自定义key\\\":\\\"英文\\\"  zh-Hans.json----\\\"自定义key\\\":\\\"中文\\\"      注意:json文件中的名称需要中英文对应。 index.js vue页面模板使用---- $t(\\\'\\\') nvue页面模板使用---- t(\\\'\\\') pages.json 使用 ---- %index.title% data中使用--- this.$t(\\\'\\\') 启动项目,就可以成功切

    2024年02月06日
    浏览(32)
  • 解决Vue+Element UI使用表单rules国际化时From表单验证信息不能实时更新

    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 博主在工作之余开始进行自动化测试平台的开发,虽然已经996一个月了但是还是在使劲挤时间做这件事情,目前平台使用前端框架 vue-element-admin 进行简化后二次开发,目前保留了原框架中的国际化

    2024年02月13日
    浏览(36)
  • vue 前端 + 若依(ruoyi)后端 实现国际化

    记录一下,前端使用vue,后端使用若依(ruoyi,基于spring-boot)实现页面,后端返回提示信息国际化 vue:2.6.12 vue-i18n:^8.27.2 安装vue-i18n,注:最新的交于该版本有差异,所以指定使用版本:8.27.2 添加国际化js文件:language.en_US.js 添加国际化js文件:language.zh_CN.js 添加i18n.js ma

    2024年02月12日
    浏览(40)
  • SpringBoot+Vue前后端分离项目国际化支持

    i18n.js文件 language.en_US.js文件 language.zh_CN.js文件 messages_en_US.properties文件 messages_zh_CN.properties文件

    2024年02月04日
    浏览(40)
  • React18.x + i18next + antd 国际化正确使用姿势及避坑指南

    如果你使用这个教程还不能够解决你的问题的话,直接私信我,免费一对一给你解决。 具体的创建方法大家参考vite官方文档,大概的操作如下,如果需要更详细的,大家去自行搜索即可 因为我这里使用的是ts版本,所以,你自己看着办吧。 其中 i18next-browser-languagedetector i1

    2024年02月05日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包