10000 [Translation] TransChoice invalide plural translation · symfony/symfony@8a87162 · GitHub
[go: up one dir, main page]

Skip to content

Commit 8a87162

Browse files
author
Amrouche Hamza
committed
[Translation] TransChoice invalide plural translation
1 parent 95932df commit 8a87162

File tree

2 files changed

+23
-7
lines changed

2 files changed

+23
-7
lines changed

src/Symfony/Bundle/FrameworkBundle/Resources/config/identity_translator.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@
1010
<service id="Symfony\Component\Translation\TranslatorInterface" alias="translator" />
1111
<service id="Symfony\Contracts\Translation\TranslatorInterface" alias="translator" />
1212

13-
<service id="identity_translator" class="Symfony\Component\Translation\IdentityTranslator" />
13+
<service id="identity_translator" class="Symfony\Component\Translation\IdentityTranslator" >
14+
<argument>%kernel.debug%</argument>
15+
</service>
1416
<service id="translator.selector" class="Symfony\Component\Translation\MessageSelector">
1517
<deprecated>The "%service_id%" service is deprecated since Symfony 4.2, use "identity_translator" instead.</deprecated>
1618
</service>

src/Symfony/Component/Translation/IdentityTranslator.php

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,22 @@ class IdentityTranslator implements LegacyTranslatorInterface, TranslatorInterfa
2525
use TranslatorTrait;
2626

2727
private $selector;
28+
private $debug = true;
2829

2930
/**
30-
* @param MessageSelector|null $selector The message selector for pluralization
31+
* @param MessageSelector|bool The message selector for pluralization or the debug boolean
3132
*/
32-
public function __construct(MessageSelector $selector = null)
33+
public function __construct()
3334
{
34-
$this->selector = $selector;
35-
35+
$args = func_get_args();
36+
if (isset($args[0])) {
37+
if ($args[0] instanceof MessageSelector) {
38+
@trigger_error(sprintf('Calling "%s()" is with a %s deprecated since Symfony 4.3.', MessageSelector::class, __METHOD__), E_USER_DEPRECATED);
39+
$this->selector = $args[0];
40+
} elseif (is_bool($args[0])) {
41+
$this->debug = $args[0];
42+
}
43+
}
3644
if (__CLASS__ !== \get_class($this)) {
3745
@trigger_error(sprintf('Calling "%s()" is deprecated since Symfony 4.2.', __METHOD__), E_USER_DEPRECATED);
3846
}
@@ -50,8 +58,14 @@ public function transChoice($id, $number, array $parameters = [], $domain = null
5058
if ($this->selector) {
5159
return strtr($this->selector->choose((string) $id, $number, $locale ?: $this->getLocale()), $parameters);
5260
}
53-
54-
return $this->trans($id, ['%count%' => $number] + $parameters, $domain, $locale);
61+
try {
62+
return $this->trans($id, ['%count%' => $number] + $parameters, $domain, $locale);
63+
} catch (\InvalidArgumentException $e) {
64+
if ($this->debug) {
65+
throw $e;
66+
}
67+
return '';
68+
}
5569
}
5670

5771
private function getPluralizationRule(int $number, string $locale): int

0 commit comments

Comments
 (0)
0