使用TypeScript在CRA中提取i18n消息

时间:2019-07-16 17:41:03

标签: reactjs typescript internationalization react-intl babel-plugin-react-intl

我正在尝试提取i18n消息(由react-intl的{​​{1}}定义)以使用TypeScript在CRA中正常工作。
我有一个由CRA引导的现有React应用,其中包含几行数百行代码。因此,改写不带TypeScript的应用程序不是一种选择。


这是我到目前为止尝试过的:

第一次尝试

遵循此guide使其生效。
紧紧遵循该指南时(尽管已弃用defineMessages),语言文件将正确生成。
但是,如果您使用react-intl-cra创建应用并将create-react-app react-intl-example --typescript更改为

script

它将因编译器错误而中断。

第二次尝试

由于"extract:messages": "react-intl-cra 'src/**/*.{js,jsx,ts,tsx}' -o 'src/i18n/messages/messages.json'" 是指react-intl-cra解决方案,因此我尝试将其与react-app-rewiredcustomize-cra一起添加到新生成的CRA中(使用TS)。但是那里也没有运气,经过短暂的研究,我发现它是officially not supported

第三次尝试:

babel-plugin-react-intl添加到我的项目中并运行:

extract-react-intl-messages

也失败,并显示错误。


我没有想法,所以我来这里问。从我已经看到的TypeScript在过去几年中的广告宣传来看,我认为我不必证明React仍然被大肆宣传。而且我无法想象,i18n在应用程序开发中并不常见。
但是我无法在npmjs.com上找到任何最新指南或有用的东西。

TL; DR;

我需要什么:

  • $ npx extract-messages -l=en,ja -o app/translations -d en --flat false 'src/**/!(*.test).tsx' 的{​​{1}}提取消息到json文件
  • 必须在使用defineMessages的CRA中工作
  • 不应使用react-intl

我尝试过的事情:

0 个答案:

没有答案