diff --git a/_images/translation/pseudolocalization-interface-original.png b/_images/translation/pseudolocalization-interface-original.png
new file mode 100644
index 00000000000..d89f4e63a24
Binary files /dev/null and b/_images/translation/pseudolocalization-interface-original.png differ
diff --git a/_images/translation/pseudolocalization-interface-translated.png b/_images/translation/pseudolocalization-interface-translated.png
new file mode 100644
index 00000000000..496d5a0f86f
Binary files /dev/null and b/_images/translation/pseudolocalization-interface-translated.png differ
diff --git a/_images/translation/pseudolocalization-symfony-demo-disabled.png b/_images/translation/pseudolocalization-symfony-demo-disabled.png
new file mode 100644
index 00000000000..1a7472bd41f
Binary files /dev/null and b/_images/translation/pseudolocalization-symfony-demo-disabled.png differ
diff --git a/_images/translation/pseudolocalization-symfony-demo-enabled.png b/_images/translation/pseudolocalization-symfony-demo-enabled.png
new file mode 100644
index 00000000000..a23300a7271
Binary files /dev/null and b/_images/translation/pseudolocalization-symfony-demo-enabled.png differ
diff --git a/translation.rst b/translation.rst
index 1d23f9171a9..6ea797c27f9 100644
--- a/translation.rst
+++ b/translation.rst
@@ -828,7 +828,7 @@ A better policy is to include the locale in the URL using the
{
}
}
-
+
.. code-block:: php-attributes
// src/Controller/ContactController.php
@@ -1289,6 +1289,136 @@ adapted to the format required by GitHub, but you can force that format too:
The ``yaml-lint`` binary was introduced in Symfony 5.1.
+Pseudo-localization translator
+------------------------------
+
+.. versionadded:: 5.2
+
+ The pseudolocalization translator was introduced in Symfony 5.2.
+
+.. note::
+
+ The pseudolocalization translator is meant to be used for development only.
+
+The following image shows the main menu of the interface of a popular Internet
+service:
+
+.. image:: /_images/translation/pseudolocalization-interface-original.png
+
+This other image shows the same menu when the user switches the language to
+Spanish. Unexpectedly, some text is cut and other contents are so long that
+they overflow and you can't see them:
+
+.. image:: /_images/translation/pseudolocalization-interface-translated.png
+
+These kind of errors are very common, because different languages can be longer
+or shorter than the original application language. Another common issue is to
+only check if the application works when using basic accented letters, instead
+of checking for more complex characters such as the ones found in Polish,
+Czech, etc.
+
+These problems can be solved with `pseudolocalization`_, a software testing method
+used for testing internationalization. In this method, instead of translating
+the text of the software into a foreign language, the textual elements of an
+application are replaced with an altered version of the original language.
+
+For example, ``Account Settings`` is *translated* as ``[!!! Àççôûñţ
+Šéţţîñĝš !!!]``. First, the original text is expanded in length with characters
+like ``[!!! !!!]`` to test the application when using languages more verbose
+than the original one. This solves the first problem.
+
+In addition, the original characters are replaced by similar but accented
+characters. This makes the text highly readable, while allowing to test the
+application with all kinds of accented and special characters. This solves the
+second problem.
+
+Full support for pseudolocalization was added to help you debug
+internationalization issues in your applications. You can enable and configure
+it in the translator configuration:
+
+.. configuration-block::
+
+ .. code-block:: yaml
+
+ # config/packages/translation.yaml
+ framework:
+ translator:
+ pseudo_localization:
+ # replace characters by their accented version
+ accents: true
+ # wrap strings with brackets
+ brackets: true
+ # controls how many extra characters are added to make text longer
+ expansion_factor: 1.4
+ # maintain the original HTML tags of the translated contents
+ parse_html: true
+ # also translate the contents of these HTML attributes
+ localizable_html_attributes: ['title']
+
+ .. code-block:: xml
+
+
+
+
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: