LocalesConfig   A
last analyzed

Complexity

Total Complexity 10

Size/Duplication

Total Lines 117
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 117
rs 10
c 0
b 0
f 0
wmc 10

9 Methods

Rating   Name   Duplication   Size   Complexity  
A setAutoDetect() 0 4 1
A setFallbackLanguages() 0 4 1
A setDefaultLanguage() 0 9 2
A languages() 0 3 1
A defaultLanguage() 0 3 1
A autoDetect() 0 3 1
A fallbackLanguages() 0 3 1
A setLanguages() 0 4 1
A defaults() 0 13 1
1
<?php
2
3
namespace Charcoal\Translator;
4
5
use InvalidArgumentException;
6
7
// From 'charcoal-config'
8
use Charcoal\Config\AbstractConfig;
9
10
/**
11
 * Locales Configset
12
 *
13
 * Stores the collection of available languages, their configuration structures,
14
 * the order of fallbacks, and the default language.
15
 */
16
class LocalesConfig extends AbstractConfig
17
{
18
    /**
19
     * @var array
20
     */
21
    private $languages;
22
23
    /**
24
     * @var string
25
     */
26
    private $defaultLanguage;
27
28
    /**
29
     * @var array
30
     */
31
    private $fallbackLanguages;
32
33
    /**
34
     * @var boolean
35
     */
36
    private $autoDetect;
37
38
    /**
39
     * @return array
40
     */
41
    public function defaults()
42
    {
43
        return [
44
            'languages' => [
45
                'en' => [
46
                    'locale' => 'en-US'
47
                ]
48
            ],
49
            'default_language'   => 'en',
50
            'fallback_languages' => [
51
                'en'
52
            ],
53
            'auto_detect' => false
54
        ];
55
    }
56
57
    /**
58
     * @param  array $languages The languages configuration.
59
     * @return LocalesConfig Chainable
60
     */
61
    public function setLanguages(array $languages)
62
    {
63
        $this->languages = $languages;
64
        return $this;
65
    }
66
67
    /**
68
     * @return array
69
     */
70
    public function languages()
71
    {
72
        return $this->languages;
73
    }
74
75
    /**
76
     * @param  boolean $lang The default language (ident).
77
     * @throws InvalidArgumentException If the default language is not a string.
78
     * @return LocalesConfig Chainable
79
     */
80
    public function setDefaultLanguage($lang)
81
    {
82
        if (!is_string($lang)) {
0 ignored issues
show
introduced by
The condition is_string($lang) is always false.
Loading history...
83
            throw new InvalidArgumentException(
84
                'Default language must be a string'
85
            );
86
        }
87
        $this->defaultLanguage = $lang;
88
        return $this;
89
    }
90
91
    /**
92
     * @return string
93
     */
94
    public function defaultLanguage()
95
    {
96
        return $this->defaultLanguage;
97
    }
98
99
    /**
100
     * @param  array $languages The fallback languages, used when a translation is not set in a language.
101
     * @return LocalesConfig Chainable
102
     */
103
    public function setFallbackLanguages(array $languages)
104
    {
105
        $this->fallbackLanguages = $languages;
106
        return $this;
107
    }
108
109
    /**
110
     * @return array
111
     */
112
    public function fallbackLanguages()
113
    {
114
        return $this->fallbackLanguages;
115
    }
116
117
    /**
118
     * @param  boolean $autoDetect The auto-detect flag.
119
     * @return LocalesConfig Chainable
120
     */
121
    public function setAutoDetect($autoDetect)
122
    {
123
        $this->autoDetect = !!$autoDetect;
124
        return $this;
125
    }
126
127
    /**
128
     * @return boolean
129
     */
130
    public function autoDetect()
131
    {
132
        return $this->autoDetect;
133
    }
134
}
135