Magic Translate vs. i18next
i18next 带有 React 绑定 react-i18next,是 JavaScript 中最受欢迎的开源 i18n 库。它围绕翻译密钥和语言文件构建。Magic Translate 直接翻译组件中的文本,无需密钥或文件。此页面解释了区别,因此您可以为应用程序选择正确的工具。
一目了然
| Magic Translate | i18next | |
|---|---|---|
| 你如何写文字 | 你自己的话,包裹在 <T> 中 | 每个文本的密钥,例如 t('cart.title') |
| 翻译 | 机器翻译,自动创建 | 你或你的翻译者写的 |
| 语言文件 | 无 | 每种语言和命名空间一个文件 |
| 新语言 | 更改 language 设置 | 将所有密钥翻译成新语言 |
| 服务器渲染 | React 服务器组件和 Next.js | 是的,需要额外的设置 |
| 复数和格式 | 作为句子的一部分翻译 | 内置,每种语言都有复数规则 |
| 价格 | 免费套餐,然后根据使用量订阅月度套餐 | 开源且免费 |
代码有何不同
使用 react-i18next,您可以为每种语言保留一个语言文件并按键引用文本:
// locales/en/translation.json{ "cart": { "title": "Your shopping cart" } }// Cart.tsximport { useTranslation } from 'react-i18next';const Cart = () => {const { t } = useTranslation();return <h2>{t('cart.title')}</h2>;};
使用 Magic Translate 时,文本将保留在组件中:
import { T } from '@magic-translate/react';const Cart = () => (<h2><T>Your shopping cart</T></h2>);
何时选择 Magic Translate
- 您希望您的应用程序支持多种语言,而无需管理语言文件。
- 你没有翻译人员,或者你不想等他们再发布新版本。
- 你的文字经常变化,你希望每种语言都保持最新状态。
- 你使用 React Server Components 或 Next.js,想要为搜索引擎提供经过全面翻译的 HTML。
何时选择 i18next
- 每篇文章都必须由一个人翻译或审阅。
- 你需要精确控制每种语言的复数形式、日期和数字。
- 你想要一个没有外部服务的免费开源库。
从 i18next 移至 Magic Translate
一次可以切换一个组件。将 t('key') 替换为语言文件中的英文文本,用 <T> 包装,或者使用 useT hook 表示 props 和属性。迁移时,这两个库可以并行运行。
准备好试试了吗?按照入门指南在五分钟内翻译您的第一个组件。