| 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 |