国际化
为你的应用添加多语言支持。使用 Proyecta Content API 进行内容本地化,或让 AI 直接在代码中接入 i18n 框架。
Proyecta 支持两种互补的应用国际化方案:
- 通过 Proyecta Content API 进行内容本地化 — 适用于需要翻译成多种语言的编辑内容(博客文章、FAQ、营销文案)
- 通过翻译框架进行代码层面的 i18n — 适用于 UI 文字、日期、货币及运行时语言切换
两种方案现在都可以使用。选择哪种取决于你要翻译的内容类型。
Proyecta 本身内置了 24 种语言环境,产品层面对 i18n 有完整支持。同样的模式也适用于你在其中构建的应用。
方案一:内容本地化(Proyecta Content API)
Section titled “方案一:内容本地化(Proyecta Content API)”如果你正在构建内容丰富的站点——博客、知识库、营销页面、产品目录——请使用内置的语言环境支持。告诉 AI 你要支持哪些语言("Make the site available in English, Spanish and French"),它就会为你注册好,并以英语作为默认语言。之后即可以访客所用语言读取内容。
在前端,模板中带类型的内容 hooks 会自动解析本地化字段——传入访客当前的语言环境,每个 localized 字段都会返回对应翻译后的单个值:
import { useCollection, useEntry } from '@/hooks/useContent';import { useTranslation } from 'react-i18next';
function Blog({ slug }: { slug: string }) { const { i18n } = useTranslation();
// List a collection in the current locale const { data: posts } = useCollection('posts', { locale: i18n.language });
// Or read one entry by slug in the current locale const { data: post } = useEntry('posts', slug, { locale: i18n.language });
// ...render posts / post}在底层,CMS 会按回退链逐级查找——请求的语言环境 → 配置的回退语言 → 默认语言——并在每条条目的 localeResolved 字段上报告实际返回的语言代码。对于单语言站点,省略 locale 参数,字段将以原始值返回。
适合使用此方案的场景:
- 不会写代码的编辑人员需要翻译内容
- 你希望翻译内容可以进行版本管理
- 你需要针对特定语言环境发布内容(定时发布即将推出——当前条目需通过 API 手动发布)
完整 Content API 请参见内容管理。
方案二:代码层面的 i18n 框架
Section titled “方案二:代码层面的 i18n 框架”对于 UI 文字——标签、按钮、错误提示、日期、货币——可以让 AI 直接在你的项目中接入 i18n 框架:
Add internationalization to my app.Support English, Spanish, French, and Arabic.Add message catalogs in src/locales/.Add a language switcher in the header.Use locale-prefixed URLs like /en/about and /es/about.Make sure RTL layout works correctly for Arabic.AI 会完成以下工作:
- 选择框架 — AI 使用
i18next配合react-i18next(Proyecta 的标准方案) - 创建翻译文件 — 在
src/locales/目录下创建(每种语言对应一个 JSON 文件) - 包裹文本 — 用
t()调用包裹所有文本(来自 react-i18next 的useTranslationhook) - 添加语言切换器 组件
- 配置 URL 路由 — 带语言环境前缀
- 处理 RTL 布局(
dir="rtl"),适用于阿拉伯语、希伯来语等 - 按语言环境格式化数字、日期和货币
用 AI 自动翻译
Section titled “用 AI 自动翻译”基础语言版本完成后,AI 非常擅长生成其他语言的翻译文件:
"Translate every string in src/locales/en.json into Spanish, French, German, and Japanese. Use natural, idiomatic phrasing — don't translate brand names.""My app is fully built in English. Add Spanish translations for everything and an es/ route prefix."
对于高风险内容(法律文本、医疗、金融),在上线前请务必让专业译者审核 AI 的翻译结果。
两种方案结合使用
Section titled “两种方案结合使用”大多数真实应用会同时使用两种方案:用代码层面的 i18n 处理 UI 框架部分(按钮、错误提示、导航),用 Content API 处理编辑内容(文章、产品描述)。两者可以完美共存——i18n 框架在 build 时处理翻译文件,Content API 在运行时提供本地化条目。
- 先确定基础语言,再定稿文案。 翻译一个不断变化的内容非常痛苦。
- 批量翻译。 不要边做边译——等功能稳定后再统一处理。
- 尽早测试 RTL。 如果你支持阿拉伯语或希伯来语,RTL 的问题往往在你真正去看之前都不会暴露。
- 在
<html>上加上lang和dir。 浏览器和屏幕阅读器都依赖这些属性。 - 使用
Intl进行格式化。 不要手动处理日期或货币格式——使用Intl.DateTimeFormat、Intl.NumberFormat。
- Builder 内置语言环境管理 UI — 选择语言环境、查看翻译覆盖率、无需离开 Proyecta 即可编辑翻译文件
- 新字符串保存时自动翻译
- i18n 就绪的项目模板 — 框架已预先配置完毕