Translator::translate()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 2
1
<?php
2
3
declare(strict_types=1);
4
5
/*
6
 * This file is part of the Explicit Architecture POC,
7
 * which is created on top of the Symfony Demo application.
8
 *
9
 * (c) Herberto Graça <[email protected]>
10
 *
11
 * For the full copyright and license information, please view the LICENSE
12
 * file that was distributed with this source code.
13
 */
14
15
namespace Acme\App\Infrastructure\Translation\Symfony;
16
17
use Acme\App\Core\Port\Translation\TranslatorInterface;
18
use Acme\PhpExtension\Enum\AbstractEnum;
19
use Acme\PhpExtension\Helper\ClassHelper;
20
use Symfony\Component\Translation\TranslatorInterface as SymfonyTranslatorInterface;
21
22
final class Translator implements TranslatorInterface
23
{
24
    /**
25
     * @var SymfonyTranslatorInterface
26
     */
27
    private $translator;
28
29
    public function __construct(SymfonyTranslatorInterface $translator)
30
    {
31
        $this->translator = $translator;
32
    }
33
34
    public function translate(string $key, array $parameters = []): string
35
    {
36
        return $this->translator->trans($key, []);
37
    }
38
39
    public function translateEnum(AbstractEnum $enum, array $parameters = []): string
40
    {
41
        return $this->translator->trans($this->getTranslationKeyForEnum($enum), []);
42
    }
43
44
    private function getTranslationKeyForEnum(AbstractEnum $enum): string
45
    {
46
        return ClassHelper::extractCanonicalClassName(\get_class($enum)) . '::' . $enum;
47
    }
48
}
49