Главная страница
    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.013 c
6-1140176269
MegaVolt
2006-02-17 14:37
2006.06.25
Как обработать исключения которые генерит TIdFTP?


2-1149662641
irena
2006-06-07 10:44
2006.06.25
varchar(1024) не сохраняется при использовании TDBMemo


2-1149684223
UniCode
2006-06-07 16:43
2006.06.25
Помогите разобраться с Captions на Unicode


2-1149511088
$Cursor
2006-06-05 16:38
2006.06.25
Собственный курсор из ресурса


15-1149180484
Dter
2006-06-01 20:48
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский