Description
In recent conversations with @stasm and @mihnita, it's become obvious that especially with more complex messages involving local variables and multiple variants, it is not reasonable to expect a translator unfamiliar and untrained with MF2 syntax to work with the raw plaintext representation of a message and be able to immediately see which parts of it contain the actual message or messages to translate. Consider for instance this example from the current spec:
$countInt = {$count :number maximumFractionDigits=0}
$itemAcc = {$item :noun count=$count case=accusative}
one [You bought {$color :adjective article=indefinite accord=$itemAcc} {$itemAcc}.]
* [You bought {$countInt} {$color :adjective accord=$itemAcc} {$itemAcc}.]
There's so much going on here that it's effectively a necessity to use some form of tooling assistance to extract the two variants from this message and present them individually to a translator, along with the contextual information provided by the rest of the message.
As a consequence, it is not reasonable or beneficial for us to keep this restriction on our design:
The syntax should not use nor reserve any keywords in any natural language, such as
if
,match
, orlet
.
Following #252, we'll need to refactor the current preamble into two parts. When we do that, we should not be afraid of using keywords such as let
and match
in our syntax, esp. as it seems we have something like a consensus forming in #256 on starting in "code" mode, where such terms would be quite natural.
This change will help us reach a syntax that's easier to read and which has slightly fewer mysterious symbols and sigils that need to be deciphered.