javascript object notation 翻译,js 多语言翻译插件

大家好,小编为大家解答javascript object notation 翻译的问题。很多人还不知道js 多语言翻译插件,现在让我们一起来看看吧!

在处理一些项目的过程中经常会遇到需要进行多语言翻译功能,本文旨在记录添加翻译插件流程,vue项目都可以根据此方式进行翻译模块添加
项目前提:vue3 + vite3  组件库采用 antd vue(组件库可根据自己项目需求灵活引用)

本示例中以简体中文、英语、韩语、日语为例,利用store+缓存机制进行全局语种切换

  1. 首先安装翻译插件:npm install vue-i18n --save
  2. 创建文件夹lang(名字自己定义),目录如下

        

index.js文件代码如下(此文件作为翻译插件入口文件):

import { createI18n } from "vue-i18n";
import store from '@/store/index'
import zh_CN from "./zh_CN";
import en_US from "./en_US";
import ja_JP from "./ja_JP";
import ko_KR from "./ko_KR";

const i18n = createI18n({
  locale: "zh_CN", // 定义默认语言为中文
  legacy: false,
  globalInjection: true,
    // 此处则利用store获取项目中当前语言环境
  locale: store.getters['global/CURRENT_LANGUAGE'],
  messages: {
    zh_CN,
    en_US,
    ja_JP,
    ko_KR,
  },
});

export default i18n;

 对应的子文件夹内容则是不同语种的翻译内容:此处就以zh_CN、en_US文件夹展示为准

 zh_CN=>index.js

import menu from './menu.js'

export default {
  ...menu
}

 zh_CN=>menu.js

export default { 
  ['menu_data_statistics']: '数据统计',
  ['menu_data_panel']: '数据面板',
  ['menu_base_data']: '基础资料',
  ['menu_goods_management']: '商品管理',
  ['menu_user_management']: '用户管理',
  ['menu_order_management']: '订单管理',
  ['menu_system_management']: '系统管理',
  ['menu_user_center']: '个人中心',
  ['menu_logout']: '退出登录',
}

 en_US=>menu.js

export default { 
  ['menu_data_statistics']: 'Data statistics',
  ['menu_data_panel']: 'Data panel',
  ['menu_base_data']: 'Basic data',
  ['menu_goods_management']: 'Commodity management',
  ['menu_user_management']: 'User management',
  ['menu_order_management']: 'Order management',
  ['menu_system_management']: 'System management',
  ['menu_user_center']: 'User center',
  ['menu_logout']: 'Logout',
}

 此处之所以在不同语种文件夹中再进行类似menu.js文件这样的分类,是为了处理后期项目翻译内容越来越多时,可以根据不同的内容模块进行分割设置:如商品管理翻译goods.js等

入口文件设置处理完成后,接下来则需要将翻译插件引入到项目中:main.js 

import { createApp } from 'vue'

import 'ant-design-vue/dist/antd.less'
import './styles/index.scss'

import 'element-plus/theme-chalk/dark/css-vars.css'

import App from './App.vue'
import router from '@/router/index'
import store from '@/store/index'
// 引入翻译
import i18n from "./lang/index";
import '@/permission' // permission control

const app = createApp(App)

//注册翻译
app.use(i18n).use(router).use(store).mount('#app')

 项目进行到这一步,翻译功能已经处理完成,接下来就是在指定需要翻译的文件,用对应语法将翻译单词替换掉就可以了;以下以一个下拉菜单为例:

<template>
  <a-layout-header style="height: 64px; background: #2b2f3a">
    <div class="head_main between">
      <div class="left-header"></div>

      <div class="right-header start">
        <div class="header-icons">
          <a-space>
            <a-dropdown>
              <div class="user_info">
                <!-- 语种切换按钮 -->
                <TranslationOutlined />
              </div>
              <template #overlay>
                <a-menu @click="onLanguageMenuClick">
                  <a-menu-item v-for="(l) in languages" :key="l.value">
                    <span :class="l.value === CURRENT_LANGUAGE ? `lan active` : `lan`">{{ l.name }}</span>  
                  </a-menu-item>
                </a-menu>
              </template>
            </a-dropdown>
            
          </a-space>
        </div>

        <a-dropdown>
          <div class="user_info">
            <a-avatar style="background-color: #1890ff">
              <template #icon><UserOutlined /></template>
            </a-avatar>
            <span class="nickname">{{ name }}</span>
          </div>
          <template #overlay>
            <a-menu @click="onDropMenuClick">
              <a-menu-item key="center">
                <user-outlined />
                <!-- 个人中心 -->
                {{ $t('menu_user_center') }}
              </a-menu-item>
              <a-menu-divider />
              <a-menu-item key="logout">
                <logout-outlined />
                <!-- 退出登录 -->
                {{ $t('menu_logout') }}
              </a-menu-item>
            </a-menu>
          </template>
        </a-dropdown>
      </div>
    </div>
  </a-layout-header>
</template>

<>
import { defineComponent, computed, ref } from 'vue'
import { UserOutlined, LogoutOutlined, TranslationOutlined } from '@ant-design/icons-vue'
import { useStore } from 'vuex'
import { useRouter } from 'vue-router'
import { message } from 'ant-design-vue'
export default defineComponent({
  components: {
    UserOutlined,
    LogoutOutlined,
    TranslationOutlined,
  },
  setup() {
    const store = useStore()
    const router = useRouter()
    const name = computed(() => store.getters['user/name'])
    // 此处获取当前语言环境
    const CURRENT_LANGUAGE = computed(() => store.getters['global/CURRENT_LANGUAGE'])

    const languages = ref([
      { name: 'English', value: 'en_US' },
      { name: '日本語', value: 'ja_JP' },
      { name: '한국어', value: 'ko_KR' },
      { name: '简体中文', value: 'zh_CN' },
    ])

    const onDropMenuClick = ({ key }) => {
      if (key === 'logout') {
        store.dispatch('user/Logout').then((res) => {
          message.success('退出成功')
          router.replace('/login')
        })
      }
      if (key === 'center') {
        router.push('/system/userCenter')
      }
    }

    // 切换语种
    const onLanguageMenuClick = (item) => {
      store.dispatch('global/SET_CURRENT_LANGUAGE', item.key).then(() => {
        window.location.reload()
      })
    }

    return {
      name,
      languages,
      CURRENT_LANGUAGE,
      onDropMenuClick,
      onLanguageMenuClick,
    }
  },
})
</>

<style lang="scss" scoped>
.head_main {
  .user_info {
    cursor: pointer;
  }
  .nickname {
    font-size: 14px;
    display: inline-block;
    margin-left: 10px;
    color: #fff;
  }


  .right-header {
    gap: 10px;
  }

  .header-icons {
    font-size: 24px;
    color: #fff;
    cursor: pointer;
  }
}

.lan {
  font-size: 16px;
  color: #999;

  &.active {
    color: #1890ff;
  }
}
</style>

对应store/global.js  中语种相关设置state: 


import { setItem, getItem } from '@/utils/storage'

const state = () => ({
  CURRENT_LANGUAGE: getItem('CURRENT_LANGUAGE') || 'zh_CN',
})
const getters = {
  CURRENT_LANGUAGE: (state) => state.CURRENT_LANGUAGE,
}
const mutations = {
  // 设置当前语言环境
  setCurrentLanguage(state, payload) {
    state.CURRENT_LANGUAGE = payload
  },
}
const actions = {
  // 设置当前语言环境
  async SET_CURRENT_LANGUAGE({ commit }, payload) {
    setItem('CURRENT_LANGUAGE', payload)
    commit('setCurrentLanguage', payload)
  },
 
}
export default { state, getters, mutations, actions, namespaced: true }

 最后效果如下:

 

点击翻译后效果:

阳阳2013哈哈
关注 关注
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
语言 js插件
10-25
由于最新版的jquery.i18n.properties有问题,特意从google下载稳定的老版,这个zip包已包含原版和minified版
jsLang:快速简单的翻译网站插件-只需键入语言,制作JSON文件即可!
05-17
项目:jsLang! 快速简单的翻译网站插件-只需键入语言,制作JSON文件即可! 检查 安装方式 下载 下载此存储库或使用命令行克隆它: git clone https://github.com/kamilrogala/jsLang.git 插入 从/ dist /文件夹中将jsLang.js文件插入到您的项目中,如下所示: [removed][removed] 当然您也可以使用缩小版: [removed][removed] 最好的方法是在关闭* .html文件中的body标签之前输入此文件 添加JS 然后,在插入插件文件后,只需将简单JavaScript代码添加到您的项目中,如下所示: [removed] document.addEventListener('DOMContentLoa
vue 或 js 使用谷歌翻译实现国际化
HHH917的博客
08-24 5518
但由于使用浏览器中的谷歌翻译插件 会导致dom的结构发生改变,从而导致 vue react与dom操作绑定关系失效!其中( 翻译input提示内容 无法翻译),需要在public 的添加css及js 已放置在。下面的方法可以使得我们即使用谷歌翻译 又不会导致dom结构发生改变 兼容vue react(把vue代码改写一下)框架。这两个组件都可以通过 添加 notranslate 类名,这样谷歌翻译将不会翻译该元素内文字。一般没有适配国际化的页面 我们会使用谷歌翻译插件进行翻译。demo 代码 如下。..
**探索多语言世界的桥梁——Jekyll Language Plugin**
最新发布
gitblog_00044的博客
06-26 395
探索多语言世界的桥梁——Jekyll Language Plugin jekyll-language-pluginJekyll 3.0-compatible multi-language plugin for posts, pages and includes项目地址:https://gitcode.com/gh_mirrors/je/jekyll-language-plugin 在当今全球化的...
js实现网页翻译,js网页翻译插件
chatgpt001的博客
12-02 2314
大家好,本文将围绕用js实现网页翻译展开说明,js网页翻译插件是一个很多人都想弄明白的事情,想搞清楚javascript翻译器需要先了解以下几个事情。
利用Google翻译实现网站国际化——js插件
热门推荐
wokuailewozihao的专栏
08-24 4万+
先说背景 网站已经使用常见的方式实现中英国际化,即每种语言写一套对应的语言文件,但后期要求实现多国语言国际化,如果还按照之前的方式,工作量大。 且不便于维护,某个词改了统统都要改。 //推荐一个github项目:https://github.com/hujingshuang/MTrans 因此有没有一种简单易用的及时翻译插件,类似于谷歌浏览器自带的翻译工具那种,一点即可全文翻译。 最后在网...
中英国际化翻译js插件无小窗口
04-27
直接引入js,复制黏贴一段代码, 并把切换国际化的按键 id设为“change”. 里面有文档说明。复制黏贴就可用,无翻译小窗口,直接国际化。 但是机械翻译,只使适用首页那些简单的代码,涉及文章的,还是要数据库中英版本各存一份
unity多语言操作和excel转xml,json,csv
03-20
- JSON(JavaScript Object Notation)是另一种流行的轻量级数据交换格式,易于人类阅读和编写,同时也易于机器解析和生成。Unity内置了JSON序列化和反序列化的支持。 - 使用类似的方法,将Excel转换成JSON格式,...
Nested Object JSON Parser-crx插件
04-02
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web应用程序之间传递数据。它基于JavaScript的一个子集,具有易读易写的特点,同时也被其他编程语言支持。在处理复杂的、多层次的JSON...
joorgandroid:Joorgportal 仅支持 html 和 javascript
07-02
7. **JSON数据交换格式**: 由于Ajax通常涉及到与服务器的通信,JSON(JavaScript Object Notation)作为轻量级的数据交换格式,很可能被用于在Joorgportal中传输和解析数据。 8. **版本控制**: 文件名为...
AddonLangManager:该工具管理firefox插件的语言文件。-开源
05-27
AddonLangManager是一款专为Firefox浏览器插件设计的语言文件管理工具,其主要功能是帮助开发者或用户轻松管理和更新插件中的多语言支持。由于该工具是开源的,这意味着它的源代码对外公开,允许社区成员查看、修改...
js谷歌翻译插件.rar
10-23
按照压缩包内的html示例调用即可, 这里只将部分耗时较长的js和容易请求失败的文件放在了本地,其他的png,gif还是通过网络访问的 翻译后控制台还是会一些报错,请求访问失败,不影响正常使忽略即可
js利用google翻译接口把网页翻译成各国语言
12-09
利用JS实现网页的在线自动google翻译
jtranslate:简单的 jquery 插件,可快速自定义将 HTML 页面翻译成多种语言
06-03
翻译 jtranslate 是 jquery 插件,用于翻译 html 页面上的一些文本。 安装 安装很容易。 在页面头部包含 jquery CDN 中的 jquery: [removed][removed] 将脚本 jquery.translate.js 包含到页面的页脚中: [removed][removed] 现在,一切都安装好了。 如何使用 您可以翻译页面上的文本,例如: 基本用法: $ ( document ) . ready ( function ( ) { $ ( "body" ) . find ( "a,span,div,p,button,label,select,optio
利用Google翻译实现网站国际化——js插件.rar
09-25
此资源有误已作废,请查看最新的资源:https://blog.csdn.net/wokuailewozihao/article/details/82021709
JSMin js注释清理及压缩工具下载
02-24
这个工具由 Douglas Crockford 创建,他也是JSON(JavaScript Object Notation)格式的创始人。JSMin的主要功能是删除JavaScript代码中的不必要的字符,如注释、空格和换行,以及通过合并相邻的字符串字面量来进一步...
【sgGoogleTranslate】自定义组件:基于Vue.js用谷歌Google Translate翻译插件实现网站多国语言开发
我驾驶汽车从不是为了从A点到达B点,我喜欢去感受汽车,与之交流,与之融为一体。
09-16 738
一分钟上手Vue VueI18n Internationalization(i18n)多国语言系统开发、国际化、中英文语言切换!_你挚爱的强哥的博客-CSDN博客。这里以Vue2为例子。最原始的多国语言方法。
中英文互译js插件
Q圆Q圆的博客
05-07 7927
适用于静态页面的中英文互相切换js插件首先自己下载jquery包 &lt;!DOCTYPE html&gt;    &lt;head&gt;        &lt;title&gt;Microsoft Widget API Sample&lt;/title&gt;        &lt;meta charset="UTF-8"/&gt;        &lt;script type="tex
web页面国际化---之js翻译插件
玲听鑫声的博客
05-10 1万+
翻译插件使用cookie获取翻译语音选择 初始化需要加载的文件:translation.js 其他文件为语音包,如:source.js(中文包) en.js(英文包) 附上代码: translation.js /** * 翻译插件 版本v1.0 * 创建日期:2015/11/24 * 创建人: 刘鑫 * 功能: * 1.可以翻译指定位置内的内容(传入指
精通JavaScript:从基础到Ajax与JSON实战
21. **处理JSON**:深入JSON(JavaScript Object Notation)格式,如何序列化和反序列化数据。 22. **独特的浏览器特性**:讨论不同浏览器之间的差异和兼容性问题。 23. **脚本插件**:介绍如何与Flash、PDF等插件...
写文章

热门文章

  • java编程入门到精通看什么书,详细说明 47990
  • 哪些软件技术和设计可以申请专利 42339
  • 黑人专用浏览器?爆强!!! 34736
  • 获取WINDOWS下当前用户路径 USERPROFILE 31502
  • 下载好python后,怎么打开,python怎么进入编程界面 28188

分类专栏

  • 毕业论文 1篇
  • 论文降重 8篇
  • 智能写作 4篇
  • 物联网 325篇
  • PHP 66篇
  • Java 132篇
  • 运维 4篇
  • 学习教程 163篇
  • 快码论文 2篇
  • Python 37篇
  • AI 4篇
  • 计算机科学 148篇
  • c语言 20篇
  • 大数据 16篇
  • OpenAI 13篇
  • Carbon 4篇
  • Bard 2篇
  • cad 2篇
  • 即时通讯 83篇
  • 网络编程 134篇
  • C++ 37篇
  • JavaScript 46篇
  • 程序员 69篇
  • 人工智能 95篇

最新评论

  • python和c语言哪个好上手,c语言和python哪个更简单

    2401_86398566: c 语言是高级语言,别乱说

  • 夸克浏览器怎么添加脚本,夸克怎么开启javascript

    Hkxsd: 你xx的 这是夸克吗

  • envi神经网络分类原理,ENVI神经网络分类

    qq_55155812: 请问您弄清楚了嘛

  • 自适应模糊神经网络与bp神经网络的区别

    八方来财心想事成年轻体壮家人康健万事如意: 驴唇不对马嘴啊

  • python天气数据分析与处理,python天气预测模型

    2301_78700987: 天气数据抓取

大家在看

  • 海外云购源码/一元购源码/夺宝源码/英文版云购源码
  • 第二章 网页制作的排版方法 550
  • 许少辉加工中心《乡村振兴战略下传统村落文化旅游设计》南门方向辉少许
  • 京东返利APP的高并发与高可用架构设计 2372

最新文章

  • python编程小游戏简单的,python入门小游戏代码
  • 下载完python就可以编程了吗,python下载以后怎么用
  • python编程游戏代码可复制,python编程游戏代码教程
2024
04月 8篇
03月 204篇
02月 88篇
01月 271篇
2023年1035篇
2022年747篇
2021年12篇
2017年7篇
2016年14篇
2015年26篇
2014年255篇
2013年181篇
2011年9篇
2010年87篇
2009年61篇
2008年202篇
2007年6篇
2006年4篇
2005年182篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家清远玻璃钢卡通人物雕塑六安欧式玻璃钢雕塑供应商辽宁玻璃钢抽象雕塑公司标识玻璃钢雕塑厂家栖霞商场美陈布展山东大型商场创意商业美陈传播芜湖商场入口美陈曲阳玻璃钢雪宝雕塑山西定制玻璃钢雕塑市场台州玻璃钢果蔬雕塑美陈 商场玻璃钢运动雕塑供应江津玻璃钢胸像雕塑江苏玻璃钢仿真动物雕塑商场中岛美陈湛江玻璃钢雕塑源头好货丽江玻璃钢雕塑制作徐州玻璃钢雕塑厂家供应青海景区玻璃钢雕塑公司玻璃钢仿古门窗雕塑玻璃钢鹿雕塑哪家质量好新乡铸铜玻璃钢景观雕塑贵阳商场美陈雕塑商场美陈工作计划镇赉玻璃钢雕塑厂家福州雕像玻璃钢雕塑浙江省大型玻璃钢雕塑盐城商场商业美陈报价泉州石狮玻璃钢雕塑玻璃钢雕塑大型主题商场美陈哪家好香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化