跳转至主要内容
徽章

标题

副标题

i18n · once

标题

  • 区域标识符(BCP 47)
  • Unicode 和 UTF-8
  • 翻译键
  • 复数形式(ICU)
t("cart.items", { count })

L10n · per locale

标题

  • tr-TRreviewed
  • de-DEreviewed
  • ja-JPin review
  • ar-EGrtl · queued

Foundations

标题

副标题

标题

段落1

第2段

段落3

标题

段落1

第2段

段落3

  • 区域标识符(BCP 47)

    BCP 47 标签(如 en-US 或 zh-Hans-CN)用于编码语言、字符集和地区。它们是所有国际化(i18n)系统的基石,决定了应应用哪些翻译、格式和规则。

  • Unicode 和 UTF-8

    Unicode 为每种文字体系中的每个字符分配了一个唯一的码点。UTF-8 是网络上最主流的编码格式,它能确保文本无论使用何种语言都能正确显示。

  • 翻译键

    翻译键是稳定的标识符,用于映射到特定语言环境的字符串。它们将源代码与可翻译内容解耦,从而支持开发与翻译的并行进行。

  • 复数形式(ICU)

    不同语言的复数规则各不相同——英语有两种形式,阿拉伯语则有六种。ICU MessageFormat 通过单一语法即可处理复数、性别和选择表达式。

  • RTL 支持

    阿拉伯语、希伯来语及其他从右向左书写的文字。要支持从右向左(RTL)布局,需要镜像布局、翻转图标,并使用 CSS 逻辑属性代替 left/right。

  • 日期 / 编号 / 货币

    日期、数字和货币的格式因地区而异。Intl API 以及 date-fns 等库提供了支持地区设置的格式化功能,因此 1,000.50 在德语中会显示为 1.000,50。

标签

标题

副标题

JSON

.json

React · Vue · Angular

在 Web 应用(React、Vue、Angular)中最为流行。易于人类阅读,支持嵌套以构建有序的键值结构。没有内置的复数形式生成标准,因此 ICU MessageFormat 等库填补了这一空白。

XLIFF

.xlf

TMS interchange

基于 XML 的行业标准,用于不同工具之间的翻译数据交换。所有专业翻译管理系统 (TMS) 平台均支持该标准。虽然格式较为冗长,但功能丰富,内置了对备注、状态跟踪和元数据的支持。

PO/POT(Gettext)

.po / .pot

Python · PHP · Ruby

Python、PHP 和 Ruby 生态系统中常用的经典开源格式。内置复数支持,并采用专用的复数形式语法。受到翻译人员和翻译工具的广泛支持。

ARB

.arb

Flutter · Dart

Application Resource Bundle 是 Flutter 和 Dart 的标准格式。该格式基于 JSON,并支持 ICU 消息语法,原生支持复数形式和下拉菜单。Flutter 的 gen-l10n 工具集即采用此格式。

.strings / .stringsdict

.strings

iOS · macOS

适用于 iOS 和 macOS 开发的 Apple 平台原生格式。.strings 处理简单的键值对,而 .stringsdict 则采用 XML plist 结构来处理复数形式规则。

.resx

.resx

.NET · C#

.NET 资源文件格式,用于 C# 和 VB.NET 应用程序。基于 XML,并与 Visual Studio 工具集深度集成。支持字符串、图像及其他资源的类型化资源。

徽章

标题

副标题

  1. 审核您的代码库找出所有硬编码的字符串、日期格式和与区域设置相关的模式。确定哪些组件和页面包含需要提取的面向用户的文本。
  2. 将字符串外部化将所有面向用户的文本移至结构化资源文件(JSON、XLIFF 或 PO)中。用调用翻译函数并引用键的方式替换内联字符串。
  3. 选择您的工具为您的框架选择一个国际化(i18n)库,选择一个用于协作的翻译管理系统(TMS),并决定采用人工翻译、AI翻译还是混合翻译工作流。
  4. 集成与发货将您的 i18n 库集成到路由和渲染中,将 TMS 连接到 CI/CD 系统以实现自动同步,并通过 CDN 部署语言包以实现快速交付。

标题

副标题

  • 所有面向用户的字符串均已移至资源文件中
  • 已实现区域检测(浏览器、URL、用户偏好设置)
  • 所有目标语言的复数形式均通过 ICU MessageFormat 处理
  • 日期、时间、数字和货币的格式化使用 Intl API 或其等效功能
  • 已测试使用 CSS 逻辑属性支持 RTL 布局
  • 为缺失的翻译配置了备用区域设置
  • 翻译键遵循一致的命名规范
  • CI 管道会验证是否存在缺失或未使用的翻译键

徽章

标题

副标题

  • 开发者集成

    评估命令行工具、SDK 支持、基于 Git 的工作流以及 CI/CD 集成点。优秀的 TMS 平台能够直接集成到您的开发流程中,从而确保翻译内容能与代码变更自动保持同步。

  • 翻译记忆库

    翻译记忆库会存储已获批准的译文,并在遇到相似或相同的字符串时提供翻译建议。这有助于降低翻译成本、加快交付速度,并确保产品整体的一致性。

  • 协作功能

    请关注审核工作流程、内嵌评论、共享词汇表和审批链。这些功能使译者、审核人员和开发者能够协作,不会产生瓶颈或沟通误解。

  • AI 与自动化

    现代 TMS 平台提供机器翻译建议、自动化质量检查、批量操作和智能路由。AI 辅助工作流程在保持翻译质量的同时减少了人工工作量。

Quality

标题

副标题

  • 字符串连接

    在词序不同的语言中,通过拼接片段来构建句子会导致语法不通顺。请改用 ICU MessageFormat 并配合占位符。

  • 硬编码字符串

    如果将面向用户的文本直接嵌入源代码中,就无法在不修改代码的情况下进行翻译。请从一开始就将所有字符串提取出来。

  • 忽略复数形式

    仅针对单数/复数的简单 if/else 语句仅适用于英语。许多语言拥有多种复数形式,需要遵循正确的 ICU 复数规则。

  • 事后才想到的翻译

    在产品发布后才仓促添加国际化功能,意味着需要进行耗费巨大的重构。从一开始就为国际化进行设计,既能节省时间,又能避免架构债务。

标题

副标题

  • 伪本地化
  • 视觉测试
  • 自动化
  • 语言测试
  • 扩展

By framework

标题

副标题

徽章

标题

副标题

标题

副标题