Completed
Push — master ( 6d1120...3e38c4 )
by Michal
10s
created

Translator::setDefaultLanguage()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 5
ccs 3
cts 3
cp 1
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 1
crap 1
1
<?php
2
3
namespace UniMan\Core\Translator;
4
5
use UniMan\Core\Translator\LanguageResolver\LanguageResolverInterface;
6
use UniMan\Core\Translator\Storage\StorageInterface;
7
use Nette\Localization\ITranslator;
8
9
class Translator implements ITranslator
10
{
11
    private $storage;
12
13
    private $languageResolver;
14
15
    private $defaultLanguage;
16
17 46
    public function __construct(StorageInterface $storage, LanguageResolverInterface $languageResolver)
18
    {
19 46
        $this->storage = $storage;
20 46
        $this->languageResolver = $languageResolver;
21 46
    }
22
23 2
    public function setDefaultLanguage($language)
24
    {
25 2
        $this->defaultLanguage = $language;
26 2
        return $this;
27
    }
28
29 12
    public function translate($message, $params = null)
30
    {
31 12
        $language = $this->languageResolver->resolve();
32 12
        if ($language !== null) {
33 12
            $value = $this->storage->load($language, $message);
34 12
            if ($value !== null) {
35 8
                return $this->replaceTokens($value, $params);
36
            }
37 2
        }
38
39 4
        if (!$this->defaultLanguage) {
40 2
            return '';
41
        }
42
43 2
        $value = $this->storage->load($this->defaultLanguage, $message);
44 2
        return $value ? $this->replaceTokens($value, $params) : $message;
45
    }
46
47 10
    private function replaceTokens($message, $params = null)
48
    {
49 10
        if (!$params) {
50 10
            return $message;
51
        }
52 6
        foreach ($params as $key => $value) {
53 6
            $message = str_replace('%' . $key . '%', $value, $message);
54 3
        }
55 6
        return $message;
56
    }
57
}
58