0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Monaco Editor使用时右键功能菜单汉化

京东云 来源:jf_75140285 作者:jf_75140285 2024-07-19 16:28 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

背景

某天产品要求在项目的某个页面添加一个代码编辑器,包含编辑器常见的功能。看完需求,想到了强大的Monaco Editor。按照官方文档进行配置开发,就在自己觉得大功告成之际,右击编辑框,发现功能菜单是英文状态,然后就开启了我的右键功能菜单汉化之路。

image.png

问题剖析

在Monaco Editor的整个使用配置过程中,我没有添加关于本地语言的配置,所以目前使用的应该是默认配置。
所以目前解决问题的思路是:

查看官方API文档寻找关于本地语言的配置

寻找可以进行本地语言配置的第三方插件/库

按照以上思路首先在Monaco Editor官方文档中进行一番搜索尝试无果后,开始转向相关第三方插件/库的寻找,最终找到了monaco-editor-esm-webpack-plugin和monaco-editor/loader

解决方案

方案一:使用monaco-editor-esm-webpack-plugin

依赖下载

npm install monaco-editor-esm-webpack-plugin --save-dev

npm install monaco-editor monaco-editor-webpack-plugin monaco-editor-nls

vue.config.js文件

const MonacoWebpackPlugin = require('monaco-editor-esm-webpack-plugin');
configureWebpack: {
    plugins: [
        new MonacoWebpackPlugin()
    ]
}

xx.vue文件

import { setLocaleData } from 'monaco-editor-nls';
import zh_CN from 'monaco-editor-nls/locale/zh-hans';
setLocaleData(zh_CN);
// 先汉化语言,再加载monaco才能汉化成功,使用import方式无法汉化
// 需要使用require方式引入monaco-editor
const monaco = require('monaco-editor/esm/vs/editor/editor.api');

monaco.editor.create(document.getElementById('root'), { language: 'xml' });

效果图如下:

image.png

从效果图我们发现功能菜单的”命令面板“是中文的了,但是”Copy“还是英文

方案二:使用monaco-editor/loader

依赖下载

npm install @monaco-editor/loader

xx.vue

import loader from '@monaco-editor/loader';
loader.config({ 'vs/nls': { availableLanguages: { '*': 'zh-cn' } } }); // availableLanguages中可以配置想要的语言,例如de、zh-cn等
loader.init().then(monaco => {
    monaco.editor.create(document.querySelector("#mxlContainer"), {
    value: '< params >< /params >',
    language: 'xml',
  });
});

至此已经完成。浏览下效果图

image.png


从效果图来看已经达到了我们的目标。但仔细看上方代码发现我们用的monaco实例是monaco-editor/loader自动从CDN下载后返回的,
如果我们想通过npm包的方式使用应该怎么做呢?废话不多说,直接上代码

import loader from '@monaco-editor/loader';
import * as monaco from 'monaco-editor';
// 通过config方法我们可以配置我们使用的资源是通过非CDN方式引入
loader.config({ monaco });
// 需要注意本地语言(locales)的配置一定放在loader.config({ monaco })后边,否则设置的locales会被npm包的monaco配置覆盖,导致设置locales失败
loader.config({ "vs/nls": { availableLanguages: { "*": "zh-cn" } } });
loader.init().then(monacoInstance => { 
    // 通过loader.config({monaco})的配置后,此处的monacoInstance其实是我们 import * as monaco from 'monaco-editor'进来的npm包
   monacoInstance.editor.create(document.querySelector("#mxlContainer"), {
    value: '< params >< /params >',
    language: 'xml',
  }); 
});

版本

"monaco-editor": "^0.30.1"
"monaco-editor/loader": "^1.3.2"
"node": "v14.15.4"
"webpack": "v4.28.4"

小结

monaco-editor/loader会自动处理配置和加载monaco源码,并且它的使用方式与项目打包方式解耦,只需在需要使用的文件中引入即可。使用方式灵活,适用范围更加广阔。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编辑器
    +关注

    关注

    1

    文章

    828

    浏览量

    33051
  • Editor
    +关注

    关注

    0

    文章

    20

    浏览量

    14551
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    怎么清除不用的桌面右键菜单功能

    -----------------------------------------------------------------------@ ECHO 很多显卡在装了驱动之后,桌面右键会多出一项或多项菜单,这些功能
    发表于 05-07 08:58

    有图有真相,Orcad Capture V16.3汉化版。有兴趣的同学赶早!

    Orcad CaptureV16.3 V1汉化测试版,效果图如下!亲自试了一下,主菜单没有汉化,作者描述汉化会导致程序不稳定,菜单错位。下拉
    发表于 11-13 17:41

    labview做一个右键功能菜单

    我想用labview做一个右键功能菜单谁会啊求助 我是新人
    发表于 11-28 09:53

    Protel99SE菜单完全汉化包,解决网上下载的汉化菜单部分菜...

    `Protel99SE菜单完全汉化,解决网上下载的汉化菜单部分菜单项缺失的问题,英语水平有限,有些翻译可能不是特别贴切;
    发表于 07-22 23:05

    右键菜单出故障?

    点击鼠标右键弹出菜单,有时候出现控件属性,这个是怎么回事,无法解决?
    发表于 09-16 11:03

    动态创建右键自定义快捷菜单

    程序运行菜单一样,当针对某对象的操作项比较多的时候,比较适合用右键快捷菜单来代替多个控件,用来精简界面。(2)比较符合人右键查看功能的操作习
    发表于 09-15 00:06

    关于控件右键菜单的那个勾怎么显示

    我知道可以右键从高级功能里自定义这个菜单,但是不知道怎么做出像默认控件的这种前面还有一个√的。另外还想问一下,如果我菜单只有两个选项,怎么才可以让其中一个显示√,另一个不显示。当点击另
    发表于 12-12 01:11

    【干货技巧】AD18如何汉化菜单标题?

    如果汉化最合适我们电工咯,那有何高招呢? 见下文:执行菜单:Tools --> Preferences,弹出以下界面:接着选打钩,弹出以下界面,按OK,再OK保存,最后关闭AD软件,重新启动,就可以看到菜单
    发表于 11-27 19:33

    如何汉化电子仿真软件Multisim 7菜单

    如何汉化电子仿真软件Multisim 7菜单:电子仿真软件Multisim7 功能强大,使用方便,越来越受到广大电子爱好者的喜欢,它必将在电子仿真和电路设计领域得到广泛应用。有读者来信询
    发表于 10-23 08:15 93次下载

    如何清除多余的不用的桌面右键菜单

    如何清除多余的桌面右键菜单   复制下面内容,保存为XX.bat,运行就就可以。怎么使用
    发表于 05-07 08:57 6859次阅读
    如何清除多余的不用的桌面<b class='flag-5'>右键</b><b class='flag-5'>菜单</b>

    如何添加右键菜单

    如何添加右键菜单 1、在所有的文件右键菜单中加入命令 (1).打开“HKEY_CLASSES_ROOT*”;
    发表于 09-11 18:21 1.8w次阅读

    JAVA教程之右键弹出菜单

    JAVA教程之右键弹出菜单,很好的学习资料。
    发表于 03-31 11:13 13次下载

    屏蔽超文本浏览框右键菜单

    易语言是一门以中文作为程序代码编程语言学习例程:易语言-屏蔽超文本浏览框右键菜单
    发表于 06-06 17:36 3次下载

    Labview自定义右键快捷菜单功能实用小技巧

    Labview自定义右键快捷菜单功能实用小技巧
    发表于 02-11 11:27 28次下载

    谷歌Chrome浏览器新增功能:生成随机右键菜单密码

    据悉,Google已于Canary版本Chrome浏览器添加了“Password manual fallback”的实验性标志,支持用户通过右键菜单生成密码建议。
    的头像 发表于 05-14 09:46 2242次阅读