Monikielisen Web-sivuston tekeminen

Web-sivuston tekeminen niin, että samat tiedot ovat saatavilla eri kielillä käyttäjän valinnan mukaan, asettaa omat tekniset vaatimuksensa. Tämä dokumentti käsittelee erityisesti tätä varten kehitettyä kielivalintamekanismia (language negotiation) sekä sitä täydentävää linkittämistä sivun erikielisiin versioihin.

Rajauksia

Tämä dokumentti käsittelee sitä, miten erikielisiä sivuja "tarjoillaan" käyttäjille; se ei käsittele kysymystä sivujen erikielisten versioiden kirjoittamisesta. Siinä voidaan ehkä jossain määrin käyttää automaattisia käännösohjelmia, ks. kirjoitustani Translation-friendly authoring, mutta käännöstyön on kuitenkin syytä olla työnsä osaavan kääntäjän vastuulla. Parasta on, jos kääntäjä myös tuntee HTML-kielen perusteet, jolloin hän voi tuottaa käännöksen suoraan HTML-dokumentteina. Tällöin voidaan esim. antaa kääntäjälle käännettävä aineisto HTML-muodossa, ja hän korvaa tekstit toisilla jättäen HTML-merkkauksen (yleensä) ennalleen.

Erikielisten versioiden nimeämisestä niiden Web-osoitteiden (URLien) ei oleteta tässä mitään erityistä. Käytännön syistä kuten sivujen luonnin ja ylläpidon takia on parasta olla systemaattinen, mutta tämä voidaan toteuttaa eri tavoin. Menetelmä voi olla esimerkiksi jompikumpi seuraavista:

Molemmissa menetelmissä ongelmana on, että yhdysmerkkiä edeltävän osan (esimerkissä foo) on syytä olla sellainen, että se on ymmärrettävissä kohtalaisen kansainvälisesti. Tämä onnistuu luontevasti silloin, kun tällaiseksi osaksi sopii luontevasti jokin yleisesti tunnettu lyhenne taikka kansainvälisen sanan osa - mutta nämä ovat periaatteessa poikkeustilanteita. Muissa tapauksissa osoitteet voivat näyttää aika oudoilta; jokin katsaus-en näyttää oudolta sille, joka ei osaa suomea. Vaikka käyttäjien ei pitäisikään yleensä joutua tulkitsemaan ja käyttelemään URLeja, sellaiseen kuitenkin usein joudutaan. Eräs periaatteellinen vaihtoehto on, että erikielisten versioiden osoitteet ovat toisistaan täysin riippumattomia, esim. loppuosa katsaus.html, review.html jne., mutta tällöin toteutus ja ylläpito mutkistuu etenkin kielivalintamekanismin osalta.

Kielivalintamekanismilla voidaan mahdollisesti saada aikaan, että yleinen, "geneerinen" osoite kuten http://www.jotain.example/foo.html viittaa eri tilanteissa erikielisiin sivuihin. Sen tarkoitus ei ole syrjäyttää edellä kuvatun kaltaisia kielikohtaisia osoitteita vaan tarjota toinen vaihtoehto niiden rinnalle.

Tässä jutussa ei käsitellä merkistöongelmia, joita aiheeseen väistämättä liittyy ainakin silloin, kun mukana on kieliä, joita ei kirjoiteta latinalaisin aakkosin. Tämä rajaus johtuu lähinnä siitä, että aihepiirit ovat mutkikkaita ja siksi asia on syytä jakaa hallittavissa oleviin osiin, eli käsitellä yksi aihe kerrallaan. Käytännön syynä on lisäksi se, että Suomessa monikielisen sivuston kielinä ovat tavallisimmin suomi, ruotsi, englanti ja mahdollisesti muut sellaiset kielet, joita voidaan kirjoittaa ISO Latin 1 -merkistöä käyttäen, jolloin monikielisyys ei tuo mukanaan sellaisia merkistöongelmia, joita ei olisi jo suomeksi kirjoitettaessa.

Tarkastelun ulkopuolelle on jätetty myös lang-määrite, jolla HTML-merkkauksessa voidaan ilmoittaa käytetty kieli. Hyvä kuvaus sen taustalla olevista ideoista sekä teknisistä menettelyistä on HTML-spesifikaation luvussa Language information and text direction. Valitettavasti vain selainten ja muiden ohjelmien tuki tälle määritteelle on lähinnä olematon.

Linkittäminen sivun erikielisiin versioihin

Linkittäminen yleensä on suhteellisen yksinkertaista HTML:ssä. Erikielisiin versioihin viitattaessa keskeisenä ongelmana on linkkitekstin valinta eli se, mikä linkin osa toimii "oliona", jonka voi klikkaamalla tai muulla keinoin valita. Periaatteessa tällaisena oliona voi olla myös kuva, mutta yleensä tekstilinkit toimivat parhaiten. Varsinkaan tässä yhteydessä kuvan käyttö ei ole ollenkaan hyvä ajatus, koska luonnollisin tapa viitata dokumentin muunkieliseen versioon on käyttää sanoja tai muuta tekstiä: dokumentin otsikko kyseisellä kielellä tai kielen nimi tai kielen nimen koodilyhenne. Poikkeuksena voi olla tilanne, jossa että linkkiteksti olisi kieltä, jota merkkikoodiongelmien takia ei voi käytännössä esittää dokumentissa riittävän luotettavasti muuten kuin kuvana. Erityisesti on syytä varoittaa lippujen käytöstä kielten symboleina.

Yksinkertainen esimerkki suomenkieliselle sivulle sijoitettavasta linkistä, joka viittaa jutun englanninkieliseen versioon:

<p>Tämä sivu englanniksi - This page in English:
<cite><a href="multi-en.html">Techniques for
multilingual Web sites</a></cite>.</p>

Tämä näyttäisi seuraavalta (linkki ei valitettavasti toimi vielä!):

Tämä sivu englanniksi - This page in English: Techniques for multilingual Web sites.

Tässä linkkitekstinä on toiskielisen version nimi kyseisellä kielellä. Tästä on se etu, että jos joku suomea osaamaton eksyy sivulle, hän näkee heti, linkkiä seuraamattakin, mitä sivu käsittelee. Joskus tällainen linkkiteksti toimii itsenäisenäkin, mutta usein sen eteen on hyvä kirjoittaa edellä esitetyn tapainen selitys. Suomenkielinen selitys on siinä siksi, että englantia osaamaton ei rupea ihmettelemään, mistä on kyse; tämän merkitys ehkä avautuu, jos kuvittelet englannin tilalle suahilin tai kiinan. Englanninkielinen selitys taas kertoo englantia osaavalle, mistä on kyse; muutoinhan jäisi hänen arvattavakseen, onko kyseessä vain sivulla muuten vain oleva englanninkielinen linkki, jollaiset toki ovat aika tavallisia.

Entä jos kieliä on useita? Silloin voisi tehdä listan tai taulukon, jossa on edellä kuvatun kaltaisia linkkejä ja niille yhteinen alussa oleva selitys, esim. otsikkona, esim. tähän tyyliin:

Tämä sivu muilla kielillä - This page in other languages
Deutsch Techniken für mehrsprachige Web-Sites
English Techniques for multilingual Web sites
svenska Tekniker för mångspråkiga Webbsajter

Taulukkoon voisi vielä ajatella lisättäväksi kielten kaksikirjaimiset, ISO 639:n mukaiset koodit. Tällöin listan tai taulukon järjestys voisi olla koodien mukainen aakkosjärjestys. Näin tehtäisiin tunnetuiksi näitä koodeja. On kohtuullista, että jokainen oppii sellaisen pienen asian kuin niiden kielten kaksikirjaimiset tunnukset, joita hän osaa hyvin, koska monissa yhteyksissä on tarpeen viitata kieliin sellaisilla tunnuksilla. Tunnukset voisi tällaisissa yhteyksissä esittää isolla kirjasinlajilla:

de(Deutsch) Techniken für mehrsprachige Web-Sites
en(English) Techniques for multilingual Web sites
sv(svenska) Tekniker för mångspråkiga Webbsajter

Tilanteen mukaan voidaan esitystä tiivistää, äärimmillään siten, että linkkinä on kielen koodi. Näin on menetelty esimerkiksi monilla EU:n sivuilla. Esimerkiksi sivulla, joka sisältää tietosuojadirektiivin suomeksi, on yläreunassa "kielinapit" seuraavaan tapaan:

Castellano Dansk Deutsch Ellinika English Francais Italiano Nederlands Portugues Suomi Svenska

Tässä tosin koodit ovat tarpeettomasti kuvina. Lisäksi sivu toimii huonosti ilman kuvia; pienille kuville ei kannata kirjoittaa width- ja height-määritteitä, koska se aiheuttaa ongelmia graafisissa selaimissa. Lisäksi sivulla on epäloogisesti ja tilankäyttöä sotkevasti esim. alt="Francais" (!), kun loogista olisi käyttää merkkausta alt="fr" title="en français".

EU:n pääsivu, tai "sisääntulosivu", on luonteeltaan pelkkä läpikulkusivu, jolta voi vain valita kielen. Linkkeinä toimii sana "Tervetuloa" eri kielillä. Tämä on huonohko ratkaisu monessakin mielessä - siinäkin, että tämä sana on eri kielissä osittain hämäävän samanlainen.

Debian-projektin sivuilla on kunkin sivun loppupuolella teksti "Tämä sivu on on olemassa myös seuraavilla kielillä:" tai vastaava sivun kielellä sekä kielten nimet, jotka ovat linkkejä erikielisiin versioihin. Tämäkin on melko toimiva ratkaisu. Tosin linkkien paneminen intuitiivisesti selvään järjestykseen kuten aakkosjärjestykseen on mahdotonta, jos mukana on muitakin kuin latinalaisin aakkosin kirjoitettavia nimiä. Voitaneen kuitenkin olettaa, että se, joka jotakin kyseisistä kielistä osaa, löytää sen joukosta.

Minne linkit erikielisiin versioihin kannattaisi sivulla sijoittaa? Varmaankin aina samaan paikkaan yhdessä sivustossa, mutta minne? Seuraavassa on lyhyesti muutama vaihtoehto ja niiden hyviä ja huonoja puolia:

Ehkäpä paras ratkaisu olisi seuraava siinä tapauksessa, että kielilinkit vievät suhteellisen vähän tilaa (esim. enintään tusinan verran linkkejä, joiden tekstinä on kielikoodi): Kielilinkit kirjoitetaan dokumentin loppuun, mutta tyylisäännöstöillä ehdotetaan, ns. absoluuttista positiointia käyttäen, niiden fyysistä sijoittamista alkuun, oikeaan nurkkaan. Tällä sivulla olevat (toistaiseksi toimimattomat) kielilinkit on tehty siten, että lopussa on div-elementti, jossa linkit ovat ja jolle on annettu tunniste määritteellä id=langlinks, ja tyylisäännöstössä on seuraava:

div#langlinks { position: absolute; top: 0; right: 0;
                text-align: right;
                height : 1.2em; }
h1 { margin-top : 1.2em; }

Täten selain, joka ei tue positiointia tai joka syystä tai toisesta jättää kyseisen tyylisäännöstön soveltamatta, linkit näkyvät sivun lopussa. Positiointia tukeva selain näyttää ne oikeassa yläkulmassa. Kyseisen osan korkeus on erikseen asetettu tyylisäännöstössä (1,2 kertaa fontin korkeus), jotta on sitten voitu asettaa sama määrä tilaa pääotsikon ylämarginaaliksi. Tällöin kielilinkit ja otsikko eivät mene päällekkäin. Menettely tietenkin olettaa, että dokumentin rungon ensimmäinen elementti on pääotsikko (h1-elementti).

Teoriassa kielilinkit voisi tehdä link-elementtien muodossa, jolloin niiden esitystapa jäisi selaimen tehtäväksi kuhunkin selailutilanteeseen sopivassa muodossa. Valitettavasti vain tätä tapaa ei juuri mikään selain tue mitenkään, eikä sen varaan siten voida lähivuosina rakentaa mitään.

Kielivalintamekanismi

Kielivalintamekanismi (language negotiation) ei ole välttämätön. Se ei myöskään ole käytännössä luotettava, vaikka se teknisesti toimisikin. Sen lisäksi tarvitaan joka tapauksessa linkittäminen sivun erikielisiin versioihin. Täten on käytännössä järkevää aloittaa linkittämisestä ja vasta sitten selvittää, missä määrin on tarvetta ja aihetta käyttää myös kielivalintamekanismia.

Aika usein yritetään kielivalinta tehdä käyttäjän Internet-osoitteen, tarkemmin sanoen sen alueosan (domain) perusteella. Sellainen on melkoista arvailua. Ei suinkaan jokaisella .fi-alueessa olevalla, tai oikeammin sanoen .fi-alueessa olevaa konetta käyttävällä, ole suomi äidinkielenä. Ja tietenkin suomenkieliset käyttävät monia muitakin osoitteita kuin .fi-osoitteita. Mutta jos kuitenkin yrität tehdä kielivalinnan käyttäjän osoitteen perusteella, muista, että valinta tällöin varmasti menee pieleen merkittävän usein, joten kirjoita joka tapauksessa sivuille seuraavassa kuvattavat linkit, joiden kautta käyttäjä voi löytää sivut hänelle sopivalla kielellä.


Viimeisimmän päivityksen ajankohta: 2000-03-03

Jukka Korpela, jkorpela@malibutelecom.com