Slovenjenje odprtokodnih programov

Čeprav ima večina ljudi na osebnem računalniku nameščeni zaprtokodni operacijski sistem Windows in uporablja zaprte programe, ki so marsikdaj celo piratizirani, obstaja tudi druga vrsta ljudi, ki so večinoma računalniški zanesenjaki. To so uporabniki odprtokodnih programov ali spletnih projektov, ki imajo številne prednosti pred zaprtokodnimi:

  • koda je odprta, zato se lahko z njenim preučevanjem marsikaj naučimo
  • če pogrešate kakšno zmožnost, lahko napravite svoj popravek, ki bo morda celo vključen v končni program
  • če razvijalci nimajo posluha za vaše želje, lahko kodo razvejite v svoj projekt in ustvarite svoj boljši program
  • večina odprtokodne programske opreme je brezplačna, zato je dostopna tudi tistim, ki si izdatkov za programe ne morejo privoščiti
  • pogosto je na voljo za več platform
  • itd.

Poleg pošiljanja popravkov, poročanja o hroščih in donacij pa lahko zadovoljen uporabnik odprtokodnemu projektu pomaga tudi tako, da program prevede ali krajevno prilagodi.

Zakaj sploh prevajati programe?

Angleško govori okrog petina svetovnega prebivalstva, zgolj petim odstotkom prebivalstva pa je tudi materni jezik. Prevod nekega programa iz angleščine v večino jezikov, bo torej teoretično privabil še nekajkrat več uporabnikov. Več uporabnikov pomeni več ljudi, ki bodo program preizkušali, hkrati pa bo s tem rasla priljubljenost in prepoznavnost programa, kar bo posledično privabilo investitorje in nove razvijalce ter prevajalce.

Po podatkih Eurobarometra naj bi kar dve tretjini Slovencev znalo govoriti angleško, kar pa seveda še ne pomeni, da hkrati obvladajo tehnično angleščino, ki se uporablja v programih. Tam najdemo izraze kot so defragmentation (odpravljanje razdrobljenosti), initializing (začenjanje), cache (predpomnilnik), clipboard (odložišče), itd. ki bodo nekomu, ki tehnične angleščine ne pozna dobro, gotovo bolj jasne, če so poslovenjene. Med te, ki cenijo prevode, spadajo starejši prebivalci, ne smemo pa seveda pozabiti na razna podjetja in seveda javno upravo, ki za programe zahtevajo preveden vmesnik. Tu se skriva ogromen potencial. Pot do dobro prevedenega programa pa je še dolga.

Jezikovno prilagajanje in krajevno prilagajanje

Če kar povzamem Wikipedijo, obstajata v svetu računalništva dva načina za prilagajanje programske opreme različnim jezikom in krajevnim razlikam ciljnega tržišča:

  • Jezikovno prilagajanje ali I18N (internationalisation) je opravilo snovanja programske opreme na tak način, da jo je mogoče prilagoditi raznolikim jezikom, brez da bi bili zahtevani posegi v kodo programske opreme. Poleg enostavne možnosti prilagoditve nizov, ki so prikazani uporabniku, mora program upoštevati tudi različen zapis datumov in števil, valut, itd. Za to opravilo skrbijo programerji.
  • Krajevno prilagajanje ali L10N (localisation) je opravilo prilagajanja programske opreme, ki ima vgrajeno jezikovno prilagajanje, tako da prevedemo nize in prilagodimo zapis datumov in števil, valut, itd. Za to skrbijo prevajalci.

Jezikovno prilagajanje

Da lahko nek program prevedete, morajo programerji to predvideti. Obstajajo različni načini za jezikovno prilagajanje. Recimo projekt KDE uporablja razred Klocale, ki je del libkdecore. Za prevod uporabite metodo QString i18n(const char*), ki je določena v klocalizedstring.h. Prevod lahko programer tako doda zelo enostavno, recimo primer za gumb:

#include <klocalizedstring.h>
[...]
QPushButton* myButton = new QPushButton(i18n("Translate this!"));

Drugi projekti uporabljajo spet drugačen nabor funkcij, saj ni neke standardizacije. Dober nabor funkcij bo recimo omogočal:

  • prikaz angleškega niza, če niz ni preveden v izbranem jeziku: večji projekti imajo to dobro rešeno, videl sem pa že programe, ki ob manjkajočem nizu/manjkajoči datoteki s prevodi prikažejo napako
  • dodajanje opomb/kontekstov: nekateri nizi imajo pomen odvisen od tega, kje v programu se nahajajo. V izogib zmedi lahko programer doda kratko opombo o tem, kje se niz nahaja in kaj točno naj bi pomenil
  • podporo semantičnemu označevanju: v niz lahko dodate oznake, ki pojasnijo, kako bo niz oblikovan in kaj pomeni

KDE ponuja praktične primere uporabnosti semantičnega označevanja in opomb/kontekstov:

i18n("Move");
i18nc("@action:button", "Move"); 
// takoj vidimo, da gre za gumb
 
i18n("Descending");
i18nc("@item:inmenu", "Descending"); 
// vidimo, da gre za predmet menija
 
i18n("<qt><b>%1</b> does not exist</qt>", fname);
i18nc("@info", "<filename>%1</filename> does not exist", fname); 
// iz oznak je razvidno, da je %1 ime datoteke
 
i18n("<h1>History Sidebar</h1> You can configure the history sidebar here.");
i18nc("@info:whatsthis",
      "<title>History Sidebar</title>"
      "<para>You can configure the history sidebar here.</para>"); 
// iz opombe vidimo, da gre najverjetneje za orodni namig, ki ima 
// naslov "Stranska vrstica zgodovine" in vsebino 
// "Tukaj lahko nastavite stransko vrstico zgodovine"

Seveda pa ni vse le v funkcijah. Jeziki so raznoliki in nizov, ki te raznolikosti ne upoštevajo, morda sploh ni mogoče prevesti. Pogoste napake so:

  • pisanje programa tako, da se vmesnik ne prilagodi dolžini niza: angleški nizi so pogosto kratki, v drugih jezikih pa morda niza kljub trudu prevajalca ni mogoče napraviti dovolj kratkega
  • odsotnost podpore za Unicode: če je program zaklenjen na latin1/ISO-8859-1, potem bo prevod nekaterih jezikov okrnjen (pomanjkanje šumnikov) ali pa povsem nemogoč
  • neupoštevanje posebnosti jezikov: dvojina, pisanje od desne proti levi, itd.
  • kompleksni stavki: dolgi stavki so muka tako za prevajanje kot tudi za kasnejše branje

Krajevno prilagajanje – viri za prevajanje

Vire, ki jih je mogoče prevesti, bi lahko v grobem razdelili na dva dela:

  • vire, ki niso besedilni: uvodni zasloni, zvoki, slikovni gumbi, posnetki zaslona v dokumentaciji. Prevedete jih s pomočjo programov za zajemanje/urejanje zvoka ali programov za urejanje/zajemanje slik. Pogosto zahtevajo podrobnejše poznavanje programov za obdelavo
  • besedilne vire: nizi se nahajajo v besedilnih datotekah in jih lahko pravzaprav prevedete s katerimkoli urejevalnikom besedila, vendar morate pri tem datoteko nujno shraniti v pravilnem kodiranju ali pa prevod ne bo pravilno prikazan. Za te vire obstajajo namenska orodja, ki jih bom prikazal kasneje

Krajevno prilagajanje – besedilni viri

Kot sem že prej omenil, na področju prevajanja programske opreme ni neke standardizacije. Posledično je tudi vrst besedilnih virov en kup. Naj jih naštejem nekaj:

gettext je zelo pogosto uporabljana vrsta, ki jo podpira veliko odprtokodnih programov kot tudi precej strani, ki ponujajo prevajanje

  • V katalogih s pripono .POT so nizi pridobljeni iz izvorne kode s pomočjo skript
  • v datotekah s pripono .PO se poleg izvornih nizov nahajajo tudi prevedeni nizi
  • v dvojiških datotekah s pripono .MO so izgrajeni prevodi, ki jih uporablja program

Primer kode:

#: src/name.c:36
msgid "My name is %s.\n"
msgstr "Ime mi je %s.\n"

XLIFF je standard temelječ na XML, manj razširjen in ima hkrati manjšo podporo s strani programov. Program lahko prevod naloži neposredno brez izgrajevanja, hkrati pa prinaša vse prednosti oblike XML.

Primer kode:

<trans-unit id="1">
	 <source xml:lang="en">Cannot find the file.</source>
 	<target xml:lang="sl">Datoteke ni mogoče najti.</target>
</trans-unit>

INI so datoteke s predpono .ini, ki lahko vsebujejo tudi prevode. Ključi ime=vrednost so združeni v odseke. Ta oblika ima nekaj očitnih slabosti:

  • ob prevajanju izbrišete izvorni niz, kar pomeni, da morate ob urejanju imeti odprta tako izvorni kot prevedeni dokument
  • ime ključa mora biti edinstveno, zato nekateri razvijalci kot ime podajo kar številke. Prevajanje takih virov je za prevajalca precej mukotrpno

Primer kode:

; opomba
[odsek]
Welcome = "Dobrodošli v programu"

Ker je vrst datotek toliko in ker besedilni urejevalniki niso preveč praktični, obstaja tudi kup namenskih orodij, ki jih lahko v grobem razdelimo na krajevna prevajalska orodja in spletna prevajalska orodja.

Krajevno prilagajanje – spletna orodja

Spletnih orodij je kar nekaj. Podpirajo eno ali več oblik datotek, vsem pa je skupno to, da so izjemno enostavna za uporabo. Večinoma se je potrebno le registrirati in že lahko prevajate. Za nastavitev projekta, izvažanje prevodov in podobno, skrbijo skrbniki projekta. Prevajalec ne rabi poznati vrste datotek s prevodi, niti njihovih značilnosti. Ponavadi imajo spletna orodja pomnilnik prevodov, ki pripomore k usklajenosti in hitrosti prevajanja, nekatera pa ponujajo celo prejem datotek, da jih lahko urejate krajevno. Med najbolj znana spadajo:

Prednost teh sistemov je izjemna enostavnost, očitna slabost pa so razne napake ob preobremenjenosti in seveda manjši nadzor nad vsebino.

Krajevno prilagajanje – krajevna orodja (uvod)

Veliko projektov ne uporablja spletnih prevajalskih orodij. Prevodi se nahajajo na strežniku, ki ima nameščen sistem za nadzor različic (SVN, Git) kot sta npr. KDE/Gnome ali pa jih pridobite preko povezave na spletni strani (Translation Project). V prvem primeru morate pogosto imeti nameščeno posebno programsko opremo (odjemalec SVN/Git), da prevod pridobite, in tudi račun, da prevod pošljete nazaj na strežnik. V drugem primeru pa lahko prevod prejmete z brskalnikom in ga pošljete preko e-pošte.

Uporaba krajevnih orodij je precej težavnejša kot prevajanje s krajevnimi orodji. Projekte morate pravilno nastaviti, da izkoristite poln potencial orodij, prevedene datoteke pa morate tudi preveriti za napakami preden jih pošljete. V nasprotnem primeru vam jih lahko strežnik ali skrbnik projekta zavrne.

Za prevajanje virov gettext obstaja veliko dobrih prevajalskih orodij. Med najbolj priljubljenimi sta gotovo Poedit, ki teče na več platformah in uradno orodje za prevajanje KDE, Lokalize, ki ga je z malo truda tudi mogoče poganjati na več platformah. Na hitro si oglejmo Lokalize.

Krajevno prilagajanje – krajevna orodja (Lokalize)

V Lokalize lahko odprete vsako datoteko posebej in jo urejate, a resnično moč pokaže šele, če mapi s prevodi in predlogami, ki ste jo prejeli iz strežnika SVN, pravilno nastavite kot projekt. Kot lahko vidite na sliki, program grafično prikaže stanje prevoda in nekatere druge uporabne podrobnosti, pravilno pa umesti tudi predloge (kataloge .POT), da jih lahko samo dvokliknete in ko boste shranili, bo na pravem mestu ustvarjena datoteka .PO.

Nastavljen projekt v Lokalize

Urejevalni del

Urejevalni del je sestavljen iz več okvirjev:

  • z zeleno sta označena izvorni niz in prevedeni niz. Nizi, ki niso odobreni, so zapisani z ležečo pisavo
  • z rumeno je označen seznam vseh nizov, po katerem lahko tudi iščete ali pa izberete, katero vrsto nizov vam naj urejevalnik prikaže (recimo samo neprevedene, samo prevedene in neodobrene in tako naprej
  • z modro je označen besednjak – tukaj uporabljamo Lugosov pojmovnik. Program prepozna pojem v izvornem nizu in ga prikaže. Tako je prevajanje bolj usklajeno, hkrati pa lahko vsak pojem iz besednjaka vstavite s kombinacijo tipk, ki je prikazana ob njem
  • z rdečo je označen pomnilnik prevodov. To je nekakšna podatkovna zbirka vseh prevodov v projektu in močno pospeši prevajanje, saj se nekateri nizi v projektu ponavljajo in jih zato lahko vstavite s kombinacijo tipk, hkrati pa poveča usklajenost. V določenih primerih, če niza nista povsem enaka, pa zna program tudi uganiti manjkajočo besedo
Urejevalnik v Lokalize

Kot vidite, je vmesnik precej kompleksen, a nekomu, ki ga obvlada, omogoča izjemno hitro prevajanje. Več podrobnosti o prevajanju s pomočjo Lokalize si lahko preberete na strani prevod KDE.

Krajevna orodja omogočajo tudi samodejno usklajevanje različic datotek in iskanje po pomnilnikih prevodov, kar pri spletnih orodjih večinoma ni mogoče.

Doslednost

100 ludi, 100 čudi pravijo in enako je pri prevodih odprtokodnih projektov. Brez standardiziranih prevodov pojmov, dobimo mešano solato izrazov, ki jih na koncu nihče ne razume. Najslabše je, če en projekt prevaja več ljudi, ki se požvižgajo na to, kako je nekdo izraz prevedel prej. Za večjo doslednost pri prevajanju lahko uporabimo nekaj pripomočkov:

  • pojmovnik na lugos.si: je namenjen poenotenju računalniških pojmov in besednih zvez, ki so uporabljeni v prevodih odprto-kodne programske opreme in dokumentacije. Vsebuje najbolj pogosto uporabljene računalniške izraze in njihove prevode. S pomočjo priložene skripte ga lahko pretvorite v obliko TBX in uporabite v programu Lokalize oz. drugih programih, ki uporabljajo obliko TBX
  • pravila slovenjenja na lugos.si: pri Lugosu so pripravili tudi nekaj splošnih pravil slovenjenja in opozorili na tipične napake. Smernice vam povedo kdaj prevajati imena programov, kako obravnavamo kratice, pospeševalnike, itd. Zelo uporaben vir za vse začetnike v svetu prevajanja

Prevajalske skupnosti

Na koncu pa še nekaj podrobnosti o tem, kako lahko sami prispevate k prevodom.

V Sloveniji imamo kar nekaj organiziranih skupin za prevajanje odprtokodnih projektov. Imamo skupine, ki prevajajo namizna okolja KDE in Gnome, skupine, ki prevajajo Mozilline programe, skupine, ki prevajajo LibreOffice in tako naprej. Večina, če ne vse večje skupine imajo svojega koordinatorja. Koordinator skrbi za uvajanje novih prevajalcev, za enakomerno razporejanje dela in za stike z razvijalci projekta. Če bi želeli kakorkoli pomagati pri prevajanju, se najprej obrnite na koordinatorja. Skupine ostajajo v stiku preko raznoraznih dopisnih seznamov, kamor jim lahko sporočite tudi morebitne pripombe glede prevodov, nekatere pa organizirajo tudi srečanja, kjer se lahko s prevajalci srečate v živo.

Seveda pa skupine ne potrebujejo zgolj prevajalcev, ampak potrebujejo pomoč tudi na drugih področjih, ki ne zahtevajo dobrega znanja angleščine, temveč zgolj slovenščine:

  • Lektoriranje: roki za prevajanje različic so pogosto precej kratki, saj so prevedene različice objavljene hkrati z angleško. Posledica tega je, da se občasno v prevode prikradejo tudi kakšne tipkarske in slovnične napake. Prostovoljci, ki bi želeli izboljšati jezik prevodov, so zato vedno dobrodošli.
  • Usklajevanje: skozi leta se je v projektih zamenjalo veliko prevajalcev, kar pomeni, da je imel vsak svoj slog prevajanja, hkrati pa ni bilo nekih enotnih standardov in besednjakov, zato imajo določeni pojmi po recimo pet različnih prevodov, pogosto celo v isti datoteki .po. Zato projekti potrebujejo ljudi, ki bi prevode pregledali in jih uskladili z Lugosovim pojmovnikom.
  • Stiki z javnostjo: ob izdaji novih različic projektov je pogosto potrebno prevesti sporočila za javnost in jih posredovati. Izrazoslovje je manj tehnično, zato je lahko to delo tudi za nekoga, ki se še ne počuti tako dobro na področju prevajanja grafičnega vmesnika.
  • Preizkušanje prevodov: ker prevajalci pogosto ne morejo preizkusiti vseh prevodov v živo, torej na delujoči različici (ker na primer za njihovo distribucijo še ni paketa ali pa ta ne deluje pravilno), potrebujejo prevajalci pomoč pri preverjanju ustreznosti prevodov. Marsikateri izraz ima več pomenov in prevod je odvisen od tega, kje v grafičnem vmesniku se pojavi. Takšno iskanje napak je primerno za nekoga, ki se bolj kot s prevajanjem ukvarja z izgradnjo in nameščanjem najnovejših (preizkusnih) različic.

Kaj pa projekti brez koordinatorjev?

Za projekte, ki nimajo koordinatorjev, je potrebno vedno stopiti v stik z avtorji programa, saj ti ponavadi vedo, če kdo že dela na vašem ciljnem jeziku. V primeru, da je sicer rezerviral prevod, a ga še ni poslal, ga najprej poskusite kontaktirati, šele nato začnite prevajati sami. Prihranili si boste veliko časa.

Če je projekt večji, je pametno, da povprašate na raznih forumih in dopisnih seznamih, če bi bil kdo pripravljen pomagati pri prevajanju. Skupinsko prevajanje je namreč veliko lažje, saj enemu samemu prevajalcu pogosto zmanjka volje. Priporočljivo je, da osnujete lastno prevajalsko skupino in določite za koordinatorja nekoga, ki bo to delo opravljal vestno in odgovorno, ter bo znal uskladiti ekipo.

Povzetek

  • pot do poslovenjenega programa ni tako lahka, kot bi si kdo mislil, a vseeno ni nek bav-bav, saj leži levji delež tehničnih ovir na plečih programerjev
  • za prevajanje ne potrebujete znanja programiranja, če prevajate preko spletnih vmesnikov pa potrebujete samo brskalnik, račun in dobro znanje jezika
  • na voljo je cel kup pripomočkov in orodij (recimo pomnilnikov prevodov), ki pohitrijo ter poenostavijo prevajanje in pripomorejo k večji usklajenosti
  • ker imamo dobro organizirane skupine, prevedenost večjih projektov strmo raste in posledično tudi njihova prepoznavnost. Od tega pa profitiramo vsi, tako uporabniki kot tudi skrbniki projektov
  • prevajanje je enostavno!

Zadnja sprememba: | Deli na: