Completed
Pull Request — master (#161)
by
unknown
02:51
created

Translations::getTranslation()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 6
ccs 3
cts 3
cp 1
rs 9.4285
cc 1
eloc 3
nc 1
nop 3
crap 1
1
<?php
2
3
namespace eXpansion\Framework\Core\Helpers;
4
5
use Symfony\Component\Translation\Translator;
6
7
8
/**
9
 * Class Translations
10
 *
11
 * @package eXpansion\Framework\Core\Services;
12
 * @author oliver de Cramer <[email protected]>
13
 */
14
class Translations
15
{
16
    /** @var Translator */
17
    protected $translator;
18
19
    /** @var string[] List of supported locales. */
20
    protected $supportedLocales;
21
22
    /** @var string[] */
23
    protected $replacementPatterns = [];
24
25
    /**
26
     * Translations constructor.
27
     *
28
     * @param array $supportedLocales
29
     * @param       $colorCodes
30
     * @param       $glyphIcons
31
     * @param       $translator
32
     */
33 5
    public function __construct(
34
        array $supportedLocales,
35
        $colorCodes,
36
        $glyphIcons,
37
        Translator $translator
38
    ) {
39 5
        $this->translator = $translator;
40 5
        $this->supportedLocales = $supportedLocales;
41
42 5
        foreach ($colorCodes as $code => $colorCode) {
43 5
            $this->replacementPatterns["{".$code."}"] = '$z'.$colorCode;
44
        }
45
46 5
        foreach ($glyphIcons as $name => $icon) {
47 5
            $this->replacementPatterns["|".$name."|"] = $icon;
48
        }
49 5
    }
50
51
    /**
52
     * Get translated message.
53
     *
54
     * @param string $id
55
     * @param array $parameters
56
     * @param $locale
57
     *
58
     * @return mixed
59
     */
60 2
    public function getTranslation($id, $parameters = [], $locale = null)
61
    {
62 2
        $parameters = array_merge($this->replacementPatterns, $parameters);
63
64 2
        return $this->translator->trans($id, $parameters, null, $locale);
65
    }
66
67
    /**
68
     * Get list of translations.
69
     *
70
     * @TODO optimize by preparing the messages before.
71
     *
72
     * @param $id
73
     * @param $parameters
74
     *
75
     * @return array
76
     */
77 1
    public function getTranslations($id, $parameters = [])
78
    {
79 1
        $messages = [];
80
81 1
        foreach ($this->supportedLocales as $locale) {
82 1
            $message = $this->getTranslation($id, $parameters, $locale);
83 1
            $messages[] = [
84 1
                "Lang" => lcfirst($locale),
85 1
                "Text" => $message,
86
            ];
87
        }
88
89 1
        return $messages;
90
    }
91
}
92