Viime viikon aikana olen pohtinut parasta tapaa tehdä
kansainvälinen ASP.NET MVC 5 -sovellus. Alkuun riittäisi se, että
käyttöliittymä olisi suomeksi ja englanniksi. Alkuun luin muutamia
blogitekstejä aiheesta, mutta kovin syvällistä osaamista ei monessakaan ollut
ja suurin osa oli jo hieman vanhentunutta tietoa. Täydentelen tätä tekstiä
myöhemmin, mutta tässä ensimmäiset ajatukset ja muistiinpanot.
Käsitteet
I18N
|
Internationalization
|
Kansainvälistäminen. Tämä tarkoittaa ohjelman tai nettisivun tekemistä siten, että
lähdekoodiin ei tarvitse tehdä muutoksia, kun uusi kieli tai kulttuuri
lisätään.
|
L10N
|
Localization
|
Lokalisointi tarkoittaa varsinaista työtä eli kääntämistä, mahdollisia
ulkoasumuutoksia tekstien sovittamiseksi, paikallisia kuvia jne.
|
I18N+L10N
|
Globalization
|
Tämä viittaa molempiin yllä oleviin eli kaikkeen kulttuuri- ja
kielitukeen liittyvään työhön.
|
Kulttuuri ja kieli
|
|
Samassa kulttuurissa voi olla kaksi eri kieltä kuten Suomessa suomi
ja ruotsi. Toisaalta samaa kieltä voidaan puhua eri kulttuureissa, jolloin
mitat ja rahayksiköt voivat erota (esimerkiksi englanti eri maissa).
|
Kattavuus ja mahdolliset ongelmakohdat
Monesti lokalisoinnista tulee mieleen vain tekstien
kääntäminen. Sen sijaan pitää ottaa huomioon myös uusien tekstien sovittaminen
käyttöliittymään muun muassa eri css-tiedostojen avulla. Jotkin kuvat voivat
olla myös sellaisia, joita ei haluta näyttää joka maassa vaan halutaan tuoda
jotakin paikallista ja tuttua. Kulttuurien ja maiden mukaan vaihtuvat myös osoitteet (kansainväliset postinumerot), tittelit, rahayksiköt, mitat, numerosarjojen, kellon ja päivämäärien esitykset. Selaimen
tarjoamaan automaattiseen kulttuuritietoon ei voi luottaa vaan käyttäjälle
pitää aina antaa mahdollisuus valita myös toinen kieli.
Toteutustavat
ASP.NET MVC –sovelluksissa voi käyttää erilaisia toteutustapoja.
Microsoft on tuonut kulttuurituen mukaan frameworkiin, jonka avulla hoituu sekä
ajan että numeroiden esitykset. Myös yksinkertainen tekstien tuki on
resurssitiedostojen (esim. Resources.resx, Resources.fi.resx) kautta. Näiden
avulla ei kuitenkaan voi hoitaa kaikkea lokalisointia vaan on käytettävä apuluokkia
(Helper) kuten jokin imgHelper, joka hoitaa kuvan valinnan kielen mukaan. Erilaisten
osasivujen ja css:ien valintaan voi tehdä jonkinlaisen urlHelperin (Url.Content,
Html.Partial). Näitä apuluokkia löytyy valmiina hakukoneella. Myös
automaattiseen kääntämiseen on tehty Helper-luokkia. Ne hakevat käännöksen
jostakin netin käännöskoneesta (Bing translator, Google translator) ja
näyttävät sen.
Tietokannan käyttö
Toinen tapa on käyttää tietokantaa kaikkien tekstien ja
mahdollisesti myös kuvien tallennukseen, jolloin erillistä ohjelman kääntämistä
ja tiedostojen siirtelyä ei vaadita pieniä muutoksia tehdessä. Toki
tietokantaan on oltava silloin jokin järkevä käyttöliittymä. Hakukoneen avulla
löytyy joitakin valmiita paketteja tähän tarkoitukseen. Vaihtoehtoja kannattaa etsiä
Visual Studion NuGet-pakettienhallinassa hakusanalla globalization ja klikata niiden kotisivulle katsomaan lisätietoja.
Apuvälineitä
Resurssitiedostojen editointiin on varmasti useampiakin
työkaluja. Itse olen käyttänyt
Zeta Resource Editoria,
joka on ilmainen ja osaa näyttää kerralla useamman kieliversion sarakkeittain.
Siinä on myös Exceliin tuonti ja vienti.
Mitä kannattaa lukea seuraavaksi