예제 #1
0
 /**
  * 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']);
 }
예제 #2
0
 /**
  * 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;
 }