tiistai 21. lokakuuta 2014

Nettisovellusten kansainvälistäminen ja lokalisointi

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

Suurin löytyneestä materiaalista oli tosiaan vanhaa, mutta AJ:n blogissa oli alle vuoden vanha juttu: AJ's Blog - ASP.NET MVC internationalization.

Ei kommentteja:

Lähetä kommentti