我正在尝试提取 i18n 消息(由react-intl
's定义defineMessages
)以使用 TypeScript 在 CRA 中正常工作。
我有一个由 CRA 引导的现有反应应用程序,其中包含数百行代码。因此,不使用 TypeScript 重写应用程序不是一种选择。
这是我到目前为止尝试过的:
第一次尝试
遵循本指南以使其正常工作。
当密切遵循指南(尽管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
到babel-plugin-react-intl
新生成的 CRA(使用 TS)中。但是那里也没有运气,经过一段时间的研究后,我发现它不受官方支持。
第三次尝试:
添加extract-react-intl-messages
到我的项目并运行:
$ npx extract-messages -l=en,ja -o app/translations -d en --flat false 'src/**/!(*.test).tsx'
也因错误而失败。
没办法,特意过来问问。据我所见,TypeScript 在过去几年中得到了很好的宣传,我认为我不必证明 React 仍然被大肆宣传。此外,我无法想象,i18n 在应用程序开发中是一个不常见的问题。
但是我在 npmjs.com 上找不到任何最新的指南或任何有用的东西。
TL;博士;
我需要的:
defineMessages
从中提取消息react-intl
到 json 文件中- 必须在 CRA 中使用
--typescript
- 不应该使用
npm run eject
我试过的: