If f-strings are always eagerly interpolated
prior to translation, then I can foresee a lot of complaints from
folks asking why this doesn't work right:
print(_(f"This is a translated message with {a} and {b} interpolated"))
What if we decide to lazy-interpolate f-strings?
A creation of such an f-string, creates an f-string object. (Which has a proper __repr__, so that it's transparent for those that don't care.)
Calling the __str__ method of the f-string triggers the interpolation.
This should give enough freedom to implement a working ugettext.
(But I still don't see any reason to go beyond supporting more than just is simple variable name between the curly braces...)