国际化(Internationalization,i18n)

页面摘要: 国际化直接从管理面板管理多种语言区域的内容。本文档讲解如何添加语言区域、翻译条目,以及控制特定语言区域的权限。

国际化(Internationalization)功能允许你以不同的语言(称为“locales(语言区域)”)管理内容。

  • Plan:免费功能
  • Role & permission:无
  • Activation:可用但默认禁用
  • Environment:在开发与生产环境中均可用

配置

在内容管理器中可用之前,必须从 Settings(设置) 配置国际化功能,并且应该在 Content-type Builder(内容类型构建器) 中为你内容类型启用它。

内容类型构建器

配置该功能的路径: Content-type Builder(内容类型构建器)

为了让你的内容类型能够在内容管理器中通过国际化进行翻译,必须通过内容类型构建器启用该功能。国际化可以为每个内容类型和/或字段配置。

  1. 编辑你选择的已创建内容类型/字段,或创建一个新的内容类型/字段。
  2. 进入 Advanced settings(高级设置) 标签页。
  3. 勾选内容类型级别的“Internationalization(国际化)”选项,以及字段级别的“Enable localization for this field(为此字段启用本地化)”。

内容类型构建器的高级设置

设置

配置该功能的路径: Settings > Global Settings > Internationalization

Internationalization(国际化) 界面显示一个表格,列出 Strapi 应用程序可用的所有语言区域。默认情况下,仅配置了英语语言区域并将其设为默认语言区域。

对于每个语言区域,表格显示该语言区域的默认 ISO 代码、其可选的显示名称,并指示该语言区域是否被设为默认语言区域。从表格中,管理员还可以:

  • 点击编辑按钮 来编辑一个语言区域
  • 点击删除按钮 来删除一个语言区域
WARNING

删除一个语言区域也会删除该语言区域中所有内容类型已保存的内容。这无法撤销:在删除语言区域之前,请导出你的内容或备份你的数据库。

添加新的语言区域

管理员可以添加并管理任意数量的语言区域。不过,整个 Strapi 应用程序只能有一个语言区域被设为默认语言区域。

NOTE

无法创建自定义语言区域。语言区域只能基于 Strapi 预设的 500 多个语言区域列表 创建。

  1. 点击 Add new locale(添加新语言区域) 按钮。
  2. 在添加语言区域的窗口中,从 Locales(语言区域) 下拉列表中选择你的新语言区域。后者按字母顺序列出所有可以添加到你的 Strapi 应用程序的语言区域,显示为它们的 ISO 代码。
  3. (可选)在 Locale display name(语言区域显示名称) 文本框中,为你的新语言区域填写新的显示名称。
  4. (可选)在 Advanced settings(高级设置)标签页中,勾选 Set as default locale(设为默认语言区域) 设置,使你的新语言区域成为 Strapi 应用程序的默认语言区域。
  5. 点击 Save(保存) 按钮以确认添加你的新语言区域。

使用 i18n 添加新语言区域

启用由 AI 驱动的国际化

(Growth 计划)

由 AI 驱动的国际化(AI-Powered Internationalization)在默认语言区域的内容更新时,为项目中的所有语言区域启用自动翻译。这使内容编辑者能够在几秒钟内将其内容翻译成多种语言。

由 AI 驱动的国际化默认禁用。要启用它,请前往 Settings > Global Settings > Internationalization,并将 AI Translations(AI 翻译) 设为 Enabled(已启用)。

国际化设置

基于代码的配置

可以配置一个 STRAPI_PLUGIN_I18N_INIT_LOCALE_CODE 环境变量 来为你的环境设置默认语言区域。此变量使用的值应该是来自 Strapi 预设的 500 多个语言区域列表 的 ISO 国家代码。

使用

使用该功能的路径: Content Manager(内容管理器),你的内容类型的编辑视图

在 内容管理器 中,当为内容类型启用国际化功能后,编辑视图的右上角会添加一个语言区域下拉列表,允许你切换语言区域。

INFO

所选语言区域在内容类型之间导航时会保持。例如,如果你在编辑某个内容类型时选择了西班牙语语言区域,切换到另一个内容类型时会保持选中西班牙语,即使该内容类型没有启用国际化。这使得你可以在整个内容中专注于使用某个特定的语言区域工作。

国际化功能还允许动态区域和组件因语言区域而异。根据语言区域的不同,动态区域确实可以具有不同的结构,可重复组件也可以具有不同的条目并以不同方式组织。

:::caution 内容一次只能管理一个语言区域。无法同时编辑或发布多个语言区域的内容(例如,点击 Publish(发布) 按钮只会发布你当前正在使用的语言区域的内容)。 :::

要翻译另一个语言区域的内容:

  1. 在编辑视图的右上角,点击语言区域下拉列表。
  2. 选择你想要翻译内容的目标语言区域。
  3. 通过填写你内容类型的字段来翻译你的内容。

使用 i18n 管理语言区域

TIP

点击右上角的 Fill in from another locale(从另一个语言区域填充) 按钮,所有字段(包括关系)都会用另一个所选语言区域的值填充。如果你记不清另一个语言区域中的确切内容,这会很有用。如果你启用了 由 AI 驱动的国际化,此按钮不可见,因为翻译由 Strapi AI 自动处理。该功能会获取源文档的最新版本。

(v5.42.1+) 对于可本地化的关系,如果目标语言区域中存在对应条目,Strapi 会自动获取该条目。如果目标语言区域中不存在该关系,则不会被填充。对于不可本地化的关系,则使用完全相同的条目。

由 AI 驱动的国际化

(Growth 计划)

启用后,由 AI 驱动的国际化在源内容更新时,为项目中的所有语言区域启用自动翻译。这使内容编辑者能够在几秒钟内将其内容翻译成多种语言。该功能背后的理念是确保用户仅在默认语言区域手动填写内容,而 Strapi AI 为所有其他现有语言区域翻译它。

一旦启用,每当你在默认语言区域编辑内容类型并点击 Save(保存),该内容类型的所有其他语言区域都应被自动翻译,这会由一条 All locales have been translated(所有语言区域已翻译) 通知确认。使用此功能会消耗 Strapi AI 额度。

使用 AI 驱动的国际化管理语言区域

:::caution 由 AI 驱动的国际化只单向工作,将默认语言区域的内容保持为唯一的真实来源(source of truth)。因此,一旦启用该功能:

  • 编辑并保存非默认语言区域的任何内容,不会触发自动翻译。
  • 当编辑默认语言区域的内容时,对其他语言区域所做的手动修改将被覆盖。 :::
Strapi AI 额度

Strapi AI 在(Growth 计划)下每月包含 1,000 个积分,免费试用期间提供 10 个免费积分。Strapi AI 在 Enterprise 计划上不可用。

轻量操作消耗的积分较少,而更复杂的操作消耗更多。

你可以在管理面板的设置概览中查看积分使用情况。当你的使用量达到月度配额的 80%、90% 和 100% 时,会发送通知。超量使用会额外计费。

积分在同一项目实例的所有用户之间共享。

当积分用完时,你可以继续使用 Strapi AI,超量部分按月计费。关于 Strapi AI 的更多信息,请参阅专门的支持文章。

与 API 配合使用

本地化的内容可以通过 Strapi 的 Content API 提供的各种前端 API,针对给定语言区域进行请求、创建、更新和删除:

  • REST API — 了解如何将 locale 参数与 REST API 配合使用。
  • GraphQL API — 了解如何将 locale 参数与 GraphQL API 配合使用。

在 Strapi 的后端服务器上,文档服务(Document Service)API 也可用于与本地化内容交互: