跳转到内容

国际化

为你的应用添加多语言支持。使用 Proyecta Content API 进行内容本地化,或让 AI 直接在代码中接入 i18n 框架

Proyecta 支持两种互补的应用国际化方案:

  1. 通过 Proyecta Content API 进行内容本地化 — 适用于需要翻译成多种语言的编辑内容(博客文章、FAQ、营销文案)
  2. 通过翻译框架进行代码层面的 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 请参见内容管理

对于 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 会完成以下工作:

  1. 选择框架 — AI 使用 i18next 配合 react-i18next(Proyecta 的标准方案)
  2. 创建翻译文件 — 在 src/locales/ 目录下创建(每种语言对应一个 JSON 文件)
  3. 包裹文本 — 用 t() 调用包裹所有文本(来自 react-i18next 的 useTranslation hook)
  4. 添加语言切换器 组件
  5. 配置 URL 路由 — 带语言环境前缀
  6. 处理 RTL 布局(dir="rtl"),适用于阿拉伯语、希伯来语等
  7. 按语言环境格式化数字、日期和货币

基础语言版本完成后,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 的翻译结果。

大多数真实应用会同时使用两种方案:用代码层面的 i18n 处理 UI 框架部分(按钮、错误提示、导航),用 Content API 处理编辑内容(文章、产品描述)。两者可以完美共存——i18n 框架在 build 时处理翻译文件,Content API 在运行时提供本地化条目。

  1. 先确定基础语言,再定稿文案。 翻译一个不断变化的内容非常痛苦。
  2. 批量翻译。 不要边做边译——等功能稳定后再统一处理。
  3. 尽早测试 RTL。 如果你支持阿拉伯语或希伯来语,RTL 的问题往往在你真正去看之前都不会暴露。
  4. <html> 上加上 langdir 浏览器和屏幕阅读器都依赖这些属性。
  5. 使用 Intl 进行格式化。 不要手动处理日期或货币格式——使用 Intl.DateTimeFormatIntl.NumberFormat
  • Builder 内置语言环境管理 UI — 选择语言环境、查看翻译覆盖率、无需离开 Proyecta 即可编辑翻译文件
  • 新字符串保存时自动翻译
  • i18n 就绪的项目模板 — 框架已预先配置完毕