首页 > 解决方案 > 使用 TypeScript 在 CRA 中提取 i18n 消息

问题描述

我正在尝试提取 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-crababel-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;博士;

我需要的:

我试过的:

标签: reactjstypescriptinternationalizationreact-intlbabel-plugin-react-intl

解决方案


推荐阅读