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
脚本可能会提取需要重新翻译的新字符串。 请参阅 此页面,了解有关如何升级的更多信息。
包含嵌套 React 元素(“富内容 fbt 字符串”)的字符串现在将产生更准确的字符串描述。
为什么?
虽然旧版本的 fbt 库已经能够进行“自动参数化”,但它存在很多错误,并且导致生成无意义的字符串 - 从而导致翻译质量问题,因为翻译人员将缺乏必要的文本上下文来完成他们的工作。例如,提取的字符串可能显示为
"{=} 上传了 {=one photo} 您尚未见过的照片。"
谁或什么是{=}
? 如果有很多照片,复数情况会怎样?用于为我们的嵌套 fbt 字符串生成描述的旧算法有时会遗漏关键词,并且无法跟踪由特殊的 fbt 构造(例如
<fbt:pronoun>
(例如he
/she
/they
))发出的字符串变体。在 Facebook 网站的规模上,我们确定了可以通过此重大 fbt 更新来改进的数千个字符串。
修复了对空格字符的处理。
为什么?
在旧的 Fbt 库版本中,我们注意到空格字符(即
字符)从文本和描述中被静默删除。 出于 UI 布局的目的,有时需要使用它们,因此我们确保现在可以正确保留它们。- ⚠️ 您仍然应该确保翻译人员了解它们的存在,以便他们也可以在他们的翻译中保留它们。
次要功能
- 添加了使用
fbs
API 编写纯文本 fbt 字符串的功能
有时,我们需要确保某些可本地化的字符串仅由纯文本组成。 例如,文本输入字段的placeholder
HTML 属性。为此,我们引入了fbs
API 来定义纯文本字符串。 - 添加了向
<fbt>
/fbt()
调用点公开任意选项的功能。
它使 fbt 用户可以自定义在客户端生成FbtResult
对象的方式。 - 支持没有值的 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)