Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];

Вниз

Функция перевода рус. сивола в лат.?   Найти похожие ветки 

 
vigo_   (2006-05-30 15:22) [0]

Подскажите где можно найти функцию перевода русских символов в латинскиу транслитерацию? Понадобилось для перевода фамилии и имени (в латиницу).
Думаю тема не нова, может у кого ссылка осталась?
Спасибо.


 
tesseract ©   (2006-05-30 15:26) [1]

создай таблицу крнвертации. Google пр неё знает.


 
Desdechado ©   (2006-05-30 15:31) [2]

элементарно - 2 массива с соответствующими буквами по одинаковым индексам


 
Marser ©   (2006-05-30 15:40) [3]

> [2] Desdechado ©   (30.05.06 15:31)
> элементарно - 2 массива с соответствующими буквами по одинаковым
> индексам

"Х"="H"
"Ш"= ?
В смысле, что одним символом явно не обойдёшься. Для Щ их вообще три нужно.


 
Desdechado ©   (2006-05-30 15:44) [4]

А что, массив обязан быть по CHAR ?
Я ж на писал "буквами". Словом как-то комбинацию "zh" не назовешь.


 
Guest 111   (2006-05-30 15:47) [5]

function TranslChar(c: char): string;
var
 r: string;
begin
 case c of
   "а": r:="a";
   "б": r:="b";
...
  "Ю": r:="U";
  "Я": r:="Ya";
 else r:=c;
 end;
 result:=r;
end;

function Transliterate(aStr: string): string;
var
 i: integer;
begin
 for i:=1 to Length(aStr)
   result:=result+TranslChar(aStr[i]);
end;


 
Marser ©   (2006-05-30 15:49) [6]

Кстати, и "х" открытое пишется как "kh"...


 
vigo_   (2006-05-30 17:01) [7]

Хоть и не красиво, но работает...

function CyrToLat(s: string): String;
var
str : string;
i, l : integer;
begin
 s := AnsiLowerCase(s);
 l := length(s); str := "";
 for i := 1 to l do
  case s[i] of
    "а" : str := str + "a";
    "б" : str := str + "b";
    "в" : str := str + "v";
    "г" : str := str + "g";
    "д" : str := str + "d";
    "е" : str := str + "e";
    "ё" : str := str + "e";
    "ж" : str := str + "zh";
    "з" : str := str + "z";
    "и" : str := str + "i";
    "й" : str := str + "y";
    "к" : str := str + "k";
    "л" : str := str + "l";
    "м" : str := str + "m";
    "н" : str := str + "n";
    "о" : str := str + "o";
    "п" : str := str + "p";
    "р" : str := str + "r";
    "с" : str := str + "s";
    "т" : str := str + "t";
    "у" : str := str + "u";
    "ф" : str := str + "f";
    "х" : str := str + "kh";
    "ц" : str := str + "ts";
    "ч" : str := str + "ch";
    "ш" : str := str + "sh";
    "щ" : str := str + "shch";
    "ъ" : str := str + "";
    "ы" : str := str + "y";
    "ь" : str := str + "";
    "э" : str := str + "e";
    "ю" : str := str + "yu";
    "я" : str := str + "ya";
    " " : str := str + " ";
  end;
Result := UpperCase(str);
end;


 
oldman ©   (2006-05-30 17:05) [8]


> Guest 111   (30.05.06 15:47) [5]


> vigo_   (30.05.06 17:01) [7]


В моей фамилии концовка "деев"...
Прямой перевод ни подойдет... Получится длинное "и"...
:)))


 
vigo_   (2006-05-30 17:20) [9]

Спасибо, тогда, видимо, так:

Result := UpperCase(StringReplace(str, "ee", "eye", [rfReplaceAll]));


Интересно, какие еще могут быть варианты?


 
oldman ©   (2006-05-30 17:24) [10]


> vigo_   (30.05.06 17:20) [9]
> Интересно, какие еще могут быть варианты?


"деев":="de`ev" :)
A "deyev", имхо, = "дейев"


 
vigo_   (2006-05-30 17:43) [11]

Судя по ссылке, все-таки "deev", имхо:

http://ezpc.dax.ru/itliter.shtml


 
vigo_   (2006-05-30 18:31) [12]

Вроде окончательный вариант, если кому интересно:


function CyrToLat(s: string): String;
var
str : string;
i, l : integer;
begin
 s := AnsiLowerCase(s);
 l := length(s); str := "";
 for i := 1 to l do
  case s[i] of
    "а" : str := str + "a";
    "б" : str := str + "b";
    "в" : str := str + "v";
    "г" : str := str + "g";
    "д" : str := str + "d";
    "е" : if ((i = 1)
            or (copy(str, length(str), 1) = " ")
            or (copy(str, length(str), 1) = "-")
            or (copy(str, length(str), 1) = "e")
            or (copy(str, length(str), 1) = "o"))
           then str := str + "ye"
             else str := str + "e";
    "ё" : str := str + "e";
    "ж" : str := str + "zh";
    "з" : str := str + "z";
    "и" : str := str + "i";
    "й" : begin
           if copy(str, length(str), 1) = "i" then delete(str, length(str), 1);
           str := str + "y"
          end;
    "к" : str := str + "k";
    "л" : str := str + "l";
    "м" : str := str + "m";
    "н" : str := str + "n";
    "о" : str := str + "o";
    "п" : str := str + "p";
    "р" : str := str + "r";
    "с" : str := str + "s";
    "т" : str := str + "t";
    "у" : str := str + "u";
    "ф" : str := str + "f";
    "х" : str := str + "kh";
    "ц" : str := str + "ts";
    "ч" : str := str + "ch";
    "ш" : str := str + "sh";
    "щ" : str := str + "shch";
    "ъ" : str := str + "-";
    "ы" : str := str + "y";
    "ь" : str := str + "-";
    "э" : str := str + "e";
    "ю" : str := str + "yu";
    "я" : str := str + "ya";
    " " : str := str + " ";
  end;
Result := UpperCase(StringReplace(str, "-", "", [rfReplaceAll]));
end;



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.012 c
2-1149347708
AlexanderMS
2006-06-03 19:15
2006.06.25
Показывать амперсанд (&)


2-1149173748
Андрей121
2006-06-01 18:55
2006.06.25
Кто может, переведите, пожалуйста из БД Access в бд Delphi


3-1146553131
denmin
2006-05-02 10:58
2006.06.25
Удаляются таблицы paradox при индексации.


11-1129044663
mdw
2005-10-11 19:31
2006.06.25
MCKfakeClasses, PActionList и KOLAdd


4-1142961749
Woolen
2006-03-21 20:22
2006.06.25
Определение блокировки рабочей станции





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский