8000 minor #14240 Translatable objects (natewiebe13) · symfony/symfony-docs@88a6112 · GitHub
[go: up one dir, main page]

Skip to content

Commit 88a6112

Browse files
committed
minor #14240 Translatable objects (natewiebe13)
This PR was squashed before being merged into the master branch. Discussion ---------- Translatable objects Goal: Add docs for translatable objects. Feature: symfony/symfony#37670 Fixes #14145 Unsure how in-depth the docs should go. Open to feedback and collaboration. Commits ------- a2ad274 Translatable objects
2 parents 9ab8434 + a2ad274 commit 88a6112

File tree

2 files changed

+63
-1
lines changed

2 files changed

+63
-1
lines changed

reference/twig_reference.rst

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,27 @@ impersonation_exit_url
304304
It's similar to the `impersonation_exit_path`_ function, but it generates
305305
absolute URLs instead of relative URLs.
306306

307+
t
308+
~
309+
310+
.. code-block:: twig
311+
312+
{{ t(message, parameters = [], domain = 'messages')|trans }}
313+
314+
``message``
315+
**type**: ``string``
316+
``parameters`` *(optional)*
317+
**type**: ``array`` **default**: ``[]``
318+
``domain`` *(optional)*
319+
**type**: ``string`` **default**: ``messages``
320+
321+
.. versionadded:: 5.2
322+
323+
The ``t()`` function was introduced in Symfony 5.2.
324+
325+
Creates a ``Translatable`` object that can be passed to the
326+
:ref:`trans filter <reference-twig-filter-trans>`.
327+
307328
Form Related Functions
308329
~~~~~~~~~~~~~~~~~~~~~~
309330

@@ -341,6 +362,8 @@ Makes a technical name human readable (i.e. replaces underscores by spaces
341362
or transforms camelCase text like ``helloWorld`` to ``hello world``
342363
and then capitalizes the string).
343364

365+
.. _reference-twig-filter-trans:
366+
344367
trans
345368
~~~~~
346369

@@ -349,14 +372,18 @@ trans
349372
{{ message|trans(arguments = [], domain = null, locale = null) }}
350373
351374
``message``
352-
**type**: ``string``
375+
**type**: ``string`` | ``Translatable``
353376
``arguments`` *(optional)*
354377
**type**: ``array`` **default**: ``[]``
355378
``domain`` *(optional)*
356379
**type**: ``string`` **default**: ``null``
357380
``locale`` *(optional)*
358381
**type**: ``string`` **default**: ``null``
359382

383+
.. versionadded:: 5.2
384+
385+
``message`` accepting ``Translatable`` as a valid type was introduced in Symfony 5.2.
386+
360387
Translates the text into the current language. More information in
361388
:ref:`Translation Filters <translation-filters>`.
362389

translation.rst

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,41 @@ To manage these situations, Symfony follows the `ICU MessageFormat`_ syntax by
292292
using PHP's :phpclass:`MessageFormatter` class. Read more about this in
293293
:doc:`/translation/message_format`.
294294

295+
Translatable Objects
296+
--------------------
297+
298+
.. versionadded:: 5.2
299+
300+
Translatable objects were introduced in Symfony 5.2.
301+
302+
Sometimes you may want to create a message, but at the time of creation aren't
303+
sure how it would be translated. For example, it could be translated multiple
304+
times if intended to be displayed to multiple users.
305+
306+
Using translatable objects also allows preparing translations without having a
307+
dependency on an entrypoint (such as a router) where the context for performing
308+
the translation is provided. For example, entities could prepare translatable
309+
strings (such as labels) without the need for a translator.
310+
311+
Instead of translating a string at the time of creation, a ``Translatable``
312+
object can be created that can then be translated when used. Later this message
313+
can be translated with a translator in either PHP or in Twig.
314+
315+
PHP::
316+
317+
$message = new Translatable('Symfony is great!');
318+
$message = t('Symfony is great!');
319+
320+
Translatable::trans($translator, $message);
321+
322+
Twig:
323+
324+
.. code-block:: html+twig
325+
326+
{% set message = t('Symfony is great!') %}
327+
328+
<h1>{{ message|trans }}</h1>
329+
295330
.. _translation-in-templates:
296331

297332
Translations in Templates

0 commit comments

Comments
 (0)
0