Extract parametrized gettext from javascript files #1221
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hello,
I prepared PR which allows extraction of translations from JS files that use gettext function with parameters.
Usually code that uses parametrized translations looks like this:
which works (gets extracted) but problem is with template-strings:
`${gettext("Hello %(user)s", {user: userName})}`
It probably got confused with the curly braces for object initialization and thinks that end of object initialization is end of whole template-string (which is not true - there are 3 more chars). Later this incomplete template string get parsed as JS code again and ends up as incomplete/invalid and the translation is not extracted at all.
My fix is simply marking all
{
as start of "nesting" which allows extraction of non-nested template-strings.I tried to support also nested template-strings but didn't get it to work at all... it needs a bit more complicated parser than just regex and I guess nobody use that atm as I don't see any issue about it.
Hope you find it usefull.
Thanks for review and possibly merge 😉