Skip to content
Apothem

国际化(i18n)

Apothem 文档站点如何声明其语言区域集合、发出 hreflang 备用语言链接、处理从右到左的渲染,并诚实地揭示翻译缺口。

本页面记录了 Apothem 文档站点如何处理多语言:它所声明的语言区域集合、 它所发出的 hreflang 机制、它的从右到左就绪状态,以及各语言区域翻译的 诚实现状。

决策摘要

  • 平台:Next.js App Router + Fumadocs。 站点从 site/ 构建而来。 语言区域集合在 site/lib/i18n.ts 中声明,备用语言链接机制位于 site/lib/hreflang.ts
  • 语言区域集合:已声明。 由十二个语言区域组成的现代开发者集合 被声明为规范的真实来源,以英文作为源语言区域。
  • 各语言区域路由:尚未启用。 在仅有英文内容时就为整个集合启用带 语言区域前缀的路由,会产生十一条无内容的路由,它们会静默回退到英文 源。这正是 i18n 纪律所禁止的那种静默的「仅英文」漂移,因此在经过审校的 翻译内容落地之前,路由保持单一语言区域。
  • hreflang 机制:已激活。 每个页面都会发出一组 <link rel="alternate">, 覆盖每个已撰写内容的语言区域,加上一个 x-default 回退。尚待翻译的 语言区域会被省略 —— 绝不指向英文回退 —— 这样搜索引擎就会被准确地 告知该翻译不存在。
  • 从右到左就绪状态:已就位。 共享样式表全程使用逻辑 CSS 属性, 因此一旦阿拉伯语内容落地,阿拉伯语页面会在 dir="rtl" 下正确渲染。
  • 机器翻译策略:未经审校的不发布。 没有任何机器翻译的页面正文会被 发布。翻译由机器播种,并在任何语言区域被标记为已翻译之前以人工审校 为闸门。

语言区域集合

现代开发者集合声明了十二个语言区域。英文在站点根目录提供;十一个目标 语言区域被声明出来,以使技术栈具备国际化就绪能力,并让翻译缺口显式 而非静默。

代码路径语言方向内容
en/英文LTR已翻译(源)
zh-CN/zh-cn/简体中文LTR待定
es/es/西班牙文LTR待定
pt-BR/pt-br/巴西葡萄牙文LTR待定
fr/fr/法文LTR待定
de/de/德文LTR待定
ja/ja/日文LTR待定
ko/ko/韩文LTR待定
ru/ru/俄文LTR待定
id/id/印尼文LTR待定
ar/ar/阿拉伯文RTL待定
hi/hi/印地文LTR待定

该集合是唯一的真实来源;对它的修订须经过深思熟虑的决策,绝不通过静默 编辑进行。

hreflang 如何工作

site/lib/hreflang.ts 构建了 alternates.languages 映射,Next.js 将其渲染进 每个页面的 <head>。它的构建遵循一条规则:仅当某语言区域已撰写内容时, 发出该语言区域的备用语言链接。由于英文是当今唯一已翻译的语言区域, 每个页面恰好发出两条链接:

<link rel="alternate" hreflang="en" href="https://apothem.ahmedgad.com/..." />
<link rel="alternate" hreflang="x-default" href="https://apothem.ahmedgad.com/..." />

页面的 canonical 链接始终是它自身的 URL —— 它绝不跨语言区域指向。 随着某语言区域的内容落地,并且其状态在 site/lib/i18n.ts 中翻转为已翻译, 该语言区域的 hreflang 链接便开始自动发出,并在同一变更集中启用该语言 区域的路由。

从右到左渲染

阿拉伯语是该集合的从右到左语言区域。站点已为其做好准备:

  • 仅使用逻辑 CSS 属性。 共享样式表与组件使用逻辑属性 (margin-inline-startpadding-inline-endtext-align: startinset-inline-start),而非物理属性(margin-lefttext-align: left)。 逻辑属性在 dir="rtl" 下自动翻转,因此同一份样式表能正确服务于两个 方向。
  • 方向属性。 一旦阿拉伯语内容落地,阿拉伯语页面会在 <html> 元素上 设置 dir="rtl" 并与 lang="ar" 并列。
  • 双向内容。 混合方向的字符串 —— 例如阿拉伯语段落中的一条英文命令 —— 会被包裹在 <bdi> 中,使嵌入的从左到右段在从右到左的流中正确渲染。

添加一种翻译

要将站点翻译成集合中的某个语言区域:

  1. 为该语言区域撰写经过审校的翻译页面。
  2. site/lib/i18n.ts 中将该语言区域的内容状态翻转为已翻译。
  3. 它的 hreflang 链接开始发出,且其路由变得可达。

在某语言区域的翻译被撰写并审校完成之前,保持英文页面为真实来源。 没有任何机器翻译内容会未经审校就发布。

当前状态与通往已翻译语料库的路径

如今站点已具备国际化就绪能力,但内容上仅有英文。基础设施 —— 集合声明、 hreflang 机制、逻辑 CSS 从右到左就绪 —— 已就位;但各语言区域的翻译 语料库尚未就位。完全翻译的语料库属于功能层级的工作:每个语言区域的 页面先由机器播种,然后经人工审校,并且一个发布只有在每个语言区域都 通过其审校阈值之后,才算国际化生产就绪。在那之前,集合已被声明、缺口 可见,且没有任何未经审校的翻译会发布。

On this page