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