Skip to content

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
@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

Projects

Development

Successfully merging this pull request may close these issues.

Localize option tries to localize already localized strings breaking the patters.

3 participants