全部文章

FourA 简报 (2026 年 6 月 19 日至 6 月 26 日)

foura.ai 现在支持六种语言:URL 前缀路由、本地化感知的 SEO 和 hreflang,以及在浏览器中渲染为样式化表格的 XSLT sitemap。

亮点

foura.ai 现在支持六种语言。该网站、Dashboard chrome 以及九个营销页面均已提取、翻译并重新配置,以便根据 URL 提供正确的本地化版本。在浏览器中打开 sitemap,它会渲染为样式化表格,而不是原始的 XML。

新增功能

网站支持六种语言

英语、保加利亚语、德语、波兰语、越南语和中文。URL 前缀路由意味着每个本地化版本都位于其专属路径下:/de//pl//zh/ 等。根路径提供英文版本,/en/ 会重定向至该路径,因此每个英文页面只有一个规范 URL。顶部导航栏中的地球图标允许您进行切换,并且您的选择会在不同页面间保持。

服务端渲染为 SEO 承担了大部分繁重工作。现在,每个页面都附带正确的 lang 属性、完整的 hreflang 设置、特定于本地化的 Open Graph 元数据,以及本地化的 <title><meta description>。sitemap 展示了每个本地化版本下的所有 URL。偏好特定本地化版本的搜索引擎 (百度需要中文,波兰版搜索引擎需要波兰语) 现在可以在首次抓取时获取正确的页面。

ICU 复数形式按预期工作。“1 API key” 保持单数,“2 API keys” 变为复数,且规则因语言而异。波兰语有三种复数形式,英语有两种,中文有一种。运行时解析器使用 Intl.PluralRules (一个内置的浏览器 API),因此不会向您的 bundle 中添加任何额外内容。

如果您阅读英文版本,视觉上不会有任何变化。您的 URL 仍保持原样。

Playground UI 已本地化

Playground 工具中大约 80 个字符串 (标签、提示、占位符、工具提示) 现在会遵循您选择的本地化设置。技术内容特意保持英文:HTTP 方法名称、代码示例、JSON 键、header 名称、状态码以及您粘贴到 request 中的值在每个本地化版本中都完全相同。它们周围的 UI 使用您的语言,而传输的数据保持英文。

这种分离至关重要。在不使用相同母语的团队中,任何人跨团队调试 request 时,仍可以复制 request body 并将其与文档进行比对,而不会产生翻译偏差。

Sitemap 渲染为表格

https://foura.ai/sitemap.xml 拖入浏览器标签页,您将看到一个采用 FourA 深色主题的样式化表格,而不是原始的 XML。我们添加了一个 XSLT 样式表,它可以同时处理单个 sitemap 和 sitemap 索引。

我们需要它的原因在于:一旦出现 <xhtml:link> 备用本地化条目,浏览器就会停止将本地化 sitemap 渲染为其内置的样式化树。我们面临的选择是,要么发布不带备用条目的 sitemap (并失去将不同本地化版本联系在一起的 SEO 信号),要么渲染我们自己的样式。因此我们选择了后者。爬虫会忽略样式表并像以前一样解析 XML,因此对它们没有任何影响。

sitemap 是真实网站上的真实页面。它应该看起来像一个真正的页面。

技术内幕

翻译来自自动化流水线。我们只提交英文源字符串;在合并到 main 分支时,流水线会生成所有其他本地化版本并提交结果。文案修改只需在一个地方进行,即可传播到六种语言中。

有一个值得一提的 Bug 修复。由于构建阶段缺少 locales 目录,首次本地化部署曾短暂地将原始翻译占位符发布到了生产环境 (您会在本应显示标题的地方看到 home.h1a)。我们定位并修复了该问题,使构建过程在生成 bundle 之前先读取 locales 目录,从而避免此问题再次发生。

从结构上讲,一个支持六种语言的网站相当于六个不同的网站。当正确的本地化版本以正确的元数据到达正确的 URL 时,搜索引擎、屏幕阅读器以及在华沙用波兰语进行 Google 搜索的客户都将从中受益。传输的数据保持不变,而界面则在每个读者所在之处与他们相遇。