Например, молоко - moloko. И всё.Были русские буквы стали латинские.
Вот пример функции, которая транслирует из русских слов в английские.
Пригодилась, когда нужно было файлы в mp3-плеер перегонять - он русский не понимает.
Code:
unit Translate;
interface
function Convert(OldName: string): string;
implementation
function Convert(OldName: string): string;
var OldNameLength: integer;
i: integer;
s: string;
begin
OldNameLength := length(OldName);
s:='';
i:=1;
while i <= OldNameLength do begin
if (OldName[i] in ['A'..'Z']+['a'..'z']+['0'..'9']+
['{']+['}']+['[']+[']']+['`']+['~']+
['!']+['@']+['#']+['$']+['%']+['^']+
['&']+['*']+['(']+[')']+['-']+['_']+
['+']+['=']+['']+['|']+[';']+[':']+
['"']+['{']+['<']+['>']+[',']+['.']+
[' ']+['?']+['/']+['№']+['^'])
then s:=s+OldName[i];
if OldName[i] in ['А','Б','а','б'] then
s:=s+chr(ord(OldName[i])-127);
if OldName[i] in ['В','в'] then
s:=s+chr(ord(OldName[i])-108);
if OldName[i] in ['Г','г','Ж','ж'] then
s:=s+chr(ord(OldName[i])-124);
if OldName[i] in ['Д','д','Е','е'] then
s:=s+chr(ord(OldName[i])-128);
if OldName[i] in ['З','з'] then
s:=s+chr(ord(OldName[i])-109);
if OldName[i] in ['И','и','К','к','Л','л','М','м','Н','н','О','о','П','п'] then
s:=s+chr(ord(OldName[i])-127);
if OldName[i] in ['Й','й'] then
s:=s+chr(ord(OldName[i])-128);
if OldName[i] in ['Р','р','С','с','Т','т','У','у'] then
s:=s+chr(ord(OldName[i])-126);
if OldName[i] in ['Ф','ф'] then
s:=s+chr(ord(OldName[i])-142);
if OldName[i] in ['Х','х'] then
s:=s+chr(ord(OldName[i])-141);
if OldName[i] in ['Ц','ц'] then
s:=s+chr(ord(OldName[i])-147);
if OldName[i] in ['Ы','ы'] then
s:=s+chr(ord(OldName[i])-130);
if OldName[i] in ['Э','э'] then
s:=s+chr(ord(OldName[i])-152);
if OldName[i] = 'Ё' then s:=s+'Yo';
if OldName[i] = 'ё' then s:=s+'yo';
if OldName[i] = 'Ч' then s:=s+'Ch';
if OldName[i] = 'ч' then s:=s+'ch';
if OldName[i] = 'Ш' then s:=s+'Sh';
if OldName[i] = 'ш' then s:=s+'sh';
if OldName[i] = 'Щ' then s:=s+'Sch';
if OldName[i] = 'щ' then s:=s+'sch';
if OldName[i] in ['Ъ','ъ','Ь','ь'] then s:=s+chr(39);
if OldName[i] = 'Ю' then s:=s+'Yu';
if OldName[i] = 'ю' then s:=s+'yu';
if OldName[i] = 'Я' then s:=s+'Ya';
if OldName[i] = 'я' then s:=s+'ya';
i:=i+1;
end;
Convert:=s;
end;
Программа на языке Pascal для транслитерации русского текста в латинские символы, известная как транслитерация. Программа принимает строковый ввод на русском языке и конвертирует его в строковый вывод на английском языке с использованием стандартной схемы транслитерации ISO 9:1995.
Вот подробное описание, что делает код:
Он проверяет, является ли каждый символ входной строки буквой, цифрой или специальным символом. Если это так, он добавляет его к строке вывода как есть.
Для русских букв (А-Я, а-я) программа использует код Unicode для конвертации их в соответствующие латинские символы.
Используемые правила транслитерации следующие:
А, В, Д, Е, К, М, О, Р, С, Т, У, Ф, Х, Ц, Ч, Ш, Щ, Ъ, Ь, Ю, Я заменяются на соответствующие английские буквы
Ё заменяется на "Yo"
Ч заменяется на "Ch"
Ш заменяется на "Sh"
Щ заменяется на "Sch"
Ъ и ъ заменяются на одиночную кавычку (')
Ю заменяется на "Yu"
Я заменяется на "Ya"
Программа использует функцию ord для получения кода Unicode каждого символа, а затем arithmetic операции для конвертации его в соответствующий латинский символ.
Эта программа может быть полезна для конвертации русского текста в формат, который можно прочитать не русскоязычными программами или устройствами. Например, вы упомянули использование этой программы для конвертации имен файлов с русским языком на английский язык, чтобы они могли быть воспроизведены на проигрывателе MP3.
Обратите внимание, что это код не очень эффективен и может не работать правильно с любыми типами входных строк. Также стоит отметить, что схема транслитерации ISO 9:1995 была критикована за ее ограничения, и более современные схемы, такие как нормализация Unicode, могут быть предпочтительнее в некоторых случаях.
Транслитерация - это процесс преобразования текста на русском алфавите в текст на латинском алфавите, используя определенные правила замены символов.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.