public static function toLatin($string, $lowerCaseHuman = true, $replacementChar = '-')
    {
        if (is_string($string)) {
            $string = trim($string);
        }

        /*
         * Empty value?
         * Nothing to do
         */
        if (empty($string)) {
            return '';
        }

        $converter = Transliterator::create('Latin-ASCII;');

        /*
         * Oops, cannot instantiate converter
         * Nothing to do
         */
        if (null === $converter) {
            return '';
        }

        $converted = $converter->transliterate($string);

        // Make the string lowercase and human-readable
        if ($lowerCaseHuman) {
            $matches = [];
            $matchCount = preg_match_all('|[A-Z]{1}[^A-Z]*|', $converted, $matches);

            if ($matchCount > 0) {
                $parts = $matches[0];
                $converted = mb_strtolower(implode($replacementChar, $parts));
            }
        }

        /*
         * Let's replace special characters to spaces
         * ...and finally spaces to $replacementChar
         */
        $replaced = preg_replace('|[^a-zA-Z0-9]|', ' ', $converted);

        return preg_replace('| +|', $replacementChar, trim($replaced));
    }