Enumerations

Enumerations eliminate a lot of UI code duplication while enabling accurate translations. <fbt:enum> and fbt::enum both provide the ability to add your ad-hoc enumerations.

Adhoc enums

Adhoc enums can be provided inline to the enum-range attribute or as the second parameter to fbt::enum.

Enum map

<fbt desc="buy prompt">
Buy a new
<fbt:enum enum-range="{{ json_encode([
'CAR' => 'car',
'HOUSE' => 'house',
'BOAT' => 'boat',
'HOUSEBOAT' => 'houseboat',
]) }}" value="{{ $enumVal }}" />!
</fbt>
fbt(
'Buy a new ' .
fbt::enum($enumVal, [
'CAR' => 'car',
'HOUSE' => 'house',
'BOAT' => 'boat',
'HOUSEBOAT' => 'houseboat',
]),
'buy prompt',
);

Shorthand array (keys = values)

The shorthand array adhoc enum functions as though you had a [value => value] map.

<fbt desc="buy prompt">
Buy a new
<fbt:enum enum-range="{{ json_encode([
'car', 'house', 'boat', 'houseboat'
]) }}" value="{{ $enumVal }}" />!
</fbt>
fbt(
'Buy a new ' . fbt::enum($enumVal, ['car', 'house', 'boat', 'houseboat']) . '!',
'buy prompt',
);

All the above examples extract the same 4 separate strings for translation in JSON like:

{
"phrases": [
{
"hashToText": {
"b463748f978f242787f5f225a7762aeb": "Buy a new car!",
"1255ecb7aa0a34b8755d4f068c9b9c41": "Buy a new house!",
"7c01d5d74f6e3c8eda0b166a366b937e": "Buy a new boat!",
"7a7776e292838b6fe8c4a7dfd58117cd": "Buy a new houseboat!"
},
...,
"desc": "buy prompt",
...
},
Last updated on by Richard Dobroň