Files
2026-07-13 13:22:34 +08:00

18 lines
745 B
JavaScript

const loaderUtils = require('loader-utils');
const { resolveBuiltinFormatter } = require('@formatjs/cli/src/formatters');
/**
* This is an async loader we use to compile localization resources and write back.
* Compare to FormatJS native compile function, it only support `format` option.
* @param content resource file content
*/
module.exports = async function i18nLoader(content) {
this.cacheable();
const callback = this.async();
const { format } = loaderUtils.getOptions(this) || {};
const formatter = await resolveBuiltinFormatter(format);
const resourceFileContent = JSON.parse(content);
const compiledContent = await formatter.compile(resourceFileContent);
return callback(null, JSON.stringify(compiledContent));
};