Skip to content

Simplified the use of transChoice() #7205

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

Closed
wants to merge 3 commits into from
Closed
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 30 additions & 3 deletions components/translation/usage.rst
Original file line number Diff line number Diff line change
Expand Up @@ -255,14 +255,27 @@ To translate pluralized messages, use the

$translator->transChoice(
'There is one apple|There are %count% apples',
10,
array('%count%' => 10)
10
);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do you still have any example passing other placeholders to transchoice ?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using the translator page has a first section about this (http://symfony.com/doc/2.7/components/translation/usage.html#message-placeholders).


The second argument (``10`` in this example) is the *number* of objects being
described and is used to determine which translation to use and also to populate
the ``%count%`` placeholder.

.. note::
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

shouldn't this use a ..versionadded directive ?


Before Symfony 3.2, the ``transChoice()`` method required a third argument
defining the value of each translation placeholder::

$translator->transChoice(
'There is one apple|There are %count% apples',
10,
array('%count%' => 10)
);

Starting from Symfony 3.2, when the only placeholder is ``%count%``, you
don't have to pass this third argument.

Based on the given number, the translator chooses the right plural form.
In English, most words have a singular form when there is exactly one object
and a plural form for all other numbers (0, 2, 3...). So, if ``count`` is
Expand Down Expand Up @@ -366,11 +379,25 @@ use for translation::
$translator->transChoice(
'{0} There are no apples|{1} There is one apple|]1,Inf[ There are %count% apples',
10,
array('%count%' => 10),
array(),
'messages',
'fr_FR'
);

.. note::

Starting from Symfony 3.2, the third argument of ``transChoice()`` is
optional when the only placeholder in use is ``%count%``. In previous
Symfony versions you needed to define it always::

$translator->transChoice(
'{0} There are no apples|{1} There is one apple|]1,Inf[ There are %count% apples',
10,
array('%count%' => 10),
'messages',
'fr_FR'
);

Retrieving the Message Catalogue
--------------------------------

Expand Down