next previous contents next previous contents slovenski locale z izrazom locale oznacujemo skupek lastnosti programskega okolja odvisnih od jezikovnega in kulturnega okolja uporabnika mednje sodi informacija o tem kateri znaki so crke in kaksen je njihov vrstni red nacin izpisa datuma in ure izbiro locila v zapisu decimalnih stevil vejica oz pika zapis valute in sporocila programov uporabniku programski vmesnik za internacionalizacijo in lokalizacijo na sistemih zdruzljivih s standardi posix je definiran v standardu iso iec programski jezik iso c ter ieee posix informacije pomembne za lokalizacijo razvrsca v sest kategorij lc ctype znaki ki predstavljajo abecedo lc collate vrstni red znakov v abecedi lc time izpis datuma in ure lc numeric izpis stevilcnih vrednosti lc monetary izpis valute lc messages komunikacije z uporabnikom lc all zajema vseh nastetih sest kategorij medtem ko projekt gnu pri izvedbi prvih petih kategorijah zvesto sledi standardu se je v sesti odlocil za njegovo razsiritev standardizacijski komite se namrec ni mogel zediniti okrog izvedbe ravnanja s prevodi sporocil zato je standard v tej tocki prakticno neuporaben doloca le prevode za ``da'' in ``ne'' projekt gnu je zato razvil svojo metodo to je paket gnu gettext prevedeni katalogi sporocil ki jih uporablja mehanizem gettext se navadno nahajajo v podimenikih imenika usr share locale sledi nekaj primerov odziva poslovenjenega sistema primeri so pobrani s hp ux ker je lokalizacija linuxa zaenkrat se v teku knjiznica gnu libc in kasnejse izpeljanke sicer ze ponujajo okvir za lokalizacijo izvedba pa zaenkrat se zaostaja zato koncepta zaenkrat se ne moremo ilustrirati s programi iz paketov textutils fileutils ipd z nastavitvijo spremenljivke lang na slovenski locale se spremenijo vsi prilastki ~ date sat oct metdst ~ lang sl si iso date sob okt lahko pa jih spreminjamo tudi vsakega posebej ce zelimo obdrzati angleske izpise obliko datuma decimalno piko ipd zeleli pa bi da gre urejanje crk po slovenski abecedi spremenimo samo lc collate ~ sort abc tex abc abca abd abc ~ lang c lc collate sl si iso sort abc tex abc abca abc abd seveda lc collate ne resi vseh problemov v zvezi z urejanjem pri razvrscanju kastiljskih kraljev bi recimo zeleli da pride alfonz ix za alfonzem viii in pred alfonzem x kar pa je verjetno ze problem za umetno inteligenco spremenljivka lang ima v splosnem obliko lang jezik pri tem je jezik dvocrkovna koda jezika kot jo doloca standard iso drzava pa dvocrkovna koda drzave dolocena s standardom iso zgled za slovenscino kot se govori v sloveniji in pise s kodnim naborom iso je torej lang sl si iso dolocitev drzave in nabora znakov je neobvezna pomembna je seveda pri jezikih ki se govorijo v vec drzavah kaksen locale uporabljajo slovenci v zamejstvu je piscu teh vrstic neznano tako lahko pisemo na kratko lang sl programiranje z gnu gettext paket gnu gettext ponuja nekaj orodij za lokalizacijo xgettext ki iz izvorne kode izlusci sporocila msgcmp ki primerja dva kataloga sporocil msgmerge zdruzi star preveden katalog sporocil z novim neprevedenim msgfmt ki prenosen katalog sporocil prevede v binarno obliko msgunfmt obratno od msgfmt s kratkim zgledom ilustrirajmo kako poteka pisanje lokaliziranega programa s paketom gnu gettext najprej napisemo program zgled c pri pisanju programa ze vkljucimo mehanizme internacionalizacije include locale h include stdio h include libintl h define package zgled define localedir usr local share locale char main setlocale lc messages bindtextdomain package localedir textdomain package printf s n gettext this is a short example printf s n gettext author primoz peterlin return z ukazom xgettext iz izvorne kode izluscimo izpise na zaslon xgettext zgled c s tem smo ustvarili datoteko messages po to je obicajna besedilna datoteka ki vsebuje skelet prevodov sporocil datoteko messages po z urejevalnikom dopolnimo s prevodi recimo takole slovenski prevod zgleda primoz peterlin primoz peterlin biofiz mf uni lj si msgid msgstr project id version zgled n pot creation date n po revision date n last translator primoz peterlin peterlin biofiz mf uni lj si n mime version n content type text plain charset iso n content transfer encoding bit n xgettext options n files zgled c n zgled c msgid this is a short example msgstr to je kratek zgled zgled c msgid author primoz peterlin msgstr avtor primoz peterlin popravljeno prenosljivo datoteko s sporocili angl portable message file messages po prevedemo v binarno obliko msgfmt v o zgled mo messages po binarno datoteko prestavimo v imenik kjer jo bo gettext nasel mv zgled mo usr local share locale sl lc messages program prevedemo in povezemo s knjiznico libintl a gcc o zgled zgled c lintl pa poskusimo kaksna je razlika lang c zgled lang sl zgled lc all sl zgled lc messages sl zgled lc ctype sl zgled lc all sl si iso zgled v prvem in zadnjem primeru je izpisano sporocilo anglesko v predzadnjem pa verjetno tudi v prvem zato ker smo eksplicitno zahtevali locale ``c'' v zadnjem pa zato ker smo zahtevali locale ``sl si iso '' v katerem ni prevoda sporocil to namrec obstaja za locale ``sl'' v predzadnjem zgledu smo uporabili pravi locale a irelevantno kategorijo lc ctype namesto uporabljene lc messages se dve opombi imenik kamor prestavimo katalog sporocil se mora ujemati z imenikom localedir navedenim v izvorni kodi tezavo da gnu gettext razume ``sl'' in ``sl si iso '' kot razlicna locala je pisec teh vrstic resil z simbolno povezavo v imeniku usr local share locale ln s sl sl si iso poslovenjenje katalogov sporocil v teku je internacionalizacija projekta gnu programi iz projekta gnu predstavljajo znaten del celotnega sistema linux in vecino tistega s cimer se sooca koncni uporabnik trenutno so v slovenscino ze prevedena sporocila za naslednje pakete gnu enscript fileutils gettext grep hello recode in tar z nastavitvijo spremenljivke okolja lang sl bodo programi iz teh paketov izpisovali slovenska sporocila namesto angleskih razprava o poslovenjenju projekta gnu poteka med prejemniki elektronskega spiska sl li org nanj se lahko narocite tako da na naslov sl request li org posljete vrstico subscribe v telesu sporocila pomoc prostovoljcev ki bi prevedli preostale pakete ali pa se samo zavezali za vzdrzevanje ze prevedenih je nadvse zazelena vabljeni next previous contents