Fix bug 1563677: Escape selectors in data-expression attributes #1334
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.
Translating a string like this in the rich editor is not possible - it results in an
Expected literal
error upon saving:What's going on?
Pontoon doesn't show selectors (in this case
NUMBER($var, type: "ordinal")
) in the rich editor, but still stores them in DOM to help with serialization. Specifically, it naïvely puts them indata-expression
attributes, without any escaping.So when the selector contains quotes, like in our example, content gets stripped upon serialization, resulting in the above error. The serialized string looks like this:
A test case:
https://github.com/mozilla-l10n/pontoon-ftl/blob/master/en-US/demo.ftl#L53