LINUX.ORG.RU
ФорумTalks

Утилита для перевода в транслит и обратно


0

0

Где-то месяц назад понадобилось перевести небольшой текст в транслит
и для этого я написал маленькую программку, а тут вдруг решил
доделать её до полноценной утилиты и выложить. Может кому-то
пригодится.

ivan@localhost ~ $ ./translitru -h
translitru v1.0.1 (C) 2007 Ivan Mironov <mironov.ivan@gmail.com>
Homepage: http://code.google.com/p/translitru/
Transliteration utility for russian language.
Usage: translitru [-hvden] [-t type] [text] [text] ...
        -h     - Show this help message.
        -v     - Show version.
        -d     - Decode translit (if supported).
                 Encoding used by default.
        -e     - Test encoding and decoding (if supported).
        -n     - Do not output the trailing newline.
                 Used if text specified in command line.
        -t arg - Type of translit encoding. By default iso9b used.
        text   - Text to encode/decode. If not specified then
                 standard input is used.
Supported types of translit:
        iso9a  - ISO 9 (aka GOST 7.79-2000), table A. (enc/dec)
        iso9b  - ISO 9 (aka GOST 7.79-2000), table B. (enc/dec)
        qwerty - Text is converted as if it typed with wrong language
                 selected on en/ru qwerty keyboard. Non-cyrillic
                 characters also converted. (enc/dec)
        gamers - Cyrillic letters replaced with characters and character
                 combinations which has similar shape. Usually used by
                 gamers. Only inexact encoding. (enc)

ivan@localhost ~ $ ./translitru -e
Test #1
        Original: Подъём с затонувшего эсминца легко бьющейся древнегреческой амфоры сопряжён с техническими трудностями
        Encoded:  Pod``yom s zatonuvshego e`sminca legko b`yushhejsya drevnegrecheskoj amfory` sopryazhyon s texnicheskimi trudnostyami
        Decoded:  Подъём с затонувшего эсминца легко бьющейся древнегреческой амфоры сопряжён с техническими трудностями
Test #2
        Original: АЭРОФОТОСЪЁМКА ЛАНДШАФТА УЖЕ ВЫЯВИЛА ЗЕМЛИ БОГАЧЕЙ И ПРОЦВЕТАЮЩИХ КРЕСТЬЯН
        Encoded:  AE`ROFOTOS``YOMKA LANDSHAFTA UZHE VY`YAVILA ZEMLI BOGACHEJ I PROCVETAYUSHHIX KREST`YAN
        Decoded:  АЭРОФОТОСЪЁМКА ЛАНДШАФТА УЖЕ ВЫЯВИЛА ЗЕМЛИ БОГАЧЕЙ И ПРОЦВЕТАЮЩИХ КРЕСТЬЯН

ivan@localhost ~ $ ./translitru -et iso9a
Test #1
        Original: Подъём с затонувшего эсминца легко бьющейся древнегреческой амфоры сопряжён с техническими трудностями
        Encoded:  Podʺëm s zatonuvšego èsminca legko bʹûŝejsâ drevnegrečeskoj amfory soprâžën s texničeskimi trudnostâmi
        Decoded:  Подъём с затонувшего эсминца легко бьющейся древнегреческой амфоры сопряжён с техническими трудностями
Test #2
        Original: АЭРОФОТОСЪЁМКА ЛАНДШАФТА УЖЕ ВЫЯВИЛА ЗЕМЛИ БОГАЧЕЙ И ПРОЦВЕТАЮЩИХ КРЕСТЬЯН
        Encoded:  AÈROFOTOSʺËMKA LANDŠAFTA UŽE VYÂVILA ZEMLI BOGAČEJ I PROCVETAÛŜIX KRESTʹÂN
        Decoded:  АЭРОФОТОСЪЁМКА ЛАНДШАФТА УЖЕ ВЫЯВИЛА ЗЕМЛИ БОГАЧЕЙ И ПРОЦВЕТАЮЩИХ КРЕСТЬЯН

ivan@localhost ~ $ ./translitru -et qwerty
Test #1
        Original: Подъём с затонувшего эсминца легко бьющейся древнегреческой амфоры сопряжён с техническими трудностями
        Encoded:  Gjl]`v c pfnjyedituj 'cvbywf kturj ,m.otqcz lhtdytuhtxtcrjq fvajhs cjghz;`y c nt[ybxtcrbvb nhelyjcnzvb
        Decoded:  Подъём с затонувшего эсминца легко бьющейся древнегреческой амфоры сопряжён с техническими трудностями
Test #2
        Original: АЭРОФОТОСЪЁМКА ЛАНДШАФТА УЖЕ ВЫЯВИЛА ЗЕМЛИ БОГАЧЕЙ И ПРОЦВЕТАЮЩИХ КРЕСТЬЯН
        Encoded:  F"HJAJNJC}~VRF KFYLIFANF E:T DSZDBKF PTVKB <JUFXTQ B GHJWDTNF>OB{ RHTCNMZY
        Decoded:  АЭРОФОТОСЪЁМКА ЛАНДШАФТА УЖЕ ВЫЯВИЛА ЗЕМЛИ БОГАЧЕЙ И ПРОЦВЕТАЮЩИХ КРЕСТЬЯН

ivan@localhost ~ $ ./translitru -et gamers
Test #1
        Original: Подъём с затонувшего эсминца легко бьющейся древнегреческой амфоры сопряжён с техническими трудностями
        Encoded:  noD`beM c 3aToHyBLLIero 3cMuH,Lla JIerko 6bI-O,LLIeuc9I DpeBHerpe4eckou aMqpopbl conp9I}I{eH c TexHu4eckuMu TpyDHocT9IMu
Test #2
        Original: АЭРОФОТОСЪЁМКА ЛАНДШАФТА УЖЕ ВЫЯВИЛА ЗЕМЛИ БОГАЧЕЙ И ПРОЦВЕТАЮЩИХ КРЕСТЬЯН
        Encoded:  A3POqpOTOC`bEMKA JIAHDLLIAqpTA Y}I{E Bbl9IBNJIA 3EMJIN 6OrA4EN N nPO,LlBETAI-O,LLINX KPECTb9IH
Deleted

Test #1
        Original: Подъём с затонувшего эсминца легко бьющейся древнегреческой амфоры сопряжён с техническими трудностями
        Encoded:  noD`beM c 3aToHyBLLIero 3cMuH,Lla JIerko 6bI-O,LLIeuc9I DpeBHerpe4eckou aMqpopbl conp9I}I{eH c TexHu4eckuMu TpyDHocT9IMu
Test #2
        Original: АЭРОФОТОСЪЁМКА ЛАНДШАФТА УЖЕ ВЫЯВИЛА ЗЕМЛИ БОГАЧЕЙ И ПРОЦВЕТАЮЩИХ КРЕСТЬЯН
        Encoded:  A3POqpOTOC`bEMKA JIAHDLLIAqpTA Y}I{E Bbl9IBNJIA 3EMJIN 6OrA4EN N nPO,LlBETAI-O,LLINX KPECTb9IH

зачот!

generatorglukoff ★★
()

a kak uznat', kakim vidom transliteracii ja pol'zujus'? my tut kak-to na tutejshem pishem, no ne vse russkije menia ponimajut. vot naprimer v slove "menia" mne bukvu "j" pisat' ne hochetsia, t.k. posledniaja bukva sozvuchno s litovskim "e", a v slove "posledniaja" "j" proslushivaetsia ideal'no . chto mne delat', esli ja slyshu zvukov bol'she, chem srednestatisticheskij russkij? :)

Pi ★★★★★
()
Ответ на: комментарий от Deleted

http://ru.wikipedia.org/wiki/КОИ-8



"Разработчики КОИ-8 поместили символы русского алфавита в верхней части кодовой таблицы таким образом, что позиции кириллических символов соответствуют их фонетическим аналогам в английском алфавите в нижней части таблицы. Это означает, что если в тексте, написанном в КОИ-8, убирать восьмой бит каждого символа, то получается «читабельный» текст, хотя он и написан латинскими символами. Например, слова «Русский Текст» превратились бы в «rUSSKIJ tEKST». Как побочное следствие, символы кириллицы оказались расположены не в алфавитном порядке."

Dead ★★★★
()
Ответ на: комментарий от Morgendorffer

А причем KOI8-R,может имелось в виду koi7,правда при переводе из транслита в русский имхо всё равно не поможет.

TheFallenAngel ★★
()
Ответ на: комментарий от dmiceman

ага, класс! Я в свое время делал что-то подобное, боюсь сказать, на делфи, в школе %) Было настолько криво, что щас зависть берет. Респект!

lester_dev ★★★★★
()
Ответ на: комментарий от dmiceman

можно заюзать tr.
а можно и:
классический способ:
---koi8r_to_translit_and_back_classic.c---
#include <stdio.h>

main(int argc, char **argv)
{
int c;
if(argc<2) while ((c = getchar()) != EOF)putchar(c&0x7f);
else while ((c = getchar()) != EOF)putchar(c|0x80);
}
---
и другая версия (с соблюдением регистров):
---koi8r_to_translit_and_back.c---
#include <stdio.h>

main(int argc, char **argv)
{
int c;
if(argc<2)
while ((c = getchar()) != EOF){
if(c>224)c-=160;
if(c>162)c-=96;
putchar(c);
}
else
while ((c = getchar()) != EOF){
if(c>96)c+=96;
else c+=160;
putchar(c);
}
}
---

saahriktu ★★★★★
()

Скачал. Спасибо.

shahid ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.