From 4f257a1cfcd2b7f45eb98e955bb0f69656d5bcec Mon Sep 17 00:00:00 2001
From: Ainar Garipov <a.garipov@adguard.com>
Date: Mon, 15 Nov 2021 14:35:46 +0300
Subject: [PATCH] Pull request: client: add fi, uk locales

Merge in DNS/adguard-home from add-fi-uk to master

Squashed commit of the following:

commit eb293912036ddb4f209827f3e3f87e849c402c6c
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date:   Mon Nov 15 14:26:35 2021 +0300

    client: fix locale selection

commit 077b7ede31dd6ec0a154d38b32d40a3dd39ba383
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date:   Mon Nov 15 14:10:55 2021 +0300

    client: add fi, uk locales
---
 .twosky.json                 |   2 +
 CHANGELOG.md                 |   1 +
 client/src/__locales/fi.json | 628 +++++++++++++++++++++++++++++++++++
 client/src/__locales/uk.json | 628 +++++++++++++++++++++++++++++++++++
 client/src/i18n.js           | 140 +++-----
 internal/home/i18n.go        |   4 +-
 6 files changed, 1300 insertions(+), 103 deletions(-)
 create mode 100644 client/src/__locales/fi.json
 create mode 100644 client/src/__locales/uk.json

diff --git a/.twosky.json b/.twosky.json
index db2e0265..244df6a9 100644
--- a/.twosky.json
+++ b/.twosky.json
@@ -12,6 +12,7 @@
       "en": "English",
       "es": "Español",
       "fa": "فارسی",
+      "fi": "Suomi",
       "fr": "Français",
       "hr": "Hrvatski",
       "hu": "Magyar",
@@ -33,6 +34,7 @@
       "sv": "Svenska",
       "th": "ภาษาไทย",
       "tr": "Türkçe",
+      "uk": "Українська",
       "vi": "Tiếng Việt",
       "zh-cn": "简体中文",
       "zh-hk": "繁體中文(香港)",
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b090aad5..eed5f0f1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -15,6 +15,7 @@ and this project adheres to
 
 ### Added
 
+- Finnish and Ukrainian translations.
 - Setting the timeout for IP address pinging in the "Fastest IP address" mode
   through the new `fastest_timeout` field in the configuration file ([#1992]).
 - Static IP address detection on FreeBSD ([#3289]).
diff --git a/client/src/__locales/fi.json b/client/src/__locales/fi.json
new file mode 100644
index 00000000..d6f9ce5b
--- /dev/null
+++ b/client/src/__locales/fi.json
@@ -0,0 +1,628 @@
+{
+    "client_settings": "Päätelaiteasetukset",
+    "example_upstream_reserved": "voit määrittää DNS-ylävirran <0>tietyille verkkotunnuksille</0>",
+    "example_upstream_comment": "voit määrittää kommentin",
+    "upstream_parallel": "Käytä rinnakkaisia pyyntöjä ja nopeuta selvitystä käyttämällä kaikkia ylävirran palvelimia samanaikaisesti.",
+    "parallel_requests": "Rinnakkaiset pyynnöt",
+    "load_balancing": "Kuormantasaus",
+    "load_balancing_desc": "Lähetä pyyntö yhdelle ylävirran palvelimelle kerrallaan. AdGuard Home pyrkii valitsemaan nopeimman palvelimen painotetun satunnaisalgoritminsa avulla.",
+    "bootstrap_dns": "Bootstrap DNS-palvelimet",
+    "bootstrap_dns_desc": "Bootstrap DNS-palvelimia käytetään ylävirroiksi määritettyjen DoH/DoT-resolvereiden IP-osoitteiden selvitykseen.",
+    "local_ptr_title": "Yksityiset käänteiset DNS-palvelimet",
+    "local_ptr_desc": "DNS-palvelimet, joita AdGuard Home käyttää paikallisille PTR-pyynnöille. Näitä palvelimia käytetään yksityistä IP-osoitetta käyttävien päätelaitteiden osoitteiden, kuten \"192.168.12.34\", selvitykseen käänteisen DNS:n avulla. Jos ei käytössä, käyttää AdGuard Home käyttöjärjestelmän oletusarvoisia DNS-resolvereita, poislukien AdGuard Homen omat osoitteet.",
+    "local_ptr_default_resolver": "Oletusarvoisesti AdGuard Home käyttää seuraavia käänteisiä DNS-resolvereita: {{ip}}.",
+    "local_ptr_no_default_resolver": "AdGuard Home ei voinut määrittää tälle järjestelmälle sopivaa yksityistä käänteistä DNS-resolveria.",
+    "local_ptr_placeholder": "Syötä yksi palvelimen osoite per rivi",
+    "resolve_clients_title": "Käytä päätelaitteiden IP-osoitteille käänteistä selvitystä",
+    "resolve_clients_desc": "Selvitä päätelaitteiden IP-osoitteiden isäntänimet käänteisesti lähettämällä PTR-kyselyt sopiville resolvereille (yksityiset DNS-palvelimet paikallisille päätelaitteille, lähtevät palvelimet päätelaitteille, joilla on julkiset IP-osoitteet).",
+    "use_private_ptr_resolvers_title": "Käytä yksityisiä käänteisiä DNS-resolvereita",
+    "use_private_ptr_resolvers_desc": "Suorita käänteiset DNS-selvitykset paikallisesti tarjotuille osoitteille käyttäen näitä ylävirran palvelimia. Jos ei käytössä, vastaa AdGuard Home kaikkiin sen tyyppisiin PTR-pyyntöihin NXDOMAIN-arvolla, pois lukien DHCP, /etc/hosts, yms. -tiedoista tunnistettut päätelaitteet.",
+    "check_dhcp_servers": "Etsi DHCP-palvelimia",
+    "save_config": "Tallenna asetukset",
+    "enabled_dhcp": "DHCP-palvelin otettiin käyttöön",
+    "disabled_dhcp": "DHCP-palvelin poistettiin käytöstä",
+    "unavailable_dhcp": "DHCP ei ole käytettävissä",
+    "unavailable_dhcp_desc": "AdGuard Home ei voi suorittaa DHCP-palvelinta käyttöjärjestelmässäsi",
+    "dhcp_title": "DHCP-palvelin (kokeellinen!)",
+    "dhcp_description": "Jos reitittimessäsi ei ole DHCP-asetuksia, voit käyttää AdGuard Homen omaa sisäänrakennettua DHCP-palvelinta.",
+    "dhcp_enable": "Ota DHCP-palvelin käyttöön",
+    "dhcp_disable": "Poista DHCP-palvelin käytöstä",
+    "dhcp_not_found": "On turvallista ottaa sisäänrakennettu DHCP-palvelin käyttöön, koska AdGuard Home ei havainnut verkossa muita aktiivisia DHCP-palvelimia. Suosittelemme, että varmistat tämän vielä itse, koska automaattinen tunnistus ei ole 100% varma.",
+    "dhcp_found": "Verkossa havaittiin aktiivinen DHCP-palvelin. Sisäänrakennetun DHCP-palvelimen käyttöönotto ei ole turvallista.",
+    "dhcp_leases": "DHCP-lainat",
+    "dhcp_static_leases": "Kiinteät DHCP-lainat",
+    "dhcp_leases_not_found": "DHCP-lainoja ei löytynyt",
+    "dhcp_config_saved": "DHCP-asetukset tallennettiin",
+    "dhcp_ipv4_settings": "DHCP:n IPv4-asetukset",
+    "dhcp_ipv6_settings": "DHCP:n IPv6-asetukset",
+    "form_error_required": "Vaaditaan",
+    "form_error_ip4_format": "Virheellinen IPv4-osoite",
+    "form_error_ip4_range_start_format": "Virheellinen IPv4-osoitealueen aloitusosoite",
+    "form_error_ip4_range_end_format": "Virheellinen IPv4-osoitealueen päätösosoite",
+    "form_error_ip4_gateway_format": "Virheellinen yhdyskäytävän IPv4-osoite",
+    "form_error_ip6_format": "Virheellinen IPv6-osoite",
+    "form_error_ip_format": "Virheellinen IP-osoite",
+    "form_error_mac_format": "Virheellinen MAC-osoite",
+    "form_error_client_id_format": "Virheellinen päätelaitteen ID",
+    "form_error_server_name": "Virheellinen palvelimen nimi",
+    "form_error_subnet": "Aliverkko \"{{cidr}}\" ei sisällä IP-osoitetta \"{{ip}}\"",
+    "form_error_positive": "Oltava suurempi kuin 0",
+    "form_error_negative": "Oltava yhtä suuri tai suurempi kuin 0",
+    "out_of_range_error": "Oltava alueen \"{{start}}\"-\"{{end}}\" ulkopuolella",
+    "lower_range_start_error": "Oltava alueen aloitusarvoa pienempi",
+    "greater_range_start_error": "Oltava alueen aloitusarvoa suurempi",
+    "greater_range_end_error": "Oltava alueen päätösarvoa pienempi",
+    "subnet_error": "Osoitteiden tulee olla yhdessä aliverkossa",
+    "gateway_or_subnet_invalid": "Virheellinen aliverkon peite",
+    "dhcp_form_gateway_input": "Yhdyskäytävän IP-osoite",
+    "dhcp_form_subnet_input": "Aliverkon peite",
+    "dhcp_form_range_title": "IP-osoitealue",
+    "dhcp_form_range_start": "Alueen aloitus",
+    "dhcp_form_range_end": "Alueen päätös",
+    "dhcp_form_lease_title": "DHCP-lainan kesto (sekunteina)",
+    "dhcp_form_lease_input": "Lainan kesto",
+    "dhcp_interface_select": "Valitse DHCP:lle käytettävä verkkosovitin",
+    "dhcp_hardware_address": "Laiteosoite (MAC)",
+    "dhcp_ip_addresses": "IP-osoitteet",
+    "ip": "IP",
+    "dhcp_table_hostname": "Isäntänimi",
+    "dhcp_table_expires": "Erääntyy",
+    "dhcp_warning": "Jos tahdot kuitenkin ottaa DHCP-palvelimen käyttöön, varmista, ettei verkossasi ole muita aktiivisia DHCP-palvelimia, koska tämä voi rikkoa Internet-yhteyden muilta verkon laitteilta!",
+    "dhcp_error": "AdGuard Home ei voinut tunnistaa, onko verkossa toista aktiivista DHCP-palvelinta.",
+    "dhcp_static_ip_error": "Jotta DHCP-palvelinta voidaan käyttää, on määritettävä kiinteä IP-osoite. AdGuard Home ei voinut tunnistaa, onko tälle verkkosovittimelle määritetty IP-osoite kiinteä. Määritä kiinteä IP-osoite itse.",
+    "dhcp_dynamic_ip_found": "Järjestelmäsi käyttää verkkosovittimelle <0>{{interfaceName}}</0> dynaamista IP-osoitetta. Jotta voit käyttää DHCP-palvelinta, on sovittimelle määritettävä kiinteä IP-osoite. Nykyinen IP-osoitteesi on <0>{{ipAddress}}</0>. Tämä osoite määritetään automaattisesti kiinteäksi, jos painat \"Ota DHCP-palvelin käyttöön\" -painiketta.",
+    "dhcp_lease_added": "Kiinteä laina \"{{key}}\" on lisätty",
+    "dhcp_lease_deleted": "Kiinteä laina \"{{key}}\" poistettiin",
+    "dhcp_new_static_lease": "Uusi kiinteä laina",
+    "dhcp_static_leases_not_found": "Kiinteitä DHCP-lainoja ei löytynyt",
+    "dhcp_add_static_lease": "Lisää kiinteä laina",
+    "dhcp_reset_leases": "Tyhjennä kaikki lainat",
+    "dhcp_reset_leases_confirm": "Haluatko varmasti tyhjentää kaikki lainat?",
+    "dhcp_reset_leases_success": "DHCP-lainat tyhjennettiin",
+    "dhcp_reset": "Haluatko varmasti palauttaa DHCP-asetukset?",
+    "country": "Maa",
+    "city": "Kaupunki",
+    "delete_confirm": "Haluatko varmasti poistaa kohteen \"{{key}}\"?",
+    "form_enter_hostname": "Syötä isäntänimi",
+    "error_details": "Virheen tiedot",
+    "response_details": "Vastauksen tiedot",
+    "request_details": "Pyynnön tiedot",
+    "client_details": "Päätelaitteen tiedot",
+    "details": "Tiedot",
+    "back": "Takaisin",
+    "dashboard": "Tila",
+    "settings": "Asetukset",
+    "filters": "Suodattimet",
+    "filter": "Suodatin",
+    "query_log": "Pyyntöhistoria",
+    "compact": "Tiivis",
+    "nothing_found": "Ei tuloksia",
+    "faq": "UKK",
+    "version": "Versio",
+    "address": "Osoite",
+    "protocol": "Protokolla",
+    "on": "Käytössä",
+    "off": "Ei käytössä",
+    "copyright": "Tekijänoikeus",
+    "homepage": "Kotisivu",
+    "report_an_issue": "Ilmoita ongelmasta",
+    "privacy_policy": "Tietosuojakäytäntö",
+    "enable_protection": "Ota suojaus käyttöön",
+    "enabled_protection": "Suojaus otettiin käyttöön",
+    "disable_protection": "Poista suojaus käytöstä",
+    "disabled_protection": "Suojaus poistettiin käytöstä",
+    "refresh_statics": "Päivitä tilastot",
+    "dns_query": "DNS-pyyntöä",
+    "blocked_by": "<0>Suodatinten estämää</0>",
+    "stats_malware_phishing": "Estetyt haittaohjelmat/tietojenkalastelut",
+    "stats_adult": "Estetyt aikuisille tarkoitetut sivustot",
+    "stats_query_domain": "Kysytyimmät verkkotunnukset",
+    "for_last_24_hours": "viimeisten 24 tunnin ajalta",
+    "for_last_days": "viimeisen {{count}} päivän ajalta",
+    "for_last_days_plural": "viimeisten {{count}} päivän ajalta",
+    "stats_disabled": "Tilastointi ei ole käytössä. Voit ottaa sen käyttöön <0>asetuksista</0>.",
+    "stats_disabled_short": "Tilastointi ei ole käytössä",
+    "no_domains_found": "Verkkotunnuksia ei löytynyt",
+    "requests_count": "Pyyntöjen määrä",
+    "top_blocked_domains": "Estetyimmät verkkotunnukset",
+    "top_clients": "Käytetyimmät päätelaitteet",
+    "no_clients_found": "Päätelaitteita ei löytynyt",
+    "general_statistics": "Yleiset tilastot",
+    "number_of_dns_query_days": "Käsiteltyjen DNS-pyyntöjen määrä viimeisen {{count}} päivän ajalta",
+    "number_of_dns_query_days_plural": "Käsiteltyjen DNS-pyyntöjen määrä viimeisten {{count}} päivän ajalta",
+    "number_of_dns_query_24_hours": "Käsiteltyjen DNS-pyyntöjen määrä viimeisten 24 tunnin ajalta",
+    "number_of_dns_query_blocked_24_hours": "Mainoseston suodattimien ja hosts-estolistojen estämien DNS-pyyntöjen määrä",
+    "number_of_dns_query_blocked_24_hours_by_sec": "AdGuardin Turvallinen selaus -moduulin estämien DNS-pyyntöjen määrä",
+    "number_of_dns_query_blocked_24_hours_adult": "Estettyjen aikuisille tarkoitettujen sivustojen määrä",
+    "enforced_save_search": "Turvallinen haku pakotettiin",
+    "number_of_dns_query_to_safe_search": "DNS-pyyntöjen määrä, joille turvallinen haku pakotettiin käyttöön",
+    "average_processing_time": "Keskimääräinen käsittelyaika",
+    "average_processing_time_hint": "Keskimääräinen DNS-pyynnön käsittelyyn kulutettu aika millisekunteina",
+    "block_domain_use_filters_and_hosts": "Estä verkkotunnuksia suodattimilla ja hosts-tiedostoilla",
+    "filters_block_toggle_hint": "Voit määrittää estosääntöjä <a>suodatinasetuksissa</a>.",
+    "use_adguard_browsing_sec": "Käytä AdGuardin turvallisen selauksen palvelua",
+    "use_adguard_browsing_sec_hint": "AdGuard Home tarkistaa onko verkkotunnus turvallisen selauksen verkkopalvelun estämä. Se käyttää tarkastukseen yksityisyyspainotteista rajapintaa: palvelimelle lähetetään vain pieni osa verkkotunnuksen SHA256-hajautusarvosta.",
+    "use_adguard_parental": "Käytä AdGuardin lapsilukko-palvelua",
+    "use_adguard_parental_hint": "AdGuard Home tarkistaa, sisältääkö verkkotunnus aikuisille tarkoitettua sisältöä. Se käyttää samaa yksityisyyspainotteista rajapintaa, kuin turvallisen selauksen palvelu.",
+    "enforce_safe_search": "Pakota turvallinen haku",
+    "enforce_save_search_hint": "AdGuard Home voi pakottaa turvallisen haun käyttöön seuraavissa hakukoneissa: Google, YouTube, Bing, DuckDuckGo, Yandex, Pixabay.",
+    "no_servers_specified": "Palvelimia ei ole määritetty",
+    "general_settings": "Yleiset asetukset",
+    "dns_settings": "DNS-asetukset",
+    "dns_blocklists": "DNS-estolistat",
+    "dns_allowlists": "DNS-sallittujen listat",
+    "dns_blocklists_desc": "AdGuard Home estää estolistalla olevat verkkotunnukset.",
+    "dns_allowlists_desc": "DNS-sallittujen listalla olevat verkkotunnukset sallitaan myös silloin, jos ne ovat jollain muulla estolistalla.",
+    "custom_filtering_rules": "Omat suodatussäännöt",
+    "encryption_settings": "Salausasetukset",
+    "dhcp_settings": "DHCP-asetukset",
+    "upstream_dns": "Ylävirran DNS-palvelimet",
+    "upstream_dns_help": "Syötä yksi palvelinosoite per rivi. <a>Lue lisää</a> ylävirran DNS-palvelinten määrityksestä.",
+    "upstream_dns_configured_in_file": "Määritetty tiedostossa {{path}}",
+    "test_upstream_btn": "Testaa ylävirtoja",
+    "upstreams": "Ylävirrat",
+    "apply_btn": "Käytä",
+    "disabled_filtering_toast": "Suodatus poistettiin käytöstä",
+    "enabled_filtering_toast": "Suodatus otettiin käyttöön",
+    "disabled_safe_browsing_toast": "Turvallinen selaus poistettiin käytöstä",
+    "enabled_safe_browsing_toast": "Turvallinen selaus otettiin käyttöön",
+    "disabled_parental_toast": "Lapsilukko poistettiin käytöstä",
+    "enabled_parental_toast": "Lapsilukko otettiin käyttöön",
+    "disabled_safe_search_toast": "Turvallinen haku poistettiin käytöstä",
+    "enabled_save_search_toast": "Turvallinen haku otettiin käyttöön",
+    "enabled_table_header": "Käytössä",
+    "name_table_header": "Nimi",
+    "list_url_table_header": "Listan URL",
+    "rules_count_table_header": "Sääntöjä",
+    "last_time_updated_table_header": "Viimeisin päivitys",
+    "actions_table_header": "Toiminnot",
+    "request_table_header": "Pyyntö",
+    "edit_table_action": "Muokkaa",
+    "delete_table_action": "Poista",
+    "elapsed": "Kesto",
+    "filters_and_hosts_hint": "AdGuard Home ymmärtää mainoseston perussääntöjen sekä hosts-tiedostojen syntakseja.",
+    "no_blocklist_added": "Estolistoja ei ole lisätty",
+    "no_whitelist_added": "Sallittujen listoja ei ole lisätty",
+    "add_blocklist": "Lisää estolista",
+    "add_allowlist": "Lisää sallittujen lista",
+    "cancel_btn": "Peruuta",
+    "enter_name_hint": "Syötä nimi",
+    "enter_url_or_path_hint": "Syötä listan URL-osoite tai tarkka tiedostosijainti",
+    "check_updates_btn": "Tarkista päivitykset",
+    "new_blocklist": "Uusi estolista",
+    "new_allowlist": "Uusi sallittujen lista",
+    "edit_blocklist": "Muokkaa estolistaa",
+    "edit_allowlist": "Muokkaa sallittujen listaa",
+    "choose_blocklist": "Valitse estolistat",
+    "choose_allowlist": "Valitse sallittujen listat",
+    "enter_valid_blocklist": "Syötä estolistan URL-osoite.",
+    "enter_valid_allowlist": "Syötä sallittujen listan URL-osoite.",
+    "form_error_url_format": "Virheellinen URL-osoitteen muoto",
+    "form_error_url_or_path_format": "Syötä listan URL-osoite tai tarkka tiedostosijainti",
+    "custom_filter_rules": "Omat suodatussäännöt",
+    "custom_filter_rules_hint": "Syötä yksi sääntö per rivi. Voit käyttää mainoseston sääntöjen tai hosts-tiedostojen syntakseja.",
+    "examples_title": "Esimerkkejä",
+    "example_meaning_filter_block": "estä pääsy verkkotunnukseen example.org ja sen aliverkkotunnuksiin",
+    "example_meaning_filter_whitelist": "salli pääsy verkkotunnukseen example.org ja sen aliverkkotunnuksiin",
+    "example_meaning_host_block": "AdGuard Home palauttaa verkkotunnukselle example.org osoitteen 127.0.0.1 (muttei sen aliverkkotunnuksille)",
+    "example_comment": "! Tähän tulee kommentti",
+    "example_comment_meaning": "voit määrittää kommentin",
+    "example_comment_hash": "# Myös tämä on kommentti",
+    "example_regex_meaning": "estä pääsy säännöllistä lauseketta vastaaviin verkkotunnuksiin",
+    "example_upstream_regular": "tavallinen DNS (UDP)",
+    "example_upstream_dot": "salattu <0>DNS-over-TLS</0>",
+    "example_upstream_doh": "salattu <0>DNS-over-HTTPS</0>",
+    "example_upstream_doq": "salattu <0>DNS-over-QUIC</0>",
+    "example_upstream_sdns": "voit käyttää <0>DNS Stamp</0> -merkintöjä <1>DNSCrypt</1> tai <2>DNS-over-HTTPS</2> -resolvereille",
+    "example_upstream_tcp": "tavallinen DNS (TCP)",
+    "all_lists_up_to_date_toast": "Kaikki listat ovat ajan tasalla",
+    "updated_upstream_dns_toast": "Ylävirtojen palvelimet tallennettiin",
+    "dns_test_ok_toast": "Määritetyt DNS-palvelimet toimivat oikein",
+    "dns_test_not_ok_toast": "Palvelin \"{{key}}\": ei voitu käyttää, tarkista sen oikeinkirjoitus",
+    "unblock": "Salli",
+    "block": "Estä",
+    "disallow_this_client": "Estä tämä päätelaite",
+    "allow_this_client": "Salli tämä päätelaite",
+    "block_for_this_client_only": "Estä vain tältä päätelaitteelta",
+    "unblock_for_this_client_only": "Salli vain tälle päätelaitteelle",
+    "time_table_header": "Aika",
+    "date": "Päiväys",
+    "domain_name_table_header": "Verkkotunnus",
+    "domain_or_client": "Verkkotunnus tai päätelaite",
+    "type_table_header": "Tyyppi",
+    "response_table_header": "Vastaus",
+    "response_code": "Vastauksen koodi",
+    "client_table_header": "Asiakas",
+    "empty_response_status": "Tyhjä",
+    "show_all_filter_type": "Näytä kaikki",
+    "show_filtered_type": "Näytä suodatetut",
+    "no_logs_found": "Historiatietoja ei ole",
+    "refresh_btn": "Päivitä",
+    "previous_btn": "Edellinen",
+    "next_btn": "Seuraava",
+    "loading_table_status": "Ladataan...",
+    "page_table_footer_text": "Sivu",
+    "rows_table_footer_text": "riviä",
+    "updated_custom_filtering_toast": "Omat suodatussäännöt päivitettiin",
+    "rule_removed_from_custom_filtering_toast": "Sääntö poistettiin omista suodatussäännöistä: {{rule}}",
+    "rule_added_to_custom_filtering_toast": "Sääntö lisättiin omiin suodatussääntöihin: {{rule}}",
+    "query_log_response_status": "Tila: {{value}}",
+    "query_log_filtered": "Suodattanut {{filter}}",
+    "query_log_confirm_clear": "Haluatko varmasti tyhjentää pyyntöhistorian?",
+    "query_log_cleared": "Pyyntöhistoria tyhjennettiin",
+    "query_log_updated": "Pyyntöhistoria päivitettiin",
+    "query_log_clear": "Tyhjennä pyyntöhistoria",
+    "query_log_retention": "Pyyntöhistorian säilytys",
+    "query_log_enable": "Käytä historiaa",
+    "query_log_configuration": "Historian määritys",
+    "query_log_disabled": "Pyyntöhistoria ei ole käytössä. Voit ottaa sen käyttöön <0>asetuksissa</0>",
+    "query_log_strict_search": "Käytä tarkalle haulle lainausmerkkejä",
+    "query_log_retention_confirm": "Haluatko varmasti muuttaa pyyntöhistoriasi säilytysaikaa? Jos lyhennät aikaa, joitakin tietoja menetetään",
+    "anonymize_client_ip": "Piilota päätelaitteen IP-osoite",
+    "anonymize_client_ip_desc": "Älä tallenna päätelaitteen täydellistä IP-osoitetta historiaan ja tilastoihin",
+    "dns_config": "DNS-palvelimen määritys",
+    "dns_cache_config": "DNS-välimuistin määritys",
+    "dns_cache_config_desc": "Täällä voit määrittää DNS-välimuistin asetukset",
+    "blocking_mode": "Estotila",
+    "default": "Oletus",
+    "nxdomain": "NXDOMAIN",
+    "refused": "REFUSED",
+    "null_ip": "Tyhjä IP",
+    "custom_ip": "Oma IP",
+    "blocking_ipv4": "IPv4-esto",
+    "blocking_ipv6": "IPv6-esto",
+    "dnscrypt": "DNSCrypt",
+    "dns_over_https": "DNS-over-HTTPS",
+    "dns_over_tls": "DNS-over-TLS",
+    "dns_over_quic": "DNS-over-QUIC",
+    "client_id": "Päätelaitteen ID",
+    "client_id_placeholder": "Syötä päätelaitteen ID",
+    "client_id_desc": "Eri päätelaitteet voidaan tunnistaa erityisillä tunnisteilla. <a>Täältä</a> löydät lisätietoja päätelaitteiden tunnistuksesta.",
+    "download_mobileconfig_doh": "Lataa .mobileconfig-tiedosto DNS-over-HTTPS -käytölle",
+    "download_mobileconfig_dot": "Lataa .mobileconfig-tiedosto DNS-over-TLS -käytölle",
+    "download_mobileconfig": "Lataa asetustiedosto",
+    "plain_dns": "Tavallinen DNS",
+    "form_enter_rate_limit": "Syötä rajoitus",
+    "rate_limit": "Pyyntöjen ajoitus",
+    "edns_enable": "Käytä EDNS-päätelaitealivekkoa",
+    "edns_cs_desc": "Lähetä päätelaitteiden aliverkot DNS-palvelimille.",
+    "rate_limit_desc": "Päätelaitteelle sallittu pyyntöjen enimmäismäärä sekunnissa. Arvo 0 tarkoittaa rajatonta.",
+    "blocking_ipv4_desc": "Estettyyn A-pyyntöön palautettava IP-osoite",
+    "blocking_ipv6_desc": "Estettyyn AAAA-pyyntöön palautettava IP-osoite",
+    "blocking_mode_default": "Oletus: Vastaa IP-nollaosoitteella (0.0.0.0 korvaa A; :: korvaa AAAA) kun estetään mainoseston säännöllä; vastaa säännön määrittämällä IP-osoitteella kun estetään /etc/hosts-tyyppisellä säännöllä",
+    "blocking_mode_refused": "REFUSED: Vastaa REFUSED-koodilla",
+    "blocking_mode_nxdomain": "NXDOMAIN: Vastaa NXDOMAIN-koodilla",
+    "blocking_mode_null_ip": "Tyhjä IP: Vastaa IP-nollaosoitteella (0.0.0.0 korvaa A; :: korvaa AAAA)",
+    "blocking_mode_custom_ip": "Oma IP: Vastaa itse määritetyllä IP-osoitteella",
+    "upstream_dns_client_desc": "Jos tämä on tyhjä, käyttää AdGuard Home <0>DNS-asetuksissa</0> määritettyjä palvelimia.",
+    "tracker_source": "Seurannan lähde",
+    "source_label": "Lähde",
+    "found_in_known_domain_db": "Löytyi tunnettujen verkkotunnusten tietokannasta.",
+    "category_label": "Luokitus",
+    "rule_label": "Säännöt",
+    "list_label": "Lista",
+    "unknown_filter": "Tuntematon suodatin {{filterId}}",
+    "known_tracker": "Tunnettu seuranta",
+    "install_welcome_title": "Tervetuloa AdGuard Homeen!",
+    "install_welcome_desc": "AdGuard Home on verkonlaajuinen mainoksia ja seurantoja estävä DNS-palvelin. Sen tarkoitus on mahdollistaa verkon sekä siihen liitettyjen laitteiden hallinta ja valvonta, eikä se vaadi asiakasohjelmistojen asennusta päätelaitteille.",
+    "install_settings_title": "Hallintapaneeli",
+    "install_settings_listen": "Käytettävä verkkosovitin",
+    "install_settings_port": "Portti",
+    "install_settings_interface_link": "AdGuard Home -asennuksesi hallintapaneeli on käytettävissä seuraavilla osoitteilla:",
+    "form_error_port": "Syötä oikea portin numero",
+    "install_settings_dns": "DNS-palvelin",
+    "install_settings_dns_desc": "Sinun on määritettävä laitteesi tai reitittimesi käyttämään DNS-palvelinta seuraavissa osoitteissa:",
+    "install_settings_all_interfaces": "Kaikki verkkosovittimet",
+    "install_auth_title": "Tunnistautuminen",
+    "install_auth_desc": "AdGuard Homen hallinnalle on määritettävä salasanasuojaus. Vaikka se olisikin tavoitettavissa vain lähiverkon välityksellä, on silti tärkeää suojata se luvattomalta käytöltä.",
+    "install_auth_username": "Käyttäjätunnus",
+    "install_auth_password": "Salasana",
+    "install_auth_confirm": "Vahvista salasana",
+    "install_auth_username_enter": "Syötä käyttäjätunnus",
+    "install_auth_password_enter": "Syötä salasana",
+    "install_step": "Vaihe",
+    "install_devices_title": "Määritä laitteet",
+    "install_devices_desc": "AdGuard Homen käytön aloittamiseksi, on laitteet määritettävä käyttämään sitä.",
+    "install_submit_title": "Onnittelut!",
+    "install_submit_desc": "Asennus on valmis ja AdGuard Home on valmis käyttöön.",
+    "install_devices_router": "Reititin",
+    "install_devices_router_desc": "Asennus kattaa kaikki reitittimeen liitetyt laitteet, eikä niitä tarvitse määrittää erikseen yksitellen.",
+    "install_devices_address": "AdGuard Homen DNS-palvelin kuuntelee seuraavissa osoitteissa",
+    "install_devices_router_list_1": "Avaa reitittimesi hallinta. Yleensä se avautuu selaimen kautta, URL-osoitteella, kuten http://192.168.0.1 tai http://192.168.1.1. Saatat joutua syöttämään käyttäjätunnuksen ja salasanan. Jos et muista tai tiedä sitä, voit yleensä palauttaa salasanan (ja kaikki muut!) reitittimen asetukset oletusarvoihin painamalla laitteessa olevaa reset-painiketta muutaman sekunnin ajan. Jos reitittimen määritys vaatii erillisen sovelluksen käyttöä, asenna se mobiililaitteelle tai tietokoneelle ja käytä reitittimen hallintaa sen kautta. Tutustu reitittimen käyttöoppaaseen.",
+    "install_devices_router_list_2": "Etsi DHCP/DNS-asetukset. Etsi kirjainyhdistelmää DNS sellaisen kenttien vierestä, joihin voidaan syöttää kaksi tai kolme numerosarjaa, joista jokainen on eroteltu neljään ryhmään, joista jokainen sisältää yhdestä kolmeen numeroa.",
+    "install_devices_router_list_3": "Syötä sinne AdGuard Home -palvelimesi osoitteet.",
+    "install_devices_router_list_4": "Joissakin reitittimissä ei ole mahdollista määrittää omaa DNS-palvelinta. Tällöin AdGuard Homen määritys <0>DHCP-palvelimeksi</0> voi auttaa. Muutoin on selvitettävä reitittimen käyttöohjeesta, miten sen DNS-palvelinasetukset muutetaan.",
+    "install_devices_windows_list_1": "Avaa \"Ohjauspaneeli\" Käynnistä-valikon tai Windowsin haun kautta.",
+    "install_devices_windows_list_2": "Avaa \"Verkko ja Internet\" -ryhmä ja sitten \"Verkko ja jakamiskeskus\".",
+    "install_devices_windows_list_3": "Etsi ikkunan vasemmasta laidasta \"Muuta sovittimen asetuksia\" ja klikkaa sitä.",
+    "install_devices_windows_list_4": "Valitse aktiivinen yhteytesi, klikkaa sitä hiiren kakkospainikkeella ja valitse valikosta \"Ominaisuudet\".",
+    "install_devices_windows_list_5": "Etsi listasta \"Internet protokolla versio 4 (TCP/IP)\", valitse se ja klikkaa jälleen \"Ominaisuudet\".",
+    "install_devices_windows_list_6": "Valitse \"Käytä seuraavia DNS-palvelinten osoitteita\" ja syötä AdGuard Home -palvelimesi osoitteet.",
+    "install_devices_macos_list_1": "Avaa Omenavalikko ja valitse \"Järjestelmäasetukset \".",
+    "install_devices_macos_list_2": "Klikkaa \"Verkko\".",
+    "install_devices_macos_list_3": "Valitse listan ensimmäinen yhteys ja klikkaa \"Lisävalinnat\".",
+    "install_devices_macos_list_4": "Valitse DNS-välilehti ja syötä AdGuard Home -palvelimesi osoitteet.",
+    "install_devices_android_list_1": "Napauta \"Asetukset\" -kuvaketta Android-laitteesi aloitusnäytöstä tai sovellusvalikosta.",
+    "install_devices_android_list_2": "Napauta \"Yhteydet\" ja sitten \"Wi-Fi\". Näytetään kaikki käytettävissä olevat langattomat verkot (mobiiliverkolle ei ole mahdollista määrittää omaa DNS-palvelinta).",
+    "install_devices_android_list_3": "Napauta yhdistetyn verkon vieressä olevaa asetuskuvaketta tai paina verkkoa pitkään ja valitse \"Muokkaa verkkoa\".",
+    "install_devices_android_list_4": "Saatat joutua napauttamaan \"Lisäasetukset\" nähdäksesi lisää valintoja. Muuttaaksesi DNS-asetuksia, on \"IP-asetukset\" -kohdan \"DHCP\" -valinta vaihdettava \"Staattinen\" -valintaan.",
+    "install_devices_android_list_5": "Syötä \"DNS 1\" ja \"DNS 2\" -kenttiin AdGuard Home -palvelimesi osoitteet.",
+    "install_devices_ios_list_1": "Valitse aloitusnäytöstä \"Asetukset\".",
+    "install_devices_ios_list_2": "Valitse vasemmalta \"Wi-Fi\" (mobiiliverkolle ei ole mahdollista määrittää omaa DNS-palvelinta).",
+    "install_devices_ios_list_3": "Valitse yhdistetty verkko.",
+    "install_devices_ios_list_4": "Syötä \"DNS\" -kenttään AdGuard Home -palvelimesi osoitteet.",
+    "get_started": "Aloita",
+    "next": "Seuraava",
+    "open_dashboard": "Avaa hallintapaneeli",
+    "install_saved": "Tallennettiin",
+    "encryption_title": "Salaus",
+    "encryption_desc": "Salaus (HTTPS/TLS) DNS-palvelimelle ja selaimen hallintasivulle",
+    "encryption_config_saved": "Salausasetukset tallennettiin",
+    "encryption_server": "Palvelimen nimi",
+    "encryption_server_enter": "Syötä verkkotunnuksesi",
+    "encryption_server_desc": "HTTPS-yhteyden käyttöä varten, on syötettävä SSL- tai jokerivarmennetta vastaava palvelimen nimi. Jos kenttä on tyhjä, sallitaan kaikkien verkkotunnusten TLS-yhteydet.",
+    "encryption_redirect": "Automaattinen HTTPS-ohjaus",
+    "encryption_redirect_desc": "Jos käytössä, AdGuard Home ohjaa HTTP-osoitteet automaattisesti HTTPS-osoitteisiin.",
+    "encryption_https": "HTTPS-portti",
+    "encryption_https_desc": "Jos HTTPS-portti on määritetty, on AdGuard Homen hallintapaneeli käytettävissä HTTPS-yhteydellä ja lisäksi tämä mahdollistaa myös DNS-over-HTTPS -yhteyden '/dns-query' -kohteessa.",
+    "encryption_dot": "DNS-over-TLS -portti",
+    "encryption_dot_desc": "Jos portti on määritetty, AdGuard Home suorittaa DNS-over-TLS -palvelimen tässä portissa.",
+    "encryption_doq": "DNS-over-QUIC -portti",
+    "encryption_doq_desc": "Jos portti on määritetty, AdGuard Home suorittaa DNS-over-QUIC -palvelimen tässä portissa. Ominaisuus on kokeellinen, eikä välttämättä luotettava. Lisäksi tätä tukevia päätelaitteita ei vielä ole kovin paljon.",
+    "encryption_certificates": "Varmenteet",
+    "encryption_certificates_desc": "Salauksen käyttämiseksi, on syötettävä verkkotunnuksellesi myönnetty, aito SSL-varmenneketju. Voit hankkia ilmaisen varmenteen osoitteesta <0>{{link}}</0> tai ostaa sellaisen joltakin luotetulta varmentajalta.",
+    "encryption_certificates_input": "Kopioi/liitä PEM-koodatut varmenteesi tähän.",
+    "encryption_status": "Tila",
+    "encryption_expire": "Erääntyy",
+    "encryption_key": "Yksityinen avain",
+    "encryption_key_input": "Kopioi/liitä tähän varmenteesi PEM-koodattu yksityinen avain.",
+    "encryption_enable": "Käytä salausta (HTTPS, DNS-over-HTTPS ja DNS-over-TLS)",
+    "encryption_enable_desc": "Jos salaus on käytössä, AdGuard Homen hallinta on käytettävissä HTTPS-yhteydellä ja DNS-palvelin kuuntelee pyyntöjä DNS-over-HTTPS ja DNS-over-TLS -yhteyksillä.",
+    "encryption_chain_valid": "Varmenneketju on pätevä",
+    "encryption_chain_invalid": "Varmenneketju ei kelpaa",
+    "encryption_key_valid": "Yksityinen {{type}}-avain on pätevä",
+    "encryption_key_invalid": "Yksityinen {{type}}-avain ei kelpaa",
+    "encryption_subject": "Aihe",
+    "encryption_issuer": "Toimittaja",
+    "encryption_hostnames": "Isäntänimet",
+    "encryption_reset": "Haluatko varmasti palauttaa salausasetukset?",
+    "topline_expiring_certificate": "SSL-varmenteesi on erääntymässä. Päivitä <0>Salausasetukset</0>.",
+    "topline_expired_certificate": "SSL-varmenteesi on erääntynyt. Päivitä <0>Salausasetukset</0>.",
+    "form_error_port_range": "Syötä portti väliltä 80-65535",
+    "form_error_port_unsafe": "Tämä portti ei ole turvallinen",
+    "form_error_equal": "Ei voi olla sama",
+    "form_error_password": "Salasanat eivät täsmää",
+    "reset_settings": "Tyhjennä asetukset",
+    "update_announcement": "AdGuard Home {{version}} on nyt saatavilla! <0>Klikkaa tästä</0> saadaksesi lisätietoja.",
+    "setup_guide": "Asennusopas",
+    "dns_addresses": "DNS-osoitteet",
+    "dns_start": "DNS-palvelin käynnistyy",
+    "dns_status_error": "Virhe tarkistettaessa DNS-palvelimen tilaa",
+    "down": "yhteydetön",
+    "fix": "Korjaa",
+    "dns_providers": "Katso <0>luettelo tunnetuista DNS-palveluista</0>, joista valita.",
+    "update_now": "Päivitä nyt",
+    "update_failed": "Automaattinen päivitys epäonnistui. Seuraa <a>näitä ohjeita</a> päivittääksesi manuaalisesti.",
+    "processing_update": "Odota kun AdGuard Home päivittyy",
+    "clients_title": "Päätelaitteet",
+    "clients_desc": "Määritä AdGuard Homeen yhdistetyt päätelaitteet",
+    "settings_global": "Yleinen",
+    "settings_custom": "Oma",
+    "table_client": "Päätelaite",
+    "table_name": "Nimi",
+    "save_btn": "Tallenna",
+    "client_add": "Lisää päätelaite",
+    "client_new": "Uusi päätelaite",
+    "client_edit": "Muokkaa päätelaitetta",
+    "client_identifier": "Tunniste",
+    "ip_address": "IP-osoite",
+    "client_identifier_desc": "Päätelaitteet voidaan tunnistaa IP-osoitteista, CIDR-merkinnöistä, MAC-osoitteista tai erityisistä päätelaitteen ID-tunnisteista (voidaan käyttää DoT/DoH/DoQ kanssa). <0>Täältä</0> voit lukea lisää päätelaitteiden tunnistuksesta.",
+    "form_enter_ip": "Syötä IP-osoite",
+    "form_enter_subnet_ip": "Syötä IP-osoite aliverkkoon \"{{cidr}}\"",
+    "form_enter_mac": "Syötä MAC-osoite",
+    "form_enter_id": "Muokkaa tunnistetta",
+    "form_add_id": "Lisää tunniste",
+    "form_client_name": "Syötä päätelaitteen nimi",
+    "name": "Nimi",
+    "client_global_settings": "Käytä yleisiä asetuksia",
+    "client_deleted": "Päätelaite \"{{key}}\" poistettiin",
+    "client_added": "Päätelaite \"{{key}}\" lisättiin",
+    "client_updated": "Päätelaite \"{{key}}\" päivitettiin",
+    "clients_not_found": "Päätelaitteita ei löytynyt",
+    "client_confirm_delete": "Haluatko varmasti poistaa päätelaitteen \"{{key}}\"?",
+    "list_confirm_delete": "Haluatko varmasti poistaa tämän listan?",
+    "auto_clients_title": "Päätelaitteet (määrittämättömät)",
+    "auto_clients_desc": "Tiedot niistä AdGuard Homea käyttävistä päätelaitteista, joita ei ole määritetty asetuksissa",
+    "access_title": "Käytön asetukset",
+    "access_desc": "Tässä voidaan määrittää AdGuard Homen DNS-palvelimen käyttöoikeussääntöjä.",
+    "access_allowed_title": "Sallitut päätelaitteet",
+    "access_allowed_desc": "Lista CIDR-merkinnöistä, IP-osoitteista tai päätelaitteiden ID-tunnisteista. Jos määritetty, hyväksyy AdGuard Home pyyntöjä vain näiltä päätelaitteilta.",
+    "access_disallowed_title": "Kielletyt päätelaitteet",
+    "access_disallowed_desc": "Lista CIDR-merkinnöistä, IP-osoitteista tai päätelaitteiden ID-tunnisteista. Jos määritetty, hylkää AdGuard Home näiden päätelaitteiden pyynnöt. Tätä kenttää ei huomioida, jos sallittuja päätelaitteita on määritetty.",
+    "access_blocked_title": "Kielletyt verkkotunnukset",
+    "access_blocked_desc": "Ei pidä sekoittaa suodattimiin. AdGuard Home hylkää näiden verkkotunnusten DNS-pyynnöt, eivätkä nämä pyynnöt näy edes pyyntöhistoriassa. Tähän voidaan syöttää tarkkoja verkkotunnuksia, jokerimerkkejä tai URL-suodatussääntöjä, kuten \"example.org\", \"*.example.org\" tai \"||example.org^\".",
+    "access_settings_saved": "Käytön asetukset tallennettiin",
+    "updates_checked": "Päivitykset tarkastettiin",
+    "updates_version_equal": "AdGuard Home on ajan tasalla",
+    "check_updates_now": "Tarkista päivitykset nyt",
+    "dns_privacy": "DNS-yksityisyys",
+    "setup_dns_privacy_1": "<0>DNS-over-TLS:</0> Käytä merkkijonoa <1>{{address}}</1>.",
+    "setup_dns_privacy_2": "<0>DNS-over-HTTPS:</0> Käytä merkkijonoa <1>{{address}}</1>.",
+    "setup_dns_privacy_3": "<0>Tässä on lista ohjelmistoista, joita voit käyttää.</0>",
+    "setup_dns_privacy_4": "iOS 14 ja macOS Big Sur -laitteille voidaan ladata erityinen '.mobileconfig' -tiedosto, joka lisää DNS-asetuksiin <highlight>DNS-over-HTTPS</highlight> tai <highlight>DNS-over-TLS</highlight> -palvelimet.",
+    "setup_dns_privacy_android_1": "Android 9 tukee DNS-over-TLS -toteutusta natiivisti. Se määritetään syöttämällä oma verkkotunnus kohtaan \"Asetukset\" → \"Yhteydet\" → \"Lisää yhteysasetuksia\" → \"Yksityinen DNS\".",
+    "setup_dns_privacy_android_2": "<0>AdGuard Androidille</0> tukee <1>DNS-over-HTTPS</1> ja <1>DNS-over-TLS</1> -toteutuksia.",
+    "setup_dns_privacy_android_3": "<0>Intra</0> lisää <1>DNS-over-HTTPS</1> tuen Androidiin.",
+    "setup_dns_privacy_ios_1": "<0>DNSCloak</0> tukee <1>DNS-over-HTTPS</1>, mutta oman palvelimen käyttö' varten sille on luotava <2>DNS Stamp</2> -merkintä.",
+    "setup_dns_privacy_ios_2": "<0>AdGuard iOS:lle</0> tukee <1>DNS-over-HTTPS</1> ja <1>DNS-over-TLS</1> -toteutuksia.",
+    "setup_dns_privacy_other_title": "Muita toteutuksia",
+    "setup_dns_privacy_other_1": "AdGuard Home voi itse olla turvallinen DNS-päätelaite millä tahansa alustalla.",
+    "setup_dns_privacy_other_2": "<0>dnsproxy</0> tukee kaikkia tunnettuja turvallisia DNS-protokollia.",
+    "setup_dns_privacy_other_3": "<0>dnscrypt-proxy</0> tukee <1>DNS-over-HTTPS</1> -protokollaa.",
+    "setup_dns_privacy_other_4": "<0>Mozilla Firefox</0> tukee <1>DNS-over-HTTPS</1> -toteutusta.",
+    "setup_dns_privacy_other_5": "Löydät lisää toteutuksia <0>täältä</0> ja <1>täältä</1>.",
+    "setup_dns_privacy_ioc_mac": "iOS ja macOS -asetukset",
+    "setup_dns_notice": "<1>DNS-over-HTTPS</1> tai <1>DNS-over-TLS</1> -toteutuksia varten, on AdGuard Homen <0>Salausasetukset</0> määritettävä.",
+    "rewrite_added": "Kohteen \"{{key}}\" DNS-uudelleenohjaus lisättiin",
+    "rewrite_deleted": "Kohteen \"{{key}}\" DNS-uudelleenohjaus poistettiin",
+    "rewrite_add": "Lisää DNS-uudelleenohjaus",
+    "rewrite_not_found": "DNS-uudelleenohjauksia ei löytynyt",
+    "rewrite_confirm_delete": "Haluatko varmasti poistaa DNS-uudelleenohjauksen kohteelle \"{{key}}\"?",
+    "rewrite_desc": "Mahdollistaa oman DNS-vastauksen helpon määrityksen tietylle verkkotunnukselle.",
+    "rewrite_applied": "Uudelleenohjattu säännöllä",
+    "rewrite_hosts_applied": "Hosts-tiedoston säännön korvaama",
+    "dns_rewrites": "DNS-uudelleenohjaukset",
+    "form_domain": "Syötä verkkotunnus tai jokerimerkki",
+    "form_answer": "Syötä IP-osoite tai verkkotunnus",
+    "form_error_domain_format": "Virheellinen verkkotunnuksen muoto",
+    "form_error_answer_format": "Virheellinen vastauksen muoto",
+    "configure": "Määritä",
+    "main_settings": "Pääasetukset",
+    "block_services": "Estä tietyt palvelut",
+    "blocked_services": "Estetyt palvelut",
+    "blocked_services_desc": "Mahdollistaa suosittujen sivustojen ja palveluiden nopean eston.",
+    "blocked_services_saved": "Estetyt palvelut tallennettiin",
+    "blocked_services_global": "Käytä yleisiä estettyjä palveluita",
+    "blocked_service": "Estetty palvelu",
+    "block_all": "Estä kaikki",
+    "unblock_all": "Salli kaikki",
+    "encryption_certificate_path": "Varmenteen sijainti",
+    "encryption_private_key_path": "Yksityisen avaimen sijainti",
+    "encryption_certificates_source_path": "Määritä varmennetiedoston sijainti",
+    "encryption_certificates_source_content": "Liitä varmenteen sisältö",
+    "encryption_key_source_path": "Määritä yksityisen avaimen tiedosto",
+    "encryption_key_source_content": "Liitä yksityisen avaimen sisältö",
+    "stats_params": "Tilastoinnin määritys",
+    "config_successfully_saved": "Asetukset tallennettiin",
+    "interval_6_hour": "6 tuntia",
+    "interval_24_hour": "24 tuntia",
+    "interval_days": "{{count}} päivä",
+    "interval_days_plural": "{{count}} päivää",
+    "domain": "Verkkotunnus",
+    "punycode": "Punycode",
+    "answer": "Vastaus",
+    "filter_added_successfully": "Lista lisättiin",
+    "filter_removed_successfully": "Lista poistettiin",
+    "filter_updated": "Listan päivitettiin",
+    "statistics_configuration": "Tilastoinnin määritys",
+    "statistics_retention": "Tilastojen säilytys",
+    "statistics_retention_desc": "Jos aikaa lyhennetään, joitakin tietoja menetetään.",
+    "statistics_clear": "Tyhjennä tilastot",
+    "statistics_clear_confirm": "Haluatko varmasti tyhjentää tilastot?",
+    "statistics_retention_confirm": "Haluatko varmasti muuttaa tilastojen säilytysaikaa? Jos aikaa lyhennetään, joitakin tietoja menetetään.",
+    "statistics_cleared": "Tilastot tyhjennettiin",
+    "statistics_enable": "Ota tilastointi käyttöön",
+    "interval_hours": "{{count}} tunti",
+    "interval_hours_plural": "{{count}} tuntia",
+    "filters_configuration": "Suodatinten määritys",
+    "filters_enable": "Ota suodattimet käyttöön",
+    "filters_interval": "Suodatinpäivitysten tiheys",
+    "disabled": "Ei käytössä",
+    "username_label": "Käyttäjätunnus",
+    "username_placeholder": "Syötä käyttäjätunnus",
+    "password_label": "Salasana",
+    "password_placeholder": "Syötä salasana",
+    "sign_in": "Kirjaudu",
+    "sign_out": "Kirjaudu ulos",
+    "forgot_password": "Salasana unohtunut?",
+    "forgot_password_desc": "Luo käyttäjätilillesi uusi salasana seuraamalla <0>näitä ohjeita</0>.",
+    "location": "Sijainti",
+    "orgname": "Organisaation nimi",
+    "netname": "Verkon nimi",
+    "network": "Verkko",
+    "descr": "Kuvaus",
+    "whois": "Whois",
+    "filtering_rules_learn_more": "<0>Lue lisää</0> omien hosts-listojesi luonnista.",
+    "blocked_by_response": "Vastauksen sisältämän CNAME:n tai IP:n estämä",
+    "blocked_by_cname_or_ip": "CNAME:n tai IP:n estämä",
+    "try_again": "Yritä uudelleen",
+    "domain_desc": "Syötä korvattava verkkotunnus tai jokerimerkki.",
+    "example_rewrite_domain": "korvaa vain tämän verkkotunnuksen vastaukset",
+    "example_rewrite_wildcard": "korvaa verkkotunnuksen <0>example.org</0> kaikkien aliverkkotunnusten vastaukset",
+    "rewrite_ip_address": "IP-osoite: käytä tätä IP-osoitetta A tai AAAA -vastauksessa.",
+    "rewrite_domain_name": "Verkkotunnus: lisää CNAME-tietue.",
+    "rewrite_A": "<0>A</0>: erityinen arvo, säilytä ylävirran <0>A</0>-tiedot",
+    "rewrite_AAAA": "<0>AAAA</0>: erityinen arvo, säilytä ylävirran <0>AAAA</0>-tiedot",
+    "disable_ipv6": "Älä selvitä IPv6-osoitteita",
+    "disable_ipv6_desc": "Hylkää kaikki IPv6-osoitteiden DNS-pyynnöt (tyyppi AAAA).",
+    "fastest_addr": "Nopein IP-osoite",
+    "fastest_addr_desc": "Lähetä pyynnöt kaikille DNS-palvelimille ja valitse vastauksista nopein IP-osoite. Tämä parantaa yleistä liitettävyyttä, joskin hidastaa DNS-pyyntöjä, koska AdGuard Homen on odotettava kaikkien DNS-palvelinten vastauksia.",
+    "autofix_warning_text": "Jos valitset \"Korjaa\", AdGuard Home määrittää järjestelmäsi käyttämään AdGuard Homen DNS-palvelinta.",
+    "autofix_warning_list": "Suorittaa toiminnot: <0>Poistaa käytöstä järjestelmän DNSStubListener-palvelun</0> <0>Määrittää DNS-palvelimen osoitteeksi 127.0.0.1</0> <0>Muuttaa sijainnnin /etc/resolv.conf symbolisen linkin kohteeksi /run/systemd/resolve/resolv.conf</0> <0>Pysäyttää DNSStubListener-palvelun (uudelleenlataa systemd-resolved -palvelu)</0>",
+    "autofix_warning_result": "Tämän jälkeen järjestelmäsi kaikki DNS-pyynnöt käsittelee oletusarvoisesti AdGuard Home.",
+    "tags_title": "Tunnisteet",
+    "tags_desc": "Voit valita päätelaitteeseen viittaavia tunnisteita. Tunnisteet voidaan sisällyttää suodatussääntöihin ja näin voit kohdistaa niitä tarkemmin. <0>Lue lisää</0>",
+    "form_select_tags": "Valitse päätelaitteen tunnisteet",
+    "check_title": "Tarkasta suodatus",
+    "check_desc": "Tarkasta suodatetaanko isäntänimeä",
+    "check": "Tarkasta",
+    "form_enter_host": "Syötä isäntänimi",
+    "filtered_custom_rules": "Suodatettu omilla suodatussäännöillä",
+    "choose_from_list": "Valitse listalta",
+    "add_custom_list": "Lisää oma lista",
+    "host_whitelisted": "Isäntä on sallittu",
+    "check_ip": "IP-osoitteet: {{ip}}",
+    "check_cname": "CNAME: {{cname}}",
+    "check_reason": "Syy: {{reason}}",
+    "check_service": "Palvelun nimi: {{service}}",
+    "service_name": "Palvelun nimi",
+    "check_not_found": "Ei löytynyt suodatinlistoilta",
+    "client_confirm_block": "Haluatko varmasti estää päätelaitteen \"{{ip}}\"?",
+    "client_confirm_unblock": "Haluatko varmasti sallia päätelaitteen \"{{ip}}\"?",
+    "client_blocked": "Päätelaite \"{{ip}}\" estettiin",
+    "client_unblocked": "Päätelaite \"{{ip}}\" sallittiin",
+    "static_ip": "Kiiteä IP-osoite",
+    "static_ip_desc": "AdGuard Home on palvelin, joten se tarvitsee kiinteän IP-osoitteen toimiakseen oikein. Muutoin reitittimesi saattaa määrittää sille jossakin vaiheessa uuden, dynaamisen IP-osoitteen.",
+    "set_static_ip": "Määritä kiinteä IP-osoite",
+    "install_static_ok": "Hyviä uutisia! Kiinteä IP-osoite on jo määritetty.",
+    "install_static_error": "AdGuard Home ei voi määrittää sitä tälle verkkosovittimelle automaattisesti. Etsi ohjeita tämän suorittamiseksi itse.",
+    "install_static_configure": "AdGuard Home havaitsi, että käytössä on dynaaminen IP-osoitteen <0>{{ip}}</0>. Haluatko määrittää sen kiinteäksi osoitteeksi?",
+    "confirm_static_ip": "AdGuard Home määrittää IP-osoitteen {{ip}} kiinteäksi. Haluatko jatkaa?",
+    "list_updated": "{{count}} lista päivitettiin",
+    "list_updated_plural": "{{count}} listaa päivitettiin",
+    "dnssec_enable": "Ota DNSSEC käyttöön",
+    "dnssec_enable_desc": "Määritä DNSSEC-lippu ulos lähteville DNS-pyynnöille ja tarkasta tulos (vaatii DNSSEC-yhteensopivan resolverin).",
+    "validated_with_dnssec": "DNSSEC-vahvistettu",
+    "all_queries": "Kaikki pyynnöt",
+    "show_blocked_responses": "Estetty",
+    "show_whitelisted_responses": "Sallittu",
+    "show_processed_responses": "Käsitelty",
+    "blocked_safebrowsing": "Turvallisen selauksen estämät",
+    "blocked_adult_websites": "Estetyt aikuisille tarkoitetut sivustot",
+    "blocked_threats": "Estetyt uhat",
+    "allowed": "Sallitut",
+    "filtered": "Suodatetut",
+    "rewritten": "Uudelleenohjatut",
+    "safe_search": "Turvallinen haku",
+    "blocklist": "Estolista",
+    "milliseconds_abbreviation": "ms",
+    "cache_size": "Välimuistin koko",
+    "cache_size_desc": "DNS-välimuistin koko (tavuina)",
+    "cache_ttl_min_override": "Korvaa vähimmäis-TTL",
+    "cache_ttl_max_override": "Korvaa enimmäis-TTL",
+    "enter_cache_size": "Syötä välimuistin koko (tavuina)",
+    "enter_cache_ttl_min_override": "Syötä vähimmäis-TTL (sekunteina)",
+    "enter_cache_ttl_max_override": "Syötä enimmäis-TTL (sekunteina)",
+    "cache_ttl_min_override_desc": "Pidennä ylävirran palvelimelta vastaanotettuja, lyhyitä time-to-live -arvoja (sekunteina) tallennettaessa DNS-vastauksia välimuistiin.",
+    "cache_ttl_max_override_desc": "Määritä DNS-välimuistin kohteiden suurin time-to-live -arvo (sekunteina)",
+    "ttl_cache_validation": "Välimuistin TTL-vähimmäisarvon tulee olla pienempi tai sama kuin enimmäisarvon",
+    "cache_optimistic": "Optimistinen välimuisti",
+    "cache_optimistic_desc": "Pakota AdGuard Home vastaamaan välimuistista vaikka sen tiedot olisivat vanhentuneet. Pyri samalla myös päivittämään tiedot.",
+    "filter_category_general": "Yleiset",
+    "filter_category_security": "Turvallisuus",
+    "filter_category_regional": "Alueelliset",
+    "filter_category_other": "Muut",
+    "filter_category_general_desc": "Listat, jotka estävät seurannan ja mainokset useimmilla laitteilla",
+    "filter_category_security_desc": "Tietojenkalastelu-, huijaus- ja muiden haitallisten verkkotunnusten estoon erikoistuneet listat",
+    "filter_category_regional_desc": "Listat, jotka painottavat alueellisia mainoksia ja seurantapalvelimia",
+    "filter_category_other_desc": "Muut estolistat",
+    "setup_config_to_enable_dhcp_server": "Määritä asetukset DHCP-palvelimen käyttöönottoa varten",
+    "original_response": "Alkuperäinen vastaus",
+    "click_to_view_queries": "Näytä pyynnöt",
+    "port_53_faq_link": "Portti 53 on usein \"DNSStubListener\" tai \"systemd-resolved\" -palveluiden varaama. Lue <0>nämä ohjeet</0> tämän ratkaisemiseksi.",
+    "adg_will_drop_dns_queries": "AdGuard Home hylkää tämän päätelaitteen DNS-pyynnöt.",
+    "filter_allowlist": "VAROITUS: Toiminto ohittaa \"{{disallowed_rule}}\" -säännön sallittujen päätelaitteiden listalta.",
+    "last_rule_in_allowlist": "Et voi estää tätä päätelaitetta, koska säännön \"{{disallowed_rule}}\" ohitus POISTAA KÄYTÖSTÄ \"Sallitut päätelaitteet\" -listan.",
+    "experimental": "Kokeellinen",
+    "use_saved_key": "Käytä aiemmin tallennettua avainta"
+}
diff --git a/client/src/__locales/uk.json b/client/src/__locales/uk.json
new file mode 100644
index 00000000..256ee9b3
--- /dev/null
+++ b/client/src/__locales/uk.json
@@ -0,0 +1,628 @@
+{
+    "client_settings": "Налаштування клієнта",
+    "example_upstream_reserved": "Ви можете вказати DNS-сервер <0>для певних доменів</0>",
+    "example_upstream_comment": "Ви можете вказати коментар",
+    "upstream_parallel": "Використовувати паралельні запити, щоб пришвидшити вирішення одночасною чергою всіх оригінальних серверів.",
+    "parallel_requests": "Паралельні запити",
+    "load_balancing": "Балансування навантаження",
+    "load_balancing_desc": "Запитувати один сервер за раз. AdGuard Home використовуватиме зважений випадковий алгоритм для вибору сервера, щоб найшвидший сервер використовувався частіше.",
+    "bootstrap_dns": "Bootstrap DNS-сервери",
+    "bootstrap_dns_desc": "Bootstrap DNS-сервери використовуються для пошуку IP-адреси DoH/DoT серверів, які ви встановили.",
+    "local_ptr_title": "Приватні сервери для зворотного DNS",
+    "local_ptr_desc": "DNS-сервери, які AdGuard Home використовує для локальних PTR-запитів. Ці сервери, використовуючи rDNS, використовуються для отримання доменних імен клієнтів у приватних мережах, наприклад, «192.168.12.34». Якщо список порожній, буде використовуватись системний DNS-сервер.",
+    "local_ptr_default_resolver": "AdGuard Home усталено використовує такі зворотні DNS-резолвери: {{ip}}.",
+    "local_ptr_no_default_resolver": "AdGuard Home не зміг визначити приватні реверсивні DNS-резолвери, що були б придатними для цієї системи.",
+    "local_ptr_placeholder": "Вводьте одну адресу на рядок",
+    "resolve_clients_title": "Увімкнути запитування доменних імен для IP-адрес клієнтів",
+    "resolve_clients_desc": "Визначати доменні імена клієнтів за допомогою PTR-запитів до відповідних серверів — приватних DNS-серверів для локальних клієнтів та upstream-серверів для клієнтів з публічними IP-адресами.",
+    "use_private_ptr_resolvers_title": "Використовувати приватні зворотні DNS-резолвери",
+    "use_private_ptr_resolvers_desc": "Надсилати зворотні DNS-запити до вказаних серверів для клієнтів, що обслуговуються локально. Якщо вимкнено, AdGuard Home буде відповідати NXDOMAIN на всі такі PTR-запити, окрім запитів про клієнтів, що уже відомі по DHCP, /etc/hosts тощо.",
+    "check_dhcp_servers": "Перевірити DHCP-сервери",
+    "save_config": "Зберегти конфігурацію",
+    "enabled_dhcp": "DHCP-сервер увімкнено",
+    "disabled_dhcp": "DHCP-сервер вимкнено",
+    "unavailable_dhcp": "DHCP недоступний",
+    "unavailable_dhcp_desc": "AdGuard Home не може запустити DHCP-сервер у вашій ОС",
+    "dhcp_title": "DHCP-сервер (експериментальний!)",
+    "dhcp_description": "Якщо ваш роутер не пропонує налаштування DHCP, ви можете використати власний вбудований DHCP-сервер AdGuard.",
+    "dhcp_enable": "Увімкнути DHCP-сервер",
+    "dhcp_disable": "Вимкнути DHCP-сервер",
+    "dhcp_not_found": "Можна безпечно увімкнути вбудований DHCP-сервер — ми не знайшли жодного активного DHCP-сервера в мережі. Однак, ми радимо вам ще раз перевірити вручну, тому що наш автоматичний тест наразі не дає 100% гарантії.",
+    "dhcp_found": "Не знайдено DHCP-сервера в мережі. Вмикати вбудований DHCP-сервер небезпечно.",
+    "dhcp_leases": "Оренда DHCP",
+    "dhcp_static_leases": "Статичні оренди DHCP",
+    "dhcp_leases_not_found": "Оренду DHCP не знайдено",
+    "dhcp_config_saved": "Конфігурацію DHCP-сервера успішно збережено",
+    "dhcp_ipv4_settings": "Налаштування DHCP IPv4",
+    "dhcp_ipv6_settings": "Налаштування DHCP IPv6",
+    "form_error_required": "Обов'язкове поле",
+    "form_error_ip4_format": "Неправильна IPv4-адреса",
+    "form_error_ip4_range_start_format": "Неправильна IPv4-адреса для початку діапазону",
+    "form_error_ip4_range_end_format": "Неправильна IPv4-адреса для кінця діапазону",
+    "form_error_ip4_gateway_format": "Неправильна IPv4-адреса для шлюзу",
+    "form_error_ip6_format": "Неправильна IPv6-адреса",
+    "form_error_ip_format": "Неправильна IP-адреса",
+    "form_error_mac_format": "Неправильна MAC-адреса",
+    "form_error_client_id_format": "Неправильний ID клієнта",
+    "form_error_server_name": "Неправильна назва сервера",
+    "form_error_subnet": "Підмережа «{{cidr}}» не містить IP-адресу «{{ip}}»",
+    "form_error_positive": "Повинно бути більше 0",
+    "form_error_negative": "Повинно дорівнювати 0 або більше",
+    "out_of_range_error": "Не повинна бути в діапазоні «{{start}}»−«{{end}}»",
+    "lower_range_start_error": "Має бути меншим за початкову адресу",
+    "greater_range_start_error": "Має бути більшим за початкову адресу",
+    "greater_range_end_error": "Має бути більшим за кінцеву адресу",
+    "subnet_error": "Адреси повинні бути в одній підмережі",
+    "gateway_or_subnet_invalid": "Неправильна маска підмережі",
+    "dhcp_form_gateway_input": "IP-адреса шлюзу",
+    "dhcp_form_subnet_input": "Маска підмережі",
+    "dhcp_form_range_title": "Діапазон IP-адрес",
+    "dhcp_form_range_start": "Початок діапазону",
+    "dhcp_form_range_end": "Кінець діапазону",
+    "dhcp_form_lease_title": "Час оренди DHCP (в секундах)",
+    "dhcp_form_lease_input": "Тривалість оренди",
+    "dhcp_interface_select": "Оберіть інтерфейс DHCP",
+    "dhcp_hardware_address": "Апаратна адреса",
+    "dhcp_ip_addresses": "IP-адреси",
+    "ip": "IP",
+    "dhcp_table_hostname": "Назва вузла",
+    "dhcp_table_expires": "Термін дії",
+    "dhcp_warning": "Якщо ви однаково хочете увімкнути DHCP-сервер, переконайтеся, що у вашій мережі немає інших активних DHCP-серверів. Інакше, це може порушити роботу інтернету на під'єднаних пристроях!",
+    "dhcp_error": "Не вдалося визначити, чи є в мережі інший DHCP-сервер.",
+    "dhcp_static_ip_error": "Для використання DHCP-сервера необхідно встановити статичну IP-адресу. Нам не вдалося визначити, чи цей мережевий інтерфейс налаштовано для використання статичної IP-адреси. Встановіть статичну IP-адресу вручну.",
+    "dhcp_dynamic_ip_found": "Ваша система використовує конфігурацію з динамічною IP-адресою для інтерфейсу <0>{{interfaceName}}</0>. Для використання DHCP-сервера необхідно встановити статичну IP-адресу. Ваша поточна IP-адреса <0>{{ipAddress}}</0>. Ми автоматично встановимо цю IP-адресу як статичну, якщо ви натиснете кнопку «Увімкнути DHCP-сервер».",
+    "dhcp_lease_added": "Статичну оренду «{{key}}» успішно додано",
+    "dhcp_lease_deleted": "Статичну оренду «{{key}}» успішно видалено",
+    "dhcp_new_static_lease": "Нова статична оренда",
+    "dhcp_static_leases_not_found": "Не знайдено статичних оренд DHCP",
+    "dhcp_add_static_lease": "Додати статичну оренду",
+    "dhcp_reset_leases": "Скинути всі аренди",
+    "dhcp_reset_leases_confirm": "Ви дійсно хочете скинути усі аренди?",
+    "dhcp_reset_leases_success": "Аренди DHCP успішно скинуто",
+    "dhcp_reset": "Ви дійсно хочете скинути DHCP-конфігурацію?",
+    "country": "Країна",
+    "city": "Місто",
+    "delete_confirm": "Ви дійсно хочете видалити «{{key}}»?",
+    "form_enter_hostname": "Введіть назву вузла",
+    "error_details": "Подробиці помилки",
+    "response_details": "Деталі відповіді",
+    "request_details": "Деталі запиту",
+    "client_details": "Подробиці про клієнта",
+    "details": "Подробиці",
+    "back": "Назад",
+    "dashboard": "Панель керування",
+    "settings": "Налаштування",
+    "filters": "Фільтри",
+    "filter": "Фільтр",
+    "query_log": "Журнал запитів",
+    "compact": "Стисло",
+    "nothing_found": "Нічого не знайдено...",
+    "faq": "Часті питання",
+    "version": "Версія",
+    "address": "Адреса",
+    "protocol": "Протокол",
+    "on": "УВІМК",
+    "off": "ВИМК",
+    "copyright": "Авторське право",
+    "homepage": "Домівка",
+    "report_an_issue": "Повідомити про проблему",
+    "privacy_policy": "Політика приватності",
+    "enable_protection": "Увімкнути захист",
+    "enabled_protection": "Захист увімкнено",
+    "disable_protection": "Вимкнути захист",
+    "disabled_protection": "Захист вимкнено",
+    "refresh_statics": "Оновити статистику",
+    "dns_query": "DNS-запити",
+    "blocked_by": "<0>Заблоковано фільтрами</0>",
+    "stats_malware_phishing": "Заблоковано зловмисних/шахрайських програм",
+    "stats_adult": "Заблоковано вебсайтів для дорослих",
+    "stats_query_domain": "Найчастіші запити доменів",
+    "for_last_24_hours": "за останні 24 години",
+    "for_last_days": "за останній день",
+    "for_last_days_plural": "за останні {{count}} днів",
+    "stats_disabled": "Статистику вимкнено. Ви можете увімкнути її на <0>сторінці налаштувань</0>.",
+    "stats_disabled_short": "Статистику вимкнено",
+    "no_domains_found": "Доменів не знайдено",
+    "requests_count": "Кількість запитів",
+    "top_blocked_domains": "Найчастіше блоковані домени",
+    "top_clients": "Найактивніші клієнти",
+    "no_clients_found": "Клієнтів не знайдено",
+    "general_statistics": "Загальна статистика",
+    "number_of_dns_query_days": "Кількість DNS-запитів, оброблених за останні {{count}} дні",
+    "number_of_dns_query_days_plural": "Кількість DNS-запитів, оброблених за останні {{count}} днів",
+    "number_of_dns_query_24_hours": "Кількість DNS-запитів, оброблених за останні 24 години",
+    "number_of_dns_query_blocked_24_hours": "Кількість DNS-запитів, заблокованих фільтрами і списками блокування hosts",
+    "number_of_dns_query_blocked_24_hours_by_sec": "Кількість DNS-запитів, заблокованих модулем безпеки перегляду AdGuard",
+    "number_of_dns_query_blocked_24_hours_adult": "Кількість заблокованих вебсайтів для дорослих",
+    "enforced_save_search": "Примусовий безпечний пошук",
+    "number_of_dns_query_to_safe_search": "Кількість DNS-запитів до пошукових систем, для яких примусово застосований безпечний пошук",
+    "average_processing_time": "Середній час обробки",
+    "average_processing_time_hint": "Середній час обробки DNS запиту в мілісекундах",
+    "block_domain_use_filters_and_hosts": "Блокувати домени з використанням фільтрів та hosts-файлів",
+    "filters_block_toggle_hint": "Ви можете налаштувати правила блокування в розділі <a>Фільтри</a>.",
+    "use_adguard_browsing_sec": "Використовувати веб-службу безпечного перегляду AdGuard",
+    "use_adguard_browsing_sec_hint": "AdGuard Home перевірятиме, чи додано домен до списку веб-служби безпечного перегляду браузера. Він використовуватиме API для перевірки — на сервер надсилається лише короткий префікс хешу SHA256 доменного імені.",
+    "use_adguard_parental": "Використовувати вебсервіс Батьківського контролю AdGuard",
+    "use_adguard_parental_hint": "AdGuard Home перевірятиме, чи домен містить матеріали для дорослих. Він використовує той самий орієнтований на приватність API, що й веб-служба безпечного перегляду.",
+    "enforce_safe_search": "Використовувати безпечний пошук",
+    "enforce_save_search_hint": "AdGuard Home може примусово застосовувати безпечний пошук в таких пошукових системах: Google, YouTube, Bing, DuckDuckGo, Yandex, Pixabay.",
+    "no_servers_specified": "Не вказано сервери",
+    "general_settings": "Загальні налаштування",
+    "dns_settings": "Налаштування DNS",
+    "dns_blocklists": "Список блокування DNS",
+    "dns_allowlists": "Списки дозволів DNS",
+    "dns_blocklists_desc": "AdGuard Home блокуватиме домени зі списків блокування.",
+    "dns_allowlists_desc": "Домени зі списків дозволів DNS будуть дозволятися, навіть якщо вони знаходяться в будь-якому зі списків блокування.",
+    "custom_filtering_rules": "Власні правила фільтрування",
+    "encryption_settings": "Налаштування шифрування",
+    "dhcp_settings": "Налаштування DHCP",
+    "upstream_dns": "Upstream DNS-сервери",
+    "upstream_dns_help": "Введіть адреси серверів по одній на рядок. <a>Докладніше</a> про налаштування DNS-серверів.",
+    "upstream_dns_configured_in_file": "Налаштовано в {{path}}",
+    "test_upstream_btn": "Тест upstream серверів",
+    "upstreams": "Upstreams",
+    "apply_btn": "Застосувати",
+    "disabled_filtering_toast": "Фільтрування вимкнено",
+    "enabled_filtering_toast": "Фільтрування увімкнено",
+    "disabled_safe_browsing_toast": "Безпечний перегляд вимкнено",
+    "enabled_safe_browsing_toast": "Безпечний перегляд увімкнено",
+    "disabled_parental_toast": "Батьківський контроль вимкнено",
+    "enabled_parental_toast": "Батьківський контроль увімкнено",
+    "disabled_safe_search_toast": "Безпечний пошук вимкнено",
+    "enabled_save_search_toast": "Безпечний пошук увімкнено",
+    "enabled_table_header": "Увімкнено",
+    "name_table_header": "Назва",
+    "list_url_table_header": "URL списку",
+    "rules_count_table_header": "Кількість правил",
+    "last_time_updated_table_header": "Востаннє оновлено",
+    "actions_table_header": "Дії",
+    "request_table_header": "Запит",
+    "edit_table_action": "Редагувати",
+    "delete_table_action": "Видалити",
+    "elapsed": "Витрачений час",
+    "filters_and_hosts_hint": "AdGuard Home розуміє основні правила блокування і синтаксис файлів hosts.",
+    "no_blocklist_added": "Списків блокування не додано",
+    "no_whitelist_added": "Списків дозволів не додано",
+    "add_blocklist": "Додати список блокування",
+    "add_allowlist": "Додати список дозволів",
+    "cancel_btn": "Скасувати",
+    "enter_name_hint": "Введіть назву",
+    "enter_url_or_path_hint": "Уведіть URL-адресу чи абсолютний шлях до списку",
+    "check_updates_btn": "Перевірити оновлення",
+    "new_blocklist": "Новий список блокування",
+    "new_allowlist": "Новий список дозволів",
+    "edit_blocklist": "Змінити список блокування",
+    "edit_allowlist": "Змінити список дозволів",
+    "choose_blocklist": "Виберіть списки блокування",
+    "choose_allowlist": "Обрати списки дозволених сайтів",
+    "enter_valid_blocklist": "Введіть дійсну URL-адресу в список блокування.",
+    "enter_valid_allowlist": "Введіть дійсну URL-адресу в список дозволів.",
+    "form_error_url_format": "Неправильний формат URL",
+    "form_error_url_or_path_format": "Помилкова URL-адреса чи абсолютний шлях до списку",
+    "custom_filter_rules": "Власні правила фільтрування",
+    "custom_filter_rules_hint": "Вводьте одне правило на рядок. Ви можете використовувати правила блокування чи синтаксис файлів hosts.",
+    "examples_title": "Зразки",
+    "example_meaning_filter_block": "блокує доступ до домену example.org та всіх його піддоменів",
+    "example_meaning_filter_whitelist": "розблоковує доступ до домену example.org та всіх його піддоменів",
+    "example_meaning_host_block": "AdGuard Home повертатиме адресу 127.0.0.1 для домену example.org (але не його піддоменів).",
+    "example_comment": "! Так можна додавати коментар",
+    "example_comment_meaning": "просто коментар",
+    "example_comment_hash": "# Це також коментар",
+    "example_regex_meaning": "блокує доступ до доменів, що відповідають вказаному звичайному виразу",
+    "example_upstream_regular": "звичайний DNS (через UDP)",
+    "example_upstream_dot": "зашифрований <0>DNS-over-TLS</0>",
+    "example_upstream_doh": "зашифрований <0>DNS-over-HTTPS</0>",
+    "example_upstream_doq": "зашифрований <0>DNS-over-QUIC</0>",
+    "example_upstream_sdns": "ви можете використовувати <0>DNS Stamps</0> для вирішення <1>DNSCrypt</1> або <2>DNS-over-HTTPS</2>",
+    "example_upstream_tcp": "звичайний DNS (через TCP)",
+    "all_lists_up_to_date_toast": "Всі списки вже оновлені",
+    "updated_upstream_dns_toast": "DNS-сервери оновлено",
+    "dns_test_ok_toast": "Вказані DNS сервери працюють правильно",
+    "dns_test_not_ok_toast": "Сервер «{{key}}»: неможливо використати. Перевірте правильність введення",
+    "unblock": "Дозволити",
+    "block": "Заборонити",
+    "disallow_this_client": "Заборонити цього клієнта",
+    "allow_this_client": "Дозволити цей клієнт",
+    "block_for_this_client_only": "Заборонити тільки цей клієнт",
+    "unblock_for_this_client_only": "Дозволити тільки цей клієнт",
+    "time_table_header": "Час",
+    "date": "Дата",
+    "domain_name_table_header": "Назва домену",
+    "domain_or_client": "Домен чи клієнт",
+    "type_table_header": "Тип",
+    "response_table_header": "Відповідь",
+    "response_code": "Код відповіді",
+    "client_table_header": "Клієнт",
+    "empty_response_status": "Порожньо",
+    "show_all_filter_type": "Показати все",
+    "show_filtered_type": "Показати фільтровані",
+    "no_logs_found": "Немає записів",
+    "refresh_btn": "Оновити",
+    "previous_btn": "Назад",
+    "next_btn": "Далі",
+    "loading_table_status": "Завантаження...",
+    "page_table_footer_text": "Сторінка",
+    "rows_table_footer_text": "рядків",
+    "updated_custom_filtering_toast": "Власні правила фільтрування збережено",
+    "rule_removed_from_custom_filtering_toast": "Правило вилучено з власних правил фільтрування: {{rule}}",
+    "rule_added_to_custom_filtering_toast": "Правило додано до власних правил фільтрування: {{rule}}",
+    "query_log_response_status": "Стан: {{value}}",
+    "query_log_filtered": "Фільтровано з {{filter}}",
+    "query_log_confirm_clear": "Ви впевнені, що хочете цілком очистити журнал запитів?",
+    "query_log_cleared": "Журнал запитів успішно очищено",
+    "query_log_updated": "Журнал запитів успішно оновлено",
+    "query_log_clear": "Очистити журнал запитів",
+    "query_log_retention": "Час зберігання журналу",
+    "query_log_enable": "Увімкнути журнал",
+    "query_log_configuration": "Конфігурація журналу",
+    "query_log_disabled": "Журнал запитів вимкнений. Конфігурацію можна змінити в <0>налаштуваннях</0>",
+    "query_log_strict_search": "Використовуйте подвійні лапки для точного пошуку",
+    "query_log_retention_confirm": "Ви дійсно хочете змінити час зберігання журналу? Якщо ви зменшите значення, деякі дані будуть втрачені",
+    "anonymize_client_ip": "Анонімізація IP-адреси клієнта",
+    "anonymize_client_ip_desc": "Не зберігайте повну IP-адресу клієнта в журналах і статистиці",
+    "dns_config": "Конфігурація DNS-сервера",
+    "dns_cache_config": "Конфігурація кешу DNS",
+    "dns_cache_config_desc": "Тут ви можете налаштувати кеш DNS",
+    "blocking_mode": "Режим блокування",
+    "default": "Типовий",
+    "nxdomain": "NXDOMAIN",
+    "refused": "REFUSED",
+    "null_ip": "Нульовий IP",
+    "custom_ip": "Власний IP",
+    "blocking_ipv4": "Блокування IPv4",
+    "blocking_ipv6": "Блокування IPv6",
+    "dnscrypt": "DNSCrypt",
+    "dns_over_https": "DNS-over-HTTPS",
+    "dns_over_tls": "DNS-over-TLS",
+    "dns_over_quic": "DNS-over-QUIC",
+    "client_id": "Ідентифікатор клієнта",
+    "client_id_placeholder": "Введіть ідентифікатор клієнта",
+    "client_id_desc": "Різні клієнти можуть бути розпізнані завдяки спеціальному ідентифікатору. <a>Докладніше про ідентифікацію клієнтів</a>.",
+    "download_mobileconfig_doh": "Завантажити .mobileconfig для DNS-over-HTTPS",
+    "download_mobileconfig_dot": "Завантажити .mobileconfig для DNS-over-TLS",
+    "download_mobileconfig": "Завантажити файл конфігурації",
+    "plain_dns": "Звичайний DNS",
+    "form_enter_rate_limit": "Уведіть обмеження швидкості",
+    "rate_limit": "Обмеження швидкості",
+    "edns_enable": "Увімкнути відправку EDNS Client Subnet",
+    "edns_cs_desc": "Надсилати підмережі клієнтів на DNS-сервери.",
+    "rate_limit_desc": "Кількість запитів в секунду, які може робити один клієнт. Встановлене значення «0» означатиме необмежену кількість.",
+    "blocking_ipv4_desc": "IP-адреса, яку потрібно видати для заблокованого A запиту",
+    "blocking_ipv6_desc": "IP-адреса, яку потрібно видати для заблокованого АААА запиту",
+    "blocking_mode_default": "Усталено: відповідь із нульовою IP-адресою (0.0.0.0 для A; :: для AAAA), якщо заблоковано правилом у Adblock-стилі; відповідь зазначеною у правилі IP-адресою, якщо заблокувано правилом у hosts-стилі",
+    "blocking_mode_refused": "ВІДМОВЛЕНО: Відповісти з кодом ВІДМОВЛЕНО",
+    "blocking_mode_nxdomain": "NXDOMAIN: Відповісти з кодом NXDOMAIN",
+    "blocking_mode_null_ip": "Нульовий IP: Відповісти з нульовою IP-адресою (0.0.0.0 для A; :: для AAAA)",
+    "blocking_mode_custom_ip": "Спеціальна IP-адреса: Відповісти із вручну встановленою IP-адресою",
+    "upstream_dns_client_desc": "Якщо це поле залишатиметься порожнім, AdGuard Home використовуватиме сервери, вказані в <0>налаштуваннях DNS</0>.",
+    "tracker_source": "Джерело відстежувача",
+    "source_label": "Джерело",
+    "found_in_known_domain_db": "Знайдений у базі даних відомих доменів.",
+    "category_label": "Категорія",
+    "rule_label": "Правило(-а)",
+    "list_label": "Список",
+    "unknown_filter": "Невідомий фільтр {{filterId}}",
+    "known_tracker": "Відомі трекери",
+    "install_welcome_title": "Вітаємо в AdGuard Home!",
+    "install_welcome_desc": "AdGuard Home — це мережевий DNS-сервер, що блокує рекламу та відстеження. Його мета — надати вам контроль над усією мережею та всіма пристроями в ній без потреби використання програми на стороні клієнта.",
+    "install_settings_title": "Веб-інтерфейс адміністратора",
+    "install_settings_listen": "Мережевий інтерфейс",
+    "install_settings_port": "Порт",
+    "install_settings_interface_link": "Веб-інтерфейс адміністратора AdGuard Home буде доступний за такими адресами:",
+    "form_error_port": "Уведіть правильне значення порту",
+    "install_settings_dns": "DNS-сервер",
+    "install_settings_dns_desc": "Вам потрібно буде налаштувати свої пристрої або маршрутизатор для використання DNS-сервера за такими адресами:",
+    "install_settings_all_interfaces": "Усі інтерфейси",
+    "install_auth_title": "Авторизація",
+    "install_auth_desc": "Необходно налаштувати автентифікацію паролем для вебінтерфейсу AdGuard Home. Навіть якщо він доступний лише у вашій локальній мережі, важливо захистити його від необмеженого доступу.\n\nДолжна быть настроена аутентификация паролем для веб-интерфейса AdGuard Home. Даже если он доступен только в вашей локальной сети, важно защитить его от неограниченного доступа.",
+    "install_auth_username": "Ім'я користувача",
+    "install_auth_password": "Пароль",
+    "install_auth_confirm": "Підтвердьте пароль",
+    "install_auth_username_enter": "Уведіть ім'я користувача",
+    "install_auth_password_enter": "Введіть пароль",
+    "install_step": "Крок",
+    "install_devices_title": "Налаштуйте ваші пристрої",
+    "install_devices_desc": "Щоби розпочати використовувати AdGuard Home, вам потрібно налаштувати ваші пристої для його використання.",
+    "install_submit_title": "Вітаємо!",
+    "install_submit_desc": "Процедура налаштування завершена і тепер все готово, аби почати користуватися AdGuard Home.",
+    "install_devices_router": "Роутер",
+    "install_devices_router_desc": "Це налаштування буде автоматично охоплювати всі пристрої, що під'єднано до домашнього маршрутизатора. Вам не потрібно буде налаштовувати кожен з них вручну.",
+    "install_devices_address": "DNS-сервер AdGuard Home прослуховує наступні адреси",
+    "install_devices_router_list_1": "Відкрийте налаштування маршрутизатора. Зазвичай ви можете отримати до нього доступ із браузера за допомогою URL-адреси, наприклад, http://192.168.0.1/ або http://192.168.1.1/. Можливо, треба буде ввести пароль. Якщо ви його не знаєте, часто можна скинути пароль, натиснувши кнопку на самому маршрутизаторі. Для деяких маршрутизаторів потрібна спеціальна програма, яка в такому випадку повинна бути вже встановлена на вашому комп’ютері чи телефоні.",
+    "install_devices_router_list_2": "Знайдіть налаштування DHCP/DNS. Шукайте літери DNS поруч із полем, в яке можна ввести два або три набори чисел, кожен з яких розбитий на чотири групи від однієї до трьох цифр.",
+    "install_devices_router_list_3": "Введіть туди адреси вашого домашнього сервера AdGuard.",
+    "install_devices_router_list_4": "Ви не можете встановити власний DNS-сервер на деяких типах маршрутизаторів. У цьому разі вам може допомогти налаштування AdGuard Home в якості <0>DHCP-сервера</0>. В іншому разі вам потрібно знайти інструкцію щодо налаштування DNS-сервера для вашої конкретної моделі маршрутизатора.",
+    "install_devices_windows_list_1": "Відкрийте Панель керування через меню «Пуск» або пошук Windows.",
+    "install_devices_windows_list_2": "Перейдіть до категорії Мережа й Інтернет, а потім до Центру мереж і спільного доступу.",
+    "install_devices_windows_list_3": "У лівій частині екрана знайдіть текст «Змінити настройки адаптера» та натисніть на нього.",
+    "install_devices_windows_list_4": "Виберіть своє активне з'єднання, клацніть на ньому правою кнопкою миші та виберіть Властивості.",
+    "install_devices_windows_list_5": "Знайдіть у списку пункт «Internet Protocol Version 4 (TCP/IPv4)» або «Internet Protocol Version 6 (TCP/IPv6)», виберіть його та натисніть кнопку Властивості ще раз.",
+    "install_devices_windows_list_6": "Виберіть «Використовувати наступні адреси DNS-серверів» та введіть адреси вашого сервера AdGuard Home.",
+    "install_devices_macos_list_1": "Клацніть на піктограму Apple і перейдіть до Системних налаштувань.",
+    "install_devices_macos_list_2": "Клацніть на Мережа.",
+    "install_devices_macos_list_3": "Виберіть перше з'єднання зі списку та натисніть кнопку Додатково.",
+    "install_devices_macos_list_4": "Виберіть вкладку DNS і введіть адреси сервера AdGuard Home.",
+    "install_devices_android_list_1": "На головному екрані меню Android торкніться Налаштування.",
+    "install_devices_android_list_2": "У меню торкніться Wi-Fi. З'явиться екран із переліком усіх доступних мереж (неможливо встановити власний DNS для мобільного з'єднання).",
+    "install_devices_android_list_3": "Довго натисніть на мережу, до якої ви приєднані, та торкніться «Змінити мережу».",
+    "install_devices_android_list_4": "На деяких пристроях вам може знадобитися встановити прапорець Додатково, щоб побачити подальші налаштування. Щоб відредагувати налаштування DNS для Android, вам потрібно буде переключити налаштування IP з DHCP на статичні.",
+    "install_devices_android_list_5": "Змініть встановлені значення DNS 1 і DNS 2 на адреси вашого домашнього сервера AdGuard.",
+    "install_devices_ios_list_1": "На головному екрані торкніться Налаштування.",
+    "install_devices_ios_list_2": "Виберіть Wi-Fi у меню ліворуч (неможливо налаштувати DNS для мобільних мереж).",
+    "install_devices_ios_list_3": "Натисніть на назву поточно активної мережі.",
+    "install_devices_ios_list_4": "У полі DNS введіть адреси вашого сервера AdGuard Home.",
+    "get_started": "Розпочати",
+    "next": "Наступні",
+    "open_dashboard": "Відкрити інформаційну панель",
+    "install_saved": "Збережено успішно",
+    "encryption_title": "Шифрування",
+    "encryption_desc": "Підтримка шифрування (HTTPS/TLS) як для DNS так і для веб-інтерфейсу адміністратора",
+    "encryption_config_saved": "Конфігурацію шифрування збережено",
+    "encryption_server": "Назва сервера",
+    "encryption_server_enter": "Введіть ваше доменне ім'я",
+    "encryption_server_desc": "Для використання HTTPS вам потрібно ввести назву сервера, який відповідає вашому SSL-сертифікату або сертифікату з підтримкою піддоменів. Якщо значення не вказано, то сервер буде приймати TLS-з'єднання для будь-якого домену.",
+    "encryption_redirect": "Автоматично перенаправляти на HTTPS",
+    "encryption_redirect_desc": "Якщо встановлено, AdGuard Home автоматично перенаправить вас з HTTP на адреси HTTPS.",
+    "encryption_https": "Порт HTTPS",
+    "encryption_https_desc": "Якщо HTTPS-порт налаштовано, інтерфейс адміністратора AdGuard Home буде доступний через HTTPS, а також DNS-over-HTTPS-сервер буде доступний за адресою /dns-query.",
+    "encryption_dot": "Порт DNS-over-TLS",
+    "encryption_dot_desc": "Якщо цей порт налаштовано, AdGuard Home запустить на цьому порту сервер DNS-over-TLS.",
+    "encryption_doq": "Порт DNS-over-QUIC",
+    "encryption_doq_desc": "Якщо цей порт налаштовано, AdGuard Home запустить на цьому порту сервер DNS-over-QUIC. Це експериментально і може бути ненадійним. Крім того, зараз не так багато клієнтів, які це підтримують.",
+    "encryption_certificates": "Сертифікати",
+    "encryption_certificates_desc": "Для використання шифрування потрібно надати дійсний ланцюжок сертифікатів SSL для вашого домену. Ви можете отримати безкоштовний сертифікат на <0>{{link}}</0> або придбати його в одному з надійних Центрів Сертифікації.",
+    "encryption_certificates_input": "Скопіюйте/вставте сюди свої кодовані PEM сертифікати.",
+    "encryption_status": "Статус",
+    "encryption_expire": "Закічнується",
+    "encryption_key": "Приватний ключ",
+    "encryption_key_input": "Скопіюйте/вставте сюди свій приватний ключ кодований PEM для вашого сертифіката.",
+    "encryption_enable": "Увімкнути шифрування (HTTPS, DNS-over-HTTPS і DNS-over-TLS)",
+    "encryption_enable_desc": "Якщо ввімкнено шифрування, інтерфейс адміністратора AdGuard Home буде працювати через HTTPS, а DNS-сервер буде прослуховувати запити через DNS-over-HTTPS і DNS-over-TLS.",
+    "encryption_chain_valid": "Ланцюжок сертифікатів дійсний",
+    "encryption_chain_invalid": "Ланцюжок сертифікатів не дійсний",
+    "encryption_key_valid": "Це дійсний приватний ключ {{type}}",
+    "encryption_key_invalid": "Це недійсний приватний ключ {{type}}",
+    "encryption_subject": "Обє'кт",
+    "encryption_issuer": "Видавець",
+    "encryption_hostnames": "Назви вузлів",
+    "encryption_reset": "Ви впевнені, що хочете скинути налаштування шифрування?",
+    "topline_expiring_certificate": "Ваш сертифікат SSL скоро закінчиться. Оновіть <0>Налаштування шифрування</0>.",
+    "topline_expired_certificate": "Термін дії вашого сертифіката SSL закінчився. Оновіть <0>Налаштування шифрування</0>.",
+    "form_error_port_range": "Введіть значення порту в діапазоні 80−65535",
+    "form_error_port_unsafe": "Це небезпечний порт",
+    "form_error_equal": "Мають бути різні значення",
+    "form_error_password": "Пароль не співпадає",
+    "reset_settings": "Скинути налаштування",
+    "update_announcement": "AdGuard Home {{version}} тепер доступний! <0>Докладніше</0>.",
+    "setup_guide": "Посібник з налаштування",
+    "dns_addresses": "DNS-адреси",
+    "dns_start": "DNS-сервер запускається",
+    "dns_status_error": "Помилка перевірки стану сервера DNS",
+    "down": "Недоступний",
+    "fix": "Виправити",
+    "dns_providers": "<0>Список відомих DNS-провайдерів</0> на вибір.",
+    "update_now": "Оновити зараз",
+    "update_failed": "Помилка автоматичного оновлення. Будь ласка, <a>виконайте ці кроки</a> аби оновити вручну.",
+    "processing_update": "Зачекайте будь ласка, AdGuard Home оновлюється",
+    "clients_title": "Клієнти",
+    "clients_desc": "Налаштуйте пристрої, під'єднані до AdGuard Home",
+    "settings_global": "Загальні",
+    "settings_custom": "Власні",
+    "table_client": "Клієнт",
+    "table_name": "Назва",
+    "save_btn": "Зберегти",
+    "client_add": "Додати Клієнта",
+    "client_new": "Новий Клієнт",
+    "client_edit": "Редагувати Клієнта",
+    "client_identifier": "Ідентифікатор",
+    "ip_address": "IP-адреса",
+    "client_identifier_desc": "Клієнтів можна ідентифікувати за IP-, CIDR-, MAC-адресами або ж за спеціальним клієнтським ідентифікатором (можливий для DoT, DoH та DoQ). <0>Докладніше про ідентифікацію клієнтів</0>.",
+    "form_enter_ip": "Введіть IP",
+    "form_enter_subnet_ip": "Введіть IP-адресу в підмережі «{{cidr}}»",
+    "form_enter_mac": "Введіть MAC",
+    "form_enter_id": "Введіть ідентифікатор",
+    "form_add_id": "Додати ідентифікатор",
+    "form_client_name": "Введіть ім'я клієнта",
+    "name": "Ім'я",
+    "client_global_settings": "Використати загальні налаштування",
+    "client_deleted": "Клієнта «{{key}}» успішно видалено",
+    "client_added": "Клієнта «{{key}}» успішно додано",
+    "client_updated": "Клієнта «{{key}}» успішно оновлено",
+    "clients_not_found": "Клієнтів не знайдено",
+    "client_confirm_delete": "Ви впевнені, що хочете видалити клієнта «{{key}}»?",
+    "list_confirm_delete": "Ви впевнені, що хочете видалити цей список?",
+    "auto_clients_title": "Клієнти (поза налаштуванням)",
+    "auto_clients_desc": "Дані про клієнтів, які використовують AdGuard Home, але не зберігаються в конфігурації",
+    "access_title": "Налаштування доступу",
+    "access_desc": "Тут ви можете налаштувати правила доступу для DNS-сервера AdGuard Home.",
+    "access_allowed_title": "Дозволені клієнти",
+    "access_allowed_desc": "Перелік CIDR-, IP-адрес та клієнтських ідентифікаторів. Якщо налаштовано, AdGuard Home прийматиме запити лише від цих клієнтів.",
+    "access_disallowed_title": "Заборонені клієнти",
+    "access_disallowed_desc": "Перелік CIDR-, IP-адрес та клієнтських ідентифікаторів. Якщо налаштовано, AdGuard Home буде скасовувати запити від цих клієнтів. Проте якщо налаштовано список дозволених клієнтів, то це поле проігнорується.",
+    "access_blocked_title": "Заборонені домени",
+    "access_blocked_desc": "Не плутайте з фільтрами. AdGuard Home буде ігнорувати DNS-запити з цими доменами, такі запити навіть не будуть записані до журналу. Ви можете вказати точні доменні імена, замінні знаки та правила фільтрування URL-адрес, наприклад, 'example.org', '*.example.org' або '||example.org^' відповідно.",
+    "access_settings_saved": "Налаштування доступу успішно збережено",
+    "updates_checked": "Оновлення успішно перевірені",
+    "updates_version_equal": "AdGuard Home останньої версії",
+    "check_updates_now": "Перевірити наявність оновлень",
+    "dns_privacy": "Конфіденційність DNS",
+    "setup_dns_privacy_1": "<0>DNS-over-TLS: </0>Використайте рядок <1>{{address}}</1>.",
+    "setup_dns_privacy_2": "<0>DNS-over-HTTPS:</0> Використайте рядок <1>{{address}}</1>.",
+    "setup_dns_privacy_3": "<0>Ось перелік програмного забезпечення, яке можете використати.</0>",
+    "setup_dns_privacy_4": "На пристрої iOS 14 або macOS Big Sur ви можете завантажити спеціальний файл .mobileconfig, який додасть до налаштувань DNS сервери <highlight>DNS-over-HTTPS</highlight> або <highlight>DNS-over-TLS</highlight>.",
+    "setup_dns_privacy_android_1": "Android 9 підтримує DNS-over-TLS. Щоб його налаштувати, перейдіть у Налаштування → Мережа та Інтернет → Додатково → Приватний DNS і введіть там свій домен.",
+    "setup_dns_privacy_android_2": "<0>AdGuard для Android</0> підтримує <1>DNS-over-HTTPS</1> і <1>DNS-over-TLS</1>.",
+    "setup_dns_privacy_android_3": "<0>Intra</0> додає підтримку <1>DNS-over-HTTPS</1> для Android.",
+    "setup_dns_privacy_ios_1": "<0>DNSCloak</0> підтримує <1>DNS-over-HTTPS</1>, але для того, щоб налаштувати його на використання власного сервера, вам потрібно буде створити для нього <2>штамп DNS</2>.",
+    "setup_dns_privacy_ios_2": "<0>AdGuard для iOS</0> підтримує налаштування <1>DNS over-HTTPS</1> і <1>DNS over over TLS</1>.",
+    "setup_dns_privacy_other_title": "Інші реалізації",
+    "setup_dns_privacy_other_1": "Сам AdGuard Home може слугувати захищеним клієнтом DNS на будь-якій платформі.",
+    "setup_dns_privacy_other_2": "<0>dnsproxy</0> підтримує всі відомі захищені протоколи DNS.",
+    "setup_dns_privacy_other_3": "<0>dnscrypt-proxy</0> підтримує <1>DNS-over-HTTPS</1>.",
+    "setup_dns_privacy_other_4": "<0>Mozilla Firefox</0> підтримує <1>DNS-over-HTTPS</1>.",
+    "setup_dns_privacy_other_5": "Ви знайдете більше реалізацій <0>тут</0> та <1>тут</1>.",
+    "setup_dns_privacy_ioc_mac": "Конфігурація для iOS та macOS",
+    "setup_dns_notice": "Для використання <1>DNS-over-HTTPS</1> або <1>DNS-over-TLS</1>, вам потрібно <0>налаштувати Шифрування</0> в налаштуваннях AdGuard Home.",
+    "rewrite_added": "Перезапис DNS для «{{key}}» успішно додано",
+    "rewrite_deleted": "Перезапис DNS для «{{key}}» успішно видалено",
+    "rewrite_add": "Додати перезапис DNS",
+    "rewrite_not_found": "Перезаписів DNS не знайдено",
+    "rewrite_confirm_delete": "Ви впевнені, що хочете видалити перезапис DNS для «{{key}}»?",
+    "rewrite_desc": "Дозволяє легко налаштувати власну відповідь DNS для певного доменного імені.",
+    "rewrite_applied": "Застосовано правило перезапису",
+    "rewrite_hosts_applied": "Перезаписано правилом hosts-файлу",
+    "dns_rewrites": "DNS перезаписи",
+    "form_domain": "Введіть доменне ім’я або підстановний знак",
+    "form_answer": "Введіть IP-адресу або доменне ім'я",
+    "form_error_domain_format": "Неправильний формат домену",
+    "form_error_answer_format": "Неправильний формат відопвіді",
+    "configure": "Налаштувати",
+    "main_settings": "Головні налаштування",
+    "block_services": "Блокувати конкретні сервіси",
+    "blocked_services": "Заблоковані сервіси",
+    "blocked_services_desc": "Дозволяє швидко блокувати популярні сайти та сервіси.",
+    "blocked_services_saved": "Заблоковані сервіси успішно збережено",
+    "blocked_services_global": "Використовувати глобально заблоковані сервіси",
+    "blocked_service": "Заблокований сервіс",
+    "block_all": "Блокувати все",
+    "unblock_all": "Розблокувати все",
+    "encryption_certificate_path": "Шлях до сертифіката",
+    "encryption_private_key_path": "Шлях до приватного ключа",
+    "encryption_certificates_source_path": "Вказати шлях до сертифікату",
+    "encryption_certificates_source_content": "Вставити вміст сертифікату",
+    "encryption_key_source_path": "Вказати приватний ключ",
+    "encryption_key_source_content": "Вставити вміст приватного ключа",
+    "stats_params": "Налаштування статистики",
+    "config_successfully_saved": "Конфігурацію успішно збережено",
+    "interval_6_hour": "6 годин",
+    "interval_24_hour": "24 години",
+    "interval_days": "{{count}} день",
+    "interval_days_plural": "{{count}} днів",
+    "domain": "Домен",
+    "punycode": "Punycode",
+    "answer": "Відповідь",
+    "filter_added_successfully": "Фільтр успішно додано",
+    "filter_removed_successfully": "Фільтр успішно видалено",
+    "filter_updated": "Фільтр успішно оновлено",
+    "statistics_configuration": "Налаштування статистики",
+    "statistics_retention": "Збереження статистики",
+    "statistics_retention_desc": "Якщо зменшити значення інтервалу, деякі дані будуть втрачені",
+    "statistics_clear": "Очистити статистику",
+    "statistics_clear_confirm": "Ви впевнені, що хочете очистити статистику?",
+    "statistics_retention_confirm": "Ви впевнені, що хочете змінити тривалість статистики? Якщо зменшити значення інтервалу, деякі дані будуть втрачені",
+    "statistics_cleared": "Статистика успішно очищена",
+    "statistics_enable": "Увімкнути статистику",
+    "interval_hours": "{{count}} година",
+    "interval_hours_plural": "{{count}} годин(и)",
+    "filters_configuration": "Конфігурація фільтрів",
+    "filters_enable": "Увімкнути фільтри",
+    "filters_interval": "Інтервал оновлення фільтрів",
+    "disabled": "Вимкнено",
+    "username_label": "Ім'я користувача",
+    "username_placeholder": "Уведіть ім'я користувача",
+    "password_label": "Пароль",
+    "password_placeholder": "Введіть пароль",
+    "sign_in": "Увійти",
+    "sign_out": "Вийти",
+    "forgot_password": "Забули пароль?",
+    "forgot_password_desc": "Виконайте <0>ці кроки</0>, щоб створити новий пароль для свого імені користувача.",
+    "location": "Місцезнаходження",
+    "orgname": "Назва організації",
+    "netname": "Назва мережі",
+    "network": "Мережа",
+    "descr": "Опис",
+    "whois": "Whois",
+    "filtering_rules_learn_more": "<0>Як створити власні списки блокування</0>.",
+    "blocked_by_response": "У відповідь заблоковано по CNAME або IP",
+    "blocked_by_cname_or_ip": "Заблоковано по CNAME або IP",
+    "try_again": "Спробувати знову",
+    "domain_desc": "Введіть доменне ім’я або підстановний знак, який потрібно переписати.",
+    "example_rewrite_domain": "перепишіть відповіді лише для цього доменного імені.",
+    "example_rewrite_wildcard": "перепишіть відповіді для всіх субдоменів <0>example.org</0>.",
+    "rewrite_ip_address": "IP-адреса: використайте цю IP-адресу у відповіді A або AAAA",
+    "rewrite_domain_name": "Доменне ім’я: додайте запис CNAME",
+    "rewrite_A": "<0>A</0>: спеціальне значення, зберігайте <0>A</0> записи із вищого сервера",
+    "rewrite_AAAA": "<0>AAAA</0>: спеціальне значення, зберігайте <0>AAAA</0> записи із вищого сервера",
+    "disable_ipv6": "Вимкнути вирішення IPv6-адрес",
+    "disable_ipv6_desc": "Ігнорувати DNS-запити для IPv6-адрес (тип AAAA).",
+    "fastest_addr": "Найшвидша IP-адреса",
+    "fastest_addr_desc": "Опитати всі DNS-сервери й повернути найшвидшу IP-адресу серед усіх наданих. Це сповільнить швидкість DNS-запитів, оскільки AdGuard Home повинен буде чекати відповіді усіх DNS-серверів, але водночас може покращити якість з'єднання.",
+    "autofix_warning_text": "Якщо ви натиснете «Виправити», AdGuard Home налаштує вашу систему на використання DNS-сервера AdGuard Home.",
+    "autofix_warning_list": "Це виконає наступні завдання: <0>Деактивує систему DNSStubListener</0> <0>Змінить адресу DNS сервера на 127.0.0.1</0> <0>Замінить символічне посилання /etc/resolv.conf на /run/systemd/resolve/resolv.conf</0> <0>Зупинить DNSStubListener (перезапустить сервіс systemd-resolved)</0>",
+    "autofix_warning_result": "В результаті буде усталено, що усі DNS-запити вашої системи будуть опрацьовані AdGuard Home.",
+    "tags_title": "Теги",
+    "tags_desc": "Ви можете вибрати теги, які відповідають клієнту. Теги можна використати в правилах фільтрування, щоб точніше застосовувати їх. <0>Докладніше</0>",
+    "form_select_tags": "Виберіть теги клієнта",
+    "check_title": "Перевірте фільтрування",
+    "check_desc": "Перевірте чи фільтрується назва вузла",
+    "check": "Перевірити",
+    "form_enter_host": "Введіть назву вузла",
+    "filtered_custom_rules": "Відфільтровано за власними правилами фільтрування",
+    "choose_from_list": "Виберіть зі списку",
+    "add_custom_list": "Додати власний список",
+    "host_whitelisted": "Вузол додано до списку дозволів",
+    "check_ip": "IP адреси: {{ip}}",
+    "check_cname": "CNAME: {{cname}}",
+    "check_reason": "Причина: {{reason}}",
+    "check_service": "Назва сервісу: {{service}}",
+    "service_name": "Назва сервісу",
+    "check_not_found": "Не знайдено у ваших списках фільтрів",
+    "client_confirm_block": "Ви впевнені, що хочете заблокувати клієнта «{{ip}}»?",
+    "client_confirm_unblock": "Ви впевнені, що хочете розблокувати клієнт «{{ip}}»?",
+    "client_blocked": "Клієнта «{{ip}}» успішно заблоковано",
+    "client_unblocked": "Клієнта «{{ip}}» успішно розблоковано",
+    "static_ip": "Статична IP-адреса",
+    "static_ip_desc": "AdGuard Home - це сервер, тому йому потрібна статична IP-адреса для нормальної роботи. В іншому випадку, в певний момент, ваш маршрутизатор може призначити іншу IP-адресу цьому пристрою.",
+    "set_static_ip": "Встановити статичну IP-адресу",
+    "install_static_ok": "Гарні новини! Статична IP-адреса вже налаштована",
+    "install_static_error": "AdGuard Home не може налаштувати його автоматично для цього мережевого інтерфейсу. Будь ласка, шукайте інструкції як це зробити вручну.",
+    "install_static_configure": "AdGuard Home виявив, що використовується динамічна IP-адреса — <0>{{ip}}</0>. Ви хочете встановити її як свою статичну адресу?",
+    "confirm_static_ip": "AdGuard Home налаштує {{ip}} як вашу статичну IP-адресу. Ви хочете продовжити?",
+    "list_updated": "{{count}} список оновлено",
+    "list_updated_plural": "{{count}} списки оновлено",
+    "dnssec_enable": "Увімкнути DNSSEC",
+    "dnssec_enable_desc": "Встановити прапорець DNSSEC для вихідних DNS запитів та перевірити результат (потрібен розпізнавач з підтримкою DNSSEC).",
+    "validated_with_dnssec": "Засвідчено DNSSEC",
+    "all_queries": "Усі запити",
+    "show_blocked_responses": "Заблоковані",
+    "show_whitelisted_responses": "Дозволені",
+    "show_processed_responses": "Оброблені",
+    "blocked_safebrowsing": "Безпечний перегляд заблоковано",
+    "blocked_adult_websites": "Заблоковані вебсайти для дорослих",
+    "blocked_threats": "Заблоковано загроз",
+    "allowed": "Дозволено",
+    "filtered": "Відфільтровано",
+    "rewritten": "Перезаписано",
+    "safe_search": "Безпечний пошук",
+    "blocklist": "Список блокування",
+    "milliseconds_abbreviation": "мс",
+    "cache_size": "Розмір кешу",
+    "cache_size_desc": "Розмір кешу DNS (у байтах)",
+    "cache_ttl_min_override": "Замінити мінімальний TTL",
+    "cache_ttl_max_override": "Замінити максимальний TTL",
+    "enter_cache_size": "Введіть розмір кешу (байт)",
+    "enter_cache_ttl_min_override": "Введіть мінімальний TTL (секунди)",
+    "enter_cache_ttl_max_override": "Введіть максимальний TTL (секунди)",
+    "cache_ttl_min_override_desc": "Розширити короткі значення time-to-live (секунди) отримані від основного сервера під час кешування відповідей DNS",
+    "cache_ttl_max_override_desc": "Встановіть максимальне значення time-to-live (секунди) для записів у кеші DNS",
+    "ttl_cache_validation": "Мінімальне значення TTL кеш-пам'яті має бути меншим або рівним максимальному значенню",
+    "cache_optimistic": "Оптимістичне кешування",
+    "cache_optimistic_desc": "AdGuard Home буде відповідати з кешу, навіть якщо відповіді в ньому застарілі, а також спробує оновити їх.",
+    "filter_category_general": "Загальні",
+    "filter_category_security": "Безпека",
+    "filter_category_regional": "Регіональні",
+    "filter_category_other": "Інші",
+    "filter_category_general_desc": "Списки, які блокують відстеження та рекламу на більшості пристроїв",
+    "filter_category_security_desc": "Фільтри, які спеціалізуються на блокуванні зловмисних програм, фішингу та шахрайських доменів",
+    "filter_category_regional_desc": "Списки, орієнтовані на регіональні оголошення та сервери відстеження",
+    "filter_category_other_desc": "Інші списки блокувань",
+    "setup_config_to_enable_dhcp_server": "Налаштуйте конфігурацію для увімкнення DHCP-сервера",
+    "original_response": "Оригінальна відповідь",
+    "click_to_view_queries": "Клацніть, щоб переглянути запити",
+    "port_53_faq_link": "Порт 53 часто зайнятий службами «DNSStubListener» або «systemd-resolved». <0>Як це вирішити</0>.",
+    "adg_will_drop_dns_queries": "AdGuard Home буде видаляти всі запити DNS із цього клієнта.",
+    "filter_allowlist": "ПОПЕРЕДЖЕННЯ: Таким чином ви також виключите правило «{{disallowed_rule}}» зі списку дозволених клієнтів.",
+    "last_rule_in_allowlist": "Неможливо заблокувати цього клієнта, тому що правило «{{disallowed_rule}}» ВИМКНЕ режим списку дозволів.",
+    "experimental": "Експериментальний",
+    "use_saved_key": "Використати раніше збережений ключ"
+}
diff --git a/client/src/i18n.js b/client/src/i18n.js
index 7e3ffc19..8f0e46ea 100644
--- a/client/src/i18n.js
+++ b/client/src/i18n.js
@@ -12,6 +12,7 @@ import de from './__locales/de.json';
 import en from './__locales/en.json';
 import es from './__locales/es.json';
 import fa from './__locales/fa.json';
+import fi from './__locales/fi.json';
 import fr from './__locales/fr.json';
 import hr from './__locales/hr.json';
 import hu from './__locales/hu.json';
@@ -33,6 +34,7 @@ import srCS from './__locales/sr-cs.json';
 import sv from './__locales/sv.json';
 import th from './__locales/th.json';
 import tr from './__locales/tr.json';
+import uk from './__locales/uk.json';
 import vi from './__locales/vi.json';
 import zhCN from './__locales/zh-cn.json';
 import zhHK from './__locales/zh-hk.json';
@@ -40,108 +42,42 @@ import zhTW from './__locales/zh-tw.json';
 import { setHtmlLangAttr } from './helpers/helpers';
 
 const resources = {
-    en: {
-        translation: en,
-    },
-    enUS: {
-        translation: en,
-    },
-    vi: {
-        translation: vi,
-    },
-    ru: {
-        translation: ru,
-    },
-    es: {
-        translation: es,
-    },
-    fr: {
-        translation: fr,
-    },
-    ja: {
-        translation: ja,
-    },
-    sv: {
-        translation: sv,
-    },
-    'pt-br': {
-        translation: ptBR,
-    },
-    'zh-hk': {
-        translation: zhHK,
-    },
-    'zh-tw': {
-        translation: zhTW,
-    },
-    bg: {
-        translation: bg,
-    },
-    be: {
-        translation: be,
-    },
-    'zh-cn': {
-        translation: zhCN,
-    },
-    cs: {
-        translation: cs,
-    },
-    da: {
-        translation: da,
-    },
-    de: {
-        translation: de,
-    },
-    id: {
-        translation: id,
-    },
-    it: {
-        translation: it,
-    },
-    ko: {
-        translation: ko,
-    },
-    no: {
-        translation: no,
-    },
-    nl: {
-        translation: nl,
-    },
-    pl: {
-        translation: pl,
-    },
-    'pt-pt': {
-        translation: ptPT,
-    },
-    sk: {
-        translation: sk,
-    },
-    sl: {
-        translation: sl,
-    },
-    tr: {
-        translation: tr,
-    },
-    'sr-cs': {
-        translation: srCS,
-    },
-    hr: {
-        translation: hr,
-    },
-    hu: {
-        translation: hu,
-    },
-    fa: {
-        translation: fa,
-    },
-    th: {
-        translation: th,
-    },
-    ro: {
-        translation: ro,
-    },
-    'si-lk': {
-        translation: siLk,
-    },
+    be: { translation: be },
+    bg: { translation: bg },
+    cs: { translation: cs },
+    da: { translation: da },
+    de: { translation: de },
+    en: { translation: en },
+    'en-us': { translation: en },
+    es: { translation: es },
+    fa: { translation: fa },
+    fi: { translation: fi },
+    fr: { translation: fr },
+    hr: { translation: hr },
+    hu: { translation: hu },
+    id: { translation: id },
+    it: { translation: it },
+    ja: { translation: ja },
+    ko: { translation: ko },
+    nl: { translation: nl },
+    no: { translation: no },
+    pl: { translation: pl },
+    'pt-br': { translation: ptBR },
+    'pt-pt': { translation: ptPT },
+    ro: { translation: ro },
+    ru: { translation: ru },
+    'si-lk': { translation: siLk },
+    sk: { translation: sk },
+    sl: { translation: sl },
+    'sr-cs': { translation: srCS },
+    sv: { translation: sv },
+    th: { translation: th },
+    tr: { translation: tr },
+    uk: { translation: uk },
+    vi: { translation: vi },
+    'zh-cn': { translation: zhCN },
+    'zh-hk': { translation: zhHK },
+    'zh-tw': { translation: zhTW },
 };
 
 const availableLanguages = Object.keys(LANGUAGES);
diff --git a/internal/home/i18n.go b/internal/home/i18n.go
index 26b8a3ac..d46bd6c6 100644
--- a/internal/home/i18n.go
+++ b/internal/home/i18n.go
@@ -10,7 +10,7 @@ import (
 	"github.com/AdguardTeam/golibs/stringutil"
 )
 
-// TODO(a.garipov): Get rid of a global variable?
+// TODO(a.garipov): Get rid of a global or generate from .twosky.json.
 var allowedLanguages = stringutil.NewSet(
 	"be",
 	"bg",
@@ -20,6 +20,7 @@ var allowedLanguages = stringutil.NewSet(
 	"en",
 	"es",
 	"fa",
+	"fi",
 	"fr",
 	"hr",
 	"hu",
@@ -41,6 +42,7 @@ var allowedLanguages = stringutil.NewSet(
 	"sv",
 	"th",
 	"tr",
+	"uk",
 	"vi",
 	"zh-cn",
 	"zh-hk",