Vue3 项目 i18n 国际化落地方案

        背景介绍:

        最近负责管理后台项目有国际化的需求,遂调研了一下,小试牛刀。既然是国际化,那就绕不开 i18n ,下文也将根据 i18n 进行叙述。

今天主要分享一下 Vue3(3.5) 前端部分适配 i18n 流程,目前还没有遇到坑,所以我会持续更新...

  安装

npm install vue-i18n@next

  引用

import { createI18n } from 'vue-i18n'
import i18nOptions from './locales'

const i18n = createI18n(i18nOptions)

app.use(i18n)

 创建实例

  1、src目录下新增 locales 文件夹

  2、新增index.ts文件,如下:

import type { createI18n, I18nOptions } from 'vue-i18n'
import en from './en.json'
import zh from './zh.json'
import zhtw from './zhtw.json'

export interface MessageSchema {
  [key: string]: any
}

const messages: Record<string, MessageSchema> = {
  en,
  zh,
  zhtw,
}

const i18nOptions: I18nOptions = {
  locale: 'zh',
  fallbackLocale: 'zh',
  messages,
}

export default i18nOptions

  3、新增en.json\zh.json文件,如下:

{
  "searchItemList": {
    "企业名称": "Business Name",
    "企业类型": "Business Type",
    "简称": "abbreviation",
    "所在城市": "city",
    "状态": "status"
  },
  "searchButttonList": {
    "query": "search",
    "clear": "clear",
    "add": "add"
  },
  "tableTitleList": {
    "title": "Query Result",
    "noTotal": "No data found",
    "total": "There are a total of {total} pieces of data"
  },
}

  4、使用,如下:

$t(`searchButttonList.${value.event}`)

或

$t('tableTitleList.total', { total: pageData.total }) // 传参

 5、修改App.vue,如下:

<el-config-provider :locale="localei18n">
、、、
</el-config-provider>

import zhCn from 'element-plus/es/locale/lang/zh-cn' // 中文
import enCn from 'element-plus/es/locale/lang/en' // 英文
import { useI18n } from 'vue-i18n';
const { locale } = useI18n();

const localei18n = computed(() =>
  locale.value === 'en' ? enCn : zhCn
)

至此,一个简单高效的vue3国际化实例已经完成,接下来还有很长的路要走。

一更到此,敬请期待...

20250214 美好的情人节,迎来了盛大的二更。。。。

使用中遇到了一个小问题:JSON字符串中包含 竖线 |,这个时候直接取出来是不对的。

    "inputModelText": "快捷录入模版,例如: [左|右|双]即为3项目",
    "inputModelText3": "项(填写数字,默认2项)",
    "inputModelText4": "样式: [ | ]",
    "inputModelText6": "样式: [ ? ]",
    "inputModelText8": " 项(填写数字,默认2项)",
    "inputModelText9": "样式: { & }"

回显的时候,JSON字符串中包含 竖线 | 无法显示。其它正常

各种转译字符也都试了,未生效,最后只能采用 replace 替换了。

有谁遇到过,并转译成功的,还希望分享一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值