How about using the `$transliteration` map? Using `iconv` means additional dependency on libiconv.
Also, it would be great to refactor `slug()` to make use of `ascii()`.