http://mi.anihost.ru/trans.htm
Николай Михайленко:


TRANS - универсальный транслитератор

Скачать версию для ...

DOS:
ftp://ftp.anihost.ru/users/mi/trans.zip
ftp://ftp.mccme.ru/users/nick/trans.zip

Linux:
ftp://ftp.anihost.ru/users/mi/transLin.zip
ftp://ftp.mccme.ru/users/nick/transLin.zip

Сейчас модно придумывать всякие транслиты. Моя прога позволить вам сразу же посмотреть ваш транслит в деле. Вы можете "перевести" html-файл и подсчитать "выбухание" вашего транслита. Распух ли файл и как он теперь смотрится?

При помощи TRANS можно изменить кодировку вашего текста или снять шапочки с букв Эсперанто или вернуть шапочки на место. Всё, что от вас требуется - составить файл замен. Вы можете заменять как отдельные символы, так и их последовательности, причём с учётом окружения слева и справа.

Входной файл не обязан быть текстовым - можно, в частности, за один проход, заменить все сообщения в EXE-файле. Вам доступен исходник на СИ проги TRANS, исходник с подробными комментариями. Наслаждайтесь!


  Universalny transliterator
  ~~~~~~~~~~~~~~~~~~~~~~~~~~
  Proga TRANS, osuwestvlaet kak postrocnu transliteratsiu s konsoli,

               trans fajl_zamen

  tak i transliteratsiu tselogo fajla source, v poslednem slucae vyzov:

               trans fajl_zamen source result

  Fajl zamen iwetsa snacala v tekuwej direktorii, a esli ego tam net,
  to v direktorii, gde najdena proga TRANS.EXE

  Fajl zamen sostoit iz trjoh castej

  1. zameny po defoltu
  2. stroki kontekstnoj zameny
  3. kommentarii

  Obqzatelnymi qvlajutsa tolko dve pervye stroki opredelajuwie zamenu po
  defoltu. Snacala zadaem stroku bajtov, kaxdyj iz kotoryh podlexat zamene,
  a srazu pod nej stroku bajtov na kotorye zamenqem (bajt na bajt).
  Obe stroki, ponqtnoe delo, dolxny imetj odinakovu dlinu.

  Pervye bajty etih strok imejut osoboe znacenie, oni ne dla zameny ukazany.
  Esli transliteriruetsa html-dokument, to nado v pervyh bajtah pomestitj
  '<' i '>', togda tekst vnutri uglovyh skobok <...> perevoditsa ne budet.

  Esli xe v pervyh bajtah ukazano cto-libo drugoe, to ih soderximoe
  ignoriruetsa. Rekomenduju ukazyvatj simvoly '0'.

  Kstati, moq proga moxet zamenitj luboj nenulevoj bajt na luboj drugoj
  nenulevoj. Nulevoj bajt menqtj nelzq.

  Simvol '0' zamenitj moxno, esli on ukazan ne v nacale stroki.

  Esli v kaxdoj iz pervyh dvuh strok ukazatj _edinstvennyj_ simvol
  (skaxem, '0'), to zamen po defoltu nikakih ne budet.

  Posle dvuh obqzatelnyh strok moxno zadatj stroki kontekstnoj zameny,
  pricom oni budut primenqtsa v _pervu oceredj_, do zamen po defoltu

  Struktura stroki kontekstnoj zameny:

             dano[+L(...)][+R(...)]:rezultat

  dano     - zamenqema podstroka, ne pustaq
  rezultat - na cto menqem "dano", eta stroka moxet bytj pustoj
  Obe eti podstroki mogut soderxatj _probely_
  i simvoly granitsy stroki "\r\n"

  Optsionalno ukazyvaem nabory _odinocnyh_ simvolov, kotorye dolxny stoqtj
  sleva (L) ili sprava (R) ot 'dano'

  Esli vmesto +L() napisatj -L(), to etim opredelim, kakie simvoly
  _ne_ dolxny stoqtj sleva ot 'dano', ctoby stroka zameny srabotala

  Analogicno nado ponimatj -R().

  Esli my hotim, ctoby simvoly '+', '-', ')' ili ':' ne rassmatrivalisj
  kak upravlajuwie, to stavim pered nimi "obratny slew" >>\<<, kotoryj
  vypolnqet rolj ekrana. Dvojnoj slew >>\\<< ponimaetsa kak odinocnyj
  neekranirujuwi slew.

  V strokah zameny moxno tak oboznacitj ogranicitelnye bajty:
  \r - vozvrat karetki (13)
  \n - perevod stroki (10)

  Stroka kontekstnoj zameny moxet bytj okruxena pustymi strokami
  ili strokami, kotorye ne soderxat ':' (ih moxno scitatj kommentariem)

  Esli v fajle zamen vsrecaetsa stroka "---", to ego scityvanie prekrawaetsa
  i stroki nixe moxno scitatj kommentariem

  Esli tekuwi kusok ishodnogo fajla ne perevoditsa ni odnoj strokoj zameny,
  to pytaemsa zamenitj bajt po defoltu, esli xe ego _ne_ okazyvaetsa
  v _pervoj_ stroke fajla zamen, to prosto _kopiruem_ etot bajt
  v rezultirujuwi fajl.

  Ogranicenia na dlinu stroki vhodnogo fajla net, poskolku on scityvaetsa
  ne postrocno, a pobajtovo v binarnom rexime.

  Moxno poprobovatj zamenitj slova v exe-fajle na slova toj xe dliny,
  ocevidno, slova ili frazy ne dolxny bytj korotkimi, ctoby ne zamenitj
  liwnego v kode progi. Kolicestvo proizvedjonnyh kontekstnyh zamen
  vyvoditsa na ekran.

  Ogranicenia:
  ~~~~~~~~~~~~
  Fajl zamen dolxen bytj tekstovym s \r\n ili \n na kontse strok
  V fajle zamen stroki ne mogut bytj dlinnee 256 simvolov (bez ucota \r\n)

  V pervyh dvuh strokah "zamen po umolcaniy" nedopustim '\0'

  V strokah kontekstnyh zamen nedopustim nulevoj bajt '\0' i bajt '\1'.
  Stroka 'dano' ne dolxna bytj pustoj
  Dlina strok 'dano', 'rezultat' i strok vnutri skobok L(), R() ne bolee 79
  Kolicestvo strok kontekstnoj zameny - 180 maksimum

  Pri scityvanie _s konsoli_, obrabotka vhodnoj informatsii proishodit
  postrocno, ctoby srazu videtj rezultat transiteratsii posle naxatia
  Enter, pri etom voznikajut ponqtnye ogranicenia na ispolzovanie \r\n
  v strokah kontekstnoj zameny.

  Dlinnyh imjon fajlov dosovska versia progi ne ponimaet, tolko (8+3).