Транслитерация русской строки
(defun ru-conv-string-win-translit (str / ch lst result tch)
;;; Транслитерация
;|
(ru-string-win-translit "В чащах юга жил-был цитрус, да, но фальшивый экземпляр")
"V CHATHAKH YUGA ZHIL-BIHL CITRUS, DA, NO FALJSHIVIHYJ EHKZEMPLYAR"
|;
(setq lst
'(
("А" . "A")
("Б" . "B")
("В" . "V")
("Г" . "G")
("Д" . "D")
("Е" . "E")
("Ё" . "YO")
("Ж" . "ZH")
("З" . "Z")
("И" . "I")
("Й" . "YJ")
("К" . "K")
("Л" . "L")
("М" . "M")
("Н" . "N")
("О" . "O")
("П" . "P")
("Р" . "R")
("С" . "S")
("Т" . "T")
("У" . "U")
("Ф" . "F")
("Х" . "KH")
("Ц" . "C")
("Ч" . "CH")
("Ш" . "SH")
("Щ" . "TH")
("Ъ" . "JH")
("Ы" . "IH")
("Ь" . "J")
("Э" . "EH")
("Ю" . "YU")
("Я" . "YA")
) ;_ end of list
) ;_ end of setq
(setq result ""
str (strcase str)
) ;_ end of setq
(while (< 0 (strlen str))
(setq ch (substr str 1 1))
(if (setq tch (assoc ch lst))
(setq ch (cdr tch))
) ;_ end of if
(setq
result (strcat result ch)
str (substr str 2)
) ;_ end of setq
) ;_ end of while
result
) ;_ end of defun