参数和插值
动态文本和其他标记的插值通过 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-param
或 fbt.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') + ' 你喜欢它。',
'参数示例'
)