/** * Sanitize given locale. * * Must be a simple locale without code set, currency or similar (e. g. "de_DE" or "de-de"). * * @param string|Locale $locale * @param string|Locale $default [optional] The default locale to return if $locale is invalid * * @return null|string */ public static function sanitizeLocale($locale, $default = null) { if ($locale instanceof Locale) { return $locale->getLocale(); } if ($default) { $default = Locale::sanitizeLocale($default, null); } $locale = (string) $locale; $locale = trim($locale); if (!$locale || !preg_match("/^" . Locale::REGEX_LOCALE . "\$/ui", $locale, $found)) { return $default; } $found['language'] = Text::toLower($found['language']); $found['country'] = Text::toUpper($found['country']); return sprintf("%s_%s", $found['language'], $found['country']); }
/** * Get locale with specified country. * * @param $country * * @return Locale|null * */ public function findByCountry($country) { $country = Text::toUpper($country); foreach ($this->getAvailable() as $locale) { if ($country == $locale->getCountry(Text::UPPER)) { return $locale; } } return null; }