Kielimerkkaus:

Kielimerkkauksen toteutus HTML:ssä ja XML:ssä (ja muissa järjestelmissä)

Sisältö:

HTML:ssä lang-määrite

HTML:ssä voidaan elementin sisällön kieli ilmaista lang-määritteellä, jonka arvo on jokin seuraavassa kohdassa kuvattava kielikoodi. Esimerkiksi
<html lang="fi">
ilmoittaa, että dokumentti kokonaisuutena on suomenkielinen.

Useimpiin HTML-elementteihin voidaan liittää lang-määrite. Poikkeukset ovat: applet, base, basefont, br, frame, frameset, iframe, param ja script. Osa poikkeuksista on outoja, sillä esimerkiksi iframe-elementissä kielen ilmoittaminen voisi olla tarpeen, esimerkiksi kun sillä liitetään dokumenttiin tekstitiedosto, joka on eri kieltä kuin ympäröivä teksti. Tämä ongelma voidaan periaatteessa kiertää panemalla iframe-elementti span-elementin sisään.

Kaikkien elementtien kieltä ei suinkaan tarvitse merkata erikseen, vaan vain niissä tapauksissa, joissa kieli poikkeaa ympäröivän tekstin eli ylemmän tason elementin kielestä. Jos suomenkielisessä dokumentissa on vaikkapa pitkä ruotsinkielinen lainaus, se on syytä merkata näin:
<blockquote lang="sv">...</blockquote>
Ja jos sen sisällä taas on tekstiä, joka ei ole ruotsia, sille on syytä olla oma lang-määritteensä.

Lainausten (sitaattien) lisäksi etenkin kirjojen ja muiden teosten nimet ovat tekstejä, joiden kieli on hyvä merkitä. Sopiva elementti teoksen nimelle on cite, joten merkkaus voi olla esimerkiksi seuraavanlaista:
Monet tuntevat nimeltä teoksen <cite lang="en">Origin of Species</cite>.

Jos jokin teksti on eri kieltä kuin ympäröivä teksti mutta ei ole omana elementtinään, sille voidaan ottaa käyttöön oma merkkaus, oma elementti, vain lang-määritteen liittämiseksi siihen. Jos kyse on yksittäisestä sanasta tai muutamista peräkkäisistä sanoista, käytetään span-elementtiä, esimerkiksi
Teoksen kirjoitti <span lang="en">Charles Darwin</span>.
Jos taas kyse on laajemmasta kokonaisuudesta, kuten peräkkäisistä kappaleista, kirjoitetaan sen ympärille div-merkkaus.

Esimerkiksi FrontPage 2003 -ohjelmassa voi tekstin sanoja merkata muunkielisiksi seuraavasti: Maalataan sanat hiirellä, ja valitaan Työkalut-valikosta kohta "Määritä kieli", jonka jälkeen voidaan valita pudotusvalikosta oikean kielen nimi. Valitettavasti tarjolla ei ole pelkkiä kieliä vaan esimerkiksi englannin kieltä valittaessa on valittava myös maa. Valinnan jälkeen ohjelma osaa käyttää kyseisen kielen oikolukua, jos se on ohjelmassa ylipäänsä käytettävissä.

Taulukoissa lang-määrite voi olla myös sarakekohtainen, esimerkiksi <col lang="en">. Tämä on hyödyllistä silloin, kun taulukko esimerkiksi sisältää sanaston, jossa erikieliset vastineet ovat eri sarakkeissa. Ei siis tarvitse kirjoittaa lang-määritettä kuhunkin soluun erikseen. Jos esimerkiksi taulukon ensimmäinen sarake on suomea, toinen saksaa, riittää kirjoittaa <table>-tägin jälkeen, ennen taulukon rivejä, vain
<col lang="fi">
<col lang="de">

Asia on selitetty HTML-spesifikaatiossa melko oudossa kohdassa, Inheritance of alignment specifications.

Huomautuksia kielimerkkauksesta HTML:ssä

Kielimerkkauksen käyttö on siis varsin yksinkertaista ja vaivatonta, kun kyse on koko dokumentista tai sen isohkoista osista. Kun mennään yhä pienempiin osiin, sanoihin ja jopa sananosiin, sitä hankalammaksi kielimerkkaus tulee. Näitä ongelmia käsitellään jäljempänä omissa luvuissaan. Tässä luetellaan vain muutamia yleisiä huomautuksia:

Englanniksi kielimerkkausta käsittelee HTML-määrittelyn luku Language information and text direction.

HTML:ssä on myös language-määrite, jota voi käyttää script-elementissä ilmoittamaan käytetty skriptikieli. Sillä ei siis ole mitään tekemistä luonnollisten kielten kanssa. Paradoksaalista on, että tähän tekniseen tarkoitukseen käytettävän määritteen nimeksi on otettu englannin sana sellaisenaan kun taas luonnollisen kielen (tai yleisemmin: ihmisten kielen) ilmoittamiseen käytetään typistesanaa!

XML:ssä xml:lang-määrite

XML:n määrittelyn kohta Language Identification esittää, että XML:ssä käytetään xml:lang-määritettä kielen ilmaisemiseen. Se vastaa hyvin pitkälle HTML:n lang-määritettä.

XHTML 1.0 -spesifikaation liite HTML Compatibility Guidelines suosittelee käytettäväksi molempia määritteitä. Toisaalta XHTML 1.1 -määrittelystä on, kuten sen kohdassa Changes from XHTML 1.0 Strict sanotaan, kokonaan poistettu lang-määrite.

Kielimerkkaus muissa järjestelmissä

XSL

XSL (eXtensible Stylesheet Language) sisältää language ominaisuuden, jonka tarkoitettua käyttöä kuvastaa seuraava: "Specifies the language to be used by the formatter in language-/locale-coupled services, such as line-justification strategy, line-breaking, and hyphenation.".

SVG ja SMIL

SVG (Scaleable Vector Graphics) ja SMIL (Synchronized Multimedia Integration Language) ovat dataformaatteja, joihin voi sisältyä tekstiä ja informaatiota tekstin kielestä. Kieli ilmoitetaan systemLanguage-määritteellä. Se on tarkoitettu mahdollistamaan kielivalinta samaan tapaan kuin HTTP:n kielivalintamekanismissa mutta yhden dokumentin sisällä.

RTF

RTF-tiedostomuoto on eräänlainen merkkauskieli, joka useilla tavoilla muistuttaa HTML:ää. Siinä on käytössä kolme kieleen liittyvää merkkausta:

\deflangnnnn
Asettaa oletuskielen, default language.
\deflangfennnn
Asettaa oletuskielen Word-ohjelman aasialaisia versioita varten.
{langnnnn tekstiä}
Asettaa kyseisen tekstinosan kielen.

Tässä nnnn on luku, joka ilmaisee kielen. RTF:ssä ovat käytössä erityiset numeeriset kielikoodit.

DocBook

DocBook on SGML-pohjainen järjestelmä dokumenttien kirjoittamiseen. Siinä on lang-määrite, mutta sen merkitys ja muotokin on hiukan epäselvä. DocBook: The Definitive Guide sanoo siitä, kohdassa Common Attribute Parameter Entities:

Lang should be a language code drawn from ISO 639 (perhaps extended with a country code drawn from ISO 3166, as en_US). Use it when you need to signal your application to change hyphenation and other display characteristics.

Kuten seuraavassa kohdassa selostetaan, Internetissä käytetyssä kielikoodien järjestelmässä peruskielikoodin ja maakoodin välinen erotin on yhdysmerkki (-), ei alaviiva (_). Toisaalta poikkeamista tästä ei ehkä koeta ongelmaksi, koska DocBook-muotoisia dokumentteja ei juuri ole tarkoitus sellaisenaan levittää esimerkiksi Internetissä, vaan niistä tuotetaan ohjelmilla erilaisia esitysmuotoja.


Kirjoittamisen ajankohta: 2002-06-23. Päivitetty viimeksi 2007-12-03.
Tämä sivu kuuluu Jukka "Yucca" Korpelan avoimeen tietosivustoon Datatekniikka ja viestintä.

Seuraava osa: Kielikoodit (kielten tunnukset)