Linux v Sloveniji"> Konzola"> Konzola"> Bash"> Tcsh"> X Window System"> Postscript v X11"> X Window System"> Xterm"> Prikaz naših znakov na zaslonu"> Ukazne lupine"> XKB"> Slovensko jezikovno okolje"> Zahvala"> Slovenska pravila za deljenje besed"> Črkovanje: Ispell"> Tiskalniki, ki podpirajo kak drug nabor z našimi znaki"> Ogonkify"> Yudit"> ]>
Slovenian HOWTO Primož Peterlin
primoz.peterlin@biofiz.mf.uni-lj.si
Različica &version; &version; $Date: 2002/03/23 14:15:31 $ 1996 1999 2000 2001 2002 Primož Peterlin Uporaba in razširjanje Ta spis lahko uporabljate in razširjate pod pogoji, navedenimi v licenci GNU Free Documentation License. Informacije v tem spisu so podane v veri, da so točne in koristne, vendar zanje ne jamčimo, ne izrecno ne implicirano, tudi za to ne, da so primerne za trženje ali rabo. Uporabljate jih zgolj na lastno odgovornost. Avtor ne bo odgovoren za morebitno škodo, posredno ali neposredno, ki bi nastala kot posledica rabe informacij iz tega spisa. Note to English readers This document may be used and distributed under the terms set forth in the GNU Free Documentation License. The information in this document is provided in belief of being accurate and useful, however without any warranty, expressed or implied, including, but not limited to, the implied warranties of merchantability or fitness for a particular purpose. The entire risk of using the information goes with the user. The author can not be liable for any possible damage, direct or indirect, arising from the use of information provided in this document. 3.0 2001-12-27 pp Izvirnik spisa je pretvorjen iz oblike Linuxdoc v Docbook. Razširil razdelek o programiranju z uporabo paketa GNU gettext. Posodobil uvodni odstavek o tem, kaj je Linux. Poleg nabora ISO 8859-2 omenjam tudi ISO 10646. Ob ukazu recode omenjam tudi iconv. Izpustil odstavek o tem, zakaj v prejšnjih izdajah ni bilo naših znakov. Posodobil navodila za uporabo StarOffice 5.2. Jernej Kovačič je prispeval opis rabe programov Yudit, Xfmail in Wprint. Miha Tomšič pa opis prikaza naših znakov v Magic Point. 2.22 2000-02-24 pp Popravljen naslov Alveestrandovega števca uporabnikov. Ob ukazu "setfont" je obravnavan tudi njegov novejši nadomestek, "consolechars". Ob slovenskem besedišču za ispell so podana navodila za uporabo paketov rpm. Dodana informacija Andraža Hvalice o tem, kako ukrotiti Amayo. Kazalci na lokacije ispell-sl v strežnikih FTP Red Hat in Caldera. Andrej Komelj dodan na seznam sodelavcev, s katerega je bil pomotoma izpadel. Popravljen naslov Marka Samasturja. Upoštevan nov žalostni status paketa SGMLtools. Popravljeni kazalci na strežnik CAMTP v Mariboru. Počedeni pogoji rabe, da ne postavljamo dodatnih pogojev glede na licenco LDP. Vnesena razdelka o XKB in KDE, ki ju je napisal Marko Samastur. Dopisano še nekaj malega o slovenskem jezikovnem okolju. Dodana informacija Milana Gaborja o urejevalniku AbiWord. 2.9 1999-02-15 pp Zadnja izdaja, objavljena na www.linuxdoc.org. 1.0 1996-10-30 pp Prva objavljena izdaja spisa Slovenian-HOWTO. Povzetek Slovenian-HOWTO je zbirka receptov za poslovenjenje sistema Linux. Opisan je vnos slovenskih znakov s tipkovnice, prikaz teh znakov na zaslonu in odtis na tiskalniku. Ogledamo si splošno zasnovo krajevne prilagoditve (pogosto se zanjo uporablja tudi tujka lokalizacija) programov, kot jo podpirajo sistemi GNU. Opisana je tudi prilagoditev nekaterih priljubljenih programov za delo s slovenščino; med njimi so urejevalniki in pisarniški paketi, programi za elektronsko pošto in spletni brskalniki, ukazne lupine, terminalski posnemovalniki in različni drugi programi. Na koncu podajamo kratek pregled virov za Linux pri nas. Note to English readers: this document addresses Linux localization issues specific to Slovenian locale.
Uvod Kaj je Linux? Linux je izvedba večopravilnega, večuporabniškega operacijskega sistema Unix za računalnike s procesorji Intel (80386, 80486, izvirni Pentium in vse njegove novejše izvedbe), Digital AXP 21x64 (Alpha), Sun SPARC in Motorola 680x0, Power PC, MIPS, ARM in druge, nekako v razredu od ročnih računalnikov Palm do velikih računalnikov IBM S/390, vštevši oboje. Jedro operacijskega sistema je ob pomoči in sodelovanju številnih zanesenjakov iz interneta napisal Linus Torvalds z univerze v Helsinkih na Finskem. Skupaj s programi iz projektov GNU, X Window System in BSD sestavlja sodobno programsko okolje, enakovredno komercialnim različicam sistema Unix. Linux je prosti program, dostopen skupaj z izvirno kodo. Najnovejše različice programja za Linux je moč najti na: Ibiblio TSX-11 Obe mesti sta navadno težko dostopni in zelo zasedeni, zato uporabimo eno od številnih mest, na katerih se zrcali vsebina zgornjih dveh; pametno je, da začnemo na katerem od domačih zrcal; našteta so v poglavju &s-linux-si;. Večina pa verjetno tudi teh naslovov ne bo potrebovala, saj smo zadovoljni že z Linuxom, s kakršnim postreže ta ali ona distribucija. Med tistimi, ki bolj ali manj dobro pokrivajo prilagoditve Linuxa slovenskemu jezikovnemu okolju, omenimo Red Hat, Mandrake, SuSE in Pingo (slednja je pravzaprav dopolnjena in prilagojena distribucija Red Hat 6.2). Dogovor o zapisu V tem spisu so zgledi izpisani v pisavi nespremenljive širine, npr. echo "Pozdravljeni" Psevdoimena v zgledih so izpisana z ležečo različico iste pisave, npr. ls datoteka Tu se od bralca ali bralke pričakuje, da bo psevdonime datoteka nadomestil(-a) z dejanskim imenom datoteke. Z znakom ˜ se po ustaljenem običaju v sistemih Unix označuje osnovno področje uporabnika (za uporabnika z imenom uporabnik je to navadno /home/uporabnik). Nanj kaže tudi sistemska spremenljivka $HOME. Nadalje je za nastavitve spremenljivk okolja v tem spisu vseskozi rabljen zapis, ki se uporablja v Bournovi ukazni lupini in njenih izpeljankah (Kornova lupina, lupina bash). Bralec ali bralka, ki uporablja ukazno lupino C (csh ali tcsh), bo znal(a) sam(a) prevesti zglede SPREMENLJIVKA =vrednost export SPREMENLJIVKA ali celo obliko, ki jo dopušča bash: export SPREMENLJIVKA =vrednost v analogne setenv SPREMENLJIVKA vrednost Za nestrpne To poglavje ponuja nekakšna »Izbrana poglavja iz slovenskega HOWTO« za tiste, ki se jim mudi, da bi bodisi v znakovnem bodisi v grafičnem načinu takoj začeli tipkati z našimi znaki, k branju celotnega spisa pa bi se radi vrnili kdaj pozneje v miru. Samo še to naj omenim, da sta prilagoditev konzole in prilagoditev okolja X Window System povsem neodvisni. Naši znaki na konzoli Trije koraki so potrebni, da znakovni terminal (ki se mu iz razlogov, ki po starosti daleč prekašajo povprečnega uporabnika Linuxa, včasih pravi tudi konzola) prilagodimo delu z našimi znaki: Omogočiti moramo prikaz naših znakov v znakovnem načinu. Opisano v razdelku &s-pisave-konzola; poglavja »Prikaz naših znakov na zaslonu«. Nastaviti moramo ustrezno preslikavo tipkovnice. Opisano v razdelku &s-tipk-konz; poglavja »Tipkovnica«. Ukazno lupino moramo nastaviti tako, da bo dovoljevala vnos osembitnih znakov. Opisano v razdelku &s-bash;, v podpoglavju o ukaznih lupinah (ali v razdelku &s-tcsh;, če uporabljate to ukazno lupino). Naši znaki v okolju X Window System Z okoljem X Window System je podobno kakor s konzolo, le pot je malce daljša. Namestiti moramo naše znake in pripraviti grafično okolje X Window System do tega, da jih bo uporabljalo. Opisano v razdelku &s-pisave-x11; poglavja »Prikaz naših znakov na zaslonu«. Nastaviti moramo preslikavo tipkovnice. Opisano v razdelku &s-tipk-x11; poglavja »Tipkovnica«. Nastaviti moramo terminalski posnemovalnik, da bo prikazoval naše znake. Opisano v razdelku &s-xterm; poglavja o terminalskih posnemovalnikih. Ukazno lupino moramo nastaviti tako, da bo dovoljevala vnos osembitnih znakov. Opisano v razdelku &s-bash;, v podpoglavju o ukaznih lupinah (ali v razdelku &s-tcsh;, če uporabljate to ukazno lupino). Prikaz naših znakov na zaslonu Nabor znakov »ISO Latin 2« ISO 8859-2 ali ISO Latin 2 je član družine osembitnih naborov znakov ISO 8859, ki pokriva potrebe alfabetskih pisav (latinica in cirilica ter arabska, hebrejska in grška pisava; v pripravi sta tudi armenska in gruzinska). Družino je zasnovalo evropsko združenje izdelovalcev računalnikov (European Computer Manufacturer's Association, ECMA), kot mednarodni standard pa jo je potrdila organizacija za standardizacijo ISO s sedežem v Ženevi. Nabor ISO Latin 2 obsega vse potrebne znake za pisanje v albanščini, angleščini, bošnjaščini, češčini, finščini, hrvaščini, irščini, lužiški srbščini, madžarščini, nemščini, poljščini, romunščini, slovaščini, slovenščini ter srbščini v latiničnem prečrkovanju. Nekaj izdelovalcev strojne in programske opreme, med njimi IBM, Apple in Microsoft, uporablja svoje kodne strani za kodiranje znakov srednje- in vzhodnoevropskih narodov. Te kodne strani so praviloma nezdružljive tako med seboj kakor tudi s standardom ISO. ISO 10646/Unicode Osembitni nabori znakov imajo tudi pomanjkljivosti. Če smo računalnik nastavili tako, da pravilno prikazuje slovenske znake, s tem samodejno rešimo tudi prikaz besedil v prej naštetih jezikih, kot so poljščina ali madžarščina, ne pa tudi besedil v francoščini, ruščini ali grščini. V mednarodnem okolju so lahko s tem težave. Ponujenih rešitev je bilo več, največ pozornosti pa je bil deležen razširjeni standard Unicode. ISO 10646 UCS (Universal Character Set) je 31-bitni nabor znakov, razdeljen na 128 »skupin« (angl. group), vsaka od njih pa na 256 »ravnin« (angl. plane); 65536 znakov prve ravnine je definiranih kot osnovna večjezična ravnina (Base Multilangual Plane, BMP). V tretji izdaji standarda Unicode (enakovredni standardu ISO/IEC 10646-1:2000) je definiranih 49.194 znakov, 7827 16-bitnih kod je še nedodeljenih, če štejemo še 1.048.544 za zdaj nedodeljenih mest, ki jih lahko naslavljamo s pari surogatov (torej s parom 16-bitnih kod), pa bi moral standard za nekaj časa zadostovati. Za kodiranje besedil se ob kodiranju UCS-2, v katerem je vsak od 65.536 znakov predstavljen z dvema bajtoma, ter UCS-4, v katerem je vsak znak predstavljen s štirimi bajti, uporablja tudi pretvorna shema UTF-8 (UCS Transformation Scheme), v kateri se prvih 128 znakov iz nabora Unicode (kar ustreza naboru ASCII) kodira z enim bajtom, naslednjih 1920 (med njimi je večina drugih latiničnih znakov, cirilica, osnovna grščina, hebrejščina in osnovna arabščina) kot dva bajta, nadaljnjih 63.488 znakov (med njimi kitajski, japonski, korejski) s tremi, preostali znaki iz nabora ISO 10646 pa s štirimi do šestimi bajti. Prednost kodiranja UTF-8 je za evropske latinično pišoče narode v tem, da so besedila komaj kaj daljša od besedil, kodiranih v katerem od osembitnih standardov ISO 8859, kodiranje v UCS-2 pa pomeni dvakrat daljše besedilo (UCS-4 pa celo štirikrat daljše). Slabost je seveda v tem, da v takih besedilih ni več enostavne zveze med številom znakov v besedilu in dolžino besedila v bajtih. Izčrpnejše informacije o uporabi kodnega nabora Unicode v Linuxu prinaša spis Unicode HOWTO, na voljo tudi v slovenskem prevodu. Konzola Nabor znakov za sistemsko konzolo najdemo v paketu kbd Andriesa Brouwerja z univerze v Eindhovnu na Nizozemskem. Paket je del vseh distribucij Linuxa in se samodejno naloži ob namestitvi sistema. Pisave in pretvorne tabele so zložene v imeniku /usr/lib/kbd. (Avanturisti se lahko namesto s paketom kbd igrajo s prototipnimi Linux Console Tools avtorja Yanna Dirsona. Izdaji LCT 0.2.0 ter kbd 0.99 naj bi bili usklajeni.) Ko je paket naposled nameščen, izberemo na zaslonu drugo pisavo z ukazom consolechars. Spodnji zgled izbere pisavo z naborom znakov po standardu ISO Latin 2, veliko šestnajst pik: consolechars --font=lat2u-16 --sfm=lat2u.sfm --acm=iso02.acm Zaradi združljivosti s prejšnjimi izdajami paketa kbd še vedno deluje tudi ukaz setfont, ki pa bo morda v kateri od naslednjih izdaj opuščen: setfont lat2u-16 Sistemske nastavitve zaslonske pisave so shranjene v datoteki /usr/sysconfig/i18n: SYSFONT="lat2-sun16" SYSFONTACM="iso02" LANG="sl_SI" V isti nastavitveni datoteki je shranjen tudi podatek o tem, za katere jezike smo izbrali podporo ob namestitvi, na primer: SUPPORTED="en_US:en:sl_SI:sl" Rok Papež predlaga naslednjo izboljšavo nastavitve spremenljivk SYSFONT in SYSFONTACM: SYSFONT="lat2u-16" UNIMAP="lat2u" SYSFONTACM="iso02+euro" Pisave z našimi znaki podpirajo le ločljivost 80 x 25 znakov. Če izberemo kakšno drugo ločljivost, denimo z izbiro vga=ext v LILO, se ločljivost avtomatično vrne na 80 x 25. Izbrana pisava velja v vseh navideznih terminalih (glej console(4)) na konzoli. Če nam to ni všeč in bi radi imeli v vsakem navideznem terminalu svojo pisavo, si lahko pomagamo s programom vtfontd Iana Zimmermana. Ta vsakič, ko zapustimo navidezni terminal, shrani izbrano konzolno pisavo in jo znova restavrira, ko se vrnemo vanj. ftp://sizif.mf.uni-lj.si/pub/linux/vtfontd-1.0.1.tar.gz Z izbiro pisave smo opravili šele nekako tretjino vsega dela, potrebnega, da bi lahko v tekstovnem okolju pisali po slovensko. Izvesti moramo vsaj še preslikavo tipkovnice ter omogočiti vnos osembitnih znakov v ukazni lupini. Nestrpna bralka ali bralec si lahko potrebno prebere v razdelku &s-tipk-konz; poglavja »Tipkovnica« ter v o razdelku ukazni lupini &s-bash; v poglavju o ukaznih lupinah. Starejše izdaje Pri starejših izdajah jedra (2.0 in starejše) je bila podpora za Unicode izvedena drugače in v njih bomo tako ukaz consolechars(8) kot tudi pisavo lat2u-16 zaman iskali. Namesto nje uporabimo ukaz setfont in pisavo lat2-16: setfont lat2-16 Za nas zanimive pisave so še iso02.f08, iso02.f14 in iso02.f16, ter lat2-08.psf, lat2-10.psf, lat2-12.psf, lat2-14.psf in lat2-16.psf (pripono .psf lahko pri ukazu setfont izpuščamo). Distribucija Red Hat od različice 6.2 naprej shranjuje nastavitve zaslonskih pisav v datoteki /etc/syconfig/i18n. Prej omenjeni ukaz setfont vanjo ob izboru slovenske tipkovnice zapiše primerne vrednosti, na primer: LANG="sl_SI" SYSFONT="lat2-sun16" SYSFONTACM="iso02" V starejših distribucijah Slackware se je prevedeni paket imenoval keytbls. Namestimo ga enako kakor druge pakete, z ukazom pkgtool ali installpkg. X Window System Kratka navodila za namestitev pisav z našimi znaki za uporabo z X Window System in strežnikom XFree86. Rastrske pisave navadno namestimo kot paket RPM (ime paketa je XFree86-ISO8859-2, XFree86-ISO8859-2-75dpi-fonts ali XFree86-ISO8859-2-100dpi-fonts). Če paketa RPM nikakor ne dobimo, pisave snamemo iz najbližjega strežnika FTP: ftp://ftp.arnes.si/software/Latin-2-fonts/ V datoteki ISO8859-2-bdf.tar.gz je najpopolnejši nabor pisav, kodiranih po ISO 8859-2, precej uporabnih pisav pa je tudi v xfonts-iso2-0.84.tar.gz. Po običajnem postopku (tar -xzf ...) jih razširimo in razpakiramo. Pisavam z našimi znaki določimo mesto v drevesni strukturi imenikov. Navadno je to podimenik v imeniku /usr/X11R6/lib/X11/fonts/ (včasih tudi /usr/lib/X11/fonts/, /usr/lib/X11R6/lib/X11/fonts, /usr/X386/lib/X11/fonts/ ali celo /usr/share/fonts/, kar pa naj nas ne moti). Možni zgled: /usr/X11R6/lib/X11/fonts/iso_8859.2/75dpi/ /usr/X11R6/lib/X11/fonts/iso_8859.2/100dpi/ /usr/X11R6/lib/X11/fonts/iso_8859.2/misc/ Če imenikov s tem imenom še ni, jih ustvarimo. Strežnik X ne zna uporabiti pisav v enakem formatu, kot se distribuirajo, zato jih moramo s programom bdftopcf prevesti iz formata BDF (Binary Distribution Format) v format PCF (Portable Compiled Format). Starejše izdaje X Window System so namesto slednjega uporabljale format SNF (Server Native Format), ki pa se danes ne uporablja več. for FILE in *.bdf do bdftopcf $FILE -o `basename $FILE .bdf`.pcf done (da, ukazi v bash lahko segajo tudi čez več vrstic). Pisav v obliki BDF zdaj ne potrebujemo več in jih lahko zbrišemo. Strežnik X zna uporabiti stisnjene datoteke s pisavami, kar lahko izkoristimo in prihranimo še nekaj prostora na disku. gzip *.pcf Starejše izdaje strežnika X (ampak res zelo stare) so podpirale le stiskanje s compress. V vsakem imeniku s pisavami pričakuje strežnik datoteko fonts.dir, ki podaja preslikavo med opisi pisav (X Logical Font Description, XLFD) in imeni datotek. Ustvarimo jo z ukazom mkfontdir Ukaz moramo pognati v vsakem podimeniku s pisavami. Končno lahko strežnik obvestimo o tem, da smo namestili nove pisave. To storimo z ukazom xset: xset +fp /usr/X11R6/lib/X11/fonts/iso_8859.2/75dpi/ xset +fp /usr/X11R6/lib/X11/fonts/iso_8859.2/100dpi/ xset +fp /usr/X11R6/lib/X11/fonts/iso_8859.2/misc/ xset fp rehash Če je šlo vse gladko, mora ukaz xlsfonts -fn '*-iso8859-2' pokazati seznam vseh novo nameščenih pisav. Ukaz xset velja samo, dokler ne zapustimo X Window System. Trajno spremembo dosežemo s popravkom konfiguracijske datoteke. Strežnik XFree86 hrani svoje nastavitve v datoteki /etc/X11/XF86Config-4 (XFree86 4.0 po vrsti poskuša prebrati nastavitve takole: /etc/X11/XF86Config-4, /etc/X11/XF86Config in /etc/X11/XF86Config. Pri nekaterih starejših distribucijah se je nastavitvena datoteka imenovala tudi /usr/X11R6/lib/X11/XF86config ali /usr/X11/lib/X11/Xconfig). Poiščemo niz FontPath in dodamo vrstice: FontPath "/usr/X11R6/lib/X11/fonts/iso_8859.2/75dpi" FontPath "/usr/X11R6/lib/X11/fonts/iso_8859.2/100dpi" FontPath "/usr/X11R6/lib/X11/fonts/iso_8859.2/misc" To je vse. Od zdaj naprej zna X Window System na zahtevo programa prikazati tudi naše znake. Več o tem, kako program, npr. Xterm, pripravimo do tega, da zahteva naše znake, si preberemo v razdelku &s-xterm; poglavja o terminalskih posnemovalnikih. Postscript v X11 Strežnik X zna uporabljati rastrske pisave v oblikah PCF, SNF in BDF ter vektorske pisave v obliki Speedo in Type 1. Pri majhnih velikostih (do deset tipografskih pik) so rastrske pisave na zaslonu navadno lepše, pri večjih velikostih, npr. v grafičnih programih, pa so vektorske znatno lepše. Nemška »digitalna črkolivnica« URW++ je projektu Ghostscript podarila zbirko 35 osnovnih postscriptnih pisav (Times, Helvetica, Courier, Avant Garde, Bookman, New Century Schoolbook, Palatino in Zapf Chancery) v obliki type 1. S tem so postale dostopne pod pogoji splošne licence GNU. Češka podružnica SuSE je pisave prekodirala v nabor ISO 8859-2 in jih objavila v svojem strežniku FTP: ftp://ftp.suse.cz/pub/suse/czfonts/ Pisave so pripravljene v obliki paketa RPM, ki ga namestimo po ustaljenem postopku. Paket predpostavlja, da uporabljamo strežnik pisav xfs in v nastavitveni datoteki /etc/X11/fs/config ob namestitvi doda ustrezne vrstice: /usr/share/fonts/ISO8859-2/75dpi:unscaled, /usr/share/fonts/ISO8859-2/75dpi /usr/share/fonts/ISO8859-2/misc:unscaled, /usr/share/fonts/ISO8859-2/misc Če strežnika pisav iz kakršnegakoli vzroka ne uporabljamo, navedemo pisave v nastavitveni datoteki strežnika X: FontPath "/usr/share/fonts/ISO8859-2/75dpi:unscaled" FontPath "/usr/share/fonts/ISO8859-2/75dpi" FontPath "/usr/share/fonts/ISO8859-2/misc:unscaled" FontPath "/usr/share/fonts/ISO8859-2/misc" Namesto xlsfonts tokrat iz okenskega okolja X Window System poženimo xfontsel. Novo nameščene pisave najdemo najhitreje, če jih iščemo po »črkolivnici« (angl. type foundry) sp (po avtorjevih začetnicah) v prvem stolpcu (fndry). Izberite kakšno veliko povečavo (pxlsz) in primerjajte z rastrskimi pisavami! TrueType v X11 Rasterizator za pisave TrueType je od izdaje XFree86 4.0 naprej standardni del paketa X Window System in je vgrajen v strežnik pisav xfs. Če uporabljate kak drug strežnik X11, ki ne podpira pisav TrueType, pa si lahko pomagate s prostimi strežniki za pisave TrueType, kot sta npr. Xfsft in Xfstt, ki sta opisana v nadaljevanju. V nadaljevanju bomo predpostavili, da vaš strežnik xfs podpira pisave TrueType ali pa ste že uspeli priti do izvedljive datoteke xfsft. Ustvarimo imenik za pisave TrueType, npr. /usr/share/fonts/TrueType/ ali /usr/X11R6/lib/X11/fonts/TrueType/, in vanj prepišemo datoteke s pisavami TrueType. V omenjenem imeniku ustvarimo datoteko fonts.scale. Preprost zgled take datoteke je naslednji: 5 times.ttf -monotype-times-medium-r-normal--0-0-0-0-p-0-iso8859-1 times.ttf -monotype-times-medium-r-normal--0-0-0-0-p-0-iso8859-2 times.ttf -monotype-times-medium-r-normal--0-0-0-0-p-0-iso8859-5 times.ttf -monotype-times-medium-r-normal--0-0-0-0-p-0-koi8-r times.ttf -monotype-times-medium-r-normal--0-0-0-0-p-0-iso10646-1 Opazimo, da se vseh pet vrstic nanaša na eno in isto datoteko. Razlikujejo se le po kodnem naboru. Ker so v datoteki vsi potrebni znaki, jo strežnik pisav programom lahko predstavi kot kodirano v kateremkoli od naštetih petih kodnih naborov. Joerg Pomnitz je napisal programček ttmkfdir, ki samodejno pregleda vse datoteke TrueType in ustvari datoteko fonts.scale. Program navadno namestimo v sistem kot del paketa freetype. V istem imeniku zatem poženemo še ukaz mkfontdir. Ta ne bo napravil drugega, kot da bo datoteko fonts.scale nespremenjeno prepisal v datoteko z imenom fonts.dir. Če naš strežnik pisav ne podpira pisav TrueType, s strežnikom pisav xfsft bodisi prepišemo strežnik (navadno /usr/X11R6/bin/xfs ali pa ga premaknemo na kakšno drugo primerno mesto. Strežnik pisav potrebuje konfiguracijsko datoteko, navadno /etc/X11/fs/config. Spodnja naj bo za zgled, če nimate boljše: clone-self = off use-syslog = off client-limit = 20 catalogue = /usr/share/fonts/TrueType,/usr/share/fonts/Type1 error-file = /usr/X11R6/lib/X11/fs/fs-errors # in decipoints default-point-size = 120 # x,y default-resolutions = 100,100,75,75 Zdaj lahko poženemo strežnik pisav X. Pri zgledu smo uporabili vrata 7100. Če so v vašem sistemu že zasedena, izberite druga. Podrobnosti si oglejte v priročniku xfs(1). xfs -daemon -port 7100 -config /etc/X11/fs/config Strežnika razen med preizkušanjem ne bomo poganjali tako, ampak s primernim skriptom (navadno /etc/rc.d/init.d/xfs): # service xfs start Ne da bi spreminjali pot, po kateri iščemo pisave, lahko preverimo, ali strežnik deluje: fslsfonts -server localhost:7100 Če smo zadovoljni, dodamo strežnik pisav med vire, v katerih iščemo pisave, npr. xset fp+ tcp/localhost:7100 Strežnik pisav lahko seveda teče tudi v drugem računalniku, tako da ni potrebe, da imamo v vseh računalnikih v krajevnem omrežju nameščene vse pisave. Dokončno dodamo strežnik pisav v konfiguracijsko datoteko /etc/X11/XF86Config-4: FontPath "tcp/localhost:7100" Freetype in xfsft Mark Leisher in Juliusz Chroboczek sta standardni strežnik pisav iz okolja X Window System dopolnila s FreeType, prostim rasterizatorjem za pisave TrueType, ki so ga napisali David Turner, Robert Wilhelm, Werner Lemberg in sodelavci. Strežnik je na voljo kot izvirna koda, s katero lahko pokrpate izvirno kodo strežnika X, ali pa kot že preveden program za Linux. http://www.freetype.org/ http://www.dcs.ed.ac.uk/home/jec/programs/xfsft/ Xfstt Drugi strežnik pisav za X11, ki podpira pisave TrueType, je Xfstt. Pisec teh vrstic z njim nima izkušenj, je pa z veseljem pripravljen na to mesto vstaviti izkušnje drugih. Xfstt najdete na navedenem mestu in v vseh zrcalih le-tega. ftp://metalab.unc.edu/pub/Linux/X11/fonts/Xfstt-0.9.10.tgz Tipkovnica Linux ima povsem ločena sistema za vnašanje znakov s tipkovnice v tekstovnem načinu (»konzola«) in v grafičnem načinu (X Window System). Do nedavna je imel pravzaprav celo tri neodvisne sisteme, saj namizje KDE ni uporabljalo splošne vnosne metode okenskega okolja X Window System, z različico KDE 2.0 pa so tudi snovalci namizja KDE svoj mehanizem nadomestili s splošnejšim vnosnim mehanizmom XKB. Najprej si bomo ogledali vnos znakov v tekstovnem, nato pa še v grafičnem načinu. Konzola Nabor znakov za sistemsko konzolo in tabele za premapiranje tipkovnice najdemo v paketu kbd, ki ga je pripravil Andries Brouwerja z univerze v Eindhovnu na Nizozemskem. Avtor paketa je napisal tudi Keyboard HOWTO, kjer si lahko o tej temi preberemo več. Paket je del vseh običajnih distribucij in se naloži samodejno ob namestitvi sistema. V starejših distribucijah Slackware se je prevedeni paket imenoval keytbls. Namestimo ga enako kakor druge pakete, z ukazom pkgtool ali installpkg. V paketu kbd so tabela za slovensko tipkovnico s 102 tipkama in zaslonske pisave za kodni nabor ISO Latin 2. Vsi, ki iz kakršnihkoli razlogov uporabljajo drugačno tipkovnico, si lahko na podlagi zgledov v /usr/lib/kbd/ pripravijo svojo. Marko Maček je svojčas pripravil tabelo preslikav za ameriško tipkovnico s 101 tipko, ki pa je zdaj na naslovu http://www.kiss.uni-lj.si/~k4fr0235/kbd/ ni več najti. V večini distribucij, preverjeno pa v Red Hat in Debian, je »uradni« način za nastavitev tipkovnice ukaz kbdconfig. Če pa bi želeli postopek za izbor zaslonske pisave, tabele za tipkovnico in uporabo le-te izvesti ročno, gre takole: # Izberemo pisavo z naborom ISO Latin 2 v velikosti 16 pik setfont lat2-16 # Naložimo prireditveno tabelo za slovensko tipkovnico... loadkeys slovene # ...in jo izberemo echo -e -n "\\033(K" > /dev/console Ponesrečene poskuse prednastavitve tipkovnice prekličemo z ukazom loadkeys -d, s čimer naložimo nazaj privzeto preslikavo tipkovnice. Če pa, nasprotno, želimo, da bi nova nastavitev ostala trajna, dodamo zgornjih šest vrstic v nastavitveno datoteko /etc/rc.d/rc.local, ki se izvede ob zagonu operacijskega sistema. Če ob tem omogočimo še vnos osembitnih znakov v ukazni lupini &s-bash;, je to najnujnejše, kar je treba za pisanje po slovensko v tekstovnem načinu. Distribucija Red Hat od različice 6.2 naprej shranjuje podatek o izbrani tipkovnici v datoteki /etc/syconfig/keyboard, zato ni pametno ročno packati po /etc/rc.d/rc.local. Prej omenjeni ukaz kbdconfig vanjo ob izboru slovenske tipkovnice zapiše KEYBOARDTYPE="pc" KEYTABLE="slovene" X Window System Strežnik XFree86 od različice 4.0 naprej podpira tudi slovensko tipkovnico, ki uporablja vnosni mehanizem XKB. XKB<footnote><para>Prispeval Marko Samastur, <email>markos@elite.org</email>.</para> </footnote> Xmodmap, ki smo ga lahko uporabljali doslej, med razvijalci XFree86 že nekaj časa velja za preživeto tehnologijo. Njegovo vlogo naj bi popolnoma nadomestil protokol XKB. Ker je bila slovenska tipkovnica dodana strežnikom XFree86 šele pred kratkim, je morda vaša distribucija še nima. Snamete jo lahko z ftp://sizif.mf.uni-lj.si/pub/i18n/xkb.tar.gz Vsebovano datoteko (si) namestite v imenik /usr/lib/X11/xkb/symbols. Da bo pravilno delovala, morate nastaviti spremenljivko okolja LANG na sl_SI (ni dovolj, če je nastavljena le na sl). Tipkovnico nato uporabite tako, da v zagnanih oknih X izvedete ukaz setxkbmap si ali (če želite, da se naloži ob vsakem zagonu oken X) da v nastavitveno datoteko strežnika X (/etc/X11/XF86Config-4 ali /etc/X11/XF86Config)vpišete XkbLayout "si" Xmodmap V starejših izdajah X Windows System, ki še ne podpirajo vnosnega mehanizma XKB, lahko spreminjamo razporeditev tipk na tipkovnici z ukazom xmodmap. Tabelo preslikav za navadno tipkovnico s 102 ali 105 tipkami, kot je v rabi pri nas, lahko snamemo z ftp://sizif.mf.uni-lj.si/pub/i18n/Xmodmap.sl.pc102 Datoteko smo morda že samodejno namestili v sistem skupaj s paketom gnome-applets; v tem primeru jo najdemo v imeniku /usr/share/xmodmap/ pod imenom xmodmap.si. Uporaba je enostavna: xmodmap Xmodmap.sl.pc102 Preslikava tipkovnice velja, dokler ne zapustimo okolja X Window System. Zamenjamo jo lahko z vnovičnim ukazom xmodmap, ki mu kot argument podamo datoteko s tabelo preslikav. Tabelo za standardno ameriško tipkovnico navadno najdemo kot /usr/X11R6/lib/X11/etc/xmodmap.std. Če je ne, si jo lahko pripravimo sami: preden naložimo slovensko preslikavo tipkovnice, poženemo: xmodmap -pke > Xmodmap.us To potem naložimo enako kakor slovensko tabelo. Če želimo to razporeditev trajno namestiti, preimenujemo datoteko bodisi v ˜/.Xmodmap (osebna nastavitev) ali pa v /usr/X11R6/lib/X11/xinit/.Xmodmap (skupna nastavitev za vse uporabnike; ponekod se ta datoteka imenuje tudi /etc/X11/xinit/Xmodmap) in se samodejno naloži ob vsakem zagonu X Window System. Če se ne naloži, preverite svojo datoteko ˜/.xinitrc. V njej mora biti nekaj takega kot: usermodmap=$HOME/.Xmodmap sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap if [ -f $sysmodmap ]; then xmodmap $sysmodmap fi if [ -f $usermodmap ]; then xmodmap $usermodmap fi Ob preslikavi tipkovnice ne pozabimo na to, da moramo tudi v ukazni lupini omogočiti vnos osembitnih znakov (poglavje &s-shell;). KDE 2.0 KDE 2.0 se od prejšnjih različic razlikuje po mehanizmu vnosa naših znakov; namesto lastne sheme namreč uporablja &s-xkb; in &s-locale;. Tabela preslikav za slovensko tipkovnico je del paketa XFree86 4.0 ali novejšega. Slovensko okolje (in s tem tudi tipkovnico) vklopimo, tako da preden poženemo okna X (tudi pred zagonom Xdm, Kdm ali Gdm), nastavimo spremenljivko LANG: LANG=sl_SI. Če ne želimo poslovenjenih sporočil, namesto tega nastavimo LC_CTYPE=sl_SI. Pri distribuciji Red Hat to nastavitev enkrat za vselej vpišemo v datoteko /etc/sysconfig/i18n, pri distribuciji Debian pa v /etc/environment. KDE 1.x<footnote><para>Prispeval Marko Samastur, <email>markos@elite.org</email>.</para> </footnote> Skupina za slovenjenje Linuxa pri društvu LUGOS je leta 1999 popolnoma poslovenila namizje KDE. Čeprav so na voljo prevodi tudi starejših različic tega namizja, priporočam uporabo različice 1.1.2, ker je to najpopolnejši prevod, v katerem so odpravljene nekatere napake starejših različic. Če že imate nameščeno namizje KDE, lahko poslovenite programe tako, da z menuja, ki ga prikličete s K Settings Desktop Language , kot prvi jezik izberete Slovenian. Prevedeni programi, ki jih boste zagnali potem, bodo že imeli slovenski prevod menujev. Če v zapisih na menujih ni šumnikov, s K Nastavitve Namizje Pisave odprete okno, v katerem jih ustrezno nastavite. Vsem pisavam, naštetim v levem stolpcu, morate nastaviti znakovni nabor na iso-8859-2. Če imate pisave pravilno nameščene (tako kakor opisuje ta HOWTO), se bodo z uveljavitvijo sprememb pokazali tudi šumniki. Zdaj je treba nastaviti le še tipkovnico. Pri tem so nam na voljo že našteti prijemi, lahko pa uporabimo tudi »Mednarodno tipkovnico«, ki je vključena v namizje KDE. Ta nam omogoča preprosto preklapljanje različnih tipkovnic (kar nekateri že poznajo iz okolja Windows). Okno Internacionalna tipkovnica odpremo z K Nastavitve Vhodne enote Mednarodna tipkovnica in dodamo novo shemo tipkovnice z gumbom Dodaj. Če na našem namizju ni slovenske tipkovnice, lahko uporabimo hrvaško ali pa slovensko poberemo z naslova ftp://sizif.mf.uni-lj.si/pub/i18n/sl.kimap . Tipkovnico moramo shraniti v imenik /usr/share/apps/kikbd/. Če hočemo, da se mednarodna tipkovnica naloži ob vsakem zagonu oken X, lahko to nastavimo na podmenuju Samodejni zagon, drugače pa jo zaženemo s K Sistem Razporeditev mednarodne tipkovnice Pri uporabi moramo paziti le na to, da hkrati ne uporabljamo različnih metod za opis tipkovnice (npr. mednarodne tipkovnice v KDE in Xkb). Xks Češko podjetje Informatica s.r.o. se je problema preslikave tipkovnice lotilo drugače. Njihov izdelek Xks je strežnik, ki se ugnezdi med strežnik X in namenske programe ter prestreže vse dogodke KeyPress ter jih po potrebi prilagodi. Ta rešitev deluje tudi pri slabo napisanih programih, pri katerih preslikava z xmodmap ne deluje, obljublja pa tudi rešitev za sprožitev nemih tipk (tipke v zgornji vrstici slovenske tipkovnice lahko v kombinaciji s tipko AltGr delujejo kot neme tipke). Xks je program za pokušino (shareware); registracija izvedbe za Linux stane 900 čeških kron (okrog 4500 tolarjev). Pisec teh vrstic se zaenkrat še ni utegnil ukvarjati z njim, bi pa z veseljem vstavil na to mesto izkušnje drugih. Slovensko jezikovno okolje Z izrazom jezikovno okolje (angl. locale) označujemo skupek lastnosti programskega okolja, odvisnih od jezikovnega in kulturnega okolja uporabnika. Mednje sodi informacija o tem, kateri znaki so črke in kakšen je njihov vrstni red, način izpisa datuma in ure, izbiro ločila v zapisu decimalnih števil (vejica ali pika), zapis valute in sporočila programov uporabniku. Programski vmesnik za internacionalizacijo in krajevno prilagajanje (lokalizacijo) v sistemih, združljivih s standardi POSIX, je definiran v standardu ISO/IEC 9899 (Programski jezik ISO C) ter IEEE 1003.2 (POSIX.2). Informacije, pomembne za krajevno prilagoditev, razvršča v šest kategorij: LC_CTYPE (znaki, ki predstavljajo abecedo) LC_COLLATE (vrstni red znakov v abecedi) LC_TIME (izpis datuma in časa) LC_NUMERIC (izpis številčnih vrednosti) LC_MONETARY (izpis valute) LC_MESSAGES (komunikacije z uporabnikom) LC_ALL zajema vseh šest naštetih kategorij. Medtem ko projekt GNU pri izvedbi prvih petih kategorij zvesto sledi standardu, se je v šesti odločil za njegovo razširitev. Standardizacijski komite se namreč ni mogel zediniti o izvedbi ravnanja s prevodi sporočil, zato je standard v tej točki praktično neuporaben: določa le prevode za »da« in »ne«. Projekt GNU je zato razvil svojo metodo, to je paket GNU gettext. Prevedeni katalogi sporočil, ki jih uporablja mehanizem gettext, so navadno v podimenikih imenika /usr/share/locale/. Sledi nekaj zgledov odziva poslovenjenega sistema. Zgledi v tej izdaji spisa HOWTO so že preverjeni in pobrani iz Linuxa (paketi GNU textutils, GNU fileutils ipd.), v katerega pa mora biti nameščena knjižnica GNU libc 2.0 ali poznejša izdaja. Če katerega od zgledov pisec ni uspel preveriti v Linuxu, je na to posebej opozorjeno. Z nastavitvijo spremenljivke LANG ali LC_ALL na slovensko jezikovno okolje se spremenijo vsi prilastki, spreminjamo pa lahko tudi vsakega posebej: ˜> cal February 2000 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ˜> date Sun Feb 13 20:16:07 CET 2000 ˜> LC_ALL=sl_SI.iso88592 cal februar 2000 ne po to sr če pe so 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ˜> LC_TIME=sl_SI date ned feb 13 20:16:22 CET 2000 Lahko pa jih spreminjamo tudi vsakega posebej. Če bi želili obdržati angleške izpise, obliko datuma, decimalno piko ipd., a bi želeli črke urejene po slovenski abecedi, bi spremenili samo LC_COLLATE (urejanje po izkušnjah pisca z GNU libc 2.1 še vedno ne deluje): ~> sort abc.tex abc abca abd abč ~> LANG=C LC_COLLATE=sl_SI.iso88592 sort abc.tex abc abca abč abd Seveda LC_COLLATE ne reši vseh težav v zvezi z urejanjem. Pri razvrščanju kastiljskih kraljev bi, recimo, želeli, da Alfonz IX. sledi Alfonzu VIII. in je pred Alfonzom X. Prepoznavanje takih zgledov pa je verjetno že problem za umetno inteligenco... Spremenljivka LANG ima v splošnem obliko: LANG =jezik _država .nabor Pri tem je jezik dvočrkovna koda jezika, kot jo določa standard ISO 639, država pa dvočrkovna koda države, določena s standardom ISO 3166. Zgled za slovenščino, kot se govori v Sloveniji in piše s kodnim naborom ISO 8859-2, je torej LANG=sl_SI.iso88592 Določitev države in nabora znakov je neobvezna (pomembna je seveda pri jezikih, ki se govorijo v več državah; kakšno jezikovno okolje uporabljajo Slovenci v zamejstvu, piscu teh vrstic ni znano), tako lahko pišemo na kratko LANG=sl Vsaj v teoriji naj bi bilo tako. Praksa v Linuxu se navadno majčkeno razlikuje: v imeniku /usr/share/locale/sl so shranjeni samo katalogi sporočil iz kategorije LC_MESSAGES, podatki iz vseh drugih kategorij pa so v imeniku /usr/share/locale/sl_SI. Zato moramo postaviti spremenljivko LANG (ali LC_ALL) na vrednost sl_SI (ali sl_SI.iso88592), spremenljivko LC_MESSAGES pa na sl: LANG=sl_SI LC_MESSAGES=sl Programiranje z GNU gettext Paket GNU gettext ponuja nekaj orodij za lokalizacijo: xgettext, ki iz izvirne kode izlušči sporočila msgcmp, ki primerja dva kataloga sporočil msgmerge združi star prevedeni katalog sporočil z novim, neprevedenim msgfmt, ki prenosni katalog sporočil prevede v binarno obliko msgunfmt, nasprotno od msgfmt S kratkim zgledom ponazorimo, kako poteka pisanje krajevno prilagojenega programa s paketom GNU gettext. Najprej napišemo program zgled.c. Pri pisanju programa že vpletemo 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(0); } Z ukazom xgettext iz izvirne kode izluščimo izpise na zaslon: xgettext zgled.c S tem smo ustvarili datoteko messages.po. To je navadna besedilna datoteka s skeletom prevodov sporočil. Datoteko messages.po z urejevalnikom dopolnimo s prevodi, recimo takole: # Slovenski prevod zgleda # Primož Peterlin, <primoz.peterlin@biofiz.mf.uni-lj.si> # msgid "" msgstr "" "Project-Id-Version: zgled 1.0\n" "POT-Creation-Date: 1998-12-06 14:05:53+0100\n" "PO-Revision-Date: 1998-12-06 15:00:00+0100\n" "Last-Translator: Primoz Peterlin <peterlin@biofiz.mf.uni-lj.si>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-2\n" "Content-Transfer-Encoding: 8bit\n" "Xgettext-Options: \n" "Files: zgled.c\n" #: zgled.c:13 msgid "This is a short example." msgstr "To je kratek zgled." #: zgled.c:14 msgid "Author: Primoz Peterlin" msgstr "Avtor: Primož Peterlin" Popravljeno prenosljivo datoteko s sporočili (angl. portable message file) messages.po prevedemo v binarno obliko: msgfmt -v -o zgled.mo messages.po Binarno datoteko prestavimo v imenik, v katerem jo bo gettext našel: mv zgled.mo /usr/local/share/locale/sl/LC_MESSAGES Program prevedemo in povežemo s knjižnico libintl.a: gcc -o zgled zgled.c -lintl Pa poskusimo, kakšna je razlika! LANG=C ./zgled LANG=sl ./zgled LC_ALL=sl ./zgled LC_MESSAGES=sl ./zgled LC_CTYPE=sl ./zgled LC_ALL=sl_SI.iso88592 ./zgled V prvem in zadnjem zgledu je izpisano sporočilo angleško, v predzadnjem pa verjetno tudi. V prvem zato, ker smo izrecno zahtevali jezikovno okolje »C«, v zadnjem pa zato, ker smo zahtevali jezikovno okolje »sl_SI.iso88592«, v katerem ni prevoda sporočil -- to namreč obstaja za jezikovno okolje »sl«. V predzadnjem zgledu smo uporabili pravo jezikovno okolje, a irelevantno kategorijo LC_CTYPE namesto uporabljene LC_MESSAGES. Še dve opombi: imenik, v katerega prestavimo katalog sporočil, se mora ujemati z imenikom LOCALEDIR, navedenim v izvirni kodi. Težavo, da GNU gettext razume »sl« in »sl_SI.iso88592« kot različna locala, je pisec teh vrstic rešil s simbolno povezavo v imeniku /usr/local/share/locale: ln -s sl sl_SI.iso88592 Perl Od izdaje 5.004 naprej tudi Perl podpira krajevne prilagoditve. Nastaviti moramo primerne spremenljivke okolja in bodisi v programu uporabiti klic use locale; bodisi poklicati Perl z izbiro . Nekaj zgledov; preizkus smo si sposodili pri Janu Pazdziori: ~> LC_CTYPE=sl_SI.iso88592 perl -Mlocale -e '$_="težišče\n"; s/\w/$&:/g; print;' t:e:ž:i:š:č:e: ~> LC_CTYPE=C perl -Mlocale -e '$_="težišče\n"; s/\w/$&:/g; print;' t:e:ži:šče: ~> LC_CTYPE=sl_SI.iso88592 perl -e '$_="težišče\n"; s/\w/$&:/g; print;' t:e:ži:šče: Kakor vidimo, je samo v prvem zgledu, ko smo izvedli oboje: nastavili spremenljivko LC_CTYPE in perl poklicali z izbiro , naše znake res upošteval kot črke (\). Lokalizacijski paket Gettext ni omejen samo na programska jezika C in C++, za katera je bil razvit. Funkcije iz paketa lahko kličemo tudi iz skriptnih jezikov, kot so perl, python in drugi. Za prvega potrebujemo modul Locale::gettext, ki je na voljo paket perl-gettext (RPM) oziroma liblocale-gettext-perl (Debian). Raba je enaka, kot smo že opisali: #!/usr/bin/perl use Locale::gettext; use POSIX; # Potrebno za setlocale() setlocale(LC_MESSAGES, ""); bindtextdomain("countfiles", "/usr/share/locale"); textdomain("countfiles"); printf(gettext("Usage: %s directory\n"), $0); Python Modul gettext je v pythonu že del standardnega paketa. Tudi tu raba sledi temu, kar smo že povedali. Zgled: #!/usr/bin/python import gettext import sys gettext.bindtextdomain('countfiles', '/usr/share/locale/') gettext.textdomain('countfiles') _ = gettext.gettext print _('Usage: %s directory\n') % sys.argv[0] PHP Podpora gettextu je zajeta tudi v skriptni jezik PHP. Zgled je prispeval Rudi Benkovič, rudib@email.si: <?php bindtextdomain ("countfiles", "/usr/share/locale"); textdomain ("countfiles"); print sprintf(gettext("Usage: %s directory\n"), $var); ?> PHP moramo imeti preveden s podporo za gettext. Ukazna lupina Bash Ker obstaja tudi vmesnik na uporabniški ravni -- ukaz gettext -- je mogoče krajevno prilagoditi tudi sporočila ukazne lupine Bash: #!/bin/sh TEXTDOMAINDIR=/usr/share/locale TEXTDOMAIN=countfiles printf "$(gettext -s "Usage: %s directory\n")" "$0" Druga izdaja ukazne lupine Bash (preverjeno velja za 2.04) podpira tudi izbiri in , s katerima iz skripta izluščimo vsa sporočila uporabniku. Več o krajevnem prilagajanju te ukazne lupine si je moč prebrati v Advanced Bash-Scripting Guide. Poslovenjenje katalogov sporočil Od leta 1996 naprej poteka internacionalizacija projekta GNU, v okviru katere so doslej prevedeni v slovenščino paketi a2ps, enscript, fileutils, findutils, gettext, grep, hello, lynx, recode, sed, sh-utils, tar, textutils in wget. Komisija za slovenjenje pri društvu Lugos se od jeseni 1998 naprej ukvarja s prevajanjem namizja KDE v slovenščino in sproti vzdržuje prevode tudi v novejših izdajah. Nekaj mlajši projekt je prevajanje namizja GNOME v slovenščino. Razprava o delu komisije za slovenjenje poteka med prejemniki elektronskega seznama lugos-slo@lugos.si. Nanj se naročite tako, da na naslov sympa@lugos.si v telesu sporočila pošljete vrstico subscribe lugos-slo Obvestila o poslovenjenju paketov iz projekta GNU prejemajo prejemniki elektronskega seznama sl@li.org (seznam je seveda tudi namenjen razpravi med udeleženci, vendar se je ta v zadnjih letih preselila na seznam lugos-slo). Nanj se naročite tako, da na naslov sl-request@li.org v telesu sporočila pošljete vrstico subscribe Poslovenjenje različnih programov Na tem mestu bi se v idealnem svetu opis poslovenjenja Linuxa lahko končal. Povedali smo vse potrebno o vnosu in izpisu naših znakov in o tem, kako z definiranjem spremenljivk okolja programom dopovemo, da delamo s slovenskimi besedili. To poglavje je tako rekoč v celoti posvečeno izjemam - programom, ki iz takih ali drugačnih razlogov ne uporabljajo lokalizacijskih spremenljivk, alternativnim metodam za vnos ali izpis znakov, ki v izjemnih primerih (npr. če nimamo tipkovnice s slovenskimi znaki) lahko vseeno pridejo prav, in podobnemu. Ukazne lupine bash Nastavitve ukazne lupine bash so v datoteki ˜/.inputrc (ki jo po potrebi ustvarimo): set meta-flag on set convert-meta off set output-meta on Te tri vrstice je morda pametno dodati tudi v /etc/skel, tako da jih podedujejo tudi vsi na novo ustvarjeni uporabniki. Tole se sicer ne navezuje na slovenščino, a ko ste že pri delu, si lahko življenje olajšate še s tem, da tipkam Home, Delete in End vrnete njihov običajni pomen: v isto datoteko (˜/.inputrc) dodaste še vrstice "\e[1˜": beginning-of-line "\e[3˜": delete-char "\e[4˜": end-of-line tcsh Vnos osembitnih znakov omogočimo, če v nastavitveno datoteko (/etc/csh.login za skupne nastavitve oz. ˜/.tcshrc ali ˜/.cshrc za osebne nastavitve) dopišemo vrstico: setenv LC_CTYPE sl_SI.iso88592 Med nami: kaže, da je ukazni lupini tcsh povsem vseeno, na kaj nastavite spremenljivko LC_CTYPE, samo da ni nedefinirana. Pazite: ukazna lupina mora biti prevedena z vklopljeno izbiro »8-bit«! To lahko preverite z ukazom set: rufko:~% set ... version tcsh 6.06.00 (Cornell) 1995-05-13 (i386-intel-linux) options 8b,dl,al rufko:~% Pomemben je tisti »8b«. Če se pri vas ne izpiše, vam verjetno ne preostane drugega, kakor da snamete izvirno kodo in jo prevedete. Terminalski posnemovalniki Xterm V datoteki ˜/.Xresources (osebna nastavitev) ali pa v datoteki /usr/lib/X11/app-defaults/XTerm (skupna nastavitev) določimo pisave, ki jih uporablja XTerm. Izberemo pisavo, ki ima vse znake enako široke, npr. »fixed« ali »Courier«, in je kodirana po razporeditvi ISO Latin 2. Zgled: XTerm*font: -*-fixed-medium-r-normal--16-*-iso8859-2 XTerm*boldFont: -*-fixed-bold-r-normal-sans-16-*-iso8859-2 Primerne pisave lahko izpišemo z ukazom xlsfonts (glej še razdelek &s-pisave-x11; poglavja »Prikaz naših znakov na zaslonu«): xlsfonts -fn '*-fixed-*-iso8859-2' rxvt Po podatkih v češkem HOWTO rxvt zaenkrat (razvojna izdaja 2.4.6) ne deluje z našimi znaki brez posegov v izvirno kodo. Potrebne posege najdete v »Czech HOWTO« (ki ni del arhiva LDP; glej razdelek &s-zahvala;, kje ga najdete). Pisarniški paketi WordPerfect
Jaka Mele, Vse naredim v Linuxu!, Win.Ini, l.6, št.9, str.60 WordPerfect ima vse potrebne znake že v svoji tabeli. Narediti moramo samo še to, da za naše črke definiramo makroukaze. Recimo, da bi radi definirali črko Š (velika črka S s strešico). Začnemo snemati makroukaz (recimo mu Scaron), skočimo v tabelo znakov, v njej izberemo črko Š, končamo makro in ga nazadnje pri nastavitvah povežemo z izbrano tipko.
Alen Šalamun je pripravil tudi prireditveno tabelo za slovensko tipkovnico brez makroukazov. Datoteko SLO.WGK s prireditveno tabelo za slovensko tipkovnico najdete na ftp://sizif.mf.uni-lj.si/pub/i18n/SLO.WGK
Andrej Komelj, Message-id: <19981224182341.A3794@perun.mist.si> Odgovor na vprašanje: "Kako je s podporo šumnikom v WP 8.0 v Linuxu?" se glasi: SLABO. 1. Rešitev v obliki "insert symbol -> multinational" je v teoriji uporabna, vendar... Hja, multinacionalni znaki so v pisavi WP Multinational, ta pa je najbolj podoben pisavi Roman-WP. Ima "serife", zato Helvetica in Zurich odpadeta. Vendar tudi pri Roman-WP nastanejo težave, če se jo uporablja krepko, ležeče ali krepko in ležeče. 2. Rešitev v obliki uporabe pisav Type 1 z definiranimi slovenskimi znaki (kje se jih dobi? odg: oglejte si v Slovenian-HOWTO ali pa jih skopirajte iz OS/2, če ga imate) pa žal tudi odpade, ker "brezplačna" različica WP nima font installerja (xwpfi) in zato kakršnokoli dodajanje pisav v wp.drs odpade... Skratka, tako kot je nekdo že zapisal; brezplačen in neoskubljen WP je velika potegavščina... Za Američane je morda še nekako uporaben, za povprečnega Slovenca, ki piše tudi slovenska besedila, pa je popolnoma brez vrednosti. :-( Nazaj k LyX in že sestavljenim vzorcem. :-) Mimogrede, kaj se je zgodilo z WP?!? Dokler še ni bil v lasti Corela, je znal postavljati strešice na katerikoli znak v katerikoli pisavi. Z WP 6.0 za DOS sem tako pisal besedila v TrueType, Type 1 in pisavah CG ... POVSOD sem lahko uporabljal šumnike. Eh, "napredek" pa tak.
Star Office Navodila za zadnjo izdajo pisarniškega paketa StarOffice smo si sposodili iz navodil Janeza Kreka za poslovenjenje distribucije SuSE Linux 7.3. StarOffice 5.2 Predpogoj za podporo slovenščini v programu StarOffice je podpora slovenščini v grafičnem okolju (okolje KDE). Ta podpora obsega podporo razporeditvi črk na tipkovnici in tudi pravilni nastavitvi jezika. V tem primeru tudi program StarOffice podpira vnos in izpis slovenskih črk. Pravilno razporejene slovenske črke v programu StarOffice 5.2 imajo naslednje pisave: pisave iz družine Lucida (Lucidux Serif, Lucidux Sans, Lucidux Mono, Lucidabright, Lucidasans, Lucidatypewriter) pisave URW, katerih imena obsegajo niz L EE (Nimbus Mono, Nimbus Sans, Nimbus Roman, Gothic, Bookman, Country Schoolbook, Chancery in Palladio) Pisave URW iz druge točke morate namestiti naknadno, saj se pri privzeti namestitvi (Default with Office) ne namestijo. Postopek je opisan v razdelku &s-pisave-type1;. Zdaj poženemo orodje spadmin, s katerim nastavljamo vedenje pisav in tiskalnika, tako da izberemo Add fonts in poiščemo pravkar nameščene pisave, ki so v imeniku /usr/share/fonts/default/Type1/. Če smo prej izbrali napačen tiskalnik ali če naš tiskalnik ni podprt, ga lahko v orodju spadmin spremenimo v splošni postscriptni tiskalnik, imenovan Generic printer. Tako bomo lahko iz pisarne tiskali v postscriptno datoteko, pozneje pa rezultat izpisali iz ukazne vrstice z ukazom lpr -P ps datoteka.ps. StarOffice 3.1<footnote><para>Jaka Mele, <citetitle>Vse naredim v Linuxu!, Win.Ini, l. 6, št. 9, str. 60</citetitle></para></footnote> StarOffice je malce težavnejši, ker potrebuje dodatne pisave Type1, pa vendar povejmo recept še zanj. Najprej moramo torej dobiti slovenske pisave oziroma pisave latin2 (pfb, afm, fonts.dir in fonts.scale), recimo iz strežnika ftp Društva uporabnikov Linuxa Slovenije ftp://ftp.lugos.si/pub/lugos/arhiv/Type1-Latin2-Fonts/, datoteki l2afm004.zip in l2pfb004.zip). Nato arhiva odpremo v /usr/lib/X11/fonts/Type1.Latin2/ in ta imenik dodamo na seznam imenikov s pisavami, ki jih uporabi strežnik XWindow. To naredimo tako, da v datoteko /etc/X11/XF86Config dopišemo: FontPath "/usr/X11R6/lib/X11/fonts/Type1.Latin2/" Zatem poženemo xset fp+ /usr/X11R6/lib/X11/fonts/Type1.Latin2/ in še xset fp rehash. Nato je treba v imeniku /usr/local/StarOffice3-1/x3p/fontmetrics/ za .afm datoteke narediti povezave iz /usr/lib/X11/fonts/Type1.Latin2/. Podobno naredimo še za imenik /usr/local/StarOffice3-1/x3p/pssoftfonts/, le da sem povežemo datoteke .pfb. Skoraj smo že na koncu. V datoteko /usr/local/StarOffice-3.1/xp3/psstd.fonts dodamo po vzoru že dodanih pisav v datoteki fonts.dir z območja Latin2 vse nove pisave, tako da namesto npr. arial.pfb pride arial, namesto -0-0-0-0 pa -%d-%d-%d-%d.... Saj se takoj vidi. Na koncu si premapirajmo še tipkovnico, in sicer s programom xmodmap, tako da izvedemo xmodmap xmodmap.si. Če imate starejši sistem Xwindow, si boste morda morali xmodmap.si še popraviti, da vam bosta tipki Backspace in Delete delovali normalno, drugače pa samo poženete swriter3 in uživate v dodatnih slovenskih pisavah. Applixware<footnote><para>Boris Požar, <literal>Message-Id: <346044BF.FE97E3AF@guest.arnes.si></literal></para></footnote> Iz Lugosovega strežnika snamemo pisave TrueType v kodnem naboru ISO 8859-2. Potem jih kot root s FontManagerjem dodamo v katalog pisav in zadeva je rešena. l2ttf04.zip AbiWord<footnote><para>Milan Gabor, <email>milan.gabor@uni-mb.si</email></para></footnote> V imenik /opt/AbiSuite/fonts sem prepisal pisave PCF (latin2) za strežnik X in popravil datoteko fonts.dir (popravil, ne na novo naredil!, ker Abi uporablja drugačna imena za pisave, kot so registrirana v pisavah). Težave pa so bile naslednje: Pisavam ni bilo mogoče spreminjati velikosti (ker so v rastrskem formatu PCF) Z njimi se ni dalo tiskati (Abi zahteva za tiskanje pisave Type1) Če bi podtaknil pisave Type1, bi povečevanje in tiskanje delovalo. Magicpoint<footnote><para>Prispeval Miha Tomšič, <email>miha.tomsic@guest.arnes.si</email>.</para></footnote> Program za predstavitve Magic Point sicer ne moremo uvrščati med pisarniške pakete, pomensko pa nekako vendarle sodi zraven. Pomembno je, da lahko program uporablja pisave TrueType v različnih kodnih naborih (za nas je, denimo, zanimiv ISO 8859-2). Starejše izdaje tega niso podpirale; za 1.04a in 1.05a je Dobrica Pavlinušić pripravil popravke, ki jih najdemo na njegovi spletni strani. Vsaj od izdaje 1.08a naprej popravki izvirne kode niso potrebni. Ključna je naslednja vrstica v datoteki &tilde/.mgprc, ki programu pove, kje imamo shranjene pisave Truetype: tfdir "/usr/share/fonts/truetype" V navedenem imeniku naj bodo pisave Truetype kodirane po ISO 8859-2. Zbirko takih najdemo v strežniku društva Lugos. V datoteki s predstavitvijo (denimo vzorec.mgp primerno definiramo pisave, denimo pisavo standard: %deffont "standard" xfont "helvetica-medium-r" "iso8859-2", tfont "arl2____.ttf" Podobno določimo preslikavo med imeni pisav, ki jih uporablja Magic Point, in imeni datotek s pisavami za vse uporabljene pisave. Če je tega veliko, lahko definicije za vse pisave v navedenem arhivu zberemo v datoteki l2fonts.mgp, ki jo v izbrano predstavitev dodamo z ukazom %include "l2fonts.mgp": %% %% l2fonts.mgp - Definicija pisav TrueType v kodnem naboru ISO 8859-2 %% %deffont "arial" xfont "helvetica-medium-r" "iso8859-2", tfont "arl2____.ttf" %deffont "arialb" xfont "helvetica-bold-r" "iso8859-2", tfont "arl2b___.ttf" %deffont "ariali" xfont "helvetica-medium-i" "iso8859-2", tfont "arl2i___.ttf" %deffont "arialbi" xfont "helvetica-bold-i" "iso8859-2", tfont "arl2bi__.ttf" %deffont "courier" xfont "courier-medium-r" "iso8859-2", tfont "cnl2____.ttf" %deffont "courierb" xfont "courier-bold-r" "iso8859-2", tfont "cnl2b___.ttf" %deffont "courieri" xfont "courier-medium-i" "iso8859-2", tfont "cnl2i___.ttf" %deffont "courierbi" xfont "courier-bold-i" "iso8859-2", tfont "cnl2bi__.ttf" %deffont "times" xfont "times-medium-r" "iso8859-2", tfont "tnrl2___.ttf" %deffont "timesb" xfont "times-bold-r" "iso8859-2", tfont "tnrl2b__.ttf" %deffont "timesi" xfont "times-medium-i" "iso8859-2", tfont "tnrl2i__.ttf" %deffont "timesbi" xfont "times-bold-i" "iso8859-2", tfont "tnrl2bi_.ttf" Magic Point mora biti preveden z izbiro , da so besede s šumevci pravilno deljene. Paketi .deb in .rpm naj bi bili že prevedeni tako.
Urejevalniki GNU emacs Emacs je, tako kakor njegov avtor, kontroverzni Richard M. Stallman, urejevalnik, do katerega ljudje niso ravnodušni: ali ga obožujejo ali pa ne prenesejo. Emacs je več kakor urejevalnik; je tako rekoč način življenja. V njem lahko pišete programe, iz njega poganjate prevajalnik, pišete besedila, poganjate črkovalnik, poganjate TeX, berete pošto in novice... Ko boste zares dobro obvladali Emacs, se vam prav mogoče še dobršen del pravkar začetega stoletja ne bo treba naučiti nobenega novega urejevalnika. Dokazano pa ljudje shajajo tudi brez njega. GNU emacs 20 Z zadnjo izdajo urejevalnika Emacs in standardno slovensko tipkovnico je prilagoditev posebno enostavna. Vse, kar potrebujemo, je ;;; Turn on Latin-2 both as input and output method (Emacs 20.* ;;; and onwards) (set-language-environment "Latin-2") Pozneje lahko način Latin-2 izberemo za vnos in izpis na menuju Mule Set Language Environment European Latin-2 Res najnovejše izdaje Emacsa že poznajo tudi način Slovenian. Starejše izdaje programa GNU emacs Privzeta nastavitev urejevalnika je omejitev na sedembitne znake (ASCII). Nastavitev spremenimo tako, da v datoteko z nastavitvami dodamo naslednjih nekaj vrstic: ;; Omogočimo izpis znakov s kodo, večjo od 127 (standard-display-european t) ;; Omogočimo vnos znakov s kodo, večjo od 127 (set-input-mode (car (current-input-mode)) (nth 1 (current-input-mode)) 0) Prilagoditev Emacsa je mogoče izvesti v eni od naslednjih datotek z nastavitvami: /usr/lib/emacs/site-lisp/site-start.el (skupne nastavitve) ˜/.emacs (osebne nastavitve) /usr/lib/emacs/site-lisp/default.el (skupne nastavitve) Z vnosom in izpisom naših znakov seveda še ni konec zgodbe o prilagoditvi Emacsa za slovenščino. Želimo si na primer tudi, da bi se ukaza forward-word in backward-word ne zatikala na naših znakih in da bi tudi za naše znake pravilno teklo pretvarjanje iz velikih črk v male in nazaj. Pri starejših izdajah Emacsa to ni vedno povsem trivialno. Bralcu bo v veliko pomoč zbirka nasvetov Slovenščina in računalniki avtorja Aleša Koširja, v kateri je programu GNU emacs posvečeno obširno poglavje. Emacs in slovensko jezikovno okolje <footnote><para>Aleš Košir, <email>ales.kosir@hermes.si</email></para></footnote> Emacs 20 uporablja svoj, torej nestandardni mehanizem za vnašanje in prikaz tujejezičnih znakov. To že samo po sebi ni lepo, še huje pa je, da se vgrajeni mehanizem tepe s standardnim: če je vrednost spremenljivke LANG> kaj drugega kot C, potem vgrajeni Emacsov način odpove. Nekoliko grda rešitev je, da Emacs vedno poženemo v okolju LANG=C. Najlaže to naredimo tako, da v ˜/.bashrc definiramo alias emacs='LANG=C emacs' Če kdo zares razume interakcijo Emacsa s spremenljivko LANG, bom dodatne informacije z veseljem vstavil sem. Vi Urejevalnik vi izvira iz sive davnine Unixa. Zaradi težav z licenčnino najdete v sistemih Linux namesto izvirnega Vi navadno urejevalnik vim (Vi IMproved) avtorja Brama Moolenaarja, včasih pa tudi elvis, delo Steva Kirkendalla, ali nvi iz distribucije BSD 4.4. Zamisli, na katerih temelji vi, so v temeljih ortogonalne na vse, kar ste se o urejevalnikih naučili v MS-DOS. Kljub temu je glede na to, da je vi edini urejevalnik, ki je zanesljivo v čisto vsakem Unixu, pametno poznati nekaj osnovnih ukazov za delo z njim. Po izkušnjah pisca tako izvirni vi kakor tudi vim sama po sebi brez težav prepuščata osembitne znake. Težave lahko včasih povzročajo zunanji programi, ki jih kličemo iz urejevalnika (npr. fmt za poravnavanje besedila). Navadno pomaga, če v ˜/.profile določimo spremenljivko LC_CTYPE (glej poglavje &s-locale;). Yudit 2.4<footnote><para>Prispeval Jernej Kovačič, <email>jkovacic@email.si</email></para></footnote> Yudit je precej osnoven urejevalnik, ki pa vam lahko pride prav, kadar morate napisati kratko besedilo v jeziku, katerega znakov vaša tipkovnica iz takih ali drugačnih razlogov ne podpira. Vse nastavitve lahko nastavite bodisi v datoteki ˜/.yudit/yudit.properties (veljajo le za določenega uporabnika) ali v /usr/share/yudit/config/yudit.properties (veljajo za vse uporabnike, predpostavili smo, da imate Yudit nameščen v imeniku /usr/share/yudit). Če je neka lastnost nastavljena v obeh datotekah, bo veljala nastavitev za določenega uporabnika. Priporočamo vam, da si, če še nimate nobene, omislite pisavo TrueType, kodirano po Unicode, ki ima vse znake, ki jih potrebujete. Dobra stran za začetek iskanja je Multilingual Unicode TrueType Fonts in the Internet (glej tudi Unicode-HOWTO). Pisavo (datoteko s pripono .ttf) prenesite v imenik ˜/.yudit/fonts ali /usr/share/yudit/fonts ali pa tam naredite vsaj simbolično povezavo do nje. V datoteki yudit.properties dodajte vrstico (če je še ni): yudit.font.TrueType=<ime_pisave>.ttf. Lahko je naštetih tudi več pisav (ki morajo biti ločene z vejicami), v tem primeru poskrbite, da bo vaša najljubša pisava navedena na prvem mestu. Ob zagonu Yudita nastavite pisavo (tretji gumb z desne, zgornja vrstica) na TrueType. Ker Yudit uporablja lasten gonilnik za pisave TrueType, vam te podpore ni treba nastaviti v okolju XWindow. Če izbrana pisava ne podpira kakšnega znaka, se bo na njegovem mestu prikazal kvadratek s kodo znaka po Unicode. Pri shranjevanju besedila v datoteko to ne bo povzročalo težav, je pa lahko toliko bolj neprijetno ob tiskanju neposredno iz Yudita. Uporabniški vmesnik Yudita je preveden v več jezikov, po zaslugi Romana Maurerja tudi v slovenščino. Slovenščino nastavite, če v yudit.properties vpišete vrstico: yudit.default.language=sl. Poglavitna odlika Yudita je, da je mogoče vtipkati praktično katerikoli znak iz nabora Unicode, tudi če ga vaša tipkovnica ne podpira. V vhodnih datotekah (s pripono .kmap) je namreč mogoče določiti, naj se določena zaporedja vtipkanih znakov samodejno pretvorijo v določen znak, odvisno od imena trenutno izbranega »vhoda«. 12 najpogostejših »vhodov« (ločenih z vejicami) si lahko nastavite v yudit.properties v vrstici: yudit.editor.inputs=... lahko pa tudi kar interaktivno v samem Yuditu z gumbom Vhod (oz. Input), ki je drugi z desne v zgornji vrstici. Potem lahko izbrane »vhode« preklapljate enostavno s funkcijskimi tipkami F1..F12. Če ste tipkovnico nastavili za podporo našim črkam po standardu ISO 8859-2, je pametno, da je eden izmed izbranih »vhodov« kar iso-8859-2, ki vam omogoča neposredno vtipkavanje šumnikov. Nekaj uporabnikov, ki kot preslikavo za tipkovnico uporabljajo XKB, poroča, da tak vnos ne deluje, zato pa preverjeno deluje pri načinu .Xmodmap. Če kdo ve, kako rešiti ta problem, ga vljudno prosimo, naj nam to sporoči. Na voljo je nekaj že pripravljenih »vhodov«, ki podpirajo tudi slovenske šumnike. Njihove kombinacije za posamezen šumnik so prikazane v spodnji tabeli: »vhod« č š ž Č Š Ž Slovenian, Croatian, Czech c< s< z< C< S< Z< CS-dead, SK +c +s +z +C +S +Z Lithuanian 2 6 = @ ^ + Mnemonic &c< &s< &z< &C< &S< &Z< SGML &ccaron; &scaron; &zcaron; &Ccaron; &Scaron; &Zcaron; TeX \v{c} \v{s} \v{z} \v{C} \v{S} \v{Z} unicode u010d u0161 u017e u010c u0160 u017d Opomba 1: če uporabljate hrvaški (Croatian) »vhod«, ne pozabite, da so v hrvaščini (ne pa tudi v slovenščini) nj, lj in dž enakovredne črke, ki imajo tudi svoje mesto v naboru Unicode. Pazite na morebitne podobne jezikovne značilnosti tudi pri uporabi češkega (Czech, CS-dead), slovaškega (SK, CS-dead) ali litovskega (Lithuanian) »vhoda«. Opomba 2: do različice 2.4 v »vhodu« SGML ni bilo velikih šumnikov, dokler ni pisec teh vrstic avtorju Yudita poslal dopolnila. Opomba 3: nekateri izmed naštetih vhodov so bili prvič na voljo šele v različici 2.5, vendar so uporabni tudi v starejših. Oglejmo si še zgled, kako si lahko sami v vhodni datoteki določimo poljubna zaporedja tipk za želeni znak. Najprej moramo v datoteko s pripono .kmap vpisati seznam zaporedij. Oglejmo si, kako je to narejeno v datoteki Slovenian.kmap (avtorja Romana Maurerja): "C<=0x010C", // LATIN CAPITAL LETTER C WITH CARON "S<=0x0160", // LATIN CAPITAL LETTER S WITH CARON "Z<=0x017D", // LATIN CAPITAL LETTER Z WITH CARON "c<=0x010D", // LATIN SMALL LETTER C WITH CARON "s<=0x0161", // LATIN SMALL LETTER S WITH CARON "z<=0x017E", // LATIN SMALL LETTER Z WITH CARON Kakor vidimo, je definicija zaporedij preprosta. Začne se z narekovajem, sledi mu želeno zaporedje znakov, temu sledi enačaj (=), temu pa koda znaka (po Unicode), ki naj ga to zaporedje vrne. Koda znaka je lahko v desetiškem, osmiškem, največkrat pa je kar v šestnajstiškem številskem sistemu, kar označuje predpona 0x. Tako definirano zaporedje končamo z narekovajem, ki mu (tudi zadnjemu zaporedju!) sledi vejica. Kjerkoli v datoteki lahko pišemo tudi komentarje (vse med // in koncem vrstice). Če bomo svojo definicijsko datoteko posredovali tudi drugim, se spodobi, da vsak znak tudi opišemo. Tako nastalo datoteko moramo spremeniti v tako obliko, da jo bo Yudit razumel (to označuje pripona .my). Z Yuditom dobimo tudi programček mytool, ki nam to naredi. Če se zgornja datoteka imenuje Slovenian.kmap in bi jo radi »prevedli« v Slovenian.my, to storimo takole: mytool -type kmap -kmap Slovenian.kmap -rkmap Slovenian.kmap -write Slovenian.my Če se je pretvorba izvedla brez sporočil o napakah, moramo tako nastalo datoteko s pripono .my le še prenesti v /usr/share/yudit/data ali ˜/.yudit/data in znova pognati Yudit. Pri nalaganju datoteke v Yudit bodite pozorni na privzeto kodno razporeditev (če v yudit.properties pod yudit.default.encoding sami niste napisali ničesar, bo to UTF-8) in poleg določanja imena datoteke ne pozabite na to podrobnost. Prav tako pazite, če datoteko shranjujete v kaki drugi kodni razporeditvi kot različici Unicode. Če je v besedilu kak znak, ki ne pripada izbrani kodni razporeditvi, se bo na njegovem mestu brez poprejšnjega opozorila izpisalo \u+koda znaka (po Unicode v šestnajstiškem sistemu). Joe<footnote><para>Prispeval Danilo Godec, <email>danci@kibla.org</email></para></footnote> Skupne nastavitve za urejevalnik Joe so v datoteki /usr/lib/joe/joerc (morda jo imate shranjeno kje drugje). Izbira omogoči vnos in izpis osembitnih znakov. Sprožimo jo tako, da zbrišemo presledek pred njo. Crisp Crisp je urejevalnik v duhu urejevalnika Brief z burno zgodovino. Napisal ga je Paul Fox iz Anglije in ga distribuiral kot »program za pokušino« (shareware). Zadnja taka različica je 2.2e iz leta 1991 in je po nekaterih vesteh avtor ne podpira več. Novejše (trenutno 7.0) pa trži podjetje Vital, Inc. iz Teksasa v ZDA. Crisp je nekako bliže pecejevskemu duhu kakor Emacs in Vi; če se nobenemu od njiju ne morete privaditi, bo morda Crisp pravi za vas. Privzeta nastavitev urejevalnika Crisp 2.2e je, da znakov s kodami od 127 naprej ne prikaže, ampak izpiše njihovo šestnajstiško kodo, ki jo uvede z znakoma \x. Pomaga, če naložimo paket z izvirno kodo Crisp in v datoteki $(SRC)/crisp2.2e/src/crunch/tty/xterm.cr popravimo drugi argument funkcije set_term_features() iz NULL na "%c". Popravljeni makroukaz prevedemo: crunch xterm.cr Rezultat, popravljeni xterm.cm, postavimo med druge, navadno v imenik /usr/local/lib/crisp/macros/tty. Makro xterm velja, kot bi iz imena sami uganili, za Crisp, pognan v oknu Xterm znotraj X Window System. Enaka intervencija piscu teh vrstic ni uspela na linux.cr (konzola) in xcrisp.cr (različica Crisp za X11). Poleg tega se je v starejši različici Linuxa (1.0.8) crunch pritoževal nad predprocesorjem za C, /lib/cpp. Pomagala je logična povezava: ln -s /usr/lib/gcc-lib/i486-linux/2.5.8/cpp /lib/cpp Aleš Košir je napisal za Crisp makro slovene. Z njim lahko vnašamo naše znake tudi na tipkovnicah, ki nimajo primernih tipk: namesto č vtipkamo "c, makro pa pretvori zaporedje v ustrezen znak. Poleg ISO Latin 1 podpira še nekaj drugih kodiranj, ki so v rabi v naših krajih. Navodila za uporabo so na voljo tudi v spletu. Del distribucije Caldera OpenLinux je tudi »lahka« izvedba urejevalnika Crisp, CRiSP LiTE. Caldera ponuja tudi možnost poznejše ugodnejše nadgraditve na polno izvedbo. CRiSP LiTE ne pozna zgoraj opisanih težav z vnašanjem osembitnih znakov. Elektronska pošta Pine Pine najprej prebere skupne nastavitve iz /usr/local/lib/pine.conf (ali /etc/pine.conf, zatem pa še osebne nastavitve iz ˜/.pinerc. V enem ali drugem poiščemo niz character-set in postavimo to spremenljivko na ISO-8859-2: ... # character-set should reflect the capabilities of the display # you have. Normal default is US-ASCII. Typical alternatives # include ISO-8859-x, where x is a number between 1 and 9. character-set=ISO-8859-2 ... Xfmail 1.3<footnote><para>Prispeval Jernej Kovačič, <email>jkovacic@email.si</email></para></footnote> V odjemalcu za elektronsko pošto XFMail je privzeto vgrajeno 16 sistemskih pisav knjižnice XForms, ki žal nimajo šumnikov. Je pa zato kljub vsemu mogoče izbrati tudi druge »zunanje« pisave okolja XWindow. Če tega niste storili že prej, je zdaj skrajni čas, da v strežniku X nastavite nekaj pisav z znaki iz nabora ISO8859-2 {morda še povezava do ustreznega razdelka}. Z ukazom xlsfonts -fn "*-iso8859-2" izpišite seznam vseh nameščenih pisav s podporo znakom iz ISO8859-2 in izberite nekaj pisav, ki so vam najbolj všeč. Prikaz naših črk boste potrebovali pri seznamih sporočil v osnovnem oknu, pri branju in sestavljanju sporočil, pri prikazu naslovnika ali pošiljatelja in pri naslovu samega sporočila in pa vsaj še na seznamu naslovov. Čeprav to nikakor ni nujno, vam priporočam, da si izberete pisave stalne širine. Z menuja osnovnega okna izberite Misc Appearance . V novo odprtem oknu pritisnite na gumb Add, vtipkajte polno ime (natanko tako, kakor vam ga izpiše programček xlsfonts) vsake izbrane pisave posebej in vnos končajte s pritiskom na gumb OK. Postopek ponavljajte za vse izbrane pisave, pri tem pa nikar ne pretiravajte, ker je zaradi omejitev v knjižnici XForms lahko vseh pisav skupaj (s sistemskimi 16 vred) največ 64. Ko ste tako vnesli vse izbrane pisave, morate še posameznim gradnikom XFMailovega uporabniškega vmesnika dopovedati, naj jih uporabljajo. V istem oknu (torej Fonts & Colors) morate obvezno izbrati najprej gradnik na skrajni desni strani. Nato v preostalih dveh izbirnikih izberite samo pisavo in velikost znakov. Pisave s podporo naboru ISO8859-2 določite predvsem naslednjim gradnikom: Message browser (prikaz vseh sporočil v izbrani mapi), Address book (izpis imen na vašem seznamu el. naslovov) in pa iso-8859-2 (Latin-2) (uporablja se pri branju in sestavljanju sporočil, pri pravilni nastavitvi v glavi sporočila za prikaz pošiljateljevega imena in naslova sporočila, pri seznamu naslovnikov itd.). Pisave lahko določite tudi preostalim gradnikom, vendar tam podpora šumnikom ni potrebna. Ko boste prvič zapustili XFMail, ne pozabite z »Yes« odgovoriti na vprašanje, ali naj se nastavitve shranijo. Ob sestavljanju novega sporočila (gumb Compose new) lahko nabor znakov določite vsakič posebej (z menuja okna za novo sporočilo izberete najprej Encoding 8 bit , nato pa še Language iso-8859-2 (Latin-2)) , lahko pa to tudi določite kot privzeto. To storite, če z menuja osnovnega okna izberete Misc Config Display , nato pa v novo odprtem oknu še Charsets. V spodnjem desnem kotu, kjer je izbirnik Default character set, izberite iso-8859-2 (Latin-2), nad tem izbirnikom pa pod Default encoding označite še 8-bit(none) in pa Encode header. Če želite uporabiti šumnike tudi pri odgovoru na sporočilo, se najprej prepričajte, ali so nastavitve pravilne (z menuja okna za sestavljanje sporočila najprej po potrebi nastavite Encoding 8 bit , nato pa še Language iso-8859-2 ). Pri odgovarjanju se namreč privzeto nastavita kodiranje in nabor znakov izvirnega sporočila (ali 7-bitno kodiranje, če ni navedeno nič) in naslovnik lahko prejme drugačne znake, kot jih vidite vi v urejevalniku sporočila. Kaj lahko se vam zgodi, da ostane kodiranje sedembitno in se biti z največjo utežjo (MSB) ob pošiljanju samodejno nastavijo na 0, tako da namesto šumnika naslovnik prejme znak s spodnje polovice tabele ASCII. Netscape Mail V Netscape Mail 4.06 in novejšem, npr. 4.78, je mogoče pisati naše znake v telesu sporočila, ne pa tudi v glavi. Ko imamo enkrat nameščene naše pisave in urejeno preslikavo tipkovnice (razdelka &s-pisave-x11; in &s-tipk-x11;), le še z menuja View poštnega programa izberemo Encoding, tam pa Central European (ISO-8859-2). Vesel bom opisa izkušenj z drugimi izdajami programa Netscape Mail. Elm Opozorilo: pisec že dolgo ne uporablja več tega programa in zapisanega ni preveril. Danski in nemški HOWTO trdita, da je bodisi dovolj v ukazni lupini postaviti spremenljivko LANG na vrednost iso_8859_1 bodisi v konfiguracijski datoteki ˜/.elm/elmrc nastaviti vrednosti naslednjih spremenljivk: ... charset=iso-8859-1 displaycharset=iso-8859-1 textencoding=8bit ... Vse ISO 8859-1 bi bilo pri nas verjetno treba nadomestiti z ISO 8859-2. Še enkrat prosim koga, ki ta program zares uporablja, naj opiše svoje izkušnje. Svetovni splet Lynx Lynx pozna od izdaje 2.5 naprej tudi kodno stran ISO 8859-2. Nastavimo jo lahko na enega od treh načinov. Prvi je, da izberemo O)ptions, zatem C)harset in s pritiskanjem na smerne tipke izberemo želeni nabor znakov. Drugi je, da v datoteki ˜/.lynxrc (osebna nastavitev) nastavimo character_set=ISO Latin 2 Kot zadnje pa nam je na voljo, da v datoteki /usr/lib/lynx.cfg (skupna nastavitev) CHARACTER_SET:ISO Latin 2 Netscape Navigator<footnote><para> Metod Koželj, <literal>Message-id: <Pine.HPP.3.96.981216083349.17728E-100000@hmljhp.rzs-hm.si></literal> </para> </footnote> Netscape Navigator pa tudi brskalnik iz Netscape Communicatorja uporabljata nabor znakov X Windows System. Za prikaz naših znakov je torej treba najprej namestiti pisave za X11 (poglavje &s-pisave-x11;). Ko Navigator zaženemo, sam ugotovi, da so na voljo tudi pisave za »Central European (ISO-8859-2)«. Če pregledujemo stran, ki brskalniku pravilno sporoči uporabljeni nabor znakov, Navigator samodejno uporabi pisavo s pravim kodnim naborom. Seveda lahko spremenimo osnovno velikost črk ali pa obliko za proporcionalno pisavo. To storimo tako, da v Edit Preferences Appearance Fonts določimo, da spreminjamo nastavitve za srednjeevropske pisave: For the Encoding Central European (iso-8859-2) , potem pa izberemo, s katero pisavo naj Navigator prikazuje besedila. Navigator nam sam ponudi le pisave s pravim naborom znakov. Če pregledujemo strani s pravilno razporeditvijo črk (razporeditev ISO 8859-2 in ne Windows-1250), pa Navigator ne uporabi pisave s pravo razporeditvijo črk, lahko razporeditev preklopimo ročno z izborom: View Encoding Central European (ISO-8859-2) Ob izboru pisave s pravilno razporeditvijo črk in ob pravilni razporeditvi tipk na tipkovnici lahko uporabljamo naše črke tudi pri pisanju v modulu »Page Composer«. Netscape Communicator 4.06 in novejši znajo v Unixih z nameščenimi pisavami ISO 8859-2 prikazati tudi strani, napisane v kodni strani Microsoft CP1250, označene kot windows-1250 v glavi. V brskalniku Netscape Navigator lahko nastavimo tudi prednostni seznam jezikov, v katerih želimo prebirati spletne strani. To storimo tako, da z menuja Edit Preferences Navigator Languages izberemo slovenščino (sl) in jo dvignemo na vrh prednostnega seznama. Ker je večina spletnih strani pisana v angleščini, naj bo nekje na seznamu tudi angleščina (en). Strežniki, ki uporabljajo mehanizem za izbiro jezika, vgrajen v http (zgled je, denimo, iskalnik Google), se bodo tako z brskalnikom samodejno sporazumeli o tem, v katerem jeziku vam bodo ponudili spletne strani. Amaya<footnote><para>Prispeval Andraž Hvalica, <literal>Message-id: <374E958D.ADD55B49@amis.net></literal> in <literal>Message-id: <3788BBF0.1041C481@amis.net></literal>.</para></footnote> Torej takole je s to Amayo: šumniki (in druge reči - preizkusil sem tudi nemške preglase) čisto lepo delujejo. V čem je štos? Verjetno gre za hrošča, morda ga tudi ni več, imam Amayo 1.4a, čisto mogoče, da je izšlo že kaj novejšega... Narediti je treba le to, da pri datoteki, ki jo začneš pisati, nastaviš Attributes lang ISO_Latin_2 vendar mora biti v datoteki že en znak, ki ga je treba še prej označiti. Potem so šumniki vidni v Amayi. A tu je še nekaj takega kot kavelj 22 - v Navigatorju je treba imeti nastavljeno View Encoding Central European (ISO-8859-2) To imamo Slovenci tako ali tako vsi, ampak vseeno ni čisto v redu. Amaya bi morala v datoteko html zapisati character=iso-8859-2, vendar tega ne naredi. Napiše pa <body lang="x-Latin-2">, kar, vsaj jaz, prvič vidim. … Iz interneta sem potegnil novo Amayo 2.1 in si ogledal, kako je s podporo Latin-2. Približno tako trapasto je kot pri eni od starejših različic, ki sem jo že imel. Še zmerom velja, da je treba napisati katerikoli znak, preden se program sploh odzove na naše nastavitve za jezik. Ko vpišemo ta famozni znak, izberemo »Attributes / lang...«, izberemo Czech. S tem dosežemo, da program vtipkane znake upošteva kot iso-8852-2, vendar v glavo dokumenta HTML tega ne zapiše. Napiše pa: <body lang="cs"> Kar je nesmisel. Vsaj z Navigatorjem nima učinka. Če nimamo sami nastavljenega kodnega zapisa iso 8859-2, šumnikov ne bomo videli. Zato moramo sami v glavo HTML dopisati charset=iso-8859-2; tako so šumniki vidni zmeraj. Spletni strežniki Opomba: ta razdelek je prevod navodil »Configuring WWW Server for ISO 8859-2«, ta pa se bolj ali manj opirajo na besedilo Marka Martinca »Rešitev problema slovenskih šumnikov v HTML dokumentih«. Načela Določilo HTTP zahteva, da prenosni protokol HTTP prenaša tok podatkov brez omejitve na nabor ASCII ali izpisljive znake. To zajema osembitne znake, šestnajstbitne znake kot npr. ISO10646 ali jezike z Daljnega vzhoda, slike, animacije, zvok ipd. Vsebino spisa določa glava MIME (vrstica Content-Type. To je edina informacija o zvrsti informacije, ki jo ima na voljo brskalnik, zato mora odražati pravo vsebino spisa. Privzeta kodna razporeditev (terminologija MIME/HTTP uporablja izraz »nabor znakov«) za spise HTML je ISO 10646 ali njegova osembitna podmnožica ISO 8859-1. Vsak spletni brskalnik mora biti zmožen prikazati spis HTML, ki uporablja kodno razporeditev ISO 8859-1. Glava MIME za spise HTML, kodirane po ISO 8859-1, je: Content-Type: text/html Določilo HTTP dovoljuje, da z dodatnim določilom charset v vrstici Content-Type glave MIME izberemo drugo kodno razporeditev. Načeloma je dovoljena katerakoli kodna razporeditev, registrirana pri IANA Character Set Registry. Iz praktičnih razlogov pa se je priporočljivo omejiti na naslednje entitete HTTP: charset = "US-ASCII" | "ISO-8859-1" | "ISO-8859-2" | "ISO-8859-3" | "ISO-8859-4" | "ISO-8859-5" | "ISO-8859-6" | "ISO-8859-7" | "ISO-8859-8" | "ISO-8859-9" | "ISO-2022-JP" | "ISO-2022-JP-2" | "ISO-2022-KR" | "UNICODE-1-1" | "UNICODE-1-1-UTF-7" | "UNICODE-1-1-UTF-8" | token Entiteta, ki je definirana pri IANA Character Set Registry, mora predstavljati nabor znakov, kot je bil prijavljen pri IANA. Prazna entiteta implicira nabor ISO 8859-1 (skupaj z US-ASCII, ki je njegova podmnožica). Spisi HTML, kodirani v skladu s kodno razporeditvijo ISO 8859-2, morajo potemtakem imeti v glavi vrstico MIME Content-Type: text/html; charset=ISO-8859-2 Pri tem presledek med podpičjem in charset=ISO-8859-2 ni obvezen. Numerične entitete oblike &#nnn; določajo pismenko s kodo nnn v referenčni razporeditvi znakov (ISO 8859-1 ali. ISO 10646), ne pa v trenutno izbrani. Tako torej sploh ne moremo uporabljati naših znakov, kodiranih skladno s kodno razporeditvijo ISO 8859-2, lahko pa uporabimo 16-bitne kode ISO 10646. Črko č (mali C s strešico) lahko torej zapišemo kot &#269;. In samo tako. Praktični oziri Kdaj je priporočljiva uporabiti kodno razporeditev ISO 8859-2 in kdaj ne? Znotraj intraneta (notranjega informacijskega sistema) v okolju, v katerem se uporablja ISO 8859-2, je morda smiselno to razporeditev uporabiti za vse spise. Če pa je informacija namenjena širšemu občinstvu, je treba vedeti, da je uporabniki zunaj Srednje ali Vzhodne Evrope, kjer se ta kodna razporeditev uporablja, morda ne bodo mogli prikazati. Veljavno določilo prenosnega protokola HTTP namreč od spletnih brskalnikov ne zahteva, naj prikažejo spise HTML, ki uporabljajo kodno razporeditev ISO 8859-2. Če brskalnik ne zmore prikazati strani v zahtevani kodni razporeditvi, lahko ta problem ignorira in stran (nepravilno) prikaže v kakšni drugi kodni razporeditvi (navadno ISO 8859-1) ali pa ponudi, da spis shranimo na disk. Zato je priporočljivo, da vstopne točke v naš informacijski sistem ne uporabljajo kodnih razporeditev, različnih od ISO 8859-1. Podrobnosti izvedbe Obdelali bomo tri metode, s katerimi lahko spletni strežnik prilagodimo, da pravilno postreže uporabniku s spisom, kodiranem po ISO 8859-2: določitev nove pripone za statične spise, kodirane po ISO-8859-2, in vezava le-te na na primerno vrsto spisa v glavi MIME dinamično prekodiranje spisov uporaba posebnosti strežnika ali brskalnika Določitev nove pripone za statične spise Ob zahtevku za spis večina spletnih strežnikov izve zvrst statičnih spisov iz pripone datoteke ter na podlagi tega izdela glavo MIME, s katero opremi spis, preden ga izroči prejemniku. Več različnih pripon lahko ustreza isti zvrsti spisa (priponi .jpeg in .jpg na primer obe določata zvrst image/jpeg), nasprotno pa ne - ena pripona lahko določa kvečjemu eno zvrst spisa. Nobene splošne metode ni, ki bi dovoljevala uporabo pripone .html za spletne spise, kodirane bodisi v skladu s kodno razporeditvijo ISO 8859-1 bodisi ISO 8859-2, in pričakovala od spletnega strežnika, da se bo nekako odločil, s kakšno glavo MIME bo opremil ene in druge. Ena možnost je vsekakor, da pripono .html trajno vežemo na zvrst spisov HTML, kodirano skladno s kodno razporeditvijo ISO 8859-2. Ta rešitev ima seveda očitno pomanjkljivost za občinstvo, ki ne more prikazati tega nabora znakov. Tu predlagana rešitev izkorišča zmožnost spletnih strežnikov, da določijo novo pripono datoteke in jo vežejo na zvrst spisa text/html; charset=ISO-8859-2 v glavi MIME. To možnost podpira večina spletnih strežnikov. Strežnika W3C in NCSA httpd (ter vse njune izpeljanke, npr. Apache) uporabljata ukaz AddType v nastavitveni datoteki za vezavo dodatnih zvrsti spisov na nove pripone datotek. Z enostavno in domiselno shemo (glej Rešitev problema slovenskih šumnikov v HTML dokumentih) lahko zagotovimo pravilne glave MIME za zvrsti spisov, ki uporabljajo kodne razporeditve, različne od ISO 8859-1. Če na primer določimo pripono .html-l2 za spise, kodirane skladno s kodno razporeditvijo ISO 8859-2, moramo v nastavitveni datoteki dodati vrstico: Strežnik W3C httpd (CERN httpd): v datoteki httpd.conf dodamo: AddType .html-l2 text/html;charset=ISO-8859-2 8bit 1.0 Strežnik NCSA httpd: v datoteki srm.conf dodamo: AddType text/html;charset=ISO-8859-2 .html-l2 Strežnik Apache se od NCSA httpd razlikuje samo po manjkajoči piki: v datoteki srm.conf dodamo: AddType text/html;charset=ISO-8859-2 html-l2 Dinamično prekodiranje V vsakem spletnem strežniku, ki podpira vmesnik Common Gateway Interface (CGI), lahko izvedemo dinamično prekodiranje spletnih spisov. Poleg dobrih strani (iz enega samega izvora lahko ponudimo spletni spis v številnih različnih kodnih razporeditvah) ima ta metoda tudi slabosti: pretvarjanje spisa po eni strani porablja procesorski čas strežnika, po drugi strani pa dinamičnih spisov posredniki (angl. proxy) navadno ne shranjujejo v medpomnilniku, zato z njimi dodatno obremenjujemo komunikacijske vode. Zgleda skriptov, ki izvajata dinamično prekodiranje: slovene - paket za dinamično pretvarjanje spletnih spisov iz kodne razporeditve JUS I.B1.002 v CP852, CP1250, ISO 8859-2 ter US-ASCII (s prečrkovanjem iz ČŠŽ v CSZ). Avtor Tadej Vodopivec, Ljubljana, Slovenija. pl-conv - skript v perlu za dinamično pretvarjanje kodiranja spletnih spisov ISO 8859-2, CP852, CP1250, Mazowia, Apple RomanCE in US-ASCII (s prečrkovanjem). Avtor Jarosław Strzałkowski, Kraków, Poljska. Sledijo tri rešitve, ki uporabljajo posebnosti in nestandardne razširitve programske opreme. Prvi dve se nanašata na spletni strežnik, zadnja na priljubljeni spletni brskalnik Netscape Navigator. Istega problema se je lotil Gavin Nicol s predlogom »MIME Header Supplemented File Type«. Metainformacija za spletni strežnik W3C Spletni strežnik W3C (nekoč znan kot CERN WWW) omogoča dodajanje metainformacije v glave MIME odhodnih spisov. Po privzeti nastavitvi išče strežnik metainformacije v datotekah s pripono .meta podimenik .web imenika s spisi. Če na primer spletne spise hranimo v imeniku /WWW/Hypertext in želimo opremiti spis isolatin2.html v njem s pravilno glavo MIME, napravimo to takole: Če ga še ni, najprej ustvarimo podimenik .web: $ mkdir /WWW/Hypertext/.web Zatem v tem podimeniku ustvarimo datoteko z metainformacijami. Za datoteko isolatin2.html se bo ta imenovala isolatin2.html.meta. Datoteka mora imeti glavo MIME v obliki, kot jo predpisuje format RFC822. V našem primeru je to ena sama vrstica: Content-Type: text/html; charset=ISO-8859-2 Datoteke ASIS za strežnik Apache Strežnik Apache določa posebno vrsto datoteke, imenovano ASIS. Strežnik pošlje datoteko ASIS odjemniku natančno tako, kot je (angl. »as is«), ne da bi jo opremil z glavo, ki jo sicer zahteva protokol HTTP. V sami datoteki morajo zato biti vsa potrebna polja, ki jih zahteva protokol HTTP, tem sledi prazna vrstica in vsebina spisa HTML. V nastavitveni datoteki za strežnik določimo, da pripona .asis pripada zvrsti spisa httpd/send-as-is: AddType httpd/send-as-is asis Zgled datoteke ASIS: Status: 200 OK Content-Type: text/html; charset=ISO-8859-2 <HTML> <HEAD> <TITLE>Hello world</TITLE> </HEAD> <BODY> <H1>Živjo, svet!</H1> </BODY> </HTML> Kakor vidite, morate v datoteko vstaviti tudi trimestno odzivno kodo strežnika. Strežnik vedno doda polji Date: in Server:, zato ju ne smemo vstaviti v datoteko. Značka <META> z označbo HTTP-EQUIV V določilu HTTP 2.0 predlagana značka <META> z označbo HTTP-EQUIV je bila predlagana kot neobvezna metoda, po kateri lahko strežnik potegne dodatno metainformacijo iz zaglavja (<HEAD>) spletnega spisa in jo uporabi pri tvorjenju glave MIME. Piscu teh vrstic ni znano, da bi kak strežnik to tudi v resnici počel. Tako razčlenjevanje spletnih spisov je verjetno prevelika obremenitev za procesor in bi se zelo poznalo pri odzivnosti spletnega strežnika. Pač pa so namesto tega začeli to informacijo uporabljati spletni brskalniki (Netscape Navigator, na primer, to počenja od izdaje 2.0 naprej). Zgled spisa z metainformacijo o uporabljeni kodni razporeditvi v zaglavju spisa: <HTML> <HEAD> <TITLE>Naslov<TITLE> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-2"> </HEAD> <BODY> Besedilo... </BODY> </HTML> Delo na oddaljenem računalniku Z ukazoma telnet ali rlogin lahko prek omrežja TCP/IP delamo na drugem računalniku. Težave z osembitnimi znaki pri tem so redko posledica napačne nastavitve v malo prej omenjenih programov, saj privzeti nastavitvi pri obeh podpirata osembitne znake. Če naletimo na težave, se poleg teh programov splača pogledati še nastavitev ukazne lupine (poglavje &s-shell;) nastavitev terminala (fizičnega ali navideznega). Eksplicitno ga lahko nastavimo z ukazom stty -parenb -istrip cs8 in na koncu res nastavitev programov telnet ali rlogin Telnet Telnet eksplicitno pripravimo do vzpostavitve osembitne zveze z ukazom toggle binary: ~> telnet telnet> toggle binary Negotiating binary mode with remote host. telnet> open nekje.dalec.si Telnet omogoča tudi, da si nastavitve za izbrane računalnike vnesemo v nastavitveno datoteko, ˜/.telnetrc. Vnosi imajo obliko: ... biofiz.mf.uni-lj.si set binary true ... rlogin Privzeti način zveze pri programu »rlogin« je osembiten, eksplicitno pa lahko to določimo z določilom »-8«: rlogin računalnik -8 TeX in LaTeX Poslovenjenje paketa LaTeX obsega 7- in 8-bitni način vnosa naših znakov način izpisa naših znakov poslovenjenje izpisov »Contents«, »Figure« ipd. slovenska pravila deljenja besed prilagoditev programa LyX: vizualnega okolja za vnos besedil v LaTeX in Linuxdoc DTD Urejanje stvarnega kazala po slovenski abecedi zaenkrat še ne poteka samodejno. Pokažimo, kako lahko težavo z nekaj truda obidemo. Podporo neangleškim jezikom v LaTeXu je poenotil paket babel Johannesa Braamsa z Nizozemske, ki je standardni del vseh sodobnih distribucij paketa TeX v Linuxu, denimo teTeX. Z uporabo izbire »slovene« v paketu babel se samodejno izberejo slovenska imena pod- in nadnapisov, naslovov ipd., slovenska pravila za zlogovanje besed (če imamo nameščene slovenske zlogovalne vzorce; poglavje &s-zlogovanje;), in 7-bitni način vnosa znakov "c"s"z: \usepackageslovenebabel V novi različici LaTeXa (LaTeX2e) lahko s paketoma fontenc in inputenc izberemo tudi 8-bitno kodno tabelo T1 (znano tudi kot DC ali Cork) in 8-bitni vnos znakov. Zgled celotnega spisa v LaTeXu: \documentclass[a4paper]{article} \usepackage[slovene]{babel} \usepackage[T1]{fontenc} \usepackage[latin2]{inputenc} \begin{document} Čeprav se pouk na železničarski šoli v Šentvidu navadno konča šele ob štirih, odpešačijo učenci iz občin Želimlje in Žetale domov že četrt čez tri. \end{document} LaTeX 2.09 V starejši različici paketa LaTeX, LaTeX 2.09, ne moremo uporabiti mehanizma inputenc. Pomagamo si s slogom latin2.sty Andreja Brodnika. Zgled rabe: \documentstyle[latin2]{article} \begin{document} ... \end{document} Slog latin2 je na voljo v vseh strežnikih CTAN, npr. ftp.dante.de. Slovenska pravila za deljenje besed Datoteko s slovenskimi pravili za zlogovanje besed je v okviru svoje diplomske naloge leta 1990 izdelal Matjaž Vrečko in jo predal v last slovenskemu društvu uporabnikov sistema TeX (TeXCeH). Na voljo je za individualno rabo brez namena pridobivanja premoženjske koristi. Od leta 1995 naprej zanjo skrbi dr. Leon Žlajpah z IJS, ki jo je posredoval tudi skrbniku sistema babel za tujejezično podporo v sistemu TeX, Johannesu Braamsu. Sistem babel praviloma dobimo skupaj z distribucijo sistema TeX. Trenutno zadnja izdaja je 2.3, datirana 15. 4. 1997. V distribuciji teTeX, ki je najbolj priljubljena distribucija v Unixu, vklopimo podporo slovenskim delilnim vzorcem tako, da kot upravitelj poženemo program texconfig. Z menuja izberemo možnost HYPHEN - hyphenation table (tex/latex). Program texconfig pri tej izbiri požene urejevalnik vi> in vanj naloži datoteko language.dat. Za tiste, ki ga ne poznate, najnujnejše o uporabi le-tega: levo, desno, gor in dol po besedilu se premikate s tipkami h, l (mali L), j in k. Znak zbrišete tako, da kazalec pripeljete nanj in pritisnete tipko x. Datoteko shranite in končajte delo s pritiskom na tipko Esc in vpisom :wq (dvopičje, mali W, mali Q), ki mu sledi Enter. Oboroženi s tem znanjem v datoteki language.dat zbrišemo komentar (znak za odstotek) pred zapisom slovene sihyph23.tex, shranimo in zapustimo urejevalnik. Program texconfig bo samodejno ustvaril nove formatne datoteke z vgrajenimi delilnimi vzorci. Pisec teh vrstic je imel še nepojasnjene težave z datoteko sihyph22.tex. Enako čudežno, kot so nastale, so tudi izginile, ko mu je dr. Žlajpah poslal novo izdajo slovenskih delilnih vzorcev. Datoteka sicer kroži že kakih pet let, vendar še vedno ni del paketa teTeX. Dobimo jo v strežniku sizif.mf.uni-lj.si in postavimo ob bok stari datoteki, navadno v imenik /usr/TeX/texmf/tex/generic/hyphen/. V slednjem primeru poženemo texconfig, tam najprej osvežimo seznam datotek (izbira REHASH - rebuild ls-R database), zatem pa ponovimo postopek iz prejšnjega odstavka, s tem da ime sihyph22.tex popravimo v sihyph23.tex. Dodatne informacije o slovenski skupini uporabnikov TeX najdete na straneh TeXCeha. LyX<footnote><para>Prispeval Roman Maurer, <email>roman.maurer@hermes.si</email>.</para></footnote> Če uporabljamo LyX s standardno slovensko tipkovnico (102/105 tipk), ga lahko enostavno prilagodimo delu s slovenščino: Tipkovnica v strežniku Xwindow mora biti nastavljena tako, da z njo v splošnem lahko vnašamo naše znake (to je opisano v razdelku &s-tipk-x11; poglavja »Tipkovnica«). Poženemo LyX in nastavimo: Options / Screen Fonts / Font Norm = iso8859-2 Žal je videti, da LyX tega podatka nikamor ne shrani. Zato moramo ročno dodati v datoteko lyxrc (sistemska je navadno v imeniku /usr/share/lyx/, uporabniška pa v ˜/.lyx/) naslednjo vrstico: \font_norm iso8859-2 Odpremo (neki) dokument in izberemo: Layout / Document / Language = slovene Layout / Document / Encoding = latin2 Layout / Paper / Papersize = A4 Layout / Quotes = »text« & Double Če želimo te nastavitve uporabljati v vseh naših dokumentih (in to seveda želimo), uporabimo še izbiro Layout / Save layout as default Kadar uporabimo razred "letter" namesto "article", odgovorimo pritrdilno na vprašanje: "Should I set some parameters to letter the defaults of this document class?" Zaradi napake v LyXu do vštevši 1.0.0pre2 ni mogoč vnos 8-bitnih znakov v matematičnem tekstovnem načinu (math text mode). Pomagamo si tako, da postavimo kar celo formulo kot TeXovo kodo ("tex-mode" - s tem sicer izgubimo WYSIWYG). Razvijalci LyX so o napaki obveščeni in jo bodo verjetno popravili v naslednjih izdajah. Sedembitni vnos šumnikov kot "c"s"z je otežen, ker LyX samodejno pretvori dvojni narekovaj v dva enojna. Prva misel je, da si lahko spet pomagamo z izbiro "tex-mode", udobnejša možnost pa je, da znova določimo dvojni narekovaj. V datoteko emacs.bind (ali pa cua.bind, kar že uporabljamo) dodamo vrstico: \bind "S-quotedbl" "accent-caron" Naše znake bomo zdaj dobili s pritiskom na "c"s"z. S tem žal izgubimo samodejno pretvarjanje dvojnega narekovaja v dva enojna, a vsega pač ne moremo imeti… Datoteka emacs.bind je v imeniku ˜/.lyx/bind/. Če je še ni, lahko napravimo kopijo sistemske iz imenika /usr/share/lyx/bind/ in jo popravimo. Če imamo staro slovensko tipkovnico (ameriška s čšž namesto ˜{`), lahko uporabimo premapiranje tipkovnice v Latin 2 Alena Šalamuna alen.salamun@medinet.si: Options / Keyboard / Primary = slovene Ustrezna datoteka slovene.kmap je praviloma v imeniku /usr/share/lyx/kbd/. Takole pa lahko uporabimo črkovalnik Ispell (več o njem v razdelku &s-ispell;) za črkovanje slovenskih spisov: Edit Spellchecker Spellchecker Options Use alternate language: slovensko ter Edit Spellchecker Spellchecker Options Extra special chars allowed in words: čšžČŠŽ V slovenski izdaji urejevalnika LyX pa: Uredi Črkovalnik Izbire črkovalnika Uporabi drug jezik: slovensko ter Uredi Črkovalnik Izbire črkovalnika Dodatni posebni znaki, dovoljeni v besedah: čšžČŠŽ Pregled besedila na zaslonu V Evropi je standardni format papirja A4, kar moramo dopovedati tudi programom za pregled besedila na zaslonu: XDvi: V datoteko ˜/.Xresources (osebna nastavitev) dodamo vrstico XDvi.paper: a4 Ghostview: V datoteko ˜/.Xresources (osebna nastavitev) ali pa v datoteko /usr/lib/X11/app-defaults/Ghostview (skupna nastavitev) dodamo vrstice: ! Ghostview naj uporablja format A4 *pageMedia: A4 ! Tudi Ghostscript naj uporablja format A4 *Ghostview.interpreter: gs *Ghostview.arguments: -sPAPERSIZE=a4 Ker tiskamo prek Ghostscripta tudi iz drugih programov, ne le iz Ghostview, je pametno, če mu v nastavitveni datoteki (navadno /usr/share/ghostscript/izdaja/gs_init.ps ali /usr/local/share/ghostscript/izdaja/gs_init.ps) globalno izberemo velikost strani A4. Poiščemo spodnjo vrstico in jo odkomentiramo (zbrišemo začetni znak za odstotek): % (a4) /PAPERSIZE where { pop pop } { /PAPERSIZE exch def } ifelse Stvarna kazala Najpogostejše orodje za izdelavo stvarnih kazal v sistemu TeX je Makeindex. Ta je le omejeno lokaliziran (poleg angleških pozna še nemška pravila za razvrščanje) in naše abecede ne pozna. Stvarno kazalo v LaTeX izdelamo z ukazom \makeindex v preambuli; vsako besedo, ki jo želimo vnesti v kazalo, pa moramo posebej označiti z ukazom \index{vnos}. Ker navadno želimo stvarno kazalo tudi izpisati, dodamo še ukaz \printindex, ta pa je definiran v makropaketu makeidx. Zgled, datoteki recimo zelez-sola.tex, naj ponazori povedano: \documentclass[a4paper]{article} \usepackage[slovene]{babel} \usepackage[T1]{fontenc} \usepackage[latin2]{inputenc} \usepackage{makeidx} \makeindex \begin{document} Čeprav se pouk na železničarski šoli\index{s~ola@šola!z~eleznic~arska@železničarska} v Šentvidu\index{S~entvid@Šentvid} običajno konča šele ob štirih, odpešačijo učenci iz občin Želimlje\index{Z~elimlje@Želimlje} in Žetale\index{Z~etale@Žetale} domov že četrt čez tri. \printindex \end{document} Zvijača je v tem, da makeindex dopušča skladnjo \index{vnos1@vnos2}, pri čemer je vnos1 tisti, po katerem se kazalo ureja, vnos2 pa besedilo, ki se v resnici izpiše. Našo črko Č zato pišemo kot (znak ˜ je v kodni razporeditvi ASCII za vsemi črkami) in tako bo zanesljivo uvrščena za vsemi C. Besedilo prevajamo v treh korakih: latex zelez-sola makeindex zelez-sola latex zelez-sola Prvi latex iz datoteke zelez-sola.tex izdela datoteko zelez-sola.idx, ukaz makeindex to uredi in iz nje izdela datoteko zelez-sola.ind, to pa vsrka drugi ukaz latex. groff Groff ponuja precej omejeno podporo našim znakom. Pri izpisu na zaslon (način nroff) lahko goljufamo tako, da zapišemo datoteko z osembitnimi znaki ISO Latin 2, programu pa lažemo (izbira ), da so kodirani po razporeditvi ISO Latin 1. Henryk Paluch je napisal paket groff-latin2, s katerim lahko naše znake vnašamo kot makroukaze, na primer: \('a a z ostrivcem \(vc c s strešico \vou u s krožcem Izpis v postscriptni obliki med pisanjem tega spisa še vedno ne deluje, čeprav bi se mehanizme iz paketa ogonkify Juliusza Chroboczka podobno kakor v programu a2ps verjetno dalo uporabiti tudi tu. Še največja težava je verjetno ta, da je paket groff osirotel, saj ga prvotni avtor, James Clark, ne vzdržuje več. Za paket groff-latin2 zdaj skrbi Jan Kasprzak kas@fi.muni.cz, najdete ga na ftp.fi.muni.cz Črkovanje: ispell Večino sodobnih distribucij Linuxa že dobimo s črkovalnikom Ispell;, manjka pa mu slovenski besedni zaklad. Tega najdete v katerikoli od navedenih datotek: ispell-sl-0.5-3.src.rpm ispell-sl-0.5-3.i386.rpm Če je v istem imeniku na voljo novejša izdaja, seveda vzamemo to. Prva arhivska datoteka je prevedena v sistemu Red Hat Linux 7.1 in jo lahko v enakih sistemih namestimo enostavno z ukazom rpm -i ispell-sl-0.5-3.i386.rpm Kopije datoteke, izvirne in prevedene za različne sisteme, najdemo tudi na ustreznih mestih za anonimni FTP: V vseh drugih sistemih moramo prevedeno datoteko zgraditi sami. Kot sistemski oskrbnik poženemo rpm --rebuild ispell-sl-0.5-3.src.rpm Redhat Package Manager bo v nekaj minutah pripravil datoteko ispell-sl-0.5-3.i386.rpm in jo pustil v imeniku /usr/src/redhat/RPMS/i386/, /usr/src/OpenLinux/RPMS/i386/ ali takem, ki ustreza distribuciji, ki jo uporabljate. To datoteko lahko zatem namestimo z ukazom rpm -i /usr/src/redhat/RPMS/i386/ispell-sl-0.5-3.i386.rpm Ispell uporabljamo tako, da mu v ukazni vrstici podamo jezik, v katerem je napisano besedilo, na primer english, deutsch, francais ali slovensko: ispell -d slovensko besedilo.txt Natančnejša navodila za ravnanje s programom Ispell boste našli v priročniku, več o prilagoditvi paketa ispell slovenščini pa si lahko preberete na strani Slovenščina in računalniki Aleša Koširja. Ispell s slovenskim besednim zakladom poganja tudi spletni črkovalnik Trubar istega avtorja. Osnovni slovenski leksikon izvira iz zbirke, ki jo je podjetje Amebis, d.o.o., prispevalo za mednarodni projekt MULTEXT-East; s posredovanjem dr. Tomaža Erjavca z odseka za inteligentne sisteme Instituta Jožefa Stefana je na voljo za nepridobitno rabo. Ponske vzorce sta prispevala mag. Dušan Gabrijelčič in mag. Franci Močilar, oba z odseka za odprte sisteme in omrežja Instituta Jožef Stefan. Težave z znaki A, D in E Pri nekaterih starejših izdajah ponske datoteke ima Ispell težave z besedili, pisanimi z znaki ISO 8859-2 in pripono .tex (to pripono navadno uporabljamo za besedila, pisana za stavni sistem TeX). Težave se kažejo v tem, da Ispell jemlje črke A, D in E kot meje med besedami. Izognemo se jim, če nadomestimo ponsko datoteko z novejšo različico, dostopno na prej omenjenem naslovu ftp://biofiz.mf.uni-lj.si/pub/ispell/ . Pretvarjanje različnih kodiranj Razen ISO Latin 2 premore vse naše znake še nekaj drugih naborov: Microsoft Codepage 1250, IBM Codepage 852, JUS I.B1.002, Apple MacOS-CE, Apple MacOS-Croatian, Kamenicky, ISO Latin 4, ISO Latin 6, ISO Latin 7 itd. Iconv Čeprav ni težko napisati programčka za pretvorbo enega kodnega nabora v drugega, je pripravno uporabiti že izdelan program. Od izdaje 2.1 naprej knjižnica GNU libc podpira internacionalizacijo in v okviru tega tudi pretvarjanje različnih naborov znakov. Na uporabniški ravni imamo do teh funkcij knjižnice dostop s programom iconv. Uporaba je enostavna; z ukazom iconv --from-code=nabor1 --to-code=nabor2 datoteka pretvorimo dano datoteke iz prvega podanega nabora v drugega. Seznam podprtih kodnih naborov dobimo z izbiro . Če datoteka ni podana, iconv bere s standardnega vhoda. Rezultat pretvorbe se izpiše na standardni izhod, razen če z izbiro ne določimo drugače. Recode Nekaj dlje kot iconv je dostopen GNU recode, dosegljiv npr. v strežniku ARNES: ftp.arnes.si Uporaba je enostavna; z ukazom recode yu..latin2 datoteka pretvorimo datoteko iz kodnega nabora JUS I.B1.002 v kodni nabor ISO Latin 2. Kot običajno izda tudi tu izbira še dodatne možnosti. Starejše izdaje programa Recode (pred različico 3.5), ki ne poznajo Microsoftovih kodnih strani 1250-1259, uporabljajo malo drugačno skladnjo: recode yu:latin2 datoteka Po izkušnjah pisca je prečrkovanje (npr. »nabori« latex ali flat) še vedno omejeno na pretvorbo iz nabora ISO 8859-1 in vanj. Drugi programi Pregledovalnik less Less (avtor Mark Nudelman) je program za pregledovanje besedil na zaslonu in priljubljena zamenjava standardnega more. Less prilagodimo izpisu osembitnih znakov z nastavitvijo v ˜/.profile: LESSCHARSET=latin1; export LESSCHARSET latin1 namesto latin2 ni pomota. Less zaenkrat slednjega še ne pozna, ker pa ga pravzaprav zanima samo, kateri znaki so običajni, kateri pa kontrolni (ki zahtevajo posebno obravnavo), in ker je razporeditev znakov enaka v vsej družini ISO 8859, lahko izberemo kar latin1. Namesto tega lahko tudi izrecno navedemo zaporedje vrste znakov v naboru: LESSCHARDEF="8bcccbcc18b95.33b."; export LESSCHARDEF Vsi nabori iz družine ISO 8859 imajo osem binarnih znakov (posebnih znakov, ki jih praviloma ni v besedilih), tri kontrolne znake, binarni znak, dva kontrolna znaka, osemnajst binarnih znakov, 95 navadnih znakov, 33 binarnih znakov in normalne znake do konca tabele. Koledar gcal V vse sisteme Unix je vgrajen koledarček cal, ki pa je precej anglocentričen. Thomas Esken iz Nemčije je napisal alternativni koledarček gcal. Od izdaje 2.40 naprej pozna tudi slovenske praznike. Najdemo ga na običajnih mestih distribucije GNU. Najbliže je verjetno: ftp.arnes.si Spodnja vrednost spremenljivke GCAL ustreza našim razmeram: GCAL="--cc-holidays=SI --gregorian-reform=1582 --starting-day=1"; export GCAL (z izbiro zahtevamo slovenski nabor praznikov in dela prostih dni, z izbiro določimo datum prehoda z julijanskega na gregorijanski koledar, z izbiro pa, da se teden začne v ponedeljek)
Tiskanje Pri tiskanju lahko naletimo na vse mogoče: Tiskalnik neposredno podpira ISO Latin 2 Tiskalnik podpira enega od preostalih osembitnih naborov z našimi znaki (npr. kodno stran 852) ali pa sedembitni nabor JUS I.B1.002 Tiskalnik razume postscript Tiskalnik ne podpira ničesar drugega razen ASCII Zadnja možnost ni predmet obravnave tega spisa. Tiskalniki, ki podpirajo ISO Latin 2 Nekaj novejših tiskalnikov že neposredno podpira kodno razporeditev ISO Latin 2. Med njimi so Hewlett-Packard LaserJet 4 Plus in 4M Plus Hewlett-Packard LaserJet 5L Epson FX-2170 (NLSP) Epson LQ-870 (NLSP) Epson LQ-2070 (NLSP) Epson LQ-2170 (NLSP) Epson DLQ-3000 (NLSP; letnik 1996 in novejši) Fujitsu DL700 Fujitsu DL1150/1250 Fujitsu DL3700/3800 Fujitsu DL6400/6600 Nič drugega vam ni treba, kakor izbrati pravilno kodno stran v tiskalniku. Ubežne sekvenca za tiskalnike Hewlett-Packard (PCL) in Epson (ESC/P2) so naslednje V PCL menda deluje: \033(2N\033(s0p12h0s0b4099T V ESC/P2 z ukazom ESC ( t prepišemo kodno tabelo ISO 8859-2 v drugo tabelo tiskalnika; zatem z ukazom ESC t izberemo drugo tabelo tiskalnika (strani C-73 in C-77 v »Epson ESC/P Reference Manual«, december 1997): \033(t\003\000\002\177\002\033t\002 Oznaka \033 je osmiška koda znaka Escape. Eden od načinov, kako z /etc/printcap prilagodimo okolje za tiskanje s takim tiskalnikom, je podrobneje opisan v razdelku &s-tisk-cp;. Tiskalniki, ki podpirajo kak drug nabor z našimi znaki Če tiskalnik podpira kak drug nabor z našimi znaki (ne dolgo nazaj je bila ustaljena praksa, da je bil ROM v tiskalnikih nadomeščen z EPROM, v njem pa švedski znaki zamenjani z znaki po JUS I.B1.002), lahko s primerno nastavitvijo v /etc/printcap še vedno tiskamo spise, kodirane po ISO Latin 2. Primerno moramo dopolniti datoteko /etc/printcap. Za zgled si oglejmo tiskalnik Epson, ki ima znake po JUS I.B1.002 na mestu švedskega nabora. lp|ascii|epson|Epson LQ-850:\ :lp=/dev/lp1:\ :sd=/usr/spool/lpd/epson:\ :lf=/usr/spool/lpd/ERRORLOG:\ :mx#0:\ :sh: jus|Epson LQ-850 z znaki JUS I.B1.002:\ :lp=/dev/null:\ :sd=/usr/spool/lpd/jus:\ :if=/usr/spool/lpd/jus_filter:\ :lf=/usr/spool/lpd/ERRORLOG:\ :mx#0:\ :sh: latin2|text|Epson LQ-850 z znaki ISO Latin 2:\ :lp=/dev/null:\ :sd=/usr/spool/lpd/latin2:\ :if=/usr/spool/lpd/latin2_filter:\ :lf=/usr/spool/lpd/ERRORLOG:\ :mx#0:\ :sh: Zgled ima tri tiskalniške vrste. Prva vrsta je dejanski tiskalnik z ameriškim (ASCII) naborom znakov. Tiskanje prek filtra /usr/spool/lpd/jus_filter: #!/bin/sh /usr/spool/lpd/jus_epson | lpr -Pascii Datoteko torej precedimo skozi filter /usr/spool/lpd/jus_epson in jo postavimo v prvo tiskalniško vrsto. Filter jus_epson ne napravi drugega, kakor da na začetku doda kodo za preklop na švedski nabor, prepiše datoteko z vhoda na izhod in na koncu doda kodo za preklop nazaj na ameriški nabor. To je tudi edini del programja, ki je odvisen od vrste tiskalnika: #!/bin/sh # Tiskanje besedil, kodiranih po JUS I.B1.002, s tiskalnikom Epson LQ # # Izberemo slovenski (švedski) nabor /bin/echo -ne "\033R\005\c" # Izpišemo dokument cat # Izberemo ameriški nabor /bin/echo -ne "\033R\000\c" Tretja vrsta uporablja podoben filter kakor druga, le da ta najprej pretvori besedilo iz Latin 2 v JUS, zatem uporabi že opisani filter za to, da doda na začetku in na koncu potrebno kodo za tiskalnik, in končno táko datoteko postavi v prvo vrsto. #!/bin/sh /usr/local/bin/recode --force latin2:yu | \ /usr/spool/lpd/jus_epson | lpr -Pascii Zgled predpostavlja, da je pot do programa recode /usr/local/bin/recode. Izbiro moramo uporabiti, ker je preslikava neobrnljiva - v Latin 2 imamo tako šumnike kakor zavite oklepaje, v JUS pa samo še prve. Za ta zgled smo morali v imeniku /usr/spool/lpd ustvariti tri podimenike: /usr/spool/lpd/epson, /usr/spool/lpd/jus in /usr/spool/lpd/latin2. Tiskanje gre zdaj tako: Brez eksplicitne izbire vrste ali pa z izbiro ali se datoteka odtisne kot ASCII: lpr datoteka Z izbiro se datoteka odtisne kot besedilo, kodirano po JUS I.B1.002: lpr -Pjus datoteka Z izbiro ali se datoteka odtisne kot besedilo, kodirano po ISO Latin 2: lpr -Platin2 datoteka Tiskalniki, ki podpirajo kak drug nabor z našimi znaki II<footnote> <para>Matjaž Terpin <email>matjaz.terpin@comcom.si</email>, <literal>Message-id: <Pine.LNX.3.96.980709095750.24607B-400000@guru.comcom.si></literal> </para> </footnote> Matjaž Terpin matjaz.terpin@comcom.si je predlagal imenitno izboljšavo pravkar opisanega postopka, pri katerem lahko tiskamo naše znake in oglate in zavite oklepaje. Srž njegovega predloga je filter, ki pred vsakim našim znakom preklopi na švedski nabor, takoj zatem pa spet nazaj na ASCII. Datoteka /etc/printcap je v tem primeru taka: # /etc/printcap lp|raw|yu:\ :lp=/dev/lp1:\ :sd=/var/spool/lpd/lp:\ :lf=/var/spool/lpd/ERRORLOG:\ :mx#0:\ :sh: lat2:\ :lp=/dev/null:\ :if=/etc/lp/lat2.filter:\ :sd=/var/spool/lpd/lat2:\ :lf=/var/spool/lpd/ERRORLOG:\ :mx#0:\ :sh: Filter /etc/lp/lat2.filter precedi besedilo skozi naslednje sito, /etc/lp/lat2.switch, in ga postavi v vrsto lp: #!/bin/sh # /etc/lp/lat2.filter /etc/lp/lat2.switch | lpr -Plp »Meso« postopka je v datoteki /etc/lp/lat2.switch: #!/bin/sh #/etc/lp/lat2.switch echo -ne "\033R0" sed -e "s/č/`echo -ne "\033R5\~\033R0"`/g" \ -e "s/Č/`echo -ne "\033R5\^\033R0"`/g" \ -e "s/š/`echo -ne "\033R5\{\033R0"`/g" \ -e "s/Š/`echo -ne "\033R5\[\033R0"`/g" \ -e "s/ž/`echo -ne "\033R5\140\033R0"`/g" \ -e "s/Ž/`echo -ne "\033R5\@\033R0"`/g" \ -e "s/ć/`echo -ne "\033R5\}\033R0"`/g" \ -e "s/Ć/`echo -ne "\033R5\]\033R0"`/g" \ -e "s/đ/`echo -ne "\033R5\|\033R0"`/g" \ -e "s/Đ/`echo -ne "\033R5\\\\033R0"`/g" echo -ne "\033R5" Matjaž pravi še: sed slabo prebavi »echo -ne "\000"«, zato uporabljam kar znak 0 (ničlo), saj je tiskalnik (NEC pinwriter P7) zadovoljen tudi s tem. Postscriptni tiskalniki »Naravni« kodni nabor v postscriptu je Adobe Standard Encoding. Naših črk ne pozna. Pa ne le naših, tudi mnogih drugih črk ne pozna in pravzaprav sploh nima takih ambicij. Namesto tega je ASCII razširjen z gradniki sestavljenih znakov: strešica, ostrivec, diereza, sedij itd. -- vsi so tam. Jezik postscript pa omogoča definiranje sestavljenih znakov. Vse skupaj je čakalo samo še nekoga, ki bo definiral sestavljene znake za kodni nabor ISO Latin 2. Ta nekdo je bil Juliusz Chroboczek, ki je napisal paket ogonkify. Filtra a2ps in GNU enscript sta bila napisana z namenom, da rešita za naše kraje nenavadno zagato: kako odtisniti čisto navadno besedilo na tiskalnik, ki razume edino postscript. Eden in drugi postavita stran v postscriptu z danim besedilom in jo pošljeta tiskalniku. Prilagodljivost postscripta omogoča tudi transformacije (npr. pomanjšave) ali poudarjanje sintakse pri tiskanju programskih izpisov. Oba podpirata nabor ISO Latin 2. ogonkify a2ps GNU enscript Ogonkify Ogonkify je filter za izpise v postscriptu in omogoča pravilen odtis črk tudi v jezikih, ki ne uporabljajo nabora ISO Latin 1. Ker je filter, je ravno za korak prepozen, da bi to počel elegantno, zato mora prežvečiti vsako grdobijo, ki jo program izpljune korak pred njim, in iz dobljenega izdelati lep odtis. Programi pa izdelujejo postscriptne datoteke vsak malo drugače, kar filtru »ogonkify« oteži delo. Zaenkrat podprti formati izpisa PostScript so: NCSA Mosaic, Netscape Navigator, StarOffice, Applixware in XFig. Ogonkify za delovanje potrebuje perl. Ko je nameščen, ogonkify uporabimo takole za odtis spletnega sestavka, shranjenega iz Navigatorja: ogonkify -AT -N netscape.ps | lpr Wprint 2.02<footnote><para>Prispeval Jernej Kovačič, <email>jkovacic@email.si</email></para></footnote> Spletni brskalniki, kot so Netscape, Mozilla, Galeon ali HtmlDoc, tiskajo prek pretvorbe v zapis postscript. Žal pa pri pripravi zapisa v postscriptu vselej predpostavi kodno razporeditev ISO8859-1. To pomeni, da boste pri tiskanju slovenskega dokumenta ne glede na uporabljeno kodno razporeditev namesto šumnikov dobili nekaj drugega. Zato morate pred tiskanjem omenjeni zapis v postscriptu predelati ob pomoči enega izmed tiskalniških filtrov, kot je npr. Wprint. Najprej boste potrebovali pisavo TrueType s podporo Unicodu. Podrobnosti o tem, kje jo dobiti, si oglejte v razdelku o urejevalniku &s-yudit;. V nadaljnjem besedilu bomo predpostavili, da uporabljate pisavo cyberbit.ttf in da ste jo namestili v imenik /usr/share/fonts. Ena izmed okornejših možnosti je, da v svojem brskalniku najprej izvedete tiskanje v datoteko (v Netscapu File Print izbiro File in ime datoteke, npr. dat1.ps). Nato izvedete pretvorbo tako nastale datoteke v zapisu postscript: wprint -i ISO_8859-2 -p dat1.ps -f /usr/share/fonts/cyberbit.ttf >dat2.ps Predpostavili smo, da je bil spletni dokument kodiran v razporeditvi ISO8859-2. Pri slovenskih besedilih sta mogoči tudi kodni razporeditvi Windows-1250 (v tem primeru za vpišite CP1250) ali UTF-8. Kodno razporeditev spletnega dokumenta morate v vsakem primeru ugotoviti sami. Najprej poskusite to ugotoviti iz izvirnika v jeziku HTML (v Netscapu ga dobite z View Page Source ). Če je dokument napisan pravilno, bi nekje v zaglavju (med oznakama <HEAD> in </HEAD>) morali najti tudi ta podatek. V nasprotnem primeru vam ne preostane drugega, kakor da v brskalniku ročno določate kodno razporeditev (v Netscapu ViewCharacter Set... ), dokler na zaslonu ne vidite pravilno izpisanih znakov. Nato si lahko z enim izmed programov za ogled postscripta ogledate nastalo datoteko dat2.ps in jo po potrebi natisnete. Čeprav je ta pot okorna, vam priporočamo, da na začetku tako preizkusite posamezne parametre. Delo z Wprintom si lahko nekoliko poenostavimo, če tri najpogostejša kodiranja slovenskih besedil na naslednji način predstavimo v datoteki /etc/wprint.conf: #Imenik s pisavami TrueType fontpath:/usr/share/fonts/ # Za kodiranje po ISO8859-2 iso2:ISO_8859-2:cyberbit.ttf:|lpr #Za kodiranje po Windows-1250 win1250:CP1250:cyberbit.ttf:|lpr #Za kodiranje po UTF-8 utf8:UTF-8:cyberbit.ttf:|lpr #Obvezen mora biti tudi vnos default, ki ne izvede nobenega filtriranja #in je privzet, če ni naveden noben drug vnos default:NONE:NONE:|lpr Struktura datoteke /etc/wprint.conf je preprosta. Najprej si prihranimo nekaj tipkanja s tem, da določimo imenik s pisavo TrueType. Sledi serija z dvopičji ločenih zaporedij, pri kateri posamezni elementi pomenijo: ime vnosa lahko je poljubno, nanj se bomo pozneje sklicevali s parametrom kodna razporeditev enaka imena kot pri iconv ime pisave TrueType cilj filtriranja Zadnji element (cilj filtriranja) je ponavadi datoteka, v našem primeru pa smo ga prek cevi preusmerili k ukazu lpr, ki bo izvedel tiskanje »popravljenega« dokumenta. Seveda lahko za zadnjim dvopičjem pustimo tudi prazen prostor, kar pomeni, da bomo sami naknadno določali cilj z »operatorjema« > ali |. Zdaj lahko prej dobljeno datoteko dat1.ps neposredno natisnemo nekoliko enostavneje z ukazom wprint -l iso2 dat1.ps Tudi tokrat je treba pred tem ugotoviti dejansko kodiranje dokumenta in po potrebi namesto iso2 vtipkati win1250 ali utf8. Lahko pa si delo še nekoliko poenostavimo in v spletni brskalnik kot ukaz za tiskanje (v Netscapu File Print Print Command ) vnesemo wprint -l iso2 (oz. windows1250 ali utf8). GNU enscript Če GNU enscript še ni nameščen, ga namestimo po navodilih, ki so priložena programu. Poleg njega potrebujemo še vsaj eno pisavo z vsemi našimi znaki, zapisano v obliki Type 1. Primerna je npr. IBM Courier, ki je prosto dostopna in se distribuira z X Window System, programom ghostscript ipd. Če nismo prepričani, ali ga imamo že nameščenega, poženemo: find / -name cour.pf[ab] V osebno (˜/.enscriptrc) ali skupno nastavitveno datoteko (navadno /usr/local/etc/enscript.cfg ali /usr/local/etc/enscriptsite.cfg) dodamo pravilno pot do datotek s pisavami. Poleg tega potrebuje GNU enscript v vsakem imeniku s pisavami še datoteko z imenom font.map, v kateri je preslikava med imeni pisav in datotekami, v katerih so shranjene. Ustvarimo jo z ukazom mkafmmap. Zgled nastavitvene datoteke: ... # Kje shranjujemo postscriptne pisave? AFMPath: /usr/lib/X11/fonts/Type1:/usr/local/lib/ghostscript/fonts ... # Privzeti način kodiranja: DefaultEncoding: latin2 ... # Privzeti format papirja: DefaultMedia: A4 ... # lpd izbira tiskalniške vrste z -P... QueueParam: -P ... # Za tiskanje uporabljamo ukaz lpr, ne lp Spooler: lpr Ko je vse potrebno nastavljeno, odtisnemo besedilo enostavno z ukazom enscript datoteka a2ps Z izdajo 4.7.21 je Akim Demaille v a2ps vgradil mehanizem za sestavljene znake, ki ga je Juliusz Chroboczek uporabil v filtru &s-ogonkify;. Našim krajem prilagodimo a2ps z majčkeno spremembo nastavitvene datoteke. Sistemsko nastavitveno datoteko najdemo navadno kot /usr/etc/a2ps.cfg, /usr/local/etc/a2ps.cfg ali kaj podobnega; osebna se imenuje ˜/.a2psrc. ... # Default encoding Options: --encoding=latin2 # Default media Options: --media=A4 ... Linux v Sloveniji Harald T. Alvestrand iz Trondheima na Norveškem vodi evidenco o uporabnikih Linuxa po državah. Seznam slovenskih uporabnikov Linuxa je na naslovu counter.li.org . Če vas ni med njimi, se prijavite! Skupina uporabnikov Linuxa Od marca 1996 naprej deluje v Ljubljani organizirana skupina uporabnikov Linuxa v Sloveniji, društvo LUGOS (Linux Users Group of Slovenia). Društvo ima svojo stran na WWW: www.lugos.si Občasno organizira srečanja članov, ima tudi nekaj svojih elektronskih seznamov. Strežniki FTP Na straneh strežnika LUGOS najdete tudi vzdrževan seznam dejavnih arhivov v Sloveniji. V Centru za uporabno matematiko in teorijsko fiziko Univerze v Mariboru je uradno vsak dan posodobljeno zrcalo jedro Linuxa, projekta Debian GNU/Linux ter dokumentacijskega projekta LDP: http://www.si.kernel.org/pub/linux/ http://www.si.kernel.org/pub/software/ ftp://ftp.si.kernel.org/pub/linux/ ftp://ftp.si.kernel.org/pub/software/ http://www.si.kernel.org/pub/debian/ http://www.si.kernel.org/pub/debian-non-US/ http://www.si.kernel.org/pub/debian-cd/ ftp://ftp.si.kernel.org/pub/debian/ ftp://ftp.si.kernel.org/pub/debian-non-US/ ftp://ftp.si.kernel.org/pub/debian-cd/ http://www.camtp.uni-mb.si/LDP/ Priporočajo dostop po protokolu HTTP. V strežniku ARNES se avtomatično zrcalita distribucija Debian in programje iz projekta GNU, ftp://ftp.arnes.si/software/unix/linux/debian/ ftp://ftp.arnes.si/software/gnu/ Usenet Linux nima svoje diskusijske skupine. Vsa razprava o sistemih Unix je zbrana v skupini si.comp.os.unix (kjer pa sestavlja razprava o Linuxu res znaten del prometa). Svojo skupino ima društvo LUGOS: si.org.lugos. Zastopniki za Linux Podjetje TurboLinux, ki že dlje časa uspešno sodeluje s slovenskim podjetjem Active Tools, d.o.o., je konec februarja 2000 odprlo eno od treh evropskih podružnic v Kranju, Planina 3 (tel.: (04) 235-0990). Agenda, d.o.o., Gosposvetska cesta 84, Maribor (tel.: (02) 234-0860), je uradni zastopnik podjetij Caldera, RedHat in SuSE v Sloveniji. Euroteh, d.o.o., Prešernova cesta 15, Grosuplje (tel.: (01) 786-5190), zastopa podjetje SuSE. CD-ROM z distribucijami Linuxa je navadno mogoče dobiti pri vseh bolje založenih trgovcih z robo te vrste, npr. Infobia (tel.: (01) 568-5541) ali Mantis (tel.: (01) 236-2033). O tem spisu Najnovejša izdaja tega spisa je razen na uradnem mestu Linux Documentation Project dostopna tudi v strežniku Slovenskega društva uporabnikov Linuxa. Vse pripombe na ta spis so dobrodošle. Pošljite jih na naslov primoz.peterlin@biofiz.mf.uni-lj.si. Splošna vprašanja o Linuxu in poslovenjenju programov pa sodijo na dopisno listo lugos-slo@lugos.si ali v si.comp.os.unix. Opombe k tretji izdaji Tretja izdaja se od prvih dveh razlikuje po formatu. Prav tako je zapisana v SGML, vendar uporablja namesto določil dokumenta Linuxdoc DTD splošnejši DocBook DTD. Sicer pa se od druge razlikuje tudi po tem, da ob obstoječem osembitnem standardu ISO 8859-2 za kodirane nabore znakov opisuje tudi novejši in širši standard ISO 10646/Unicode. Novi so razdelki o uporabi programov Yudit, Xfmail, Wprint in Magic Point. Razširjen je razdelek o krajevnem prilagajanju programov z orodjem GNU gettext. Številni drugi razdelki so doživeli manjše posodobitve in popravke. Opombe k drugi izdaji Druga izdaja je približno dvainpolkrat daljša od prve, ki je izšla konec leta 1996. Izkazalo se je, da bi bil koristen kratek seznam tistega, kar je treba postoriti, če želimo usposobiti naše znake na konzoli ali v okolju X Window System, zato sem ga dodal na začetek. Dodan je opis uporabe vektorskih pisav Type 1 in TrueType. Nastavitev locale je standardni način prilagoditve programov, zato je temu razdelku namenjena večja pozornost. V celoti so novi opisi prilagoditev urejevalnika LyX ter pisarniških paketov WordPerfect, Star Office in Applixware. Dodan je opis prilagoditve nove izdaje urejevalnika Emacs. Razdelek o tiskalnikih je razširjen z domiselno alternativno različico tiskalniškega filtra; dodatno sta omenjena ogonkify in a2ps. Posodobljen je seveda tudi razdelek o Linuxu v Sloveniji. In morda še kaj, kar sem pozabil. Če je prva izdaja nekakšen urejeni zbir zapiskov o težavah, s katerimi sem se sam ubadal, se zdaj nekoliko bolj zavedam tudi potreb drugih. Zato sem v to izdajo uvrstil tudi opis prilagoditev programov in programskih paketov, ki jih sam ne uporabljam, npr. Star Office, Applixware ali Word Perfect. Opisanih rešitev nisem preizkušal; zaupam pač izkušnjam izvirnih piscev. Te sem tudi povsod navedel in lahko navežete stik z njimi. Zahvala Če bralka ali bralec tega nista že sama uganila, je čas, da priznam: nikakršen strokovnjak za Linux nisem. Nekaj o krajevni prilagoditvi Linuxa sem se naučil iz spisov »German HOWTO« Winnfrieda Truemperja ter »Danish/International HOWTO« Thomasa Petersena, nekaj o internacionalizaciji kar tako iz spisov Michaela Gschwinda. Nadvse koristni so bili tudi Czech HOWTO, Polska strona ogonkowa ter Slovenščina in računalniki Aleša Koširja. Prvi spis je spisala skupina avtorjev, zadnja izdaja je na naslovu www.penguin.cz, tu in tam ga objavijo v cz.comp.linux; drugo najdete na www.agh.edu.pl, stran vzdržuje Jarosław Strzałkowski. »Slovenščino in računalnike« najdete na nl.ijs.si. Podobno tematiko kot ta spis obravnava tudi Serbian HOWTO Zoltana Csale. Z namigi in nasveti so mi pomagali še (po abecednem vrstnem redu): Rudi Benkovič rudib@email.si, Gorazd Božič gorazd.bozic@arnes.si, Aleš Časar casar@uni-mb.si, Tomaž Erjavec tomaz.erjavec@ijs.si, Danilo Godec danci@kibla.org, Matjaž Godec gody@elgo.si, Andraž Hvalica Andraz.Hvalica@amis.net, Andrej Komelj andrej.komelj@guest.arnes.si, Aleš Košir ales.kosir@hermes.si, Jernej Kovačič jkovacic@email.si, Metod Koželj metod.kozelj@rzs-hm.si, Janez Krek janez.krek@euroteh.si, Robert Ludvik robert.ludvik@zd-lj.si, Renato Lukač renato@s-gms.ms.edus.si, Roman Maurer roman.maurer@hermes.si, Jaka Mele jack@ro.zrsss.si, Borut Mrak borutm@bigfoot.com, Igor Mozetič igor.mozetic@uni-mb.si, Rok Papež rok.papez@kiss.uni-lj.si, Boris Požar boris.pozar@guest.arnes.si, Marko Samastur markos@elite.org, Robert Susič robert.susic@ijs.si, Alen Šalamun alen.salamun@medinet.si, Matjaž Terpin matjaz.terpin@comcom.si, Miha Tomšič miha.tomsic@guest.arnes.si, Janez Trenz janez.trenz@bigfoot.com in Leon Žlajpah leon.zlajpah@ijs.si. Vsem hvala. Tistim, ki sem jih po nemarnosti izpustil, se opravičujem; spodrsljaj bom skušal popraviti v naslednji izdaji. Vprašanja Se pravi Slovenian ali Slovene? Mnenja so deljena. Pisec teh vrstic se je pozanimal pri strokovnjakih anglistih, ki so mu le potrdili, da so mnenja zares deljena. Slovnično je pravilno prvo in drugo, odločitev za to ali ono inačico je zaenkrat bolj domena jezikovne estetike. Greg Hankins, nekdanji urednik Linux Documentation Project, je eden poglavnih krivcev, da ta spis uporablja prvo različico, in iz navade bo do nadaljnjega tako tudi ostalo. Zakaj spis ne omenja programa <replaceable>XY</replaceable>? Najverjetneje zato, ker ga pisec ne uporablja, morda niti ne ve zanj. Programov, ki se zavedajo internacionalizacije in tako ali drugače podpirajo naš jezik in pisavo, je res iz dneva več, kljub temu pa prosim vse, ki ste odkrili kakršnokoli zvijačo za uporabo slovenščine v programih, ki tu niso navedeni, da mi pošljete kratek opis ter tako pripomorete k še boljšim in uporabnejšim navodilom.