首页 > 解决方案 > 如何运行 formatjs 编译?

问题描述

如何在不替换已翻译消息的情况下运行 formatjs 编译命令?现在我这样运行它:

../../node_modules/.bin/formatjs compile lang/ru.json --out-file compiled-lang/ru.json

标签: reactjsreact-intlformatjs

解决方案


您需要有一个具有自己编译功能的自定义格式化程序: https ://formatjs.io/docs/tooling/cli/#custom-formatters

这是我的格式化程序文件的样子:

const argv = require('yargs').argv;
const originTranslations = require(argv['out-file']);

module.exports = {
  compile: function (msgs) {
    const results = {};
    for (const k in msgs) {
      const defaultMessage = msgs[k].defaultMessage;
      if (originTranslations[k]) {
        results[k] = originTranslations[k];
      } else if (defaultMessage) {
        results[k] = defaultMessage;
      } else {
        results[k] = 'MISSING TRANSLATION';
      }
    }
    return results;
  },
};

您需要通过--format选项传入此格式化程序

yarn formatjs compile lang/ru.json --out-file compiled-lang/ru.json --format <your formatter file>

推荐阅读