如何在摩纳哥编辑器上更改显示语言

时间:2019-07-01 17:57:10

标签: javascript monaco-editor

不知道如何将显示语言从javascript更改为swift(或其他)

我使用“ npm install monaco-editor”命令安装了

    <script src="node_modules/monaco-editor/min/vs/loader.js"></script>
    <script>
    var editor;
    require.config({ paths: { 'vs': 'node_modules/monaco-editor/min/vs' 
    }});
    require(['vs/editor/editor.main'], function() {

        editor = 
    monaco.editor.create(document.getElementById('container'), {
            value: [
                'function x() {',
                '\tconsole.log("Hello world!");',
                '}'
            ].join('\n'),
            language: 'javascript',
            theme: "vs-dark"
        });
    });


    function showMessage() {
        var text = editor.getValue();
        monaco.editor.setModelLanguage(editor.getModel(), "swift")
        editor.updateOptions({
            language: "objective-c"
        });
        alert(text);
    }
</script>

我希望在运行showMessage函数之后,显示代码从javascript变为Objective-c。 而实际上错误什么也没显示。有人知道怎么做吗??

2 个答案:

答案 0 :(得分:0)

我不太确定您要做什么,但是我做了这个小功能:

const changeLang = lang => {
    monaco.editor.setModelLanguage(editor.getModel(), lang);
    console.log(`model language was changed to ${editor.getModel().getLanguageIdentifier().language}`);
}

它会更改语言并每次为我打印新的模型语言。

您的行editor.updateOptions({language: "objective-c"})不会执行任何操作。如果您查看the docs,将会发现ITextModelUpdateOptions仅需要indentSizeinsertSpacestabSizetrimAutoWhitespace

看来您可能一直在看this github issue的前几个答案才能做到这一点。给出的第一个答案不正确。

您在函数的开始执行text = editor.getValue(),在函数的结尾执行alert(text),但是text从未改变。模型语言只会影响外观,而不会影响内容。如果您只是尝试获取静态内容,那么编写它的方式就很好。但是,如果您期望它会改变,那就不会。

答案 1 :(得分:0)

在 monaco repo 中引用了 this issue

您可以在创建编辑器之前尝试编写这些代码:

require.config({
    'vs/nls': {
        availableLanguages: {
            '*': 'zh-cn'
        }
    }
});

它可以将显示语言更改为中文。