我正在尝试提取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-rewired
和customize-cra
一起添加到新生成的CRA中(使用TS)。但是那里也没有运气,经过短暂的研究,我发现它是officially not supported。
将babel-plugin-react-intl
添加到我的项目中并运行:
extract-react-intl-messages
也失败,并显示错误。
我没有想法,所以我来这里问。从我已经看到的TypeScript在过去几年中的广告宣传来看,我认为我不必证明React仍然被大肆宣传。而且我无法想象,i18n在应用程序开发中并不常见。
但是我无法在npmjs.com上找到任何最新指南或有用的东西。
我需要什么:
$ npx extract-messages -l=en,ja -o app/translations -d en --flat false 'src/**/!(*.test).tsx'
的{{1}}提取消息到json文件defineMessages
的CRA中工作react-intl
我尝试过的事情: