Full rework of the query log

Squashed commit of the following:

commit e8a72eb223551f17e637136713dae03accf8ab9e
Author: Andrey Meshkov <am@adguard.com>
Date:   Thu Jun 18 00:31:53 2020 +0300

    fix race in whois test

commit 801d28197f888fa21f83c9a0b49e3c9472c08513
Merge: 9d9787fd b1c951fb
Author: Andrey Meshkov <am@adguard.com>
Date:   Thu Jun 18 00:28:13 2020 +0300

    Merge branch 'master' into feature/1421

commit 9d9787fd79b17f76c7baed52c12ac462fd00a5e4
Merge: 4ce337ca 08e238ab
Author: Andrey Meshkov <am@adguard.com>
Date:   Thu Jun 18 00:27:32 2020 +0300

    Merge

commit 4ce337ca7aec163edf87a038bb25fb44e64f8613
Author: Andrey Meshkov <am@adguard.com>
Date:   Thu Jun 18 00:22:49 2020 +0300

    -(home): fix whois test

commit 08e238ab0e723b1e354f58245e9a8d5017b392c9
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Thu Jun 18 00:13:41 2020 +0300

    Add comments

commit 5f108065952bcc25dce1c2eee3f9401d2641a6e9
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Jun 17 23:47:50 2020 +0300

    Make tooltip position absolute for touch

commit 4c30a583165e5d007d4b01b657de8751a7bd8c7b
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Jun 17 20:39:44 2020 +0300

    Prevent scroll hide for touch devices

commit 62da97931f5921613762614717c62c77ddb6b8db
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Jun 17 20:06:24 2020 +0300

    Review changes: ipad tooltip

commit 12dddcca8caca51c157b5d25dfa3ca03ba7f0c06
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Jun 17 16:59:16 2020 +0300

    Add close tooltip event for ipad

commit 62191e41d5bf67317f9f1dc6c6af08cbabb4bf90
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Jun 17 16:39:40 2020 +0300

    Add success toast on logs refresh

commit 2ebdd6a8124269d737c8060c3247aaf35d85cb8b
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Jun 17 16:01:37 2020 +0300

    Fix pagination

commit 5820c92bacd93d05a3d66d42ee95f099e1c5d9e9
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Jun 17 11:31:15 2020 +0300

    Revert "Render table in chunks"

    This reverts commit cdfcd849ccddc1bc35591edac7904129431470c9.

commit cdfcd849ccddc1bc35591edac7904129431470c9
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue Jun 16 18:42:18 2020 +0300

    Render table in chunks

commit cc8c5e64274bf6e806e2e8a4bf305af745c3ed2a
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue Jun 16 17:35:24 2020 +0300

    Add pagination button hover effect

commit f7e134091a1556784a5fea9d83c50353536126ef
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue Jun 16 16:28:00 2020 +0300

    Make loader position absolute

commit a7b887b57d903f1f7ac967b861b5cc677728efc4
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue Jun 16 15:42:20 2020 +0300

    Ignore clients find without params

commit ecb322fefd4a161d79f28d17fe27827ee91701e4
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue Jun 16 15:30:48 2020 +0300

    Styles changes

commit 9323ce3938bf04e1290eade09201ba0790a250c0
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue Jun 16 14:32:23 2020 +0300

    Review styles changes

commit e0faa04ba3643f01b2ca99524cdd52b0731725c7
Merge: 98576823 15e71435
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue Jun 16 12:08:45 2020 +0300

    Merge branch '1421-new-qlog-v2' into feature/1421

commit 9857682371e8d9a3a91933cfb58a26b3470675d9
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon Jun 15 18:32:02 2020 +0300

    Fix response cell

... and 88 more commits
This commit is contained in:
Artem Baskal 2020-06-18 00:36:19 +03:00
parent b1c951fb2c
commit e39fe1b913
81 changed files with 3415 additions and 1087 deletions

16
client/package-lock.json generated vendored
View File

@ -12427,6 +12427,22 @@
"react-is": "^16.8.1" "react-is": "^16.8.1"
} }
}, },
"react-tooltip": {
"version": "4.2.6",
"resolved": "https://registry.npmjs.org/react-tooltip/-/react-tooltip-4.2.6.tgz",
"integrity": "sha512-KX/zCsPFCI8RuulzBX86U+Ur7FvgGNRBdb7dUu0ndo8Urinn48nANq9wfq4ABlehweQjPzLl7XdNAtLKza+I3w==",
"requires": {
"prop-types": "^15.7.2",
"uuid": "^7.0.3"
},
"dependencies": {
"uuid": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz",
"integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg=="
}
}
},
"react-transition-group": { "react-transition-group": {
"version": "4.4.1", "version": "4.4.1",
"resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.1.tgz", "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.1.tgz",

2
client/package.json vendored
View File

@ -7,6 +7,7 @@
"watch": "cross-env BUILD_ENV=dev webpack --config webpack.dev.js --watch", "watch": "cross-env BUILD_ENV=dev webpack --config webpack.dev.js --watch",
"build-prod": "cross-env BUILD_ENV=prod webpack --config webpack.prod.js", "build-prod": "cross-env BUILD_ENV=prod webpack --config webpack.prod.js",
"lint": "eslint src", "lint": "eslint src",
"lint:fix": "eslint src --fix",
"test": "jest", "test": "jest",
"test:watch": "jest --watch" "test:watch": "jest --watch"
}, },
@ -32,6 +33,7 @@
"react-router-hash-link": "^1.2.2", "react-router-hash-link": "^1.2.2",
"react-select": "^3.1.0", "react-select": "^3.1.0",
"react-table": "^6.11.4", "react-table": "^6.11.4",
"react-tooltip": "^4.2.6",
"react-transition-group": "^4.4.1", "react-transition-group": "^4.4.1",
"redux": "^4.0.5", "redux": "^4.0.5",
"redux-actions": "^2.6.5", "redux-actions": "^2.6.5",

View File

@ -28,6 +28,7 @@
"dhcp_table_hostname": "Име на устройство", "dhcp_table_hostname": "Име на устройство",
"dhcp_table_expires": "История", "dhcp_table_expires": "История",
"dhcp_warning": "Ако искате да използвате вградения DHCP сървър, трябва да няма друг активен DHCP в мрежата Ви!", "dhcp_warning": "Ако искате да използвате вградения DHCP сървър, трябва да няма друг активен DHCP в мрежата Ви!",
"city": "Град",
"back": "Назад", "back": "Назад",
"dashboard": "Табло", "dashboard": "Табло",
"settings": "Настройки", "settings": "Настройки",
@ -35,7 +36,7 @@
"query_log": "История на заявките", "query_log": "История на заявките",
"faq": "ЧЗВ", "faq": "ЧЗВ",
"version": "версия", "version": "версия",
"address": "адрес", "address": "Адрес",
"on": "ВКЛЮЧЕНО", "on": "ВКЛЮЧЕНО",
"off": "ИЗКЛЮЧЕНО", "off": "ИЗКЛЮЧЕНО",
"copyright": "Авторско право", "copyright": "Авторско право",
@ -106,6 +107,7 @@
"example_comment": "! Това е коментар", "example_comment": "! Това е коментар",
"example_comment_meaning": "пример за коментар", "example_comment_meaning": "пример за коментар",
"example_comment_hash": "# Това е също коментар", "example_comment_hash": "# Това е също коментар",
"example_regex_meaning": "блокирай достъп до домейни който съвпадат със следното",
"example_upstream_regular": "класически DNS (UDP протокол)", "example_upstream_regular": "класически DNS (UDP протокол)",
"example_upstream_dot": "криптиран <a href='https://en.wikipedia.org/wiki/DNS_over_TLS' target='_blank'>DNS-върху-TLS</a>", "example_upstream_dot": "криптиран <a href='https://en.wikipedia.org/wiki/DNS_over_TLS' target='_blank'>DNS-върху-TLS</a>",
"example_upstream_doh": "криптиран <a href='https://en.wikipedia.org/wiki/DNS_over_HTTPS' target='_blank'>DNS-върху-HTTPS</a>", "example_upstream_doh": "криптиран <a href='https://en.wikipedia.org/wiki/DNS_over_HTTPS' target='_blank'>DNS-върху-HTTPS</a>",
@ -114,9 +116,10 @@
"updated_upstream_dns_toast": "Глобалните DNS сървъри са обновени", "updated_upstream_dns_toast": "Глобалните DNS сървъри са обновени",
"dns_test_ok_toast": "Въведените DNS сървъри работят коректно", "dns_test_ok_toast": "Въведените DNS сървъри работят коректно",
"dns_test_not_ok_toast": "Сървър \"{{key}}\": не работи, моля проверете дали е въведен коректно", "dns_test_not_ok_toast": "Сървър \"{{key}}\": не работи, моля проверете дали е въведен коректно",
"unblock_btn": "Отблокирай", "unblock": "Отблокирай",
"block_btn": "Блокирай", "block": "Блокирай",
"time_table_header": "Време", "time_table_header": "Време",
"date": "Дата",
"domain_name_table_header": "Име на домейн", "domain_name_table_header": "Име на домейн",
"type_table_header": "Тип", "type_table_header": "Тип",
"response_table_header": "Отговор", "response_table_header": "Отговор",
@ -226,5 +229,6 @@
"form_error_equal": "Не трябва да съвпада", "form_error_equal": "Не трябва да съвпада",
"form_error_password": "Паролата не съвпада", "form_error_password": "Паролата не съвпада",
"reset_settings": "Изтрий всички настройки", "reset_settings": "Изтрий всички настройки",
"update_announcement": "Има нова AdGuard Home {{version}}! <0>Цъкни тук</0> за повече информация." "update_announcement": "Има нова AdGuard Home {{version}}! <0>Цъкни тук</0> за повече информация.",
"show_blocked_responses": "Блокирано"
} }

View File

@ -37,6 +37,7 @@
"dhcp_interface_select": "Vybrat rozhraní DHCP", "dhcp_interface_select": "Vybrat rozhraní DHCP",
"dhcp_hardware_address": "Hardwarová adresa", "dhcp_hardware_address": "Hardwarová adresa",
"dhcp_ip_addresses": "IP adresa", "dhcp_ip_addresses": "IP adresa",
"ip": "IP adresa",
"dhcp_table_hostname": "Název hostitele", "dhcp_table_hostname": "Název hostitele",
"dhcp_table_expires": "Vyprší", "dhcp_table_expires": "Vyprší",
"dhcp_warning": "Pokud chcete server DHCP povolit, ujistěte se, že ve Vaší síti není žádný aktivní server DHCP. V opačném případě může dojít k přerušení internetu pro připojená zařízení!", "dhcp_warning": "Pokud chcete server DHCP povolit, ujistěte se, že ve Vaší síti není žádný aktivní server DHCP. V opačném případě může dojít k přerušení internetu pro připojená zařízení!",
@ -49,17 +50,26 @@
"dhcp_static_leases_not_found": "Nebyly nalezeny žádné statické pronájmy DHCP", "dhcp_static_leases_not_found": "Nebyly nalezeny žádné statické pronájmy DHCP",
"dhcp_add_static_lease": "Přidat statický pronájem", "dhcp_add_static_lease": "Přidat statický pronájem",
"dhcp_reset": "Opravdu chcete resetovat konfiguraci DHCP?", "dhcp_reset": "Opravdu chcete resetovat konfiguraci DHCP?",
"country": "Země",
"city": "Město",
"delete_confirm": "Opravdu chcete odstranit \"{{key}}\"?", "delete_confirm": "Opravdu chcete odstranit \"{{key}}\"?",
"form_enter_hostname": "Zadejte název hostitele", "form_enter_hostname": "Zadejte název hostitele",
"error_details": "Podrobnosti chyby", "error_details": "Podrobnosti chyby",
"response_details": "Detail odpovědi",
"request_details": "Detail požadavku",
"client_details": "Detaily klienta",
"details": "Detaily",
"back": "Zpět", "back": "Zpět",
"dashboard": "Hlavní panel", "dashboard": "Hlavní panel",
"settings": "Nastavení", "settings": "Nastavení",
"filters": "Filtry", "filters": "Filtry",
"filter": "Filtr",
"query_log": "Protokol dotazů", "query_log": "Protokol dotazů",
"empty_log": "Záznam dotazů je prázdný",
"faq": "FAQ", "faq": "FAQ",
"version": "Verze", "version": "Verze",
"address": "adresa", "address": "Adresa",
"protocol": "Protokol",
"on": "ZAPNUTO", "on": "ZAPNUTO",
"off": "VYPNUTO", "off": "VYPNUTO",
"copyright": "Autorská práva", "copyright": "Autorská práva",
@ -113,7 +123,7 @@
"custom_filtering_rules": "Vlastní pravidla filtrování", "custom_filtering_rules": "Vlastní pravidla filtrování",
"encryption_settings": "Nastavení šifrování", "encryption_settings": "Nastavení šifrování",
"dhcp_settings": "Nastavení DHCP", "dhcp_settings": "Nastavení DHCP",
"upstream_dns": "Upstream DNS servery", "upstream_dns": "Odchozí DNS servery",
"upstream_dns_hint": "Pokud toto pole ponecháte prázdné, AdGuard Home použije <a href='https://www.quad9.net/' target='_blank'>Quad9</a> jako upstream.", "upstream_dns_hint": "Pokud toto pole ponecháte prázdné, AdGuard Home použije <a href='https://www.quad9.net/' target='_blank'>Quad9</a> jako upstream.",
"test_upstream_btn": "Test upstreamů", "test_upstream_btn": "Test upstreamů",
"upstreams": "Odesláno", "upstreams": "Odesláno",
@ -132,8 +142,10 @@
"rules_count_table_header": "Počet pravidel", "rules_count_table_header": "Počet pravidel",
"last_time_updated_table_header": "Čas poslední aktualizace", "last_time_updated_table_header": "Čas poslední aktualizace",
"actions_table_header": "Akce", "actions_table_header": "Akce",
"request_table_header": "Požadavek",
"edit_table_action": "Upravit", "edit_table_action": "Upravit",
"delete_table_action": "Vymazat", "delete_table_action": "Vymazat",
"elapsed": "Uplynulý čas",
"filters_and_hosts_hint": "AdGuard Home zná základní pravidla blokování reklam a syntaxe hostsitelských souborů.", "filters_and_hosts_hint": "AdGuard Home zná základní pravidla blokování reklam a syntaxe hostsitelských souborů.",
"no_blocklist_added": "Nebyl přidán žádný seznam blokovaných", "no_blocklist_added": "Nebyl přidán žádný seznam blokovaných",
"no_whitelist_added": "Nebyl přidán žádný seznam povolených", "no_whitelist_added": "Nebyl přidán žádný seznam povolených",
@ -170,10 +182,12 @@
"updated_upstream_dns_toast": "Aktualizované upstream DNS servery", "updated_upstream_dns_toast": "Aktualizované upstream DNS servery",
"dns_test_ok_toast": "Specifikované DNS servery pracují správně", "dns_test_ok_toast": "Specifikované DNS servery pracují správně",
"dns_test_not_ok_toast": "Server \"{{key}}\": nemohl být použit, zkontrolujte, zda jste ho správně napsali", "dns_test_not_ok_toast": "Server \"{{key}}\": nemohl být použit, zkontrolujte, zda jste ho správně napsali",
"unblock_btn": "Odblokovat", "unblock": "Odblokovat",
"block_btn": "Blokovat", "block": "Blokovat",
"time_table_header": "Čas", "time_table_header": "Čas",
"date": "Datum",
"domain_name_table_header": "Název domény", "domain_name_table_header": "Název domény",
"domain_or_client": "Doména nebo klient",
"type_table_header": "Typ", "type_table_header": "Typ",
"response_table_header": "Odezva", "response_table_header": "Odezva",
"client_table_header": "Klient", "client_table_header": "Klient",
@ -211,6 +225,7 @@
"custom_ip": "Vlastní IP", "custom_ip": "Vlastní IP",
"blocking_ipv4": "Blokování IPv4", "blocking_ipv4": "Blokování IPv4",
"blocking_ipv6": "Blokování IPv6", "blocking_ipv6": "Blokování IPv6",
"plain_dns": "Čisté DNS",
"form_enter_rate_limit": "Zadejte rychlostní limit", "form_enter_rate_limit": "Zadejte rychlostní limit",
"rate_limit": "Rychlostní limit", "rate_limit": "Rychlostní limit",
"edns_enable": "Povolit klientskou podsíť EDNS", "edns_enable": "Povolit klientskou podsíť EDNS",
@ -229,6 +244,7 @@
"rule_label": "Pravidlo", "rule_label": "Pravidlo",
"list_label": "Seznam", "list_label": "Seznam",
"unknown_filter": "Neznámý filtr {{filterId}}", "unknown_filter": "Neznámý filtr {{filterId}}",
"known_tracker": "Známý slídič",
"install_welcome_title": "Vítejte v AdGuard Home!", "install_welcome_title": "Vítejte v AdGuard Home!",
"install_welcome_desc": "AdGuard Home je síťový DNS server pro blokování reklam a slídičů. Jeho cílem je, abyste ovládali celou Vaši síť a všechny Vaše zařízení, přičemž se nevyžaduje použití jakéhokoliv programu na straně klienta.", "install_welcome_desc": "AdGuard Home je síťový DNS server pro blokování reklam a slídičů. Jeho cílem je, abyste ovládali celou Vaši síť a všechny Vaše zařízení, přičemž se nevyžaduje použití jakéhokoliv programu na straně klienta.",
"install_settings_title": "Administrátorské webové rozhraní", "install_settings_title": "Administrátorské webové rozhraní",
@ -257,7 +273,7 @@
"install_devices_router_list_1": "Otevřete předvolby pro router. Obvykle k němu můžete přistupovat z prohlížeče prostřednictvím adresy URL (např. http://192.168.0.1/ nebo http://192.168.1.1/). Můžete být vyzváni k zadání hesla. Pokud si ho nepamatujete, můžete heslo resetovat stisknutím tlačítka na samotném routeru. Některé routery vyžadují specifickou aplikaci, která by v takovém případě měla být již nainstalována v počítači/telefonu.", "install_devices_router_list_1": "Otevřete předvolby pro router. Obvykle k němu můžete přistupovat z prohlížeče prostřednictvím adresy URL (např. http://192.168.0.1/ nebo http://192.168.1.1/). Můžete být vyzváni k zadání hesla. Pokud si ho nepamatujete, můžete heslo resetovat stisknutím tlačítka na samotném routeru. Některé routery vyžadují specifickou aplikaci, která by v takovém případě měla být již nainstalována v počítači/telefonu.",
"install_devices_router_list_2": "Vyhledejte nastavení DHCP/DNS. Hledejte zkratku DNS vedle pole, které umožňuje vložit dvě nebo tři sady čísel, každé rozděleno do čtyř skupin s jedním až třemi číslicemi.", "install_devices_router_list_2": "Vyhledejte nastavení DHCP/DNS. Hledejte zkratku DNS vedle pole, které umožňuje vložit dvě nebo tři sady čísel, každé rozděleno do čtyř skupin s jedním až třemi číslicemi.",
"install_devices_router_list_3": "Zadejte adresy Vašeho serveru AdGuard Home.", "install_devices_router_list_3": "Zadejte adresy Vašeho serveru AdGuard Home.",
"install_devices_router_list_4": "Na některých typech routerů nemůžete nastavit vlastní DNS server. V tomto případě může AdGuard Home pomoct pokud jej nastavíte jako DHCP server. V ostatních případech byste si v manuálu k Vašemu routeru měli zjistit, jak nastavit vlastní DNS servery.", "install_devices_router_list_4": "Na některých typech routerů nemůžete nastavit vlastní DNS server. V tomto případě může AdGuard Home pomoci, pokud jej nastavíte jako <0>DHCP server</0>. V ostatních případech byste si v manuálu k Vašemu routeru měli zjistit, jak nastavit vlastní DNS servery.",
"install_devices_windows_list_1": "Otevřete ovládací panel prostřednictvím nabídky Start nebo vyhledání v systému Windows.", "install_devices_windows_list_1": "Otevřete ovládací panel prostřednictvím nabídky Start nebo vyhledání v systému Windows.",
"install_devices_windows_list_2": "Přejděte na kategorii Síť a Internet a poté na Centrum sítí a sdílení.", "install_devices_windows_list_2": "Přejděte na kategorii Síť a Internet a poté na Centrum sítí a sdílení.",
"install_devices_windows_list_3": "Na levé straně obrazovky najděte možnost Změnit nastavení adaptéru a klepněte na něj.", "install_devices_windows_list_3": "Na levé straně obrazovky najděte možnost Změnit nastavení adaptéru a klepněte na něj.",
@ -346,6 +362,7 @@
"form_enter_id": "Zadejte identifikátor", "form_enter_id": "Zadejte identifikátor",
"form_add_id": "Přidat identifikátor", "form_add_id": "Přidat identifikátor",
"form_client_name": "Zadejte název klienta", "form_client_name": "Zadejte název klienta",
"name": "Název",
"client_global_settings": "Použít globální nastavení", "client_global_settings": "Použít globální nastavení",
"client_deleted": "Klient \"{{key}}\" byl úspěšně odstraněn", "client_deleted": "Klient \"{{key}}\" byl úspěšně odstraněn",
"client_added": "Klient \"{{key}}\" byl úspěšně přidán", "client_added": "Klient \"{{key}}\" byl úspěšně přidán",
@ -445,6 +462,7 @@
"location": "Umístění", "location": "Umístění",
"orgname": "Název organizace", "orgname": "Název organizace",
"netname": "Název sítě", "netname": "Název sítě",
"network": "Síť",
"descr": "Popis", "descr": "Popis",
"whois": "Whois", "whois": "Whois",
"filtering_rules_learn_more": "<0>Další informace</0> o vytváření vlastních seznamů hostitelů.", "filtering_rules_learn_more": "<0>Další informace</0> o vytváření vlastních seznamů hostitelů.",
@ -456,7 +474,7 @@
"disable_ipv6": "Zakázat IPv6", "disable_ipv6": "Zakázat IPv6",
"disable_ipv6_desc": "Pokud je tato funkce povolena, budou všechny dotazy DNS pro adresy IPv6 (typ AAAA) zrušeny.", "disable_ipv6_desc": "Pokud je tato funkce povolena, budou všechny dotazy DNS pro adresy IPv6 (typ AAAA) zrušeny.",
"fastest_addr": "Nejrychlejší IP adresa", "fastest_addr": "Nejrychlejší IP adresa",
"fastest_addr_desc": "Dotazovat všechny DNS servery a vrátit nejrychlejší IP adresu ze všech odpovědí", "fastest_addr_desc": "Dotazovat všechny DNS servery a vrátit nejrychlejší IP adresu ze všech odpovědí. To zpomalí dotazy DNS, protože musíme čekat na odpovědi ze všech serverů DNS, ale celková konektivita se zlepší.",
"autofix_warning_text": "Pokud kliknete na „Opravit“, AdGuard Home nakonfiguruje váš systém tak, aby používal DNS server AdGuard Home.", "autofix_warning_text": "Pokud kliknete na „Opravit“, AdGuard Home nakonfiguruje váš systém tak, aby používal DNS server AdGuard Home.",
"autofix_warning_list": "Jsou prováděny následující úlohy: <0>Deaktivace systému DNSStubListener</0> <0>Nastavení adresy serveru DNS na 127.0.0.1</0> <0>Nahrazení cíle symbolického odkazu z /etc/resolv.conf do /run/systemd/resolve/resolv.conf</0> <0>Zastavení služby DNSStubListener (znovu načtení služby systemd-resolved)</0>", "autofix_warning_list": "Jsou prováděny následující úlohy: <0>Deaktivace systému DNSStubListener</0> <0>Nastavení adresy serveru DNS na 127.0.0.1</0> <0>Nahrazení cíle symbolického odkazu z /etc/resolv.conf do /run/systemd/resolve/resolv.conf</0> <0>Zastavení služby DNSStubListener (znovu načtení služby systemd-resolved)</0>",
"autofix_warning_result": "Výsledkem je, že všechny požadavky DNS z vašeho systému jsou ve výchozím nastavení zpracovány službou AdGuard Home.", "autofix_warning_result": "Výsledkem je, že všechny požadavky DNS z vašeho systému jsou ve výchozím nastavení zpracovány službou AdGuard Home.",
@ -489,5 +507,18 @@
"list_updated": "Byl aktualizován {{count}} seznam", "list_updated": "Byl aktualizován {{count}} seznam",
"list_updated_plural": "Aktualizované seznamy: {{count}}", "list_updated_plural": "Aktualizované seznamy: {{count}}",
"dnssec_enable": "Zapnout DNSSEC", "dnssec_enable": "Zapnout DNSSEC",
"dnssec_enable_desc": "Nastavte příznak DNSSEC v následujících DNS dotazech a zkontrolujte výsledek (je potřebný překladač se zapnutým DNSSEC)" "dnssec_enable_desc": "Nastavte příznak DNSSEC v následujících DNS dotazech a zkontrolujte výsledek (je potřebný překladač se zapnutým DNSSEC)",
"validated_with_dnssec": "Ověřeno pomocí DNSSEC",
"show_all_responses": "Všechny odpovědi",
"show_blocked_responses": "Zablokované",
"show_whitelisted_responses": "Povolené",
"blocked_safebrowsing": "Blokované bezpečné prohlížení",
"blocked_adult_websites": "Blokované stránky pro dospělé",
"blocked_threats": "Blokované hrozby",
"allowed": "Povoleno",
"filtered": "Filtrováno",
"rewritten": "Přepsáno",
"safe_search": "Bezpečné vyhledávání",
"blocklist": "Zakázaný",
"milliseconds_abbreviation": "ms"
} }

View File

@ -3,6 +3,8 @@
"example_upstream_reserved": "Du kan specificere DNS upstream <0>for det(de) specifikke domæne(r)</0>", "example_upstream_reserved": "Du kan specificere DNS upstream <0>for det(de) specifikke domæne(r)</0>",
"upstream_parallel": "Brug parallelle forespørgsler til at fremskynde behandlingen ved samtidig at spørge alle upstream servere", "upstream_parallel": "Brug parallelle forespørgsler til at fremskynde behandlingen ved samtidig at spørge alle upstream servere",
"parallel_requests": "Parallelle forespørgsler", "parallel_requests": "Parallelle forespørgsler",
"load_balancing": "Belastningsfordeling",
"load_balancing_desc": "Forespørg en server ad gangen. AdGuard Home bruger den vægtede tilfældige algoritme til at vælge serveren, så den hurtigste server bliver brugt oftere.",
"bootstrap_dns": "Bootstrap DNS-servere", "bootstrap_dns": "Bootstrap DNS-servere",
"bootstrap_dns_desc": "Bootstrap DNS-servere bliver brugt til at behandle IP-adresser af de DoH/DoT resolvere, som du angiver som upstream.", "bootstrap_dns_desc": "Bootstrap DNS-servere bliver brugt til at behandle IP-adresser af de DoH/DoT resolvere, som du angiver som upstream.",
"check_dhcp_servers": "Tjek for DHCP-servere", "check_dhcp_servers": "Tjek for DHCP-servere",
@ -37,6 +39,7 @@
"dhcp_interface_select": "Vælg DHCP-interface", "dhcp_interface_select": "Vælg DHCP-interface",
"dhcp_hardware_address": "Hardware-adresse", "dhcp_hardware_address": "Hardware-adresse",
"dhcp_ip_addresses": "IP-adresser", "dhcp_ip_addresses": "IP-adresser",
"ip": "IP",
"dhcp_table_hostname": "Værtsnavn", "dhcp_table_hostname": "Værtsnavn",
"dhcp_table_expires": "Udløber", "dhcp_table_expires": "Udløber",
"dhcp_warning": "Hvis du vil aktivere DHCP-serveren alligevel, skal du sørge for, at der ikke er nogen anden aktiv DHCP-server på dit netværk. Ellers kan det ødelægge internettet for tilsluttede enheder!", "dhcp_warning": "Hvis du vil aktivere DHCP-serveren alligevel, skal du sørge for, at der ikke er nogen anden aktiv DHCP-server på dit netværk. Ellers kan det ødelægge internettet for tilsluttede enheder!",
@ -49,17 +52,24 @@
"dhcp_static_leases_not_found": "Ingen DHCP static leases fundet", "dhcp_static_leases_not_found": "Ingen DHCP static leases fundet",
"dhcp_add_static_lease": "Tilføj static lease", "dhcp_add_static_lease": "Tilføj static lease",
"dhcp_reset": "Er du sikker på, at du vil nulstille DHCP-konfigurationen?", "dhcp_reset": "Er du sikker på, at du vil nulstille DHCP-konfigurationen?",
"country": "Land",
"delete_confirm": "Er du sikker på, at du vil slette \"{{key}}\"?", "delete_confirm": "Er du sikker på, at du vil slette \"{{key}}\"?",
"form_enter_hostname": "Indtast værtsnavn", "form_enter_hostname": "Indtast værtsnavn",
"error_details": "Fejloplysninger", "error_details": "Fejloplysninger",
"request_details": "Anmod om detaljer",
"client_details": "Klientoplysninger",
"details": "Detaljer",
"back": "Tilbage", "back": "Tilbage",
"dashboard": "Kontrolpanel", "dashboard": "Kontrolpanel",
"settings": "Indstillinger", "settings": "Indstillinger",
"filters": "Filtre", "filters": "Filtre",
"filter": "Filter",
"query_log": "Forespørgselslog", "query_log": "Forespørgselslog",
"empty_log": "Forespørgselsloggen er tom",
"faq": "FAQ", "faq": "FAQ",
"version": "Version", "version": "Version",
"address": "adresse", "address": "Adresse",
"protocol": "Protokol",
"on": "TÆNDT", "on": "TÆNDT",
"off": "SLUKKET", "off": "SLUKKET",
"copyright": "Copyright", "copyright": "Copyright",
@ -132,8 +142,10 @@
"rules_count_table_header": "Antal regler", "rules_count_table_header": "Antal regler",
"last_time_updated_table_header": "Sidst opdateret", "last_time_updated_table_header": "Sidst opdateret",
"actions_table_header": "Handlinger", "actions_table_header": "Handlinger",
"request_table_header": "Forespørgsel",
"edit_table_action": "Rediger", "edit_table_action": "Rediger",
"delete_table_action": "Slet", "delete_table_action": "Slet",
"elapsed": "Varighed",
"filters_and_hosts_hint": "AdGuard Home forstår de grundlæggende annonceblokeringsregler og værtsfilsyntaks.", "filters_and_hosts_hint": "AdGuard Home forstår de grundlæggende annonceblokeringsregler og værtsfilsyntaks.",
"no_blocklist_added": "Ingen blokeringslister tilføjet", "no_blocklist_added": "Ingen blokeringslister tilføjet",
"no_whitelist_added": "Ingen lister over tilladte tilføjet", "no_whitelist_added": "Ingen lister over tilladte tilføjet",
@ -170,10 +182,12 @@
"updated_upstream_dns_toast": "Opdaterede upstream DNS-servere", "updated_upstream_dns_toast": "Opdaterede upstream DNS-servere",
"dns_test_ok_toast": "De angivne DNS-servere fungerer korrekt", "dns_test_ok_toast": "De angivne DNS-servere fungerer korrekt",
"dns_test_not_ok_toast": "Server \"{{key}}\": kunne ikke bruges, kontroller venligst at du har skrevet det korrekt", "dns_test_not_ok_toast": "Server \"{{key}}\": kunne ikke bruges, kontroller venligst at du har skrevet det korrekt",
"unblock_btn": "Fjern blokering", "unblock": "Fjern blokering",
"block_btn": "Bloker", "block": "Bloker",
"time_table_header": "Tid", "time_table_header": "Tid",
"date": "Dato",
"domain_name_table_header": "Domænenavn", "domain_name_table_header": "Domænenavn",
"domain_or_client": "Domæne eller klient",
"type_table_header": "Type", "type_table_header": "Type",
"response_table_header": "Svar", "response_table_header": "Svar",
"client_table_header": "Klient", "client_table_header": "Klient",
@ -211,6 +225,8 @@
"custom_ip": "Tilpasset IP", "custom_ip": "Tilpasset IP",
"blocking_ipv4": "IPv4-blokering", "blocking_ipv4": "IPv4-blokering",
"blocking_ipv6": "IPv6-blokering", "blocking_ipv6": "IPv6-blokering",
"dns_over_https": "DNS-over-HTTPS",
"dns_over_tls": "DNS-over-TLS",
"form_enter_rate_limit": "Indtast hyppighedsgrænse", "form_enter_rate_limit": "Indtast hyppighedsgrænse",
"rate_limit": "Hyppighedsgrænse", "rate_limit": "Hyppighedsgrænse",
"edns_enable": "Aktiver EDNS Client Subnet", "edns_enable": "Aktiver EDNS Client Subnet",
@ -229,6 +245,7 @@
"rule_label": "Regel", "rule_label": "Regel",
"list_label": "Liste", "list_label": "Liste",
"unknown_filter": "Ukendt filter {{filterId}}", "unknown_filter": "Ukendt filter {{filterId}}",
"known_tracker": "Kendt tracker",
"install_welcome_title": "Velkommen til AdGuard Home!", "install_welcome_title": "Velkommen til AdGuard Home!",
"install_welcome_desc": "AdGuard Home er en netværksbaseret annonce-og-tracker blokerende DNS-server. Formålet er at lade dig kontrollere hele dit netværk og alle dine enheder, og det kræver ikke at man bruger klientsoftware.", "install_welcome_desc": "AdGuard Home er en netværksbaseret annonce-og-tracker blokerende DNS-server. Formålet er at lade dig kontrollere hele dit netværk og alle dine enheder, og det kræver ikke at man bruger klientsoftware.",
"install_settings_title": "Administrator Webgrænseflade", "install_settings_title": "Administrator Webgrænseflade",
@ -257,7 +274,7 @@
"install_devices_router_list_1": "Åbn præferencerne for din router. Normalt kan du få adgang til den fra din browser via en URL (som http://192.168.0.1/ eller http://192.168.1.1/). Du bliver muligvis bedt om at indtaste adgangskoden. Hvis du ikke kan huske den, kan du ofte nulstille adgangskoden ved at trykke på en knap på selve routeren. Nogle routere kræver et bestemt program, som i det tilfælde allerede skulle være installeret på din computer/telefon.", "install_devices_router_list_1": "Åbn præferencerne for din router. Normalt kan du få adgang til den fra din browser via en URL (som http://192.168.0.1/ eller http://192.168.1.1/). Du bliver muligvis bedt om at indtaste adgangskoden. Hvis du ikke kan huske den, kan du ofte nulstille adgangskoden ved at trykke på en knap på selve routeren. Nogle routere kræver et bestemt program, som i det tilfælde allerede skulle være installeret på din computer/telefon.",
"install_devices_router_list_2": "Find DHCP/DNS-indstillingerne. Kig efter DNS-bogstaverne ved siden af et felt, der tillader to eller tre sæt tal, hver opdelt i fire grupper med et til tre cifre.", "install_devices_router_list_2": "Find DHCP/DNS-indstillingerne. Kig efter DNS-bogstaverne ved siden af et felt, der tillader to eller tre sæt tal, hver opdelt i fire grupper med et til tre cifre.",
"install_devices_router_list_3": "Indtast dine AdGuard Home serveradresser der.", "install_devices_router_list_3": "Indtast dine AdGuard Home serveradresser der.",
"install_devices_router_list_4": "Du kan ikke opsætte en tilpasset DNS-server på nogle typer routere. I dette tilfælde kan det hjælpe, hvis du konfigurerer AdGuard Home som en DHCP-server. Du kan ellers søge efter manualen om, hvordan du tilpasser DNS-servere til din bestemte routermodel.", "install_devices_router_list_4": "Du kan ikke opsætte en tilpasset DNS-server på nogle typer routere. I dette tilfælde kan det hjælpe, hvis du konfigurerer AdGuard Home som en <0>DHCP-server</0>. Du kan ellers søge efter manualen om, hvordan du tilpasser DNS-servere til din bestemte routermodel.",
"install_devices_windows_list_1": "Åbn Kontrolpanel gennem menuen Start eller Windows søgning.", "install_devices_windows_list_1": "Åbn Kontrolpanel gennem menuen Start eller Windows søgning.",
"install_devices_windows_list_2": "Gå til Netværk og internet kategorien og derefter til Netværks- og delingscenter.", "install_devices_windows_list_2": "Gå til Netværk og internet kategorien og derefter til Netværks- og delingscenter.",
"install_devices_windows_list_3": "På venstre side af skærmen finder du Skift adapterindstillinger og klik på den.", "install_devices_windows_list_3": "På venstre side af skærmen finder du Skift adapterindstillinger og klik på den.",
@ -346,6 +363,7 @@
"form_enter_id": "Indtast identifikator", "form_enter_id": "Indtast identifikator",
"form_add_id": "Tilføj identifikator", "form_add_id": "Tilføj identifikator",
"form_client_name": "Indtast klientnavn", "form_client_name": "Indtast klientnavn",
"name": "Navn",
"client_global_settings": "Brug globale indstillinger", "client_global_settings": "Brug globale indstillinger",
"client_deleted": "Klient \"{{key}}\" succesfuldt slettet", "client_deleted": "Klient \"{{key}}\" succesfuldt slettet",
"client_added": "Klient \"{{key}}\" succesfuldt tilføjet", "client_added": "Klient \"{{key}}\" succesfuldt tilføjet",
@ -445,6 +463,7 @@
"location": "Placering", "location": "Placering",
"orgname": "Organisationens navn", "orgname": "Organisationens navn",
"netname": "Netværksnavn", "netname": "Netværksnavn",
"network": "Netværk",
"descr": "Beskrivelse", "descr": "Beskrivelse",
"whois": "Whois", "whois": "Whois",
"filtering_rules_learn_more": "<0>Lær mere</0> om at oprette dine egne værtslister.", "filtering_rules_learn_more": "<0>Lær mere</0> om at oprette dine egne værtslister.",
@ -456,7 +475,7 @@
"disable_ipv6": "Deaktiver IPv6", "disable_ipv6": "Deaktiver IPv6",
"disable_ipv6_desc": "Hvis denne funktion er aktiveret, slettes alle DNS-forespørgsler til IPv6-adresser (type AAAA).", "disable_ipv6_desc": "Hvis denne funktion er aktiveret, slettes alle DNS-forespørgsler til IPv6-adresser (type AAAA).",
"fastest_addr": "Hurtigste IP-adresse", "fastest_addr": "Hurtigste IP-adresse",
"fastest_addr_desc": "Forespørg alle DNS-servere, og returner den hurtigste IP-adresse blandt alle svar", "fastest_addr_desc": "Forespørg alle DNS-servere, og returner den hurtigste IP-adresse blandt alle svar. Dette vil gøre DNS-forespørgslerne langsommere, da vi er nødt til at vente på svar fra alle DNS-servere, men forbedrer samlet set forbindelsen.",
"autofix_warning_text": "Hvis du klikker på \"Reparer\", vil AdGuardHome konfigurere dit system til at bruge AdGuardHome DNS-server.", "autofix_warning_text": "Hvis du klikker på \"Reparer\", vil AdGuardHome konfigurere dit system til at bruge AdGuardHome DNS-server.",
"autofix_warning_list": "Den vil udføre disse opgaver: <0>Deaktivering af DNSStubListener systemet</0> <0>Indstille DNS-serveradressen til 127.0.0.1</0> <0>Erstatte det symbolske linkmål for /etc/resolv.conf til /run/systemd/resolve/resolv.conf</0> <0>Stop DNSStubListener (genindlæs systemd-løst tjeneste)</0>", "autofix_warning_list": "Den vil udføre disse opgaver: <0>Deaktivering af DNSStubListener systemet</0> <0>Indstille DNS-serveradressen til 127.0.0.1</0> <0>Erstatte det symbolske linkmål for /etc/resolv.conf til /run/systemd/resolve/resolv.conf</0> <0>Stop DNSStubListener (genindlæs systemd-løst tjeneste)</0>",
"autofix_warning_result": "Som et resultat behandles alle DNS-anmodninger fra dit system som standard af AdGuard Home.", "autofix_warning_result": "Som et resultat behandles alle DNS-anmodninger fra dit system som standard af AdGuard Home.",
@ -489,5 +508,19 @@
"list_updated": "{{count}} liste opdateret", "list_updated": "{{count}} liste opdateret",
"list_updated_plural": "{{count}} lister opdateret", "list_updated_plural": "{{count}} lister opdateret",
"dnssec_enable": "Aktivér DNSSEC", "dnssec_enable": "Aktivér DNSSEC",
"dnssec_enable_desc": "Sæt DNSSEC-flag i de udgående DNS-forespørgsler, og kontroller resultatet (DNSSEC-aktiveret resolver er krævet)" "dnssec_enable_desc": "Sæt DNSSEC-flag i de udgående DNS-forespørgsler, og kontroller resultatet (DNSSEC-aktiveret resolver er krævet)",
"validated_with_dnssec": "Valideret med DNSSEC",
"show_all_responses": "Alle svar",
"show_blocked_responses": "Blokeret",
"show_whitelisted_responses": "Hvidlistet",
"show_processed_responses": "Behandlet",
"blocked_safebrowsing": "Blokeret af Safebrowsing",
"blocked_adult_websites": "Blokerede Websteder for Voksne",
"blocked_threats": "Blokerede Trusler",
"allowed": "Tilladt",
"filtered": "Filtreret",
"rewritten": "Omskrevet",
"safe_search": "Sikker søgning",
"blocklist": "Blokeringsliste",
"milliseconds_abbreviation": "ms"
} }

View File

@ -3,6 +3,8 @@
"example_upstream_reserved": "Sie können DNS-Upstream <0>für bestimmte Domain(s)</0> angeben", "example_upstream_reserved": "Sie können DNS-Upstream <0>für bestimmte Domain(s)</0> angeben",
"upstream_parallel": "Parallele Abfragen verwenden, um die Lösung zu beschleunigen, indem Sie alle Upstream-Server gleichzeitig abfragen", "upstream_parallel": "Parallele Abfragen verwenden, um die Lösung zu beschleunigen, indem Sie alle Upstream-Server gleichzeitig abfragen",
"parallel_requests": "Parallele Abfragen", "parallel_requests": "Parallele Abfragen",
"load_balancing": "Lastverteilung",
"load_balancing_desc": "Einen Server nach dem anderen abfragen. AdGuard Home verwendet den gewichteten Zufallsalgorithmus, um den Server so auszuwählen, dass der schnellste Server häufiger verwendet wird.",
"bootstrap_dns": "Bootstrap DNS-Server starten", "bootstrap_dns": "Bootstrap DNS-Server starten",
"bootstrap_dns_desc": "Bootstrap-DNS-Server werden verwendet, um IP-Adressen der DoH/DoT-Resolver aufzulösen, die Sie als Upstreams angeben.", "bootstrap_dns_desc": "Bootstrap-DNS-Server werden verwendet, um IP-Adressen der DoH/DoT-Resolver aufzulösen, die Sie als Upstreams angeben.",
"check_dhcp_servers": "Auf DHCP-Server prüfen", "check_dhcp_servers": "Auf DHCP-Server prüfen",
@ -37,6 +39,7 @@
"dhcp_interface_select": "DHCP-Benutzeroberfläche auswählen", "dhcp_interface_select": "DHCP-Benutzeroberfläche auswählen",
"dhcp_hardware_address": "Hardware-Adresse", "dhcp_hardware_address": "Hardware-Adresse",
"dhcp_ip_addresses": "IP-Adressen", "dhcp_ip_addresses": "IP-Adressen",
"ip": "IP",
"dhcp_table_hostname": "Hostname", "dhcp_table_hostname": "Hostname",
"dhcp_table_expires": "Läuft ab", "dhcp_table_expires": "Läuft ab",
"dhcp_warning": "Wenn Sie den DHCP-Server trotzdem aktivieren möchten, stellen Sie sicher, dass sich in Ihrem Netzwerk kein anderer aktiver DHCP-Server befindet. Andernfalls kann es bei angeschlossenen Geräten zu einem Ausfall des Internets kommen!", "dhcp_warning": "Wenn Sie den DHCP-Server trotzdem aktivieren möchten, stellen Sie sicher, dass sich in Ihrem Netzwerk kein anderer aktiver DHCP-Server befindet. Andernfalls kann es bei angeschlossenen Geräten zu einem Ausfall des Internets kommen!",
@ -49,17 +52,24 @@
"dhcp_static_leases_not_found": "Keine statischen DHCP-Leases gefunden", "dhcp_static_leases_not_found": "Keine statischen DHCP-Leases gefunden",
"dhcp_add_static_lease": "Statischen Lease hinzufügen", "dhcp_add_static_lease": "Statischen Lease hinzufügen",
"dhcp_reset": "Möchten Sie die DHCP-Konfiguration wirklich zurücksetzen?", "dhcp_reset": "Möchten Sie die DHCP-Konfiguration wirklich zurücksetzen?",
"country": "Land",
"city": "Stadt",
"delete_confirm": "Möchten Sie „{{key}}” wirklich löschen?", "delete_confirm": "Möchten Sie „{{key}}” wirklich löschen?",
"form_enter_hostname": "Gerätenamen eingeben", "form_enter_hostname": "Gerätenamen eingeben",
"error_details": "Fehlerdetails", "error_details": "Fehlerdetails",
"client_details": "Einzelheiten des Clients",
"details": "Details",
"back": "Zurück", "back": "Zurück",
"dashboard": "Übersicht", "dashboard": "Übersicht",
"settings": "Einstellungen", "settings": "Einstellungen",
"filters": "Filter", "filters": "Filter",
"filter": "Filter",
"query_log": "Anfragenprotokoll", "query_log": "Anfragenprotokoll",
"empty_log": "Abfrageprotokoll ist leer",
"faq": "FAQ", "faq": "FAQ",
"version": "Version", "version": "Version",
"address": "Adresse", "address": "Adresse",
"protocol": "Protokoll",
"on": "AN", "on": "AN",
"off": "AUS", "off": "AUS",
"copyright": "Urheberrecht", "copyright": "Urheberrecht",
@ -132,8 +142,10 @@
"rules_count_table_header": "Anzahl Regeln", "rules_count_table_header": "Anzahl Regeln",
"last_time_updated_table_header": "Letztes Update", "last_time_updated_table_header": "Letztes Update",
"actions_table_header": "Aktionen", "actions_table_header": "Aktionen",
"request_table_header": "Anfrage",
"edit_table_action": "Bearbeiten", "edit_table_action": "Bearbeiten",
"delete_table_action": "Löschen", "delete_table_action": "Löschen",
"elapsed": "Verstrichen",
"filters_and_hosts_hint": "AdGuard Home versteht grundlegende Werbefilterregeln und Host-Datei-Syntax.", "filters_and_hosts_hint": "AdGuard Home versteht grundlegende Werbefilterregeln und Host-Datei-Syntax.",
"no_blocklist_added": "Keine Sperrliste hinzugefügt", "no_blocklist_added": "Keine Sperrliste hinzugefügt",
"no_whitelist_added": "Keine Freigabeliste hinzugefügt", "no_whitelist_added": "Keine Freigabeliste hinzugefügt",
@ -170,10 +182,11 @@
"updated_upstream_dns_toast": "Upstream-DNS-Server wurden aktualisiert", "updated_upstream_dns_toast": "Upstream-DNS-Server wurden aktualisiert",
"dns_test_ok_toast": "Angegebene DNS-Server arbeiten ordnungsgemäß", "dns_test_ok_toast": "Angegebene DNS-Server arbeiten ordnungsgemäß",
"dns_test_not_ok_toast": "Server \"{{key}}\": konnte nicht verwendet werden, bitte überprüfen Sie die korrekte Schreibweise", "dns_test_not_ok_toast": "Server \"{{key}}\": konnte nicht verwendet werden, bitte überprüfen Sie die korrekte Schreibweise",
"unblock_btn": "Entblocken", "block": "Blockieren",
"block_btn": "Blockieren",
"time_table_header": "Zeit", "time_table_header": "Zeit",
"date": "Datum",
"domain_name_table_header": "Domainname", "domain_name_table_header": "Domainname",
"domain_or_client": "Domain oder Client",
"type_table_header": "Typ", "type_table_header": "Typ",
"response_table_header": "Antwort", "response_table_header": "Antwort",
"client_table_header": "Client", "client_table_header": "Client",
@ -211,6 +224,8 @@
"custom_ip": "Benutzerdefinierte IP", "custom_ip": "Benutzerdefinierte IP",
"blocking_ipv4": "IPv4-Sperren", "blocking_ipv4": "IPv4-Sperren",
"blocking_ipv6": "IPv6-Sperren", "blocking_ipv6": "IPv6-Sperren",
"dns_over_https": "DNS-over-HTTPS (DNS-Abrage über HTTPS)",
"dns_over_tls": "DNS-over-TLS (DNS-Abrage über TLS)",
"form_enter_rate_limit": "Begrenzungswert eingeben", "form_enter_rate_limit": "Begrenzungswert eingeben",
"rate_limit": "Begrenzungswert", "rate_limit": "Begrenzungswert",
"edns_enable": "EDNS Client Subnetz aktivieren", "edns_enable": "EDNS Client Subnetz aktivieren",
@ -229,6 +244,7 @@
"rule_label": "Regel", "rule_label": "Regel",
"list_label": "Liste", "list_label": "Liste",
"unknown_filter": "Unbekannter Filter {{filterId}}", "unknown_filter": "Unbekannter Filter {{filterId}}",
"known_tracker": "Bekannte Tracker",
"install_welcome_title": "Willkommen bei AdGuard Home!", "install_welcome_title": "Willkommen bei AdGuard Home!",
"install_welcome_desc": "AdGuard Home ist ein netzwerkweiter Werbung- und Tracking sperrender DNS-Server. Sein Zweck ist es, Ihnen die Kontrolle über Ihr gesamtes Netzwerk und alle Ihre Geräte zu ermöglichen, und es ist nicht erforderlich, eine clientseitige Anwendung zu verwenden.", "install_welcome_desc": "AdGuard Home ist ein netzwerkweiter Werbung- und Tracking sperrender DNS-Server. Sein Zweck ist es, Ihnen die Kontrolle über Ihr gesamtes Netzwerk und alle Ihre Geräte zu ermöglichen, und es ist nicht erforderlich, eine clientseitige Anwendung zu verwenden.",
"install_settings_title": "Admin Weboberfläche", "install_settings_title": "Admin Weboberfläche",
@ -257,7 +273,7 @@
"install_devices_router_list_1": "Öffnen Sie die Einstellungen für Ihren Router. In der Regel können Sie von Ihrem Browser aus über eine URL (wie http://192.168.0.1/ oder http://192.168.1.1/) darauf zugreifen. Möglicherweise werden Sie aufgefordert, das Passwort einzugeben. Wenn Sie sich nicht mehr daran erinnern, können Sie das Passwort oft durch Drücken einer Taste auf dem Router selbst zurücksetzen. Einige Router benötigen eine bestimmte Anwendung, die in diesem Fall bereits auf Ihrem Computer/Telefon installiert sein sollte.", "install_devices_router_list_1": "Öffnen Sie die Einstellungen für Ihren Router. In der Regel können Sie von Ihrem Browser aus über eine URL (wie http://192.168.0.1/ oder http://192.168.1.1/) darauf zugreifen. Möglicherweise werden Sie aufgefordert, das Passwort einzugeben. Wenn Sie sich nicht mehr daran erinnern, können Sie das Passwort oft durch Drücken einer Taste auf dem Router selbst zurücksetzen. Einige Router benötigen eine bestimmte Anwendung, die in diesem Fall bereits auf Ihrem Computer/Telefon installiert sein sollte.",
"install_devices_router_list_2": "DHCP/DNS-Einstellungen suchen. Suchen Sie nach den DNS-Buchstaben neben einem Feld, das zwei oder drei Zahlensätze erlaubt, die jeweils in vier Gruppen von ein bis drei Ziffern unterteilt sind.", "install_devices_router_list_2": "DHCP/DNS-Einstellungen suchen. Suchen Sie nach den DNS-Buchstaben neben einem Feld, das zwei oder drei Zahlensätze erlaubt, die jeweils in vier Gruppen von ein bis drei Ziffern unterteilt sind.",
"install_devices_router_list_3": "Geben Sie dort Ihre AdGuard Home Server-Adressen ein.", "install_devices_router_list_3": "Geben Sie dort Ihre AdGuard Home Server-Adressen ein.",
"install_devices_router_list_4": "Sie können auf einigen Routern keine beliebigen DNS-Server festlegen. In diesem Fall kann es hilfreich sein, dass Sie AdGuard Home als DHCP-Server festlegen. Andernfalls sollten Sie nach einer Bedienungsanleitung zum Anpassen des DNS-Server für Ihr Router-Modell suchen.", "install_devices_router_list_4": "Sie können auf einigen Routern keine beliebigen DNS-Server festlegen. In diesem Fall kann es hilfreich sein, dass Sie AdGuard Home als <0>DHCP-Server</0> festlegen. Andernfalls sollten Sie nach einer Bedienungsanleitung zum Anpassen des DNS-Server für Ihr Router-Modell suchen.",
"install_devices_windows_list_1": "Öffnen Sie die Systemsteuerung über das Startmenü oder die Windows-Suche.", "install_devices_windows_list_1": "Öffnen Sie die Systemsteuerung über das Startmenü oder die Windows-Suche.",
"install_devices_windows_list_2": "Öffnen Sie die Kategorie „Netzwerk und Internet” und dann „Netzwerk- und Freigabecenter”.", "install_devices_windows_list_2": "Öffnen Sie die Kategorie „Netzwerk und Internet” und dann „Netzwerk- und Freigabecenter”.",
"install_devices_windows_list_3": "Suchen Sie auf der linken Seite des Bildschirms nach „Adaptereinstellungen ändern” und klicken Sie darauf.", "install_devices_windows_list_3": "Suchen Sie auf der linken Seite des Bildschirms nach „Adaptereinstellungen ändern” und klicken Sie darauf.",
@ -346,6 +362,7 @@
"form_enter_id": "Kennung eingeben", "form_enter_id": "Kennung eingeben",
"form_add_id": "Kennung hinzufügen", "form_add_id": "Kennung hinzufügen",
"form_client_name": "Clientnamen eingeben", "form_client_name": "Clientnamen eingeben",
"name": "Name",
"client_global_settings": "Allgemeine Einstellungen nutzen", "client_global_settings": "Allgemeine Einstellungen nutzen",
"client_deleted": "Client „{{key}}” erfolgreich entfernt", "client_deleted": "Client „{{key}}” erfolgreich entfernt",
"client_added": "Client „{{key}}” erfolgreich hinzugefügt", "client_added": "Client „{{key}}” erfolgreich hinzugefügt",
@ -445,6 +462,7 @@
"location": "Ort", "location": "Ort",
"orgname": "Name der Organisation", "orgname": "Name der Organisation",
"netname": "Netzwerkname", "netname": "Netzwerkname",
"network": "Netzwerk",
"descr": "Beschreibung", "descr": "Beschreibung",
"whois": "Whois", "whois": "Whois",
"filtering_rules_learn_more": "<0>Erfahren Sie mehr</0> über die Erstellung eigener Hosts-Listen.", "filtering_rules_learn_more": "<0>Erfahren Sie mehr</0> über die Erstellung eigener Hosts-Listen.",
@ -489,5 +507,19 @@
"list_updated": "{{count}} Liste aktualisiert", "list_updated": "{{count}} Liste aktualisiert",
"list_updated_plural": "{{count}} Listen aktualisiert", "list_updated_plural": "{{count}} Listen aktualisiert",
"dnssec_enable": "DNSSEC aktivieren", "dnssec_enable": "DNSSEC aktivieren",
"dnssec_enable_desc": "DNSSEC-Flag in den ausgehenden DNS-Abfragen mitsenden und das Ergebnis überprüfen (DNSSEC-fähiger Resolver erforderlich)" "dnssec_enable_desc": "DNSSEC-Flag in den ausgehenden DNS-Abfragen mitsenden und das Ergebnis überprüfen (DNSSEC-fähiger Resolver erforderlich)",
"validated_with_dnssec": "Bestätigt mit DNSSEC",
"show_all_responses": "Alle Antworten",
"show_blocked_responses": "Gesperrt",
"show_whitelisted_responses": "Auf der Positivliste",
"show_processed_responses": "Verarbeitet",
"blocked_safebrowsing": "Durch Internetsicherheit gesperrt",
"blocked_adult_websites": "Gesperrte jugendgefährdende Webseiten",
"blocked_threats": "Gesperrte Bedrohungen",
"allowed": "Zugelassen",
"filtered": "Gefiltert",
"rewritten": "Umgeschrieben",
"safe_search": "Sichere Suche",
"blocklist": "Sperrliste",
"milliseconds_abbreviation": "ms"
} }

View File

@ -39,6 +39,7 @@
"dhcp_interface_select": "Select DHCP interface", "dhcp_interface_select": "Select DHCP interface",
"dhcp_hardware_address": "Hardware address", "dhcp_hardware_address": "Hardware address",
"dhcp_ip_addresses": "IP addresses", "dhcp_ip_addresses": "IP addresses",
"ip": "IP",
"dhcp_table_hostname": "Hostname", "dhcp_table_hostname": "Hostname",
"dhcp_table_expires": "Expires", "dhcp_table_expires": "Expires",
"dhcp_warning": "If you want to enable DHCP server anyway, make sure that there is no other active DHCP server in your network. Otherwise, it can break the Internet for connected devices!", "dhcp_warning": "If you want to enable DHCP server anyway, make sure that there is no other active DHCP server in your network. Otherwise, it can break the Internet for connected devices!",
@ -51,17 +52,27 @@
"dhcp_static_leases_not_found": "No DHCP static leases found", "dhcp_static_leases_not_found": "No DHCP static leases found",
"dhcp_add_static_lease": "Add static lease", "dhcp_add_static_lease": "Add static lease",
"dhcp_reset": "Are you sure you want to reset DHCP config?", "dhcp_reset": "Are you sure you want to reset DHCP config?",
"country": "Country",
"city": "City",
"delete_confirm": "Are you sure you want to delete \"{{key}}\"?", "delete_confirm": "Are you sure you want to delete \"{{key}}\"?",
"form_enter_hostname": "Enter hostname", "form_enter_hostname": "Enter hostname",
"error_details": "Error details", "error_details": "Error details",
"response_details": "Response details",
"request_details": "Request details",
"client_details": "Client details",
"details": "Details",
"back": "Back", "back": "Back",
"dashboard": "Dashboard", "dashboard": "Dashboard",
"settings": "Settings", "settings": "Settings",
"filters": "Filters", "filters": "Filters",
"filter": "Filter",
"query_log": "Query Log", "query_log": "Query Log",
"compact": "Compact",
"nothing_found": "Nothing is found",
"faq": "FAQ", "faq": "FAQ",
"version": "Version", "version": "Version",
"address": "address", "address": "Address",
"protocol": "Protocol",
"on": "ON", "on": "ON",
"off": "OFF", "off": "OFF",
"copyright": "Copyright", "copyright": "Copyright",
@ -134,8 +145,10 @@
"rules_count_table_header": "Rules count", "rules_count_table_header": "Rules count",
"last_time_updated_table_header": "Last time updated", "last_time_updated_table_header": "Last time updated",
"actions_table_header": "Actions", "actions_table_header": "Actions",
"request_table_header": "Request",
"edit_table_action": "Edit", "edit_table_action": "Edit",
"delete_table_action": "Delete", "delete_table_action": "Delete",
"elapsed": "Elapsed",
"filters_and_hosts_hint": "AdGuard Home understands basic adblock rules and hosts files syntax.", "filters_and_hosts_hint": "AdGuard Home understands basic adblock rules and hosts files syntax.",
"no_blocklist_added": "No blocklists added", "no_blocklist_added": "No blocklists added",
"no_whitelist_added": "No allowlists added", "no_whitelist_added": "No allowlists added",
@ -172,12 +185,15 @@
"updated_upstream_dns_toast": "Updated the upstream DNS servers", "updated_upstream_dns_toast": "Updated the upstream DNS servers",
"dns_test_ok_toast": "Specified DNS servers are working correctly", "dns_test_ok_toast": "Specified DNS servers are working correctly",
"dns_test_not_ok_toast": "Server \"{{key}}\": could not be used, please check that you've written it correctly", "dns_test_not_ok_toast": "Server \"{{key}}\": could not be used, please check that you've written it correctly",
"unblock_btn": "Unblock", "unblock": "Unblock",
"block_btn": "Block", "block": "Block",
"time_table_header": "Time", "time_table_header": "Time",
"date": "Date",
"domain_name_table_header": "Domain name", "domain_name_table_header": "Domain name",
"domain_or_client": "Domain or client",
"type_table_header": "Type", "type_table_header": "Type",
"response_table_header": "Response", "response_table_header": "Response",
"response_code": "Response code",
"client_table_header": "Client", "client_table_header": "Client",
"empty_response_status": "Empty", "empty_response_status": "Empty",
"show_all_filter_type": "Show all", "show_all_filter_type": "Show all",
@ -196,6 +212,7 @@
"query_log_filtered": "Filtered by {{filter}}", "query_log_filtered": "Filtered by {{filter}}",
"query_log_confirm_clear": "Are you sure you want to clear the entire query log?", "query_log_confirm_clear": "Are you sure you want to clear the entire query log?",
"query_log_cleared": "The query log has been successfully cleared", "query_log_cleared": "The query log has been successfully cleared",
"query_log_updated": "The query log has been successfully updated",
"query_log_clear": "Clear query logs", "query_log_clear": "Clear query logs",
"query_log_retention": "Query logs retention", "query_log_retention": "Query logs retention",
"query_log_enable": "Enable log", "query_log_enable": "Enable log",
@ -213,6 +230,9 @@
"custom_ip": "Custom IP", "custom_ip": "Custom IP",
"blocking_ipv4": "Blocking IPv4", "blocking_ipv4": "Blocking IPv4",
"blocking_ipv6": "Blocking IPv6", "blocking_ipv6": "Blocking IPv6",
"dns_over_https": "DNS-over-HTTPS",
"dns_over_tls": "DNS-over-TLS",
"plain_dns": "Plain DNS",
"form_enter_rate_limit": "Enter rate limit", "form_enter_rate_limit": "Enter rate limit",
"rate_limit": "Rate limit", "rate_limit": "Rate limit",
"edns_enable": "Enable EDNS Client Subnet", "edns_enable": "Enable EDNS Client Subnet",
@ -225,12 +245,14 @@
"blocking_mode_null_ip": "Null IP: Respond with zero IP address (0.0.0.0 for A; :: for AAAA)", "blocking_mode_null_ip": "Null IP: Respond with zero IP address (0.0.0.0 for A; :: for AAAA)",
"blocking_mode_custom_ip": "Custom IP: Respond with a manually set IP address", "blocking_mode_custom_ip": "Custom IP: Respond with a manually set IP address",
"upstream_dns_client_desc": "If you keep this field empty, AdGuard Home will use the servers configured in the <0>DNS settings</0>.", "upstream_dns_client_desc": "If you keep this field empty, AdGuard Home will use the servers configured in the <0>DNS settings</0>.",
"tracker_source": "Tracker source",
"source_label": "Source", "source_label": "Source",
"found_in_known_domain_db": "Found in the known domains database.", "found_in_known_domain_db": "Found in the known domains database.",
"category_label": "Category", "category_label": "Category",
"rule_label": "Rule", "rule_label": "Rule",
"list_label": "List", "list_label": "List",
"unknown_filter": "Unknown filter {{filterId}}", "unknown_filter": "Unknown filter {{filterId}}",
"known_tracker": "Known tracker",
"install_welcome_title": "Welcome to AdGuard Home!", "install_welcome_title": "Welcome to AdGuard Home!",
"install_welcome_desc": "AdGuard Home is a network-wide ad-and-tracker blocking DNS server. Its purpose is to let you control your entire network and all your devices, and it does not require using a client-side program.", "install_welcome_desc": "AdGuard Home is a network-wide ad-and-tracker blocking DNS server. Its purpose is to let you control your entire network and all your devices, and it does not require using a client-side program.",
"install_settings_title": "Admin Web Interface", "install_settings_title": "Admin Web Interface",
@ -348,6 +370,7 @@
"form_enter_id": "Enter identifier", "form_enter_id": "Enter identifier",
"form_add_id": "Add identifier", "form_add_id": "Add identifier",
"form_client_name": "Enter client name", "form_client_name": "Enter client name",
"name": "Name",
"client_global_settings": "Use global settings", "client_global_settings": "Use global settings",
"client_deleted": "Client \"{{key}}\" successfully deleted", "client_deleted": "Client \"{{key}}\" successfully deleted",
"client_added": "Client \"{{key}}\" successfully added", "client_added": "Client \"{{key}}\" successfully added",
@ -447,6 +470,7 @@
"location": "Location", "location": "Location",
"orgname": "Organization name", "orgname": "Organization name",
"netname": "Network name", "netname": "Network name",
"network": "Network",
"descr": "Description", "descr": "Description",
"whois": "Whois", "whois": "Whois",
"filtering_rules_learn_more": "<0>Learn more</0> about creating your own hosts lists.", "filtering_rules_learn_more": "<0>Learn more</0> about creating your own hosts lists.",
@ -491,5 +515,19 @@
"list_updated": "{{count}} list updated", "list_updated": "{{count}} list updated",
"list_updated_plural": "{{count}} lists updated", "list_updated_plural": "{{count}} lists updated",
"dnssec_enable": "Enable DNSSEC", "dnssec_enable": "Enable DNSSEC",
"dnssec_enable_desc": "Set DNSSEC flag in the outcoming DNS queries and check the result (DNSSEC-enabled resolver is required)" "dnssec_enable_desc": "Set DNSSEC flag in the outcoming DNS queries and check the result (DNSSEC-enabled resolver is required)",
"validated_with_dnssec": "Validated with DNSSEC",
"show_all_responses": "All responses",
"show_blocked_responses": "Blocked",
"show_whitelisted_responses": "Whitelisted",
"show_processed_responses": "Processed",
"blocked_safebrowsing": "Blocked Safebrowsing",
"blocked_adult_websites": "Blocked Adult Websites",
"blocked_threats": "Blocked Threats",
"allowed": "Allowed",
"filtered": "Filtered",
"rewritten": "Rewritten",
"safe_search": "Safe search",
"blocklist": "Blocklist",
"milliseconds_abbreviation": "ms"
} }

View File

@ -3,6 +3,8 @@
"example_upstream_reserved": "puedes especificar el DNS de subida <0>para un dominio específico</0>", "example_upstream_reserved": "puedes especificar el DNS de subida <0>para un dominio específico</0>",
"upstream_parallel": "Usar peticiones paralelas para acelerar la resolución al consultar simultáneamente a todos los servidores de subida", "upstream_parallel": "Usar peticiones paralelas para acelerar la resolución al consultar simultáneamente a todos los servidores de subida",
"parallel_requests": "Peticiones paralelas", "parallel_requests": "Peticiones paralelas",
"load_balancing": "Balanceo de carga",
"load_balancing_desc": "Consulta un servidor a la vez. AdGuard Home utilizará el algoritmo aleatorio ponderado para elegir el servidor más rápido y sea utilizado con más frecuencia.",
"bootstrap_dns": "Servidores DNS de arranque", "bootstrap_dns": "Servidores DNS de arranque",
"bootstrap_dns_desc": "Los servidores DNS de arranque se utilizan para resolver las direcciones IP de los resolutores DoH/DoT que usted especifique como DNS de subida.", "bootstrap_dns_desc": "Los servidores DNS de arranque se utilizan para resolver las direcciones IP de los resolutores DoH/DoT que usted especifique como DNS de subida.",
"check_dhcp_servers": "Comprobar si hay servidores DHCP", "check_dhcp_servers": "Comprobar si hay servidores DHCP",
@ -37,6 +39,7 @@
"dhcp_interface_select": "Seleccione la interfaz DHCP", "dhcp_interface_select": "Seleccione la interfaz DHCP",
"dhcp_hardware_address": "Dirección MAC", "dhcp_hardware_address": "Dirección MAC",
"dhcp_ip_addresses": "Direcciones IP", "dhcp_ip_addresses": "Direcciones IP",
"ip": "IP",
"dhcp_table_hostname": "Nombre del host", "dhcp_table_hostname": "Nombre del host",
"dhcp_table_expires": "Expira", "dhcp_table_expires": "Expira",
"dhcp_warning": "Si de todos modos desea habilitar el servidor DHCP, asegúrese de que no hay otro servidor DHCP activo en tu red. ¡De lo contrario, puede dejar sin Internet a los dispositivos conectados!", "dhcp_warning": "Si de todos modos desea habilitar el servidor DHCP, asegúrese de que no hay otro servidor DHCP activo en tu red. ¡De lo contrario, puede dejar sin Internet a los dispositivos conectados!",
@ -49,17 +52,24 @@
"dhcp_static_leases_not_found": "No se han encontrado asignaciones DHCP estáticas", "dhcp_static_leases_not_found": "No se han encontrado asignaciones DHCP estáticas",
"dhcp_add_static_lease": "Añadir asignación estática", "dhcp_add_static_lease": "Añadir asignación estática",
"dhcp_reset": "¿Está seguro de que desea restablecer la configuración DHCP?", "dhcp_reset": "¿Está seguro de que desea restablecer la configuración DHCP?",
"country": "País",
"delete_confirm": "¿Está seguro de que desea eliminar \"{{key}}\"?", "delete_confirm": "¿Está seguro de que desea eliminar \"{{key}}\"?",
"form_enter_hostname": "Ingresa el nombre del host", "form_enter_hostname": "Ingresa el nombre del host",
"error_details": "Detalles del error", "error_details": "Detalles del error",
"request_details": "Detalles de la petición",
"client_details": "Detalles del cliente",
"details": "Detalles",
"back": "Atrás", "back": "Atrás",
"dashboard": "Panel de control", "dashboard": "Panel de control",
"settings": "Configuración", "settings": "Configuración",
"filters": "Filtros", "filters": "Filtros",
"filter": "Filtro",
"query_log": "Registro de consultas", "query_log": "Registro de consultas",
"empty_log": "El registro de consultas está vacío",
"faq": "Preguntas frecuentes", "faq": "Preguntas frecuentes",
"version": "Versión", "version": "Versión",
"address": "dirección", "address": "Dirección",
"protocol": "Protocolo",
"on": "Activo", "on": "Activo",
"off": "Inactivo", "off": "Inactivo",
"copyright": "Copyright", "copyright": "Copyright",
@ -85,7 +95,7 @@
"top_clients": "Clientes más frecuentes", "top_clients": "Clientes más frecuentes",
"no_clients_found": "No se han encontrado clientes", "no_clients_found": "No se han encontrado clientes",
"general_statistics": "Estadísticas generales", "general_statistics": "Estadísticas generales",
"number_of_dns_query_days": "Número de consultas DNS procesadas durante los últimos {{count}} días", "number_of_dns_query_days": "Número de consultas DNS procesadas durante el último {{count}} día",
"number_of_dns_query_days_plural": "Número de consultas DNS procesadas durante los últimos {{count}} días", "number_of_dns_query_days_plural": "Número de consultas DNS procesadas durante los últimos {{count}} días",
"number_of_dns_query_24_hours": "Número de consultas DNS procesadas durante las últimas 24 horas", "number_of_dns_query_24_hours": "Número de consultas DNS procesadas durante las últimas 24 horas",
"number_of_dns_query_blocked_24_hours": "Número de peticiones DNS bloqueadas por los filtros y listas de bloqueo de hosts", "number_of_dns_query_blocked_24_hours": "Número de peticiones DNS bloqueadas por los filtros y listas de bloqueo de hosts",
@ -114,14 +124,14 @@
"encryption_settings": "Configuración de cifrado", "encryption_settings": "Configuración de cifrado",
"dhcp_settings": "Configuración DHCP", "dhcp_settings": "Configuración DHCP",
"upstream_dns": "Servidores DNS de subida", "upstream_dns": "Servidores DNS de subida",
"upstream_dns_hint": "Si mantiene este campo vacío, AdGuard Home utilizará <a href='https://www.quad9.net/' target='_blank'>Quad9</a> como DNS de subida.", "upstream_dns_hint": "Si se mantiene este campo vacío, AdGuard Home utilizará <a href='https://www.quad9.net/' target='_blank'>Quad9</a> como DNS de subida.",
"test_upstream_btn": "Probar DNS de subida", "test_upstream_btn": "Probar DNS de subida",
"upstreams": "DNS de subida", "upstreams": "DNS de subida",
"apply_btn": "Aplicar", "apply_btn": "Aplicar",
"disabled_filtering_toast": "Filtrado deshabilitado", "disabled_filtering_toast": "Filtrado deshabilitado",
"enabled_filtering_toast": "Filtrado habilitado", "enabled_filtering_toast": "Filtrado habilitado",
"disabled_safe_browsing_toast": "Búsqueda segura deshabilitada", "disabled_safe_browsing_toast": "Navegación segura deshabilitada",
"enabled_safe_browsing_toast": "Búsqueda segura habilitada", "enabled_safe_browsing_toast": "Navegación segura habilitada",
"disabled_parental_toast": "Control parental deshabilitado", "disabled_parental_toast": "Control parental deshabilitado",
"enabled_parental_toast": "Control parental habilitado", "enabled_parental_toast": "Control parental habilitado",
"disabled_safe_search_toast": "Búsqueda segura deshabilitada", "disabled_safe_search_toast": "Búsqueda segura deshabilitada",
@ -132,8 +142,10 @@
"rules_count_table_header": "Número de reglas", "rules_count_table_header": "Número de reglas",
"last_time_updated_table_header": "Última actualización", "last_time_updated_table_header": "Última actualización",
"actions_table_header": "Acciones", "actions_table_header": "Acciones",
"request_table_header": "Petición",
"edit_table_action": "Editar", "edit_table_action": "Editar",
"delete_table_action": "Eliminar", "delete_table_action": "Eliminar",
"elapsed": "Transcurrido",
"filters_and_hosts_hint": "AdGuard Home entiende las reglas básicas de bloqueo y la sintaxis de los archivos hosts.", "filters_and_hosts_hint": "AdGuard Home entiende las reglas básicas de bloqueo y la sintaxis de los archivos hosts.",
"no_blocklist_added": "No se han añadido listas de bloqueo", "no_blocklist_added": "No se han añadido listas de bloqueo",
"no_whitelist_added": "No se han añadido listas de permitido", "no_whitelist_added": "No se han añadido listas de permitido",
@ -170,10 +182,12 @@
"updated_upstream_dns_toast": "Servidores DNS de subida actualizados", "updated_upstream_dns_toast": "Servidores DNS de subida actualizados",
"dns_test_ok_toast": "Los servidores DNS especificados funcionan correctamente", "dns_test_ok_toast": "Los servidores DNS especificados funcionan correctamente",
"dns_test_not_ok_toast": "Servidor \"{{key}}\": no se puede utilizar, por favor revise si lo ha escrito correctamente", "dns_test_not_ok_toast": "Servidor \"{{key}}\": no se puede utilizar, por favor revise si lo ha escrito correctamente",
"unblock_btn": "Desbloquear", "unblock": "Desbloquear",
"block_btn": "Bloquear", "block": "Bloquear",
"time_table_header": "Hora", "time_table_header": "Hora",
"date": "Fecha",
"domain_name_table_header": "Nombre del dominio", "domain_name_table_header": "Nombre del dominio",
"domain_or_client": "Dominio o cliente",
"type_table_header": "Tipo", "type_table_header": "Tipo",
"response_table_header": "Respuesta", "response_table_header": "Respuesta",
"client_table_header": "Cliente", "client_table_header": "Cliente",
@ -211,6 +225,8 @@
"custom_ip": "IP personalizada", "custom_ip": "IP personalizada",
"blocking_ipv4": "Bloqueo de IPv4", "blocking_ipv4": "Bloqueo de IPv4",
"blocking_ipv6": "Bloqueo de IPv6", "blocking_ipv6": "Bloqueo de IPv6",
"dns_over_https": "DNS mediante HTTPS",
"dns_over_tls": "DNS mediante TLS",
"form_enter_rate_limit": "Ingresa el límite de cantidad", "form_enter_rate_limit": "Ingresa el límite de cantidad",
"rate_limit": "Límite de cantidad", "rate_limit": "Límite de cantidad",
"edns_enable": "Habilitar subred de cliente EDNS", "edns_enable": "Habilitar subred de cliente EDNS",
@ -222,13 +238,14 @@
"blocking_mode_nxdomain": "NXDOMAIN: Responde con el código NXDOMAIN", "blocking_mode_nxdomain": "NXDOMAIN: Responde con el código NXDOMAIN",
"blocking_mode_null_ip": "IP nulo: Responde con dirección IP cero (0.0.0.0 para A; :: para AAAA)", "blocking_mode_null_ip": "IP nulo: Responde con dirección IP cero (0.0.0.0 para A; :: para AAAA)",
"blocking_mode_custom_ip": "IP personalizada: Responde con una dirección IP establecida manualmente", "blocking_mode_custom_ip": "IP personalizada: Responde con una dirección IP establecida manualmente",
"upstream_dns_client_desc": "Si mantiene este campo vacío, AdGuard Home utilizará los servidores configurados en la <0>configuración del DNS</0>.", "upstream_dns_client_desc": "Si se mantiene este campo vacío, AdGuard Home utilizará los servidores configurados en la <0>configuración del DNS</0>.",
"source_label": "Fuente", "source_label": "Fuente",
"found_in_known_domain_db": "Encontrado en la base de datos de dominios conocidos.", "found_in_known_domain_db": "Encontrado en la base de datos de dominios conocidos.",
"category_label": "Categoría", "category_label": "Categoría",
"rule_label": "Regla", "rule_label": "Regla",
"list_label": "Lista", "list_label": "Lista",
"unknown_filter": "Filtro desconocido {{filterId}}", "unknown_filter": "Filtro desconocido {{filterId}}",
"known_tracker": "Rastreador conocido",
"install_welcome_title": "¡Bienvenido a AdGuard Home!", "install_welcome_title": "¡Bienvenido a AdGuard Home!",
"install_welcome_desc": "AdGuard Home es un servidor DNS para bloqueo de anuncios y rastreadores a nivel de red. Su propósito es permitirte controlar toda tu red y todos tus dispositivos, y no requiere el uso de un programa del lado del cliente.", "install_welcome_desc": "AdGuard Home es un servidor DNS para bloqueo de anuncios y rastreadores a nivel de red. Su propósito es permitirte controlar toda tu red y todos tus dispositivos, y no requiere el uso de un programa del lado del cliente.",
"install_settings_title": "Interfaz web de administración", "install_settings_title": "Interfaz web de administración",
@ -257,7 +274,7 @@
"install_devices_router_list_1": "Abre las preferencias de tu router. Por lo general, puedes acceder a él desde tu navegador a través de una URL (como http://192.168.0.1/ o http://192.168.1.1/). Es posible que se te pida que ingreses la contraseña. Si no lo recuerdas, a menudo puedes restablecer la contraseña presionando un botón en el router. Algunos routers requieren una aplicación específica, que en ese caso ya debería estar instalada en tu computadora/teléfono.", "install_devices_router_list_1": "Abre las preferencias de tu router. Por lo general, puedes acceder a él desde tu navegador a través de una URL (como http://192.168.0.1/ o http://192.168.1.1/). Es posible que se te pida que ingreses la contraseña. Si no lo recuerdas, a menudo puedes restablecer la contraseña presionando un botón en el router. Algunos routers requieren una aplicación específica, que en ese caso ya debería estar instalada en tu computadora/teléfono.",
"install_devices_router_list_2": "Busca la configuración de DHCP/DNS. Busca las letras DNS junto a un campo que permita ingresar dos o tres grupos de números, cada uno dividido en cuatro grupos de uno a tres dígitos.", "install_devices_router_list_2": "Busca la configuración de DHCP/DNS. Busca las letras DNS junto a un campo que permita ingresar dos o tres grupos de números, cada uno dividido en cuatro grupos de uno a tres dígitos.",
"install_devices_router_list_3": "Ingresa las direcciones de tu servidor AdGuard Home allí.", "install_devices_router_list_3": "Ingresa las direcciones de tu servidor AdGuard Home allí.",
"install_devices_router_list_4": "No se puede configurar un servidor DNS personalizado en algunos tipos de routers. En este caso puede ayudar si configuras AdGuard Home como un servidor DHCP. De lo contrario, deberías buscar el manual sobre cómo personalizar los servidores DNS para tu modelo de router en particular.", "install_devices_router_list_4": "No se puede configurar un servidor DNS personalizado en algunos tipos de routers. En este caso puede ayudar si configuras AdGuard Home como un <0>servidor DHCP</0>. De lo contrario, deberías buscar el manual sobre cómo personalizar los servidores DNS para tu modelo de router en particular.",
"install_devices_windows_list_1": "Abre el Panel de control a través del menú Inicio o en el buscador de Windows.", "install_devices_windows_list_1": "Abre el Panel de control a través del menú Inicio o en el buscador de Windows.",
"install_devices_windows_list_2": "Ve a la categoría Redes e Internet, luego a Centro de redes y recursos compartidos.", "install_devices_windows_list_2": "Ve a la categoría Redes e Internet, luego a Centro de redes y recursos compartidos.",
"install_devices_windows_list_3": "En el lado izquierdo de la pantalla, busca Cambiar configuración del adaptador y luego haz clic en él.", "install_devices_windows_list_3": "En el lado izquierdo de la pantalla, busca Cambiar configuración del adaptador y luego haz clic en él.",
@ -346,6 +363,7 @@
"form_enter_id": "Ingresa el identificador", "form_enter_id": "Ingresa el identificador",
"form_add_id": "Añadir identificador", "form_add_id": "Añadir identificador",
"form_client_name": "Ingresa el nombre del cliente", "form_client_name": "Ingresa el nombre del cliente",
"name": "Nombre",
"client_global_settings": "Usar configuración global", "client_global_settings": "Usar configuración global",
"client_deleted": "Cliente \"{{key}}\" eliminado correctamente", "client_deleted": "Cliente \"{{key}}\" eliminado correctamente",
"client_added": "Cliente \"{{key}}\" añadido correctamente", "client_added": "Cliente \"{{key}}\" añadido correctamente",
@ -445,6 +463,7 @@
"location": "Ubicación", "location": "Ubicación",
"orgname": "Nombre de la organización", "orgname": "Nombre de la organización",
"netname": "Nombre de la red", "netname": "Nombre de la red",
"network": "Red",
"descr": "Descripción", "descr": "Descripción",
"whois": "Whois", "whois": "Whois",
"filtering_rules_learn_more": "<0>Más información</0> sobre cómo crear tus propias listas de hosts.", "filtering_rules_learn_more": "<0>Más información</0> sobre cómo crear tus propias listas de hosts.",
@ -456,8 +475,8 @@
"disable_ipv6": "Deshabilitar IPv6", "disable_ipv6": "Deshabilitar IPv6",
"disable_ipv6_desc": "Si esta función está habilitada, se eliminarán todas las consultas DNS para direcciones IPv6 (tipo AAAA).", "disable_ipv6_desc": "Si esta función está habilitada, se eliminarán todas las consultas DNS para direcciones IPv6 (tipo AAAA).",
"fastest_addr": "Dirección IP más rápida", "fastest_addr": "Dirección IP más rápida",
"fastest_addr_desc": "Consulta todos los servidores DNS y devuelve la dirección IP más rápida de todas las respuestas", "fastest_addr_desc": "Consulta todos los servidores DNS y devuelve la dirección IP más rápida de todas las respuestas. Esto ralentizará las consultas DNS, y se debe esperar las respuestas de todos los servidores DNS, pero mejora la conectividad general.",
"autofix_warning_text": "Si hace clic en \"Corregir\", AdGuard Home configurará tu sistema para utilizar el servidor DNS de AdGuard Home.", "autofix_warning_text": "Si haces clic en \"Corregir\", AdGuard Home configurará tu sistema para utilizar el servidor DNS de AdGuard Home.",
"autofix_warning_list": "Realizará estas tareas: <0>Deshabilitar el sistema DNSStubListener</0> <0>Establecer la dirección del servidor DNS en 127.0.0.1</0> <0>Reemplazar el destino del enlace simbólico de /etc/resolv.conf por /run/systemd/resolve/resolv.conf</0> <0>Detener DNSStubListener (recargar el servicio systemd-resolved)</0>", "autofix_warning_list": "Realizará estas tareas: <0>Deshabilitar el sistema DNSStubListener</0> <0>Establecer la dirección del servidor DNS en 127.0.0.1</0> <0>Reemplazar el destino del enlace simbólico de /etc/resolv.conf por /run/systemd/resolve/resolv.conf</0> <0>Detener DNSStubListener (recargar el servicio systemd-resolved)</0>",
"autofix_warning_result": "Como resultado, todas las peticiones DNS de tu sistema serán procesadas por AdGuard Home de manera predeterminada.", "autofix_warning_result": "Como resultado, todas las peticiones DNS de tu sistema serán procesadas por AdGuard Home de manera predeterminada.",
"tags_title": "Etiquetas", "tags_title": "Etiquetas",
@ -489,5 +508,19 @@
"list_updated": "{{count}} lista actualizada", "list_updated": "{{count}} lista actualizada",
"list_updated_plural": "{{count}} listas actualizadas", "list_updated_plural": "{{count}} listas actualizadas",
"dnssec_enable": "Habilitar DNSSEC", "dnssec_enable": "Habilitar DNSSEC",
"dnssec_enable_desc": "Establece el indicador DNSSEC en las consultas DNS salientes y comprueba el resultado (se requiere un resolutor habilitado para DNSSEC)" "dnssec_enable_desc": "Establece el indicador DNSSEC en las consultas DNS salientes y comprueba el resultado (se requiere un resolutor habilitado para DNSSEC)",
"validated_with_dnssec": "Validado con DNSSEC",
"show_all_responses": "Todas las respuestas",
"show_blocked_responses": "Bloqueado",
"show_whitelisted_responses": "En lista blanca",
"show_processed_responses": "Procesado",
"blocked_safebrowsing": "Bloqueado por navegación segura",
"blocked_adult_websites": "Sitios web para adultos bloqueado",
"blocked_threats": "Amenazas bloqueadas",
"allowed": "Permitido",
"filtered": "Filtrado",
"rewritten": "Reescrito",
"safe_search": "Búsqueda segura",
"blocklist": "Lista de bloqueo",
"milliseconds_abbreviation": "ms"
} }

View File

@ -37,6 +37,7 @@
"dhcp_interface_select": "رابط DHCP را انتخاب کنید", "dhcp_interface_select": "رابط DHCP را انتخاب کنید",
"dhcp_hardware_address": "آدرس سخت افزار", "dhcp_hardware_address": "آدرس سخت افزار",
"dhcp_ip_addresses": "آدرس آی پی", "dhcp_ip_addresses": "آدرس آی پی",
"ip": "IP",
"dhcp_table_hostname": "نام میزبان", "dhcp_table_hostname": "نام میزبان",
"dhcp_table_expires": "انقضاء", "dhcp_table_expires": "انقضاء",
"dhcp_warning": "اگر میخواهید DHCP سرور توکار را فعال کنید،مطمئن شوید DHCP سرور دیگری فعال نباشد.در غیر اینصورت،آن دسترسی به اینترنت را برای دستگاه های وصل شده قطع می کند!", "dhcp_warning": "اگر میخواهید DHCP سرور توکار را فعال کنید،مطمئن شوید DHCP سرور دیگری فعال نباشد.در غیر اینصورت،آن دسترسی به اینترنت را برای دستگاه های وصل شده قطع می کند!",
@ -49,17 +50,26 @@
"dhcp_static_leases_not_found": "هیچ اجاره DHCP ایستا یافت نشد", "dhcp_static_leases_not_found": "هیچ اجاره DHCP ایستا یافت نشد",
"dhcp_add_static_lease": "افزودن اجاره ایستا", "dhcp_add_static_lease": "افزودن اجاره ایستا",
"dhcp_reset": "آیا میخواهید پیکربندی DHCP را ریست کنید؟", "dhcp_reset": "آیا میخواهید پیکربندی DHCP را ریست کنید؟",
"country": "کشور",
"city": "شهر",
"delete_confirm": "آیا میخواهید \"{{key}}\" را حذف کنید؟", "delete_confirm": "آیا میخواهید \"{{key}}\" را حذف کنید؟",
"form_enter_hostname": "نام میزبان را وارد کنید", "form_enter_hostname": "نام میزبان را وارد کنید",
"error_details": "جزئیات خطا", "error_details": "جزئیات خطا",
"response_details": "جزئیات پاسخ",
"request_details": "درخواست جزئیات",
"client_details": "جزئیات کلاینت",
"details": "جزئیات",
"back": "قبلی", "back": "قبلی",
"dashboard": "داشبورد", "dashboard": "داشبورد",
"settings": "تنظيمات", "settings": "تنظيمات",
"filters": "فيلترها", "filters": "فيلترها",
"filter": "فیلتر",
"query_log": "جستار وقایع", "query_log": "جستار وقایع",
"empty_log": "وقایع جستار خالی است",
"faq": "پرسش و پاسخ", "faq": "پرسش و پاسخ",
"version": "نسخه", "version": "نسخه",
"address": "آدرس", "address": "آدرس",
"protocol": "پروتکل",
"on": "روشن", "on": "روشن",
"off": "خاموش", "off": "خاموش",
"copyright": "حق مالکیت", "copyright": "حق مالکیت",
@ -132,8 +142,10 @@
"rules_count_table_header": "تعداد دستور", "rules_count_table_header": "تعداد دستور",
"last_time_updated_table_header": "زمان آخرین بروزرسانی", "last_time_updated_table_header": "زمان آخرین بروزرسانی",
"actions_table_header": "اقدامات", "actions_table_header": "اقدامات",
"request_table_header": "درخواست",
"edit_table_action": "ويرايش", "edit_table_action": "ويرايش",
"delete_table_action": "حذف", "delete_table_action": "حذف",
"elapsed": "سپری شده",
"filters_and_hosts_hint": "AdGuard Home دستورات پایه مسدودساز تبلیغ و نحو فایل های میزبان را درک می کند.", "filters_and_hosts_hint": "AdGuard Home دستورات پایه مسدودساز تبلیغ و نحو فایل های میزبان را درک می کند.",
"no_blocklist_added": "به لیست سیاه اضافه نشد", "no_blocklist_added": "به لیست سیاه اضافه نشد",
"no_whitelist_added": "به لیست مجاز اضافه نشد", "no_whitelist_added": "به لیست مجاز اضافه نشد",
@ -170,10 +182,12 @@
"updated_upstream_dns_toast": "سرورهای DNS جریان ارسالی بروز رسانی شده است", "updated_upstream_dns_toast": "سرورهای DNS جریان ارسالی بروز رسانی شده است",
"dns_test_ok_toast": "سرورهای DNS تعیین شده بدرستی کار می کنند", "dns_test_ok_toast": "سرورهای DNS تعیین شده بدرستی کار می کنند",
"dns_test_not_ok_toast": "سرور \"{{key}}\": نمیتواند مورد استفاده قرار گیرد،لطفا بررسی کنید آن را بدرستی نوشته اید", "dns_test_not_ok_toast": "سرور \"{{key}}\": نمیتواند مورد استفاده قرار گیرد،لطفا بررسی کنید آن را بدرستی نوشته اید",
"unblock_btn": "باز کن", "unblock": "رفع انسداد",
"block_btn": "مسدود کن", "block": "مسدود کردن",
"time_table_header": "زمان", "time_table_header": "زمان",
"date": "تاریخ",
"domain_name_table_header": "نام دامنه", "domain_name_table_header": "نام دامنه",
"domain_or_client": "دامنه یا کلاینت",
"type_table_header": "نوع", "type_table_header": "نوع",
"response_table_header": "پاسخ", "response_table_header": "پاسخ",
"client_table_header": "کلاینت", "client_table_header": "کلاینت",
@ -211,6 +225,8 @@
"custom_ip": "آی پی دستی", "custom_ip": "آی پی دستی",
"blocking_ipv4": "مسدودسازی IPv4", "blocking_ipv4": "مسدودسازی IPv4",
"blocking_ipv6": "مسدودسازی IPv6", "blocking_ipv6": "مسدودسازی IPv6",
"dns_over_https": "DNS-over-HTTPS",
"dns_over_tls": "DNS-over-TLS",
"form_enter_rate_limit": "میزان محدودیت را وارد کنید", "form_enter_rate_limit": "میزان محدودیت را وارد کنید",
"rate_limit": "میزان محدودیت", "rate_limit": "میزان محدودیت",
"edns_enable": "فعالسازی زیرشبکه کلاینت EDNS", "edns_enable": "فعالسازی زیرشبکه کلاینت EDNS",
@ -229,6 +245,7 @@
"rule_label": "دستور", "rule_label": "دستور",
"list_label": "لیست", "list_label": "لیست",
"unknown_filter": "فیلتر ناشناخته {{filterId}}", "unknown_filter": "فیلتر ناشناخته {{filterId}}",
"known_tracker": "ردیاب های شناخته شده",
"install_welcome_title": "به AdGuard Home خوش آمدید!", "install_welcome_title": "به AdGuard Home خوش آمدید!",
"install_welcome_desc": "AdGuard Home یک شبکه گسترده و ردیاب و مسدوساز تبلیغ با سرور DNS است.هدف آن این است که به شما اجازه کنترل کل شبکه و همه دستگاه های شما را بدهد و آن نیازی به برنامه سمت-کاربر ندارد.", "install_welcome_desc": "AdGuard Home یک شبکه گسترده و ردیاب و مسدوساز تبلیغ با سرور DNS است.هدف آن این است که به شما اجازه کنترل کل شبکه و همه دستگاه های شما را بدهد و آن نیازی به برنامه سمت-کاربر ندارد.",
"install_settings_title": "رابط وب آدمین", "install_settings_title": "رابط وب آدمین",
@ -346,6 +363,7 @@
"form_enter_id": "خطای احرازکننده", "form_enter_id": "خطای احرازکننده",
"form_add_id": "افزودن احرازکننده", "form_add_id": "افزودن احرازکننده",
"form_client_name": "نام کلاینت را وارد کنید", "form_client_name": "نام کلاینت را وارد کنید",
"name": "نام",
"client_global_settings": "استفاده از تنظیمات سراسری", "client_global_settings": "استفاده از تنظیمات سراسری",
"client_deleted": "کلاینت \"{{key}}\" را با موفقیت حذف کرد", "client_deleted": "کلاینت \"{{key}}\" را با موفقیت حذف کرد",
"client_added": "کلاینت \"{{key}}\" را با موفقیت اضافه کرد", "client_added": "کلاینت \"{{key}}\" را با موفقیت اضافه کرد",
@ -445,6 +463,7 @@
"location": "مکان", "location": "مکان",
"orgname": "نام سازمان", "orgname": "نام سازمان",
"netname": "نام شبکه", "netname": "نام شبکه",
"network": "شبکه",
"descr": "توضيحات", "descr": "توضيحات",
"whois": "هوئیز", "whois": "هوئیز",
"filtering_rules_learn_more": "درباره ایجاد لیست سیاه میزبان برای خود <0>بیشتر بدانید</0>.", "filtering_rules_learn_more": "درباره ایجاد لیست سیاه میزبان برای خود <0>بیشتر بدانید</0>.",
@ -489,5 +508,19 @@
"list_updated": "{{count}} لیست بروز رسانی شد", "list_updated": "{{count}} لیست بروز رسانی شد",
"list_updated_plural": "{{count}} لیست بروز رسانی شد", "list_updated_plural": "{{count}} لیست بروز رسانی شد",
"dnssec_enable": "فعالسازی DNSSEC", "dnssec_enable": "فعالسازی DNSSEC",
"dnssec_enable_desc": "تنظیم نشان DNSSEC در جستارهای حاصل DNS و بررسی نتیجه (تفکیک کننده DNSSEC-فعال شده نیاز است)" "dnssec_enable_desc": "تنظیم نشان DNSSEC در جستارهای حاصل DNS و بررسی نتیجه (تفکیک کننده DNSSEC-فعال شده نیاز است)",
"validated_with_dnssec": "معتبر سازی با DNSSEC",
"show_all_responses": "همه پاسخ ها",
"show_blocked_responses": "مسدود شده",
"show_whitelisted_responses": "لیست سفید",
"show_processed_responses": "پردازش شده",
"blocked_safebrowsing": "بستن وب گردی اَمن",
"blocked_adult_websites": "وبسایت غیراخلاقی مسدود شده",
"blocked_threats": "تهدیدات مسدود شده",
"allowed": "اجازه داده شده",
"filtered": "فیلتر شده",
"rewritten": "بازنویسی شده",
"safe_search": "جستجوی اَمن",
"blocklist": "لیست سیاه",
"milliseconds_abbreviation": "هـ ثـ"
} }

View File

@ -3,6 +3,8 @@
"example_upstream_reserved": "Vous pouvez spécifier un DNS en amont <0>pour un/des domaine(s) spécifique(s)</0>", "example_upstream_reserved": "Vous pouvez spécifier un DNS en amont <0>pour un/des domaine(s) spécifique(s)</0>",
"upstream_parallel": "Utiliser des requêtes parallèles pour accélérer la résolution en requêtant simultanément tous les serveurs upstream", "upstream_parallel": "Utiliser des requêtes parallèles pour accélérer la résolution en requêtant simultanément tous les serveurs upstream",
"parallel_requests": "Demandes en parallèle", "parallel_requests": "Demandes en parallèle",
"load_balancing": "Équilibrage de charge",
"load_balancing_desc": "Interroger un serveur à la fois. AdGuard Home utilisera lalgorithme aléatoire pondéré pour choisir le serveur afin que celui le plus rapide soit utilisé plus souvent.",
"bootstrap_dns": "Serveurs DNS d'amorçage", "bootstrap_dns": "Serveurs DNS d'amorçage",
"bootstrap_dns_desc": "Les serveurs DNS d'amorçage sont utilisés pour résoudre les adresses IP des résolveurs DoH/DoT que vous spécifiez comme upstream.", "bootstrap_dns_desc": "Les serveurs DNS d'amorçage sont utilisés pour résoudre les adresses IP des résolveurs DoH/DoT que vous spécifiez comme upstream.",
"check_dhcp_servers": "Rechercher les serveurs DHCP", "check_dhcp_servers": "Rechercher les serveurs DHCP",
@ -37,6 +39,7 @@
"dhcp_interface_select": "Sélectionner l'interface du serveur DHCP", "dhcp_interface_select": "Sélectionner l'interface du serveur DHCP",
"dhcp_hardware_address": "Adresse de la machine", "dhcp_hardware_address": "Adresse de la machine",
"dhcp_ip_addresses": "Adresses IP", "dhcp_ip_addresses": "Adresses IP",
"ip": "IP",
"dhcp_table_hostname": "Nom de machine", "dhcp_table_hostname": "Nom de machine",
"dhcp_table_expires": "Expire le", "dhcp_table_expires": "Expire le",
"dhcp_warning": "Si vous souhaitez tout de même activer le serveur DHCP, assurez-vous qu'il n'y a d'autre serveur DHCP actif sur votre réseau. Sinon, cela peut faire dysfonctionner Internet sur tous les appareils connectés au réseau !", "dhcp_warning": "Si vous souhaitez tout de même activer le serveur DHCP, assurez-vous qu'il n'y a d'autre serveur DHCP actif sur votre réseau. Sinon, cela peut faire dysfonctionner Internet sur tous les appareils connectés au réseau !",
@ -49,17 +52,25 @@
"dhcp_static_leases_not_found": "Aucun bail statique DHCP trouvé", "dhcp_static_leases_not_found": "Aucun bail statique DHCP trouvé",
"dhcp_add_static_lease": "Ajoutez un bail statique", "dhcp_add_static_lease": "Ajoutez un bail statique",
"dhcp_reset": "Voulez-vous vraiment réinitialiser votre configuration DHCP ?", "dhcp_reset": "Voulez-vous vraiment réinitialiser votre configuration DHCP ?",
"country": "Pays",
"city": "Ville",
"delete_confirm": "Voulez-vous vraiment supprimer \"{{key}}\" ?", "delete_confirm": "Voulez-vous vraiment supprimer \"{{key}}\" ?",
"form_enter_hostname": "Saisissez un nom d'hôte", "form_enter_hostname": "Saisissez un nom d'hôte",
"error_details": "Détails des erreurs", "error_details": "Détails des erreurs",
"request_details": "Demander des détails",
"client_details": "Détails du client",
"details": "Détails",
"back": "Retour", "back": "Retour",
"dashboard": "Tableau de bord", "dashboard": "Tableau de bord",
"settings": "Paramètres", "settings": "Paramètres",
"filters": "Filtres", "filters": "Filtres",
"filter": "Filtre",
"query_log": "Journal des requêtes", "query_log": "Journal des requêtes",
"empty_log": "Le journal des requêtes est vide",
"faq": "FAQ", "faq": "FAQ",
"version": "version", "version": "version",
"address": "addresse", "address": "Addresse",
"protocol": "Protocole",
"on": "Activé", "on": "Activé",
"off": "Éteint", "off": "Éteint",
"copyright": "Copyright", "copyright": "Copyright",
@ -132,8 +143,10 @@
"rules_count_table_header": "Nombre des règles", "rules_count_table_header": "Nombre des règles",
"last_time_updated_table_header": "Dernière mise à jour", "last_time_updated_table_header": "Dernière mise à jour",
"actions_table_header": "Actions", "actions_table_header": "Actions",
"request_table_header": "Requête",
"edit_table_action": "Modifier", "edit_table_action": "Modifier",
"delete_table_action": "Supprimer", "delete_table_action": "Supprimer",
"elapsed": "Écoulé",
"filters_and_hosts_hint": "AdGuard Home comprend les règles basiques de blocage ainsi que la syntaxe des fichiers hosts.", "filters_and_hosts_hint": "AdGuard Home comprend les règles basiques de blocage ainsi que la syntaxe des fichiers hosts.",
"no_blocklist_added": "Aucune liste de blocage ajoutée", "no_blocklist_added": "Aucune liste de blocage ajoutée",
"no_whitelist_added": "Aucune liste dautorisation ajoutée", "no_whitelist_added": "Aucune liste dautorisation ajoutée",
@ -170,10 +183,12 @@
"updated_upstream_dns_toast": "Les serveurs DNS upstream sont mis à jour", "updated_upstream_dns_toast": "Les serveurs DNS upstream sont mis à jour",
"dns_test_ok_toast": "Les serveurs DNS spécifiés fonctionnent correctement", "dns_test_ok_toast": "Les serveurs DNS spécifiés fonctionnent correctement",
"dns_test_not_ok_toast": "Impossible d'utiliser le serveur \"{{key}}\": veuillez vérifier si le nom saisi est bien correct", "dns_test_not_ok_toast": "Impossible d'utiliser le serveur \"{{key}}\": veuillez vérifier si le nom saisi est bien correct",
"unblock_btn": "Débloquer", "unblock": "Débloquer",
"block_btn": "Bloquer", "block": "Bloquer",
"time_table_header": "Temps", "time_table_header": "Temps",
"date": "Date",
"domain_name_table_header": "Nom de domaine", "domain_name_table_header": "Nom de domaine",
"domain_or_client": "Domaine ou client",
"type_table_header": "Type", "type_table_header": "Type",
"response_table_header": "Réponse", "response_table_header": "Réponse",
"client_table_header": "Client", "client_table_header": "Client",
@ -211,6 +226,8 @@
"custom_ip": "IP personnalisée", "custom_ip": "IP personnalisée",
"blocking_ipv4": "Blocage IPv4", "blocking_ipv4": "Blocage IPv4",
"blocking_ipv6": "Blocage IPv6", "blocking_ipv6": "Blocage IPv6",
"dns_over_https": "DNS-over-HTTPS",
"dns_over_tls": "DNS-over-TLS",
"form_enter_rate_limit": "Entrez la limite de taux", "form_enter_rate_limit": "Entrez la limite de taux",
"rate_limit": "Limite de taux", "rate_limit": "Limite de taux",
"edns_enable": "Activer le sous-réseau du client EDNS", "edns_enable": "Activer le sous-réseau du client EDNS",
@ -229,6 +246,7 @@
"rule_label": "Règle", "rule_label": "Règle",
"list_label": "Liste", "list_label": "Liste",
"unknown_filter": "Filtre inconnu {{filterId}}", "unknown_filter": "Filtre inconnu {{filterId}}",
"known_tracker": "Pisteur connu",
"install_welcome_title": "Bienvenue sur AdGuard Home !", "install_welcome_title": "Bienvenue sur AdGuard Home !",
"install_welcome_desc": "AdGuard Home est un seveur DNS pour bloquer les pubs et traceurs sur tout un réseau. Son but est de vous donner le contrôle sur l'ensemble de votre réseau et tous vos appareils sans programme côté client supplémentaire.", "install_welcome_desc": "AdGuard Home est un seveur DNS pour bloquer les pubs et traceurs sur tout un réseau. Son but est de vous donner le contrôle sur l'ensemble de votre réseau et tous vos appareils sans programme côté client supplémentaire.",
"install_settings_title": "Interface web administrateur", "install_settings_title": "Interface web administrateur",
@ -257,7 +275,7 @@
"install_devices_router_list_1": "Ouvrez les préférences de votre routeur. Normalement, vous pouvez y accéder depuis votre navigateur Web via une URL (exemple http://192.168.0.1/ ou http://192.168.1.1/). Vous devrez peut-être saisir le mot de passe. Si vous ne vous en rappelez plus, vous pouvez le réinitialiser en appuyant sur le bouton du routeur. Certains routeurs fonctionnent sous une application spécifique, qui devrait être déjà installée sur votre ordinateur/téléphone.", "install_devices_router_list_1": "Ouvrez les préférences de votre routeur. Normalement, vous pouvez y accéder depuis votre navigateur Web via une URL (exemple http://192.168.0.1/ ou http://192.168.1.1/). Vous devrez peut-être saisir le mot de passe. Si vous ne vous en rappelez plus, vous pouvez le réinitialiser en appuyant sur le bouton du routeur. Certains routeurs fonctionnent sous une application spécifique, qui devrait être déjà installée sur votre ordinateur/téléphone.",
"install_devices_router_list_2": "Trouvez les paramètres DHCP/DNS. Recherchez les lettres DNS près d'une zone qui permet la saisie de 2 ou 3 blocs de chiffres, chacun composé de 4 parties de 1 à 3 chiffres.", "install_devices_router_list_2": "Trouvez les paramètres DHCP/DNS. Recherchez les lettres DNS près d'une zone qui permet la saisie de 2 ou 3 blocs de chiffres, chacun composé de 4 parties de 1 à 3 chiffres.",
"install_devices_router_list_3": "Saisissez vos adresses de serveur AdGuard Home ici.", "install_devices_router_list_3": "Saisissez vos adresses de serveur AdGuard Home ici.",
"install_devices_router_list_4": "Vous ne pouvez pas définir un serveur DNS personnalisé sur certains types de routeurs. Dans ce cas, cela peut être utile si vous configurez AdGuard Home en tant que serveur DHCP. Sinon, vous devez rechercher le manuel sur la façon de personnaliser les serveurs DNS pour votre modèle de routeur particulier.", "install_devices_router_list_4": "Vous ne pouvez pas définir un serveur DNS personnalisé sur certains types de routeurs. Dans ce cas, cela peut être utile si vous configurez AdGuard Home en tant que <0>serveur DHCP</0>. Sinon, vous devez rechercher le manuel sur la façon de personnaliser les serveurs DNS pour votre modèle de routeur particulier.",
"install_devices_windows_list_1": "Ouvrez votre Panneau de configuration depuis le menu Démarrer ou la recherche Windows.", "install_devices_windows_list_1": "Ouvrez votre Panneau de configuration depuis le menu Démarrer ou la recherche Windows.",
"install_devices_windows_list_2": "Allez dans la catégorie Réseau et Internet et ensuite dans le Centre Réseau et Partage.", "install_devices_windows_list_2": "Allez dans la catégorie Réseau et Internet et ensuite dans le Centre Réseau et Partage.",
"install_devices_windows_list_3": "Sur la partie gauche de l'écran, recherchez Modifier les paramètres de la carte et cliquez dessus.", "install_devices_windows_list_3": "Sur la partie gauche de l'écran, recherchez Modifier les paramètres de la carte et cliquez dessus.",
@ -346,6 +364,7 @@
"form_enter_id": "Entrer identifiant", "form_enter_id": "Entrer identifiant",
"form_add_id": "Ajouter identifiant", "form_add_id": "Ajouter identifiant",
"form_client_name": "Saisissez le nom du client", "form_client_name": "Saisissez le nom du client",
"name": "Nom",
"client_global_settings": "Utiliser les paramètres généraux", "client_global_settings": "Utiliser les paramètres généraux",
"client_deleted": "Le client \"{{key}}\" a été supprimé avec succès", "client_deleted": "Le client \"{{key}}\" a été supprimé avec succès",
"client_added": "Le client \"{{key}}\" a été ajouté", "client_added": "Le client \"{{key}}\" a été ajouté",
@ -361,6 +380,7 @@
"access_allowed_desc": "Une liste d'adresses IP ou CIDR. Si configuré, AdGuard Home acceptera uniquement les requêtes provenant de ces adresses IP.", "access_allowed_desc": "Une liste d'adresses IP ou CIDR. Si configuré, AdGuard Home acceptera uniquement les requêtes provenant de ces adresses IP.",
"access_disallowed_title": "Clients non autorisés", "access_disallowed_title": "Clients non autorisés",
"access_disallowed_desc": "Une liste d'adresses IP ou CIDR. Si configuré, AdGuard Home bloquera les requêtes provenant de ces adresses IP.", "access_disallowed_desc": "Une liste d'adresses IP ou CIDR. Si configuré, AdGuard Home bloquera les requêtes provenant de ces adresses IP.",
"access_blocked_title": "Domaines interdits",
"access_blocked_desc": "Ne confondez pas ceci avec les filtres. AdGuard Home ignorera les requêtes DNS portant sur les domaines ci-dessous.", "access_blocked_desc": "Ne confondez pas ceci avec les filtres. AdGuard Home ignorera les requêtes DNS portant sur les domaines ci-dessous.",
"access_settings_saved": "Paramètres d'accès enregistrés avec succès", "access_settings_saved": "Paramètres d'accès enregistrés avec succès",
"updates_checked": "Mises à jour vérifiées", "updates_checked": "Mises à jour vérifiées",
@ -444,6 +464,7 @@
"location": "Localisation", "location": "Localisation",
"orgname": "Nom de l'organisation", "orgname": "Nom de l'organisation",
"netname": "Nom du réseau", "netname": "Nom du réseau",
"network": "Réseau",
"descr": "Description", "descr": "Description",
"whois": "Whois", "whois": "Whois",
"filtering_rules_learn_more": "<0>Apprenez-en plus</0> à propos de la création de vos propres listes de blocage dhôtes.", "filtering_rules_learn_more": "<0>Apprenez-en plus</0> à propos de la création de vos propres listes de blocage dhôtes.",
@ -488,5 +509,19 @@
"list_updated": "{{count}} liste mise à jour", "list_updated": "{{count}} liste mise à jour",
"list_updated_plural": "{{count}} listes mises à jour", "list_updated_plural": "{{count}} listes mises à jour",
"dnssec_enable": "Activer DNSSEC", "dnssec_enable": "Activer DNSSEC",
"dnssec_enable_desc": "Définir lindicateur DNSSEC dans les requêtes DNS sortantes et vérifier le résultat (résolveur compatible DNSSEC requis)" "dnssec_enable_desc": "Définir lindicateur DNSSEC dans les requêtes DNS sortantes et vérifier le résultat (résolveur compatible DNSSEC requis)",
"validated_with_dnssec": "Validé avec DNSSEC",
"show_all_responses": "Toutes les réponses",
"show_blocked_responses": "Bloqué",
"show_whitelisted_responses": "Ajouté à la liste blanche",
"show_processed_responses": "Traité",
"blocked_safebrowsing": "Navigation sécurisée bloquée",
"blocked_adult_websites": "Sites à contenu adulte bloqués",
"blocked_threats": "Menaces bloquées",
"allowed": "Autorisé",
"filtered": "Filtré",
"rewritten": "Réécrit",
"safe_search": "Recherche sécurisée",
"blocklist": "Liste de blocage",
"milliseconds_abbreviation": "ms"
} }

View File

@ -37,6 +37,7 @@
"dhcp_interface_select": "Odaberite DHCP sučelje", "dhcp_interface_select": "Odaberite DHCP sučelje",
"dhcp_hardware_address": "Adresa hardvera", "dhcp_hardware_address": "Adresa hardvera",
"dhcp_ip_addresses": "IP adrese", "dhcp_ip_addresses": "IP adrese",
"ip": "IP",
"dhcp_table_hostname": "Naziv računala", "dhcp_table_hostname": "Naziv računala",
"dhcp_table_expires": "Istječe", "dhcp_table_expires": "Istječe",
"dhcp_warning": "Ako svejedno želite omogućiti DHCP poslužitelj, provjerite da nema drugog aktivnog DHCP poslužitelja na vašoj mreži. Inače može pokvariti Internet za ostale povezane uređaje!", "dhcp_warning": "Ako svejedno želite omogućiti DHCP poslužitelj, provjerite da nema drugog aktivnog DHCP poslužitelja na vašoj mreži. Inače može pokvariti Internet za ostale povezane uređaje!",
@ -49,17 +50,24 @@
"dhcp_static_leases_not_found": "Nisu pronađeni statični DHCP leases", "dhcp_static_leases_not_found": "Nisu pronađeni statični DHCP leases",
"dhcp_add_static_lease": "Dodaj static lease", "dhcp_add_static_lease": "Dodaj static lease",
"dhcp_reset": "Jeste li sigurni da želite poništiti DHCP postavke?", "dhcp_reset": "Jeste li sigurni da želite poništiti DHCP postavke?",
"country": "Država",
"delete_confirm": "Jeste li sigurni da želite ukloniti \"{{key}}\"?", "delete_confirm": "Jeste li sigurni da želite ukloniti \"{{key}}\"?",
"form_enter_hostname": "Unesite naziv računala", "form_enter_hostname": "Unesite naziv računala",
"error_details": "Detalji o pogrešci", "error_details": "Detalji o pogrešci",
"request_details": "Detalji zahtjeva",
"client_details": "Detalji o klijentu",
"details": "Detalji",
"back": "Natrag", "back": "Natrag",
"dashboard": "Upravljačka ploča", "dashboard": "Upravljačka ploča",
"settings": "Postavke", "settings": "Postavke",
"filters": "Filtri", "filters": "Filtri",
"filter": "Filtar",
"query_log": "Zapisnik upita", "query_log": "Zapisnik upita",
"empty_log": "Zapisik upita je prazan",
"faq": "ČPP", "faq": "ČPP",
"version": "Verzija", "version": "Verzija",
"address": "adresa", "address": "Adresa",
"protocol": "Protokol",
"on": "UKLJUČENO", "on": "UKLJUČENO",
"off": "ISKLJUČENO", "off": "ISKLJUČENO",
"copyright": "Autorsko pravo", "copyright": "Autorsko pravo",
@ -132,8 +140,10 @@
"rules_count_table_header": "Broj pravila", "rules_count_table_header": "Broj pravila",
"last_time_updated_table_header": "Zadnje ažurirano", "last_time_updated_table_header": "Zadnje ažurirano",
"actions_table_header": "Radnje", "actions_table_header": "Radnje",
"request_table_header": "Zahtjev",
"edit_table_action": "Uredi", "edit_table_action": "Uredi",
"delete_table_action": "Ukloni", "delete_table_action": "Ukloni",
"elapsed": "Proteklo",
"filters_and_hosts_hint": "AdGuard Home razumije osnovna pravila blokiranja oglasa i sintaksu hosts datoteka.", "filters_and_hosts_hint": "AdGuard Home razumije osnovna pravila blokiranja oglasa i sintaksu hosts datoteka.",
"no_blocklist_added": "Nema dodanih popisa blokiranih", "no_blocklist_added": "Nema dodanih popisa blokiranih",
"no_whitelist_added": "Nema dodanih popisa omogućenih", "no_whitelist_added": "Nema dodanih popisa omogućenih",
@ -170,10 +180,12 @@
"updated_upstream_dns_toast": "Ažurirani su upstream DNS poslužitelji", "updated_upstream_dns_toast": "Ažurirani su upstream DNS poslužitelji",
"dns_test_ok_toast": "Odabrani DNS poslužitelji su trenutno aktivni", "dns_test_ok_toast": "Odabrani DNS poslužitelji su trenutno aktivni",
"dns_test_not_ok_toast": "\"{{key}}\" poslužitelja: ne može se upotrijebiti, provjerite jeste li to ispravno napisali", "dns_test_not_ok_toast": "\"{{key}}\" poslužitelja: ne može se upotrijebiti, provjerite jeste li to ispravno napisali",
"unblock_btn": "Odblokiraj", "unblock": "Odblokiraj",
"block_btn": "Blokiraj", "block": "Blokiraj",
"time_table_header": "Vrijeme", "time_table_header": "Vrijeme",
"date": "Datum",
"domain_name_table_header": "Naziv domene", "domain_name_table_header": "Naziv domene",
"domain_or_client": "Domena ili klijent",
"type_table_header": "Vrsta", "type_table_header": "Vrsta",
"response_table_header": "Odgovor", "response_table_header": "Odgovor",
"client_table_header": "Klijent", "client_table_header": "Klijent",
@ -211,6 +223,8 @@
"custom_ip": "Prilagođen IP", "custom_ip": "Prilagođen IP",
"blocking_ipv4": "Blokiranje IPv4", "blocking_ipv4": "Blokiranje IPv4",
"blocking_ipv6": "Blokiranje IPv6", "blocking_ipv6": "Blokiranje IPv6",
"dns_over_https": "DNS-over-HTTPS",
"dns_over_tls": "DNS-over-TLS",
"form_enter_rate_limit": "Unesite ograničenje", "form_enter_rate_limit": "Unesite ograničenje",
"rate_limit": "Ograničenje", "rate_limit": "Ograničenje",
"edns_enable": "Omogući EDNS Client Subnet", "edns_enable": "Omogući EDNS Client Subnet",
@ -229,6 +243,7 @@
"rule_label": "Pravilo", "rule_label": "Pravilo",
"list_label": "Popis", "list_label": "Popis",
"unknown_filter": "Nepoznati filtar {{filterId}}", "unknown_filter": "Nepoznati filtar {{filterId}}",
"known_tracker": "Poznati pratitelj",
"install_welcome_title": "Dobrodošli u AdGuard Home!", "install_welcome_title": "Dobrodošli u AdGuard Home!",
"install_welcome_desc": "AdGuard Home je DNS poslužitelj za blokiranje oglasa i pratitelja na cijeloj mreži. Njegova je svrha omogućiti vam upravljanje cijelom mrežom i svim svojim uređajima, a da to ne zahtijeva korištenje programa na strani klijenta.", "install_welcome_desc": "AdGuard Home je DNS poslužitelj za blokiranje oglasa i pratitelja na cijeloj mreži. Njegova je svrha omogućiti vam upravljanje cijelom mrežom i svim svojim uređajima, a da to ne zahtijeva korištenje programa na strani klijenta.",
"install_settings_title": "Administratorsko web sučelje", "install_settings_title": "Administratorsko web sučelje",
@ -257,7 +272,7 @@
"install_devices_router_list_1": "Otvorite postavke za router. Obično mu možete pristupiti iz preglednika putem URL-a (kao što je http://192.168.0.1/ ili http://192.168.1.1/). Od vas će se možda tražiti da unesete lozinku. Ako je se ne sjećate, lozinku možete često poništiti pritiskom na dumge na samom routeru. Neki routeri trebaju određenu aplikaciju, koja bi u tom slučaju trebala biti već instalirana na vašem računalu/telefonu.", "install_devices_router_list_1": "Otvorite postavke za router. Obično mu možete pristupiti iz preglednika putem URL-a (kao što je http://192.168.0.1/ ili http://192.168.1.1/). Od vas će se možda tražiti da unesete lozinku. Ako je se ne sjećate, lozinku možete često poništiti pritiskom na dumge na samom routeru. Neki routeri trebaju određenu aplikaciju, koja bi u tom slučaju trebala biti već instalirana na vašem računalu/telefonu.",
"install_devices_router_list_2": "Pronađite DHCP/DNS postavke. Potražite DNS slova pored polja koje dopušta dva ili tri skupa brojeva, svaki razdvojen u četiri skupine od jedne do tri znamenke.", "install_devices_router_list_2": "Pronađite DHCP/DNS postavke. Potražite DNS slova pored polja koje dopušta dva ili tri skupa brojeva, svaki razdvojen u četiri skupine od jedne do tri znamenke.",
"install_devices_router_list_3": "Unesite adresu AdGuard Home poslužitelja ovdje.", "install_devices_router_list_3": "Unesite adresu AdGuard Home poslužitelja ovdje.",
"install_devices_router_list_4": "Ne možete postaviti prilagođeni DNS poslužitelj na nekim vrstama routera. U ovom slučaju, može vam pomoći ako postavite AdGuard Home kao DHCP poslužitelj. U suprotnom, trebali biste potražiti priručnik o tome kako prilagoditi DNS poslužitelje za vaš određeni model routera.", "install_devices_router_list_4": "Ne možete postaviti prilagođeni DNS poslužitelj na nekim vrstama routera. U ovom slučaju, može vam pomoći ako postavite AdGuard Home kao <0>DHCP poslužitelj</0>. U suprotnom, trebali biste potražiti priručnik o tome kako prilagoditi DNS poslužitelje za vaš određeni model routera.",
"install_devices_windows_list_1": "Otvorite Upravljačku ploču putem Start izbornika ili Windows pretrage.", "install_devices_windows_list_1": "Otvorite Upravljačku ploču putem Start izbornika ili Windows pretrage.",
"install_devices_windows_list_2": "Idite na kategoriju Mreža i Internet i odaberite Centar za mreže i zajedničko korištenje.", "install_devices_windows_list_2": "Idite na kategoriju Mreža i Internet i odaberite Centar za mreže i zajedničko korištenje.",
"install_devices_windows_list_3": "Na lijevoj strani zaslona pronađite Promjeni postavke adaptera i pritisnite na to.", "install_devices_windows_list_3": "Na lijevoj strani zaslona pronađite Promjeni postavke adaptera i pritisnite na to.",
@ -346,6 +361,7 @@
"form_enter_id": "Unesi identifikator", "form_enter_id": "Unesi identifikator",
"form_add_id": "Dodaj identifikator", "form_add_id": "Dodaj identifikator",
"form_client_name": "Unesite naziv klijenta", "form_client_name": "Unesite naziv klijenta",
"name": "Naziv",
"client_global_settings": "Koristi globalne postavke", "client_global_settings": "Koristi globalne postavke",
"client_deleted": "Klijent \"{{key}}\" je uspješno uklonjen", "client_deleted": "Klijent \"{{key}}\" je uspješno uklonjen",
"client_added": "Klijent \"{{key}}\" je uspješno dodan", "client_added": "Klijent \"{{key}}\" je uspješno dodan",
@ -445,6 +461,7 @@
"location": "Lokacija", "location": "Lokacija",
"orgname": "Naziv organizacije", "orgname": "Naziv organizacije",
"netname": "Naziv mreže", "netname": "Naziv mreže",
"network": "Mreža",
"descr": "Opis", "descr": "Opis",
"whois": "Whois", "whois": "Whois",
"filtering_rules_learn_more": "<0>Saznajte više</0> o stvaranju vlastitog popisa poslužitelja.", "filtering_rules_learn_more": "<0>Saznajte više</0> o stvaranju vlastitog popisa poslužitelja.",
@ -456,7 +473,7 @@
"disable_ipv6": "Onemogući IPv6", "disable_ipv6": "Onemogući IPv6",
"disable_ipv6_desc": "Ukoliko je ova značajka omogućena, svi DNS upiti za IPv6 adrese (AAAA tip) će biti odbačeni.", "disable_ipv6_desc": "Ukoliko je ova značajka omogućena, svi DNS upiti za IPv6 adrese (AAAA tip) će biti odbačeni.",
"fastest_addr": "Najbrža IP adresa", "fastest_addr": "Najbrža IP adresa",
"fastest_addr_desc": "Ispitajte sve DNS poslužitelje i vratite najbržu IP adresu među svim odgovorima", "fastest_addr_desc": "Ispitajte sve DNS poslužitelje i vratite najbržu IP adresu među svim odgovorima. Ovo će usporiti DNS upite jer moramo čekati odgovore sa svih DNS poslužitelja, ali će poboljšati cjelokupnu povezanost.",
"autofix_warning_text": "Ako pritisnete \"Popravi\", AdGuard Home će postaviti vaš sustav da koristi AdGuardHome DNS poslužitelj.", "autofix_warning_text": "Ako pritisnete \"Popravi\", AdGuard Home će postaviti vaš sustav da koristi AdGuardHome DNS poslužitelj.",
"autofix_warning_list": "Izvodi sljedeće radnje: <0>Deaktiviraj DNSStubListener sustav</0> <0>Postavi adresu DNS poslužitelja na 127.0.0.1</0> <0>Zamijeni simbolički cilj veze iz /etc/resolv.conf u /run/systemd/resolve/resolv.conf</0> <0>Zaustavi DNSStubListener (ponovno pokreni systemd-resolved uslugu)</0>", "autofix_warning_list": "Izvodi sljedeće radnje: <0>Deaktiviraj DNSStubListener sustav</0> <0>Postavi adresu DNS poslužitelja na 127.0.0.1</0> <0>Zamijeni simbolički cilj veze iz /etc/resolv.conf u /run/systemd/resolve/resolv.conf</0> <0>Zaustavi DNSStubListener (ponovno pokreni systemd-resolved uslugu)</0>",
"autofix_warning_result": "Kao rezultat toga, sve DNS zahtjeve iz vašeg sustava će AdGuard Home obraditi prema zadanim postavkama.", "autofix_warning_result": "Kao rezultat toga, sve DNS zahtjeve iz vašeg sustava će AdGuard Home obraditi prema zadanim postavkama.",
@ -489,5 +506,19 @@
"list_updated": "{{count}} popis ažuriran", "list_updated": "{{count}} popis ažuriran",
"list_updated_plural": "{{count}} popisa ažurirana", "list_updated_plural": "{{count}} popisa ažurirana",
"dnssec_enable": "Omogući DNSSEC", "dnssec_enable": "Omogući DNSSEC",
"dnssec_enable_desc": "Omogućite DNSSEC u izlaznim DNS upitima i provjerite rezultat (potreban je resolver s omogućenim DNSSEC-om)" "dnssec_enable_desc": "Omogućite DNSSEC u izlaznim DNS upitima i provjerite rezultat (potreban je resolver s omogućenim DNSSEC-om)",
"validated_with_dnssec": "Potvrđeno s DNSSEC-om",
"show_all_responses": "Svi odgovori",
"show_blocked_responses": "Blokirano",
"show_whitelisted_responses": "Na popisu dopuštenih",
"show_processed_responses": "Obrađeno",
"blocked_safebrowsing": "Blokirano s Sigurnom pretragom",
"blocked_adult_websites": "Blokirane web stranice za odrasle",
"blocked_threats": "Blokirane prijetnje",
"allowed": "Dopušteno",
"filtered": "Filtrirano",
"rewritten": "Prepisano",
"safe_search": "Sigurno pretraživanje",
"blocklist": "Popis neželjenih",
"milliseconds_abbreviation": "ms"
} }

View File

@ -52,6 +52,7 @@
"delete_confirm": "Apakah anda yakin ingin menghapus \"{{key}}\"?", "delete_confirm": "Apakah anda yakin ingin menghapus \"{{key}}\"?",
"form_enter_hostname": "Masukkan hostname", "form_enter_hostname": "Masukkan hostname",
"error_details": "Detail kesalahan", "error_details": "Detail kesalahan",
"request_details": "Detai permintaan",
"back": "Kembali", "back": "Kembali",
"dashboard": "Beranda", "dashboard": "Beranda",
"settings": "Pengaturan", "settings": "Pengaturan",
@ -59,7 +60,8 @@
"query_log": "Catatan Kueri", "query_log": "Catatan Kueri",
"faq": "Tanya Jawab", "faq": "Tanya Jawab",
"version": "versi", "version": "versi",
"address": "alamat", "address": "Alamat",
"protocol": "Protokol",
"on": "HIDUP", "on": "HIDUP",
"off": "MATI", "off": "MATI",
"copyright": "Hak cipta", "copyright": "Hak cipta",
@ -107,6 +109,7 @@
"general_settings": "Pengaturan umum", "general_settings": "Pengaturan umum",
"dns_settings": "Pengaturan DNS", "dns_settings": "Pengaturan DNS",
"dns_blocklists": "Daftar blokir DNS", "dns_blocklists": "Daftar blokir DNS",
"custom_filtering_rules": "Aturan penyaringan khusus",
"encryption_settings": "Pengaturan enkripsi", "encryption_settings": "Pengaturan enkripsi",
"dhcp_settings": "Pengaturan DHCP", "dhcp_settings": "Pengaturan DHCP",
"upstream_dns": "Server DNS hulu", "upstream_dns": "Server DNS hulu",
@ -152,9 +155,10 @@
"updated_upstream_dns_toast": "Server DNS hulu terbarui", "updated_upstream_dns_toast": "Server DNS hulu terbarui",
"dns_test_ok_toast": "Server DNS yang ditentukan bekerja dengan benar", "dns_test_ok_toast": "Server DNS yang ditentukan bekerja dengan benar",
"dns_test_not_ok_toast": "Server \"{{key}}\": tidak dapat digunakan, mohon cek bahwa Anda telah menulisnya dengan benar", "dns_test_not_ok_toast": "Server \"{{key}}\": tidak dapat digunakan, mohon cek bahwa Anda telah menulisnya dengan benar",
"unblock_btn": "Buka Blokir", "unblock": "Buka Blokir",
"block_btn": "Blokir", "block": "Blok",
"time_table_header": "Waktu", "time_table_header": "Waktu",
"date": "Tanggal",
"domain_name_table_header": "Nama domain", "domain_name_table_header": "Nama domain",
"type_table_header": "Tipe", "type_table_header": "Tipe",
"response_table_header": "Respon", "response_table_header": "Respon",
@ -184,6 +188,7 @@
"query_log_strict_search": "Gunakan tanda kutip ganda untuk pencarian ketat", "query_log_strict_search": "Gunakan tanda kutip ganda untuk pencarian ketat",
"query_log_retention_confirm": "Apakah Anda yakin ingin mengubah retensi kueri log? Jika Anda menurunkan nilai interval, beberapa data akan hilang", "query_log_retention_confirm": "Apakah Anda yakin ingin mengubah retensi kueri log? Jika Anda menurunkan nilai interval, beberapa data akan hilang",
"blocking_mode": "Mode blokir", "blocking_mode": "Mode blokir",
"default": "Standar",
"blocking_ipv4": "Blokiran IPv4", "blocking_ipv4": "Blokiran IPv4",
"blocking_ipv6": "Blokiran IPv6", "blocking_ipv6": "Blokiran IPv6",
"edns_cs_desc": "Apabila dinyalakan, AdGuard Home akan mengirim subnet klien ke server-server DNS.", "edns_cs_desc": "Apabila dinyalakan, AdGuard Home akan mengirim subnet klien ke server-server DNS.",
@ -222,7 +227,7 @@
"install_devices_router_list_1": "Buka preferensi untuk router Anda. Biasanya, Anda dapat mengaksesnya dari browser Anda melalui URL (seperti http://192.168.0.1/ atau http://192.168.1.1/). Anda mungkin diminta memasukkan kata sandi. Jika Anda tidak mengingatnya, Anda dapat mengatur ulang kata sandi dengan menekan tombol atur ulang (reset) pada router. Beberapa router ada yang memerlukan aplikasi tertentu, dalam hal ini harus sudah diinstal pada komputer / telepon Anda.", "install_devices_router_list_1": "Buka preferensi untuk router Anda. Biasanya, Anda dapat mengaksesnya dari browser Anda melalui URL (seperti http://192.168.0.1/ atau http://192.168.1.1/). Anda mungkin diminta memasukkan kata sandi. Jika Anda tidak mengingatnya, Anda dapat mengatur ulang kata sandi dengan menekan tombol atur ulang (reset) pada router. Beberapa router ada yang memerlukan aplikasi tertentu, dalam hal ini harus sudah diinstal pada komputer / telepon Anda.",
"install_devices_router_list_2": "Temukan pengaturan DHCP / DNS. Cari huruf DNS di sebelah bidang yang memungkinkan dua atau tiga set angka, masing-masing dipecah menjadi empat grup dengan satu hingga tiga digit.", "install_devices_router_list_2": "Temukan pengaturan DHCP / DNS. Cari huruf DNS di sebelah bidang yang memungkinkan dua atau tiga set angka, masing-masing dipecah menjadi empat grup dengan satu hingga tiga digit.",
"install_devices_router_list_3": "Masukkan alamat server AdGuard Home disana", "install_devices_router_list_3": "Masukkan alamat server AdGuard Home disana",
"install_devices_router_list_4": "Anda tidak dapat menyetel server DNS kustom pada beberapa tipe router. Dalam hal ini mungkin membantu jika Anda mengatur AdGuard Home sebagai server DHCP. Jika tidak, Anda harus mencari petunjuk tentang cara mengkustomisasi server DNS untuk model router khusus Anda.", "install_devices_router_list_4": "Anda tidak dapat menyetel server DNS kustom pada beberapa tipe router. Dalam hal ini mungkin membantu jika Anda mengatur AdGuard Home sebagai <0>server DHCP</0>. Jika tidak, Anda harus mencari petunjuk tentang cara mengkustomisasi server DNS untuk model router khusus Anda.",
"install_devices_windows_list_1": "Buka Panel Kontrol melalui menu Start atau pencarian Windows.", "install_devices_windows_list_1": "Buka Panel Kontrol melalui menu Start atau pencarian Windows.",
"install_devices_windows_list_2": "Masuk ke kategori Jaringan dan Internet (Network and Internet) dan kemudian ke Pusat Jaringan dan Berbagi (Network and Sharing Center).", "install_devices_windows_list_2": "Masuk ke kategori Jaringan dan Internet (Network and Internet) dan kemudian ke Pusat Jaringan dan Berbagi (Network and Sharing Center).",
"install_devices_windows_list_3": "Di sisi kiri layar temukan Ubah pengaturan adaptor dan klik.", "install_devices_windows_list_3": "Di sisi kiri layar temukan Ubah pengaturan adaptor dan klik.",

View File

@ -3,6 +3,8 @@
"example_upstream_reserved": "Puoi specificare un server DNS<0>per uno specifico dominio(i)</0>", "example_upstream_reserved": "Puoi specificare un server DNS<0>per uno specifico dominio(i)</0>",
"upstream_parallel": "Usa le query parallele per accelerare la risoluzione interrogando simultaneamente tutti i server", "upstream_parallel": "Usa le query parallele per accelerare la risoluzione interrogando simultaneamente tutti i server",
"parallel_requests": "Richieste parallele", "parallel_requests": "Richieste parallele",
"load_balancing": "Bilanciamento del carico",
"load_balancing_desc": "Interroga un server per volta. AdGuardHome userà l'algoritmo soppesato casualmente per scegliere il server così che quello più veloce sarà usato più spesso.",
"bootstrap_dns": "Server DNS di avvio", "bootstrap_dns": "Server DNS di avvio",
"bootstrap_dns_desc": "Server DNS usati per risolvere gli indirizzi IP dei risolutori DoH/DoT specificati come upstreams.", "bootstrap_dns_desc": "Server DNS usati per risolvere gli indirizzi IP dei risolutori DoH/DoT specificati come upstreams.",
"check_dhcp_servers": "Controlla la presenza di server DHCP", "check_dhcp_servers": "Controlla la presenza di server DHCP",
@ -37,6 +39,7 @@
"dhcp_interface_select": "Seleziona l'interfaccia DHCP", "dhcp_interface_select": "Seleziona l'interfaccia DHCP",
"dhcp_hardware_address": "Indirizzo hardware", "dhcp_hardware_address": "Indirizzo hardware",
"dhcp_ip_addresses": "Indirizzi IP", "dhcp_ip_addresses": "Indirizzi IP",
"ip": "IP",
"dhcp_table_hostname": "Nome host", "dhcp_table_hostname": "Nome host",
"dhcp_table_expires": "Scaduto", "dhcp_table_expires": "Scaduto",
"dhcp_warning": "Se si desidera abilitare il server DHCP integrato, assicurarsi che non vi siano altri server DHCP attivi. Altrimenti, possono sussistere problemi di rete per i dispositivi collegati!", "dhcp_warning": "Se si desidera abilitare il server DHCP integrato, assicurarsi che non vi siano altri server DHCP attivi. Altrimenti, possono sussistere problemi di rete per i dispositivi collegati!",
@ -49,17 +52,24 @@
"dhcp_static_leases_not_found": "Non è stato trovato nessun leases statico DHCP", "dhcp_static_leases_not_found": "Non è stato trovato nessun leases statico DHCP",
"dhcp_add_static_lease": "Aggiungi lease statico", "dhcp_add_static_lease": "Aggiungi lease statico",
"dhcp_reset": "Sei sicuro di voler ripristinare la configurazione DHCP?", "dhcp_reset": "Sei sicuro di voler ripristinare la configurazione DHCP?",
"country": "Regione",
"delete_confirm": "Sei sicuro di voler cancellare \"{{key}}\"?", "delete_confirm": "Sei sicuro di voler cancellare \"{{key}}\"?",
"form_enter_hostname": "Inserisci hostname", "form_enter_hostname": "Inserisci hostname",
"error_details": "Dettagli errore", "error_details": "Dettagli errore",
"request_details": "Dettagli della richiesta",
"client_details": "Dettagli client",
"details": "Dettagli",
"back": "Indietro", "back": "Indietro",
"dashboard": "Cruscotto", "dashboard": "Cruscotto",
"settings": "Impostazioni", "settings": "Impostazioni",
"filters": "Filtri", "filters": "Filtri",
"filter": "Filtro",
"query_log": "Query Log", "query_log": "Query Log",
"empty_log": "Il log query è vuoto",
"faq": "FAQ", "faq": "FAQ",
"version": "versione", "version": "versione",
"address": "indirizzo IP", "address": "Indirizzo",
"protocol": "Protocollo",
"on": "ATTIVO", "on": "ATTIVO",
"off": "DISATTIVATO", "off": "DISATTIVATO",
"copyright": "Copyright", "copyright": "Copyright",
@ -132,8 +142,10 @@
"rules_count_table_header": "Numero regole", "rules_count_table_header": "Numero regole",
"last_time_updated_table_header": "Ultimo aggiornamento", "last_time_updated_table_header": "Ultimo aggiornamento",
"actions_table_header": "Azioni", "actions_table_header": "Azioni",
"request_table_header": "Richiesta",
"edit_table_action": "Modifica", "edit_table_action": "Modifica",
"delete_table_action": "Elimina", "delete_table_action": "Elimina",
"elapsed": "Trascorso",
"filters_and_hosts_hint": "AdGuard Home è in grado di comprendere la sintassi delle regole di adblock o quelle dei file hosts", "filters_and_hosts_hint": "AdGuard Home è in grado di comprendere la sintassi delle regole di adblock o quelle dei file hosts",
"no_blocklist_added": "Non è stata aggiunta alcuna lista di blocco", "no_blocklist_added": "Non è stata aggiunta alcuna lista di blocco",
"no_whitelist_added": "Non è stata aggiunta alcuna lista dei consentiti", "no_whitelist_added": "Non è stata aggiunta alcuna lista dei consentiti",
@ -170,10 +182,12 @@
"updated_upstream_dns_toast": "Server DNS upstream aggiornati", "updated_upstream_dns_toast": "Server DNS upstream aggiornati",
"dns_test_ok_toast": "I server DNS specificati funzionano correttamente", "dns_test_ok_toast": "I server DNS specificati funzionano correttamente",
"dns_test_not_ok_toast": "Server \"{{key}}\": non può essere usato, assicurati di averlo digitato correttamente", "dns_test_not_ok_toast": "Server \"{{key}}\": non può essere usato, assicurati di averlo digitato correttamente",
"unblock_btn": "Sblocca", "unblock": "Sblocca",
"block_btn": "Blocca", "block": "Blocca",
"time_table_header": "Ora", "time_table_header": "Ora",
"date": "Data",
"domain_name_table_header": "Nome dominio", "domain_name_table_header": "Nome dominio",
"domain_or_client": "Dominio o client",
"type_table_header": "Tipo", "type_table_header": "Tipo",
"response_table_header": "Risposta", "response_table_header": "Risposta",
"client_table_header": "Client", "client_table_header": "Client",
@ -211,6 +225,8 @@
"custom_ip": "IP personalizzato", "custom_ip": "IP personalizzato",
"blocking_ipv4": "Blocca IPv4", "blocking_ipv4": "Blocca IPv4",
"blocking_ipv6": "Blocca IPv6", "blocking_ipv6": "Blocca IPv6",
"dns_over_https": "DNS-over-HTTPS",
"dns_over_tls": "DNS-over-TLS",
"form_enter_rate_limit": "Imposta limite delle richieste", "form_enter_rate_limit": "Imposta limite delle richieste",
"rate_limit": "Limite delle richieste", "rate_limit": "Limite delle richieste",
"edns_enable": "Abilita client di sottorete EDNS", "edns_enable": "Abilita client di sottorete EDNS",
@ -229,6 +245,7 @@
"rule_label": "Regola", "rule_label": "Regola",
"list_label": "Lista", "list_label": "Lista",
"unknown_filter": "Filtro sconosciuto {{filterId}}", "unknown_filter": "Filtro sconosciuto {{filterId}}",
"known_tracker": "Tracker conosciuto",
"install_welcome_title": "Benvenuto nella Home di AdGuard!", "install_welcome_title": "Benvenuto nella Home di AdGuard!",
"install_welcome_desc": "AdGuard Home è un server DNS che blocca annunci e tracker in tutta la rete. Il suo scopo è quello di consentire di controllare l'intera rete e tutti i dispositivi, e non richiede l'utilizzo di un programma sul lato client.", "install_welcome_desc": "AdGuard Home è un server DNS che blocca annunci e tracker in tutta la rete. Il suo scopo è quello di consentire di controllare l'intera rete e tutti i dispositivi, e non richiede l'utilizzo di un programma sul lato client.",
"install_settings_title": "Interfaccia Web dell'Admin", "install_settings_title": "Interfaccia Web dell'Admin",
@ -257,7 +274,7 @@
"install_devices_router_list_1": "Apri le preferenze per il tuo router. Di solito, puoi accedervi dal tuo browser tramite un URL (come http://192.168.0.1/ o http://192.168.1.1/). Potrebbe essere richiesto di inserire la password. Se non lo ricordi, puoi spesso reimpostare la password premendo un pulsante sul router stesso. Alcuni router richiedono un'applicazione specifica, che in quel caso dovrebbe essere già installata sul tuo computer / telefono.", "install_devices_router_list_1": "Apri le preferenze per il tuo router. Di solito, puoi accedervi dal tuo browser tramite un URL (come http://192.168.0.1/ o http://192.168.1.1/). Potrebbe essere richiesto di inserire la password. Se non lo ricordi, puoi spesso reimpostare la password premendo un pulsante sul router stesso. Alcuni router richiedono un'applicazione specifica, che in quel caso dovrebbe essere già installata sul tuo computer / telefono.",
"install_devices_router_list_2": "Trova le impostazioni DHCP / DNS. Cerca le lettere DNS accanto a un campo che consente due o tre serie di numeri, ciascuno suddiviso in quattro gruppi di 1-3 cifre.", "install_devices_router_list_2": "Trova le impostazioni DHCP / DNS. Cerca le lettere DNS accanto a un campo che consente due o tre serie di numeri, ciascuno suddiviso in quattro gruppi di 1-3 cifre.",
"install_devices_router_list_3": "Inserisci qui gli indirizzi del tuo server AdGuard Home.", "install_devices_router_list_3": "Inserisci qui gli indirizzi del tuo server AdGuard Home.",
"install_devices_router_list_4": "Non puoi impostare un server DNS personalizzato o alcun tipo di router. In questi casi potrebbe essere di aiuto impostare la pagina principale di AdGuard come server DHCP. In alternativa, dovresti cercare sul manuale il modo per personalizzare i server DNS per il tuo particolare modello di router.", "install_devices_router_list_4": "Non puoi impostare un server DNS personalizzato o alcun tipo di router. In questi casi potrebbe essere di aiuto impostare la pagina principale di AdGuard come <0>server DHCP</0>. In alternativa, dovresti cercare sul manuale il modo per personalizzare i server DNS per il tuo particolare modello di router.",
"install_devices_windows_list_1": "Aprire il Pannello di controllo tramite il menu Start o la ricerca di Windows.", "install_devices_windows_list_1": "Aprire il Pannello di controllo tramite il menu Start o la ricerca di Windows.",
"install_devices_windows_list_2": "Vai a Rete e categoria Internet e poi a Centro connessioni di rete e condivisione.", "install_devices_windows_list_2": "Vai a Rete e categoria Internet e poi a Centro connessioni di rete e condivisione.",
"install_devices_windows_list_3": "Sul lato sinistro dello schermo, trova le impostazioni della scheda Cambia e fai clic su di esso.", "install_devices_windows_list_3": "Sul lato sinistro dello schermo, trova le impostazioni della scheda Cambia e fai clic su di esso.",
@ -346,6 +363,7 @@
"form_enter_id": "Inserisci identificatore", "form_enter_id": "Inserisci identificatore",
"form_add_id": "Aggiungi identificatore", "form_add_id": "Aggiungi identificatore",
"form_client_name": "Inserisci nome client", "form_client_name": "Inserisci nome client",
"name": "Nome",
"client_global_settings": "Usa le impostazioni globali", "client_global_settings": "Usa le impostazioni globali",
"client_deleted": "Client \"{{key}}\" eliminato correttamente", "client_deleted": "Client \"{{key}}\" eliminato correttamente",
"client_added": "Client \"{{key}}\" aggiunto correttamente", "client_added": "Client \"{{key}}\" aggiunto correttamente",
@ -445,6 +463,7 @@
"location": "Locazione", "location": "Locazione",
"orgname": "Nome dell'organizzazione", "orgname": "Nome dell'organizzazione",
"netname": "Nome Network", "netname": "Nome Network",
"network": "Rete",
"descr": "Descrizione", "descr": "Descrizione",
"whois": "Chi è", "whois": "Chi è",
"filtering_rules_learn_more": "<0>Leggi altro</0> su come creare i tuoi host blacklist.", "filtering_rules_learn_more": "<0>Leggi altro</0> su come creare i tuoi host blacklist.",
@ -489,5 +508,19 @@
"list_updated": "{{count}} lista aggiornata", "list_updated": "{{count}} lista aggiornata",
"list_updated_plural": "{{count}} liste aggiornate", "list_updated_plural": "{{count}} liste aggiornate",
"dnssec_enable": "Abilita DNSSEC", "dnssec_enable": "Abilita DNSSEC",
"dnssec_enable_desc": "Imposta la spunta DNSSEC nelle interrogazioni DNS in uscita e verifica il risultato (è richiesta l'attivazione del risolutore DNSSEC)" "dnssec_enable_desc": "Imposta la spunta DNSSEC nelle interrogazioni DNS in uscita e verifica il risultato (è richiesta l'attivazione del risolutore DNSSEC)",
"validated_with_dnssec": "Verificato con DNSSEC",
"show_all_responses": "Tutti i responsi",
"show_blocked_responses": "Bloccato",
"show_whitelisted_responses": "Nella whitelist",
"show_processed_responses": "Processato",
"blocked_safebrowsing": "Blocco Navigazione sicura",
"blocked_adult_websites": "Siti per adulti bloccati",
"blocked_threats": "Minacce bloccate",
"allowed": "Consentito",
"filtered": "Filtrato",
"rewritten": "Riscritto",
"safe_search": "Ricerca sicura",
"blocklist": "Lista di blocco",
"milliseconds_abbreviation": "ms"
} }

View File

@ -3,6 +3,8 @@
"example_upstream_reserved": "<0>特定のドメイン</0>に対してDNSアップストリームを指定できます", "example_upstream_reserved": "<0>特定のドメイン</0>に対してDNSアップストリームを指定できます",
"upstream_parallel": "並列リクエストを使用する(すべてのアップストリームサーバーを同時に照会することで解決スピードが向上します)", "upstream_parallel": "並列リクエストを使用する(すべてのアップストリームサーバーを同時に照会することで解決スピードが向上します)",
"parallel_requests": "並列リクエスト", "parallel_requests": "並列リクエスト",
"load_balancing": "ロードバランシング",
"load_balancing_desc": "一度に1つのサーバを照会します。 AdGuard Homeは、重み付きランダムアルゴリズムを使用してサーバを選択するため、最速のサーバがより頻繁に使用されます。",
"bootstrap_dns": "ブートストラップDNSサーバ", "bootstrap_dns": "ブートストラップDNSサーバ",
"bootstrap_dns_desc": "ブートストラップDNSサーバは、上流として指定したDoHDoTリゾルバのIPアドレスを解決するために使用されます。", "bootstrap_dns_desc": "ブートストラップDNSサーバは、上流として指定したDoHDoTリゾルバのIPアドレスを解決するために使用されます。",
"check_dhcp_servers": "DHCPサーバをチェックする", "check_dhcp_servers": "DHCPサーバをチェックする",
@ -37,6 +39,7 @@
"dhcp_interface_select": "DHCPインタフェースの選択", "dhcp_interface_select": "DHCPインタフェースの選択",
"dhcp_hardware_address": "MACアドレス", "dhcp_hardware_address": "MACアドレス",
"dhcp_ip_addresses": "IPアドレス", "dhcp_ip_addresses": "IPアドレス",
"ip": "IP",
"dhcp_table_hostname": "ホスト名", "dhcp_table_hostname": "ホスト名",
"dhcp_table_expires": "有効期限", "dhcp_table_expires": "有効期限",
"dhcp_warning": "内蔵しているDHCPサーバを有効にしたい場合は、稼働中のDHCPサーバがないことを確認してください。そうでなければ、接続されたデバイスのためにインターネットを壊すかもしれません", "dhcp_warning": "内蔵しているDHCPサーバを有効にしたい場合は、稼働中のDHCPサーバがないことを確認してください。そうでなければ、接続されたデバイスのためにインターネットを壊すかもしれません",
@ -49,17 +52,26 @@
"dhcp_static_leases_not_found": "DHCP静的割り当てはありません", "dhcp_static_leases_not_found": "DHCP静的割り当てはありません",
"dhcp_add_static_lease": "静的割り当てを追加する", "dhcp_add_static_lease": "静的割り当てを追加する",
"dhcp_reset": "DHCP設定をリセットして良いですか", "dhcp_reset": "DHCP設定をリセットして良いですか",
"country": "国",
"city": "街",
"delete_confirm": "\"{{key}}\" を削除してもよろしいですか?", "delete_confirm": "\"{{key}}\" を削除してもよろしいですか?",
"form_enter_hostname": "ホスト名を入力してください", "form_enter_hostname": "ホスト名を入力してください",
"error_details": "エラー詳細", "error_details": "エラー詳細",
"response_details": "応答の詳細",
"request_details": "要求の詳細",
"client_details": "クライアントの詳細",
"details": "詳細",
"back": "戻る", "back": "戻る",
"dashboard": "ダッシュボード", "dashboard": "ダッシュボード",
"settings": "設定", "settings": "設定",
"filters": "フィルタ", "filters": "フィルタ",
"filter": "フィルタ",
"query_log": "クエリ・ログ", "query_log": "クエリ・ログ",
"empty_log": "クエリ・ログは空です",
"faq": "よくある質問", "faq": "よくある質問",
"version": "バージョン", "version": "バージョン",
"address": "アドレス", "address": "アドレス",
"protocol": "プロトコル",
"on": "オン", "on": "オン",
"off": "オフ", "off": "オフ",
"copyright": "著作権", "copyright": "著作権",
@ -132,8 +144,10 @@
"rules_count_table_header": "ルール数", "rules_count_table_header": "ルール数",
"last_time_updated_table_header": "最終更新時刻", "last_time_updated_table_header": "最終更新時刻",
"actions_table_header": "操作", "actions_table_header": "操作",
"request_table_header": "リクエスト",
"edit_table_action": "編集する", "edit_table_action": "編集する",
"delete_table_action": "削除する", "delete_table_action": "削除する",
"elapsed": "経過",
"filters_and_hosts_hint": "AdGuard Homeは、基本的な広告ブロックルールとhostsファイルの構文を理解します。", "filters_and_hosts_hint": "AdGuard Homeは、基本的な広告ブロックルールとhostsファイルの構文を理解します。",
"no_blocklist_added": "ブロックリストには何も追加されていません", "no_blocklist_added": "ブロックリストには何も追加されていません",
"no_whitelist_added": "許可リストには何も追加されていません", "no_whitelist_added": "許可リストには何も追加されていません",
@ -170,10 +184,12 @@
"updated_upstream_dns_toast": "上流DNSサーバを更新しました", "updated_upstream_dns_toast": "上流DNSサーバを更新しました",
"dns_test_ok_toast": "指定されたDNSサーバは正しく動作しています", "dns_test_ok_toast": "指定されたDNSサーバは正しく動作しています",
"dns_test_not_ok_toast": "サーバ \"{{key}}\": 使用できませんでした。正しく入力されているかどうかを確認してください", "dns_test_not_ok_toast": "サーバ \"{{key}}\": 使用できませんでした。正しく入力されているかどうかを確認してください",
"unblock_btn": "ブロック解除", "unblock": "ブロック解除",
"block_btn": "ブロックする", "block": "ブロック",
"time_table_header": "時刻", "time_table_header": "時刻",
"date": "購入日時",
"domain_name_table_header": "ドメイン名", "domain_name_table_header": "ドメイン名",
"domain_or_client": "ドメインまたはクライアント",
"type_table_header": "種類", "type_table_header": "種類",
"response_table_header": "応答", "response_table_header": "応答",
"client_table_header": "クライアント", "client_table_header": "クライアント",
@ -211,6 +227,9 @@
"custom_ip": "カスタムIP", "custom_ip": "カスタムIP",
"blocking_ipv4": "ブロック中のIPv4", "blocking_ipv4": "ブロック中のIPv4",
"blocking_ipv6": "ブロック中のIPv6", "blocking_ipv6": "ブロック中のIPv6",
"dns_over_https": "DNS-over-HTTPS",
"dns_over_tls": "DNS-over-TLS",
"plain_dns": "通常のDNS",
"form_enter_rate_limit": "頻度制限を入力してください", "form_enter_rate_limit": "頻度制限を入力してください",
"rate_limit": "頻度制限", "rate_limit": "頻度制限",
"edns_enable": "EDNSクライアント・サブネットを有効にする", "edns_enable": "EDNSクライアント・サブネットを有効にする",
@ -229,6 +248,7 @@
"rule_label": "ルール", "rule_label": "ルール",
"list_label": "リスト", "list_label": "リスト",
"unknown_filter": "不明なフィルタ {{filterId}}", "unknown_filter": "不明なフィルタ {{filterId}}",
"known_tracker": "既知のトラッカー",
"install_welcome_title": "ようこそ、AdGuard Home へ!", "install_welcome_title": "ようこそ、AdGuard Home へ!",
"install_welcome_desc": "AdGuard Homeは、ネットワーク全体で広告と追跡をブロックするDNSサーバです。その目的は、ネットワークとデバイスのすべてをあなたが制御できるようにすることであり、クライアント側のプログラムを使用する必要はありません。", "install_welcome_desc": "AdGuard Homeは、ネットワーク全体で広告と追跡をブロックするDNSサーバです。その目的は、ネットワークとデバイスのすべてをあなたが制御できるようにすることであり、クライアント側のプログラムを使用する必要はありません。",
"install_settings_title": "管理用ウェブインターフェイス", "install_settings_title": "管理用ウェブインターフェイス",
@ -257,7 +277,7 @@
"install_devices_router_list_1": "ルータの設定を開きます。通常は、URLhttp://192.168.0.1/ または http://192.168.1.1/ など)を介してブラウザからアクセスできます。パスワードの入力を求められることがあります。パスワードを覚えていない場合は、ルータにあるボタンを押してパスワードをリセットできます。一部のルータは特定のアプリケーションを必要とします。その場合、アプリケーションはあなたのコンピュータ/電話に既にインストールされているはずです。", "install_devices_router_list_1": "ルータの設定を開きます。通常は、URLhttp://192.168.0.1/ または http://192.168.1.1/ など)を介してブラウザからアクセスできます。パスワードの入力を求められることがあります。パスワードを覚えていない場合は、ルータにあるボタンを押してパスワードをリセットできます。一部のルータは特定のアプリケーションを必要とします。その場合、アプリケーションはあなたのコンピュータ/電話に既にインストールされているはずです。",
"install_devices_router_list_2": "DHCPDNSの設定を見つけます。DNSの文字のある入力欄を探します。それは、1〜3桁の数字で4つのグループに分けられた入力欄で、セットを許可されている欄です。", "install_devices_router_list_2": "DHCPDNSの設定を見つけます。DNSの文字のある入力欄を探します。それは、1〜3桁の数字で4つのグループに分けられた入力欄で、セットを許可されている欄です。",
"install_devices_router_list_3": "そこにAdGuard Homeサーバのアドレスを入力します。", "install_devices_router_list_3": "そこにAdGuard Homeサーバのアドレスを入力します。",
"install_devices_router_list_4": "一部のタイプのルータではカスタムDNSサーバを設定できません。この場合、AdGuard HomeをDHCPサーバとして設定することがおすすめです。それ以外の場合は、特定のルータモデルに合わせてDNSサーバをカスタマイズする方法に関するマニュアルを検索する必要があります。", "install_devices_router_list_4": "一部のタイプのルータではカスタムDNSサーバを設定できません。この場合、AdGuard Homeを<0>DHCPサーバ</0>として設定するとお役に立ちます。それ以外の場合は、特定のルータモデルに合わせてDNSサーバをカスタマイズする方法に関するマニュアルを検索する必要があります。",
"install_devices_windows_list_1": "「スタート」メニューまたはWindowsの検索から「設定」を開きます。", "install_devices_windows_list_1": "「スタート」メニューまたはWindowsの検索から「設定」を開きます。",
"install_devices_windows_list_2": "「ネットワークとインターネット」カテゴリに移動し、さらに「ネットワークと共有センター」へ移動します。", "install_devices_windows_list_2": "「ネットワークとインターネット」カテゴリに移動し、さらに「ネットワークと共有センター」へ移動します。",
"install_devices_windows_list_3": "画面の左側にある「アダプターの設定の変更」を見つけてクリックします。", "install_devices_windows_list_3": "画面の左側にある「アダプターの設定の変更」を見つけてクリックします。",
@ -346,6 +366,7 @@
"form_enter_id": "識別子を入力してください", "form_enter_id": "識別子を入力してください",
"form_add_id": "識別子を追加する", "form_add_id": "識別子を追加する",
"form_client_name": "クライアント名を入力してください", "form_client_name": "クライアント名を入力してください",
"name": "名前",
"client_global_settings": "グローバル設定を使用する", "client_global_settings": "グローバル設定を使用する",
"client_deleted": "クライアント \"{{key}}\" の削除に成功しました", "client_deleted": "クライアント \"{{key}}\" の削除に成功しました",
"client_added": "クライアント \"{{key}}\" の追加に成功しました", "client_added": "クライアント \"{{key}}\" の追加に成功しました",
@ -361,6 +382,8 @@
"access_allowed_desc": "CIDRまたはIPアドレスのリスト。設定されると、AdGuard HomeはこれらのIPアドレスからのリクエストのみを許可します。", "access_allowed_desc": "CIDRまたはIPアドレスのリスト。設定されると、AdGuard HomeはこれらのIPアドレスからのリクエストのみを許可します。",
"access_disallowed_title": "拒否するクライアント", "access_disallowed_title": "拒否するクライアント",
"access_disallowed_desc": "CIDRまたはIPアドレスのリスト。設定されると、AdGuard HomeはこれらのIPアドレスからのリクエストを破棄します。", "access_disallowed_desc": "CIDRまたはIPアドレスのリスト。設定されると、AdGuard HomeはこれらのIPアドレスからのリクエストを破棄します。",
"access_blocked_title": "拒否するドメイン",
"access_blocked_desc": "これをフィルタと混同しないでください。AdGuard Homeは、これらのドメインを含むDNSクエリを破棄します。",
"access_settings_saved": "アクセス設定の保存に成功しました", "access_settings_saved": "アクセス設定の保存に成功しました",
"updates_checked": "アップデートの確認に成功しました", "updates_checked": "アップデートの確認に成功しました",
"updates_version_equal": "AdGuard Homeは既に最新です", "updates_version_equal": "AdGuard Homeは既に最新です",
@ -443,6 +466,7 @@
"location": "ロケーション", "location": "ロケーション",
"orgname": "組織名", "orgname": "組織名",
"netname": "ネットワーク名", "netname": "ネットワーク名",
"network": "ネットワーク",
"descr": "説明", "descr": "説明",
"whois": "Whois", "whois": "Whois",
"filtering_rules_learn_more": "独自ホストリストの作成についての<0>詳細はこちら</0>。", "filtering_rules_learn_more": "独自ホストリストの作成についての<0>詳細はこちら</0>。",
@ -486,5 +510,20 @@
"confirm_static_ip": "AdGuard Homeは、{{ip}}を静的IPアドレスとして設定します。よろしいですか", "confirm_static_ip": "AdGuard Homeは、{{ip}}を静的IPアドレスとして設定します。よろしいですか",
"list_updated": "{{count}}個のリストが更新されました", "list_updated": "{{count}}個のリストが更新されました",
"list_updated_plural": "{{count}}個のリストが更新されました", "list_updated_plural": "{{count}}個のリストが更新されました",
"dnssec_enable": "DNSSECを有効にする" "dnssec_enable": "DNSSECを有効にする",
"dnssec_enable_desc": "DNSクエリの応答にDNSSECフラグを設定し、結果を確認しますDNSSEC対応のリゾルバが必要です",
"validated_with_dnssec": "DNSSECにて検証済",
"show_all_responses": "すべての応答",
"show_blocked_responses": "ブロック済",
"show_whitelisted_responses": "ホワイトリストにあり",
"show_processed_responses": "処理済",
"blocked_safebrowsing": "ブロックされたセーフブラウジング",
"blocked_adult_websites": "ブロックされたアダルトウェブサイト",
"blocked_threats": "ブロックされた脅威",
"allowed": "許可",
"filtered": "フィルタで処理",
"rewritten": "書換",
"safe_search": "セーフサーチ",
"blocklist": "ブロックリスト",
"milliseconds_abbreviation": "ms"
} }

View File

@ -37,6 +37,7 @@
"dhcp_interface_select": "DHCP 인터페이스 선택", "dhcp_interface_select": "DHCP 인터페이스 선택",
"dhcp_hardware_address": "하드웨어 주소", "dhcp_hardware_address": "하드웨어 주소",
"dhcp_ip_addresses": "IP 주소", "dhcp_ip_addresses": "IP 주소",
"ip": "IP",
"dhcp_table_hostname": "호스트 이름", "dhcp_table_hostname": "호스트 이름",
"dhcp_table_expires": "만료", "dhcp_table_expires": "만료",
"dhcp_warning": "DHCP 서버를 사용하려면 네트워크에 다른 활성 DHCP 서버가 없는지 확인해주세요. 다른 활성 DHCP 서버가 있다면, 연결된 장치의 인터넷을 끊을 수 있습니다.", "dhcp_warning": "DHCP 서버를 사용하려면 네트워크에 다른 활성 DHCP 서버가 없는지 확인해주세요. 다른 활성 DHCP 서버가 있다면, 연결된 장치의 인터넷을 끊을 수 있습니다.",
@ -49,17 +50,24 @@
"dhcp_static_leases_not_found": "DHCP 고정 임대를 찾을 수 없음", "dhcp_static_leases_not_found": "DHCP 고정 임대를 찾을 수 없음",
"dhcp_add_static_lease": "고정 임대 추가", "dhcp_add_static_lease": "고정 임대 추가",
"dhcp_reset": "정말로 DHCP 설정을 초기화할까요?", "dhcp_reset": "정말로 DHCP 설정을 초기화할까요?",
"country": "지역",
"delete_confirm": "\"{{key}}\"을 삭제하시겠습니까?", "delete_confirm": "\"{{key}}\"을 삭제하시겠습니까?",
"form_enter_hostname": "호스트 이름을 입력해주세요", "form_enter_hostname": "호스트 이름을 입력해주세요",
"error_details": "오류 상세 정보", "error_details": "오류 상세 정보",
"request_details": "요청 세부 사항",
"client_details": "클라이언트 정보",
"details": "정보",
"back": "뒤로", "back": "뒤로",
"dashboard": "대시보드", "dashboard": "대시보드",
"settings": "설정", "settings": "설정",
"filters": "필터", "filters": "필터",
"filter": "필터",
"query_log": "쿼리 로그", "query_log": "쿼리 로그",
"empty_log": "질의 로그가 비어있음",
"faq": "자주 묻는 질문", "faq": "자주 묻는 질문",
"version": "버전", "version": "버전",
"address": "주소", "address": "주소",
"protocol": "프로토콜",
"on": "ON", "on": "ON",
"off": "OFF", "off": "OFF",
"copyright": "Copyright", "copyright": "Copyright",
@ -132,8 +140,10 @@
"rules_count_table_header": "규칙 개수", "rules_count_table_header": "규칙 개수",
"last_time_updated_table_header": "마지막 업데이트", "last_time_updated_table_header": "마지막 업데이트",
"actions_table_header": "가능한 동작", "actions_table_header": "가능한 동작",
"request_table_header": "요청",
"edit_table_action": "편집", "edit_table_action": "편집",
"delete_table_action": "삭제", "delete_table_action": "삭제",
"elapsed": "소요",
"filters_and_hosts_hint": "AdGuard Home은 기본적인 광고 차단 규칙과 호스트 파일 문법을 읽을 수 있습니다", "filters_and_hosts_hint": "AdGuard Home은 기본적인 광고 차단 규칙과 호스트 파일 문법을 읽을 수 있습니다",
"no_blocklist_added": "차단 목록이 추가되지 않음", "no_blocklist_added": "차단 목록이 추가되지 않음",
"no_whitelist_added": "허용 목록이 추가되지 않음", "no_whitelist_added": "허용 목록이 추가되지 않음",
@ -170,10 +180,12 @@
"updated_upstream_dns_toast": "업스트림 DNS 서버를 업데이트하였습니다", "updated_upstream_dns_toast": "업스트림 DNS 서버를 업데이트하였습니다",
"dns_test_ok_toast": "특정 DNS 서버들은 정상적으로 동작 중입니다", "dns_test_ok_toast": "특정 DNS 서버들은 정상적으로 동작 중입니다",
"dns_test_not_ok_toast": "서버 \"{{key}}\": 사용할 수 없습니다, 제대로 작성했는지 확인하세요.", "dns_test_not_ok_toast": "서버 \"{{key}}\": 사용할 수 없습니다, 제대로 작성했는지 확인하세요.",
"unblock_btn": "차단 해제", "unblock": "차단 해제",
"block_btn": "차단", "block": "차단",
"time_table_header": "시간", "time_table_header": "시간",
"date": "날짜",
"domain_name_table_header": "도메인명", "domain_name_table_header": "도메인명",
"domain_or_client": "도메인 또는 클라이언트",
"type_table_header": "유형", "type_table_header": "유형",
"response_table_header": "응답", "response_table_header": "응답",
"client_table_header": "클라이언트", "client_table_header": "클라이언트",
@ -211,6 +223,8 @@
"custom_ip": "사용자 지정 IP", "custom_ip": "사용자 지정 IP",
"blocking_ipv4": "IPv4 차단", "blocking_ipv4": "IPv4 차단",
"blocking_ipv6": "IPv6 차단", "blocking_ipv6": "IPv6 차단",
"dns_over_https": "DNS-over-HTTPS",
"dns_over_tls": "DNS-over-TLS",
"form_enter_rate_limit": "한도 제한 입력하기", "form_enter_rate_limit": "한도 제한 입력하기",
"rate_limit": "한도 제한", "rate_limit": "한도 제한",
"edns_enable": "EDNS 클라이언트 서브넷 활성화", "edns_enable": "EDNS 클라이언트 서브넷 활성화",
@ -229,6 +243,7 @@
"rule_label": "규칙", "rule_label": "규칙",
"list_label": "목록", "list_label": "목록",
"unknown_filter": "알려지지 않은 필터 {{filterId}}", "unknown_filter": "알려지지 않은 필터 {{filterId}}",
"known_tracker": "알려진 추적기",
"install_welcome_title": "AdGuard Home에 오신 것을 환영합니다!", "install_welcome_title": "AdGuard Home에 오신 것을 환영합니다!",
"install_welcome_desc": "AdGuard Home은 광범위한 네트워크 광고와 추적 DNS 서버를 차단 합니다. 그것의 목적은 당신이 당신의 전체 네트워크와 당신의 모든 기기를 제어하는 것이며, 그것은 클라이언트의 프로그램을 사용할 필요가 없습니다.", "install_welcome_desc": "AdGuard Home은 광범위한 네트워크 광고와 추적 DNS 서버를 차단 합니다. 그것의 목적은 당신이 당신의 전체 네트워크와 당신의 모든 기기를 제어하는 것이며, 그것은 클라이언트의 프로그램을 사용할 필요가 없습니다.",
"install_settings_title": "관리자 웹 인터페이스", "install_settings_title": "관리자 웹 인터페이스",
@ -257,7 +272,7 @@
"install_devices_router_list_1": "라우터의 환경 설정을 여세요. 환경 설정은 다음의 주소(http://192.168.0.1/ 혹은 http://192.168.1.1/)를 통해 브라우저로 접근 가능합니다. 비밀번호를 입력해야할 수 있습니다. 비밀번호를 잊었다면 대개 라우터 기기에 있는 버튼을 눌러 비밀번호를 초기화할 수 있습니다. 어떤 라우터들은 당신의 컴퓨터/핸드폰에 설치할 수 있는 특정 어플리케이션을 필요로합니다.", "install_devices_router_list_1": "라우터의 환경 설정을 여세요. 환경 설정은 다음의 주소(http://192.168.0.1/ 혹은 http://192.168.1.1/)를 통해 브라우저로 접근 가능합니다. 비밀번호를 입력해야할 수 있습니다. 비밀번호를 잊었다면 대개 라우터 기기에 있는 버튼을 눌러 비밀번호를 초기화할 수 있습니다. 어떤 라우터들은 당신의 컴퓨터/핸드폰에 설치할 수 있는 특정 어플리케이션을 필요로합니다.",
"install_devices_router_list_2": "각각 1~3자리 숫자의 네 그룹으로 분할된 두 세트의 숫자를 허용하는 필드 옆에 있는 DNS 문자를 찾으세요.", "install_devices_router_list_2": "각각 1~3자리 숫자의 네 그룹으로 분할된 두 세트의 숫자를 허용하는 필드 옆에 있는 DNS 문자를 찾으세요.",
"install_devices_router_list_3": "AdGuard Home 서버 주소를 입력하세요", "install_devices_router_list_3": "AdGuard Home 서버 주소를 입력하세요",
"install_devices_router_list_4": "일부 라우터는 DNS서버의 커스텀 설정이 불가합니다. 간혹 AdGuard Home을 DHCP서버로 이용하여 문제를 해결하는 경우가 있지만 문제가 지속될 경우 사용하시는 라우터 모델의 매뉴얼을 참고하시어 DNS서버 커스텀 설정 방법을 직접 살펴보셔야 합니다.", "install_devices_router_list_4": "일부 라우터는 DNS서버의 커스텀 설정이 불가합니다. 간혹 AdGuard Home을 DHCP서버로 이용하여 문제를 해결하는 경우가 있지만 문제가 지속될 경우 사용하시는 라우터 모델의 매뉴얼을 참고하시어 <0>DNS</0>서버 커스텀 설정 방법을 직접 살펴보셔야 합니다.",
"install_devices_windows_list_1": "시작 메뉴 또는 윈도우 검색을 통해 제어판을 여세요", "install_devices_windows_list_1": "시작 메뉴 또는 윈도우 검색을 통해 제어판을 여세요",
"install_devices_windows_list_2": "네트워크 및 인터넷 카테고리로 이동한 다음 네트워크 및 공유 센터로 이동하세요.", "install_devices_windows_list_2": "네트워크 및 인터넷 카테고리로 이동한 다음 네트워크 및 공유 센터로 이동하세요.",
"install_devices_windows_list_3": "화면 왼쪽에서 어댑터 설정 변경을 찾아 클릭하세요.", "install_devices_windows_list_3": "화면 왼쪽에서 어댑터 설정 변경을 찾아 클릭하세요.",
@ -346,6 +361,7 @@
"form_enter_id": "식별자 입력", "form_enter_id": "식별자 입력",
"form_add_id": "식별자 추가", "form_add_id": "식별자 추가",
"form_client_name": "클라이언트 이름 입력", "form_client_name": "클라이언트 이름 입력",
"name": "이름",
"client_global_settings": "글로벌 설정 사용", "client_global_settings": "글로벌 설정 사용",
"client_deleted": "클라이언트 \"{{key}}\"가 정상적으로 삭제되었습니다", "client_deleted": "클라이언트 \"{{key}}\"가 정상적으로 삭제되었습니다",
"client_added": "클라이언트 \"{{key}}\"가 정상적으로 추가되었습니다", "client_added": "클라이언트 \"{{key}}\"가 정상적으로 추가되었습니다",
@ -445,6 +461,7 @@
"location": "위치", "location": "위치",
"orgname": "단체 이름", "orgname": "단체 이름",
"netname": "네트워크 이름", "netname": "네트워크 이름",
"network": "네트워크",
"descr": "설명", "descr": "설명",
"whois": "후이즈", "whois": "후이즈",
"filtering_rules_learn_more": "차단 리스트를 직접 호스트하는 법을 <0>알아보세요</0>.", "filtering_rules_learn_more": "차단 리스트를 직접 호스트하는 법을 <0>알아보세요</0>.",
@ -489,5 +506,19 @@
"list_updated": "{{count}} 리스트 업데이트됨", "list_updated": "{{count}} 리스트 업데이트됨",
"list_updated_plural": "{{count}} 리스트 업데이트됨", "list_updated_plural": "{{count}} 리스트 업데이트됨",
"dnssec_enable": "DNSSEC 활성화", "dnssec_enable": "DNSSEC 활성화",
"dnssec_enable_desc": "발신 DNS 쿼리에서 DNSSEC 플래그를 설정하고 결과를 확인합니다 (DNSSEC-enabled resolver 필수)" "dnssec_enable_desc": "발신 DNS 쿼리에서 DNSSEC 플래그를 설정하고 결과를 확인합니다 (DNSSEC-enabled resolver 필수)",
"validated_with_dnssec": "DNSSEC로 검증됨",
"show_all_responses": "모든 응답",
"show_blocked_responses": "차단됨",
"show_whitelisted_responses": "예외 적용됨",
"show_processed_responses": "처리됨",
"blocked_safebrowsing": "차단된 세이프 브라우징",
"blocked_adult_websites": "차단된 성인 웹사이트",
"blocked_threats": "차단된 위협",
"allowed": "허용됨",
"filtered": "필터링됨",
"rewritten": "재작성됨",
"safe_search": "세이프 서치",
"blocklist": "차단 목록",
"milliseconds_abbreviation": "ms"
} }

View File

@ -3,6 +3,8 @@
"example_upstream_reserved": "Je kan DNS upstream <0>specifiëren voor specifieke domein(en)</0>", "example_upstream_reserved": "Je kan DNS upstream <0>specifiëren voor specifieke domein(en)</0>",
"upstream_parallel": "Gebruik parallelle verzoeken om te versnellen door gelijktijdig verzoeken te sturen naar alle upstream servers", "upstream_parallel": "Gebruik parallelle verzoeken om te versnellen door gelijktijdig verzoeken te sturen naar alle upstream servers",
"parallel_requests": "Parallelle verzoeken", "parallel_requests": "Parallelle verzoeken",
"load_balancing": "Volume balanceren",
"load_balancing_desc": "Eén server per keer bevragen. AdGuard Home gebruikt hiervoor een gewogen willekeurig algoritme om de server te kiezen zodat de snelste server meer zal gebruikt worden.",
"bootstrap_dns": "Bootstrap DNS servers", "bootstrap_dns": "Bootstrap DNS servers",
"bootstrap_dns_desc": "Bootstrap DNS-servers worden gebruikt om IP-adressen op te lossen van de DoH / DoT-resolvers die u opgeeft als upstreams.", "bootstrap_dns_desc": "Bootstrap DNS-servers worden gebruikt om IP-adressen op te lossen van de DoH / DoT-resolvers die u opgeeft als upstreams.",
"check_dhcp_servers": "Zoek achter DHCP servers", "check_dhcp_servers": "Zoek achter DHCP servers",
@ -36,6 +38,7 @@
"dhcp_interface_select": "Selecteer DHCP interface", "dhcp_interface_select": "Selecteer DHCP interface",
"dhcp_hardware_address": "Hardware adres", "dhcp_hardware_address": "Hardware adres",
"dhcp_ip_addresses": "IP adressen", "dhcp_ip_addresses": "IP adressen",
"ip": "IP",
"dhcp_table_hostname": "Host naam", "dhcp_table_hostname": "Host naam",
"dhcp_table_expires": "Verloopt op", "dhcp_table_expires": "Verloopt op",
"dhcp_warning": "Indien je de ingebouwde DHCP server wilt inschakelen, let dan op dat er geen andere actieve DHCP server aanwezig is. Dit kan de internet verbinding instabiel maken!.", "dhcp_warning": "Indien je de ingebouwde DHCP server wilt inschakelen, let dan op dat er geen andere actieve DHCP server aanwezig is. Dit kan de internet verbinding instabiel maken!.",
@ -48,17 +51,26 @@
"dhcp_static_leases_not_found": "Geen DHCP static lease gevonden", "dhcp_static_leases_not_found": "Geen DHCP static lease gevonden",
"dhcp_add_static_lease": "Voeg statische lease toe", "dhcp_add_static_lease": "Voeg statische lease toe",
"dhcp_reset": "Weet je zeker dat je de DHCP configuratie wil resetten?", "dhcp_reset": "Weet je zeker dat je de DHCP configuratie wil resetten?",
"country": "Land",
"city": "Stad",
"delete_confirm": "Ben je zeker dat je \"{{key}}\" wilt verwijderen?", "delete_confirm": "Ben je zeker dat je \"{{key}}\" wilt verwijderen?",
"form_enter_hostname": "Vul hostnaam in", "form_enter_hostname": "Vul hostnaam in",
"error_details": "Fout details", "error_details": "Fout details",
"response_details": "Antwoorddetails",
"request_details": "Verzoekdetails",
"client_details": "Client details",
"details": "Details",
"back": "Terug", "back": "Terug",
"dashboard": "Dashboard", "dashboard": "Dashboard",
"settings": "Instellingen", "settings": "Instellingen",
"filters": "Filters", "filters": "Filters",
"filter": "Filter",
"query_log": "Query log", "query_log": "Query log",
"empty_log": "Logboek leeg",
"faq": "Veel gestelde vragen", "faq": "Veel gestelde vragen",
"version": "Versie", "version": "Versie",
"address": "IP-adres", "address": "Adres",
"protocol": "Protocol",
"on": "Aan", "on": "Aan",
"off": "Uit", "off": "Uit",
"copyright": "Copyright", "copyright": "Copyright",
@ -131,8 +143,10 @@
"rules_count_table_header": "Aantal regels", "rules_count_table_header": "Aantal regels",
"last_time_updated_table_header": "Laatste update", "last_time_updated_table_header": "Laatste update",
"actions_table_header": "Actie", "actions_table_header": "Actie",
"request_table_header": "Verzoek",
"edit_table_action": "Bewerk", "edit_table_action": "Bewerk",
"delete_table_action": "Verwijderen", "delete_table_action": "Verwijderen",
"elapsed": "Verstreken",
"filters_and_hosts_hint": "AdGuard Home kan overweg met basic adblock regels en hosts bestanden syntaxis.", "filters_and_hosts_hint": "AdGuard Home kan overweg met basic adblock regels en hosts bestanden syntaxis.",
"no_blocklist_added": "Geen blokkeerlijsten toegevoegd", "no_blocklist_added": "Geen blokkeerlijsten toegevoegd",
"no_whitelist_added": "Geen toestemmingslijsten toegevoegd", "no_whitelist_added": "Geen toestemmingslijsten toegevoegd",
@ -169,10 +183,12 @@
"updated_upstream_dns_toast": "De upstream DNS-servers zijn bijgewerkt", "updated_upstream_dns_toast": "De upstream DNS-servers zijn bijgewerkt",
"dns_test_ok_toast": "Opgegeven DNS-servers werken correct", "dns_test_ok_toast": "Opgegeven DNS-servers werken correct",
"dns_test_not_ok_toast": "Server \"{{key}}\": kon niet worden gebruikt, controleer of u het correct hebt geschreven", "dns_test_not_ok_toast": "Server \"{{key}}\": kon niet worden gebruikt, controleer of u het correct hebt geschreven",
"unblock_btn": "Deblokkeren", "unblock": "Deblokkeren",
"block_btn": "Blokkeren", "block": "Blokkeren",
"time_table_header": "Tijd", "time_table_header": "Tijd",
"date": "Datum",
"domain_name_table_header": "Domein naam", "domain_name_table_header": "Domein naam",
"domain_or_client": "Domein of cliënt",
"type_table_header": "Type", "type_table_header": "Type",
"response_table_header": "Antwoord", "response_table_header": "Antwoord",
"client_table_header": "Gebruiker", "client_table_header": "Gebruiker",
@ -202,13 +218,17 @@
"query_log_retention_confirm": "Weet u zeker dat u de bewaartermijn van het query logboek wilt wijzigen? Als u de intervalwaarde verlaagt, gaan sommige gegevens verloren", "query_log_retention_confirm": "Weet u zeker dat u de bewaartermijn van het query logboek wilt wijzigen? Als u de intervalwaarde verlaagt, gaan sommige gegevens verloren",
"anonymize_client_ip": "Cliënt IP anonimiseren", "anonymize_client_ip": "Cliënt IP anonimiseren",
"anonymize_client_ip_desc": "Het volledige IP-adres van de cliënt niet opnemen in log- en statistiekbestanden", "anonymize_client_ip_desc": "Het volledige IP-adres van de cliënt niet opnemen in log- en statistiekbestanden",
"default": "Standaard",
"custom_ip": "Aangepast IP", "custom_ip": "Aangepast IP",
"dns_over_https": "DNS-via-HTTPS",
"dns_over_tls": "DNS-via-TLS",
"source_label": "Bron", "source_label": "Bron",
"found_in_known_domain_db": "Gevonden in de bekende domeingegevensbank.", "found_in_known_domain_db": "Gevonden in de bekende domeingegevensbank.",
"category_label": "Categorie", "category_label": "Categorie",
"rule_label": "Regel", "rule_label": "Regel",
"list_label": "Lijst", "list_label": "Lijst",
"unknown_filter": "Onbekend filter {{filterId}}", "unknown_filter": "Onbekend filter {{filterId}}",
"known_tracker": "Bekende volger",
"install_welcome_title": "Welkom bij AdGuard Home!", "install_welcome_title": "Welkom bij AdGuard Home!",
"install_welcome_desc": "AdGuard Home is een netwerk DNS server die advertenties en trackers blokkeert. Het doel is om jou controle te geven over je gehele netwerk en al je apparaten, en er hoeft geen client-side programma te worden gebruikt.", "install_welcome_desc": "AdGuard Home is een netwerk DNS server die advertenties en trackers blokkeert. Het doel is om jou controle te geven over je gehele netwerk en al je apparaten, en er hoeft geen client-side programma te worden gebruikt.",
"install_settings_title": "Admin webinterface", "install_settings_title": "Admin webinterface",
@ -237,7 +257,7 @@
"install_devices_router_list_1": "Open de instellingen pagina voor uw router. Meestal kunt u deze vanuit uw browser openen via een URL (zoals http://192.168.0.1/ of http://192.168.1.1/). Mogelijk wordt u gevraagd om het wachtwoord in te voeren. Als u het niet meer weet, kunt u het wachtwoord vaak opnieuw instellen door op een knop op de router zelf te drukken. Voor sommige routers is een specifieke toepassing vereist, die in dat geval al op uw computer / telefoon moet zijn geïnstalleerd.", "install_devices_router_list_1": "Open de instellingen pagina voor uw router. Meestal kunt u deze vanuit uw browser openen via een URL (zoals http://192.168.0.1/ of http://192.168.1.1/). Mogelijk wordt u gevraagd om het wachtwoord in te voeren. Als u het niet meer weet, kunt u het wachtwoord vaak opnieuw instellen door op een knop op de router zelf te drukken. Voor sommige routers is een specifieke toepassing vereist, die in dat geval al op uw computer / telefoon moet zijn geïnstalleerd.",
"install_devices_router_list_2": "Zoek de DHCP/DNS-instellingen. Zoek naar de DNS-letters naast een veld dat twee of drie reeksen nummers toestaat, elk verdeeld in vier groepen van één tot drie cijfers.", "install_devices_router_list_2": "Zoek de DHCP/DNS-instellingen. Zoek naar de DNS-letters naast een veld dat twee of drie reeksen nummers toestaat, elk verdeeld in vier groepen van één tot drie cijfers.",
"install_devices_router_list_3": "Voer je AdGuard Home server adressen daar in.", "install_devices_router_list_3": "Voer je AdGuard Home server adressen daar in.",
"install_devices_router_list_4": "Je kan de DNS server niet aanpassen op sommige routers. In dat geval kan het een oplossing zijn om AdGuard Home te definiëren als een <a href='#dhcp'>DHCP server</a>. Je kan ook in de handleiding van je router kijken hoe je een DNS server aanpast.", "install_devices_router_list_4": "Je kan de DNS server niet aanpassen op sommige routers. In dat geval kan het een oplossing zijn om AdGuard Home te definiëren als een <0>DHCP server</0>. Je kan ook in de handleiding van je router kijken hoe je een DNS server aanpast.",
"install_devices_windows_list_1": "Open het Configuratiescherm via het menu Start of Windows zoeken.", "install_devices_windows_list_1": "Open het Configuratiescherm via het menu Start of Windows zoeken.",
"install_devices_windows_list_2": "Ga naar de categorie Netwerk en Internet en vervolgens naar Netwerkcentrum.", "install_devices_windows_list_2": "Ga naar de categorie Netwerk en Internet en vervolgens naar Netwerkcentrum.",
"install_devices_windows_list_3": "Zoek aan de linkerkant van het scherm Adapter-instellingen wijzigen en klik erop.", "install_devices_windows_list_3": "Zoek aan de linkerkant van het scherm Adapter-instellingen wijzigen en klik erop.",
@ -326,6 +346,7 @@
"form_enter_id": "ID invoeren", "form_enter_id": "ID invoeren",
"form_add_id": "ID toevoegen", "form_add_id": "ID toevoegen",
"form_client_name": "Vul gebruikersnaam in", "form_client_name": "Vul gebruikersnaam in",
"name": "Naam",
"client_global_settings": "Gebruik globale instelling", "client_global_settings": "Gebruik globale instelling",
"client_deleted": "Gebruiker \"{{key}}\" met succes verwijderd", "client_deleted": "Gebruiker \"{{key}}\" met succes verwijderd",
"client_added": "Gebruiker \"{{key}}\" met succes toegevoegd", "client_added": "Gebruiker \"{{key}}\" met succes toegevoegd",
@ -425,6 +446,7 @@
"location": "Locatie", "location": "Locatie",
"orgname": "Naam organisatie", "orgname": "Naam organisatie",
"netname": "Netwerk naam", "netname": "Netwerk naam",
"network": "Netwerk",
"descr": "Beschrijving", "descr": "Beschrijving",
"whois": "Whois", "whois": "Whois",
"filtering_rules_learn_more": "<0>Meer informatie</0> over het maken van je eigen host lijsten.", "filtering_rules_learn_more": "<0>Meer informatie</0> over het maken van je eigen host lijsten.",
@ -446,5 +468,18 @@
"check_service": "Servicenaam: {{service}}", "check_service": "Servicenaam: {{service}}",
"list_updated": "{{count}} lijst geüpdatet", "list_updated": "{{count}} lijst geüpdatet",
"list_updated_plural": "{{count}} lijsten geüpdatet", "list_updated_plural": "{{count}} lijsten geüpdatet",
"dnssec_enable": "DNSSEC inschakelen" "dnssec_enable": "DNSSEC inschakelen",
"validated_with_dnssec": "Gevalideerd met DNSSEC",
"show_all_responses": "Alle reacties",
"show_blocked_responses": "Geblokkeerd",
"show_whitelisted_responses": "Op toestemmingslijst",
"show_processed_responses": "Verwerkt",
"blocked_adult_websites": "Geblokkeerde 18+ websites",
"blocked_threats": "Geblokkeerde bedreigingen",
"allowed": "Toegestaan",
"filtered": "Gefilterd",
"rewritten": "Herschreven",
"safe_search": "Veilig zoeken",
"blocklist": "Blokkeerlijst",
"milliseconds_abbreviation": "ms"
} }

View File

@ -51,14 +51,17 @@
"delete_confirm": "Er du sikker på at du vil slette «{{key}}»?", "delete_confirm": "Er du sikker på at du vil slette «{{key}}»?",
"form_enter_hostname": "Skriv inn vertsnavnet", "form_enter_hostname": "Skriv inn vertsnavnet",
"error_details": "Feildetaljer", "error_details": "Feildetaljer",
"request_details": "Detaljer over forespørsel",
"details": "Detaljer",
"back": "Tilbake", "back": "Tilbake",
"dashboard": "Kontrollsenter", "dashboard": "Kontrollsenter",
"settings": "Innstillinger", "settings": "Innstillinger",
"filters": "Filtre", "filters": "Filtre",
"filter": "Filter",
"query_log": "Forespørselslogg", "query_log": "Forespørselslogg",
"faq": "OSS", "faq": "OSS",
"version": "Versjon", "version": "Versjon",
"address": "adresse", "address": "Adresse",
"on": "PÅ", "on": "PÅ",
"off": "AV", "off": "AV",
"copyright": "Opphavsrett", "copyright": "Opphavsrett",
@ -167,9 +170,10 @@
"updated_upstream_dns_toast": "Oppdaterte oppstrøms-DNS-tjenerne", "updated_upstream_dns_toast": "Oppdaterte oppstrøms-DNS-tjenerne",
"dns_test_ok_toast": "De spesifiserte DNS-tjenerne fungerer riktig", "dns_test_ok_toast": "De spesifiserte DNS-tjenerne fungerer riktig",
"dns_test_not_ok_toast": "Tjeneren «{{key}}» kunne ikke brukes, vennligst dobbeltsjekk at du har skrevet den riktig", "dns_test_not_ok_toast": "Tjeneren «{{key}}» kunne ikke brukes, vennligst dobbeltsjekk at du har skrevet den riktig",
"unblock_btn": "Tillat", "unblock": "Tillat",
"block_btn": "Blokker", "block": "Blokker",
"time_table_header": "Tidspunkt", "time_table_header": "Tidspunkt",
"date": "Dato",
"domain_name_table_header": "Domenenavn", "domain_name_table_header": "Domenenavn",
"type_table_header": "Type", "type_table_header": "Type",
"response_table_header": "Respons", "response_table_header": "Respons",
@ -206,6 +210,7 @@
"custom_ip": "Tilpasset IP", "custom_ip": "Tilpasset IP",
"blocking_ipv4": "IPv4-blokkering", "blocking_ipv4": "IPv4-blokkering",
"blocking_ipv6": "IPv6-blokkering", "blocking_ipv6": "IPv6-blokkering",
"dns_over_tls": "DNS-over-TLS",
"form_enter_rate_limit": "Skriv inn forespørselsfrekvensgrense", "form_enter_rate_limit": "Skriv inn forespørselsfrekvensgrense",
"rate_limit": "Forespørselsfrekvensgrense", "rate_limit": "Forespørselsfrekvensgrense",
"edns_enable": "Aktiver EDNS-klientundernett", "edns_enable": "Aktiver EDNS-klientundernett",
@ -340,6 +345,7 @@
"form_enter_id": "Skriv inn identifikator", "form_enter_id": "Skriv inn identifikator",
"form_add_id": "Legg til identifikator", "form_add_id": "Legg til identifikator",
"form_client_name": "Skriv inn klientnavnet", "form_client_name": "Skriv inn klientnavnet",
"name": "Navn",
"client_global_settings": "Bruk de overbestyrte innstillingene", "client_global_settings": "Bruk de overbestyrte innstillingene",
"client_deleted": "Klienten «{{key}}» ble vellykket slettet", "client_deleted": "Klienten «{{key}}» ble vellykket slettet",
"client_added": "Klienten «{{key}}» ble vellykket lagt til", "client_added": "Klienten «{{key}}» ble vellykket lagt til",
@ -438,6 +444,7 @@
"location": "Posisjon", "location": "Posisjon",
"orgname": "Firmanavn", "orgname": "Firmanavn",
"netname": "Nettverksnavn", "netname": "Nettverksnavn",
"network": "Network",
"descr": "Beskrivelse", "descr": "Beskrivelse",
"whois": "Whois", "whois": "Whois",
"filtering_rules_learn_more": "<0>Lær mer</0> om å lage dine egne filterlister for AdGuard Home.", "filtering_rules_learn_more": "<0>Lær mer</0> om å lage dine egne filterlister for AdGuard Home.",
@ -478,5 +485,11 @@
"install_static_configure": "Vi har oppdaget at det brukes en dynamisk IP-adresse — <0>{{ip}}</0>. Vil du bruke det som din statiske adresse?", "install_static_configure": "Vi har oppdaget at det brukes en dynamisk IP-adresse — <0>{{ip}}</0>. Vil du bruke det som din statiske adresse?",
"confirm_static_ip": "AdGuard Home vil sette opp {{ip}} til å bli din statiske IP-adresse. Vil du fortsette?", "confirm_static_ip": "AdGuard Home vil sette opp {{ip}} til å bli din statiske IP-adresse. Vil du fortsette?",
"list_updated": "{{count}} liste oppdatert", "list_updated": "{{count}} liste oppdatert",
"list_updated_plural": "{{count}} lister oppdatert" "list_updated_plural": "{{count}} lister oppdatert",
"show_blocked_responses": "Blokkért",
"show_processed_responses": "Bearbeidet",
"blocked_adult_websites": "Blokkerte voksennettsteder",
"blocked_threats": "Blokkerte trusler",
"allowed": "Unntak",
"blocklist": "Blokkeringsliste"
} }

View File

@ -37,6 +37,7 @@
"dhcp_interface_select": "Wybierz interfejs DHCP", "dhcp_interface_select": "Wybierz interfejs DHCP",
"dhcp_hardware_address": "Adres sprzętowy", "dhcp_hardware_address": "Adres sprzętowy",
"dhcp_ip_addresses": "Adresy IP", "dhcp_ip_addresses": "Adresy IP",
"ip": "Adres IP",
"dhcp_table_hostname": "Nazwa hosta", "dhcp_table_hostname": "Nazwa hosta",
"dhcp_table_expires": "Wygasa", "dhcp_table_expires": "Wygasa",
"dhcp_warning": "Aby włączyć wbudowany serwer DHCP, upewnij się, że nie ma innego aktywnego serwera DHCP. W przeciwnym razie może przerwać połączenie internetowe dla podłączonych urządzeń!", "dhcp_warning": "Aby włączyć wbudowany serwer DHCP, upewnij się, że nie ma innego aktywnego serwera DHCP. W przeciwnym razie może przerwać połączenie internetowe dla podłączonych urządzeń!",
@ -49,17 +50,23 @@
"dhcp_static_leases_not_found": "Nie znaleziono statycznych dzierżaw DHCP", "dhcp_static_leases_not_found": "Nie znaleziono statycznych dzierżaw DHCP",
"dhcp_add_static_lease": "Dodaj dzierżawę statyczną", "dhcp_add_static_lease": "Dodaj dzierżawę statyczną",
"dhcp_reset": "Czy na pewno chcesz zresetować konfigurację DHCP?", "dhcp_reset": "Czy na pewno chcesz zresetować konfigurację DHCP?",
"country": "Kraj",
"city": "Miasto",
"delete_confirm": "Czy na pewno chcesz usunąć \"{{key}}\"?", "delete_confirm": "Czy na pewno chcesz usunąć \"{{key}}\"?",
"form_enter_hostname": "Wpisz nazwę hosta", "form_enter_hostname": "Wpisz nazwę hosta",
"error_details": "Szczegóły błędu", "error_details": "Szczegóły błędu",
"client_details": "Szczegóły klienta",
"details": "Szczegóły",
"back": "Wróć", "back": "Wróć",
"dashboard": "Panel kontrolny", "dashboard": "Panel kontrolny",
"settings": "Ustawienia", "settings": "Ustawienia",
"filters": "Filtry", "filters": "Filtry",
"filter": "Filtr",
"query_log": "Dziennik zapytań", "query_log": "Dziennik zapytań",
"empty_log": "Dziennik zapytań jest pusty",
"faq": "FAQ", "faq": "FAQ",
"version": "wersja", "version": "wersja",
"address": "adres", "address": "Adres",
"on": "WŁĄCZONY", "on": "WŁĄCZONY",
"off": "WYŁĄCZONY", "off": "WYŁĄCZONY",
"copyright": "Prawo autorskie", "copyright": "Prawo autorskie",
@ -132,8 +139,10 @@
"rules_count_table_header": "Liczba reguł", "rules_count_table_header": "Liczba reguł",
"last_time_updated_table_header": "Ostatnia aktualizacja", "last_time_updated_table_header": "Ostatnia aktualizacja",
"actions_table_header": "Akcje", "actions_table_header": "Akcje",
"request_table_header": "Żądanie",
"edit_table_action": "Edytuj", "edit_table_action": "Edytuj",
"delete_table_action": "Usuń", "delete_table_action": "Usuń",
"elapsed": "Upłynęło",
"filters_and_hosts_hint": "AdGuard Home rozumie podstawowe reguły adblocka i składnię plików hostów.", "filters_and_hosts_hint": "AdGuard Home rozumie podstawowe reguły adblocka i składnię plików hostów.",
"no_blocklist_added": "Nie dodano listy zablokowanych", "no_blocklist_added": "Nie dodano listy zablokowanych",
"no_whitelist_added": "Nie dodano listy dozwolonych", "no_whitelist_added": "Nie dodano listy dozwolonych",
@ -170,10 +179,12 @@
"updated_upstream_dns_toast": "Główne serwery DNS zostały zaktualizowane", "updated_upstream_dns_toast": "Główne serwery DNS zostały zaktualizowane",
"dns_test_ok_toast": "Określone serwery DNS działają poprawnie", "dns_test_ok_toast": "Określone serwery DNS działają poprawnie",
"dns_test_not_ok_toast": "Serwer \"{{key}}\": nie można go użyć, sprawdź, czy napisałeś go poprawnie", "dns_test_not_ok_toast": "Serwer \"{{key}}\": nie można go użyć, sprawdź, czy napisałeś go poprawnie",
"unblock_btn": "Odblokuj", "unblock": "Odblokuj",
"block_btn": "Zablokuj", "block": "Zablokuj",
"time_table_header": "Czas", "time_table_header": "Czas",
"date": "Data",
"domain_name_table_header": "Nazwa domeny", "domain_name_table_header": "Nazwa domeny",
"domain_or_client": "Domena lub klient",
"type_table_header": "Typ", "type_table_header": "Typ",
"response_table_header": "Odpowiedź ", "response_table_header": "Odpowiedź ",
"client_table_header": "Klient", "client_table_header": "Klient",
@ -211,6 +222,8 @@
"custom_ip": "Niestandardowy adres IP", "custom_ip": "Niestandardowy adres IP",
"blocking_ipv4": "Blokowanie IPv4", "blocking_ipv4": "Blokowanie IPv4",
"blocking_ipv6": "Blokowanie IPv6", "blocking_ipv6": "Blokowanie IPv6",
"dns_over_https": "DNS-over-HTTPS",
"dns_over_tls": "DNS-over-TLS",
"form_enter_rate_limit": "Wpisz limit ilościowy", "form_enter_rate_limit": "Wpisz limit ilościowy",
"rate_limit": "Limit ilościowy", "rate_limit": "Limit ilościowy",
"edns_enable": "Włącz podsieć klienta EDNS", "edns_enable": "Włącz podsieć klienta EDNS",
@ -229,6 +242,7 @@
"rule_label": "Reguła", "rule_label": "Reguła",
"list_label": "Lista", "list_label": "Lista",
"unknown_filter": "Nieznany filtr {{filterId}}", "unknown_filter": "Nieznany filtr {{filterId}}",
"known_tracker": "Znany element śledzący",
"install_welcome_title": "Witaj w AdGuard Home!", "install_welcome_title": "Witaj w AdGuard Home!",
"install_welcome_desc": "AdGuard Home to w pełni funkcjonalny serwer DNS do blokowania reklam i śledzenia. Jego celem jest kontrolowanie całej sieci i wszystkich urządzeń, bez konieczności korzystania z jakiegokolwiek programu po stronie klienta.", "install_welcome_desc": "AdGuard Home to w pełni funkcjonalny serwer DNS do blokowania reklam i śledzenia. Jego celem jest kontrolowanie całej sieci i wszystkich urządzeń, bez konieczności korzystania z jakiegokolwiek programu po stronie klienta.",
"install_settings_title": "Interfejs internetowy administratora", "install_settings_title": "Interfejs internetowy administratora",
@ -257,7 +271,7 @@
"install_devices_router_list_1": "Otwórz ustawienia routera. Zazwyczaj możesz uzyskać do niego dostęp przez przeglądarkę za pośrednictwem adresu URL (na przykład http://192.168.0.1/ lub http://192.168.1.1/). Możesz zostać poproszony o wpisanie hasła. Jeśli nie pamiętasz hasła, możesz je odzyskać, naciskając przycisk na samym routerze. Niektóre routery wymagają określonej aplikacji, która powinna być już zainstalowana na komputerze lub telefonie.", "install_devices_router_list_1": "Otwórz ustawienia routera. Zazwyczaj możesz uzyskać do niego dostęp przez przeglądarkę za pośrednictwem adresu URL (na przykład http://192.168.0.1/ lub http://192.168.1.1/). Możesz zostać poproszony o wpisanie hasła. Jeśli nie pamiętasz hasła, możesz je odzyskać, naciskając przycisk na samym routerze. Niektóre routery wymagają określonej aplikacji, która powinna być już zainstalowana na komputerze lub telefonie.",
"install_devices_router_list_2": "Znajdź ustawienia DHCP/DNS. Poszukaj skrótu DNS obok pola, które pozwala wstawić dwa lub trzy zestawy liczb, z których każdy jest podzielony na cztery grupy z jedną do trzech cyfr.", "install_devices_router_list_2": "Znajdź ustawienia DHCP/DNS. Poszukaj skrótu DNS obok pola, które pozwala wstawić dwa lub trzy zestawy liczb, z których każdy jest podzielony na cztery grupy z jedną do trzech cyfr.",
"install_devices_router_list_3": "Wpisz adresy swojego serwera AdGuard Home.", "install_devices_router_list_3": "Wpisz adresy swojego serwera AdGuard Home.",
"install_devices_router_list_4": "Nie możesz ustawić niestandardowego serwera DNS na niektórych routerach. W takim przypadku może pomóc Ci skonfigurowanie AdGuard Home jako <a href='#dhcp'>serwera DHCP</a>. W przeciwnym razie musisz poszukać instrukcji ustawienia serwerów DNS dla konkretnego modelu routera.", "install_devices_router_list_4": "Nie możesz ustawić niestandardowego serwera DNS na niektórych routerach. W takim przypadku może pomóc Ci skonfigurowanie AdGuard Home jako <0>serwera DHCP</0>. W przeciwnym razie musisz poszukać instrukcji ustawienia serwerów DNS dla konkretnego modelu routera.",
"install_devices_windows_list_1": "Otwórz panel Ustawienia w menu Start lub w Windows.", "install_devices_windows_list_1": "Otwórz panel Ustawienia w menu Start lub w Windows.",
"install_devices_windows_list_2": "Przejdź do kategorii Sieć i Internet, a następnie do Centrum sieci i udostępniania.", "install_devices_windows_list_2": "Przejdź do kategorii Sieć i Internet, a następnie do Centrum sieci i udostępniania.",
"install_devices_windows_list_3": "Po lewej stronie ekranu znajdź Zmień ustawienia adaptera i kliknij na niego.", "install_devices_windows_list_3": "Po lewej stronie ekranu znajdź Zmień ustawienia adaptera i kliknij na niego.",
@ -346,6 +360,7 @@
"form_enter_id": "Wpisz identyfikator", "form_enter_id": "Wpisz identyfikator",
"form_add_id": "Dodaj identyfikator", "form_add_id": "Dodaj identyfikator",
"form_client_name": "Wpisz nazwę klienta", "form_client_name": "Wpisz nazwę klienta",
"name": "Nazwa",
"client_global_settings": "Użyj ustawień globalnych", "client_global_settings": "Użyj ustawień globalnych",
"client_deleted": "Klient \"{{key}}\" został pomyślnie usunięty", "client_deleted": "Klient \"{{key}}\" został pomyślnie usunięty",
"client_added": "Klient \"{{key}}\" został pomyślnie dodany", "client_added": "Klient \"{{key}}\" został pomyślnie dodany",
@ -445,6 +460,7 @@
"location": "Lokalizacja", "location": "Lokalizacja",
"orgname": "Nazwa firmy", "orgname": "Nazwa firmy",
"netname": "Nazwa sieci", "netname": "Nazwa sieci",
"network": "Sieć",
"descr": "Opis", "descr": "Opis",
"whois": "Whois", "whois": "Whois",
"filtering_rules_learn_more": "<0>Dowiedz się więcej</0> o tworzeniu własnych list blokowania hostów.", "filtering_rules_learn_more": "<0>Dowiedz się więcej</0> o tworzeniu własnych list blokowania hostów.",
@ -489,5 +505,19 @@
"list_updated": "{{count}} lista zaktualizowana", "list_updated": "{{count}} lista zaktualizowana",
"list_updated_plural": "{{count}} list zaktualizowanych", "list_updated_plural": "{{count}} list zaktualizowanych",
"dnssec_enable": "Włącz DNSSEC", "dnssec_enable": "Włącz DNSSEC",
"dnssec_enable_desc": "Ustaw flagę DNSSEC w wychodzących zapytaniach DNS i sprawdź wynik (wymagany jest resolver z obsługą zabezpieczania DNSSEC)" "dnssec_enable_desc": "Ustaw flagę DNSSEC w wychodzących zapytaniach DNS i sprawdź wynik (wymagany jest usługodawca z obsługą zabezpieczania DNSSEC)",
"validated_with_dnssec": "Zweryfikowany przez DNSSEC",
"show_all_responses": "Wszystkie odpowiedzi",
"show_blocked_responses": "Zablokowane",
"show_whitelisted_responses": "Biała lista",
"show_processed_responses": "Przetworzono",
"blocked_safebrowsing": "Zablokowane przez bezpieczne przeglądanie",
"blocked_adult_websites": "Zablokowane witryny dla dorosłych",
"blocked_threats": "Zablokowane zagrożenia",
"allowed": "Dozwolone",
"filtered": "Filtrowane",
"rewritten": "Przepisane",
"safe_search": "Bezpieczne wyszukiwanie",
"blocklist": "Lista zablokowanych",
"milliseconds_abbreviation": "ms"
} }

View File

@ -37,6 +37,7 @@
"dhcp_interface_select": "Selecione a interface DHCP", "dhcp_interface_select": "Selecione a interface DHCP",
"dhcp_hardware_address": "Endereço de hardware", "dhcp_hardware_address": "Endereço de hardware",
"dhcp_ip_addresses": "Endereço de IP", "dhcp_ip_addresses": "Endereço de IP",
"ip": "IP",
"dhcp_table_hostname": "Nome do servidor", "dhcp_table_hostname": "Nome do servidor",
"dhcp_table_expires": "Expira", "dhcp_table_expires": "Expira",
"dhcp_warning": "Se você quiser ativar o servidor DHCP, verifique se não há outro servidor DHCP ativo na sua rede. Caso contrário, a internet pode parar de funcionar para outros dispositivos conectados!", "dhcp_warning": "Se você quiser ativar o servidor DHCP, verifique se não há outro servidor DHCP ativo na sua rede. Caso contrário, a internet pode parar de funcionar para outros dispositivos conectados!",
@ -49,17 +50,22 @@
"dhcp_static_leases_not_found": "Nenhuma concessão DHCP estática foi encontrada", "dhcp_static_leases_not_found": "Nenhuma concessão DHCP estática foi encontrada",
"dhcp_add_static_lease": "Adicionar nova concessão estática", "dhcp_add_static_lease": "Adicionar nova concessão estática",
"dhcp_reset": "Você tem certeza de que deseja redefinir a configuração DHCP?", "dhcp_reset": "Você tem certeza de que deseja redefinir a configuração DHCP?",
"country": "País",
"delete_confirm": "Você tem certeza de que deseja excluir \"{{key}}\"?", "delete_confirm": "Você tem certeza de que deseja excluir \"{{key}}\"?",
"form_enter_hostname": "Digite o hostname", "form_enter_hostname": "Digite o hostname",
"error_details": "Detalhes do erro", "error_details": "Detalhes do erro",
"client_details": "Detalhes do cliente",
"details": "Detalhes",
"back": "Voltar", "back": "Voltar",
"dashboard": "Painel", "dashboard": "Painel",
"settings": "Configurações", "settings": "Configurações",
"filters": "Filtros", "filters": "Filtros",
"filter": "Filtro",
"query_log": "Registro de consultas", "query_log": "Registro de consultas",
"empty_log": "O registro de consulta está vazio",
"faq": "FAQ", "faq": "FAQ",
"version": "Versão", "version": "Versão",
"address": "endereço", "address": "Endereço",
"on": "Ligado", "on": "Ligado",
"off": "Desligado", "off": "Desligado",
"copyright": "Copyright", "copyright": "Copyright",
@ -132,8 +138,10 @@
"rules_count_table_header": "Quantidade de regras", "rules_count_table_header": "Quantidade de regras",
"last_time_updated_table_header": "Última atualização", "last_time_updated_table_header": "Última atualização",
"actions_table_header": "Ações", "actions_table_header": "Ações",
"request_table_header": "Solicitação",
"edit_table_action": "Editar", "edit_table_action": "Editar",
"delete_table_action": "Excluir", "delete_table_action": "Excluir",
"elapsed": "Tempo decorrido",
"filters_and_hosts_hint": "O AdGuard Home entende regras básicas de bloqueio de anúncios e a sintaxe de arquivos de hosts.", "filters_and_hosts_hint": "O AdGuard Home entende regras básicas de bloqueio de anúncios e a sintaxe de arquivos de hosts.",
"no_blocklist_added": "Nenhuma lista negra foi adicionada", "no_blocklist_added": "Nenhuma lista negra foi adicionada",
"no_whitelist_added": "Nenhuma lista branca foi adicionada", "no_whitelist_added": "Nenhuma lista branca foi adicionada",
@ -170,10 +178,12 @@
"updated_upstream_dns_toast": "Atualizado os servidores DNS upstream", "updated_upstream_dns_toast": "Atualizado os servidores DNS upstream",
"dns_test_ok_toast": "Os servidores DNS especificados estão funcionando corretamente", "dns_test_ok_toast": "Os servidores DNS especificados estão funcionando corretamente",
"dns_test_not_ok_toast": "O servidor \"{{key}}\": não pôde ser utilizado. Por favor, verifique se você escreveu corretamente", "dns_test_not_ok_toast": "O servidor \"{{key}}\": não pôde ser utilizado. Por favor, verifique se você escreveu corretamente",
"unblock_btn": "Desbloquear", "unblock": "Desbloquear",
"block_btn": "Bloquear", "block": "Bloquear",
"time_table_header": "Data", "time_table_header": "Data",
"date": "Data",
"domain_name_table_header": "Nome de domínio", "domain_name_table_header": "Nome de domínio",
"domain_or_client": "Domínio ou cliente",
"type_table_header": "Tipo", "type_table_header": "Tipo",
"response_table_header": "Resposta", "response_table_header": "Resposta",
"client_table_header": "Cliente", "client_table_header": "Cliente",
@ -211,6 +221,8 @@
"custom_ip": "IP personalizado", "custom_ip": "IP personalizado",
"blocking_ipv4": "Bloqueando IPv4", "blocking_ipv4": "Bloqueando IPv4",
"blocking_ipv6": "Bloqueando IPv6", "blocking_ipv6": "Bloqueando IPv6",
"dns_over_https": "DNS-sobre-HTTPS",
"dns_over_tls": "DNS-sobre-TLS",
"form_enter_rate_limit": "Insira a taxa limite", "form_enter_rate_limit": "Insira a taxa limite",
"rate_limit": "Taxa limite", "rate_limit": "Taxa limite",
"edns_enable": "Ativar a sub-rede do cliente EDNS", "edns_enable": "Ativar a sub-rede do cliente EDNS",
@ -229,6 +241,7 @@
"rule_label": "Regra", "rule_label": "Regra",
"list_label": "Lista", "list_label": "Lista",
"unknown_filter": "Filtro desconhecido {{filterId}}", "unknown_filter": "Filtro desconhecido {{filterId}}",
"known_tracker": "Rastreador conhecido",
"install_welcome_title": "Bem-vindo(a) ao AdGuard Home!", "install_welcome_title": "Bem-vindo(a) ao AdGuard Home!",
"install_welcome_desc": "O AdGuard Home é um servidor de DNS para bloqueio de anúncios e rastreamento em toda a rede. Sua finalidade é permitir que você controle toda a sua rede e seus dispositivos sem precisar ter um programa instalado.", "install_welcome_desc": "O AdGuard Home é um servidor de DNS para bloqueio de anúncios e rastreamento em toda a rede. Sua finalidade é permitir que você controle toda a sua rede e seus dispositivos sem precisar ter um programa instalado.",
"install_settings_title": "Interface web de administrador", "install_settings_title": "Interface web de administrador",
@ -257,7 +270,7 @@
"install_devices_router_list_1": "Abra as configurações do seu roteador\nNo navegador digite o IP do roteador, o padrão é (http://192.168.0.1/ ou http://192.168.1.1/), e o login e senha é admin/admin; Se você não se lembra da senha, você pode redefinir a senha rapidamente pressionando um botão no próprio roteador. Alguns roteadores têm um aplicativo específico que já deve estar instalado em seu computador/telefone.", "install_devices_router_list_1": "Abra as configurações do seu roteador\nNo navegador digite o IP do roteador, o padrão é (http://192.168.0.1/ ou http://192.168.1.1/), e o login e senha é admin/admin; Se você não se lembra da senha, você pode redefinir a senha rapidamente pressionando um botão no próprio roteador. Alguns roteadores têm um aplicativo específico que já deve estar instalado em seu computador/telefone.",
"install_devices_router_list_2": "Encontre as Configurações de DNS. Procure as letras DNS ao lado de um campo que permite dois ou três conjuntos de números, cada um dividido em quatro grupos de um a três números.", "install_devices_router_list_2": "Encontre as Configurações de DNS. Procure as letras DNS ao lado de um campo que permite dois ou três conjuntos de números, cada um dividido em quatro grupos de um a três números.",
"install_devices_router_list_3": "Digite aqui seu servidor do AdGuard Home.", "install_devices_router_list_3": "Digite aqui seu servidor do AdGuard Home.",
"install_devices_router_list_4": "Você não pode definir um servidor DNS personalizado em alguns tipos de roteadores. Nesse caso, pode ajudar se você configurar o AdGuard Home como um servidor DHCP. Caso contrário, você deve procurar o manual sobre como personalizar os servidores DNS para o seu modelo de roteador específico.", "install_devices_router_list_4": "Você não pode definir um servidor DNS personalizado em alguns tipos de roteadores. Nesse caso, pode ajudar se você configurar o AdGuard Home como um <0>servidor DHCP</0>. Caso contrário, você deve procurar o manual sobre como personalizar os servidores DNS para o seu modelo de roteador específico.",
"install_devices_windows_list_1": "Abra o Painel de Controle pelo Menu Iniciar ou pela Pesquisa do Windows.", "install_devices_windows_list_1": "Abra o Painel de Controle pelo Menu Iniciar ou pela Pesquisa do Windows.",
"install_devices_windows_list_2": "Entre na categoria Rede e Internet e depois clique em Central de Rede e Compartilhamento.", "install_devices_windows_list_2": "Entre na categoria Rede e Internet e depois clique em Central de Rede e Compartilhamento.",
"install_devices_windows_list_3": "No lado esquerdo da janela clique em Alterar as configurações do adaptador.", "install_devices_windows_list_3": "No lado esquerdo da janela clique em Alterar as configurações do adaptador.",
@ -346,6 +359,7 @@
"form_enter_id": "Inserir identificador", "form_enter_id": "Inserir identificador",
"form_add_id": "Adicionar identificador", "form_add_id": "Adicionar identificador",
"form_client_name": "Digite o nome do cliente", "form_client_name": "Digite o nome do cliente",
"name": "Nome",
"client_global_settings": "Usar configurações global", "client_global_settings": "Usar configurações global",
"client_deleted": "Cliente \"{{key}}\" excluído com sucesso", "client_deleted": "Cliente \"{{key}}\" excluído com sucesso",
"client_added": "Cliente \"{{key}}\" adicionado com sucesso", "client_added": "Cliente \"{{key}}\" adicionado com sucesso",
@ -445,6 +459,7 @@
"location": "Localização", "location": "Localização",
"orgname": "Nome da organização", "orgname": "Nome da organização",
"netname": "Nome da rede", "netname": "Nome da rede",
"network": "Rede",
"descr": "Descrição", "descr": "Descrição",
"whois": "Whois", "whois": "Whois",
"filtering_rules_learn_more": "<0>Saiba mais</0> sobre como criar as suas próprias listas negras de servidores.", "filtering_rules_learn_more": "<0>Saiba mais</0> sobre como criar as suas próprias listas negras de servidores.",
@ -456,7 +471,7 @@
"disable_ipv6": "Desativar IPv6", "disable_ipv6": "Desativar IPv6",
"disable_ipv6_desc": "Se este recurso estiver ativado, todas as consultas de DNS para endereços IPv6 (tipo AAAA) serão ignoradas.", "disable_ipv6_desc": "Se este recurso estiver ativado, todas as consultas de DNS para endereços IPv6 (tipo AAAA) serão ignoradas.",
"fastest_addr": "Endereço de IP mais rápido", "fastest_addr": "Endereço de IP mais rápido",
"fastest_addr_desc": "Consulte todos os servidores de DNS e retorne o endereço de IP mais rápido entre todas as respostas", "fastest_addr_desc": "Consulta todos os servidores DNS e retorna o endereço IP mais rápido entre todas as respostas. Isso irá retardar as consultas ao DNS, pois temos que esperar por respostas de todos os servidores DNS, porém melhorando a conectividade em geral.",
"autofix_warning_text": "Se clicar em \"Corrigir\", o AdGuardHome irá configurar o seu sistema para utilizar o servidor DNS do AdGuardHome.", "autofix_warning_text": "Se clicar em \"Corrigir\", o AdGuardHome irá configurar o seu sistema para utilizar o servidor DNS do AdGuardHome.",
"autofix_warning_list": "Ele irá realizar estas tarefas: <0>Desativar sistema DNSStubListener</0> <0>Definir endereço do servidor DNS para 127.0.0.1</0> <0>Substituir o alvo simbólico do link /etc/resolv.conf para /run/systemd/resolv.conf</0> <0>Parar DNSStubListener (recarregar serviço resolvido pelo sistema)</0>", "autofix_warning_list": "Ele irá realizar estas tarefas: <0>Desativar sistema DNSStubListener</0> <0>Definir endereço do servidor DNS para 127.0.0.1</0> <0>Substituir o alvo simbólico do link /etc/resolv.conf para /run/systemd/resolv.conf</0> <0>Parar DNSStubListener (recarregar serviço resolvido pelo sistema)</0>",
"autofix_warning_result": "Como resultado, todos as solicitações DNS do seu sistema serão processadas pelo AdGuardHome por padrão.", "autofix_warning_result": "Como resultado, todos as solicitações DNS do seu sistema serão processadas pelo AdGuardHome por padrão.",
@ -489,5 +504,19 @@
"list_updated": "{{count}} lista atualizada", "list_updated": "{{count}} lista atualizada",
"list_updated_plural": "{{count}} listas atualizadas", "list_updated_plural": "{{count}} listas atualizadas",
"dnssec_enable": "Ativar DNSSEC", "dnssec_enable": "Ativar DNSSEC",
"dnssec_enable_desc": "Definir a flag DNSSEC nas consultas de DNS em andamento e verificar o resultado (é necessário um resolvedor DNSSEC ativado)" "dnssec_enable_desc": "Definir a flag DNSSEC nas consultas de DNS em andamento e verificar o resultado (é necessário um resolvedor DNSSEC ativado)",
"validated_with_dnssec": "Validado com DNSSEC",
"show_all_responses": "Todas as respostas",
"show_blocked_responses": "Bloqueado",
"show_whitelisted_responses": "Na lista branca",
"show_processed_responses": "Processado",
"blocked_safebrowsing": "Bloqueado pela navegação segura",
"blocked_adult_websites": "Sites adultos bloqueados",
"blocked_threats": "Ameaças bloqueadas",
"allowed": "Permitido",
"filtered": "Filtrado",
"rewritten": "Reescrito",
"safe_search": "Pesquisa segura",
"blocklist": "Lista negra",
"milliseconds_abbreviation": "ms"
} }

View File

@ -58,7 +58,7 @@
"query_log": "Registo de consultas", "query_log": "Registo de consultas",
"faq": "Perguntas frequentes", "faq": "Perguntas frequentes",
"version": "Versão", "version": "Versão",
"address": "endereço", "address": "Endereço",
"on": "LIGADO", "on": "LIGADO",
"off": "DESLIGADO", "off": "DESLIGADO",
"copyright": "Copyright", "copyright": "Copyright",
@ -149,9 +149,10 @@
"updated_upstream_dns_toast": "A actualizar os servidores DNS upstream", "updated_upstream_dns_toast": "A actualizar os servidores DNS upstream",
"dns_test_ok_toast": "Os servidores DNS especificados estão a funcionar correctamente", "dns_test_ok_toast": "Os servidores DNS especificados estão a funcionar correctamente",
"dns_test_not_ok_toast": "O servidor \"{{key}}\": não pôde ser utilizado. Por favor, verifique se o escreveu correctamente", "dns_test_not_ok_toast": "O servidor \"{{key}}\": não pôde ser utilizado. Por favor, verifique se o escreveu correctamente",
"unblock_btn": "Desbloquear", "unblock": "Desbloquear",
"block_btn": "Bloquear", "block": "Bloquear",
"time_table_header": "Data", "time_table_header": "Data",
"date": "Data",
"domain_name_table_header": "Nome do domínio", "domain_name_table_header": "Nome do domínio",
"type_table_header": "Tipo", "type_table_header": "Tipo",
"response_table_header": "Resposta", "response_table_header": "Resposta",
@ -316,6 +317,7 @@
"form_enter_id": "Inserir identificador", "form_enter_id": "Inserir identificador",
"form_add_id": "Adicionar identificador", "form_add_id": "Adicionar identificador",
"form_client_name": "Insira o nome do cliente", "form_client_name": "Insira o nome do cliente",
"name": "Nome",
"client_global_settings": "Usar configurações globais", "client_global_settings": "Usar configurações globais",
"client_deleted": "Cliente \"{{key}}\" excluído com sucesso", "client_deleted": "Cliente \"{{key}}\" excluído com sucesso",
"client_added": "Cliente \"{{key}}\" adicionado com sucesso", "client_added": "Cliente \"{{key}}\" adicionado com sucesso",
@ -412,6 +414,7 @@
"location": "Localização", "location": "Localização",
"orgname": "Nome da organização", "orgname": "Nome da organização",
"netname": "Nome da rede", "netname": "Nome da rede",
"network": "Network",
"descr": "Descrição", "descr": "Descrição",
"whois": "Whois", "whois": "Whois",
"filtering_rules_learn_more": "<0>Saiba mais</0>sobre como criar as suas próprias listas negras de servidores.", "filtering_rules_learn_more": "<0>Saiba mais</0>sobre como criar as suas próprias listas negras de servidores.",
@ -419,5 +422,9 @@
"try_again": "Tente novamente", "try_again": "Tente novamente",
"domain_desc": "Insere o nome do domínio para ser reescrito.", "domain_desc": "Insere o nome do domínio para ser reescrito.",
"example_rewrite_domain": "reescrever resposta apenas para este domínio.", "example_rewrite_domain": "reescrever resposta apenas para este domínio.",
"example_rewrite_wildcard": "reescrever resposta para todos <0>example.org</0> sub-domínios." "example_rewrite_wildcard": "reescrever resposta para todos <0>example.org</0> sub-domínios.",
"form_enter_host": "Insira o hostname",
"show_blocked_responses": "Bloqueado",
"show_whitelisted_responses": "Lista Branca",
"show_processed_responses": "Processado"
} }

View File

@ -1,8 +1,10 @@
{ {
"client_settings": "Setări client", "client_settings": "Setări client",
"example_upstream_reserved": "Puteți preciza un DNS upstream <0>de domeni/u(ii) specific(e)</0>", "example_upstream_reserved": "Puteți preciza un DNS upstream <0>de domeniu(ii) specific(e)</0>",
"upstream_parallel": "Folosiți interogări paralele pentru rezolvări rapide interogând simultan toate serverele în amonte", "upstream_parallel": "Folosiți interogări paralele pentru rezolvări rapide interogând simultan toate serverele în amonte",
"parallel_requests": "Solicitări paralele", "parallel_requests": "Solicitări paralele",
"load_balancing": "Echilibrare-sarcini",
"load_balancing_desc": "Fiecare server este interogat aparte. AdGuard Home alege serverul folosind algoritmul ponderat aleatoriu, astfel încât cel mai rapid server să fie utilizat mai des.",
"bootstrap_dns": "Serverele DNS Bootstrap", "bootstrap_dns": "Serverele DNS Bootstrap",
"bootstrap_dns_desc": "Serverele DNS Bootstrap sunt folosite pentru a rezolva adresele IP ale resolverelor DoH/DoT indicate ca upstreams.", "bootstrap_dns_desc": "Serverele DNS Bootstrap sunt folosite pentru a rezolva adresele IP ale resolverelor DoH/DoT indicate ca upstreams.",
"check_dhcp_servers": "Căutați servere DHCP", "check_dhcp_servers": "Căutați servere DHCP",
@ -20,11 +22,11 @@
"dhcp_leases_not_found": "Nu s-au găsit DHCP închiriate", "dhcp_leases_not_found": "Nu s-au găsit DHCP închiriate",
"dhcp_config_saved": "Configurare DHCP salvată cu succes", "dhcp_config_saved": "Configurare DHCP salvată cu succes",
"form_error_required": "Câmp necesar", "form_error_required": "Câmp necesar",
"form_error_ip4_format": "Format IPv4 nevalid", "form_error_ip4_format": "Format IPv4 invalid",
"form_error_ip6_format": "Format IPv6 nevalid", "form_error_ip6_format": "Format IPv6 invalid",
"form_error_ip_format": "Format IP nevalid", "form_error_ip_format": "Format IP invalid",
"form_error_mac_format": "Format MAC nevalid", "form_error_mac_format": "Format MAC invalid",
"form_error_client_id_format": "Format ID de client nevalid", "form_error_client_id_format": "Format ID de client invalid",
"form_error_positive": "Trebuie să fie mai mare de 0", "form_error_positive": "Trebuie să fie mai mare de 0",
"form_error_negative": "Trebuie să fie egală cu 0 sau mai mare", "form_error_negative": "Trebuie să fie egală cu 0 sau mai mare",
"dhcp_form_gateway_input": "IP Gateway", "dhcp_form_gateway_input": "IP Gateway",
@ -37,6 +39,7 @@
"dhcp_interface_select": "Selectați interfața DHCP", "dhcp_interface_select": "Selectați interfața DHCP",
"dhcp_hardware_address": "Adresa mașinii", "dhcp_hardware_address": "Adresa mașinii",
"dhcp_ip_addresses": "Adrese IP", "dhcp_ip_addresses": "Adrese IP",
"ip": "IP",
"dhcp_table_hostname": "Hostname", "dhcp_table_hostname": "Hostname",
"dhcp_table_expires": "Expiră", "dhcp_table_expires": "Expiră",
"dhcp_warning": "Dacă doriți oricum să activați serverul DHCP, verificați că nu există un alt server DHCP activ în rețeaua dvs. Altfel, poate întrerupe Internetul pe toate aparatele conectate!", "dhcp_warning": "Dacă doriți oricum să activați serverul DHCP, verificați că nu există un alt server DHCP activ în rețeaua dvs. Altfel, poate întrerupe Internetul pe toate aparatele conectate!",
@ -49,17 +52,22 @@
"dhcp_static_leases_not_found": "Nu s-au găsit închirieri statice DHCP", "dhcp_static_leases_not_found": "Nu s-au găsit închirieri statice DHCP",
"dhcp_add_static_lease": "Adăugați închiriere statică", "dhcp_add_static_lease": "Adăugați închiriere statică",
"dhcp_reset": "Sunteți sigur că doriți să resetați configurația DHCP?", "dhcp_reset": "Sunteți sigur că doriți să resetați configurația DHCP?",
"country": "Țara",
"delete_confirm": "Sunteți sigur că doriți să ștergeți \"{{key}}\"?", "delete_confirm": "Sunteți sigur că doriți să ștergeți \"{{key}}\"?",
"form_enter_hostname": "Intrați hostname", "form_enter_hostname": "Intrați hostname",
"error_details": "Detalii eroare", "error_details": "Detalii eroare",
"client_details": "Detalii client",
"details": "Detalii",
"back": "Înapoi", "back": "Înapoi",
"dashboard": "Tablou de bord", "dashboard": "Tablou de bord",
"settings": "Setări", "settings": "Setări",
"filters": "Filtre", "filters": "Filtre",
"filter": "Filtru",
"query_log": "Jurnal interogări", "query_log": "Jurnal interogări",
"empty_log": "Jurnal de interogări gol",
"faq": "FAQ", "faq": "FAQ",
"version": "Versiune", "version": "Versiune",
"address": "adresă", "address": "Adresă",
"on": "ON", "on": "ON",
"off": "OFF", "off": "OFF",
"copyright": "Copyright", "copyright": "Copyright",
@ -77,7 +85,7 @@
"stats_adult": "Site-uri cu conținut adult blocate", "stats_adult": "Site-uri cu conținut adult blocate",
"stats_query_domain": "Domeniile cele mai căutate", "stats_query_domain": "Domeniile cele mai căutate",
"for_last_24_hours": "în ultimele 24 ore", "for_last_24_hours": "în ultimele 24 ore",
"for_last_days": "în ultimele {{count}} zile", "for_last_days": "în ultima {{count}} zi",
"for_last_days_plural": "pentru ultimele {{count}} zile", "for_last_days_plural": "pentru ultimele {{count}} zile",
"no_domains_found": "Nu s-au găsit domenii", "no_domains_found": "Nu s-au găsit domenii",
"requests_count": "Cont interogări", "requests_count": "Cont interogări",
@ -99,8 +107,8 @@
"filters_block_toggle_hint": "Puteți configura regulile de blocare în setările <a href='#filters'> Filtre </a>.", "filters_block_toggle_hint": "Puteți configura regulile de blocare în setările <a href='#filters'> Filtre </a>.",
"use_adguard_browsing_sec": "Utilizați serviciul Navigarea în Securitate AdGuard", "use_adguard_browsing_sec": "Utilizați serviciul Navigarea în Securitate AdGuard",
"use_adguard_browsing_sec_hint": "AdGuard Home va verifica dacă domeniul este în lista negră a serviciul web de securitate de navigare. Pentru acesta va utiliza un lookup API discret: un prefix scurt al numelui de domeniu SHA256 hash este trimis serverului.", "use_adguard_browsing_sec_hint": "AdGuard Home va verifica dacă domeniul este în lista negră a serviciul web de securitate de navigare. Pentru acesta va utiliza un lookup API discret: un prefix scurt al numelui de domeniu SHA256 hash este trimis serverului.",
"use_adguard_parental": "Utilizați controlul parental AdGuard", "use_adguard_parental": "Utilizați Controlul Parental AdGuard",
"use_adguard_parental_hint": "AdGuard Home va verifica dacă este conținut adult pe domeniu. Utilizează aceeași API discret ca cel utilizat de serviciul de securitate de navigare.", "use_adguard_parental_hint": "AdGuard Home va verifica pentru conținut adult pe domeniu. Utilizează același API discret ca cel utilizat de serviciul de securitate de navigare.",
"enforce_safe_search": "Căutare protejată întărită", "enforce_safe_search": "Căutare protejată întărită",
"enforce_save_search_hint": "AdGuard Home poate impune căutarea protejată în următoarele motoare de căutare: Google, Youtube, Bing, DuckDuckGo, Yandex, Pixabay.", "enforce_save_search_hint": "AdGuard Home poate impune căutarea protejată în următoarele motoare de căutare: Google, Youtube, Bing, DuckDuckGo, Yandex, Pixabay.",
"no_servers_specified": "Nu sunt specificate servere", "no_servers_specified": "Nu sunt specificate servere",
@ -120,8 +128,8 @@
"apply_btn": "Aplică", "apply_btn": "Aplică",
"disabled_filtering_toast": "Filtrare dezactivată", "disabled_filtering_toast": "Filtrare dezactivată",
"enabled_filtering_toast": "Filtrare activată", "enabled_filtering_toast": "Filtrare activată",
"disabled_safe_browsing_toast": "Navigare protejată dezactivată", "disabled_safe_browsing_toast": "Navigare securitară dezactivată",
"enabled_safe_browsing_toast": "Navigare protejată activată", "enabled_safe_browsing_toast": "Navigare securitară activată",
"disabled_parental_toast": "Control parental dezactivat", "disabled_parental_toast": "Control parental dezactivat",
"enabled_parental_toast": "Control parental activat", "enabled_parental_toast": "Control parental activat",
"disabled_safe_search_toast": "Căutare protejată dezactivată", "disabled_safe_search_toast": "Căutare protejată dezactivată",
@ -132,8 +140,10 @@
"rules_count_table_header": "Număr de reguli", "rules_count_table_header": "Număr de reguli",
"last_time_updated_table_header": "Ultima aducere la zi", "last_time_updated_table_header": "Ultima aducere la zi",
"actions_table_header": "Acțiuni", "actions_table_header": "Acțiuni",
"request_table_header": "Solicitare",
"edit_table_action": "Editare", "edit_table_action": "Editare",
"delete_table_action": "Sterge", "delete_table_action": "Șterge",
"elapsed": "Scurs",
"filters_and_hosts_hint": "AdGuard Home înțelege regulile de bază de blocare cât și sintaxa fișierelor hosts.", "filters_and_hosts_hint": "AdGuard Home înțelege regulile de bază de blocare cât și sintaxa fișierelor hosts.",
"no_blocklist_added": "Listă blocări goală", "no_blocklist_added": "Listă blocări goală",
"no_whitelist_added": "Listă autorizări goală", "no_whitelist_added": "Listă autorizări goală",
@ -156,24 +166,26 @@
"examples_title": "Exemple", "examples_title": "Exemple",
"example_meaning_filter_block": "blochează accesul la domeniul exemplu.org și la toate subdomeniile sale", "example_meaning_filter_block": "blochează accesul la domeniul exemplu.org și la toate subdomeniile sale",
"example_meaning_filter_whitelist": "deblochează accesul la domeniul exemplu.org și la toate subdomeniile sale", "example_meaning_filter_whitelist": "deblochează accesul la domeniul exemplu.org și la toate subdomeniile sale",
"example_meaning_host_block": "AdGuard Home va returna acum adresa 127.0.0.1 pentru domeniul example.org (dar nu și subdomeniile sale).", "example_meaning_host_block": "AdGuard Home va returna acum adresa 127.0.0.1 pentru domeniul exemplu.org (dar nu și subdomeniile sale).",
"example_comment": "! Iată cum se adăugă o descriere", "example_comment": "! Iată cum se adăugă o descriere",
"example_comment_meaning": "comentariu", "example_comment_meaning": "comentariu",
"example_comment_hash": "# Astfel putem lăsa comentarii", "example_comment_hash": "# Astfel putem lăsa comentarii",
"example_regex_meaning": "blocare acces la domenii care corespund expresiei obișnuite specificate", "example_regex_meaning": "blocare acces la domenii care corespund expresiei obișnuite specificate",
"example_upstream_regular": "DNS clasic (peste UDP)", "example_upstream_regular": "DNS clasic (over UDP)",
"example_upstream_dot": "<0>DNS-over-TLS</0> criptat", "example_upstream_dot": "<0>DNS-over-TLS</0> criptat",
"example_upstream_doh": "<0>DNS-over-HTTPS</0> criptat", "example_upstream_doh": "<0>DNS-over-HTTPS</0> criptat",
"example_upstream_sdns": "puteți utiliza <0>DNS Stamps</0> pentru rezolvere <1>DNSCrypt</1> sau <2>DNS-over-HTTPS</2>", "example_upstream_sdns": "puteți utiliza <0>DNS Stamps</0> pentru rezolvere <1>DNSCrypt</1> sau <2>DNS-over-HTTPS</2>",
"example_upstream_tcp": "DNS clasic (peste TCP)", "example_upstream_tcp": "DNS clasic (over TCP)",
"all_lists_up_to_date_toast": "Toate listele sunt deja la zi", "all_lists_up_to_date_toast": "Toate listele sunt deja la zi",
"updated_upstream_dns_toast": "Serverele DNS upstream aduse la zi", "updated_upstream_dns_toast": "Serverele DNS upstream aduse la zi",
"dns_test_ok_toast": "Serverele DNS specificate funcționează corect", "dns_test_ok_toast": "Serverele DNS specificate funcționează corect",
"dns_test_not_ok_toast": "Serverul \"{{key}}\": nu a putut fi utilizat, verificați dacă l-ați scris corect", "dns_test_not_ok_toast": "Serverul \"{{key}}\": nu a putut fi utilizat, verificați dacă l-ați scris corect",
"unblock_btn": "Deblocați", "unblock": "Deblocați",
"block_btn": "Blocați", "block": "Blocați",
"time_table_header": "Ora", "time_table_header": "Ora",
"date": "Data",
"domain_name_table_header": "Nume domeniu", "domain_name_table_header": "Nume domeniu",
"domain_or_client": "Domeniu sau client",
"type_table_header": "Tip", "type_table_header": "Tip",
"response_table_header": "Răspuns", "response_table_header": "Răspuns",
"client_table_header": "Client", "client_table_header": "Client",
@ -189,7 +201,7 @@
"rows_table_footer_text": "linii", "rows_table_footer_text": "linii",
"updated_custom_filtering_toast": "Reguli personalizate de filtrare aduse la zi", "updated_custom_filtering_toast": "Reguli personalizate de filtrare aduse la zi",
"rule_removed_from_custom_filtering_toast": "Regulă scoasă din regullei personalizate de filtrare", "rule_removed_from_custom_filtering_toast": "Regulă scoasă din regullei personalizate de filtrare",
"rule_added_to_custom_filtering_toast": "Regula adăugată la regulile de filtrare personalizate", "rule_added_to_custom_filtering_toast": "Regulă adăugată la regulile de filtrare personalizate",
"query_log_response_status": "Statut: {{value}}", "query_log_response_status": "Statut: {{value}}",
"query_log_filtered": "Filtrat de {{filter}}", "query_log_filtered": "Filtrat de {{filter}}",
"query_log_confirm_clear": "Sunteți sigur că doriți să ștergeți întregul jurnal de interogări?", "query_log_confirm_clear": "Sunteți sigur că doriți să ștergeți întregul jurnal de interogări?",
@ -211,14 +223,16 @@
"custom_ip": "IP personalizat", "custom_ip": "IP personalizat",
"blocking_ipv4": "Blocarea IPv4", "blocking_ipv4": "Blocarea IPv4",
"blocking_ipv6": "Blocarea IPv6", "blocking_ipv6": "Blocarea IPv6",
"dns_over_https": "DNS-over-HTTPS",
"dns_over_tls": "DNS-over-TLS",
"form_enter_rate_limit": "Intrați limita ratei", "form_enter_rate_limit": "Intrați limita ratei",
"rate_limit": "Limita ratei", "rate_limit": "Limita ratei",
"edns_enable": "Activați clientul subnet EDNS", "edns_enable": "Activați clientul subnet EDNS",
"edns_cs_desc": "Dacă este activat, AdGuard Home va trimite subnet-ele clienților către serverele DNS.", "edns_cs_desc": "Dacă este activat, AdGuard Home va trimite subnet-ul clienților către serverele DNS.",
"rate_limit_desc": "Numărul de solicitări pe secundă pe care un singur client este permis să le facă (0: nelimitat)", "rate_limit_desc": "Numărul de solicitări pe secundă pe care un singur client este permis să le facă (0: nelimitat)",
"blocking_ipv4_desc": "Adresa IP de returnat pentru o cerere A de blocare", "blocking_ipv4_desc": "Adresa IP de returnat pentru o cerere A de blocare",
"blocking_ipv6_desc": "Adresa IP de returnat pentru o cerere AAAA de blocare", "blocking_ipv6_desc": "Adresa IP de returnat pentru o cerere AAAA de blocare",
"blocking_mode_default": "Implicit: Răspunde cu NXDOMAIN cînd sunt blocate de regula Adblock-style; răspunde cu adresa IP specificată în regulă când sunt blocate de regula /etc/hosts-style", "blocking_mode_default": "Implicit: Răspunde cu NXDOMAIN când sunt blocate de regulă tip Adblock; răspunde cu adresa IP specificată în regulă când sunt blocate de regula tip /etc/hosts",
"blocking_mode_nxdomain": "NXDOMAIN: Răspunde cu codul NXDOMAIN", "blocking_mode_nxdomain": "NXDOMAIN: Răspunde cu codul NXDOMAIN",
"blocking_mode_null_ip": "IP nul: răspunde cu o adresă IP zero (0.0.0.0 pentru A; :: pentru AAAA)", "blocking_mode_null_ip": "IP nul: răspunde cu o adresă IP zero (0.0.0.0 pentru A; :: pentru AAAA)",
"blocking_mode_custom_ip": "IP personalizat: răspunde cu o adresă IP setată manual", "blocking_mode_custom_ip": "IP personalizat: răspunde cu o adresă IP setată manual",
@ -229,8 +243,9 @@
"rule_label": "Regulă", "rule_label": "Regulă",
"list_label": "Listă", "list_label": "Listă",
"unknown_filter": "Filtru necunoscut {{filterId}}", "unknown_filter": "Filtru necunoscut {{filterId}}",
"known_tracker": "Tracker cunoscut",
"install_welcome_title": "Bun venit la AdGuard Home!", "install_welcome_title": "Bun venit la AdGuard Home!",
"install_welcome_desc": "AdGuard Home este un server DNS care blochează anunțuri și trackere la nivel de rețea. Scopul său este de a vă da controlul pe întreaga rețea și toate aparatele dvs. și fără un program din partea clientului.", "install_welcome_desc": "AdGuard Home este un server DNS care blochează reclame și trackere la nivel de rețea. Scopul său este de a vă da controlul pe întreaga rețea și toate aparatele dvs. și fără un program din partea clientului.",
"install_settings_title": "Interfață administrator web", "install_settings_title": "Interfață administrator web",
"install_settings_listen": "Interfață de ascultare", "install_settings_listen": "Interfață de ascultare",
"install_settings_port": "Port", "install_settings_port": "Port",
@ -254,29 +269,29 @@
"install_devices_router": "Router", "install_devices_router": "Router",
"install_devices_router_desc": "Această configurație va acoperi automat toate aparatele conectate la routerul de acasă și nu va trebui să le configurați manual pe fiecare.", "install_devices_router_desc": "Această configurație va acoperi automat toate aparatele conectate la routerul de acasă și nu va trebui să le configurați manual pe fiecare.",
"install_devices_address": "Serverul DNS AdGuard Home ascultă pe următoarele adrese", "install_devices_address": "Serverul DNS AdGuard Home ascultă pe următoarele adrese",
"install_devices_router_list_1": "Deschideți preferințele pentru routerul dvs. De obicei, îl puteți accesa din browserul dvs. printr-o adresă URL (cum ar fi http://192.168.0.1/ sau http://192.168.1.1/). Vi se poate cere să introduceți parola. Dacă nu v-o amintiți, puteți reseta adesea parola apăsând un buton de pe routerul propriu-zis. Unele routere necesită o aplicație specifică, care în acest caz ar trebui să fie deja instalată pe computerul/telefonul dvs.", "install_devices_router_list_1": "Deschideți preferințele pentru routerul dvs. De obicei, îl puteți accesa din browserul dvs. printr-o adresă URL (cum ar fi http://192.168.0.1/ sau http://192.168.1.1/). Vi se poate cere să intrați parola. Dacă nu v-o amintiți, puteți reseta adesea parola apăsând un buton de pe routerul propriu-zis. Unele routere necesită o aplicație specifică, care în acest caz ar trebui să fie deja instalată pe computerul/telefonul dvs.",
"install_devices_router_list_2": "Găsiți setările DHCP/DNS. Căutați literele DNS lângă un câmp care să permită două sau trei seturi de numere, fiecare împărțit în patru grupuri de una până la trei cifre.", "install_devices_router_list_2": "Găsiți setările DHCP/DNS. Căutați literele DNS lângă un câmp care să permită două sau trei seturi de numere, fiecare împărțit în patru grupuri de una până la trei cifre.",
"install_devices_router_list_3": "Intrați adresele serverului dvs. AdGuard Home aici.", "install_devices_router_list_3": "Intrați adresele serverului dvs. AdGuard Home aici.",
"install_devices_router_list_4": "Unele routere nu permit setarea unui server DNS personalizat. În acest caz, vă poate ajuta dacă configurați AdGuard Home ca server DHCP. Dacă nu, trebuie căutat manualul modelului dvs. de router ca să aflați cum se pot personaliza serverele DNS.", "install_devices_router_list_4": "Unele routere nu permit setarea unui server DNS personalizat. În acest caz, vă poate ajuta dacă configurați AdGuard Home ca <0>server DHCP</0>. Dacă nu, trebuie căutat manualul modelului dvs. de router ca să aflați cum se pot personaliza serverele DNS.",
"install_devices_windows_list_1": "Deschideți panoul de control prin meniul Start sau căutare Windows.", "install_devices_windows_list_1": "Deschideți panoul de control prin meniul Start sau căutare Windows.",
"install_devices_windows_list_2": "Accesați categoria \"Rețea și Internet\", apoi la \"Centrul de Rețea și Partajare\".", "install_devices_windows_list_2": "Accesați categoria \"Rețea și Internet\", apoi la \"Centrul de Rețea și Partajare\".",
"install_devices_windows_list_3": "În partea stângă a ecranului găsiți \"Schimbare setări adaptor\" și faceți clic pe el.", "install_devices_windows_list_3": "În partea stângă a ecranului găsiți \"Schimbare setări adaptor\" și clicați pe el.",
"install_devices_windows_list_4": "Selectați conexiunea activă, faceți clic dreapta pe ea și alegeți \"Proprietăți\".", "install_devices_windows_list_4": "Selectați conexiunea activă, faceți clic dreapta pe ea și alegeți \"Proprietăți\".",
"install_devices_windows_list_5": "Găsiți Internet Protocol Versiunea 4 (TCP/IP) din listă, selectați-l și apoi faceți din nou clic pe Proprietăți.", "install_devices_windows_list_5": "Găsiți Internet Protocol Versiunea 4 (TCP/IP) din listă, selectați-l și apoi clicați din nou pe Proprietăți.",
"install_devices_windows_list_6": "Alegeți Utilizați următoarele adrese de server DNS și introduceți adresele de server AdGuard Home.", "install_devices_windows_list_6": "Alegeți Utilizați următoarele adrese de server DNS și intrați adresele de server AdGuard Home.",
"install_devices_macos_list_1": "Faceți clic pe pictograma Apple și accesați Preferințele Sistemului.", "install_devices_macos_list_1": "Clicați pe icoana Apple și accesați Preferințele Sistemului.",
"install_devices_macos_list_2": "Faceți clic pe Network.", "install_devices_macos_list_2": "Clicați pe Network.",
"install_devices_macos_list_3": "Selectați prima conexiune din listă și faceți clic pe Avansat.", "install_devices_macos_list_3": "Selectați prima conexiune din listă și clicați pe Avansat.",
"install_devices_macos_list_4": "Selectați fila DNS și introduceți adresele serverului dvs. AdGuard Home.", "install_devices_macos_list_4": "Selectați fila DNS și intrați adresele serverului dvs. AdGuard Home.",
"install_devices_android_list_1": "Din ecranul principal al Meniului Android, tapați Setări.", "install_devices_android_list_1": "Din ecranul principal al Meniului Android, tapați Setări.",
"install_devices_android_list_2": "Tapați Wi-Fi din meniu. Ecranul cu toate rețelele disponibile va fi afișat (este imposibil să setați DNS personalizat pentru conexiunea mobilă).", "install_devices_android_list_2": "Tapați Wi-Fi din meniu. Ecranul cu toate rețelele disponibile va fi afișat (este imposibil să setați DNS personalizat pentru conexiunea mobilă).",
"install_devices_android_list_3": "Apăsați lung pe rețeaua la care sunteți conectat și tapați Modificare Rețea.", "install_devices_android_list_3": "Apăsați lung pe rețeaua la care sunteți conectat și tapați Modificare Rețea.",
"install_devices_android_list_4": "Pe unele aparate, poate fi necesar să bifați caseta Advanced pentru a vedea setările ulterioare. Pentru a ajusta setările DNS Android, va trebui să comutați setările IP de la DHCP la Static.", "install_devices_android_list_4": "Pe unele aparate, poate fi necesar să bifați caseta Advanced pentru a vedea setările adiționale. Pentru a ajusta setările DNS Android, va trebui să comutați setările IP de la DHCP la Static.",
"install_devices_android_list_5": "Schimbați valorile DNS 1 și DNS 2 la cele ale serverului dvs. AdGuard Home.", "install_devices_android_list_5": "Schimbați valorile DNS 1 și DNS 2 la cele ale serverului dvs. AdGuard Home.",
"install_devices_ios_list_1": "Din ecranul de start, tapați Setări.", "install_devices_ios_list_1": "Din ecranul de start, tapați Setări.",
"install_devices_ios_list_2": "Alegeți Wi-Fi în meniul din stânga (este imposibil să configurați DNS pentru rețelele mobile).", "install_devices_ios_list_2": "Alegeți Wi-Fi în meniul din stânga (este imposibil să configurați DNS pentru rețelele mobile).",
"install_devices_ios_list_3": "Tapați numele rețelei active curente.", "install_devices_ios_list_3": "Tapați numele rețelei active curente.",
"install_devices_ios_list_4": "În câmpul DNS, introduceți adresele serverului dvs. AdGuard Home.", "install_devices_ios_list_4": "În câmpul DNS, intrați adresele serverului dvs. AdGuard Home.",
"get_started": "Să începem", "get_started": "Să începem",
"next": "Următor", "next": "Următor",
"open_dashboard": "Deschideți Tabloul de bord", "open_dashboard": "Deschideți Tabloul de bord",
@ -302,10 +317,10 @@
"encryption_key_input": "Copiați/lipiți cheia dvs. privată PEM-codată pentru certificatul dvs. aici.", "encryption_key_input": "Copiați/lipiți cheia dvs. privată PEM-codată pentru certificatul dvs. aici.",
"encryption_enable": "Activați criptarea (HTTPS, DNS-over-HTTPS, și DNS-over-TLS)", "encryption_enable": "Activați criptarea (HTTPS, DNS-over-HTTPS, și DNS-over-TLS)",
"encryption_enable_desc": "Dacă este activată criptarea, interfața administrator AdGuard Home va lucra peste HTTPS, și serverul DNS va asculta pentru cereri peste DNS-over-HTTPS și DNS-over-TLS.", "encryption_enable_desc": "Dacă este activată criptarea, interfața administrator AdGuard Home va lucra peste HTTPS, și serverul DNS va asculta pentru cereri peste DNS-over-HTTPS și DNS-over-TLS.",
"encryption_chain_valid": "Lanțul de certificate valid", "encryption_chain_valid": "Lanț de certificate valid",
"encryption_chain_invalid": "Lanțul de certificate nevalid", "encryption_chain_invalid": "Lanț de certificate invalid",
"encryption_key_valid": "Aceasta este o cheie privată {{type}} validă", "encryption_key_valid": "Aceasta este o cheie privată {{type}} validă",
"encryption_key_invalid": "Aceasta este o cheie privată {{type}} nevalidă", "encryption_key_invalid": "Aceasta este o cheie privată {{type}} invalidă",
"encryption_subject": "Obiect", "encryption_subject": "Obiect",
"encryption_issuer": "Emitent", "encryption_issuer": "Emitent",
"encryption_hostnames": "Nume de host", "encryption_hostnames": "Nume de host",
@ -317,7 +332,7 @@
"form_error_equal": "Nu trebuie să fie egale", "form_error_equal": "Nu trebuie să fie egale",
"form_error_password": "Parolele nu corespund", "form_error_password": "Parolele nu corespund",
"reset_settings": "Resetare setări", "reset_settings": "Resetare setări",
"update_announcement": "AdGuard Home {{version}} este disponibil! <0>Faceți clic aici</0> pentru mai multe informații.", "update_announcement": "AdGuard Home {{version}} este disponibil! <0>Clicați aici</0> pentru mai multe informații.",
"setup_guide": "Ghid de instalare", "setup_guide": "Ghid de instalare",
"dns_addresses": "Adrese DNS", "dns_addresses": "Adrese DNS",
"dns_start": "Serverul DNS demarează", "dns_start": "Serverul DNS demarează",
@ -346,6 +361,7 @@
"form_enter_id": "Intrați identificator", "form_enter_id": "Intrați identificator",
"form_add_id": "Adăugați identificator", "form_add_id": "Adăugați identificator",
"form_client_name": "Intrați nume client", "form_client_name": "Intrați nume client",
"name": "Nume",
"client_global_settings": "Folosiți setări globale", "client_global_settings": "Folosiți setări globale",
"client_deleted": "Clientul \"{{key}}\" a fost șters cu succes", "client_deleted": "Clientul \"{{key}}\" a fost șters cu succes",
"client_added": "Clientul \"{{key}}\" a fost adăugat cu succes", "client_added": "Clientul \"{{key}}\" a fost adăugat cu succes",
@ -354,7 +370,7 @@
"client_confirm_delete": "Sunteți sigur că doriți să ștergeți clientul \"{{key}}\"?", "client_confirm_delete": "Sunteți sigur că doriți să ștergeți clientul \"{{key}}\"?",
"list_confirm_delete": "Sigur doriți să ștergeți această listă?", "list_confirm_delete": "Sigur doriți să ștergeți această listă?",
"auto_clients_title": "Clienți (runtime)", "auto_clients_title": "Clienți (runtime)",
"auto_clients_desc": "Date despre clienții folosite de AdGuard Home, dar care nu sunt stocate în configurație", "auto_clients_desc": "Date despre clienții care folosesc AdGuard Home, dar care nu sunt stocate în configurație",
"access_title": "Setări de acces", "access_title": "Setări de acces",
"access_desc": "Aici puteți configura regulile de acces pentru serverul DNS AdGuard Home.", "access_desc": "Aici puteți configura regulile de acces pentru serverul DNS AdGuard Home.",
"access_allowed_title": "Clienți autorizați", "access_allowed_title": "Clienți autorizați",
@ -362,19 +378,19 @@
"access_disallowed_title": "Clienți neautorizați", "access_disallowed_title": "Clienți neautorizați",
"access_disallowed_desc": "O listă de adrese CIDR sau IP. Dacă este configurat, AdGuard Home va elimina cererile de la aceste adrese IP.", "access_disallowed_desc": "O listă de adrese CIDR sau IP. Dacă este configurat, AdGuard Home va elimina cererile de la aceste adrese IP.",
"access_blocked_title": "Domenii blocate", "access_blocked_title": "Domenii blocate",
"access_blocked_desc": "Nu confundați acest lucru cu filtrele. AdGuard Home va bloca interogări DNS cu aceste domenii în întrebare. Aici puteți specifica exact numele de domeniu, wildcard și reguli-urlfilter, de ex. 'examplu.org', '*.examplu.org' sau '||exemplu.org^'.", "access_blocked_desc": "Nu confundați acest lucru cu filtrele. AdGuard Home va bloca interogări DNS cu aceste domenii în întrebare. Aici puteți specifica exact numele de domeniu, wildcard și reguli-urlfilter, de ex. 'exemplu.org', '*.exemplu.org' sau '||exemplu.org^'.",
"access_settings_saved": "Setările de acces au fost salvate cu succes", "access_settings_saved": "Setările de acces au fost salvate cu succes",
"updates_checked": "Actualizările au fost verificate cu succes", "updates_checked": "Actualizările au fost verificate cu succes",
"updates_version_equal": "AdGuard Home este la zi", "updates_version_equal": "AdGuard Home este la zi",
"check_updates_now": "Verificați actualizările acum", "check_updates_now": "Verificați actualizările acum",
"dns_privacy": "Confidențialitate DNS", "dns_privacy": "Confidențialitate DNS",
"setup_dns_privacy_1": "<0>DNS-over-TLS:</0> Folosiți stringul <1>{{address}}</1>.", "setup_dns_privacy_1": "<0>DNS-over-TLS:</0> Folosiți stringul <1>{{address}}</1>.",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:</0> Utilizați stringul <1>{{address}}</1>.", "setup_dns_privacy_2": "<0>DNS-over-HTTPS:</0> Folosiți stringul <1>{{address}}</1>.",
"setup_dns_privacy_3": "<0>Rețineți că protocoalele DNS criptate sunt acceptate numai pe Android 9. Așadar, trebuie să instalați software suplimentar pentru alte sisteme de operare.</0><0>Iată o listă de software pe care o puteți utiliza.</0>", "setup_dns_privacy_3": "<0>Rețineți că protocoalele DNS criptate sunt acceptate numai pe Android 9. Așadar, trebuie să instalați programe suplimentare pentru alte sisteme de operare.</0><0>Iată o listă de software pe care o puteți utiliza.</0>",
"setup_dns_privacy_android_1": "Android 9 acceptă nativ DNS-over-TLS. Pentru a o configura, accesați Setări → Rețea și internet → Advanced → Private DNS și introduceți numele de domeniu acolo.", "setup_dns_privacy_android_1": "Android 9 acceptă nativ DNS-over-TLS. Pentru a-l configura, accesați Setări → Rețea și internet → Advanced → Private DNS și intrați numele de domeniu acolo.",
"setup_dns_privacy_android_2": "<0>AdGuard pentru Android</0> acceptă <1>DNS-over-HTTPS</1> și <1>DNS-over-TLS</1>.", "setup_dns_privacy_android_2": "<0>AdGuard pentru Android</0> acceptă <1>DNS-over-HTTPS</1> și <1>DNS-over-TLS</1>.",
"setup_dns_privacy_android_3": "<0>Intra</0> adaugă <1>DNS-over-HTTPS</1> suport pentru Android.", "setup_dns_privacy_android_3": "<0>Intra</0> adaugă <1>DNS-over-HTTPS</1> suport pentru Android.",
"setup_dns_privacy_ios_1": "<0>DNSCloak</0> acceptă <1>DNS-over-HTTPS</1>, dar pentru a-l configura pentru a utiliza propriul server, va trebui să generezi un <2>DNS Stamp</2> pentru aceasta.", "setup_dns_privacy_ios_1": "<0>DNSCloak</0> acceptă <1>DNS-over-HTTPS</1>, dar pentru a-l configura pentru a utiliza propriul server, va trebui să generi un <2>DNS Stamp</2> pentru aceasta.",
"setup_dns_privacy_ios_2": "<0>AdGuard pentru iOS</0> acceptă instalarea <1>DNS-over-HTTPS</1> și <1>DNS-over-TLS</1>.", "setup_dns_privacy_ios_2": "<0>AdGuard pentru iOS</0> acceptă instalarea <1>DNS-over-HTTPS</1> și <1>DNS-over-TLS</1>.",
"setup_dns_privacy_other_title": "Alte implementări", "setup_dns_privacy_other_title": "Alte implementări",
"setup_dns_privacy_other_1": "AdGuard Home poate fi un client DNS sigur pe orice platformă.", "setup_dns_privacy_other_1": "AdGuard Home poate fi un client DNS sigur pe orice platformă.",
@ -383,7 +399,7 @@
"setup_dns_privacy_other_4": "<0>Mozilla Firefox</0> acceptă <1>DNS-over-HTTPS</1>.", "setup_dns_privacy_other_4": "<0>Mozilla Firefox</0> acceptă <1>DNS-over-HTTPS</1>.",
"setup_dns_privacy_other_5": "Veți găsi mai multe implementări <0>aici</0> și <1>aici</1>.", "setup_dns_privacy_other_5": "Veți găsi mai multe implementări <0>aici</0> și <1>aici</1>.",
"setup_dns_notice": "Pentru a utiliza <1>DNS-over-HTTPS</1> sau <1>DNS-over-TLS</1>, trebuie să <0>configurați Criptarea</0> în setările AdGuard Home.", "setup_dns_notice": "Pentru a utiliza <1>DNS-over-HTTPS</1> sau <1>DNS-over-TLS</1>, trebuie să <0>configurați Criptarea</0> în setările AdGuard Home.",
"rewrite_added": "Rescriere DNS pentru \"{{key}}\" adăugat cu succes", "rewrite_added": "Rescriere DNS pentru \"{{key}}\" adăugată cu succes",
"rewrite_deleted": "Rescriere DNS pentru \"{{key}}\" ștearsă cu succes", "rewrite_deleted": "Rescriere DNS pentru \"{{key}}\" ștearsă cu succes",
"rewrite_add": "Adăugați rescriere DNS", "rewrite_add": "Adăugați rescriere DNS",
"rewrite_not_found": "Nu s-au găsit rescrieri DNS", "rewrite_not_found": "Nu s-au găsit rescrieri DNS",
@ -394,11 +410,11 @@
"dns_rewrites": "Rescrieri DNS", "dns_rewrites": "Rescrieri DNS",
"form_domain": "Intrați un nume de domeniu sau wildcard", "form_domain": "Intrați un nume de domeniu sau wildcard",
"form_answer": "Intrați adresa IP sau numele de domeniu", "form_answer": "Intrați adresa IP sau numele de domeniu",
"form_error_domain_format": "Format de răspuns nevalid", "form_error_domain_format": "Format de răspuns invalid",
"form_error_answer_format": "Format de răspuns nevalid", "form_error_answer_format": "Format de răspuns invalid",
"configure": "Configurați", "configure": "Configurați",
"main_settings": "Setări principale", "main_settings": "Setări principale",
"block_services": "Blocare anumite servicii", "block_services": "Blochează anumite servicii",
"blocked_services": "Servicii blocate", "blocked_services": "Servicii blocate",
"blocked_services_desc": "Permite blocarea rapidă a site-urilor și serviciilor populare.", "blocked_services_desc": "Permite blocarea rapidă a site-urilor și serviciilor populare.",
"blocked_services_saved": "Serviciile blocate au fost salvate cu succes", "blocked_services_saved": "Serviciile blocate au fost salvate cu succes",
@ -422,11 +438,11 @@
"filter_added_successfully": "Filtrul a fost adăugat cu succes", "filter_added_successfully": "Filtrul a fost adăugat cu succes",
"filter_updated": "Filtrul a fost actualizat cu succes", "filter_updated": "Filtrul a fost actualizat cu succes",
"statistics_configuration": "Configurația statisticilor", "statistics_configuration": "Configurația statisticilor",
"statistics_retention": "Statistică retenții", "statistics_retention": "Păstrarea statisticilor",
"statistics_retention_desc": "Dacă reduceți valoarea intervalului, unele date vor fi pierdute", "statistics_retention_desc": "Dacă reduceți valoarea intervalului, unele date vor fi pierdute",
"statistics_clear": " Șterge statisticile", "statistics_clear": " Șterge statisticile",
"statistics_clear_confirm": "Sunteți sigur că doriți să ștergeți statisticile?", "statistics_clear_confirm": "Sunteți sigur că doriți să ștergeți statisticile?",
"statistics_retention_confirm": "Sunteți sigur că doriți să schimbați retenția statisticilor? Dacă reduceți valoarea intervalului, unele date vor fi pierdute", "statistics_retention_confirm": "Sunteți sigur că doriți să schimbați păstrarea statisticilor? Dacă reduceți valoarea intervalului, unele date vor fi pierdute",
"statistics_cleared": "Statisticile au fost șterse cu succes", "statistics_cleared": "Statisticile au fost șterse cu succes",
"interval_hours": "{{count}} oră", "interval_hours": "{{count}} oră",
"interval_hours_plural": "{{count}} ore", "interval_hours_plural": "{{count}} ore",
@ -445,6 +461,7 @@
"location": "Locația", "location": "Locația",
"orgname": "Numele organizației", "orgname": "Numele organizației",
"netname": "Numele rețelei", "netname": "Numele rețelei",
"network": "Rețea",
"descr": "Descriere", "descr": "Descriere",
"whois": "Whois", "whois": "Whois",
"filtering_rules_learn_more": "<0>Aflați mai multe</0> despre crearea propriilor liste hosts.", "filtering_rules_learn_more": "<0>Aflați mai multe</0> despre crearea propriilor liste hosts.",
@ -456,10 +473,10 @@
"disable_ipv6": "Dezactivați IPv6", "disable_ipv6": "Dezactivați IPv6",
"disable_ipv6_desc": "Dacă această opțiune este activată, toate interogările DNS pentru adrese IPv6 (tip AAAA) vor fi anulate.", "disable_ipv6_desc": "Dacă această opțiune este activată, toate interogările DNS pentru adrese IPv6 (tip AAAA) vor fi anulate.",
"fastest_addr": "Cea mai rapidă adresă IP", "fastest_addr": "Cea mai rapidă adresă IP",
"fastest_addr_desc": "Interogați toate serverele DNS și returnați cea mai rapidă adresă IP din răspunsuri", "fastest_addr_desc": "Interogările la toate serverele DNS întorc adresa IP cea mai rapidă din răspunsuri. Așteptarea răspunsului tuturor serverelor DNS face interogările DNS mai lente dar se ameliorează conectivitatea generală.",
"autofix_warning_text": "Dacă faceți clic pe \"Fix\", AdGuardHome va configura sistemul dvs. pentru a utiliza serverul DNS AdGuardHome.", "autofix_warning_text": "Dacă clicați pe \"Fix\", AdGuardHome va configura sistemul dvs. pentru a utiliza serverul DNS AdGuardHome.",
"autofix_warning_list": "Va efectua aceste sarcini: <0>Dezactivare sistem DNSStubListener</0> <0>Setare adresă server DNS la 127.0.0.1</0> <0>Înlocuire țintei legăturii simbolice a /etc/resolv.conf pentru /run/systemd/resolve/resolv.conf</0> <0>Oprire DNSStubListener (reîncărcare servici rezolvat prin sistem)</0>", "autofix_warning_list": "Va efectua aceste sarcini: <0>Dezactivare sistem DNSStubListener</0> <0>Setare adresă server DNS la 127.0.0.1</0> <0>Înlocuire link simbolic țintă /etc/resolv.conf cu /run/systemd/resolve/resolv.conf</0> <0>Oprire DNSStubListener (reîncărcare servici rezolvat prin sistem)</0>",
"autofix_warning_result": "Ca urmare, toate cererile DNS de la sistemul dvs. vor fi procesate în mod implicit de AdGuardHome.", "autofix_warning_result": "Ca urmare, toate cererile DNS ale sistemul dvs. vor fi procesate în mod implicit de AdGuardHome.",
"tags_title": "Etichete", "tags_title": "Etichete",
"tags_desc": "Puteți selecta etichetele care corespund clientului. Etichetele pot fi incluse în regulile de filtrare și vă permit să le aplicați mai exact. <0>Aflați mai multe</0>", "tags_desc": "Puteți selecta etichetele care corespund clientului. Etichetele pot fi incluse în regulile de filtrare și vă permit să le aplicați mai exact. <0>Aflați mai multe</0>",
"form_select_tags": "Selectați etichete client", "form_select_tags": "Selectați etichete client",
@ -489,5 +506,19 @@
"list_updated": "{{count}} listă actualizată", "list_updated": "{{count}} listă actualizată",
"list_updated_plural": "{{count}} liste actualizate", "list_updated_plural": "{{count}} liste actualizate",
"dnssec_enable": "Activați DNSSEC", "dnssec_enable": "Activați DNSSEC",
"dnssec_enable_desc": "Setați steagul DNSSEC pe interogările DNS de ieșire și verificați rezultatul (este necesar un resolver DNSSEC activat)" "dnssec_enable_desc": "Setați steagul DNSSEC pe interogările DNS de ieșire și verificați rezultatul (este necesar un resolver DNSSEC activat)",
"validated_with_dnssec": "Validat cu DNSSEC",
"show_all_responses": "Toate răspunsurile",
"show_blocked_responses": "Blocat",
"show_whitelisted_responses": "Pe lista albă",
"show_processed_responses": "Tratat",
"blocked_safebrowsing": "Blocat de Navigarea securitară",
"blocked_adult_websites": "Site-uri pentru adulți blocate",
"blocked_threats": "Amenințări blocate",
"allowed": "Permise",
"filtered": "Filtrate",
"rewritten": "Rescrise",
"safe_search": "Căutare sigură",
"blocklist": "Lista neagră",
"milliseconds_abbreviation": "ms"
} }

View File

@ -59,7 +59,7 @@
"query_log": "Журнал", "query_log": "Журнал",
"faq": "FAQ", "faq": "FAQ",
"version": "версия", "version": "версия",
"address": "адрес", "address": "Адрес",
"on": "Вкл", "on": "Вкл",
"off": "Выкл", "off": "Выкл",
"copyright": "Все права защищены", "copyright": "Все права защищены",
@ -170,9 +170,10 @@
"updated_upstream_dns_toast": "Upstream DNS-серверы обновлены", "updated_upstream_dns_toast": "Upstream DNS-серверы обновлены",
"dns_test_ok_toast": "Указанные серверы DNS работают корректно", "dns_test_ok_toast": "Указанные серверы DNS работают корректно",
"dns_test_not_ok_toast": "Сервер \"{{key}}\": невозможно использовать, проверьте правильность написания", "dns_test_not_ok_toast": "Сервер \"{{key}}\": невозможно использовать, проверьте правильность написания",
"unblock_btn": "Разблокировать", "unblock": "Разблокировать",
"block_btn": "Заблокировать", "block": "Заблокировать",
"time_table_header": "Время", "time_table_header": "Время",
"date": "Дата",
"domain_name_table_header": "Домен", "domain_name_table_header": "Домен",
"type_table_header": "Тип", "type_table_header": "Тип",
"response_table_header": "Ответ", "response_table_header": "Ответ",
@ -257,7 +258,7 @@
"install_devices_router_list_1": "Откройте настройки вашего роутера. Обычно вы можете открыть их в вашем браузере (например, http://192.168.0.1/ или http://192.168.1.1/). Вас могут попросить ввести пароль. Если вы не помните его, пароль часто можно сбросить, нажав на кнопку на самом роутере. Некоторые роутеры требуют специального приложения, которое в этом случае должно быть уже установлено на ваш компьютер или телефон.", "install_devices_router_list_1": "Откройте настройки вашего роутера. Обычно вы можете открыть их в вашем браузере (например, http://192.168.0.1/ или http://192.168.1.1/). Вас могут попросить ввести пароль. Если вы не помните его, пароль часто можно сбросить, нажав на кнопку на самом роутере. Некоторые роутеры требуют специального приложения, которое в этом случае должно быть уже установлено на ваш компьютер или телефон.",
"install_devices_router_list_2": "Найдите настройки DHCP или DNS. Найдите буквы \"DNS\" рядом с текстовым полем, в которое можно ввести два или три ряда цифр, разделенных на 4 группы от одной до трёх цифр.", "install_devices_router_list_2": "Найдите настройки DHCP или DNS. Найдите буквы \"DNS\" рядом с текстовым полем, в которое можно ввести два или три ряда цифр, разделенных на 4 группы от одной до трёх цифр.",
"install_devices_router_list_3": "Введите туда адрес вашего AdGuard Home.", "install_devices_router_list_3": "Введите туда адрес вашего AdGuard Home.",
"install_devices_router_list_4": "Вы не можете установить собственный DNS-сервер на некоторых типах маршрутизаторов. В этом случае может помочь настройка AdGuard Home в качестве DHCP-сервера. В противном случае вам следует обратиться к руководству по настройке DNS-серверов для вашей конкретной модели маршрутизатора.", "install_devices_router_list_4": "Вы не можете установить собственный DNS-сервер на некоторых типах маршрутизаторов. В этом случае может помочь настройка AdGuard Home в качестве <0>DHCP-сервера</0>. В противном случае вам следует обратиться к руководству по настройке DNS-серверов для вашей конкретной модели маршрутизатора.",
"install_devices_windows_list_1": "Откройте Панель управления через меню \"Пуск\" или через поиск Windows.", "install_devices_windows_list_1": "Откройте Панель управления через меню \"Пуск\" или через поиск Windows.",
"install_devices_windows_list_2": "Перейдите в \"Сеть и интернет\", а затем в \"Центр управления сетями и общим доступом\"", "install_devices_windows_list_2": "Перейдите в \"Сеть и интернет\", а затем в \"Центр управления сетями и общим доступом\"",
"install_devices_windows_list_3": "В левой стороне экрана найдите \"Изменение параметров адаптера\" и кликните по нему.", "install_devices_windows_list_3": "В левой стороне экрана найдите \"Изменение параметров адаптера\" и кликните по нему.",
@ -489,5 +490,9 @@
"list_updated": "Обновлен {{count}} список", "list_updated": "Обновлен {{count}} список",
"list_updated_plural": "Обновлено списков: {{count}}", "list_updated_plural": "Обновлено списков: {{count}}",
"dnssec_enable": "Включить DNSSEC", "dnssec_enable": "Включить DNSSEC",
"dnssec_enable_desc": "Установите флаг DNSSEC в исходящих DNS-запросах и проверьте результат (требуется резолвер с поддержкой DNSSEC)" "dnssec_enable_desc": "Установите флаг DNSSEC в исходящих DNS-запросах и проверьте результат (требуется резолвер с поддержкой DNSSEC)",
"show_blocked_responses": "Blocked",
"blocked_adult_websites": "Заблокированные \"взрослые\" сайты",
"blocked_threats": "Заблокировано угроз",
"blocklist": "Черный список"
} }

View File

@ -3,6 +3,8 @@
"example_upstream_reserved": "Môžete zadať DNS upstream <0>pre konkrétnu doménu (domény)</0>", "example_upstream_reserved": "Môžete zadať DNS upstream <0>pre konkrétnu doménu (domény)</0>",
"upstream_parallel": "Používať paralelné dopyty na zrýchlenie súčasným dopytovaním všetkých serverov", "upstream_parallel": "Používať paralelné dopyty na zrýchlenie súčasným dopytovaním všetkých serverov",
"parallel_requests": "Paralelné dopyty", "parallel_requests": "Paralelné dopyty",
"load_balancing": "Vyrovnávanie záťaže",
"load_balancing_desc": "Dopytujte jeden server súčasne. AdGuard Home použije na výber servera vážený náhodný algoritmus, aby sa najrýchlejší server používal častejšie.",
"bootstrap_dns": "Bootstrap DNS servery", "bootstrap_dns": "Bootstrap DNS servery",
"bootstrap_dns_desc": "Bootstrap DNS servery sa používajú na rozlíšenie IP adries DoH/DoT rezolverov, ktoré zadáte ako upstreams.", "bootstrap_dns_desc": "Bootstrap DNS servery sa používajú na rozlíšenie IP adries DoH/DoT rezolverov, ktoré zadáte ako upstreams.",
"check_dhcp_servers": "Skontrolovať DHCP servery", "check_dhcp_servers": "Skontrolovať DHCP servery",
@ -37,6 +39,7 @@
"dhcp_interface_select": "Zvoľte DHCP rozhranie", "dhcp_interface_select": "Zvoľte DHCP rozhranie",
"dhcp_hardware_address": "Hardware adresa", "dhcp_hardware_address": "Hardware adresa",
"dhcp_ip_addresses": "IP adresy", "dhcp_ip_addresses": "IP adresy",
"ip": "IP",
"dhcp_table_hostname": "Meno hostiteľa", "dhcp_table_hostname": "Meno hostiteľa",
"dhcp_table_expires": "Vyprší", "dhcp_table_expires": "Vyprší",
"dhcp_warning": "Ak chcete server DHCP napriek tomu povoliť, uistite sa, že v sieti nie je žiadny iný aktívny DHCP server. V opačnom prípade sa môže prerušiť internet pre už pripojené zariadenia!", "dhcp_warning": "Ak chcete server DHCP napriek tomu povoliť, uistite sa, že v sieti nie je žiadny iný aktívny DHCP server. V opačnom prípade sa môže prerušiť internet pre už pripojené zariadenia!",
@ -49,17 +52,22 @@
"dhcp_static_leases_not_found": "Nebol nájdený žiadny statický DHCP prenájom", "dhcp_static_leases_not_found": "Nebol nájdený žiadny statický DHCP prenájom",
"dhcp_add_static_lease": "Pridať statický prenájom", "dhcp_add_static_lease": "Pridať statický prenájom",
"dhcp_reset": "Naozaj chcete obnoviť konfiguráciu DHCP?", "dhcp_reset": "Naozaj chcete obnoviť konfiguráciu DHCP?",
"country": "Krajina",
"delete_confirm": "Naozaj chcete vymazať \"{{key}}\"?", "delete_confirm": "Naozaj chcete vymazať \"{{key}}\"?",
"form_enter_hostname": "Zadajte meno hostiteľa", "form_enter_hostname": "Zadajte meno hostiteľa",
"error_details": "Podrobnosti chyby", "error_details": "Podrobnosti chyby",
"client_details": "Podrobnosti klienta",
"details": "Podrobnosti",
"back": "Naspäť", "back": "Naspäť",
"dashboard": "Riadiaci panel", "dashboard": "Riadiaci panel",
"settings": "Nastavenia", "settings": "Nastavenia",
"filters": "Filtre", "filters": "Filtre",
"filter": "Filter",
"query_log": "Denník dopytov", "query_log": "Denník dopytov",
"empty_log": "Denník dopytov je prázdny",
"faq": "FAQ", "faq": "FAQ",
"version": "Verzia", "version": "Verzia",
"address": "adresa", "address": "Adresa",
"on": "ZAP.", "on": "ZAP.",
"off": "VYP.", "off": "VYP.",
"copyright": "Copyright", "copyright": "Copyright",
@ -132,8 +140,10 @@
"rules_count_table_header": "Počet pravidiel", "rules_count_table_header": "Počet pravidiel",
"last_time_updated_table_header": "Posledná aktualizácia", "last_time_updated_table_header": "Posledná aktualizácia",
"actions_table_header": "Akcie", "actions_table_header": "Akcie",
"request_table_header": "Dopyt",
"edit_table_action": "Upraviť", "edit_table_action": "Upraviť",
"delete_table_action": "Vymazať", "delete_table_action": "Vymazať",
"elapsed": "Uplynuté",
"filters_and_hosts_hint": "AdGuard Home pozná základné pravidlá adblock a syntax hosts súborov.", "filters_and_hosts_hint": "AdGuard Home pozná základné pravidlá adblock a syntax hosts súborov.",
"no_blocklist_added": "Nebol pridaný žiaden zoznam blokovaných DNS", "no_blocklist_added": "Nebol pridaný žiaden zoznam blokovaných DNS",
"no_whitelist_added": "Nebol pridaný žiaden zoznam povolených DNS", "no_whitelist_added": "Nebol pridaný žiaden zoznam povolených DNS",
@ -170,10 +180,12 @@
"updated_upstream_dns_toast": "Aktualizované upstream DNS servery", "updated_upstream_dns_toast": "Aktualizované upstream DNS servery",
"dns_test_ok_toast": "Špecifikované DNS servery pracujú korektne", "dns_test_ok_toast": "Špecifikované DNS servery pracujú korektne",
"dns_test_not_ok_toast": "Server \"{{key}}\": nemohol byť použitý, skontrolujte, či ste ho správne napísali", "dns_test_not_ok_toast": "Server \"{{key}}\": nemohol byť použitý, skontrolujte, či ste ho správne napísali",
"unblock_btn": "Odblokovať", "unblock": "Odblokovať",
"block_btn": "Zablokovať", "block": "Blokovať",
"time_table_header": "Čas", "time_table_header": "Čas",
"date": "Dátum",
"domain_name_table_header": "Meno domény", "domain_name_table_header": "Meno domény",
"domain_or_client": "Doména alebo klient",
"type_table_header": "Typ", "type_table_header": "Typ",
"response_table_header": "Odozva", "response_table_header": "Odozva",
"client_table_header": "Klient", "client_table_header": "Klient",
@ -211,6 +223,8 @@
"custom_ip": "Vlastná IP adresa", "custom_ip": "Vlastná IP adresa",
"blocking_ipv4": "Blokovanie IPv4", "blocking_ipv4": "Blokovanie IPv4",
"blocking_ipv6": "Blokovanie IPv6", "blocking_ipv6": "Blokovanie IPv6",
"dns_over_https": "DNS-over-HTTPS",
"dns_over_tls": "DNS-over-TLS",
"form_enter_rate_limit": "Zadajte rýchlostný limit", "form_enter_rate_limit": "Zadajte rýchlostný limit",
"rate_limit": "Rýchlostný limit", "rate_limit": "Rýchlostný limit",
"edns_enable": "Povoliť klientsku podsiete EDNS", "edns_enable": "Povoliť klientsku podsiete EDNS",
@ -229,6 +243,7 @@
"rule_label": "Pravidlo", "rule_label": "Pravidlo",
"list_label": "Zoznam", "list_label": "Zoznam",
"unknown_filter": "Neznámy filter {{filterId}}", "unknown_filter": "Neznámy filter {{filterId}}",
"known_tracker": "Známy sledovač",
"install_welcome_title": "Vitajte na stránkach AdGuard Home!", "install_welcome_title": "Vitajte na stránkach AdGuard Home!",
"install_welcome_desc": "Doména AdGuard Home je celosieťový DNS server pre blokovanie reklám a sledovačov. Jeho cieľom je, aby ste ovládali celú Vašu sieť a všetky Vaše zariadenia, pričom sa nevyžaduje použitie akéhokoľvek programu na strane klienta.", "install_welcome_desc": "Doména AdGuard Home je celosieťový DNS server pre blokovanie reklám a sledovačov. Jeho cieľom je, aby ste ovládali celú Vašu sieť a všetky Vaše zariadenia, pričom sa nevyžaduje použitie akéhokoľvek programu na strane klienta.",
"install_settings_title": "Administrátorské webové rozhranie", "install_settings_title": "Administrátorské webové rozhranie",
@ -257,7 +272,7 @@
"install_devices_router_list_1": "Otvorte predvoľby Vášho smerovača. Zvyčajne ho môžete získať z prehliadača prostredníctvom adresy URL (napríklad http://192.168.0.1/ alebo http://192.168.1.1/). Možno bude potrebné zadať heslo. Ak si to nepamätáte, heslo môžete často obnoviť stlačením tlačidla na samotnom smerovači. Niektoré smerovače vyžadujú konkrétnu aplikáciu, ktorá by v takom prípade mala byť už nainštalovaná na Vašom počítači alebo telefóne.", "install_devices_router_list_1": "Otvorte predvoľby Vášho smerovača. Zvyčajne ho môžete získať z prehliadača prostredníctvom adresy URL (napríklad http://192.168.0.1/ alebo http://192.168.1.1/). Možno bude potrebné zadať heslo. Ak si to nepamätáte, heslo môžete často obnoviť stlačením tlačidla na samotnom smerovači. Niektoré smerovače vyžadujú konkrétnu aplikáciu, ktorá by v takom prípade mala byť už nainštalovaná na Vašom počítači alebo telefóne.",
"install_devices_router_list_2": "Nájdite nastavenia DHCP/DNS. Hľadajte skratku DNS vedľa poľa, ktoré umožňuje vložiť dve alebo tri sady čísel, každé rozdelené do štyroch skupín s jedným až tromi číslicami.", "install_devices_router_list_2": "Nájdite nastavenia DHCP/DNS. Hľadajte skratku DNS vedľa poľa, ktoré umožňuje vložiť dve alebo tri sady čísel, každé rozdelené do štyroch skupín s jedným až tromi číslicami.",
"install_devices_router_list_3": "Zadajte tam adresy Vášho AdGuard Home servera.", "install_devices_router_list_3": "Zadajte tam adresy Vášho AdGuard Home servera.",
"install_devices_router_list_4": "Na niektorých typoch smerovačov nemôžete nastaviť vlastný DNS server. V takom prípade môže pomôcť, ak nastavíte AdGuard Home ako DHCP server. V opačnom prípade by ste mali vyhľadať príručku, ako prispôsobiť DNS servery konkrétnemu modelu smerovača.", "install_devices_router_list_4": "Na niektorých typoch smerovačov nemôžete nastaviť vlastný DNS server. V takom prípade môže pomôcť, ak nastavíte domovskú stránku AdGuard ako <0>DHCP server</0>. V opačnom prípade by ste mali vyhľadať príručku, ako prispôsobiť servery DNS konkrétnemu modelu smerovača.",
"install_devices_windows_list_1": "Otvorte panel Nastavenia cez menu Štart alebo vyhľadávanie Windows.", "install_devices_windows_list_1": "Otvorte panel Nastavenia cez menu Štart alebo vyhľadávanie Windows.",
"install_devices_windows_list_2": "Prejdite do kategórie Sieť a internet a potom do Centra sietí a zdieľania.", "install_devices_windows_list_2": "Prejdite do kategórie Sieť a internet a potom do Centra sietí a zdieľania.",
"install_devices_windows_list_3": "Vyhľadajte položku Zmeniť možnosti adaptéra a kliknite na ňu", "install_devices_windows_list_3": "Vyhľadajte položku Zmeniť možnosti adaptéra a kliknite na ňu",
@ -346,6 +361,7 @@
"form_enter_id": "Zadajte identifikátor", "form_enter_id": "Zadajte identifikátor",
"form_add_id": "Pridajte identifikátor", "form_add_id": "Pridajte identifikátor",
"form_client_name": "Zadajte meno klienta", "form_client_name": "Zadajte meno klienta",
"name": "Meno",
"client_global_settings": "Použiť globálne nastavenia", "client_global_settings": "Použiť globálne nastavenia",
"client_deleted": "\"{{key}}\" klienta bol úspešne vymazaný", "client_deleted": "\"{{key}}\" klienta bol úspešne vymazaný",
"client_added": "\"{{key}}\" klienta bol úspešne pridaný", "client_added": "\"{{key}}\" klienta bol úspešne pridaný",
@ -445,6 +461,7 @@
"location": "Poloha", "location": "Poloha",
"orgname": "Meno organizácie", "orgname": "Meno organizácie",
"netname": "Meno siete", "netname": "Meno siete",
"network": "Sieť",
"descr": "Popis", "descr": "Popis",
"whois": "Whois", "whois": "Whois",
"filtering_rules_learn_more": "<0>Dozvedieť sa viac</0> o tvorbe vlastných zoznamov hostiteľov.", "filtering_rules_learn_more": "<0>Dozvedieť sa viac</0> o tvorbe vlastných zoznamov hostiteľov.",
@ -456,7 +473,7 @@
"disable_ipv6": "Vypnúť IPv6", "disable_ipv6": "Vypnúť IPv6",
"disable_ipv6_desc": "Ak je táto funkcia zapnutá, všetky dotazy DNS na adresy IPv6 (typ AAAA) budú zrušené.", "disable_ipv6_desc": "Ak je táto funkcia zapnutá, všetky dotazy DNS na adresy IPv6 (typ AAAA) budú zrušené.",
"fastest_addr": "Najrýchlejšia IP adresa", "fastest_addr": "Najrýchlejšia IP adresa",
"fastest_addr_desc": "Dopytovať všetky DNS servery a vrátiť najrýchlejšiu IP adresu zo všetkých odpovedí", "fastest_addr_desc": "Dopytovať všetky servery DNS a vrátiť najrýchlejšiu IP adresu zo všetkých odpovedí. Toto spomalí dotazy DNS, pretože musíme čakať na odpovede zo všetkých serverov DNS, ale zlepší sa celkové pripojenie.",
"autofix_warning_text": "Ak kliknete na „Opraviť“, AdGuardHome nakonfiguruje Váš systém tak, aby používal DNS server AdGuardHome.", "autofix_warning_text": "Ak kliknete na „Opraviť“, AdGuardHome nakonfiguruje Váš systém tak, aby používal DNS server AdGuardHome.",
"autofix_warning_list": "Bude vykonávať tieto úlohy: <0>Deaktivovať systém DNSStubListener</0> <0>Nastaviť adresu servera DNS na 127.0.0.1</0> <0>Nahradiť cieľový symbolický odkaz /etc/resolv.conf na /run/systemd/resolve/resolv.conf</0> <0>Zastaviť službu DNSStubListener (znova načítať službu systemd-resolved)</0>", "autofix_warning_list": "Bude vykonávať tieto úlohy: <0>Deaktivovať systém DNSStubListener</0> <0>Nastaviť adresu servera DNS na 127.0.0.1</0> <0>Nahradiť cieľový symbolický odkaz /etc/resolv.conf na /run/systemd/resolve/resolv.conf</0> <0>Zastaviť službu DNSStubListener (znova načítať službu systemd-resolved)</0>",
"autofix_warning_result": "Výsledkom bude, že všetky DNS dopyty z Vášho systému budú štandardne spracované službou AdGuard Home.", "autofix_warning_result": "Výsledkom bude, že všetky DNS dopyty z Vášho systému budú štandardne spracované službou AdGuard Home.",
@ -489,5 +506,19 @@
"list_updated": "{{count}} zoznam aktualizovaný", "list_updated": "{{count}} zoznam aktualizovaný",
"list_updated_plural": "{{count}} zoznamov aktualizovaných", "list_updated_plural": "{{count}} zoznamov aktualizovaných",
"dnssec_enable": "Zapnúť DNSSEC", "dnssec_enable": "Zapnúť DNSSEC",
"dnssec_enable_desc": "Nastavte príznak DNSSEC v nasledujúcich DNS dopytoch a skontrolujte výsledok (je potrebný prekladač so zapnutým DNSSEC)" "dnssec_enable_desc": "Nastavte príznak DNSSEC v nasledujúcich DNS dopytoch a skontrolujte výsledok (je potrebný prekladač so zapnutým DNSSEC)",
"validated_with_dnssec": "Overené pomocou DNSSEC",
"show_all_responses": "Všetky odpovede",
"show_blocked_responses": "Zablokované",
"show_whitelisted_responses": "Obsiahnuté v bielej listine",
"show_processed_responses": "Spracované",
"blocked_safebrowsing": "Zablokované modulom Bezpečné prehliadanie",
"blocked_adult_websites": "Zablokovaná stránka pre dospelých",
"blocked_threats": "Zablokované hrozby",
"allowed": "Povolené",
"filtered": "Filtrované",
"rewritten": "Prepísané",
"safe_search": "Bezpečné vyhľadávanie",
"blocklist": "Zoznam blokovaní",
"milliseconds_abbreviation": "ms"
} }

View File

@ -3,6 +3,8 @@
"example_upstream_reserved": "lahko določite nazgornji DNS <0>za določene domene</0>", "example_upstream_reserved": "lahko določite nazgornji DNS <0>za določene domene</0>",
"upstream_parallel": "Uporabite vzporedne zahteve za pospešitev reševanja s hkratnim poizvedovanjem vseh gorvodnih strežnikov", "upstream_parallel": "Uporabite vzporedne zahteve za pospešitev reševanja s hkratnim poizvedovanjem vseh gorvodnih strežnikov",
"parallel_requests": "Vzporedne zahteve", "parallel_requests": "Vzporedne zahteve",
"load_balancing": "Uravnavanje obremenitve",
"load_balancing_desc": "Poizvedujte po en strežnik. AdGuard Home bo uporabil uteženi naključni algoritem za izbiro strežnika, tako da bo najhitrejši strežnik uporabljen pogosteje.",
"bootstrap_dns": "Zagonski DNS strežniki", "bootstrap_dns": "Zagonski DNS strežniki",
"bootstrap_dns_desc": "Zagonski DNS strežniki se uporabljajo za razreševanje IP naslovov DoH/DoT reševalcev, ki jih določite kot navzgornje.", "bootstrap_dns_desc": "Zagonski DNS strežniki se uporabljajo za razreševanje IP naslovov DoH/DoT reševalcev, ki jih določite kot navzgornje.",
"check_dhcp_servers": "Preveri strežnike DHCP", "check_dhcp_servers": "Preveri strežnike DHCP",
@ -37,6 +39,7 @@
"dhcp_interface_select": "Izberite DHCP vmesnik", "dhcp_interface_select": "Izberite DHCP vmesnik",
"dhcp_hardware_address": "Naslov strojne opreme", "dhcp_hardware_address": "Naslov strojne opreme",
"dhcp_ip_addresses": "IP naslovi", "dhcp_ip_addresses": "IP naslovi",
"ip": "IP",
"dhcp_table_hostname": "Ime gostitelja", "dhcp_table_hostname": "Ime gostitelja",
"dhcp_table_expires": "Poteče", "dhcp_table_expires": "Poteče",
"dhcp_warning": "Če želite omogočiti DHCP strežnik, prepričajte se, da v vašem omrežju ni drugega aktivnega strežnika DHCP. V nasprotnem primeru lahko ta prekine internet za povezane naprave!", "dhcp_warning": "Če želite omogočiti DHCP strežnik, prepričajte se, da v vašem omrežju ni drugega aktivnega strežnika DHCP. V nasprotnem primeru lahko ta prekine internet za povezane naprave!",
@ -49,17 +52,22 @@
"dhcp_static_leases_not_found": "Ni najdenih statičnih najemov DHCP", "dhcp_static_leases_not_found": "Ni najdenih statičnih najemov DHCP",
"dhcp_add_static_lease": "Dodaj statičen najem", "dhcp_add_static_lease": "Dodaj statičen najem",
"dhcp_reset": "Ali ste prepričani, da želite ponastaviti konfiguracijo DHCP?", "dhcp_reset": "Ali ste prepričani, da želite ponastaviti konfiguracijo DHCP?",
"country": "Dežela",
"delete_confirm": "Ali ste prepričani, da želite izbrisati \"{{key}}\"?", "delete_confirm": "Ali ste prepričani, da želite izbrisati \"{{key}}\"?",
"form_enter_hostname": "Vnesite ime gostitelja", "form_enter_hostname": "Vnesite ime gostitelja",
"error_details": "Podrobnosti o napaki", "error_details": "Podrobnosti o napaki",
"client_details": "Podatki o odjemalcu",
"details": "Podrobnosti",
"back": "Nazaj", "back": "Nazaj",
"dashboard": "Nadzorna plošča", "dashboard": "Nadzorna plošča",
"settings": "Nastavitve", "settings": "Nastavitve",
"filters": "Filtri", "filters": "Filtri",
"filter": "Filtriraj",
"query_log": "Dnevnik poizvedb", "query_log": "Dnevnik poizvedb",
"empty_log": "Dnevnik poizvedb je prazen",
"faq": "Pogosta vprašanja in odgovori (FAQ)", "faq": "Pogosta vprašanja in odgovori (FAQ)",
"version": "različica", "version": "različica",
"address": "naslov", "address": "Naslov",
"on": "VKL", "on": "VKL",
"off": "IZK", "off": "IZK",
"copyright": "Avtorske pravice", "copyright": "Avtorske pravice",
@ -132,8 +140,10 @@
"rules_count_table_header": "Število pravil", "rules_count_table_header": "Število pravil",
"last_time_updated_table_header": "Zadnjič posodobljeno", "last_time_updated_table_header": "Zadnjič posodobljeno",
"actions_table_header": "Akcij", "actions_table_header": "Akcij",
"request_table_header": "Zahteva",
"edit_table_action": "Uredi", "edit_table_action": "Uredi",
"delete_table_action": "Izbriši", "delete_table_action": "Izbriši",
"elapsed": "Potekla",
"filters_and_hosts_hint": "AdGuard Home razume osnovna pravila zaviranja oglasov in sintakso datotek gostiteljev.", "filters_and_hosts_hint": "AdGuard Home razume osnovna pravila zaviranja oglasov in sintakso datotek gostiteljev.",
"no_blocklist_added": "Ni dodanih nobenih seznamov nedovoljenih", "no_blocklist_added": "Ni dodanih nobenih seznamov nedovoljenih",
"no_whitelist_added": "Ni dodanih nobenih dovoljenih seznamov", "no_whitelist_added": "Ni dodanih nobenih dovoljenih seznamov",
@ -170,10 +180,12 @@
"updated_upstream_dns_toast": "Posodobljeni Zagonske strežnike DNS", "updated_upstream_dns_toast": "Posodobljeni Zagonske strežnike DNS",
"dns_test_ok_toast": "Navedeni strežniki DNS delujejo pravilno", "dns_test_ok_toast": "Navedeni strežniki DNS delujejo pravilno",
"dns_test_not_ok_toast": "Ni mogoče uporabiti: strežnika \"{{key}}\". Preverite, ali ste ga pravilno napisali", "dns_test_not_ok_toast": "Ni mogoče uporabiti: strežnika \"{{key}}\". Preverite, ali ste ga pravilno napisali",
"unblock_btn": "Omogoči", "unblock": "Omogoči",
"block_btn": "Onemogoči", "block": "Onemogoči",
"time_table_header": "Čas", "time_table_header": "Čas",
"date": "Datum",
"domain_name_table_header": "Ime domene", "domain_name_table_header": "Ime domene",
"domain_or_client": "Domena ali odjemalec",
"type_table_header": "Vrsta", "type_table_header": "Vrsta",
"response_table_header": "Odgovor", "response_table_header": "Odgovor",
"client_table_header": "Odjemalec", "client_table_header": "Odjemalec",
@ -211,6 +223,8 @@
"custom_ip": "IP po meri", "custom_ip": "IP po meri",
"blocking_ipv4": "Onemogočanje IPv4", "blocking_ipv4": "Onemogočanje IPv4",
"blocking_ipv6": "Onemogočanje IPv6", "blocking_ipv6": "Onemogočanje IPv6",
"dns_over_https": "DNS-prek-HTTPS",
"dns_over_tls": "DNS-prek-TLS",
"form_enter_rate_limit": "Vnesite omejitev hitrosti", "form_enter_rate_limit": "Vnesite omejitev hitrosti",
"rate_limit": "Omejitev hitrosti", "rate_limit": "Omejitev hitrosti",
"edns_enable": "Omogoči podmrežje odjemalcev EDNS", "edns_enable": "Omogoči podmrežje odjemalcev EDNS",
@ -229,6 +243,7 @@
"rule_label": "Pravilo", "rule_label": "Pravilo",
"list_label": "Seznam", "list_label": "Seznam",
"unknown_filter": "Neznan filter {{filterId}}", "unknown_filter": "Neznan filter {{filterId}}",
"known_tracker": "Znan sledilec",
"install_welcome_title": "Dobrodošli v AdGuard Home!", "install_welcome_title": "Dobrodošli v AdGuard Home!",
"install_welcome_desc": "AdGuard Home je omrežni strežnik DNS, ki zavira oglase in sledilce v celotnem omrežju. Njegov namen je omogočanje nadzora nad celotnim omrežjem in vsemi vašimi napravami in ne zahteva uporabo odjemalskega programa.", "install_welcome_desc": "AdGuard Home je omrežni strežnik DNS, ki zavira oglase in sledilce v celotnem omrežju. Njegov namen je omogočanje nadzora nad celotnim omrežjem in vsemi vašimi napravami in ne zahteva uporabo odjemalskega programa.",
"install_settings_title": "Skrbniški spletni vmesnik", "install_settings_title": "Skrbniški spletni vmesnik",
@ -257,7 +272,7 @@
"install_devices_router_list_1": "Odprite nastavitve usmerjevalnika. Ponavadi lahko do nje dostopate iz brskalnika prek URL-ja (npr. http://192.168.0.1/ ali http://192.168.1.1/). Morda boste morali vnesti geslo. Če se ne spomnite gesla, lahko pogosto ponastavite geslo s pritiskom na gumb na samem usmerjevalniku. Nekateri usmerjevalniki zahtevajo posebno aplikacijo, ki bi morala biti v tem primeru že nameščena na vašem računalniku/telefonu.", "install_devices_router_list_1": "Odprite nastavitve usmerjevalnika. Ponavadi lahko do nje dostopate iz brskalnika prek URL-ja (npr. http://192.168.0.1/ ali http://192.168.1.1/). Morda boste morali vnesti geslo. Če se ne spomnite gesla, lahko pogosto ponastavite geslo s pritiskom na gumb na samem usmerjevalniku. Nekateri usmerjevalniki zahtevajo posebno aplikacijo, ki bi morala biti v tem primeru že nameščena na vašem računalniku/telefonu.",
"install_devices_router_list_2": "Poiščite nastavitve DHCP/DNS. Poiščite črke DNS poleg polja, ki dovoljuje dva ali tri naborov številk, pri čemer je vsaka razdeljena na štiri skupine z enim do tremi števili.", "install_devices_router_list_2": "Poiščite nastavitve DHCP/DNS. Poiščite črke DNS poleg polja, ki dovoljuje dva ali tri naborov številk, pri čemer je vsaka razdeljena na štiri skupine z enim do tremi števili.",
"install_devices_router_list_3": "Tam vnesite svoje naslove strežnikov AdGuard Home.", "install_devices_router_list_3": "Tam vnesite svoje naslove strežnikov AdGuard Home.",
"install_devices_router_list_4": "Na nekaterih usmerjevalnikih ne morete nastaviti strežnika DNS po meri. V tem primeru bo morda pomagalo, če boste AdGuard Home postavili kot strežnik DHCP. V nasprotnem primeru poiščite priročnik, kako prilagoditi strežnike DNS za vaš določen model usmerjevalnika.", "install_devices_router_list_4": "Na nekaterih vrstah usmerjevalnikov ne morete nastaviti strežnika DNS po meri. V tem primeru bo morda pomagalo, če boste AdGuard Home postavili kot <0>strežnik DHCP</0>. V nasprotnem primeru poiščite priročnik, kako prilagoditi strežnike DNS za vaš določen model usmerjevalnika.",
"install_devices_windows_list_1": "Odprite 'Nadzorno ploščo' prek menija 'Začetek' ali 'Iskanja v sistemu Windows'.", "install_devices_windows_list_1": "Odprite 'Nadzorno ploščo' prek menija 'Začetek' ali 'Iskanja v sistemu Windows'.",
"install_devices_windows_list_2": "Pojdite v 'Omrežje' in 'Kategorija interneta' in nato v 'Omrežje' in 'Središče za skupno rabo'.", "install_devices_windows_list_2": "Pojdite v 'Omrežje' in 'Kategorija interneta' in nato v 'Omrežje' in 'Središče za skupno rabo'.",
"install_devices_windows_list_3": "Na levi strani zaslona poiščite 'Spremeni nastavitve kartice' in kliknite nanjo.", "install_devices_windows_list_3": "Na levi strani zaslona poiščite 'Spremeni nastavitve kartice' in kliknite nanjo.",
@ -346,6 +361,7 @@
"form_enter_id": "Vnesi identifikatorja", "form_enter_id": "Vnesi identifikatorja",
"form_add_id": "Dodaj identifikatorja", "form_add_id": "Dodaj identifikatorja",
"form_client_name": "Vnesite ime odjemalca", "form_client_name": "Vnesite ime odjemalca",
"name": "Ime",
"client_global_settings": "Uporabi splošne nastavitve", "client_global_settings": "Uporabi splošne nastavitve",
"client_deleted": "Odjemalec \"{{key}}\" je bil uspešno izbrisan", "client_deleted": "Odjemalec \"{{key}}\" je bil uspešno izbrisan",
"client_added": "Odjemalec \"{{key}}\" je bil uspešno dodan", "client_added": "Odjemalec \"{{key}}\" je bil uspešno dodan",
@ -381,7 +397,7 @@
"setup_dns_privacy_other_2": "<0>dnsproxy</0> podpira vse znane varne protokole DNS.", "setup_dns_privacy_other_2": "<0>dnsproxy</0> podpira vse znane varne protokole DNS.",
"setup_dns_privacy_other_3": "<0>dnscrypt-proxy</0> podpira <1>DNS-prek-HTTPS</1>.", "setup_dns_privacy_other_3": "<0>dnscrypt-proxy</0> podpira <1>DNS-prek-HTTPS</1>.",
"setup_dns_privacy_other_4": "<0>Mozilla Firefox</0> podpira <1>DNS-prek-HTTPS</1>.", "setup_dns_privacy_other_4": "<0>Mozilla Firefox</0> podpira <1>DNS-prek-HTTPS</1>.",
"setup_dns_privacy_other_5": "Več izvedb boste najdli <0>tukaj</0> in <1>tukaj</1>.", "setup_dns_privacy_other_5": "Našli boste več izvedb <0>tukaj</0> in <1>tukaj</1>.",
"setup_dns_notice": "Za uporabo <1>DNS-prek-HTTPS</1> ali <1>DNS-prek-TLS</1>, morate <0>konfigurirati šifriranje</0> v nastavitvah AdGuard Home.", "setup_dns_notice": "Za uporabo <1>DNS-prek-HTTPS</1> ali <1>DNS-prek-TLS</1>, morate <0>konfigurirati šifriranje</0> v nastavitvah AdGuard Home.",
"rewrite_added": "Uspešno je dodano DNS prepisovanje za \"{{key}}\"", "rewrite_added": "Uspešno je dodano DNS prepisovanje za \"{{key}}\"",
"rewrite_deleted": "Uspešno je izbrisano DNS prepisovanje za \"{{key}}\"", "rewrite_deleted": "Uspešno je izbrisano DNS prepisovanje za \"{{key}}\"",
@ -445,6 +461,7 @@
"location": "Lokacija", "location": "Lokacija",
"orgname": "Ime organizacije", "orgname": "Ime organizacije",
"netname": "Ime omrežja", "netname": "Ime omrežja",
"network": "Omrežje",
"descr": "Opis", "descr": "Opis",
"whois": "Whois", "whois": "Whois",
"filtering_rules_learn_more": "<0>Več o</0> ustvarjanju lastnih seznamov gostiteljev.", "filtering_rules_learn_more": "<0>Več o</0> ustvarjanju lastnih seznamov gostiteljev.",
@ -456,7 +473,7 @@
"disable_ipv6": "Onemogoči IPv6", "disable_ipv6": "Onemogoči IPv6",
"disable_ipv6_desc": "Če je ta funkcija omogočena, bodo vse poizvedbe DNS za naslove IPv6 (vrste AAAA) izpadle.", "disable_ipv6_desc": "Če je ta funkcija omogočena, bodo vse poizvedbe DNS za naslove IPv6 (vrste AAAA) izpadle.",
"fastest_addr": "Najhitrejši IP naslov", "fastest_addr": "Najhitrejši IP naslov",
"fastest_addr_desc": "Poišči vse strežnike DNS in vrni najhitrejši IP naslov med vsemi odgovori", "fastest_addr_desc": "Poizve vse strežnike DNS in vrne najhitrejši IP naslov med vsemi odgovori. To bo upočasnilo poizvedbe DNS, saj moramo čakati na odgovore vseh DNS strežnikov, vendar bo izboljšalo splošno povezljivost.",
"autofix_warning_text": "Če kliknete 'Popravi', bo AdGuardHome konfiguriral vaš sistem za uporabo strežnika AdGuardHome DNS.", "autofix_warning_text": "Če kliknete 'Popravi', bo AdGuardHome konfiguriral vaš sistem za uporabo strežnika AdGuardHome DNS.",
"autofix_warning_list": "To bo izvedlo naslednja opravila: <0>Deaktiviraj sistemski DNSStubListener</0> <0>Nastavi naslov strežnika DNS na 127.0.0.1</0> <0>Zamenjaj cilj simbolične povezave /etc/resolv.conf with /run/systemd/resolve/resolv.conf</0> <0>Zaustavi DNSStubListener (znova naloži storitev systemd-resolved)", "autofix_warning_list": "To bo izvedlo naslednja opravila: <0>Deaktiviraj sistemski DNSStubListener</0> <0>Nastavi naslov strežnika DNS na 127.0.0.1</0> <0>Zamenjaj cilj simbolične povezave /etc/resolv.conf with /run/systemd/resolve/resolv.conf</0> <0>Zaustavi DNSStubListener (znova naloži storitev systemd-resolved)",
"autofix_warning_result": "Kot rezultat, bo vse zahteve DNS iz vašega sistema privzeto obdelal AdGuard Home.", "autofix_warning_result": "Kot rezultat, bo vse zahteve DNS iz vašega sistema privzeto obdelal AdGuard Home.",
@ -489,5 +506,19 @@
"list_updated": "{{count}} posodobljen seznam", "list_updated": "{{count}} posodobljen seznam",
"list_updated_plural": "{{count}} posodobljenih seznamov", "list_updated_plural": "{{count}} posodobljenih seznamov",
"dnssec_enable": "Omogoči DNSSEC", "dnssec_enable": "Omogoči DNSSEC",
"dnssec_enable_desc": "V odhodnih poizvedbah DNS nastavite zastavico DNSSEC in preverite rezultat (zahtevan je omogočen reševalnik DNSSEC)" "dnssec_enable_desc": "V odhodnih poizvedbah DNS nastavite zastavico DNSSEC in preverite rezultat (zahtevan je omogočen reševalnik DNSSEC)",
"validated_with_dnssec": "Potrjen z DNSSEC",
"show_all_responses": "Vsi odgovori",
"show_blocked_responses": "Onemogočen",
"show_whitelisted_responses": "Na seznamu dovoljenih",
"show_processed_responses": "Obdelan",
"blocked_safebrowsing": "Onemogočeno z 'Varnim brskanjem'",
"blocked_adult_websites": "Onemogočeno spletnih strani za odrasle",
"blocked_threats": "Onemogočeno groženj",
"allowed": "Dovoljeno",
"filtered": "Filtrirano",
"rewritten": "Znova napisano",
"safe_search": "Varno iskanje",
"blocklist": "Seznam nedovoljenih",
"milliseconds_abbreviation": "ms"
} }

View File

@ -58,7 +58,7 @@
"query_log": "Dnevnik zahteva", "query_log": "Dnevnik zahteva",
"faq": "ČPP", "faq": "ČPP",
"version": "Verzija", "version": "Verzija",
"address": "adresa", "address": "Adresa",
"on": "Uključeno", "on": "Uključeno",
"off": "Isključeno", "off": "Isključeno",
"copyright": "Autorska prava", "copyright": "Autorska prava",
@ -167,9 +167,10 @@
"updated_upstream_dns_toast": "Ažurirani upstream DNS serveri", "updated_upstream_dns_toast": "Ažurirani upstream DNS serveri",
"dns_test_ok_toast": "Dati DNS serveri rade ispravno", "dns_test_ok_toast": "Dati DNS serveri rade ispravno",
"dns_test_not_ok_toast": "Server \"{{key}}\": se ne može koristiti. Proverite da li ste ga ispravno uneli", "dns_test_not_ok_toast": "Server \"{{key}}\": se ne može koristiti. Proverite da li ste ga ispravno uneli",
"unblock_btn": "Odblokiraj", "unblock": "Odblokiraj",
"block_btn": "Blokiraj", "block": "Blokiraj",
"time_table_header": "Vreme", "time_table_header": "Vreme",
"date": "Datum",
"domain_name_table_header": "Ime domena", "domain_name_table_header": "Ime domena",
"type_table_header": "Vrsta", "type_table_header": "Vrsta",
"response_table_header": "Odgovor", "response_table_header": "Odgovor",
@ -478,5 +479,8 @@
"install_static_configure": "Otkrili smo da se koristi dinamička IP adresa — <0>{{ip}}</0>. Želite li da je koristite kao vašu statičku adresu?", "install_static_configure": "Otkrili smo da se koristi dinamička IP adresa — <0>{{ip}}</0>. Želite li da je koristite kao vašu statičku adresu?",
"confirm_static_ip": "AdGuard Home će konfigurisati {{ip}} da bude vaša statička IP adresa. Želite li da nastavite?", "confirm_static_ip": "AdGuard Home će konfigurisati {{ip}} da bude vaša statička IP adresa. Želite li da nastavite?",
"list_updated": "{{count}} lista ažurirana", "list_updated": "{{count}} lista ažurirana",
"list_updated_plural": "{{count}} lista ažurirano" "list_updated_plural": "{{count}} lista ažurirano",
"show_blocked_responses": "Blokirano",
"blocked_adult_websites": "Blokiraj sajtove za odrasle",
"blocked_threats": "Blokiranih pretnji"
} }

View File

@ -53,7 +53,7 @@
"query_log": "Förfrågningslogg", "query_log": "Förfrågningslogg",
"faq": "FAQ", "faq": "FAQ",
"version": "version", "version": "version",
"address": "adress", "address": "Adress",
"on": "PÅ", "on": "PÅ",
"off": "AV", "off": "AV",
"copyright": "Copyright", "copyright": "Copyright",
@ -143,9 +143,10 @@
"updated_upstream_dns_toast": "Uppdaterade uppströms-dns-servrar", "updated_upstream_dns_toast": "Uppdaterade uppströms-dns-servrar",
"dns_test_ok_toast": "Angivna DNS servrar fungerar korrekt", "dns_test_ok_toast": "Angivna DNS servrar fungerar korrekt",
"dns_test_not_ok_toast": "Server \"{{key}}\": kunde inte användas. Var snäll och kolla att du skrivit in rätt", "dns_test_not_ok_toast": "Server \"{{key}}\": kunde inte användas. Var snäll och kolla att du skrivit in rätt",
"unblock_btn": "Avblockera", "unblock": "Avblockera",
"block_btn": "Blockera", "block": "Blockera",
"time_table_header": "Tid", "time_table_header": "Tid",
"date": "Datum",
"domain_name_table_header": "Domännamn", "domain_name_table_header": "Domännamn",
"type_table_header": "Typ", "type_table_header": "Typ",
"response_table_header": "Svar", "response_table_header": "Svar",
@ -356,5 +357,8 @@
"netname": "Nätverksnamn", "netname": "Nätverksnamn",
"descr": "Beskrivning", "descr": "Beskrivning",
"whois": "Whois", "whois": "Whois",
"filtering_rules_learn_more": "<0>Mer info</0> om att skapa dina egna blockeringslistor för värdar." "filtering_rules_learn_more": "<0>Mer info</0> om att skapa dina egna blockeringslistor för värdar.",
"show_blocked_responses": "Blockerade",
"blocked_adult_websites": "Blockerade vuxensajter",
"blocked_threats": "Blockerade hot"
} }

View File

@ -149,8 +149,8 @@
"updated_upstream_dns_toast": "อัปเดตเซิร์ฟเวอร์ DNS ต้นทาง", "updated_upstream_dns_toast": "อัปเดตเซิร์ฟเวอร์ DNS ต้นทาง",
"dns_test_ok_toast": "เซิร์ฟเวอร์ DNS ที่ระบุทำงานอย่างถูกต้อง", "dns_test_ok_toast": "เซิร์ฟเวอร์ DNS ที่ระบุทำงานอย่างถูกต้อง",
"dns_test_not_ok_toast": "เซิร์ฟเวอร์ \"{{key}}\": ไม่สามารถใช้งานได้ โปรดตรวจสอบว่าคุณเขียนถูกต้อง", "dns_test_not_ok_toast": "เซิร์ฟเวอร์ \"{{key}}\": ไม่สามารถใช้งานได้ โปรดตรวจสอบว่าคุณเขียนถูกต้อง",
"unblock_btn": "เลิกปิดกั้น", "unblock": "เลิกปิดกั้น",
"block_btn": "ปิดกั้น", "block": "ปิดกั้น",
"time_table_header": "เวลา", "time_table_header": "เวลา",
"domain_name_table_header": "ชื่อโดเมน", "domain_name_table_header": "ชื่อโดเมน",
"type_table_header": "ประเภท", "type_table_header": "ประเภท",
@ -394,6 +394,7 @@
"location": "ตำแหน่ง", "location": "ตำแหน่ง",
"orgname": "ชื่อองค์กร", "orgname": "ชื่อองค์กร",
"netname": "ชื่อเครือข่าย", "netname": "ชื่อเครือข่าย",
"network": "เครือข่าย",
"descr": "คำอธิบาย", "descr": "คำอธิบาย",
"whois": "Whois", "whois": "Whois",
"filtering_rules_learn_more": "<0>เรียนรู้เพิ่มเติม</0> เกี่ยวกับการสร้างรายการปิดกั้นโฮสต์ของคุณเอง", "filtering_rules_learn_more": "<0>เรียนรู้เพิ่มเติม</0> เกี่ยวกับการสร้างรายการปิดกั้นโฮสต์ของคุณเอง",
@ -411,5 +412,6 @@
"tags_desc": "คุณสามารถเลือกแท็กที่สอดคล้องกับลูกค้า แท็กสามารถรวมอยู่ในกฎการกรองและอนุญาตให้คุณใช้งานได้อย่างถูกต้องมากขึ้น <0>เรียนรู้เพิ่มเติม</0>", "tags_desc": "คุณสามารถเลือกแท็กที่สอดคล้องกับลูกค้า แท็กสามารถรวมอยู่ในกฎการกรองและอนุญาตให้คุณใช้งานได้อย่างถูกต้องมากขึ้น <0>เรียนรู้เพิ่มเติม</0>",
"form_select_tags": "เลือกแท็กเครื่อง", "form_select_tags": "เลือกแท็กเครื่อง",
"check_title": "ตรวจสอบการกรอง", "check_title": "ตรวจสอบการกรอง",
"check_desc": "ตรวจสอบว่าชื่อโฮสต์ถูกกรอง" "check_desc": "ตรวจสอบว่าชื่อโฮสต์ถูกกรอง",
"form_enter_host": "ป้อนชื่อโฮสต์"
} }

View File

@ -59,7 +59,7 @@
"query_log": "Sorgu Günlüğü", "query_log": "Sorgu Günlüğü",
"faq": "SSS", "faq": "SSS",
"version": "Sürüm", "version": "Sürüm",
"address": "adres", "address": "Adres",
"on": "AÇIK", "on": "AÇIK",
"off": "KAPALI", "off": "KAPALI",
"copyright": "Tüm hakları saklıdır", "copyright": "Tüm hakları saklıdır",
@ -170,9 +170,10 @@
"updated_upstream_dns_toast": "Üst DNS sunucuları güncellendi", "updated_upstream_dns_toast": "Üst DNS sunucuları güncellendi",
"dns_test_ok_toast": "Belirtilmiş DNS sunucuları düzgün çalışıyor", "dns_test_ok_toast": "Belirtilmiş DNS sunucuları düzgün çalışıyor",
"dns_test_not_ok_toast": "Sunucu \"{{key}}\": kullanılamıyor, lütfen doğru yazdığınızdan emin olun", "dns_test_not_ok_toast": "Sunucu \"{{key}}\": kullanılamıyor, lütfen doğru yazdığınızdan emin olun",
"unblock_btn": "Engeli kaldır", "unblock": "Engeli kaldır",
"block_btn": "Engelle", "block": "Engelle",
"time_table_header": "Saat", "time_table_header": "Saat",
"date": "Tarih",
"domain_name_table_header": "Alan adı", "domain_name_table_header": "Alan adı",
"type_table_header": "Tür", "type_table_header": "Tür",
"response_table_header": "Yanıt", "response_table_header": "Yanıt",
@ -257,7 +258,7 @@
"install_devices_router_list_1": "Yönlendiricinizin ayarlarına girin. Genelde internet tarayıcınızdan bir URL vasıtasıyla erişebilirsiniz (http://192.168.0.1/ veya http://192.168.1.1/ gibi). Sizden şifre girmenizi isteyebilir. Hatırlamıyorsanız yönlendiricinizin arkasındaki 'reset' tuşuna basılı tutup fabrika ayarlarına sıfırlayabilirsiniz. Bazı yönlendiriciler belirli uygulamalarla çalışır, bu durumda bilgisayarınıza/telefonunuza kurulması gerekir.", "install_devices_router_list_1": "Yönlendiricinizin ayarlarına girin. Genelde internet tarayıcınızdan bir URL vasıtasıyla erişebilirsiniz (http://192.168.0.1/ veya http://192.168.1.1/ gibi). Sizden şifre girmenizi isteyebilir. Hatırlamıyorsanız yönlendiricinizin arkasındaki 'reset' tuşuna basılı tutup fabrika ayarlarına sıfırlayabilirsiniz. Bazı yönlendiriciler belirli uygulamalarla çalışır, bu durumda bilgisayarınıza/telefonunuza kurulması gerekir.",
"install_devices_router_list_2": "DHCP/DNS ayarlarını bulun. DNS satırlarını arayın, genelde iki veya üç tanedir, üç rakam girilebilen dört ayrı grup içeren satırdır.", "install_devices_router_list_2": "DHCP/DNS ayarlarını bulun. DNS satırlarını arayın, genelde iki veya üç tanedir, üç rakam girilebilen dört ayrı grup içeren satırdır.",
"install_devices_router_list_3": "AdGuard Home sunucusunun adresini o kısma yazın.", "install_devices_router_list_3": "AdGuard Home sunucusunun adresini o kısma yazın.",
"install_devices_router_list_4": "Bazı yönlendirici tiplerinde özel bir DNS sunucusu ayarlayamazsınız. Bu durumda AdGuard Home'u bir DHCP sunucu olarak ayarlamanız yardımcı olabilir. Aksi halde, yönlendirici modeliniz için DNS sunucularını elle nasıl özelleştirebileceğinizi aramalısınız.", "install_devices_router_list_4": "Bazı yönlendirici tiplerinde özel bir DNS sunucusu ayarlayamazsınız. Bu durumda AdGuard Home'u bir DHCP sunucu olarak ayarlamanız yardımcı olabilir. Aksi halde, yönlendirici modeliniz için <0>DNS sunucularını</0> elle nasıl özelleştirebileceğinizi aramalısınız.",
"install_devices_windows_list_1": "Başlat menüsünden veya Windows aramasıyla Denetim Masası'na girin.", "install_devices_windows_list_1": "Başlat menüsünden veya Windows aramasıyla Denetim Masası'na girin.",
"install_devices_windows_list_2": "Ağ ve Internet kategorisine girin, sonra Ağ ve Paylaşım Merkezi'ne girin.", "install_devices_windows_list_2": "Ağ ve Internet kategorisine girin, sonra Ağ ve Paylaşım Merkezi'ne girin.",
"install_devices_windows_list_3": "Sol taraftaki Bağdaştırıcı ayarlarını değiştir ayarını bulun ve ona tıklayın.", "install_devices_windows_list_3": "Sol taraftaki Bağdaştırıcı ayarlarını değiştir ayarını bulun ve ona tıklayın.",
@ -489,5 +490,9 @@
"list_updated": "{{count}} liste güncellendi", "list_updated": "{{count}} liste güncellendi",
"list_updated_plural": "{{count}} liste güncellendi", "list_updated_plural": "{{count}} liste güncellendi",
"dnssec_enable": "DNSSEC'i etkinleştir", "dnssec_enable": "DNSSEC'i etkinleştir",
"dnssec_enable_desc": "DNSSEC'i giden DNS sorguları için etkinleştir ve sonucu kontrol et (DNSSEC-etkin sorgulama gerekli)" "dnssec_enable_desc": "DNSSEC'i giden DNS sorguları için etkinleştir ve sonucu kontrol et (DNSSEC-etkin sorgulama gerekli)",
"show_blocked_responses": "Engellendi",
"blocked_adult_websites": "Yetişkin içerikli site engellendi",
"blocked_threats": "Engellenen Tehditler",
"blocklist": "Engellenen listesi"
} }

View File

@ -2,6 +2,7 @@
"client_settings": "Cài đặt máy khách", "client_settings": "Cài đặt máy khách",
"example_upstream_reserved": "bạn có thể chỉ định DNS ngược tuyến <0>cho một tên miền cụ thể(hoặc nhiều)</0>", "example_upstream_reserved": "bạn có thể chỉ định DNS ngược tuyến <0>cho một tên miền cụ thể(hoặc nhiều)</0>",
"upstream_parallel": "Sử dụng truy vấn song song để tăng tốc độ giải quyết bằng cách truy vấn đồng thời tất cả các máy chủ ngược tuyến", "upstream_parallel": "Sử dụng truy vấn song song để tăng tốc độ giải quyết bằng cách truy vấn đồng thời tất cả các máy chủ ngược tuyến",
"parallel_requests": "Yêu cầu song song",
"bootstrap_dns": "Máy chủ DNS Bootstrap", "bootstrap_dns": "Máy chủ DNS Bootstrap",
"bootstrap_dns_desc": "Máy chủ DNS Bootstrap được sử dụng để phân giải địa chỉ IP của bộ phân giải DoH/DoT mà bạn chỉ định là ngược tuyến.", "bootstrap_dns_desc": "Máy chủ DNS Bootstrap được sử dụng để phân giải địa chỉ IP của bộ phân giải DoH/DoT mà bạn chỉ định là ngược tuyến.",
"check_dhcp_servers": "Kiểm tra máy chủ DHCP", "check_dhcp_servers": "Kiểm tra máy chủ DHCP",
@ -36,6 +37,7 @@
"dhcp_interface_select": "Chọn một card mạng", "dhcp_interface_select": "Chọn một card mạng",
"dhcp_hardware_address": "Địa chỉ phần cứng", "dhcp_hardware_address": "Địa chỉ phần cứng",
"dhcp_ip_addresses": "Các địa chỉ IP", "dhcp_ip_addresses": "Các địa chỉ IP",
"ip": "IP",
"dhcp_table_hostname": "Tên máy chủ", "dhcp_table_hostname": "Tên máy chủ",
"dhcp_table_expires": "Hết hạn", "dhcp_table_expires": "Hết hạn",
"dhcp_warning": "Nếu bạn vẫn muốn bật máy chủ DHCP, hãy đảm bảo rằng không có máy chủ DHCP hoạt động nào khác trong mạng của bạn. Nếu không, nó có thể phá vỡ Internet cho các thiết bị được kết nối!", "dhcp_warning": "Nếu bạn vẫn muốn bật máy chủ DHCP, hãy đảm bảo rằng không có máy chủ DHCP hoạt động nào khác trong mạng của bạn. Nếu không, nó có thể phá vỡ Internet cho các thiết bị được kết nối!",
@ -48,9 +50,11 @@
"dhcp_static_leases_not_found": "Không tìm thấy DHCP cho thuê tĩnh", "dhcp_static_leases_not_found": "Không tìm thấy DHCP cho thuê tĩnh",
"dhcp_add_static_lease": "Thêm thuê tĩnh", "dhcp_add_static_lease": "Thêm thuê tĩnh",
"dhcp_reset": "Bạn có chắc chắn muốn đặt lại thiết lập DHCP?", "dhcp_reset": "Bạn có chắc chắn muốn đặt lại thiết lập DHCP?",
"country": "Quốc gia",
"delete_confirm": "Bạn có chắc chắn muốn xóa \"{{key}}\" không?", "delete_confirm": "Bạn có chắc chắn muốn xóa \"{{key}}\" không?",
"form_enter_hostname": "Nhập tên máy chủ", "form_enter_hostname": "Nhập tên máy chủ",
"error_details": "Chi tiết lỗi", "error_details": "Chi tiết lỗi",
"details": "Chi tiết",
"back": "Quay lại", "back": "Quay lại",
"dashboard": "Tổng quan", "dashboard": "Tổng quan",
"settings": "Cài đặt", "settings": "Cài đặt",
@ -121,6 +125,7 @@
"enabled_save_search_toast": "Đã bật tìm kiếm an toàn", "enabled_save_search_toast": "Đã bật tìm kiếm an toàn",
"enabled_table_header": "Kích hoạt", "enabled_table_header": "Kích hoạt",
"name_table_header": "Tên", "name_table_header": "Tên",
"list_url_table_header": "Danh sách liên kết",
"rules_count_table_header": "Số quy tắc", "rules_count_table_header": "Số quy tắc",
"last_time_updated_table_header": "Cập nhật cuối", "last_time_updated_table_header": "Cập nhật cuối",
"actions_table_header": "Thao tác", "actions_table_header": "Thao tác",
@ -148,10 +153,11 @@
"updated_upstream_dns_toast": "Đã cập nhật máy chủ DNS tìm kiếm", "updated_upstream_dns_toast": "Đã cập nhật máy chủ DNS tìm kiếm",
"dns_test_ok_toast": "Máy chủ DNS có thể sử dụng", "dns_test_ok_toast": "Máy chủ DNS có thể sử dụng",
"dns_test_not_ok_toast": "Máy chủ \"\"': không thể sử dụng, vui lòng kiểm tra lại", "dns_test_not_ok_toast": "Máy chủ \"\"': không thể sử dụng, vui lòng kiểm tra lại",
"unblock_btn": "Bỏ chặn", "unblock": "Bỏ chặn",
"block_btn": "Chặn", "block": "Chặn",
"time_table_header": "Thời gian", "time_table_header": "Thời gian",
"domain_name_table_header": "Tên miền", "domain_name_table_header": "Tên miền",
"domain_or_client": "Tên miền hoặc khách hàng",
"type_table_header": "Loại", "type_table_header": "Loại",
"response_table_header": "Phản hồi", "response_table_header": "Phản hồi",
"client_table_header": "Người dùng cuối", "client_table_header": "Người dùng cuối",
@ -190,6 +196,9 @@
"blocking_ipv6": "Chặn IPv6", "blocking_ipv6": "Chặn IPv6",
"form_enter_rate_limit": "Nhập giới hạn yêu cầu", "form_enter_rate_limit": "Nhập giới hạn yêu cầu",
"rate_limit": "Giới hạn yêu cầu", "rate_limit": "Giới hạn yêu cầu",
"edns_cs_desc": "Nếu được bật, AdGuard Home sẽ gửi các mạng con của khách hàng đến các máy chủ DNS.",
"rate_limit_desc": "Số lượng yêu cầu mỗi giây mà một khách hàng được phép thực hiện (0: không giới hạn)",
"blocking_ipv4_desc": "Địa chỉ IP được trả lại cho một yêu cầu A bị chặn",
"source_label": "Nguồn", "source_label": "Nguồn",
"found_in_known_domain_db": "Tìm thấy trong cơ sở dữ liệu tên miền", "found_in_known_domain_db": "Tìm thấy trong cơ sở dữ liệu tên miền",
"category_label": "Thể loại", "category_label": "Thể loại",
@ -413,5 +422,12 @@
"blocked_by_response": "Chặn bởi CNAME hoặc địa IP ở phản hồi", "blocked_by_response": "Chặn bởi CNAME hoặc địa IP ở phản hồi",
"try_again": "Hãy thử lại", "try_again": "Hãy thử lại",
"dnssec_enable": "Bật DNSSEC", "dnssec_enable": "Bật DNSSEC",
"dnssec_enable_desc": "Cắm mốc DNSSEC trong các truy vấn DNS sắp tới và kiểm tra kết quả (buộc phải có trình sửa lỗi hỗ trợ DNSSEC)" "dnssec_enable_desc": "Cắm mốc DNSSEC trong các truy vấn DNS sắp tới và kiểm tra kết quả (buộc phải có trình sửa lỗi hỗ trợ DNSSEC)",
"show_blocked_responses": "Bị chặn",
"show_whitelisted_responses": "Đã thêm vào danh sách cho phép",
"show_processed_responses": "Đã xử lý",
"blocked_adult_websites": "Website người lớn đã chặn",
"blocked_threats": "Mối nguy hiểm đã chặn",
"allowed": "Được phép",
"safe_search": "Tìm kiếm an toàn"
} }

View File

@ -170,9 +170,10 @@
"updated_upstream_dns_toast": "上游 DNS 已更新", "updated_upstream_dns_toast": "上游 DNS 已更新",
"dns_test_ok_toast": "指定的 DNS 服务器现已正常运行", "dns_test_ok_toast": "指定的 DNS 服务器现已正常运行",
"dns_test_not_ok_toast": "服务器 \"{{key}}\":无法使用,请检查你输入的是否正确", "dns_test_not_ok_toast": "服务器 \"{{key}}\":无法使用,请检查你输入的是否正确",
"unblock_btn": "放行", "unblock": "放行",
"block_btn": "拦截", "block": "拦截",
"time_table_header": "时间", "time_table_header": "时间",
"date": "日起",
"domain_name_table_header": "域名", "domain_name_table_header": "域名",
"type_table_header": "类型", "type_table_header": "类型",
"response_table_header": "响应", "response_table_header": "响应",
@ -488,5 +489,10 @@
"list_updated": "{{count}} 列表已更新", "list_updated": "{{count}} 列表已更新",
"list_updated_plural": "{{count}} 条列表已更新", "list_updated_plural": "{{count}} 条列表已更新",
"dnssec_enable": "启用DNSSEC", "dnssec_enable": "启用DNSSEC",
"dnssec_enable_desc": "在发出DNS查询中设置DNSSEC标志并检查结果(需要启用DNSSEC的解析器)" "dnssec_enable_desc": "在发出DNS查询中设置DNSSEC标志并检查结果(需要启用DNSSEC的解析器)",
"show_blocked_responses": "已拦截",
"blocked_safebrowsing": "安全浏览阻止项目",
"blocked_adult_websites": "拦截的成人网站",
"blocked_threats": "拦截的威胁",
"blocklist": "拦截列表"
} }

View File

@ -1,8 +1,10 @@
{ {
"client_settings": "用戶端設定", "client_settings": "用戶端設定",
"example_upstream_reserved": "您可明確指定<0>用於特定的網域</0>之 DNS 上游", "example_upstream_reserved": "您可明確指定<0>用於特定的網域</0>之 DNS 上游",
"upstream_parallel": "透過同時地查詢所有上游的伺服器,使用並行的請求以加速解析", "upstream_parallel": "透過同時地查詢所有上游的伺服器,使用並行的查詢以加速解析網域",
"parallel_requests": "並行的請求", "parallel_requests": "並行的請求",
"load_balancing": "負載平衡",
"load_balancing_desc": "每次查詢一個伺服器。AdGuard Home 將使用加權隨機的演算法來選擇伺服器,以便最快的伺服器將被更常使用。",
"bootstrap_dns": "自我啟動BootstrapDNS 伺服器", "bootstrap_dns": "自我啟動BootstrapDNS 伺服器",
"bootstrap_dns_desc": "自我啟動BootstrapDNS 伺服器被用於解析您明確指定作為上游的 DoH/DoT 解析器之 IP 位址。", "bootstrap_dns_desc": "自我啟動BootstrapDNS 伺服器被用於解析您明確指定作為上游的 DoH/DoT 解析器之 IP 位址。",
"check_dhcp_servers": "檢查動態主機設定協定DHCP伺服器", "check_dhcp_servers": "檢查動態主機設定協定DHCP伺服器",
@ -37,6 +39,7 @@
"dhcp_interface_select": "選擇動態主機設定協定DHCP介面", "dhcp_interface_select": "選擇動態主機設定協定DHCP介面",
"dhcp_hardware_address": "硬體位址", "dhcp_hardware_address": "硬體位址",
"dhcp_ip_addresses": "IP 位址", "dhcp_ip_addresses": "IP 位址",
"ip": "IP",
"dhcp_table_hostname": "主機名稱", "dhcp_table_hostname": "主機名稱",
"dhcp_table_expires": "到期", "dhcp_table_expires": "到期",
"dhcp_warning": "如果您無論如何想要啟用動態主機設定協定DHCP伺服器確保在您的網路中無其它現行的 DHCP 伺服器。否則,它可能會破壞供已連線的裝置之網際網路!", "dhcp_warning": "如果您無論如何想要啟用動態主機設定協定DHCP伺服器確保在您的網路中無其它現行的 DHCP 伺服器。否則,它可能會破壞供已連線的裝置之網際網路!",
@ -49,14 +52,19 @@
"dhcp_static_leases_not_found": "無已發現之動態主機設定協定DHCP靜態租約", "dhcp_static_leases_not_found": "無已發現之動態主機設定協定DHCP靜態租約",
"dhcp_add_static_lease": "增加靜態租約", "dhcp_add_static_lease": "增加靜態租約",
"dhcp_reset": "您確定您想要重置動態主機設定協定DHCP配置嗎", "dhcp_reset": "您確定您想要重置動態主機設定協定DHCP配置嗎",
"country": "國家",
"delete_confirm": "您確定您想要刪除 \"{{key}}\" 嗎?", "delete_confirm": "您確定您想要刪除 \"{{key}}\" 嗎?",
"form_enter_hostname": "輸入主機名稱", "form_enter_hostname": "輸入主機名稱",
"error_details": "錯誤細節", "error_details": "錯誤細節",
"client_details": "用戶端細節",
"details": "細節",
"back": "返回", "back": "返回",
"dashboard": "儀表板", "dashboard": "儀表板",
"settings": "設定", "settings": "設定",
"filters": "過濾器", "filters": "過濾器",
"filter": "過濾器",
"query_log": "查詢記錄", "query_log": "查詢記錄",
"empty_log": "查詢記錄為空",
"faq": "常見問答集", "faq": "常見問答集",
"version": "版本", "version": "版本",
"address": "位址", "address": "位址",
@ -88,7 +96,7 @@
"number_of_dns_query_days": "在最近的 {{count}} 日內已處理的 DNS 查詢之數量", "number_of_dns_query_days": "在最近的 {{count}} 日內已處理的 DNS 查詢之數量",
"number_of_dns_query_days_plural": "在最近的 {{count}} 日內已處理的 DNS 查詢之數量", "number_of_dns_query_days_plural": "在最近的 {{count}} 日內已處理的 DNS 查詢之數量",
"number_of_dns_query_24_hours": "在最近的 24 小時內已處理的 DNS 查詢之數量", "number_of_dns_query_24_hours": "在最近的 24 小時內已處理的 DNS 查詢之數量",
"number_of_dns_query_blocked_24_hours": "被廣告封鎖過濾器和主機封鎖清單封鎖的 DNS 請求之數量", "number_of_dns_query_blocked_24_hours": "被廣告封鎖過濾器和主機封鎖清單阻擋的 DNS 請求之數量",
"number_of_dns_query_blocked_24_hours_by_sec": "被 AdGuard 瀏覽安全模組封鎖的 DNS 請求之數量", "number_of_dns_query_blocked_24_hours_by_sec": "被 AdGuard 瀏覽安全模組封鎖的 DNS 請求之數量",
"number_of_dns_query_blocked_24_hours_adult": "已封鎖的成人網站之數量", "number_of_dns_query_blocked_24_hours_adult": "已封鎖的成人網站之數量",
"enforced_save_search": "已強制執行的安全搜尋", "enforced_save_search": "已強制執行的安全搜尋",
@ -108,7 +116,7 @@
"dns_settings": "DNS 設定", "dns_settings": "DNS 設定",
"dns_blocklists": "DNS 封鎖清單", "dns_blocklists": "DNS 封鎖清單",
"dns_allowlists": "DNS 允許清單", "dns_allowlists": "DNS 允許清單",
"dns_blocklists_desc": "AdGuard Home 將封鎖與封鎖清單相符的網域。", "dns_blocklists_desc": "AdGuard Home 將阻擋與封鎖清單相符的網域。",
"dns_allowlists_desc": "即使來自 DNS 允許清單的網域在任何的封鎖清單中,它們將被允許。", "dns_allowlists_desc": "即使來自 DNS 允許清單的網域在任何的封鎖清單中,它們將被允許。",
"custom_filtering_rules": "自訂的過濾規則", "custom_filtering_rules": "自訂的過濾規則",
"encryption_settings": "加密設定", "encryption_settings": "加密設定",
@ -132,8 +140,10 @@
"rules_count_table_header": "規則總數", "rules_count_table_header": "規則總數",
"last_time_updated_table_header": "最近的更新時間", "last_time_updated_table_header": "最近的更新時間",
"actions_table_header": "動作", "actions_table_header": "動作",
"request_table_header": "請求",
"edit_table_action": "編輯", "edit_table_action": "編輯",
"delete_table_action": "刪除", "delete_table_action": "刪除",
"elapsed": "已經過",
"filters_and_hosts_hint": "AdGuard Home 懂得基本的廣告封鎖規則和主機檔案語法。", "filters_and_hosts_hint": "AdGuard Home 懂得基本的廣告封鎖規則和主機檔案語法。",
"no_blocklist_added": "無已加入的封鎖清單", "no_blocklist_added": "無已加入的封鎖清單",
"no_whitelist_added": "無已加入的允許清單", "no_whitelist_added": "無已加入的允許清單",
@ -170,10 +180,12 @@
"updated_upstream_dns_toast": "已更新上游的 DNS 伺服器", "updated_upstream_dns_toast": "已更新上游的 DNS 伺服器",
"dns_test_ok_toast": "已明確指定的 DNS 伺服器正在正確地運作", "dns_test_ok_toast": "已明確指定的 DNS 伺服器正在正確地運作",
"dns_test_not_ok_toast": "伺服器 \"{{key}}\":無法被使用,請檢查您已正確地填寫它", "dns_test_not_ok_toast": "伺服器 \"{{key}}\":無法被使用,請檢查您已正確地填寫它",
"unblock_btn": "解除封鎖", "unblock": "解除封鎖",
"block_btn": "封鎖", "block": "封鎖",
"time_table_header": "時間", "time_table_header": "時間",
"date": "日期",
"domain_name_table_header": "域名", "domain_name_table_header": "域名",
"domain_or_client": "網域或用戶端",
"type_table_header": "類型", "type_table_header": "類型",
"response_table_header": "回應", "response_table_header": "回應",
"client_table_header": "用戶端", "client_table_header": "用戶端",
@ -211,6 +223,8 @@
"custom_ip": "自訂的 IP", "custom_ip": "自訂的 IP",
"blocking_ipv4": "封鎖 IPv4", "blocking_ipv4": "封鎖 IPv4",
"blocking_ipv6": "封鎖 IPv6", "blocking_ipv6": "封鎖 IPv6",
"dns_over_https": "DNS-over-HTTPS",
"dns_over_tls": "DNS-over-TLS",
"form_enter_rate_limit": "輸入速率限制", "form_enter_rate_limit": "輸入速率限制",
"rate_limit": "速率限制", "rate_limit": "速率限制",
"edns_enable": "啟用對於 DNS 的擴充機制EDNS用戶端子網路", "edns_enable": "啟用對於 DNS 的擴充機制EDNS用戶端子網路",
@ -229,6 +243,7 @@
"rule_label": "規則", "rule_label": "規則",
"list_label": "清單", "list_label": "清單",
"unknown_filter": "未知的過濾器 {{filterId}}", "unknown_filter": "未知的過濾器 {{filterId}}",
"known_tracker": "已知的追蹤器",
"install_welcome_title": "歡迎至 AdGuard Home", "install_welcome_title": "歡迎至 AdGuard Home",
"install_welcome_desc": "AdGuard Home 是全網路範圍廣告和追蹤器封鎖的 DNS 伺服器。它的目的為讓您控制您的整個網路和所有您的裝置,且不需要使用用戶端程式。", "install_welcome_desc": "AdGuard Home 是全網路範圍廣告和追蹤器封鎖的 DNS 伺服器。它的目的為讓您控制您的整個網路和所有您的裝置,且不需要使用用戶端程式。",
"install_settings_title": "管理員網路介面", "install_settings_title": "管理員網路介面",
@ -257,7 +272,7 @@
"install_devices_router_list_1": "開啟關於您的路由器之偏好設定。通常地,您可透過網址(如 http://192.168.0.1/ 或 http://192.168.1.1/)從您的瀏覽器中存取它。您可能被要求輸入該密碼。如果您不記得它,您經常可透過按壓於該路由器本身上的按鈕來重置密碼。某些路由器需要特定的應用程式,既然如此其應已被安裝於您的電腦/手機上。", "install_devices_router_list_1": "開啟關於您的路由器之偏好設定。通常地,您可透過網址(如 http://192.168.0.1/ 或 http://192.168.1.1/)從您的瀏覽器中存取它。您可能被要求輸入該密碼。如果您不記得它,您經常可透過按壓於該路由器本身上的按鈕來重置密碼。某些路由器需要特定的應用程式,既然如此其應已被安裝於您的電腦/手機上。",
"install_devices_router_list_2": "找到 DHCP/DNS 設定。尋找緊鄰著允許兩組或三組數字集的欄位之 DNS 字母,每組被拆成四個含有一至三個數字的群集。", "install_devices_router_list_2": "找到 DHCP/DNS 設定。尋找緊鄰著允許兩組或三組數字集的欄位之 DNS 字母,每組被拆成四個含有一至三個數字的群集。",
"install_devices_router_list_3": "在那裡輸入您的 AdGuard Home 伺服器位址。", "install_devices_router_list_3": "在那裡輸入您的 AdGuard Home 伺服器位址。",
"install_devices_router_list_4": "您無法於某些類型的路由器上設定自訂的 DNS 伺服器。在這種情況下,如果您設置 AdGuard Home 作為 DHCP 伺服器,其可能有所幫助。否則,您應搜尋有關如何為您的特定路由器型號自訂 DNS 伺服器之用法說明。", "install_devices_router_list_4": "您無法於某些類型的路由器上設定自訂的 DNS 伺服器。在這種情況下,如果您設置 AdGuard Home 作為 <0>DHCP 伺服器</0>,其可能有所幫助。否則,您應搜尋有關如何為您的特定路由器型號自訂 DNS 伺服器之用法說明。",
"install_devices_windows_list_1": "通過開始功能表或 Windows 搜尋,開啟控制台。", "install_devices_windows_list_1": "通過開始功能表或 Windows 搜尋,開啟控制台。",
"install_devices_windows_list_2": "去網路和網際網路類別,然後去網路和共用中心。", "install_devices_windows_list_2": "去網路和網際網路類別,然後去網路和共用中心。",
"install_devices_windows_list_3": "於畫面之左側上找到變更介面卡設定並於它上點擊。", "install_devices_windows_list_3": "於畫面之左側上找到變更介面卡設定並於它上點擊。",
@ -346,6 +361,7 @@
"form_enter_id": "輸入識別碼", "form_enter_id": "輸入識別碼",
"form_add_id": "增加識別碼", "form_add_id": "增加識別碼",
"form_client_name": "輸入用戶端名稱", "form_client_name": "輸入用戶端名稱",
"name": "名稱",
"client_global_settings": "使用全域的設定", "client_global_settings": "使用全域的設定",
"client_deleted": "用戶端 \"{{key}}\" 被成功地刪除", "client_deleted": "用戶端 \"{{key}}\" 被成功地刪除",
"client_added": "用戶端 \"{{key}}\" 被成功地加入", "client_added": "用戶端 \"{{key}}\" 被成功地加入",
@ -445,6 +461,7 @@
"location": "位置", "location": "位置",
"orgname": "組織名稱", "orgname": "組織名稱",
"netname": "網路名稱", "netname": "網路名稱",
"network": "網路",
"descr": "說明", "descr": "說明",
"whois": "Whois", "whois": "Whois",
"filtering_rules_learn_more": "<0>了解更多</0>有關創建您自己的主機hosts清單。", "filtering_rules_learn_more": "<0>了解更多</0>有關創建您自己的主機hosts清單。",
@ -456,7 +473,7 @@
"disable_ipv6": "禁用 IPv6", "disable_ipv6": "禁用 IPv6",
"disable_ipv6_desc": "如果此功能被啟用,所有對於 IPv6 位址(類型 AAAA的 DNS 查詢將被丟棄。", "disable_ipv6_desc": "如果此功能被啟用,所有對於 IPv6 位址(類型 AAAA的 DNS 查詢將被丟棄。",
"fastest_addr": "最快的 IP 位址", "fastest_addr": "最快的 IP 位址",
"fastest_addr_desc": "查詢所有的 DNS 伺服器並返回在所有的回應之中最快的 IP 位址", "fastest_addr_desc": "查詢所有的 DNS 伺服器並返回在所有的回應之中最快的 IP 位址。因為我們必須等待來自所有的 DNS 伺服器之回應,這將使 DNS 查詢變慢,但改善總體的連線。",
"autofix_warning_text": "如果您點擊\"修復\"AdGuard Home 將配置您的系統使用 AdGuard Home DNS 伺服器。", "autofix_warning_text": "如果您點擊\"修復\"AdGuard Home 將配置您的系統使用 AdGuard Home DNS 伺服器。",
"autofix_warning_list": "它將執行這些任務:<0>撤銷系統 DNSStubListener</0> <0>設定 DNS 伺服器位址為 127.0.0.1</0> <0>用 /run/systemd/resolve/resolv.conf 取代 /etc/resolv.conf 的符號連結目標</0> <0>停止 DNSStubListener重新載入 systemd 已解析的服務)</0>", "autofix_warning_list": "它將執行這些任務:<0>撤銷系統 DNSStubListener</0> <0>設定 DNS 伺服器位址為 127.0.0.1</0> <0>用 /run/systemd/resolve/resolv.conf 取代 /etc/resolv.conf 的符號連結目標</0> <0>停止 DNSStubListener重新載入 systemd 已解析的服務)</0>",
"autofix_warning_result": "因此,預設下,來自您的系統之所有的 DNS 請求將被 AdGuard Home 處理。", "autofix_warning_result": "因此,預設下,來自您的系統之所有的 DNS 請求將被 AdGuard Home 處理。",
@ -474,7 +491,7 @@
"check_reason": "原因:{{reason}}", "check_reason": "原因:{{reason}}",
"check_rule": "規則:{{rule}}", "check_rule": "規則:{{rule}}",
"check_service": "服務名稱:{{service}}", "check_service": "服務名稱:{{service}}",
"check_not_found": "未在您的過濾器清單中被找到", "check_not_found": "未在您的過濾器中被找到",
"client_confirm_block": "您確定您想要封鎖該用戶端 \"{{ip}}\" 嗎?", "client_confirm_block": "您確定您想要封鎖該用戶端 \"{{ip}}\" 嗎?",
"client_confirm_unblock": "您確定您想要解除封鎖該用戶端 \"{{ip}}\" 嗎?", "client_confirm_unblock": "您確定您想要解除封鎖該用戶端 \"{{ip}}\" 嗎?",
"client_blocked": "用戶端 \"{{ip}}\" 被成功地封鎖", "client_blocked": "用戶端 \"{{ip}}\" 被成功地封鎖",
@ -489,5 +506,19 @@
"list_updated": "{{count}} 清單被更新", "list_updated": "{{count}} 清單被更新",
"list_updated_plural": "{{count}} 清單被更新", "list_updated_plural": "{{count}} 清單被更新",
"dnssec_enable": "啟用網域名稱系統安全性擴充功能DNSSEC", "dnssec_enable": "啟用網域名稱系統安全性擴充功能DNSSEC",
"dnssec_enable_desc": "在發出的 DNS 查詢中設定 DNSSEC 標記並檢查該結果(已啟用 DNSSEC 的解析器是必須的)" "dnssec_enable_desc": "在發出的 DNS 查詢中設定 DNSSEC 標記並檢查該結果(已啟用 DNSSEC 的解析器是必須的)",
"validated_with_dnssec": "已用網域名稱系統安全性擴充功能DNSSEC驗證",
"show_all_responses": "所有的回應",
"show_blocked_responses": "已封鎖的",
"show_whitelisted_responses": "已列入白名單的",
"show_processed_responses": "已處理的",
"blocked_safebrowsing": "被安全瀏覽封鎖",
"blocked_adult_websites": "已封鎖的成人網站",
"blocked_threats": "已封鎖的威脅",
"allowed": "已允許的",
"filtered": "已過濾的",
"rewritten": "已改寫的",
"safe_search": "安全搜尋",
"blocklist": "封鎖清單",
"milliseconds_abbreviation": "ms"
} }

View File

@ -3,8 +3,8 @@ import i18next from 'i18next';
import apiClient from '../api/Api'; import apiClient from '../api/Api';
import { normalizeTextarea } from '../helpers/helpers'; import { normalizeTextarea } from '../helpers/helpers';
import { ACTION } from '../helpers/constants';
import { addErrorToast, addSuccessToast } from './toasts'; import { addErrorToast, addSuccessToast } from './toasts';
import { BLOCK_ACTIONS } from '../helpers/constants';
export const getAccessListRequest = createAction('GET_ACCESS_LIST_REQUEST'); export const getAccessListRequest = createAction('GET_ACCESS_LIST_REQUEST');
export const getAccessListFailure = createAction('GET_ACCESS_LIST_FAILURE'); export const getAccessListFailure = createAction('GET_ACCESS_LIST_FAILURE');
@ -57,9 +57,9 @@ export const toggleClientBlock = (type, ip) => async (dispatch) => {
} = await apiClient.getAccessList(); } = await apiClient.getAccessList();
let updatedDisallowedClients = disallowed_clients || []; let updatedDisallowedClients = disallowed_clients || [];
if (type === ACTION.unblock && updatedDisallowedClients.includes(ip)) { if (type === BLOCK_ACTIONS.UNBLOCK && updatedDisallowedClients.includes(ip)) {
updatedDisallowedClients = updatedDisallowedClients.filter((client) => client !== ip); updatedDisallowedClients = updatedDisallowedClients.filter((client) => client !== ip);
} else if (type === ACTION.block && !updatedDisallowedClients.includes(ip)) { } else if (type === BLOCK_ACTIONS.BLOCK && !updatedDisallowedClients.includes(ip)) {
updatedDisallowedClients.push(ip); updatedDisallowedClients.push(ip);
} }
@ -72,9 +72,9 @@ export const toggleClientBlock = (type, ip) => async (dispatch) => {
await apiClient.setAccessList(values); await apiClient.setAccessList(values);
dispatch(toggleClientBlockSuccess(values)); dispatch(toggleClientBlockSuccess(values));
if (type === ACTION.unblock) { if (type === BLOCK_ACTIONS.UNBLOCK) {
dispatch(addSuccessToast(i18next.t('client_unblocked', { ip }))); dispatch(addSuccessToast(i18next.t('client_unblocked', { ip })));
} else if (type === ACTION.block) { } else if (type === BLOCK_ACTIONS.BLOCK) {
dispatch(addSuccessToast(i18next.t('client_blocked', { ip }))); dispatch(addSuccessToast(i18next.t('client_blocked', { ip })));
} }
} catch (error) { } catch (error) {

View File

@ -2,20 +2,23 @@ import { createAction } from 'redux-actions';
import apiClient from '../api/Api'; import apiClient from '../api/Api';
import { normalizeLogs, getParamsForClientsSearch, addClientInfo } from '../helpers/helpers'; import { normalizeLogs, getParamsForClientsSearch, addClientInfo } from '../helpers/helpers';
import { TABLE_DEFAULT_PAGE_SIZE } from '../helpers/constants'; import { TABLE_DEFAULT_PAGE_SIZE, TABLE_FIRST_PAGE } from '../helpers/constants';
import { addErrorToast, addSuccessToast } from './toasts'; import { addErrorToast, addSuccessToast } from './toasts';
const getLogsWithParams = async (config) => { const getLogsWithParams = async (config) => {
const { older_than, filter, ...values } = config; const { older_than, filter, ...values } = config;
const rawLogs = await apiClient.getQueryLog({ ...filter, older_than }); const rawLogs = await apiClient.getQueryLog({ ...filter, older_than });
const { data, oldest } = rawLogs; const { data, oldest } = rawLogs;
const logs = normalizeLogs(data); let logs = normalizeLogs(data);
const clientsParams = getParamsForClientsSearch(logs, 'client'); const clientsParams = getParamsForClientsSearch(logs, 'client');
if (Object.keys(clientsParams).length > 0) {
const clients = await apiClient.findClients(clientsParams); const clients = await apiClient.findClients(clientsParams);
const logsWithClientInfo = addClientInfo(logs, clients, 'client'); logs = addClientInfo(logs, clients, 'client');
}
return { return {
logs: logsWithClientInfo, oldest, older_than, filter, ...values, logs, oldest, older_than, filter, ...values,
}; };
}; };
@ -56,6 +59,7 @@ const checkFilteredLogs = async (data, filter, dispatch, total) => {
export const setLogsPagination = createAction('LOGS_PAGINATION'); export const setLogsPagination = createAction('LOGS_PAGINATION');
export const setLogsPage = createAction('SET_LOG_PAGE'); export const setLogsPage = createAction('SET_LOG_PAGE');
export const toggleDetailedLogs = createAction('TOGGLE_DETAILED_LOGS');
export const getLogsRequest = createAction('GET_LOGS_REQUEST'); export const getLogsRequest = createAction('GET_LOGS_REQUEST');
export const getLogsFailure = createAction('GET_LOGS_FAILURE'); export const getLogsFailure = createAction('GET_LOGS_FAILURE');
@ -93,7 +97,7 @@ export const setLogsFilter = (filter) => async (dispatch) => {
const updatedData = additionalData.logs ? { ...data, ...additionalData } : data; const updatedData = additionalData.logs ? { ...data, ...additionalData } : data;
dispatch(setLogsFilterSuccess({ ...updatedData, filter })); dispatch(setLogsFilterSuccess({ ...updatedData, filter }));
dispatch(setLogsPage(0)); dispatch(setLogsPage(TABLE_FIRST_PAGE));
} catch (error) { } catch (error) {
dispatch(addErrorToast({ error })); dispatch(addErrorToast({ error }));
dispatch(setLogsFilterFailure(error)); dispatch(setLogsFilterFailure(error));

View File

@ -1,4 +1,9 @@
:root { :root {
--yellow-pale: rgba(247, 181, 0, 0.1);
--green79: #67B279;
--gray-a5: #a5a5a5;
--gray-d8: #d8d8d8;
--gray-f3: #F3F3F3;
--font-family-monospace: Monaco, Menlo, "Ubuntu Mono", Consolas, source-code-pro, monospace; --font-family-monospace: Monaco, Menlo, "Ubuntu Mono", Consolas, source-code-pro, monospace;
} }
@ -22,6 +27,16 @@ body {
} }
} }
@media screen and (max-width: 992px) {
.container {
padding: 0 !important;
}
.container--wrap {
min-height: calc(100vh);
}
}
.loading-bar { .loading-bar {
position: fixed; position: fixed;
top: 0; top: 0;
@ -31,10 +46,17 @@ body {
background: linear-gradient(45deg, rgba(99, 125, 120, 1) 0%, rgba(88, 177, 101, 1) 100%); background: linear-gradient(45deg, rgba(99, 125, 120, 1) 0%, rgba(88, 177, 101, 1) 100%);
} }
.hidden { @media (max-width: 575px) {
display: none; .container {
padding-right: 0;
padding-left: 0;
}
} }
.font-monospace { .font-monospace {
font-family: var(--font-family-monospace); font-family: var(--font-family-monospace);
} }
.mw-75 {
max-width: 75% !important;
}

View File

@ -94,7 +94,7 @@ class App extends Component {
)} )}
<LoadingBar className="loading-bar" updateTime={1000} /> <LoadingBar className="loading-bar" updateTime={1000} />
<Route component={Header} /> <Route component={Header} />
<div className="container container--wrap"> <div className="container container--wrap pb-5">
{dashboard.processing && <Loading />} {dashboard.processing && <Loading />}
{!dashboard.isCoreRunning && ( {!dashboard.isCoreRunning && (
<div className="row row-cards"> <div className="row row-cards">

View File

@ -32,17 +32,17 @@ const renderBlockingButton = (ipMatchListStatus, ip, handleClick, processing) =>
const buttonProps = ipMatchListStatus === IP_MATCH_LIST_STATUS.NOT_FOUND const buttonProps = ipMatchListStatus === IP_MATCH_LIST_STATUS.NOT_FOUND
? { ? {
className: 'btn-outline-danger', className: 'btn-outline-danger',
text: 'block_btn', text: 'block',
type: 'block', type: 'block',
} }
: { : {
className: 'btn-outline-secondary', className: 'btn-outline-secondary',
text: 'unblock_btn', text: 'unblock',
type: 'unblock', type: 'unblock',
}; };
return ( return (
<div className="table__action"> <div className="table__action button__action">
<button <button
type="button" type="button"
className={`btn btn-sm ${buttonProps.className}`} className={`btn btn-sm ${buttonProps.className}`}

View File

@ -10,7 +10,7 @@ import BlockedDomains from './BlockedDomains';
import PageTitle from '../ui/PageTitle'; import PageTitle from '../ui/PageTitle';
import Loading from '../ui/Loading'; import Loading from '../ui/Loading';
import { ACTION } from '../../helpers/constants'; import { BLOCK_ACTIONS } from '../../helpers/constants';
import './Dashboard.css'; import './Dashboard.css';
class Dashboard extends Component { class Dashboard extends Component {
@ -42,7 +42,7 @@ class Dashboard extends Component {
}; };
toggleClientStatus = (type, ip) => { toggleClientStatus = (type, ip) => {
const confirmMessage = type === ACTION.block ? 'client_confirm_block' : 'client_confirm_unblock'; const confirmMessage = type === BLOCK_ACTIONS.BLOCK ? 'client_confirm_block' : 'client_confirm_unblock';
if (window.confirm(this.props.t(confirmMessage, { ip }))) { if (window.confirm(this.props.t(confirmMessage, { ip }))) {
this.props.toggleClientBlock(type, ip); this.props.toggleClientBlock(type, ip);

View File

@ -5,7 +5,7 @@ import { withTranslation } from 'react-i18next';
class Table extends Component { class Table extends Component {
cellWrap = ({ value }) => ( cellWrap = ({ value }) => (
<div className="logs__row logs__row--overflow"> <div className="logs__row o-hidden">
<span className="logs__text" title={value}> <span className="logs__text" title={value}>
{value} {value}
</span> </span>
@ -31,7 +31,7 @@ class Table extends Component {
<div className="logs__row logs__row--center"> <div className="logs__row logs__row--center">
<button <button
type="button" type="button"
className="btn btn-icon btn-outline-secondary btn-sm" className="btn btn-icon btn-icon--green btn-outline-secondary btn-sm"
onClick={() => this.props.handleDelete({ onClick={() => this.props.handleDelete({
answer: value.row.answer, answer: value.row.answer,
domain: value.row.domain, domain: value.row.domain,
@ -59,16 +59,26 @@ class Table extends Component {
columns={this.columns} columns={this.columns}
loading={processing || processingAdd || processingDelete} loading={processing || processingAdd || processingDelete}
className="-striped -highlight card-table-overflow" className="-striped -highlight card-table-overflow"
showPagination={true} showPagination
defaultPageSize={10} defaultPageSize={10}
minRows={5} minRows={5}
previousText={t('previous_btn')} previousText={
nextText={t('next_btn')} <svg className="icons icon--small icon--gray">
<use xlinkHref="#arrow-left" />
</svg>}
nextText={
<svg className="icons icon--small icon--gray">
<use xlinkHref="#arrow-right" />
</svg>}
loadingText={t('loading_table_status')} loadingText={t('loading_table_status')}
pageText={t('page_table_footer_text')} pageText=''
ofText="/" ofText=''
rowsText={t('rows_table_footer_text')} rowsText={t('rows_table_footer_text')}
noDataText={t('rewrite_not_found')} noDataText={t('rewrite_not_found')}
showPageSizeOptions={false}
showPageJump={false}
renderTotalPagesCount={() => false}
getPaginationProps={() => ({ className: 'custom-pagination' })}
/> />
); );
} }

View File

@ -48,7 +48,7 @@ class Table extends Component {
accessor: 'url', accessor: 'url',
minWidth: 200, minWidth: 200,
Cell: ({ value }) => ( Cell: ({ value }) => (
<div className="logs__row logs__row--overflow"> <div className="logs__row o-hidden">
{isValidAbsolutePath(value) ? value {isValidAbsolutePath(value) ? value
: <a : <a
href={value} href={value}
@ -126,17 +126,26 @@ class Table extends Component {
<ReactTable <ReactTable
data={filters} data={filters}
columns={this.columns} columns={this.columns}
showPagination={true} showPagination
defaultPageSize={10} defaultPageSize={10}
showPageSizeOptions={false}
showPageJump={false}
renderTotalPagesCount={() => false}
loading={loading} loading={loading}
minRows={6} minRows={6}
previousText={t('previous_btn')} pageText=''
nextText={t('next_btn')} ofText=''
loadingText={t('loading_table_status')} loadingText={t('loading_table_status')}
pageText={t('page_table_footer_text')}
ofText="/"
rowsText={t('rows_table_footer_text')}
noDataText={whitelist ? t('no_whitelist_added') : t('no_blocklist_added')} noDataText={whitelist ? t('no_whitelist_added') : t('no_blocklist_added')}
getPaginationProps={() => ({ className: 'custom-pagination' })}
previousText={
<svg className="icons icon--small icon--gray w-100 h-100">
<use xlinkHref="#arrow-left" />
</svg>}
nextText={
<svg className="icons icon--small icon--gray w-100 h-100">
<use xlinkHref="#arrow-right" />
</svg>}
/> />
); );
} }

View File

@ -0,0 +1,106 @@
import React from 'react';
import { nanoid } from 'nanoid';
import classNames from 'classnames';
import PropTypes from 'prop-types';
import { formatClientCell } from '../../../helpers/formatClientCell';
import getHintElement from './getHintElement';
import { checkFiltered } from '../../../helpers/helpers';
import { BLOCK_ACTIONS } from '../../../helpers/constants';
const getClientCell = ({
row, t, isDetailed, toggleBlocking, autoClients, processingRules,
}) => {
const {
reason, client, domain, info: { name },
} = row.original;
const autoClient = autoClients.find((autoClient) => autoClient.name === client);
const country = autoClient && autoClient.whois_info && autoClient.whois_info.country;
const city = autoClient && autoClient.whois_info && autoClient.whois_info.city;
const network = autoClient && autoClient.whois_info && autoClient.whois_info.orgname;
const source = autoClient && autoClient.source;
const id = nanoid();
const data = {
address: client,
name,
country,
city,
network,
source_label: source,
};
const processedData = Object.entries(data);
const isFiltered = checkFiltered(reason);
const nameClass = classNames('w-90 o-hidden d-flex flex-column', {
'mt-2': isDetailed && !name,
'white-space--nowrap': isDetailed,
});
const hintClass = classNames('icons mr-4 icon--small cursor--pointer icon--light-gray', {
'my-3': isDetailed,
});
const renderBlockingButton = (isFiltered, domain) => {
const buttonType = isFiltered ? BLOCK_ACTIONS.UNBLOCK : BLOCK_ACTIONS.BLOCK;
const buttonClass = classNames('logs__action button__action', {
'btn-outline-secondary': isFiltered,
'btn-outline-danger': !isFiltered,
'logs__action--detailed': isDetailed,
});
const onClick = () => toggleBlocking(buttonType, domain);
return (
<div className={buttonClass}>
<button
type="button"
className={`btn btn-sm ${buttonClass}`}
onClick={onClick}
disabled={processingRules}
>
{t(buttonType)}
</button>
</div>
);
};
return (
<div className="logs__row o-hidden h-100">
{processedData && getHintElement({
className: hintClass,
columnClass: 'grid grid--limited',
tooltipClass: 'px-5 pb-5 pt-4 mw-75',
dataTip: true,
xlinkHref: 'question',
contentItemClass: 'text-truncate key-colon',
title: 'client_details',
content: processedData,
place: 'bottom',
})}
<div
className={nameClass}>
<div data-tip={true} data-for={id}>{formatClientCell(row, t, isDetailed)}</div>
{isDetailed && name
&& <div className="detailed-info d-none d-sm-block logs__text"
title={name}>{name}</div>}
</div>
{renderBlockingButton(isFiltered, domain)}
</div>
);
};
getClientCell.propTypes = {
row: PropTypes.object.isRequired,
t: PropTypes.func.isRequired,
isDetailed: PropTypes.bool.isRequired,
toggleBlocking: PropTypes.func.isRequired,
autoClients: PropTypes.array.isRequired,
processingRules: PropTypes.bool.isRequired,
};
export default getClientCell;

View File

@ -0,0 +1,28 @@
import React from 'react';
import { formatTime, formatDateTime } from '../../../helpers/helpers';
import {
DEFAULT_SHORT_DATE_FORMAT_OPTIONS,
DEFAULT_TIME_FORMAT,
} from '../../../helpers/constants';
const getDateCell = (row, isDetailed) => {
const { time } = row.original;
if (!time) {
return '';
}
const formattedTime = formatTime(time, DEFAULT_TIME_FORMAT);
const formattedDate = formatDateTime(time, DEFAULT_SHORT_DATE_FORMAT_OPTIONS);
return (
<div className="logs__cell">
<div className="logs__time" title={formattedTime}>{formattedTime}</div>
{isDetailed && <div className="detailed-info d-none d-sm-block text-truncate"
title={formattedDate}>{formattedDate}</div>}
</div>
);
};
export default getDateCell;

View File

@ -0,0 +1,121 @@
import React from 'react';
import classNames from 'classnames';
import PropTypes from 'prop-types';
import getHintElement from './getHintElement';
import {
DEFAULT_SHORT_DATE_FORMAT_OPTIONS,
LONG_TIME_FORMAT,
SCHEME_TO_PROTOCOL_MAP,
} from '../../../helpers/constants';
import { formatDateTime, formatTime } from '../../../helpers/helpers';
const getDomainCell = (props) => {
const {
row, t, isDetailed, dnssec_enabled,
} = props;
const {
tracker, type, answer_dnssec, client_proto, domain, time,
} = row.original;
const hasTracker = !!tracker;
const source = tracker && tracker.sourceData && tracker.sourceData.name;
const lockIconClass = classNames('icons', 'icon--small', 'd-none', 'd-sm-block', 'cursor--pointer', {
'icon--active': answer_dnssec,
'icon--disabled': !answer_dnssec,
'my-3': isDetailed,
});
const privacyIconClass = classNames('icons', 'mx-2', 'icon--small', 'd-none', 'd-sm-block', 'cursor--pointer', {
'icon--active': hasTracker,
'icon--disabled': !hasTracker,
'my-3': isDetailed,
});
const dnssecHint = getHintElement({
className: lockIconClass,
tooltipClass: 'py-4 px-5 pb-45',
dataTip: answer_dnssec,
xlinkHref: 'lock',
columnClass: 'w-100',
content: 'validated_with_dnssec',
place: 'bottom',
});
const protocol = t(SCHEME_TO_PROTOCOL_MAP[client_proto]) || '';
const ip = type ? `${t('type_table_header')}: ${type}` : '';
const requestDetailsObj = {
time_table_header: formatTime(time, LONG_TIME_FORMAT),
date: formatDateTime(time, DEFAULT_SHORT_DATE_FORMAT_OPTIONS),
domain,
type_table_header: type,
protocol,
};
const knownTrackerDataObj = {
name_table_header: tracker && tracker.name,
category_label: tracker && tracker.category,
source_label: source && <a href={`//${source}`} className="link--green">{source}</a>,
};
const renderGrid = (content, idx) => {
const preparedContent = typeof content === 'string' ? t(content) : content;
const className = classNames('text-truncate key-colon o-hidden', {
'word-break--break-all white-space--normal': preparedContent.length > 100,
});
return <div key={idx} className={className}>{preparedContent}</div>;
};
const getGrid = (contentObj, title, className) => [
<div key={title} className={classNames('pb-2 grid--title', className)}>{t(title)}</div>,
<div key={`${title}-1`} className="grid grid--limited">{React.Children.map(Object.entries(contentObj), renderGrid)}</div>,
];
const requestDetails = getGrid(requestDetailsObj, 'request_details');
const renderContent = hasTracker ? requestDetails.concat(getGrid(knownTrackerDataObj, 'known_tracker', 'pt-4')) : requestDetails;
const trackerHint = getHintElement({
className: privacyIconClass,
tooltipClass: 'pt-4 pb-5 px-5 mw-75',
dataTip: true,
xlinkHref: 'privacy',
contentItemClass: 'key-colon',
renderContent,
place: 'bottom',
});
const valueClass = classNames('w-100', {
'px-2 d-flex justify-content-center flex-column': isDetailed,
});
const details = [ip, protocol].filter(Boolean)
.join(', ');
return (
<div className="logs__row o-hidden">
{dnssec_enabled && dnssecHint}
{trackerHint}
<div className={valueClass}>
<div className="text-truncate" title={domain}>{domain}</div>
{details && isDetailed
&& <div className="detailed-info d-none d-sm-block text-truncate"
title={details}>{details}</div>}
</div>
</div>
);
};
getDomainCell.propTypes = {
row: PropTypes.object.isRequired,
t: PropTypes.func.isRequired,
isDetailed: PropTypes.bool.isRequired,
toggleBlocking: PropTypes.func.isRequired,
autoClients: PropTypes.array.isRequired,
dnssec_enabled: PropTypes.bool.isRequired,
};
export default getDomainCell;

View File

@ -0,0 +1,76 @@
import React, { useState } from 'react';
import PropTypes from 'prop-types';
import CustomTooltip from '../Tooltip/CustomTooltip';
const getHintElement = ({
className,
contentItemClass,
columnClass,
dataTip,
xlinkHref,
content,
title,
place,
tooltipClass,
trigger,
overridePosition,
scrollHide,
renderContent,
}) => {
const id = 'id';
const [isHovered, hover] = useState(false);
const openTooltip = () => hover(true);
const closeTooltip = () => hover(false);
return <div onMouseEnter={openTooltip}
onMouseLeave={closeTooltip}>
<div data-tip={dataTip}
data-for={dataTip ? id : undefined}
data-event={trigger}
>
{xlinkHref && <svg className={className}>
<use xlinkHref={`#${xlinkHref}`} />
</svg>}
</div>
{isHovered && dataTip
&& <CustomTooltip
className={tooltipClass}
id={id}
columnClass={columnClass}
contentItemClass={contentItemClass}
title={title}
place={place}
content={content}
trigger={trigger}
overridePosition={overridePosition}
scrollHide={scrollHide}
renderContent={renderContent}
/>}
</div>;
};
getHintElement.propTypes = {
className: PropTypes.string,
contentItemClass: PropTypes.string,
columnClass: PropTypes.string,
tooltipClass: PropTypes.string,
title: PropTypes.string,
place: PropTypes.string,
dataTip: PropTypes.string,
xlinkHref: PropTypes.string,
overridePosition: PropTypes.func,
scrollHide: PropTypes.bool,
trigger: PropTypes.oneOfType([
PropTypes.string,
PropTypes.arrayOf(PropTypes.string),
]),
content: PropTypes.oneOfType([
PropTypes.string,
PropTypes.array,
]),
renderContent: PropTypes.arrayOf(PropTypes.element),
};
export default getHintElement;

View File

@ -0,0 +1,120 @@
import React from 'react';
import classNames from 'classnames';
import { formatElapsedMs } from '../../../helpers/helpers';
import {
CUSTOM_FILTERING_RULES_ID,
FILTERED_STATUS,
FILTERED_STATUS_TO_META_MAP,
} from '../../../helpers/constants';
import getHintElement from './getHintElement';
const getFilterName = (filters, whitelistFilters, filterId, t) => {
if (filterId === CUSTOM_FILTERING_RULES_ID) {
return t('custom_filter_rules');
}
const filter = filters.find((filter) => filter.id === filterId)
|| whitelistFilters.find((filter) => filter.id === filterId);
let filterName = '';
if (filter) {
filterName = filter.name;
}
if (!filterName) {
filterName = t('unknown_filter', { filterId });
}
return filterName;
};
const getResponseCell = (row, filtering, t, isDetailed) => {
const {
reason, filterId, rule, status, upstream, elapsedMs, domain, response,
} = row.original;
const { filters, whitelistFilters } = filtering;
const formattedElapsedMs = formatElapsedMs(elapsedMs, t);
const statusLabel = t((FILTERED_STATUS_TO_META_MAP[reason]
&& FILTERED_STATUS_TO_META_MAP[reason].label) || reason);
const boldStatusLabel = <span className="font-weight-bold">{statusLabel}</span>;
const filter = getFilterName(filters, whitelistFilters, filterId, t);
const renderResponses = (responseArr) => {
if (responseArr.length === 0) {
return '';
}
return <div>{responseArr.map((response) => {
const className = classNames('white-space--nowrap', {
'white-space--normal': response.length > 100,
});
return <div key={response} className={className}>{`${response}\n`}</div>;
})}</div>;
};
const FILTERED_STATUS_TO_FIELDS_MAP = {
[FILTERED_STATUS.NOT_FILTERED_NOT_FOUND]: {
domain,
encryption_status: boldStatusLabel,
install_settings_dns: upstream,
elapsed: formattedElapsedMs,
response_code: status,
response_table_header: renderResponses(response),
},
[FILTERED_STATUS.FILTERED_BLOCKED_SERVICE]: {
domain,
encryption_status: boldStatusLabel,
filter,
rule_label: rule,
response_code: status,
},
[FILTERED_STATUS.FILTERED_SAFE_SEARCH]: {
domain,
encryption_status: boldStatusLabel,
install_settings_dns: upstream,
elapsed: formattedElapsedMs,
response_code: status,
},
[FILTERED_STATUS.FILTERED_BLACK_LIST]: {
domain,
encryption_status: boldStatusLabel,
install_settings_dns: upstream,
elapsed: formattedElapsedMs,
response_code: status,
},
};
const fields = FILTERED_STATUS_TO_FIELDS_MAP[reason]
? Object.entries(FILTERED_STATUS_TO_FIELDS_MAP[reason])
: Object.entries(FILTERED_STATUS_TO_FIELDS_MAP.NotFilteredNotFound);
const detailedInfo = reason === FILTERED_STATUS.FILTERED_BLOCKED_SERVICE
|| reason === FILTERED_STATUS.FILTERED_BLACK_LIST
? filter : formattedElapsedMs;
return (
<div className="logs__row">
{fields && getHintElement({
className: classNames('icons mr-4 icon--small cursor--pointer icon--light-gray', { 'my-3': isDetailed }),
columnClass: 'grid grid--limited',
tooltipClass: 'px-5 pb-5 pt-4 mw-75 custom-tooltip__response-details',
contentItemClass: 'text-truncate key-colon o-hidden',
dataTip: true,
xlinkHref: 'question',
title: 'response_details',
content: fields,
place: 'bottom',
})}
<div className="text-truncate">
<div className="text-truncate" title={statusLabel}>{statusLabel}</div>
{isDetailed && <div
className="detailed-info d-none d-sm-block pt-1 text-truncate" title={detailedInfo}>{detailedInfo}</div>}
</div>
</div>
);
};
export default getResponseCell;

View File

@ -0,0 +1,30 @@
import React, { Fragment } from 'react';
import { Trans } from 'react-i18next';
import { HashLink as Link } from 'react-router-hash-link';
import Card from '../ui/Card';
const Disabled = () => (
<Fragment>
<div className="page-header">
<h1 className="page-title page-title--large">
<Trans>query_log</Trans>
</h1>
</div>
<Card>
<div className="lead text-center py-6">
<Trans
components={[
<Link to="/settings#logs-config" key="0">
link
</Link>,
]}
>
query_log_disabled
</Trans>
</div>
</Card>
</Fragment>
);
export default Disabled;

View File

@ -1,11 +1,9 @@
import React, { Fragment } from 'react'; import React from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { Field, reduxForm } from 'redux-form'; import { Field, reduxForm } from 'redux-form';
import { withTranslation } from 'react-i18next'; import { useTranslation } from 'react-i18next';
import flow from 'lodash/flow'; import debounce from 'lodash/debounce';
import { DEBOUNCE_FILTER_TIMEOUT, FORM_NAME, RESPONSE_FILTER } from '../../../helpers/constants';
import { renderInputField } from '../../../helpers/form';
import { FORM_NAME, RESPONSE_FILTER } from '../../../helpers/constants';
import Tooltip from '../../ui/Tooltip'; import Tooltip from '../../ui/Tooltip';
const renderFilterField = ({ const renderFilterField = ({
@ -18,8 +16,12 @@ const renderFilterField = ({
autoComplete, autoComplete,
tooltip, tooltip,
meta: { touched, error }, meta: { touched, error },
}) => <Fragment> }) => <>
<div className="logs__input-wrap"> <div className="input-group-search">
<svg className="icons icon--small icon--gray">
<use xlinkHref="#magnifier" />
</svg>
</div>
<input <input
{...input} {...input}
id={id} id={id}
@ -28,15 +30,14 @@ const renderFilterField = ({
className={className} className={className}
disabled={disabled} disabled={disabled}
autoComplete={autoComplete} autoComplete={autoComplete}
/> aria-label={placeholder} />
<span className="logs__notice"> <span className="logs__notice">
<Tooltip text={tooltip} type='tooltip-custom--logs' /> <Tooltip text={tooltip} type='tooltip-custom--logs' />
</span> </span>
{!disabled {!disabled
&& touched && touched
&& (error && <span className="form__message form__message--error">{error}</span>)} && (error && <span className="form__message form__message--error">{error}</span>)}
</div> </>;
</Fragment>;
renderFilterField.propTypes = { renderFilterField.propTypes = {
input: PropTypes.object.isRequired, input: PropTypes.object.isRequired,
@ -55,62 +56,47 @@ renderFilterField.propTypes = {
const Form = (props) => { const Form = (props) => {
const { const {
t, className = '',
handleChange, responseStatusClass,
submit,
} = props; } = props;
const [t] = useTranslation();
const debouncedSubmit = debounce(submit, DEBOUNCE_FILTER_TIMEOUT);
const zeroDelaySubmit = () => setTimeout(submit, 0);
return ( return (
<form onSubmit={handleChange}> <form className="d-flex flex-wrap form-control--container"
<div className="row"> onSubmit={(e) => {
<div className="col-6 col-sm-3 my-2"> e.preventDefault();
<Field zeroDelaySubmit();
id="filter_domain" debouncedSubmit.cancel();
name="filter_domain" }}
component={renderFilterField}
type="text"
className="form-control"
placeholder={t('domain_name_table_header')}
tooltip={t('query_log_strict_search')}
onChange={handleChange}
/>
</div>
<div className="col-6 col-sm-3 my-2">
<Field
id="filter_question_type"
name="filter_question_type"
component={renderInputField}
type="text"
className="form-control"
placeholder={t('type_table_header')}
onChange={handleChange}
/>
</div>
<div className="col-6 col-sm-3 my-2">
<Field
name="filter_response_status"
component="select"
className="form-control custom-select"
> >
<option value={RESPONSE_FILTER.ALL}>
{t('show_all_filter_type')}
</option>
<option value={RESPONSE_FILTER.FILTERED}>
{t('show_filtered_type')}
</option>
</Field>
</div>
<div className="col-6 col-sm-3 my-2">
<Field <Field
id="filter_client" id="search"
name="filter_client" name="search"
component={renderFilterField} component={renderFilterField}
type="text" type="text"
className="form-control" className={`form-control--search form-control--transparent ${className}`}
placeholder={t('client_table_header')} placeholder={t('domain_or_client')}
tooltip={t('query_log_strict_search')} tooltip={t('query_log_strict_search')}
onChange={handleChange} onChange={debouncedSubmit}
/> />
</div> <div className="field__select">
<Field
name="response_status"
component="select"
className={`form-control custom-select custom-select--logs custom-select__arrow--left ml-small form-control--transparent ${responseStatusClass}`}
onChange={zeroDelaySubmit}
>
{Object.values(RESPONSE_FILTER)
.map(({
query, label, disabled,
}) => <option key={label} value={query}
disabled={disabled}>{t(label)}</option>)}
</Field>
</div> </div>
</form> </form>
); );
@ -118,12 +104,11 @@ const Form = (props) => {
Form.propTypes = { Form.propTypes = {
handleChange: PropTypes.func, handleChange: PropTypes.func,
t: PropTypes.func.isRequired, className: PropTypes.string,
responseStatusClass: PropTypes.string,
submit: PropTypes.func.isRequired,
}; };
export default flow([ export default reduxForm({
withTranslation(),
reduxForm({
form: FORM_NAME.LOGS_FILTER, form: FORM_NAME.LOGS_FILTER,
}), })(Form);
])(Form);

View File

@ -1,52 +1,48 @@
import React, { Component } from 'react'; import React from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import debounce from 'lodash/debounce'; import { Trans } from 'react-i18next';
import classnames from 'classnames'; import { useDispatch } from 'react-redux';
import { DEBOUNCE_FILTER_TIMEOUT, RESPONSE_FILTER } from '../../../helpers/constants';
import { isValidQuestionType } from '../../../helpers/helpers';
import Form from './Form'; import Form from './Form';
import Card from '../../ui/Card'; import { setLogsFilter } from '../../../actions/queryLogs';
class Filters extends Component { const Filters = ({ filter, refreshLogs, setIsLoading }) => {
getFilters = ({ const dispatch = useDispatch();
filter_domain, filter_question_type, filter_response_status, filter_client,
}) => ({
filter_domain: filter_domain || '',
filter_question_type: isValidQuestionType(filter_question_type) ? filter_question_type.toUpperCase() : '',
filter_response_status: filter_response_status === RESPONSE_FILTER.FILTERED ? filter_response_status : '',
filter_client: filter_client || '',
});
handleFormChange = debounce((values) => { const onSubmit = async (values) => {
const filter = this.getFilters(values); setIsLoading(true);
this.props.setLogsFilter(filter); await dispatch(setLogsFilter(values));
}, DEBOUNCE_FILTER_TIMEOUT); setIsLoading(false);
};
render() {
const { filter, processingAdditionalLogs } = this.props;
const cardBodyClass = classnames({
'card-body': true,
'card-body--loading': processingAdditionalLogs,
});
return ( return (
<Card bodyType={cardBodyClass}> <div className="page-header page-header--logs">
<h1 className="page-title page-title--large">
<Trans>query_log</Trans>
<button
type="button"
className="btn btn-icon--green ml-3 bg-transparent"
onClick={refreshLogs}
>
<svg className="icons icon--small">
<use xlinkHref="#update" />
</svg>
</button>
</h1>
<Form <Form
responseStatusClass="d-sm-block"
initialValues={filter} initialValues={filter}
onChange={this.handleFormChange} onSubmit={onSubmit}
/> />
</Card> </div>
); );
} };
}
Filters.propTypes = { Filters.propTypes = {
filter: PropTypes.object.isRequired, filter: PropTypes.object.isRequired,
setLogsFilter: PropTypes.func.isRequired, refreshLogs: PropTypes.func.isRequired,
processingGetLogs: PropTypes.bool.isRequired, processingGetLogs: PropTypes.bool.isRequired,
processingAdditionalLogs: PropTypes.bool.isRequired, setIsLoading: PropTypes.func.isRequired,
}; };
export default Filters; export default Filters;

View File

@ -1,8 +1,15 @@
:root {
--gray-4d: #4D4D4D;
--gray-8: #888;
--danger: #DF3812;
}
.logs__row { .logs__row {
position: relative; position: relative;
display: flex; display: flex;
align-items: center;
min-height: 26px; min-height: 26px;
overflow: hidden;
text-overflow: ellipsis;
} }
.logs__row--center { .logs__row--center {
@ -15,10 +22,6 @@
justify-content: center; justify-content: center;
} }
.logs__row--overflow {
overflow: hidden;
}
.logs__row--icons { .logs__row--icons {
max-width: 180px; max-width: 180px;
flex-flow: row wrap; flex-flow: row wrap;
@ -35,6 +38,15 @@
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
overflow: hidden; overflow: hidden;
font-size: 1rem;
font-family: var(--font-family-sans-serif);
color: var(--gray-4d);
letter-spacing: 0;
line-height: 1.5rem;
}
.logs__text--bold {
font-weight: bold;
} }
.logs__text--full { .logs__text--full {
@ -51,6 +63,11 @@
white-space: normal; white-space: normal;
} }
.logs__text--nowrap {
line-height: 1.4;
white-space: nowrap;
}
.logs__text--whois { .logs__text--whois {
line-height: 1.2; line-height: 1.2;
} }
@ -61,11 +78,18 @@
margin-right: 5px; margin-right: 5px;
} }
.logs__action, .tooltip__option {
.table__action { height: 2.5rem !important;
position: absolute; width: 10.5rem;
top: 11px; padding: 0.3125rem 1.5rem 0.6875rem;
right: 15px; }
.tooltip__option:hover {
background-color: var(--gray-f3);
cursor: pointer;
}
.button__action {
background-color: #fff; background-color: #fff;
border-radius: 4px; border-radius: 4px;
transition: opacity 0.2s ease, visibility 0.2s ease; transition: opacity 0.2s ease, visibility 0.2s ease;
@ -73,11 +97,31 @@
opacity: 0; opacity: 0;
} }
.table__action {
position: absolute;
top: 11px;
right: 15px;
}
.logs__action {
position: absolute;
top: 0;
right: 1rem;
}
.logs__action--detailed {
top: 5px;
}
.logs__table .rt-td, .logs__table .rt-td,
.clients__table .rt-td { .clients__table .rt-td {
position: relative; position: relative;
} }
.logs__table .rt-thead, .logs__table .rt-tbody {
min-width: 100% !important;
}
.logs__table .rt-tr:hover .logs__action, .logs__table .rt-tr:hover .logs__action,
.clients__table .rt-tr:hover .table__action { .clients__table .rt-tr:hover .table__action {
visibility: visible; visibility: visible;
@ -152,14 +196,14 @@
} }
.logs__notice { .logs__notice {
position: absolute; position: relative;
z-index: 1; z-index: 1;
top: 8px; top: 0.5rem;
right: 10px; right: 2rem;
margin-top: 3px; margin-top: 0.1875rem;
font-size: 12px; font-size: 0.75rem;
text-align: left; text-align: left;
color: #a5a5a5; color: var(--gray-a5);
} }
.logs__whois { .logs__whois {
@ -185,3 +229,348 @@
margin-right: 1px; margin-right: 1px;
opacity: 0.5; opacity: 0.5;
} }
/* New logs */
.logs__table {
background-color: #fff;
border: 0;
border-radius: 8px;
min-height: 42rem;
max-width: 71rem;
}
.logs__table--detailed {
min-height: 50rem;
}
.logs__table .rt-thead.-header {
box-shadow: none;
font-weight: bold;
}
.logs__table .rt-thead .rt-th {
padding: 0.9375rem 0.9375rem 0.875rem 0;
text-align: left;
border-right: 0;
}
.logs__table .rt-tbody .rt-td {
padding: 1rem 1rem 0.5rem 0;
border-right: 0;
}
.logs__table .rt-thead .rt-th:last-child,
.logs__table .rt-tbody .rt-td:last-child {
padding-right: 0;
}
.logs__table .rt-tbody .rt-tr-group {
border-bottom: 0;
}
.logs__table .rt-tr {
position: relative;
padding: 0 24px;
}
.logs__table .rt-tr {
position: relative;
padding: 0 1.5rem;
}
.logs__table .rt-tr-group:not(:first-child) .rt-tr:before {
content: "";
position: absolute;
left: 1.5rem;
right: 1.5rem;
top: 0;
width: calc(100% - 3rem);
height: 2px;
background-color: rgba(216, 216, 216, 0.23);
}
.logs__table .rt-tr-group:last-child .rt-tr:after,
.logs__table .rt-thead .rt-tr:after {
display: none;
}
.logs__time {
font-size: 1rem;
line-height: 1.5;
}
.detailed-info {
font-size: 0.8rem;
line-height: 1.4;
color: #888888;
}
.icon--selected {
background-color: var(--gray-f3);
border: solid 1px var(--gray-d8);
border-radius: 4px;
}
/* Hide 3 and 4 column on mobile */
.logs__table .rt-thead .rt-th:nth-child(3),
.logs__table .rt-thead .rt-th:nth-child(4),
.logs__table .rt-tbody .rt-td:nth-child(3),
.logs__table .rt-tbody .rt-td:nth-child(4) {
display: none;
}
@media screen and (min-width: 768px) {
.logs__table .rt-thead .rt-th:nth-child(3),
.logs__table .rt-thead .rt-th:nth-child(4),
.logs__table .rt-tbody .rt-td:nth-child(3),
.logs__table .rt-tbody .rt-td:nth-child(4) {
display: block;
}
}
.text-pre {
white-space: pre-wrap !important;
overflow-wrap: break-word;
overflow: visible;
}
.custom-pagination {
width: 11.875rem !important;
background-color: transparent;
box-shadow: none !important;
border: none !important;
align-items: center !important;
}
.custom-pagination--padding {
padding: 2.5rem 0 2.5rem !important;
}
.custom-pagination .-btn {
--side-size: 2rem;
background-color: transparent !important;
border: 1px solid var(--gray-d8) !important;
border-radius: 4px !important;
width: var(--side-size) !important;
height: var(--side-size) !important;
}
.custom-pagination .-btn:enabled:hover {
background-color: var(--gray-f3) !important;
}
.custom-pagination .-previous {
flex: 0 1 !important;
}
.custom-pagination .-next {
flex: 0 1 !important;
}
.custom-pagination .-btn {
display: flex !important;
}
.-pageInfo {
--side-size: 2rem;
font-variant-numeric: tabular-nums !important;
background-color: transparent !important;
border: 1px solid var(--gray-d8) !important;
border-radius: 4px !important;
width: var(--side-size) !important;
height: var(--side-size) !important;
margin: 0 !important;
display: flex !important;
justify-content: center;
align-items: center;
}
.pagination-bottom {
justify-content: center !important;
display: flex !important;
}
.-center:before {
content: '...';
transform: translateY(-0.25rem);
margin: auto;
}
.-center:after {
content: '...';
transform: translateY(-0.25rem);
margin: auto;
}
.icon--detailed-info {
position: absolute;
right: 0;
top: 0.5rem;
}
.icon--light-gray {
color: var(--gray-8);
}
.link--green {
color: var(--green79);
}
.row--detailed {
height: 4.9rem
}
.w-90 {
max-width: 90% !important;
}
.h-85 {
height: 85% !important;
}
.pt-45 {
padding-top: 1.25rem !important;
}
.pb-45 {
padding-bottom: 1.25rem !important;
}
.py-45 {
padding-top: 1.25rem !important;
padding-bottom: 1.25rem !important;
}
.mh-100 {
max-height: 100% !important;
}
.cursor--pointer {
cursor: pointer;
}
.custom-select__arrow--left {
background: #fff url('./chevron-down.svg') no-repeat left 0.2rem center;
background-size: 1.5rem;
}
.custom-select--logs {
padding: 0.5rem 0.75rem 0.5rem 1.75rem !important;
}
.bg--danger {
color: var(--danger);
}
.ml-small {
margin-left: 3.3125rem;
}
.form-control--search {
width: 39.125rem;
box-shadow: 0 1px 0 #ddd;
padding: 0 2.5rem;
height: 2.25rem;
}
.form-control--transparent {
border: 0 solid transparent !important;
background-color: transparent !important;
}
.input-group-search {
background-color: transparent;
position: relative;
left: 2rem;
top: 0.4rem;
width: 1.5rem;
height: 1.5rem;
}
.form-control--container {
max-width: 100%;
}
@media (max-width: 1279.98px) {
.form-control--search {
max-width: 30.125rem;
}
.form-control--container {
max-width: 70%;
}
.form-control--search {
max-width: 50%;
}
}
@media (max-width: 991.98px) {
.form-control--search {
max-width: 40%;
}
.form-control--container {
max-width: 100%;
}
}
@media (max-width: 767.98px) {
.rt-tr .logs__row .logs__text {
max-width: calc(100% - 1.5rem);
}
.ml-small {
margin-left: 1.5rem;
}
}
@media (max-width: 575px) {
.logs__table .rt-tr {
height: 3.125rem;
}
.logs__table .rt-tbody .rt-td {
padding: 0.625rem 1rem 0.875rem 0;
}
.logs__table {
min-height: 42rem;
}
}
@media (max-width: 500px) {
.form-control--search {
max-width: 85%;
}
.field__select {
margin-top: 1.5rem;
}
}
.loading__container > .-loading-inner {
top: 10rem !important;
bottom: initial !important;
}
.loading__text {
transform: translateY(3rem);
}
/*reset position to make absolute position of tooltip on tablets, may cause problems https://github.com/wwayne/react-tooltip/issues/204*/
@media (hover: none) {
.logs__action {
top: 1rem !important;
right: 1rem;
}
.logs__table .rt-td,
.clients__table .rt-td {
position: initial;
}
.logs__row {
position: initial;
}
}

View File

@ -0,0 +1,399 @@
import React from 'react';
import PropTypes from 'prop-types';
import { useTranslation, Trans } from 'react-i18next';
import ReactTable from 'react-table';
import classNames from 'classnames';
import endsWith from 'lodash/endsWith';
import escapeRegExp from 'lodash/escapeRegExp';
import {
BLOCK_ACTIONS,
DEFAULT_SHORT_DATE_FORMAT_OPTIONS,
LONG_TIME_FORMAT,
FILTERED_STATUS_TO_META_MAP,
TABLE_DEFAULT_PAGE_SIZE,
SCHEME_TO_PROTOCOL_MAP,
} from '../../helpers/constants';
import getDateCell from './Cells/getDateCell';
import getDomainCell from './Cells/getDomainCell';
import getClientCell from './Cells/getClientCell';
import getResponseCell from './Cells/getResponseCell';
import {
checkFiltered,
formatDateTime,
formatElapsedMs,
formatTime,
} from '../../helpers/helpers';
import Loading from '../ui/Loading';
const Table = (props) => {
const {
setDetailedDataCurrent,
setButtonType,
setModalOpened,
isSmallScreen,
setIsLoading,
filtering,
isDetailed,
toggleDetailedLogs,
setLogsPage,
setLogsPagination,
processingGetLogs,
logs,
pages,
page,
isLoading,
} = props;
const [t] = useTranslation();
const toggleBlocking = (type, domain) => {
const {
setRules, getFilteringStatus, addSuccessToast,
} = props;
const { userRules } = filtering;
const lineEnding = !endsWith(userRules, '\n') ? '\n' : '';
const baseRule = `||${domain}^$important`;
const baseUnblocking = `@@${baseRule}`;
const blockingRule = type === BLOCK_ACTIONS.BLOCK ? baseUnblocking : baseRule;
const unblockingRule = type === BLOCK_ACTIONS.BLOCK ? baseRule : baseUnblocking;
const preparedBlockingRule = new RegExp(`(^|\n)${escapeRegExp(blockingRule)}($|\n)`);
const preparedUnblockingRule = new RegExp(`(^|\n)${escapeRegExp(unblockingRule)}($|\n)`);
const matchPreparedBlockingRule = userRules.match(preparedBlockingRule);
const matchPreparedUnblockingRule = userRules.match(preparedUnblockingRule);
if (matchPreparedBlockingRule) {
setRules(userRules.replace(`${blockingRule}`, ''));
addSuccessToast(`${t('rule_removed_from_custom_filtering_toast')}: ${blockingRule}`);
} else if (!matchPreparedUnblockingRule) {
setRules(`${userRules}${lineEnding}${unblockingRule}\n`);
addSuccessToast(`${t('rule_added_to_custom_filtering_toast')}: ${unblockingRule}`);
} else if (matchPreparedUnblockingRule) {
addSuccessToast(`${t('rule_added_to_custom_filtering_toast')}: ${unblockingRule}`);
return;
} else if (!matchPreparedBlockingRule) {
addSuccessToast(`${t('rule_removed_from_custom_filtering_toast')}: ${blockingRule}`);
return;
}
getFilteringStatus();
};
const columns = [
{
Header: t('time_table_header'),
accessor: 'time',
Cell: (row) => getDateCell(row, isDetailed),
minWidth: 70,
maxHeight: 60,
headerClassName: 'logs__text',
},
{
Header: t('request_table_header'),
accessor: 'domain',
Cell: (row) => {
const {
isDetailed,
autoClients,
dnssec_enabled,
} = props;
return getDomainCell({
row,
t,
isDetailed,
toggleBlocking,
autoClients,
dnssec_enabled,
});
},
minWidth: 180,
maxHeight: 60,
headerClassName: 'logs__text',
},
{
Header: t('response_table_header'),
accessor: 'response',
Cell: (row) => getResponseCell(
row,
filtering,
t,
isDetailed,
),
minWidth: 150,
maxHeight: 60,
headerClassName: 'logs__text',
},
{
Header: () => {
const plainSelected = classNames('cursor--pointer', {
'icon--selected': !isDetailed,
});
const detailedSelected = classNames('cursor--pointer', {
'icon--selected': isDetailed,
});
return <div className="d-flex justify-content-between">
{t('client_table_header')}
{<span>
<svg
className={`icons icon--small icon--active mr-2 cursor--pointer ${plainSelected}`}
onClick={() => toggleDetailedLogs(false)}
>
<title><Trans>compact</Trans></title>
<use xlinkHref='#list' />
</svg>
<svg
className={`icons icon--small icon--active cursor--pointer ${detailedSelected}`}
onClick={() => toggleDetailedLogs(true)}
>
<title><Trans>default</Trans></title>
<use xlinkHref='#detailed_list' />
</svg>
</span>}
</div>;
},
accessor: 'client',
Cell: (row) => {
const {
isDetailed,
autoClients,
filtering: { processingRules },
} = props;
return getClientCell({
row,
t,
isDetailed,
toggleBlocking,
autoClients,
processingRules,
});
},
minWidth: 123,
maxHeight: 60,
headerClassName: 'logs__text',
},
];
const changePage = async (page) => {
setIsLoading(true);
const { oldest, getLogs, pages } = props;
const isLastPage = pages && (page + 1 === pages);
await Promise.all([
setLogsPage(page),
setLogsPagination({
page,
pageSize: TABLE_DEFAULT_PAGE_SIZE,
}),
].concat(isLastPage ? getLogs(oldest, page) : []));
setIsLoading(false);
};
const tableClass = classNames('logs__table', {
'logs__table--detailed': isDetailed,
});
return (
<ReactTable
manual
minRows={0}
page={page}
pages={pages}
columns={columns}
filterable={false}
sortable={false}
resizable={false}
data={logs || []}
loading={isLoading}
showPageJump={false}
showPageSizeOptions={false}
onPageChange={changePage}
className={tableClass}
defaultPageSize={TABLE_DEFAULT_PAGE_SIZE}
loadingText={
<>
<Loading />
<h6 className="loading__text">{t('loading_table_status')}</h6>
</>
}
getLoadingProps={() => ({ className: 'loading__container' })}
rowsText={t('rows_table_footer_text')}
noDataText={!processingGetLogs
&& <label className="logs__text logs__text--bold">{t('nothing_found')}</label>}
pageText=''
ofText=''
showPagination={logs.length > 0}
getPaginationProps={() => ({ className: 'custom-pagination custom-pagination--padding' })}
getTbodyProps={() => ({ className: 'd-block' })}
previousText={
<svg className="icons icon--small icon--gray w-100 h-100 cursor--pointer">
<title><Trans>previous_btn</Trans></title>
<use xlinkHref="#arrow-left" />
</svg>}
nextText={
<svg className="icons icon--small icon--gray w-100 h-100 cursor--pointer">
<title><Trans>next_btn</Trans></title>
<use xlinkHref="#arrow-right" />
</svg>}
renderTotalPagesCount={() => false}
getTrGroupProps={(_state, rowInfo) => {
if (!rowInfo) {
return {};
}
const { reason } = rowInfo.original;
const colorClass = FILTERED_STATUS_TO_META_MAP[reason] ? FILTERED_STATUS_TO_META_MAP[reason].color : 'white';
return { className: colorClass };
}}
getTrProps={(state, rowInfo) => ({
className: isDetailed ? 'row--detailed' : '',
onClick: () => {
if (isSmallScreen) {
const { dnssec_enabled, autoClients } = props;
const {
answer_dnssec,
client,
domain,
elapsedMs,
info,
reason,
response,
time,
tracker,
upstream,
type,
client_proto,
} = rowInfo.original;
const hasTracker = !!tracker;
const autoClient = autoClients.find(
(autoClient) => autoClient.name === client,
);
const country = autoClient && autoClient.whois_info
&& autoClient.whois_info.country;
const network = autoClient && autoClient.whois_info
&& autoClient.whois_info.orgname;
const city = autoClient && autoClient.whois_info
&& autoClient.whois_info.city;
const source = autoClient && autoClient.source;
const formattedElapsedMs = formatElapsedMs(elapsedMs, t);
const isFiltered = checkFiltered(reason);
const buttonType = isFiltered ? BLOCK_ACTIONS.UNBLOCK : BLOCK_ACTIONS.BLOCK;
const onToggleBlock = () => {
toggleBlocking(buttonType, domain);
};
const tracker_source = tracker && tracker.sourceData
&& tracker.sourceData.name;
const status = t((FILTERED_STATUS_TO_META_MAP[reason]
&& FILTERED_STATUS_TO_META_MAP[reason].label) || reason);
const statusBlocked = <div className="bg--danger">{status}</div>;
const protocol = t(SCHEME_TO_PROTOCOL_MAP[client_proto]) || '';
const detailedData = {
time_table_header: formatTime(time, LONG_TIME_FORMAT),
date: formatDateTime(time, DEFAULT_SHORT_DATE_FORMAT_OPTIONS),
encryption_status: status,
domain,
type_table_header: type,
protocol,
known_tracker: hasTracker && 'title',
table_name: hasTracker && tracker.name,
category_label: hasTracker && tracker.category,
tracker_source: hasTracker && tracker_source && <a href={`//${source}`}
className="link--green">{tracker_source}</a>,
response_details: 'title',
install_settings_dns: upstream,
elapsed: formattedElapsedMs,
response_table_header: response && response.join('\n'),
client_details: 'title',
ip_address: client,
name: info && info.name,
country,
city,
network,
source_label: source,
validated_with_dnssec: dnssec_enabled ? Boolean(answer_dnssec) : false,
[buttonType]: <div onClick={onToggleBlock}
className="title--border bg--danger">{t(buttonType)}</div>,
};
const detailedDataBlocked = {
time_table_header: formatTime(time, LONG_TIME_FORMAT),
date: formatDateTime(time, DEFAULT_SHORT_DATE_FORMAT_OPTIONS),
encryption_status: statusBlocked,
domain,
type_table_header: type,
protocol,
known_tracker: 'title',
table_name: hasTracker && tracker.name,
category_label: hasTracker && tracker.category,
source_label: hasTracker && source
&& <a href={`//${source}`} className="link--green">{source}</a>,
response_details: 'title',
install_settings_dns: upstream,
elapsed: formattedElapsedMs,
response_table_header: response && response.join('\n'),
[buttonType]: <div onClick={onToggleBlock}
className="title--border">{t(buttonType)}</div>,
};
const detailedDataCurrent = isFiltered ? detailedDataBlocked : detailedData;
setDetailedDataCurrent(detailedDataCurrent);
setButtonType(buttonType);
setModalOpened(true);
}
},
})}
/>
);
};
Table.propTypes = {
logs: PropTypes.array.isRequired,
pages: PropTypes.number.isRequired,
page: PropTypes.number.isRequired,
autoClients: PropTypes.array.isRequired,
defaultPageSize: PropTypes.number,
oldest: PropTypes.string.isRequired,
filtering: PropTypes.object.isRequired,
processingGetLogs: PropTypes.bool.isRequired,
processingGetConfig: PropTypes.bool.isRequired,
isDetailed: PropTypes.bool.isRequired,
setLogsPage: PropTypes.func.isRequired,
setLogsPagination: PropTypes.func.isRequired,
getLogs: PropTypes.func.isRequired,
toggleDetailedLogs: PropTypes.func.isRequired,
setRules: PropTypes.func.isRequired,
addSuccessToast: PropTypes.func.isRequired,
getFilteringStatus: PropTypes.func.isRequired,
isLoading: PropTypes.bool.isRequired,
setIsLoading: PropTypes.func.isRequired,
dnssec_enabled: PropTypes.bool.isRequired,
setDetailedDataCurrent: PropTypes.func.isRequired,
setButtonType: PropTypes.func.isRequired,
setModalOpened: PropTypes.func.isRequired,
isSmallScreen: PropTypes.bool.isRequired,
};
export default Table;

View File

@ -0,0 +1,44 @@
import React from 'react';
import PropTypes from 'prop-types';
import { Trans } from 'react-i18next';
import classNames from 'classnames';
import Tooltip from './index';
const CustomTooltip = ({
id, title, className, contentItemClass, place = 'right', columnClass = '', content, trigger, overridePosition, scrollHide,
renderContent = React.Children.map(
content,
(item, idx) => <div key={idx} className={contentItemClass}>
<Trans>{item || '—'}</Trans>
</div>,
),
}) => <Tooltip id={id} className={className} place={place} trigger={trigger}
overridePosition={overridePosition}
scrollHide={scrollHide}
>
{title
&& <div className="pb-4 h-25 grid-content font-weight-bold"><Trans>{title}</Trans></div>}
<div className={classNames(columnClass)}>{renderContent}</div>
</Tooltip>;
CustomTooltip.propTypes = {
id: PropTypes.string.isRequired,
title: PropTypes.string,
place: PropTypes.string,
className: PropTypes.string,
columnClass: PropTypes.string,
contentItemClass: PropTypes.string,
overridePosition: PropTypes.func,
scrollHide: PropTypes.bool,
content: PropTypes.oneOfType([
PropTypes.string,
PropTypes.array,
]),
trigger: PropTypes.oneOfType([
PropTypes.string,
PropTypes.arrayOf(PropTypes.string),
]),
renderContent: PropTypes.arrayOf(PropTypes.element),
};
export default CustomTooltip;

View File

@ -0,0 +1,129 @@
.custom-tooltip {
padding: 1rem 1.5rem 1.25rem 1.5rem;
font-size: 16px !important;
box-shadow: 2px 4px 8px rgba(0, 0, 0, 0.2);
border-radius: 4px !important;
pointer-events: auto !important;
}
/*crutch, may cause problems https://github.com/wwayne/react-tooltip/issues/204*/
@media (hover: none) {
.custom-tooltip {
position: absolute !important;
top: 4rem !important;
}
}
.white-space--nowrap {
white-space: nowrap !important;
}
.white-space--normal {
white-space: normal !important;
}
.word-break--break-all {
word-break: break-all !important;
}
.grid {
display: grid;
grid-template-columns: repeat(2, min-content);
grid-row-gap: 0.5rem;
grid-column-gap: 1rem;
}
.grid--limited {
grid-template-columns: repeat(2, minmax(0, min-content));
}
.grid--gap-bg {
grid-column-gap: 1.5rem;
}
.grid--title {
font-weight: bold;
}
.grid--title:not(:first-child) {
padding-top: 1rem;
}
@media (max-width: 767.98px) {
.grid {
grid-template-columns: 35% 55%;
}
.grid * {
grid-column: 1 / -1;
}
.grid > :nth-child(even) {
margin: -0.5rem 0 0;
}
.grid > .key__time_table_header, .grid > .key__data, .grid > .key__encryption_status, .grid > .key__elapsed {
grid-column: 1 / span 1;
}
.grid > .value__time_table_header, .grid > .value__data, .grid > .value__encryption_status, .grid > .value__elapsed {
grid-column: 2 / span 1;
margin: 0 !important;
}
.grid .key-colon, .grid .title--border {
font-weight: bold;
}
.custom-tooltip {
overflow-y: scroll;
}
}
.grid .key-colon:nth-child(odd)::after {
content: ':';
}
.grid__one-row {
grid-template-columns: 15rem;
}
.grid__flow-column {
grid-auto-flow: column;
}
.custom-tooltip.show {
opacity: 1 !important;
}
.custom-tooltip:hover {
opacity: 1 !important;
}
.grid-content > * {
justify-content: space-between !important;
width: 100% !important;
overflow: hidden;
-o-text-overflow: ellipsis;
text-overflow: ellipsis;
white-space: nowrap;
}
.title--border {
padding-top: 2rem;
}
.title--border:before {
content: '';
position: absolute;
left: 0;
border-top: 0.5px solid var(--gray-d8) !important;
width: 100%;
margin-top: -1rem;
}
.icon-cross {
position: absolute;
right: 0.5rem;
top: 0.5rem;
}

View File

@ -0,0 +1,48 @@
import React from 'react';
import PropTypes from 'prop-types';
import ReactTooltip from 'react-tooltip';
import classNames from 'classnames';
import './ReactTooltip.css';
import { touchMediaQuery } from '../../../helpers/constants';
const Tooltip = ({
id, children, className = '', place = 'right', trigger = 'hover', overridePosition, scrollHide = true,
}) => {
const tooltipClassName = classNames('custom-tooltip', className);
return (
<ReactTooltip
id={id}
aria-haspopup="true"
effect="solid"
place={place}
className={tooltipClassName}
backgroundColor="#fff"
arrowColor="transparent"
textColor="#4d4d4d"
delayHide={300}
scrollHide={window.matchMedia(touchMediaQuery).matches ? false : scrollHide}
trigger={trigger}
overridePosition={overridePosition}
globalEventOff="click touchend"
clickable
>
{children}
</ReactTooltip>
);
};
Tooltip.propTypes = {
id: PropTypes.string.isRequired,
children: PropTypes.node.isRequired,
className: PropTypes.string,
place: PropTypes.string,
overridePosition: PropTypes.func,
scrollHide: PropTypes.bool,
trigger: PropTypes.oneOfType([
PropTypes.string,
PropTypes.arrayOf(PropTypes.string),
]),
};
export default Tooltip;

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#9aa0ac" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-down"><polyline points="6 9 12 15 18 9"></polyline></svg>

After

Width:  |  Height:  |  Size: 264 B

View File

@ -1,457 +1,210 @@
import React, { Component, Fragment } from 'react'; import React, { Fragment, useEffect, useState } from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import ReactTable from 'react-table'; import { Trans } from 'react-i18next';
import escapeRegExp from 'lodash/escapeRegExp'; import Modal from 'react-modal';
import endsWith from 'lodash/endsWith'; import { useDispatch } from 'react-redux';
import { Trans, withTranslation } from 'react-i18next';
import { HashLink as Link } from 'react-router-hash-link';
import { import {
formatTime, BLOCK_ACTIONS, smallScreenSize,
formatDateTime, TABLE_DEFAULT_PAGE_SIZE,
isToday, TABLE_FIRST_PAGE,
checkFiltered,
checkRewrite,
checkRewriteHosts,
checkWhiteList,
checkBlackList,
checkBlockedService,
} from '../../helpers/helpers';
import {
SERVICES, TABLE_DEFAULT_PAGE_SIZE, CUSTOM_FILTERING_RULES_ID, FILTERED,
} from '../../helpers/constants'; } from '../../helpers/constants';
import { getTrackerData } from '../../helpers/trackers/trackers';
import { formatClientCell } from '../../helpers/formatClientCell';
import Filters from './Filters';
import PageTitle from '../ui/PageTitle';
import Card from '../ui/Card';
import Loading from '../ui/Loading'; import Loading from '../ui/Loading';
import PopoverFiltered from '../ui/PopoverFilter'; import Filters from './Filters';
import Popover from '../ui/Popover'; import Table from './Table';
import Disabled from './Disabled';
import './Logs.css'; import './Logs.css';
import CellWrap from '../ui/CellWrap'; import { getFilteringStatus } from '../../actions/filtering';
import { getClients } from '../../actions';
import { getDnsConfig } from '../../actions/dnsConfig';
import { getLogsConfig } from '../../actions/queryLogs';
import { addSuccessToast } from '../../actions/toasts';
const TABLE_FIRST_PAGE = 0;
const INITIAL_REQUEST = true; const INITIAL_REQUEST = true;
const INITIAL_REQUEST_DATA = ['', TABLE_FIRST_PAGE, INITIAL_REQUEST]; const INITIAL_REQUEST_DATA = ['', TABLE_FIRST_PAGE, INITIAL_REQUEST];
class Logs extends Component { export const processContent = (data, buttonType) => Object.entries(data)
componentDidMount() { .map(([key, value]) => {
this.props.setLogsPage(TABLE_FIRST_PAGE); const isTitle = value === 'title';
this.getLogs(...INITIAL_REQUEST_DATA); const isButton = key === buttonType;
this.props.getFilteringStatus(); const isBoolean = typeof value === 'boolean';
this.props.getLogsConfig(); const isHidden = isBoolean && value === false;
let keyClass = 'key-colon';
if (isTitle) {
keyClass = 'title--border';
}
if (isButton || isBoolean) {
keyClass = '';
} }
getLogs = (older_than, page, initial) => { return isHidden ? null : <Fragment key={key}>
if (this.props.queryLogs.enabled) { <div
this.props.getLogs({ className={`key__${key} ${keyClass} ${(isBoolean && value === true) ? 'font-weight-bold' : ''}`}>
older_than, page, pageSize: TABLE_DEFAULT_PAGE_SIZE, initial, <Trans>{isButton ? value : key}</Trans>
</div>
<div className={`value__${key} text-pre text-truncate`}>
<Trans>{(isTitle || isButton || isBoolean) ? '' : value || '—'}</Trans>
</div>
</Fragment>;
});
const Logs = (props) => {
const dispatch = useDispatch();
const [isSmallScreen, setIsSmallScreen] = useState(window.innerWidth < smallScreenSize);
const [detailedDataCurrent, setDetailedDataCurrent] = useState({});
const [buttonType, setButtonType] = useState(BLOCK_ACTIONS.BLOCK);
const [isModalOpened, setModalOpened] = useState(false);
const [isLoading, setIsLoading] = useState(false);
const {
filtering,
setLogsPage,
setLogsPagination,
setLogsFilter,
toggleDetailedLogs,
dashboard,
dnsConfig,
queryLogs: {
filter,
enabled,
processingGetConfig,
processingAdditionalLogs,
processingGetLogs,
oldest,
logs,
pages,
page,
isDetailed,
},
} = props;
const mediaQuery = window.matchMedia(`(max-width: ${smallScreenSize}px)`);
const mediaQueryHandler = (e) => {
setIsSmallScreen(e.matches);
if (e.matches) {
toggleDetailedLogs(false);
}
};
useEffect(() => {
mediaQuery.addListener(mediaQueryHandler);
return () => mediaQuery.removeListener(mediaQueryHandler);
}, []);
const closeModal = () => setModalOpened(false);
const getLogs = (older_than, page, initial) => {
if (props.queryLogs.enabled) {
props.getLogs({
older_than,
page,
pageSize: TABLE_DEFAULT_PAGE_SIZE,
initial,
}); });
} }
}; };
refreshLogs = () => { useEffect(() => {
window.location.reload(); (async () => {
}; setIsLoading(true);
dispatch(setLogsPage(TABLE_FIRST_PAGE));
renderTooltip = (isFiltered, rule, filter, service) => isFiltered dispatch(getFilteringStatus());
&& <PopoverFiltered rule={rule} filter={filter} service={service} />; dispatch(getClients());
try {
renderResponseList = (response, status) => { await Promise.all([
if (response.length > 0) { getLogs(...INITIAL_REQUEST_DATA),
const listItems = response.map((response, index) => ( dispatch(getLogsConfig()),
<li key={index} title={response} className="logs__list-item"> dispatch(getDnsConfig()),
{response} ]);
</li> } catch (err) {
)); console.error(err);
} finally {
return <ul className="list-unstyled">{listItems}</ul>; setIsLoading(false);
} }
})();
}, []);
const refreshLogs = async () => {
setIsLoading(true);
await Promise.all([
dispatch(setLogsPage(TABLE_FIRST_PAGE)),
getLogs(...INITIAL_REQUEST_DATA),
]);
dispatch(addSuccessToast('query_log_updated'));
setIsLoading(false);
};
return ( return (
<div> <>
<Trans values={{ value: status }}>query_log_response_status</Trans>
</div>
);
};
toggleBlocking = (type, domain) => {
const { userRules } = this.props.filtering;
const { t } = this.props;
const lineEnding = !endsWith(userRules, '\n') ? '\n' : '';
const baseRule = `||${domain}^$important`;
const baseUnblocking = `@@${baseRule}`;
const blockingRule = type === 'block' ? baseUnblocking : baseRule;
const unblockingRule = type === 'block' ? baseRule : baseUnblocking;
const preparedBlockingRule = new RegExp(`(^|\n)${escapeRegExp(blockingRule)}($|\n)`);
const preparedUnblockingRule = new RegExp(`(^|\n)${escapeRegExp(unblockingRule)}($|\n)`);
if (userRules.match(preparedBlockingRule)) {
this.props.setRules(userRules.replace(`${blockingRule}`, ''));
this.props.addSuccessToast(`${t('rule_removed_from_custom_filtering_toast')}: ${blockingRule}`);
} else if (!userRules.match(preparedUnblockingRule)) {
this.props.setRules(`${userRules}${lineEnding}${unblockingRule}\n`);
this.props.addSuccessToast(`${t('rule_added_to_custom_filtering_toast')}: ${unblockingRule}`);
}
this.props.getFilteringStatus();
};
renderBlockingButton(isFiltered, domain) {
const buttonClass = isFiltered ? 'btn-outline-secondary' : 'btn-outline-danger';
const buttonText = isFiltered ? 'unblock_btn' : 'block_btn';
const buttonType = isFiltered ? 'unblock' : 'block';
return (
<div className="logs__action">
<button
type="button"
className={`btn btn-sm ${buttonClass}`}
onClick={() => this.toggleBlocking(buttonType, domain)}
disabled={this.props.filtering.processingRules}
>
<Trans>{buttonText}</Trans>
</button>
</div>
);
}
getDateCell = (row) => CellWrap(
row,
(isToday(row.value) ? formatTime : formatDateTime),
formatDateTime,
);
getDomainCell = (row) => {
const response = row.value;
const trackerData = getTrackerData(response);
return (
<div className="logs__row" title={response}>
<div className="logs__text">{response}</div>
{trackerData && <Popover data={trackerData} />}
</div>
);
};
normalizeResponse = (response) => (
response.map((response) => {
const { value, type, ttl } = response;
return `${type}: ${value} (ttl=${ttl})`;
})
);
getFilterName = (filters, whitelistFilters, filterId, t) => {
if (filterId === CUSTOM_FILTERING_RULES_ID) {
return t('custom_filter_rules');
}
const filter = filters.find((filter) => filter.id === filterId)
|| whitelistFilters.find((filter) => filter.id === filterId);
let filterName = '';
if (filter) {
filterName = filter.name;
}
if (!filterName) {
filterName = t('unknown_filter', { filterId });
}
return filterName;
}
getResponseCell = ({ value: responses, original }) => {
const {
reason, filterId, rule, status, originalAnswer,
} = original;
const { t, filtering } = this.props;
const { filters, whitelistFilters } = filtering;
const isFiltered = checkFiltered(reason);
const isBlackList = checkBlackList(reason);
const isRewrite = checkRewrite(reason);
const isRewriteAuto = checkRewriteHosts(reason);
const isWhiteList = checkWhiteList(reason);
const isBlockedService = checkBlockedService(reason);
const isBlockedCnameIp = originalAnswer;
const filterKey = reason.replace(FILTERED, '');
const parsedFilteredReason = t('query_log_filtered', { filter: filterKey });
const currentService = SERVICES.find((service) => service.id === original.serviceName);
const serviceName = currentService && currentService.name;
const filterName = this.getFilterName(filters, whitelistFilters, filterId, t);
if (isBlockedCnameIp) {
const normalizedAnswer = this.normalizeResponse(originalAnswer);
return (
<div className="logs__row logs__row--column">
<div className="logs__text-wrap">
<span className="logs__text">
<Trans>blocked_by_response</Trans>
</span>
{this.renderTooltip(isFiltered, rule, filterName)}
</div>
<div className="logs__list-wrap">
{this.renderResponseList(normalizedAnswer, status)}
</div>
</div>
);
}
return (
<div className="logs__row logs__row--column">
<div className="logs__text-wrap">
{(isFiltered || isBlockedService) && !isBlackList && (
<span className="logs__text" title={parsedFilteredReason}>
{parsedFilteredReason}
</span>
)}
{isBlackList && (
<span className="logs__text">
<Trans values={{ filter: filterName }}>
query_log_filtered
</Trans>
</span>
)}
{isBlockedService
? this.renderTooltip(isFiltered, '', '', serviceName)
: this.renderTooltip(isFiltered, rule, filterName)}
{isRewrite && (
<strong>
<Trans>rewrite_applied</Trans>
</strong>
)}
{isRewriteAuto && (
<span className="logs__text">
<strong>
<Trans>rewrite_hosts_applied</Trans>
</strong>
</span>
)}
</div>
<div className="logs__list-wrap">
{this.renderResponseList(responses, status)}
{isWhiteList && this.renderTooltip(isWhiteList, rule, filterName)}
</div>
</div>
);
};
getClientCell = (row) => {
const { original } = row;
const { t } = this.props;
const { reason, domain } = original;
const isFiltered = checkFiltered(reason);
const isRewrite = checkRewrite(reason);
const isAutoRewrite = checkRewriteHosts(reason);
if (isAutoRewrite) {
return (
<div className="logs__row logs__row--overflow logs__row--column">
{formatClientCell(row, t)}
</div>
);
}
return (
<Fragment>
<div className="logs__row logs__row--overflow logs__row--column">
{formatClientCell(row, t)}
</div>
{isRewrite ? (
<div className="logs__action">
<Link to="/dns_rewrites" className="btn btn-sm btn-outline-primary">
<Trans>configure</Trans>
</Link>
</div>
) : (
this.renderBlockingButton(isFiltered, domain)
)}
</Fragment>
);
};
fetchData = (state) => {
const { pages } = state;
const { oldest, page } = this.props.queryLogs;
const isLastPage = pages && (page + 1 === pages);
if (isLastPage) {
this.getLogs(oldest, page);
}
};
changePage = (page) => {
this.props.setLogsPage(page);
this.props.setLogsPagination({ page, pageSize: TABLE_DEFAULT_PAGE_SIZE });
};
renderLogs() {
const { queryLogs, t } = this.props;
const {
processingGetLogs, processingGetConfig, logs, pages, page,
} = queryLogs;
const isLoading = processingGetLogs || processingGetConfig;
const columns = [
{
Header: t('time_table_header'),
accessor: 'time',
minWidth: 105,
Cell: this.getDateCell,
},
{
Header: t('domain_name_table_header'),
accessor: 'domain',
minWidth: 180,
Cell: this.getDomainCell,
},
{
Header: t('type_table_header'),
accessor: 'type',
maxWidth: 60,
},
{
Header: t('response_table_header'),
accessor: 'response',
minWidth: 250,
Cell: this.getResponseCell,
},
{
Header: t('client_table_header'),
accessor: 'client',
maxWidth: 240,
minWidth: 240,
Cell: this.getClientCell,
},
];
return (
<ReactTable
manual
minRows={5}
page={page}
pages={pages}
columns={columns}
filterable={false}
sortable={false}
data={logs || []}
loading={isLoading}
showPagination={true}
showPaginationTop={true}
showPageJump={false}
showPageSizeOptions={false}
onFetchData={this.fetchData}
onPageChange={this.changePage}
className="logs__table"
defaultPageSize={TABLE_DEFAULT_PAGE_SIZE}
previousText={t('previous_btn')}
nextText={t('next_btn')}
loadingText={t('loading_table_status')}
rowsText={t('rows_table_footer_text')}
noDataText={t('no_logs_found')}
pageText={''}
ofText={''}
renderTotalPagesCount={() => false}
defaultFilterMethod={(filter, row) => {
const id = filter.pivotId || filter.id;
return row[id] !== undefined
? String(row[id]).indexOf(filter.value) !== -1
: true;
}}
defaultSorted={[
{
id: 'time',
desc: true,
},
]}
getTrProps={(_state, rowInfo) => {
if (!rowInfo) {
return {};
}
const { reason } = rowInfo.original;
if (checkFiltered(reason)) {
return {
className: 'red',
};
} if (checkWhiteList(reason)) {
return {
className: 'green',
};
} if (checkRewrite(reason) || checkRewriteHosts(reason)) {
return {
className: 'blue',
};
}
return {
className: '',
};
}}
/>
);
}
render() {
const { queryLogs, t } = this.props;
const {
enabled, processingGetConfig, processingAdditionalLogs, processingGetLogs,
} = queryLogs;
const refreshButton = enabled ? (
<button
type="button"
className="btn btn-icon btn-outline-primary btn-sm ml-3"
onClick={this.refreshLogs}
>
<svg className="icons">
<use xlinkHref="#refresh" />
</svg>
</button>
) : (
''
);
return (
<Fragment>
<PageTitle title={t('query_log')}>{refreshButton}</PageTitle>
{enabled && processingGetConfig && <Loading />} {enabled && processingGetConfig && <Loading />}
{enabled && !processingGetConfig && ( {enabled && !processingGetConfig && (
<Fragment> <Fragment>
<Filters <Filters
filter={queryLogs.filter} filter={filter}
setIsLoading={setIsLoading}
processingGetLogs={processingGetLogs} processingGetLogs={processingGetLogs}
processingAdditionalLogs={processingAdditionalLogs} processingAdditionalLogs={processingAdditionalLogs}
setLogsFilter={this.props.setLogsFilter} setLogsFilter={setLogsFilter}
refreshLogs={refreshLogs}
/> />
<Card>{this.renderLogs()}</Card> <Table
isLoading={isLoading}
setIsLoading={setIsLoading}
logs={logs}
pages={pages}
page={page}
autoClients={dashboard.autoClients}
oldest={oldest}
filtering={filtering}
processingGetLogs={processingGetLogs}
processingGetConfig={processingGetConfig}
isDetailed={isDetailed}
setLogsPagination={setLogsPagination}
setLogsPage={setLogsPage}
toggleDetailedLogs={toggleDetailedLogs}
getLogs={getLogs}
setRules={props.setRules}
addSuccessToast={props.addSuccessToast}
getFilteringStatus={props.getFilteringStatus}
dnssec_enabled={dnsConfig.dnssec_enabled}
setDetailedDataCurrent={setDetailedDataCurrent}
setButtonType={setButtonType}
setModalOpened={setModalOpened}
isSmallScreen={isSmallScreen}
/>
<Modal portalClassName='grid' isOpen={isSmallScreen && isModalOpened}
onRequestClose={closeModal}
style={{
content: {
width: '100%',
height: 'fit-content',
left: 0,
top: 47,
padding: '1rem 1.5rem 1rem',
},
overlay: {
backgroundColor: 'rgba(0,0,0,0.5)',
},
}}
>
<svg
className="icon icon--small icon-cross d-block d-md-none cursor--pointer"
onClick={closeModal}>
<use xlinkHref="#cross" />
</svg>
{processContent(detailedDataCurrent, buttonType)}
</Modal>
</Fragment> </Fragment>
)} )}
{!enabled && !processingGetConfig && ( {!enabled && !processingGetConfig && (
<Card> <Disabled />
<div className="lead text-center py-6">
<Trans
components={[
<Link to="/settings#logs-config" key="0">
link
</Link>,
]}
>
query_log_disabled
</Trans>
</div>
</Card>
)} )}
</Fragment> </>
); );
} };
}
Logs.propTypes = { Logs.propTypes = {
getLogs: PropTypes.func.isRequired, getLogs: PropTypes.func.isRequired,
@ -461,12 +214,11 @@ Logs.propTypes = {
filtering: PropTypes.object.isRequired, filtering: PropTypes.object.isRequired,
setRules: PropTypes.func.isRequired, setRules: PropTypes.func.isRequired,
addSuccessToast: PropTypes.func.isRequired, addSuccessToast: PropTypes.func.isRequired,
getClients: PropTypes.func.isRequired,
getLogsConfig: PropTypes.func.isRequired,
setLogsPagination: PropTypes.func.isRequired, setLogsPagination: PropTypes.func.isRequired,
setLogsFilter: PropTypes.func.isRequired, setLogsFilter: PropTypes.func.isRequired,
setLogsPage: PropTypes.func.isRequired, setLogsPage: PropTypes.func.isRequired,
t: PropTypes.func.isRequired, toggleDetailedLogs: PropTypes.func.isRequired,
dnsConfig: PropTypes.object.isRequired,
}; };
export default withTranslation()(Logs); export default Logs;

View File

@ -79,16 +79,26 @@ class AutoClients extends Component {
}, },
]} ]}
className="-striped -highlight card-table-overflow" className="-striped -highlight card-table-overflow"
showPagination={true} showPagination
defaultPageSize={10} defaultPageSize={10}
minRows={5} minRows={5}
previousText={t('previous_btn')} showPageSizeOptions={false}
nextText={t('next_btn')} showPageJump={false}
renderTotalPagesCount={() => false}
previousText={
<svg className="icons icon--small icon--gray w-100 h-100">
<use xlinkHref="#arrow-left" />
</svg>}
nextText={
<svg className="icons icon--small icon--gray w-100 h-100">
<use xlinkHref="#arrow-right" />
</svg>}
loadingText={t('loading_table_status')} loadingText={t('loading_table_status')}
pageText={t('page_table_footer_text')} pageText=''
ofText="/" ofText=''
rowsText={t('rows_table_footer_text')} rowsText={t('rows_table_footer_text')}
noDataText={t('clients_not_found')} noDataText={t('clients_not_found')}
getPaginationProps={() => ({ className: 'custom-pagination' })}
/> />
</Card> </Card>
); );

View File

@ -91,7 +91,7 @@ class ClientsTable extends Component {
const { value } = row; const { value } = row;
return ( return (
<div className="logs__row logs__row--overflow"> <div className="logs__row o-hidden">
<span className="logs__text"> <span className="logs__text">
{value.map((address) => ( {value.map((address) => (
<div key={address} title={address}> <div key={address} title={address}>
@ -121,7 +121,7 @@ class ClientsTable extends Component {
); );
return ( return (
<div className="logs__row logs__row--overflow"> <div className="logs__row o-hidden">
<div className="logs__text">{title}</div> <div className="logs__text">{title}</div>
</div> </div>
); );
@ -167,7 +167,7 @@ class ClientsTable extends Component {
); );
return ( return (
<div className="logs__row logs__row--overflow"> <div className="logs__row o-hidden">
<div className="logs__text">{title}</div> <div className="logs__text">{title}</div>
</div> </div>
); );
@ -185,7 +185,7 @@ class ClientsTable extends Component {
} }
return ( return (
<div className="logs__row logs__row--overflow"> <div className="logs__row o-hidden">
<span className="logs__text"> <span className="logs__text">
{value.map((tag) => ( {value.map((tag) => (
<div key={tag} title={tag} className="small"> <div key={tag} title={tag} className="small">
@ -282,16 +282,26 @@ class ClientsTable extends Component {
}, },
]} ]}
className="-striped -highlight card-table-overflow" className="-striped -highlight card-table-overflow"
showPagination={true} showPagination
defaultPageSize={10} defaultPageSize={10}
minRows={5} minRows={5}
previousText={t('previous_btn')} showPageSizeOptions={false}
nextText={t('next_btn')} showPageJump={false}
renderTotalPagesCount={() => false}
previousText={
<svg className="icons icon--small icon--gray w-100 h-100">
<use xlinkHref="#arrow-left" />
</svg>}
nextText={
<svg className="icons icon--small icon--gray w-100 h-100">
<use xlinkHref="#arrow-right" />
</svg>}
loadingText={t('loading_table_status')} loadingText={t('loading_table_status')}
pageText={t('page_table_footer_text')} pageText=''
ofText="/" ofText=''
rowsText={t('rows_table_footer_text')} rowsText={t('rows_table_footer_text')}
noDataText={t('clients_not_found')} noDataText={t('clients_not_found')}
getPaginationProps={() => ({ className: 'custom-pagination' })}
/> />
<button <button
type="button" type="button"

View File

@ -89,7 +89,7 @@ const renderFieldsWrapper = (placeholder, buttonTitle) => function cell(row) {
onClick={() => fields.push()} onClick={() => fields.push()}
title={buttonTitle} title={buttonTitle}
> >
<svg className="icon icon--close"> <svg className="icon icon--small">
<use xlinkHref="#plus" /> <use xlinkHref="#plus" />
</svg> </svg>
</button> </button>

View File

@ -32,11 +32,9 @@ const getFormattedWhois = (value, t) => {
const whoisCell = (t) => function cell(row) { const whoisCell = (t) => function cell(row) {
const { value } = row; const { value } = row;
return ( return <div className="logs__row o-hidden">
<div className="logs__row logs__row--overflow"> <div className="logs__text logs__text--wrap">{getFormattedWhois(value, t)}</div>
<span className="logs__text logs__text--wrap">{getFormattedWhois(value, t)}</span> </div>;
</div>
);
}; };
export default whoisCell; export default whoisCell;

View File

@ -2,11 +2,11 @@ import React, { Component } from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import ReactTable from 'react-table'; import ReactTable from 'react-table';
import { Trans, withTranslation } from 'react-i18next'; import { Trans, withTranslation } from 'react-i18next';
import { SMALL_TABLE_DEFAULT_PAGE_SIZE } from '../../../helpers/constants'; import { LEASES_TABLE_DEFAULT_PAGE_SIZE } from '../../../helpers/constants';
class Leases extends Component { class Leases extends Component {
cellWrap = ({ value }) => ( cellWrap = ({ value }) => (
<div className="logs__row logs__row--overflow"> <div className="logs__row o-hidden">
<span className="logs__text" title={value}> <span className="logs__text" title={value}>
{value} {value}
</span> </span>
@ -37,9 +37,9 @@ class Leases extends Component {
Cell: this.cellWrap, Cell: this.cellWrap,
}, },
]} ]}
pageSize={SMALL_TABLE_DEFAULT_PAGE_SIZE} pageSize={LEASES_TABLE_DEFAULT_PAGE_SIZE}
showPageSizeOptions={false} showPageSizeOptions={false}
showPagination={leases.length > SMALL_TABLE_DEFAULT_PAGE_SIZE} showPagination={leases.length > LEASES_TABLE_DEFAULT_PAGE_SIZE}
noDataText={t('dhcp_leases_not_found')} noDataText={t('dhcp_leases_not_found')}
minRows={6} minRows={6}
className="-striped -highlight card-table-overflow" className="-striped -highlight card-table-overflow"

View File

@ -2,13 +2,13 @@ import React, { Component, Fragment } from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import ReactTable from 'react-table'; import ReactTable from 'react-table';
import { Trans, withTranslation } from 'react-i18next'; import { Trans, withTranslation } from 'react-i18next';
import { SMALL_TABLE_DEFAULT_PAGE_SIZE } from '../../../../helpers/constants'; import { LEASES_TABLE_DEFAULT_PAGE_SIZE } from '../../../../helpers/constants';
import Modal from './Modal'; import Modal from './Modal';
class StaticLeases extends Component { class StaticLeases extends Component {
cellWrap = ({ value }) => ( cellWrap = ({ value }) => (
<div className="logs__row logs__row--overflow"> <div className="logs__row o-hidden">
<span className="logs__text" title={value}> <span className="logs__text" title={value}>
{value} {value}
</span> </span>
@ -67,7 +67,7 @@ class StaticLeases extends Component {
<div className="logs__row logs__row--center"> <div className="logs__row logs__row--center">
<button <button
type="button" type="button"
className="btn btn-icon btn-outline-secondary btn-sm" className="btn btn-icon btn-icon--green btn-outline-secondary btn-sm"
title={t('delete_table_action')} title={t('delete_table_action')}
disabled={processingDeleting} disabled={processingDeleting}
onClick={() => this.handleDelete(ip, mac, hostname) onClick={() => this.handleDelete(ip, mac, hostname)
@ -82,9 +82,9 @@ class StaticLeases extends Component {
}, },
}, },
]} ]}
pageSize={SMALL_TABLE_DEFAULT_PAGE_SIZE} pageSize={LEASES_TABLE_DEFAULT_PAGE_SIZE}
showPageSizeOptions={false} showPageSizeOptions={false}
showPagination={staticLeases.length > SMALL_TABLE_DEFAULT_PAGE_SIZE} showPagination={staticLeases.length > LEASES_TABLE_DEFAULT_PAGE_SIZE}
noDataText={t('dhcp_static_leases_not_found')} noDataText={t('dhcp_static_leases_not_found')}
className="-striped -highlight card-table-overflow" className="-striped -highlight card-table-overflow"
minRows={6} minRows={6}

View File

@ -112,6 +112,11 @@
justify-content: center; justify-content: center;
width: 30px; width: 30px;
height: 30px; height: 30px;
background-color: transparent;
}
.btn-icon--green {
color: var(--green);
} }
.btn-icon-sm { .btn-icon-sm {

View File

@ -6,6 +6,13 @@
width: 345px; width: 345px;
} }
@media (max-width: 425px) {
.toasts {
right: 0;
width: 100%;
}
}
.toast { .toast {
display: flex; display: flex;
align-items: flex-start; align-items: flex-start;

View File

@ -1,20 +1,33 @@
import React, { Component } from 'react'; import React, { Component } from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { Trans, withTranslation } from 'react-i18next'; import { Trans, withTranslation } from 'react-i18next';
import { FAILURE_TOAST_TIMEOUT, SUCCESS_TOAST_TIMEOUT } from '../../helpers/constants';
class Toast extends Component { class Toast extends Component {
componentDidMount() { state = {
const timeout = this.props.type === 'success' ? 5000 : 30000; timerId: null,
};
setTimeout(() => { componentDidMount() {
this.props.removeToast(this.props.id); this.setRemoveToastTimeout();
}, timeout);
} }
shouldComponentUpdate() { shouldComponentUpdate() {
return false; return false;
} }
clearRemoveToastTimeout = () => clearTimeout(this.state.timerId);
setRemoveToastTimeout = () => {
const timeout = this.props.type === 'success' ? SUCCESS_TOAST_TIMEOUT : FAILURE_TOAST_TIMEOUT;
const timerId = setTimeout(() => {
this.props.removeToast(this.props.id);
}, timeout);
this.setState({ timerId });
};
showMessage(t, type, message) { showMessage(t, type, message) {
if (type === 'notice') { if (type === 'notice') {
return <span dangerouslySetInnerHTML={{ __html: t(message) }} />; return <span dangerouslySetInnerHTML={{ __html: t(message) }} />;
@ -29,12 +42,18 @@ class Toast extends Component {
} = this.props; } = this.props;
return ( return (
<div className={`toast toast--${type}`}> <div className={`toast toast--${type}`}
onMouseOver={this.clearRemoveToastTimeout}
onMouseOut={this.setRemoveToastTimeout}>
<p className="toast__content"> <p className="toast__content">
{this.showMessage(t, type, message)} {this.showMessage(t, type, message)}
</p> </p>
<button className="toast__dismiss" onClick={() => this.props.removeToast(id)}> <button className="toast__dismiss" onClick={() => this.props.removeToast(id)}>
<svg stroke="#fff" fill="none" width="20" height="20" strokeWidth="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m18 6-12 12"/><path d="m6 6 12 12"/></svg> <svg stroke="#fff" fill="none" width="20" height="20" strokeWidth="2"
viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path d="m18 6-12 12" />
<path d="m6 6 12 12" />
</svg>
</button> </button>
</div> </div>
); );

View File

@ -9,7 +9,7 @@ const CellWrap = ({ value }, formatValue, formatTitle = formatValue) => {
const cellTitle = typeof formatTitle === 'function' ? formatTitle(value) : value; const cellTitle = typeof formatTitle === 'function' ? formatTitle(value) : value;
return ( return (
<div className="logs__row logs__row--overflow"> <div className="logs__row o-hidden">
<span className="logs__text logs__text--full" title={cellTitle}> <span className="logs__text logs__text--full" title={cellTitle}>
{cellValue} {cellValue}
</span> </span>

View File

@ -4,7 +4,19 @@
height: 100%; height: 100%;
} }
.icon--close { .icon--small {
width: 24px; width: 1.5rem;
height: 24px; height: 1.5rem;
}
.icon--gray {
color: var(--gray-a5);
}
.icon--disabled {
color: var(--gray-d8);
}
.icon--active {
color: #66b574;
} }

File diff suppressed because one or more lines are too long

View File

@ -3,7 +3,7 @@ import React from 'react';
import './Loading.css'; import './Loading.css';
const Loading = () => ( const Loading = () => (
<div className="loading"></div> <div className="loading" />
); );
export default Loading; export default Loading;

View File

@ -3,13 +3,32 @@
align-items: flex-start; align-items: flex-start;
} }
.page-header--logs {
flex-direction: row;
align-items: flex-end;
margin: 2rem 0 3rem;
}
@media (max-width: 991px) {
.page-header--logs {
flex-direction: column;
align-items: center;
margin-bottom: 1.5rem;
}
.page-header--logs .page-title {
padding-bottom: 2.5rem;;
}
}
.page-subtitle { .page-subtitle {
margin-left: 0; margin-left: 0;
font-size: 0.9rem; font-size: 0.9rem;
} }
.page-title { .page-title--large {
line-height: 2.2rem; font-size: 36px;
line-height: 46px;
} }
.page-title__actions { .page-title__actions {

View File

@ -3,15 +3,15 @@ import PropTypes from 'prop-types';
import './PageTitle.css'; import './PageTitle.css';
const PageTitle = (props) => ( const PageTitle = ({ title, subtitle, children }) => (
<div className="page-header"> <div className="page-header">
<h1 className="page-title"> <h1 className="page-title">
{props.title} {title}
{props.children} {children}
</h1> </h1>
{props.subtitle && ( {subtitle && (
<div className="page-subtitle"> <div className="page-subtitle">
{props.subtitle} {subtitle}
</div> </div>
)} )}
</div> </div>

View File

@ -1,7 +1,8 @@
.ReactTable .rt-th, .ReactTable .rt-th,
.ReactTable .rt-td { .ReactTable .rt-td {
padding: 10px 15px; padding: 10px 15px;
overflow: visible; overflow: hidden;
text-overflow: ellipsis;
} }
.ReactTable .rt-tbody { .ReactTable .rt-tbody {
@ -9,13 +10,17 @@
} }
.rt-tr-group.red { .rt-tr-group.red {
background-color: #fff4f2; background-color: rgba(223, 56, 18, 0.05);
} }
.rt-tr-group.green { .rt-tr-group.green {
background-color: #f1faf3; background-color: rgba(103, 178, 121, 0.1);
} }
.rt-tr-group.blue { .rt-tr-group.blue {
background-color: #ecf7ff; background-color: #e5effd;
}
.rt-tr-group.yellow {
background-color: var(--yellow-pale);
} }

View File

@ -6,7 +6,6 @@
width: 18px; width: 18px;
height: 18px; height: 18px;
flex-shrink: 0; flex-shrink: 0;
margin-left: 5px;
background-image: url("./svg/help-circle.svg"); background-image: url("./svg/help-circle.svg");
background-size: 100%; background-size: 100%;
cursor: pointer; cursor: pointer;
@ -56,7 +55,6 @@
.tooltip-custom--logs { .tooltip-custom--logs {
border-radius: 50%; border-radius: 50%;
background-image: url("./svg/help-circle-gray.svg"); background-image: url("./svg/help-circle-gray.svg");
background-color: #fff;
} }
.tooltip-custom--logs:before { .tooltip-custom--logs:before {

View File

@ -3,9 +3,8 @@ import PropTypes from 'prop-types';
import './Tooltip.css'; import './Tooltip.css';
const Tooltip = (props) => ( const Tooltip = ({ text, type = '' }) => <div data-tooltip={text}
<div data-tooltip={props.text} className={`tooltip-custom ${props.type || ''}`}></div> className={`tooltip-custom ml-1 ${type}`} />;
);
Tooltip.propTypes = { Tooltip.propTypes = {
text: PropTypes.string.isRequired, text: PropTypes.string.isRequired,

View File

@ -1,15 +1,22 @@
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { getClients } from '../actions';
import { getFilteringStatus, setRules } from '../actions/filtering'; import { getFilteringStatus, setRules } from '../actions/filtering';
import { import {
getLogs, getLogsConfig, setLogsPagination, setLogsFilter, setLogsPage, getLogs, setLogsPagination, setLogsFilter, setLogsPage, toggleDetailedLogs,
} from '../actions/queryLogs'; } from '../actions/queryLogs';
import Logs from '../components/Logs'; import Logs from '../components/Logs';
import { addSuccessToast } from '../actions/toasts'; import { addSuccessToast } from '../actions/toasts';
const mapStateToProps = (state) => { const mapStateToProps = (state) => {
const { queryLogs, dashboard, filtering } = state; const {
const props = { queryLogs, dashboard, filtering }; queryLogs, dashboard, filtering, dnsConfig,
} = state;
const props = {
queryLogs,
dashboard,
filtering,
dnsConfig,
};
return props; return props;
}; };
@ -18,11 +25,10 @@ const mapDispatchToProps = {
getFilteringStatus, getFilteringStatus,
setRules, setRules,
addSuccessToast, addSuccessToast,
getClients,
getLogsConfig,
setLogsPagination, setLogsPagination,
setLogsFilter, setLogsFilter,
setLogsPage, setLogsPage,
toggleDetailedLogs,
}; };
export default connect( export default connect(

View File

@ -55,7 +55,8 @@ export const EMPTY_DATE = '0001-01-01T00:00:00Z';
export const DEBOUNCE_TIMEOUT = 300; export const DEBOUNCE_TIMEOUT = 300;
export const DEBOUNCE_FILTER_TIMEOUT = 500; export const DEBOUNCE_FILTER_TIMEOUT = 500;
export const CHECK_TIMEOUT = 1000; export const CHECK_TIMEOUT = 1000;
export const STOP_TIMEOUT = 10000; export const SUCCESS_TOAST_TIMEOUT = 5000;
export const FAILURE_TOAST_TIMEOUT = 30000;
export const UNSAFE_PORTS = [ export const UNSAFE_PORTS = [
1, 1,
@ -256,18 +257,6 @@ export const ENCRYPTION_SOURCE = {
CONTENT: 'content', CONTENT: 'content',
}; };
export const FILTERED_STATUS = {
FILTERED_BLACK_LIST: 'FilteredBlackList',
NOT_FILTERED_WHITE_LIST: 'NotFilteredWhiteList',
NOT_FILTERED_NOT_FOUND: 'NotFilteredNotFound',
FILTERED_BLOCKED_SERVICE: 'FilteredBlockedService',
REWRITE: 'Rewrite',
REWRITE_HOSTS: 'RewriteEtcHosts',
FILTERED_SAFE_SEARCH: 'FilteredSafeSearch',
FILTERED_SAFE_BROWSING: 'FilteredSafeBrowsing',
FILTERED_PARENTAL: 'FilteredParental',
};
export const FILTERED = 'Filtered'; export const FILTERED = 'Filtered';
export const NOT_FILTERED = 'NotFiltered'; export const NOT_FILTERED = 'NotFiltered';
@ -336,25 +325,124 @@ export const DNS_RECORD_TYPES = [
]; ];
export const DEFAULT_LOGS_FILTER = { export const DEFAULT_LOGS_FILTER = {
filter_domain: '', search: '',
filter_client: '', response_status: '',
filter_question_type: '',
filter_response_status: '',
}; };
export const DEFAULT_LANGUAGE = 'en'; export const DEFAULT_LANGUAGE = 'en';
export const TABLE_DEFAULT_PAGE_SIZE = 100; export const TABLE_DEFAULT_PAGE_SIZE = 50;
export const SMALL_TABLE_DEFAULT_PAGE_SIZE = 20; export const TABLE_FIRST_PAGE = 0;
export const LEASES_TABLE_DEFAULT_PAGE_SIZE = 20;
export const FILTERED_STATUS = {
FILTERED_BLACK_LIST: 'FilteredBlackList',
NOT_FILTERED_WHITE_LIST: 'NotFilteredWhiteList',
NOT_FILTERED_NOT_FOUND: 'NotFilteredNotFound',
FILTERED_BLOCKED_SERVICE: 'FilteredBlockedService',
REWRITE: 'Rewrite',
REWRITE_HOSTS: 'RewriteEtcHosts',
FILTERED_SAFE_SEARCH: 'FilteredSafeSearch',
FILTERED_SAFE_BROWSING: 'FilteredSafeBrowsing',
FILTERED_PARENTAL: 'FilteredParental',
};
export const RESPONSE_FILTER = { export const RESPONSE_FILTER = {
ALL: 'all', ALL: {
FILTERED: 'filtered', query: 'all',
label: 'show_all_responses',
},
FILTERED: {
query: 'filtered',
label: 'filtered',
},
PROCESSED: {
query: 'processed',
label: 'show_processed_responses',
},
SPACE: {
query: 'all',
label: '',
disabled: true,
},
BLOCKED: {
query: 'blocked',
label: 'show_blocked_responses',
},
BLOCKED_THREATS: {
query: 'blocked_safebrowsing',
label: 'blocked_threats',
},
BLOCKED_ADULT_WEBSITES: {
query: 'blocked_parental',
label: 'blocked_adult_websites',
},
ALLOWED: {
query: 'whitelisted',
label: 'allowed',
},
REWRITTEN: {
query: 'rewritten',
label: 'rewritten',
},
SAFE_SEARCH: {
query: 'safe_search',
label: 'safe_search',
},
};
export const FILTERED_STATUS_TO_META_MAP = {
[FILTERED_STATUS.NOT_FILTERED_WHITE_LIST]: {
label: RESPONSE_FILTER.ALLOWED.label,
color: 'green',
},
[FILTERED_STATUS.NOT_FILTERED_NOT_FOUND]: {
label: RESPONSE_FILTER.PROCESSED.label,
color: 'white',
},
[FILTERED_STATUS.FILTERED_BLOCKED_SERVICE]: {
label: RESPONSE_FILTER.BLOCKED.label,
color: 'red',
},
[FILTERED_STATUS.FILTERED_SAFE_SEARCH]: {
label: RESPONSE_FILTER.SAFE_SEARCH.label,
color: 'yellow',
},
[FILTERED_STATUS.FILTERED_BLACK_LIST]: {
label: RESPONSE_FILTER.BLOCKED.label,
color: 'red',
},
[FILTERED_STATUS.REWRITE]: {
label: RESPONSE_FILTER.REWRITTEN.label,
color: 'blue',
},
[FILTERED_STATUS.REWRITE_HOSTS]: {
label: RESPONSE_FILTER.REWRITTEN.label,
color: 'blue',
},
[FILTERED_STATUS.FILTERED_SAFE_BROWSING]: {
label: RESPONSE_FILTER.BLOCKED_THREATS.label,
color: 'yellow',
},
[FILTERED_STATUS.FILTERED_PARENTAL]: {
label: RESPONSE_FILTER.BLOCKED_ADULT_WEBSITES.label,
color: 'yellow',
},
}; };
export const DEFAULT_TIME_FORMAT = 'HH:mm:ss'; export const DEFAULT_TIME_FORMAT = 'HH:mm:ss';
export const LONG_TIME_FORMAT = 'HH:mm:ss.SSS';
export const DEFAULT_SHORT_DATE_FORMAT_OPTIONS = {
year: 'numeric',
month: 'numeric',
day: 'numeric',
hour12: false,
};
export const DEFAULT_DATE_FORMAT_OPTIONS = { export const DEFAULT_DATE_FORMAT_OPTIONS = {
year: 'numeric', year: 'numeric',
month: 'numeric', month: 'numeric',
@ -371,9 +459,15 @@ export const DETAILED_DATE_FORMAT_OPTIONS = {
export const CUSTOM_FILTERING_RULES_ID = 0; export const CUSTOM_FILTERING_RULES_ID = 0;
export const ACTION = { export const BLOCK_ACTIONS = {
block: 'block', BLOCK: 'block',
unblock: 'unblock', UNBLOCK: 'unblock',
};
export const SCHEME_TO_PROTOCOL_MAP = {
doh: 'dns_over_https',
dot: 'dns_over_tls',
'': 'plain_dns',
}; };
export const DNS_REQUEST_OPTIONS = { export const DNS_REQUEST_OPTIONS = {
@ -407,3 +501,7 @@ export const FORM_NAME = {
INSTALL: 'install', INSTALL: 'install',
LOGIN: 'login', LOGIN: 'login',
}; };
export const smallScreenSize = 767;
export const touchMediaQuery = '(hover: none)';

View File

@ -85,10 +85,10 @@ export const renderGroupField = ({
&& <span className="input-group-append"> && <span className="input-group-append">
<button <button
type="button" type="button"
className="btn btn-secondary btn-icon" className="btn btn-secondary btn-icon btn-icon--green"
onClick={removeField} onClick={removeField}
> >
<svg className="icon icon--close"> <svg className="icon icon--small">
<use xlinkHref="#cross" /> <use xlinkHref="#cross" />
</svg> </svg>
</button> </button>

View File

@ -5,7 +5,8 @@ import { WHOIS_ICONS } from './constants';
const getFormattedWhois = (whois, t) => { const getFormattedWhois = (whois, t) => {
const whoisInfo = normalizeWhois(whois); const whoisInfo = normalizeWhois(whois);
return ( return (
Object.keys(whoisInfo).map((key) => { Object.keys(whoisInfo)
.map((key) => {
const icon = WHOIS_ICONS[key]; const icon = WHOIS_ICONS[key];
return ( return (
<span className="logs__whois text-muted" key={key} title={t(key)}> <span className="logs__whois text-muted" key={key} title={t(key)}>
@ -13,7 +14,8 @@ const getFormattedWhois = (whois, t) => {
<Fragment> <Fragment>
<svg className="logs__whois-icon icons"> <svg className="logs__whois-icon icons">
<use xlinkHref={`#${icon}`} /> <use xlinkHref={`#${icon}`} />
</svg>&nbsp; </svg>
&nbsp;
</Fragment> </Fragment>
)}{whoisInfo[key]} )}{whoisInfo[key]}
</span> </span>
@ -22,20 +24,21 @@ const getFormattedWhois = (whois, t) => {
); );
}; };
export const formatClientCell = (row, t) => { export const formatClientCell = (row, t, isDetailed = false) => {
const { value, original: { info } } = row; const { info, client } = row.original;
let whoisContainer = ''; let whoisContainer = '';
let nameContainer = value; let nameContainer = client;
if (info) { if (info) {
const { name, whois_info } = info; const { name, whois_info } = info;
if (name) { if (name) {
nameContainer = ( nameContainer = isDetailed ? <small title={client}>{client}</small>
<span className="logs__text logs__text--wrap" title={`${name} (${value})`}> : <div className="logs__text logs__text--nowrap"
{name} <small>({value})</small> title={`${name} (${client})`}>
</span> {name}
); <small>{`(${client})`}</small>
</div>;
} }
if (whois_info) { if (whois_info) {
@ -48,11 +51,11 @@ export const formatClientCell = (row, t) => {
} }
return ( return (
<span className="logs__text"> <div className="logs__text" title={client}>
<Fragment> <>
{nameContainer} {nameContainer}
{whoisContainer} {whoisContainer}
</Fragment> </>
</span> </div>
); );
}; };

View File

@ -1,4 +1,3 @@
/* eslint-disable no-bitwise */
import 'url-polyfill'; import 'url-polyfill';
import dateParse from 'date-fns/parse'; import dateParse from 'date-fns/parse';
import dateFormat from 'date-fns/format'; import dateFormat from 'date-fns/format';
@ -13,29 +12,30 @@ import i18n from 'i18next';
import uniqBy from 'lodash/uniqBy'; import uniqBy from 'lodash/uniqBy';
import ipaddr from 'ipaddr.js'; import ipaddr from 'ipaddr.js';
import versionCompare from './versionCompare'; import versionCompare from './versionCompare';
import { getTrackerData } from './trackers/trackers';
import { import {
STANDARD_DNS_PORT,
STANDARD_WEB_PORT,
STANDARD_HTTPS_PORT,
CHECK_TIMEOUT, CHECK_TIMEOUT,
DNS_RECORD_TYPES,
DEFAULT_TIME_FORMAT,
DEFAULT_DATE_FORMAT_OPTIONS, DEFAULT_DATE_FORMAT_OPTIONS,
DETAILED_DATE_FORMAT_OPTIONS,
DEFAULT_LANGUAGE, DEFAULT_LANGUAGE,
FILTERED_STATUS, DEFAULT_TIME_FORMAT,
DETAILED_DATE_FORMAT_OPTIONS,
DNS_RECORD_TYPES,
FILTERED, FILTERED,
FILTERED_STATUS,
IP_MATCH_LIST_STATUS, IP_MATCH_LIST_STATUS,
STANDARD_DNS_PORT,
STANDARD_HTTPS_PORT,
STANDARD_WEB_PORT,
} from './constants'; } from './constants';
/** /**
* @param time {string} The time to format * @param time {string} The time to format
* @returns {string} Returns the time in the format HH:mm:ss * @returns {string} Returns the time in the format HH:mm:ss
*/ */
export const formatTime = (time) => { export const formatTime = (time, options = DEFAULT_TIME_FORMAT) => {
const parsedTime = dateParse(time); const parsedTime = dateParse(time);
return dateFormat(parsedTime, DEFAULT_TIME_FORMAT); return dateFormat(parsedTime, options);
}; };
/** /**
@ -68,34 +68,48 @@ export const isToday = (date) => isSameDay(new Date(date), new Date());
export const normalizeLogs = (logs) => logs.map((log) => { export const normalizeLogs = (logs) => logs.map((log) => {
const { const {
time, answer,
question, answer_dnssec,
answer: response,
reason,
client, client,
client_proto,
elapsedMs,
question,
reason,
status,
time,
filterId, filterId,
rule, rule,
service_name, service_name,
status,
original_answer, original_answer,
upstream,
} = log; } = log;
const { host: domain, type } = question; const { host: domain, type } = question;
const responsesArray = response ? response.map((response) => {
const response = answer ? answer.map((response) => {
const { value, type, ttl } = response; const { value, type, ttl } = response;
return `${type}: ${value} (ttl=${ttl})`; return `${type}: ${value} (ttl=${ttl})`;
}) : []; }) : [];
const tracker = getTrackerData(domain);
return { return {
time, time,
domain, domain,
type, type,
response: responsesArray, response,
reason, reason,
client, client,
client_proto,
filterId, filterId,
rule, rule,
status, status,
serviceName: service_name, serviceName: service_name,
originalAnswer: original_answer, originalAnswer: original_answer,
tracker,
answer_dnssec,
elapsedMs,
upstream,
}; };
}); });
@ -562,3 +576,15 @@ export const getIpMatchListStatus = (ip, list) => {
return IP_MATCH_LIST_STATUS.NOT_FOUND; return IP_MATCH_LIST_STATUS.NOT_FOUND;
} }
}; };
/**
* @param {string} elapsedMs
* @param {function} t translate
* @returns {string}
*/
export const formatElapsedMs = (elapsedMs, t) => {
const formattedElapsedMs = parseInt(elapsedMs, 10) || parseFloat(elapsedMs)
.toFixed(2);
return `${formattedElapsedMs} ${t('milliseconds_abbreviation')}`;
};

View File

@ -20,45 +20,6 @@ export const sources = {
ADGUARD: 2, ADGUARD: 2,
}; };
/**
* Gets tracker data in the specified database
*
* @param {String} domainName domain name to check
* @param {*} trackersDb trackers database
* @param {number} source source ID
* @returns {TrackerData} tracker data or null if no matching tracker found
*/
const getTrackerDataFromDb = (domainName, trackersDb, source) => {
if (!domainName) {
return null;
}
const parts = domainName.split(/\./g).reverse();
let hostToCheck = '';
// Check every subdomain
for (let i = 0; i < parts.length; i += 1) {
hostToCheck = parts[i] + (i > 0 ? '.' : '') + hostToCheck;
const trackerId = trackersDb.trackerDomains[hostToCheck];
if (trackerId) {
const trackerData = trackersDb.trackers[trackerId];
const categoryName = trackersDb.categories[trackerData.categoryId];
return {
id: trackerId,
name: trackerData.name,
url: trackerData.url,
category: categoryName,
source,
};
}
}
// No tracker found for the specified domain
return null;
};
/** /**
* Gets the source metadata for the specified tracker * Gets the source metadata for the specified tracker
* @param {TrackerData} trackerData tracker data * @param {TrackerData} trackerData tracker data
@ -74,7 +35,8 @@ export const getSourceData = (trackerData) => {
name: 'Whotracks.me', name: 'Whotracks.me',
url: `https://whotracks.me/trackers/${trackerData.id}.html`, url: `https://whotracks.me/trackers/${trackerData.id}.html`,
}; };
} if (trackerData.source === sources.ADGUARD) { }
if (trackerData.source === sources.ADGUARD) {
return { return {
name: 'AdGuard', name: 'AdGuard',
url: REPOSITORY.TRACKERS_DB, url: REPOSITORY.TRACKERS_DB,
@ -84,6 +46,49 @@ export const getSourceData = (trackerData) => {
return null; return null;
}; };
/**
* Gets tracker data in the specified database
*
* @param {String} domainName domain name to check
* @param {*} trackersDb trackers database
* @param {number} source source ID
* @returns {TrackerData} tracker data or null if no matching tracker found
*/
const getTrackerDataFromDb = (domainName, trackersDb, source) => {
if (!domainName) {
return null;
}
const parts = domainName.split(/\./g)
.reverse();
let hostToCheck = '';
// Check every subdomain
for (let i = 0; i < parts.length; i += 1) {
hostToCheck = parts[i] + (i > 0 ? '.' : '') + hostToCheck;
const trackerId = trackersDb.trackerDomains[hostToCheck];
if (trackerId) {
const trackerData = trackersDb.trackers[trackerId];
const categoryName = trackersDb.categories[trackerData.categoryId];
trackerData.source = source;
const sourceData = getSourceData(trackerData);
return {
id: trackerId,
name: trackerData.name,
url: trackerData.url,
category: categoryName,
source,
sourceData,
};
}
}
// No tracker found for the specified domain
return null;
};
/** /**
* Gets tracker data from the trackers database * Gets tracker data from the trackers database
* *

View File

@ -1,7 +1,7 @@
import { handleActions } from 'redux-actions'; import { handleActions } from 'redux-actions';
import * as actions from '../actions/queryLogs'; import * as actions from '../actions/queryLogs';
import { DEFAULT_LOGS_FILTER } from '../helpers/constants'; import { DEFAULT_LOGS_FILTER, TABLE_DEFAULT_PAGE_SIZE } from '../helpers/constants';
const queryLogs = handleActions( const queryLogs = handleActions(
{ {
@ -27,15 +27,20 @@ const queryLogs = handleActions(
[actions.setLogsFilterRequest]: (state) => ({ ...state, processingGetLogs: true }), [actions.setLogsFilterRequest]: (state) => ({ ...state, processingGetLogs: true }),
[actions.setLogsFilterFailure]: (state) => ({ ...state, processingGetLogs: false }), [actions.setLogsFilterFailure]: (state) => ({ ...state, processingGetLogs: false }),
[actions.toggleDetailedLogs]: (state, { payload }) => ({
...state,
isDetailed: payload,
}),
[actions.setLogsFilterSuccess]: (state, { payload }) => { [actions.setLogsFilterSuccess]: (state, { payload }) => {
const { logs, oldest, filter } = payload; const { logs, oldest, filter } = payload;
const pageSize = 100; const pageSize = TABLE_DEFAULT_PAGE_SIZE;
const page = 0; const page = 0;
const pages = Math.ceil(logs.length / pageSize); const pages = Math.ceil(logs.length / pageSize);
const total = logs.length; const total = logs.length;
const rowsStart = pageSize * page; const rowsStart = pageSize * page;
const rowsEnd = (pageSize * page) + pageSize; const rowsEnd = rowsStart + pageSize;
const logsSlice = logs.slice(rowsStart, rowsEnd); const logsSlice = logs.slice(rowsStart, rowsEnd);
const isFiltered = Object.keys(filter).some((key) => filter[key]); const isFiltered = Object.keys(filter).some((key) => filter[key]);
@ -135,6 +140,7 @@ const queryLogs = handleActions(
filter: DEFAULT_LOGS_FILTER, filter: DEFAULT_LOGS_FILTER,
isFiltered: false, isFiltered: false,
anonymize_client_ip: false, anonymize_client_ip: false,
isDetailed: true,
}, },
); );

View File

@ -2,10 +2,8 @@ package home
import ( import (
"testing" "testing"
"time"
"github.com/AdguardTeam/AdGuardHome/dnsforward" "github.com/AdguardTeam/AdGuardHome/dnsforward"
"github.com/AdguardTeam/dnsproxy/proxy"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )
@ -13,17 +11,12 @@ func prepareTestDNSServer() error {
config.DNS.Port = 1234 config.DNS.Port = 1234
Context.dnsServer = dnsforward.NewServer(nil, nil, nil) Context.dnsServer = dnsforward.NewServer(nil, nil, nil)
conf := &dnsforward.ServerConfig{} conf := &dnsforward.ServerConfig{}
uc, err := proxy.ParseUpstreamsConfig([]string{"1.1.1.1"}, nil, time.Second*5) conf.UpstreamDNS = []string{"8.8.8.8"}
if err != nil {
return err
}
conf.UpstreamConfig = &uc
return Context.dnsServer.Prepare(conf) return Context.dnsServer.Prepare(conf)
} }
func TestWhois(t *testing.T) { func TestWhois(t *testing.T) {
err := prepareTestDNSServer() assert.Nil(t, prepareTestDNSServer())
assert.Nil(t, err)
w := Whois{timeoutMsec: 5000} w := Whois{timeoutMsec: 5000}
resp, err := w.queryAll("8.8.8.8") resp, err := w.queryAll("8.8.8.8")