[prevod gnoma] Предлог за аутоматизован превод

Danilo Šegan danilo на gnome.org
Пон Јун 13 11:36:00 CEST 2005


Здраво Филипе,

Данас у 2:48, Filip Maličević написа:

> Вероватно је о овоме већ дискутовано, шта мислите о томе да се одради
> програмчић који би као улаз узимао .ПО фајл, па читао оригинале из
> њега, претражио своју базу са досада одрађеним преводима на српски, па
> ако нађе такву исту поруку, у преведено убаци оно што је тамо
> написано, ако је ишта нашао, ако ништа није нашао, онда оставља празан
> превод, па као излаз даје нови фајл са неким порукама које су већ
> преведене. 

Погледај „info msgmerge“ и опцију „-C“ за исти: коришћењем свих
постојећих ПО фајлова са преводима и опције -N (--no-fuzzy-matching:
без „сличних“ израза) чини ми се да се постиже управо оно што тражиш.

Ја, пошто имам готово читав Гномов СУВ (CVS) на неких 3-4 гигабајта на
диску, такође располажем и свим ПО фајловима за српски, па то увек
користим када започињем рад на неком већем преводу.  Ипак, због велике
базе превода (преко 60 хиљада преведених израза), ово уме да буде
знатно споро ако се не користи опција -N.

> Уз нпр. опцију да не тражи идентичне поруке, него да прима
> и ако је промењен ред речи, нешто као Translate Memory у PoEdit-у.
> То би нпр. могло да буде на неком серверу, па да се да фајл, а као
> резултат се да линк са резултатом превода.

Управо то ради msgmerge без опције -N, али то буде јако споро.  Колико
сам чуо, PoEdit има другачији алгоритам који то нешто боље ради, а ако
је тако, ја бих волео да га видим имплементиран у мојој класи за рад
са ПО фајловима написаној у Питону:
  http://kvota.net/hacks/zmijsko-gnezdo/gettext_po.py

Ова класа подржава и неке додатне могућности (као што је приказ
разлика између сличних порука при таквом спајању, в. опис тога на 
http://danilo.segan.org/blog/prevod/po-merging-and-diffs).

Циљ ми је да је додатно унапредим како бих је користио и у xml2po
алату, и у 

> Предности:
> Нема превода једних те истих порука на различите начине.
> Убрзавање превода смањивањем посла.
> Фокусирање на досада непреведено.
> ...

Наравно, томе преводилачке меморије и компендијуми и служе :)

> Мане:
> Поруке које нису комплетне речи могу бити преведене у погрешном
> контексту, али то се да исправити тиме што ће се све поруке прочитати,
> па ако треба пријавити корекцију у базу података.
> ...

Претпостављам да мислиш на поруке које нису комплетне реченице, а у
Гному такве поруке углавном сматрамо грешкама.  Нпр. уместо две поруке
  "File "
  "is invalid"
ми захтевамо да израз буде:
  "File %s is invalid"
(или већ у складу са изворним програмским језиком)

Наравно, и даље се јавља проблем да се неке речи могу појавити са
различитим смислом потпуно самостално

> Не би ми био проблем да направим тако нешто, ако тога већ нема.

Ако си већ рад да порадиш на таквом алату који би радио на нивоу речи
(а не на нивоу слова, као у msgmerge и тренутној имплементацији мог
pomerge.py), радо бих волео да га видим као проширење за класу
gettext_po.  Предност овог приступа је да не мораш да бринеш тренутно
о раду са ПО фајловима (мада gettext_po није претерано тестиран, у
случају исправних ПО датотека углавном ради исправно :).  Наравно, циљ
нам је да и у предстојећем редизајну Превод.орг страница искористимо
ове могућности да бисмо направили бољу страницу која ће више нудити
својим преводиоцима и корисницима.

Све што треба да урадиш је да напишеш функцију која пореди две ниске и
враћа вредност између 0 и 1 (0 — нема уопште сличности, 1 — идентичне
су), уз необавезно враћање diff-ниске.  Ако желиш, за дељење на речи
можеш користити и напредну библиотеку NLTK (Natural Language ToolKit:
http://nltk.sf.net/), али и нека једноставнија хеуристика може бити
сасвим довољна.

Као пример одговарајуће функције погледај _default_fuzzy_compare(str1,
str2) функцију која просто користи постојећу функционалност difflib-а
из Питона.  

Питон је врло лак језик, и не верујем да ћеш имати проблема са
разумевањем и учењем ако га већ не познајеш. :)

Живели,
Данило


Више информација о листи слања gnom