Два наречја
Напомена: Могућности и поступци које описује ова страна још увек су експериментални. Чекају на матерње говорнике ијекавског наречја српског језика који би их кроз праксу или потврдили, или показали неодрживим.
Садржај
4.1. Специјални случајеви у хибридизацији
4.2. Приписивање измена и прегледа
Увод
Може се рећи да је српски језик понешто необичан, у односу на многе ближе и даље језике, по томе што се, с лингвистичке тачке гледишта, говори у два равноправна наречја и пише са два равноправна писма. То значи да коју год од резултујуће четири усмено-писмене комбинације да користи, одређени говорник може за себе рећи да се служи стандардним српским језиком. Питање је, онда, колико се за једно рачунарско окружење може рећи да је „потпуно преведено на српски“, ако, рецимо, подржава тачно једно наречје и писмо — односно, ако не подржава три четвртине језичког стандарда.
У преводима слободног софтвера на српски, до сада, мало је било проблема са подршком за оба писма. Захваљујући могућности једноставног пресловљавања са ћирилице на латиницу, свако веће тело превода рутински долази на оба писма. Обезбеђивање оба наречја, међутим, показало се повишом пречком, услед два основна проблема. С једне стране, у превођењу учествују махом говорници екавског наречја као матерњег, па су такви и преводи. С друге стране, иако би се превод дао ијекавизовати много брже него што је требало да се преведе на екавски, не би било лако одржавати га, односно пратити током времена измене у изворном материјалу и екавском преводу.
Поменута два проблема доводе до тога да малобројни преводилац-ијекавац, који у данашње време обично одлично познаје и екавски, радије улаже напоре у побољшање тог и таквог екавског превода. Пре него да расипа напоре додатно преводећи на, с техничког гледишта, замало па „још један језик“, од чега овај „претходни“ неће имати никакве користи. Стога, систем за рад на оба наречја који ће бити описан у наредним редовима, тежи да постигне:
- лаку и отпорну на погрешке ијекавизацију чистог екавског текста,
- што лакше одржавање оба наречја превода према променама у извору, и
- у односу на рад само на једном, већи квалитет превода за оба наречја.
Почетна ијекавизација
С обзиром на претходна разматрања, полази се од претпоставке да се оба наречја добијају тако што се текст прво преведе на екавски, па се затим ијекавизује — али, тако да на крају заиста једина разлика између оба текста буде наречје. Ово последње захтева образложење: пошто се ради о темама из рачунарског миљеа, а не о уличном жаргону Београда или Бањалуке, очекује се да један текст исти осим по наречју буде једнако пристао за становнике оба поменута града.
Преведени екавски текст налази се у ПО датотекама, које су обичне текстуалне уз нешто очигледне синтаксе (видети одељак о основној техници). Главна идеја је да се не прави засебан скуп ијекавских ПО датотека, већ да се екавске допуне до хибридних ијекавско-екавских, и потом се као такве и одржавају. У тренуцима када превод треба испоручити уз наступајуће издање софтвера, из хибридних аутоматски се граде крајње екавске и ијекавске ПО датотеке.
Како се ствара хибридни превод? Ради лакшег праћења ко шта ради, узмимо да сарађују четири преводиоца: Иво и Јово, који су ијекавци, и Ера и Која, екавци; Која је координатор (тј. главна теглећа марва). Почнимо од примера чисто екавске ПО датотеке по имену story.po, коју су превели Ера или Која, и три уноса у њој (грешка у преводу првог је намерна):
#: prologue.cpp:10 msgid "A record of the Witch River" msgstr "Белешка о Вештичој реци" #: chapter1.cpp:20 msgid "Activities on the dig" msgstr "Делатности на ископини" #: chapter2.cpp:30 msgid "The discovery" msgstr "Откриће"
Јово се баца на прављење хибридног превода. Он преправља екавски у ијекавски превод, али тако да убацује посебан знак, › (даље у тексту значка), где год ијекавска реч почиње да се разликује у односу на екавску — на
#: prologue.cpp:10 msgid "A record of the Witch River" msgstr "Б›иљешка о В›јештичјој р›ијеци" #: chapter1.cpp:20 msgid "Activities on the dig" msgstr "Д›јелатности на ископини" #: chapter2.cpp:30 msgid "The discovery" msgstr "Откриће"
Од оваквог хибрида, нормалан ијекавски превод аутоматски се добија простим избацивањем значака, а екавски се реконструише пресликавањем ›ије→е, ›је→е, ›иј→е, ›ње→не, ›ље→ле, ›ио→ео, ›иљ→ел (уз ређе специјалне случајеве, в. зачкољице).
Поред тога што поправи по нешто, Јово је хибридизујући превод могао негде и да погреши. Могао је погрешно да преправи покоју реч, да пропусти да стави значку, или је стави на погрешно место. Ту на сцену ступа координатор Која, коме Јово шаље допуњени превод. Која, пошто је добио хибридну story.po, извршавa над њом:
$ poascribe.py diff -f sr:ijeref/to-e-s story.po
Ова наредба читаоцу није битна у детаљима (дата је ради потпуности), већ је битно шта ће учинити за Коју. Разликоваће све измењене уносе у story.po који више нису исти после аутоматске реконструкције екавског (под филтером sr:ijeref/to-e-s):
#: prologue.cpp:10 #, ediff msgid "A record of the Witch River" msgstr "" "{-Белешка-}{+Б›иљешка+} о {-Вештичој реци-}{+В›јештичјој р›ијеци+}\n" "~~~~~~~~~~\n" "Белешка о {-Вештичој-}{+Вештичјој+} реци" #: chapter1.cpp:20 msgid "Activities on the dig" msgstr "Д›јелатности на ископини" #: chapter2.cpp:30 msgid "The discovery" msgstr "Откриће"
Вреди пажљиво размотрити шта се догодило. Пођимо од позади. Трећи унос Јово није мењао, због чега није ни узет у обзир за разликовање. Други унос, иако измењен, такође је остао неразликован зато што је аутомат утврдио да је реконструисани екавски превод исти као почетни. Која тако нема никаква посла са ова два уноса.
Најзанимљивији је први унос, у коме је понешто додато и измењено. Коментар #, ediff говори да се хибридизацијом нешто изменило у екавском преводу, те да га треба прегледати. До овога је дошло зато што је Јово додао недостајуће ј, па аутомат региструје да реконструисани екавски превод није исти као почетни. У пољу превода дата су два скупа угњеждених разлика у витичастим заградама {-...-} и {+...+}, раздвојена низом тилди. Први говори шта је додато а шта одузето када се упореде почетни и хибридизовани превод, а други кад се упореде почетни и филтером реконструисани екавски.
Која тако види да је у екавској варијанти само исправљена грешка. Да је уместо тога видео нову грешку, исправио би је. На пример, да је Јово написао ријеци, без значке, Која би ју је могао додати. Или да је Јово написао Биљ›ешка, Која би преместио значку на право место. Пошто се уверио у исправност разликованих уноса, Која очисти разликовање и преда хибридизовани превод у ризницу:
$ poascribe.py clear-review story.po $ <предај-у-ризницу> story.po
На концу, како би спремио аутомат за наредну рунду дописивања са Јовом, Која припише све измене уноса Јову, а потребне прегледе и Јову и себи:
$ poascribe.py modified jovo story.po $ poascribe.py reviewed jovo -s modar::ivo,jovo story.po $ poascribe.py reviewed koja -s modar:ivo,jovo:koja -f sr:ijeref/to-e-s story.po $ <предај-у-ризницу> <новоприписано>
Поред тога што је остварен превод на оба наречја, оваквом разменом постигнуто је да је сваки екавски унос још једном прегледан и исправљене уочене грешке, а ијекавизација је заштићена од типфелера какви се могу очекивати у поступку хибридизације — чиме је увећан квалитет превода на оба наречја.
Узајамно одржавање
Хибридизовани превод треба ажурирати како долази до промена и допуна у енглеском извору. Претпоставимо да су измењена прва два уноса из претходних примера, и да је запало Ери да доради превод. Ера је, пак, ијекавски слушао само у Чолићевим песмама, а више и не памти да ли је довршио „Дервиша и смрт“ кад га је читао за лектиру. Али га то неће спречити да успешно вршља по хибридизованом преводу.
Пошто се ПО датотека story.po стопи са најновијим енглеским шаблоном (опет, основна техника пружа детаље о овоме), Ера добије следеће:
#: prologue.cpp:10 #, fuzzy msgid "{-A record-}{+Records+} of the Witch River" msgstr "Б›иљешка о В›јештичјој р›ијеци" #: chapter1.cpp:20 #, fuzzy msgid "{-Activities-}{+Part of activities+} on the dig" msgstr "Д›јелатности на ископини"
Коментари #, fuzzy указују да је енглески извор измењен. У изворним пољима, истим системом угњеждених разлика, дато је шта се тачно променило у извору. Ера на основу овога доправи преводе по екавском наречју, не осврћући се на то што су хибридни. За неке речи му је, наравно, очигледно како их може изменити без уклањања значки и ијекавског, тако да испадне:
#: prologue.cpp:10 msgid "Records of the Witch River" msgstr "Б›иљешке о В›јештичјој р›ијеци" #: chapter1.cpp:20 msgid "Part of activities on the dig" msgstr "Део д›јелатности на ископини"
Види се да је после Ериних измена први унос остао правилно хибридизован, док другом уносу недостаје ијекавски на првој речи. Ера пошаље допуњене датотеке координатору Који, који их прихвата без провере хибридизације (мада, наравно, може извршити неке друге), пошто је Ера екавац. Али, Која не пропусти да припише измене Ери:
$ poascribe.py modified era story.po $ <предај-у-ризницу> <новоприписано>
Коначно, наилази Јово да правилно хибридизује превод који је Ера допунио. Главно је да Јово сада не мора да прође кроз сваки унос, као што је учинио при почетној хибридизацији. Уместо тога, једном наредбом може да разликује тачно оне уносе који су измењени откако их је он или Иво (други ијекавац) последњи пут прегледао:
$ poascribe.py diff -s modar::ivo,jovo story.po
што произведе:
#: prologue.cpp:10 #, ediff msgid "{-A record-}{+Records+} of the Witch River" msgstr "{-Б›иљешка-}{+Б›иљешке+} о В›јештичјој р›ијеци" #: chapter1.cpp:20 #, ediff msgid "{-Activities-}{+Part of activities+} on the dig" msgstr "{-Д›јелатности-}{+Део д›јелатности+} на ископини"
Јово одавде јасно види да је први унос измењен тачно како треба. За други унос види да првој речи у новој верзији превода недостаје хибридизација, те је дода:
#: chapter1.cpp:20 #, ediff msgid "{-Activities-}{+Part of activities+} on the dig" msgstr "{-Д›јелатности-}{+Д›ио д›јелатности+} на ископини"
Потом очисти разликовање:
$ poascribe.py clear-review story.po
и допуњену хибридизацију на крају пошаље Који, који понови исти поступак као и кад је први пут добио story.po од Јова. Тако се и током одржавања екавски превод двоструко проверава, а потом и евентуалне грешке у ијекавизацији.
Овим је круг хибридизације, од почетне преко редовног одржавања, затворен.
Зачкољице и напомене
Претходно изнесени поступак чини главнину посла око израде хибридног превода, али треба поменути и неке повремене додатне захвате, и објаснити позадину неких техничких решења.
Специјални случајеви у хибридизацији
Пресликавања ›ије→е, ›је→е, итд. покривају највећи део разлика између ијекавског и екавског, али не сва. Тј. не покривају случајеве где екавски рефлекс јата није е, већ нешто друго, нпр. и. Ево примера с таквим рефлексима:
Насмејеш ли се, џаба си доливао уље на ватру.
Када би се овде поступило по упуту „значка пре рефлекса“, добио би се хибрид:
Насм›ијеш ли се, џаба си дол›ијевао уље на ватру.
од кога би се реконструисао погрешан екавски:
Насмеш ли се, џаба си долевао уље на ватру.
Решење у оваквим случајевима је просто да се значка дода једно слово пре почетка рефлекса:
Нас›мијеш ли се, џаба си до›лијевао уље на ватру.
што произведе додатна пресликавања која се могу обрадити једнако као и обична (овде ›мије→меје и ›лије→ли). Притом не треба нимало бринути о могућности да се пропусти овакав случај, јер ће аутоматско упоређивање почетног и реконструисаног екавског текста лако указати на такву грешку.
Приписивање измена и прегледа
Техничко срце система очигледно је скрипта poascribe.py. Њена основна намена је контрола квалитета превода, праћењем ко је шта мењао и прегледао. Одређене уносе у ПО датотеци одређени преводилац може у неком тренутку изменити или прегледати, што му се припише поднаредбама modified <преводилац> или reviewed <преводилац>, а које се примењују на уносе изабране садејством бирача и филтера, опције -s ... и -f .... У било ком тренутку после тога, поднаредбом diff може се добити разлика између тренутне и неке раније верзије уноса, опет изабраног комбинацијом бирача и филтера (подразумевано се у разликовање узимају сви новоизмењени, тј. неприписани уноси).
Приписивање ради тако што за сваког регистрованог преводиоца одржава паралелан засебан скуп приписних ПО датотека, које садрже само оне уносе који су приписани дотичном преводиоцу, и на основу којих реконструише затражене разлике. На пример, ако се стварне (тј. хибридизоване) ПО датотеке налазе у директоријуму messages, приписне могу бити у messages-ascript, тако да цело стабло изгледа овако:
messages/
story.po
puzzle.po
...
messages-ascript/
koja/
story.po
puzzle.po
...
jovo/
story.po
puzzle.po
...
...
Као и сам превод, и приписне ПО датотеке држе се у ризници система за управљање верзијама.
Скрипта poascribe.py део је Пологије, експерименталног пакета за специјалне обраде над ПО датотекама. Може се добавити из субверзијске ризнице КДЕ-а, на адреси svn://anonsvn.kde.org/home/kde/trunk/l10n-support/pology.
Још неке употребе приписивања
Уколико су ПО датотеке под управљањем верзијама, као што обично јесу, измењени уноси се не могу приписати пре него што се измене предају у ризницу. У постави приписивања наводи се и систем за управљањем верзијама, тако да ће га poascribe.py консултовати и упозорити кад измене нису предате, одбивши да их припише. Ово просто значи да треба извршити једну предају измењених ПО датотека пре сваког примењивања поднаредбе modified.
Координатор (Која у горњим примерима) понекад може бити у журби да би прегледао хибридизацију коју је припремио ијекавски преводилац (Јово или Иво). У том случају може просто предати измене без провере (само их приписавши Јову или Иву), како не би задржавао посао, а проверу извршити касније кад буде имао времена. Да би то учинио, потребно је да изврши:
$ <предај-у-ризницу> ... $ poascribe.py modified jovo ... $ poascribe.py reviewed jovo -s modar::ivo,jovo ... $ <предај-у-ризницу> <новоприписано>
и онда касније може натенане да прегледа хибридизацију помоћу:
$ poascribe.py diff -s modar:ivo,jovo:koja ...
$ # ...Која прегледава...
$ poascribe.py clear-review ...
$ <предај-у-ризницу> ...
$ poascribe.py modified koja ...
$ poascribe.py reviewed koja -s modar:ivo,jovo:koja -f sr:ijeref/to-e-s ...
$ <предај-у-ризницу> <новоприписано>
Ради праћења измена чак и преко промена у изворном енглеском тексту, као и праћења застаревања и оживљавања уноса, координатор после сваког стапања са шаблонима треба да изврши приписивање резервисаном кориснику fuzzy:
$ <стопи-са-шаблонима> $ poascribe.py modified fuzzy ...
Важно: Да би приписивање по стапању имало жељени ефекат, неопходно је да се каталози стапају уз опцију --previous при msgmerge, и без одстрањивања застарелих уноса (могу се одстранити одмах после приписивања).
Аутоматска ијекавизација
Систем хибридизације планиран је уз претпоставку да на располагању не стоји никакав алат за аутоматску ијекавизацију. Уколико би се такав алат ипак нашао, могао би се глатко укључити у поступак хибридизације: лако би било израдити посебну хибридизациону скрипту која ће сваки екавски унос у ПО датотеци провући кроз ијекавизатор, а затим екавски и ијекавски превод стопити у хибридни. Притом, ијекавизатор не мора да буде непогрешив — Јово би прво прогурао ПО датотеку кроз хибридизациону скрипту, а потом прегледао све њоме измењене уносе. Уз претпоставку да је ијекавизатор иоле пристојан, то би Јову значајно скратило посао.
Даље, ако већ аутоматски ијекавизатор не постоји на почетку, могао би се постепено градити како напредује хибридизација — као што се од хибридизованог превода може аутоматски добити било екавски било ијекавски, тако се могу сакупљати пресликавања екавски→ијекавски (одн. хибридизовани). Аутомат би скупљао сирове парове, а човек (нпр. Јово, али лако и Која) могао би их повремено уопштавати; нпр. сирово пресликавање подразумевану→подразум›ијевану, могло би се афиксно уопштити као подразумев-→подразум›ијев-, и сл. Ова би правила потом користила скрипта за аутоматску хибридизацију, на начин описан у претходном пасусу. Дакле, што би хибридизација више напредовала, то би Иво и Јово све мање ручно, а све више аутоматски хибридизовали.
[ уреди ]
КДЕ на српском