1 | <?php |
||
7 | class ApplicationLocale |
||
|
|||
8 | { |
||
9 | /** @var Config */ |
||
10 | private $config; |
||
11 | |||
12 | /** @var Locale */ |
||
13 | private $originalLocale; |
||
14 | |||
15 | 75 | private function __construct(Locale $originalLocale, Config $config) |
|
20 | |||
21 | 75 | public static function from($originalLocale) |
|
22 | { |
||
23 | 75 | if (is_string($originalLocale)) { |
|
24 | 33 | $originalLocale = Locale::from($originalLocale); |
|
25 | } |
||
26 | |||
27 | 75 | return new static($originalLocale, Config::from(app('config')->get('thinktomorrow.locale', []))); |
|
28 | } |
||
29 | |||
30 | /** |
||
31 | * Convert locale to application locale. |
||
32 | * |
||
33 | * @return Locale |
||
34 | */ |
||
35 | 73 | public function get(): Locale |
|
36 | { |
||
37 | 73 | $locale = $this->originalLocale; |
|
38 | |||
39 | 73 | $convert_locales = $this->config->get('convert_locales'); |
|
40 | 73 | $conversions = $this->config->get('convert_locales_to', []); |
|
41 | |||
42 | 73 | if ('auto' === $convert_locales) { |
|
43 | 3 | $locale = isset($conversions[$locale->get()]) |
|
44 | 1 | ? Locale::from($conversions[$locale->get()]) |
|
45 | 3 | : $locale->withoutRegion(); |
|
46 | 70 | } elseif (true === $convert_locales && isset($conversions[$locale->get()])) { |
|
47 | 3 | $locale = Locale::from($conversions[$locale->get()]); |
|
48 | } |
||
49 | |||
50 | 73 | return $locale; |
|
51 | } |
||
52 | |||
53 | 1 | public function equals(self $other): bool |
|
57 | |||
58 | 70 | public function __toString(): string |
|
62 | } |
||
63 |