{
  "core/audits/accessibility/accesskeys.js | description": {
    "message": "Pääsyavaimien avulla käyttäjät voivat nopeasti kohdistaa tiettyyn sivun osaan. Jotta sivulla siirtyminen onnistuu, jokaisen pääsyavaimen on oltava yksilöllinen. [Lue lisää pääsyavaimista](https://dequeuniversity.com/rules/axe/4.11/accesskeys)."
  },
  "core/audits/accessibility/accesskeys.js | failureTitle": {
    "message": "`[accesskey]`-arvot eivät ole yksilöllisiä"
  },
  "core/audits/accessibility/accesskeys.js | title": {
    "message": "`[accesskey]`-arvot ovat yksilöllisiä."
  },
  "core/audits/accessibility/aria-allowed-attr.js | description": {
    "message": "Jokainen ARIA-`role` tukee tiettyä `aria-*`-määritteiden osaa. Vastaavuusjärjestyksen sekoittaminen mitätöi `aria-*`-määritteet. [Lue lisää ARIA-määritteiden ja niiden roolien yhdistämisestä](https://dequeuniversity.com/rules/axe/4.11/aria-allowed-attr)."
  },
  "core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
    "message": "`[aria-*]`-määritteet eivät vastaa rooleja"
  },
  "core/audits/accessibility/aria-allowed-attr.js | title": {
    "message": "`[aria-*]`-määritteet vastaavat roolejaan"
  },
  "core/audits/accessibility/aria-allowed-role.js | description": {
    "message": "Monille HTML-elementeille voidaan määrittää vain tiettyjä ARIA-rooleja. ARIA-roolien käyttäminen silloin, kun niitä ei sallita, voi häiritä verkkosivun saavutettavuutta. [Lue lisää ARIA-rooleista](https://dequeuniversity.com/rules/axe/4.11/aria-allowed-role)."
  },
  "core/audits/accessibility/aria-allowed-role.js | failureTitle": {
    "message": "Käyttää ARIA-rooleja yhteensopimattomissa elementeissä"
  },
  "core/audits/accessibility/aria-allowed-role.js | title": {
    "message": "Käyttää ARIA-rooleja vain yhteensopivissa elementeissä"
  },
  "core/audits/accessibility/aria-command-name.js | description": {
    "message": "Jos elementin nimi ei ole esteetön, näytönlukuohjelmat sanovat sen kohdalla geneerisen nimen, jolloin näytönlukuohjelmien käyttäjät eivät voi käyttää sitä. [Katso, miten voit helpottaa komentoelementtien käyttöä](https://dequeuniversity.com/rules/axe/4.11/aria-command-name)."
  },
  "core/audits/accessibility/aria-command-name.js | failureTitle": {
    "message": "Elementeillä (`button`, `link` ja `menuitem`) ei ole esteettömiä nimiä"
  },
  "core/audits/accessibility/aria-command-name.js | title": {
    "message": "Elementeillä (`button`, `link` ja `menuitem`) on esteettömät nimet"
  },
  "core/audits/accessibility/aria-conditional-attr.js | description": {
    "message": "Jotkin ARIA-määritteet sallitaan elementissä vain tietyin ehdoin. [Lue lisää ehdollisista ARIA-määritteistä](https://dequeuniversity.com/rules/axe/4.11/aria-conditional-attr)."
  },
  "core/audits/accessibility/aria-conditional-attr.js | failureTitle": {
    "message": "ARIA-määritteitä ei käytetä elementin roolin mukaisesti"
  },
  "core/audits/accessibility/aria-conditional-attr.js | title": {
    "message": "ARIA-määritteitä käytetään elementin roolin mukaisesti"
  },
  "core/audits/accessibility/aria-deprecated-role.js | description": {
    "message": "Avustava teknologia ei välttämättä käsittele käytöstä poistettuja ARIA-rooleja oikein. [Lue lisää käytöstä poistetuista ARIA-rooleista](https://dequeuniversity.com/rules/axe/4.11/aria-deprecated-role)."
  },
  "core/audits/accessibility/aria-deprecated-role.js | failureTitle": {
    "message": "Käytöstä poistettuja ARIA-rooleja on käytetty"
  },
  "core/audits/accessibility/aria-deprecated-role.js | title": {
    "message": "Käytöstä poistettuja ARIA-rooleja ei käytetty"
  },
  "core/audits/accessibility/aria-dialog-name.js | description": {
    "message": "ARIA-valintaikkunaelementit, joissa ei ole saavutettavia nimiä, voivat estää näytönlukuohjelmien käyttäjiä havaitsemasta elementtien tarkoituksen. [Katso, miten voit helpottaa ARIA-valintaikkunan elementtien käyttöä](https://dequeuniversity.com/rules/axe/4.11/aria-dialog-name)."
  },
  "core/audits/accessibility/aria-dialog-name.js | failureTitle": {
    "message": "Elementtien, joissa on `role=\"dialog\"` tai `role=\"alertdialog\"`, nimi ei ole saavutettava."
  },
  "core/audits/accessibility/aria-dialog-name.js | title": {
    "message": "Elementtien, joissa on `role=\"dialog\"` tai `role=\"alertdialog\"`, nimi on saavutettava."
  },
  "core/audits/accessibility/aria-hidden-body.js | description": {
    "message": "Näytönlukuohjelmat ja muut avustavat teknologiat toimivat arvaamattomasti, kun `aria-hidden=\"true\"` asetetaan dokumentin kohdassa `<body>`. [Katso, miten `aria-hidden` vaikuttaa dokumentin tekstiosaan](https://dequeuniversity.com/rules/axe/4.11/aria-hidden-body)."
  },
  "core/audits/accessibility/aria-hidden-body.js | failureTitle": {
    "message": "`[aria-hidden=\"true\"]` on dokumentin kohdassa `<body>`"
  },
  "core/audits/accessibility/aria-hidden-body.js | title": {
    "message": "`[aria-hidden=\"true\"]` ei ole dokumentin kohdassa `<body>`"
  },
  "core/audits/accessibility/aria-hidden-focus.js | description": {
    "message": "Jos `[aria-hidden=\"true\"]`-elementillä on tarkennettavia alaosia, näytönlukuohjelmat ja muut avustavat teknologiat eivät löydä niitä. [Katso, miten `aria-hidden` vaikuttaa kohdistettaviin elementteihin](https://dequeuniversity.com/rules/axe/4.11/aria-hidden-focus)."
  },
  "core/audits/accessibility/aria-hidden-focus.js | failureTitle": {
    "message": "`[aria-hidden=\"true\"]`-elementeissä on tarkennettavia alaosia"
  },
  "core/audits/accessibility/aria-hidden-focus.js | title": {
    "message": "`[aria-hidden=\"true\"]`-elementeissä ei ole tarkennettavia alaosia"
  },
  "core/audits/accessibility/aria-input-field-name.js | description": {
    "message": "Jos syötekentän nimi ei ole esteetön, näytönlukuohjelmat sanovat sen kohdalla geneerisen nimen, jolloin näytönlukuohjelmien käyttäjät eivät voi käyttää sitä. [Lue lisää syöttökenttien tunnisteista](https://dequeuniversity.com/rules/axe/4.11/aria-input-field-name)."
  },
  "core/audits/accessibility/aria-input-field-name.js | failureTitle": {
    "message": "ARIA-syötekenttien nimet eivät ole esteettömiä"
  },
  "core/audits/accessibility/aria-input-field-name.js | title": {
    "message": "ARIA-syötekenttien nimet ovat esteettömiä"
  },
  "core/audits/accessibility/aria-meter-name.js | description": {
    "message": "Jos elementin nimi ei ole esteetön, näytönlukuohjelmat sanovat sen kohdalla geneerisen nimen, jolloin näytönlukuohjelmien käyttäjät eivät voi käyttää sitä. [Katso, miten voit nimetä `meter`-elementtejä](https://dequeuniversity.com/rules/axe/4.11/aria-meter-name)."
  },
  "core/audits/accessibility/aria-meter-name.js | failureTitle": {
    "message": "ARIA-elementeillä (`meter`) ei ole esteettömiä nimiä"
  },
  "core/audits/accessibility/aria-meter-name.js | title": {
    "message": "ARIA-elementeillä (`meter`) on esteettömät nimet"
  },
  "core/audits/accessibility/aria-progressbar-name.js | description": {
    "message": "Jos elementin (`progressbar`) nimi ei ole esteetön, näytönlukuohjelmat sanovat sen kohdalla geneerisen nimen, jolloin näytönlukuohjelmien käyttäjät eivät voi käyttää sitä. [Lue lisää `progressbar`-elementtien nimeämisestä](https://dequeuniversity.com/rules/axe/4.11/aria-progressbar-name)."
  },
  "core/audits/accessibility/aria-progressbar-name.js | failureTitle": {
    "message": "ARIA-elementeillä (`progressbar`) ei ole esteettömiä nimiä"
  },
  "core/audits/accessibility/aria-progressbar-name.js | title": {
    "message": "ARIA-elementeillä (`progressbar`) on esteettömät nimet"
  },
  "core/audits/accessibility/aria-prohibited-attr.js | description": {
    "message": "ARIA-määritteiden käyttäminen rooleissa, joissa ne on kielletty, voi tarkoittaa, että tärkeitä tietoja ei anneta avustavien teknologioiden käyttäjille. [Lue lisää kielletyistä ARIA-rooleista](https://dequeuniversity.com/rules/axe/4.11/aria-prohibited-attr)."
  },
  "core/audits/accessibility/aria-prohibited-attr.js | failureTitle": {
    "message": "Elementeissä käytetään kiellettyjä ARIA-määritteitä"
  },
  "core/audits/accessibility/aria-prohibited-attr.js | title": {
    "message": "Elementit käyttävät vain sallittuja ARIA-määritteitä"
  },
  "core/audits/accessibility/aria-required-attr.js | description": {
    "message": "Joillakin ARIA-rooleilla on pakollisia määritteitä, jotka kuvaavat elementin tilaa näytönlukuohjelmille. [Lue lisää rooleista ja pakollisista määritteistä](https://dequeuniversity.com/rules/axe/4.11/aria-required-attr)."
  },
  "core/audits/accessibility/aria-required-attr.js | failureTitle": {
    "message": "`[role]`-elementeissä ei ole kaikkia vaadittuja `[aria-*]`-määritteitä"
  },
  "core/audits/accessibility/aria-required-attr.js | title": {
    "message": "`[role]`-elementeissä on kaikki vaaditut `[aria-*]`-määritteet"
  },
  "core/audits/accessibility/aria-required-children.js | description": {
    "message": "Voidakseen suorittaa esteettömyyteen liittyvät toiminnot joidenkin alatason ARIA-roolien on kuuluttava tiettyihin ylätason rooleihin. [Lue lisää rooleista ja pakollisista alatason elementeistä](https://dequeuniversity.com/rules/axe/4.11/aria-required-children)."
  },
  "core/audits/accessibility/aria-required-children.js | failureTitle": {
    "message": "ARIAn `[role]` sisältämät elementit edellyttävät alatasoilta tiettyä elementtiä (`[role]`), mutta se puuttuu osalta tai kaikilta alatasoilta."
  },
  "core/audits/accessibility/aria-required-children.js | title": {
    "message": "ARIAn `[role]` sisältämät elementit edellyttävät alatasoilta tiettyä elementtiä (`[role]`), joka on kaikilla alatasoilla."
  },
  "core/audits/accessibility/aria-required-parent.js | description": {
    "message": "Voidakseen suorittaa esteettömyyteen liittyvät toiminnot joidenkin alatason ARIA-roolien on kuuluttava tiettyihin ylätason rooleihin. [Lue lisää ARIA-rooleista ja pakollisesta ylätason elementistä](https://dequeuniversity.com/rules/axe/4.11/aria-required-parent)."
  },
  "core/audits/accessibility/aria-required-parent.js | failureTitle": {
    "message": "`[role]`-elementit eivät sisälly niiden pakolliseen ylätason elementtiin"
  },
  "core/audits/accessibility/aria-required-parent.js | title": {
    "message": "`[role]`-elementit sisältyvät niiden pakolliseen ylätason elementtiin"
  },
  "core/audits/accessibility/aria-roles.js | description": {
    "message": "Voidakseen suorittaa esteettömyyteen liittyvät toiminnot ARIA-rooleilla on oltava kelvolliset arvot. [Lue lisää kelvollisista ARIA-rooleista](https://dequeuniversity.com/rules/axe/4.11/aria-roles)."
  },
  "core/audits/accessibility/aria-roles.js | failureTitle": {
    "message": "`[role]`-arvot eivät ole kelvollisia"
  },
  "core/audits/accessibility/aria-roles.js | title": {
    "message": "`[role]`-arvot ovat kelvollisia"
  },
  "core/audits/accessibility/aria-text.js | description": {
    "message": "Kun `role=text` lisätään merkinnöillä erotetun tekstinoodin ympärille, VoiceOver käsittelee sitä yhtenä ilmauksena, mutta elementin kohdistettavia alakohtia ei ilmoiteta. [Lue lisää `role=text`‐määritteestä](https://dequeuniversity.com/rules/axe/4.11/aria-text)."
  },
  "core/audits/accessibility/aria-text.js | failureTitle": {
    "message": "`role=text`-määritteen sisältävillä elementeillä on kohdistettavia alakohtia."
  },
  "core/audits/accessibility/aria-text.js | title": {
    "message": "`role=text`-määritteen sisältävillä elementeillä ei ole kohdistettavia alakohtia."
  },
  "core/audits/accessibility/aria-toggle-field-name.js | description": {
    "message": "Jos päälle/pois-kentän nimi ei ole esteetön, näytönlukuohjelmat sanovat sen kohdalla geneerisen nimen, jolloin näytönlukuohjelmien käyttäjät eivät voi käyttää sitä. [Lue lisää päälle/pois-kentistä](https://dequeuniversity.com/rules/axe/4.11/aria-toggle-field-name)."
  },
  "core/audits/accessibility/aria-toggle-field-name.js | failureTitle": {
    "message": "ARIAn päälle/pois-kenttien nimet eivät ole esteettömiä"
  },
  "core/audits/accessibility/aria-toggle-field-name.js | title": {
    "message": "ARIAn päälle/pois-kenttien nimet ovat esteettömiä"
  },
  "core/audits/accessibility/aria-tooltip-name.js | description": {
    "message": "Jos elementin vihjetekstin nimi ei ole saavutettava, näytönlukuohjelmat sanovat sen kohdalla geneerisen nimen, jolloin näytönlukuohjelmien käyttäjät eivät voi käyttää sitä. [Katso, miten voit nimetä `tooltip`-elementtejä](https://dequeuniversity.com/rules/axe/4.11/aria-tooltip-name)."
  },
  "core/audits/accessibility/aria-tooltip-name.js | failureTitle": {
    "message": "ARIA-elementeillä (`tooltip`) ei ole esteettömiä nimiä"
  },
  "core/audits/accessibility/aria-tooltip-name.js | title": {
    "message": "ARIA-elementeillä (`tooltip`) on esteettömät nimet"
  },
  "core/audits/accessibility/aria-treeitem-name.js | description": {
    "message": "Jos elementin (`treeitem`) nimi ei ole esteetön, näytönlukuohjelmat sanovat sen kohdalla geneerisen nimen, jolloin näytönlukuohjelmien käyttäjät eivät voi käyttää sitä. [Lue lisää `treeitem`-elementtien merkitsemisestä](https://dequeuniversity.com/rules/axe/4.11/aria-treeitem-name)."
  },
  "core/audits/accessibility/aria-treeitem-name.js | failureTitle": {
    "message": "ARIA-elementeillä (`treeitem`) ei ole esteettömiä nimiä"
  },
  "core/audits/accessibility/aria-treeitem-name.js | title": {
    "message": "ARIA-elementeillä (`treeitem`) on esteettömät nimet"
  },
  "core/audits/accessibility/aria-valid-attr-value.js | description": {
    "message": "Avustustekniikat (kuten näytönlukuohjelmat) eivät voi tulkita ARIA-määritteitä, joissa on virheelliset arvot. [Lue lisää kelvollisista ARIA-määritteiden arvoista](https://dequeuniversity.com/rules/axe/4.11/aria-valid-attr-value)."
  },
  "core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
    "message": "`[aria-*]`-määritteiden arvot eivät ole kelvollisia"
  },
  "core/audits/accessibility/aria-valid-attr-value.js | title": {
    "message": "`[aria-*]`-määritteiden arvot ovat kelvollisia"
  },
  "core/audits/accessibility/aria-valid-attr.js | description": {
    "message": "Avustustekniikat (kuten näytönlukuohjelmat) eivät voi tulkita ARIA-määritteitä, joilla on virheelliset nimet. [Lue lisää kelvollisista ARIA-määritteistä](https://dequeuniversity.com/rules/axe/4.11/aria-valid-attr)."
  },
  "core/audits/accessibility/aria-valid-attr.js | failureTitle": {
    "message": "`[aria-*]`-määritteet eivät ole kelvollisia tai sisältävät kirjoitusvirheitä"
  },
  "core/audits/accessibility/aria-valid-attr.js | title": {
    "message": "`[aria-*]`-määritteet ovat kelvollisia eivätkä sisällä kirjoitusvirheitä"
  },
  "core/audits/accessibility/axe-audit.js | failingElementsHeader": {
    "message": "Hylätyt elementit"
  },
  "core/audits/accessibility/button-name.js | description": {
    "message": "Kun painikkeen nimi ei ole esteetön, näytönlukuohjelmat ilmoittavat sen painikkeeksi, jolloin se on hyödytön näytönlukuohjelmia tarvitseville käyttäjille. [Katso, miten painikkeista voi tehdä saavutettavampia](https://dequeuniversity.com/rules/axe/4.11/button-name)."
  },
  "core/audits/accessibility/button-name.js | failureTitle": {
    "message": "Painikkeiden nimet eivät ole esteettömiä"
  },
  "core/audits/accessibility/button-name.js | title": {
    "message": "Painikkeiden nimet ovat esteettömiä"
  },
  "core/audits/accessibility/bypass.js | description": {
    "message": "Tapojen lisääminen toistuvan sisällön ohittamiseen auttaa näppäimistön käyttäjiä siirtymään sivulla tehokkaammin. [Lue lisää ohituksista](https://dequeuniversity.com/rules/axe/4.11/bypass)."
  },
  "core/audits/accessibility/bypass.js | failureTitle": {
    "message": "Sivu ei sisällä otsikkoa, ohituslinkkiä tai maamerkin aluetta"
  },
  "core/audits/accessibility/bypass.js | title": {
    "message": "Sivu sisältää otsikon, ohituslinkin tai maamerkin alueen"
  },
  "core/audits/accessibility/color-contrast.js | description": {
    "message": "Alhaisen kontrastin teksti on monelle vaikea tai mahdoton lukea. [Lue lisää riittävän värikontrastin lisäämisestä](https://dequeuniversity.com/rules/axe/4.11/color-contrast)."
  },
  "core/audits/accessibility/color-contrast.js | failureTitle": {
    "message": "Taustan ja etualan värien kontrastisuhde ei ole riittävä."
  },
  "core/audits/accessibility/color-contrast.js | title": {
    "message": "Taustan ja etualan värien kontrastisuhde on riittävä"
  },
  "core/audits/accessibility/definition-list.js | description": {
    "message": "Kun määritelmäluetteloita ei ole merkitty kunnolla, näytönlukuohjelmien tuottama sisältö voi olla sekavaa tai epätarkkaa. [Katso, miten määritelmäluettelot jäsennetään oikein](https://dequeuniversity.com/rules/axe/4.11/definition-list)."
  },
  "core/audits/accessibility/definition-list.js | failureTitle": {
    "message": "`<dl>`-elementit eivät sisällä vain oikein järjestettyjä `<dt>`- ja `<dd>`-ryhmiä ja `<script>`-, `<template>`- tai `<div>`-elementtejä."
  },
  "core/audits/accessibility/definition-list.js | title": {
    "message": "`<dl>`-elementit sisältävät vain oikein järjestettyjä `<dt>`- ja `<dd>`-ryhmiä ja `<script>`-, `<template>` tai `<div>`-elementtejä"
  },
  "core/audits/accessibility/dlitem.js | description": {
    "message": "Määritelmien luettelokohdat (`<dt>` ja `<dd>`) on yhdistettävä ylätason `<dl>`-elementtiin, jotta näytönlukuohjelmat voivat varmasti lukea ne oikein. [Katso, miten määritelmäluettelot jäsennetään oikein](https://dequeuniversity.com/rules/axe/4.11/dlitem)."
  },
  "core/audits/accessibility/dlitem.js | failureTitle": {
    "message": "Määritelmien luettelokohtia ei ole yhdistetty `<dl>`-elementeillä"
  },
  "core/audits/accessibility/dlitem.js | title": {
    "message": "Määritelmien luettelokohdat on yhdistetty `<dl>`-elementeillä"
  },
  "core/audits/accessibility/document-title.js | description": {
    "message": "Nimi antaa näytönlukuohjelmaa käyttäville yleiskuvan sivusta, ja hakukoneen käyttäjille nimi on tärkeä oleellisten sivujen löytämiseen hakutuloksista. [Lue lisää dokumenttien otsikoista](https://dequeuniversity.com/rules/axe/4.11/document-title)."
  },
  "core/audits/accessibility/document-title.js | failureTitle": {
    "message": "Dokumentissa ei ole `<title>`-elementtiä"
  },
  "core/audits/accessibility/document-title.js | title": {
    "message": "Dokumentissa on `<title>`-elementti"
  },
  "core/audits/accessibility/duplicate-id-aria.js | description": {
    "message": "ARIA-tunnisteen on oltava yksilöllinen, jotta avustavat teknologiat eivät jätä muita esiintymiä huomioimatta. [Katso, miten voit korjata päällekkäisiä ARIA-tunnuksia](https://dequeuniversity.com/rules/axe/4.11/duplicate-id-aria)."
  },
  "core/audits/accessibility/duplicate-id-aria.js | failureTitle": {
    "message": "ARIA-tunnisteet eivät ole yksilöllisiä"
  },
  "core/audits/accessibility/duplicate-id-aria.js | title": {
    "message": "ARIA-tunnisteet ovat yksilöllisiä"
  },
  "core/audits/accessibility/empty-heading.js | description": {
    "message": "Jos otsikon tekstissä ei ole sisältöä tai teksti ei ole käytettävissä, näytönlukuohjelman käyttäjät eivät saa pääsyä tietoihin sivun rakenteessa. [Lue lisää otsikoista](https://dequeuniversity.com/rules/axe/4.11/empty-heading)."
  },
  "core/audits/accessibility/empty-heading.js | failureTitle": {
    "message": "Otsikkoelementeissä ei ole sisältöä."
  },
  "core/audits/accessibility/empty-heading.js | title": {
    "message": "Kaikissa otsikkoelementeissä on sisältöä."
  },
  "core/audits/accessibility/form-field-multiple-labels.js | description": {
    "message": "Jos lomakekentillä on useita tunnisteita, näytönlukuohjelmat ja muut avustavat teknologiat saattavat viitata niihin hämmentävästi käyttäen ensimmäistä, viimeistä tai jokaista tunnistetta. [Lue lisää lomaketunnisteiden käyttämisestä](https://dequeuniversity.com/rules/axe/4.11/form-field-multiple-labels)."
  },
  "core/audits/accessibility/form-field-multiple-labels.js | failureTitle": {
    "message": "Lomakekentillä on useita tunnisteita"
  },
  "core/audits/accessibility/form-field-multiple-labels.js | title": {
    "message": "Lomakekentillä ei ole useita tunnisteita"
  },
  "core/audits/accessibility/frame-title.js | description": {
    "message": "Näytönlukuohjelman käyttäjät saavat tietää kehysten sisällöt vain kehysten nimien avulla. [Lue lisää kehysten nimistä](https://dequeuniversity.com/rules/axe/4.11/frame-title)."
  },
  "core/audits/accessibility/frame-title.js | failureTitle": {
    "message": "`<frame>`- tai `<iframe>`-elementeillä ei ole nimeä"
  },
  "core/audits/accessibility/frame-title.js | title": {
    "message": "`<frame>`- tai `<iframe>`-elementeillä on nimi"
  },
  "core/audits/accessibility/heading-order.js | description": {
    "message": "Loogisesti järjestetyt ja kaikki tasot käsittävät otsikot kertovat sivun semanttisesta rakenteesta, jolloin sen selaaminen ja ymmärtäminen avustavilla teknologioilla on helpompaa. [Lue lisää otsikkojärjestyksestä](https://dequeuniversity.com/rules/axe/4.11/heading-order)."
  },
  "core/audits/accessibility/heading-order.js | failureTitle": {
    "message": "Otsikkoelementit eivät ole laskevassa järjestyksessä"
  },
  "core/audits/accessibility/heading-order.js | title": {
    "message": "Otsikkoelementit ovat laskevassa järjestyksessä"
  },
  "core/audits/accessibility/html-has-lang.js | description": {
    "message": "Jos sivulla ei ole `lang`-määritettä, näytönlukuohjelma arvioi kieleksi oletuskielen, jonka käyttäjä valitsi ottaessaan näytönlukuohjelman käyttöön. Jos oletuskieli ei ole käytössä sivulla, näytönlukuohjelma voi ilmoittaa sivun tekstin väärin. [Lue lisää `lang`‐määritteestä](https://dequeuniversity.com/rules/axe/4.11/html-has-lang)."
  },
  "core/audits/accessibility/html-has-lang.js | failureTitle": {
    "message": "`<html>`-elementissä ei ole `[lang]`-määritettä"
  },
  "core/audits/accessibility/html-has-lang.js | title": {
    "message": "`<html>`-elementissä on `[lang]`-määrite"
  },
  "core/audits/accessibility/html-lang-valid.js | description": {
    "message": "Kelvollisen [BCP 47 language](https://www.w3.org/International/questions/qa-choosing-language-tags#question) ‑määritteen ilmoittaminen elementeille auttaa näytönlukuohjelmaa kertomaan tekstin oikein. [Lue lisää `lang`‐määritteen käyttämisestä](https://dequeuniversity.com/rules/axe/4.11/html-lang-valid)."
  },
  "core/audits/accessibility/html-lang-valid.js | failureTitle": {
    "message": "`<html>`-elementin `[lang]`-määritteen arvo ei ole kelvollinen"
  },
  "core/audits/accessibility/html-lang-valid.js | title": {
    "message": "`<html>`-elementin `[lang]`-määritteen arvo on kelvollinen"
  },
  "core/audits/accessibility/html-xml-lang-mismatch.js | description": {
    "message": "Jos verkkosivun kieli ei ole johdonmukaista, näytönlukuohjelma saattaa ilmoittaa sivun tekstin väärin. [Lue lisää `lang`‐määritteestä](https://dequeuniversity.com/rules/axe/4.11/html-xml-lang-mismatch)."
  },
  "core/audits/accessibility/html-xml-lang-mismatch.js | failureTitle": {
    "message": "`<html>`-elementissä ei ole `[xml:lang]`-määritettä, jolla on sama peruskieli kuin `[lang]`-määritteellä."
  },
  "core/audits/accessibility/html-xml-lang-mismatch.js | title": {
    "message": "`<html>`-elementillä on `[xml:lang]`-määrite, jolla on sama peruskieli kuin `[lang]`-määritteellä."
  },
  "core/audits/accessibility/identical-links-same-purpose.js | description": {
    "message": "Samaan kohteeseen johtavilla linkeillä on oltava sama kuvaus, jotta käyttäjät ymmärtävät niiden tarkoituksen ja voivat päättää, haluavatko he seurata niitä. [Lue lisää identtisistä linkeistä](https://dequeuniversity.com/rules/axe/4.11/identical-links-same-purpose)."
  },
  "core/audits/accessibility/identical-links-same-purpose.js | failureTitle": {
    "message": "Identtisillä linkeillä ei ole samaa tarkoitusta."
  },
  "core/audits/accessibility/identical-links-same-purpose.js | title": {
    "message": "Identtisillä linkeillä on sama tarkoitus."
  },
  "core/audits/accessibility/image-alt.js | description": {
    "message": "Informatiivisilla elementeillä pitäisi olla lyhyt ja kuvaileva vaihtoehtoinen teksti. Koristeelliset elementit voidaan ohittaa tyhjällä Alt-määritteellä. [Lue lisää `alt`‐määritteestä](https://dequeuniversity.com/rules/axe/4.11/image-alt)."
  },
  "core/audits/accessibility/image-alt.js | failureTitle": {
    "message": "Kuvaelementeillä ei ole `[alt]`-määritteitä"
  },
  "core/audits/accessibility/image-alt.js | title": {
    "message": "Kuvaelementeillä on `[alt]`-määritteet"
  },
  "core/audits/accessibility/image-redundant-alt.js | description": {
    "message": "Informatiivisilla elementeillä pitäisi olla lyhyt ja kuvaileva vaihtoehtoinen teksti. Vaihtoehtoinen teksti, joka on täsmälleen sama kuin linkin tai kuvan vieressä oleva teksti, voi olla hämmentävä näytönlukuohjelmien käyttäjille, koska teksti luetaan kahdesti. [Lue lisää `alt`‐määritteestä](https://dequeuniversity.com/rules/axe/4.11/image-redundant-alt)."
  },
  "core/audits/accessibility/image-redundant-alt.js | failureTitle": {
    "message": "Kuvaelementeissä on `[alt]`-määritteitä, jotka ovat tarpeetonta tekstiä."
  },
  "core/audits/accessibility/image-redundant-alt.js | title": {
    "message": "Kuvaelementeissä ei ole `[alt]`-määritteitä, jotka ovat tarpeetonta tekstiä."
  },
  "core/audits/accessibility/input-button-name.js | description": {
    "message": "Erottuvan ja näkyvän tekstin lisääminen syöttöpainikkeisiin voi auttaa näytönlukuohjelman käyttäjiä ymmärtämään syöttöpainikkeen tarkoituksen. [Lue lisää syöttöpainikkeista](https://dequeuniversity.com/rules/axe/4.11/input-button-name)."
  },
  "core/audits/accessibility/input-button-name.js | failureTitle": {
    "message": "Syöttöpainikkeissa ei ole selkeää tekstiä."
  },
  "core/audits/accessibility/input-button-name.js | title": {
    "message": "Syöttöpainikkeilla on erottuva teksti."
  },
  "core/audits/accessibility/input-image-alt.js | description": {
    "message": "Kun `<input>`-painikkeena käytetään kuvaa, vaihtoehtoisen tekstin lisääminen voi auttaa näytönlukuohjelman käyttäjiä ymmärtämään painikkeen tarkoituksen. [Lue lisää kuvan vaihtoehtoisesta tekstistä](https://dequeuniversity.com/rules/axe/4.11/input-image-alt)."
  },
  "core/audits/accessibility/input-image-alt.js | failureTitle": {
    "message": "`<input type=\"image\">`-elementeissä ei ole `[alt]`-tekstiä"
  },
  "core/audits/accessibility/input-image-alt.js | title": {
    "message": "`<input type=\"image\">`-elementeissä on `[alt]`-teksti"
  },
  "core/audits/accessibility/label-content-name-mismatch.js | description": {
    "message": "Näkyvät tekstitunnisteet, jotka eivät vastaa saavutettavaa nimeä, voivat olla hämmentäviä näytönlukuohjelmien käyttäjille. [Lue lisää saavutettavista nimistä](https://dequeuniversity.com/rules/axe/4.11/label-content-name-mismatch)."
  },
  "core/audits/accessibility/label-content-name-mismatch.js | failureTitle": {
    "message": "Näkyvää tekstiä sisältävien elementtien tunnisteilla ei ole vastaavia saavutettavia nimiä."
  },
  "core/audits/accessibility/label-content-name-mismatch.js | title": {
    "message": "Näkyvää tekstiä sisältävien elementtien tunnisteilla on vastaavia saavutettavia nimiä."
  },
  "core/audits/accessibility/label.js | description": {
    "message": "Tunnisteilla varmistetaan, että avustustekniikat (kuten näytönlukuohjelmat) ilmoittavat lomakkeiden ohjaimista oikein. [Lue lisää lomake-elementtien tunnisteista](https://dequeuniversity.com/rules/axe/4.11/label)."
  },
  "core/audits/accessibility/label.js | failureTitle": {
    "message": "Lomakkeiden elementeillä ei ole niihin liittyviä tunnisteita"
  },
  "core/audits/accessibility/label.js | title": {
    "message": "Lomake-elementeillä on niihin liittyvät tunnisteet"
  },
  "core/audits/accessibility/landmark-one-main.js | description": {
    "message": "Yksi ensisijainen merkki auttaa näytönlukuohjelman käyttäjiä siirtymään verkkosivulle. [Lue lisää merkeistä](https://dequeuniversity.com/rules/axe/4.11/landmark-one-main)."
  },
  "core/audits/accessibility/landmark-one-main.js | failureTitle": {
    "message": "Dokumentilla ei ole ensisijaista merkkiä."
  },
  "core/audits/accessibility/landmark-one-main.js | title": {
    "message": "Dokumentilla on ensisijainen merkki."
  },
  "core/audits/accessibility/link-in-text-block.js | description": {
    "message": "Alhaisen kontrastin teksti on monelle vaikea tai mahdoton lukea. Erotettavissa oleva linkkiteksti parantaa heikkonäköisten käyttäjien käyttökokemusta. [Katso, miten voit tehdä linkeistä helposti erottuvia](https://dequeuniversity.com/rules/axe/4.11/link-in-text-block)."
  },
  "core/audits/accessibility/link-in-text-block.js | failureTitle": {
    "message": "Linkit erottuvat helposti vain, jos ne ovat värikkäitä."
  },
  "core/audits/accessibility/link-in-text-block.js | title": {
    "message": "Linkit erottuvat helposti ilman värejä."
  },
  "core/audits/accessibility/link-name.js | description": {
    "message": "Linkkiteksti (ja vaihtoehtoinen teksti kuvia varten, kun niitä käytetään linkkeinä), joka on erottuva, yksilöllinen ja tarkennettavissa, parantaa näytönlukuohjelmaa käyttävien navigointikokemusta. [Katso, miten voit mahdollistaa linkkien käytön](https://dequeuniversity.com/rules/axe/4.11/link-name)."
  },
  "core/audits/accessibility/link-name.js | failureTitle": {
    "message": "Linkkien nimet eivät ole helposti erottuvia"
  },
  "core/audits/accessibility/link-name.js | title": {
    "message": "Linkkien nimet ovat helposti erottuvia"
  },
  "core/audits/accessibility/list.js | description": {
    "message": "Näytönlukuohjelmat ilmoittavat luettelot tietyillä tavoilla. Kelvollinen luettelorakenne tukee näytönlukuohjelman tuottamaa sisältöä. [Lue lisää oikeasta luettelorakenteesta](https://dequeuniversity.com/rules/axe/4.11/list)."
  },
  "core/audits/accessibility/list.js | failureTitle": {
    "message": "Luettelot eivät sisällä ainoastaan `<li>`-elementtejä ja skriptiä tukevia elementtejä (`<script>` ja `<template>`)"
  },
  "core/audits/accessibility/list.js | title": {
    "message": "Luettelot sisältävät ainoastaan `<li>`-elementtejä ja skriptiä tukevia elementtejä (`<script>` ja `<template>`)"
  },
  "core/audits/accessibility/listitem.js | description": {
    "message": "Näytönlukuohjelmat edellyttävät, että luettelokohdat (`<li>`) sisältyvät ylätason elementteihin `<ul>`, `<ol>` tai `<menu>`, jotta ne voidaan ilmoittaa oikein. [Lue lisää oikeasta luettelorakenteesta](https://dequeuniversity.com/rules/axe/4.11/listitem)."
  },
  "core/audits/accessibility/listitem.js | failureTitle": {
    "message": "Luettelokohdat (`<li>`) eivät sisälly ylätason `<ul>`-, `<ol>`- tai `<menu>`-elementtiin."
  },
  "core/audits/accessibility/listitem.js | title": {
    "message": "Luettelokohdat (`<li>`) sisältyvät ylätason `<ul>`-, `<ol>`- tai `<menu>`-elementtiin."
  },
  "core/audits/accessibility/meta-refresh.js | description": {
    "message": "Käyttäjät eivät odota sivun päivittyvän automaattisesti, ja päivittäminen siirtää kohdistuksen takaisin sivun yläreunaan. Tämä voi tehdä käytöstä turhauttavaa tai sekavaa. [Lue lisää refresh-metatagin käyttämisestä](https://dequeuniversity.com/rules/axe/4.11/meta-refresh)."
  },
  "core/audits/accessibility/meta-refresh.js | failureTitle": {
    "message": "Dokumentissa on käytössä `<meta http-equiv=\"refresh\">`"
  },
  "core/audits/accessibility/meta-refresh.js | title": {
    "message": "Dokumentti ei käytä `<meta http-equiv=\"refresh\">`-tagia"
  },
  "core/audits/accessibility/meta-viewport.js | description": {
    "message": "Zoomauksen poistaminen käytöstä aiheuttaa ongelmia heikkonäköisille käyttäjille, jotka tarvitsevat näytön suurennusta nähdäkseen verkkosivun sisällön kunnolla. [Lue lisää viewport-metatagin käyttämisestä](https://dequeuniversity.com/rules/axe/4.11/meta-viewport)."
  },
  "core/audits/accessibility/meta-viewport.js | failureTitle": {
    "message": "`[user-scalable=\"no\"]` on käytössä `<meta name=\"viewport\">`-elementissä tai `[maximum-scale]`-määrite on pienempi kuin 5"
  },
  "core/audits/accessibility/meta-viewport.js | title": {
    "message": "`[user-scalable=\"no\"]` ei ole käytössä `<meta name=\"viewport\">`-elementissä, ja `[maximum-scale]`-määrite on vähintään 5"
  },
  "core/audits/accessibility/object-alt.js | description": {
    "message": "Näytönlukuohjelmat eivät voi kääntää sisältöä, joka ei ole tekstiä. Vaihtoehtoisen tekstin lisääminen `<object>`-elementteihin auttaa näytönlukuohjelmia esittämään sisällön merkityksen käyttäjille. [Lue lisää `object`-elementin vaihtoehtoisesta tekstistä](https://dequeuniversity.com/rules/axe/4.11/object-alt)."
  },
  "core/audits/accessibility/object-alt.js | failureTitle": {
    "message": "`<object>`-elementeissä ei ole vaihtoehtoista tekstiä."
  },
  "core/audits/accessibility/object-alt.js | title": {
    "message": "`<object>`-elementeissä on vaihtoehtoista tekstiä."
  },
  "core/audits/accessibility/select-name.js | description": {
    "message": "Jos lomake-elementeillä ei ole hyödyllisiä tunnisteita, käyttökokemus voi olla turhauttava näytönlukuohjelman käyttäjille. [Lue lisää `select`-elementistä](https://dequeuniversity.com/rules/axe/4.11/select-name)."
  },
  "core/audits/accessibility/select-name.js | failureTitle": {
    "message": "Tietyt elementit eivät sisällä tunniste-elementtejä."
  },
  "core/audits/accessibility/select-name.js | title": {
    "message": "Tietyt elementit sisältävät tunniste-elementtejä."
  },
  "core/audits/accessibility/skip-link.js | description": {
    "message": "Ohituslinkin lisääminen voi auttaa käyttäjiä siirtymään pääsisältöön nopeammin. [Lue lisää ohituslinkeistä](https://dequeuniversity.com/rules/axe/4.11/skip-link)."
  },
  "core/audits/accessibility/skip-link.js | failureTitle": {
    "message": "Ohituslinkkejä ei voi kohdistaa."
  },
  "core/audits/accessibility/skip-link.js | title": {
    "message": "Ohitettavat linkit ovat kohdistettavissa."
  },
  "core/audits/accessibility/tabindex.js | description": {
    "message": "Navigointijärjestys on eksplisiittinen, jos arvo on suurempi kuin 0. Vaikka ratkaisu on teknisesti käypä, se tekee usein kokemuksesta turhauttavaa avustustekniikkaa tarvitseville käyttäjille. [Lue lisää `tabindex`‐määritteestä](https://dequeuniversity.com/rules/axe/4.11/tabindex)."
  },
  "core/audits/accessibility/tabindex.js | failureTitle": {
    "message": "Joidenkin elementtien `[tabindex]`-arvo on suurempi kuin 0"
  },
  "core/audits/accessibility/tabindex.js | title": {
    "message": "Yhdenkään elementin `[tabindex]`-arvo ei ole suurempi kuin 0"
  },
  "core/audits/accessibility/table-duplicate-name.js | description": {
    "message": "Yhteenvetomääritteen tulee kuvata taulukon rakennetta, kun taas `<caption>`-osiossa pitäisi olla näytöllä näkyvä otsikko. Tarkka taulukon merkintä auttaa näytönlukuohjelmien käyttäjiä. [Lue lisää yhteenvedosta ja kuvatekstistä](https://dequeuniversity.com/rules/axe/4.11/table-duplicate-name)."
  },
  "core/audits/accessibility/table-duplicate-name.js | failureTitle": {
    "message": "Taulukoiden sisältö on sama yhteenvetomääritteessä ja täällä: `<caption>.`"
  },
  "core/audits/accessibility/table-duplicate-name.js | title": {
    "message": "Taulukoiden sisältö on eri yhteenvetomääritteessä ja täällä: `<caption>`"
  },
  "core/audits/accessibility/table-fake-caption.js | description": {
    "message": "Näytönlukuohjelmissa on ominaisuuksia, jotka tekevät taulukoissa siirtymisestä helpompaa. Voit parantaa näytönlukuohjelman käyttökokemusta varmistamalla, että taulukot käyttävät varsinaista tekstityselementtiä `[colspan]`-määritteen sisältävien solujen sijaan. [Katso lisätietoa tekstityksistä](https://dequeuniversity.com/rules/axe/4.11/table-fake-caption)."
  },
  "core/audits/accessibility/table-fake-caption.js | failureTitle": {
    "message": "Taulukoissa ei käytetä `<caption>`-määritettä sellaisten solujen sijaan, joissa on `[colspan]`-attribuutti tekstityksen merkkinä."
  },
  "core/audits/accessibility/table-fake-caption.js | title": {
    "message": "Taulukoissa käytetään `<caption>`-määritettä sellaisten solujen sijaan, joissa on `[colspan]`-attribuutti tekstityksen merkkinä."
  },
  "core/audits/accessibility/target-size.js | description": {
    "message": "Kun kosketusalueilla on riittävän suuret välit ja koko, käyttäjien, joilla on vaikeuksia kohdistaa pieniin säätimiin, on helpompi aktivoida kohteita. [Lue lisää kosketusalueista](https://dequeuniversity.com/rules/axe/4.11/target-size)."
  },
  "core/audits/accessibility/target-size.js | failureTitle": {
    "message": "Kosketusalueiden koko tai välit eivät ole riittäviä."
  },
  "core/audits/accessibility/target-size.js | title": {
    "message": "Kosketusalueiden koko ja välit ovat riittäviä."
  },
  "core/audits/accessibility/td-has-header.js | description": {
    "message": "Näytönlukuohjelmissa on ominaisuuksia, jotka tekevät taulukoissa siirtymisestä helpompaa. Voit parantaa näytönlukuohjelman käyttökokemusta varmistamalla, että suuren taulukon (vähintään kolme sarake- ja rivisolua) `<td>`-elementeillä on niihin liittyvä taulukon otsikko. [Lue lisää taulukoiden otsikoista](https://dequeuniversity.com/rules/axe/4.11/td-has-header)."
  },
  "core/audits/accessibility/td-has-header.js | failureTitle": {
    "message": "Suuren `<table>`-elementin `<td>`-elementeillä ei ole otsikoita taulukoissa."
  },
  "core/audits/accessibility/td-has-header.js | title": {
    "message": "Suuren `<table>`-elementin `<td>`-elementeillä on vähintään yksi otsikko taulukoissa."
  },
  "core/audits/accessibility/td-headers-attr.js | description": {
    "message": "Näytönlukuohjelmissa on ominaisuuksia, jotka tekevät taulukoissa siirtymisestä helpompaa. Voit parantaa näytönlukuohjelman käyttäjien kokemusta varmistamalla, että `[headers]`-määritettä käyttävät `<td>`-solut viittaavat vain toisiin soluihin samassa taulukossa. [Lue lisää `headers`‐määritteestä](https://dequeuniversity.com/rules/axe/4.11/td-headers-attr)."
  },
  "core/audits/accessibility/td-headers-attr.js | failureTitle": {
    "message": "`[headers]`-määritettä käyttävät `<table>`-elementin solut viittaavat elementtiin (`id`), joka ei ole samassa taulukossa."
  },
  "core/audits/accessibility/td-headers-attr.js | title": {
    "message": "`[headers]`-määritettä käyttävät `<table>`-elementin solut viittaavat soluihin samassa taulukossa"
  },
  "core/audits/accessibility/th-has-data-cells.js | description": {
    "message": "Näytönlukuohjelmissa on ominaisuuksia, jotka tekevät taulukoissa siirtymisestä helpompaa. Voit parantaa näytönlukuohjelmaa käyttävien kokemusta varmistamalla, että taulukoiden otsikot viittaavat aina johonkin solujoukkoon. [Lue lisää taulukoiden otsikoista](https://dequeuniversity.com/rules/axe/4.11/th-has-data-cells)."
  },
  "core/audits/accessibility/th-has-data-cells.js | failureTitle": {
    "message": "`<th>`-elementit ja elementit, joissa on `[role=\"columnheader\"/\"rowheader\"]`, eivät sisällä niissä kuvattuja datasoluja"
  },
  "core/audits/accessibility/th-has-data-cells.js | title": {
    "message": "`<th>`-elementit ja elementit, joissa on `[role=\"columnheader\"/\"rowheader\"]`, sisältävät niissä kuvatut datasolut"
  },
  "core/audits/accessibility/valid-lang.js | description": {
    "message": "Kelvollisen [BCP 47 language](https://www.w3.org/International/questions/qa-choosing-language-tags#question) ‑määritteen ilmoittaminen elementeille auttaa varmistamaan, että näytönlukuohjelma ääntää tekstin oikein. [Lue lisää `lang`‐määritteen käyttämisestä](https://dequeuniversity.com/rules/axe/4.11/valid-lang)."
  },
  "core/audits/accessibility/valid-lang.js | failureTitle": {
    "message": "`[lang]`-määritteiden arvot eivät ole kelvollisia"
  },
  "core/audits/accessibility/valid-lang.js | title": {
    "message": "`[lang]`-määritteillä on kelvollinen arvo"
  },
  "core/audits/accessibility/video-caption.js | description": {
    "message": "Kun videossa on tekstitykset, kuurot ja heikkokuuloiset saavat videon tiedot paremmin. [Lue lisää videoiden tekstityksistä](https://dequeuniversity.com/rules/axe/4.11/video-caption)."
  },
  "core/audits/accessibility/video-caption.js | failureTitle": {
    "message": "Elementit (`<video>`) eivät sisällä elementtiä (`<track>`), jossa on `[kind=\"captions\"]`"
  },
  "core/audits/accessibility/video-caption.js | title": {
    "message": "Elementit (`<video>`) sisältävät elementin (`<track>`), jossa on `[kind=\"captions\"]`"
  },
  "core/audits/autocomplete.js | columnCurrent": {
    "message": "Nykyinen arvo"
  },
  "core/audits/autocomplete.js | columnSuggestions": {
    "message": "Ehdotettu tunnus"
  },
  "core/audits/autocomplete.js | description": {
    "message": "`autocomplete` auttaa käyttäjiä lähettämään lomakkeita nopeammin. Voit helpottaa lomakkeiden täyttämistä, jos otat ominaisuuden käyttöön lisäämällä `autocomplete`-määritteelle kelvollisen arvon. [Lue lisää siitä, miten `autocomplete` on käytössä lomakkeissa](https://developers.google.com/web/fundamentals/design-and-ux/input/forms#use_metadata_to_enable_auto-complete)."
  },
  "core/audits/autocomplete.js | failureTitle": {
    "message": "`<input>`-elementeillä ei ole tarvittavia `autocomplete`-määritteitä"
  },
  "core/audits/autocomplete.js | manualReview": {
    "message": "Edellyttää manuaalista tarkistusta"
  },
  "core/audits/autocomplete.js | reviewOrder": {
    "message": "Tarkista tunnusten järjestys"
  },
  "core/audits/autocomplete.js | title": {
    "message": "`<input>`-elementeillä on käytössä tarvittava `autocomplete`"
  },
  "core/audits/autocomplete.js | warningInvalid": {
    "message": "`autocomplete`-tunnukset: \"{token}\" on virheellinen ({snippet})"
  },
  "core/audits/autocomplete.js | warningOrder": {
    "message": "Tarkista tunnusten järjestys: {tokens} ({snippet})"
  },
  "core/audits/bf-cache.js | actionableFailureType": {
    "message": "Edellyttää toimenpiteitä"
  },
  "core/audits/bf-cache.js | description": {
    "message": "Monet siirtymiset suoritetaan siirtymällä takaisin edelliselle sivulle tai eteenpäin. Siirtymisvälimuisti (bfcache) voi nopeuttaa palaamissiirtymisiä. [Lue lisää bfcachesta](https://developer.chrome.com/docs/lighthouse/performance/bf-cache/)"
  },
  "core/audits/bf-cache.js | displayValue": {
    "message": "{itemCount,plural, =1{1 epäonnistumisen syy}other{# epäonnistumisen syytä}}"
  },
  "core/audits/bf-cache.js | failureReasonColumn": {
    "message": "Epäonnistumisen syy"
  },
  "core/audits/bf-cache.js | failureTitle": {
    "message": "Sivu esti siirtymisvälimuistin palauttamisen"
  },
  "core/audits/bf-cache.js | failureTypeColumn": {
    "message": "Virheen tyyppi"
  },
  "core/audits/bf-cache.js | notActionableFailureType": {
    "message": "Toimenpiteet eivät ole mahdollisia"
  },
  "core/audits/bf-cache.js | supportPendingFailureType": {
    "message": "Odottaa selaimen tukea"
  },
  "core/audits/bf-cache.js | title": {
    "message": "Sivu ei estänyt siirtymisvälimuistin palauttamista"
  },
  "core/audits/bf-cache.js | warningHeadless": {
    "message": "Siirtymisvälimuistia ei voi testata vanhassa Headless Chromessa (`--chrome-flags=\"--headless=old\"`). Jos haluat nähdä tarkastuksen tulokset, käytä uutta Headless Chromea (`--chrome-flags=\"--headless=new\"`) tai tavallista Chromea."
  },
  "core/audits/bootup-time.js | chromeExtensionsWarning": {
    "message": "Chromen laajennukset heikensivät tämän sivun latausnopeutta. Yritä tarkastaa sivu incognito-tilassa tai Chrome-profiililla, johon ei ole lisätty laajennuksia."
  },
  "core/audits/bootup-time.js | columnScriptEval": {
    "message": "Skriptin arviointi"
  },
  "core/audits/bootup-time.js | columnScriptParse": {
    "message": "Skriptin jäsennys"
  },
  "core/audits/bootup-time.js | columnTotal": {
    "message": "Prosessoriaika yhteensä"
  },
  "core/audits/bootup-time.js | description": {
    "message": "Suosittelemme lyhentämään JS:n jäsentämiseen, kääntämiseen ja suorittamiseen kuluvaa aikaa. Pienempien JS-resurssien jakeleminen voi auttaa. [Katso, miten voit lyhentää JavaScriptin suoritusaikaa](https://developer.chrome.com/docs/lighthouse/performance/bootup-time/)."
  },
  "core/audits/bootup-time.js | failureTitle": {
    "message": "Vähennä JavaScriptin suorittamiseen kuluvaa aikaa"
  },
  "core/audits/bootup-time.js | title": {
    "message": "JavaScriptin suorittamiseen kuluva aika"
  },
  "core/audits/byte-efficiency/total-byte-weight.js | description": {
    "message": "Suuret verkkoresurssit aiheuttavat kuluja käyttäjille ja liittyvät vahvasti pitkiin latausaikoihin. [Lue lisää resurssien koon pienentämisestä](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/)."
  },
  "core/audits/byte-efficiency/total-byte-weight.js | displayValue": {
    "message": "Yhteenlaskettu koko oli {totalBytes, number, bytes} KiB"
  },
  "core/audits/byte-efficiency/total-byte-weight.js | failureTitle": {
    "message": "Vältä valtavia verkkoresursseja"
  },
  "core/audits/byte-efficiency/total-byte-weight.js | title": {
    "message": "Välttää valtavia verkkoresursseja"
  },
  "core/audits/byte-efficiency/unminified-css.js | description": {
    "message": "CSS-tiedostojen pienentäminen voi auttaa pienentämään verkkoresurssien kokoa. [Katso, miten voit pienentää CSS-tiedostoja](https://developer.chrome.com/docs/lighthouse/performance/unminified-css/)."
  },
  "core/audits/byte-efficiency/unminified-css.js | title": {
    "message": "Pienennä CSS-tiedostoja"
  },
  "core/audits/byte-efficiency/unminified-javascript.js | description": {
    "message": "JavaScript-tiedostojen pienentäminen voi auttaa pienentämään resurssien kokoa ja lyhentämään skriptin jäsentämiseen kuluvaa aikaa. [Katso, miten voit pienentää JavaScript-tiedostoja](https://developer.chrome.com/docs/lighthouse/performance/unminified-javascript/)."
  },
  "core/audits/byte-efficiency/unminified-javascript.js | title": {
    "message": "Pienennä JavaScript-tiedostoja"
  },
  "core/audits/byte-efficiency/unused-css-rules.js | description": {
    "message": "Vähennä tyylisivujen käyttämättömiä sääntöjä ja lykkää sellaista CSS:ää, jota ei käytetä sivun yläosan sisältöön, niin vähennät verkkotoiminnan tavujen kulutusta. [Lue lisää käyttämättömän CSS:n vähentämisestä](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/)."
  },
  "core/audits/byte-efficiency/unused-css-rules.js | title": {
    "message": "Vähennä käyttämätöntä CSS:ää"
  },
  "core/audits/byte-efficiency/unused-javascript.js | description": {
    "message": "Vähennä käyttämätöntä JavaScriptiä ja lykkää skriptien lataamista, kunnes niiden on vähennettävä verkkotoiminnan tavujen kulutusta. [Lue lisää käyttämättömän JavaScriptin vähentämisestä](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/)."
  },
  "core/audits/byte-efficiency/unused-javascript.js | title": {
    "message": "Vähennä käyttämätöntä JavaScriptiä"
  },
  "core/audits/clickjacking-mitigation.js | columnSeverity": {
    "message": "Vakavuus"
  },
  "core/audits/clickjacking-mitigation.js | description": {
    "message": "`X-Frame-Options` (XFO) ‑otsikko tai `frame-ancestors`-sääntö `Content-Security-Policy` (CSP) ‑otsikossa määrittävät, mihin sivu voidaan upottaa. Ne voivat vähentää clickjacking-hyökkäyksiä estämällä joidenkin tai kaikkien sivustojen sivun upottamisen. [Lue lisää clickjacking-hyökkäysten torjumisesta](https://developer.chrome.com/docs/lighthouse/best-practices/clickjacking-mitigation)."
  },
  "core/audits/clickjacking-mitigation.js | noClickjackingMitigation": {
    "message": "Kehyksen hallintaa koskevaa käytäntöä ei löydy"
  },
  "core/audits/clickjacking-mitigation.js | title": {
    "message": "Pienennä clickjackauksen riskiä XFO:lla tai CSP:llä"
  },
  "core/audits/csp-xss.js | columnDirective": {
    "message": "Sääntö"
  },
  "core/audits/csp-xss.js | columnSeverity": {
    "message": "Vakavuus"
  },
  "core/audits/csp-xss.js | description": {
    "message": "Vahva Content Security Policy ‑käytäntö (CSP) vähentää merkittävästi cross-site scripting (XSS) ‑hyökkäyksien riskiä. [Katso, miten voit estää XSS:n käyttämällä CSP:tä](https://developer.chrome.com/docs/lighthouse/best-practices/csp-xss/)."
  },
  "core/audits/csp-xss.js | itemSeveritySyntax": {
    "message": "Syntaksi"
  },
  "core/audits/csp-xss.js | metaTagMessage": {
    "message": "Sivu sisältää `<meta>`-tagissa määritetyn CSP:n. Harkitse CSP:n siirtämistä HTTP-otsikkoon tai toisen tiukan CSP:n määrittämistä HTTP-otsikkoon."
  },
  "core/audits/csp-xss.js | noCsp": {
    "message": "Täytäntöönpanotilasta ei löytynyt CSP:tä"
  },
  "core/audits/csp-xss.js | title": {
    "message": "Varmista, että CSP tehoaa XSS-hyökkäyksiä vastaan"
  },
  "core/audits/deprecations.js | columnDeprecate": {
    "message": "Käytöstä poistaminen / varoitus"
  },
  "core/audits/deprecations.js | columnLine": {
    "message": "Rivi"
  },
  "core/audits/deprecations.js | description": {
    "message": "Käytöstä poistetut rajapinnat poistetaan aikanaan selaimesta. [Lue lisää käytöstä poistetuista rajapinnoista](https://developer.chrome.com/docs/lighthouse/best-practices/deprecations/)."
  },
  "core/audits/deprecations.js | displayValue": {
    "message": "{itemCount,plural, =1{1 varoitus löydetty}other{# varoitusta löydetty}}"
  },
  "core/audits/deprecations.js | failureTitle": {
    "message": "Käyttää käytöstä poistettuja sovellusliittymiä"
  },
  "core/audits/deprecations.js | title": {
    "message": "Välttää käytöstä poistettuja sovellusliittymiä"
  },
  "core/audits/dobetterweb/charset.js | description": {
    "message": "Merkistökoodausilmoitus vaaditaan. Sen voi tehdä `<meta>`-tagilla HTML:n ensimmäisen 1 024 tavun sisällä tai HTTP:n vastauksen otsikon sisältötyyppi-kohdassa. [Lue lisää merkistökoodauksen ilmoittamisesta](https://developer.chrome.com/docs/lighthouse/best-practices/charset/)."
  },
  "core/audits/dobetterweb/charset.js | failureTitle": {
    "message": "Merkistöilmoitus puuttuu tai näkyy liian myöhään HTML:ssä"
  },
  "core/audits/dobetterweb/charset.js | title": {
    "message": "Merkistö määritelty oikein"
  },
  "core/audits/dobetterweb/doctype.js | description": {
    "message": "Dokumenttityypin määrittäminen estää selainta siirtymästä quirks-tilaan. [Lue lisää doctype-ilmoituksesta](https://developer.chrome.com/docs/lighthouse/best-practices/doctype/)."
  },
  "core/audits/dobetterweb/doctype.js | explanationBadDoctype": {
    "message": "Dokumenttityypin nimen on oltava merkkijono `html`"
  },
  "core/audits/dobetterweb/doctype.js | explanationLimitedQuirks": {
    "message": "Dokumentin sisältämä `doctype` käynnistää tämän: `limited-quirks-mode`"
  },
  "core/audits/dobetterweb/doctype.js | explanationNoDoctype": {
    "message": "Dokumentin täytyy sisältää dokumenttityyppi"
  },
  "core/audits/dobetterweb/doctype.js | explanationPublicId": {
    "message": "Oletettu publicId-arvo on tyhjä merkkijono"
  },
  "core/audits/dobetterweb/doctype.js | explanationSystemId": {
    "message": "Oletettu systemId-arvo on tyhjä merkkijono"
  },
  "core/audits/dobetterweb/doctype.js | explanationWrongDoctype": {
    "message": "Dokumentin sisältämä `doctype` käynnistää tämän: `quirks-mode`"
  },
  "core/audits/dobetterweb/doctype.js | failureTitle": {
    "message": "Sivulta puuttuu HTML-tiedostotyyppi, mikä käynnistää quirks-tilan"
  },
  "core/audits/dobetterweb/doctype.js | title": {
    "message": "Sivulla on HTML-dokumenttityyppi"
  },
  "core/audits/dobetterweb/geolocation-on-start.js | description": {
    "message": "Sivustot, jotka pyytävät sijainnin käyttöoikeutta ilman asiayhteyttä, saavat käyttäjät epäluuloisiksi tai hämmentävät heitä. Kokeile sen sijaan yhdistää pyyntö käyttäjätoimintoon. [Lue lisää maantieteellisen sijainnin luvasta](https://developer.chrome.com/docs/lighthouse/best-practices/geolocation-on-start/)."
  },
  "core/audits/dobetterweb/geolocation-on-start.js | failureTitle": {
    "message": "Pyytää maantieteellistä sijaintia sivun latauksessa"
  },
  "core/audits/dobetterweb/geolocation-on-start.js | title": {
    "message": "Välttää maantieteellisen sijainnin pyytämistä sivun latauksessa"
  },
  "core/audits/dobetterweb/inspector-issues.js | columnIssueType": {
    "message": "Ongelmatyyppi"
  },
  "core/audits/dobetterweb/inspector-issues.js | description": {
    "message": "Chrome DevToolsin `Issues`-paneeliin kirjatut virheet viittaavat ratkaisemattomiin ongelmiin. Ne voivat johtua epäonnistuneista verkkopyynnöistä, riittämättömistä tietoturva-asetuksista ja muista selainongelmista. Katso lisätietoja kustakin ongelmasta avaamalla Chrome DevToolsin Ongelmat-paneeli."
  },
  "core/audits/dobetterweb/inspector-issues.js | failureTitle": {
    "message": "Ongelmat kirjattiin Chrome DevToolsin `Issues`-paneeliin"
  },
  "core/audits/dobetterweb/inspector-issues.js | issueTypeBlockedByResponse": {
    "message": "Eri lähteitä koskevan käytännön estämä"
  },
  "core/audits/dobetterweb/inspector-issues.js | issueTypeHeavyAds": {
    "message": "Resursseja kuluttavat raskaat mainokset"
  },
  "core/audits/dobetterweb/inspector-issues.js | title": {
    "message": "Ei ongelmia Chrome DevToolsin `Issues`-paneelissa"
  },
  "core/audits/dobetterweb/js-libraries.js | columnVersion": {
    "message": "Versio"
  },
  "core/audits/dobetterweb/js-libraries.js | description": {
    "message": "Kaikki APIn JavaScript-kirjastot havaittiin sivulla. [Lue lisää tästä JavaScript-kirjaston havaitsemisen diagnostiikkatarkastuksesta](https://developer.chrome.com/docs/lighthouse/best-practices/js-libraries/)."
  },
  "core/audits/dobetterweb/js-libraries.js | title": {
    "message": "Havaitut JavaScript-kirjastot"
  },
  "core/audits/dobetterweb/notification-on-start.js | description": {
    "message": "Sivustot, jotka pyytävät lupaa ilmoitusten lähettämiseen ilman asiayhteyttä, saavat käyttäjät epäluuloisiksi tai hämmentävät heitä. Kokeile sen sijaan yhdistää pyyntö käyttäjäeleisiin. [Lue lisää ilmoitusluvan pyytämisestä vastuullisesti](https://developer.chrome.com/docs/lighthouse/best-practices/notification-on-start/)."
  },
  "core/audits/dobetterweb/notification-on-start.js | failureTitle": {
    "message": "Pyytää ilmoitusten käyttöoikeutta sivun latauksessa"
  },
  "core/audits/dobetterweb/notification-on-start.js | title": {
    "message": "Välttää ilmoitusten käyttöoikeuden pyytämistä sivun latauksessa"
  },
  "core/audits/dobetterweb/paste-preventing-inputs.js | description": {
    "message": "Sisällön liittämisen estäminen on käyttökokemuksen kannalta huono käytäntö ja heikentää suojausta estämällä salasanojen ylläpitotyökalut.[Lue lisää käyttäjäystävällisistä syöttökentistä](https://developer.chrome.com/docs/lighthouse/best-practices/paste-preventing-inputs/)."
  },
  "core/audits/dobetterweb/paste-preventing-inputs.js | failureTitle": {
    "message": "Estää käyttäjiä liittämästä sisältöä syötekenttiin"
  },
  "core/audits/dobetterweb/paste-preventing-inputs.js | title": {
    "message": "Sallii käyttäjien liittää sisältöä syötekenttiin"
  },
  "core/audits/errors-in-console.js | description": {
    "message": "Konsoliin kirjatut virheet viittaavat ratkaisemattomiin ongelmiin. Ne voivat johtua epäonnistuneista verkkopyynnöistä ja muista selainongelmista. [Lue lisää virheistä konsolin diagnostiikkatarkastuksesta](https://developer.chrome.com/docs/lighthouse/best-practices/errors-in-console/)."
  },
  "core/audits/errors-in-console.js | failureTitle": {
    "message": "Selainvirheet kirjattiin konsoliin"
  },
  "core/audits/errors-in-console.js | title": {
    "message": "Konsoliin ei kirjattu selainvirheitä"
  },
  "core/audits/has-hsts.js | columnDirective": {
    "message": "Sääntö"
  },
  "core/audits/has-hsts.js | columnSeverity": {
    "message": "Vakavuus"
  },
  "core/audits/has-hsts.js | description": {
    "message": "HSTS-otsikon käyttöönotto vähentää merkittävästi HTTP-yhteyksien alentamisen ja salakuunteluhyökkäysten riskiä. Suosittelemme käyttöönottoa vaiheittain, aloittaen alhaisesta enimmäisiästä. [Lue lisää vahvan HSTS-käytännön käyttämisestä.](https://developer.chrome.com/docs/lighthouse/best-practices/has-hsts)"
  },
  "core/audits/has-hsts.js | invalidSyntax": {
    "message": "Virheellinen syntaksi"
  },
  "core/audits/has-hsts.js | lowMaxAge": {
    "message": "`max-age` on liian alhainen"
  },
  "core/audits/has-hsts.js | noHsts": {
    "message": "HSTS-otsikkoa ei löytynyt"
  },
  "core/audits/has-hsts.js | noMaxAge": {
    "message": "Ei `max-age`-sääntöä"
  },
  "core/audits/has-hsts.js | noPreload": {
    "message": "`preload`-sääntöä ei löytynyt"
  },
  "core/audits/has-hsts.js | noSubdomain": {
    "message": "`includeSubDomains`-sääntöä ei löytynyt"
  },
  "core/audits/has-hsts.js | title": {
    "message": "Käytä vahvaa HSTS-käytäntöä"
  },
  "core/audits/image-aspect-ratio.js | columnActual": {
    "message": "Kuvasuhde (todellinen)"
  },
  "core/audits/image-aspect-ratio.js | columnDisplayed": {
    "message": "Kuvasuhde (näkyvä)"
  },
  "core/audits/image-aspect-ratio.js | description": {
    "message": "Kuvan mittasuhteiden tulisi täsmätä luonnolliseen kuvasuhteeseen. [Lue lisää kuvasuhteesta](https://developer.chrome.com/docs/lighthouse/best-practices/image-aspect-ratio/)."
  },
  "core/audits/image-aspect-ratio.js | failureTitle": {
    "message": "Näytä kuvat, joiden kuvasuhde on virheellinen"
  },
  "core/audits/image-aspect-ratio.js | title": {
    "message": "Näytä kuvat, joiden kuvasuhde on oikea"
  },
  "core/audits/image-size-responsive.js | columnActual": {
    "message": "Todellinen koko"
  },
  "core/audits/image-size-responsive.js | columnDisplayed": {
    "message": "Näkyvä koko"
  },
  "core/audits/image-size-responsive.js | columnExpected": {
    "message": "Odotettu koko"
  },
  "core/audits/image-size-responsive.js | description": {
    "message": "Kuvan luonnollisten mittojen pitäisi olla suhteutettu näytön kokoon ja pikselisuhteeseen, jotta kuva on mahdollisimman selkeä. [Lue lisää responsiivisten kuvien lisäämisestä](https://web.dev/articles/serve-responsive-images)."
  },
  "core/audits/image-size-responsive.js | failureTitle": {
    "message": "Näyttää kuvat alhaisella resoluutiolla"
  },
  "core/audits/image-size-responsive.js | title": {
    "message": "Näyttää kuvat sopivalla resoluutiolla"
  },
  "core/audits/insights/cls-culprits-insight.js | columnScore": {
    "message": "Asettelun muutospisteet"
  },
  "core/audits/is-on-https.js | allowed": {
    "message": "Sallittu"
  },
  "core/audits/is-on-https.js | blocked": {
    "message": "Estetty"
  },
  "core/audits/is-on-https.js | columnInsecureURL": {
    "message": "Suojaamaton URL-osoite"
  },
  "core/audits/is-on-https.js | columnResolution": {
    "message": "Pyydä ratkaisua"
  },
  "core/audits/is-on-https.js | description": {
    "message": "Kaikki sivustot on suojattava HTTPS:llä, vaikka ne eivät käsittelisi arkaluontoista dataa. Vältä myös [yhdistelmäsisältöä](https://developers.google.com/web/fundamentals/security/prevent-mixed-content/what-is-mixed-content) eli alkupyyntöön vastaamista HTTPS:llä ja joidenkin resurssien lataamista HTTP:llä. HTTPS estää tunkeutujia peukaloimasta sovelluksesi ja sen käyttäjien välistä toimintaa tai seuraamasta sitä passiivisesti. HTTPS:ää edellytetään HTTP/2:ssa ja monien uusien verkkoalustojen rajapinnoissa. [Lue lisää HTTPS:stä](https://developer.chrome.com/docs/lighthouse/pwa/is-on-https/)."
  },
  "core/audits/is-on-https.js | displayValue": {
    "message": "{itemCount,plural, =1{1 suojaamaton pyyntö löytyi}other{# suojaamatonta pyyntöä löytyi}}"
  },
  "core/audits/is-on-https.js | failureTitle": {
    "message": "Ei käytä HTTPS:ää"
  },
  "core/audits/is-on-https.js | title": {
    "message": "Käyttää HTTPS:ää"
  },
  "core/audits/is-on-https.js | upgraded": {
    "message": "Siirretty automaattisesti HTTPS:ään"
  },
  "core/audits/is-on-https.js | warning": {
    "message": "Sallittu varoituksen kanssa"
  },
  "core/audits/layout-shifts.js | columnScore": {
    "message": "Asettelun muutospisteet"
  },
  "core/audits/layout-shifts.js | description": {
    "message": "Nämä ovat suurimmat sivun asettelun muutokset. Kukin taulukon kohde vastaa yhtä asettelumuutosta ja näyttää eniten siirtyneen elementin. Jokaisen kohteen alla on mahdollisia juurisyitä, jotka ovat johtaneet asettelumuutokseen. Osa näistä asettelumuutoksista ei välttämättä sisälly CLS-mittarin arvoon [ikkunoinnin](https://web.dev/articles/cls#what_is_cls) takia. [Katso, miten voit parantaa CLS:ää](https://web.dev/articles/optimize-cls)"
  },
  "core/audits/layout-shifts.js | displayValueShiftsFound": {
    "message": "{shiftCount,plural, =1{1 asettelumuutos löydetty}other{# asettelumuutosta löydetty}}"
  },
  "core/audits/layout-shifts.js | rootCauseFontChanges": {
    "message": "Verkkofontti ladattu"
  },
  "core/audits/layout-shifts.js | rootCauseInjectedIframe": {
    "message": "Lisätty iframe"
  },
  "core/audits/layout-shifts.js | rootCauseUnsizedMedia": {
    "message": "Mediaelementiltä puuttuu tarkka koko"
  },
  "core/audits/layout-shifts.js | title": {
    "message": "Vältä suuria asettelun muutoksia"
  },
  "core/audits/long-tasks.js | description": {
    "message": "Näyttää pääsäikeen pitkäkestoisimmat tehtävät, mistä on apua syöttöviiveen pahimpien aiheuttajien tunnistamisessa. [Katso, miten voit välttää pitkät pääsäikeen tehtävät](https://web.dev/articles/optimize-long-tasks)."
  },
  "core/audits/long-tasks.js | displayValue": {
    "message": "{itemCount,plural, =1{# pitkäkestoinen tehtävä löydetty}other{# pitkäkestoista tehtävää löydetty}}"
  },
  "core/audits/long-tasks.js | title": {
    "message": "Vältä pitkäkestoisia pääsäikeen tehtäviä"
  },
  "core/audits/mainthread-work-breakdown.js | columnCategory": {
    "message": "Luokka"
  },
  "core/audits/mainthread-work-breakdown.js | description": {
    "message": "Suosittelemme lyhentämään JS:n jäsentämiseen, kääntämiseen ja suorittamiseen kuluvaa aikaa. Pienempien JS-resurssien jakeleminen voi auttaa. [Katso, miten voit minimoida pääsäikeestä aiheutuvaa työtä](https://developer.chrome.com/docs/lighthouse/performance/mainthread-work-breakdown/)."
  },
  "core/audits/mainthread-work-breakdown.js | failureTitle": {
    "message": "Minimoi pääsäikeen työkuorma"
  },
  "core/audits/mainthread-work-breakdown.js | title": {
    "message": "Minimoi pääsäikeen työkuorman"
  },
  "core/audits/metrics/cumulative-layout-shift.js | description": {
    "message": "Kumulatiivinen asettelumuutos mittaa näkymässä olevien elementtien liikettä. [Lue lisää Kumulatiivinen asettelumuutos ‐mittarista](https://web.dev/articles/cls)."
  },
  "core/audits/metrics/first-contentful-paint.js | description": {
    "message": "Ensimmäinen sisällön renderöinti kertoo, milloin ensimmäinen tekstikohde tai kuva renderöidään. [Lue lisää Ensimmäinen sisällön renderöinti ‐mittarista](https://developer.chrome.com/docs/lighthouse/performance/first-contentful-paint/)."
  },
  "core/audits/metrics/interaction-to-next-paint.js | description": {
    "message": "Interaktiosta seuraavaan renderöintiin ‐mittari mittaa sivun responsiivisuutta eli sitä, kuinka pian sivu vastaa näkyvästi käyttäjän palautteeseen. [Lue lisää Interaktiosta seuraavaan renderöintiin ‐mittarista](https://web.dev/articles/inp)."
  },
  "core/audits/metrics/interactive.js | description": {
    "message": "Interaktiivisuutta edeltävä aika tarkoittaa aikaa, joka sivulla kestää siihen, että se on täysin interaktiivinen. [Lue lisää Interaktiivisuutta edeltävä aika ‐mittarista](https://developer.chrome.com/docs/lighthouse/performance/interactive/)."
  },
  "core/audits/metrics/largest-contentful-paint.js | description": {
    "message": "Suurimman sisällön renderöinti mittaa suurimman tekstikohteen tai kuvan renderöintiaikaa. [Lue lisää Sivun latautumisaika ‐mittarista](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)."
  },
  "core/audits/metrics/max-potential-fid.js | description": {
    "message": "Käyttäjien ensitoiminnon suurin mahdollinen viive on sama kuin pisimmän tehtävän kesto. [Lue lisää Suurin mahdollinen ensimmäisen toiminnon viive ‑mittarista](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-max-potential-fid/)."
  },
  "core/audits/metrics/speed-index.js | description": {
    "message": "Speed Index kertoo, kuinka nopeasti sivun sisältö tulee näkyviin. [Lue lisää Speed Index -mittarista](https://developer.chrome.com/docs/lighthouse/performance/speed-index/)."
  },
  "core/audits/metrics/total-blocking-time.js | description": {
    "message": "Kaikkien FCP:n ja interaktiivisuutta edeltävän ajan väliset ajanjaksot yhteenlaskettuna, kun tehtävän pituus on yli 50 ms (ilmoitettu millisekunteina). [Lue lisää Estoaika yhteensä ‐mittarista](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-total-blocking-time/)."
  },
  "core/audits/network-rtt.js | description": {
    "message": "Verkon meno-paluuajoilla (RTT) on suuri vaikutus suorituskykyyn. Jos RTT lähtöpaikkaan on pitkä, se on merkki siitä, että käyttäjää lähellä olevien palvelimien suorituskyvyssä on parantamisen varaa. [Lue lisää meno-paluuajasta](https://hpbn.co/primer-on-latency-and-bandwidth/)."
  },
  "core/audits/network-rtt.js | title": {
    "message": "Verkon meno-paluuajat"
  },
  "core/audits/network-server-latency.js | description": {
    "message": "Palvelimen viiveet voivat vaikuttaa verkon suorituskykyyn. Jos lähtöpaikan palvelimen viive on korkea, se on merkki siitä, että palvelin on ylikuormittunut tai sen taustasuorituskyky on huono. [Lue lisää palvelimen vastausajasta](https://hpbn.co/primer-on-web-performance/#analyzing-the-resource-waterfall)."
  },
  "core/audits/network-server-latency.js | title": {
    "message": "Palvelimen taustaviiveet"
  },
  "core/audits/non-composited-animations.js | description": {
    "message": "Sommittelemattomat animaatiot voivat olla huonolaatuisia ja nostaa CLS:ää. [Katso, miten voit välttää sommittelemattomia animaatioita](https://developer.chrome.com/docs/lighthouse/performance/non-composited-animations/)."
  },
  "core/audits/non-composited-animations.js | displayValue": {
    "message": "{itemCount,plural, =1{# animaatioelementti löydetty}other{# animaatioelementtiä löydetty}}"
  },
  "core/audits/non-composited-animations.js | filterMayMovePixels": {
    "message": "filter-omaisuus voi siirtää pikseleitä"
  },
  "core/audits/non-composited-animations.js | incompatibleAnimations": {
    "message": "Kohteessa on toinen yhteensopimaton animaatio"
  },
  "core/audits/non-composited-animations.js | nonReplaceCompositeMode": {
    "message": "Tehosteen sommittelutila on muu kuin replace"
  },
  "core/audits/non-composited-animations.js | title": {
    "message": "Vältä sommittelemattomia animaatioita"
  },
  "core/audits/non-composited-animations.js | transformDependsBoxSize": {
    "message": "transform-omaisuus riippuu kentän koosta"
  },
  "core/audits/non-composited-animations.js | unsupportedCSSProperty": {
    "message": "{propertyCount,plural, =1{Ei-tuettu CSS-omaisuus: {properties}}other{Ei-tuetut CSS-omaisuudet: {properties}}}"
  },
  "core/audits/non-composited-animations.js | unsupportedCustomCSSProperty": {
    "message": "{propertyCount,plural, =1{Mukautettuja CSS-muuttujia ei voi animoida kompositoijassa: {properties}}other{Mukautettuja CSS-muuttujia ei voi animoida kompositoijassa: {properties}}}"
  },
  "core/audits/non-composited-animations.js | unsupportedTimingParameters": {
    "message": "Tehosteessa on ei-tuettuja ajoitusparametreja"
  },
  "core/audits/origin-isolation.js | columnDirective": {
    "message": "Sääntö"
  },
  "core/audits/origin-isolation.js | columnSeverity": {
    "message": "Vakavuus"
  },
  "core/audits/origin-isolation.js | description": {
    "message": "Cross-Origin-Opener-Policy-käytännöllä (COOP) voidaan eristää ylimmän tason ikkuna muista dokumenteista, kuten ponnahdusikkunoista. [Lue lisää COOP-otsikon käyttöönotosta.](https://web.dev/articles/why-coop-coep#coop)"
  },
  "core/audits/origin-isolation.js | invalidSyntax": {
    "message": "Virheellinen syntaksi"
  },
  "core/audits/origin-isolation.js | noCoop": {
    "message": "COOP-otsikkoa ei löytynyt"
  },
  "core/audits/origin-isolation.js | title": {
    "message": "Varmista alkuperän oikea eristäminen COOP:n avulla"
  },
  "core/audits/redirects-http.js | description": {
    "message": "Varmista, että uudelleenohjaat kaiken HTTP-liikenteen HTTPS:ään, jotta kaikki käyttäjät saavat turvalliset verkko-ominaisuudet. [Lue lisää](https://developer.chrome.com/docs/lighthouse/pwa/redirects-http/)."
  },
  "core/audits/redirects-http.js | failureTitle": {
    "message": "Ei uudelleenohjaa HTTP-liikennettä HTTPS:ään"
  },
  "core/audits/redirects-http.js | title": {
    "message": "Uudelleenohjaa HTTP-liikennettä HTTPS:ään"
  },
  "core/audits/redirects.js | description": {
    "message": "Uudelleenohjaukset viivästyttävät sivun lataamista. [Lue, miten voit välttää sivujen uudelleenohjaukset](https://developer.chrome.com/docs/lighthouse/performance/redirects/)."
  },
  "core/audits/redirects.js | title": {
    "message": "Vältä useita uudelleenohjauksia"
  },
  "core/audits/seo/canonical.js | description": {
    "message": "Ensisijaiset linkit ehdottavat, mitä URL-osoitteita näyttää hakutuloksissa. [Lue lisää ensisijaisista linkeistä](https://developer.chrome.com/docs/lighthouse/seo/canonical/)."
  },
  "core/audits/seo/canonical.js | explanationConflict": {
    "message": "Useita ristiriitaisia URL-osoitteita ({urlList})"
  },
  "core/audits/seo/canonical.js | explanationInvalid": {
    "message": "Virheellinen URL-osoite ({url})"
  },
  "core/audits/seo/canonical.js | explanationPointsElsewhere": {
    "message": "Viittaa toiseen `hreflang`-sijaintiin ({url})"
  },
  "core/audits/seo/canonical.js | explanationRelative": {
    "message": "Ei ole absoluuttinen URL-osoite ({url})"
  },
  "core/audits/seo/canonical.js | explanationRoot": {
    "message": "Osoittaa verkkotunnuksen juuri-URL-osoitteeseen (kotisivulle) sitä vastaavan sisältösivun sijaan"
  },
  "core/audits/seo/canonical.js | failureTitle": {
    "message": "Dokumentissa ei ole kelvollista `rel=canonical`-määritettä"
  },
  "core/audits/seo/canonical.js | title": {
    "message": "Dokumentissa on kelvollinen `rel=canonical`"
  },
  "core/audits/seo/crawlable-anchors.js | columnFailingLink": {
    "message": "Linkki ei indeksoitavissa"
  },
  "core/audits/seo/crawlable-anchors.js | description": {
    "message": "Hakukoneet voivat käyttää linkeissä `href`-attribuutteja sivustojen indeksointia varten. Varmista, että ankkurielementtien `href`-attribuutti linkittää sopivaan kohteeseen, jotta useammat sivuston sivut ovat löydettävissä. [Katso, miten voit tehdä linkeistä indeksoitavia](https://support.google.com/webmasters/answer/9112205)."
  },
  "core/audits/seo/crawlable-anchors.js | failureTitle": {
    "message": "Linkit eivät ole indeksoitavissa"
  },
  "core/audits/seo/crawlable-anchors.js | title": {
    "message": "Linkit ovat indeksoitavissa"
  },
  "core/audits/seo/hreflang.js | description": {
    "message": "hreflang-linkit kertovat hakukoneille, mikä sivuversio niiden pitäisi lisätä tietyn kielen tai alueen hakutuloksiin. [Lue lisää: `hreflang`](https://developer.chrome.com/docs/lighthouse/seo/hreflang/)."
  },
  "core/audits/seo/hreflang.js | failureTitle": {
    "message": "Dokumentissa ei ole kelvollista `hreflang`-elementtiä"
  },
  "core/audits/seo/hreflang.js | notFullyQualified": {
    "message": "Suhteellinen href-arvo"
  },
  "core/audits/seo/hreflang.js | title": {
    "message": "Dokumentissa on kelvollinen `hreflang`"
  },
  "core/audits/seo/hreflang.js | unexpectedLanguage": {
    "message": "Odottamaton kielikoodi"
  },
  "core/audits/seo/http-status-code.js | description": {
    "message": "Epäonnistuneita HTTP-tilakoodeja sisältäviä sivuja ei välttämättä indeksoida oikein. [Lue lisää HTTP-tilakoodeista](https://developer.chrome.com/docs/lighthouse/seo/http-status-code/)."
  },
  "core/audits/seo/http-status-code.js | failureTitle": {
    "message": "Sivun HTTP-tilakoodi on epäonnistunut"
  },
  "core/audits/seo/http-status-code.js | title": {
    "message": "Sivun HTTP-tilakoodi on onnistunut"
  },
  "core/audits/seo/is-crawlable.js | description": {
    "message": "Hakukoneet eivät voi sisällyttää sivujasi hakutuloksiin, jos niillä ei ole lupaa indeksoida niitä. [Lue lisää indeksointirobottien säännöistä](https://developer.chrome.com/docs/lighthouse/seo/is-crawlable/)."
  },
  "core/audits/seo/is-crawlable.js | failureTitle": {
    "message": "Sivun indeksointi on estetty"
  },
  "core/audits/seo/is-crawlable.js | title": {
    "message": "Sivun indeksointia ei ole estetty"
  },
  "core/audits/seo/link-text.js | description": {
    "message": "Kuvailevat linkkitekstit auttavat hakukoneita ymmärtämään sisältöäsi. [Katso, miten voit helpottaa linkkien käyttöä](https://developer.chrome.com/docs/lighthouse/seo/link-text/)."
  },
  "core/audits/seo/link-text.js | displayValue": {
    "message": "{itemCount,plural, =1{1 linkki löydetty}other{# linkkiä löydetty}}"
  },
  "core/audits/seo/link-text.js | failureTitle": {
    "message": "Linkeissä ei ole kuvaavaa tekstiä"
  },
  "core/audits/seo/link-text.js | title": {
    "message": "Linkeissä on kuvailevaa tekstiä"
  },
  "core/audits/seo/manual/structured-data.js | description": {
    "message": "Vahvista strukturoitu data [Structured Data Testing Toolilla](https://developers.google.com/search/docs/appearance/structured-data/). [Lue lisää strukturoidusta datasta](https://developer.chrome.com/docs/lighthouse/seo/structured-data/)."
  },
  "core/audits/seo/manual/structured-data.js | title": {
    "message": "Strukturoitu data on kelvollinen"
  },
  "core/audits/seo/meta-description.js | description": {
    "message": "Hakutuloksiin voidaan lisätä sisällönkuvauskenttiä, joissa kuvaillaan sivun sisältöä lyhyesti. [Lue lisää sisällönkuvauskentästä](https://developer.chrome.com/docs/lighthouse/seo/meta-description/)."
  },
  "core/audits/seo/meta-description.js | explanation": {
    "message": "Kuvausteksti on tyhjä."
  },
  "core/audits/seo/meta-description.js | failureTitle": {
    "message": "Dokumentissa ei ole sisällönkuvauskenttää"
  },
  "core/audits/seo/meta-description.js | title": {
    "message": "Dokumentissa on sisällönkuvauskenttä"
  },
  "core/audits/seo/robots-txt.js | description": {
    "message": "Jos robots.txt-tiedostosi on muotoiltu väärin, indeksointirobotit eivät välttämättä ymmärrä, miten haluat sivustosi indeksoitavan. [Lue lisää robots.txt-tiedostoista](https://developer.chrome.com/docs/lighthouse/seo/invalid-robots-txt/)."
  },
  "core/audits/seo/robots-txt.js | displayValueHttpBadCode": {
    "message": "Robots.txt-pyyntö palautti HTTP-tilan: {statusCode}"
  },
  "core/audits/seo/robots-txt.js | displayValueValidationError": {
    "message": "{itemCount,plural, =1{1 virhe löydetty}other{# virhettä löydetty}}"
  },
  "core/audits/seo/robots-txt.js | explanation": {
    "message": "Lighthouse ei voinut ladata robots.txt-tiedostoa"
  },
  "core/audits/seo/robots-txt.js | failureTitle": {
    "message": "robots.txt ei ole kelvollinen"
  },
  "core/audits/seo/robots-txt.js | title": {
    "message": "robots.txt on kelvollinen"
  },
  "core/audits/server-response-time.js | description": {
    "message": "Varmista, että päädokumentin palvelimen vasteaika on lyhyt, koska kaikki muut pyynnöt ovat riippuvaisia siitä. [Lue lisää Ensimmäistä tavua edeltävä aika ‐mittarista](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/)."
  },
  "core/audits/server-response-time.js | displayValue": {
    "message": "Päädokumentti käytti {timeInMs, number, milliseconds} ms"
  },
  "core/audits/server-response-time.js | failureTitle": {
    "message": "Lyhennä palvelimen vasteaikaa alussa"
  },
  "core/audits/server-response-time.js | title": {
    "message": "Palvelimen vasteaika alussa oli lyhyt"
  },
  "core/audits/third-party-cookies.js | description": {
    "message": "Kolmannen osapuolen evästeet saatetaan estää joissakin yhteyksissä. [Lue lisää kolmannen osapuolen evästeiden rajoituksiin valmistautumisesta](https://privacysandbox.google.com/cookies/prepare/overview)."
  },
  "core/audits/third-party-cookies.js | displayValue": {
    "message": "{itemCount,plural, =1{1 eväste löytyi}other{# evästettä löytyi}}"
  },
  "core/audits/third-party-cookies.js | failureTitle": {
    "message": "Käyttää kolmannen osapuolen evästeitä"
  },
  "core/audits/third-party-cookies.js | title": {
    "message": "Välttää kolmannen osapuolen evästeitä"
  },
  "core/audits/trusted-types-xss.js | columnSeverity": {
    "message": "Vakavuus"
  },
  "core/audits/trusted-types-xss.js | description": {
    "message": "`Content-Security-Policy` (CSP) ‑otsikon `require-trusted-types-for`-sääntö kehottaa käyttäjäagentteja hallitsemaan DOM XSS ‑nielufunktioille välitettyä dataa. [Lue lisää DOM-pohjaisen XSS:n estämisestä luotettavilla tyypeillä](https://developer.chrome.com/docs/lighthouse/best-practices/trusted-types-xss)."
  },
  "core/audits/trusted-types-xss.js | noTrustedTypesToMitigateXss": {
    "message": "Luotetut tyypit ‑säännön `Content-Security-Policy`-otsikkoa ei löytynyt"
  },
  "core/audits/trusted-types-xss.js | title": {
    "message": "DOM-pohjaisen XSS:n lieventäminen Trusted Types ‑ominaisuudella"
  },
  "core/audits/unsized-images.js | description": {
    "message": "Lisää kuvaelementeille kiinteä leveys ja pituus, jotta asettelu muuttuu vähemmän ja CLS paranee. [Katso, miten voit valita kuvan mitat](https://web.dev/articles/optimize-cls#images_without_dimensions)."
  },
  "core/audits/unsized-images.js | failureTitle": {
    "message": "Kuvaelementeiltä puuttuu kiinteä `width` ja `height`"
  },
  "core/audits/unsized-images.js | title": {
    "message": "Kuvaelementeillä on kiinteä `width` ja `height`"
  },
  "core/audits/user-timings.js | columnType": {
    "message": "Tyyppi"
  },
  "core/audits/user-timings.js | description": {
    "message": "Suosittelemme käyttämään sovelluksen kehittämisessä User Timing APIa mittaamaan todellista toimivuutta tärkeiden käyttökokemusten aikana. [Lue lisää User Timing ‑merkeistä](https://developer.chrome.com/docs/lighthouse/performance/user-timings/)."
  },
  "core/audits/user-timings.js | displayValue": {
    "message": "{itemCount,plural, =1{1 käyttäjän ajankäyttömerkintä}other{# käyttäjän ajankäyttömerkintää}}"
  },
  "core/audits/user-timings.js | title": {
    "message": "User Timing ‑merkinnät ja ‑mitat"
  },
  "core/audits/valid-source-maps.js | columnMapURL": {
    "message": "Kartan URL"
  },
  "core/audits/valid-source-maps.js | description": {
    "message": "Lähdekartat muuntavat pienennetyn koodin alkuperäiseksi lähdekoodiksi. Tämä auttaa kehittäjiä jäljittämään ja korjaamaan virheet tuotantovaiheessa. Lisätietoja saa myös Lighthousesta. Sinun kannattaa ehkä ottaa lähdekartat käyttöön, jotta voit hyödyntää näitä mahdollisuuksia. [Lue lisää lähdekartoista](https://developer.chrome.com/docs/devtools/javascript/source-maps/)."
  },
  "core/audits/valid-source-maps.js | failureTitle": {
    "message": "Suuresta ensimmäisen osapuolen JavaScript-kirjastosta puuttuu lähdekarttoja"
  },
  "core/audits/valid-source-maps.js | missingSourceMapErrorMessage": {
    "message": "Suuresta JavaScript-tiedostosta puuttuu lähdekartta"
  },
  "core/audits/valid-source-maps.js | missingSourceMapItemsWarningMesssage": {
    "message": "{missingItems,plural, =1{Varoitus: 1 puuttuva kohde (`.sourcesContent`)}other{Varoitus: # puuttuvaa kohdetta (`.sourcesContent`)}}"
  },
  "core/audits/valid-source-maps.js | title": {
    "message": "Sivulla on kelvollisia lähdekarttoja"
  },
  "core/config/default-config.js | a11yAriaGroupDescription": {
    "message": "Näillä voit parantaa ARIA:n käyttöä sovelluksessasi, mikä voi tehdä avustusteknologiaa (kuten näytönlukuohjelmaa) käyttävien kokemuksesta paremman."
  },
  "core/config/default-config.js | a11yAriaGroupTitle": {
    "message": "ARIA"
  },
  "core/config/default-config.js | a11yAudioVideoGroupDescription": {
    "message": "Näillä voit antaa vaihtoehtoista sisältöä äänelle ja videolle. Tämä voi parantaa kuulo- tai näkörajoitteisten käyttäjien kokemusta."
  },
  "core/config/default-config.js | a11yAudioVideoGroupTitle": {
    "message": "Ääni ja video"
  },
  "core/config/default-config.js | a11yBestPracticesGroupDescription": {
    "message": "Näissä kohdissa kerrotaan yleisistä esteettömyyden parhaista käytännöistä."
  },
  "core/config/default-config.js | a11yBestPracticesGroupTitle": {
    "message": "Parhaat käytännöt"
  },
  "core/config/default-config.js | a11yCategoryDescription": {
    "message": "Nämä tarkistukset tuovat esiin kohtia, joissa voit [parantaa verkkosovelluksen saavutettavuutta](https://developer.chrome.com/docs/lighthouse/accessibility/). Automaattinen tunnistus voi havaita vain osan ongelmista, eikä se takaa verkkosovelluksen saavutettavuutta, joten suosittelemme myös [manuaalista testausta](https://web.dev/articles/how-to-review)."
  },
  "core/config/default-config.js | a11yCategoryManualDescription": {
    "message": "Nämä kohteet koskevat alueita, joita automaattinen testaustyökalu ei voi testata. Lue lisää [saavutettavuustarkistuksen tekemisen](https://web.dev/articles/how-to-review) oppaastamme."
  },
  "core/config/default-config.js | a11yCategoryTitle": {
    "message": "Esteettömyys"
  },
  "core/config/default-config.js | a11yColorContrastGroupDescription": {
    "message": "Näillä voit parantaa sisältösi luettavuutta."
  },
  "core/config/default-config.js | a11yColorContrastGroupTitle": {
    "message": "Kontrasti"
  },
  "core/config/default-config.js | a11yLanguageGroupDescription": {
    "message": "Näillä voit parantaa tulkintoja, joita eri alueiden käyttäjät tekevät sisällöstäsi."
  },
  "core/config/default-config.js | a11yLanguageGroupTitle": {
    "message": "Kansainvälistyminen ja lokalisointi"
  },
  "core/config/default-config.js | a11yNamesLabelsGroupDescription": {
    "message": "Näillä voit parantaa sovelluksen ohjainten semantiikkaa. Tämä voi parantaa avustusteknologiaa (kuten näytönlukuohjelmaa) käyttävien kokemusta."
  },
  "core/config/default-config.js | a11yNamesLabelsGroupTitle": {
    "message": "Nimet ja tunnisteet"
  },
  "core/config/default-config.js | a11yNavigationGroupDescription": {
    "message": "Nämä ovat tilaisuuksia parantaa näppäimistöllä siirtymistä sovelluksessasi."
  },
  "core/config/default-config.js | a11yNavigationGroupTitle": {
    "message": "Siirtyminen"
  },
  "core/config/default-config.js | a11yTablesListsVideoGroupDescription": {
    "message": "Näillä voit parantaa taulukko- tai listadatan lukukokemusta avustusteknologian (esim. näytönlukuohjelman) kanssa."
  },
  "core/config/default-config.js | a11yTablesListsVideoGroupTitle": {
    "message": "Taulukot ja luettelot"
  },
  "core/config/default-config.js | bestPracticesBrowserCompatGroupTitle": {
    "message": "Selainten yhteensopivuus"
  },
  "core/config/default-config.js | bestPracticesCategoryTitle": {
    "message": "Parhaat käytännöt"
  },
  "core/config/default-config.js | bestPracticesGeneralGroupTitle": {
    "message": "Yleiset"
  },
  "core/config/default-config.js | bestPracticesTrustSafetyGroupTitle": {
    "message": "Luottamus ja turvallisuus"
  },
  "core/config/default-config.js | bestPracticesUXGroupTitle": {
    "message": "Käyttökokemus"
  },
  "core/config/default-config.js | diagnosticsGroupDescription": {
    "message": "Lisätietoja sovelluksen toiminnasta. Luvut eivät [suoraan vaikuta](https://developer.chrome.com/docs/lighthouse/performance/performance-scoring/) tehokkuusprosenttiin."
  },
  "core/config/default-config.js | diagnosticsGroupTitle": {
    "message": "Diagnostiikka"
  },
  "core/config/default-config.js | firstPaintImprovementsGroupDescription": {
    "message": "Tehokkuuden tärkein osa-alue on se, kuinka nopeasti pikselit renderöidään näytölle. Tärkeimmät mittarit ovat ensimmäinen sisällön renderöinti ja ensimmäinen merkityksellinen renderöinti."
  },
  "core/config/default-config.js | firstPaintImprovementsGroupTitle": {
    "message": "Ensimmäistä renderöintiä koskevat parannusehdotukset"
  },
  "core/config/default-config.js | insightsGroupDescription": {
    "message": "Nämä vinkit ovat saatavilla myös Chrome DevToolsin tulospaneelissa – [tallenna jälki](https://developer.chrome.com/docs/devtools/performance/reference), niin näet tarkempia tietoja."
  },
  "core/config/default-config.js | insightsGroupTitle": {
    "message": "Tilastot"
  },
  "core/config/default-config.js | metricGroupTitle": {
    "message": "Tiedot"
  },
  "core/config/default-config.js | overallImprovementsGroupDescription": {
    "message": "Paranna latauskokemusta kokonaisuutena, jotta sivu on responsiivisempi ja käytettävissä mahdollisimman pian. Tärkeimmät mittarit ovat interaktiivisuutta edeltävä aika ja Speed Index."
  },
  "core/config/default-config.js | overallImprovementsGroupTitle": {
    "message": "Yleiset parannusehdotukset"
  },
  "core/config/default-config.js | performanceCategoryTitle": {
    "message": "Tehokkuus"
  },
  "core/config/default-config.js | seoCategoryDescription": {
    "message": "Näillä testeillä varmistetaan, että sivusi seuraa hakukoneoptimoinnin perusneuvoja. On myös monia muita tekijöitä, joita Lighthouse ei ota täällä huomioon mutta jotka voivat vaikuttaa hakusijoitukseesi, esim. [Sivuston suorituskyky](https://web.dev/explore/vitals) ‑tulokset. [Lue lisää Google Haun perusteista](https://support.google.com/webmasters/answer/35769)."
  },
  "core/config/default-config.js | seoCategoryManualDescription": {
    "message": "Käytä näitä lisätarkistustyökaluja sivustollasi tarkistaaksesi kaikki hakukoneoptimoinnin parhaat käytännöt."
  },
  "core/config/default-config.js | seoCategoryTitle": {
    "message": "Hakukoneoptimointi"
  },
  "core/config/default-config.js | seoContentGroupDescription": {
    "message": "Muotoile HTML niin, että indeksointirobottien on helpompi ymmärtää sovelluksen sisältöä."
  },
  "core/config/default-config.js | seoContentGroupTitle": {
    "message": "Parhaat sisältökäytännöt"
  },
  "core/config/default-config.js | seoCrawlingGroupDescription": {
    "message": "Indeksointiroboteilla on oltava pääsy sovellukseen, jotta se voi näkyä hakutuloksissa."
  },
  "core/config/default-config.js | seoCrawlingGroupTitle": {
    "message": "Indeksointi ja hakemistoon lisääminen"
  },
  "core/config/default-config.js | seoMobileGroupDescription": {
    "message": "Varmista, että sivut ovat mobiiliystävällisiä, jotta käyttäjien ei tarvitse nipistää tai lähentää sisältösivuja lukeakseen niitä. [Katso, miten voit tehdä sivuista mobiiliystävällisiä](https://developers.google.com/search/mobile-sites/)."
  },
  "core/config/default-config.js | seoMobileGroupTitle": {
    "message": "Mobiiliystävällinen"
  },
  "core/gather/driver/environment.js | warningSlowHostCpu": {
    "message": "Testatun laitteen CPU näyttää olevan hitaampi kuin Lighthouse olettaa. Tämä voi vaikuttaa tuloksiin negatiivisesti. Lue lisää [sopivan CPU-hidastuskertoimen kalibroinnista](https://github.com/GoogleChrome/lighthouse/blob/main/docs/throttling.md#cpu-throttling)."
  },
  "core/gather/driver/navigation.js | warningRedirected": {
    "message": "Sivun lataus ei ehkä onnistu odotetusti, koska testi-URL ({requested}) ohjattiin uudelleen osoitteeseen {final}. Kokeile suoraan toista URL-osoitetta."
  },
  "core/gather/driver/navigation.js | warningTimeout": {
    "message": "Sivu ei ehtinyt latautua loppuun aikarajan sisällä. Tuloksista voi puuttua osa."
  },
  "core/gather/driver/storage.js | warningCacheTimeout": {
    "message": "Selaimen välimuistin tyhjentäminen aikakatkaistiin. Tarkista sivu uudelleen ja ilmoita virheestä, jos ongelma jatkuu."
  },
  "core/gather/driver/storage.js | warningData": {
    "message": "{locationCount,plural, =1{Tänne on voitu tallentaa dataa, joka vaikuttaa lataukseen: {locations}. Tarkista sivu incognito-ikkunassa, jotta voit estää resurssien vaikutuksen tuloksiisi.}other{Tänne on voitu tallentaa dataa, joka vaikuttaa lataukseen: {locations}. Tarkista sivu incognito-ikkunassa, jotta voit estää resurssien vaikutuksen tuloksiisi.}}"
  },
  "core/gather/driver/storage.js | warningOriginDataTimeout": {
    "message": "Alkuperädatan tyhjentäminen aikakatkaistiin. Tarkista sivu uudelleen ja ilmoita virheestä, jos ongelma jatkuu."
  },
  "core/gather/gatherers/link-elements.js | headerParseWarning": {
    "message": "Virhe jäsennettäessä `link`-otsikkoa ({error}): `{header}`"
  },
  "core/gather/timespan-runner.js | warningNavigationDetected": {
    "message": "Suorituksen aikana havaittiin sivulla navigointi. Aikajanatilan käyttämistä sivulla siirtymisten valvonnassa ei suositella. Navigointitilan avulla voit valvoaa sivulla navigointia ja parantaa kolmannen osapuolen attribuutiota ja pääsäikeen tunnistusta."
  },
  "core/lib/csp-evaluator.js | allowlistFallback": {
    "message": "Harkitse https:- ja http:-URL-mallien (jotka `'strict-dynamic'`-sääntöä tukevat selaimet ohittavat) lisäämistä, niin voit saavuttaa taaksepäinyhteensopivuuden vanhempien selainten kanssa."
  },
  "core/lib/csp-evaluator.js | deprecatedDisownOpener": {
    "message": "`disown-opener` on poistettu käytöstä CSP3:sta lähtien. Käytä sen sijaan Cross-Origin-Opener-Policy-otsikkoa."
  },
  "core/lib/csp-evaluator.js | deprecatedReferrer": {
    "message": "`referrer` on poistettu käytöstä CSP2:sta lähtien. Käytä sen sijaan Referrer-Policy-otsikkoa."
  },
  "core/lib/csp-evaluator.js | deprecatedReflectedXSS": {
    "message": "`reflected-xss` on poistettu käytöstä CSP2:sta lähtien. Käytä sen sijaan X-XSS-Protection-otsikkoa."
  },
  "core/lib/csp-evaluator.js | missingBaseUri": {
    "message": "Puuttuva `base-uri` sallii injektoitujen `<base>`-tagien määrittää kaikkien suhteellisten URL-osoitteiden (esim. skriptien) perusosan hyökkääjän hallitsemaan verkkotunnukseen. `base-uri` kannattaa asettaa arvoon `'none'` tai `'self'`."
  },
  "core/lib/csp-evaluator.js | missingObjectSrc": {
    "message": "Puuttuva `object-src` sallii riskialttiita skriptejä suorittavien liitännäisten injektoinnin. `object-src` kannattaa asettaa arvoon `'none'`, jos mahdollista."
  },
  "core/lib/csp-evaluator.js | missingScriptSrc": {
    "message": "Sääntö (`script-src`) puuttuu. Tämä mahdollistaa vaarallisten skriptien suorittamisen."
  },
  "core/lib/csp-evaluator.js | missingSemicolon": {
    "message": "Unohditko puolipisteen? Näyttää siltä, että {keyword} on sääntö eikä avainsana."
  },
  "core/lib/csp-evaluator.js | nonceCharset": {
    "message": "Noncesien on käytettävä base64-merkistöä."
  },
  "core/lib/csp-evaluator.js | nonceLength": {
    "message": "Noncesien on oltava vähintään kahdeksan merkkiä."
  },
  "core/lib/csp-evaluator.js | plainUrlScheme": {
    "message": "Vältä tavallisten URL-mallien ({keyword}) käyttämistä tässä säännössä. Tavalliset URL-mallit sallivat skriptit, jotka ovat peräisin riskialttiista verkkotunnuksista."
  },
  "core/lib/csp-evaluator.js | plainWildcards": {
    "message": "Vältä tavallisten jokerimerkkien ({keyword}) käyttämistä tässä säännössä. Tavalliset jokerimerkit sallivat skriptit, jotka ovat peräisin riskialttiista verkkotunnuksista."
  },
  "core/lib/csp-evaluator.js | reportToOnly": {
    "message": "Raportointimääränpään voi määrittää vain report-to-säännön kautta. Vain Chromium-pohjaiset selaimet tukevat kyseistä sääntöä, joten on suositeltavaa käyttää myös `report-uri`-sääntöä."
  },
  "core/lib/csp-evaluator.js | reportingDestinationMissing": {
    "message": "Raportointimääränpäätä määrittävää CSP:tä ei ole. Tämän takia on hankala säilyttää CSP:tä ajan mittaa ja seurata vaurioita."
  },
  "core/lib/csp-evaluator.js | strictDynamic": {
    "message": "Isännän sallitut-listat ovat usein ohitettavissa. Jos tarpeen, harkitse sen sijaan kertakäyttöisten CSP-numeroiden tai -tiivisteiden käyttämistä ja lisää `'strict-dynamic'`."
  },
  "core/lib/csp-evaluator.js | unknownDirective": {
    "message": "Tuntematon CSP-sääntö."
  },
  "core/lib/csp-evaluator.js | unknownKeyword": {
    "message": "Näyttää siltä, että {keyword} on virheellinen avainsana."
  },
  "core/lib/csp-evaluator.js | unsafeInline": {
    "message": "`'unsafe-inline'` mahdollistaa vaarallisten sivun sisäisten skriptien ja tapahtumakäsittelijöiden suorittamisen. Harkitse skriptien sallimista yksitellen käyttämällä kertakäyttöisiä CSP-numeroita tai -tiivisteitä."
  },
  "core/lib/csp-evaluator.js | unsafeInlineFallback": {
    "message": "Jos `'unsafe-inline'` on lisätty (kertakäyttöisiä numeroita/tiivisteitä tukevat selaimet ohittavat sen), voit saavuttaa taaksepäinyhteensopivuuden vanhempien selainten kanssa."
  },
  "core/lib/deprecation-description.js | feature": {
    "message": "Lisätietoa löydät ominaisuuden tilasivulta."
  },
  "core/lib/deprecation-description.js | milestone": {
    "message": "Tämä muutos tulee voimaan, kun versionumero {milestone} saavutetaan."
  },
  "core/lib/deprecation-description.js | title": {
    "message": "Käytöstä poistettua ominaisuutta käytetty"
  },
  "core/lib/i18n/i18n.js | columnBlockingTime": {
    "message": "Pääsäikeen estoaika"
  },
  "core/lib/i18n/i18n.js | columnCacheTTL": {
    "message": "Välimuistin käyttöikä"
  },
  "core/lib/i18n/i18n.js | columnDescription": {
    "message": "Kuvaus"
  },
  "core/lib/i18n/i18n.js | columnDuration": {
    "message": "Kesto"
  },
  "core/lib/i18n/i18n.js | columnElement": {
    "message": "Elementti"
  },
  "core/lib/i18n/i18n.js | columnFailingElem": {
    "message": "Hylätyt elementit"
  },
  "core/lib/i18n/i18n.js | columnLocation": {
    "message": "Sijainti"
  },
  "core/lib/i18n/i18n.js | columnName": {
    "message": "Nimi"
  },
  "core/lib/i18n/i18n.js | columnRequests": {
    "message": "Pyynnöt"
  },
  "core/lib/i18n/i18n.js | columnResourceSize": {
    "message": "Resurssin koko"
  },
  "core/lib/i18n/i18n.js | columnResourceType": {
    "message": "Resurssin tyyppi"
  },
  "core/lib/i18n/i18n.js | columnSize": {
    "message": "Koko"
  },
  "core/lib/i18n/i18n.js | columnSource": {
    "message": "Lähde"
  },
  "core/lib/i18n/i18n.js | columnStartTime": {
    "message": "Aloitusaika"
  },
  "core/lib/i18n/i18n.js | columnTimeSpent": {
    "message": "Käytetty aika"
  },
  "core/lib/i18n/i18n.js | columnTransferSize": {
    "message": "Siirron koko"
  },
  "core/lib/i18n/i18n.js | columnURL": {
    "message": "URL-osoite"
  },
  "core/lib/i18n/i18n.js | columnWastedBytes": {
    "message": "Arvioitu säästö"
  },
  "core/lib/i18n/i18n.js | columnWastedMs": {
    "message": "Arvioitu säästö"
  },
  "core/lib/i18n/i18n.js | cumulativeLayoutShiftMetric": {
    "message": "Cumulative Layout Shift"
  },
  "core/lib/i18n/i18n.js | displayValueByteSavings": {
    "message": "Arvioitu säästö: {wastedBytes, number, bytes} KiB"
  },
  "core/lib/i18n/i18n.js | displayValueElementsFound": {
    "message": "{nodeCount,plural, =1{1 elementti löydetty}other{# elementtiä löydetty}}"
  },
  "core/lib/i18n/i18n.js | displayValueMsSavings": {
    "message": "Arvioitu säästö: {wastedMs, number, milliseconds} ms"
  },
  "core/lib/i18n/i18n.js | documentResourceType": {
    "message": "Dokumentti"
  },
  "core/lib/i18n/i18n.js | firstContentfulPaintMetric": {
    "message": "First Contentful Paint"
  },
  "core/lib/i18n/i18n.js | firstMeaningfulPaintMetric": {
    "message": "Ensimmäinen merkityksellinen renderöinti"
  },
  "core/lib/i18n/i18n.js | fontResourceType": {
    "message": "Fontti"
  },
  "core/lib/i18n/i18n.js | imageResourceType": {
    "message": "Kuva"
  },
  "core/lib/i18n/i18n.js | interactionToNextPaint": {
    "message": "Interaktiosta seuraavaan renderöintiin"
  },
  "core/lib/i18n/i18n.js | interactiveMetric": {
    "message": "Time to Interactive"
  },
  "core/lib/i18n/i18n.js | itemSeverityHigh": {
    "message": "Vakava"
  },
  "core/lib/i18n/i18n.js | itemSeverityLow": {
    "message": "Vähäinen"
  },
  "core/lib/i18n/i18n.js | itemSeverityMedium": {
    "message": "Kohtalainen"
  },
  "core/lib/i18n/i18n.js | largestContentfulPaintMetric": {
    "message": "Largest Contentful Paint"
  },
  "core/lib/i18n/i18n.js | maxPotentialFIDMetric": {
    "message": "Suurin mahdollinen ensimmäisen toiminnon viive"
  },
  "core/lib/i18n/i18n.js | mediaResourceType": {
    "message": "Media"
  },
  "core/lib/i18n/i18n.js | ms": {
    "message": "{timeInMs, number, milliseconds} ms"
  },
  "core/lib/i18n/i18n.js | otherResourceType": {
    "message": "Muu"
  },
  "core/lib/i18n/i18n.js | otherResourcesLabel": {
    "message": "Muut resurssit"
  },
  "core/lib/i18n/i18n.js | scriptResourceType": {
    "message": "Skripti"
  },
  "core/lib/i18n/i18n.js | seconds": {
    "message": "{timeInMs, number, seconds} s"
  },
  "core/lib/i18n/i18n.js | speedIndexMetric": {
    "message": "Speed Index"
  },
  "core/lib/i18n/i18n.js | stylesheetResourceType": {
    "message": "Tyylisivu"
  },
  "core/lib/i18n/i18n.js | thirdPartyResourceType": {
    "message": "Kolmas osapuoli"
  },
  "core/lib/i18n/i18n.js | total": {
    "message": "Yhteensä"
  },
  "core/lib/i18n/i18n.js | totalBlockingTimeMetric": {
    "message": "Total Blocking Time"
  },
  "core/lib/i18n/i18n.js | totalResourceType": {
    "message": "Yhteensä"
  },
  "core/lib/lh-error.js | badTraceRecording": {
    "message": "Sivun lataamisen jäljen tallennuksessa tapahtui virhe. Suorita Lighthouse uudelleen. ({errorCode})"
  },
  "core/lib/lh-error.js | criTimeout": {
    "message": "Aikakatkaisu: odotetaan yhteyttä virheenkorjausprotokollaan"
  },
  "core/lib/lh-error.js | didntCollectScreenshots": {
    "message": "Chrome ei kerännyt kuvakaappauksia sivun latautumisen aikana. Varmista, että sisältö näkyy sivulla, ja suorita sitten Lighthouse uudelleen. ({errorCode})"
  },
  "core/lib/lh-error.js | dnsFailure": {
    "message": "DNS-palvelimet eivät voineet ratkaista verkkotunnusta."
  },
  "core/lib/lh-error.js | erroredRequiredArtifact": {
    "message": "Vaadittu {artifactName}-keräystoiminto kohtasi virheen: {errorMessage}"
  },
  "core/lib/lh-error.js | internalChromeError": {
    "message": "Tapahtui sisäinen Chrome-virhe. Käynnistä Chrome uudelleen ja yritä suorittaa Lighthouse sen jälkeen."
  },
  "core/lib/lh-error.js | missingRequiredArtifact": {
    "message": "Vaadittua {artifactName}-keräystoimintoa ei suoritettu."
  },
  "core/lib/lh-error.js | noFcp": {
    "message": "Sivu ei renderöinyt mitään sisältöä. Pidä selainikkuna etualalla latauksen aikana ja yritä uudelleen. ({errorCode})"
  },
  "core/lib/lh-error.js | noLcp": {
    "message": "Sivulla ei näkynyt sisältöä, joka täyttää sivun latautumisajan (LCP) ehdot. Varmista, että sivulla on kelvollinen LCP-elementti, ja yritä sitten uudelleen. ({errorCode})"
  },
  "core/lib/lh-error.js | notHtml": {
    "message": "Sivu ei ole HTML-muodossa (MIME-tyyppi on {mimeType})."
  },
  "core/lib/lh-error.js | oldChromeDoesNotSupportFeature": {
    "message": "Tämä Chrome-versio ei tue ominaisuutta ({featureName}). Käytä uudempaa versiota, jotta näet tulokset kokonaisuudessaan."
  },
  "core/lib/lh-error.js | pageLoadFailed": {
    "message": "Lighthouse ei pystynyt lataamaan pyytämääsi sivua luotettavasti. Varmista, että testaat oikeaa URL-osoitetta ja että palvelin vastaa kunnolla kaikkiin pyyntöihin."
  },
  "core/lib/lh-error.js | pageLoadFailedHung": {
    "message": "Lighthouse ei pystynyt lataamaan pyytämääsi URL-osoitetta luotettavasti, koska sivu lakkasi vastaamasta."
  },
  "core/lib/lh-error.js | pageLoadFailedInsecure": {
    "message": "Ilmoittamasi URL-osoitteen suojausvarmenne ei ole kelvollinen. {securityMessages}"
  },
  "core/lib/lh-error.js | pageLoadFailedInterstitial": {
    "message": "Chrome esti sivun lataamisen välimainoksella. Varmista, että testaat oikeaa URL-osoitetta ja että palvelin vastaa kunnolla kaikkiin pyyntöihin."
  },
  "core/lib/lh-error.js | pageLoadFailedWithDetails": {
    "message": "Lighthouse ei pystynyt lataamaan pyytämääsi sivua luotettavasti. Varmista, että testaat oikeaa URL-osoitetta ja että palvelin vastaa kunnolla kaikkiin pyyntöihin. (Tiedot: {errorDetails})"
  },
  "core/lib/lh-error.js | pageLoadFailedWithStatusCode": {
    "message": "Lighthouse ei pystynyt lataamaan pyytämääsi sivua luotettavasti. Varmista, että testaat oikeaa URL-osoitetta ja että palvelin vastaa kunnolla kaikkiin pyyntöihin. (Tilakoodi: {statusCode})"
  },
  "core/lib/lh-error.js | pageLoadTookTooLong": {
    "message": "Sivun lataaminen kesti liian kauan. Lyhennä sivun latausaikaa raportin ehdotusten mukaisesti ja yritä suorittaa Lighthouse sen jälkeen. ({errorCode})"
  },
  "core/lib/lh-error.js | protocolTimeout": {
    "message": "DevTools-protokollan vastauksen odotus on ylittänyt sille lasketun ajan. (Tapa: {protocolMethod})"
  },
  "core/lib/lh-error.js | requestContentTimeout": {
    "message": "Resurssisisällön hakeminen on ylittänyt sille varatun ajan"
  },
  "core/lib/lh-error.js | targetCrashed": {
    "message": "Selaimen välilehti on kaatunut yllättäen."
  },
  "core/lib/lh-error.js | urlInvalid": {
    "message": "Kirjoittamasi URL-osoite näyttää olevan virheellinen."
  },
  "core/lib/navigation-error.js | warningStatusCode": {
    "message": "Lighthouse ei pystynyt lataamaan pyytämääsi sivua luotettavasti. Varmista, että testaat oikeaa URL-osoitetta ja että palvelin vastaa kunnolla kaikkiin pyyntöihin. (Tilakoodi: {errorCode})"
  },
  "core/lib/navigation-error.js | warningXhtml": {
    "message": "Sivun MIME-tyyppi on XHTML: Lighthouse ei erikseen tue tätä dokumenttityyppiä"
  },
  "core/user-flow.js | defaultFlowName": {
    "message": "Käyttökulku ({url})"
  },
  "core/user-flow.js | defaultNavigationName": {
    "message": "Navigointiraportti ({url})"
  },
  "core/user-flow.js | defaultSnapshotName": {
    "message": "Tilannekuvaraportti ({url})"
  },
  "core/user-flow.js | defaultTimespanName": {
    "message": "Aikajanaraportti ({url})"
  },
  "flow-report/src/i18n/ui-strings.js | allReports": {
    "message": "Kaikki raportit"
  },
  "flow-report/src/i18n/ui-strings.js | categories": {
    "message": "Kategoriat"
  },
  "flow-report/src/i18n/ui-strings.js | categoryAccessibility": {
    "message": "Esteettömyys"
  },
  "flow-report/src/i18n/ui-strings.js | categoryBestPractices": {
    "message": "Parhaat käytännöt"
  },
  "flow-report/src/i18n/ui-strings.js | categoryPerformance": {
    "message": "Tehokkuus"
  },
  "flow-report/src/i18n/ui-strings.js | categorySeo": {
    "message": "Hakukoneoptimointi"
  },
  "flow-report/src/i18n/ui-strings.js | desktop": {
    "message": "Tietokone"
  },
  "flow-report/src/i18n/ui-strings.js | helpDialogTitle": {
    "message": "Lighthousen käyttökulkuraportin tulkitseminen"
  },
  "flow-report/src/i18n/ui-strings.js | helpLabel": {
    "message": "Tietoja käyttökuluista"
  },
  "flow-report/src/i18n/ui-strings.js | helpUseCaseInstructionNavigation": {
    "message": "Käytä navigointiraportteja näihin tarkoituksiin:"
  },
  "flow-report/src/i18n/ui-strings.js | helpUseCaseInstructionSnapshot": {
    "message": "Käytä Snapshotia näihin tarkoituksiin:"
  },
  "flow-report/src/i18n/ui-strings.js | helpUseCaseInstructionTimespan": {
    "message": "Käytä aikajanaraportteja näihin tarkoituksiin:"
  },
  "flow-report/src/i18n/ui-strings.js | helpUseCaseNavigation1": {
    "message": "Nouda Lighthouse-suorituskykyprosentti."
  },
  "flow-report/src/i18n/ui-strings.js | helpUseCaseNavigation2": {
    "message": "Mittaa sivulatauksia sivun latautumisajan ja Speed Indexin kaltaisilla mittareilla."
  },
  "flow-report/src/i18n/ui-strings.js | helpUseCaseNavigation3": {
    "message": "Arvioi progressiivisten web-sovellusten ominaisuuksia."
  },
  "flow-report/src/i18n/ui-strings.js | helpUseCaseSnapshot1": {
    "message": "Löydä esteettömyysongelmia yhden sivun sovelluksista tai monimutkaisista muodoista."
  },
  "flow-report/src/i18n/ui-strings.js | helpUseCaseSnapshot2": {
    "message": "Arvioi toiminnan taakse piilotettujen valikoiden ja UI-elementtien parhaita käytäntöjä."
  },
  "flow-report/src/i18n/ui-strings.js | helpUseCaseTimespan1": {
    "message": "Mittaa asettelun muutoksia ja JavaScriptin suoritusaikoja toimintasarjoissa."
  },
  "flow-report/src/i18n/ui-strings.js | helpUseCaseTimespan2": {
    "message": "Tutustu tapoihin, joilla voit parantaa pitkäaikaisten sivujen ja yhden sivun sovellusten käyttökokemusta."
  },
  "flow-report/src/i18n/ui-strings.js | highestImpact": {
    "message": "Suurin vaikutus"
  },
  "flow-report/src/i18n/ui-strings.js | informativeAuditCount": {
    "message": "{numInformative,plural, =1{{numInformative} informatiivinen tarkastus}other{{numInformative} informatiivista tarkastusta}}"
  },
  "flow-report/src/i18n/ui-strings.js | mobile": {
    "message": "Mobiili"
  },
  "flow-report/src/i18n/ui-strings.js | navigationDescription": {
    "message": "Sivun lataaminen"
  },
  "flow-report/src/i18n/ui-strings.js | navigationLongDescription": {
    "message": "Navigointiraporteissa analysoidaan yksi sivun lataus, aivan kuten alkuperäisissä Lighthouse-raporteissa."
  },
  "flow-report/src/i18n/ui-strings.js | navigationReport": {
    "message": "Navigointiraportti"
  },
  "flow-report/src/i18n/ui-strings.js | navigationReportCount": {
    "message": "{numNavigation,plural, =1{{numNavigation} navigointiraportti}other{{numNavigation} navigointiraporttia}}"
  },
  "flow-report/src/i18n/ui-strings.js | passableAuditCount": {
    "message": "{numPassableAudits,plural, =1{{numPassableAudits} läpäistävissä oleva tarkastus}other{{numPassableAudits} läpäistävissä olevaa tarkastusta}}"
  },
  "flow-report/src/i18n/ui-strings.js | passedAuditCount": {
    "message": "{numPassed,plural, =1{{numPassed} tarkastus läpäisty}other{{numPassed} tarkastusta läpäisty}}"
  },
  "flow-report/src/i18n/ui-strings.js | ratingAverage": {
    "message": "Keskimääräinen"
  },
  "flow-report/src/i18n/ui-strings.js | ratingError": {
    "message": "Virhe"
  },
  "flow-report/src/i18n/ui-strings.js | ratingFail": {
    "message": "Huono"
  },
  "flow-report/src/i18n/ui-strings.js | ratingPass": {
    "message": "Hyvä"
  },
  "flow-report/src/i18n/ui-strings.js | save": {
    "message": "Tallenna"
  },
  "flow-report/src/i18n/ui-strings.js | snapshotDescription": {
    "message": "Sivun kuvakaappaustila"
  },
  "flow-report/src/i18n/ui-strings.js | snapshotLongDescription": {
    "message": "Snapshot-raporteissa analysoidaan sivua tietyssä tilassa, yleensä käyttäjien toiminnan jälkeen."
  },
  "flow-report/src/i18n/ui-strings.js | snapshotReport": {
    "message": "Tilannekuvaraportti"
  },
  "flow-report/src/i18n/ui-strings.js | snapshotReportCount": {
    "message": "{numSnapshot,plural, =1{{numSnapshot} tilannekuvaraportti}other{{numSnapshot} tilannekuvaraporttia}}"
  },
  "flow-report/src/i18n/ui-strings.js | summary": {
    "message": "Yhteenveto"
  },
  "flow-report/src/i18n/ui-strings.js | timespanDescription": {
    "message": "Käyttäjän toiminta"
  },
  "flow-report/src/i18n/ui-strings.js | timespanLongDescription": {
    "message": "Aikaväliraporteissa analysoidaan satunnainen ajanjakso, joka yleensä sisältää käyttäjien toimintaa."
  },
  "flow-report/src/i18n/ui-strings.js | timespanReport": {
    "message": "Aikaväliraportti"
  },
  "flow-report/src/i18n/ui-strings.js | timespanReportCount": {
    "message": "{numTimespan,plural, =1{{numTimespan} aikajanaraportti}other{{numTimespan} aikajanaraporttia}}"
  },
  "flow-report/src/i18n/ui-strings.js | title": {
    "message": "Lighthousen käyttökulkuraportti"
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | AuthorizationCoveredByWildcard": {
    "message": "Jokerimerkki (*) CORS Access-Control-Allow-Headers ‑käsittelyssä ei kata valtuutusta."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | CSSSelectorInternalMediaControlsOverlayCastButton": {
    "message": "disableRemotePlayback ‑attribuuttia pitäisi käyttää oletusarvoisen Cast-integraation käytöstä poistamiseen -internal-media-controls-overlay-cast-button ‑valitsimen sijaan."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | CSSValueAppearanceSliderVertical": {
    "message": "CSS-ulkoasun arvoa slider-vertical ei ole standardoitu, ja se poistetaan."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | CanRequestURLHTTPContainingNewline": {
    "message": "Resurssipyynnöt, joiden URL-osoitteet sisälsivät sekä poistettuja tyhjätilamerkkejä (\\(n|r|t)) että pienempi kuin ‑merkkejä (<) on estetty. Poista newline-koodit ja koodaa pienempi kuin ‑merkkejä esimerkiksi elementin attribuuttiarvoista, jos haluat ladata näitä resursseja."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | ChromeLoadTimesConnectionInfo": {
    "message": "chrome.loadTimes() on poistettu käytöstä, käytä sen sijaan standardoitua APIa: Navigation Timing 2."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | ChromeLoadTimesFirstPaintAfterLoadTime": {
    "message": "chrome.loadTimes() on poistettu käytöstä, käytä sen sijaan standardoitua APIa: Paint Timing."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | ChromeLoadTimesWasAlternateProtocolAvailable": {
    "message": "chrome.loadTimes() on poistettu käytöstä, käytä sen sijaan standardoitua APIa: nextHopProtocol Navigation Timing 2:ssa."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | CookieWithTruncatingChar": {
    "message": "\\(0|r|n) ‑merkin sisältävät evästeet hylätään lyhentämisen sijaan."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | CrossOriginAccessBasedOnDocumentDomain": {
    "message": "Saman alkuperän käytännön lieventäminen määrittämällä document.domain on poistettu käytöstä eikä näin ollen ole käytössä oletuksena. Tämä käytöstäpoistovaroitus koskee eri lähteistä peräisin olevaa pääsyoikeutta, joka on otettu käyttöön asetuksella document.domain."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | CrossOriginWindowAlert": {
    "message": "window.alertin käynnistäminen eri lähteistä peräisin olevista iframeista on poistettu käytöstä ja poistetaan kokonaan tulevaisuudessa."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | CrossOriginWindowConfirm": {
    "message": "window.confirmin käynnistäminen eri lähteistä peräisin olevista iframeista on poistettu käytöstä ja poistetaan kokonaan tulevaisuudessa."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | DataUrlInSvgUse": {
    "message": "Datatuki: URL-osoitteet SVGUseElement-elementissä on poistettu käytöstä, ja se poistetaan tulevaisuudessa."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | GeolocationInsecureOrigin": {
    "message": "getCurrentPosition() ja watchPosition() eivät enää toimi suojaamattomien alkuperien kohdalla. Jos haluat käyttää tätä ominaisuutta, suosittelemme vaihtamaan sovelluksen turvalliseen alkuperään, esim. HTTPS:ään. Lue lisää osoitteesta https://goo.gle/chrome-insecure-origins."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | GeolocationInsecureOriginDeprecatedNotRemoved": {
    "message": "getCurrentPosition() ja watchPosition() on poistettu käytöstä suojaamattomien alkuperien kohdalla. Jos haluat käyttää tätä ominaisuutta, suosittelemme vaihtamaan sovelluksen turvalliseen alkuperään, esim. HTTPS:ään. Lue lisää osoitteesta https://goo.gle/chrome-insecure-origins."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | GetUserMediaInsecureOrigin": {
    "message": "getUserMedia() ei enää toimi suojaamattomien alkuperien kohdalla. Jos haluat käyttää tätä ominaisuutta, suosittelemme vaihtamaan sovelluksen turvalliseen alkuperään, esim. HTTPS:ään. Lue lisää osoitteesta https://goo.gle/chrome-insecure-origins."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | HostCandidateAttributeGetter": {
    "message": "RTCPeerConnectionIceErrorEvent.hostCandidate on poistettu käytöstä. Valitse sen sijaan RTCPeerConnectionIceErrorEvent.address tai RTCPeerConnectionIceErrorEvent.port."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | IdentityInCanMakePaymentEvent": {
    "message": "Kauppiaan alkuperän ja satunnaisen datan määrä service worker ‑tapahtumasta (canmakepayment) on poistettu käytöstä, ja se poistetaan seuraavista: topOrigin, paymentRequestOrigin, methodData, modifiers."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | InsecurePrivateNetworkSubresourceRequest": {
    "message": "Verkkosivusto pyysi aliresurssia verkosta, johon sillä oli pääsy vain käyttäjiensä oikeutetun verkkoaseman vuoksi. Nämä pyynnöt altistavat ei-julkisia laitteita ja palvelimia näkyville internetiin, mikä lisää sivustojen välisten pyyntöjen väärennykseen (CSRF) liittyvän hyökkäyksen ja/tai tietovuodon riskiä. Pienentääkseen riskiä Chrome poistaa käytöstä ei-julkisille aliresursseille osoitetut pyynnöt, jos ne ovat peräisin suojaamattomista konteksteista, ja alkaa estää niitä."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | InterestGroupDailyUpdateUrl": {
    "message": "Rakenteen InterestGroups kenttä dailyUpdateUrl on siirretty kenttään joinAdInterestGroup(), jonka uusi nimi on updateUrl, jotta se vastaa paremmin sen toimintaa."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | IntlV8BreakIterator": {
    "message": "Intl.v8BreakIterator on poistettu käytöstä. Käytä sen sijaan tätä: Intl.Segmenter."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | LocalCSSFileExtensionRejected": {
    "message": "CSS:ää ei voi ladata file: ‑URL-osoitteista, elleivät ne pääty .css ‑tiedostotunnisteeseen."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | MediaSourceAbortRemove": {
    "message": "Kohteen SourceBuffer.abort() käyttö kohteen remove() asynkronisen välin poistamiseen on poistettu käytöstä määritysmuutoksen vuoksi. Tuki poistetaan tulevaisuudessa. Kuuntele sen sijaan tapahtuma updateend. abort() on tarkoitettu ainoastaan asynkronisen medialiitteen tai nollausjäsentäjän tilan keskeytykseen."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | MediaSourceDurationTruncatingBuffered": {
    "message": "Kohteen MediaSource.duration asettaminen puskuroidun koodatun kehyksen korkeinta esitysaikaleimaa alemmas on poistettu käytöstä määritysmuutoksen vuoksi. Lyhennetyn puskuroidun median implisiittisen poiston tuki poistetaan tulevaisuudessa. Tee sen sijaan eksplisiittinen remove(newDuration, oldDuration) kaikkien sourceBuffers ‑kohteiden kohdalla, joissa newDuration < oldDuration."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | NoSysexWebMIDIWithoutPermission": {
    "message": "Web MIDI pyytää käyttölupaa, vaikka MIDIOptions ei ole määrittänyt sysexiä."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | NotificationInsecureOrigin": {
    "message": "Notification APIa ei saa enää käyttää suojaamattomista alkuperistä. Suosittelemme vaihtamaan sovelluksen turvalliseen alkuperään, esim. HTTPS:ään. Lue lisää osoitteesta https://goo.gle/chrome-insecure-origins."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | NotificationPermissionRequestedIframe": {
    "message": "Notification APIn lupaa ei välttämättä enää pyydetä eri lähteistä peräisin olevalta iframelta. Suosittelemme sen sijaan pyytämään lupaa ylätason kehykseltä tai avaamaan uuden ikkunan."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | ObsoleteCreateImageBitmapImageOrientationNone": {
    "message": "Vaihtoehto imageOrientation: 'none' on poistettu käytöstä createImageBitmapissa. Käytä sen sijaan createImageBitmapia, jossa on vaihtoehto \"\\\\{imageOrientation: 'from-image'\\\\}\"."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | ObsoleteWebRtcCipherSuite": {
    "message": "Yhteistyökumppanisi neuvottelee vanhentuneesta (D)TLS-versiosta. Pyydä yhteistyökumppaniasi korjaamaan tämä."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | OverflowVisibleOnReplacedElement": {
    "message": "Jos overflow: visible määritetään img-, video- ja canvas-tageissa, ne voivat tuottaa visuaalista sisältöä elementtirajojen ulkopuolella. Lue lisää osoitteesta https://github.com/WICG/shared-element-transitions/blob/main/debugging_overflow_on_images.md."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | OverrideFlashEmbedwithHTML": {
    "message": "Vanha Flash-videon upotus on kirjoitettu uudelleen HTML-iframeksi. Flash on poistunut jo kauan sitten, ja tämä uudelleenkirjoitushakkerointi on poistettu käytöstä ja saatetaan poistaa kokonaan tulevaisuudessa."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | PaymentInstruments": {
    "message": "paymentManager.instruments on poistettu käytöstä. Käytä maksujen käsittelijöille sen sijaan heti asennettavaa (JIT) APIa."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | PaymentRequestCSPViolation": {
    "message": "PaymentRequest-kutsu ohitti Content-Security-Policy (CSP) ‑käytännön connect-src-säännön. Tämä ohitus on poistettu käytöstä. Lisää maksutavan tunniste PaymentRequest APIsta (supportedMethods-kentässä) CSP-käytännön connect-src-sääntöön."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | PersistentQuotaType": {
    "message": "StorageType.persistent on poistettu käytöstä. Valitse sen sijaan standardoitu navigator.storage."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | PictureSourceSrc": {
    "message": "<source src>, jolla on <picture>-ylätaso, on virheellinen ja jätetään näin ollen huomiotta. Käytä sen sijaan tätä: <source srcset>."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | PrefixedCancelAnimationFrame": {
    "message": "webkitCancelAnimationFrame on myyjäkohtainen. Käytä sen sijaan normaalia cancelAnimationFrame-menetelmää."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | PrefixedRequestAnimationFrame": {
    "message": "webkitRequestAnimationFrame on myyjäkohtainen. Käytä sen sijaan normaalia requestAnimationFrame-menetelmää."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | PrefixedVideoDisplayingFullscreen": {
    "message": "HTMLVideoElement.webkitDisplayingFullscreen on poistettu käytöstä. Käytä sen sijaan Document.fullscreenElement-APIa."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | PrefixedVideoEnterFullScreen": {
    "message": "HTMLVideoElement.webkitEnterFullScreen() on poistettu käytöstä. Käytä sen sijaan Element.requestFullscreen()-APIa."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | PrefixedVideoEnterFullscreen": {
    "message": "HTMLVideoElement.webkitEnterFullscreen() on poistettu käytöstä. Käytä sen sijaan Element.requestFullscreen()-APIa."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | PrefixedVideoExitFullScreen": {
    "message": "HTMLVideoElement.webkitExitFullScreen() on poistettu käytöstä. Käytä sen sijaan Document.exitFullscreen()-APIa."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | PrefixedVideoExitFullscreen": {
    "message": "HTMLVideoElement.webkitExitFullscreen() on poistettu käytöstä. Käytä sen sijaan Document.exitFullscreen()-APIa."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | PrefixedVideoSupportsFullscreen": {
    "message": "HTMLVideoElement.webkitSupportsFullscreen on poistettu käytöstä. Käytä sen sijaan Document.fullscreenEnabled-APIa."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | PrivacySandboxExtensionsAPI": {
    "message": "Poistamme APIn chrome.privacy.websites.privacySandboxEnabled käytöstä, mutta se pysyy taaksepäinyhteensopivana M113-versioon asti. Ota sen sijaan käyttöön chrome.privacy.websites.topicsEnabled, chrome.privacy.websites.fledgeEnabled ja chrome.privacy.websites.adMeasurementEnabled. Lue lisää osoitteesta https://developer.chrome.com/docs/extensions/reference/privacy/#property-websites-privacySandboxEnabled."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | RTCConstraintEnableDtlsSrtpFalse": {
    "message": "Rajoitus DtlsSrtpKeyAgreement on poistettu. Olet määrittänyt false ‑arvon tälle rajoitukselle, mikä tulkitaan yrityksenä käyttää poistettua SDES key negotiation ‑metodia. Tämä toiminto on poistettu. Käytä sen sijaan palvelua, joka tukee tätä: DTLS key negotiation."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | RTCConstraintEnableDtlsSrtpTrue": {
    "message": "Rajoitus DtlsSrtpKeyAgreement on poistettu. Olet määrittänyt true ‑arvon tälle rajoitukselle, jolla ei ollut mitään vaikutusta, mutta voit poistaa rajoituksen siisteyden vuoksi."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | RTCPeerConnectionGetStatsLegacyNonCompliant": {
    "message": "Takaisinsoittopohjainen getStats() on poistettu käytöstä ja poistetaan kokonaan. Käytä sen sijaan vaatimusten mukaisia getStats()-sääntöjä."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | RangeExpand": {
    "message": "Range.expand() on poistettu käytöstä. Käytä sen sijaan Selection.modify()-APIa."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | RequestedSubresourceWithEmbeddedCredentials": {
    "message": "Aliresurssipyynnöt, joiden URL-osoitteet sisältävät upotettuja kirjautumistietoja (esim. https://user:pass@host/), on estetty."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | RtcpMuxPolicyNegotiate": {
    "message": "rtcpMuxPolicy ‑vaihtoehto on poistettu käytöstä ja poistetaan kokonaan."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | SharedArrayBufferConstructedWithoutIsolation": {
    "message": "SharedArrayBuffer edellyttää muista lähteistä eristämistä. Lue lisää osoitteesta https://developer.chrome.com/blog/enabling-shared-array-buffer/."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | TextToSpeech_DisallowedByAutoplay": {
    "message": "speechSynthesis.speak() ilman käyttäjän aktivointia on poistettu käytöstä ja poistetaan kokonaan."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | UnloadHandler": {
    "message": "Unload-tapahtumaseuraimet on poistettu käytöstä ja ne poistetaan selaimesta"
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | V8SharedArrayBufferConstructedInExtensionWithoutIsolation": {
    "message": "Laajennusten pitäisi ottaa muista lähteistä eristäminen käyttöön, jotta ne voivat jatkaa tämän käyttöä: SharedArrayBuffer. Lue lisää osoitteesta https://developer.chrome.com/docs/extensions/mv3/cross-origin-isolation/."
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | XHRJSONEncodingDetection": {
    "message": "Vastaus-JSON ei tue UTF-16:ta kohteessa XMLHttpRequest"
  },
  "node_modules/@paulirish/trace_engine/generated/Deprecation.js | XMLHttpRequestSynchronousInNonWorkerOutsideBeforeUnload": {
    "message": "Pääsäikeen samanaikainen XMLHttpRequest on poistettu käytöstä, koska sillä oli haitallisia vaikutuksia loppukäyttäjän kokemukseen. Lue lisäohjeita osoitteesta https://xhr.spec.whatwg.org/."
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | animation": {
    "message": "Animaatio"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | description": {
    "message": "Asettelun muutoksia tapahtuu, kun elementit liikkuvat ilman käyttäjän interaktioita. [Tutki asettelun muutosten syitä](https://web.dev/articles/optimize-cls), kuten elementtien lisäämistä, poistamista tai fonttien vaihtumista sivun latauksen aikana."
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | injectedIframe": {
    "message": "Lisätty iframe"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | layoutShiftCluster": {
    "message": "Asettelun muutosklusteri: {PH1}"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | noCulprits": {
    "message": "Asettelun muutoksen aiheuttajia ei havaittu"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | noLayoutShifts": {
    "message": "Ei asettelun muutoksia"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | title": {
    "message": "Asettelun muutoksen aiheuttajat"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | topCulprits": {
    "message": "Asettelun muutoksen yleisimmät aiheuttajat"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | unsizedImage": {
    "message": "Kuvaelementti, jonka kokoa ei ole asetettu"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | webFont": {
    "message": "Verkkofontti"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | worstCluster": {
    "message": "Huonoin klusteri"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/CLSCulprits.js | worstLayoutShiftCluster": {
    "message": "Huonoin asettelun muutosklusteri"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/Cache.js | cacheTTL": {
    "message": "Välimuistin käyttöikä"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/Cache.js | description": {
    "message": "Pitkä välimuistin käyttöikä voi nopeuttaa sivun lataamista, kun käyttäjä avaa sen uudelleen. [Lue lisää](https://web.dev/uses-long-cache-ttl/)."
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/Cache.js | noRequestsToCache": {
    "message": "Ei pyyntöjä, joissa on tehottomat välimuistikäytännöt"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/Cache.js | others": {
    "message": "{PH1} muuta"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/Cache.js | requestColumn": {
    "message": "Pyyntö"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/Cache.js | title": {
    "message": "Käytä tehokasta välimuistin käyttöikää"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | description": {
    "message": "Suuri DOM voi pidentää tyylilaskelmien ja asettelun uudelleenjuoksutusten kestoa, mikä vaikuttaa sivun responsiivisuuteen. Suuri DOM lisää myös muistin käyttöä. [Katso, miten voit välttää liian suuren DOM:n](https://developer.chrome.com/docs/lighthouse/performance/dom-size/)."
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | duration": {
    "message": "Kesto"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | element": {
    "message": "Elementti"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | largeLayout": {
    "message": "Asettelu ({PH1} kohdetta)"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | largeStyleRecalc": {
    "message": "Tyylin uudelleenlaskenta ({PH1} elementtiä)"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | maxChildren": {
    "message": "Useimmat alatasot"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | maxDOMDepth": {
    "message": "DOM-syvyys"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | statistic": {
    "message": "Tilastotieto"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | title": {
    "message": "Optimoi DOM-koko"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | topUpdatesDescription": {
    "message": "Nämä ovat suurimmat asettelun ja tyylin uudelleenlaskentatapahtumat. DOM:n yksinkertaistaminen voi vähentää niiden vaikutusta suorituskykyyn."
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | totalElements": {
    "message": "Elementit yhteensä"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/DOMSize.js | value": {
    "message": "Arvo"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | description": {
    "message": "Ensimmäinen verkkopyyntö on tärkein.  Vähennä viivettä välttämällä uudelleenohjauksia, varmistamalla nopea palvelimen vaste ja ottamalla tekstin pakkaus käyttöön."
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedRedirects": {
    "message": "Uudelleenohjauksia ({PH1} uudelleenohjausta, +{PH2})"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedServerResponseTime": {
    "message": "Palvelin vastasi hitaasti (havaittu {PH1})"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | failedTextCompression": {
    "message": "Ei pakattu"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingRedirects": {
    "message": "Välttää uudelleenohjaukset"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingServerResponseTime": {
    "message": "Palvelin vastaa nopeasti (havaittu {PH1})"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | passingTextCompression": {
    "message": "Pakkaa tekstin"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | redirectsLabel": {
    "message": "Uudelleenohjaukset"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | serverResponseTimeLabel": {
    "message": "Palvelimen vastausaika"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | title": {
    "message": "Dokumentin pyynnön viive"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/DocumentLatency.js | uncompressedDownload": {
    "message": "Purkamaton lataus"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/DuplicatedJavaScript.js | columnDuplicatedBytes": {
    "message": "Päällekkäiset tavut"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/DuplicatedJavaScript.js | columnSource": {
    "message": "Lähde"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/DuplicatedJavaScript.js | description": {
    "message": "Poista suuret, kopioidut JavaScript-moduulit paketeista pienentääksesi verkkotoiminnan tarpeetonta tavunkulutusta."
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/DuplicatedJavaScript.js | title": {
    "message": "Päällekkäinen JavaScript"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | description": {
    "message": "Harkitse asettavasi [font-display](https://developer.chrome.com/blog/font-display) arvoon swap tai optional, niin varmistat, että teksti on aina näkyvissä. Optimointia (swap) voidaan lisätä, jotta asettelumuutoksia voidaan vähentää [fonttimittarin ohitusarvojen](https://developer.chrome.com/blog/font-fallbacks) avulla."
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | fontColumn": {
    "message": "Fontti"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | title": {
    "message": "Fontin näyttö"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/FontDisplay.js | wastedTimeColumn": {
    "message": "Hukattu aika"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/ForcedReflow.js | anonymous": {
    "message": "(nimettömät)"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/ForcedReflow.js | description": {
    "message": "Pakotettu uudelleenlaskenta tapahtuu, kun JavaScript kysyy geometrisiä ominaisuuksia (esim. offsetWidth) sen jälkeen, kun DOM-tilan muutos on mitätöinyt tyylit. Tämä voi johtaa huonoihin tuloksiin. Lue lisää [pakotetuista uudelleenlaskemisista](https://developers.google.com/web/fundamentals/performance/rendering/avoid-large-complex-layouts-and-layout-thrashing#avoid-forced-synchronous-layouts) ja mahdollisista torjuntakeinoista."
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/ForcedReflow.js | relatedStackTrace": {
    "message": "Jäljityslista"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/ForcedReflow.js | title": {
    "message": "Pakotettu uudelleenlaskeminen"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/ForcedReflow.js | topTimeConsumingFunctionCall": {
    "message": "Pisimpään kestävä toimintokutsu"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/ForcedReflow.js | totalReflowTime": {
    "message": "Uudelleenlaskemisaika yhteensä"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/ForcedReflow.js | unattributed": {
    "message": "[määrittämätön]"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/INPBreakdown.js | description": {
    "message": "Aloita tutkinta pisimmästä osasta. [Viiveet voidaan minimoida](https://web.dev/articles/optimize-inp#optimize_interactions). Voit lyhentää käsittelyaikaa [optimoimalla pääsäikeen kustannukset](https://web.dev/articles/optimize-long-tasks), usein JS:n."
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/INPBreakdown.js | duration": {
    "message": "Kesto"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/INPBreakdown.js | inputDelay": {
    "message": "Syötteen viive"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/INPBreakdown.js | noInteractions": {
    "message": "Interaktioita ei havaittu"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/INPBreakdown.js | presentationDelay": {
    "message": "Esityksen viive"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/INPBreakdown.js | processingDuration": {
    "message": "Käsittelyn kesto"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/INPBreakdown.js | subpart": {
    "message": "Alakohta"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/INPBreakdown.js | title": {
    "message": "INP-erittely"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | description": {
    "message": "Kuvien latausajan lyhentäminen voi parantaa sivun havaittua latausaikaa ja LCP:tä. [Lue lisää kuvakoon optimoinnista](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/)"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | estimatedSavings": {
    "message": "{PH1} (arvio: {PH2})"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | noOptimizableImages": {
    "message": "Ei optimoitavia kuvia"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | optimizeFile": {
    "message": "Optimoi tiedoston koko"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | others": {
    "message": "{PH1} muuta"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | title": {
    "message": "Paranna kuvien toimitusta"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useCompression": {
    "message": "Kuvan pakkauskertoimen lisääminen voi pienentää tämän kuvan latauskokoa."
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useModernFormat": {
    "message": "Modernin kuvamuodon (WebP, AVIF) käyttö tai kuvan pakkauksen lisääminen voi pienentää tämän kuvan latauskokoa."
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useResponsiveSize": {
    "message": "Tämä kuvatiedosto on suurempi kuin sen näytettävien mittojen ({PH2}) perusteella tarvittava koko ({PH1}). Pienennä kuvan latauskokoa käyttämällä responsiivisia kuvia."
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/ImageDelivery.js | useVideoFormat": {
    "message": "Videomuotojen käyttö GIF-tiedostojen sijaan voi parantaa animoidun sisällön latauskokoa."
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/LCPBreakdown.js | description": {
    "message": "Kullakin [osavaiheella on omat parantamisen strategiat](https://web.dev/articles/optimize-lcp#lcp-breakdown). Ihanteellisesti suurin osa LCP-ajasta pitäisi käyttää resurssien lataamiseen, ei viivästyksiin."
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/LCPBreakdown.js | duration": {
    "message": "Kesto"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/LCPBreakdown.js | elementRenderDelay": {
    "message": "Elementin renderöintiviive"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/LCPBreakdown.js | fieldDuration": {
    "message": "Kenttä p75"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/LCPBreakdown.js | noLcp": {
    "message": "LCP:tä ei havaittu"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/LCPBreakdown.js | resourceLoadDelay": {
    "message": "Resurssin latausviive"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/LCPBreakdown.js | resourceLoadDuration": {
    "message": "Resurssin latauksen kesto"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/LCPBreakdown.js | subpart": {
    "message": "Alakohta"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/LCPBreakdown.js | timeToFirstByte": {
    "message": "Ensimmäistä tavua edeltävä aika"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/LCPBreakdown.js | title": {
    "message": "LCP-erittely"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | description": {
    "message": "Optimoi LCP tekemällä LCP-kuvasta [löydettävä](https://web.dev/articles/optimize-lcp#1_eliminate_resource_load_delay) HTML:stä heti ja [välttämällä laiskaa latautumista](https://web.dev/articles/lcp-lazy-loading)"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | fetchPriorityApplied": {
    "message": "fetchpriority=high applied"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | fetchPriorityShouldBeApplied": {
    "message": "\"fetchpriority=high\" tulisi käyttää"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | lazyLoadNotApplied": {
    "message": "laiska latautuminen ei käytössä"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | lcpLoadDelay": {
    "message": "LCP-kuva ladattu ({PH1}) aikaisimman aloituspisteen jälkeen."
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | noLcp": {
    "message": "LCP:tä ei havaittu"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | noLcpResource": {
    "message": "LCP-resurssia ei havaittu, koska LCP ei ole kuva"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | requestDiscoverable": {
    "message": "Pyyntö on löydettävissä alkuperäisestä dokumentista"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/LCPDiscovery.js | title": {
    "message": "LCP-pyynnön löytäminen"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/LegacyJavaScript.js | columnScript": {
    "message": "Skripti"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/LegacyJavaScript.js | columnWastedBytes": {
    "message": "Hukatut tavut"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/LegacyJavaScript.js | description": {
    "message": "Polyfill- ja transform-merkintöjen avulla vanhemmat selaimet voivat käyttää uusia JavaScript-ominaisuuksia. Monia ei kuitenkaan tarvita nykyaikaisissa selaimissa. Harkitse JavaScript-käännösprosessin muuttamista niin, että [Baseline](https://web.dev/articles/baseline-and-polyfills)-ominaisuuksien ohjelmkointikoodin kieltä ei käännetä, ellet tiedä, että sinun on tuettava vanhempia selaimia. [Lue lisää siitä, miksi useimmat sivustot voivat ottaa käyttöön ES6+-koodin ilman ohjelmointikoodin kielen kääntämistä](https://philipwalton.com/articles/the-state-of-es5-on-the-web/)"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/LegacyJavaScript.js | title": {
    "message": "Vanha JavaScript"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/ModernHTTP.js | description": {
    "message": "HTTP/2 ja HTTP/3 tarjoavat monia etuja HTTP/1.1:een verrattuna, esimerkiksi kanavoinnin. [Lue lisää modernin HTTP:n käytöstä](https://developer.chrome.com/docs/lighthouse/best-practices/uses-http2/)."
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/ModernHTTP.js | noOldProtocolRequests": {
    "message": "HTTP/1.1 ei ollut käytössä millään pyynnöllä, tai sen nykyinen käyttö ei tarjoa merkittävää optimointimahdollisuutta. HTTP/1.1-pyynnöt merkitään vain, jos kuusi tai useampi staattinen elementti on peräisin samasta alkuperästä eikä niitä tarjota paikallisesta kehitysympäristöstä tai kolmannen osapuolen lähteestä."
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/ModernHTTP.js | protocol": {
    "message": "Protokolla"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/ModernHTTP.js | request": {
    "message": "Pyyntö"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/ModernHTTP.js | title": {
    "message": "Moderni HTTP"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | columnOrigin": {
    "message": "Alkuperä"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | columnRequest": {
    "message": "Pyyntö"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | columnSource": {
    "message": "Lähde"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | columnTime": {
    "message": "Aika"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | columnWastedMs": {
    "message": "Arvioidut LCP-säästöt"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | crossoriginWarning": {
    "message": "Käyttämätön ennakkoyhteys. Varmista, että crossorigin-määritettä käytetään oikein."
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | description": {
    "message": "[Vältä kriittisten pyyntöjen ketjuttamista](https://developer.chrome.com/docs/lighthouse/performance/critical-request-chains) lyhentämällä ketjuja, pienentämällä resurssien latauskokoa ja lykkäämällä tarpeettomien resurssien lataamista."
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | estSavingTableDescription": {
    "message": "Lisää [ennakkoyhdistämisen](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/) vihjeitä tärkeimpiin alkuperiin, mutta pyri käyttämään enintään neljää."
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | estSavingTableTitle": {
    "message": "Ennakkoyhteydet"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | maxCriticalPathLatency": {
    "message": "Kriittisen polun enimmäisviive:"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | noNetworkDependencyTree": {
    "message": "Verkko-ohjelmat eivät vaikuta mihinkään renderöintitehtävään"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | noPreconnectCandidates": {
    "message": "Yksikään muu alkuperä ei sovellu ennakkoyhteyden muodostamiseen"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | noPreconnectOrigins": {
    "message": "lähteitä ei yhdistetty ennakkoon"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | preconnectOriginsTableDescription": {
    "message": "[ennakkoyhdistämisen](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/) vihjeet auttavat selainta muodostamaan yhteyden aikaisemmin sivun latauksen aikana, jolloin kyseisen kohteen ensimmäinen pyyntö on nopeampi. Seuraavat ovat alkuperä, joihin sivu on muodostanut yhteyden etukäteen."
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | preconnectOriginsTableTitle": {
    "message": "Ennakkoon yhdistetyt alkuperät"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | title": {
    "message": "Verkon riippuvuuspuu"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | tooManyPreconnectLinksWarning": {
    "message": "preconnect-yhteyksiä löytyi enemmän kuin neljä. Niitä tulee käyttää säästeliäästi ja vain tärkeimpiin alkuperiin."
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | unusedWarning": {
    "message": "Käyttämätön ennakkoyhteys. Valitse preconnect vain alkuperille, joita sivu todennäköisesti pyytää."
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/NetworkDependencyTree.js | warningDescription": {
    "message": "Vältä kriittisten pyyntöjen ketjuttamista lyhentämällä ketjuja, pienentämällä resurssien latauskokoa ja lykkäämällä tarpeettomien resurssien lataamista sivun latausajan parantamiseksi."
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | description": {
    "message": "Pyynnöt estävät sivun ensimmäisen renderöinnin, joten LCP:ssä voi olla viiveitä. [Siirtäminen myöhemmäksi tai sisällyttäminen](https://web.dev/learn/performance/understanding-the-critical-path#render-blocking_resources) voi poistaa nämä verkkopyynnöt kriittiseltä polulta."
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | duration": {
    "message": "Kesto"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | noRenderBlocking": {
    "message": "Tälle navigoinnille ei ole renderöinnin estopyyntöjä"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | renderBlockingRequest": {
    "message": "Pyyntö"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/RenderBlocking.js | title": {
    "message": "Renderöinnin estopyyntö"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | description": {
    "message": "Jos \"Laske tyyli uudelleen\" ‑kustannukset ovat edelleen korkeita, valitsimen optimointi voi alentaa niitä. [Optimoi valitsimet](https://developer.chrome.com/docs/devtools/performance/selector-stats), kun sekä kulunut aika että hidas polku ovat korkeita. Yksinkertaiset valitsimet, vähemmän valitsimia, pienempi DOM ja matalampi DOM vähentävät vastaavuuskustannuksia."
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | elapsed": {
    "message": "Kulunut aika"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | enableSelectorData": {
    "message": "CSS-valitsindataa ei löytynyt. CSS-valitsimen tilastot on otettava käyttöön tulospaneelin asetuksista."
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | matchAttempts": {
    "message": "Vastaavuuksien hakuyritykset"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | matchCount": {
    "message": "Vastaavuuksien määrä"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | title": {
    "message": "CSS-valitsimen kustannukset"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | topSelectorElapsedTime": {
    "message": "Suosituimman valitsimen kulunut aika"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | topSelectorMatchAttempt": {
    "message": "Suosituimman valitsimen vastaavuusyritys"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | topSelectors": {
    "message": "Suosituimmat valitsimet"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/SlowCSSSelector.js | total": {
    "message": "Yhteensä"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | columnMainThreadTime": {
    "message": "Pääsäikeen aika"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | columnThirdParty": {
    "message": "Kolmas osapuoli"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | columnTransferSize": {
    "message": "Siirron koko"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | description": {
    "message": "Kolmannen osapuolen koodi voi vaikuttaa lataustehokkuuteen merkittävästi. [Vähennä ja lykkää kolmannen osapuolen koodin lataamista](https://web.dev/articles/optimizing-content-efficiency-loading-third-party-javascript/) sivun sisällön priorisoimiseksi."
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | noThirdParties": {
    "message": "Kolmansia osapuolia ei löytynyt"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/ThirdParties.js | title": {
    "message": "Kolmannet osapuolet"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | description": {
    "message": "Napautusinteraktiot voivat [viivästyä jopa 300 ms:lla](https://developer.chrome.com/blog/300ms-tap-delay-gone-away/), jos näkymää ei ole optimoitu mobiililaitteille."
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | mobileTapDelayLabel": {
    "message": "Mobiililaitteen napautuksen viive"
  },
  "node_modules/@paulirish/trace_engine/models/trace/insights/Viewport.js | title": {
    "message": "Optimoi näkymä mobiililaitteille"
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | HTTPMethodNotGET": {
    "message": "Vain GET-pyynnön kautta ladattavat sivut voivat käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | HTTPStatusNotOK": {
    "message": "Välimuistiin voi tallentaa vain sivuja, joilla on tilakoodi 2XX."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | JavaScriptExecution": {
    "message": "Chrome havaitsi välimuistissa yrityksen suorittaa JavaScript."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | appBanner": {
    "message": "AppBanneria pyytäneet sivut eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | backForwardCacheDisabled": {
    "message": "Merkinnät estävät siirtymisvälimuistin käytön. Ota se käyttöön paikallisesti tällä laitteella osoitteessa chrome://flags/#back-forward-cache."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | backForwardCacheDisabledByCommandLine": {
    "message": "Komentorivi estää siirtymisvälimuistin käytön."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | backForwardCacheDisabledByLowMemory": {
    "message": "Riittämätön muisti estää siirtymisvälimuistin käytön."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | backForwardCacheDisabledForDelegate": {
    "message": "Delegaatti ei tue siirtymisvälimuistia"
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | backForwardCacheDisabledForPrerender": {
    "message": "Esirenderöijä estää siirtymisvälimuistin käytön."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | broadcastChannel": {
    "message": "Sivua ei voi tallentaa välimuistiin, koska sillä on BroadcastChannel-esiintymä, jolla on rekisteröityjä kuuntelijoita."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | cacheControlNoStore": {
    "message": "Sivut, joilla on cache-control:no-store-otsikko, eivät voi käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | cacheFlushed": {
    "message": "Välimuisti tyhjennettiin tarkoituksella."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | cacheLimit": {
    "message": "Sivu poistettiin välimuistista, jotta toinen sivu voitiin tallentaa välimuistiin."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | containsPlugins": {
    "message": "Liitännäisiä sisältävät sivut eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | contentDiscarded": {
    "message": "Määrittelemätön"
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | contentFileChooser": {
    "message": "FileChooser APIa käyttävät sivut eivät voi käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | contentFileSystemAccess": {
    "message": "File System Access APIa käyttävät sivut eivät voi käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | contentMediaDevicesDispatcherHost": {
    "message": "Medialaitteen välittäjää käyttävät sivut eivät voi käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | contentMediaPlay": {
    "message": "Mediasoitin oli käynnissä siirryttäessä pois."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | contentMediaSession": {
    "message": "MediaSession APIa käyttävät ja toiston tilan asettavat sivut eivät voi käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | contentMediaSessionService": {
    "message": "MediaSession APIa käyttävät ja toimintokäsittelijöitä asettavat sivut eivät voi käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | contentScreenReader": {
    "message": "Näytönlukuohjelma estää siirtymisvälimuistin käytön."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | contentSecurityHandler": {
    "message": "SecurityHandleria käyttävät sivut eivät voi käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | contentSerial": {
    "message": "Serial APIa käyttävät sivut eivät voi käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | contentWebAuthenticationAPI": {
    "message": "WebAuthetication APIa käyttävät sivut eivät voi käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | contentWebBluetooth": {
    "message": "WebBluetooth APIa käyttävät sivut eivät voi käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | contentWebUSB": {
    "message": "WebUSB APIa käyttävät sivut eivät voi käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | cookieDisabled": {
    "message": "Siirtymisvälimuisti on poistettu käytöstä, koska evästeet on poistettu käytöstä sivulla, jolla on käytössä Cache-Control: no-store."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | dedicatedWorkerOrWorklet": {
    "message": "Dedicated workeria tai workletia käyttävät sivut eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | documentLoaded": {
    "message": "Dokumentti ei latautunut kokonaan ennen pois siirtymistä."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | embedderAppBannerManager": {
    "message": "Sovellusbanneri oli päällä pois siirryttäessä."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | embedderChromePasswordManagerClientBindCredentialManager": {
    "message": "Chromen Salasanojen ylläpito oli päällä pois siirryttäessä."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | embedderDomDistillerSelfDeletingRequestDelegate": {
    "message": "DOM-tislaus oli kesken pois siirryttäessä."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | embedderDomDistillerViewerSource": {
    "message": "DOM Distiller Viewer oli näkyvissä pois siirryttäessä."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | embedderExtensionMessaging": {
    "message": "Messaging APIa käyttävät laajennukset estävät siirtymisvälimuistin käytön."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | embedderExtensionMessagingForOpenPort": {
    "message": "Pitkään yhdistettyinä olleiden laajennusten pitäisi katkaista yhteys ennen siirtymisvälimuistiin siirtymistä."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | embedderExtensionSentMessageToCachedFrame": {
    "message": "Pitkään yhdistettynä ollut laajennus yritti lähettää viestejä siirtymisvälimuistissa oleville kehyksille."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | embedderExtensions": {
    "message": "Laajennukset estävät siirtymisvälimuistin käytön."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | embedderModalDialog": {
    "message": "Sivun modaalivalintaikkuna (esim. lomakkeen uudelleenlähetys tai http-salasanavalintaikkuna) oli näkyvissä pois siirryttäessä."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | embedderOfflinePage": {
    "message": "Offline-sivu oli näkyvissä pois siirryttäessä."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | embedderOomInterventionTabHelper": {
    "message": "Muistin loppumisen muistutuspalkki oli näkyvissä pois siirryttäessä."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | embedderPermissionRequestManager": {
    "message": "Lupapyyntöjä oli aktiivisena pois siirryttäessä."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | embedderPopupBlockerTabHelper": {
    "message": "Ponnahdusikkunoiden estotoiminto oli päällä pois siirryttäessä."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | embedderSafeBrowsingThreatDetails": {
    "message": "Selaussuojan tiedot olivat näkyvissä pois siirryttäessä."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | embedderSafeBrowsingTriggeredPopupBlocker": {
    "message": "Selaussuoja katsoi sivun haitalliseksi ja esti ponnahdusikkunan."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | enteredBackForwardCacheBeforeServiceWorkerHostAdded": {
    "message": "Service worker aktivoitiin, kun sivu oli siirtymisvälimuistissa."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | errorDocument": {
    "message": "Dokumenttivirhe estää siirtymisvälimuistin käytön."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | fencedFramesEmbedder": {
    "message": "bfcache ei voi tallentaa FencedFramesia käyttäviä sivuja."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | foregroundCacheLimit": {
    "message": "Sivu poistettiin välimuistista, jotta toinen sivu voitiin tallentaa välimuistiin."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | grantedMediaStreamAccess": {
    "message": "Sivut, joille on myönnetty pääsy median striimaukseen, eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | haveInnerContents": {
    "message": "Sivut, joilla on tietynlaista upotettua sisältöä (esim. PDF-tiedostoja), eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | idleManager": {
    "message": "IdleManageria käyttävät sivut eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | indexedDBConnection": {
    "message": "Sivut, joilla on avoin IndexedDB-yhteys, eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | indexedDBEvent": {
    "message": "Siirtymisvälimuisti on poistettu käytöstä IndexedDB-tapahtuman vuoksi."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | ineligibleAPI": {
    "message": "Käytetyt APIt eivät olleet soveltuvia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | injectedJavascript": {
    "message": "Sivut, joihin JavaScript lisätään laajennuksen avulla, eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | injectedStyleSheet": {
    "message": "Sivut, joihin StyleSheet lisätään laajennusten avulla, eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | internalError": {
    "message": "Sisäinen virhe."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | jsNetworkRequestReceivedCacheControlNoStoreResource": {
    "message": "Siirtymisvälimuisti on poistettu käytöstä, koska jokin JavaScript-verkkopyyntö vastaanotti resurssin, jonka otsikko on Cache-Control: no-store."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | keepaliveRequest": {
    "message": "Keepalive-pyyntö estää siirtymisvälimuistin käytön."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | keyboardLock": {
    "message": "Näppäimistön lukitusta käyttävät sivut eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | loading": {
    "message": "Sivu ei latautunut kokonaan ennen pois siirtymistä."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | mainResourceHasCacheControlNoCache": {
    "message": "Sivut, joiden pääresurssilla on cache-control:no-cache, eivät voi käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | mainResourceHasCacheControlNoStore": {
    "message": "Sivut, joiden pääresurssilla on cache-control:no-store, eivät voi käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | navigationCancelledWhileRestoring": {
    "message": "Siirtyminen peruttiin ennen kuin sivu voitiin palauttaa siirtymisvälimuistista."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | networkExceedsBufferLimit": {
    "message": "Sivu poistettiin välimuistista, koska aktiivinen verkkoyhteys vastaanotti liikaa dataa. Chrome rajoittaa välimuistissa olevien sivujen vastaanottaman datan määrää."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | networkRequestDatapipeDrainedAsBytesConsumer": {
    "message": "Sivut, joiden fetch()- tai XHR-pyyntö on kesken, eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | networkRequestRedirected": {
    "message": "Sivu poistettiin siirtymisvälimuistista, koska aktiiviseen verkkopyyntöön liittyi uudelleenohjaus."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | networkRequestTimeout": {
    "message": "Sivu poistettiin välimuistista, koska verkkoyhteys oli auki liian pitkään. Chrome rajoittaa aikaa, jonka välimuistissa oleva sivu voi vastaanottaa dataa."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | noResponseHead": {
    "message": "Sivut, joilla ei ole hyväksyttävää vastausotsikkoa, eivät voi käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | notMainFrame": {
    "message": "Siirtyminen tapahtui muussa kuin pääkehyksessä."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | outstandingIndexedDBTransaction": {
    "message": "Sivut, joilla on keskeneräisiä indeksoituja DB-tapahtumia, eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | outstandingNetworkRequestDirectSocket": {
    "message": "Sivut, joiden verkkopyyntö on kesken, eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | outstandingNetworkRequestFetch": {
    "message": "Sivut, joiden verkonhakupyyntö on kesken, eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | outstandingNetworkRequestOthers": {
    "message": "Sivut, joiden verkkopyyntö on kesken, eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | outstandingNetworkRequestXHR": {
    "message": "Sivut, joiden XHR-verkkopyyntö on kesken, eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | paymentManager": {
    "message": "PaymentManageria käyttävät sivut eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | pictureInPicture": {
    "message": "Pikkuruutua käyttävät sivut eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | printing": {
    "message": "Tulostus UI:n näyttävät sivut eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | relatedActiveContentsExist": {
    "message": "window.open() avasi sivun, ja toisella välilehdellä on viittaus siihen, tai sivu avasi ikkunan."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | rendererProcessCrashed": {
    "message": "Siirtymisvälimuistissa olevan sivun renderöintiprosessi kaatui."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | rendererProcessKilled": {
    "message": "Siirtymisvälimuistissa olevan sivun renderöintiprosessi lopetettiin."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | requestedAudioCapturePermission": {
    "message": "Äänentallennuslupia pyytäneet sivut eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | requestedBackForwardCacheBlockedSensors": {
    "message": "Anturilupia pyytäneet sivut eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | requestedBackgroundWorkPermission": {
    "message": "Taustasynkronointia tai hakulupia pyytäneet sivut eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | requestedMIDIPermission": {
    "message": "MIDI-lupia pyytäneet sivut eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | requestedNotificationsPermission": {
    "message": "Ilmoituslupia pyytäneet sivut eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | requestedStorageAccessGrant": {
    "message": "Sivut, jotka ovat pyytäneet pääsyä tallennustilaan, eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | requestedVideoCapturePermission": {
    "message": "Videontallennuslupia pyytäneet sivut eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | schemeNotHTTPOrHTTPS": {
    "message": "Välimuistiin voi tallentaa vain sivuja, joiden URL-malli on HTTP/HTTPS."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | serviceWorkerClaim": {
    "message": "Service worker pyysi sivun, kun se oli siirtymisvälimuistissa."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | serviceWorkerPostMessage": {
    "message": "Service worker yritti lähettää siirtymisvälimuistissa olevalle sivulle omaisuuden: MessageEvent."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | serviceWorkerUnregistration": {
    "message": "ServiceWorkerin rekisteröinti peruttiin, kun sivu oli siirtymisvälimuistissa."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | serviceWorkerVersionActivation": {
    "message": "Sivu poistettiin siirtymisvälimuistista service workerin aktivoitumisen takia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | sessionRestored": {
    "message": "Chrome käynnistyi uudelleen ja tyhjensi siirtymisvälimuistin."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | sharedWorker": {
    "message": "SharedWorkeria käyttävät sivut eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | sharedWorkerMessage": {
    "message": "Sivu poistettiin välimuistista, koska se sai viestin SharedWorkerilta"
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | speechRecognizer": {
    "message": "SpeechRecognizeria käyttävät sivut eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | speechSynthesis": {
    "message": "SpeechSynthesisia käyttävät sivut eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | subframeIsNavigating": {
    "message": "Sivulla oleva iframe aloitti siirtymisen, joka ei onnistunut."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | subresourceHasCacheControlNoCache": {
    "message": "Sivut, joiden alaresurssilla on cache-control:no-cache, eivät voi käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | subresourceHasCacheControlNoStore": {
    "message": "Sivut, joiden alaresurssilla on cache-control:no-store, eivät voi käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | timeout": {
    "message": "Sivu ylitti enimmäisajan siirtymisvälimuistissa ja vanheni."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | timeoutPuttingInCache": {
    "message": "Sivu aikakatkaistiin, kun se oli siirtymässä siirtymisvälimuistiin (tämä johtuu luultavasti pitkäkestoisista sivun piilotuksen käsittelijöistä)."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | unloadHandlerExistsInMainFrame": {
    "message": "Sivun pääkehyksessä on tyhjennyksen käsittelijä."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | unloadHandlerExistsInSubFrame": {
    "message": "Sivun alakehyksessä on tyhjennyksen käsittelijä."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | userAgentOverrideDiffers": {
    "message": "Selain on muuttanut käyttäjäagentin ohitusotsikkoa."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | wasGrantedMediaAccess": {
    "message": "Sivut, joille on annettu lupa tallentaa videota tai ääntä, eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | webDatabase": {
    "message": "WebDatabasea käyttävät sivut eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | webHID": {
    "message": "WebHID:iä käyttävät sivut eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | webLocks": {
    "message": "WebLocksia käyttävät sivut eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | webNfc": {
    "message": "WebNfc:tä käyttävät sivut eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | webOTPService": {
    "message": "WebOTPServiceä käyttävät sivut eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | webRTC": {
    "message": "WebRTC:tä käyttävät sivut eivät voi käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | webRTCUsedWithCCNS": {
    "message": "Siirtymisvälimuisti on poistettu käytöstä, koska WebRTC:tä on käytetty."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | webShare": {
    "message": "WebSharea käyttävät sivut eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | webSocket": {
    "message": "WebSocketia käyttävät sivut eivät voi käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | webSocketUsedWithCCNS": {
    "message": "Siirtymisvälimuisti on poistettu käytöstä, koska WebSocketia on käytetty."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | webTransport": {
    "message": "WebTransportia käyttävät sivut eivät voi käyttää siirtymisvälimuistia."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | webTransportUsedWithCCNS": {
    "message": "Siirtymisvälimuisti on poistettu käytöstä, koska WebTransportia on käytetty."
  },
  "node_modules/@paulirish/trace_engine/panels/application/components/BackForwardCacheStrings.js | webXR": {
    "message": "WebXR:ää käyttävät sivut eivät voi tällä hetkellä käyttää siirtymisvälimuistia."
  },
  "node_modules/lighthouse-stack-packs/packs/amp.js | efficient-animated-content": {
    "message": "Käytä animoidun sisällön kanssa [`amp-anim`](https://amp.dev/documentation/components/amp-anim/)-ominaisuutta, joka minimoi suoritinkäytön, kun sisältö ei ole näytöllä."
  },
  "node_modules/lighthouse-stack-packs/packs/amp.js | modern-image-formats": {
    "message": "Harkitse kaikkien [`amp-img`](https://amp.dev/documentation/components/amp-img/?format=websites)-komponenttien näyttämistä WebP-muodoissa ja lisää varavaihtoehto muita selaimia varten. [Lue lisää](https://amp.dev/documentation/components/amp-img/#example:-specifying-a-fallback-image)."
  },
  "node_modules/lighthouse-stack-packs/packs/amp.js | offscreen-images": {
    "message": "Varmista, että käytössä on [`amp-img`](https://amp.dev/documentation/components/amp-img/?format=websites), jotta kuvien lataamista lykätään automaattisesti. [Lue lisää](https://amp.dev/documentation/guides-and-tutorials/develop/media_iframes_3p/?format=websites#images)."
  },
  "node_modules/lighthouse-stack-packs/packs/amp.js | render-blocking-resources": {
    "message": "Käytä [AMP-optimoijaa](https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer) ja muita työkaluja [AMP-asettelujen palvelinpuolen renderöintiin](https://amp.dev/documentation/guides-and-tutorials/optimize-and-measure/server-side-rendering/)."
  },
  "node_modules/lighthouse-stack-packs/packs/amp.js | unminified-css": {
    "message": "Lue [AMP-dokumentaatio](https://amp.dev/documentation/guides-and-tutorials/develop/style_and_layout/style_pages/) ja varmista, että kaikkia tyylejä tuetaan."
  },
  "node_modules/lighthouse-stack-packs/packs/amp.js | uses-responsive-images": {
    "message": "[`amp-img`](https://amp.dev/documentation/components/amp-img/?format=websites)-komponentti tukee [`srcset`](https://web.dev/use-srcset-to-automatically-choose-the-right-image/)-määritettä, jolla määritetään käytettävä kuvasisältö näytön koon perusteella. [Lue lisää](https://amp.dev/documentation/guides-and-tutorials/develop/style_and_layout/art_direction/)."
  },
  "node_modules/lighthouse-stack-packs/packs/angular.js | dom-size": {
    "message": "Harkitse virtuaalivieritystä Component Dev Kitissä (CDK), jos laajoja listoja renderöidään. [Lue lisää](https://web.dev/virtualize-lists-with-angular-cdk/)."
  },
  "node_modules/lighthouse-stack-packs/packs/angular.js | total-byte-weight": {
    "message": "Minimoi JavaScript-nippujen koko [reittitason koodinjakamisella](https://web.dev/route-level-code-splitting-in-angular/). Harkitse myös sisällön tallentamista välimuistiin etukäteen [Angular-service workerilla](https://web.dev/precaching-with-the-angular-service-worker/)."
  },
  "node_modules/lighthouse-stack-packs/packs/angular.js | unminified-warning": {
    "message": "Jos käytät Angular CLI:tä, varmista että versiot luodaan tuotantotilassa. [Lue lisää](https://angular.io/guide/deployment#enable-runtime-production-mode)."
  },
  "node_modules/lighthouse-stack-packs/packs/angular.js | unused-javascript": {
    "message": "Jos käytät Angular CLI:tä, lisää tuotantoversioosi lähdekartat nippujen tarkistamista varten. [Lue lisää](https://angular.io/guide/deployment#inspect-the-bundles)."
  },
  "node_modules/lighthouse-stack-packs/packs/angular.js | uses-rel-preload": {
    "message": "Lataa reittejä ennalta navigoinnin nopeuttamiseksi. [Lue lisää](https://web.dev/route-preloading-in-angular/)."
  },
  "node_modules/lighthouse-stack-packs/packs/angular.js | uses-responsive-images": {
    "message": "Harkitse `BreakpointObserver` ‑avustajan käyttöä Component Dev Kitissä (CDK) kuvien raja-arvojen hallintaan. [Lue lisää](https://material.angular.io/cdk/layout/overview)."
  },
  "node_modules/lighthouse-stack-packs/packs/drupal.js | efficient-animated-content": {
    "message": "`GIF` kannattaa ehkä ladata palveluun, jonka avulla se voidaan upottaa HTML5-videona."
  },
  "node_modules/lighthouse-stack-packs/packs/drupal.js | modern-image-formats": {
    "message": "Harkitse [WebP-kuvamuotojen määrittämistä Kuvan muuntaminen ‑tyylillä](https://www.drupal.org/docs/core-modules-and-themes/core-modules/image-module/working-with-images#styles) sivustollasi."
  },
  "node_modules/lighthouse-stack-packs/packs/drupal.js | offscreen-images": {
    "message": "Harkitse laiskasti latautuvien kuvien määrittämistä `Drupal`issa. Kuvakentän muotoilutyökalut tukevat lataamisen eri muotoja (`lazy` tai `eager`)."
  },
  "node_modules/lighthouse-stack-packs/packs/drupal.js | prioritize-lcp-image": {
    "message": "Jos LCP-elementti on lisätty dynaamisesti sivulle, sinun pitää optimoida kuva LCP:n parantamiseksi. [Lue lisää](https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/)."
  },
  "node_modules/lighthouse-stack-packs/packs/drupal.js | redirects": {
    "message": "Uudelleenohjaukset viivästyttävät sivun lataamista. Jos [Uudelleenohjaus](https://www.drupal.org/project/redirect)-moduuli on asennettu, tarkista, voiko tarpeettomia uudelleenohjauksia poistaa. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/redirects)."
  },
  "node_modules/lighthouse-stack-packs/packs/drupal.js | render-blocking-resources": {
    "message": "Sinun kannattaa ehkä käyttää [moduulia](https://www.drupal.org/project/critical_css), joka voi tuoda kriittistä CSS:ää tai JavaScriptiä sivun sisälle. Käytä myös lykkäämismääritettä ei-kriittiselle CSS:lle tai JavaScriptille."
  },
  "node_modules/lighthouse-stack-packs/packs/drupal.js | server-response-time": {
    "message": "Vähennä liikennettä käyttämällä yhtä tai useampaa `Drupal`-välimuistimoduulia, kuten `Internal Page Cache`, `Internal Dynamic Page Cache` ja `BigPipe`. Lisää CDN, niin voit parantaa vastausaikaa. Hostaavien palvelimiesi olisi hyvä käyttää PHP OPcachea. Harkitse muistin välimuistiin tallentamista (esim. Redis tai Memcached) tietokannan kyselyaikojen lyhentämiseksi. Voit lopuksi vähentää palvelimen vastausaikaa käyttämällä tehokkaita teemoja, moduuleja ja nopeampia palvelimia."
  },
  "node_modules/lighthouse-stack-packs/packs/drupal.js | total-byte-weight": {
    "message": "Sinun kannattaa ehkä käyttää [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) (Responsiiviset kuvatyylit) ‑toimintoa sivullasi ladattavien kuvien pienentämiseen. Jos näytät sivulla useita kohteita `Views`in avulla, sinun kannattaa ehkä rajoittaa yhdellä sivulla näkyvien kohteiden määrää ottamalla sivunumerointi käyttöön."
  },
  "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-css": {
    "message": "Varmista, että Aggregate CSS files (Kokoa CSS-tiedostot) ‑toiminto on otettu käyttöön kohdassa Administration > Configuration > Development (Järjestelmänvalvonta > Määritys > Kehitys)."
  },
  "node_modules/lighthouse-stack-packs/packs/drupal.js | unminified-javascript": {
    "message": "Varmista, että Aggregate JavaScript files (Kokoa JavaScript-tiedostot) ‑toiminto on otettu käyttöön kohdassa Administration > Configuration > Development (Järjestelmänvalvonta > Määritys > Kehitys)."
  },
  "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-css-rules": {
    "message": "Sinun kannattaa ehkä poistaa käyttämättömät CSS-säännöt ja liittää relevanttiin sivuun tai sivun osaan vain tarvittavat `Drupal`-kirjastot. Lisätietoja on [`Drupal`-dokumentaatiossa](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define). Voit etsiä tarpeetonta CSS:ää lisääviä liitettyjä kirjastoja tutkimalla [koodin testikattavuutta](https://developer.chrome.com/docs/devtools/coverage) Chromen DevToolsissa. Löydät syynä olevan teeman tai moduulin tarkistamalla tyyliarkin URL-osoitteen, kun CSS-koonti on poistettuna käytöstä `Drupal`-sivustollasi. Etsi teemoja ja moduuleja, joilla on monia tyyliarkkeja luettelossa ja paljon punaista koodin testikattavuudessa. Teeman tai moduulin pitäisi liittää tyyliarkkikirjasto vain, jos sitä todella käytetään sivulla."
  },
  "node_modules/lighthouse-stack-packs/packs/drupal.js | unused-javascript": {
    "message": "Sinun kannattaa ehkä poistaa käyttämätön JavaScript-sisältö ja liittää relevanttiin sivuun tai sivun osaan vain tarvittavat `Drupal`-kirjastot. Saat lisätietoja [Drupal-dokumentaatiosta](https://www.drupal.org/docs/develop/theming-drupal/adding-assets-css-js-to-a-drupal-theme-via-librariesyml#define). Voit etsiä tarpeetonta JavaScriptiä lisääviä liitettyjä kirjastoja tutkimalla [koodin testikattavuutta](https://developer.chrome.com/docs/devtools/coverage) Chromen DevToolsissa. Löydät syynä olevan teeman tai moduulin tarkistamalla skriptin URL-osoitteen, kun JavaScript-koonti on poistettuna käytöstä `Drupal`-sivustollasi. Etsi teemoja ja moduuleja, joilla on monia skriptejä luettelossa ja paljon punaista koodin testikattavuudessa. Teeman tai moduulin pitäisi liittää skriptikirjasto vain, jos sitä oikeasti käytetään sivulla."
  },
  "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-long-cache-ttl": {
    "message": "Määritä Browser and proxy cache maximum age (Selaimen ja välityspalvelimen välitysmuistin enimmäisikä) ‑asetus kohdassa Administration > Configuration > Development (Järjestelmänvalvonta > Määritys > Kehitys). Lue lisää [`Drupal`in välimuistista ja toiminnan optimoinnista](https://www.drupal.org/docs/8/api/cache-api/cache-api)."
  },
  "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-optimized-images": {
    "message": "Sinun kannattaa ehkä käyttää [moduulia](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=im_vid_3%3A123&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=image&solrsort=iss_project_release_usage+desc&op=Search), joka optimoi ja pienentää sivuston kautta ladattuja kuvia, mutta säilyttää niiden laadun. Varmista lisäksi, että käytät kaikkien sivustolla renderöitävien kuvien kanssa `Drupal`in natiivia [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) (Responsiiviset kuvatyylit) ‑toimintoa."
  },
  "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-rel-preconnect": {
    "message": "Voit lisätä `Preconnect`- tai `dns-prefetch`-resurssivihjeitä asentamalla ja määrittämällä [moduulin](https://www.drupal.org/project/project_module?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=Preconnect&solrsort=score+desc&op=Search), joka edesauttaa käyttäjäagentin resurssivihjeiden toimintaa."
  },
  "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-responsive-images": {
    "message": "Varmista, että käytät `Drupal`in natiivia [Responsive Image Styles](https://www.drupal.org/documentation/modules/responsive_image) (Responsiiviset kuvatyylit) ‑toimintoa. Käytä Responsive Image Styles ‑toimintoa, kun renderöit kuvakenttiä hyödyntämällä katselutiloja, näkymiä tai WYSIWYG-muokkaustyökalulla ladattuja kuvia."
  },
  "node_modules/lighthouse-stack-packs/packs/drupal.js | uses-text-compression": {
    "message": "Tekstipohjaiset resurssit on hyvä pakata ennen jakelua (gzip, deflate tai brotli), jotta ladattavien tavujen määrä voidaan minimoida. Voit käyttää CDN:ää, joka tukee tätä ominaisuutta, tai määrittää verkkopalvelimen suorittamaan tämän toiminnon. [Lue lisää](https://developers.google.com/web/tools/lighthouse/audits/text-compression)."
  },
  "node_modules/lighthouse-stack-packs/packs/ezoic.js | font-display": {
    "message": "Käytä [Ezoic Leapia](https://pubdash.ezoic.com/leap) ja ota `Optimize Fonts` käyttöön hyödyntääksesi `font-display` CSS ‑ominaisuutta automaattisesti, jotta voit varmistaa tekstin näkymisen käyttäjille verkkofonttien latautuessa."
  },
  "node_modules/lighthouse-stack-packs/packs/ezoic.js | modern-image-formats": {
    "message": "Käytä [Ezoic Leapia](https://pubdash.ezoic.com/leap) ja ota `Next-Gen Formats` käyttöön konvertoidaksesi kuvia WebP-muotoon."
  },
  "node_modules/lighthouse-stack-packs/packs/ezoic.js | offscreen-images": {
    "message": "Käytä [Ezoic Leapia](https://pubdash.ezoic.com/leap) ja ota `Lazy Load Images` käyttöön lykätäksesi näytön ulkopuolisten kuvien lataamista, kunnes niitä tarvitaan."
  },
  "node_modules/lighthouse-stack-packs/packs/ezoic.js | render-blocking-resources": {
    "message": "Käytä [Ezoic Leapia](https://pubdash.ezoic.com/leap) ja ota `Script Delay` käyttöön lykätäksesi ei-kriittistä JS:ää."
  },
  "node_modules/lighthouse-stack-packs/packs/ezoic.js | server-response-time": {
    "message": "Käytä [Ezoic Cloud Cachingia](https://pubdash.ezoic.com/leap/caching) sisältösi tallentamiseen välimuistiin maailmanlaajuisessa verkossamme, mikä lyhentää aikaa linkin valinnan ja sisällön ensimmäisen tavun latauksen välillä"
  },
  "node_modules/lighthouse-stack-packs/packs/ezoic.js | unminified-css": {
    "message": "Käytä [Ezoic Leapia](https://pubdash.ezoic.com/leap) ja ota `Minify CSS` käyttöön pienentääksesi CSS:ää automaattisesti, jotta voit vähentää verkkoresurssien kokoja."
  },
  "node_modules/lighthouse-stack-packs/packs/ezoic.js | unminified-javascript": {
    "message": "Käytä [Ezoic Leapia](https://pubdash.ezoic.com/leap) ja ota `Minify Javascript` käyttöön pienentääksesi JS:ää automaattisesti, jotta voit vähentää verkkoresurssien kokoja."
  },
  "node_modules/lighthouse-stack-packs/packs/ezoic.js | unused-css-rules": {
    "message": "Käytä [Ezoic Leapia](https://pubdash.ezoic.com/leap) ja ota `Remove Unused CSS` käyttöön saadaksesi apua ongelmaan. Se tunnistaa jokaisen sivustosi sivun käyttämät CSS-luokat ja poistaa kaikki muut, jotta tiedoston koko pysyy pienenä."
  },
  "node_modules/lighthouse-stack-packs/packs/ezoic.js | uses-long-cache-ttl": {
    "message": "Käytä [Ezoic Leapia](https://pubdash.ezoic.com/leap) ja ota `Efficient Static Cache Policy` käyttöön asettaaksesi suositellut arvot välimuistin otsikossa pysyville sisällöille."
  },
  "node_modules/lighthouse-stack-packs/packs/ezoic.js | uses-optimized-images": {
    "message": "Käytä [Ezoic Leapia](https://pubdash.ezoic.com/leap) ja ota `Next-Gen Formats` käyttöön konvertoidaksesi kuvia WebP-muotoon."
  },
  "node_modules/lighthouse-stack-packs/packs/ezoic.js | uses-rel-preconnect": {
    "message": "Käytä [Ezoic Leapia](https://pubdash.ezoic.com/leap) ja ota `Pre-Connect Origins` käyttöön lisätäksesi automaattisesti `preconnect`-materiaalivihjeitä, jotta voit muodostaa aikaisia yhteyksiä tärkeisiin kolmannen osapuolen alkuperiin."
  },
  "node_modules/lighthouse-stack-packs/packs/ezoic.js | uses-rel-preload": {
    "message": "Käytä [Ezoic Leapia](https://pubdash.ezoic.com/leap) ja ota `Preload Fonts` ja `Preload Background Images` käyttöön lisätäksesi`preload`‑linkit, jotta voit priorisoida nykyisten pyydettyjen resurssien hakemista myöhemmin sivun latauksessa."
  },
  "node_modules/lighthouse-stack-packs/packs/ezoic.js | uses-responsive-images": {
    "message": "Käytä [Ezoic Leapia](https://pubdash.ezoic.com/leap) ja ota `Resize Images` käyttöön muuttaaksesi kuvien kokoa laitteisiin sopivaksi, jotta voit vähentää verkkoresurssien kokoja."
  },
  "node_modules/lighthouse-stack-packs/packs/gatsby.js | modern-image-formats": {
    "message": "Optimoi kuvamuoto automaattisesti käyttämällä `gatsby-plugin-image`-komponenttia `<img>`-komponentin sijaan. [Lue lisää](https://www.gatsbyjs.com/docs/how-to/images-and-media/using-gatsby-plugin-image)."
  },
  "node_modules/lighthouse-stack-packs/packs/gatsby.js | offscreen-images": {
    "message": "Lataa kuvat automaattisesti laiskasti käyttämällä `gatsby-plugin-image`-komponenttia `<img>`-komponentin sijaan. [Lue lisää](https://www.gatsbyjs.com/docs/how-to/images-and-media/using-gatsby-plugin-image)."
  },
  "node_modules/lighthouse-stack-packs/packs/gatsby.js | prioritize-lcp-image": {
    "message": "Käytä `gatsby-plugin-image`-komponenttia ja aseta `loading`-omaisuuden arvoksi `eager`. [Lue lisää](https://www.gatsbyjs.com/docs/reference/built-in-components/gatsby-plugin-image#shared-props)."
  },
  "node_modules/lighthouse-stack-packs/packs/gatsby.js | render-blocking-resources": {
    "message": "Lykkää ei-kriittisten kolmannen osapuolen skriptien lataamista suorittamalla `Gatsby Script API`. [Lue lisää](https://www.gatsbyjs.com/docs/reference/built-in-components/gatsby-script/)."
  },
  "node_modules/lighthouse-stack-packs/packs/gatsby.js | unused-css-rules": {
    "message": "Poista tyyliarkkien käyttämättömät säännöt `PurgeCSS` `Gatsby` ‐liitännäisellä. [Lue lisää](https://purgecss.com/plugins/gatsby.html)."
  },
  "node_modules/lighthouse-stack-packs/packs/gatsby.js | unused-javascript": {
    "message": "Valitse `Webpack Bundle Analyzer`, jotta voit havaita käyttämättömän JavaScript-ohjelmakoodin. [Lue lisää](https://www.gatsbyjs.com/plugins/gatsby-plugin-webpack-bundle-analyser-v2/)"
  },
  "node_modules/lighthouse-stack-packs/packs/gatsby.js | uses-long-cache-ttl": {
    "message": "Määritä muuttumattomien kohteiden välimuistiin tallentaminen. [Lue lisää](https://www.gatsbyjs.com/docs/how-to/previews-deploys-hosting/caching/)."
  },
  "node_modules/lighthouse-stack-packs/packs/gatsby.js | uses-optimized-images": {
    "message": "Säädä kuvanlaatua käyttämällä `gatsby-plugin-image`-komponenttia `<img>`-komponentin sijaan. [Lue lisää](https://www.gatsbyjs.com/docs/how-to/images-and-media/using-gatsby-plugin-image)."
  },
  "node_modules/lighthouse-stack-packs/packs/gatsby.js | uses-responsive-images": {
    "message": "Käytä `gatsby-plugin-image`-komponenttia, jotta `sizes` saa sopivan arvon. [Lue lisää](https://www.gatsbyjs.com/docs/how-to/images-and-media/using-gatsby-plugin-image)."
  },
  "node_modules/lighthouse-stack-packs/packs/joomla.js | efficient-animated-content": {
    "message": "GIF kannattaa ehkä ladata palveluun, jonka avulla se voidaan upottaa HTML5-videona."
  },
  "node_modules/lighthouse-stack-packs/packs/joomla.js | modern-image-formats": {
    "message": "Sinun kannattaa ehkä käyttää [laajennusta](https://extensions.joomla.org/instant-search/?jed_live%5Bquery%5D=webp) tai palvelua, joka muuntaa ladatut kuvat automaattisesti oikeisiin muotoihin."
  },
  "node_modules/lighthouse-stack-packs/packs/joomla.js | offscreen-images": {
    "message": "Asenna [Joomlan laiskan latautumisen liitännäinen](https://extensions.joomla.org/instant-search/?jed_live%5Bquery%5D=lazy%20loading), joka lykkää muiden kuin näytöllä näkyvien kuvien latautumista, tai vaihda malliin, joka tarjoaa tämän ominaisuuden. Joomla 4.0:sta alkaen kaikille kuville lisätään [automaattisesti](https://github.com/joomla/joomla-cms/pull/30748) `loading`-ydinmäärite."
  },
  "node_modules/lighthouse-stack-packs/packs/joomla.js | render-blocking-resources": {
    "message": "Tietyt Joomla-laajennukset voivat [tuoda tärkeää sisältöä sivun sisälle](https://extensions.joomla.org/instant-search/?jed_live%5Bquery%5D=performance) tai [lykätä vähemmän tärkeiden resurssien lataamista](https://extensions.joomla.org/instant-search/?jed_live%5Bquery%5D=performance). Huomaa, että näiden laajennusten suorittamat optimoinnit voivat rikkoa mallien tai muiden laajennusten toimintoja, joten sinun on testattava ne huolellisesti."
  },
  "node_modules/lighthouse-stack-packs/packs/joomla.js | server-response-time": {
    "message": "Mallit, laajennukset ja palvelinasetukset vaikuttavat kaikki palvelimen vastausaikaan. Sinun kannattaa ehkä etsiä optimoidumpi malli, valita optimointilaajennus tai päivittää palvelimesi."
  },
  "node_modules/lighthouse-stack-packs/packs/joomla.js | total-byte-weight": {
    "message": "Sinun kannattaa ehkä näyttää näytteitä artikkeliluokistasi (esim. lue lisää ‑linkillä), vähentää yhdellä sivulla näkyvien artikkelien määrää, jakaa pitkät postaukset useille sivuille tai käyttää laajennusta kommenttien lataamiseen tarveohjatusti."
  },
  "node_modules/lighthouse-stack-packs/packs/joomla.js | unminified-css": {
    "message": "Tietyt [Joomla-laajennukset](https://extensions.joomla.org/instant-search/?jed_live%5Bquery%5D=performance) voivat nopeuttaa sivustosi toimintaa ketjuttamalla, pienentämällä ja pakkaamalla CSS-tyylejä. Nämä toiminnot sisältyvät myös joihinkin malleihin."
  },
  "node_modules/lighthouse-stack-packs/packs/joomla.js | unminified-javascript": {
    "message": "Tietyt [Joomla-laajennukset](https://extensions.joomla.org/instant-search/?jed_live%5Bquery%5D=performance) voivat nopeuttaa sivustosi toimintaa ketjuttamalla, pienentämällä ja pakkaamalla skriptejä. Nämä toiminnot sisältyvät myös joihinkin malleihin."
  },
  "node_modules/lighthouse-stack-packs/packs/joomla.js | unused-css-rules": {
    "message": "Sinun kannattaa ehkä vähentää tai vaihtaa [Joomla-laajennuksia](https://extensions.joomla.org/), jotka lataavat käyttämätöntä CSS:ää sivullasi. Etsi tarpeetonta CSS:ää lisääviä laajennuksia tutkimalla [koodin testikattavuutta](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) Chromen DevToolsissa. Löydät syynä olevan teeman tai laajennuksen tarkistamalla tyyliarkin URL-osoitteen. Etsi laajennuksia, joilla on monia tyyliarkkeja luettelossa ja paljon punaista koodin testikattavuudessa. Laajennuksen pitäisi lisätä tyyliarkki jonoon vain, jos sitä todella käytetään sivulla."
  },
  "node_modules/lighthouse-stack-packs/packs/joomla.js | unused-javascript": {
    "message": "Sinun kannattaa ehkä vähentää tai vaihtaa [Joomla-laajennuksia](https://extensions.joomla.org/), jotka lataavat käyttämätöntä JavaScriptiä sivullasi. Etsi tarpeetonta JS:ää lisääviä laajennuksia tutkimalla [koodin testikattavuutta](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) Chromen DevToolsissa. Löydät syynä olevan laajennuksen tarkistamalla skriptin URL-osoitteen. Etsi laajennuksia, joilla on monia skriptejä luettelossa ja paljon punaista koodin testikattavuudessa. Laajennuksen pitäisi lisätä skripti jonoon vain, jos sitä todella käytetään sivulla."
  },
  "node_modules/lighthouse-stack-packs/packs/joomla.js | uses-long-cache-ttl": {
    "message": "Lue lisää [selaimen välimuistin käytöstä Joomlassa](https://docs.joomla.org/Cache)."
  },
  "node_modules/lighthouse-stack-packs/packs/joomla.js | uses-optimized-images": {
    "message": "Sinun kannattaa ehkä käyttää [kuvaoptimointilaajennusta](https://extensions.joomla.org/instant-search/?jed_live%5Bquery%5D=performance), joka pakkaa kuvat mutta säilyttää niiden laadun."
  },
  "node_modules/lighthouse-stack-packs/packs/joomla.js | uses-responsive-images": {
    "message": "Sinun kannattaa ehkä käyttää [responsiivisten kuvien laajennusta](https://extensions.joomla.org/instant-search/?jed_live%5Bquery%5D=responsive%20images), jolloin voit käyttää responsiivisia kuvia sisällössäsi."
  },
  "node_modules/lighthouse-stack-packs/packs/joomla.js | uses-text-compression": {
    "message": "Voit ottaa tekstin pakkaamisen käyttöön laittamalla Gzip Page Compression (Sivun Gzip-pakkaus) ‑toiminnon päälle Joomlassa. Valitse System > Global configuration > Server (Järjestelmä > Yleiset asetukset > Palvelin)."
  },
  "node_modules/lighthouse-stack-packs/packs/magento.js | critical-request-chains": {
    "message": "Jos et vielä kokoa JavaScript-sisältöä nipuiksi, harkitse[niputtajan (baler)](https://github.com/magento/baler) käyttöä."
  },
  "node_modules/lighthouse-stack-packs/packs/magento.js | disable-bundling": {
    "message": "Poista käytöstä Magenton sisäänrakennettu [JavaScriptin niputus ja pienennys](https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/themes/js-bundling.html) ja harkitse sen sijaan [niputtajan](https://github.com/magento/baler/) käyttöä."
  },
  "node_modules/lighthouse-stack-packs/packs/magento.js | font-display": {
    "message": "Valitse `@font-display`, kun[määrität omia kirjasimia](https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/css-topics/using-fonts.html)."
  },
  "node_modules/lighthouse-stack-packs/packs/magento.js | modern-image-formats": {
    "message": "Etsi [Magento Marketplacesta](https://marketplace.magento.com/catalogsearch/result/?q=webp) erilaisia kolmannen osapuolen laajennuksia uusien kuvamuotojen hyödyntämiseksi."
  },
  "node_modules/lighthouse-stack-packs/packs/magento.js | offscreen-images": {
    "message": "Muokkaa tuote- ja kuvastomalleja niin, että ne hyödyntävät verkkoalustan [lykätty lataus](https://web.dev/native-lazy-loading) ‑ominaisuutta."
  },
  "node_modules/lighthouse-stack-packs/packs/magento.js | server-response-time": {
    "message": "Käytä Magenton [Varnish-integraatiota](https://devdocs.magento.com/guides/v2.3/config-guide/varnish/config-varnish.html)."
  },
  "node_modules/lighthouse-stack-packs/packs/magento.js | unminified-css": {
    "message": "Ota kaupan kehittäjäasetuksista käyttöön vaihtoehto Pienennä CSS-tiedostot. [Lue lisää](https://devdocs.magento.com/guides/v2.3/performance-best-practices/configuration.html?itm_source=devdocs&itm_medium=search_page&itm_campaign=federated_search&itm_term=minify%20css%20files)."
  },
  "node_modules/lighthouse-stack-packs/packs/magento.js | unminified-javascript": {
    "message": "Pienennä kaikki JavaScript-sisältö [Terserillä](https://www.npmjs.com/package/terser) staattisen julkaisun vaiheesta ja poista sisäänrakennettu pienennysominaisuus käytöstä."
  },
  "node_modules/lighthouse-stack-packs/packs/magento.js | unused-javascript": {
    "message": "Poista käytöstä Magenton sisäänrakennettu [JavaScript-niputus](https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/themes/js-bundling.html)."
  },
  "node_modules/lighthouse-stack-packs/packs/magento.js | uses-optimized-images": {
    "message": "Etsi [Magento Marketplacesta](https://marketplace.magento.com/catalogsearch/result/?q=optimize%20image) erilaisia kolmannen osapuolen laajennuksia kuvien optimointiin."
  },
  "node_modules/lighthouse-stack-packs/packs/magento.js | uses-rel-preconnect": {
    "message": "Preconnect- tai dns-prefetch-resurssivihjeitä voidaan lisätä [muuttamalla teeman asettelua](https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/layouts/xml-manage.html)."
  },
  "node_modules/lighthouse-stack-packs/packs/magento.js | uses-rel-preload": {
    "message": "`<link rel=preload>`-tagit voidaan lisätä [muuttamalla teeman asettelua](https://devdocs.magento.com/guides/v2.3/frontend-dev-guide/layouts/xml-manage.html)."
  },
  "node_modules/lighthouse-stack-packs/packs/next.js | modern-image-formats": {
    "message": "Optimoi kuvamuoto automaattisesti käyttämällä `next/image`-komponenttia `<img>`-komponentin sijaan. [Lue lisää](https://nextjs.org/docs/app/getting-started/images)."
  },
  "node_modules/lighthouse-stack-packs/packs/next.js | offscreen-images": {
    "message": "Lataa kuvat automaattisesti laiskasti käyttämällä `next/image`-komponenttia `<img>`-komponentin sijaan. [Lue lisää](https://nextjs.org/docs/app/getting-started/images)."
  },
  "node_modules/lighthouse-stack-packs/packs/next.js | prioritize-lcp-image": {
    "message": "Käytä `next/image`-komponenttia ja aseta prioriteetti todeksi, jotta voit esiladata LCP-kuvan. [Lue lisää](https://nextjs.org/docs/api-reference/next/image#priority)."
  },
  "node_modules/lighthouse-stack-packs/packs/next.js | render-blocking-resources": {
    "message": "Lykkää ei-kriittisten kolmannen osapuolen skriptien lataamista suorittamalla `next/script`. [Lue lisää](https://nextjs.org/docs/app/guides/scripts)."
  },
  "node_modules/lighthouse-stack-packs/packs/next.js | unsized-images": {
    "message": "Käytä `next/image`-komponenttia ja varmista, että kuvat ovat aina oikean kokoisia. [Lue lisää](https://nextjs.org/docs/api-reference/next/image#width)."
  },
  "node_modules/lighthouse-stack-packs/packs/next.js | unused-css-rules": {
    "message": "Ota `PurgeCSS` käyttöön määrityksessä (`Next.js`), jotta voit poistaa tyyliarkkien käyttämättömät säännöt. [Lue lisää](https://purgecss.com/guides/next.html)."
  },
  "node_modules/lighthouse-stack-packs/packs/next.js | unused-javascript": {
    "message": "Valitse `Webpack Bundle Analyzer`, jotta voit havaita käyttämättömän JavaScript-ohjelmakoodin. [Lue lisää](https://github.com/vercel/next.js/tree/canary/packages/next-bundle-analyzer)"
  },
  "node_modules/lighthouse-stack-packs/packs/next.js | user-timings": {
    "message": "Sinun kannattaa ehkä valita `Next.js Analytics`, jotta voit mitata sovelluksen todellista toimivuutta. [Lue lisää](https://nextjs.org/docs/pages/guides/analytics)."
  },
  "node_modules/lighthouse-stack-packs/packs/next.js | uses-long-cache-ttl": {
    "message": "Määritä muuttumattomien kohteiden ja `Server-side Rendered` (SSR) ‑sivujen välimuistiin siirtäminen. [Lue lisää](https://nextjs.org/docs/13/pages/building-your-application/deploying/production-checklist#caching)."
  },
  "node_modules/lighthouse-stack-packs/packs/next.js | uses-optimized-images": {
    "message": "Säädä kuvanlaatua käyttämällä `next/image`-komponenttia `<img>`-komponentin sijaan. [Lue lisää](https://nextjs.org/docs/app/getting-started/images)."
  },
  "node_modules/lighthouse-stack-packs/packs/next.js | uses-responsive-images": {
    "message": "Suorita `next/image`, jotta `sizes` voi saada sopivan arvon. [Lue lisää](https://nextjs.org/docs/api-reference/next/image#sizes)."
  },
  "node_modules/lighthouse-stack-packs/packs/next.js | uses-text-compression": {
    "message": "Salli pakkaus Next.js-palvelimellasi. [Lue lisää](https://nextjs.org/docs/api-reference/next.config.js/compression)."
  },
  "node_modules/lighthouse-stack-packs/packs/nitropack.js | dom-size": {
    "message": "Ota yhteyttä tilin hallinnoijaan, jotta [`HTML Lazy Load`](https://support.nitropack.io/hc/en-us/articles/17144942904337) voidaan ottaa käyttöön. Määrittämällä sen voit priorisoida ja optimoida sivun renderöinnin."
  },
  "node_modules/lighthouse-stack-packs/packs/nitropack.js | font-display": {
    "message": "Valitse NitroPackin [`Override Font Rendering Behavior`](https://support.nitropack.io/hc/en-us/articles/16547358865041) ‑vaihtoehdolla haluamasi arvo CSS:n fonttinäyttösäännölle."
  },
  "node_modules/lighthouse-stack-packs/packs/nitropack.js | modern-image-formats": {
    "message": "Käytä [`Image Optimization`](https://support.nitropack.io/hc/en-us/articles/16547237162513) ‑ominaisuutta, jotta kuvat muunnetaan automaattisesti WebP-muotoon."
  },
  "node_modules/lighthouse-stack-packs/packs/nitropack.js | offscreen-images": {
    "message": "Lykkää poissa näkyvistä olevia kuvia ottamalla käyttöön [`Automatic Image Lazy Loading`](https://support.nitropack.io/hc/en-us/articles/12457493524369-NitroPack-Lazy-Loading-Feature-for-Images)."
  },
  "node_modules/lighthouse-stack-packs/packs/nitropack.js | render-blocking-resources": {
    "message": "Ota [`Remove render-blocking resources`](https://support.nitropack.io/hc/en-us/articles/13820893500049-How-to-Deal-with-Render-Blocking-Resources-in-NitroPack) käyttöön NitroPackissa ensimmäisen latautumisajan nopeuttamiseksi."
  },
  "node_modules/lighthouse-stack-packs/packs/nitropack.js | unminified-css": {
    "message": "Ota [`Minify resources`](https://support.nitropack.io/hc/en-us/articles/360061059394-Minify-Resources) käyttöön välimuistin asetuksista pienentääksesi CSS:n ja HTML:n kokoa ja nopeuttaaksesi JavaScriptin tiedostojen ensimmäistä latautumisaikaa."
  },
  "node_modules/lighthouse-stack-packs/packs/nitropack.js | unminified-javascript": {
    "message": "Ota [`Minify resources`](https://support.nitropack.io/hc/en-us/articles/360061059394-Minify-Resources) käyttöön välimuistin asetuksista pienentääksesi JS:n ja HTML:n kokoa ja nopeuttaaksesi CCS-tiedostojen ensimmäistä latautumisaikaa."
  },
  "node_modules/lighthouse-stack-packs/packs/nitropack.js | unused-css-rules": {
    "message": "Ota [`Reduce Unused CSS`](https://support.nitropack.io/hc/en-us/articles/360020418457-Reduce-Unused-CSS) käyttöön poistaaksesi CSS-säännöt, jotka eivät sovellu tälle sivulle."
  },
  "node_modules/lighthouse-stack-packs/packs/nitropack.js | unused-javascript": {
    "message": "Määritä [`Delayed Scripts`](https://support.nitropack.io/hc/en-us/articles/1500002600942-Delayed-Scripts) ‑ominaisuus NitroPackissa skriptien latautumisen lykkäämiseksi, kunnes niitä tarvitaan."
  },
  "node_modules/lighthouse-stack-packs/packs/nitropack.js | uses-long-cache-ttl": {
    "message": "Valitse [`Improve Server Response Time`](https://support.nitropack.io/hc/en-us/articles/1500002321821-Improve-Server-Response-Time) ‑ominaisuus `Caching`-valikosta ja säädä sivun välimuistin vanhenemisaikaa parantaaksesi latausaikoja ja käyttökokemusta."
  },
  "node_modules/lighthouse-stack-packs/packs/nitropack.js | uses-optimized-images": {
    "message": "Pakkaa, optimoi ja muunna kuvat automaattisesti WebP-muotoon ottamalla käyttöön [`Image Optimization`](https://support.nitropack.io/hc/en-us/articles/14177271695121-How-to-serve-images-in-next-gen-formats-using-NitroPack) ‑ominaisuus."
  },
  "node_modules/lighthouse-stack-packs/packs/nitropack.js | uses-responsive-images": {
    "message": "Ota [`Adaptive Image Sizing`](https://support.nitropack.io/hc/en-us/articles/10123833029905-How-to-Enable-Adaptive-Image-Sizing-For-Your-Site) käyttöön, jotta voit optimoida kuvat ennakoivasti niin, että ne vastaavat mittoja niissä säiliöissä, joissa ne näkyvät kaikilla laitteilla."
  },
  "node_modules/lighthouse-stack-packs/packs/nuxt.js | modern-image-formats": {
    "message": "Käytä `nuxt/image`-komponenttia ja määritä `format=\"webp\"`. [Lue lisää](https://image.nuxt.com/usage/nuxt-img#format)."
  },
  "node_modules/lighthouse-stack-packs/packs/nuxt.js | offscreen-images": {
    "message": "Käytä `nuxt/image`-komponenttia ja määritä `loading=\"lazy\"` muille kuin näytöllä näkyville kuville. [Lue lisää](https://image.nuxt.com/usage/nuxt-img#loading)."
  },
  "node_modules/lighthouse-stack-packs/packs/nuxt.js | prioritize-lcp-image": {
    "message": "Käytä `nuxt/image`-komponenttia ja määritä `preload` LCP-kuvalle. [Lue lisää](https://image.nuxt.com/usage/nuxt-img#preload)."
  },
  "node_modules/lighthouse-stack-packs/packs/nuxt.js | unsized-images": {
    "message": "Käytä `nuxt/image`-komponenttia ja määritä `width` ja `height` erikseen. [Lue lisää](https://image.nuxt.com/usage/nuxt-img#width-height)."
  },
  "node_modules/lighthouse-stack-packs/packs/nuxt.js | uses-optimized-images": {
    "message": "Käytä `nuxt/image`-komponenttia ja aseta oikea `quality`-arvo. [Lue lisää](https://image.nuxt.com/usage/nuxt-img#quality)."
  },
  "node_modules/lighthouse-stack-packs/packs/nuxt.js | uses-responsive-images": {
    "message": "Käytä `nuxt/image`-komponenttia ja aseta oikea `sizes`-arvo. [Lue lisää](https://image.nuxt.com/usage/nuxt-img#sizes)."
  },
  "node_modules/lighthouse-stack-packs/packs/octobercms.js | efficient-animated-content": {
    "message": "[Korvaa animoidut GIFit videoilla](https://web.dev/replace-gifs-with-videos/), mikä nopeuttaa verkkosivujen latautumista. Kannattaa myös käyttää nykyaikaisia tiedostomuotoja (esim. [WebM](https://web.dev/replace-gifs-with-videos/#create-webm-videos) tai [AV1](https://developers.google.com/web/updates/2018/09/chrome-70-media-updates#av1-decoder)), jotka voivat pakata yli 30 % tehokkaammin kuin VP9."
  },
  "node_modules/lighthouse-stack-packs/packs/octobercms.js | modern-image-formats": {
    "message": "Harkitse [laajennusta](https://octobercms.com/plugins?search=image) tai palvelua, joka muuntaa ladatut kuvat automaattisesti oikeaan muotoon. [Häviöttömät WebP-kuvat](https://developers.google.com/speed/webp) ovat kooltaan 26 % pienempiä kuin PNG:t ja 25–34 % pienempiä kuin vertailukelpoiset JPEG-kuvat vastaavassa SSIM-laatuindeksissä. Myös [AVIF](https://jakearchibald.com/2020/avif-has-landed/) on mahdollinen seuraavan sukupolven kuvamuoto."
  },
  "node_modules/lighthouse-stack-packs/packs/octobercms.js | offscreen-images": {
    "message": "Kannattaa ehkä asentaa [kuvien laiskan latautumisen liitännäinen](https://octobercms.com/plugins?search=lazy), joka lykkää muiden kuin näytöllä näkyvien kuvien latautumista, tai vaihtaa malliin, joka tarjoaa tämän ominaisuuden. Harkitse myös [AMP-liitännäisen](https://octobercms.com/plugins?search=Accelerated+Mobile+Pages) käyttöä."
  },
  "node_modules/lighthouse-stack-packs/packs/octobercms.js | render-blocking-resources": {
    "message": "Liitännäisistä (plugin) voi olla apua [tärkeiden osien järjestelemisessä](https://octobercms.com/plugins?search=css). En voivat kuitenkin rikkoa muita liitännäisiä, joten testaa ne huolellisesti."
  },
  "node_modules/lighthouse-stack-packs/packs/octobercms.js | server-response-time": {
    "message": "Teemat, liitännäiset ja palvelinasetukset vaikuttavat kaikki palvelimen vastausaikaan. Kannattaa ehkä etsiä optimoidumpi teema, valita optimointiliitännäinen tai päivittää palvelin. October CMSin ansiosta [`Queues`](https://octobercms.com/docs/services/queues) voivat auttaa kehittäjiä aikaa vievien tehtävien (esim. sähköpostin lähettämisen) lykkäämisessä. Tämä nopeuttaa verkkopyyntöjä merkittävästi."
  },
  "node_modules/lighthouse-stack-packs/packs/octobercms.js | total-byte-weight": {
    "message": "Kannattaa ehkä näyttää postauslistalla katkelmia (esim. `show more`-painikkeella), vähentää yhdellä verkkosivulla näkyvien postauksien määrää, jakaa pitkät postaukset usealle sivulle tai käyttää liitännäistä kommenttien laiskempaan latautumiseen."
  },
  "node_modules/lighthouse-stack-packs/packs/octobercms.js | unminified-css": {
    "message": "Monet [liitännäiset](https://octobercms.com/plugins?search=css) voivat nopeuttaa sivustoja ketjuttamalla, pienentämällä ja pakkaamalla tyylejä. Kun tämä tehdään etukäteen rakennusvaiheessa, kehittäminen voi olla nopeampaa."
  },
  "node_modules/lighthouse-stack-packs/packs/octobercms.js | unminified-javascript": {
    "message": "Monet [liitännäiset](https://octobercms.com/plugins?search=javascript) voivat nopeuttaa sivustojen toimintaa ketjuttamalla, pienentämällä ja pakkaamalla skriptiä. Kun tämä tehdään etukäteen rakennusvaiheessa, kehittäminen voi olla nopeampaa."
  },
  "node_modules/lighthouse-stack-packs/packs/octobercms.js | unused-css-rules": {
    "message": "Kannattaa ehkä tarkistaa [liitännäiset](https://octobercms.com/plugins), jotka lataavat käyttämätöntä CSS:ää sivustolla. Löydät tarpeetonta CSS:ää lisäävät liitännäiset testaamalla [koodin käyttötason](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) Chromen DevToolsissa. Tunnista syynä oleva teema tai liitännäinen tyyliarkin URL-osoitteen perusteella. Yritä löytää liitännäiset, joissa on paljon skriptiä ja punaista koodin käyttötasossa. Liitännäisen pitäisi lisätä tyyliarkki vain, jos sitä todella käytetään verkkosivulla."
  },
  "node_modules/lighthouse-stack-packs/packs/octobercms.js | unused-javascript": {
    "message": "Kannattaa ehkä tarkistaa [liitännäiset](https://octobercms.com/plugins?search=javascript), jotka lataavat käyttämätöntä JavaScriptiä verkkosivulla. Löydät tarpeetonta JavaScriptiä lisäävät liitännäiset testaamalla [koodin käyttötason](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage) Chromen DevToolsissa. Tunnista syynä oleva teema tai liitännäinen skriptin URL-osoitteen perusteella. Yritä löytää liitännäiset, joissa on paljon skriptiä ja punaista koodin käyttötasossa. Liitännäisen pitäisi lisätä skriptiä vain, jos sitä todella käytetään verkkosivulla."
  },
  "node_modules/lighthouse-stack-packs/packs/octobercms.js | uses-long-cache-ttl": {
    "message": "Lue lisää [tarpeettomien verkkopyyntöjen estämisestä HTTP-välimuistilla](https://web.dev/http-cache/#caching-checklist). Välimuistiin tallentamista voi nopeuttaa eri [liitännäisillä](https://octobercms.com/plugins?search=Caching)."
  },
  "node_modules/lighthouse-stack-packs/packs/octobercms.js | uses-optimized-images": {
    "message": "Kannattaa ehkä käyttää [kuvanoptimointilaajennusta](https://octobercms.com/plugins?search=image), joka pakkaa kuvat niiden laadun säilyttäen."
  },
  "node_modules/lighthouse-stack-packs/packs/octobercms.js | uses-responsive-images": {
    "message": "Lataa kuvat suoraan mediatyökalulla, jolloin oikeat kuvakoot ovat varmasti saatavilla. Kannattaa varmistaa koon muuttamiseen tarkoitetulla [suodattimella](https://octobercms.com/docs/markup/filter-resize) tai [liitännäisellä](https://octobercms.com/plugins?search=image), että kuvien koko on optimaalinen."
  },
  "node_modules/lighthouse-stack-packs/packs/octobercms.js | uses-text-compression": {
    "message": "Ota tekstin pakkaaminen käyttöön palvelimen määrityksistä."
  },
  "node_modules/lighthouse-stack-packs/packs/react.js | dom-size": {
    "message": "Kannattaa ehkä käyttää \"windowing\"-kirjastoa (esim. `react-window`) DOM-säikeiden määrän vähentämiseksi, jos sivulla renderöidään monia toistuvia elementtejä. [Lue lisää](https://web.dev/virtualize-long-lists-react-window/). [`shouldComponentUpdate`](https://reactjs.org/docs/optimizing-performance.html#shouldcomponentupdate-in-action), [`PureComponent`](https://reactjs.org/docs/react-api.html#reactpurecomponent) tai [`React.memo`](https://reactjs.org/docs/react-api.html#reactmemo) auttavat välttämään tarpeettomia uudelleenrenderöintejä. [Ohita tehosteet](https://reactjs.org/docs/hooks-effect.html#tip-optimizing-performance-by-skipping-effects) vain siihen asti, kunnes tietyt riippuvuudet ovat muuttuneet, jos käytät `Effect` -koukkua suoritusaikaisen toiminnan parantamiseen."
  },
  "node_modules/lighthouse-stack-packs/packs/react.js | redirects": {
    "message": "Jos käytät React Routeria, minimoi `<Redirect>`-komponentin käyttö [reittinavigoinnissa](https://reacttraining.com/react-router/web/api/Redirect)."
  },
  "node_modules/lighthouse-stack-packs/packs/react.js | server-response-time": {
    "message": "Jos renderöit React-komponentteja palvelinpuolella, `renderToPipeableStream()` tai `renderToStaticNodeStream()` voi auttaa niin, että asiakas saa vastaanottaa ja aktivoida merkintöjen eri kohtia kerralla käsittelyn sijaan. [Lue lisää](https://reactjs.org/docs/react-dom-server.html#renderToPipeableStream)."
  },
  "node_modules/lighthouse-stack-packs/packs/react.js | unminified-css": {
    "message": "Jos versiojärjestelmäsi kutistaa CSS-tiedostoja automaattisesti, varmista että käyttöönotto koskee sovelluksen tuotantoversiota. Voit tarkistaa tämän Reactin kehittäjätyökalut ‑laajennuksella. [Lue lisää](https://reactjs.org/docs/optimizing-performance.html#use-the-production-build)."
  },
  "node_modules/lighthouse-stack-packs/packs/react.js | unminified-javascript": {
    "message": "Jos versiojärjestelmäsi kutistaa JS-tiedostoja automaattisesti, varmista että käyttöönotto koskee sovelluksen tuotantoversiota. Voit tarkistaa tämän Reactin kehittäjätyökalut ‑laajennuksella. [Lue lisää](https://reactjs.org/docs/optimizing-performance.html#use-the-production-build)."
  },
  "node_modules/lighthouse-stack-packs/packs/react.js | unused-javascript": {
    "message": "Jos et vielä renderöi palvelinpuolella, [jaa JavaScript-niput osiin](https://web.dev/code-splitting-suspense/) – `React.lazy()` voi auttaa. Jaa muussa tapauksessa koodi osiin kolmannen osapuolen kirjastolla, esimerkiksi [loadable-components](https://loadable-components.com/)."
  },
  "node_modules/lighthouse-stack-packs/packs/react.js | user-timings": {
    "message": "Käytä React DevTools Profileria, joka käyttää React-sovellusliittymää, komponenttien renderöinnin mittaamiseen. [Lue lisää.](https://reactjs.org/blog/2018/09/10/introducing-the-react-profiler.html)"
  },
  "node_modules/lighthouse-stack-packs/packs/wix.js | efficient-animated-content": {
    "message": "Sijoita videot tämän sisään: `VideoBoxes`. Muokkaa niitä `Video Masks` ‑sovelluksella tai lisää `Transparent Videos`. [Lue lisää](https://support.wix.com/en/article/wix-video-about-wix-video)."
  },
  "node_modules/lighthouse-stack-packs/packs/wix.js | modern-image-formats": {
    "message": "`Wix Media Manager` on hyödyllinen, kun lataat kuvia, sillä se syöttää ne automaattisesti WebP-muodossa. Etsi [lisää tapoja optimoida](https://support.wix.com/en/article/site-performance-optimizing-your-media) sivustosi media."
  },
  "node_modules/lighthouse-stack-packs/packs/wix.js | render-blocking-resources": {
    "message": "Kun [lisäät kolmannen osapuolen koodin](https://support.wix.com/en/article/site-performance-using-third-party-code-on-your-site) `Custom Code`-välilehdelle sivuston hallintapaneelissa, varmista, että se on lykätty tai ladattu koodinpätkän loppuun. Jos mahdollista, upota markkinointityökalut sivustollesi Wixin [integrointien](https://support.wix.com/en/article/about-marketing-integrations) avulla. "
  },
  "node_modules/lighthouse-stack-packs/packs/wix.js | server-response-time": {
    "message": "Wix käyttää CDN:iä ja välimuistiin tallentamista, jotta useimmat kävijät näkevät vastaukset mahdollisimman nopeasti. Harkitse [välimuistin käyttöönottoa manuaalisesti](https://support.wix.com/en/article/site-performance-caching-pages-to-optimize-loading-speed) sivustollasi, etenkin jos käytät tätä: `Velo`."
  },
  "node_modules/lighthouse-stack-packs/packs/wix.js | unused-javascript": {
    "message": "Tarkista kaikki kolmannen osapuolen koodit, jotka olet lisännyt `Custom Code`-välilehdelle sivuston hallintapaneelissa, ja säilytä vain palvelut, jotka ovat välttämättömiä sivuston kannalta. [Lue lisää](https://support.wix.com/en/article/site-performance-removing-unused-javascript)."
  },
  "node_modules/lighthouse-stack-packs/packs/wordpress.js | efficient-animated-content": {
    "message": "GIF kannattaa ehkä ladata palveluun, jonka avulla se voidaan upottaa HTML5-videona."
  },
  "node_modules/lighthouse-stack-packs/packs/wordpress.js | modern-image-formats": {
    "message": "Suosittelemme käyttämään [Performance Lab](https://wordpress.org/plugins/performance-lab/) ‐liitännäistä muuntaaksesi lataamasi JPEG-kuvat automaattisesti WebP-muotoon aina kun mahdollista."
  },
  "node_modules/lighthouse-stack-packs/packs/wordpress.js | offscreen-images": {
    "message": "Asenna [WordPressin lazy load ‑laajennus](https://wordpress.org/plugins/search/lazy+load/), joka lykkää näytöllä näkymättömien kuvien lataamista, tai vaihda teemaan, joka tarjoaa tämän ominaisuuden. Harkitse myös [AMP-laajennuksen](https://wordpress.org/plugins/amp/) käyttöä."
  },
  "node_modules/lighthouse-stack-packs/packs/wordpress.js | render-blocking-resources": {
    "message": "Monet WordPress-laajennukset voivat [tuoda tärkeää materiaalia sivun sisälle](https://wordpress.org/plugins/search/critical+css/) tai [lykätä vähemmän tärkeiden resurssien lataamista](https://wordpress.org/plugins/search/defer+css+javascript/). Huomaa, että näiden laajennusten tuomat optimoinnit voivat rikkoa teeman tai laajennusten toimintoja, joten sinun on todennäköisesti muutettava koodia."
  },
  "node_modules/lighthouse-stack-packs/packs/wordpress.js | server-response-time": {
    "message": "Valitse kevyt teema (mieluiten lohkoteema) ja ota käyttöön koko sivun välimuisti tai staattinen sivustoratkaisu. Poista tarpeettomat laajennukset käytöstä, jotta palvelimen kustannukset minimoituvat. Harkitse päivittämistä hallinnoituun tai omistettuun palveluun."
  },
  "node_modules/lighthouse-stack-packs/packs/wordpress.js | total-byte-weight": {
    "message": "Sinun kannattaa ehkä näyttää postausluettelossa katkelmia (esim. more-tagin avulla), näyttää yhdellä sivulla vähemmän postauksia, jakaa pitkät postaukset usealle sivulle tai käyttää kommenttien lazy load ‑laajennusta."
  },
  "node_modules/lighthouse-stack-packs/packs/wordpress.js | unminified-css": {
    "message": "Monet [WordPress-laajennukset](https://wordpress.org/plugins/search/minify+css/) voivat nopeuttaa sivustosi toimintaa yhdistämällä, kutistamalla ja pakkaamalla tyylejä. Tämä kutistaminen voidaan mahdollisesti tehdä jo aiemmin kehitysvaiheen prosessilla."
  },
  "node_modules/lighthouse-stack-packs/packs/wordpress.js | unminified-javascript": {
    "message": "Monet [WordPress-laajennukset](https://wordpress.org/plugins/search/minify+javascript/) voivat nopeuttaa sivustosi toimintaa yhdistämällä, kutistamalla ja pakkaamalla skriptejä. Tämä kutistaminen voidaan mahdollisesti tehdä jo aiemmin kehitysvaiheen prosessilla."
  },
  "node_modules/lighthouse-stack-packs/packs/wordpress.js | unused-css-rules": {
    "message": "Sinun kannattaa ehkä poistaa tai vaihtaa toisiin [WordPress-laajennuksia](https://wordpress.org/plugins/), jotka lataavat sivulla käyttämätöntä CSS:ää. Etsi tarpeetonta CSS:ää lisääviä laajennuksia [tutkimalla koodin testikattavuutta](https://developer.chrome.com/docs/devtools/coverage/) Chromen DevToolsissa. Löydät syynä olevan teeman tai laajennuksen tyylitiedoston URL-osoitteen avulla. Etsi laajennuksia, joilla on monia tyylitiedostoja luettelossa ja paljon punaista koodin testikattavuudessa. Laajennuksen pitäisi lisätä tyylitiedosto jonoon vain, jos sitä todella käytetään sivulla."
  },
  "node_modules/lighthouse-stack-packs/packs/wordpress.js | unused-javascript": {
    "message": "Sinun kannattaa ehkä poistaa tai vaihtaa toisiin [WordPress-laajennuksia](https://wordpress.org/plugins/), jotka lataavat sivulla käyttämätöntä JavaScriptiä. Etsi tarpeetonta JS:ää lisääviä laajennuksia [tutkimalla koodin testikattavuutta](https://developer.chrome.com/docs/devtools/coverage/) Chromen DevToolsissa. Löydät syynä olevan teeman tai laajennuksen skriptin URL-osoitteen avulla. Etsi laajennuksia, joilla on monia skriptejä luettelossa ja paljon punaista koodin testikattavuudessa. Laajennuksen pitäisi lisätä skripti jonoon vain, jos sitä todella käytetään sivulla."
  },
  "node_modules/lighthouse-stack-packs/packs/wordpress.js | uses-long-cache-ttl": {
    "message": "Lue lisää [selaimen välimuistin käytöstä WordPressissä](https://wordpress.org/support/article/optimization/#browser-caching)."
  },
  "node_modules/lighthouse-stack-packs/packs/wordpress.js | uses-optimized-images": {
    "message": "Harkitse [WordPressin kuvaoptimointilaajennusta](https://wordpress.org/plugins/search/optimize+images/), joka pakkaa kuvat mutta säilyttää niiden laadun."
  },
  "node_modules/lighthouse-stack-packs/packs/wordpress.js | uses-responsive-images": {
    "message": "Lataa kuvat suoraan [mediakirjastosta](https://wordpress.org/support/article/media-library-screen/), jolloin oikeat kuvakoot ovat varmasti saatavilla, ja lisää ne kuvakirjastosta tai varmista oikeiden kuvakokojen käyttö kuva-widgetillä (myös responsiivisuuden raja-arvojen kohdalla). Älä käytä kuvia, joiden koko on `Full Size`, paitsi jos sivun koko on riittävä. [Lue lisää](https://wordpress.org/support/article/inserting-images-into-posts-and-pages/)."
  },
  "node_modules/lighthouse-stack-packs/packs/wordpress.js | uses-text-compression": {
    "message": "Voit ottaa tekstin pakkaamisen käyttöön palvelimen määrityksistä."
  },
  "node_modules/lighthouse-stack-packs/packs/wp-rocket.js | modern-image-formats": {
    "message": "Ota WP Rocketin kuvan optimointivälilehden \"Imagify\" käyttöön, niin voit muuntaa kuvat WebP-muotoon."
  },
  "node_modules/lighthouse-stack-packs/packs/wp-rocket.js | offscreen-images": {
    "message": "Korjaa suositus ottamalla [LazyLoad](https://docs.wp-rocket.me/article/1141-lazyload-for-images) käyttöön WP Rocketissa. Tämä ominaisuus viivästyttää kuvien lataamista, kunnes kävijä vierittää sivua alaspäin ja kuvien näkeminen on tarpeellista."
  },
  "node_modules/lighthouse-stack-packs/packs/wp-rocket.js | render-blocking-resources": {
    "message": "Hyödynnä suositusta ottamalla [poista käyttämätön CSS](https://docs.wp-rocket.me/article/1529-remove-unused-css) ja [lykkää JavaScriptin lataamista](https://docs.wp-rocket.me/article/1265-load-javascript-deferred) käyttöön WP Rocketissa. Nämä ominaisuudet optimoivat CSS- ja JavaScript-tiedostot siten, että ne eivät estä sivun renderöintiä."
  },
  "node_modules/lighthouse-stack-packs/packs/wp-rocket.js | unminified-css": {
    "message": "Korjaa ongelma ottamalla [pienennä CSS-tiedostot](https://docs.wp-rocket.me/article/1350-css-minify-combine) käyttöön WP Rocketissa. Kaikki sivustosi CSS-tiedostojen tilat ja kommentit poistetaan, jotta tiedoston koko pienenee ja se latautuu nopeammin."
  },
  "node_modules/lighthouse-stack-packs/packs/wp-rocket.js | unminified-javascript": {
    "message": "Korjaa ongelma ottamalla [pienennä JavaScript-tiedostot](https://docs.wp-rocket.me/article/1351-javascript-minify-combine) käyttöön WP Rocketissa. Tyhjät tilat ja kommentit poistetaan JavaScript-tiedostoista, jotta niiden koko pienenee ja ne latautuvat nopeammin."
  },
  "node_modules/lighthouse-stack-packs/packs/wp-rocket.js | unused-css-rules": {
    "message": "Korjaa ongelma ottamalla [poista käyttämätön CSS](https://docs.wp-rocket.me/article/1529-remove-unused-css) käyttöön WP Rocketissa. Tämä pienentää sivun kokoa poistamalla kaikki käyttämättömät CSS:t ja tyyliarkit ja säilyttää kunkin sivun käyttämän CSS:n."
  },
  "node_modules/lighthouse-stack-packs/packs/wp-rocket.js | unused-javascript": {
    "message": "Korjaa ongelma ottamalla [JavaScriptin suorittamisen viive](https://docs.wp-rocket.me/article/1349-delay-javascript-execution) käyttöön WP Rocketissa. Tämä parantaa sivun lataamista viivästyttämällä skriptien suorittamista siihen asti, että käyttäjä tekee jotain. Jos sivustolla on iframe-kehyksiä, voit käyttää myös WP Rocketin [LazyLoadia iframeissa ja videoissa](https://docs.wp-rocket.me/article/1674-lazyload-for-iframes-and-videos) ja [korvata YouTube-iframen esikatselukuvalla](https://docs.wp-rocket.me/article/1488-replace-youtube-iframe-with-preview-image)."
  },
  "node_modules/lighthouse-stack-packs/packs/wp-rocket.js | uses-optimized-images": {
    "message": "Ota WP Rocketin kuvan optimointivälilehden \"Imagify\" käyttöön ja pakkaa kuvat suorittamalla joukko-optimointi."
  },
  "node_modules/lighthouse-stack-packs/packs/wp-rocket.js | uses-rel-preconnect": {
    "message": "Käytä WP Rocketissa [esihaettuja DNS-pyyntöjä](https://docs.wp-rocket.me/article/1302-prefetch-dns-requests), niin voit lisätä dns-prefetch-resurssivihjeen ja nopeuttaa ulkoisten verkkotunnusten yhteyttä. WP Rocket lisää automaattisesti preconnect-resurssivihjeen [Google Fonts ‐verkkotunnukseen](https://docs.wp-rocket.me/article/1312-optimize-google-fonts) ja mahdollisiin CNAME-hakuihin, jotka on lisätty [ota CDN käyttöön](https://docs.wp-rocket.me/article/42-using-wp-rocket-with-a-cdn) ‐ominaisuuden avulla."
  },
  "node_modules/lighthouse-stack-packs/packs/wp-rocket.js | uses-rel-preload": {
    "message": "Jotta voit korjata ongelman fonttien osalta, ota WP Rocketissa käyttöön [Poista käyttämätön CSS](https://docs.wp-rocket.me/article/1529-remove-unused-css). Sivustosi kriittiset fontit esiladataan tärkeinä."
  },
  "report/renderer/report-utils.js | calculatorLink": {
    "message": "Katso laskin."
  },
  "report/renderer/report-utils.js | collapseView": {
    "message": "Tiivistä näkymä"
  },
  "report/renderer/report-utils.js | crcInitialNavigation": {
    "message": "Ensimmäinen navigointi"
  },
  "report/renderer/report-utils.js | crcLongestDurationLabel": {
    "message": "Kriittisen polun enimmäisviive:"
  },
  "report/renderer/report-utils.js | dropdownCopyJSON": {
    "message": "Kopioi JSON"
  },
  "report/renderer/report-utils.js | dropdownDarkTheme": {
    "message": "Tumma teema päälle/pois"
  },
  "report/renderer/report-utils.js | dropdownPrintExpanded": {
    "message": "Laajennettu tulostus"
  },
  "report/renderer/report-utils.js | dropdownPrintSummary": {
    "message": "Tulosta yhteenveto"
  },
  "report/renderer/report-utils.js | dropdownSaveGist": {
    "message": "Tallenna Gistinä"
  },
  "report/renderer/report-utils.js | dropdownSaveHTML": {
    "message": "Tallenna HTML-muodossa"
  },
  "report/renderer/report-utils.js | dropdownSaveJSON": {
    "message": "Tallenna JSON-tiedostona"
  },
  "report/renderer/report-utils.js | dropdownViewUnthrottledTrace": {
    "message": "Näytä rajaton jälki"
  },
  "report/renderer/report-utils.js | dropdownViewer": {
    "message": "Avaa katseluohjelmassa"
  },
  "report/renderer/report-utils.js | errorLabel": {
    "message": "Virhe!"
  },
  "report/renderer/report-utils.js | errorMissingAuditInfo": {
    "message": "Raporttivirhe: ei tarkastustietoja"
  },
  "report/renderer/report-utils.js | expandView": {
    "message": "Laajenna näkymää"
  },
  "report/renderer/report-utils.js | firstPartyChipLabel": {
    "message": "Ensimmäinen osapuoli"
  },
  "report/renderer/report-utils.js | footerIssue": {
    "message": "Ilmoita ongelmasta"
  },
  "report/renderer/report-utils.js | hide": {
    "message": "Piilota"
  },
  "report/renderer/report-utils.js | labDataTitle": {
    "message": "Laboratoriodata"
  },
  "report/renderer/report-utils.js | lsPerformanceCategoryDescription": {
    "message": "[Lighthouse](https://developers.google.com/web/tools/lighthouse/) analysoi nykyisen sivun mobiiliverkon emulaation avulla. Arvot ovat arvioita ja voivat vaihdella."
  },
  "report/renderer/report-utils.js | manualAuditsGroupTitle": {
    "message": "Lisää manuaalisesti tarkistettavia kohteita"
  },
  "report/renderer/report-utils.js | notApplicableAuditsGroupTitle": {
    "message": "Ei sovellu"
  },
  "report/renderer/report-utils.js | openInANewTabTooltip": {
    "message": "Avaa uudella välilehdellä"
  },
  "report/renderer/report-utils.js | opportunityResourceColumnLabel": {
    "message": "Suositus"
  },
  "report/renderer/report-utils.js | opportunitySavingsColumnLabel": {
    "message": "Arvioitu säästö"
  },
  "report/renderer/report-utils.js | passedAuditsGroupTitle": {
    "message": "Hyväksytyt tarkastukset"
  },
  "report/renderer/report-utils.js | runtimeAnalysisWindow": {
    "message": "Ensimmäinen sivun lataus"
  },
  "report/renderer/report-utils.js | runtimeAnalysisWindowSnapshot": {
    "message": "Tietyn ajankohdan katsaus"
  },
  "report/renderer/report-utils.js | runtimeAnalysisWindowTimespan": {
    "message": "Käyttäjien interaktioiden aikajana"
  },
  "report/renderer/report-utils.js | runtimeCustom": {
    "message": "Omat rajoitukset"
  },
  "report/renderer/report-utils.js | runtimeDesktopEmulation": {
    "message": "Emuloitu työpöytä"
  },
  "report/renderer/report-utils.js | runtimeMobileEmulation": {
    "message": "Emuloitu Moto G Power"
  },
  "report/renderer/report-utils.js | runtimeNoEmulation": {
    "message": "Ei emulointia"
  },
  "report/renderer/report-utils.js | runtimeSettingsAxeVersion": {
    "message": "Axe-versio"
  },
  "report/renderer/report-utils.js | runtimeSettingsBenchmark": {
    "message": "Rajaton suorittimen/muistin teho"
  },
  "report/renderer/report-utils.js | runtimeSettingsCPUThrottling": {
    "message": "Suorittimen rajoittaminen"
  },
  "report/renderer/report-utils.js | runtimeSettingsDevice": {
    "message": "Laite"
  },
  "report/renderer/report-utils.js | runtimeSettingsNetworkThrottling": {
    "message": "Verkon hidastaminen"
  },
  "report/renderer/report-utils.js | runtimeSettingsScreenEmulation": {
    "message": "Näytön emulointi"
  },
  "report/renderer/report-utils.js | runtimeSettingsUANetwork": {
    "message": "Käyttäjäagentti (verkko)"
  },
  "report/renderer/report-utils.js | runtimeSingleLoad": {
    "message": "Yhden sivun istunto"
  },
  "report/renderer/report-utils.js | runtimeSingleLoadTooltip": {
    "message": "Tämä data on peräisin yhden sivun istunnosta, toisin kuin kenttädata, joka on yhteenveto useista käyttökerroista."
  },
  "report/renderer/report-utils.js | runtimeSlow4g": {
    "message": "Hidasta 4G-yhteyttä simuloiva rajoitus"
  },
  "report/renderer/report-utils.js | runtimeUnknown": {
    "message": "Ei tietoa"
  },
  "report/renderer/report-utils.js | show": {
    "message": "Näytä"
  },
  "report/renderer/report-utils.js | showRelevantAudits": {
    "message": "Näytä tähän liittyvät tarkastukset:"
  },
  "report/renderer/report-utils.js | snippetCollapseButtonLabel": {
    "message": "Tiivistä koodinpätkä"
  },
  "report/renderer/report-utils.js | snippetExpandButtonLabel": {
    "message": "Laajenna koodinpätkä"
  },
  "report/renderer/report-utils.js | thirdPartyResourcesLabel": {
    "message": "Näytä kolmannen osapuolen resurssit"
  },
  "report/renderer/report-utils.js | throttlingProvided": {
    "message": "Ympäristön tarjoama"
  },
  "report/renderer/report-utils.js | toplevelWarningsMessage": {
    "message": "Lighthousen suorituksessa havaittiin ongelmia:"
  },
  "report/renderer/report-utils.js | unattributable": {
    "message": "Ei määritettävissä"
  },
  "report/renderer/report-utils.js | unscoredLabel": {
    "message": "Ei laskettu mukaan"
  },
  "report/renderer/report-utils.js | unscoredTitle": {
    "message": "Tämä tarkastus ei vaikuta kategorian kokonaispisteisiin."
  },
  "report/renderer/report-utils.js | varianceDisclaimer": {
    "message": "Arvot ovat arvioita ja voivat vaihdella. [Tehokkuusprosentti lasketaan](https://developer.chrome.com/docs/lighthouse/performance/performance-scoring/) suoraan näistä mittareista."
  },
  "report/renderer/report-utils.js | viewTraceLabel": {
    "message": "Näytä jälki"
  },
  "report/renderer/report-utils.js | viewTreemapLabel": {
    "message": "Katso Treemap"
  },
  "report/renderer/report-utils.js | warningAuditsGroupTitle": {
    "message": "Läpäisi tarkastukset, mutta sai varoituksia"
  },
  "report/renderer/report-utils.js | warningHeader": {
    "message": "Varoitukset: "
  },
  "treemap/app/src/util.js | allLabel": {
    "message": "Kaikki"
  },
  "treemap/app/src/util.js | allScriptsDropdownLabel": {
    "message": "Kaikki skriptit"
  },
  "treemap/app/src/util.js | coverageColumnName": {
    "message": "Kattavuus"
  },
  "treemap/app/src/util.js | duplicateModulesLabel": {
    "message": "Moduulien kaksoiskappaleet"
  },
  "treemap/app/src/util.js | duplicatedBytesLabel": {
    "message": "Päällekkäiset tavut"
  },
  "treemap/app/src/util.js | resourceBytesLabel": {
    "message": "Tiedoston tavut"
  },
  "treemap/app/src/util.js | tableColumnName": {
    "message": "Nimi"
  },
  "treemap/app/src/util.js | toggleTableButtonLabel": {
    "message": "Näytä/piilota taulukko"
  },
  "treemap/app/src/util.js | transferBytesLabel": {
    "message": "Siirrettävät tavut"
  },
  "treemap/app/src/util.js | unusedBytesLabel": {
    "message": "Käyttämättömät tavut"
  }
}
