Fbt 已升级至 v1.0.0

“我们成年啦!🥳🥂🍺🎉”

两年多的时间里,我们一直在对 JS Fbt 库进行重大重构。 这个项目经过了 600 多个内部代码审查,并帮助识别了 facebook.com 域名上数千个需要重新翻译的字符串。 2022 年 1 月 26 日,我们将其部署在 facebook.com 上,一个月后,部署在 Android 和 iOS 平台的 Facebook 移动应用程序的 React Native 视图上。 已经有足够的时间认为此版本是稳定的。

这个新版本显著提高了从我们的 www 和 RN 上的 JS 代码库中提取的字符串的准确性; 因此,为翻译人员提供了更好的机会来生成高质量的翻译。

我们现在准备将其作为 JS Fbt 库的 v1.0.0 发布!

有什么变化?

主要功能

🚨 重大变更: 由于以下重大更改,fbt-collect 脚本可能会提取需要重新翻译的新字符串。 请参阅 此页面,了解有关如何升级的更多信息。

  1. 包含嵌套 React 元素(“富内容 fbt 字符串”)的字符串现在将产生更准确的字符串描述。

    为什么?
    虽然旧版本的 fbt 库已经能够进行“自动参数化”,但它存在很多错误,并且导致生成无意义的字符串 - 从而导致翻译质量问题,因为翻译人员将缺乏必要的文本上下文来完成他们的工作。

    例如,提取的字符串可能显示为 "{=} 上传了 {=one photo} 您尚未见过的照片。" 谁或什么是 {=}? 如果有很多照片,复数情况会怎样?

    用于为我们的嵌套 fbt 字符串生成描述的旧算法有时会遗漏关键词,并且无法跟踪由特殊的 fbt 构造(例如 <fbt:pronoun>(例如 he/she/they))发出的字符串变体。

    在 Facebook 网站的规模上,我们确定了可以通过此重大 fbt 更新来改进的数千个字符串。

  2. 修复了对空格字符的处理。

    为什么?
    在旧的 Fbt 库版本中,我们注意到空格字符(即 &nbsp; 字符)从文本和描述中被静默删除。 出于 UI 布局的目的,有时需要使用它们,因此我们确保现在可以正确保留它们。

    • ⚠️ 您仍然应该确保翻译人员了解它们的存在,以便他们也可以在他们的翻译中保留它们。

次要功能

  1. 添加了使用 fbs API 编写纯文本 fbt 字符串的功能
    有时,我们需要确保某些可本地化的字符串仅由纯文本组成。 例如,文本输入字段的 placeholder HTML 属性。为此,我们引入了 fbs API 来定义纯文本字符串。
  2. 添加了向 <fbt> / fbt() 调用点公开任意选项的功能。
    它使 fbt 用户可以自定义在客户端生成 FbtResult 对象的方式。
  3. 支持没有值的 fbt common 属性

致谢

这个主要版本是我两年多来努力的成果,并且要感谢 John Watson(@jrwats)和 Yisong Qin(@pkqinys)的帮助。

作为 JS Fbt 库的原始维护者,John 帮助我更好地理解了原始代码库的字符串提取和翻译工作流程,并且在我为该项目设计高级技术解决方案时,是一个很好的倾听者。 他还通过将更多的 JS Fbt 代码与 Meta 基础设施的其余部分分离,帮助改善了整体开发人员体验。 非常感谢 Yisong Qin - 他于 2021 年加入 - 帮助我将这个项目推向终点。 他通过重写 fbt 客户端代码生成器和 OSS 翻译有效负载导入器的重要部分做出了重大贡献; 尽管在 Meta 基础设施层面上还有更多的事情。 虽然对 node.js 编程不熟悉,但他表现出了从头开始学习它所需的勇气,并对项目成果产生了重大影响。

🕊 最后,我们希望您在使用 JS Fbt 库的最新版本时能找到更好的价值。 请随时通过评论此帖子或在Github上开设新的讨论帖来分享任何问题/反馈。

干杯!

David (@kayhadrin)

FBT 是什么意思?

可能Facebook Translation?
但是,即使在内部,我们也从未使用过该术语。 它总是被称为“FBT”。

发布

FBT i18n 框架已发布! 去试试吧!