Completed
Pull Request — master (#161)
by De Cramer
02:59
created

Translations   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 78
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 6
c 0
b 0
f 0
lcom 1
cbo 1
dl 0
loc 78
ccs 0
cts 19
cp 0
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A getTranslation() 0 6 1
A __construct() 0 17 3
A getTranslations() 0 14 2
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
    public function __construct(
34
        array $supportedLocales,
35
        $colorCodes,
36
        $glyphIcons,
37
        Translator $translator
38
    ) {
39
        $this->translator = $translator;
40
        $this->supportedLocales = $supportedLocales;
41
42
        foreach ($colorCodes as $code => $colorCode) {
43
            $this->replacementPatterns["{".$code."}"] = '$z'.$colorCode;
44
        }
45
46
        foreach ($glyphIcons as $name => $icon) {
47
            $this->replacementPatterns["|".$name."|"] = $icon;
48
        }
49
    }
50
51
    /**
52
     * Get translated message.
53
     *
54
     * @param string $id
55
     * @param array $parameters
56
     * @param $locale
57
     *
58
     * @return mixed
59
     */
60
    public function getTranslation($id, $parameters = [], $locale = null)
61
    {
62
        $parameters = array_merge($this->replacementPatterns, $parameters);
63
64
        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
    public function getTranslations($id, $parameters = [])
78
    {
79
        $messages = [];
80
81
        foreach ($this->supportedLocales as $locale) {
82
            $message = $this->getTranslation($id, $parameters, $locale);
83
            $messages[] = [
84
                "Lang" => lcfirst($locale),
85
                "Text" => $message,
86
            ];
87
        }
88
89
        return $messages;
90
    }
91
}
92