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 库已经能够进行“自动参数化”,但它存在很多错误,并且导致生成无意义的字符串 - 导致翻译质量问题,因为翻译人员将缺乏必要的文本上下文来完成他们的工作。例如,提取的字符串可能显示为
"{=} uploaded {=one photo} that you haven't seen yet."
{=}
是谁或什么? 如果有很多照片,复数形式会怎么样?用于为我们的嵌套 fbt 字符串生成描述的旧算法有时会缺少关键词,并且无法跟踪由特殊 fbt 构造(例如
<fbt:pronoun>
(例如he
/she
/they
))发出的字符串变体。在 Facebook 网站的规模上,我们发现了数千个可以通过此重大 fbt 更新来改进的字符串。
修复了对空白字符的处理。
为什么?
在旧版本的 Fbt 库中,我们注意到空白字符(即
字符)从文本和描述中被静默删除。 出于 UI 布局的目的,有时需要使用它们,因此我们确保它们现在可以正确保留。- ⚠️ 您仍然应该确保翻译人员了解它们的存在,以便他们也可以在他们的翻译中保留它们。
次要功能
- 添加了使用
fbs
API 编写纯文本 fbt 字符串的功能
有时,我们需要确保某些可本地化字符串仅由纯文本组成。 例如,文本输入字段的placeholder
HTML 属性。 为此,我们引入了fbs
API 来定义纯文本字符串。 - 添加了向
<fbt>
/fbt()
调用点公开任意选项的功能。
它使 fbt 用户可以自定义如何在客户端生成FbtResult
对象。 - 支持没有值的 fbt
common
属性
鸣谢
这个主要版本是我 2 年多工作的成果,并且在 John Watson (@jrwats) 和 Yisong Qin (@pkqinys) 的帮助下才得以实现。
作为 JS Fbt 库的原始维护者,John 帮助我更好地理解了原始代码库的字符串提取和翻译工作流程,并且在我为该项目设计高级技术解决方案时,他是一个很好的倾听者。 他还通过将更多 JS Fbt 代码与 Meta infra 的其余部分分离来帮助改善整体开发者体验。 非常感谢 Yisong Qin - 他于 2021 年加入我们 - 帮助我将这个项目推向终点。 他通过重写 fbt 客户端代码生成器和 OSS 翻译有效负载摄取器的重要部分做出了重大贡献; 尽管在 Meta-infra 级别还有更多事情。 尽管他是 node.js 编程的新手,但他表现出了从头开始学习的毅力,并对项目成果产生了巨大影响。
🕊 最后,我们希望您在使用 JS Fbt 库的最新版本中发现更好的价值。 请随时通过评论此帖子或打开 Github 上的新讨论主题分享任何问题/反馈。
干杯!
David (@kayhadrin)