参数和插值

动态文本和其他标记的插值通过 FBT 框架中的 <fbt:param>fbt.param 来完成

<fbt desc="参数示例">
你好,
<fbt:param name="name">{person.getName()}</fbt:param>。
</fbt>
fbt('你好,' + fbt.param('name', person.getName()), '参数示例')

这些都提取到以下相同的文本

"你好,{name}"

令牌用上面的大括号分隔,并且期望翻译对于任何给定的 fbt 调用站点保持相同的总令牌计数和相同的令牌名称

必需属性

  • name string: 令牌的名称

可选属性

  • gender IntlVariations.GENDER_*
    • 传递参数的性别以获得正确变化的文本。
  • number number|true
    • number 类型的值传递到 number 选项中会将该值用作我们确定CLDR 复数形式值的输入。
    • 您可以传递 true 以简单地使用参数值(与替换令牌的值相同)。

fbt.name

<fbt:name> 只是 fbt:param 的一种特殊形式,它 要求 您传入插值变量的性别。

<fbt desc="参数示例">
你好,
<fbt:name name="name" gender={person.getGender()}>{person.getName()}</fbt:name>。
</fbt>

在这里,性别必须是 IntlVariations 中 3 个支持的性别值之一

IntlVariations = {
...,
GENDER_MALE: 1,
GENDER_FEMALE: 2,
GENDER_UNKNOWN: 3
}

重复令牌

FBT 中禁止使用具有相同名称但不同值的令牌。 如果您希望出现相同的插值,则必须使用 fbt:same-paramfbt.sameParam。 这种构造只接受一个名称,没有值,因为第一个实例的值被重用于第二个令牌。

<fbt desc="参数示例">
<fbt:name name="name" gender={gender}>
{<a href="#">{name}</a>}
</fbt:name>
分享了一个链接。 告诉
<fbt:same-param name="name" />
你喜欢它。
</fbt>
fbt(
fbt.name(
'name',
<a href="#">{name}</a>,
gender
) +
' 分享了一个链接。 告诉 ' + fbt.sameParam('name') + ' 你喜欢它。',
'参数示例'
)
上次更新时间: by David