public static function trans($arg1, $arg2 = null, $arg3 = null, $arg4 = null, $arg5 = null)
    {
        $i18n = self::getContainer()->get('i18n');
        if (is_object($arg1) && ($arg1 instanceof \DateTime)) {
            if (empty($i18n)) {
                return $arg1->format( !empty($arg2) ? $arg2 : 'Y-m-d H:i:s');
            }
            return \I18n\I18n::getLocalizedDateString($arg1, $arg2, $arg3, $arg4);
        } elseif (is_array($arg1)) {
            if (empty($i18n)) {
                return isset($arg1[$arg2]) ? $arg1[$arg2] : array_shift($arg1);
            }
            return \I18n\I18n::pluralize($arg1, $arg2, $arg3, $arg4);
        } elseif (is_string($arg1)) {
            if ($arg1==='number') {
                if (empty($i18n)) {
                    return $arg2;
                }
                return \I18n\I18n::getLocalizedNumberString($arg2, $arg3);
            } elseif($arg1==='price') {
                if (empty($i18n)) {
                    return $arg2;
                }
                return \I18n\I18n::getLocalizedPriceString($arg2, $arg3);
            } else {
                if (empty($i18n)) {
                    return $arg1;
                }
                return \I18n\I18n::translate($arg1, $arg2, $arg3);
            }
        } else {
            return null;
        }
    }