/**
  * Convert to localized value from internal format
  *
  * @param string $value
  * @param string $type
  * @param string $outputDateFormat (Intl date format - http://www.php.net/manual/en/book.intl.php)
  * @param string $locale
  * @return string
  */
 public static function convertToLocalizedValue($value, $type, $outputDateFormat = IntlDateFormatter::MEDIUM, $locale = null)
 {
     if (!$value) {
         return $value;
     }
     switch ($type) {
         case 'float':
             $filter = new NumberFormat($locale ? $locale : self::getLocale());
             $filter->getFormatter()->setAttribute(NumberFormatter::MAX_FRACTION_DIGITS, self::MAX_FRACTION_DIGITS);
             return $filter->filter((double) $value);
         case 'date':
         case 'date_unixtime':
             $dateFormater = new IntlDateFormatter($locale ? $locale : self::getLocale(), $outputDateFormat, IntlDateFormatter::NONE, date_default_timezone_get(), IntlDateFormatter::GREGORIAN);
             return $type == 'date' ? $dateFormater->format(strtotime($value)) : $dateFormater->format((int) $value);
         default:
             return $value;
     }
 }