reactjs - 使用 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-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
我试过的:
解决方案
推荐阅读
- openiddict - 使用 openiddict 的外部身份提供者示例
- sql - Presto SQL - 两个完全不同的表连接平行而不是垂直
- iis - 如何配置我的 web.config 以访问公共/子目录中托管在 IIS 上的 Symfony API 的文件?
- javascript - 使用更新操作更新现有值将导致添加新值
- google-apps-script - 使用 Google Apps 脚本将文本占位符替换为图像
- java - 测试时,是模拟还是实例化新对象更好?
- git - 依赖于另一个功能分支的 Git 功能分支
- python - 如何使用 django/jinja 在同一页面上获取 html 元素的值
- informatica - 使用 IICS 在电子邮件中附加表格数据
- android - Android 传感器每次打开应用都会返回相同的值