Magic Translate vs. react-intl
react-intl 是 FormatJS 的一部分。它使用 ICU 消息语法格式化消息、日期和数字,并且您可以提供每种语言的翻译。Magic Translate 直接翻译组件中的文本,因此您无需编写或维护任何翻译。
一目了然
| Magic Translate | react-intl | |
|---|---|---|
| 你如何写文字 | 你自己的话,包裹在 <T> 中 | <FormattedMessage> 带有 ID 和默认消息 |
| 翻译 | 机器翻译,自动创建 | 您提取消息并进行翻译 |
| 消息文件 | 无 | 每种语言一个文件 |
| 日期和数字 | 使用浏览器的 Intl API | 内置组件和 ICU 语法 |
| 服务器渲染 | React 服务器组件和 Next.js | 是的,需要额外的设置 |
| 价格 | 免费套餐,然后根据使用量订阅月度套餐 | 开源且免费 |
代码有何不同
使用 react-intl 时,每条消息都有一个 ID,并且翻译文件位于不同的文件中:
import { FormattedMessage } from 'react-intl';const Welcome = () => (<FormattedMessage id="home.welcome" defaultMessage="Welcome back!" />);// Then extract the messages, translate them for every language// and load the right file when the app starts.
使用 Magic Translate,你只写一次消息:
import { T } from '@magic-translate/react';const Welcome = () => <T>Welcome back!</T>;
何时选择 Magic Translate
- 您希望您的应用程序支持多种语言,而无需翻译工作流程。
- 你的文字经常变化,你希望每种语言都保持最新状态。
- 您无需为翻译人员付费或等待翻译人员即可获得新语言。
何时选择 react-intl
- 复杂的复数和性别需要 ICU 消息语法。
- 您的翻译必须由他人撰写或审阅。
- 你想要一个没有外部服务的免费开源库。
两者都使用
两者配合得很好。使用 react-intl 或 Intl API 格式化日期、数字和货币,使用 Magic Translate 翻译它们周围的文本。
准备好试试了吗?按照入门指南在五分钟内翻译您的第一个组件。