Verkkosivuston lokalisoiminen ja globalisoiminen on keskeinen osa monikielisten ja kansainvälisten sovellusten kehittämistä. ASP.NET Core tarjoaa laajat mahdollisuudet tämänkaltaisten sovellusten luomiseen, erityisesti mitä tulee kielellisten ja alueellisten asetusten huomioimiseen käyttäjän kulttuuristen mieltymysten mukaan. Tämä luku keskittyy erityisesti verkkosivuston lokalisoimiseen, käyttäen resursseja, jotka voivat muuttaa tekstejä ja datan esitystapaa käyttäjän kulttuurin mukaan. Lisäksi tarkastellaan, miten globalisoidaan ajankohdat, valuutat ja muut alueelliset arvot.
ASP.NET Core mahdollistaa verkkosivuston kustomoinnin niin, että sen ulkoasu ja sisällön kieli mukautuvat käyttäjän alueellisiin asetuksiin. Käytännössä tämä tarkoittaa, että paikallisia kielivaihtoehtoja voidaan tarjota resursseina, jotka voivat olla esimerkiksi HTML- tai tekstipohjaisia merkintöjä. Yksi tavallisimmista tavoista lokalisoida sisältöä on käyttää resursseja kuten IStringLocalizer ja IHtmlLocalizer. Näiden avulla voidaan kääntää yksittäisiä tekstejä, mutta myös varmistaa, että HTML-merkinnät eivät muutu tarpeettomasti. On kuitenkin tärkeää muistaa, että HTML-rakenne pysyy yleensä samana kaikilla alueilla, kun taas tekstit ja kielenkäyttö muuttuvat.
Lokalisoidun käyttöliittymän luominen alkaa resurssitiedostojen luomisella. Resurssitiedostot (.resx) ovat keskeinen osa ASP.NET Core -sovellusten lokalisointiprosessia. Näitä tiedostoja luodaan eri kielille ja alueille, kuten Yhdysvaltain englannille (en-US), Britannian englannille (en-GB) ja ranskalle (fr-FR). Tiedostot sisältävät avaimet ja niihin liittyvät käännökset, joita sovellus käyttää näyttääkseen oikean kielen.
Resurssitiedostojen luominen
Resurssitiedostojen luominen riippuu käytettävästä koodieditorista. Jos käytät Visual Studio 2022:ta, voit lisätä tiedostot suoraan projektin Resurssit-kansioon. Aluksi luodaan Views-kansio ja sen sisään Home-kansio, jossa resurssitiedostot luodaan. Ensimmäinen tiedosto voi olla nimeltään Index.en-US.resx, ja sen jälkeen luodaan muut tiedostot eri kielille, kuten Index.en-GB.resx (brittiläinen englanti) ja Index.fr-FR.resx (ranska). Käännökset määritellään suoraan resursseissa, ja ne voivat sisältää sellaisia avaimia kuten "Order ID", "Company Name" ja "Order Date".
Jos käytät Visual Studio Codea, tiedostojen luontiprosessi on hieman manuaalisempi, mutta perusperiaatteet ovat samat: tiedostot luodaan ja täytetään oikeilla käännöksillä.
Lokalisoiminen Razor-näkymissä
ASP.NET Core -sovelluksen Razor-näkymissä voidaan käyttää IViewLocalizer-palvelua, joka mahdollistaa lokalisoitujen merkkijonojen ja muiden sisältöjen käytön suoraan HTML-koodissa. Tämä palvelu voidaan injektoida näkymään, ja se tarjoaa metodit käännettyjen arvojen hakemiseen.
Razor-näkymän koodissa voidaan käyttää esimerkiksi seuraavaa rakennetta:
Tässä esimerkissä Localizer["Orders"] hakee käännetyn arvon määritellyistä resursseista. On tärkeää, että avaimet, kuten "Order ID" ja "Order Date", ovat hyvin määriteltyjä, jotta niille voidaan tarjota varmaksi palautettava käännös.
Globalisointi ja kulttuuriin sidotut asetukset
Verkkosivuston globalisointi ei rajoitu pelkästään tekstien kääntämiseen. On yhtä tärkeää huolehtia myös siitä, että sovelluksen tarjoamat ajankohtaiset ja valuutalliset tiedot vastavat oikeaa kulttuuria. ASP.NET Core mahdollistaa tätä käyttämällä RequestLocalization-palvelua. Tämä palvelu voi määrittää, minkä kulttuurin ja kielen sovellus käyttää perustuen käyttäjän asetuksiin, kuten selaimen kielivalintaan tai alueellisiin asetuksiin.
Sovelluksessa voidaan määrittää useita kulttuureja, jotka tukevat käyttäjän paikallista aikamuotoa, valuuttaa ja muita alueellisia erityispiirteitä. Näin varmistetaan, että kaikki käyttäjälle esitettävä data, kuten päivämäärät ja hinnat, on esitetty oikein ja kulttuurisesti relevantilla tavalla.
Paikalliset ja alueelliset asetukset
Kun käyttäjä vierailee verkkosivustolla, selain voi lähettää pyyntöjä kulttuuriin liittyen joko URL-parametreissä, evästeissä tai HTTP-otsikoissa. Esimerkiksi käyttäjä voi valita haluamansa kielen ja kulttuurin selainasetuksista, ja tämä vaikuttaa siihen, kuinka sivuston sisältö ja data esitetään. Tämä voidaan määrittää ASP.NET Core -sovelluksessa seuraavasti:
Tämä asettaa oletuskulttuuriksi Yhdysvaltain englannin ja tukee myös brittienglantia, ranskankielisiä alueita ja neutraalia ranskaa.
Käytännön huomioita
Tärkeintä, mitä tulee muistaa paikallisten ja alueellisten asetusten käytössä, on se, että vaikka käännökset voivat olla hyvin tarkkoja, HTML-rakenne, kuten taulukkorakenteet ja kenttien nimet, eivät yleensä muutu eri kulttuurien välillä. Tämä tarkoittaa, että vaikka sisältö voi muuttua (esimerkiksi "Company Name" muutetaan "Nom de l'entreprise" ranskaksi), itse sivun rakenne pysyy samana.
Lisäksi on suositeltavaa käyttää avaimia, jotka ovat selkeitä ja ymmärrettäviä kaikilla kulttuureilla, sillä nämä avaimet toimivat oletusarvoisina arvoina, mikäli käännös ei ole saatavilla. Tällöin varmistetaan, että sovellus ei jää täysin ilman sisältöä, vaikka paikallinen käännös puuttuisi.
Miten luoda ja hallita resursseja Azure Cosmos DB:ssä käyttäen Core (SQL) API:ta
Azure Cosmos DB tarjoaa laajan valikoiman työkaluja, joiden avulla voidaan luoda ja hallita tietokantoja, säiliöitä sekä käsitellä dataa NoSQL-muodossa. Tässä osassa tarkastellaan prosessia, jonka avulla luodaan tietokanta ja säiliö Cosmos DB:hen sekä hallitaan näitä resursseja SQL API:n avulla.
Kun käytämme Cosmos DB:tä paikallisessa emulaattorissa, määritämme tietokannan luomiseen tarvittavat tiedot, kuten päätepisteen URI:n ja avaimen. Esimerkiksi seuraavassa koodissa käytetään paikallista emulaattoria:
Paikallisessa emulaattorissa käytettävät tiedot ovat yleisesti saatavilla kaikille käyttäjille, mutta tuotantoympäristössä käytettävä päätepiste ja avain vaihtelevat tilin mukaan.
Kun luodaan tietokanta, on määritettävä tietokannan nimi sekä resurssien läpimeno (RU/s, eli request units per second). Esimerkiksi:
Tämä koodi tarkistaa, onko tietokanta jo olemassa, ja luo sen, jos sitä ei ole. Jos tietokanta jo löytyy, vastaus sisältää tilan, kuten 200 OK. Jos tietokanta luodaan onnistuneesti, vastaus on 201 Created.
Säiliö luodaan määrittelemällä sen nimi sekä osiotiedon polku, joka on tärkeä, koska se määrittää, miten dataa jaetaan säiliöön. Tässä esimerkissä käytetään polkua "/productId":
Tässä koodissa määritellään myös indeksointipolitiikka, joka kertoo, miten dataa indeksoidaan ja mitä polkuja indeksoidaan. Indeksoinnin avulla hakujen suorittaminen Cosmos DB:ssä on nopeampaa ja tehokkaampaa.
Kun säiliö on luotu, Cosmos DB:n palauttama vastaus sisältää säiliön tiedot, kuten sen id:n ja indeksipolitiikan:
Kun resurssit on luotu, niitä voi muokata, poistaa ja päivittää SQL API:lla. Cosmos DB:n SQL API on erittäin tehokas työkalu NoSQL-datan käsittelyyn ja mahdollistaa CRUD (Create, Read, Update, Delete) -toimintojen suorittamisen JSON-dokumenteille. Esimerkiksi tietyn tuotteen lukeminen voidaan suorittaa seuraavasti:
Tämä metodi lukee kohteen, jonka tunniste ja osiotieto on annettu. Vastaavasti, uuden kohteen lisääminen Cosmos DB:hen voidaan tehdä seuraavasti:
Tämä lisää uuden objektin tietokantaan. Jos kohde on jo olemassa ja sitä halutaan päivittää, voidaan käyttää seuraavaa metodia:
Tämän metodin avulla voidaan korvata olemassa oleva objekti uudella.
Tietokannan ja säiliöiden hallinnan lisäksi on tärkeää tietää myös, että kaikki Cosmos DB:n toiminnot, kuten luku, kirjoitus ja päivitys, aiheuttavat "request charge" -kulutuksen, joka mitataan RUs (Request Units) -yksiköissä. Tämä tieto on tärkeä resursseja hallittaessa, koska se auttaa optimoimaan kustannuksia.
Lopuksi, Cosmos DB:n emulaattorin ja pilvipalvelun välillä on eroja, erityisesti liittyen ympäristön kokoonpanoon ja resurssien hallintaan. On tärkeää varmistaa, että ympäristöt ovat oikein konfiguroituja ennen kuin aloitetaan suurten tietomäärien käsittely. Cosmos DB:n käytössä pilvessä on etuja, kuten skaalautuvuus ja globaali saatavuus, mutta paikallinen emulaattori on kätevä kehitystyökaluna.

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский