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

京东云开发者
• 阅读 299

背景

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

问题剖析

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

  1. 查看官方API文档寻找关于本地语言的配置
  2. 寻找可以进行本地语言配置的第三方插件/库

按照以上思路首先在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' });

效果图如下:
Monaco Editor使用时右键功能菜单汉化

从效果图我们发现功能菜单的”命令面板“是中文的了,但是”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',
  });
});

至此已经完成。浏览下效果图 Monaco Editor使用时右键功能菜单汉化 从效果图来看已经达到了我们的目标。但仔细看上方代码发现我们用的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年前
Mac效率神器,强大的菜单栏浏览器menubarx for mac 下载
MenubarXforMac是一款功能强大的Mac菜单栏增强软件。它可以使用户根据自己的喜好轻松地调整菜单栏图标,以及为应用程序添加快捷方式和菜单。
Jack Jack
3年前
仿Windows下记事本小程序
在Windows操作系统中,记事本是一个小的应用程序,采用一个简单的文本编辑器进行文字信息的记录和存储。请仿照Windows的记事本,开发一个属于自己的记事本(Notepad)功能记事本的应该具备的功能,基本要求如下:(1)菜单栏中包含文件、编辑、查看和帮助菜单,具体如下图所示。(2)文件菜单中具有新建、打开、保存、另存为、打印和退出功能,具体如
可莉 可莉
3年前
10 个非常酷的基于jQuery的菜单效果插件
除了直观的界面效果外,炫酷的网站导航菜单或右键菜单也能为访问者带来眼前一亮的感觉。本文为你带来10个非常酷的基于jQuery的菜单效果插件。 1. 右击菜单 一个创建右击菜单的插件,简洁且易用。 !(http://static.oschina.net/uploads/img/201112/20185535_
Wesley13 Wesley13
3年前
TDD 测试驱动开发
测试驱动开发,英文全称TestDrivenDevelopment,简称TDD,是一种不同于传统软件开发流程的新型的开发方法。它要求在编写某个功能的代码之前先编写测试代码,然后只编写使测试通过的功能代码,通过测试来推动整个开发的进行。这有助于编写简洁可用和高质量的代码,并加速开发过程。1概述KentBeck先生最早在其极限编程(XP)方法论中,向大
绣鸾 绣鸾
1年前
MouseBoost Pro for Mac(右键助手专业版) 3.3.1激活版
是一款专为Mac平台开发的鼠标增强工具,其主要特点如下:1.可自定义菜单:MouseBoostMac右键助手允许用户自定义右键菜单,可以添加或删除菜单项,以适应不同用户的需求。2.多种快捷操作:MouseBoostMac右键助手支持多种快捷操作,例如剪切、
绣鸾 绣鸾
1年前
MouseBoost Pro for Mac(右键助手专业版) 3.3.2激活版
是一款专为Mac平台开发的鼠标增强工具,其主要特点如下:1.可自定义菜单:MouseBoostMac右键助手允许用户自定义右键菜单,可以添加或删除菜单项,以适应不同用户的需求。2.多种快捷操作:MouseBoostMac右键助手支持多种快捷操作,例如剪切、
绣鸾 绣鸾
1年前
MouseBoost Pro for Mac(右键助手专业版) 3.3.3免激活
是一款专为Mac平台开发的鼠标增强工具,其主要特点如下:1.可自定义菜单:MouseBoostMac右键助手允许用户自定义右键菜单,可以添加或删除菜单项,以适应不同用户的需求。2.多种快捷操作:MouseBoostMac右键助手支持多种快捷操作,例如剪切、
阮小五 阮小五
1年前
Easy New File|右键快速新建文件,让Mac像Windows一样!
在Windows系统中,通过鼠标右键菜单可以新建各种常用的文件,比如文本文档、Word、Excel、PPT等等。然而Mac上的右键菜单并没有这项功能,这令许多用惯了Windows的小伙伴们刚开始使用Mac的时候会有些不习惯。EasyNewFile是Mac上
小万哥 小万哥
1年前
2023 Visual Studio Code 插件推荐:18 个提高开发效率的常用插件
VisualStudioCode(简称VSCode)是一款强大的开源代码编辑器,它拥有众多功能强大的扩展插件,使得开发者可以根据自己的需求来定制编辑器的功能和外观。在本文中,我们将分享一些非常实用的VSCode插件,这些插件将提高您的开发效率,使编码变得更
绣鸾 绣鸾
1年前
MouseBoost Pro for Mac(右键扩展助手专业版)
是一款专为Mac平台开发的鼠标增强工具,其主要特点如下:1.可自定义菜单:MouseBoostMac右键助手允许用户自定义右键菜单,可以添加或删除菜单项,以适应不同用户的需求。2.多种快捷操作:MouseBoostMac右键助手支持多种快捷操作,例如剪切、