public static function values($withEmpty = false) {
        static $list = [];

        $className = static::class;
        if (!isset($list[$className])) {
            $list[$className] = [];
            foreach (static::constants() as $value => $code) {
                $value = Inflector::humanize(strtolower($value), true);
                $list[$className][$code] = static::t($value);
            }
        }

        return ($withEmpty ? ['' => static::emptyValue()] : [])
            + $list[$className];
    }