Skip to content

Drop restriction on using keywords in the syntax #286

Closed
@eemeli

Description

@eemeli

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, or let.

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    blocker-candidateThe submitter thinks this might be a block for the next releasesyntaxIssues related with syntax or ABNF

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions