Selaimen laajennukset ovat ohjelmistokomponentteja, jotka integroituvat suoraan selaimeen ja laajentavat sen toiminnallisuutta. Toisin kuin tavalliset verkkosivut, jotka toimivat rajoitetusti yksittäisillä domaineilla ja välilehdillä, laajennukset voivat hallita ja tarkastella useita välilehtiä ja domaineja samanaikaisesti, mikä antaa niille huomattavasti laajemmat mahdollisuudet vaikuttaa selaimen tilaan ja käyttäjän kokemukseen. Laajennukset eivät myöskään aina tarvitse ollakseen riippuvaisia verkkosivuista; ne voivat toimia täysin itsenäisesti selaimen sisällä, vaikkakin monet niistä hyödyntävät sisältöskriptejä tai kehitystyökaluja verkkosivujen manipulointiin.
Laajennusten kyky hallita verkkoliikennettä on erityisen merkittävä. Kun laajennukselle myönnetään tarvittavat oikeudet, se voi toimia verkon pyynnön välikätenä, joka tarkastelee, muokkaa tai estää verkkopyyntöjä ennen kuin ne saavuttavat selaimen tai verkkosivun. Tämä mahdollistaa reaaliaikaisen liikenteen seurannan ja vaikuttamisen sekä pyyntöjen ehtojen perusteella tapahtuvan hallinnan.
Laajennukset koostuvat useista itsenäisistä, mutta toisiinsa liittyvistä osista. Keskeinen elementti on manifesti, joka on JSON-muotoinen konfiguraatiotiedosto (manifest.json), jossa määritellään laajennuksen perustiedot kuten nimi, kuvaus, versio, kuvakkeet ja kirjoittaja. Lisäksi manifestissa määritellään laajennuksen vaatimukset ja oikeudet, sisäänkäyntitiedostot taustaskripteille, ponnahdusikkunoille, valintasivuille ja sisällön skripteille. Myös säännöt verkkopyyntöjen hallintaan sekä mahdolliset käyttöoikeudet eri domaineille ilmoitetaan manifestissa. Tämän tiedoston merkitys on keskeinen, sillä se ohjaa laajennuksen toiminnallisuutta ja turvallisuutta.
Manifest-versioissa 2 ja 3 on tapahtunut merkittäviä muutoksia. Nykyisin Manifest V3 on käytännössä ainoa tuettu versio Chromium-pohjaisissa selaimissa, ja se muuttaa radikaalisti laajennusten suoritustapaa sekä käytettävissä olevia rajapintoja. Esimerkiksi taustaskriptien malli on muuttunut: Manifest V2:ssa taustaskriptit saattoivat olla joko pysyviä tai tapahtumapohjaisia, kun taas Manifest V3:ssa ne toimivat palvelintyöntekijöinä (service workers), jotka ovat tilapäisiä ja käynnistyvät tarpeen mukaan.
Taustaskriptit ovat laajennuksen keskeinen osa, jotka käsittelevät selaimen tapahtumia, kuten laajennuksen asennusta, poistamista, sivun latautumista tai kirjanmerkkien lisäämistä. Vaikka ne toimivat omassa JavaScript-ympäristössään, ne voivat kommunikoida muiden laajennuksen osien kanssa ja hyödyntää WebExtensions-rajapintoja.
Laajennusten käyttöliittymät muodostuvat useista eri sivutyypeistä. Ponnahdusikkuna (popup) avautuu, kun käyttäjä klikkaa laajennuksen kuvaketta työkalupalkissa. Se on lyhytaikainen, nopeasti käyttöön tuleva käyttöliittymä, joka sulkeutuu automaattisesti. Toisin kuin tavalliset verkkosivut, ponnahdusikkunalla on pääsy laajennuksen rajapintoihin ja se voi suorittaa laajennukselle ominaisia toimintoja. Vaihtoehtoisesti on vaihtoehtosivu (options page), joka avautuu erillisenä, laajemmin räätälöitävänä sivuna, jonka kautta käyttäjä voi muokata laajennuksen asetuksia tai suorittaa monimutkaisempia toimintoja. Lisäksi Chromium-pohjaisissa selaimissa on mahdollista käyttää sivupaneelia (side panel), joka avautuu selaimen sivulle ja tarjoaa pysyvämmän käyttöliittymän laajennukselle, integroituen suoraan selaimen näkymään.
Näiden perusosien ymmärtäminen on tärkeää, sillä selaimen laajennukset muodostavat monimutkaisen ekosysteemin, jossa eri komponentit ovat sekä itsenäisiä että keskenään vuorovaikutteisia. Tämä mahdollistaa laajennuksille joustavan ja tehokkaan tavan laajentaa selaimen toimintoja ja mukauttaa käyttäjäkokemusta.
Merkittävää on myös laajennusten turvallisuusnäkökulma. Manifestin kautta määritellyt oikeudet ja käyttöehdot rajoittavat laajennuksen toimintaa, estäen esimerkiksi luvattoman pääsyn käyttäjän tietoihin tai sivustojen manipuloinnin ilman selkeää lupaa. Tämä korostaa käyttäjän ja kehittäjän vastuuta sekä oikeuksien hallinnan tärkeyttä.
Selaimen laajennusten tekninen rakenne ja toimintaperiaatteet muodostavat perustan niiden kehittämiselle ja käytölle. Syvällinen ymmärrys manifestin roolista, taustaskripteistä, käyttöliittymäsivuista ja verkkopyyntöjen hallinnasta on välttämätöntä tehokkaiden ja turvallisten laajennusten luomiseksi.
Miten selainlaajennusten manifestit tukevat lokalisaatiota ja URL-kuvioita?
Selainlaajennusten manifestit mahdollistavat monipuolisen tuen eri kielille ja sisältöjen kohdistamisen eri URL-osoitteisiin tarkasti määritellyillä kuvioilla. Tämä lokalisaation ja kuvioiden käyttö on keskeinen osa laajennusten toimivuutta ja käyttäjäystävällisyyttä eri kielialueilla ja verkkoympäristöissä.
Manifestitiedostossa lokalisoituja merkkijonoja haetaan erikoismerkkijonojen, kuten MSG_extensionName, avulla. Selaimen puolella manifest määrittelee oletuskielen (default_locale), jonka mukaan se hakee _locales-kansiossa sijaitsevan kyseisen kielen messages.json-tiedoston. Näissä tiedostoissa viestit on tallennettu JSON-muodossa, esimerkiksi englannin “Hello world!” ja ranskan “Bonjour le monde!” -muodossa. Tämä rakenne mahdollistaa helpon laajennusten kääntämisen eri kielille ja viestien dynaamisen vaihtamisen.
Manifestissa on myös mahdollisuus käyttää niin sanottuja match pattern- ja glob-kuvioita tiedostopolkujen ja URL-osoitteiden määrittelyyn. Näillä kuvioilla voidaan valita joko yksittäisiä tiedostoja tai kokonaisia kansioita, kuten “/foo/*.png”, joka valitsee kaikki PNG-tiedostot foo-kansiosta. URL-kuvioiden avulla voidaan rajata laajennuksen toiminta tietyille verkkotunnuksille tai poluille, esimerkiksi “https://example.com/foo/*” kattaa kaikki foo-polun alla olevat sivut. Glob-kuviot laajentavat tätä vielä käyttämällä wildkarteja ja yhden merkin kysymysmerkkiä, mikä tarjoaa tarkempaa suodatusta.
Manifestin versio määrittää laajennuksen rakennetta ja toimintoja. Manifest V3 (MV3) on nykyaikainen standardi, joka korvaa aiemman Manifest V2:n (MV2). MV3:ssa taustaskriptit on korvattu palvelintyöntekijöillä (service workers), mikä lisää resurssitehokkuutta, mutta tuo samalla haasteita esimerkiksi pitkäkestoisten yhteyksien ylläpidossa. Lisäksi MV3:n tiukempi Content Security Policy estää inline- ja ulkoisten skriptien käytön, mikä parantaa turvallisuutta mutta rajoittaa joidenkin käyttäjäskriptien toimivuutta. MV3 myös muuttaa lupien hallintaa ja korvaa dynaamisen webRequest API:n staattisella declarativeNetRequest API:lla, mikä lisää suorituskykyä mutta vähentää joustavuutta.
Siirtyminen MV2:sta MV3:een heijastaa selainten valmistajien pyrkimystä parantaa käyttäjien turvallisuutta ja suorituskykyä, vaikka se aiheuttaakin kehittäjille sopeutumisvaatimuksia. Näiden muutosten ymmärtäminen on olennaista laajennusten kehittäjille, sillä ne vaikuttavat laajasti laajennusten arkkitehtuuriin ja toimintatapaan. Erityisesti persistenttien taustasivujen korvaaminen lyhytikäisillä palvelintyöntekijöillä edellyttää asynkronisten tallennusmekanismien, kuten chrome.storage tai IndexedDB:n, käyttöä ja perinteisten ajastimien korvaamista esimerkiksi Alarms API:lla.
Laajennuksen manifestin ominaisuudet ovat tiiviisti sidoksissa laajennuksen vaadittaviin käyttöoikeuksiin ja selain-API:hin. Jokainen ominaisuus määrittelee tietyt sallitut toiminnot ja niiden rajat. Ominaisuudet voivat myös vaihdella Manifest-versioiden ja selainten välillä, mikä tarkoittaa, että laajennuksen kehittäjän on tunnettava nämä erot ja suunniteltava manifestinsa niiden mukaisesti. Tämä kokonaisuus muodostaa laajennuksen rakenteen perustan ja määrää, miten laajennus kommunikoi selaimen kanssa ja vaikuttaa käyttäjän selauskokemukseen.
Lokalisaatio, match patternit ja manifest-versiot ovat keskeisiä tekijöitä laajennusten kehittämisessä, ja niiden ymmärtäminen mahdollistaa laajennusten laajemman käyttöalueen ja paremmat suorituskyky- sekä turvallisuusominaisuudet. On tärkeää ymmärtää, että selainlaajennusten manifesti ei ole pelkkä staattinen tiedosto, vaan dynaaminen rakenne, joka määrittelee laajennuksen käyttäytymisen, vuorovaikutuksen ja paikallisuuden tarkan hallinnan. Tämä vaatii kehittäjältä syvällistä tietämystä sekä nykyisistä standardeista että parhaista käytännöistä.
Miten toteuttaa maksumuuri selainlaajennuksessa ExtPayn avulla?
ExtPay-kirjaston avulla selainlaajennuksen kehittäjä voi helposti erotella maksullisen ja ilmaisen sisällön tai toiminnallisuuden. Tärkeä periaate on, että maksulliset ominaisuudet on suojattava selkeästi käyttäjän tilauksen perusteella. Käytännössä tämä tarkoittaa, että tietyt käyttöliittymän osat, toiminnot tai reitit voidaan lukita, jos käyttäjä ei ole maksanut tilauksesta. Maksutieto tarkistetaan asiakkaan puolella, mikä rajoittaa täysin tehokkaan suojauksen mahdollisuutta. Kuitenkin, jos käyttäjäkunta on motivoitunut maksamaan, maksumuurin kiertäminen tai maksulogiiikan purkaminen menettää merkityksensä, koska useimmat käyttäjät toimivat rehellisesti.
Laajennuksen manifesti määrittelee taustaskriptin, ponnahdusikkunasivun ja säilytysoikeudet. ExtPay-kirjasto ladataan taustaskriptissä, jossa käynnistetään myös ExtPayn taustaprosessi. Tämän jälkeen maksutilanne voidaan tarkistaa kutsumalla extpay.getUser()-funktiota. Mikäli käyttäjä on maksanut, laajennus toimii normaalisti, mutta maksamattoman käyttäjän ohjataan maksusivulle, joka sijaitsee ExtensionPayn palvelussa, mutta on brändätty oman laajennuksen mukaan.
Ponnahdusikkunassa maksumuurin logiikka toimii samoin: käyttäjän tila tarkistetaan ja sen perusteella joko näytetään täysi sisältö tai maksupyyntö. Virhetilanteet on syytä käsitellä erikseen, jotta käyttöliittymä pysyy käyttäjäystävällisenä myös ongelmatilanteissa.
Maksujärjestelmän testaaminen edellyttää, että kehittäjä on rekisteröitynyt Stripeen ja ExtensionPayn palveluun, sekä asettanut koodiin oikean ExtensionPay-tunnuksen. Testauksen aikana käyttäjätilanteet voidaan simuloida niin, että maksamaton käyttäjä saa maksukehotteen ja maksamisen jälkeen sisältö vapautuu. Tämä varmistaa, että maksun ja tilan hallinta toimii odotetusti.
Selainlaajennuksen kehitys eroaa merkittävästi perinteisen verkkosivuston kehityksestä; se muistuttaa enemmän mobiilisovelluksen kehitystä. Paikallinen kehitysympäristö ja testaus ovat välttämättömiä, ja laajennuksia hallitaan selaimen erityisessä laajennusten hallintanäkymässä. Sieltä voidaan tarkastella laajennuksen tilaa, virheitä, uudelleenkäynnistää laajennus ja säätää sen asetuksia. Kehittäjän on hyvä ymmärtää, että selaimen tarjoamat työkalut laajennuksen tarkasteluun eivät aina päivity reaaliaikaisesti, vaan ne heijastavat hetken tilannetta.
Laajennuksen eri komponentit, kuten taustaskriptit, sisältöskriptit ja vaihtoehtosivut, näkyvät erillisinä näkyminä selaimen kehitystyökaluissa. Nämä työkalut auttavat virheiden jäljittämisessä ja toiminnan analysoinnissa. Laajennuksen tarvitsemat käyttöoikeudet on selkeästi määriteltävä manifestissa, ja ne vaikuttavat siihen, mitä toimintoja laajennus voi suorittaa.
On tärkeää ymmärtää, että vaikka ExtPay tarjoaa helpon tavan toteuttaa maksumuuri, maksullisen sisällön suojaaminen asiakaspuolella ei ole täysin murtamatonta. Toistaiseksi tehokkain tapa estää luvaton käyttö on houkutella käyttäjät maksamaan tarjoamalla aitoa arvoa ja positiivista käyttökokemusta. Maksumuuri toimii parhaiten silloin, kun käyttäjäkunta kokee lisäarvon olevan sen arvoista. Lisäksi kehittäjän tulee huolehtia, että maksut ja käyttäjien tila synkronoidaan luotettavasti ja virhetilanteet käsitellään asianmukaisesti.
Miten kehittää, julkaista ja hallita selainlaajennuksia tehokkaasti?
Selainlaajennusten kehitys on monivaiheinen prosessi, joka vaatii huolellista suunnittelua, toteutusta, testausta sekä jatkuvaa ylläpitoa ja päivityksiä. Laajennusten kehittäminen alkaa paikallisesta kehityksestä, jossa ohjelmoija rakentaa ja kokeilee laajennuksen toimintoja erillisessä ympäristössä. Tämä vaihe sisältää laajennuksen tarkastelun ja virheiden etsimisen, joka on keskeinen osa laadukkaan tuotteen varmistamisessa. Muutokset tiedostoissa täytyy hallita tarkasti, jotta koodin eheys ja yhteensopivuus eri selainversioiden kanssa säilyvät.
Virheiden valvonta ja seuranta ovat elintärkeitä, sillä selainlaajennukset toimivat käyttäjien laitteilla, joissa tilanteet voivat vaihdella suuresti. Automaattiset testit, kuten yksikkötestit ja integraatiotestit, varmistavat laajennuksen vakauden ja toimivuuden ennen julkaisua. Testausta tulee tehdä jatkuvasti myös päivitysten yhteydessä, jotta vältetään regressiot ja ylläpidetään käyttäjäkokemuksen tasaisuus.
Laajennusten julkaisuun liittyy oma prosessinsa, joka sisältää kauppapaikkojen vaatimukset, yksityisyyskäytännöt sekä arviointiprosessit. Beta-testaus luotettavien testaajien kanssa mahdollistaa palautteen saamisen ja ongelmien havaitsemisen ennen laajempaa levitystä. Julkaisun jälkeen laajennuksia on jatkuvasti päivitettävä ja hallittava, mukaan lukien päivitysten peruuttaminen ja automaattinen palautus tilanteissa, joissa uudet versiot aiheuttavat ongelmia.
Seuranta on tärkeä osa laajennusten hallintaa. Käyttäjäaktiivisuuden mittaaminen ja analytiikkakirjastojen hyödyntäminen auttavat kehittäjiä ymmärtämään, miten laajennusta käytetään ja millaisia parannuksia voidaan tehdä. Yrityskäytössä laajennusten hallinta voi sisältää pakotettuja asennuksia tai estämisiä hallintapolitiikkojen avulla, mikä helpottaa laajojen käyttäjäryhmien hallintaa.
Cross-browser -tuki on yhä tärkeämpää, koska käyttäjät käyttävät erilaisia selaimia. Chromium-pohjaiset selaimet jakavat usein saman laajennuskannan, mutta koodipohjaa pitää mukauttaa eri selainympäristöihin. API-probing ja erilliset manifestit mahdollistavat joustavan ja yhteensopivan kehityksen. Laajennusten markkinapaikat eroavat toisistaan ja niiden vaatimukset tulee ymmärtää tarkasti, sillä esimerkiksi Chrome Web Store, Firefoxin lisäosat ja Safari Extensions App Store noudattavat omia sääntöjään ja käytäntöjään.
Mobiililaajennukset ovat kasvava osa ekosysteemiä, mutta niiden käyttöliittymät ja tekniset rajoitteet eroavat työpöytäselaimista. Mobiililaajennusten kehityksessä on otettava huomioon laitekohtaiset erot, kuten iOS:n ja Androidin vaatimukset ja testausmahdollisuudet. Automaattinen julkaisu ja käyttöönotto sekä jatkuva yhteensopivuuden varmistaminen ovat keskeisiä haasteita mobiililaitteilla.
Safari-laajennusten kehitys vaatii erityisosaamista ja erillisen arkkitehtuurin tuntemusta. Projektin luominen, sovelluksen kirjoittaminen, testaus macOS:llä ja iOS:llä sekä julkaisu App Storeen muodostavat kokonaisuuden, jossa jokainen vaihe on yhtä tärkeä. Myös olemassa olevien laajennusten konvertointi uuteen formaattiin on osa kehitystyötä. Firefoxin erityispiirteet, kuten manifest-versiot ja sivupalkkien hallinta, vaativat tarkkaa huomiointia yhteensopivuuden takaamiseksi.
Selainlaajennusten kehitys ja hallinta on monimutkaista, ja siihen liittyy laaja-alainen ymmärrys eri teknologioista, selainten ominaisuuksista ja käyttäjien tarpeista. Ymmärtämällä kehitysprosessin jokaisen vaiheen merkityksen ja huolehtimalla laadukkaasta testauksesta ja seurannasta, voi varmistaa, että laajennukset ovat toimivia, turvallisia ja käyttäjäystävällisiä.
On tärkeää huomioida, että selainlaajennukset toimivat osana laajempaa ekosysteemiä, jossa tekniset standardit, käyttäjäodotukset ja yksityisyydensuoja muodostavat yhteisen viitekehyksen. Laajennusten turvallisuus ja yksityisyydensuoja eivät ole pelkästään teknisiä haasteita, vaan myös käyttäjien luottamuksen ja laajennusten hyväksyttävyyden keskeisiä tekijöitä. Lisäksi kehittäjän on jatkuvasti seurattava selainkehityksen suuntauksia ja päivitettävä omaa osaamistaan, sillä selainympäristöt muuttuvat nopeasti ja uudet standardit voivat vaikuttaa laajennusten toimintaan merkittävästi.
Miten hallita ja julkaista selaimen laajennuksia yritysympäristössä ja monella selaimella?
Yritysympäristössä laajennusten hallinta vaatii tarkkaa kontrollia ja selkeää strategiaa. Organisaatioiden on tärkeää määrittää, mitkä laajennukset voidaan asentaa ja käyttää, jotta turvallisuus ja tehokkuus säilyvät. Google tarjoaa tähän Enterprise Web Storen, joka on yksityinen Chrome Web Store -instanssi. Sen kautta yritys voi kuratoida valikoiman etukäteen hyväksyttyjä laajennuksia, joita työntekijät voivat käyttää. Näin varmistetaan, että vain tarkastetut ja liiketoiminnalle kriittiset työkalut ovat käytettävissä.
Yrityksen IT-järjestelmänvalvojat voivat asettaa tiukat laajennusten asennuskäytännöt Chrome Enterprise -politiikoilla. Näitä ovat esimerkiksi laajennusten pakotettu asennus tai estäminen hallitusti, käyttäen Google Admin Consolea tai Windows-ympäristössä Group Policy Objectseja (GPO). Politiikat mahdollistavat hyväksyttyjen lähteiden määrittämisen (ExtensionInstallSources), sallittujen laajennusten listan (ExtensionInstallAllowlist), pakotettujen automaattisesti asennettavien laajennusten listan (ExtensionInstallForcelist), estolistat (ExtensionInstallBlocklist) sekä sallitut laajennustyypit (ExtensionAllowedTypes). Näin voidaan estää sivulataukset ja hallita tarkasti, mitkä laajennukset ovat käytössä.
Lisäksi laajennusten käyttöoikeuksia voidaan hallita ExtensionSettings-politiikalla, joka tarjoaa yksityiskohtaista sääntelyä niin globaalisti kuin yksittäisille laajennuksille. Esimerkiksi estettyjen oikeuksien määrittäminen (blocked_permissions) voi estää laajennuksia pääsemästä kriittisiin selainrajapintoihin tai JavaScript-API:hin. Sallittujen (runtime_allowed_hosts) ja estettyjen verkkotunnusten (runtime_blocked_hosts) listat mahdollistavat pääsyn hallinnan laajennuksen verkkokäytölle, mikä suojaa erityisesti yrityksen sisäisiä resursseja.
Kun puhutaan laajennusten kehittämisestä, julkaisemisesta ja hallinnasta, on tärkeää ymmärtää, että eri selaimet ja niiden ympäristöt asettavat omat haasteensa. Laajennukset ovat teknisesti selainten ja sovellusten välimaastossa: ne on rakennettu web-teknologioilla kuten HTML, JavaScript ja CSS, mutta ne toimivat rajatummassa ympäristössä, joka ei ole täysin standardisoitu eri selaimissa.
Selainten yhteensopivuus vaihtelee, vaikka useimmat nykyiset selaimet pohjautuvat Chromiumiin, joka takaa lähes täydellisen yhteensopivuuden Chrome-laajennusten kanssa. Tämä tarkoittaa, että laajennus, joka julkaistaan Chrome Web Storessa, toimii lähes suoraan myös selaimissa kuten Microsoft Edge, Opera, Vivaldi ja Brave, kattaen yli 80 % työpöytäselainten markkinoista. Tästä seuraa, että laajennusten kehittäjän ei aina ole tarpeen tehdä suuria muutoksia tukemaan näitä selaimia erikseen.
Kuitenkin laajennusten manifest-tiedostojen ja API-tuen eroavaisuudet eri selainten välillä voivat aiheuttaa haasteita, jos tuetaan laajempaa kirjoa selaimia. Laajennuksen koodipohjan organisointi ja mahdolliset selaimelle spesifiset mukautukset vaativat tarkkaa suunnittelua ja testausprosessia. Käytännössä kehittäjän täytyy punnita, mikä laajuus on järkevä ottaen huomioon kohdekäyttäjien selaintottumukset ja resurssit.
Selkeästi dokumentoitu, testattu ja hallittu laajennusten julkaisuprosessi on avainasemassa. Analytiikkatyökalujen integrointi auttaa ymmärtämään laajennuksen käyttöä ja käyttäjäkokemusta, mikä mahdollistaa kehityksen kohdistamisen oikeisiin kohtiin. Yrityksille on tärkeää myös miettiä, miten laajennuksia päivitetään ja hallitaan skaalautuvasti, jotta liiketoiminnan tarpeet ja turvallisuusvaatimukset täyttyvät.
On olennaista tiedostaa, että vaikka tekniset ratkaisut antavat paljon valtaa laajennusten hallinnalle, liian tiukat käyttöoikeusrajoitukset tai hallinnolliset politiikat voivat haitata laajennusten toimintaa ja käyttäjäkokemusta. Tasapaino on löydettävä niin, että turvallisuus säilyy eikä laajennuksen toiminnallisuus vaarannu. Yritysympäristössä tämä vaatii jatkuvaa seurantaa, analysointia ja politiikkojen päivittämistä vastaamaan muuttuvia tarpeita.
Miten optimoida energian ja varianssin minimointi kvanttimekaanisessa Monte Carlo-laskennassa?
Miten rikkakasvit voivat kertoa maaperästäsi ja puutarhanhoidon salaisuuksista
Gerbilien terveysongelmat: Suolistosairaudet, loiset ja myrkyt
Miten selvittää "Kuolleen kehon" arvoituksia?

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