首页 > 其他分享 >Monaco Editor使用时右键功能菜单汉化

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

时间:2024-07-19 16:18:36浏览次数:11  
标签:zh Monaco loader Editor monaco import config 右键 editor

背景

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

问题剖析

在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' });

效果图如下:
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源码,并且它的使用方式与项目打包方式解耦,只需在需要使用的文件中引入即可。使用方式灵活,适用范围更加广阔。

标签:zh,Monaco,loader,Editor,monaco,import,config,右键,editor
From: https://www.cnblogs.com/Jcloud/p/18311712

相关文章

  • 魔改 tui-image-editor 一切为了业务
    业务背景:老师在线批改学员的作业,学员之前提交的是文件格式,word,pdf格式的,老师需要下载下来去批改然后再上传,比较麻烦,现在改为学员提交作业的图片,老师在线批改学员上传的图片,方便老师操作。技术栈:vue2插件:npminstalltui-image-editor--save "tui-image-editor":"^3......
  • EmEditor v24.2.1 汉化版
    EmEditor文本编辑器是一款功能强大且非常好用的文本编辑器!它启动速度快,可以完全代替Windows自带的记事本,足以胜任日常的文本编辑工作。良好地支持Unicode和中文字符,还支持20多种编程语言的语法突出显示。并且支持的语法种类可以不断的扩充。具有选择文本列块的功能(按ALT键拖动鼠......
  • MarkText A simple and elegant markdown editor, available for Linux, macOS and Wi
    1、这个工具挺不错的,先上一张图,来自github页面截图:2、这个工具是开源的项目,开源地址:https://github.com/marktext官网地址:www.marktext.cc/三个平台都有:可以直接点上面的按钮,找到自己所用电脑的平台,就可以下载。也可以转到Githubreleasepage下载。3、安装:点击【安......
  • Sleeping Cup #1 Editorials
    A-Sleepingpairs很明显,能删的要立刻删,它们会阻碍交换。一共要删除\(n\)列,这需要\(n\)点体力。由于删除时总要保证两列字符一致,故两列X的个数要相等。设两列X的个数原来相差\(b\)个,则交换一行XZ(或ZX)会使得某一列减少一个X,而另一列增加一个X,差值减少\(2\),故这......
  • vi的属性设置运行时弹出前面板和右键子vi弹出前面板二者设置有什么区别?
    今天一个同事说问我一个问题:vi的属性设置运行时弹出前面板和右键子vi弹出前面板二者设置有什么区别?我最后回答他说:设置子vi的属性(图1)会让所有被调用的子vi但前面板都会弹出;而右键点击设置弹出(图2),则只对当前那个地方调用的子vi起作用。图1图2小小细节,有门道。大家灵活运行......
  • 解决Bandizip没有右键菜单问题:如何手动添加Bandizip的右键菜单项
    文章目录......
  • 右键连点器
    左键百度盘:链接:https://pan.baidu.com/s/1aoN5DFVvBmRyw1TOWtuvXQ?pwd=6j74 提取码:6j74 右键百度盘:链接:https://pan.baidu.com/s/12bTierPyOfxv1Q045gSymg?pwd=hy7z 提取码:hy7z 效果看视频        右键连点器_哔哩哔哩_bilibili右键连点器,一款高效实用的工具......
  • 基于Sonar和.editorconfig的代码lint
    基于Sonar和.editorconfig的代码lint在项目根目录下创建Directory.Build.props文件,在里面引入SonarAnalyzer.CSharp包:<Project><PropertyGroup><TargetFramework>net8.0</TargetFramework><ImplicitUsings>enable</ImplicitUsings><Nu......
  • Visual Studio 使用 EditorConfig 定义一致的编码样式
    代码一致性EditorConfig文件设置可在代码库中保持一致的编码样式和约定,无论使用哪种编辑器或IDE。可以控制缩进样式、制表符宽度、行尾字符和编码等编码样式。例如,如果C#代码库具有缩进使用五个空格字符、文档使用UTF-8编码,并且行以CR/LF结尾的约定,则可以将EditorCon......
  • antV x6鼠标右键事件、鼠标滑过 节点 新增删除事件、节点 鼠标摁下 node节点禁止连入
    graphSvg为当前的画布//鼠标右键事件graphSvg.on('node:contextmenu',({e,node})=>{e.preventDefault();//阻止默认的右键菜单console.log(e,node)})//鼠标滑过节点新增删除事件graphSvg.on('node:mouseenter',({nod......