前端I18n的使用

1.安装依赖

pnpm install vue-i18n

2.创建国际化配置文件

        在 src 目录下创建一个 locales 文件夹,并在其中创建不同语言的翻译文件,例如 en.jsonzh.json

{
  "demo": {
    "hello": "hello"
  }
}
{
  "demo": {
    "hello": "你好"
  }
}

3.配置 Vue I18n

        在 src 目录下创建一个plugins文件夹,并在其中创建 i18n.ts 文件,并在其中配置 Vue I18n。

import { createI18n } from 'vue-i18n'

// 导入翻译文件
import en from '@/locales/en.json'
import zh from '@/locales/zh.json'

// 创建 Vue I18n 实例
const i18n = createI18n({
  legacy: false, // 使用 composition 模式
  locale: 'zh', // 设置默认语言
  fallbackLocale: 'en', // 设置回退语言
  globalInjection: true, // 允许全局注入
  messages: {
    en,
    zh
  }
})

export default i18n

4.在主文件中引入 Vue I18n

// main.ts

import { createApp } from 'vue'
import App from './App.vue'
import i18n from '@/plugins/i18n'

const app = createApp(App)

app.use(i18n)

app.mount('#app')

5.使用i18n-ally插件

①下载插件i18n-ally

②配置.vscode -> settings.json

{
  "i18n-ally.localesPaths": ["src/locales"],
  "i18n-ally.displayLanguage": "zh",
  "i18n-ally.namespace": true,
  "i18n-ally.pathMatcher": "{locale}.json",
  "i18n-ally.keystyle": "nested",
  "i18n-ally.sourceLanguage": "zh" //locale对应国际化语言
}

6.在组件中使用 Vue I18n

<template>
  <div>
    <p>你好</p>
    <button @click="changeLanguage('en')">英文</button>
    <button @click="changeLanguage('zh')">中文</button>
  </div>
</template>

<script lang="ts" setup>
import { useI18n } from "vue-i18n";

const { locale } = useI18n();

const changeLanguage = (lang: string) => {
  locale.value = lang;
};
</script>

点击新路径

中文配置完成,可以在框选处编辑英文部分,或者在en.jsonzh.json 编辑改写

### 前端国际化(i18n)的实现方法或解决方案 前端国际化的实现通常涉及多个方面,包括资源文件管理、动态切换语言以及框架集成等。以下是几种常见的实现方式及其具体操作: #### 1. 使用 Vue-i18n 插件 Vue-i18n 是专门为 Vue.js 提供的一个插件,用于支持多语言环境下的应用开发。其核心思想是通过定义不同语言的键值对来实现页面内容的语言切换。 在 `main.ts` 或 `main.js` 中引入并初始化 i18n 对象: ```javascript import i18n from '@/i18n/index'; app.use(i18n); app.config.globalProperties.$t = i18n.global.t; ``` 此部分代码的作用是在全局范围内注册 `$t` 方法,以便组件内部可以直接调用该方法获取对应的翻译字符串[^1]。 对于更复杂的场景,还可以结合 Element UI 的国际化功能一起使用: ```javascript Vue.use(Element, { i18n: (key, value) => i18n.t(key, value), }); window.vm = new Vue({ el: '#app', i18n, router, store, render: (h) => h(App), }); ``` 这段代码展示了如何将 Vue-i18n 集成到基于 Vue 和 Element UI 构建的应用程序中[^2]。 --- #### 2. JEECG 方案中的 Cookie 存储与动态加载机制 另一种较为传统的做法是以 JEECG 平台为例,利用浏览器 Cookies 来保存用户的语言偏好,并根据这些设置自动调整显示的内容。 下面是一个简单的例子说明如何初始化 i18n 配置: ```javascript function initI18nConfig() { var i18n_browser_Lang = getCookie("i18n_browser_Lang"); if (i18n_browser_Lang === 'zh-cn') { i18n_browser_Lang = 'zh'; } $.i18n.properties({ name: 'jeecgs', // 属性文件名命名格式: 文件名_国家代号.properties path: 'plug-in/i18n/', mode: 'map', language: i18n_browser_Lang, callback: function () {} }); } ``` 这种方法的优势在于它能够很好地兼容旧版系统架构,同时也允许开发者灵活定制自己的逻辑处理流程[^3]。 --- #### 3. HTML 数据属性配合 jQuery 插件 除了依赖特定框架外,也可以单纯依靠原生 DOM 结合第三方库完成基本的功能需求。例如借助 **jQuery.i18n.properties** 这样的工具包可以轻松达成目标。 首先,在 HTML 元素上添加自定义的数据标签作为占位符标记: ```html <h1 data-i18n="welcome.title"></h1> <p data-i18n="greeting.message"></p> ``` 接着编写 JavaScript 脚本来解析上述节点并将对应的文字替换进去: ```javascript $.i18n.properties({ name: 'messages', path: '/locales', mode: 'both', language: navigator.language.split('-')[0], callback: function () { $('[data-i18n]').each(function () { const key = $(this).attr('data-i18n'); $(this).text($.i18n.prop(key)); }); }, }); ``` 这种方式特别适合那些不希望增加额外负担的小型项目或者微服务模块[^4]。 --- #### 总结 以上介绍了三种主流的技术路线分别适用于不同的业务背景和技术栈选择情况之下。无论是现代化 SPA 应用还是传统 Web 页面都可以找到合适的切入点去实施相应的策略从而满足日益增长的全球化市场需求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值