首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对项目运行formatjs extract时未返回消息。你知道为什么吗?

对项目运行formatjs extract时未返回消息。你知道为什么吗?
EN

Stack Overflow用户
提问于 2020-12-05 19:32:02
回答 2查看 808关注 0票数 1

因此,我正在用Electron实现一个项目,并希望在其中实现国际化。我有一个简单的组件,它使用react-intl的FormattedMessage和一个描述其消息的messages.js文件。我尝试按照文档中的教程使用@formatjs/cli提取国际化消息,尽管它看起来运行正常,但npm脚本似乎没有返回任何东西,就像它没有找到任何消息一样。我的配置和文件如下所示:

.babelrc

代码语言:javascript
复制
{
  "presets":  ["react-app"],
  "plugins": [
    [
      "react-intl",
      {
        "idInterpolationPattern": "[sha512:contenthash:base64:6]",
        "extractFromFormatMessageCall": true,
        "ast": true
      }
    ]
  ]
}

messages.js

代码语言:javascript
复制
import { defineMessage, defineMessages } from 'react-intl';

const scope = 'src.components.Test';

export default defineMessages({
  info: {
    id: `${scope}.info`,
    defaultMessage: 'Info'
  }
});

package.json

代码语言:javascript
复制
...
"scripts": {
    "serve": "react-scripts start",
    "start": "SET DEBUG=true && electron .",
    "lint": "eslint .",
    "lint:fix": "eslint --fix .",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject",
    "messages:extract": "formatjs extract --ignore=src/translations/* --out-file=src/translations/pt.json 'src/**/messages.js'",
    "messages:compile": "formatjs compile-folder --ast  src/translations src/compiled-translations"
  },
...
"devDependencies": {
    "@babel/cli": "^7.12.8",
    "@formatjs/cli": "^2.13.15",
    "babel-plugin-react-intl": "^8.2.21",
    "babel-preset-react-app": "^10.0.0",
    "electron": "^10.1.1",
    "eslint": "^6.6.0",
    "eslint-config-airbnb": "^18.2.0",
    "eslint-plugin-import": "^2.22.1",
    "eslint-plugin-jsx-a11y": "^6.4.1",
    "eslint-plugin-react": "^7.21.5",
    "eslint-plugin-react-hooks": "^4.2.0",
    "extract-react-intl-messages": "^4.1.1"
  }

现在,每当我运行提取脚本(messages:extract)时,我得到的只是一个空的json对象。你知道我是不是做错了什么?谢谢!

EN

回答 2

Stack Overflow用户

发布于 2021-03-17 17:08:17

我也有同样的问题。

尝试将'src/**/messages.js'更改为\"src/**/messages.js\"

对我来说,这个改变是可行的。

票数 3
EN

Stack Overflow用户

发布于 2021-08-05 14:05:23

我不知道我是否遇到了同样的问题,但对我来说发生的事情是CLI确实看到了消息,但没有编写任何JSON文件。我能让它工作的唯一方法是如下(在package.json中)。

package.json

代码语言:javascript
复制
...
scripts: {
  "translations:extract": "npm run translations:extract:internal -- \"src/**/*.ts*\" --out-file \"locales/en.json\" --id-interpolation-pattern '[sha512:contenthash:base64:6]'",
  "translations:extract:internal": "formatjs extract",
}
...

这感觉有点老生常谈,但它确实起到了作用。如果你真的想弄脏,也可以只用一行代码:

package.json

代码语言:javascript
复制
...
scripts: {
    "translations:extract": "node_modules/.bin/formatjs extract \"src/**/*.ts*\" --out-file \"locales/extracted/en.json\" --id-interpolation-pattern '[sha512:contenthash:base64:6]'"
}
...

以上代码需要将formatjs作为项目依赖项进行安装

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65156419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档