Зихерашки захвати
Садржај
2. Алтернативни умеци за ћирилицу и латиницу
3. Скриптовање облика речи и израза
4. ИксМЛ ентитети за имена и скраћенице
Увод
Док је одељак о основној техници зборио о превођењу на основу ПО датотека уопште, КДЕ-ов „дијалект“ ПО формата уводи додатне могућности којима се преводилац може послужити да изравна преостале грубе ивице и омогући темељније аутоматске провере превода.
Ове могућности се деле у два скупа: прве које су доступне у преводу било ког КДЕ програма, и друге које важе само за КДЕ програме чији се преводи одржавају у централном складишту КДЕ-а („централа“ у даљем тексту). Наиме, на преводу КДЕ-а у централи ради се преко тзв. самита ПО датотека, одакле координатори превода поруке растурају у радне гране ПО датотека уз извесне аутоматске обраде, и из тог поступка проистиче овај други скуп могућности (детаљније о овоме у високом дворцу). Зато ће за сваку описану могућност бити наведено да ли је општа за КДЕ програме, или се односи само на преводе у централи.
Такође треба имати на уму да неке од ових могућности подразумевају динамичке преводе, тј. оне који се вуку из ПО датотека при самом извршавању КДЕ програма. Поред динамичких постоје и статички преводи, где су ПО датотеке посредници за превођење неког другог формата (нпр. ИксМЛ документације програма), и они не пружају све могућности. Ово ће такође бити наглашено за сваку могућност понаособ.
Важна напомена ако читате ово с намером да се информишете о укључивању у превођење: на самом почетку није неопходно да користите било шта од наведеног у даљем тексту, док се мало не уходате; потребно је само да се придржавате упутстава из одељка о основној техници. Ако радите на ПО датотекама у централи, координатори ће надградити ваше преводе овде описаним могућностима пошто им их пошаљете.
Алтернативни умеци за ћирилицу и латиницу
Доступност: сви преводи у централи.
Латинички превод се ствара аутоматски из ћириличког, али понекад је потребно да се у латиничкој верзији део текста разликује од оног који би се добио простим пресловљавањем ћирилице. Тада се могу употребити алтернативни умеци:
#: actionsimpl.cpp:518 msgid "Sort Alphabetically" msgstr "Поређај ~@/азбучно/abecedno/"
Директива алтернативног уметка започиње ниском ~@. За њом следи раздвајачки знак, у овом примеру /, али може бити било који (налик смени у наредби sed). Затим се наводе два уметка, прво ћирилички па латинички, оба окончана истим раздвајачем. Корисник програма на ћирилици ће тада видети поруку као да је превод гласио:
msgstr "Поређај азбучно"
а на латиници:
msgstr "Poređaj abecedno"
Још очитији пример била би имена програма, за која је (ако нису преведена) Правописом захтевано и практично уобичајено да се пишу транскрибовано ћирилицом, док је латиницом дозвољено и једнако уобичајено да се остављају у изворном облику. Међутим, у преводу КДЕ-а ова разлика између писама подржава се на специјализованији начин од алтернативних уметака.
Скриптовање облика речи и израза
Доступност: динамички преводи свих КДЕ програма.
Када се енглеска реченица ствара уметањем једне речи или израза као аргумента у ширем контексту, често долази до проблема неслагања падежа и других граматичких категорија на српском. Некада се то може избећи изменом изворног ко̑да програма, али је то обично практично само када је у питању мали број комбинација потпуно садржаних у оквиру истог програма, а чак и тада може изазвати непотребан посао за језике који у датом случају немају проблема. Стога КДЕ преводиоцу ставља на располагање Транскрипт, мотор за динамичко разрешавање превода при извршавању програма.
Типичан пример је када се у реченицу динамички умеће име неког програма:
#: src/konqmainwindow.cpp:4866 #, kde-format msgid "Open with %1" msgstr "Отвори помоћу %1"
где би име програма требало да буде дато у генитиву. Преводилац тада може да поступи овако:
#: src/konqmainwindow.cpp:4866 #, kde-format msgid "Open with %1" msgstr "" "Отвори помоћу %1" "|/|" "Отвори помоћу $[ген %1]"
Преводилац прво задаје обичан превод, затим скриптну ограду (ниска |/|), па скриптован превод; у њему се позива $[ген <аргумент>] које ће, можда, пронаћи генитивски облик датог аргумента. Одмах се поставља неколико питања: одакле долази позив ген, одакле долазе генитивски (или били који други) падежни облици аргумената, и чему и обичан и скриптован превод?
Основне падежне позиве дефинише језгро српског превода КДЕ-а, које се инсталира заједно са библиотекама КДЕ-а потребним свим КДЕ програмима. Позиви су именовани почетним словима одговарајућих падежа: ном, ген, дат, аку, инс, лок. (Вокатив недостаје јер у пракси никада није потребан, а често је проблематичан за дефинисање.)
Падежни облици аргумената се повлаче из два извора. Први је централни регистар српског превода КДЕ-а, где су дефинисана многа имена популарних програма, и неких других блиских појмова; тренутни спискови се увек могу прегледати овде, и стално се допуњавају. Други извор је дефинисање у самим ПО датотекама, када је то могуће. Пример из ПО датотеке једног уређивача текста:
#: app/katemdi.cpp:165 #, kde-format msgid "Show %1" msgstr "" "Прикажи %1" "|/|" "Прикажи $[аку %1]"
где је аргумент име погледа који се може укључити и искључити, а та имена су такође дата по (неким) ПО датотекама као наслови одговарајућих погледа, нпр.:
#: app/katemainwindow.cpp:254 msgid "Documents" msgstr "Документи"
Тада је имена погледа могуће скриптовати овако:
#: app/katemainwindow.cpp:254 msgid "Documents" msgstr "" "Документи" "|/|" "$[својства аку 'Документе']"
при чему позив својства прихвата произвољан број парова падеж-облик, односно било којих других својстава дате поруке.
Коначно, шта бива када падежни позив, или било који други позив $[...] у скриптованом преводу не успе (нпр. не постоји тражени падежни облик за дати аргумент)? Тада се сигнализира спадање на обичан превод, онај пре ограде |/|, и то је разлог због чега је обавезно присуство оба превода. Позив својства у горњем примеру увек сигнализира спадање на обичан превод, тј. користи се ради споредног ефекта дефинисања облика.
Поред претходно наведених, дефинисан је још један нешто другачији падежни позив за инструментал, инс-п. Лукавији преводилац може пример „Отвори помоћу...“ разрешити овако:
#: src/konqmainwindow.cpp:4866 #, kde-format msgid "Open with %1" msgstr "" "Отвори помоћу %1" "|/|" "Отвори $[инс %1]"
што, међутим, доводи до неприлике ако је инструментал једнак номинативу. То је случај код неких страних имена женског рода, у које спада и КДЕ-ов уређивач текста Кејт; превод тада испада граматички исправан, али значењски погрешан. Зато ће позив инс-п проверити да ли је инструментал једнак номинативу, и ако јесте, уметнути предлог „помоћу“ испред имена.
Сваки падежни позив има и варијанту која почиње великом словом, нпр. ном и Ном, која аутоматски претвара прво слово разрешеног израза у велико. Ова разлика најчешће није битна јер се обично ради о именима, која иначе почињу великим словом, али је за сваки случај добро практиковати (а и природно делује) да се позив на почетку реченице пише великим почетним словом.
ИксМЛ ентитети за имена и скраћенице
Доступност: сви преводи у централи.
Обрачунавање са изворним именима и скраћеницама је једна од уобичајених заврзлама при превођењу. Да ли име превести, пресловити или оставити изворно? Ако се пресловљава, која је правилна транскрипција (енглески је посебно незгодан по овом питању)? Да ли скраћеницу при писању ћирилицом оставити изворно, или исто пресловити?
Српски превод КДЕ-а у централи зато централизује ова питања, тако да преводилац не мора да запиње преко њих усред надахнутог радног тока. Уместо имена или скраћенице, преводилац умеће ИксМЛ ентитет са одговарајућом граматичком категоријом:
#: workspace/.../test-predicate-openinwindow.desktop:7 msgctxt "Name" msgid "Open with Dolphin" msgstr "Отвори &dolphin-i;"
Ентитет почиње знаком & а завршава се са ;. Између, прво је нормализовано име програма, затим цртица, па граматички наставак (овде i за инструментал). Нормализовано име се добија тако што се сва слова претворе у мала, а сви размаци и знаци који нису ни слово ни број избаце.
Овакви ентитети разрешавају се при растурању самита на радне гране, управо у претходно описане алтернативне уметке. У радној ПО датотеци, наведена порука изгледаће овако:
#: workspace/.../test-predicate-openinwindow.desktop:7 msgctxt "Name" msgid "Open with Dolphin" msgstr "Отвори ~@/Делфином/Dolphinom/"
Поред именице, некад је потребан ентитет као описни или присвојни придев. Тада се после слова за падеж (n, g, d, a, i, l) наводи слово за род (m, z, s), па опционо слово k за множину, и на крају опционо слово p ако је у питању присвојни придев:
# nm = номинатив-мушки #: kdeui/widgets/kcharselect.cpp:709 msgid "XML decimal entity:" msgstr "Декадни &xml-nm; ентитет:" # amp = акузатив-мушки-присвојни #: workspace/kdm/kfrontend/sessions/amiwm.desktop:12 msgctxt "Comment" msgid "The Amiga look-alike window manager" msgstr "Менаџер прозора који подсећа на &amiga-amp;" # gmkp = генитив-мушки-множина-присвојни #: apps/dolphin/src/kcmdolphin.desktop:17 msgctxt "Comment" msgid "This service allows configuration of the Dolphin views." msgstr "Овај сервис омогућава подешавање &dolphin-gmkp; приказа."
Граматички наставци се једнако примењују и за скраћенице, што је неопходно када се скраћеница користи као именица. Међутим, када је у служби описног придева скраћеница је обично непроменљива, те се наставак може изоставити али тако да остане цртица:
#: kdeui/widgets/kcharselect.cpp:709 msgid "XML decimal entity:" msgstr "Декадни &xml-; ентитет:"
Ово, наравно, не важи за присвојну употребу, где је наставак опет неопходан. Присвојна употреба скраћеница је ретка, осим, рецимо, у случају саме скраћенице „КДЕ“:
# као описни придев може без граматичког наставка: #: kdecore/kernel/kcmdlineargs.cpp:431 msgid "KDE Application" msgstr "&Kde-; програм" # као присвојни придев с граматичком наставком: #: main.cpp:77 msgid "KDE Theme Manager authors" msgstr "Аутори &kde-gmp; менаџера тема"
Ако употреба скраћенице без наставка којим случајем није могућа (нпр. када је скраћеница поименичена), при растурању самита координатор ће аутоматски бити обавештен о томе, те не може доћи до пропуста.
Имена тренутно доступна као ентитети могу се прегледати овде, а скраћенице овде. Шта бива ако се наведе ентитет којег нема у овим списковима, или ако се лоше формира граматички наставак? Просто, при растурању самита координатор ће бити обавештен о томе, и додати нову ставку у спискове или исправити граматички наставак.
Коначно, ентитет се може задати и са почетним великим словом. Тада ће текст који се добије њиме такође аутоматски добити почетно велико слово, што је битно у ретким ситуацијама када ентитет започиње реченицу, али текст који дефинише сам по себи не почиње великим словом. Ово је случај, на пример, с именима програмских језика, која се на српском правилно пишу малим словом:
# малим словом унутар реченице: #: khtml/ecma/kjs_window.cpp:2751 msgid "JavaScript Attempted Bookmark Insert" msgstr "Покушано убацивање маркера &javascript-i;" # великим словом на почетку реченице: #: khtml/ecma/kjs_debugwin.cpp:435 msgid "JavaScript console" msgstr "&Javascript-nz; конзола"
Зато треба ентитет који започиње реченицу увек писати с почетним великим словом, без размишљања шта се крије иза њега.
Неке класе ентитета треба посебно имати у виду.
а. Имена доприносилаца задају се ентитетима, као и друга имена. На пример:
#: kdialog.cpp:643 msgid "David Faure" msgstr "&davidfaure-n;"
што ће се проширити у транскрибовано име са изворним у загради:
#: kdialog.cpp:643 msgid "David Faure" msgstr "Давид Фор (David Faure)"
Уколико се изричито жели само транскрибовано, без изворног имена, може се употребити ентитет са кореним наставком _sp (нпр. &davidfaure_sp-n;).
б. Називи тастера, нпр. у пречицама са тастатуре. У динамичким преводима могу се омотати ознаком <shortcut> (види ниже), док се у статичким смењују одговарајућим ентитетима:
#: workspace/kcontrol/access/kaccess.notifyrc:240 msgctxt "Comment" msgid "A modifier key (e.g. Shift or Ctrl) [...]" msgstr "Модификаторски тастер (нпр. &shift-n; или &ctrl-n;) [...]"
Омотавање делова текста који се не преводе
Доступност: сви преводи у централи.
Понекад је у преводу неопходно оставити делове текста у изворном облику, на пример имена датотека, променљиве окружења, кратке командне линије, и сл. Ради аутоматских провера над преводом, потребно је изричито омотати овакве делове текста, како не би били пријављени као погрешно остављени непреведени (разликовање је могуће услед чињенице да се превод изворно ради ћирилицом, чиме су делови текста на српском имплицитно означени).
Најопштији начин за омотавање изворних делова у преводу јесте помоћу изолационе директиве ~!/.../:
# унутрашњи објекти програма: #: kdecore/util/klibloader.cpp:156 msgid "KLibLoader: Unknown error" msgstr "~!/KLibLoader/: непозната грешка" # јединице мера: #: kdecore/localization/klocale.cpp:1198 #, kde-format msgid "%1 MiB" msgstr "%1 ~!/MiB/" # математички симболи: #: rc.cpp:27 msgid "X Coordinate" msgstr "~!/x/-координата" # словни део пречице са тастатуре у статичким преводима: #: workspace/khotkeys/data/kde32b1.khotkeys:576 msgctxt "Comment" msgid "This action runs Konsole, after pressing Ctrl+Alt+T." msgstr "Ова радња покреће &konsole-a; по притиску &ctrl-n;+&alt-n;+~!/T/"
Слично као за претходно описану директиву алтернативних уметака, и овде је ниска ~! непроменљива уводна синтакса, а уместо знака / може се употребити било који други, који потом и окончава омотач.
Међутим, постоје неки изражени типови латиничких делова текста који се често појављују, као што су имена датотека и фасцикли, УРЛ-ови, адресе е-поште, променљиве окружења, наредбе шкољке, командне линије, итд. И они се могу омотати општим омотачем, али је боље употребити неку од семантичких ИксМЛ ознака које КДЕ-ов подсистем за интернационализацију познаје:
#: kio/KioFonts.cpp:1419 #, kde-format msgid "Could not access \"%1\" folder." msgstr "Не могу да приступим фасцикли <filename>%1</filename>." #: kdesu.cpp:139 #, kde-format msgid "Command '%1' not found." msgstr "Наредба <command>%1</command> није пронађена." #: kdecore/kernel/kcmdlineargs.cpp:922 msgid "Please use http://bugs.kde.org to report bugs." msgstr "Користите <link>http://bugs.kde.org</link> за пријаву грешака." #: rc.cpp:267 rc.cpp:656 msgid "Enable flow control using Ctrl+S, Ctrl+Q" msgstr "" "Контрола тока помоћу <shortcut>Ctrl+S</shortcut> и " "<shortcut>Ctrl+Q</shortcut>"
Оваквим омотавањем се постиже уједначеност приказа појединих елемената порука кориснику. Нпр. да ли име датотека оставити „голо“, ставити под једноструке или двоструке наводнике, итд. — ознака <filename> ће аутоматски учинити шта треба, како је задато у језгру српског превода у библиотекама КДЕ-а.
Сами програмери би требало да користе семантичке ознаке у изворним порукама, пре него произвољно визуелно форматирање наводницима или ХТМЛ ознакама, и тако понекад и чине. Но, преводилац их може користити у преводу независно од изворног текста. Списак семантичких ознака које КДЕ познаје може се наћи овде.
Штавише, добро је додавати семантичке ознаке и невезано за изоловање латиничких делова текста, нпр. око аргумената који се умећу у поруку, а из истог разлога уједначености форматирања:
#: kcmhelpcenter.cpp:321 #, kde-format msgid "<qt>The folder <b>%1</b> does not exist; [...]" msgstr "<qt>Фасцикла <filename>%1</filename> не постоји; [...]"
Семантичке ознаке се заправо разрешавају при извршавању програма, те се за разлику од изолационе директиве могу користи у динамичким преводима свих КДЕ програма.
Омотавање угњеждених етикета сучеља
Доступност: сви преводи у централи.
Чекајући неимаре...
* * *
У одговор на питање које се можда наметнуло читаоцу-намернику који је стигао довде:
Почетком 1920-их, на скупу у Њујорку, репортер је упитао Џорџа Малорија, енглеског планинара, зашто се устремио да освоји Монт Еверест. На то је Малори кратко одбрусио: „Зато што постоји“.