function TranslitRus2Lat(const Str: String): String;
const RArrayL = 'абвгдеёжзийклмнопрстуфхцчшщьыъэюя'; RArrayU = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ'; colChar = 33;
arr: array[1..2, 1..ColChar] of String =
(('a','b','v','g','d','e','yo','zh','z','i','y', 'k','l','m','n','o','p','r','s','t','u','f', 'kh','ts','ch','sh','shch','''','y','''','e','yu','ya'), ('A','B','V','G','D','E','Yo','Zh','Z','I','Y', 'K','L','M','N','O','P','R','S','T','U','F', 'Kh','Ts','Ch','Sh','Shch','''','Y','''','E','Yu','Ya'));
var
i: Integer; LenS: Integer; p: Integer; d: Byte;
begin
result := ''; LenS := length(str);
for i := 1 to lenS do
begin d := 1; p := pos(str[i], RArrayL);
if (p = 0) then
begin p := pos(str[i], RArrayU); d := 2
end;
if (p0) then result := result + arr[d, p]
//если не русская буква, то берем исходную
else result := result + str[i];
end;
end;