Наваял функцию. Проста как угол дома. Преимущество в том, что не использует ни iconv, ни mb_ функции. Сомнительное преимущество, правда?) Зато работать будет везде и в отличии от strtr свободно хавает кириллицу в utf-8
function getTranslit($str)
{
$cyr = array('А', 'а', 'Б', 'б', 'В', 'в', 'Г', 'г', 'Д', 'д',
'Е', 'е', 'Ё', 'ё', 'Ж', 'ж', 'З', 'з', 'И', 'и',
'Й', 'й', 'К', 'к', 'Л', 'л', 'М', 'м', 'Н', 'н',
'О', 'о', 'П', 'п', 'Р', 'р', 'С', 'с', 'Т', 'т',
'У', 'у', 'Ф', 'ф', 'Х', 'х', 'Ц', 'ц', 'Ч', 'ч',
'Ш', 'ш', 'Щ', 'щ', 'Ъ', 'ъ', 'Ы', 'ы', 'Ь', 'ь',
'Э', 'э', 'Ю', 'ю', 'Я', 'я', 'Є', 'є', 'Ї', 'ї',
'І', 'і', 'Ґ', 'ґ');
$lat = array('A', 'a', 'B', 'b', 'V', 'v', 'G', 'g', 'D', 'd',
'E', 'E', 'Yo', 'yo', 'Zh', 'zh', 'Z', 'z', 'I', 'i',
'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n',
'O', 'o', 'P', 'p', 'R', 'r', 'S', 's', 'T', 't',
'U', 'u', 'F', 'f', 'H', 'h', 'C', 'c', 'Ch', 'ch',
'Sh', 'sh', 'Shh', 'shh', '"', '"', 'Y', 'y', '\'', '\'',
'E', 'e', 'Yu', 'yu', 'Ya', 'ya', 'Ye', 'ye', 'Yi', 'yi',
'I', 'i', 'G', 'g');
return str_replace($cyr, $lat, $str);
}
Обратное преобразование посчитал ненужной фичей и отказался от него.