monaco-editor-i18n-plugin
Version:
A i18n plugin for the Monaco editor
49 lines (48 loc) • 1.41 kB
JavaScript
;
/**
* monaco-editor-i18n-plugin
* This plugin is referenced from https://github.com/microsoft/monaco-editor/tree/main/webpack-plugin
*/
Object.defineProperty(exports, "__esModule", { value: true });
const replaceNlsMessages = require.resolve("./loaders/replaceNlsMessages");
// create rules loader
function createLoaderRules(options) {
return [
{
test: /\.(js|mjs|jsx|ts|tsx)$/,
enforce: "pre",
include: /[\\\/]monaco-editor[\\\/]esm/,
use: [
{
loader: replaceNlsMessages,
options,
},
],
},
];
}
// add webpack rules to webpack config
function addCompilerRules(compiler, rules) {
const compilerOptions = compiler.options;
if (!compilerOptions.module) {
compilerOptions.module = { rules };
}
else {
const moduleOptions = compilerOptions.module;
moduleOptions.rules = (moduleOptions.rules || []).concat(rules);
}
}
class MonacoEditorI18nPlugin {
constructor(options) {
this.options = {
windowKey: "__DT_LOCALE__",
localStorageKey: "dt-locale",
};
this.options = options;
}
apply(compiler) {
const rules = createLoaderRules(this.options);
addCompilerRules(compiler, rules);
}
}
module.exports = MonacoEditorI18nPlugin;