Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix template texts localizing/escaping #641

Merged
merged 14 commits into from
May 16, 2024
Merged

Fix template texts localizing/escaping #641

merged 14 commits into from
May 16, 2024

Conversation

matiasbenedetto
Copy link
Contributor

@matiasbenedetto matiasbenedetto commented May 15, 2024

What?

Fix template texts localizing/escaping.

Fixes: #632

Why?

The current implementation consisting of:

  1. Collect all the strings from the templates markup using regex.
  2. Search and replace the strings collected.

This approach is flawed because it fails, for example, when there are substrings. The problem is explained in this comment: #632 (comment)

☣️ The severity of the problem is high because the resulting templates/patterns are broken because the plugin is producing invalid markup.

How?

This PR improves the approach around escaping block strings for translation. It avoids the substring problem by just considering the HTML content block by block.
The new implementation consist of:

  1. Parse the template markup with the core's function parse_blocks().
  2. In the blocks that can contain text, use regex to update the HTML content of the block 'innetContent' property with the escaped text.
  3. Serialize the template blocks to markup again using core's serialize_blocks() function.
This test is only possible with the flawed way of editing the templates markup previously used.

Characters like '<' '>' are encoded by core for secutiry reasons
See: https://github.com/WordPress/wordpress-develop/blob/53b75a10fce4e0bae751e5a17b4c72835b2dde83/src/wp-includes/blocks.php#L1131-L1141
For that reason the php translation marks can not be added there.
Still that attribute doesn't seem to be used in the core/cover block rendering so apparently with the escaping of the HTML alt attribute is enough to make the alt text of this block translatable.
@matiasbenedetto matiasbenedetto added the bug Something isn't working label May 16, 2024
@matiasbenedetto matiasbenedetto marked this pull request as ready for review May 16, 2024 04:20
@pbking
Copy link
Contributor

pbking commented May 16, 2024

I had one teeny tiny inconsequential nit.

This is great to bring in and fixes the problem at hand and enhances the tests quite a bit.

@pbking pbking merged commit ca08514 into trunk May 16, 2024
2 checks passed
@pbking pbking deleted the fix/template-escaping branch May 16, 2024 18:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
2 participants