Kielimerkkauksen käyttöön liittyy monenlaisia ongelmia. Seuraavassa tarkastellaan niitä melko yksityiskohtaisesti. Tässä on kuitenkin hyvä muistaa, että vaikka yksityiskohdissa joudutaankin moniin vaikeuksiin, kielimerkkaus on käytännössä varsin helppo tehdä. Sitä ei ole pakko viedä yksittäisten sanojen tasolle, jos ongelmat siellä tuntuvat liian suurilta.
Muutoin yksikielisessä tekstissä voi esiintyä lyhyitä tai pitkiä lainauksia muilla kielillä, vieraskielisiä nimiä tai vieraista kielistä peräisin olevia ns. sitaattilainoja. Miten yksityiskohtaisesti dokumentin eri osien kieli kannattaa merkata?
Ensimmäisenä varmaankin tulee mieleen se käytännön seikka, että yksityiskohtainen merkkaaminen voi olla varsin työlästä. Tämän lisäksi on useita jäljempänä kuvattavia seikkoja, joiden takia merkkausta ei aina kannata viedä ihan sanojen ja jopa sananosien tasolle. Nyrkkisäännöksi esitänkin:
Merkkaa koko dokumentin kieli ja muunkielisten lainausten, kirjojen nimien ja yleensä pitkähköjen muunkielisten tekstien kieli. Lisäksi voit merkata yksittäisten sanojenkin kielen, jos on selvää, että ne on syytä tulkita kaikin tavoin vieraskielisiksi. Epäselvissä tapauksissa on parempi jättää kielimerkkaus pois: when in doubt, leave it out.
Usein on tulkinnanvaraista, mitä kieltä jokin ilmaisu on. Selvimmän esimerkin muodostavat sanat, jotka on lainattu kielestä toiseen ja jotka ovat osittain mukautuneet lainaajakieleen. Onko esimerkiksi ranskasta englantiin lainautunut sana "fiancé" ranskaa vai englantia? Se kirjoitetaan täysin ranskan mukaisesti; ääntämys taas jäljittelee ranskan ääntämystä mutta ei kokonaan vastaa sitä. Suomen kielessäkin tällaista esiintyy erittäin paljon. Vaikka usein sanotaan, että sitaattilainat tulisi kirjoittaa ja ääntää täysin alkukielen mukaan, niin käytännössä esiintyy varsin paljon eriasteisia mukautumia, ja nykyisin ne kielenoppaissakin jo usein tunnustetaan.
Miten pitäisi merkata esimerkiksi sana "Windows", kun se esiintyy käyttöjärjestelmän nimenä suomenkielisessä tekstissä? Alkujaan sana on tietysti englantia, mutta suomen kielessä se ei yleensä äänny täysin englannin mukaisesti, esimerkiksi loppukonsonantti ei äänny soinnillisena. Toisaalta sana ei ole kirjoitusasultaan mukautunut suomeen. Oikeastaan tarvittaisiin tapa merkata, että sana on "siirtymässä" kielestä toiseen.
Voidaan jopa kysyä, onko "Helsinki" suomea vai englantia, kun se esiintyy englanninkielisessä tekstissä. Englannissahan se tavallisimmin ääntynee niin, että paino on toisella tavulla. Missä vaiheessa tällainen "väärä" ääntämys muuttuu osaksi kielen todellisuutta, joka on syytä tunnustaa? Esimerkiksi suomen sana "sauna" ääntyy englannissa tavallisesti niin, että "au" ääntyy pitkänä vokaalina "oo" ja loppu-a epämääräisenä vokaalina. Eikö tällöin voi sanoa, että sana on lainautunut englantiin ja muuttunut osaksi englannin kieltä? Tilanne on toinen, jos englanninkielisessä tekstissä esiintyy sellaisia suomen sanoja, jotka eivät ole mitenkään yleisesti tunnettuja. Ne on syytä merkata suomenkielisiksi.
Erityisiä ongelmia voi periaatteellisesti ehkä oikea kielimerkkaus aiheuttaa silloin, kun teksti on translitteroitua tai transkriboitua eli se on tavalla tai toisella siirretty toiseen kirjoitusjärjestelmään, esimerkiksi japanin sana kirjoitettu latinalaisin kirjaimin, esimerkiksi "kimono". Käsittelemme näitä ongelmia jäljempänä kohdassa Kirjoitusjärjestelmien vaikutus.
Käytännöllinen ratkaisu on ehkä se, että rajatapauksessa tulkitaan sanan olevan sitä kieltä, jota ympäröivä teksti on. Näin vältetään esimerkiksi puhesynteesissä häiritsevät lainanantajakielen mukaiset ääntämykset sanoissa, joissa sitä ei ole tapana käyttää. Lisäksi tämä on helppo ratkaisu, koska se vähentää merkkauksen määrää: sanan kieltä ei erikseen merkata vaan se määräytyy ympäröivän elementin kielestä. Puhesynteesissä ja yleensä puheessa pätee, että vieraista kielistä peräisin olevien sanojen "liian tarkka" ääntäminen häiritsee, kun ne esiintyvät tekstin seassa. Sen sijaan erillisissä lainauksissa tilanne on toinen; niissä mahdollisimman hyvä alkukielen mukainen ääntämys aiheellisesti korostaa eroa oman tekstin ja sitaatin välillä.
Sekakielisyyksiä syntyy myös tietämättömyyden ja tahallisen vääntelyn kautta. Miten pitäisi tulkita esimerkiksi hevosennimi "Kiikku's Vera", joka luetaan suomalaisittain "Kiikkus Veera" mutta jossa on selvästikin tarkoitettu käyttää englannin genetiiviä?
Myös eläinten, kasvien ja muiden eliöiden
ja eliöryhmien
tieteelliset ("latinalaiset") nimet
ovat ongelmallisia. Ne noudattavat pääosin
latinan kielen kirjoitussääntöjä ja muutamia latinan kielioppisääntöjäkin,
ja niiden ääntämys on lähinnä latinan mukainen, mutta niihin sisältyy
runsaasti kreikan sanoja latinisoidussa asussa ja muistakin kielistä
otettuja sanoja. Kaiken kaikkiaan lienee parasta merkata kieleksi
latina mutta tietoisena siitä, että tästä voi seurata ongelmia. Esimerkki:
<i lang="la">Anas platyrhynchos</i>
Entä lyhenteen kieli? Mitä kieltä on "IPA" tai "USA"?
Ne luetaan suomessa yleensä joko käyttäen suomenkielisiä kirjainten nimiä
(ii pee aa, uu es aa) taikka ikäänkuin ne olisivat suomen sanoja (ipa, usa).
Käytännöllinen menettelytapa on, että niiden tulkitaan olevan sitä
kieltä, jossa niitä kulloinkin käytetään, paitsi jos ne on tarkoitus
todella lukea alkukielen mukaisesti. Tämä siis merkitsee, että
mitään erillistä merkkausta ei käytetä. Poikkeuksena olisi
esimerkiksi lyhenne BBC, koska se on tapana
suomessa lukea lausumalla kirjainten englanninkieliset nimet, siis
suunnilleen "bii bii sii". Silloin sopiva merkkaus olisi
<abbr lang="en">BBC</abbr>
Periaatteessa eräiden suositusten mukaan pitäisi
ilmoittaa title
-määritteellä lyhenteen "lavennus"
ainakin, kun lyhenne esiintyy ensi kerran, siis esimerkiksi
<abbr lang="en" title="British Broadcasting Company">BBC</abbr>
Tähän liittyy kuitenkin monia ongelmia, joista yksi on se, että
puhesyntetisaattori saattaisi tulkita tilanteen niin, että sen pitää
lukea lyhenne "avattuna".
Sanaa "kieli" käytetään yleisesti myös puhuttaessa erilaisista merkintätavoista kuten "matematiikan kielestä" tai "ohjelmointikielistä" tai "merkkauskielistä". Tämä aiheuttaa paljon sekaannuksia, kuten olen kuvannut dokumentissa Datatekniikan "kielet" - ehdotus käsitteiden selvennykseksi ja luokitteluksi.
Tässä tarkastellun kielimerkkauksen yhteydessä on kyse aina "oikeista" kielistä, sellaisista, joita ihmiset käyttävät puheessa ja kirjoituksessa, tai ainakin niitä vastaavista kielistä kuten kuvitteellisista kielistä, joita käytetään ihmiskielten tapaan, vaikkapa Keski-Maan haltiakieli tai klingonien kieli. Kyse ei välttämättä ole elävästä kielestä vaan myös esimerkiksi muinaisegypti, jonka suoranaisesti tunnemme vain kirjoitettuna, on ilman muuta kieli. Myös niin sanotut keinotekoiset kielet eli suunnitelmakielet (artificial languages, constructed languages) kuten volapük tai esperanto kuuluvat ilman muuta joukkoon, ainakin jos ne on suunniteltu samanlaiseen käyttöön kuin luonnolliset kielet. Tosin suunnitelmakieliä on tehty hyvin monenlaisia, ja jotkin niistä voitaisiin ehkä luokitella koodijärjestelmän ja ihmisten kieleksi tarkoitetun rakennelman välimaastoon.
Mutta ulkopuolelle siis jäävät monet "kieliksi" kutsutut
merkintätavat, kuten esimerkiksi merkkauskieli HTML,
tyylisääntökieli CSS tai ohjelmointikieli C.
Kielikoodijärjestelmien määrittelyissä usein erikseen sanotaan,
että ne on tarkoitettu ihmisten kieliä (human
languages), ei tietokonekieliä varten.
Miten sitten olisi meneteltävä, jos dokumentissa esitetään
sellaisilla "kielillä" kirjoitettuja ilmaisuja eli jos vaikkapa
haluaisimme puhua CSS:n font-family
-ominaisuudesta
nimeltä? Missään tapauksessa ei pidä ruveta antamaan vaikkapa CSS:lle
kielikoodia ja käyttämään sitä. Eri asia on, että voisi olla hyvä, jos
käytetyn koodin, merkintätavan, voisi ilmaista merkkauksella.
Mutta tämä on pidettävä erossa kielimerkkauksesta.
Epäselvää on, tulisiko "tietokonekielten" ilmaisujen
yhteydessä aina käyttää
code
-merkkausta HTML:ssä. Usein kyseistä merkkausta käytetään
ulkoasun takia, tasalevyisen fontin aikaansaamiseksi. Mutta voisiko
sillä olla myös looginen merkitys? Mielestäni voisi, koska
code
-elementin määrittely
sanoo:
"Designates a fragment of computer code."
Esimerkiksi kielenkäännösohjelma (tai ihmiskääntäjä) voisi siitä
päätellä, että ilmaisu on käännöksessä jätettävä sellaisekseen,
vaikka se näyttäisi osittain olevan englantia. Valitettavasti
nykyiset käännösohjelmat eivät näytä niin tekevän.
Mutta olisiko mainitunlaisten "kielten" yhteydessä kuitenkin
käytettävä kielimerkkausta silloin, kun niissä esiintyvät merkkijonot
on otettu jostain luonnollisesta kielestä?
On selvää, että esimerkiksi
merkkijonoa "function" ei pidä kääntää, kun se viittaa
ohjelmointikielen varattuun sanaan.
Mutta toisaalta
se pitäisi lausua englannin mukaan, ainakin suunnilleen.
Tämä on hankala kysymys etenkin, jos dokumentissa esiintyy paljon
koodia. Puhe-esityksen kannalta ongelmana on, että esimerkiksi
HTML-koodissa tai lähdekielisessä tietokoneohjelmassa on sekaisin
englannista otettuja varattuja sanoja, välimerkkejä ja eri kielistä
otettuja sanoja tai sanantapaisia ilmaisuja. Miten esimerkiksi
seuraava pitäisi lukea ääneen?
<table class="tilasto">
Esimerkki osoittaa pieneltä osaltaan, että on
mielekästä liittää koodinpätkään kielimäärite, joka on
loogisesti riippumaton siitä, mikä on käytetty koodijärjestelmä,
kuten tietokonekieli. Esimerkissämme merkkijono tilasto
on yhtäältä osa HTML-merkkausta, toisaalta suomen kieltä siinä
mielessä, että ääneen luettaessa se pitäisi lausua suomen
sääntöken mukaan.
Ehkäpä voimme ainakin toistaiseksi lähteä siitä, että jos esimerkiksi HTML-, CSS- tai C-koodia kuunnellaan, kuulija ymmärtää englannista peräisin otetut sanat lausuttuina sen kielen mukaan, jolla dokumentti muutoin on kirjoitettu. Lausutaanhan sellaiset sanat muutenkin usein "kirjaimellisesti", esimerkiksi suomen mukaan luettuina. Se, että koodin eri osille kirjoitettaisiin erikseen kielimerkkaus, olisi huomattavan työlästä eikä tuottaisi mitään selvää käytännön etua.
"Tietokonekieliin" otetut englannin sanat on usein
typistetty, esimerkiksi "lang
", tai sanoja on sekä
katkottu että yhdistelty, esimerkiksi "charset
".
Onpa niitä myös kirjoitettu väärin. Esimerkiksi HTTP-protokollan erään
otsakkeen nimi on "Referer
", koska joku alun perin kirjoitti
englannin sanan "referrer" väärin.
Kun se on kerran otettu protokollaan, sitä ei enää haluta muuttaa.
Monia virheellisiä kirjoitusasuja sisältyy myös eliöiden tieteellisiin
nimiin. Valitettavasti ei kielimerkkaukseen sisälly mitään tapaa
ilmoittaa, että jokin sana on tiettyä kieltä mutta väärin
kirjoitettu.
Tavallaan kielten ja notaatioiden välimaastoon kuuluvat sellaiset teksti-ilmaisut kuin SI-mittajärjestelmän mukaiset suureiden arvojen merkinnät, vaikkapa "40 km/h". Ne ovat osa yleismaailmallista järjestelmää ja ne tulisi aina kirjoittaa samalla tavoin, ympäröivästä kielestä riippumatta. Sen sijaan ne luetaan ympäröivän kielen mukaan, esimerkiksi "neljäkymmentä kilometriä tunnissa" tai "fourty kilometers per hour". Jälkimmäinen hoituu sillä, että ilmaisulle itselleen ei ole kielimerkkausta vaan sen kieli määräytyy tekstin rakenteen ylemmällä tasolla olevasta merkkauksesta. Sen sijaan kirjoitusasun osoittaminen kieliriippumattomaksi, niin että se esimerkiksi käännettäessä tulee pitää samana, vaatisi periaatteessa erityisen merkkauksen; käytännössä ei sopivaa merkkausta ole nykyisin käytettävissä.
Edellä mainittiin ISO 639:n kuvauksessa
erikoiskoodit mul
ja und
. Niiden määritelmät
standardissa ovat:
The language code mul (for multiple languages) should be applied when several languages are used and it is not practical to specify all the appropriate language codes.
The language code und (for undetermined) is provided for those situations in which a language or languages must be indicated but the language cannot be identified.
Koodia und
on voisi ajatella käytettävän
useissa
tilanteissa, jotka ovat itse asiassa varsin erilaisia:
kieltä ei tunneta; kieli on
tunnettu mutta sille ei ole koodia ISO 639-2:ssa; tekstille on
ilmoitettava kieli, mutta se ei ole mitään ihmisten kieltä vaan
esimerkiksi tietokonekoodia tai salasana. Toisaalta
ISO 639 FAQ mainitsee mahdollisuuden
käyttää kolmea välilyöntiä, jos
"a language code is not applicable because
there is no sung, spoken, or written textual content".
Yleisesti kielikoodijärjestelmissä on varsin epätyydyttävästi ratkaistu se, miten menetellään, kun mitään kielikoodia ei voi käyttää.
Mahdollisia tapauksia on useita erilaisia:
x-
-alkuista koodia.
Toisaalta voidaan käyttää kielikoodia mis
, joka
on tarkoitettu kielille, joilla ei ole omaa koodia ja joita
ei voida ilmaista myöskään kieliryhmäkohtaisilla koodeilla
(kuten fiu
, joka tarkoittaa niitä suomalais-ugrilaisia
kieliä, joilla ei ole omaa koodia).
lang
-määritteen oletusarvo
on "unknown". Toinen tapa tulkita määrittelyä
on, että oletusarvona olisi, että sisältö on tuntematonta kieltä
edellä kuvatussa merkityksessä.
Kuitenkin Internetin kielikoodikäytäntöjen perustan
määrittelevä
RFC 3066
sanoo (kohdassa 2.3), että und
-koodia ei
saa käyttää, ellei protokolla pakota ilmaisemaan kielikoodin silloinkin,
kun kieli on tuntematon:
You SHOULD NOT use the UND (Undetermined) code unless the protocol
in use forces you to give a value for the language tag, even if
the language is unknown. Omitting the tag is preferred.
Tämä merkitsee, että esimerkiksi HTML:ssä ei oikeastaan pitäisi
käyttää määritettä lang="und"
koskaan, koska
lang
-määrite ei ole pakollinen! Mutta tällöin jäisi ilmaisematta
se olennainen ero, mikä on niiden tilanteiden välillä, että
kieltä ei ole viitsitty yrittääkään kertoa, ja että kielimerkkausta
käytetään järjestelmällisesti ja osa tekstistä on tuntematonta
kieltä.
Koodia mul
ei liene koskaan syytä käyttää
kielimerkkauksessa eikä juuri muulloinkaan.
Kielimerkkauksessahan voidaan ylimmän tason elementti merkata
pääkielen mukaan ja alimman tason elementit kukin oman kielensä
mukaan, tarvittaessa lisäten merkkauselementtejä vain tätä varten.
Lisäksi edellä mainittu RFC௺ erikseen sanoo, että
mul
-koodia ei tulisi käyttää silloin, kun protokolla
mahdollistaa useiden kielten ilmaisemisen, kuten
Content-Language
-otsakkeessa
(josta kerrotaan
kielivalintamekanismin kuvauksessa).
Kirjoitusjärjestelmä, englanniksi script, tarkoittaa ihmiskielen kirjoittamisen perusmenetelmää. Se voi olla aakkoskirjoitusta, tavukirjoitusta, sanakirjoitusta tms. Käytännössä erotetaan toisistaan joukko suuria kirjoitusjärjestelmiä, kuten latinalainen, kyrillinen, kreikkalainen, kiinalainen, hieroglyfit ym. Samasta kirjoitusjärjestelmästä on erilaisia muunnelmia ainakin merkistön tasolla. Esimerkiksi suomi ja ranska käyttävät latinalaista kirjoitusjärjestelmää, mutta erilaisia lisämerkkejä käyttäen.
Periaatteessa kirjoitusjärjestelmä on erotettava kielestä. Jos esimerkiksi venäjää kirjoitetaan latinalaisin kirjaimin, se on edelleen venäjää. Itse asiassahan monet kielet ovat vaihtaneet kirjoitusjärjestelmää aikojen kuluessa, eikä tähän sisälly, että itse kieli silloin muuttuisi toiseksi.
Toistaiseksi ei ole määritelty mitään tapaa merkkauksessa ilmoittaa, mikä on käytetty kirjoitusjärjestelmä. Käytännössä sen oletetaan olevan se, mitä kullekin kielelle yleisimmin käytetään. Vertaa kohtaan Riittääkö kielikoodi?
Loogista olisi, että kieli ja kirjoitusjärjestelmä ilmaistaan toisistaan riippumatta. Täten on erikoista, että IANAn rekisteriin on otettu koodeja, joissa kirjoitusjärjestelmä ilmaistaan kielikoodin nelikirjaimisella alakoodilla, esimerkiksi siten, ettäaz-Cyrl
tarkoittaa
kyrillisin kirjaimin kirjoitettua azeria ja
az-Latn
latinalaisin kirjaimin kirjoitettua azeria.
Ääntämisohjeet ovat tavallaan kielen ja muun notaation välimaastossa oleva asia. Jos kirjoitan, että englannin sana "people" ääntyy suunnilleen "piipl", niin mitä kieltä "piipl" on? Periaatteessa voisimme sanoa, että se on englantia mutta kirjoitettuna englannin normaalista kirjoitusjärjestelmästä poikkeavasti. Parasta lienee käytännössä jättää kielimerkkaus pois, koska puhesynteesissä tulos voisi olla absurdi, kun ohjelma yrittää lukea ilmaisun "piipl" englannin sääntöjen mukaan. Oikeastaan tarvitsisimme tavan kertoa kirjoitusjärjestelmä. Sen ei tarvitsisi olla muuta kuin tapa kertoa, että jokin ilmaisu luetaan vaikkapa suomen kielen sääntöjen mukaan mutta sitä ei muutoin käsitellä suomenkielisenä. - Tässä käytettiin yksinkertaisuuden vuoksi esimerkkinä suomen kielen sääntöjen mukaan kirjoitettua ääntämisohjetta. Usein käytetään järjestelmiä, joissa on erilaisia lisämerkkejä ehkä hyvinkin paljon ja jotka on usein pyritty tekemään hyvinkin täsmällisiksi, esimerkiksi IPA-kirjoitus. Koska IPA-kirjoituksen lukemisen oikea tapa kielestä riippumatonta, niin IPA:lla esitetyn ääntämisohjeen voi merkata tekstin kielen mukaiseksi.
Entä mitä pitäisi ajatella sellaisista ilmaisuista kuin "tuu tii to tööti tuu", jonka on tarkoitus parodioida huonoa englannin taitoa, tarkemmin sanoen esittää ilmaisun "two tea to thirty-two" kehnoa ääntämystä? Niihin voi suhtautua kuten yksinkertaisiin ääntämisohjeisiin, joissa ääntämys esitetään suomen kirjoitusjärjestelmän mukaan. Käytännössä siis on parasta jättää kielimerkkaus pois.
Se, että kirjoitusjärjestelmää ei voi ilmoittaa, aiheuttaa
ongelmia myös silloin, kun teksti esitetään käyttäen jotakin
translitteraatiota tai transkriptiota.
Silloin teksti kirjoitetaan eri kirjoitusjärjestelmällä kuin sillä,
jolla kyseistä kieltä normaalisti esitetään.
Jos esimerkiksi halutaan kirjoittaa kreikkalainen nimi latinalaisin
kirjaimin,
niin tulisiko käyttää sentapaista
merkkausta
<span lang="el">Stephanos Piperoglou</span>
?
Ainakaan puhesyntetisaattori ei voi tuottaa kovin hyvää tulosta,
koska se ei tiedä, mitä translitterointimenetelmää on käytetty.
Käytössä on useita erilaisia
kreikan translitteroinnin ja
transkription menetelmiä.
Ongelma on vielä suurempi esimerkiksi
venäläisten nimien osalta, koska
niille käytetään hyvin monenlaisia translitterointeja.
Esimerkiksi merkkauksesta
<i lang="ru">chas</i>
ei ohjelma voi edes
periaatteessa tietää, tarkoitetaanko venäjän
sanaa
час 'tunti', kuten
tarkoitetaan, jos translitterointi
on tulkittava englannissa vallitsevan käytännön mukaan, vaiko ehkä
шас ranskalaisen translitteraation mukaan tai
хас saksalaisen translitteraation mukaan tai
kenties
цхас
kansainvälisen standardin (ISO 9) mukaan.
Ohjelman voi tuskin olettaa tarkistavan sanakirjoista, mitkä
tulkinnoista vastaavat todellisia sanoja, varsinkaan, kun kieli muuttuu
ja tekstissä voidaan toki käyttää myös keksittyjä ja kuvitteellisia sanoja.
(Näitä vastaavat suomen kielen mukaiset translitteroinnit ovat
tšas,
šas,
has ja
tshas.
Ks. sivua Venäjän translitterointi.)
On kaksi isohkoa käytännön ongelmaa, joiden takia on ehkä parempi välttää kielimerkkausta silloin, kun teksti on translitteroitu tai transkriboitu eli siirretty toiseen kirjoitusjärjestelmään:
<p>Mielikirjailijani
on <span lang="ru">Dostojevski</span>.</p>
<p>Luen mielelläni <span lang="ja">manga</span>-sarjakuvia.</p>
Mozillassa on erityiset asetukset, joissa voi valita, mitä fontteja selain käyttää erikielisten tekstien esittämiseen. Oletusarvot ovat sellaiset, että esimerkiksi japaninkielisen tekstin fontti on myös latinalaisten merkkien osalta erilainen kuin "länsieurooppalaisen", mistä seuraa yllä kuvattu ilmiö. Aiheesta kertoo lisää Alan Flavellin sivu I18n - Browsers and fonts kohdassa Mozilla.
Ongelma voi ilmetä myös silloin, kun suomenkielisellä sivulla on esimerkiksi puolankielisiä sanoja, joille on käytetty kielimerkkausta. Jos sivulla ei aseteta tekstin fonttia, Mozilla tällöin käyttää kyseisille sanoille sitä fonttia, joka on Mozillan asetuksissa liitetty keskieurooppalaiseen merkistöön. Tällöin tekstin ulkoasu voi ikävästikin poiketa muun tekstin asusta. Käytännössä ongelma on pieni, koska Mozillan oletusasetukset keskieurooppalaisen merkistön fonteille ovat samat kuin länsieurooppalaisen merkistön fonteille.
Edellä kuvatut fonttiongelmat voidaan välttää
asettamalla tekstin fontti erikseen, esimerkiksi CSS-säännöllä
body { font-family: Arial, sans-serif; }
sillä Mozillan fontinvalintasäännöt koskevat vain tilannetta,
jossa sivu jättää fonttien valinnan selainten tehtäväksi.
Kielimerkkaus voi vaikuttaa siihen, millä tavoin selain esittää ns. kiinalais-japanilais-korealaiset kirjoitusmerkit (CJK-merkit). Unicodessa ne on yhtenäistetty niin, että kielieroa ei oteta huomioon merkkien (koodien) tasolla, vaikka merkeistä käytetään eri kielissä osittain erilaisia muotoja. Selain saattaa kuitenkin ottaa kielieron huomioon, jos kieli on ilmoitettu merkkauksessa.
Seuraava taulukko esittää erään CJK-merkin (U+9FA5) ensin ilman kielimerkkausta, sitten kolmea eri kielimerkkausta käyttäen. Esimerkiksi Mozilla (ja Firefox) esittää oletusarvoisesti merkin eri tavoilla kielimerkkauksen mukaan siten, että se käyttää japanin mukaista esitystä, jos kieltä ei ole ilmoitettu (tai jos ilmoitettu kieli ei ole sellainen, jossa käytetään CJK-merkkejä). Jotta erot olisi helpompi havaita, on merkki esitetty tässä hyvin isokokoisena.
merkkaus | merkki | kieli |
---|---|---|
龥 | 龥 | ei ilmoitettu |
<span lang="zh">龥</span> | 龥 | kiina (yksinkertaistettu kirjoitusjärjestelmä) |
<span lang="zh-Hant">龥</span> | 龥 | kiina (perinteinen kirjoitusjärjestelmä) |
<span lang="ja">龥</span> | 龥 | japani |
Kiinan kieltä kirjoitetaan sekä ns. perinteisellä
(traditional)
että
ns. yksinkertaistetulla (simplified)
kirjoitusjärjestelmällä. Näitä ei kuitenkaan aiemman
käytännön mukaan erotettu
toisistaan loogisella koodauksella vaan maakoodeilla siten, että
zh-CN
(missä CN
on Kiinan maakoodi) tai
pelkkä zh
tarkoittavat yksinkertaistettua ja
zh-TW
(missä TW
on maakoodi, joka on
annettu Taiwanille) tarkoittaa perinteistä kirjoitusjärjestelmää.
Maakoodien käyttö perustuu siihen, että Kiinassa käytetään
enimmäkseen yksinkertaistettua järjestelmää mutta Taiwanin
maakunnassa perinteistä.
Jotkin ohjelmat saattavat edelleenkin tukea vain sellaista
menetelmää.
Loogisempi ratkaisu on käyttää alakoodeja, jotka on erikseen
rekisteröity tähän tarkoitukseen:
zh-Hans
tarkoittaa yksinkertaistettua,
zh-Hant
perinteistä
kirjoitusjärjestelmää. Käytännössä pelkkä
zh
tarkoittaa yleensä samaa kuin
zh-Hans
.
Kielissä, joissa sanoja taivutetaan, saattaa käydä niin,
että vieraskieliseen vartaloon liitetään omakielinen pääte.
Tällöin tarkin kielimerkkaus osoittaisi sanan eri osat erikielisiksi,
esimerkiksi
Kävin <span lang="fr">Marseille</span>ssa.
Mutta kannattaneeko sanan osille olla kielimerkkaus? Periaatteessa se on oikein, mutta se saattaa käytännössä aiheuttaa ikävän katkoksen puhesynteesissä, jopa sen, että syntetisaattori yrittää lausua pääteaineksen kuten "-ssa" erikseen. Lisäksi syntyy usein hankalia tilanteita:
<span lang="fr">Voltaire</span>n
Hakukoneiden kannalta ongelmana on se, että jotkin
hakukoneet (mm. AltaVista) käsittelevät sellaista ilmaisua kuin
<span lang="fr">Voltaire</span>n
yhtenä sanana (Voltairen), jotkin (mm. Google) kahtena
(Voltaire n).
Käytännön neuvo: Vältä vieraiden sanojen taivutusta, sitä enemmän, mitä oudommasta sanasta on kyse. Näin vältetään edellä kuvatut ongelmat. Mihinkään kielenvastaisuuteen ei tietenkään pidä mennä, mutta usein on helppoa muotoilla lauseet niin, että hankala sana saadaan asemaan, jossa se on kieliopin mukaan perusmuodossa. Neuvoon on usein muitakin syitä, kuten se, että taivutetusta muodosta ei lukija aina osaa päätellä, mikä on perusmuoto, ja se, että päätteen merkitseminen on osittain vakiintumatonta. Pitääkö sanoa "Netscapella" vaiko ääntämyksessä käytetyn päätteen mukaisesti "Netscapellä", joka taas oudoksuttaa joitakuita (vaikka onkin ääntämyksen mukainen)? Ongelma vältetään kirjoittamalla "Netscape-ohjelmalla" tai "Netscape-selaimella", jolloin myös kielimerkkaus on helppo kirjoittaa.
Kielitieteessä ja muutoin kieltä kuvattaessa saattaa sananosa
esiintyä irrallisenakin, esimerkiksi ilmaisuissa
"latinassa esiintyy liitepartikkeli '-que'"
ja
"the suffix of the inessive case in Finnish is
'-ssa'
or
'-ssä'".
Periaatteessa tällöin on oikein merkata
niiden kieli erikseen, jos se poikkeaa ympäröivän tekstin kielestä, siis
esimerkiksi
latinassa esiintyy liitepartikkeli '<span lang="la">-que</span>'
.
Eräät HTML-merkkaukseen sisältyvät tekstit ovat
määritteiden (attribuuttien) arvoja tai muuten sellaisia,
että niiden tulee olla pelkkää tekstiä, niin että niiden
sisällä ei voi olla merkkausta. Elementtiin saattaisi liittyä
esimerkiksi määrite
title="Presidentti Richard Nixon"
Miten voitaisiin ilmoittaa, että määritteen arvon eri osat ovat
eri kieltä? Eipä mitenkään. Sama koskee esimerkiksi
option
-elementin sisältöä, jonka tulee HTML:n määritelmän
mukaan olla pelkkää tekstiä. Voimme kyllä kirjoittaa
<option>New York</option>
mutta entäpä jos elementin tekstissä pitäisikin olla kahta kieltä?
Tähän ei siis ole mitään yleistä käytännöllistä ratkaisua.
Joskus kyllä ongelma voidaan kiertää käyttämällä HTML:ssä
sellaista rakennetta, jossa merkkaus on sallittu; esimerkiksi
select
- ja option
-elementeillä
tehty valikko voidaan korvata
joukolla input
-elementtejä ja niihin liittyviä tekstejä.
Ongelma havainnollistaa sitä, että määritteissä ei pitäisi olla dokumentin sisältöön kuuluvaa asiaa. Teoreettiselta kannalta olen hiukan käsitellyt tätä HTML:n suunnitteluvirhettä kirjoituksessani Empty elements in SGML, HTML, XML, and XHTML, kohdassa Data hidden in attributes.
Eräs tähän liittyvä ongelma on kuitenkin osittain ratkaistavissa,
joskin kömpelösti. Joskus
määritteen kieli on toinen kuin elementin sisällön.
Huomattakoon, että lang
-määrite on määritelty niin,
että se ilmoittaa elementin sisällön
ja määritteiden kielen. Tämä täytynee tulkita niin,
että se vaikuttaa myös taaksepäin määritteiden listassa. Esimerkiksi
<a title="HTML 4.01 specification" lang="en">
on tulkittava niin, että lang
-määrite vaikuttaa myös sitä
edeltävään title
-määritteeseen.
(Tosin käytännössä kannattaa varmaankin kirjoittaa määritteet toiseen
järjestykseen.)
Mutta miten menetellään,
jos esimerkiksi linkin teksti suomea mutta
title
-määrite englantia, kuten luonnollista on, jos
linkin kohde on englanninkielinen.
Tällöin lienee ainoa tapa saada kielimerkkaus täysin oikeaksi se, että
elementin sisällä käytetään ylimääräistä merkkausta, jolla sinne
saadaan erilainen kielimäärite:
<a lang="en" title="HTML 4.01 specification"><span lang="fi">HTML-spesifikaatio</span></a>
HTML-spesikaation lang
-määritettä koskeva kohta
sanoo, että tämä määrite ilmoittaa
elementin sisällön ja määritteiden kielen.
XML-spesifikaation kuvaus xml:lang
-määritteestä
esittää samanlaisen periaatteen hiukan toisin sanoin.
Tätä lienee tulkittava
niin, että se vaikuttaa myös määritelistassa taaksepäin, joten esimerkiksi
<a href="foo.html" title="Hello world" lang="en">
ilmoittaa, että myös teksti "Hello world" on
englantia. Aika näyttää, tulevatko selaimet ja muut ohjelmat toimimaan
tämän mukaan. Ei ole vaikeaa kuvitella, että huolimattoman
ohjelmoinnin takia tapahtuu toisin.
Tästä seuraa ongelma: Entäs jos meillä on esimerkiksi linkki, jonka
linkkiteksti on suomea mutta title
-määrite englantia, koska
linkki viittaa englanninkieliseen dokumenttiin? Tilanne ei ole mitenkään
keinotekoinen, vaan usein on hyödyllistä antaa
title
-määritteellä vihje siitä, mihin linkki viittaa,
ja vihjeen englanninkielisyys on lisävihje. Mutta jos kirjoitamme
suomenkieliseen dokumenttiin esimerkiksi
<a href="http://www.faqs.org/rfcs/rfc3066.html"
lang="en" title="Tags for the Identification of Languages">RFC 3066</a>
niin silloin kyllä ohjelmille kerrotaan oikein, mikä on
title
-määritteen kieli (ja tämän ansiosta puhesyntetisaattori
voisi lukea sen oikein) mutta samalla väitetään, että merkkijono
RFC 3066 on englantia. Tästä taas seuraisi, että puhesyntetisaattori
tekisi merkkauksen pohjalta tulkittuna oikein lukiessaan linkin nimen
englanniksi, siis suunnilleen "aar ef sii thrii ou siks siks", ja tämä olisi
aika häiritsevää.
Jos riski tuntuu todelliselta, niin sen voisi periaatteessa
välttää käyttämällä lisämerkkausta, jossa elementin sisällä kerrotaan
sisällön kieli:
<a href="http://www.faqs.org/rfcs/rfc3066.html"
lang="en" title="Tags for the Identification of Languages"><span lang="fi">RFC 3066</span></a>
Eri asia sitten on, moniko jaksaa niin tehdä. Helpointa tällaisessa
tilanteessa on jättää lang
-määrite kokonaan pois.
Mitä merkitystä voisi olla esimerkiksi HTML:n
img
-tai object
-elementin kielellä?
Aluksi on huomattava, että niille kuville ja muille objekteille,
jotka liitetään mukaan kyseisten elementtien avulla, voi olla
tekstivaihtoehto, ja yleensä pitäisikin olla.
Koska object
-elementin tapauksessa vaihtoehto ilmoitetaan
elementin sisällössä, jossa merkkaus on sallittu, voidaan kieli
ilmoittaa elementin sisällä. Mutta
img
-elementin tapauksessa tekstivaihto ilmoitetaan
alt
-määritteellä, joten sen kieli pitää ilmoittaa
joko img
-tägissä tai sitten sen ulkopuolella.
Lisäksi itse kuva tai objekti voi sisältää tekstiä. Tämä on hyvin ilmeistä, jos objekti on ääni- tai videotiedosto, mutta kuvassakin voi näkyä tekstejä - tai itse kuva voi olla logo tai muu kuvana esitetty teksti. Jos kyse on esimerkiksi äänitiedostosta, ei kielimerkkauksella tietenkään ole merkitystä puhesynteesille, mutta ei toisaalta ole mitään syytä olla ilmoittamatta kieltä. Se on kuitenkin olennaista informaatiota, jolle voi joskus tulla käyttöä.
Kuvalle tai objektille ei tietenkään tarvitse erikseen ilmoittaa
kieltä, jos kieli on sama kuin ympäröivän elementin kieli. Mutta
jos suomenkielisellä sivulla on vaikkapa sana
Google logokuvana, on hyvä käyttää
tämäntapaista merkkausta:
<img lang="en" alt="Google" src="google.gif">
Seuraava osa: Muita erityiskysymyksiä