It's rather disingenuous to say this without mentioning that in gettext, the actual identifier is a combination of the source string and the string context, which is blank by default. But the context can and should be provided in cases where disambiguation is required.
https://www.gnu.org/software/gettext/manual/html_node/Contex...
This, in turn, breaks the design principle #1 of Fluent - https://github.com/projectfluent/fluent/wiki/Design-Principl...
I'll update the Wiki to reflect that!
And using the source string as ID is a pretty clever trick. Of course, there are some downsides, but there are certainly also downsides with separate IDs.
Having said that, Fluent looks interesting.
I have, in fact, been using Gettext for quite a few years, but of course, as you pointed out, I am also biased.
If you have suggestions on how to improve the article to better represent the reality, please, file an issue and provide a PR! Our goal is to express our design differences, but we don't want to mislead anyone!
Especially the advantages and drawbacks of using the source string as a message identifier, compared to a developer provided ID.
I'm wondering if fluent has something similar to xgettext, to extract the IDs from the source code?
Edit: Looks like there is some discussion about extraction here: https://github.com/projectfluent/fluent.js/wiki/React-Bindin...